aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@bell.net>2016-06-21 18:35:22 -0400
committerMike Frysinger <vapier@gentoo.org>2016-06-30 11:37:08 -0400
commit9765ffa71030efd8bb4f2ea4ed6e020fcb4bb714 (patch)
tree311ba80e9ba72fbae05c6a0bf8a7ad8a5dc6fb94
parent13efa86ece61bf84daca50cab30db1b0902fe2db (diff)
downloadglibc-9765ffa71030efd8bb4f2ea4ed6e020fcb4bb714.zip
glibc-9765ffa71030efd8bb4f2ea4ed6e020fcb4bb714.tar.gz
glibc-9765ffa71030efd8bb4f2ea4ed6e020fcb4bb714.tar.bz2
hppa: fix loading of global pointer in _start [BZ #20277]
The patched change fixes a regression for executables compiled with the -p option and linked with gcrt1.o. The executables crash on startup. This regression was introduced in 2.22 and was noticed in the gcc testsuite.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/hppa/start.S2
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0824228..c61020f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-30 John David Anglin <danglin@gcc.gnu.org>
+
+ [BZ #20277]
+ * sysdeps/hppa/start.S (_start): Correct loading of global pointer
+ when SHARED is defined.
+
2016-06-30 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86/cpu-features.h (bit_arch_Prefer_ERMS): New.
diff --git a/sysdeps/hppa/start.S b/sysdeps/hppa/start.S
index 90d4331..b7ab830 100644
--- a/sysdeps/hppa/start.S
+++ b/sysdeps/hppa/start.S
@@ -131,8 +131,10 @@ _start:
stw %sp, -60(%sp)
#ifdef SHARED
+ /* load global */
addil LT'.Lp__global, %r19
ldw RT'.Lp__global(%r1), %dp
+ ldw 0(%dp), %dp
#else
/* load global */
ldil L%$global$, %dp