Emery Hemingway
734f38fabb
Mode around for the sake of clarity, pin Nixpkgs with fetchGit for convenience.
64 lines
1.9 KiB
Diff
64 lines
1.9 KiB
Diff
Prevent the use of the hidden attribute for symbols. In particular,
|
|
the attribute must not be applied to '__libc'-prefixed symbols to allow
|
|
overwriting the dummies defined in dummies.cc by other non-weak
|
|
implementations such as those in 'libc_noux.lib.so'.
|
|
|
|
This attribute is applied inconsistently in
|
|
libc/lib/libc/include/libc_private.h anyway.
|
|
|
|
Also, force i386 to call __libc_sigprocmask via PLT to prevent
|
|
R_386_PC32 relocations, which had to change the text segment. Other
|
|
architectures do this automatically.
|
|
|
|
--- src/lib/libc/sys/sys/cdefs.h
|
|
+++ src/lib/libc/sys/sys/cdefs.h
|
|
@@ -447,7 +447,7 @@
|
|
#if __GNUC_PREREQ__(4, 0)
|
|
#define __null_sentinel __attribute__((__sentinel__))
|
|
#define __exported __attribute__((__visibility__("default")))
|
|
-#define __hidden __attribute__((__visibility__("hidden")))
|
|
+#define __hidden
|
|
#else
|
|
#define __null_sentinel
|
|
#define __exported
|
|
--- src/lib/libc/lib/libc/i386/gen/setjmp.S
|
|
+++ src/lib/libc/lib/libc/i386/gen/setjmp.S
|
|
@@ -54,7 +54,7 @@
|
|
pushl %eax /* (sigset_t*)oset */
|
|
pushl $0 /* (sigset_t*)set */
|
|
pushl $1 /* SIG_BLOCK */
|
|
- call __libc_sigprocmask
|
|
+ call __i386_libc_sigprocmask
|
|
addl $12,%esp
|
|
movl 4(%esp),%ecx
|
|
movl 0(%esp),%edx
|
|
@@ -76,7 +76,7 @@
|
|
leal 28(%edx), %eax
|
|
pushl %eax /* (sigset_t*)set */
|
|
pushl $3 /* SIG_SETMASK */
|
|
- call __libc_sigprocmask
|
|
+ call __i386_libc_sigprocmask
|
|
addl $12,%esp
|
|
movl 4(%esp),%edx
|
|
movl 8(%esp),%eax
|
|
--- src/lib/libc/lib/libc/i386/gen/sigsetjmp.S
|
|
+++ src/lib/libc/lib/libc/i386/gen/sigsetjmp.S
|
|
@@ -63,7 +63,7 @@
|
|
pushl %eax /* (sigset_t*)oset */
|
|
pushl $0 /* (sigset_t*)set */
|
|
pushl $1 /* SIG_BLOCK */
|
|
- call __libc_sigprocmask
|
|
+ call __i386_libc_sigprocmask
|
|
addl $12,%esp
|
|
movl 4(%esp),%ecx
|
|
2: movl 0(%esp),%edx
|
|
@@ -87,7 +87,7 @@
|
|
leal 28(%edx), %eax
|
|
pushl %eax /* (sigset_t*)set */
|
|
pushl $3 /* SIG_SETMASK */
|
|
- call __libc_sigprocmask
|
|
+ call __i386_libc_sigprocmask
|
|
addl $12,%esp
|
|
movl 4(%esp),%edx
|
|
2: movl 8(%esp),%eax
|