2020-08-19  Alan Modra  <amodra@gmail.com>

	PR 26349
	* readelf.c (dump_relocations): Use BFD_VMA_FMT to print offset
	and info fields.
	(dump_section_as_strings): Don't use %tx to display offset.

2020-08-14  Alan Modra  <amodra@gmail.com>

	PR 26388
	* dwarf.c (free_debug_memory): Free alloc_num_debug_info_entries
	of debug_information.  Correct test of max_loc_offsets and
	max_range_lists.
	* rddbg.c (read_debugging_info): Free dhandle on error.

2020-08-14  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/mangled.s: Use dc.a rather than dc.d.

2020-08-13  Alan Modra  <amodra@gmail.com>

	PR 26348
	* objcopy.c (copy_object): Report file name with endian error.
	Error and return on abfd->read_only.

2020-08-12  Tom Tromey  <tromey@adacore.com>

	* dwarf-mode.el (Version): Now 1.6.
	(dwarf-die-button-action): Tighten DIE reference regexp.
	(dwarf-font-lock-keywords): Update name regexp.

2020-08-12  Nick Clifton  <nickc@redhat.com>

	PR binutils/26331
	* readelf.c (do_demangle): New option flag.
	(print_symbol): If do_demangle is enabled, demangle the symbol.
	(enum long_option_values): New enum to hold long option values.
	(options): Add demangle, no-demangle, recursion-limit and
	no-recursion-limit options.  Alpha sort the table.
	(usage): Describe the new options.
	(parse_args): Handle the new options.
	* NEWS: Mention the new feature.
	* doc/binutils.texi: Document the new feature.
	* testsuite/binutils-all/readelf.exp: Test the new feature.
	* testsuite/binutils-all/mangled.s: New file - assembler source.
	* testsuite/binutils-all/readelf.demangled: New file - expected
	output from readelf.

2020-08-12  Nick Clifton  <nickc@redhat.com>

	* po/sr.po: Updated Serbian translation.

2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/26302
	* nm.c (with_symbol_versions): Removed.
	(long_option_values): Add OPTION_WITH_SYMBOL_VERSIONS.
	(long_options): Update --with-symbol-versions entry.
	(print_symbol): Remove the with_symbol_versions check.
	(main): Add OPTION_WITH_SYMBOL_VERSIONS for backward
	compatibility.
	* doc/binutils.texi: Remove --with-symbol-versions.

2020-08-05  Alan Modra  <amodra@gmail.com>

	PR 26337
	* objdump.c (load_specific_debug_section): Revert last change.

2020-08-05  Alan Modra  <amodra@gmail.com>

	PR 26337
	* objdump.c (load_specific_debug_section): Don't malloc space for
	section contents, use bfd_malloc_and_get_section.

2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS.
	* Makefile.in, doc/Makefile.in: Regenerate.
	* configure: Regenerate.

2020-07-30  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/binutils-all/i386/compressed-1a.d: Pass --gdwarf-3
	to assembler.
	* testsuite/binutils-all/i386/compressed-1b.d: Likewise.
	* testsuite/binutils-all/i386/compressed-1c.d: Likewise.
	* testsuite/binutils-all/x86-64/compressed-1a.d: Likewise.
	* testsuite/binutils-all/x86-64/compressed-1b.d: Likewise.
	* testsuite/binutils-all/x86-64/compressed-1c.d: Likewise.

2020-07-29  Maciej W. Rozycki  <macro@linux-mips.org>

	* testsuite/binutils-all/mips/global-local-symtab-sort-o32.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-sort-o32t.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-sort-n32.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-sort-n32t.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-sort-n64.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-sort-n64t.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-final-o32.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-final-n32.d:
	New test.
	* testsuite/binutils-all/mips/global-local-symtab-final-n64.d:
	New test.
	* testsuite/binutils-all/mips/mips.exp: Run the new tests.

2020-07-29  Maciej W. Rozycki  <macro@linux-mips.org>

	* testsuite/binutils-all/mips/global-local-symtab-o32.d: New
	test.
	* testsuite/binutils-all/mips/global-local-symtab-o32t.d: New
	test.
	* testsuite/binutils-all/mips/global-local-symtab-n32.d: New
	test.
	* testsuite/binutils-all/mips/global-local-symtab-n32t.d: New
	test.
	* testsuite/binutils-all/mips/global-local-symtab-n64.d: New
	test.
	* testsuite/binutils-all/mips/mips.exp: Run the new tests.

2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/26301
	* configure: Regenerated.

2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/26301
	* configure: Regenerated.

2020-07-27  Alan Modra  <amodra@gmail.com>

	* objdump.c (dump_section): Don't return without calling
	process_section_p.

2020-07-27  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/binutils.texi: Replace preceeded with preceded.

