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:
