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.27.9000-72-g499b315


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  499b315324519f8deb5b42a143a76319934a3ab0 (commit)
      from  7fc03cf320f9ed0178babbb33de0550d393b8886 (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=499b315324519f8deb5b42a143a76319934a3ab0

commit 499b315324519f8deb5b42a143a76319934a3ab0
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Feb 15 20:58:16 2018 +0000

    Use libc_hidden_* for fputs (bug 15105).
    
    Among other localplt test failures when building with -Os, there are
    libc.so PLT references for fputs.  fputs calls normally get redirected
    to _IO_fputs by a macro in include/stdio.h (and _IO_fputs in turn uses
    libc_hidden_proto), but GCC can convert an fprintf call with a
    constant string argument into an fputs call, which of course is then
    unaffected by the macro redirection.  (I don't know why this issue
    only appears with -Os.)
    
    This patch duly adds a use of libc_hidden_proto for fputs.  I see no
    obvious reason why the fputs macro redirection is needed at all, but
    this patch does not change it.
    
    Tested for x86_64 (both that it removes this particular localplt
    failure for -Os - but other such failures remain so the bug can't yet
    be closed - and that the testsuite continues to pass without -Os).
    
    	[BZ #15105]
    	* include/stdio.h [!_ISOMAC && IS_IN (libc)] (fputs): Use
    	libc_hidden_proto.
    	* libio/iofputs.c (fputs): Use libc_hidden_weak.

diff --git a/ChangeLog b/ChangeLog
index 3571a46..36ee493 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
 2018-02-15  Joseph Myers  <joseph@codesourcery.com>
 
 	[BZ #15105]
+	* include/stdio.h [!_ISOMAC && IS_IN (libc)] (fputs): Use
+	libc_hidden_proto.
+	* libio/iofputs.c (fputs): Use libc_hidden_weak.
+
+	[BZ #15105]
 	[BZ #19463]
 	* libio/feof_u.c (feof_unlocked): Rename to __feof_unlocked and
 	define as weak alias of __feof_unlocked.  Use libc_hidden_weak.
diff --git a/include/stdio.h b/include/stdio.h
index 7ab3ddd..7871000 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -140,6 +140,10 @@ extern int _IO_new_fclose (_IO_FILE*);
 #   define fclose(fp) _IO_new_fclose (fp)
 extern int _IO_fputs (const char*, _IO_FILE*);
 libc_hidden_proto (_IO_fputs)
+/* The compiler may optimize calls to fprintf into calls to fputs.
+   Use libc_hidden_proto to ensure that those calls, not redirected by
+   the fputs macro, also do not go through the PLT.  */
+libc_hidden_proto (fputs)
 #   define fputs(str, fp) _IO_fputs (str, fp)
 extern int _IO_new_fsetpos (_IO_FILE *, const _IO_fpos_t *);
 #   define fsetpos(fp, posp) _IO_new_fsetpos (fp, posp)
diff --git a/libio/iofputs.c b/libio/iofputs.c
index b4fbeb5..176e9ed 100644
--- a/libio/iofputs.c
+++ b/libio/iofputs.c
@@ -43,6 +43,7 @@ _IO_fputs (const char *str, _IO_FILE *fp)
 libc_hidden_def (_IO_fputs)
 
 weak_alias (_IO_fputs, fputs)
+libc_hidden_weak (fputs)
 
 # ifndef _IO_MTSAFE_IO
 strong_alias (_IO_fputs, __fputs_unlocked)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog       |    5 +++++
 include/stdio.h |    4 ++++
 libio/iofputs.c |    1 +
 3 files changed, 10 insertions(+), 0 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]