diff options
Diffstat (limited to 'toolchain/musl/patches/001-eliminate-protected-visibility-data-in-libc.so-with-.patch')
-rw-r--r-- | toolchain/musl/patches/001-eliminate-protected-visibility-data-in-libc.so-with-.patch | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/toolchain/musl/patches/001-eliminate-protected-visibility-data-in-libc.so-with-.patch b/toolchain/musl/patches/001-eliminate-protected-visibility-data-in-libc.so-with-.patch deleted file mode 100644 index 7f6f4277a6..0000000000 --- a/toolchain/musl/patches/001-eliminate-protected-visibility-data-in-libc.so-with-.patch +++ /dev/null @@ -1,55 +0,0 @@ -From: Rich Felker <dalias@aerifal.cx> -Date: Tue, 29 Sep 2015 02:44:05 +0000 -Subject: [PATCH] eliminate protected-visibility data in libc.so with vis.h - preinclude - -some newer binutils versions print scary warnings about protected data -because most gcc versions fail to produce the right address -references/relocations for such data that might be subject to copy -relocations. originally vis.h explicitly assigned default visibility -to all public data symbols to avoid this issue, but commit -b8dda24fe1caa901a99580f7a52defb95aedb67c removed this treatment for -stdin/out/err to work around a gcc 3.x bug, and since they don't -actually need it (because taking their addresses is not valid C). - -instead, a check for the gcc 3.x bug is added to the configure check -for vis.h preinclude support; this feature will simply be disabled -when using a buggy version of gcc. ---- - ---- a/configure -+++ b/configure -@@ -476,10 +476,18 @@ if test "x$visibility" = xauto ; then - # - the -include option - # - the attributes/pragmas used in vis.h - # - linking code that takes the address of protected symbols -+# - gcc 3.x bug that wrongly claims declarations mismatch - printf "checking whether global visibility preinclude works... " --echo 'int (*fp)(void);' > "$tmpc" --echo 'int foo(void) { }' >> "$tmpc" --echo 'int bar(void) { fp = foo; return foo(); }' >> "$tmpc" -+cat > "$tmpc" <<EOF -+__attribute__((__visibility__("default"))) -+extern struct a *const x; -+typedef struct a b; -+extern b *const x; -+b *const x; -+int (*fp)(void); -+int foo(void) { } -+int bar(void) { fp = foo; return foo(); } -+EOF - if $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS \ - -DSHARED -fPIC -I./src/internal -include vis.h \ - -nostdlib -shared -Wl,-Bsymbolic-functions \ ---- a/src/internal/vis.h -+++ b/src/internal/vis.h -@@ -12,6 +12,9 @@ - * 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; - - __attribute__((__visibility__("default"))) |