Commit graph

11026 commits

Author SHA1 Message Date
Alan Modra
795bc6b3ea Enable ppc476 workaround for ld -r.
The Linux kernel builds modules using ld -r.  These might need the
ppc476 workaround, so enable it for ld -r if sections have sufficient
alignment to tell location within a page.

bfd/
	* elf32-ppc.c (ppc_elf_relax_section): Enable ppc476 workaround
	for ld -r, when code sections are sufficiently aligned.
	* elf32-ppc.h (struct ppc_elf_params): Delete pagesize.  Add
	pagesize_p2.
ld/
	* emultempl/ppc32elf.em (pagesize): New static var.
	(ppc_after_open_output): Set params.pagesize_p2 from pagesize.
	(PARSE_AND_LIST_ARGS_CASES): Adjust to use pagesize.
2014-02-12 22:10:09 +10:30
Alan Modra
b407645f7e PR15530, mark symbol in executables if it matches dynamic_list
For powerpc64 as HJ did earlier for other ELF targets, and a tidy.

	PR gold/15530
	* elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Support
	--export-dynamic and --dynamic-list marking of symbols.
	* elflink.c (bfd_elf_gc_mark_dynamic_ref_symbol): Reorder
	cheap tests first.
2014-02-12 22:10:09 +10:30
Alan Modra
abf8ab2a45 daily update 2014-02-12 09:30:55 +10:30
Alan Modra
8f3f987531 daily update 2014-02-11 09:31:14 +10:30
H.J. Lu
d6f6f45577 Mark symbol in executables if it matches dynamic_list
bfd/

	PR gold/16530
	* elflink.c (bfd_elf_gc_mark_dynamic_ref_symbol): Mark symbol in
	executables if it matches dynamic_list.

ld/testsuite/

	PR gold/16530
	* ld-elf/dynamic-1.c: New file.
	* ld-elf/dynamic-1.rd: Likewise.
	* ld-elf/dynamic-1.syms: Likewise.

	* ld-elf/shared.exp (build_tests): Add dynamic-1.
2014-02-10 08:05:54 -08:00
Rainer Orth
8577303939 Add PR reference. 2014-02-10 16:32:18 +01:00
Alan Modra
c1c69e839e binutils potfiles regen
Adds nds32 files to POTFILES.in
2014-02-10 09:59:35 +10:30
Alan Modra
7f361d9dee daily update 2014-02-10 09:30:37 +10:30
Alan Modra
53291d1f16 powerpc relax_section and section contents cache
This patch provides a means for backend relax_section support to
increase the size of a section without needing to reallocate
section contents.  This helps reduce memory usage when the added space
does not need to be written in relax_section, as is the case for
powerpc.  Writing the stubs later means a few tweaks are needed in the
powerpc relocate_section function, but also removes some code
duplication since the extra ld -r relocs can be written there too.

	* elf-bfd.h (struct elf_backend_data): Add caches_rawsize.
	* elfxx-target.h (elf_backend_caches_rawsize): Define.
	(elfNN_bed): Init new field.
	* elflink.c (elf_link_input_bfd): Handle caches_rawsize.
	* elf32-ppc.c (shared_stub_entry): Zero addi offset.
	(ppc_elf_relax_section): Don't reallocate section here, write
	stubs, or write out relocs for ld -r here..
	(ppc_elf_relocate_section): ..instead write stubs here, and use
	existing code to write out relocs for ld -r.  Fix offset
	adjustment on reloc for little-endian.
	(elf_backend_caches_rawsize): Define.
2014-02-09 23:25:14 +10:30
Alan Modra
f9e7e5d3e6 daily update 2014-02-09 09:31:14 +10:30
Alan Modra
1a84070136 daily update 2014-02-08 09:30:39 +10:30
Rainer Orth
d1eb56967f * cache.c (bfd_cache_max_open): Cast RLIM_INFINITY to rlim_t. 2014-02-07 15:44:58 +01:00
Alan Modra
699e9b8780 daily update 2014-02-07 09:30:40 +10:30
Alan Modra
2e200ee302 daily update 2014-02-06 09:31:11 +10:30
Alan Modra
ba74cf67e6 daily update 2014-02-05 09:30:41 +10:30
Jan Kratochvil
2915c55b41 Fix PowerPC targets minor memory leaks found by Coverity
bfd/
2014-02-04  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* coff-rs6000.c (xcoff_write_archive_contents_big): Free OFFSETS in
	return paths.  Three times.
	* elf64-ppc.c (ppc64_elf_link_hash_table_create): Free HTAB in all
	return paths.
	(ppc64_elf_tls_optimize): Free TOC_REF in return path.
	(ppc64_elf_edit_toc): Free USED in return path.
2014-02-04 20:17:16 +01:00
Alan Modra
f3657eed66 daily update 2014-02-04 09:30:46 +10:30
Sandra Loosemore
1c2de46353 Nios II large-GOT relocations
2014-02-03  Sandra Loosemore  <sandra@codesourcery.com>

	include/elf/
	* nios2.h (R_NIOS2_GOT_LO, R_NIOS2_GOT_HA): New.
	(R_NIOS2_CALL_LO, R_NIOS2_CALL_HA): New.
	(R_NIOS2_ILLEGAL): Adjust.

	gas/
	* config/tc-nios2.c (md_apply_fix): Test for new relocs.
	(nios2_special_reloc): Add %call_lo, %call_hiadj, %got_lo,
	%got_hiadj relocation operators.  Sort table and add comment
	to explain ordering.
	(nios2_fix_adjustable): Test for new relocs.
	* doc/c-nios2.texi (Nios II Relocations): Document new relocation
	operators.

	bfd/
	* reloc.c (BFD_RELOC_NIOS2_GOT_LO, BFD_RELOC_NIOS2_GOT_HA): New.
	(BFD_RELOC_NIOS2_CALL_LO, BFD_RELOC_NIOS2_CALL_HA): New.
	* libbfd.h: Regenerated.
	* bfd-in2.h: Regenerated.
	* elf32-nios2.c (elf_nios2_howto_table_rel): Add new relocations.
	(nios2_reloc_map): Likewise.
	(GOT_USED, CALL_USED): Renamed from GOT16_USED and CALL16_USED.
	Fixed all references.
	(nios2_elf32_relocate_section): Add new relocations.
	(nios2_elf32_check_relocs): Likewise.
	(nios2_elf32_gc_sweep_hook): Likewise.
2014-02-03 08:42:42 -08:00
Alan Modra
5446cbdf82 ppc476 icache bug workaround
This implements a work-around for an icache bug on 476 that can cause
execution of stale instructions when control falls through from one
page to the next.  The idea is to prevent such fall-through by
replacing the last instruction on a page with a branch to a patch
area containing the instruction, then branch to the next page.

The patch also fixes a number of bugs in the existing support for long
branch trampolines.

