Commit Graph

13092 Commits

Author SHA1 Message Date
Alan Modra
08dc996fed PR20744, Incorrect PowerPC VLE relocs
VLE 16A and 16D relocs were functionally swapped.

	PR 20744
include/
	* opcode/ppc.h: Define VLE insns using 16A and 16D relocs.
bfd/
	* elf32-ppc.h (struct ppc_elf_params): Add vle_reloc_fixup field.
	* elf32-ppc.c: Include opcode/ppc.h.
	(ppc_elf_howto_raw): Correct dst_mask for R_PPC_VLE_LO16A,
	R_PPC_VLE_LO16D, R_PPC_VLE_HI16A, R_PPC_VLE_HI16D, R_PPC_VLE_HA16A,
	R_PPC_VLE_HA16D, R_PPC_VLE_SDAREL_LO16A, R_PPC_VLE_SDAREL_LO16D,
	R_PPC_VLE_SDAREL_HI16A, R_PPC_VLE_SDAREL_HI16D,
	R_PPC_VLE_SDAREL_HA16A, and R_PPC_VLE_SDAREL_HA16D relocs.
	(ppc_elf_link_hash_table_create): Update default_params init.
	(ppc_elf_vle_split16): Correct shift and mask.  Add params.
	Report or fix insn/reloc mismatches.
	(ppc_elf_relocate_section): Pass input_section, offset and fixup
	to ppc_elf_vle_split16.
binutils/
	* NEWS: Mention PowerPC VLE relocation error.
gas/
	* config/tc-ppc.c: Delete VLE insn defines.
	(md_assemble): Swap use_a_reloc and use_d_reloc.
	* testsuite/gas/ppc/vle-reloc.d: Update.
ld/
	* emultempl/ppc32elf.em (params): Update initializer.  Handle
	--vle-reloc-fixup command line arg.
2016-11-22 20:19:29 +10:30
Alan Modra
95f0d0d233 Use input_bfd in relocate_section
It makes just a little more sense to use input_bfd when retrieving
insns for relocation, since the relocations match the endianness of
the input bfd.

	* elf32-ppc.c (ppc64_elf_relocate_section): Calculate d_offset for
	input_bfd.  Replace occurrences of output_bfd as bfd_get_32 and
	bfd_put_32 param with input_bfd.
	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.  Also
	ppc_elf_vle_split16 param.
	(ppc_elf_vle_split16): Rename output_bfd param to input_bfd.
2016-11-22 20:19:29 +10:30
GDB Administrator
3063babf7c Automatic date update in version.in 2016-11-22 00:00:15 +00:00
Maciej W. Rozycki
b6ddcd85e3 BFD/DWARF2: Correct an `index' global shadowing error
Fix a commit 089e3718bd ("Greatly improve the speed if looking up
DWARF line number information.") build regression:

cc1: warnings being treated as errors
.../bfd/dwarf2.c: In function 'build_line_info_table':
.../bfd/dwarf2.c:1614: warning: declaration of 'index' shadows a global declaration
/usr/include/string.h:304: warning: shadowed declaration is here
.../bfd/dwarf2.c: In function 'build_lookup_funcinfo_table':
.../bfd/dwarf2.c:2262: warning: declaration of 'index' shadows a global declaration
/usr/include/string.h:304: warning: shadowed declaration is here
make[4]: *** [dwarf2.lo] Error 1

in a way following commit 91d6fa6a03 ("Add -Wshadow to the gcc command
line options used when compiling the binutils.").

	bfd/
	* dwarf2.c (build_line_info_table): Rename `index' local
	variable to `line_index'.
	(build_lookup_funcinfo_table): Rename `index' local variable to
	`func_index'.
2016-11-21 16:38:08 +00:00
GDB Administrator
081f6b931d Automatic date update in version.in 2016-11-21 00:00:33 +00:00
GDB Administrator
b5fbed8982 Automatic date update in version.in 2016-11-20 00:00:28 +00:00
Jose E. Marchesi
0fc9967d0b Revert "bfd: allow negative offsets to _GLOBAL_OFFSET_TABLE_ in elf64 SPARC"
This reverts commit b19753ce31.

As it turns out, GCC (and the assembler) needs additional work in
order to support negative GOT offsets in 64-bit sparc.  This is
breaking TLS Local Dynamic in position-independent code.
2016-11-19 04:39:09 -08:00
GDB Administrator
3d6d882e29 Automatic date update in version.in 2016-11-19 00:00:32 +00:00
James Clarke
cc133f9f11 bfd: fix negative GOT offsets for non-local references on sparc64
bfd/ChangeLog:

2016-11-18  James Clarke  <jrtc27@jrtc27.com>

	* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Don't convert
	R_SPARC_GOTDATA_OP_HIX22 and R_SPARC_GOTDATA_OP_LOX10 to
	R_SPARC_GOT* for non-local references. Instead, treat them like
	R_SPARC_GOTDATA_HIX22/R_SPARC_GOTDATA_LOX10 when filling in the
	immediate with the calculated relocation.
2016-11-18 12:51:40 +01:00
Nick Clifton
6ec49e7c0a Help diagnose problems with the metag target when mixing static and shared binaries.
PR ld/20675
	* elf32-metag.c (elf_metag_relocate_section): Replace abort with
	an informative error message.
2016-11-18 09:27:41 +00:00
GDB Administrator
cd42d70b4d Automatic date update in version.in 2016-11-18 00:00:20 +00:00
GDB Administrator
fa98319231 Automatic date update in version.in 2016-11-17 00:00:19 +00:00
Senthil Kumar Selvaraj
4cb771f214 Fix PR20789 - relaxation with negative valued diff relocs
Fix issues with diff relocs that have a negative value
i.e. sym2 - sym1 where sym2 is lesser than sym1.

The assembler generates a diff reloc with symbol as start of section
and addend as sym2 offset, and encodes assembly time difference at
the reloc offset.

The existing relaxation logic adjusts addends if the relaxed insn lies
between symbol and addend. That doesn't work for diff relocs where
sym2 is less than sym1 *and* the relaxed insn happens to be between
sym2 and sym1.

Fix the problems by

1. Using signed handling of the difference value (bfd_signed_vma instead
of bfd_vma, bfd_{get,set}_signed_xxx instead of bfd_{get,set}_xxx).

2. Not assuming sym2 is bigger than sym1. It instead computes the actual
addresses and sets the lower and higher addresses as start and end
addresses respectively and then sees if insn is between start and end.

3. Creating a new function elf32_avr_adjust_reloc_if_spans_insn to
centralize reloc adjustment, and ensuring diff relocs get adjusted
correctly even if their sym + addend doesn't overlap a relaxed insn.

It also removes a redundant variable did_pad. It is never set if
did_shrink is TRUE, and the code does a early return if did_shrink is
FALSE.

bfd/ChangeLog

2016-11-15  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

       PR ld/20789
       * bfd/elf32-avr.c (elf32_avr_adjust_diff_reloc_value): Do signed
       manipulation of diff value, and don't assume sym2 is less than sym1.
       (elf32_avr_adjust_reloc_if_spans_insn): New function.
       (elf32_avr_relax_delete_bytes): Use elf32_avr_adjust_diff_reloc_value,
       and remove redundant did_pad.

ld/ChangeLog

2016-11-15  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

       PR ld/20789
       * ld/testsuite/ld-avr/pr20789.d: New test.
       * ld/testsuite/ld-avr/pr20789.s: New test.
2016-11-16 16:11:46 +05:30
GDB Administrator
ff7ba33e8a Automatic date update in version.in 2016-11-16 00:00:20 +00:00
GDB Administrator
32ce946fd8 Automatic date update in version.in 2016-11-15 00:00:20 +00:00
H.J. Lu
9d734efa10 Also check GOT PLT for R_X86_64_PLTOFF64
Since "-z now" replaces PLT with GOT PLT, we should also check GOT PLT
for R_X86_64_PLTOFF64 relocation.

bfd/

	PR ld/20800
	* elf64-x86-64.c (elf_x86_64_relocate_section): Also check
	plt_got.offset for R_X86_64_PLTOFF64.

ld/

	PR ld/20800
	* testsuite/ld-x86-64/pr20800a.S: New file.
	* testsuite/ld-x86-64/pr20800b.S: Likewise.
	* testsuite/ld-x86-64/x86-64.exp: Run PR ld/20800 test.
2016-11-14 10:13:03 -08:00
Nick Clifton
63f2433dbc Fix typo "Faal through" should be "Fall through". 2016-11-14 08:44:17 +00:00
GDB Administrator
29df152013 Automatic date update in version.in 2016-11-14 00:00:19 +00:00
GDB Administrator
75d6c74e79 Automatic date update in version.in 2016-11-13 00:00:20 +00:00
GDB Administrator
8a19d84c2b Automatic date update in version.in 2016-11-12 00:00:19 +00:00
Luke Allardyce
7103ad7639 Accept hidden COFF symbols, but treat them as if they were debugging symbols.
PR ld/20722
	* coffcode.h (coff_slurp_symbol_table): Accept C_HIDDEN symbols,
	but treat them as debugging symbols.
2016-11-11 10:08:05 +00:00
GDB Administrator
a6bbedbad3 Automatic date update in version.in 2016-11-11 00:00:08 +00:00
Nick Clifton
a18590c386 Provide a more helpful error message when the BFD library is unable to load an extremely large section.
PR target/20737
	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Bind defined
	symbol locally in PIE.
2016-11-10 12:26:53 +00:00
Jiong Wang
ac33b731d2 [AArch64] Bind defined symbol locally in PIE
bfd/
	PR target/20737
	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Bind defined
	symbol locally in PIE.

ld/
	* testsuite/ld-aarch64/pie-bind-locally-a.s: New test source.
	* testsuite/ld-aarch64/pie-bind-locally-b.s: Likewise.
	* testsuite/ld-aarch64/pie-bind-locally.d: New testcase.
	* testsuite/ld-aarch64/aarch64-elf.exp: Run new testcase.
2016-11-10 09:25:17 +00:00
GDB Administrator
4e9d215322 Automatic date update in version.in 2016-11-10 00:00:17 +00:00
GDB Administrator
4c1d4908aa Automatic date update in version.in 2016-11-09 00:00:27 +00:00
Pedro Alves
3b0d929dd6 Fix bfd/dwarf2.c build breakage
Fix build breakage introduced by commit 089e3718bd ("Greatly improve
the speed if looking up DWARF line number information."):

 -  bfd_boolean is_linkage;
 -  const char *name;
 -  struct arange arange;
 +  int                  line;
 +  int                  tag;
 +  bfd                  boolean is_linkage;

bfd/ChangeLog:
2016-11-08  Pedro Alves  <palves@redhat.com>

	* dwarf2.c (struct funcinfo) <is_linkage>: Type is bfd_boolean,
	not "bfd boolean".
2016-11-08 12:32:05 +00:00
Igor Tsimbalist
089e3718bd Greatly improve the speed if looking up DWARF line number information.
* dwarf2.c (comp_unit): Add new fields 'lookup_funcinfo_table' and
	'number_of_functions' to keep lookup table and number of entries in
	the table.
	(line_sequence): Add new fields 'line_info_lookup' and 'num_lines'
	to keep lookup table and number of entries in the table.
	(lookup_funcinfo): New structure for lookup table for function
	references.
	(build_line_info_table): New function to create and build the lookup
	table for line information.
	(lookup_address_in_line_info_table): Use the lookup table instead of
	traverse a linked list.
	(compare_lookup_funcinfos): New compare fuction used in sorting of
	lookup table for function references.
	(build_lookup_funcinfo_table): New function to create, build and
	sort the lookup table for functions references.
	(lookup_address_in_function_table): Use the table instead of
	traverse a linked list.
	(_bfd_dwarf2_cleanup_debug_info): Free memory from function references
	lookup table.
2016-11-08 12:01:58 +00:00
GDB Administrator
ec7b600bf1 Automatic date update in version.in 2016-11-08 00:00:34 +00:00
GDB Administrator
b93bfa1980 Automatic date update in version.in 2016-11-07 00:00:23 +00:00
GDB Administrator
62e34765c9 Automatic date update in version.in 2016-11-06 00:00:24 +00:00
GDB Administrator
7989954c57 Automatic date update in version.in 2016-11-05 00:00:20 +00:00
Nick Clifton
1b7a12f2d6 Fix building binutils for all 32-bit targets by moving riscv32 target into 64-bit builds only.
* targets.c (bfd_target_vector): Only add riscv_elf32_vec target
	when supporting 64-bit BFD targets.
2016-11-04 13:50:01 +00:00
GDB Administrator
aed6eddb24 Automatic date update in version.in 2016-11-04 00:00:13 +00:00
Tristan Gingold
034b77cf78 Deprecate old platforms
bfd/
	* config.bfd: Deprecate many old triplets.
2016-11-03 17:05:58 +01:00
Nick Clifton
225b362d10 Updated Danish translation for the BFD library. 2016-11-03 11:31:53 +00:00
GDB Administrator
c8c064b0dc Automatic date update in version.in 2016-11-03 00:00:21 +00:00
GDB Administrator
95dc74aa02 Automatic date update in version.in 2016-11-02 00:00:20 +00:00
Maciej W. Rozycki
af955fe696 BFD: Fix double BFD_FAIL calls in `bfd_default_reloc_type_lookup'
Break out of the outer switch statement once the inner switch for the
BFD_RELOC_CTOR relocation has been processed, preventing double BFD_FAIL
calls from being made, once from the inner switch and then again from
the default case of the outer switch.

