1. 16 Jan, 2019 4 commits
    • Jim Wilson's avatar
      Don't emit vendor attribute section if there is no attribute to emit. · a4bf3d07
      Jim Wilson authored
      	2019-01-16  Kito Cheng  <kito@andestech.com>
      	* elf-attrs.c (vendor_obj_attr_size): Return 0 if size is 0 even
      	for OBJ_ATTR_PROC.
      	* testsuite/gas/riscv/attribute-empty.d: New.
    • Jim Wilson's avatar
      RISC-V: Merge ELF attribute for ld. · 7d7a7d7c
      Jim Wilson authored
      	2019-01-16  Kito Cheng  <kito@andestech.com>
      		    Nelson Chu  <nelson@andestech.com>
      	* elfnn-riscv.c (in_subsets): New.
      	(out_subsets): Likewise.
      	(merged_subsets): Likewise.
      	(riscv_std_ext_p): Likewise.
      	(riscv_non_std_ext_p): Likewise.
      	(riscv_std_sv_ext_p): Likewise.
      	(riscv_non_std_sv_ext_p): Likewise.
      	(riscv_version_mismatch): Likewise.
      	(riscv_i_or_e_p): Likewise.
      	(riscv_merge_std_ext): Likewise.
      	(riscv_merge_non_std_and_sv_ext): Likewise.
      	(riscv_merge_arch_attr_info): Likewise.
      	(riscv_merge_attributes): Likewise.
      	(_bfd_riscv_elf_merge_private_bfd_data): Merge attribute.
      	* testsuite/ld-elf/orphan-region.d: XFAIL for RISC-V, because add new
      	* testsuite/ld-riscv-elf/ld-riscv-elf.exp: Add new tests.
      	* testsuite/ld-riscv-elf/attr-merge-arch-01.d: New test.
      	* testsuite/ld-riscv-elf/attr-merge-arch-01a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-01b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-02.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-02a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-02b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-03.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-03a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-03b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-arch-failed-01b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-priv-spec-a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-priv-spec-b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-priv-spec.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-stack-align-a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-stack-align-b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-stack-align-failed-a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-stack-align-failed-b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-stack-align-failed.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-stack-align.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-01.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-01a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-01b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-02.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-02a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-02b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-03.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-03a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-03b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-04.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-04a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-04b.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-05.d: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-05a.s: Likewise.
      	* testsuite/ld-riscv-elf/attr-merge-strict-align-05b.s: Likewise.
    • Jim Wilson's avatar
      RISC-V: Support ELF attribute for gas and readelf. · 2dc8dd17
      Jim Wilson authored
      	2019-01-16  Kito Cheng  <kito@andestech.com>
      		    Nelson Chu  <nelson@andestech.com>
      	* elfnn-riscv.c (riscv_elf_obj_attrs_arg_type): New.
      	(elf_backend_obj_attrs_vendor): Define.
      	(elf_backend_obj_attrs_section_type): Likewise.
      	(elf_backend_obj_attrs_section): Likewise.
      	(elf_backend_obj_attrs_arg_type): Define as
      	* elfxx-riscv.c (riscv_estimate_digit): New.
      	(riscv_estimate_arch_strlen1): Likewise.
      	(riscv_estimate_arch_strlen): Likewise.
      	(riscv_arch_str1): Likewise.
      	(riscv_arch_str): Likewise.
      	* elfxx-riscv.h (riscv_arch_str): Declare.
      	* readelf.c (get_riscv_section_type_name): New function.
      	(get_section_type_name): Add handler for RISC-V.
      	(riscv_attr_tag_t): Declare.
      	(riscv_attr_tag): New.
      	(display_riscv_attribute): New function.
      	(process_attributes): Add handler for RISC-V.
      	* testsuite/binutils-all/strip-3.d: Remove .riscv.attribute
      	* config/tc-riscv.c (DEFAULT_RISCV_ATTR): Define to 0 if not defined.
      	(riscv_set_options): Add `arch_attr` field.
      	(riscv_opts): Set default value for arch_attr.
      	(riscv_write_out_arch_attr): New.
      	(riscv_set_public_attributes): Likewise.
      	(riscv_md_end): Likewise.
      	(riscv_convert_symbolic_attribute): Likewise.
      	(s_riscv_attribute): Likewise.
      	(explicit_arch_attr): Likewise.
      	(riscv_pseudo_table): Add .attribute to the table.
      	(options): Add OPTION_ARCH_ATTR and OPTION_NO_ARCH_ATTR
      	enumeration constants.
      	(md_longopts): Add `march-attr' and `mno-arch-attr' options.
      	(md_parse_option): Handle the new options.
      	(md_show_usage): Document the `march-attr' option.
      	* config/tc-riscv.h (md_end): Define as riscv_md_end
      	(riscv_md_end): Declare.
      	(riscv_convert_symbolic_attribute): Declare.
      	(start_assemble): Declare.
      	* testsuite/gas/elf/elf.exp: Adjust test case for section2.e.
      	* testsuite/gas/elf/section2.e-riscv: New.
      	* testsuite/gas/riscv/attribute-01.d: New test
      	* testsuite/gas/riscv/attribute-02.d: Likewise.
      	* testsuite/gas/riscv/attribute-03.d: Likewise.
      	* testsuite/gas/riscv/attribute-04.d: Likewise.
      	* testsuite/gas/riscv/attribute-04.s: Likewise.
      	* testsuite/gas/riscv/attribute-05.d: Likewise.
      	* testsuite/gas/riscv/attribute-05.s: Likewise.
      	* testsuite/gas/riscv/attribute-06.d: Likewise.
      	* testsuite/gas/riscv/attribute-06.s: Likewise.
      	* testsuite/gas/riscv/attribute-07.d: Likewise.
      	* testsuite/gas/riscv/attribute-07.s: Likewise.
      	* testsuite/gas/riscv/attribute-08.d: Likewise.
      	* testsuite/gas/riscv/attribute-08.s: Likewise.
      	* testsuite/gas/riscv/attribute-unknown.d: Likewise.
      	* testsuite/gas/riscv/attribute-unknown.s: Likewise.
      	* testsuite/gas/riscv/empty.l: Likewise.
      	* doc/c-riscv.texi (.attribute): Add documentation.
      	* configure.ac (--enable-default-riscv-attribute): New options.
      	* configure: Re-generate.
      	* config.in: Re-generate.
      	* elf/riscv.h (SHT_RISCV_ATTRIBUTES): Define.
      	(Tag_RISCV_arch): Likewise.
      	(Tag_RISCV_priv_spec): Likewise.
      	(Tag_RISCV_priv_spec_minor): Likewise.
      	(Tag_RISCV_priv_spec_revision): Likewise.
      	(Tag_RISCV_unaligned_access): Likewise.
      	(Tag_RISCV_stack_align): Likewise.
    • John Darrington's avatar
      S12Z: Emit RELOC_S12Z_OPR instead of RELOC_EXT24 where appropriate. · d5dcaf1b
      John Darrington authored
      When assembling instructions which involve OPR references, emit
      RELOC_S12Z_OPR instead of RELOC_EXT24.
      	* bfd-in2.h [BFD_RELOC_S12Z_OPR]: New reloc.
      	* libbfd.h: regen.
      	* elf32-s12z.c (eld_s12z_howto_table): R_S12Z_OPR takes non zero
      	source field.  (md_apply_fix): Apply final fix
      	to BFD_RELOC_S12Z_OPR.
      	* reloc.c[BFD_RELOC_S12Z_OPR]: New reloc.
      	* config/tc-s12z.c (emit_opr): Emit BFD_RELOC_S12Z_OPR instead of
      	* testsuite/gas/s12z/opr-indirect-expr.d: Expect R_S12Z_OPR instead
      	of R_S12Z_EXT24.
  2. 14 Jan, 2019 2 commits
    • Nick Clifton's avatar
      Correct PR number in prevvious delta · f466c305
      Nick Clifton authored
    • Maamoun Tarsha's avatar
      Add support to GNU ld to separate got related plt entries from normal ones in... · 5a12586d
      Maamoun Tarsha authored
      Add support to GNU ld to separate got related plt entries from normal ones in order to be able to switch the non-plt got entries to read-only after startup, conforming to revised Linux for zSeries ABI.
      	PR 20133
      	* emulparams/elf64_s390.sh (SEPARATE_GOTPLT): Define.
      	* emulparams/elf_s390.sh (SEPARATE_GOTPLT): Define.
      	* testsuite/ld-s390/gotreloc_31-1.dd: Update expected output.
      	* testsuite/ld-s390/tlsbin.dd: Likewise.
      	* testsuite/ld-s390/tlsbin.rd: Likewise.
      	* testsuite/ld-s390/tlsbin.sd: Likewise.
      	* testsuite/ld-s390/tlsbin_64.dd: Likewise.
      	* testsuite/ld-s390/tlsbin_64.rd: Likewise.
      	* testsuite/ld-s390/tlsbin_64.sd: Likewise.
      	* testsuite/ld-s390/tlspic.dd: Likewise.
      	* testsuite/ld-s390/tlspic.rd: Likewise.
      	* testsuite/ld-s390/tlspic.sd: Likewise.
      	* testsuite/ld-s390/tlspic_64.dd: Likewise.
      	* testsuite/ld-s390/tlspic_64.rd: Likewise.
      	* testsuite/ld-s390/tlspic_64.sd: Likewise.
      	* testsuite/ld-s390/s390.exp: Skip s390 tests for tpf targets.
  3. 09 Jan, 2019 1 commit
    • Andrew Paprocki's avatar
      Adjust bfd/warning.m4 egrep patterns · 3107326d
      Andrew Paprocki authored
      Adjust the `bfd/warning.m4` `egrep` patterns to handle preprocessors
      that do not define `__GNUC__`, leaving the string in the output.
      	* warning.m4: Adjust egrep pattern for non-GNU compilers.
      	* configure: Regenerate.
      	* configure: Regenerate.
      	* configure: Regenerate.
      	* configure: Regenerate.
      	* configure: Regenerate.
      	* configure: Regenerate.
      	* configure: Regenerate.
  4. 08 Jan, 2019 1 commit
  5. 05 Jan, 2019 1 commit
    • Yoshinori Sato's avatar
      RX: bfd - Add RXv3 support. · c8c89dac
      Yoshinori Sato authored
              * bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
              * bfd/bfd-in2.h: Regenerate.
              * bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
              * bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.
  6. 04 Jan, 2019 2 commits
  7. 01 Jan, 2019 2 commits
  8. 31 Dec, 2018 2 commits
  9. 28 Dec, 2018 2 commits
    • Alan Modra's avatar
      PR24015, glibc-2.28 on little-endian mips32 broken · 0e41bebb
      Alan Modra authored
      Commit 2bf2bf23 exposed a bug on targets that create common sections
      other than the standard ELF SHN_COMMON.  If these are output by ld -r,
      then their type becomes SHT_PROGBITS unless the target handles them
      specially (eg. by elf_backend_special_sections), and if they are
      merged into .bss/.sbss by ld -r then that section becomes SHT_PROGBITS.
      Worse, if they are output by ld -r, then their size is increased by
      bfd_generic_define_common_symbol during final link, which leads to
      bogus file contents being copied to output.
      For mips, it seems to me that the .scommon section should not be
      output for ld -r, but I haven't made that change in this patch.
      	PR 24015
      	* elf.c (bfd_elf_get_default_section_type): Make common sections
      	* linker.c (bfd_generic_define_common_symbol): Clear
    • Alan Modra's avatar
      PR23966, mingw failure due to 32-bit long · cb87d9f1
      Alan Modra authored
      	PR 23966
      	* libbfd.c (SSIZE_MAX): Define.
      	(bfd_malloc, bfd_realloc): Don't cast size to long to check for
      	"negative" values, compare against SSIZE_MAX instead.
  10. 23 Dec, 2018 1 commit
    • H.J. Lu's avatar
      i386: Remove the unused bfd pointer argument · b366503e
      H.J. Lu authored
      Remove the unused bfd pointer argument of elf_i386_rtype_to_howto.
      	* elf32-i386.c (elf_i386_rtype_to_howto): Remove the unused bfd
      	pointer argument.
      	(elf_i386_info_to_howto_rel): Updated.
      	(elf_i386_tls_transition): Likewise.
      	(elf_i386_relocate_section): Likewise.
  11. 20 Dec, 2018 1 commit
    • H.J. Lu's avatar
      x86: Call rtype_to_howto to get reloc_howto_type pointer · 76268e02
      H.J. Lu authored
      	* elf32-i386.c (elf_i386_relocate_section): Call
      	elf_i386_rtype_to_howto to get reloc_howto_type pointer.
      	* elf64-x86-64.c (elf_x86_64_relocate_section): Call
      	elf_x86_64_rtype_to_howto to get reloc_howto_type pointer.
  12. 18 Dec, 2018 2 commits
    • Alan Modra's avatar
      Include bfd_stdint.h in bfd.h · 2d5d5a8f
      Alan Modra authored
      This patch adds bfd_stdint.h to bfd.h, so that BFD can use size_t
      where appropriate in function parameters and return values.  I also
      tidy a few other cases where headers are included twice.
      	* Makefile.am (bfdinclude_HEADERS): Add bfd_stdint.h.
      	(BFD_H_DEPS): Add include/diagnostics.h.
      	(LOCAL_H_DEPS): Add bfd_stdint.h.
      	* bfd-in.h: Include bfd_stdint.h.
      	* arc-plt.h: Don't include stdint.h.
      	* coff-rs6000.c: Likewise.
      	* coff64-rs6000.c: Likewise.
      	* elfxx-riscv.c: Likewise.
      	* cache.c: Don't include bfd_stdint.h.
      	* elf32-arm.c: Likewise.
      	* elf32-avr.c: Likewise.
      	* elf32-nds32.c: Likewise.
      	* elf32-rl78.c: Likewise.
      	* elf32-rx.c: Likewise.
      	* elf32-wasm32.c: Likewise.
      	* elf64-nfp.c: Likewise.
      	* elflink.c: Likewise.
      	* elfnn-aarch64.c: Likewise.
      	* elfnn-ia64.c: Likewise.
      	* elfxx-ia64.c: Likewise.
      	* elfxx-x86.h: Likewise.
      	* wasm-module.c: Likewise, and don't include sysdep.h twice.
      	* elf-nacl.h: Don't include bfd.h.
      	* mach-o.h: Likewise.
      	* elfxx-aarch64.c: Include bfd.h and elf-bfd.h.
      	* elfxx-aarch64.h: Don't include bfd.h, elf-bfd.h or stdint.h.
      	* mach-o-aarch64.c: Include mach-o.h later.
      	* mach-o-arm.c: Likewise.
      	* mach-o-i386.c: Likewise.
      	* mach-o-x86-64.c: Likewise.
      	* mach-o.c: Likewise.
      	* sysdep.h: Don't include ansidecl.h or sys/stat.h.
      	* Makefile.in: Regenerate.
      	* bfd-in2.h: Regenerate.
      	* arm-dis.c: Include bfd.h.
      	* aarch64-opc.c: Include bfd_stdint.h rather than stdint.h.
      	* csky-dis.c: Likewise.
      	* nds32-asm.c: Likewise.
      	* riscv-dis.c: Likewise.
      	* s12z-dis.c: Likewise.
      	* wasm32-dis.c: Likewise.
    • Alan Modra's avatar
      PR23980, assertion fail · 7af5d5c4
      Alan Modra authored
      All of the backend relocate_section functions that interpret reloc
      numbers assuming the input file is of the expected type (ie. same as
      output or very similar) really ought to be checking input file type.
      Not many do, and those that do currently just assert.  This patch
      replaces the assertion with a more graceful exit.
      	PR 23980
      	* elf32-i386.c (elf_i386_relocate_section): Exit with wrong format
      	error rather than asserting input file is as expected.
      	* elf32-s390.c (elf_s390_relocate_section): Likewise.
      	* elf32-sh.c (sh_elf_relocate_section): Likewise.
      	* elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
      	* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
      	* elf64-s390.c (elf_s390_relocate_section): Likewise.
      	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
      	* elf32-ppc.c (ppc_elf_relocate_section): Exit with wrong format
      	error if input file is not ppc32 ELF.
  13. 17 Dec, 2018 2 commits
    • Alan Modra's avatar
      PR23980, powerpc64 ld segfault · 87469ba2
      Alan Modra authored
      	PR 23980
      	* elf64-ppc.c (ppc64_elf_hide_symbol): Check hash table type
      	before referencing ppc64-only fields of hash entries.
    • Alan Modra's avatar
      PR23994, libbfd integer overflow · 3a551c7a
      Alan Modra authored
      	PR 23994
      	* aoutx.h: Include limits.h.
      	(get_reloc_upper_bound): Detect long overflow and return a file
      	too big error if it occurs.
      	* elf.c: Include limits.h.
      	(_bfd_elf_get_symtab_upper_bound): Detect long overflow and return
      	a file too big error if it occurs.
      	(_bfd_elf_get_dynamic_symtab_upper_bound): Likewise.
      	(_bfd_elf_get_dynamic_reloc_upper_bound): Likewise.
  14. 14 Dec, 2018 1 commit
    • H.J. Lu's avatar
      elf: Add PT_GNU_PROPERTY segment type · 0a59decb
      H.J. Lu authored
      Linkers group input note sections with the same name into one output
      note section with the same name.  One output note section is placed in
      one PT_NOTE segment.  New linkers merge all input .note.gnu.property
      sections into one output .note.gnu.property section with a single
      NT_GNU_PROPERTY_TYPE_0 note in a single PT_NOTE segment.  Since older
      linkers treat input .note.gnu.property section as a generic note section
      and just concatenate all input .note.gnu.property sections into one
      output .note.gnu.property section without merging them, we may
      see one or more NT_GNU_PROPERTY_TYPE_0 notes in PT_NOTE segment, which
      are invalid.
      GNU_PROPERTY_X86_UINT32_VALID was defined to address this issue such
      that linker sets the bit for non-relocatable outputs.  But it isn't
      1. It doesn't cover generic properties.
      2. When -mx86-used-note=yes is passed to x86 assembler, the
      property in object file and older linkers generate invalid
      NT_GNU_PROPERTY_TYPE_0 notes with the GNU_PROPERTY_X86_UINT32_VALID bit
      I am proposing the following changes:
      1. Add PT_GNU_PROPERTY segment type:
       # define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
      which covers .note.gnu.property section.
      2. Remove GNU_PROPERTY_X86_UINT32_VALID.
      	PR ld/23900
      	* elf.c (get_program_header_size): Add a PT_GNU_PROPERTY
      	(_bfd_elf_map_sections_to_segments): Create a PT_GNU_PROPERTY
      	* elfxx-x86.c (_bfd_elf_link_setup_gnu_properties): Don't set
      	PR ld/23900
      	* readelf.c (get_segment_type): Support PT_GNU_PROPERTY.
      	(decode_x86_isa): Don't check GNU_PROPERTY_X86_UINT32_VALID.
      	(decode_x86_feature_1): Likewise.
      	(decode_x86_feature_2): Likewise.
      	(print_gnu_property_note): Remove GNU_PROPERTY_X86_UINT32_VALID
      	* testsuite/binutils-all/i386/empty.d: Updated.
      	* testsuite/binutils-all/x86-64/empty-x32.d: Likewise.
      	* testsuite/binutils-all/x86-64/empty.d: Likewise.
      	* testsuite/binutils-all/i386/pr21231b.s: Change
      	GNU_PROPERTY_X86_ISA_1_USED bits to 0x7fffffff.
      	* testsuite/binutils-all/x86-64/pr21231b.s: Likewise.
      	PR ld/23900
      	* config/tc-i386.c (x86_cleanup): Don't set
      	* testsuite/gas/i386/property-1.s: Change
      	GNU_PROPERTY_X86_ISA_1_USED bits to 0.
      	PR ld/23900
      	* elf/common.h (PT_GNU_PROPERTY): New.
      	(GNU_PROPERTY_X86_UINT32_VALID): Removed.
      	PR ld/23900
      	* testsuite/ld-elf/elf.exp: Run PR ld/23900 test.
      	* testsuite/ld-elf/pr23900-1-32.rd: New file.
      	* testsuite/ld-elf/pr23900-1-64.rd: Likewise.
      	* testsuite/ld-elf/pr23900-1.d: Likewise.
      	* testsuite/ld-elf/pr23900-1.s: Likewise.
      	* testsuite/ld-elf/pr23900-2.s: Likewise.
      	* testsuite/ld-elf/pr23900-2a.d: Likewise.
      	* testsuite/ld-elf/pr23900-2b.d: Likewise.
      	* testsuite/ld-i386/ibt-plt-1.d: Adjusted.
      	* testsuite/ld-i386/ibt-plt-2c.d: Likewise.
      	* testsuite/ld-i386/ibt-plt-2d.d: Likewise.
      	* testsuite/ld-i386/ibt-plt-3d.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-1-x32.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-1.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-2c-x32.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-2c.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-2d-x32.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-2c.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-3c-x32.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-3c.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-3d-x32.d: Likewise.
      	* testsuite/ld-x86-64/ibt-plt-3d.d: Likewise.
      	* testsuite/ld-i386/pr23372c.d: Expect <None>
      	for GNU_PROPERTY_X86_ISA_1_USED.
      	* testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
      	* testsuite/ld-x86-64/pr23372c.d: Likewise.
      	* testsuite/ld-x86-64/pr23372d-x32.d: Likewise.
      	* testsuite/ld-x86-64/pr23372d.d: Likewise.
      	* testsuite/ld-x86-64/property-x86-5a.s: Change
      	GNU_PROPERTY_X86_ISA_1_USED bits to 0.
      	* testsuite/ld-x86-64/property-x86-5b.s: Likewise.
  15. 11 Dec, 2018 2 commits
    • Max Filippov's avatar
      bfd: xtensa: ignore overflow in hight part of const16 relocation · 00863b8e
      Max Filippov authored
      32-bit constants loaded by two const16 opcodes that involve relocation
      (e.g. calculated as a sum of a symbol and a constant) may overflow,
      resulting in linking error with the following message:
        dangerous relocation: const16: cannot encode: (_start+0x70000000)
      They should wrap around instead. Limit const16 opcode immediate field to
      16 least significant bits to implement this wrap around.
      2018-12-11  Max Filippov  <jcmvbkbc@gmail.com>
      	* elf32-xtensa.c (elf_xtensa_do_reloc): Limit const16 opcode
      	immediate field to 16 least significant bits.
    • H.J. Lu's avatar
      xc16x: Add elf32_xc16x_rtype_to_howto · 209d1499
      H.J. Lu authored
      Add elf32_xc16x_rtype_to_howto to get reloc_howto_type pointer from
      	* elf32-xc16x.c (elf32_xc16x_rtype_to_howto): New function.
      	(elf32_xc16x_relocate_section): Call elf32_xc16x_rtype_to_howto
      	instead of xc16x_reloc_type_lookup to get reloc_howto_type.
  16. 07 Dec, 2018 4 commits
    • H.J. Lu's avatar
      Override the previous definition from IR object · fbcc8baf
      H.J. Lu authored
      Mark the previous definition from IR object as undefined so that the
      generic linker will override it.
      	PR ld/23958
      	* elflink.c (_bfd_elf_add_default_symbol): Override the previous
      	definition from IR object.
      	PR ld/23958
      	* testsuite/ld-plugin/lto.exp: Run PR ld/23958 test.
      	* testsuite/ld-plugin/pr23958.c: New file.
      	* testsuite/ld-plugin/pr23958.t: Likewise.
    • Stafford Horne's avatar
      gdb/or1k: Add linux debugging support · 42e151bf
      Stafford Horne authored
      Up until now OpenRISC GDB only has supported bare metal debugging.  This
      patch adds linux userspace debugging and core dump analysis support.
      The changes are loosely based on nios2 and riscv implementations.
      This was tested with linux 4.20 core dumps for executables linked
      against musl libc.
      	* elf32-or1k.c (or1k_grok_prstatus): New function.
      	(or1k_grok_psinfo): Likewise.
      	* Makefile.in (ALL_TARGET_OBS): Add or1k-linux-tdep.o.
      	* configure.tgt: Add or1k*-*-linux*.
      	* or1k-linux-tdep.c: New file.
      	* or1k-tdep.c (or1k_gdbarch_init): Call gdbarch_init_osabi.
    • H.J. Lu's avatar
      elf: Report property change when merging properties · d2ef37eb
      H.J. Lu authored
      With merging properties, report property change in linker map file, like
      Merging program properties
      Removed property 0xc0010000 to merge /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o (0x0) and /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crti.o (0x0)
      Removed property 0xc0000002 to merge /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o (0x3) and x.o (not found)
      Removed property 0xc0000000 to merge /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o (not found) and /usr/lib64/libc_nonshared.a(elf-init.oS) (0x0)
      Removed property 0xc0000001 to merge /usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib64/crt1.o (not found) and /usr/lib64/libc_nonshared.a(elf-init.oS) (0x0)
      	* elf-properties.c (elf_find_and_remove_property): Add a
      	bfd_boolean argument to indicate if the property should be
      	(elf_merge_gnu_property_list): Updated.  Report
      	property change in linker map file.
      	(elf_get_gnu_property_section_size): Skip property_remove
      	(elf_write_gnu_properties): Likewise.
      	(_bfd_elf_link_setup_gnu_properties): Report property merge
      	in linker map file.  Pass abfd to elf_merge_gnu_property_list.
      	* bfdlink.h (bfd_link_info): Add has_map_file.
      	* NEWS: Updated for property change report.
      	* ld.texi: Document property change report.
      	* ldmain.c (main): Set link_info.has_map_file to TRUE when
      	linker map file is used.
      	* testsuite/ld-scripts/rgn-over1.d: Updated.
      	* testsuite/ld-scripts/rgn-over2.d: Likewise.
      	* testsuite/ld-scripts/rgn-over3.d: Likewise.
      	* testsuite/ld-scripts/rgn-over4.d: Likewise.
      	* testsuite/ld-scripts/rgn-over5.d: Likewise.
      	* testsuite/ld-scripts/rgn-over6.d: Likewise.
      	* testsuite/ld-scripts/rgn-over7.d: Likewise.
      	* testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Check linker map
      	* testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise.
      	* testsuite/ld-x86-64/property-x86-ibt1a.map: New file.
    • Alan Modra's avatar
      PR23952, memory leak in _bfd_generic_read_minisymbols · c2f5dc30
      Alan Modra authored
      	PR 23952
      	* syms.c (_bfd_generic_read_minisymbols): Free syms before
      	returning with zero symcount.
      	* nm.c (display_rel_file): Use xrealloc to increase minisyms
      	for synthetic symbols.
  17. 06 Dec, 2018 1 commit
    • Alan Modra's avatar
      PowerPC @l, @h and @ha warnings, plus VLE e_li · bb6bf75e
      Alan Modra authored
      This patch started off just adding the warnings in tc-ppc.c about
      incorrect usage of @l, @h and @ha in instructions that don't have
      16-bit D-form fields.  That unfortunately showed up three warnings in
      ld/testsuite/ld-powerpc/vle-multiseg.s on instructions like
      	e_li r3, IV_table@l+0x00
      which was being assembled to
         8:	70 60 00 00 	e_li    r3,0
      			a: R_PPC_ADDR16_LO	IV_table
      The ADDR16_LO reloc is of course completely bogus on e_li, which has
      a split 20-bit signed integer field in bits 0x1f7fff, the low 11 bit
      in 0x7ff, the next 5 bits in 0x1f0000, and the high 4 bits in 0x7800.
      Applying an ADDR16_LO reloc to the instruction potentially changes
      the e_li instruction to e_add2i., e_add2is, e_cmp16i, e_mull2i,
      e_cmpl16i, e_cmph16i, e_cmphl16i, e_or2i, e_and2i., e_or2is, e_lis,
      e_and2is, or some invalid encodings.
      Now there is a relocation that suits e_li, R_PPC_VLE_ADDR20, which was
      added 2017-09-05 but I can't see code in gas to generate the
      relocation.  In any case, VLE_ADDR20 probably doesn't have the correct
      semantics for @l since ideally you'd want an @l to pair with @h or @ha
      to generate a 32-bit constant.  Thus @l should only produce a 16-bit
      value, I think.  So we need some more relocations to handle e_li it
      seems, or as I do in this patch, modify the behaviour of existing
      relocations when applied to e_li instructions.
      	* opcode/ppc.h (E_OPCODE_MASK, E_LI_MASK, E_LI_INSN): Define.
      	* elf32-ppc.c (ppc_elf_howto_raw <R_PPC_VLE_ADDR20>): Correct
      	mask and shift value.
      	(ppc_elf_vle_split16): Use E_OPCODE_MASK.  Handle e_li
      	* config/tc-ppc.c (md_assemble): Adjust relocs for VLE before
      	TLS tweaks.  Handle e_li.  Warn on unexpected operand field
      	for lo16/hi16/ha16 relocs.
  18. 05 Dec, 2018 1 commit
    • Sam Tebbs's avatar
      [aarch64] Add support for pointer authentication B key · 3a67e1a6
      Sam Tebbs authored
      Armv8.3-A has another key used in pointer authentication called the
      B-key (other than the A-key that is already supported). In order for
      stack unwinders to work it is necessary to be able to identify frames
      that have been signed with the B-key rather than the A-key and it was
      felt that keeping this as an augmentation character in the CIE was the
      best bet. The DWARF extensions for ARM therefore propose to add a new
      augmentation character 'B' to the CIE augmentation string and the
      corresponding cfi directive ".cfi_b_key_frame". I've made the relevant
      changes to GAS and LD to add support for B-key unwinding, which required
      modifying LD to check for 'B' in the augmentation string, adding the
      ".cfi_b_key_frame" directive to GAS and adding a "pauth_key" field to
      GAS's fde_entry and cie_entry structs.
      The pointer authentication instructions will behave as NOPs on
      architectures that don't support them, and so a check for the
      architecture being assembled for is not necessary since there will be no
      behavioural difference between augmentation strings with and without the
      'B' character on such architectures.
      2018-12-05  Sam Tebbs  <sam.tebbs@arm.com>
      	* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Add check for 'B'.
      	* dw2gencfi.c (struct cie_entry): Add tc_cie_entry_extras invocation.
      	(alloc_fde_entry): Add tc_fde_entry_init_extra invocation.
      	(output_cie): Add tc_output_cie_extra invocation.
      	(select_cie_for_fde): Add tc_cie_fde_equivalent_extra and
      	tc_cie_entry_init_extra invocation.
      	(frch_cfi_data, cfa_save_data): Move to dwgencfi.h.
      	* config/tc-aarch64.c (s_aarch64_cfi_b_key_frame): Declare.
      	(md_pseudo_table): Add "cfi_b_key_frame".
      	* config/tc-aarch64.h (tc_fde_entry_extras, tc_cie_entry_extras,
      	tc_fde_entry_init_extra, tc_output_cie_extra,
      	tc_cie_fde_equivalent_extra, tc_cie_entry_init_extra): Define.
      	* dw2gencfi.h (struct fde_entry): Add tc_fde_entry_extras invocation.
      	(pointer_auth_key): Define.
      	(frch_cfi_data, cfa_save_data): Move from dwgencfi.c.
      	* doc/c-aarch64.texi (.cfi_b_key_frame): Add documentation.
      	* testsuite/gas/aarch64/(pac_ab_key.d, pac_ab_key.s): New file.
  19. 04 Dec, 2018 1 commit
    • H.J. Lu's avatar
      x86: Don't remove empty GNU_PROPERTY_X86_UINT32_OR_AND properties · fde51dd1
      H.J. Lu authored
      properties, a bit in the output pr_data field is set if it is set in any
      relocatable input pr_data fields and this property is present in all
      relocatable input files.  A missing property implies that its bits have
      unknown values.  When all bits in the the output pr_data field are zero,
      this property should not be removed from output to indicate it has zero
      in all bits.
      	PR ld/23372
      	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Don't remove
      	empty properties for GNU_PROPERTY_X86_COMPAT_ISA_1_USED and
      	(_bfd_x86_elf_link_fixup_gnu_properties): Likewise.
      	PR ld/23372
      	* testsuite/ld-i386/pr23372a.d: Updated.
      	* testsuite/ld-i386/pr23372c.d: Likewise.
      	* testsuite/ld-x86-64/pr23372a-x32.d: Likewise.
      	* testsuite/ld-x86-64/pr23372a.d: Likewise.
      	* testsuite/ld-x86-64/pr23372c-x32.d: Likewise.
      	* testsuite/ld-x86-64/pr23372c.d: Likewise.
  20. 03 Dec, 2018 1 commit
    • Jim Wilson's avatar
      RISC-V: Accept version, supervisor ext and more than one NSE for -march. · 1080bf78
      Jim Wilson authored
      This patch moves all -march parsing logic into bfd, because we will use this
      code in ELF attributes.
      	* elfxx-riscv.h (RISCV_DONT_CARE_VERSION): New macro.
      	(struct riscv_subset_t): New structure.
      	(riscv_subset_t): New typedef.
      	(riscv_subset_list_t): New structure.
      	(riscv_release_subset_list): New prototype.
      	(riscv_add_subset): Likewise.
      	(riscv_lookup_subset): Likewise.
      	(riscv_lookup_subset_version): Likewise.
      	(riscv_release_subset_list): Likewise.
      	* elfxx-riscv.c: Include safe-ctype.h.
      	(riscv_parsing_subset_version): New function.
      	(riscv_supported_std_ext): Likewise.
      	(riscv_parse_std_ext): Likewise.
      	(riscv_parse_sv_or_non_std_ext): Likewise.
      	(riscv_parse_subset): Likewise.
      	(riscv_add_subset): Likewise.
      	(riscv_lookup_subset): Likewise.
      	(riscv_lookup_subset_version): Likewise.
      	(riscv_release_subset_list): Likewise.
      	* config/tc-riscv.c: Include elfxx-riscv.h.
      	(struct riscv_subset): Removed.
      	(riscv_subsets): Change type to riscv_subset_list_t.
      	(riscv_subset_supports): Removed argument: xlen_required and move
      	logic into libbfd.
      	(riscv_multi_subset_supports): Removed argument: xlen_required.
      	(riscv_clear_subsets): Removed.
      	(riscv_add_subset): Ditto.
      	(riscv_set_arch): Extract parsing logic into libbfd.
      	(riscv_ip): Update argument for riscv_multi_subset_supports and
      	riscv_subset_supports. Update riscv_subsets due to struct definition
      	(riscv_after_parse_args): Update riscv_subsets due to struct
      	definition changed, update and argument for riscv_subset_supports.
      	* testsuite/gas/riscv/empty.s: New.
      	* testsuite/gas/riscv/march-fail-rv32ef.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32ef.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32i.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32i.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32iam.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32iam.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32ic.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32ic.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32icx2p.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32icx2p.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32imc.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv32imc.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv64I.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv64I.l: Likewise.
      	* testsuite/gas/riscv/march-fail-rv64e.d: Likewise.
      	* testsuite/gas/riscv/march-fail-rv64e.l: Likewise.
      	* testsuite/gas/riscv/march-ok-g2.d: Likewise.
      	* testsuite/gas/riscv/march-ok-g2p0.d: Likewise.
      	* testsuite/gas/riscv/march-ok-i2p0.d: Likewise.
      	* testsuite/gas/riscv/march-ok-nse-with-version.: Likewise.d
      	* testsuite/gas/riscv/march-ok-s-with-version.d: Likewise.
      	* testsuite/gas/riscv/march-ok-s.d: Likewise.
      	* testsuite/gas/riscv/march-ok-sx.d: Likewise.
      	* testsuite/gas/riscv/march-ok-two-nse.d: Likewise.
      	* testsuite/gas/riscv/march-ok-g2_p1.d: Likewise.
      	* testsuite/gas/riscv/march-ok-i2p0m2_a2f2.d: Likewise.
      	* opcode/riscv.h (riscv_opcode): Change type of xlen_requirement to
      	* riscv-opc.c: Change the type of xlen, because type of
      	xlen_requirement changed.
  21. 01 Dec, 2018 1 commit
    • H.J. Lu's avatar
      x86: Delay setting the iplt section alignment · b44ee3a8
      H.J. Lu authored
      Delay setting its alignment until we know it is non-empty.  Otherwise an
      empty iplt section may change vma and lma of the following sections, which
      triggers moving dot of the following section backwards, resulting in a
      warning and section lma not being set properly.  It later leads to a
      "File truncated" error.
      	PR ld/23930
      	* elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Update
      	the iplt section alignment if it is non-empty.
      	(_bfd_x86_elf_link_setup_gnu_properties): Set plt.iplt_alignment
      	and delay setting the iplt section alignment.
      	* elfxx-x86.h (elf_x86_plt_layout): Add iplt_alignment.
      	PR ld/23930
      	* testsuite/ld-i386/i386.exp: Run pr23930.
      	* testsuite/ld-i386/pr23930.d: New file.
      	* testsuite/ld-x86-64/pr23930-32.t: Likewise.
      	* testsuite/ld-x86-64/pr23930-x32.d: Likewise.
      	* testsuite/ld-x86-64/pr23930.d: Likewise.
      	* testsuite/ld-x86-64/pr23930.t: Likewise.
      	* testsuite/ld-x86-64/pr23930a.s: Likewise.
      	* testsuite/ld-x86-64/pr23930b.s: Likewise.
      	* testsuite/ld-x86-64/x86-64.exp: Run pr23930 and pr23930-x32.
  22. 30 Nov, 2018 4 commits
  23. 29 Nov, 2018 1 commit
    • H.J. Lu's avatar
      elf: Don't merge .note.gnu.property section in IR · ffd9e4d0
      H.J. Lu authored
      .note.gnu.property section in IR inputs should be ignored.  Don't
      merge them.
      	PR ld/23929
      	* elf-properties.c (_bfd_elf_link_setup_gnu_properties): Don't
      	merge .note.gnu.property section in IR inputs.