Bug 1582602

Summary: ld should allow "lea foo@GOT, %ecx" [rhel-7.5.z]
Product: Red Hat Enterprise Linux 7 Reporter: Oneata Mircea Teodor <toneata>
Component: binutilsAssignee: Nick Clifton <nickc>
Status: CLOSED ERRATA QA Contact: Miloš Prchlík <mprchlik>
Severity: medium Docs Contact: Vladimír Slávik <vslavik>
Priority: high    
Version: 7.6CC: alanm, dkochuka, fweimer, jcastran, law, mcermak, mnewsome, mpolacek, mprchlik, nickc, ohudlick, stalexan
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: binutils-2.27-28.base.el7_5.1 Doc Type: Bug Fix
Doc Text:
The "ld" linker based on the BFD library was too restrictive in its handling of a special form of the Load Effective Address (LEA) instruction in the AMD64 and Intel 64 architectures when building a shared library. As a consequence, the linker rejected valid code with an error message about an invalid relocation. The linker has been modified to handle addressing mode correctly. As a result, valid code that uses this instruction is accepted.
Story Points: ---
Clone Of: 1573872 Environment:
Last Closed: 2018-06-26 16:52:35 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1573872    
Bug Blocks:    

Description Oneata Mircea Teodor 2018-05-25 17:25:55 UTC
This bug has been copied from bug #1573872 and has been proposed to be backported to 7.5 z-stream (EUS).

Comment 8 Nick Clifton 2018-05-29 15:14:38 UTC
Update N-V-R to use correct z-stream syntax.

Comment 9 Miloš Prchlík 2018-06-05 06:51:46 UTC
Verified with build binutils-2.27-28.base.el7_5.1.x86_64, using the provided reproducer.

[root@sheep-30 ~]# gcc -B./ -m32 -c -o x.o x.S
[root@sheep-30 ~]# ld -melf_i386 -shared -o libx.so x.o
ld: x.o: direct GOT relocation R_386_GOT32 against `foo' without base register can not be used when making a shared object
ld: final link failed: Bad value
[root@sheep-30 ~]# 

vs.

[root@sheep-30 ~]# gcc -B./ -m32 -c -o x.o x.S
[root@sheep-30 ~]# ld -melf_i386 -shared -o libx.so x.o
[root@sheep-30 ~]#

Comment 14 errata-xmlrpc 2018-06-26 16:52:35 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2018:1994