bfd/
	* elf32-ppc.c (struct ppc_elf_link_hash_table): Add params.
	Delete emit_stub_syms, no_tls_get_addr_opt.  Update all uses.
	(ppc_elf_link_params): New function.
	(ppc_elf_create_glink): Align .glink to 64 bytes for ppc476
	workaround.
	(ppc_elf_select_plt_layout): Remove plt_style and emit_stub_syms
	parameters.  Use htab->params instead.
	(ppc_elf_tls_setup): Remove no_tls_get_addr_opt parameter.
	(ppc_elf_size_dynamic_sections): Align __glink_PLTresolve to
	64 bytes for ppc476 workaround.
	(struct ppc_elf_relax_info): New.
	(ppc_elf_relax_section): Exclude linker created sections and
	those too small to hold one instruction.  Don't add another
	branch 	around trampolines on later relax passes.  Don't
	generate trampolines for undefined symbols when !relocatable,
	nor for plugin symbols.  Allocate space for ppc476 workaround
	patch area.  Free fixups on error return path.
	(ppc_elf_relocate_section): Handle ppc476 workaround patching.
	* elf32-ppc.h (struct ppc_elf_params): New.
	(ppc_elf_select_plt_layout, ppc_elf_tls_setup): Update prototype.
	(ppc_elf_link_params): Declare.
	* section.c (SEC_INFO_TYPE_TARGET): Define.
	* bfd-in2.h: Regenerate.
