in visibility preinclude, remove overrides for stdin/stdout/stderr
authorRich Felker <dalias@aerifal.cx>
Wed, 22 Apr 2015 07:07:38 +0000 (03:07 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 22 Apr 2015 07:07:38 +0000 (03:07 -0400)
the motivation for this change is that the extra declaration (with or
without visibility) using "struct _IO_FILE" instead of "FILE" seems to
trigger a bug in gcc 3.x where it considers the types mismatched.
however, this change also results in slightly better code and it is
valid because (1) these three objects are constant, and (2) applying
the & operator to any of them is invalid C, since they are not even
specified to be objects. thus it does not matter if the application
and libc see different addresses for them, as long as the (initial,
unchanging) value is seen the same by both.

src/internal/vis.h

index bf7a5b206e672968c7db0931d835e53b1bff7c92..a01fda182a57329bdd75fdee9cc76167087c3910 100644 (file)
@@ -11,9 +11,6 @@
  * fail to support copy relocations for protected data, so exclude all
  * exported data symbols. */
 
-__attribute__((__visibility__("default")))
-extern struct _IO_FILE *const stdin, *const stdout, *const stderr;
-
 __attribute__((__visibility__("default")))
 extern int optind, opterr, optopt, optreset, __optreset, getdate_err, h_errno, daylight, __daylight, signgam, __signgam;