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.27.9000-72-g499b315
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 15 Feb 2018 20:58:36 -0000
- Subject: 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