remove invalid PLT calls from sh asm
authorRich Felker <dalias@aerifal.cx>
Mon, 20 Apr 2015 00:50:03 +0000 (20:50 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 20 Apr 2015 00:50:03 +0000 (20:50 -0400)
these are perfectly fine with ld-time symbol binding, but if the calls
go through a PLT thunk, they are invalid because the caller does not
setup a GOT register. use a hidden alias to bypass the issue.

src/setjmp/sh/setjmp.s
src/signal/sh/sigsetjmp.s

index 49e2d98..ffde868 100644 (file)
@@ -1,9 +1,12 @@
+.global ___setjmp
+.hidden ___setjmp
 .global __setjmp
 .global _setjmp
 .global setjmp
 .type   __setjmp, @function
 .type   _setjmp,  @function
 .type   setjmp,   @function
+___setjmp:
 __setjmp:
 _setjmp:
 setjmp:
index 7d1e7c9..16256e5 100644 (file)
@@ -34,7 +34,8 @@ __sigsetjmp:
         nop
 
 .align 2
-1:     .long setjmp@PLT-(2b+4-.)
+.hidden ___setjmp
+1:     .long ___setjmp@PLT-(2b+4-.)
 .hidden __sigsetjmp_tail
 3:     .long __sigsetjmp_tail@PLT-(4b+4-.)
-5:     .long setjmp@PLT-(6b+4-.)
+5:     .long ___setjmp@PLT-(6b+4-.)