Commit graph

11812 commits

Author SHA1 Message Date
GDB Administrator
6f20d58b6f Automatic date update in version.in 2015-04-02 00:00:07 +00:00
Marcus Shawcroft
4106101c44 [AArch64] Workaround for Cortex A53 erratum 843419
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
Cortex A53 erratum 843419.  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-04-01 13:16:38 +01:00
H.J. Lu
afa59b7900 Regenerate configure in bfd/binutils/gas/gdb
bfd/

2015-04-01  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

binutils/

2015-04-01  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

gas/

2015-04-01  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

gdb/

2015-04-01  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.
2015-04-01 04:55:48 -07:00
GDB Administrator
2ae0baa450 Automatic date update in version.in 2015-04-01 00:00:08 +00:00
Ed Schouten
6036f48621 Add support for Nuxi CloudABI on x86-64
bfd/

	* config.bfd (targ_defvec): Set to x86_64_elf64_cloudabi_vec
	for x86_64-*-cloudabi*.
	* configure.ac: Handle x86_64_elf64_cloudabi_vec.
	* configure: Regenerated.
	* elf64-x86-64.c (TARGET_LITTLE_SYM): Support x86_64-*-cloudabi*.
	(TARGET_LITTLE_NAME): Likewise.
	(ELF_OSABI): Likewise.
	(elf64_bed): Likewise.
	* targets.c (x86_64_elf64_cloudabi_vec): New.
	(_bfd_target_vector): Add x86_64_elf64_cloudabi_vec.

gas/

	* configure.tgt (fmt): Set to elf for *-*-cloudabi*.

ld/

	* Makefile.am (ALL_64_EMULATION_SOURCES): Add
	eelf_x86_64_cloudabi.c.
	(eelf_x86_64_cloudabi.c): New.
	* configure.tgt (targ_emul): Set to elf_x86_64_cloudabi for
	x86_64-*-cloudabi*.
	* Makefile.in: Regenerated.
	* emulparams/elf_x86_64_cloudabi.sh: New file.
2015-03-31 08:11:08 -07:00
H.J. Lu
9ae4669950 Revert the AM_ZLIB change in bfd
* configure.ac: Revert the AM_ZLIB change.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* doc/Makefile.in: Likewise.
2015-03-31 06:39:57 -07:00
GDB Administrator
f6862f27a7 Automatic date update in version.in 2015-03-31 00:00:08 +00:00
H.J. Lu
bd53a53af4 Properly set sh_info for .rela.plt/rel.plt section
Since .rela.plt/rel.plt section may contain relocations against .got.plt
section, we set sh_info for .rela.plt/rel.plt section to .got.plt section
index if target has .got.plt section.

bfd/

	PR ld/18169
	* elf-bfd.h (elf_backend_data): Add get_reloc_section.
	(_bfd_elf_get_reloc_section): New.
	* elf.c (_bfd_elf_get_reloc_section): Likewise.
	(assign_section_numbers): Call get_reloc_section to look up the
	section the relocs apply.
	* elfxx-target.h (elf_backend_get_reloc_section): Likewise.
	(elfNN_bed): Initialize get_reloc_section with
	elf_backend_get_reloc_section.

ld/testsuite/

	PR ld/18169
	* ld-elf/linkinfo1a.d: Updated.
	* ld-elf/linkinfo1b.d: Likewise.
2015-03-30 04:40:49 -07:00
GDB Administrator
970bed001b Automatic date update in version.in 2015-03-30 00:00:07 +00:00
H.J. Lu
b51724e857 Fix a typo in bfd/ChangeLog 2015-03-29 07:36:27 -07:00
H.J. Lu
243340ad57 Add --with-system-zlib in bfd
This patch adds --with-system-zlib and remove --with-zlib in bfd.

	* Makefile.am (ZLIB): New.
	(ZLIBINC): Likewise.
	(AM_CFLAGS): Add $(ZLIBINC).
	(libbfd_la_LIBADD): Add $(ZLIB).
	* compress.c: Don't check HAVE_ZLIB_H to include <zlib.h>.
	(decompress_contents): Don't check HAVE_ZLIB_H.
	(decompress_contents): Likewise.
	(bfd_compress_section_contents): Likewise.
	(bfd_get_full_section_contents): Likewise.
	(bfd_init_section_decompress_status): Likewise.
	(bfd_init_section_compress_status): Likewise.
	* configure.ac (AM_ZLIB): Removed
	(zlibdir): New.  AC_SUBST.
	(zlibinc): Likewise.
	Add --with-system-zlib.
	* Makefile.in: Regenerated.
	* acinclude.m4: Likewise.
	* config.in: Likewise.
	* configure: Likewise.
	* doc/Makefile.in: Likewise.
2015-03-29 07:13:00 -07:00
GDB Administrator
2a2ec787bf Automatic date update in version.in 2015-03-29 00:00:08 +00:00
GDB Administrator
113d38f929 Automatic date update in version.in 2015-03-28 00:00:09 +00:00
Alan Modra
b84171287f Relax PR 15228 protected visibility restriction
Allows .dynbss copy of shared library protected visibility variables
if they are read-only.

To recap: Copying a variable from a shared library into an executable's
.dynbss is an old hack invented for non-PIC executables, to avoid the
text relocations you'd otherwise need to access a shared library
variable.  This works with ELF shared libraries because global
symbols can be overridden.  The trouble is that protected visibility
symbols can't be overridden.  A shared library will continue to access
it's own protected visibility variable while the executable accesses a
copy.  If either the shared library or the executable updates the
value then the copy diverges from the original.  This is wrong since
there is only one definition of the variable in the application.

So I made the linker report an error on attempting to copy protected
visibility variables into .dynbss.  However, you'll notice the above
paragraph contains an "If".  An application that does not modify the
variable value remains correct even though two copies of the variable
exist.  The linker can detect this situation if the variable was
defined in a read-only section.

	PR ld/15228
	PR ld/18167
	* elflink.c (elf_merge_st_other): Add "sec" parameter.  Don't set
	protected_def when symbol section is read-only.  Adjust all calls.
	* elf-bfd.h (struct elf_link_hash_entry): Update protected_def comment.
2015-03-27 16:20:32 +10:30
GDB Administrator
f3308340ab Automatic date update in version.in 2015-03-27 00:00:08 +00:00
Tejas Belagod
93ca856967 [AArch64] Fix branch stubs for BE
2015-03-26  Tejas Belagod  <tejas.belagod@arm.com>

ld/testsuite
  * ld-aarch64/farcall-back-be.d: New.

bfd/
  * elfnn-aarch64.c (aarch64_build_one_stub): Replace the call to generic
  _bfd_final_link_relocate with aarch64_relocate.
2015-03-26 16:20:38 +00:00
H.J. Lu
b19a8f8545 Skip gc-sections if relocation is incompatible
This patch skips gc-sections if input relocation is incompatible with
output.

bfd/

	PR ld/18160
	* elflink.c (elf_gc_sweep): Skip if relocation is incompatible.
	(bfd_elf_gc_sections): Likewise.

ld/testsuite/

	PR ld/18160
	* ld-x86-64/pr18160.d: New file.
	* ld-x86-64/pr18160.s: Likewise.
	* ld-x86-64/pr18160.t: Likewise.
	* ld-x86-64/x86-64.exp: Run pr18160.
