summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-19 20:50:03 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-19 20:50:03 -0400
commit646cb9a4a04e5ed78e2dd928bf9dc6e79202f609 (patch)
tree75a0c54e02ba8a9623cb5e40ff0942614a696067
parentb35c4c475bea3c8f938d8e9696d1138eabb54a89 (diff)
downloadmusl-646cb9a4a04e5ed78e2dd928bf9dc6e79202f609.tar.gz
remove invalid PLT calls from sh asm
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.
-rw-r--r--src/setjmp/sh/setjmp.s3
-rw-r--r--src/signal/sh/sigsetjmp.s5
2 files changed, 6 insertions, 2 deletions
diff --git a/src/setjmp/sh/setjmp.s b/src/setjmp/sh/setjmp.s
index 49e2d985..ffde8687 100644
--- a/src/setjmp/sh/setjmp.s
+++ b/src/setjmp/sh/setjmp.s
@@ -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:
diff --git a/src/signal/sh/sigsetjmp.s b/src/signal/sh/sigsetjmp.s
index 7d1e7c95..16256e5f 100644
--- a/src/signal/sh/sigsetjmp.s
+++ b/src/signal/sh/sigsetjmp.s
@@ -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-.)