diff options
author | 2024-08-30 08:15:16 -0500 | |
---|---|---|
committer | 2024-08-30 08:50:47 -0500 | |
commit | 29f0db6a2e00fb17f5fe1eb1eee853436247ffe2 (patch) | |
tree | a714d71978866824701f705b08f606a8d3d94336 | |
parent | Make __strtod_internal tests type-generic (diff) | |
download | glibc-29f0db6a2e00fb17f5fe1eb1eee853436247ffe2.tar.xz glibc-29f0db6a2e00fb17f5fe1eb1eee853436247ffe2.zip |
powerpc64: Fix syscall_cancel build for powerpc64le-linux-gnu [BZ #32125]
In __syscall_cancel_arch, there's a tail call to __syscall_do_cancel.
On P10, since the caller uses the TOC and the callee is using
PC-relative addressing, there's only a branch instruction with no NOPs
to restore the TOC, which causes the build error. The fix involves adding
the NOTOC directive to the branch instruction, informing the linker
not to generate a TOC stub, thus resolving the issue.
-rw-r--r-- | sysdeps/powerpc/powerpc64/sysdep.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h index 643aadaae0..c439b06121 100644 --- a/sysdeps/powerpc/powerpc64/sysdep.h +++ b/sysdeps/powerpc/powerpc64/sysdep.h @@ -354,7 +354,7 @@ LT_LABELSUFFIX(name,_name_end): ; \ #ifdef SHARED # define TAIL_CALL_NO_RETURN(__func) \ - b JUMPTARGET(__func) + b JUMPTARGET (NOTOC (__func)) #else # define TAIL_CALL_NO_RETURN(__func) \ .ifdef .Local ## __func; \ |