+
+ * coff-i386.c (in_reloc_p): Add R_SECTION.
+ (howto_table): Add R_SECTION.
+ (coff_pe_i386_relocation_section): Add support for R_SECTION.
+ (coff_i386_reloc_type_lookup): Add support for
+ BFD_RELOC_16_SECCIDX.
+ * coff-x86_64.c (in_reloc_p): Add R_SECTION.
+ (howto_table): Add R_SECTION.
+ (coff_pe_amd64_relocation_section): Add support for R_SECTION.
+ (coff_amd64_reloc_type_lookup): Add support for
+ BFD_RELOC_16_SECCIDX.
+ * reloc.c: Add BFD_RELOC_16_SECIDX.
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate.
+
+
+ * elf-bfd.h (elfcore_write_x86_segbases): New.
+ * elf.c (elfcore_grok_freebsd_note): Add pseudosections for
+ NT_FREEBSD_X86_SEGBASES register notes.
+ (elfcore_write_x86_segbases): New.
+ (elfcore_write_register_note): Write NT_FREEBSD_X86_SEGBASES
+ register notes.
+
+
+ * elf.c (elfcore_grok_freebsd_note): Remove checks for namesz.
+
+
+ * dwarf2.c (_bfd_dwarf2_find_nearest_line): if a function name is
+ found, but no line number info, then return a result of 2.
+
+
+ PR 28978
+ * dwarf2.c (scan_unit_for_symbols): When performing second pass,
+ check to see if the function or variable being processed is the
+ same as the previous one.
+
+
+ PR 28924
+ * elf32-arm.c (THM_MAX_FWD_BRANCH_OFFSET): Fix definition.
+ (THM2_MAX_FWD_BRANCH_OFFSET): Likewise.
+
+
+ * Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES):
+ Add cpu-amdgcn.c.
+ (BFD64_BACKENDS): Add elf64-amdgcn.lo.
+ (BFD64_BACKENDS_CFILES): Add elf64-amdgcn.c.
+ * Makefile.in: Re-generate.
+ * cpu-amdgcn.c: New.
+ * elf64-amdgcn.c: New.
+ * archures.c (bfd_architecture): Add bfd_arch_amdgcn and related
+ mach defines.
+ (bfd_amdgcn_arch): New.
+ (bfd_archures_list): Add bfd_amdgcn_arch.
+ * bfd-in2.h: Re-generate.
+ * config.bfd: Handle amdgcn* target.
+ * configure.ac: Handle amdgcn_elf64_le_vec.
+ * configure: Re-generate.
+ * elf-bfd.h (elf_target_id): Add AMDGCN_ELF_DATA.
+ * targets.c (amdgcn_elf64_le_vec): New.
+ (_bfd_target_vector): Add amdgcn_elf64_le_vec.
+
+
+ PR 25713
+ * bfdio.c (_bfd_real_fopen): Fix typo.
+
+
+ PR 28848
+ * elf32-arm.c (elf32_arm_merge_eabi_attributes): If the first
+ input bfd has a Tag_ABI_HardFP_use set to 3 but does not also have
+ TAG_FP_arch set then reset the TAG_ABI_HardFP_use.
+
+
+ PR 25713
+ * bfdio.c (_bfd_real_fopen): Fix handling of paths longer than 260
+ characters on Windows hosts.
+
+
+ PR 28886
+ * config.bfd: Update error message for obsolete configurations.
+
+
+ * po/sr.po: Updated Serbian translation.
+
+
+ PR ld/28841
+ * bfd-in2.h (struct bfd_section): Add type.
+ (discarded_section): Add field.
+ * elf.c (elf_fake_sections): Handle bfd_section::type.
+ * section.c (BFD_FAKE_SECTION): Add field.
+ * mri.c (mri_draw_tree): Update function call.
+
+
+ * bfd.c (bfd_set_gp_value): Remove return with expression
+ in void function.
+
+
+ * config.bfd: Move pending obsolesence targets into the definitely
+ obsolete list.
+
+
+ PR 28834
+ * dwarf2.c (read_section): Change the heuristic that checks for
+ overlarge dwarf debug info sections.
+
+
+ PR 28735
+ * elf32-or1k.c (or1k_elf_got16_no_overflow_howto): Define.
+ (or1k_elf_relocate_section): Use new howto instead of trying to
+ mask out relocation bits.
+
+
+ * doc/local.mk (%D%/bfdver.texi): Add mkdir command.
+
+
+ * po/fr.po: Updated French translation.
+ * po/ro.po: Updated Romanian translation.
+ * po/uk.po: Updated Ukranian translation.
+
+
+ * version.m4: Change to 2.38.50.
+ * configure: Regenerate.
+ * po/bfd.pot: Regenerate.
+
+
+ * 2.38 release branch created.
+
+
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * po/bfd.pot: Regenerate.
+
+
+ PR 28687
+ * dwarf1.c (parse_die): Fix undefined behaviour in range tests.
+
+
+ PR 28452
+ * elf.c (assign_file_positions_for_non_load_sections): Replace
+ assertion with a warning message.
+
+
+ * linker.c (_bfd_generic_link_add_one_symbol): Test for a NULL
+ name before checking to see if the symbol is __gnu_lto_slim.
+ * archive.c (_bfd_compute_and_write_armap): Likewise.
+
+
+ * configure: Regenerate.
+
+
+ * archures.c (bfd_arch_list): Use 'char *' instead of 'char **'
+ when calculating space for a string list.
+
+
+ * arc-got.h (arc_static_sym_data): New structure.
+ (get_static_sym_data): New function.
+ (relocate_fix_got_relocs_for_got_info): Move the computation fo
+ symbol value and section to above introduced function, and use
+ this new function.
+
+
+ Revert: [AArch64] MTE corefile support
+
+
+ * elf.c (elfcore_make_memtag_note_section): New function.
+ (elfcore_grok_note): Handle NT_MEMTAG note types.
+
+
+ PR 28305
+ * elf32-xtensa.c (elf_xtensa_do_reloc): Add check for put of range
+ reloc.
+
+ PR 28303
+ * elfxx-riscv.c (riscv_elf_add_sub_reloc): Add check for out of
+ range relocs.
+
+
+ * po/sr.po: Updated Serbian translation.
+
+
+ * config.bfd: Move pending obsoletion targets to obsolete list.
+
+
+ * elf32-or1k.c (or1k_elf_relocate_section): Use a separate entry
+ in switch case R_OR1K_INSN_REL_26 where we need to check for
+ !SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL().
+
+
+ * libxcoff.h (struct xcoff_dwsect_name): Add DWARF name.
+ * coff-rs6000.c (xcoff_dwsect_names): Update.
+ * coffcode.h (sec_to_styp_flags): Likewise.
+ (coff_new_section_hook): Likewise.
+
+
+ * dwarf2.c (read_address): Remove accidental commit.
+ (read_ranges): Compare offset rather than pointers.
+
+
+ * po/pt.po: Updated Portuguese translation.
+
+
+ * elfcode.h (elf_swap_symbol_out): Revert accidental change that
+ removed an abort if the shndx pointer is NULL.
+
+
+ * sysdep.h [!ENABLE_NLS]: Prevent inclusion of <libintl.h> on
+ Solaris.
+
+
+ * configure.ac: Check for strnlen declaration.
+ * configure, config.in: Regenerate.
+
+
+ PR 28051
+ * coff-rs6000.c (xcoff_reloc_type_tls): Reformat error messages in
+ order to fix problems when translating.
+ * cofflink.c (_bfd_coff_write_global_sym): Likewise.
+ * elfnn-aarch64.c (_bfd_aarch64_erratum_843419_branch_to_stub):
+ Likewise.
+ * po/bfd.pot: Regenerate.
+
+
+ PR ld/28021
+ * elfnn-riscv.c (riscv_relax_delete_bytes): Check for any
+ versioning.
+
+
+ PR 28055
+ * elf64-bpf.c (bpf_elf_generic_reloc): Add missing ATTRIBUTE_UNUSED.
+
+
+ PR 28055
+ * elf64-bpf.c (bpf_elf_generic_reloc): Use correct bfd for bfd_put
+ and bfd_put_32 calls. Correct section limit checks.
+
+
+ * version.m4: Update version number.
+ * configure: Regenerate.
+ * po/opcodes.pot: Regenerate.
+
+
+ * 2.37 release branch created.
+
+
+ PR 28046
+ * dwarf2.c (read_ranges): Check that range_ptr does not exceed
+ range_end.
+
+
+ PR mips/28009
+ * bfd/elfxx-mips.c (_bfd_mips_elf_section_from_shdr,
+ _bfd_mips_elf_fake_sections): Mark LTO debug info as
+ SHT_MIPS_DWARF.
+
+
+ * config.bfd (obsolete configurations): Add netbsdpe.
+
+
+ * elfnn-riscv.c (riscv_pcrel_hi_reloc): Added field to store
+ the original relocation type, in case the type is converted to
+ R_RISCV_HI20.
+ (riscv_pcrel_lo_reloc): Removed unused name field.
+ (riscv_pcrel_relocs): Added comments.
+ (riscv_zero_pcrel_hi_reloc): Removed unused input_bfd.
+ (riscv_record_pcrel_hi_reloc): Updated.
+ (riscv_record_pcrel_lo_reloc): Likewise.
+ (riscv_resolve_pcrel_lo_relocs): Likewise. Check the original
+ type of auipc, to make sure the %pcrel_lo without any addends.
+ Otherwise, report dangerous relocation error.
+ (riscv_elf_relocate_section): Updated above functions are changed.
+ For R_RISCV_GOT_HI20, report dangerous relocation error when addend
+ isn't zero.
+
+
+ PR ld/27998
+ * elfxx-x86.c (elf_x86_allocate_dynrelocs): Count PLT for GOTOFF
+ relocation against IFUNC symbols.
+ (_bfd_x86_elf_adjust_dynamic_symbol): Likewise.
+
+
+ * elflink.c (bfd_elf_final_link): Correct DT_TEXTREL warning in
+ PDE.
+
+
+ * elf-properties.c (_bfd_elf_parse_gnu_properties): Handle
+ GNU_PROPERTY_UINT32_AND_LO, GNU_PROPERTY_UINT32_AND_HI,
+ GNU_PROPERTY_UINT32_OR_LO and GNU_PROPERTY_UINT32_OR_HI.
+ (elf_merge_gnu_properties): Likewise.
+
+
+ PR 27952
+ * elf-bfd.h (struct elf_obj_tdata): Add is_pie.
+ * elflink.c (elf_link_add_object_symbols): Set is_pie.
+
+
+ PR 27666
+ * config.bfd: Do not add the sparc_elf32_vec or sparc_elf64_vec
+ vectors to Sparc Solaris2 targets.
+
+
+ * elf.c (bfd_section_from_shdr): Set has_secondary_relocs flag.
+ (_bfd_elf_slurp_secondary_reloc_section): Use it for early-out.
+
+
+ * dwarf2.c (read_ranges, read_rnglists): Add u suffix to constant.
+
+
+ * elf-attrs.c (_bfd_elf_parse_attributes): Break out of loop if
+ subsection length is too small to cover tag and length field.
+
+
+ PR 27566
+ * elfnn-riscv.c (struct riscv_elf_link_hash_table): New integer pointer
+ to monitor the data segment phase.
+ (bfd_elfNN_riscv_set_data_segment_info): New function called by
+ after_allocation, to set the data_segment_phase from expld.dataseg.
+ (_bfd_riscv_relax_section): Don't relax when data_segment_phase is
+ exp_seg_relro_adjust (0x4).
+ * elfxx-riscv.h (bfd_elf32_riscv_set_data_segment_info): New extern.
+ (bfd_elf64_riscv_set_data_segment_info): Likewise
+
+
+ PR ld/27905
+ * elf32-i386.c: Don't include "libiberty.h".
+ (elf_howto_table): Revert commits a7664973b24 and 50c95a739c9.
+ (elf_i386_rtype_to_howto): Revert commit 50c95a739c9.
+ (elf_i386_info_to_howto_rel): Likewise.
+ (elf_i386_tls_transition): Likewise.
+ (elf_i386_relocate_section): Likewise.
+ * elf64-x86-64.c (x86_64_elf_howto_table): Revert commits
+ a7664973b24 and 50c95a739c9.
+ (elf_x86_64_rtype_to_howto): Revert commit 50c95a739c9.
+ * elfxx-x86.c (_bfd_x86_elf_parse_gnu_properties): Likewise.
+ * elfxx-x86.h (elf_x86_obj_tdata): Likewise.
+ (elf_x86_has_code16): Likewise.
+
+
+ PR ld/27905
+ * elf32-i386.c: Include "libiberty.h".
+ (elf_howto_table): Add 16-bit R_386_PC16 entry.
+ (elf_i386_rtype_to_howto): Add a BFD argument. Use 16-bit
+ R_386_PC16 if input has 16-bit mode instructions.
+ (elf_i386_info_to_howto_rel): Update elf_i386_rtype_to_howto
+ call.
+ (elf_i386_tls_transition): Likewise.
+ (elf_i386_relocate_section): Likewise.
+ * elf64-x86-64.c (x86_64_elf_howto_table): Add 16-bit
+ R_X86_64_PC16 entry.
+ (elf_x86_64_rtype_to_howto): Use 16-bit R_X86_64_PC16 if input
+ has 16-bit mode instructions.
+ * elfxx-x86.c (_bfd_x86_elf_parse_gnu_properties): Set
+ elf_x86_has_code16 if relocatable input is marked with
+ GNU_PROPERTY_X86_FEATURE_2_CODE16.
+ * elfxx-x86.h (elf_x86_obj_tdata): Add has_code16.
+ (elf_x86_has_code16): New.
+
+
+ * elfxx-riscv.h (check_unknown_prefixed_ext): New bool.
+ * elfxx-riscv.c (riscv_parse_prefixed_ext): Do not check the
+ prefixed extension name if check_unknown_prefixed_ext is false.
+ * elfnn-riscv.c (riscv_merge_arch_attr_info): Set
+ check_unknown_prefixed_ext to false for linker.
+
+
+ * elf32-arn.c (struct elf_arm_obj_tdata): Add num_entries field.
+ (elf32_arm_num_entries): New macro.
+ (elf32_arm_allocate_local_sym_info): Initialise the new field.
+ Allocate arrays individually so that buffer overruns can be
+ detected by memory checkers.
+ (elf32_arm_create_local_iplt): Check num_entries.
+ (elf32_arm_get_plt_info): Likewise.
+ (elf32_arm_final_link_relocate): Likewise.
+ (elf32_arm_check_relocs): Likewise.
+ (elf32_arm_size_dynamic_sections): Likewise.
+ (elf32_arm_output_arch_local_syms): Likewise.
+
+
+ * elf32-arm.c: Fix formatting.
+
+
+ * elf-attrs.c (elf_attr_strdup): New function.
+ (_bfd_elf_attr_strdup): Use it here.
+ (elf_add_obj_attr_string): New function, extracted from..
+ (bfd_elf_add_obj_attr_string): ..here.
+ (elf_add_obj_attr_int_string): New function, extracted from..
+ (bfd_elf_add_obj_attr_int_string): ..here.
+ (_bfd_elf_parse_attributes): Don't allocate an extra byte for a
+ string terminator. Instead ensure parsing doesn't go past
+ end of sub-section. Use size_t variables for lengths.
+
+
+ * libbfd.c (_bfd_safe_read_leb128): Remove length_return parameter.
+ Replace data pointer with pointer to pointer. Increment pointer
+ over bytes read.
+ * libbfd-in.h (_bfd_safe_read_leb128): Update prototype.
+ * elf-attrs.c (_bfd_elf_parse_attributes): Adjust to suit. Be
+ careful not to increment data pointer past end. Remove now
+ redundant pr17512 check.
+ * wasm-module.c (READ_LEB128): Adjust to suit changes to
+ _bfd_safe_read_leb128.
+ * dwarf2.c (read_n_bytes): New inline function, old one renamed to..
+ (read_blk): ..this. Allocate and return block. Increment bfd_byte**
+ arg.
+ (read_3_bytes): New function.
+ (read_1_byte, read_1_signed_byte, read_2_bytes, read_4_bytes),
+ (read_8_bytes, read_string, read_indirect_string),
+ (read_indirect_line_string, read_alt_indirect_string): Take a
+ byte_byte** arg which is incremented over bytes read. Remove any
+ bytes_read return. Rewrite limit checks to compare lengths
+ rather than pointers.
+ (read_abbrevs, read_attribute_value, read_formatted_entries),
+ (decode_line_info, find_abstract_instance, read_ranges),
+ (read_rnglists, scan_unit_for_symbols, parse_comp_unit),
+ (stash_comp_unit): Adjust to suit. Rewrite limit checks to
+ compare lengths rather than pointers.
+ * libbfd.h: Regenerate.
+
+
+ * elf.c (elfcore_make_memtag_note_section): New function.
+ (elfcore_grok_note): Handle NT_MEMTAG note types.
+
+
+ * section.c (bfd_get_section_by_name): Return NULL if name is
+ NULL.
+ (bfd_get_section_by_name_if): Likewise.
+ * dwarf2.c (read_section): Remove unneeded NULL check.
+ (find_debug_info): Likewise.
+
+
+ * plugin.c (bfd_plugin_open_input): Inform the user if the limit
+ on the number of open files is reached. If possible, try to
+ increase this limit before failing.
+
+
+ * elfnn-riscv.c (riscv_resolve_pcrel_lo_relocs): Check the values
+ of %pcrel_hi, before and after adding the addend. Make sure the
+ value won't be changed, otherwise, report dangerous error.
+
+
+ * elfxx-riscv.c (check_implicit_always): The check_func, always add
+ the implicit subset without checking.
+ (check_implicit_for_i): The check_func for i, only add zicsr and
+ zifencei when the version of i less than 2.1.
+ (struct riscv_implicit_subset): Record the subsets and their
+ corresponding implicit subsets.
+ (riscv_implicit_subsets): Table records all implicit informations.
+ (riscv_parse_add_implicit_subsets): Updated and add implicit subsets
+ according to riscv_implicit_subsets. Remove the redundant codes.
+
+
+ PR 27858
+ * elf32-sh.c (sh_elf_info_to_howto): Correct check for last valid
+ reloc howto.
+
+
+ * elf-bfd.h (elfcore_write_aarch_mte): New prototype.
+ * elf.c (elfcore_grok_aarch_mte, elfcore_write_aarch_mte): New
+ functions.
+ (elfcore_grok_note): Handle notes of type NT_ARM_TAGGED_ADDR_CTRL.
+ (elfcore_write_register_note): Handle MTE notes.
+
+
+ PR 27844
+ * pdp11.c (aout_get_external_symbols): Clear first four bytes of
+ strings array, not just the first byte.
+ * aoutx.h (aout_get_external_symbols): Likewise.
+
+
+ PR binutils/27839
+ * simple.c (bfd_simple_get_relocated_section_contents): Remove
+ strayed fprintf.
+
+
+ PR 27839
+ * simple.c (simple_dummy_add_to_set): New function.
+ (simple_dummy_constructor): New function.
+ (simple_dummy_multiple_common): New function.
+ (bfd_simple_get_relocated_section_contents): Zero out the
+ callbacks structure, and then set the add_to_set, constructor and
+ multiple_common fields.
+
+
+ * elf32-pru.c (elf_backend_can_gc_sections): Define as 1.
+
+
+ * doc/Makefile.am (html-local, bfd/index.html): New targets.
+ * doc/Makefile.in: Regenerate.
+
+
+ * doc/Makefile.am (AM_MAKEINFOFLAGS): Define.
+ * doc/Makefile.in: Regenerate.
+
+
+ * coff-rs6000.c (xcoff_dwsect_names): Add new DWARF
+ sections.
+ * coffgen.c (coff_pointerize_aux): Handle C_DWARF.
+ (coff_print_symbol): Likewise.
+ * libxcoff.h (XCOFF_DWSECT_NBR_NAMES): Update.
+
+
+ * elf64-x86-64.c (x86_64_elf_howto_table): Set src_mask fields
+ to zero.
+
+
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate.
+
+
+ PR 27746
+ * elf32-or1k.c (PLT_ENTRY_SIZE_LARGE, PLT_MAX_INSN_COUNT,
+ OR1K_ADD, OR1K_ORI): New macros to help with plt creation.
+ (elf_or1k_link_hash_table): New field plt_count.
+ (elf_or1k_link_hash_entry): New field plt_index.
+ (elf_or1k_plt_entry_size): New function.
+ (or1k_write_plt_entry): Update to support variable size PLTs.
+ (or1k_elf_finish_dynamic_sections): Use new or1k_write_plt_entry
+ API.
+ (or1k_elf_finish_dynamic_symbol): Update to write large PLTs
+ when needed.
+ (allocate_dynrelocs): Use elf_or1k_plt_entry_size to account for
+ PLT size.
+
+
+ PR 21464
+ * elf32-or1k.c (or1k_elf_relocate_section): Relax R_OR1K_GOT16
+ overflow check if we have R_OR1K_GOT_AHI16 followed by
+ R_OR1K_GOT16.
+
+
+ PR 21464
+ * bfd-in2.h: Add BFD_RELOC_OR1K_GOT_AHI16 relocation.
+ * elf32-or1k.c (or1k_elf_howto_table, or1k_reloc_map): Likewise.
+ (or1k_final_link_relocate, or1k_elf_relocate_section,
+ or1k_elf_check_relocs): Likewise.
+ * libbfd.h (bfd_reloc_code_real_names): Likewise.
+ * reloc.c: Likewise.
+
+
+ PR 27624
+ * elf32-or1k.c (or1k_elf_adjust_dynamic_symbol): Change
+ condition used to cleanup plt entries to cleanup forced local
+ entries.
+
+
+ PR ld/27825
+ * elflink.c (elf_link_output_symstrtab): Always append ".COUNT"
+ to local symbols.
+
+
+ * vms-lib.c (vms_traverse_index): Account for vms_kbn size when
+ sanity checking keylen.
+
+
+ * libbfd.c (bfd_malloc): Provide some documenation. Treat a size
+ of 0 as 1.
+ (bfd_realloc): Likewise.
+ (bfd_zmalloc): Likewise.
+ (bfd_realloc_or_free): Provide some documentation. Treat a size
+ of 0 as a request to free.
+ * libbfd-in.h (bfd_realloc): Remove prototype.
+ (bfd_realloc_or_free): Remove prototype.
+ (bfd_zmalloc): Remove prototype.
+ * libbfd.h: Regenerate.
+
+
+ * elf32-i386.c (elf_howto_table): Switch all 32-bit relocs to
+ complain_overflow_dont.
+ * elf64-x86-64.c (x86_64_elf_howto_table): Switch all 64-bit
+ relocs to complain_overflow_dont.
+
+
+ * elf32-ppc.c (allocate_dynrelocs): Keep dyn_relocs for undefweak
+ symbols when -z dynamic-undefined-weak or when there are no
+ dynamic relocs in read-only sections and -z nodynamic-undefined-weak
+ is not given.
+ * elf64-ppc.c (allocate_dynrelocs): Likewise.
+
+
+ * elf32-ppc.c (allocate_dynrelocs): Call ensure_undef_dynamic for
+ weak undefined symols that only appear on PLT relocs.
+ * elf64-ppc.c (allocate_dynrelocs): Likewise.
+
+
+ PR 27755
+ * elf32-ppc.c (ppc_elf_inline_plt): Do increment rel in loop.
+
+
+ * elf32-csky.c (is_mapping_symbol_name): New function.
+ (csky_elf_is_target_special_symbol): Likewise.
+ (csky_elf_maybe_function_sym): Likewise.
+ (bfd_elf32_bfd_is_target_special_symbol): Define.
+ (elf_backend_maybe_function_sym): Define.
+
+
+ PR 27801
+ * mach-o.c (bfd_mach_o_core_fetch_environment): Use bfd_get_32 to
+ read 32-bit value.
+
+
+ PR 27799
+ * elf32-xtensa.c (elf_xtensa_grok_prstatus): Check for core notes
+ that are too small.
+
+
+ PR 27797
+ * libbfd.c (bfd_realloc_or_free): Do not free a pointer than has
+ been realloc'ed to size 0.
+
PR 27795
For older changes see ChangeLog-2020
\f
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2021-2022 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright