| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=628795
The upstream bug is https://sourceware.org/bugzilla/show_bug.cgi?id=17704
This patch is backported from upstream -
commit ac423761af22f7858a1413cda5df3e1d5e88d4e4
Author: Gergely Nagy <ngg@tresorit.com>
Date: Fri Oct 21 11:08:20 2016 -0700
Fix PR 17704.
This fix keeps the section with the highest alignment when folding sections with ICF.
PR gold/17704
* icf.cc (match_sections): Add new parameter section_addraligns.
Check section alignment and keep the section with the strictest
alignment.
(find_identical_sections): New local variable section_addraligns.
Store each section's alignment.
* testsuite/pr17704a_test.s: New file.
* testsuite/Makefile.am (pr17704a_test): New test.
* testsuite/Makefile.in: Regenerate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 21502954
This patch is backported from upstream -
commit c20ceeb226168ffd84078ef74d890c2b7f69a435
Author: Yiran Wang <yiran@google.com>
Date: Mon Jul 20 08:47:57 2015 -0700
Remove warning about references from shared objects to hidden symbols.
gold/
PR gold/15574
* resolve.cc (Symbol_table): Remove warning about references
from shared objects to hidden symbols.
* testsuite/Makefile.am (hidden_test): Add hidden_test.syms.
* testsuite/Makefile.in: Regenerate.
* testsuite/hidden_test.sh: Check dynamic symbol table; update
expected error messages.
Change-Id: Ie6fb67071c7f478859069b7b4bf629cd44f91844
|
|
|
|
|
|
|
|
|
|
|
|
| |
resolved."
Bug: 21502954
This change reverts https://android-review.googlesource.com/#/c/155101/, to be
replaced by the upstream patch with tests.
- https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=c20ceeb226168ffd84078ef74d890c2b7f69a435
Change-Id: Id929c8422a016638f860ac508eeafc7080584600
|
|
|
|
|
|
|
|
|
|
|
| |
dwp segfaults when trying to get .dwp file from a binary built without
debug fission. This patch fixes that.
upstream thread is
https://sourceware.org/ml/binutils/2016-05/msg00204.html
BUG=None
TEST=dwp still works with files built with debug fission and dwp does not
segfault on files that are not built with debug fission.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry-picked from upstream: d5cff5df74b18e1e5ed94de8f4c9adee3ffd95c6
For the case of MIPS n64 target and 32-bit host, the computation of
the DT_MIPS_RLD_MAP_REL tag involves sdyn->output_section->vma +
sdyn->output_offset (64-bit) being added to b (32-bit host pointer),
so losing the high part and resulting in an incorrect
DT_MIPS_RLD_MAP_REL tag, and all dynamically linked glibc tests
failing for n64. This patch fixes this (spot-tested with glibc tests;
however, I don't have a self-contained testcase for this bug).
* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections)
<DT_MIPS_RLD_MAP_REL>: Add target address to host address
difference, not to host pointer.
Change-Id: If4984d632723a36a3d6c739a96706b5636f975bc
Conflicts:
binutils-2.25/bfd/ChangeLog
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This tag makes it possible to access the debug map when debugging position
independent executables.
bfd/
* elfxx-mips.c (_bfd_mips_elf_create_dynamic_sections): Use executable
instead of !shared to indicate an application vs shared library.
(_bfd_mips_elf_size_dynamic_sections): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Handle DT_MIPS_RLD_MAP_REL.
(_bfd_mips_elf_get_target_dtag): Likewise.
binutils/
* readelf.c (get_mips_dynamic_type): Handle DT_MIPS_RLD_MAP_REL.
include/
* elf/mips.h (DT_MIPS_RLD_MAP_REL): New macro.
ld/testsuite/
* ld-mips-elf/pic-and-nonpic-3b.ad: Adjust for extra dynamic tag.
* ld-mips-elf/pic-and-nonpic-4b.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-5b.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-n32.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-n64.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-o32.ad: Likewise.
* ld-mips-elf/tlsdyn-o32-1.d: Likewise.
* ld-mips-elf/tlsdyn-o32-1.got: Likewise.
* ld-mips-elf/tlsdyn-o32-2.d: Likewise.
* ld-mips-elf/tlsdyn-o32-2.got: Likewise.
* ld-mips-elf/tlsdyn-o32-3.d: Likewise.
* ld-mips-elf/tlsdyn-o32-3.got: Likewise.
* ld-mips-elf/tlsdyn-o32.d: Likewise.
* ld-mips-elf/tlsdyn-o32.got: Likewise.
* ld-mips-elf/pie-n32.d: New file.
* ld-mips-elf/pie-n64.d: Likewise.
* ld-mips-elf/pie-o32.d: Likewise.
* ld-mips-elf/pie.s: Likewise.
* ld-mips-elf/mips-elf.exp: Add new tests.
Change-Id: I9fa38c2876a39c29ae3718bae0ade55c677f96fd
|
|
|
|
| |
This reverts commit 51d71fd2cc99f309cb792cc48ae910baeb92b2a0.
|
|
|
|
|
|
|
|
|
| |
This reverts commit 7e80b87f7ff08c7c13f38d76a953b0cd753403aa.
Conflicts:
binutils-2.25/bfd/ChangeLog
Change-Id: I1c0e3d5e9483001db6a4ffe807d6246c2f3ca126
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upstream patch being backported:
commit 84d543b7ed93bf6511cdf45791f4f0b717dfb718
Author: Sriraman Tallam <tmsriram@google.com>
Date: Fri Feb 5 15:07:45 2016 -0800
2016-02-05 Sriraman Tallam <tmsriram@google.com>
* icf.cc (get_rel_addend): New function.
(get_section_contents): Move merge section addend computation to a
new function. Ignore negative values for SHT_REL and SHT_RELA addends.
Fix bug to not read past the length of the section.
Fix bug related to addend computation for MERGE sections.
Tested via cbuildbot for ChromeOS and build on Android mnc-dr-release
for hammerhead
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Upstream patch being backported:
commit fc5a9bd57cbb974b8fc3aeb9a15d644cd9103451
Author: Cary Coutant <ccoutant@gmail.com>
Date: Fri Feb 26 07:50:15 2016 -0800
Discard FDEs for zero-length address ranges.
2016-02-26 Egor Kochetov <egor.kochetov@intel.com>
Cary Coutant <ccoutant@gmail.com>
gold/
PR gold/19735
* ehframe.h (Cie::fde_encoding): New method.
* ehframe.cc (Eh_frame::read_fde): Discard FDEs for zero-length
address ranges.
TESTED=only tested building with 'build.py'
BUG=26085687
Change-Id: I52e90fba86b113a557dd4d29d36ecb4c512f3f7a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG: 26536732
Tested by building binutils on ubuntu, and using the newly built gold
to link volantis binaries. The info messages are gone.
This patch is backported from upstream -
commit e3dbf58233db3ad72f1ba624dc7f13ffd2728f25
Author: Han Shen <shenhan@google.com>
Date: Thu Feb 11 09:47:49 2016 -0800
Remove info message for every erratum 843419 found and fixed.
2016-02-11 Rahul Chaudhry <rahulchaudhry@google.com>
* aarch64.cc (Target_aarch64::scan_erratum_843419_span):
Remove info message for every erratum 843419 found and fixed.
Change-Id: I9792795096c919b006e98fdfdb01b448e597d605
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The error happens while linking a huge arm32 binary (for example, a
debuggable chrome browser on arm) - the plt jump offset overflows. This
fixes the problem by introducing another level of indirection.
By default this does not affect anything. However in case of plt jump
offset overflow, instead of triggering an internal error, the linker
generates a proper message and suggests add "--long-plt" to the linker
command.
Tested via linking debug chrome browser for arm32.
Also tested by build.py on android.
The upstream patch -
commit ce3e49806d505721e0875e704de0b6fcba7660ed
Author: Peter Collingbourne <pcc@google.com>
Date: Thu Dec 17 16:50:35 2015 -0800
Implement --long-plt flag (ARM only).
gold/
PR gold/18780
* arm.cc (Target_arm::do_make_data_plt): Choose PLT generator
based
on value of --long-plt flag.
(Output_data_plt_arm_standard::do_get_plt_entry_size): Moved to
Output_data_plt_arm_short.
(Output_data_plt_arm_standard::do_fill_plt_entry): Likewise.
(Output_data_plt_arm_standard::plt_entry): Likewise.
(Output_data_plt_arm_standard::do_fill_first_plt_entry): Fix
variable reference.
(Output_data_plt_arm_short): New class.
(Output_data_plt_arm_short::do_fill_plt_entry): Error out on too
large
PLT offsets instead of asserting.
(Output_data_plt_arm_long): New class.
* options.h (General_options): Define --long-plt flag.
Change-Id: Ia61126a09f2213d1ca5c3635ec9e5b36a63f6cf3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tested by build.py for linux aarch64 toolchains.
The upstream patch is:
commit 9a472eda40ba686e45bf4922455518ffa3c887e1
Author: Han Shen <shenhan@google.com>
Date: Fri Jan 15 09:31:23 2016 -0800
[gold][aarch64] PR gold/19472 - DSOs need pc-relative stubs.
The stub generated during relaxation uses absolute addressing mode
for
shared libraries, which is not correct. Use pc-relative addressing
instead.
gold/ChangeLog:
2016-01-15 Han Shen <shenhan@google.com>
PR gold/19472 - DSOs need pc-relative stubs.
* aarch64.cc (Reloc_stub::stub_type_for_reloc): Return
PC-relative stub type for DSOs and pie executables.
Change-Id: Id0022975cf93600117ff5bf300b9d736d6ad1f80
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note, there is a small change from the origin patch - while in the
upstream patch, the option --no-apply-dynamic is default off, it is on
by default in this CL.
This should not bring any changes to android or chromeos, because the
relocation value this CL changes is not used by chromeos, and is not
used by android either (after the fix in bionic months ago).
The backported patch is -
commit 0eccf19f96d6218dd7c2f8d13f0546c2b942cc08
Author: Cary Coutant <ccoutant@gmail.com>
Date: Thu Nov 5 12:24:14 2015 -0800
Add aarch64-specific --no-apply-dynamic-relocs option.
With --no-apply-dynamic-relocs on aarch64 targets, gold will not
apply
link-time values for absolute relocations that become dynamic
relocations.
This provides a workaround for broken Android dynamic linkers that
use
the link-time value as an extra addend to the relocation.
gold/
PR gold/19163
* aarch64.cc (Target_aarch64::Relocate::relocate): Don't apply
certain relocations if --no-apply-dynamic-relocs is set.
* options.h (--apply-dynamic-relocs): New aarch64-specific
option.
Tested - build whole toolchain and built android N9 image.
Change-Id: Ida524bbee2a83574cd9e78ffdad9270787327c78
|
|
|
|
|
|
|
|
|
| |
The go/unsafe-pie link should not appear in any warning messages,
replace it with a little bit detail.
Tested by building locally on ubuntu.
Change-Id: I3e590108ec2c6c8917475b5d78cdabbfcf2833f7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ChromeOS reported a bug complaining about no default library search path
after unification. Bug here -
https://code.google.com/p/chromium/issues/detail?id=569605
Fix it for ChromeOS. This fix does not change anything for Android.
Test:
ChromeOS: manually test bug is fixed
Android: ./build.py --host=linux --toolchain=x86_64
Change-Id: Ia900d081980d408c62a737917708e19842357e8e
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
"%ld" is the printf specifier for "long int", which is 64-bit on 64-bit
machines, and 32-bit on 32-bit hosts. While uint64_t is always 64 bits,
so replace it with macro "PRIu64".
Tested:
./build.py --host "linux" --toolchain aarch64-linux-android
./build.py --host "linux" --toolchain arm-linux-androideabi
./build.py --host "linux" --toolchain mipsel-linux-android
./build.py --host "windows" --toolchain arm-linux-androideabi
Change-Id: I9f0b322ed14e6feb7a110bfebcff963cf94d7703
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bug entry here - https://b.corp.google.com/u/0/issues/25642296
Tested: ./build.py --host "linux" --toolchain aarch64-linux-android
Upstream patch here -
commit 4d2f5d5824be99326c2c3e459c298e338856d8c8
Author: Han Shen <shenhan@google.com>
Date: Tue Oct 27 15:17:54 2015 -0700
Patch for PR gold/19042 - unsupported reloc 311/312.
gold/
* aarch64.cc (Target_aarch64::Scan::local): Add support for
reloc 311/312.
Change-Id: If784460c1ebdfb2be1ebdf1486db5eb03c5240a5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
About source code - The base version of this binutils is newer than that
of aosp/binutils-2.25, it is based on the binutils that is used to build
google products and ChromiumOS. And it contains *all* local Android
patches as well as all patches that are cherry-picked from upstream for
aosp/binutils-2.25 tree (up to Nov. 5 - 932d71b85). You may find the
detailed development history for this binutils tree here -
https://chromium.googlesource.com/chromiumos/third_party/binutils/+log/unification
(This CL is a combination of all the CLs in it. After this CL is
submitted the tree will be identical to
https://chromium.googlesource.com/chromiumos/third_party/binutils/+log/unification
at 2865a3615d80bd5f82d14d7e0484e84dc052596a)
About testing - We tested this binutils for both ChromiumOS and
Android. For android, we tested building N4, N5X, N6, N7, N9 using new
binutils, we also did a full-build of toolchain (by build.py) and built
a N5X image; for ChromiumOS - it passed ChromiumOS toolchain release
tests on all 4 platforms (x86, x86_64, arm32 and arm64).
Change-Id: I2bb2cf579f9458d0a8bc9612331dc7d5043e3d82
|
|
|
|
|
|
|
|
|
|
| |
Cherry-pick of upstream commit cdb061674c044636465e52a8c989b9011f2ec8ac
gold/ChangeLog:
* arm.cc (Reloc_stub::stub_type_for_reloc): Plumb to stub generation.
* options.h (General_options): Add --pic-veneer option.
BUG: 25512672
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry-pick of upstream commit 31593e1b96c792abba3c5268d6423975aefa56b2
2015-02-24 Nick Clifton <nickc@redhat.com>
* configure.ac (AC_CHECK_HEADERS): Add wctype.h.
* configure: Regenerate.
* config.in: Regenerate.
* peXXigen.c: Include wctype.h if HAVE_WCTYPE_H is defined.
(u16_mbtowc): Use wint_t types if HAVE_WCTYPE_H is defined.
(rsrc_cmp): Use towlower instead of wcsncasecmp if HAVE_WCTYPE_H
is defined.
Bug: 25427405
Change-Id: I06e99d906226ce9c88ff1c568ae7a4d84df7f332
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherrypick of upstream commit 5d7908e0880030628536a0266968a15922574735
Author: Cary Coutant <ccoutant@gmail.com>
Date: Thu Jun 11 13:19:38 2015 -0700
Fix gold build error at -O0.
In aarch64.cc, Erratum_stub::STUB_ADDR_ALIGN and Reloc_stub::STUB_ADDR_ALIGN
are declared as static const int, and initialized in the class body. These
values are referenced from outside the class body, and with no optimization,
the references go unresolved.
gold/
* aarch64.cc (Erratum_stub::STUB_ADDR_ALIGN): Move initialization
outside class body.
(Reloc_stub::STUB_ADDR_ALIGN): Likewise.
Change-Id: I6c0726e624be076e0d0565652a56da5ef761d88a
|
|
|
|
|
|
|
|
|
| |
gold/ChangeLog:
* aarch64.cc (Target_aarch64::scan_erratum_843419_span): Use 'gold_info'.
(Target_aarch64::scan_erratum_835769_span): USe 'gold_info'.
(cherry picked from commit 73854cdd438dc8858290231ebcb682377d71fec2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The psABI (AAELF) says this about mapping symbols:
4.6.5.1 Section-relative mapping symbols
Mapping symbols defined in a section define a sequence of
half-open address intervals that cover the address range of the
section. Each interval starts at the address defined by the
mapping symbol, and continues up to, but not including, the
address defined by the next (in address order) mapping symbol or
the end of the section. A section must have a mapping symbol
defined at the beginning of the section; however, if the section
contains only data then the mapping symbol may be omitted.
That makes it pretty clear that, in the absence of a mapping symbol,
the entire section can be treated as data.
gold/ChangeLog:
* aarch64.cc (AArch64_relobj::scan_errata): Drop missing symbol warning.
* arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Drop missing
symbol warning.
(cherry picked from commit 61163dfaaedb90d78e11c1d79ad1e469daf3da47)
|
|
|
|
|
|
|
|
|
| |
This was added before ld.gold scans for erratum 835769, but
GCC has been hard-wired to pass "--fix-cortex-a53-835769"
to linker (ld.bfd is default for AArch64 for now) unconditionally
in Android platform.
Change-Id: I39bacdc2a52d09afdc0993c17b46ac438d1fa246
|
|
|
|
|
|
|
|
|
|
|
|
| |
2015-07-07 Han Shen <shenhan@google.com>
gold/ChangeLog:
2015-07-06 Han Shen <shenhan@google.com>
* aarch64.cc (AArch64_relobj::do_count_local_symbols): Make legal
of mapping symbols.
Change-Id: If62f577eeb704d8c7b0b2f525e91b3cb311001ca
(cherry picked from commit b91deca94e36b9f18156909e4c615fe7af8e3ae8)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The crash reason is that the insn to be moved to stub may be a
relocation spot, so instead of placing the origin insn (that is insn
before-relocation) to the stub, I have to place the relocated one.
Note the relocation involved is non-pc-relative, so it is safe to move
the relocated insn.
gold/ChangeLog:
2015-06-29 Han Shen <shenhan@google.com>
* AArch64.cc (Erratum_stub::Insn_utilities): New typedef.
(Erratum_stub::update_erratum_insn): New method.
(Stub_table::relocate_stubs): Modified to place relocated insn.
(AArch64_relobj::fix_errata): Modified gold_assert.
Change-Id: I9d90ac6e569bbbab086f877c7446dc6f9ea96247
(cherry picked from commit 56b06706ebe6bb3decc674b788b6f5b243b8610d)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gold/ChangeLog:
* aarch64.cc (AArch64_insn_utilities::BYTES_PER_INSN): Move
defintion outside class definition.
(AArch64_insn_utilities::AARCH64_ZR): New static constant.
(AArch64_insn_utilities::aarch64_op31): New member.
(AArch64_insn_utilities::aarch64_ra): New member.
(AArch64_insn_utilities::aarch64_mac): New member.
(AArch64_insn_utilities::aarch64_mlxl): New member.
(ST_E_835769): New global enum member.
(Stub_table::relocate_stubs): Add 835769 handler.
(Stub_template_repertoire::Stub_template_repertoire): Install new
stub type.
(AArch64_relobj::scan_errata): This func is renamed from
scan_erratum_843419.
(AArch64_relobj::do_count_local_symbols): Add 835769 handler.
(AArch64_relobj::do_relocate_sections): Add 835769 handler.
(AArch64_relobj::scan_sections_for_stubs): Add 835769 handler.
(Target_aarch64::scan_erratum_835769_span): New method.
(Target_aarch64::create_erratum_stub): New method.
(Target_aarch64::is_erratum_835769_sequence): New method.
(Target_aarch64::scan_erratum_843419_sequence): Move part of the
code into create_erratum_stub.
* options.h (fix_cortex_a53_835769): New option.
Change-Id: Ia355fad38de61f82b9a42c601129fbbe2730ba27
(cherry picked from commit 2f0c79aa61e82cbc5da4b9ab399362b2cdd8ea2e)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now fixing for 843419 is fully functional.
The first part of the erratum fix CL is here -
https://sourceware.org/ml/binutils/2015-04/msg00229.html
gold/ChangeLog
2015-06-10 Han Shen <shenhan@google.com>
* aarch64.cc(global enum): New constants representing stub types.
(Stub_template): New POD struct.
(Stub_template_repertoire): New class.
(Stub_base): New class.
(Erratum_stub): New class.
(Reloc_stub): Refactored to be a subclass of Stub_base.
(Reloc_stub::Stub_type): Removed.
(Reloc_stub::offset): Moved to Stub_base.
(Reloc_stub::set_offset): Moved to Stub_base.
(Reloc_stub::destination_address): Moved to Stub_base.
(Reloc_stub::set_destination_address): Moved to Stub_base.
(Reloc_stub::reset_destination_address): Moved to Stub_base.
(Reloc_stub::stub_type): Renamed and moved to Stub_base.
(Reloc_stub::stub_size): Renamed and moved to Stub_base.
(Reloc_stub::stub_insns): Renamed and moved to Stub_base.
(Reloc_stub::write): Moved to Stub_base.
(Reloc_stub::invalid_offset): Moved to Stub_base.
(Reloc_stub::invalid_address): Moved to Stub_base.
(Reloc_stub::stub_type_): Renamed and moved to Stub_base.
(Reloc_stub::stub_insns_): Moved to Stub_base.
(Reloc_stub::offset_): Moved to Stub_base.
(Reloc_stub::destination_address_): Moved to Stub_base.
(Stub_table::The_aarch64_relobj): New typedef.
(Stub_table::The_erratum_stub): New typedef.
(Stub_table::The_erratum_stub_less): New typedef.
(Stub_table::The_erratum_stub_set): New typedef.
(Stub_table::The_erratum_stub_set_iter): New typedef.
(Stub_table::empty): Added emptiness testing for erratum stubs.
(Stub_table::add_erratum_stub): New method to add an erratum stub.
(Stub_table::find_erratum_stub): New method.
(Stub_table::find_erratum_stubs_for_input_section): New method.
(Stub_table::erratum_stub_address): New method.
(Stub_table::update_date_size_changed_p): Modified to handle erratum stubs.
(Stub_table::do_addralign): Modified to handle erratum stubs.
(Stub_table::erratum_stubs_): New member.
(Stub_table::erratum_stub_size_): New member.
(Stub_table::relocate_stubs): Modified to handle erratum stubs.
(Stub_table::do_write): Modified to handle erratum stubs.
(AArch64_relobj::The_erratum_stub): New typedef.
(AArch64_relobj::Erratum_stub_set_iter): New typedef.
(AArch64_relobj::fix_errata): New method.
(Target_aarch64::The_reloc_stub_type): Removed.
(Target_aarch64::The_erratum_stub): New typede.
(AArch64_relocate_functions::construct_b): New method.
Change-Id: I37ccc9fbefd5559dae700637e119a2a885cf3eb9
(cherry picked from commit a48d0c12f893a922692492829f04189d9f216172)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry-picked from upstream: d5cff5df74b18e1e5ed94de8f4c9adee3ffd95c6
For the case of MIPS n64 target and 32-bit host, the computation of
the DT_MIPS_RLD_MAP_REL tag involves sdyn->output_section->vma +
sdyn->output_offset (64-bit) being added to b (32-bit host pointer),
so losing the high part and resulting in an incorrect
DT_MIPS_RLD_MAP_REL tag, and all dynamically linked glibc tests
failing for n64. This patch fixes this (spot-tested with glibc tests;
however, I don't have a self-contained testcase for this bug).
* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections)
<DT_MIPS_RLD_MAP_REL>: Add target address to host address
difference, not to host pointer.
Change-Id: If4984d632723a36a3d6c739a96706b5636f975bc
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2015-02-02 Khem Raj <raj.khem@gmail.com>
gold/
* attributes.h (class Output_attributes_section_data ): Add
do_print_to_mapfile function.
BUG=21451238
b.android.com/177690
Change-Id: I56d853784a48c247578d08bca848869b3a4c2c78
|
|
|
|
|
|
|
|
| |
AFAICT this was an Android hack. I don't see it anywhere in the
history for upstream. Just remove it.
Bug: http://b/21534147
Change-Id: I7c69f543a80a0e4805fbea2934eaec052544d6c7
|
|
|
|
|
|
|
|
|
| |
resolved.
It looks like it is WAI, but in some scenario there could a lot of them
and the build script just die on any warning.
Please refer to bug 21502954 for some details.
Change-Id: I6cc90adccc63d26f15821bed6e4c6ff336722eff
|
|
|
|
|
|
|
|
| |
1. In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4
doesn't support ended initializer list
2. wcsncasecmp doesn't exist in MacSDK10.6.x
Change-Id: I69204a72f853f5263dffedc448379d75ed4eca2e
|
|\ |
|
| |
| |
| |
| | |
Change-Id: I7ea5748faea472beb79e34aee8d19c4e0f37981e
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Keep gold consistent with bfd erratum-fixing option names, so as to
ease life in Makefile/scripts.
gold/
* options.h (--fix-cortex-a53-843419): Rename option.
* aarch64.cc (AArch64_relobj::do_count_local_symbols): Use renamed
option.
(AArch64_relobj::scan_sections_for_stubs): Use renamed option.
Change-Id: I8941fb38ef34fa5eb297e83725d87fdee994fc3a
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It implemented scanning the binary and reporting occurrences to users
when '--fix-cortex-a53' is turned on. With this, gold users will be
able to see if or not there are such erratum occurrences in the output
binary. Also included in the CL is reading/recording mapping symbols,
which is needed during scan.
gold/ChangeLog:
* aarch64.cc (AArch64_insn_utilities): New utility class.
(AArch64_relobj::Mapping_symbol_position): New struct.
(AArch64_relobj::Mapping_symbol_info): New typedef.
(AArch64_relobj::do_count_local_symbols): New function overriding
parent's implementation.
(AArch64_relobj::mapping_symbol_info_): New member
(AArch64_relobj::scan_erratum_843419): New method.
(Target_aarch64::scan_erratum_843419_span): New method.
(Target_aarch64::is_erratum_843419_sequence): New method.
* options.h (fix_cortex_a53): New option.
Change-Id: I4fe7a2b8858cda358ac28eede42cd5a2f49c2238
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2015-04-01 Ilya Tocar <ilya.tocar@intel.com>
PR gold/17640
* i386.cc (Target_i386::can_convert_mov_to_lea): New.
(Target_i386::Scan::local): Don't create GOT entry, when we
can convert GOT to GOTOFF.
(Target_i386::Scan::global): Ditto.
(Target_i386::Relocate::relocate): Convert mov foo@GOT(%reg), %reg to
lea foo@GOTOFF(%reg), %reg if possible.
* testsuite/Makefile.am (i386_mov_to_lea): New test.
* testsuite/i386_mov_to_lea1.s: New.
* testsuite/i386_mov_to_lea2.s: Ditto.
* testsuite/i386_mov_to_lea3.s: Ditto.
* testsuite/i386_mov_to_lea4.s: Ditto.
* testsuite/i386_mov_to_lea5.s: Ditto.
* testsuite/i386_mov_to_lea.sh: Ditto.
Change-Id: I7916a1da20873600a910ce358990b1fe2c1f9897
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
|
|
|
|
| |
Change-Id: I7664f43e31327f2f9bb97b0eaad584f80948d4fe
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some early revisions of the Cortex-A53 have an erratum (843419).
The details of the erratum are quite complex and involve dynamic
conditions. For the purposes of the workaround we have simplified
the static conditions to an ADRP in the last two instructions of a
4KByte page, followed within four instructions by a load/store dependent
on the ADRP.
This patch adds support to conservatively scan for and workaround the erratum.
There are two different workaround strategies used. The first is to rewrite
ADRP instructions which form part of an erratum sequence with an ADR instruction.
In situations where the ADR provides insufficient offset the dependent
load or store instruction from the sequence is moved to a stub section
and branches are inserted from the original sequence to the relocated
instruction and back again.
Stub section sizes are rounded up to a multiple of 4096 in order to ensure
that the act of inserting work around stubs does not create more errata sequences.
Workaround stubs are always inserted into the stub section associated
with the input section containing the erratum sequence. This ensures that the
fully relocated form of the veneered load store instruction is available at the
point in time when the stub section is written.
2015-03-30 Tejas Belagod <tejas.belagod@arm.com>
Marcus Shawcroft <marcus.shawcroft@arm.com>
Jiong Wang <jiong.wang@arm.com>
* bfd-in.h (bfd_elf64_aarch64_set_options)
(bfd_elf32_aarch64_set_options): Add parameter.
* bfd-in2.h: Regenerated.
* elfnn-aarch64.c (aarch64_erratum_843419_stub)
(_bfd_aarch64_adrp_p, _bfd_aarch64_erratum_843419_sequence_p)
(_bfd_aarch64_erratum_843419_stub_name)
(_bfd_aarch64_erratum_843419_fixup)
(_bfd_aarch64_erratum_843419_scan)
(_bfd_aarch64_erratum_843419_branch_to_stub)
(_bfd_aarch64_erratum_843419_p): Define.
(enum elf_aarch64_stub_type): Define
aarch64_stub_erratum_843419_veneer.
(struct elf_aarch64_stub_hash_entry): Define adrp_offset.
(struct elf_aarch64_link_hash_table): Define fix_erratum_843419
and fix_erratum_843419_adr.
(stub_hash_newfunc): Initialize adrp_offset;
(_bfd_aarch64_add_stub_entry_after): Define.
(aarch64_map_one_stub, aarch64_build_one_stub)
(aarch64_size_one_stub): Handle
aarch64_stub_erratum_843419_veneer.
(_bfd_aarch64_resize_stubs): Round stub section size.
(elfNN_aarch64_size_stubs): Add scan for 843419.
(bfd_elfNN_aarch64_set_options): Add parameter. Initialize
fix_erratum_843419 and fix_erratum_843419_adr.
(struct erratum_835769_branch_to_stub_data): Add info.
(elfNN_aarch64_write_section): Initialise info. Handle 843419.
(elfNN_aarch64_size_dynamic_sections): Handle 843419.
* elfxx-aarch64.c (_bfd_aarch64_decode_adrp_imm)
(_bfd_aarch64_sign_extend): Define.
(reencode_adr_imm): Remove static. Rename to:
(_bfd_aarch64_reencode_adr_imm): Define.
(_bfd_aarch64_elf_put_addend): Call _bfd_aarch64_reencode_adr_imm.
* elfxx-aarch64.h (AARCH64_ADR_OP, AARCH64_ADRP_OP)
(AARCH64_ADRP_OP_MASK, _bfd_aarch64_sign_extend)
(_bfd_aarch64_decode_adrp_imm, _bfd_aarch64_reencode_adr_imm):
Define.
ld/testsuite:
2015-03-24 Tejas Belagod <tejas.belagod@arm.com>
* emultempl/aarch64elf.em
(aarch64_elf_create_output_section_statements): Add parameter in
bfd_elf${ELFSIZE}_aarch64_set_options call.
(OPTION_FIX_ERRATUM_843419): Define.
(PARSE_AND_LIST_LONGOPTS): Add fix-cortex-a53-843419.
(PARSE_AND_LIST_ARGS_CASES): Add OPTION_FIX_ERRATUM_843419.
Change-Id: I758b04c90d431f4e72a978871d5a66676c413d92
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ensure that injection of a stub section does not break a link where
there is an xpectation that flow of control can pass from one input
section to another simply by linking the input sections in series.
The solution here is to allow stub sections to be inserted after any
input section (existing behaviour), but inject an additional branch at
the start of each stub section such that control flow falling into the
stub section will branch over the stub section.
Change-Id: I8ccadcfb2f43e6409cb5a649087a47c0c8826b15
|
|
|
|
|
|
|
| |
Lower stub alignment from 8 to 4 bytes thus removing padding between
input section content and stub section content.
Change-Id: Ic3afff9bc2f013b4b47e181b269b40231385080a
|
|
|
|
| |
Change-Id: Idc292f60196ed4bf417eb77acc239761666adb8b
|
|
|
|
| |
Change-Id: Ib6171d8646bc0e825a5038c7087acc534a8612a9
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the behaviour of section_group[] such that .stub_sec points to
the stub section attached to the indexed section rather than the stub
section attached to the link_section pointed to be the index section.
This provides a mechanism to get to the stub section following any
input section. While still allowing the section grouping mechanism to
find the section group stub section associated with an input section
by first following the link_sec pointer.
Change-Id: I19bce3feea77bbc71c04f2d8b3a204c527a21d9a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch recognizes that we only need to perform one scan for the
835769 errata and that this scan can take place before we insert
branch stubs. The erratum scan code is relocated and adjusted to
create stub entries directly rather than populating an intermediate
representation. Since stub entries are created immediately we can
drop the adhoc stub size adjustment code and allow the generic stub
sizing code to deal with 835769 stub entries.
This patch restructures the code but does not change the workaround
used to deal with erratum 83679, the exact placement of workaround
stubs in the final image may change slightly after this patch due to
stubs being created in a different order.
Change-Id: I1ac3b2b7a8a5faf678a1e375f50f63ab6fd22d1f
|
|
|
|
|
|
|
|
| |
Adjust the 835769 workaround code to use
_bfd_aarch64_add_stub_entry_in_group rather than inspect the
underlying section_group structure directly.
Change-Id: I26e7793af2a8bd6ab57c2b958cec12565d280a8f
|
|
|
|
|
|
|
|
|
| |
bfd/ChangeLog
* elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Add
missing ';'.
Change-Id: I174cb391792c428521a9334eb166cdc8c979b12f
|