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 49e2d9858d9e0687788db27b9e6fe302cb497888..ffde8687372fa1423d07c421215ab7f5a975667b 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 7d1e7c95f1019d46b1fdcf0a77bbd16bec6dd1cd..16256e5f098671fc357529459f01d3366a02ebb1 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-.)