Bug 1243559 - [aarch64][binutils] relocation truncated to fit: R_AARCH64_CALL26 (veneers not inserted)
Summary: [aarch64][binutils] relocation truncated to fit: R_AARCH64_CALL26 (veneers no...
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: binutils
Version: 7.1
Hardware: aarch64
OS: Linux
medium
medium
Target Milestone: rc
: ---
Assignee: Nick Clifton
QA Contact: Miloš Prchlík
Tomas Capek
URL:
Whiteboard:
Keywords: Patch
: 1360941 (view as bug list)
Depends On:
Blocks: epel7aarch64 1297579 1313485 1277314
TreeView+ depends on / blocked
 
Reported: 2015-07-15 19:10 UTC by David Abdurachmanov
Modified: 2016-11-04 01:52 UTC (History)
9 users (show)

(edit)
Large and/or high-address programs now link and execute correctly on *AArch64*

Previously, incorrect code in the linker could result in incorrect branch stubs being generated. Consequently, programs that were very big or if the programmer coded parts of the program to exist at a very high address, failed to link. The bug has been fixed and the correct kind of branch stub is now selected.
Clone Of:
(edit)
Last Closed: 2016-11-04 01:52:32 UTC


Attachments (Terms of Use)
Proposed patch (3.63 KB, patch)
2015-11-18 15:22 UTC, Nick Clifton
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2016:2265 normal SHIPPED_LIVE binutils bug fix update 2016-11-03 13:33:42 UTC
Sourceware 18668 None None None Never

Description David Abdurachmanov 2015-07-15 19:10:50 UTC
Description of problem:

There are two cases then ld.bfd does not insert veneers on aarch64:
- "the target symbol and relocated place are in separate sections"
- if you are building a shared library and a function call goes through PLT stub. PLT stub ends up outside of +/-128MB range.

Version-Release number of selected component (if applicable):

The problems are present in trunk (last tested July 13) of binutils.

How reproducible:

All the details are in referenced PR in sourceware bugzilla.

Comment 2 David Abdurachmanov 2015-07-21 08:46:12 UTC
Fixes for both issues are now posted for review:

[AArch64] PR18668, Generate long branch veneer if call to plt stub is out of range
https://sourceware.org/ml/binutils/2015-07/msg00137.html

[AArch64] Long branch veneer support far symbol defined by --defsym
https://sourceware.org/ml/binutils/2015-07/msg00210.html

Comment 4 Nick Clifton 2015-11-18 15:22 UTC
Created attachment 1096127 [details]
Proposed patch

Once the 7.3 branch is created, this patch can be used to fix this BZ...

Comment 5 Nick Clifton 2016-02-23 17:23:34 UTC
binutils-2.25.1-7.el7 now contains the full patch.

Comment 9 Miloš Prchlík 2016-06-24 07:54:03 UTC
Verified for build binutils-2.25.1-19.base.el7.

Comment 10 Yaakov Selkowitz 2016-07-28 20:37:49 UTC
*** Bug 1360941 has been marked as a duplicate of this bug. ***

Comment 14 errata-xmlrpc 2016-11-04 01:52:32 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://rhn.redhat.com/errata/RHBA-2016-2265.html


Note You need to log in before you can comment on or make changes to this bug.