about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn David Anglin <danglin@gcc.gnu.org>2017-09-30 19:02:57 -0400
committerJohn David Anglin <danglin@gcc.gnu.org>2017-09-30 19:02:57 -0400
commit388784cfddc20ada56d3e52f830d6445b14aa3af (patch)
tree70986acb16f4c3bef0101e42c06bb9e4c004c378
parent2000067a4be0dc8a70f6d3704a9e8388eb9066c9 (diff)
downloadglibc-388784cfddc20ada56d3e52f830d6445b14aa3af.tar.gz
glibc-388784cfddc20ada56d3e52f830d6445b14aa3af.tar.xz
glibc-388784cfddc20ada56d3e52f830d6445b14aa3af.zip
Fix hppa text relocations in libc.so
	[BZ libc/22165]
	* sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext): Use PIC
	code to load address of __getcontext_ret when generating PIC code.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/getcontext.S5
2 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 37cd69037a..f639d0acb9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-30  John David Anglin  <danglin@gcc.gnu.org>
+
+	[BZ libc/22165]
+	* sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext): Use PIC
+	code to load address of __getcontext_ret when generating PIC code.
+
 2017-09-30  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* elf/Makefile (tests-static-internal): Add
diff --git a/sysdeps/unix/sysv/linux/hppa/getcontext.S b/sysdeps/unix/sysv/linux/hppa/getcontext.S
index 68a74a0b7e..b201d8fda2 100644
--- a/sysdeps/unix/sysv/linux/hppa/getcontext.S
+++ b/sysdeps/unix/sysv/linux/hppa/getcontext.S
@@ -145,8 +145,13 @@ ENTRY(__getcontext)
 	stw	%r4, oR24(%r26)
 	stw	%r5, oR25(%r26)
 	stw	%r6, oR26(%r26)
+#ifdef PIC
+	addil	LT%__getcontext_ret, %r19
+	ldw     RT%__getcontext_ret(%r1), %r1
+#else
 	ldil	L%__getcontext_ret, %r1
 	ldo     R%__getcontext_ret(%r1), %r1
+#endif
 	stw	%r1, oR2(%r26)
 
 	/* Save the current signal mask.  */