ld/
	* emultempl/ppc32elf.em (no_tls_get_addr_opt, emit_stub_syms)
	plt_style): Delete.  Adjust all refs to instead use..
	(params): ..this.  New variable.
	(ppc_after_open_output): New function.  Tweak params and pass to
	ppc_elf_link_params.
	(ppc_after_open): Adjust ppc_elf_select_plt_layout call.
	(ppc_before_allocation): Adjust ppc_elf_tls_setup call.  Enable
	relaxation for ppc476 workaround.
	(PARSE_AND_LIST_*): Add --{no-,}ppc476-workaround support.
	(LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Define.
2014-02-03 20:24:20 +10:30
Alan Modra
8effdc96dc daily update 2014-02-03 09:30:43 +10:30
Sandra Loosemore
82e9153868 Correct Nios II GOT pointer initialization.
2014-02-02  Sandra Loosemore  <sandra@codesourcery.com>

	bfd/
	* elf32-nios2.c (struct elf32_nios2_link_hash_table): Add
	h_gp_got field.
	(nios2_elf32_relocate_section): Use got_base to adjust
	GOT-pointer-relative relocations relative to _gp_got.
	(create_got_section): Create _gp_got symbol.
	(nios2_elf32_finish_dynamic_symbol): Make _gp_got absolute.
	(nios2_elf32_size_dynamic_sections): Set _gp_got offset.
2014-02-02 10:57:52 -08:00
Alan Modra
665febb3c8 daily update 2014-02-02 09:30:42 +10:30
Alan Modra
00eea2b9e0 daily update 2014-02-01 09:30:51 +10:30
Sandra Loosemore
78058a5e4f Nios II CALL26 linker relaxation
2014-01-30  Sandra Loosemore  <sandra@codesourcery.com>

	bfd/
	* bfd-in2.h: Update from reloc.c.
	* elf32-nios2.c: Include elf32-nios2.h.
	(elf_nios2_howto_table_rel): Add entry for R_NIOS2_CALL26_NOAT.
	(nios2_reloc_map): Likewise.
	(enum elf32_nios2_stub_type): Declare.
	(struct elf32_nios2_stub_hash_entry): Declare.
	(nios2_stub_hash_entry, nios2_stub_hash_lookup): New macros.
	(struct elf32_nios2_link_hash_entry): Add hsh_cache field.
	(struct elf32_nios2_link_hash_table): Add new fields bstab,
	stub_bfd, add_stub_section, layout_sections_again, stub_group,
	bfd_count, top_index, input_list, all_local_syms.
	(nios2_call26_stub_entry): New.
	(nios2_elf32_install_imm16): Move up in file.
	(nios2_elf32_install_data): Move up in file.
	(hiadj): Move up in file.
	(stub_hash_newfunc): New.
	(link_hash_newfunc): Initialize hsh_cache field.
	(STUB_SUFFIX): New.
	(nios2_stub_name): New.
	(nios2_get_stub_entry): New.
	(nios2_add_stub): New.
	(nios2_elf32_setup_section_lists): New.
	(nios2_elf32_next_input_section): New.
	(CALL26_SEGMENT): New.
	(MAX_STUB_SECTION_SIZE): New.
	(group_sections): New.
	(nios2_type_of_stub): New.
	(nios2_build_one_stub): New.
	(nios2_size_one_stub): New.
	(get_local_syms): New.
	(nios2_elf32_size_stubs): New.
	(nios2_elf32_build_stubs): New.
	(nios2_elf32_do_call26_relocate): Correct CALL26 overflow test.
	(nios2_elf32_relocate_section): Handle R_NIOS2_CALL26_NOAT.  Add
	trampolines for R_NIOS2_CALL26 stubs.
	(nios2_elf32_check_relocs): Handle R_NIOS2_CALL26_NOAT.
	(nios2_elf32_gc_sweep_hook): Likewise.
	(nios2_elf32_link_hash_table_create): Initialize the stub hash table.
	(nios2_elf32_link_hash_table_free): New.
	(bfd_elf32_bfd_link_hash_table_free): Define.
	* elf32-nios2.h: New file.
	* libbfd.h: Update from reloc.c.
	* reloc.c (BFD_RELOC_NIOS2_CALL26_NOAT): New.

	gas/
	* config/tc-nios2.c (md_apply_fix): Handle BFD_RELOC_NIOS2_CALL26_NOAT.
	(nios2_assemble_args_m): Likewise.
	(md_assemble): Likewise.

	gas/testsuite/
	* gas/nios2/call26_noat.d: New.
	* gas/nios2/call26_noat.s: New.
	* gas/nios2/call_noat.d: New.
	* gas/nios2/call_noat.s: New.

	include/elf/
	* nios2.h (elf_nios2_reloc_type): Add R_NIOS2_CALL26_NOAT.

	ld/
	* Makefile.am (enios2elf.c, enios2linux.c): Update dependencies.
	* Makefile.in: Regenerated.
	* emulparams/nios2elf.sh (EXTRA_EM_FILE): Set.
	* emulparams/nios2linux.sh (EXTRA_EM_FILE): Set.
	* emultempl/nios2elf.em: New file.
	* gen-doc.texi (NIOSII): Set.
	* ld.texinfo (NIOSII): Set.

	ld/testsuite/
	* ld-nios2/relax_call26.s: New.
	* ld-nios2/relax_call26_boundary.ld: New.
	* ld-nios2/relax_call26_boundary.s: New.
	* ld-nios2/relax_call26_boundary_c8.d: New.
	* ld-nios2/relax_call26_boundary_cc.d: New.
	* ld-nios2/relax_call26_boundary_d0.d: New.
	* ld-nios2/relax_call26_boundary_d4.d: New.
	* ld-nios2/relax_call26_boundary_d8.d: New.
	* ld-nios2/relax_call26_boundary_dc.d: New.
	* ld-nios2/relax_call26_boundary_f0.d: New.
	* ld-nios2/relax_call26_boundary_f4.d: New.
	* ld-nios2/relax_call26_boundary_f8.d: New.
	* ld-nios2/relax_call26_boundary_fc.d: New.
	* ld-nios2/relax_call26_cache.d: New.
	* ld-nios2/relax_call26_cache.ld: New.
	* ld-nios2/relax_call26_cache.s: New.
	* ld-nios2/relax_call26_multi.d: New.
	* ld-nios2/relax_call26_multi.ld: New.
	* ld-nios2/relax_call26_norelax.d: New.
	* ld-nios2/relax_call26_shared.d: New.
	* ld-nios2/relax_call26_shared.ld: New.
2014-01-30 17:47:07 -08:00
Alan Modra
1b4f7b4d1e daily update 2014-01-31 09:30:43 +10:30
Alan Modra
2c39fc0d9c daily update 2014-01-30 09:30:42 +10:30
Nick Clifton
df3ce959f4 My patch to the binutils strip-10.d test was wrong. The osabi field should always be set to
ELFOSABI_GNU for binaries containing unique symbols.  So I am reverting that patch and
instead applying the patch below to fix up the targets that were triggering the test failure.

bfd/ChangeLog
2014-01-29  Nick Clifton  <nickc@redhat.com>

	* elf32-metag.c (elf_metag_post_process_headers): Call
	_bfd_elf_post_process_headers.
	* elf32-sh64.c (sh64_elf_copy_private_data): Call
	_bfd_elf_copy_private_data.
	* elf64-sh64.c (sh_elf64_copy_private_data_internal): Likewise.

binutils/testsuite/ChangeLog
2014-01-29  Nick Clifton  <nickc@redhat.com>

	* binutils-all/strip-10.d: Revert previous delta.
2014-01-29 14:01:54 +00:00
Nick Clifton
27b829ee70 Following up on Tom's suggestion I am checking in a patch to replace the various
bfd_xxx_set macros with static inline functions, so that we can avoid compile time
warnings about comma expressions with unused values.

	* bfd-in.h (bfd_set_section_vma): Delete.
	(bfd_set_section_alignment): Delete.
	(bfd_set_section_userdata): Delete.
	(bfd_set_cacheable): Delete.
	* bfd.c (bfd_set_cacheable): New static inline function.
	* section.c (bfd_set_section_userdata): Likewise.
	(bfd_set_section_vma): Likewise.
	(bfd_set_section_alignment): Likewise.
	* bfd-in2.h: Regenerate.
2014-01-29 13:46:39 +00:00
Nick Clifton
0a9c7b2bf1 When parsing a DW_FORM_ref_addr attribute the CU containing the
abbreviation may not be the current CU.  Thus we need to make sure
that when we read the abbreviation we use the correct CU.

	* dwarf2.c (find_abstract_instance_name): For DW_FORM_ref_addr
	attributes select the CU containing the abbreviation, which may not
	be the current CU.
2014-01-28 13:43:35 +00:00
Alan Modra
a83c8245aa daily update 2014-01-28 09:30:42 +10:30
Alan Modra
cc64f6178e daily update 2014-01-27 09:30:42 +10:30
Alan Modra
d3c3a74638 daily update 2014-01-26 09:31:04 +10:30
Alan Modra
49a8347dbf daily update 2014-01-25 09:31:10 +10:30
Alan Modra
3ba720c788 Fixes powerpc64le ld segfaults when --emit-relocs is used.
ELFv2 needs fewer relocs to annotate plt call stubs.  I correctly
allocated a smaller buffer and wrote the proper relocs, but stupidly
bumped the reloc count as for ELFv1.

	* elf64-ppc.c (ppc_build_one_stub): Correct reloc count passed
	to get_relocs for ELFv2.
2014-01-24 14:26:39 +10:30
Alan Modra
598beeff91 daily update 2014-01-24 09:30:59 +10:30
H.J. Lu
d923cae027 Issue a linker error if TLS sections are not adjacent
Bad linker script may lead to TLS sections separated by non-TLS sections
in output.  This patch changes linker assert to a linker error to
provide better linker diagnosis.

	PR ld/16498
	* elf.c (_bfd_elf_map_sections_to_segments): Issue a linker error
	if TLS sections are not adjacent.
2014-01-23 08:15:17 -08:00
Alan Modra
3d426a9e38 daily update 2014-01-23 09:31:08 +10:30
Alan Modra
16e4ecc0db Display the reference causing a shared library to be needed
Adds a section for --as-needed libraries to a linker map file, similar
to what we do for archive libraries.

bfd/
	* elflink.c (elf_link_add_object_symbols): Call minfo for --as-needed.
ld/
	* ldlang.c (asneeded_list_head, asneeded_list_tail): New vars.
	(lang_init): Initialise them.
	(lang_print_asneeded): New function.
	(lang_process): Call lang_print_asneeded.
	* ldlang.h (struct asneeded_minfo): New.
	(asneeded_list_tail): Declare.
	* ldmain.c (add_archive_element): Improve archive map heading.
	* ldmisc.c (minfo): Stash --as-needed info.
2014-01-22 16:21:34 +10:30
Alan Modra
eb8d7fda36 Comment typo
* elf64-ppc.c (STK_LINKER): Comment typo fix.
2014-01-22 16:21:33 +10:30
H.J. Lu
4584ec1207 Check incompatible existing default symbol definition
After resolving a versioned reference, foo@VER1, to a default versioned
definition, foo@@VER1, from a shared object, we also merge it with
the existing regular default symbol definition, foo.  When foo is IFUNC
and foo@@VER1 aren't, we will merge 2 incompatible definitions.  This
patch avoids merging foo@@VER1 definition with foo definition if
one is IFUNC and the other isn't.
2014-01-21 15:42:51 -08:00
Alan Modra
efec457298 daily update 2014-01-22 09:31:03 +10:30
H.J. Lu
40101021d4 Update comments for the last commit 2014-01-21 05:37:45 -08:00
H.J. Lu
22ef172a21 Don't check shared/export_dynamic/ref_dynamic for type mismatch
There is nothing linker can do when a type mismatched default definition
are made dynamic by info->shared, info->export_dynamic or h->ref_dynamic.
But we do want to avoid exporting it when building PIE.  Let's remove
those checks.

bfd/

	PR ld/2404
	* elflink.c (_bfd_elf_merge_symbol): Don't check info->shared,
	info->export_dynamic, nor !h->ref_dynamic for type mismatch when
	adding the default version.

ld/testsuite/

	PR ld/2404
	* ld-elf/shared.exp: Add a PIE test for PR ld/2404.
2014-01-21 05:33:48 -08:00
Alan Modra
48ded086b6 daily update 2014-01-21 09:31:08 +10:30
Alan Modra
d7c85de1c3 daily update 2014-01-20 09:31:05 +10:30
Alan Modra
6e245eba97 daily update 2014-01-18 09:31:09 +10:30
Alan Modra
e07e2682b4 daily update 2014-01-17 09:31:01 +10:30
Alan Modra
b75d42bce5 Fix mips segfault on GOT access of absolute symbol
When a symbol is absolute, this code in mips_elf_record_got_page_entry
      entry = bfd_zalloc (sec->owner, sizeof (*entry));
segfaults.  sec == bfd_abs_section_ptr and sec->owner == NULL.

	* elfxx-mips.c (mips_elf_record_got_page_entry): Pass in a
	mips_elf_traverse_got_arg* rather than mips_got_info*.
	Adjust caller.  Alloc on output_bfd rather than symbol section
	owner.
2014-01-16 11:56:50 +10:30
Alan Modra
5ae8deca2a daily update 2014-01-16 09:31:07 +10:30
H.J. Lu
c353e543fe Revert the last change
It has been fixed by

commit 4199e3b866
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Jan 15 21:50:55 2014 +1030

    non-PIC references to __ehdr_start in pie and shared

    Rather than hacking every backend to not discard dynamic relocations
    against an undefined hidden __ehdr_start, make it appear to be defined
    early.  We want __ehdr_start hidden before size_dynamic_sections so
    that it isn't put in .dynsym, but we do need the dynamic relocations
    for a PIE or shared library with a non-PIC reference.  Defining it
    early is wrong if we don't actually define the symbol later to its
    proper value.  (In some cases we want to leave the symbol undefined,
    for example, when the ELF header isn't loaded, and we don't have this
    infomation available in before_allocation.)

	* elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last
	change.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-15 03:59:42 -08:00
H.J. Lu
818d220a6f Don't discard relocs against __ehdr_start
__ehdr_start will be defined by assign_file_positions_for_non_load_sections
later.

	PR ld/16428
	* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't discard relocs
	against __ehdr_start.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 16:42:35 -08:00
H.J. Lu
c3ce498cbd Revert the last change
* elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last
	change.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 16:40:51 -08:00
Alan Modra
499de2f6ba daily update 2014-01-15 09:30:50 +10:30
H.J. Lu
d1ec1e40b5 Don't update reloc count if there are any non pc-relative relocs
PR ld/16428
	* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't update reloc
	count if there are any non pc-relative relocs.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 10:48:39 -08:00
Christophe Lyon
f44a1f8e51 2014-01-14 Michael Hudson-Doyle <michael.hudson@linaro.org>
Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

	bfd/
	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use correct
	offset while calculating relocation address.
	(elfNN_aarch64_create_small_pltn_entry): Likewise.
	(elfNN_aarch64_init_small_plt0_entry): Likewise.
2014-01-14 15:53:50 +01:00
Alan Modra
067c5c1de2 daily update 2014-01-14 09:30:39 +10:30
Ma Jiang
fd0fd00cde 2014-01-13 Ma Jiang <ma.jiang@zte.com.cn>
PR ld/16202
	* elf32-arm.c (elf32_arm_final_link_relocate): Refetch addends for
	R_ARM_ABS8 and R_ARM_ABS16.
2014-01-13 16:06:28 +00:00
Alan Modra
aa726b9e09 missing changelog for last patch 2014-01-13 15:48:24 +10:30
Alan Modra
c7e17e05b6 Error on shared lib call to @local ifunc
On powerpc32, making ifuncs have non-default visibility in shared
libraries or pies can result in runtime failures.  The problem is that
if gcc is told that a given function has non-default visibility, then
calls to that function are assumed to be local (which is true) and
thus need not go via a plt call stub (which is false for ifunc).  If
the caller has no other reason to set up the got pointer (r30), code
won't be emitted to do so.  However, a pic plt call stub makes use of
r30 to load the plt entry.  So a call to an ifunc, which always needs
a plt entry, will fail.

This patch makes ld emit an error for the problem case, and allows
calls to non-default visibility ifuncs to work in normal executables.
I also fix some cases where ifuncs fail when using the old bss-plt.

	* elf32-ppc.c (ppc_elf_check_relocs): For @local call to ifunc,
	error when shared and force a plt call otherwise.
	(ppc_elf_size_dynamic_sections): Don't emit DT_PPC_GOT unless
	plt_type == PLT_NEW.
	(ppc_elf_relocate_section): Add missing test to resolve ifuncs to
	the appropriate call stub.
2014-01-13 15:04:15 +10:30
Alan Modra
1a4416c4c7 daily update 2014-01-13 09:30:37 +10:30
Alan Modra
024f468406 daily update 2014-01-12 09:30:39 +10:30
Alan Modra
b9d056dc85 daily update 2014-01-11 09:30:57 +10:30
Alan Modra
eec2f3ed9f Don't adjust LOAD segment to match GNU_RELRO segment
Instead, fix Jakub's original code setting up the PR_GNU_RELRO header
from the PT_LOAD header.

	PR ld/14207
	PR ld/16322
	PR binutils/16323
bfd/
	* elf.c (assign_file_positions_for_load_sections): Revert last change.
	(assign_file_positions_for_non_load_sections): When setting up
	PT_GNU_RELRO header, don't require a corresponding PT_LOAD
	header that completely covers the relro region.
ld/
	* ldlang.c (lang_size_sections): Remove unneeded RELRO base
	adjust.  Tidy comments.
	* ld.texinfo (DATA_SEGMENT_RELRO_END): Correct description.
ld/testsuite/
	* ld-x86-64/pr14207.d: Adjust
2014-01-10 21:49:56 +10:30
Alan Modra
3855dad799 daily update 2014-01-10 09:30:39 +10:30
Tristan Gingold
09bf66a8e8 Use table jump macros in coff-rs6000 targets.
bfd/
2014-01-09  Tristan Gingold  <gingold@adacore.com>

	* coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): use jump
	table macros and add macros to initializa the structure.
2014-01-09 15:23:36 +01:00
Alan Modra
1d20f082f2 daily update 2014-01-09 09:30:37 +10:30
H.J. Lu
43a8475ca0 Adjust LOAD segment to generate GNU_RELRO segment
This patch fixes 2 GNU_RELRO segment bugs:

1. lang_size_sections didn't properly align base to the maximum
alignment power of sections between DATA_SEGMENT_ALIGN and
DATA_SEGMENT_RELRO_END.
2. ld failed to adjust LOAD segment to generate GNU_RELRO segment
when LOAD segment doesn't fit GNU_RELRO segment.  This is

https://sourceware.org/bugzilla/show_bug.cgi?id=14207

We "fixed" ld by not generating GNU_RELRO segment.  This patch
adjusts LOAD segment to generate GNU_RELRO segment.  It fixes
PR ld/16322 and at the same time it also fixes PR binutils/16323
since now we can adjust LOAD segment if it is too small.

bfd/

	PR ld/14207
	PR ld/16322
	PR binutils/16323
	* elf.c (_bfd_elf_map_sections_to_segments): Don't check section
	size for PT_GNU_RELRO segment.
	(assign_file_positions_for_load_sections): If PT_LOAD segment
	doesn't fit PT_GNU_RELRO segment, adjust its p_filesz and p_memsz.

ld/

	PR ld/14207
	PR ld/16322
	PR binutils/16323
	* ldlang.c (lang_size_sections): Properly align RELRO base.

ld/testsuite/

	PR ld/14207
	PR ld/16322
	PR binutils/16323
	* ld-elf/pr16322.d: New file.
	* ld-elf/pr16322.s: Likewise.

	* ld-x86-64/pr14207.d: Expect PT_GNU_RELRO segment.
2014-01-08 05:57:21 -08:00
H.J. Lu
5fb776a637 New Year - binutils ChangeLog rotation 2014-01-08 05:32:12 -08:00
Alan Modra
4cfc109c65 daily update 2014-01-08 09:30:55 +10:30
Tom Tromey
1651e569b4 remove VA_* from binutils
This removes the last uses of the obsolete VA_* macros from binutils.

All the binutils and bfd changes were tested by rebuilding.
I didn't rebuild the gas change but I think it is obviously correct.

2014-01-07  Tom Tromey  <tromey@redhat.com>

	* elf32-xtensa.c (vsprint_msg): Don't use old VA_* compatibility
	wrappers.

2014-01-07  Tom Tromey  <tromey@redhat.com>

	* bucomm.c (fatal, non_fatal): Replace obsolete VA_* macros with
	stdarg macros.
	* dlltool.c (inform): Replace obsolete VA_* macros with stdarg
	macros.
	* dllwrap.c (inform, warn): Replace obsolete VA_* macros with
	stdarg macros.

2014-01-07  Tom Tromey  <tromey@redhat.com>

	* config/tc-tic30.c (debug): Avoid old VA_* compatibility
	wrappers.