2015-03-26 08:22:55 -07:00
GDB Administrator
a1ddc52b53 Automatic date update in version.in 2015-03-26 00:00:08 +00:00
Marcus Shawcroft
618655192f [AArch64] Implement branch over stub section.
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.
2015-03-25 15:16:04 +00:00
Marcus Shawcroft
d9ced15d6e [AArch64] Remove padding before stub sections.
Lower stub alignment from 8 to 4 bytes thus removing padding between
input section content and stub section content.
2015-03-25 15:15:40 +00:00
Marcus Shawcroft
357d1523b2 [AArch64] Adjust veneer count. 2015-03-25 14:45:28 +00:00
Senthil Kumar Selvaraj
d422d1c433 Garbage collecting debug sections
I noticed that _bfd_elf_gc_mark_extra_sections attempts to unmark
related debug sections when it finds an unmarked code section.
When it finds .text.foo is unmarked, for example, it removes
.debug_line.text.foo as well (using the section name as a suffix
match check.

However, it bails out after finding one such section.

bfd/
	* elflink.c (_bfd_elf_gc_mark_extra_sections): Don't break on
	first matching debug section.
ld/testsuite/
	* ld-gc/all-debug-sections.d: New file.
	* ld-gc/all-debug-sections.s: Likewise.
	* ld-gc/gc.exp: Execute new testcase.
2015-03-25 20:42:00 +10:30
GDB Administrator
f6d5c6943b Automatic date update in version.in 2015-03-25 00:00:08 +00:00
H.J. Lu
8d00121477 Don't write the zlib header if not used
No need to write the zlib header if compression didn't make the section
smaller.

	PR binutils/18087
	* compress.c (bfd_compress_section_contents): Don't write the
	zlib header and set contents as well as compress_status if
	compression didn't make the section smaller.
	(bfd_init_section_compress_status): Don't check compression
	size here.
2015-03-24 13:27:52 -07:00
Nick Clifton
fc42baf3cd Fixes a bug introduced by the new ranges checks on COFF symbol tables.
PR binutils/17512
	* coffgen.c (coff_get_normalized_symtab): Fix test for out of
	range auxillary sections.
2015-03-24 17:20:00 +00:00
Marcus Shawcroft
fc6d53be18 [AArch64] Factor out _bfd_aarch64_get_stub_for_link_section. 2015-03-24 14:10:43 +00:00
Marcus Shawcroft
30068a6d2d [AArch64] Refactor section_group[] representation.
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.
2015-03-24 14:10:43 +00:00
Marcus Shawcroft
5421cc6e55 [AArch64] Refactor generation of 835769 workaround stubs.
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.
2015-03-24 12:03:46 +00:00
Marcus Shawcroft
e572930b96 [AArch64] Use _bfd_aarch64_add_stub_entry_in_group.
Adjust the 835769 workaround code to use
_bfd_aarch64_add_stub_entry_in_group rather than inspect the
underlying section_group structure directly.
2015-03-24 12:03:39 +00:00
Alan Modra
8131c12209 Make powerpc bfd ld reloc overflow vs undefined symbols match gold
* elf64-ppc.c (ppc64_elf_relocate_section): Report overflow to
	stubs, even those for undefined weak symbols.  Otherwise, don't
	report relocation overflow on branches to undefined strong
	symbols.  Fix memory leak.
	* elf32-ppc.c (ppc_elf_relocate_section): Don't report relocation
	overflow on branches to undefined strong symbols.
2015-03-24 17:42:36 +10:30
GDB Administrator
9993d01233 Automatic date update in version.in 2015-03-24 00:00:08 +00:00
Keith Seitz
c53ed7cf57 [OBV] Fix build -- missing ';'
bfd/ChangeLog

	* elfnn-aarch64.c (_bfd_aarch64_create_or_find_stub_sec): Add
	missing ';'.
2015-03-23 11:47:26 -07:00
Marcus Shawcroft
94a75bde2f Adding Changelog for previous commit. 2015-03-23 16:56:29 +00:00
Marcus Shawcroft
35fee8b77b Factor out _bfd_aarch64_erratum_835769_stub_name 2015-03-23 16:14:14 +00:00
Marcus Shawcroft
13f622ec59 [AArch64] Factor out _bfd_aarch64_resize_stubs() 2015-03-23 16:14:05 +00:00
Marcus Shawcroft
6658567565 [AArch64] Factor stub creation code into _bfd_aarch64_create_stub_section. 2015-03-23 16:06:55 +00:00
Marcus Shawcroft
ef85752125 [AArch64] Factor out common behaviour between elf_aarch64_create_or_find_stub_sec and elfNN_aarch64_add_stub 2015-03-23 15:52:03 +00:00
Marcus Shawcroft
2144188dcf [AArch64] Flip sense of erratum_835769_scan. 2015-03-23 15:44:08 +00:00
Marcus Shawcroft
4c77202d00 [AArch64] Drop unused argument to elf_aarch64_create_or_find_stub_sec 2015-03-23 15:20:30 +00:00
Marcus Shawcroft
9b9971aac7 [AArch64] Remove unused variable. 2015-03-23 15:20:30 +00:00
Marcus Shawcroft
23956543da Fixup previous changelog entry. 2015-03-23 15:11:45 +00:00
Marcus Shawcroft
e2cdef47b7 Remove dead code. 2015-03-23 14:46:04 +00:00
Marcus Shawcroft
3d14faea41 [AArch64] Tidy up in aarch64_mem_op_p(). 2015-03-23 14:45:37 +00:00
Marcus Shawcroft
f872121a87 [AArch64] Adjust layout of elfNN_aarch64_write_section. 2015-03-23 14:35:28 +00:00
GDB Administrator
1a504d0763 Automatic date update in version.in 2015-03-23 00:00:08 +00:00
GDB Administrator
7188340681 Automatic date update in version.in 2015-03-22 00:00:08 +00:00
GDB Administrator
5da7e675cd Automatic date update in version.in 2015-03-21 00:00:07 +00:00
GDB Administrator
d4828b9e88 Automatic date update in version.in 2015-03-20 00:00:07 +00:00
Nick Clifton
1740ba0cec Add support for G13 and G14 flag bits in RL78 ELF binaries.
inc	* rl78.h (E_FLAG_RL78_G10): Redefine.
	(E_FLAG_RL78_CPU_MASK, E_FLAG_RL78_ANY_CPU, E_FLAG_RL78_G13
	E_FLAG_RL78_G14): New flags.

bin	* readelf.c (get_machine_flags): Decode RL78's G13 and G14 flags.

gas	* config/tc-rl78.c (enum options): Add G13 and G14.
	(md_longopts): Add -mg13 and -mg14.
	(md_parse_option): Handle -mg13 and -mg14.
	(md_show_usage): List -mg13 and -mg14.
	* doc/c-rl78.texi: Add description of -mg13 and -mg14 options.

bfd	* elf32-rl78.c (rl78_cpu_name): New function.  Prints the name of
	the RL78 core based upon the flags.
	(rl78_elf_merge_private_bfd_data): Handle merging of G13 and G14
	flags.
	(rl78_elf_print_private_bfd_data): Use rl78_cpu_name.
	(elf32_rl78_machine): Always return bfd_mach_rl78.
2015-03-19 15:37:43 +00:00
Nick Clifton
e2575e05e7 Fix building and testing dwarf debug section compression feature when zlib is not available.
PR gas/18087
gas/test	* gas/i386/dw2-compress-1.d: Allow the test to pass regardless of
	whether the .debug_info section was compressed on not.

bfd	* compress.c (bfd_compress_section_contents): Do not define this
	function if it is not used.
2015-03-19 12:14:56 +00:00