This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.26-369-gd82468d
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 19 Sep 2017 15:51:07 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.26-369-gd82468d
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via d82468d1001209d6b15c674a317a3f11fb7a82f6 (commit)
from 43ffc53a352a67672210c9dd4959f6c6b7407e60 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d82468d1001209d6b15c674a317a3f11fb7a82f6
commit d82468d1001209d6b15c674a317a3f11fb7a82f6
Author: Joseph Myers <joseph@codesourcery.com>
Date: Tue Sep 19 15:50:38 2017 +0000
Fix fexecve build where syscall macros call sizeof.
The recent fexecve changes broke the build on (at least) alpha (maybe
other configurations, that was the first breakage I saw in my
build-many-glibcs.py run):
In file included from ../sysdeps/unix/sysv/linux/alpha/sysdep.h:29:0,
from ../sysdeps/alpha/nptl/tls.h:31,
from ../include/errno.h:25,
from ../sysdeps/unix/sysv/linux/fexecve.c:18:
../sysdeps/unix/sysv/linux/fexecve.c: In function 'fexecve':
../sysdeps/unix/alpha/sysdep.h:203:10: error: 'sizeof' on array function parameter 'argv' will return size of 'char * const*' [-Werror=sizeof-array-argument]
(sizeof(arg) == 4 ? (long)(int)(long)(arg) : (long)(arg))
^
../sysdeps/unix/alpha/sysdep.h:302:26: note: in expansion of macro 'syscall_promote'
register long _tmp_18 = syscall_promote (arg3); \
^~~~~~~~~~~~~~~
../sysdeps/unix/alpha/sysdep.h:173:2: note: in expansion of macro 'inline_syscall5'
inline_syscall##nr(__NR_##name, args); \
^~~~~~~~~~~~~~
../sysdeps/unix/sysv/linux/alpha/sysdep.h:85:2: note: in expansion of macro 'INLINE_SYSCALL1'
INLINE_SYSCALL1(name, nr, args); \
^~~~~~~~~~~~~~~
../sysdeps/unix/sysv/linux/fexecve.c:42:3: note: in expansion of macro 'INLINE_SYSCALL'
INLINE_SYSCALL (execveat, 5, fd, "", argv, envp, AT_EMPTY_PATH);
^~~~~~~~~~~~~~
../sysdeps/unix/sysv/linux/fexecve.c:33:30: note: declared here
fexecve (int fd, char *const argv[], char *const envp[])
^~~~
This patch fixes this similarly to previous fixes for such issues: use
&argv[0] and &envp[0] as the syscall macro arguments. Tested
(compilation only) for alpha-linux-gnu with build-many-glibcs.py.
* sysdeps/unix/sysv/linux/fexecve.c (fexecve) [__NR_execveat]:
Explicitly take address of first element of array arguments in
call to INLINE_SYSCALL.
diff --git a/ChangeLog b/ChangeLog
index 0efae2b..67fbee7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-19 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/fexecve.c (fexecve) [__NR_execveat]:
+ Explicitly take address of first element of array arguments in
+ call to INLINE_SYSCALL.
+
2017-09-19 Andreas Schwab <schwab@suse.de>
[BZ #22134]
diff --git a/sysdeps/unix/sysv/linux/fexecve.c b/sysdeps/unix/sysv/linux/fexecve.c
index 3bf5de5..4065249 100644
--- a/sysdeps/unix/sysv/linux/fexecve.c
+++ b/sysdeps/unix/sysv/linux/fexecve.c
@@ -39,7 +39,8 @@ fexecve (int fd, char *const argv[], char *const envp[])
}
#ifdef __NR_execveat
- INLINE_SYSCALL (execveat, 5, fd, "", argv, envp, AT_EMPTY_PATH);
+ /* Avoid implicit array coercion in syscall macros. */
+ INLINE_SYSCALL (execveat, 5, fd, "", &argv[0], &envp[0], AT_EMPTY_PATH);
# ifndef __ASSUME_EXECVEAT
if (errno != ENOSYS)
return -1;
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 6 ++++++
sysdeps/unix/sysv/linux/fexecve.c | 3 ++-
2 files changed, 8 insertions(+), 1 deletions(-)
hooks/post-receive
--
GNU C Library master sources