2014-01-07 09:17:05 -07:00
Alan Modra
8318830739 daily update 2014-01-07 09:30:48 +10:30
Alan Modra
31e44d0a8b daily update 2014-01-06 09:30:37 +10:30
Alan Modra
e4200acceb daily update 2014-01-05 09:30:39 +10:30
Alan Modra
c33b7c1e2e daily update 2014-01-04 09:30:51 +10:30
Nick Clifton
dc9155b24f PR binutils/16199
* elf.c (vma_page_aligned_bias): Handle a maxpagesize value of
	zero.
2014-01-03 14:16:17 +00:00
Alan Modra
8cc4c22675 daily update 2014-01-03 09:30:40 +10:30
Nick Clifton
dd8dfa392b Update name in changelog entry. 2014-01-02 14:55:02 +00:00
Asmwarrior
044387affb PR binutils/14289
* pef.c (bfd_pef_xlib_read_header): Increase buffer size to 80.
2014-01-02 14:30:18 +00:00
Nick Clifton
1be5090bca PR binutils/11983
* archive.c (_bfd_get_elt_at_filepos): Store a copy of the
	filename in the bfd's filename field.
	* elfcode.h (bfd_from_remote_memory): Likewise.
	* ieee.c (ieee_object_p): Likewise.
	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.
	* oasys.c (oasys_openr_next_archived_file): Likewise.
	* vms-lib.c (_bfd_vms_lib_get_module): Likewise.
	* opncls.c (bfd_fopen): Likewise.
	(bfd_openstreamr): Likewise.
	(bfd_openr_iovec): Likewise.
	(bfd_openw): Likewise.
	(bfd_create): Likewise.
	(_bfd_delete_bfd): Free filename.
2014-01-02 12:14:37 +00:00
Alan Modra
e2359dfd4d daily update 2014-01-02 09:30:37 +10:30
Alan Modra
1cff1293e6 daily update 2014-01-01 09:30:40 +10:30
Alan Modra
4023334654 daily update 2013-12-31 09:30:37 +10:30
Ilya Tocar
1f93a6d6f3 * peXXigen.c (rsrc_process_section): Use ptrdiff_t as the type for
pointer arithmetic.
2013-12-30 15:28:41 +00:00
Alan Modra
46f2883cdf daily update 2013-12-29 09:30:39 +10:30
Alan Modra
3f983adec9 daily update 2013-12-28 09:30:46 +10:30
Alan Modra
6994b6125f daily update 2013-12-27 09:30:38 +10:30
Alan Modra
9c9c3ba707 daily update 2013-12-26 09:30:38 +10:30
Alan Modra
b36c3d77cb daily update 2013-12-25 09:30:38 +10:30
Alan Modra
4415de747e daily update 2013-12-24 09:30:59 +10:30
Alan Modra
8c707abce7 daily update 2013-12-23 09:30:47 +10:30
Alan Modra
0c821121de daily update 2013-12-22 09:30:44 +10:30
Alan Modra
ee792a4eca daily update 2013-12-21 09:31:03 +10:30
Alan Modra
99d190fac4 Don't segv on cie.initial_instructions[] overflow.
Don't attempt to merge CIEs with a larger number of insns than will
fit in the buffer.

	* elf-eh-frame.c (cie_eq): Return false when initial_insn_length
	is too large.
	(cie_compute_hash): Don't exceed bounds of initial_instructions.
	(_bfd_elf_parse_eh_frame): Always set initial_insn_length, and
	save as much of insns to initial_instructions[] as will fit.
2013-12-21 00:08:34 +10:30
Alan Modra
7331bf4ec9 daily update 2013-12-20 09:30:40 +10:30
H.J. Lu
9ef5d93881 Set SHF_INFO_LINK bit for SHT_REL/SHT_RELA sections
It is a good pratice to set the SHF_INFO_LINK bit when the sh_info field
represents a section header index.

bfd/

	PR binutils/16317
	* elf.c (assign_section_numbers): Set the SHF_INFO_LINK bit for
	SHT_REL/SHT_RELA sections when setting the sh_info field.

binutils/testsuite/

	PR binutils/16317
	* binutils-all/readelf.s: Updated.
	* binutils-all/readelf.s-64: Likewise.

ld/testsuite/

	PR binutils/16317
	* ld-elf/linkinfo1.s: New file.
	* ld-elf/linkinfo1a.d: Likewise.
	* ld-elf/linkinfo1b.d: Likewise.
2013-12-19 11:34:47 -08:00
Pierre Muller
3f10b67a59 * Fix indentation issue and reorganize last commit entry
so that it is shorter than 80.
  peXXigen.c (rsrc_cmp): Fix unused variable warning.
2013-12-19 18:26:19 +01:00
Pierre Muller
9373215cff * peXXigen.c (u16_mbtouc): Avoid unused function warning by excluding if
__CYGWIN__ or __MINGW32__ macro is defined.
	(rsrc_cmp): Fix Windows host version and version without wchar header.
	[__CYGWIN__, __MINGW32__]: Introduce rsrccmp macro.
	Fix coding standard issues.
2013-12-19 12:37:30 +00:00
Andreas Schwab
f6ec89e7bc Set proper OS ABI magic for ELF/m68k
* elf32-m68k.c (elf_m68k_add_symbol_hook): New function.
	(elf_backend_add_symbol_hook): Define.
2013-12-19 12:27:19 +01:00
Alan Modra
a6d17b0194 daily update 2013-12-19 09:30:57 +10:30
Nick Clifton
b9e95fa2d1 * peXXigen.c (rsrc_print_section): Use ptrdiff_t as the type for
pointer arithmetic.
2013-12-18 10:30:25 +00:00
Alan Modra
20ecd7ef4f daily update 2013-12-18 09:30:45 +10:30
H.J. Lu
7394f108c2 Call _bfd_elf_post_process_headers
* elf32-arm.c (elf32_arm_post_process_headers): Call
	_bfd_elf_post_process_headers.
2013-12-17 14:36:45 -08:00
H.J. Lu
0af031261f Call _bfd_elf_post_process_headers
* elf32-spu.c (spu_elf_post_process_headers): Call
	_bfd_elf_post_process_headers.
	* elfxx-mips.c (_bfd_mips_post_process_headers): Likewise.
2013-12-17 14:10:03 -08:00
H.J. Lu
782450358d Default elf_backend_post_process_headers to set OSABI
* elf-bfd.h (_bfd_elf_set_osabi): Renamed to ...
	(_bfd_elf_post_process_headers): This.
	* elf.c (_bfd_elf_compute_section_file_positions): Always
	call elf_backend_post_process_headers.
	(_bfd_elf_set_osabi): Renamed to ...
	(_bfd_elf_post_process_headers): This.
	* elf32-hppa.c (elf_backend_post_process_headers): Removed.
	* elf32-i370.c (elf_backend_post_process_headers): Likewise.
	* elf32-msp430.c (elf_backend_post_process_headers): Likewise.
	* elf32-ppc.c (elf_backend_post_process_headers): Likewise.
	* elf32-sparc.c (elf_backend_post_process_headers): Likewise.
	* elf64-hppa.c (elf_backend_post_process_headers): Likewise.
	* elf64-ppc.c (elf_backend_post_process_headers): Likewise.
	* elf64-sparc.c (elf_backend_post_process_headers): Likewise.
	* elf64-x86-64.c (elf_backend_post_process_headers): Likewise.
	*  (elf_backend_post_process_headers): Likewise.
	*  (elf_backend_post_process_headers): Likewise.
	* elf32-i386.c (elf_backend_post_process_headers): Don't
	define as _bfd_elf_set_osabi.
	(elf_i386_fbsd_post_process_headers): Updated.
	* elf32-mips.c (elf_fbsd_post_process_headers): Removed.
	(elf_backend_post_process_headers): Likewise.
	* elf32-tic6x.c (elf32_tic6x_set_osabi): Removed.
	(elf_backend_post_process_headers): Likewise.
	* elf64-mips.c (elf_fbsd_post_process_headers): Removed.
	(elf_backend_post_process_headers): Likewise.
	* elfn32-mips.c (elf_fbsd_post_process_headers): Removed.
	(elf_backend_post_process_headers): Likewise.
	* elfnn-aarch64.c (elfNN_aarch64_post_process_headers): Updated.
	* elfxx-target.h (elf_backend_post_process_headers): Default
	to _bfd_elf_post_process_headers.
2013-12-17 13:41:17 -08:00
H.J. Lu
e234935207 Use _bfd_elf_copy_private_bfd_data
PR binutils/16318
	* elf32-arm.c (elf32_arm_copy_private_bfd_data): Call
	_bfd_elf_copy_private_bfd_data.
	* elf32-bfin.c (bfin_elf_copy_private_bfd_data): Removed.
	(elf32_bfinfdpic_copy_private_bfd_data): Likewise.
	(bfd_elf32_bfd_copy_private_bfd_data): Don't define.
	* elf32-frv.c (frv_elf_copy_private_bfd_data): Removed.
	(elf32_frvfdpic_copy_private_bfd_data): Likewise.
	(bfd_elf32_bfd_copy_private_bfd_data): Don't define.
	* elf32-iq2000.c (iq2000_elf_copy_private_bfd_data): Removed.
	(bfd_elf32_bfd_copy_private_bfd_data): Don't define.
	* elf32-lm32.c (lm32_elf_copy_private_bfd_data): Removed.
	(lm32_elf_fdpic_copy_private_bfd_data): Call
	_bfd_elf_copy_private_bfd_data.
	* elf32-mep.c (mep_elf_copy_private_bfd_data): Removed.
	(bfd_elf32_bfd_copy_private_bfd_data): Don't define.
	* elf32-msp430.c (elf32_msp430_copy_private_bfd_data): Removed.
	(bfd_elf32_bfd_copy_private_bfd_data): Don't define.
	* elf32-mt.c (mt_elf_copy_private_bfd_data): Removed.
	(bfd_elf32_bfd_copy_private_bfd_data): Don't define.
	* elf32-sh.c (sh_elf_set_private_flags): Removed.
	(sh_elf_copy_private_data): Call _bfd_elf_copy_private_bfd_data
	and sh_elf_set_mach_from_flags.
	*  elfnn-aarch64.c (elfNN_aarch64_copy_private_bfd_data): Removed.
	(bfd_elfNN_bfd_copy_private_bfd_data): Don't define.
2013-12-17 11:48:18 -08:00
H.J. Lu
337e86d7c5 Rename index to indx
* peXXigen.c (rsrc_process_section): Rename index to indx.
2013-12-17 10:10:16 -08:00
Nick Clifton
5879bb8fc5 * peXXigen.c: Include wchar.h if available.
Include safe-ctype.h.
	(HighBitSet, SetHighBit, WithoutHighBit): New macros.
	(pe_print_resource_entries): Rename to
	rsrc_print_resource_entries.  Handle names that are not RVAs.
	(pe_print_resource_directory): Rename to
	rsrc_print_resource_directory.
	(pe_print_rsrc): Rename to rsrc_print_section.  Corrupt
	computation of RVA bias.
	(rsrc_count_entries): New function.
	(rsrc_count_directory): New function.
	(rsrc_parse_entry): New function.
	(rsrc_parse_entries): New function.
	(rsrc_parse_directory): New function.
	(rsrc_write_string): New function.
	(rsrc_compute_rva): New function.
	(rsrc_write_leaf): New function.
	(rsrc_write_entry): New function.
	(rsrc_write_directory): New function.
	(u16_mbtouc): New function.
	(rsrc_cmp): New function.
	(rsrc_print_name): New function.
	(rsrc_resource_name): New function.
	(rsrc_merge_string_entries): New function.
	(rsrc_sort_entries): New function.
	(rsrc_attach_chain): New function.
	(rsrc_merge): New function.
	(rsrc_process_section): New function - merges the contents of a
	.rsrc section.
	(_bfd_XXi_final_link_postscript): Call rsrc_process_section.
	* configure.in (AC_CHECK_HEADERS): Add wchar.h
	* config.in: Regenerate.
	* configure: Regenerate.
2013-12-17 15:39:13 +00:00
Alan Modra
978f0babbe daily update 2013-12-17 09:30:38 +10:30
Andreas Schwab
1a1fb62757 Fix missing newline in error message
* elf64-ppc.c (ppc64_elf_relocate_section): Add newline to error
message.
2013-12-16 17:28:54 +01:00
Alan Modra
4bc4619056 daily update 2013-12-16 09:30:37 +10:30
Alan Modra
e7d27824a6 daily update 2013-12-15 09:30:39 +10:30
Alan Modra
57fa7b8c7e Correct elf_merge_st_other arguments for weak symbols
* elflink.c (_bfd_elf_merge_symbol): If merging a new weak
	symbol that will be skipped, we don't have a new definition.
2013-12-14 13:14:03 +10:30
Alan Modra
08159f13a2 daily update 2013-12-14 09:31:01 +10:30
Kuan-Lin Chen
35c081572f Add support for Andes NDS32:
BFD:
	* Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add nds32
	files.
	* Makefile.in: Regenerate.
	* archures.c (bfd_nds32_arch): Add nds32 target.
	* bfd-in2.h: Regenerate.
	* config.bfd (nds32*le-*-linux): Add bfd_elf32_nds32lelin_vec
	and bfd_elf32_nds32belin_vec.
	(nds32*be-*-linux*): Likewise.
	(nds32*le-*-*): Add bfd_elf32_nds32le_vec and bfd_elf32_nds32be_vec.
	(nds32*be-*-*): Likewise.
	* configure.in (bfd_elf32_nds32be_vec): Add elf32-nds32.lo.
	(bfd_elf32_nds32le_vec): Likewise.
	(bfd_elf32_nds32belin_vec): Likewise.
	(bfd_elf32_nds32lelin_vec): Likewise.
	* configure: Regenerate.
	* cpu-nds32.c: New file for nds32.
	* elf-bfd.h: Add NDS32_ELF_DATA.
	* elf32-nds32.c: New file for nds32.
	* elf32-nds32.h: New file for nds32.
	* libbfd.h: Regenerate.
	* reloc.c: Add relocations for nds32.
	* targets.c (bfd_elf32_nds32be_vec): New declaration for nds32.
	(bfd_elf32_nds32le_vec): Likewise.
	(bfd_elf32_nds32belin_vec): Likewise.
	(bfd_elf32_nds32lelin_vec): Likewise.

BINUTILS:
	* readelf.c: Include elf/nds32.h
	(guess_is_rela): Add case for EM_NDS32.
	(dump_relocations): Add case for EM_NDS32.
	(decode_NDS32_machine_flags): New.
	(get_machine_flags): Add case for EM_NDS32.
	(is_32bit_abs_reloc): Likewise.
	(is_16bit_abs_reloc): Likewise.
	(process_nds32_specific): New.
	(process_arch_specific): Add case for EM_NDS32.
	* NEWS: Announce Andes nds32 support.
	* MAINTAINERS: Add nds32 maintainers.
  TESTSUITE:
	* binutils-all/objdump.exp: Add NDS32 cpu.
	* binutils-all/readelf.r: Skip extra reloc created by NDS32.