2020-07-26  Maciej W. Rozycki  <macro@linux-mips.org>

	* testsuite/binutils-all/mips/mips.exp (run_dump_test_abi)
	(run_dump_test_o32, run_dump_test_n32, run_dump_test_n64): New
	procedures.
	(has_newabi): Remove variable.
	(has_abi, abi_asflags, abi_ldflags): New associative array
	variables.
	(irixemul): New variable.
	Replace `run_dump_test' calls where applicable throughout with
	`run_dump_test_o32', `run_dump_test_n32' and `run_dump_test_n64'
	as appropriate.  Use `noarch' for tests that require their own
	architecture setting.
	* testsuite/binutils-all/mips/mips-ase-1.d: Remove GAS flags.
	* testsuite/binutils-all/mips/mips-ase-2.d: Likewise.
	* testsuite/binutils-all/mips/mips-ase-3.d: Likewise.
	* testsuite/binutils-all/mips/mips-note-2-n32.d: Likewise.
	* testsuite/binutils-all/mips/mips-note-2-n64.d: Likewise.
	* testsuite/binutils-all/mips/mips-note-2.d: Likewise.
	* testsuite/binutils-all/mips/mips-note-2r-n32.d: Likewise.
	* testsuite/binutils-all/mips/mips-note-2r-n64.d: Likewise.
	* testsuite/binutils-all/mips/mips-note-2r.d: Likewise.
	* testsuite/binutils-all/mips/mips-reginfo-n32.d: Likewise.
	* testsuite/binutils-all/mips/mips-reginfo.d: Likewise.
	* testsuite/binutils-all/mips/mips16-extend-noinsn.d: Likewise.
	* testsuite/binutils-all/mips/mips16-pcrel.d: Likewise.
	* testsuite/binutils-all/mips/mips16-alias.d: Remove `-32' from
	GAS flags.
	* testsuite/binutils-all/mips/mips16-extend-insn.d: Likewise.
	* testsuite/binutils-all/mips/mips16-noalias.d: Likewise.
	* testsuite/binutils-all/mips/mips16-undecoded.d: Likewise.
	* testsuite/binutils-all/mips/mips16e2-extend-insn.d: Likewise.
	* testsuite/binutils-all/mips/mips16e2-undecoded.d: Likewise.
	* testsuite/binutils-all/mips/mixed-micromips.d: Likewise.
	* testsuite/binutils-all/mips/mixed-mips16.d: Likewise.

2020-07-24  Aaron Merey  <amerey@redhat.com>

	* Makefile.am: Replace LIBDEBUGINFOD with DEBUGINFOD_LIBS.
	* Makefile.in: Rebuild.
	* configure: Rebuild.
	* doc/Makefile.in: Rebuild.

2020-07-24  Nick Clifton  <nickc@redhat.com>

	* README-how-to-make-a-release: Various small updates whilst
	creating the 2.35 release.

2020-07-22  Nick Alcock  <nick.alcock@oracle.com>

	* testsuite/lib/binutils-common.exp (run_dump_test): Add 'cc'
	option.

2020-07-22  Nick Alcock  <nick.alcock@oracle.com>

	* objdump.c (dump_ctf_archive_member): Remove linefeeds.
	(dump_ctf): Likewise.

2020-07-22  Nick Alcock  <nick.alcock@oracle.com>

	* objdump.c (ctf_archive_member): Print CTF errors and warnings.
	* readelf.c (dump_ctf_archive_member): Likewise.

2020-07-22  Nick Clifton  <nickc@redhat.com>

	* readelf.c (parse_args): Silence potential warnings about a
	memory resource leak when allocating space for ctf option values.
	(dump_section_as_ctf): Fix typo checking dump_ctf_strtab_name
	variable.

2020-07-21  Nick Clifton  <nickc@redhat.com>

	* po/sv.po: Updated Swedish translation.

2020-07-14  Claudiu Zissulescu  <claziss@gmail.com>

	* testsuite/binutils-all/arc/double_regs.s: New test.
	* testsuite/binutils-all/arc/objdump.exp: Add the above test.

2020-07-13  Nick Clifton  <nickc@redhat.com>

	* po/fr.po: Updated French translation.

2020-07-13  Alan Modra  <amodra@gmail.com>

	* testsuite/lib/binutils-common.exp (is_pecoff_format): Accept
	optional machine-os arg.

2020-07-11  H.J. Lu  <hongjiu.lu@intel.com>

	* readelf.c (decode_x86_feature_2): Handle
	GNU_PROPERTY_X86_FEATURE_2_TMM.

2020-07-10  Tom de Vries  <tdevries@suse.de>

	* dwarf.c (display_debug_lines_decoded): Don't emit meaningless
	information in the end_sequence row.
	* testsuite/binutils-all/dw5.W: Update.
	* testsuite/binutils-all/objdump.WL: Update.

2020-07-09  Alan Modra  <amodra@gmail.com>

	* dlltool.c: Remove powerpc PE support and comments.
	* configure.ac: Remove powerpc PE dlltool config.
	* configure: Regenerate.

2020-07-09  Nick Clifton  <nickc@redhat.com>

	* rclex.c: Add OWNERDRAW keyword.
	* rcparse.y: Add OWNERDRAW token.
	(menuitem_flag) Add BITMAP and OWNERDRAW entries.
	* resrc.c (write_rc_menuitems): Add support for OWNERDRAW and
	BITMAP flags.
	* windres.c (extended_menuitems): Likewise.
	* testsuite/binutils-all/windres/menuitem_flags.rc: New test.

2020-07-09  Alan Modra  <amodra@gmail.com>

	* readelf (slurp_hppa_unwind_table): Set table_len before use
	in relocation sanity checks.

2020-07-07  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/ar.exp: Use is_xcoff_format.
	* testsuite/binutils-all/nm.exp: Likewise.
	* testsuite/binutils-all/copy-2.d: Run only for elf and pe targets.
	* testsuite/binutils-all/copy-3.d: Run only for elf targets.
	* testsuite/binutils-all/set-section-alignment.d: Likewise.
	* testsuite/binutils-all/copy-4.d: Don't run for xcoff.

2020-07-07  Alan Modra  <amodra@gmail.com>

	* testsuite/lib/binutils-common.exp (is_xcoff_format): New.
	* testsuite/binutils-all/objcopy.exp (pr25662): Exclude xcoff.

2020-07-06  Nick Clifton  <nickc@redhat.com>

	* po/bg.po: Updated Bulgarian translation.
	* po/pt.po: Updated Portuguese translation.
	* po/uk.po: Updated Ukranian translation.

2020-07-06  Alan Modra  <amodra@gmail.com>

	* readelf.c (print_dynamic_symbol): Don't sprintf to buffer to
	find string length.

2020-07-04  Nick Clifton  <nickc@redhat.com>

	* configure: Regenerate.
	* po/binutils.pot: Regenerate.

2020-07-04  Nick Clifton  <nickc@redhat.com>

	Binutils 2.35 branch created.

2020-07-02  Nick Clifton  <nickc@redhat.com>

	PR 26028
	* readelf.c (print_symbol): Handle truncation of symbol names.
	(options): Add -T/--silent-truncation option.
	(parse_args): Handle the option.
	(print_dynamic_symbol): Correct calculation of width available to
	display symbol name.
	* doc/binutils.texi: Document the -T option to readelf.
	* NEWS: Mention the new feature.

2020-06-30  H.J. Lu  <hongjiu.lu@intel.com>

	* NEWS: Mention x86 NaCl target support removal.
	* dwarf.c (init_dwarf_regnames_by_bfd_arch_and_mach): Remove
	x86 NaCl target support.
	* testsuite/binutils-all/elfedit-1.d: Likewise.
	* testsuite/binutils-all/i386/i386.exp: Likewise.
	* testsuite/binutils-all/x86-64/objects.exp: Likewise.
	* testsuite/binutils-all/x86-64/pr23494a-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494a.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494b-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494b.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494c-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494c.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494d-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494d.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494e-x32.d: Likewise.
	* testsuite/binutils-all/x86-64/pr23494e.d: Likewise.
	* testsuite/binutils-all/x86-64/x86-64.exp: Likewise.

2020-06-30  Nick Clifton  <nickc@redhat.com>

	* dwarf.c (read_and_display_attr_value): Support
	DW_FORM_GNU_strp_alt when used with DW_AT_dwo_name and
	DW_AT_comp_dir.

2020-06-30  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/readelf.exp (readelf_dump_test): Remove
	xfail for nds32.

2020-06-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* dwarf.c (display_debug_str_offsets): Rename local variable
	index to idx.  Move to top of function.

2020-06-29  Alan Modra  <amodra@gmail.com>

	* dwarf.c: Use C style comments.
	* resrc.c: Likewise.

2020-06-27  Alan Modra  <amodra@gmail.com>

	* elfcomm.c (setup_nested_archive): Set nested_arch->file to NULL
	after freeing.
	(release_archive): Set fields of arch to NULL after freeing.

2020-06-26  Nick Alcock  <nick.alcock@oracle.com>

	* readelf.c (dump_section_as_ctf): Support .ctf archives using
	ctf_arc_bufopen.  Automatically load the .ctf member of such
	archives as the parent of all other members, unless specifically
	overridden via --ctf-parent.  Split out dumping code into...
	(dump_ctf_archive_member): ... here, as in objdump, and call
	it once per archive member.
	(dump_ctf_indent_lines): Code style fix.

2020-06-26  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac [--enable-libctf]: New, default yes.
	Set ENABLE_LIBCTF accordingly.
	* Makefile.am [!ENABLE_LIBCTF]: Empty LIBCTF and LIBCTF_NOBFD.
	* configure: Regenerate.
	* config.in: Regenerate.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* objdump.c (usage): Conditionalize portions on ENABLE_LIBCTF.
	(option_values): Likewise.
	(long_options): Likewise.
	(main): Likewise.
	(dump_ctf_indent_lines): Conditionalize out when !ENABLE_LIBCTF.
	(make_ctfsect): Likewise.
	(dump_ctf_archive_member): Likewise.
	(dump_ctf) [ENABLE_LIBCTF]: Likewise.
	(dump_ctf) [!ENABLE_LIBCTF]: New empty stub.
	* readelf.c (options): Conditionalize portions on ENABLE_LIBCTF.
	(usage): Likewise.
	(process_section_contents): Likewise.
	(shdr_to_ctf_sect): Conditionalize out when !ENABLE_LIBCTF.
	(dump_ctf_indent_lines): Likewise.
	(dump_section_as_ctf) [ENABLE_LIBCTF]: Likewise.

2020-06-26  Jan Beulich  <jbeulich@suse.com>

	* doc/binutils.texi: Adjust description of x86's -Msuffix. Drop
	redundant text from x86 specific part of -M section.

2020-06-26  Pat Bernardi  <bernardi@adacore.com>

	* readelf.c (display_m68k_gnu_attribute): New function.
	(process_arch_specific): Call display_m68k_gnu_attribute for EM_68K.

2020-06-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/26160
	* testsuite/binutils-all/pr26160.dwp.bz2: New file.
	* testsuite/binutils-all/pr26160.r: Likewise.
	* testsuite/binutils-all/readelf.exp: Run PR binutils/26160 test.

2020-06-23  Nick Clifton  <nickc@redhat.com>

	PR 26160
	* dwarf.c (fetch_indexed_string): Detect and handle old style
	.debug_str_offset tables.
	(display_debug_str_offsets): Likewise.  Also add support for
	.debug_str_offsets.dwo sections.

2020-06-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/26112
	* testsuite/binutils-all/pr26112.o.bz2: New file.
	* testsuite/binutils-all/pr26112.r: Likewise.
	* testsuite/binutils-all/readelf.exp: Run PR binutils/26112 test.

2020-06-23  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/objdump.exp (bintest.a): Correct
	remote_file delete command.

2020-06-22  Nick Clifton  <nickc@redhat.com>

	PR 26112
	* dwarf.c (display_debug_str_offsets): Add code to display the
	contents of the .debug_str_offsets section.
	(display_debug_macro): Add support for DW_MACRO_define_strx and
	DW_MACRO_undef_strx.

2020-06-22  Saagar Jha  <saagar@saagarjha.com>

	* od-macho.c: Dump linkedit data for new load commands.

2020-06-19  Alan Modra  <amodra@gmail.com>

	* testsuite/config/default.exp (ld_elf_shared_opt): Don't set.
	* testsuite/lib/binutils-common.exp (check_relro_support): New proc.
	(run_dump_test): Use check_relro_support to decide whether to pass
	extra ld option "-z norelro".

2020-06-11  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_mips_specific): Don't alloc memory for
	Elf_Internal_Options.

2020-06-11  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_mips_specific): Assert size of internal
	types match size of external types, and simplify allocation of
	internal buffer.  Catch possible integer overflow when sanity
	checking option size.  Don't assume options are a regular array.
	Sanity check reginfo option against option size.  Use PRI macros
	when printing.

2020-06-10  Ralf Habacker  <ralf.habacker@freenet.de>

	PR 26082
	* mclex.c (yylex): Reject lines that reach end-of-file without a
	terminating newline character.

2020-06-08  Nick Clifton  <nickc@redhat.com>

	PR 26093
	* doc/binutils.texi (strings): Fix typo.

2020-06-08  Nick Clifton  <nickc@redhat.com>

	PR 26086
	* dwarf.c (process_debug_info): Check that there is space in the
	debug_information array before filling in an entry.

2020-06-06  Alan Modra  <amodra@gmail.com>

	* doc/binutils.texi (PowerPC -M option): Mention power10 and pwr10.

2020-06-05  Joel Anderson  <joelanderson333@gmail.com>

	PR 26082
	* mclex.c (yylex): Add test for an empty input stream.

2020-06-04  Stephen Casner  <casner@acm.org>

	* testsuite/binutils-all/pr25662-pdp11.s: Alternate source file
	for test using section pseudo-ops compatible with pdp11.
	* testsuite/binutils-all/objcopy.exp: Select alternate source.

2020-06-04  Jose E. Marchesi  <jose.marchesi@oracle.com>

	* objdump.c (disassemble_data): Set disasm_info.endian_code to
	disasm_info.endian after the latter is initialized to the
	endianness reported by BFD.

2020-06-04  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/i386/i386.exp: Remove global directive
	outside proc body.
	* testsuite/binutils-all/x86-64/objects.exp: Likewise.
	* testsuite/binutils-all/x86-64/x86-64.exp: Likewise.

2020-06-03  Joel Anderson  <joelanderson333@gmail.com>

	* windmc.h (struct mc_node): Add id_typecast field.
	* mcparse.y (message): Initialise the id_typecast field.
	* windmc.c (write_dbg): Use the id_typecast field as a parameter
	when calling write_dbg_define.
	(write_header): Likewise.

2020-06-03  Alan Modra  <amodra@gmail.com>

	PR 26069
	* objcopy.c (copy_relocations_in_section): Free relpp on error.
	Don't accidentally free isection->orelocation.

2020-06-02  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/ar.exp (obj): Set up object file name
	extension.  Use throughout.  Don't completely exclude non-ELF
	alpha targets.  Run long_filenames test for tic30.  Exclude thin
	archive tests for aix, ecoff and vms.
	* estsuite/binutils-all/objdump.exp (obj): Set up object file name
	extension.  Use throughout.  Don't exclude non-ELF alpha targets
	from "bintest.a".

2020-05-28  Max Filippov  <jcmvbkbc@gmail.com>

	* MAINTAINERS (Xtensa): Add myself as maintainer.

2020-05-23  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/ar.exp (many_files): New test.

2020-05-21  Alan Modra  <amodra@gmail.com>

	* addr2line.c: Replace "if (x) free (x)" with "free (x)" throughout.
	* dlltool.c: Likewise.
	* elfcomm.c: Likewise.
	* rddbg.c: Likewise.
	* readelf.c: Likewise.
	* stabs.c: Likewise.
	* windmc.c: Likewise.
	* windres.c: Likewise.
	* wrstabs.c: Likewise.

2020-05-21  Alan Modra  <amodra@gmail.com>

	* readelf.c (get_num_dynamic_syms): Bounds check mipsxlat array
	access.

2020-05-20  Nelson Chu  <nelson.chu@sifive.com>

	* dwarf.c: Updated since DECLARE_CSR is changed.

2020-05-19  H.J. Lu  <hjl.tools@gmail.com>

	PR binutils/25809
	* readelf.c (process_program_headers): Warn if the PT_DYNAMIC
	segment doesn't match the .dynamic section and checks are
	enabled.
	(struct filedata): Add dynamic_symtab_section and
	dynamic_strtab_section fields.
	(process_section_headers): Set dynamic_symtab_section to the
	.dynsym section.  Set dynamic_strtab_section to the .dynstr
	section.
	(process_dynamic_section): Warn if the .dynsym section doesn't
	match DT_SYMTAB and DT_SYMENT or the .dynstr section doesn't
	DT_STRTAB and DT_STRSZ.  But only if checks are enabled.

2020-05-19  Alan Modra  <amodra@gmail.com>

	* ar.c (map_over_members, get_pos_bfd, delete_members, move_members),
	(replace_members): Use bfd_get_filename rather than accessing
	bfd->filename directly.
	* arsup.c (map_over_list, ar_delete, ar_replace, ar_extract): Likewise.
	* binemul.c (do_ar_emul_append): Likewise.
	* coffgrok.c (coff_grok): Likewise.

2020-05-18  Stafford Horne  <shorne@gmail.com>

	* MAINTAINERS (OR1K): Add myself as maintainer.

2020-05-07  Andrew Burgess  <andrew.burgess@embecosm.com>

	* doc/binutils.texi: Mention 'entry address' in the set-start and
	adjust-start options descriptions.

2020-05-05  Nick Clifton  <nickc@redhat.com>

	* dwarf.c (do_checks): New global variable.
	(display_formatted_table): Warn about an unexpected number of
	columns in the table, if checks are enabled.  Do not complain
	about the lack of data following the number of entries in the
	table if the table is empty.
	(display_debug_lines_decoded): Only warn about an unexpected
	number of columns in a table if checks are enabled.
	* dwarf.h (do_checks): Add a prototype.
	* elfcomm.c (error): Remove weak attribute.
	(warn): Likewise.
	* readelf.c (do_checks): Delete.
	(warn): Delete.
	(process_section_headers): Only warn about empty sections if
	checks are enabled.

2020-05-04  Fangrui Song   <maskray@google.com>

	* objcopy.c (copy_object): Allow empty section.
	* testsuite/binutils-all/update-section.exp: Add test.

2020-05-04  Nick Clifton  <nickc@redhat.com>

	PR 25917
	* dwarf.c (display_debug_lines_decoded): Warn if encountering a
	supicious number of entries for DWARF-5 format directory and file
	name tables.  Do not display file name table header if the table
	is empty.  Do not allocate space for empty tables.

2020-05-04  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_nds32_specific): Check size of .nds32_e_flags
	section.  Don't assume endian of host matches nds32 target.  Free
	buffer.

2020-05-01  Alan Modra  <amodra@gmail.com>
	    Haim Shimonovich  <Haim.Shimonovich@ceva-dsp.com>

	* objdump.c (disassemble_bytes): Don't scan for zeros when
	disassembling zeros.  Translate "resuming at file offset" message.
	Formatting.  Replace some signed variables with unsigned.

2020-04-30  Alex Coplan  <alex.coplan@arm.com>

	* testsuite/binutils-all/aarch64/in-order-all.d: Update to use new
	disassembly.
	* testsuite/binutils-all/aarch64/out-of-order-all.d: Likewise.

2020-04-30  Nick Clifton  <nickc@redhat.com>

	* testsuite/lib/binutils-common.exp (check_pie_support): New
	proc.

2020-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>

	* dwarf.c (display_debug_ranges): Ignore duplicate entries in
	range_entries for the same offset.

2020-04-29  Nick Clifton  <nickc@redhat.com>

	* readelf.c (warn): New function - like elfcomm.c version but only
	produces output if warnings are enabled.
	(struct options): Add --lint and --enable-checks.
	(usage): Add entry for --lint.
	(parse_args): Handle -L.  If checks are enabled but no dumps have
	been selected then enable all dumps.
	(process_section_headers): Replace long if-then-else sequence with
	a switch.  Add warning messages for empty SHT_REL, SHT_RELA and
	SHT_PROGBITS sections.
	(process_file): Do not complain if the file is an archive and lint
	mode has been enabled.
	* elfcomm.c (error): Make the function weak.
	(warn): Likewise.
	* NEWS: Mention the new feature.
	* doc/binutils.texi: Document the new feature.
	* dwarf.h (report_leb_status): Add file name and line number
	parameters.  Include them in the diagnostic output.
	(READ_ULEB): Pass file and line number to report_leb_status.
	(READ_SLEB): Likewise.
	* dwarf.c (read_and_print_leb128): Pass file and line number to
	report_leb_status.
	* testsuite/binutils-all/readelf.exp: Add test of new feature.
	* testsuite/binutils-all/zero-sec.s: New test source file.
	* testsuite/binutils-all/zero-sec.r: Expected output from new
	test.

2020-04-29  Nick Clifton  <nickc@redhat.com>

	* po/sr.po: Updated Serbian translation.

2020-04-26  Alan Modra  <amodra@gmail.com>

	* readelf.c (get_num_dynamic_syms): Check DT_MIPS_XHASH was
	read before dereferencing, and gracefully return.  Remove
	gnu_hash_error variable.  Free gnu hash arrays if number of
	syms found is zero.

2020-04-24  Alan Modra  <amodra@gmail.com>

	* readelf.c (get_num_dynamic_syms): Check for nbuckets and nchains
	non-zero.
	(process_dynamic_section): Call get_num_dynamic_syms once rather
	than in segment loop.  Break out of segment loop on a successful
	load of dynamic symbols.  Formatting.
	(process_object): Return error status from process_dynamic_section.

2020-04-23  Anton Kolesov  <anton.kolesov@synopsys.com>

	* elf-bfd.h (elfcore_write_arc_v2): Add prototype.
	* elf.c (elfcore_grok_arc_v2): New function.
	(elfcore_grok_note): Call the new function to handle the corresponding
	note.
	(elfcore_write_arc_v2): New function.
	(elfcore_write_register_note): Call the new function to handle the
	corresponding pseudo-sections.

2020-04-22  Max Filippov  <jcmvbkbc@gmail.com>

	PR ld/25861
	* readelf.c (is_none_reloc): Recognize
	BFD_RELOC_XTENSA_PDIFF{8,16,32} and
	BFD_RELOC_XTENSA_NDIFF{8,16,32}.

2020-04-22  Nick Clifton  <nickc@redhat.com>

	* MAINTAINERS: Remove Chris Faylor as the ix86 PE maintainer.

2020-04-22  Alan Modra  <amodra@gmail.com>

	* readelf.c (archive_file_offset, archive_file_size, dynamic_addr),
	(dynamic_size, dynamic_nent, dynamic_strings, dynamic_strings_length),
	(num_dynamic_syms, nbuckets, nchains, buckets, chains),
	(ngnubuckets, gnubuckets, gnuchains, mipsxlat, ngnuchains),
	(gnusymidx, dynamic_symbols, dynamic_syminfo, dynamic_syminfo_offset),
	(dynamic_syminfo_nent, program_interpreter, dynamic_info),
	(dynamic_info_DT_GNU_HASH, dynamic_info_DT_MIPS_XHASH, version_info),
	(dynamic_section, symtab_shndx_list, group_count, section_groups),
	(section_headers_groups): Move to struct filedata.  Update use
	throughout file.

2020-04-22  Alan Modra  <amodra@gmail.com>

	* readelf.c (struct dump_data): New, used..
	(cmdline): ..here, and..
	(struct filedata): ..here.  Adjust all uses.
	(request_dump_bynumber, request_dump, parse_args): Pass in a
	struct dump_data* rather than Filedata*.  Adjust callers.
	(main): Don't set cmdline.file_name.

2020-04-20  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_symbol_table): Clear ngnuchains, ngnubuckets
	and nbuckets.

2020-04-20  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_section_headers): Free dynamic symbols etc.
	earlier.

2020-04-20  Alan Modra  <amodra@gmail.com>

	* readelf.c (get_num_dynamic_syms): Formatting.  Don't return
	on error without freeing.
	(process_dynamic_section): Don't recreate dynamic symbols from
	dynamic tag info when the dynamic symbols have already been
	read via section headers.

2020-04-17  Fredrik Strupe  <fredrik@strupe.net>

	* testsuite/binutils-all/arm/vdup-cond.d: New test for testing that
	conditional VDUP instructions are disassembled correctly.
	* testsuite/binutils-all/arm/vdup-cond.s: New file used by
	vdup-cond.d.
	* testsuite/binutils-all/arm/vdup-thumb.d: New test for testing
	that VDUP instructions (which are conditional in A32) can be
	disassembled in thumb mode.
	* testsuite/binutils-all/arm/vdup-cond.s: New file used by
	vdup-thumb.d.

2020-04-17  Alan Modra  <amodra@gmail.com>

	PR 25840
	* debug.c (debug_class_type_samep): Don't segfault on NULL type.

2020-04-16  Alan Modra  <amodra@gmail.com>

	* doc/binutils.texi: Mention --no-show-raw-insn in objdump
	--no-addresses description.

2020-04-15  Alan Modra  <amodra@gmail.com>

	* objdump.c (no_addresses): New static var.
	(usage): Print help for --no-addresses.
	(long_options): Add --no-addresses entry.
	(objdump_print_addr_with_sym, objdump_print_addr): Omit symbol address.
	(disassemble_bytes): Don't print current line address, or reloc
	address.
	* doc/binutils.texi: Document objdump --no-addresses.

2020-04-15  Alan Modra  <amodra@gmail.com>

	PR 25822
	* readelf.c (get_num_dynamic_syms): Don't set num_of_syms when
	reading buckets or chains fails.

2020-04-15  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_symbol_table): Zero gnubuckets, gnuchains
	etc. after freeing.

2020-04-15  Alan Modra  <amodra@gmail.com>

	* readelf.c (get_group_flags): Translate text.
	(get_file_type, get_symbol_binding, get_symbol_type),
	(get_ppc64_symbol_other, get_symbol_other): Increase size of buffer.

2020-04-15  Alan Modra  <amodra@gmail.com>

	PR 25821
	* readelf.c (get_num_dynamic_syms): Typo fix.

2020-04-14  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_mips_specific): Free eopt and iopt.  Avoid
	possibility of overflow when checking number of conflicts.

2020-04-14  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/25707
	* readelf.c (nbuckets): New.
	(nchains): Likewise.
	(buckets): Likewise.
	(chains): Likewise.
	(ngnubuckets): Likewise.
	(gnubuckets): Likewise.
	(gnuchains): Likewise.
	(mipsxlat): Likewise.
	(ngnuchains): Likewise.
	(gnusymidx): Likewise.
	(VALID_SYMBOL_NAME): Likewise.
	(VALID_DYNAMIC_NAME): Use it.
	(get_dynamic_data): Moved before process_dynamic_section.
	(get_num_dynamic_syms): New function.
	(process_dynamic_section): Use DT_SYMTAB, DT_SYMENT, DT_HASH,
	DT_GNU_HASH and DT_MIPS_XHASH to reconstruct dynamic symbol
	table.  Use DT_STRTAB and DT_STRSZ to reconstruct dynamic string
	table.
	(get_symbol_index_type): Don't print "bad section index" when
	there is no section header.
	(print_dynamic_symbol): Rewrite.
	(process_symbol_table): Call print_dynamic_symbol to dump dynamic
	symbol table.

2020-04-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Don't
	enable on *-*-solaris*.

2020-03-30  Nick Clifton  <nickc@redhat.com>

	PR binutils/25662
	* objcopy.c (copy_object): When copying PE format files set the
	timestamp field in the pe_data structure if the preserve_dates
	flag is set.
	* testsuite/binutils-all/objcopy.exp (objcopy_test) Use
	--preserve-dates in place of the -p option, in order to make its
	effect more obvious.

2020-03-28  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/objcopy.exp (objcopy_test): Only
	clear_xfail hppa*-*-*elf*.  Revert mips xfails.

2020-03-28  Alan Modra  <amodra@gmail.com>

	* testsuite/binutils-all/objcopy.exp (objcopy_test): Move xfails
	from here to calls.  Remove "m8*-*-*" entry.  Don't xfail tic54x
	but do xfail spu, mipstx39 and mips-sgi-irix for the executable
	test.  Pass "-p" to objcopy for the executable test.

2020-03-27  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	PR binutils/25662
	* testsuite/binutils-all/objcopy.exp (objcopy_test): Add argument to
	specify whether an object file or executable should be built and tested.
	Change test names to report whether an object file or executable is
	being tested.
	* testsuite/binutils-all/pr25662.ld: New test.
	* testsuite/binutils-all/pr25662.s: New test.

2020-03-27  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_archive): Don't double free qualified_name.
	Don't break out of loop with "negative" archive_file_size, just
	set file offset to max.

2020-03-25  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_archive): Prevent endless loop.

2020-03-24  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/25708
	* nm.c (print_symname): Replace _bfd_elf_get_symbol_version_name
	with bfd_get_symbol_version_string.
	(print_symbo): Pass TRUE to bfd_get_symbol_version_string.
	* objdump.c (objdump_print_symname): Likewise.

2020-03-24  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/25708
	* nm.c (SYM_NAME): Removed.
	(print_symname): Add a pointer to struct extended_symbol_info
	argument.  Call _bfd_elf_get_symbol_version_name to get symbol
	version.
	(print_symdef_entry): Pass NULL to print_symname.
	(print_symbol_info_bsd): Update call to print_symname.
	(print_symbol_info_sysv): Likewise.
	(print_symbol_info_posix): Likewise.

2020-03-24  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_mips_specific): Free iconf on error path.

2020-03-23  Nick Clifton  <nickc@redhat.com>

	PR 25714
	* wrstabs.c (stab_pop_type): Replace assertion with error return.
	* write_stabs_in_sections_debugging_info: Likewise.
	* stab_enum_type: Likewise.
	* stab_modify_type: Likewise.
	* stab_struct_field: Likewise.
	* stab_end_struct_type: Likewise.
	* stab_start_class_type: Likewise.
	* stab_class_static_member: Likewise.
	* stab_class_baseclass: Likewise.
	* stab_class_start_method: Likewise.
	* stab_class_method_var: Likewise.
	* stab_class_end_method: Likewise.
	* stab_end_class_type: Likewise.
	* stab_typedef_type: Likewise.
	* stab_start_function: Likewise.
	* stab_end_block: Likewise.
	* stab_lineno: Likewise.

2020-03-20  Nick Clifton  <nickc@redhat.com>

	* readelf.c (get_compression_header): Add ATTRIBUTE_WARN_UNUSED_RESULT.
	(process_section_headers): Check the return value from
	get_compression_header.
	(dump_section_as_strings): Likewise.
	(dump_section_as_bytes): Likewise.
	(load_specific_debug_section): Likewise.

2020-03-20  H.J. Lu  <hongjiu.lu@intel.com>

	* ar.c (main): Update bfd_plugin_set_program_name call.
	* nm.c (main): Likewise.

2020-03-19  Nick Clifton  <nickc@redhat.com>

	PR 25676
	* testsuite/binutils-all/dw4.s: New test source file.
	* testsuite/binutils-all/nm.exp: Run the new test.

2020-03-19  H.J. Lu  <hongjiu.lu@intel.com>

	* readelf.c (process_symbol_table): Use unsigned long for si.

2020-03-19  Alan Modra  <amodra@gmail.com>

	* elfcomm.c: Don't include bfd.h or bucomm.h.
	(program_name): Declare.
	(process_archive_index_and_symbols): Replace bfd_boolean with int,
	and substitute FALSE and TRUE.
	(setup_archive, setup_nested_archive): Likewise.
	* elfcomm.h: Likewise.

2020-03-19  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_archive): Always return via path freeing
	memory.  Formatting.

2020-03-19  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_netbsd_elf_note): Validate descsz before
	accessing descdata.  Formatting.

2020-03-19  Alan Modra  <amodra@gmail.com>

	* elfcomm.c (setup_archive): Make file_size an off_t.  Comment.
	* elfcomm.h (setup_archive): Update prototype.

2020-03-16  Alan Modra  <amodra@gmail.com>

	* readelf.c (get_symbols): New function.
	(process_relocs, ia64_process_unwind, hppa_process_unwind),
	(arm_process_unwind, get_symbol_for_build_attribute): Use it.

2020-03-16  Alan Modra  <amodra@gmail.com>

	* unwind-ia64.c (unw_decode_uleb128): Prevent overlarge shifts.
	Detect shift overflows and check that terminating byte is found.
	Print an error on a bad uleb128.

2020-03-14  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_file): Clean ba_cache.

2020-03-14  Alan Modra  <amodra@gmail.com>

	* elfcomm.h (setup_archive): Update prototype.
	* elfcomm.c (setup_archive): Add file_size parameter and sanity
	check longnames_size.
	(setup_nested_archive): Get file size and pass to setup_archive.
	* elfedit.c (process_archive): Likewise.
	* readelf.c (process_archive): Pass filedata->file_size to
	setup_archive.

2020-03-14  Alan Modra  <amodra@gmail.com>

	* readelf.c (dump_section_as_strings): Free memory on error exit.
	(dump_section_as_bytes, process_notes_at): Likewise.
	(get_build_id): Free enote.

2020-03-13  Kamil Rytarowski  <n54@gmx.com>

	* readelf.c (get_netbsd_elfcore_note_type): Add support for
	NT_NETBSDCORE_LWPSTATUS notes.

2020-03-13  Alan Modra  <amodra@gmail.com>

	* elfcomm.c (get_archive_member_name): Always return malloc'd
	string or NULL.
	* elfedit.c (process_archive): Tidy memory on all return paths.
	* readelf.c (process_archive): Likewise.
	(process_symbol_table): Likewise.
	(ba_cache): New, replacing ..
	(get_symbol_for_build_attribute): ..static vars here.  Free
	strtab and symtab before loading new ones.  Reject symtab without
	valid strtab in loop, breaking out of loop on valid symtab.
	(process_file): Free ba_cache symtab and strtab here, resetting
	ba_cache.

2020-03-12  Alan Modra  <amodra@gmail.com>

	* readelf.c (process_section_headers): Don't just set
	filedata->section_headers NULL, free it first.  Similarly for
	dynamic_symbols, dynamic_strings, dynamic_syminfo and
	symtab_shndx_list.  Zero associated counts too.
	(process_object): Free symtab_shndx_list.
	(process_file): Free various allocated filedata tables.

2020-03-11  Nick Clifton  <nickc@redhat.com>

	PR 25611
	PR 25614
	* dwarf.h (DWARF2_Internal_LineInfo): Add li_address_size and
	li_segment_size fields.
	* dwarf.c (read_debug_line_header): Record the address size and
	segment selector size values (if present) in the lineinfo
	structure.
	(display_formatted_table): Warn if the format count is empty but
	the table itself is not empty.
	Display the format count and entry count at the start of the table
	dump.
	(display_debug_lines_raw): Display the address size and segement
	selector size fields, if present.
	* testsuite/binutils-all/dw5.W: Update expected output.

2020-03-11  Alan Modra  <amodra@gmail.com>

	PR 25651
	* objcopy.c (copy_object): Test "gaps" not gap_fill_set or
	pad_to_set on second block of code dealing with padding.
	Replace "c" with "num_sec" and don't recalculate number of
	sections on second block.  Size arrays using sizeof (element)
	rather than sizeof (element type).

2020-03-10  Alan Modra  <amodra@gmail.com>

	* objdump.c (disassemble_section): Don't call qsort unless
	sym count is at least two.
	(disassemble_data): Don't call memcpy with NULL src.

2020-03-09  Alan Modra  <amodra@gmail.com>

	PR 25645
	* readelf.c (dump_ia64_vms_dynamic_fixups): Pass size and nmemb
	to get_data rather than multiplying.
	(dump_ia64_vms_dynamic_relocs): Likewise.
	(process_version_sections): Correct order of size and nmemb args
	in get_data call.
	(process_mips_specific): Likewise.

2020-03-08  H.J. Lu  <hongjiu.lu@intel.com>

	* readelf.c (get_dynamic_data): Replace "memory chekers" with
	"memory checkers" in comments.

2020-03-06  Simon Marchi  <simon.marchi@efficios.com>

	PR 25491
	* doc/Makefile.am: Rename MOSTLYCLEANFILES to MAINTAINERCLEANFILES.
	* doc/Makefile.in: Re-generate.

2020-03-06  Nick Clifton  <nickc@redhat.com>

	* objcopy.c (check_new_section_flags): New function.  Reject the
	SEC_COFF_SHARED flag if the target is not a COFF binary.
	(copy_object): Call check_new_section_flags.
	(setup_section): Likewise.
	* doc/binutils.texi (objcopy): Add a note that the 'share' section
	flag cannot be applied to ELF binaries.

2020-03-06  Alan Modra  <amodra@gmail.com>

	PR 25637
	* objcopy.c (filter_symbols): Correct rem_leading_char logic.

2020-03-05  Alan Modra  <amodra@gmail.com>

	PR 25629
	* objcopy.c (filter_symbols): Don't segfault on NULL
	prefix_symbols_string.

2020-03-04  Christian Eggers  <ceggers@gmx.de>

	* objcopy.c (copy_object): Convert from bytes to octets for
	--gap-fill and --pad-to.

2020-03-03  Nick Clifton  <nickc@redhat.com>

	PR 25625
	* prdbg.c (pr_tag_type): Remove call to abort.

2020-03-02  Aaron Merey  <amerey@redhat.com>

	* binutils/testsuite/binutils-all/debuginfod.exp: Improve port
	selection.

2020-03-02  Nick Clifton  <nickc@redhat.com>

	PR 25543
	* readelf.c (dump_section_as_strings): Display new-line characters
	as \n and then insert a line break.
	* testsuite/binutils-all/pr25543.s: New test.
	* testsuite/binutils-all/pr25543.d: Test driver.
	* testsuite/binutils-all/readelf.exp: Run the new test.

2020-02-27  Nick Clifton  <nickc@redhat.com>

	PR 25526
	* readelf.c (process_ia64_vms_dynamic_relocs): Check to see if
	get_data is unable to load the string table.

2020-02-26  Alan Modra  <amodra@gmail.com>

	* elfedit.c: Indent labels correctly.
	* readelf.c: Likewise.
	* resres.c: Likewise.

2020-02-25  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/25584
	* ar.c (main): Pass 0 to bfd_plugin_set_program_name.
	* nm.c (main): Pass 1 to bfd_plugin_set_program_name.

2020-02-24  Nick Clifton  <nickc@redhat.com>

	PR 25499
	* doc/binutils.texi (objdump): Fix typo in description of
	objdump's -g option.

2020-02-20  Nelson Chu  <nelson.chu@sifive.com>

	* dwarf.c (regname_internal_riscv): Updated since the DECLARE_CSR
	is changed.

2020-02-19  Jordan Rupprecht  <rupprecht@google.com>

	* objdump.c (show_line): call bfd_demangle when using do_demangle.

2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>

	* configure: Regenerate.

2020-02-10  Fangrui Song   <maskray@google.com>

	* objcopy.c (parse_flags): Handle "exclude".
	* doc/binutils.texi: Document the support.

2020-02-10  Aaron Merey  <amerey@redhat.com>

	* binutils/testsuite/binutils-all/debuginfod.exp:
	Replace set ::env with setenv.
	Start server before setting environment variable.
	Specify tmpdir as the location of the server's
	database.
	Check additional server metrics at start-up.

2020-02-07  Nick Clifton  <nickc@redhat.com>

	* README-how-to-make-a-release: Add note about updating the
	GAS/NEWS URL in the next release.

2020-02-07  Sergey Belyashov  <sergey.belyashov@gmail.com>

	PR 25469
	* readelf.c (get_machine_flags): Add support for Z80N machine
	number.

2020-02-07  Nick Clifton  <nickc@redhat.com>

	* dwarf.c (display_debug_lines_decoded): Force a NUL termination
	of the truncated file name.

2020-02-06  Andrew Burgess  <andrew.burgess@embecosm.com>

	* objdump.c (print_jump_visualisation): New function.
	(disassemble_bytes): Call new function.

2020-02-06  Alan Modra  <amodra@gmail.com>

	* testsuite/lib/binutils-common.exp (match_target): Accept '!' before
	TCL procedure.
	(supports_gnu_osabi): New procedure.
	(is_generic): New, from ld-lib.exp.
	(supports_gnu_unique): Use the above.

2020-02-04  Alan Modra  <amodra@gmail.com>

	* Makefile.am (CFILES): Add od-elf32_avr.c.
	* Makefile.in: Regenerate.
	* po/POTFILES.in: Regenerate.

2020-02-03  Andreas Schwab  <schwab@linux-m68k.org>

	* readelf.c (dump_relocations, dump_relocations)
	(decode_arm_unwind_bytecode, process_dynamic_section)
	(get_symbol_visibility, get_alpha_symbol_other): Add newline to
	error message.

2020-02-03  Sergei Trofimovich  <siarheit@google.com>

	* coffdump.c (program_name): Drop redundant definition.
	* srconv.c (program_name): Likewise
	* sysdump.c (program_name): Likewise

2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR gas/25380
	* objdump.c (sym_ok): Return FALSE if 2 sections are in the
	same file with different section pointers.

2020-02-01  Nick Clifton  <nickc@redhat.com>

	* README-how-to-make-a-release: Update with more details on the
	release making process.

2020-01-31  Nick Clifton  <nickc@redhat.com>

	* po/sv.po: Updated Swedish translation.

2020-01-28  Nick Clifton  <nickc@redhat.com>

	* readelf.c (get_build_id): Simplify warning message about corrupt
	notes encountered whilst scanning for the build-id.

2020-01-27  Roland McGrath  <mcgrathr@google.com>

	* objcopy.c (compare_gnu_build_notes): Fix comparison results
	for overlapping ranges so that (A == B) == (B == A) holds.

2020-01-27  Alan Modra  <amodra@gmail.com>

	* testsuite/lib/binutils-common.exp (big_or_little_endian): Replace
	case statement with switch statement.

2020-01-24  Nick Clifton  <nickc@redhat.com>

	* readelf.c (get_build_id): Fix warning messages about corrupt
	notes.

2020-01-23  Nick Clifton  <nickc@redhat.com>

	* po/fr.po: Updated French translation.

2020-01-22  Yuri Chornoivan  <yurchor@mageia.org>

	PR 25417
	* readelf.c (get_alpha_symbol_other): Fix error message typo.

2020-01-20  Nick Clifton  <nickc@redhat.com>

	* po/pt.po: Updated Portuguese translation.
	* po/uk.po: Updated Ukranian translation.

2020-01-18  Nick Clifton  <nickc@redhat.com>

	* README-how-to-make-a-release: Update notes on how to cut a
	branch for a release.

2020-01-18  Nick Clifton  <nickc@redhat.com>

	* configure: Regenerate.
	* po/binutils.pot: Regenerate.

2020-01-18  Nick Clifton  <nickc@redhat.com>

	Binutils 2.34 branch created.

2020-01-17  Thomas Troeger  <tstroege@gmx.de>

	* objdump.c (jump_info_visualize_address): Discard jumps that are
	no longer needed.
	(disassemble_bytes): Only compute the maximum level if jumps were
	detected.

2020-01-13  Nick Clifton  <nickc@redhat.com>

	* objdump.c (disassemble_bytes): Remove C99-ism.
	* testsuite/binutils-all/debuginfod.exp: New tests.

2020-01-13  Thomas Troeger  <tstroege@gmx.de>

	* objdump.c (visualize_jumps, color_output, extended_color_output)
	(detected_jumps): New variables.
	(usage): Add the new jump visualization options.
	(option_values): Add new option value.
	(long_options): Add the new option.
	(jump_info_new, jump_info_free): New functions.
	(jump_info_min_address, jump_info_max_address): Likewise.
	(jump_info_end_address, jump_info_is_start_address): Likewise.
	(jump_info_is_end_address, jump_info_size): Likewise.
	(jump_info_unlink, jump_info_insert): Likewise.
	(jump_info_add_front, jump_info_move_linked): Likewise.
	(jump_info_intersect, jump_info_merge): Likewise.
	(jump_info_sort, jump_info_visualize_address): Likewise.
	(disassemble_jumps): New function - used to locate jumps.
	(disassemble_bytes): Add ascii art generation.
	(disassemble_section): Add scan to locate jumps.
	(main): Parse the new visualization option.
	* doc/binutils.texi: Document the new feature.
	* NEWS: Mention the new feature.

2020-01-13  Alan Modra  <amodra@gmail.com>

	PR 25360
	PR 25361
	* dwarf.c (display_debug_frames): Move fde_fc earlier.  Free
	fde_fc col_type and col_offset.
	* readelf.c (apply_relocations): Move symsec check earlier.
	(free_debug_section): Free reloc_info.
	(process_notes_at): Free pnotes on error path.
	(process_object): Free dump_sects here..
	(process_archive): ..not here.

2020-01-13  Alan Modra  <amodra@gmail.com>

	PR 25362
	* nm.c (display_rel_file): Free dyn_syms.

2020-01-09  Nick Clifton  <nickc@redhat.com>

	PR 25220
	* objcopy.c (empty_name): New variable.
	(need_sym_before): Prevent an attempt to free a static variable.
	(filter_symbols): Avoid strcmp test by checking for pointer
	equality.

2020-01-09  Nick Clifton  <nickc@redhat.com>

	* po/zh_TW.po: Updated Traditional Chinese translation.

2020-01-09  Aaron Merey  <amerey@redhat.com>

        * Makefile.am (readelf_LDADD, objdump_LDADD): Add libdebuginfod.
        * Makefile.in: Regenerate.
        * NEWS: Update.
        * config.in: Regenerate.
        * configure: Regenerate.
        * configure.ac: Call AC_DEBUGINFOD.
        * doc/Makefile.in: Regenerate.
        * doc/binutils.texi: Add section on using binutils
        with debuginfod.
        * dwarf.c (debuginfod_fetch_separate_debug_info): New function.
        Query debuginfod servers for the target debug file.
        (load_separate_debug_info): Call
        debuginfod_fetch_separate_debug_info if configured with
        debuginfod.
        (load_separate_debug_files): Add file argument to
        load_separate_debug_info calls.
        * dwarf.h (get_build_id): Add declaration.
        * objdump.c (get_build_id): New function. Get build-id of file.
        * readelf.c (get_build_id): Likewise.
        * testsuite/binutils-all/debuginfod.exp: New tests.
        * testsuite/binutils-all/linkdebug.s: Add .note.gnu.build-id
        section.

2020-01-02  Sergey Belyashov  <sergey.belyashov@gmail.com>

	* readelf.c: Add support for new Z*) relocations and machine
	types.

2020-01-01  Alan Modra  <amodra@gmail.com>

	Update year range in copyright notice of all files.

For older changes see ChangeLog-2019

Copyright (C) 2020 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