Noticed with a `-Wimplicit-fallthrough' build error reported by a recent
GCC version:

In file included from .../bfd/reloc.c:52:0:
.../bfd/reloc.c: In function 'bfd_default_reloc_type_lookup':
.../bfd/libbfd.h:779:8: error: this statement may fall through [-Werror=implicit-fallthrough=]
   do { bfd_assert(__FILE__,__LINE__); } while (0)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.../bfd/reloc.c:7780:4: note: in expansion of macro 'BFD_FAIL'
    BFD_FAIL ();
    ^~~~~~~~
.../bfd/reloc.c:7782:5: note: here
     default:
     ^~~~~~~
cc1: all warnings being treated as errors
make[4]: *** [reloc.lo] Error 1

	bfd/
	* reloc.c (bfd_default_reloc_type_lookup) <BFD_RELOC_CTOR>: Do
	not fall through to the default case.
2016-11-01 22:57:56 +00:00
Nick Clifton
e23eba971d Add support for RISC-V architecture.
bfd	* Makefile.am: Add entries for riscv32-elf and riscv64-elf.
	* config.bdf: Likewise.
	* configure.ac: Likewise.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* archures.c: Add bfd_riscv_arch.
	* reloc.c: Add riscv relocs.
	* targets.c: Add riscv_elf32_vec and riscv_elf64_vec.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
	* elf-bfd.h: Add RISCV_ELF_DATA to enum elf_target_id.
	* elfnn-riscv.c: New file.
	* elfxx-riscv.c: New file.
	* elfxx-riscv.h: New file.

binutils* readelf.c (guess_is_rela): Add EM_RISCV.
	(get_machine_name): Likewise.
	(dump_relocations): Add support for riscv relocations.
	(get_machine_flags): Add support for riscv flags.
	(is_32bit_abs_reloc): Add R_RISCV_32.
	(is_64bit_abs_reloc): Add R_RISCV_64.
	(is_none_reloc): Add R_RISCV_NONE.
	* testsuite/binutils-all/objdump.exp (cpus_expected): Add riscv.
	Expect the debug_ranges test to fail.

gas	* Makefile.am: Add riscv files.
	* Makefile.in: Regenerate.
	* NEWS: Mention the support for this architecture.
	* configure.in: Define a default architecture.
	* configure: Regenerate.
	* configure.tgt: Add entries for riscv.
	* doc/as.texinfo: Likewise.
	* testsuite/gas/all/gas.exp: Expect the redef tests to fail.
	* testsuite/gas/elf/elf.exp: Expect the groupauto tests to fail.
	* config/tc-riscv.c: New file.
	* config/tc-riscv.h: New file.
	* doc/c-riscv.texi: New file.
	* testsuite/gas/riscv: New directory.
	* testsuite/gas/riscv/riscv.exp: New file.
	* testsuite/gas/riscv/t_insns.d: New file.
	* testsuite/gas/riscv/t_insns.s: New file.

ld	* Makefile.am: Add riscv files.
	* Makefile.in: Regenerate.
	* NEWS: Mention the support for this target.
	* configure.tgt: Add riscv entries.
	* emulparams/elf32lriscv-defs.sh: New file.
	* emulparams/elf32lriscv.sh: New file.
	* emulparams/elf64lriscv-defs.sh: New file.
	* emulparams/elf64lriscv.sh: New file.
	* emultempl/riscvelf.em: New file.

opcodes	* configure.ac: Add entry for bfd_riscv_arch.
	* configure: Regenerate.
	* disassemble.c (disassembler): Add support for riscv.
	(disassembler_usage): Likewise.
	* riscv-dis.c: New file.
	* riscv-opc.c: New file.

include	* dis-asm.h: Add prototypes for print_insn_riscv and
	print_riscv_disassembler_options.
	* elf/riscv.h: New file.
	* opcode/riscv-opc.h: New file.
	* opcode/riscv.h: New file.
2016-11-01 16:45:57 +00:00
GDB Administrator
4e56efac8b Automatic date update in version.in 2016-11-01 00:00:19 +00:00
Alan Modra
c646b02fdc Revert part "Set dynamic tag VMA and size from dynamic section when possible"
PR 20748
	* elf32-microblaze.c (microblaze_elf_finish_dynamic_sections): Revert
	2016-05-13 change.
2016-10-31 12:49:14 +10:30
GDB Administrator
1964088538 Automatic date update in version.in 2016-10-31 00:00:22 +00:00
GDB Administrator
690035b147 Automatic date update in version.in 2016-10-30 00:00:23 +00:00
GDB Administrator
6bcbbf52b2 Automatic date update in version.in 2016-10-29 00:00:19 +00:00
GDB Administrator
2fc9bcf136 Automatic date update in version.in 2016-10-28 00:00:18 +00:00
Andrew Burgess
bb65a718b6 gas/arc: Don't rely on bfd list of cpu type for cpu selection
In the ARC assembler, when a cpu type is specified using the .cpu
directive, we rely on the bfd list of arc machine types in order to
validate the cpu name passed in.

This validation is only used in order to check that the cpu type passed
to the .cpu directive matches any machine type selected earlier on the
command line.  Once that initial check has passed a full check is
performed using the assemblers internal list of know cpu types.

The problem is that the assembler knows about more cpu types than bfd,
some cpu types known by the assembler are actually aliases for a base
cpu type plus a specific set of assembler extensions.  One such example
is NPS400, though more could be added later.

This commit removes the need for the assembler to use the bfd list of
machine types for validation.  Instead the error checking, to ensure
that any value passed to a '.cpu' directive matches any earlier command
line selection, is moved into the function arc_select_cpu.

I have taken the opportunity to bundle the 4 separate static globals
that describe the currently selected machine type into a single
structure (called selected_cpu).

gas/ChangeLog:

	* config/tc-arc.c (arc_target): Delete.
	(arc_target_name): Delete.
	(arc_features): Delete.
	(arc_mach_type): Delete.
	(mach_type_specified_p): Delete.
	(enum mach_selection_type): New enum.
	(mach_selection_mode): New static global.
	(selected_cpu): New static global.
	(arc_eflag): Rename to ...
	(arc_initial_eflag): ...this, and make const.
	(arc_select_cpu): Update comment, new parameter, check how
	previous machine type selection was made, and record this
	selection.  Use selected_cpu instead of old globals.
	(arc_option): Remove use of arc_get_mach, instead use
	arc_select_cpu to validate machine type selection.  Use
	selected_cpu over old globals.
	(allocate_tok): Use selected_cpu over old globals.
	(find_opcode_match): Likewise.
	(assemble_tokens): Likewise.
	(arc_cons_fix_new): Likewise.
	(arc_extinsn): Likewise.
	(arc_extcorereg): Likewise.
	(md_begin): Update default machine type selection, use
	selected_cpu over old globals.
	(md_parse_option): Update machine type selection option handling,
	use selected_cpu over old globals.
	* testsuite/gas/arc/nps400-0.s: Add .cpu directive.

bfd/ChangeLog:

	* cpu-arc.c (arc_get_mach): Delete.
2016-10-27 12:28:20 +01:00
GDB Administrator
2e492780e8 Automatic date update in version.in 2016-10-27 00:00:19 +00:00
GDB Administrator
21280c0ae3 Automatic date update in version.in 2016-10-26 00:00:19 +00:00
Maciej W. Rozycki
a18a2a347d elfxx-mips: Correct STUB_JALR's description
bfd/
	* elfxx-mips.c (STUB_JALR): Correct description.
2016-10-25 02:08:26 +01:00