GAS:
	* Makefile.am (TARGET_CPU_CFILES): Add config/tc-nds32.c.
	(TARGET_CPU_HFILES): Add config/tc-nds32.h.
	* Makefile.in: Regenerate.
	* configure.in (nds32): Add nds32 target extension config support.
	* configure.tgt : Add case for nds32-*-elf* and nds32-*-linux*.
	* configure: Regenerate.
	* config/tc-nds32.c: New file for nds32.
	* config/tc-nds32.h: New file for nds32.
	* doc/Makefile.am (CPU_DOCS): Add c-nds32.texi.
	* doc/Makefile.in: Regenerate.
	* doc/as.texinfo: Add nds32 options.
	* doc/all.texi: Set NDS32.
	* doc/c-nds32.texi: New file dor nds32 document.
	* NEWS: Announce Andes nds32 support.
  TESTSUITE:
	* gas/all/gas.exp: Add expected failures for NDS32.
	* gas/elf/elf.exp: Likewise.
	* gas/lns/lns.exp: Use alternate test.
	* gas/macros/irp.d: Skip for NDS32.
	* gas/macros/macros.exp: Skip some tests for the NDS32.
	* gas/macros/rept.d: Skip for NDS32.
	* gas/macros/test3.d: Skip for NDS32.
	* gas/nds32: New directory.
	* gas/nds32/alu-1.s: New test.
	* gas/nds32/alu-1.d: Likewise.
	* gas/nds32/alu-2.s: Likewise.
	* gas/nds32/alu-2.d: Likewise.
	* gas/nds32/br-1.d: Likewise.
	* gas/nds32/br-1.s: Likewise.
	* gas/nds32/br-2.d: Likewise.
	* gas/nds32/br-2.s: Likewise.
	* gas/nds32/ji-jr.d: Likewise.
	* gas/nds32/ji-jr.s: Likewise.
	* gas/nds32/ls.d: Likewise.
	* gas/nds32/ls.s: Likewise.
	* gas/nds32/lsi.d: Likewise.
	* gas/nds32/lsi.s: Likewise.
	* gas/nds32/to-16bit-v1.d: Likewise.
	* gas/nds32/to-16bit-v1.s: Likewise.
	* gas/nds32/to-16bit-v2.d: Likewise.
	* gas/nds32/to-16bit-v2.s: Likewise.
	* gas/nds32/to-16bit-v3.d: Likewise.
	* gas/nds32/to-16bit-v3.s: Likewise.
	* gas/nds32/nds32.exp: New test driver.

LD:
	* Makefile.am (ALL_EMULATION_SOURCES): Add nds32 target.
	* Makefile.in: Regenerate.
	* configure.tgt: Add case for nds32*le-*-elf*, nds32*be-*-elf*,
	nds32*le-*-linux-gnu*, and nds32*be-*-linux-gnu*.
	* emulparams/nds32belf.sh: New file for nds32.
	* emulparams/nds32belf_linux.sh: Likewise.
	* emulparams/nds32belf16m.sh: Likewise.
	* emulparams/nds32elf.sh: Likewise.
	* emulparams/nds32elf_linux.sh: Likewise.
	* emulparams/nds32elf16m.sh: Likewise.
	* emultempl/nds32elf.em: Likewise.
	* scripttempl/nds32elf.sc}: Likewise.
	* gen-doc.texi: Set NDS32.
	* ld.texinfo: Set NDS32.
	* NEWS: Announce Andes nds32 support.
  TESTSUITE:
	* lib/ld-lib.exp: Add NDS32 to list of targets that do not support
	shared library generation.
	* ld-nds32: New directory.
	* ld-nds32/branch.d: New test.
	* ld-nds32/branch.ld: New test.
	* ld-nds32/branch.s: New test.
	* ld-nds32/diff.d: New test.
	* ld-nds32/diff.ld: New test.
	* ld-nds32/diff.s: New test.
	* ld-nds32/gp.d: New test.
	* ld-nds32/gp.ld: New test.
	* ld-nds32/gp.s: New test.
	* ld-nds32/imm.d: New test.
	* ld-nds32/imm.ld: New test.
	* ld-nds32/imm.s: New test.
	* ld-nds32/imm_symbol.s: New test.
	* ld-nds32/relax_jmp.d: New test.
	* ld-nds32/relax_jmp.ld: New test.
	* ld-nds32/relax_jmp.s: New test.
	* ld-nds32/relax_load_store.d: New test.
	* ld-nds32/relax_load_store.ld: New test.
	* ld-nds32/relax_load_store.s: New test.
	* ld-nds32/nds32.exp: New file.

OPCODES:
	* Makefile.am (TARGET_LIBOPCODES_CFILES): Add nds32-asm.c
	and nds32-dis.c.
	* Makefile.in: Regenerate.
	* configure.in: Add case for bfd_nds32_arch.
	* configure: Regenerate.
	* disassemble.c (ARCH_nds32): Define.
	* nds32-asm.c: New file for nds32.
	* nds32-asm.h: New file for nds32.
	* nds32-dis.c: New file for nds32.
	* nds32-opc.h: New file for nds32.

INCLUDE:
	* dis-asm.h (print_insn_nds32): Add nds32 target.
	* elf/nds32.h: New file for nds32.
	* opcode/nds32.h: New file for nds32.
2013-12-13 11:52:32 +00:00
Alan Modra
ec0d6081a0 daily update 2013-12-13 09:30:37 +10:30
H.J. Lu
57b828ef36 Also copy EI_OSABI field
bfd/

	PR binutils/16318
	* elf.c (_bfd_elf_copy_private_bfd_data): Remove BFD_ASSERT.
	Set e_flags only if elf_flags_init is FALSE.  Copy EI_OSABI
	field.

binutils/testsuite/

	PR binutils/16318
	* binutils-all/strip-10.d: Check OS/ABI.
2013-12-12 14:41:15 -08:00
H.J. Lu
84b66498ef Remove bfd_elf32_bfd_set_private_bfd_flags
* elf32-sh.c (bfd_elf32_bfd_set_private_bfd_flags): Removed.
2013-12-12 14:24:03 -08:00
H.J. Lu
58e7ebacdd Set ET_EXEC for -pie -Ttext-segment=
bfd/

	* elf.c (assign_file_positions_except_relocs): Set e_type in ELF
	header to ET_EXEC for -pie -Ttext-segment=.

2013-12-10  H.J. Lu  <hongjiu.lu@intel.com>

	* ld-pie/vaddr-0.d: New file.
	* ld-pie/vaddr-1.d: Likewise.
	* ld-pie/vaddr.s: Likewise.
2013-12-12 07:41:27 -08:00
Alan Modra
34e627b73c daily update 2013-12-12 09:30:48 +10:30
Alan Modra
3fb00a37d0 daily update 2013-12-11 09:30:38 +10:30
Alan Modra
67cf16836d daily update 2013-12-10 09:30:46 +10:30
Alan Modra
a36a852b46 daily update 2013-12-09 09:30:52 +10:30
Alan Modra
bc58135abd correct file reference 2013-12-08 15:40:43 +10:30
Alan Modra
68c88cd461 Fix --as-needed undefined symbol references from dynamic libraries.
libx.so refers to some_sym, liby.so provides some_sym@some_version
wasn't seen as satisfying the reference.

	* elf64-ppc.c (_bfd_elf_add_default_symbol): Set dynamic_def
	and ref_dynamic_nonweak when chaining together indirect
	symbols.
