This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]