diff options
author | John David Anglin <dave.anglin@bell.net> | 2016-06-21 18:35:22 -0400 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2016-07-01 14:40:09 +0200 |
commit | 0903610fdc31efbea4309f69e5ee3e1d4f7ed29e (patch) | |
tree | 6c3f7b0cbad2b9b33c86e6031541041df43bdc7f | |
parent | 3d21617c430d190e5412bc450afad22169218c0e (diff) | |
download | glibc-0903610fdc31efbea4309f69e5ee3e1d4f7ed29e.tar.gz glibc-0903610fdc31efbea4309f69e5ee3e1d4f7ed29e.tar.xz glibc-0903610fdc31efbea4309f69e5ee3e1d4f7ed29e.zip |
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. (cherry picked from commit 9765ffa71030efd8bb4f2ea4ed6e020fcb4bb714)
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | sysdeps/hppa/start.S | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index aaba8df217..3c8315f88f 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 Aurelien Jarno <aurelien@aurel32.net> * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Regenerated. diff --git a/NEWS b/NEWS index 532cfe2f62..07f3fe8569 100644 --- a/NEWS +++ b/NEWS @@ -34,6 +34,7 @@ The following bugs are resolved with this release: [19822] libm.so install clobbers old version [19879] network: nss_dns: Stack overflow in getnetbyname implementation (CVE-2016-3075) + [20177] $dp is not initialized correctly in sysdeps/hppa/start.S Version 2.23 diff --git a/sysdeps/hppa/start.S b/sysdeps/hppa/start.S index 90d4331f5a..b7ab830e92 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 |