This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] PR ld/17618: Check PC-relative offset overflow in PLT entry
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Binutils <binutils at sourceware dot org>
- Date: Wed, 9 Aug 2017 16:37:43 -0700
- Subject: Re: [PATCH] PR ld/17618: Check PC-relative offset overflow in PLT entry
- Authentication-results: sourceware.org; auth=none
- References: <20141118191113.GA2298@intel.com> <20141120213713.GA5521@intel.com> <CAMe9rOoaNMRquPCwPof+j__MT1vCUcqu9rSm2iLLNDHij5MaDw@mail.gmail.com>
On Wed, Aug 9, 2017 at 3:08 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Thu, Nov 20, 2014 at 1:37 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
>> On Tue, Nov 18, 2014 at 11:11:13AM -0800, H.J. Lu wrote:
>>> Hi,
>>>
>>> I checked in this patch to check PC-relative offset overflow in pushq
>>> instruction in x86-64 PLT entry.
>>>
>>>
>>
>> I checked in this patch to avoid running pr17618.d test on x32 since
>> it needs more than 4GB memory.
>>
>> H.J.
>> ---
>> diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
>> index f959d55..8e69a89 100644
>> --- a/ld/testsuite/ChangeLog
>> +++ b/ld/testsuite/ChangeLog
>> @@ -1,5 +1,9 @@
>> 2014-11-20 H.J. Lu <hongjiu.lu@intel.com>
>>
>> + * ld-x86-64/pr17618.d: Don't run on x32.
>> +
>> +2014-11-20 H.J. Lu <hongjiu.lu@intel.com>
>> +
>> * ld-x86-64/plt-main1.rd: Updated for x32.
>> * ld-x86-64/plt-main2.rd: Likewise.
>> * ld-x86-64/plt-main3.rd: Likewise.
>> diff --git a/ld/testsuite/ld-x86-64/pr17618.d b/ld/testsuite/ld-x86-64/pr17618.d
>> index e640b40..b090aa0 100644
>> --- a/ld/testsuite/ld-x86-64/pr17618.d
>> +++ b/ld/testsuite/ld-x86-64/pr17618.d
>> @@ -1,4 +1,5 @@
>> #name: PLT PC-relative offset overflow check
>> #as: --64
>> #ld: -shared -melf_x86_64
>> +#notarget: x86_64-*-linux*-gnux32
>> #error: .*PC-relative offset overflow in PLT entry for `bar'
>
> I checked in this patch to run PR ld/17618 test only with 64-bit
> ELF linker.
>
I checked in this patch to check .libs/ld-new for real linker first.
--
H.J.
From 1d60fceb22da8ba482a68b2c13c8f55d6463fd3e Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 9 Aug 2017 16:32:30 -0700
Subject: [PATCH] LD_CLASS: Check .libs/ld-new for linker first
When --enable-shared is used, ./ld-new may be a shell script and the
real linker is .libs/ld-new. We should check .libs/ld-new first.
* testsuite/config/default.exp (LD_CLASS): Check .libs/ld-new
for linker first.
---
ld/ChangeLog | 5 +++++
ld/testsuite/config/default.exp | 3 ++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/ld/ChangeLog b/ld/ChangeLog
index e4e6bfe5e3..b0191cfcce 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,10 @@
2017-08-09 H.J. Lu <hongjiu.lu@intel.com>
+ * testsuite/config/default.exp (LD_CLASS): Check .libs/ld-new
+ for linker first.
+
+2017-08-09 H.J. Lu <hongjiu.lu@intel.com>
+
* testsuite/config/default.exp (LD_CLASS): New. Set to "64bit"
for 64-bit ELF linker.
* testsuite/ld-x86-64/pr17618.d (#notarget): Removed.
diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp
index 355d98f24a..6aba75fdc5 100644
--- a/ld/testsuite/config/default.exp
+++ b/ld/testsuite/config/default.exp
@@ -253,7 +253,8 @@ if ![info exists LDFLAGS] then {
# Set LD_CLASS to "64bit" for 64-bit LD.
if { ![info exists LD_CLASS] } then {
- set readelf_output [run_host_cmd "$READELF" "-h $LD"]
+ set REAL_LD [findfile $base_dir/.libs/ld-new .libs/ld-new $LD [transform ld]]
+ set readelf_output [run_host_cmd "$READELF" "-h $REAL_LD"]
if { [regexp {[ \t]+Class:[ \t]+ELF64} $readelf_output] } then {
set LD_CLASS "64bit"
} else {
--
2.13.4