diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-06-26 23:55:46 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-06-26 23:55:46 +0000 |
commit | b351d85aa284f81271bc93e11301e1c2466b7c82 (patch) | |
tree | bbde7ff8a6d9beb8ea914d9617b1209ef8b8fc3a /sysdeps | |
parent | 3cb4de474155c315003746f3de9c408b824abc5e (diff) | |
download | glibc-b351d85aa284f81271bc93e11301e1c2466b7c82.tar glibc-b351d85aa284f81271bc93e11301e1c2466b7c82.tar.gz glibc-b351d85aa284f81271bc93e11301e1c2466b7c82.tar.bz2 glibc-b351d85aa284f81271bc93e11301e1c2466b7c82.zip |
Fix MIPS64 *_nocancel gp setup.
The 64-bit MIPS ABIs involve the caller setting up t9 ($25) to the
address of the called function, and the called function then using
this in a .cpsetup directive to compute gp. The .cpsetup directive
needs to name the function to which t9 points for this purpose. In
the definition of *_nocancel functions, the directive pointed to the
normal entry point rather than the _nocancel one, resulting in
segfaults when the _nocancel functions were used. This patch corrects
the function name used in the directive. (It seems the bug was latent
until Roland's not-cancel.h unification, with the _nocancel entry
points not previously being used - so not user-visible in a release,
so no Bugzilla entry required.)
Tested mips64 sufficiently to confirm the previously seen segfaults
are fixed.
* sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h
[__PIC__] (PSEUDO): Use name of _nocancel entry point in
corresponding .cpsetup call.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h b/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h index d9e7236a37..341b9a0ba0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/nptl/sysdep-cancel.h @@ -47,7 +47,7 @@ .globl __##syscall_name##_nocancel; \ __##syscall_name##_nocancel: \ SAVESTK; \ - .cpsetup t9, STKOFF_GP, name; \ + .cpsetup t9, STKOFF_GP, __##syscall_name##_nocancel; \ cfi_rel_offset (gp, STKOFF_GP); \ li v0, SYS_ify(syscall_name); \ syscall; \ |