2013-12-08 15:33:29 +10:30
Alan Modra
06fe43ca0e daily update 2013-12-08 09:30:56 +10:30
Alan Modra
cc59280b3d daily update 2013-12-07 10:16:29 +10:30
Tristan Gingold
2b597f540f Add epilog unwind for x86_64 pe/coff
include/coff/
2013-12-06  Tristan Gingold  <gingold@adacore.com>

	* pe.h (UWOP_EPILOG, UWOP_PARE): Define.

bfd/
2013-12-06  Tristan Gingold  <gingold@adacore.com>

	* pei-x86_64.c (pex64_xdata_print_uwd_codes): Add argument rf.
	Display epilog opcode.
	(pex64_dump_xdata): Add argument rf; make addr a local variable.
	Adjust call to pex64_xdata_print_uwd_codes.
	(pex64_bfd_print_pdata): Display code range, adjust call to
	pex64_dump_xdata.
2013-12-06 11:54:31 +01:00
Alan Modra
b945895594 daily update 2013-12-06 09:30:12 +10:30
Tristan Gingold
b30a5d18b1 Clear allocated target data.
2013-12-05  Tristan Gingold  <gingold@adacore.com>

	* mach-o.c (bfd_mach_o_mkobject_init): Use bfd_zalloc.
2013-12-05 11:18:59 +01:00
Alan Modra
18e2e72cbe daily update 2013-12-05 09:30:12 +10:30
Alan Modra
aa2dbebef8 daily update 2013-12-04 09:30:38 +10:30
Nick Clifton
11a6da5617 * peXXigen.c (pe_print_resource_entries): New function: Displays
an entry in a .rsrc section.
	(pe_print_resource_directory): New function: Displays a directory
	in a .rsrc section.
	(pe_print_rsrc): New function: Displays the contents of .rsrc
	section.
	(_bfd_XX_print_private_bfd_data_common): Call pe_print_rsrc.

	* binutils-all/windres/windres.exp: Run for x86_64-pc-cygwin.
	Add test of "objump -p" output.
2013-12-03 13:57:56 +00:00
Alan Modra
00f412ee52 More PowerPC64 ELFv2 --just-symbols fixes
I don't know what I was thinking here to omit the save of r2.
Possibly I was looking at -msave-toc-indirect code at the time, where
r2 is saved in the function prologue.

	* elf64-ppc.c (ppc_build_one_stub <ppc_stub_plt_branch_r2off>):
	Don't omit saving of r2 for ELFv2.  Don't addi 2,2,0.
	(ppc_size_one_stub <ppc_stub_plt_branch_r2off>): Adjust to suit.
2013-12-03 18:02:44 +10:30
Alan Modra
2c3f079f58 PowerPC64 linking of --just-symbols objects (klibc)
With -mcmodel=medium we can't assume that a -R object doesn't use
toc-relative addressing if there's no toc.  Lots of things are
accessed via r2, not just the toc/got section.  Also, testing for
.opd is plain wrong for ELFv2.

	* elf64-ppc.c (ppc64_elf_link_just_syms): Remove .got check.
	Handle ELFv2.
2013-12-03 15:16:12 +10:30
Alan Modra
310bf259c3 daily update 2013-12-03 09:30:22 +10:30
Alan Modra
ce3ca210b5 daily update 2013-12-02 09:30:01 +10:30
Alan Modra
4f36e1fee3 daily update 2013-12-01 09:30:12 +10:30
Alan Modra
f1ec7f0f3e daily update 2013-11-30 09:30:12 +10:30
Alan Modra
5425b0d80b daily update 2013-11-29 09:30:13 +10:30
Alan Modra
a6c8f227fe daily update 2013-11-28 09:30:14 +10:30
Tristan Gingold
48d5accb7a Improve dump of xdata/pdata on x86_64.
bfd/
2013-11-27  Tristan Gingold  <gingold@adacore.com>

	* pei-x86_64.c (pex_regs): Make it const.  Add comments.
	(pex64_get_runtime_function): Do not split UnwindData.
	(pex64_get_unwind_info): Extract the chain and the handler.
	(pex64_xdata_print_uwd_codes): Rewritten: do not reverse print
	the opcode, handle version 2, add consistency check, make the
	code host neutral.
	(pex64_dump_xdata): Change arguments to pass the section and its
	content.  Handle version 2, change output.
	(pex64_bfd_print_pdata): Add comments, load section for xdata.
	Avoid duplicate outputs.

include/coff
2013-11-27  Tristan Gingold  <gingold@adacore.com>

	* pe.h (struct pex64_runtime_function): Remove isChained.
	(UWOP_SAVE_XMM): Add comment.
	(struct pex64_unwind_info): Remove extra fields.
2013-11-27 11:21:03 +01:00
Alan Modra
247196c840 daily update 2013-11-27 09:30:14 +10:30
Will Newton
4920638856 bfd/elfnn-aarch64.c: Handle static links with ifunc correctly.
The code for handling GOT references to ifunc symbols in static links
was missing.

bfd/ChangeLog:

2013-11-26  Will Newton  <will.newton@linaro.org>

	* elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol):
	Handle STT_GNU_IFUNC symbols correctly in static links.

ld/testsuite/ChangeLog:

2013-11-26  Will Newton  <will.newton@linaro.org>

	* ld-aarch64/aarch64-elf.exp: Add ifunc-22.
	* ld-aarch64/ifunc-22.d: New file.
	* ld-aarch64/ifunc-22.s: Likewise.
2013-11-26 15:25:11 +00:00
Will Newton
b1ee0cc489 bfd/elfnn-aarch64.c: Fix miscalculation of GOTPLT offset for ifunc syms.
The .got.plt header size was not being correctly taken into account
when calculating the offset for relocations against ifunc symbols.

bfd/ChangeLog:

2013-11-26  Will Newton  <will.newton@linaro.org>

	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Ensure
	PLT_INDEX is calculated using correct header size.

ld/testsuite/ChangeLog:

2013-11-26  Will Newton  <will.newton@linaro.org>

	* ld-aarch64/aarch64-elf.exp: Add ifunc-21 test.
	* ld-aarch64/ifunc-21.d: New file.
	* ld-aarch64/ifunc-21.s: Likewise.
2013-11-26 15:24:54 +00:00
Alan Modra
88e80851c9 daily update 2013-11-26 09:30:12 +10:30
Alan Modra
5a75f60bc2 daily update 2013-11-25 09:30:20 +10:30
Alan Modra
1fd4d43dbe daily update 2013-11-24 09:30:12 +10:30
Alan Modra
08f4871a65 daily update 2013-11-23 09:30:01 +10:30
Cory Fields
0cb112f740 * windres.c (define_resource): Use zero for timestamp, making
output deterministic. time.h include is no longer needed.
	* resres.c (res_append_resource): Likewise.

	* pe-dll.c (fill_edata): Only use a real timestamp if
	--insert-timestamp was used.
	* emultempl/pe.em: Add the --insert-timestamp option.
	* emultempl/pep.em: Likewise for 64bit.
	* ld.texinfo: Document the --insert-timestamp option.

	* libcoff-in.h: Add insert_timestamp flag to the pe_data struct.
	* libcoff.h: Regenerate.
	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Only use a real
	timestamp if --insert-timestamp was used.
2013-11-22 14:55:56 +00:00
Alan Modra
46b2ff5b53 daily update 2013-11-22 09:32:36 +10:30