aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeevitha Palanisamy <jeevitha@linux.ibm.com>2024-08-30 08:15:16 -0500
committerPeter Bergner <bergner@linux.ibm.com>2024-08-30 08:50:47 -0500
commit29f0db6a2e00fb17f5fe1eb1eee853436247ffe2 (patch)
treea714d71978866824701f705b08f606a8d3d94336
parent3fc063dee01da4f80920a14b7db637c8501d6fd4 (diff)
downloadglibc-29f0db6a2e00fb17f5fe1eb1eee853436247ffe2.zip
glibc-29f0db6a2e00fb17f5fe1eb1eee853436247ffe2.tar.gz
glibc-29f0db6a2e00fb17f5fe1eb1eee853436247ffe2.tar.bz2
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.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
index 643aada..c439b06 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; \