Commit Graph

101007 Commits

Author SHA1 Message Date
H.J. Lu
7e6e972f74 bfd: Display symbol version for nm -D
Extend _bfd_elf_get_symbol_version_string for nm -D to display symbol
version.  _bfd_elf_get_symbol_version_name is added to avoid updating
all XXX_get_symbol_version_string functions.

bfd/

	PR binutils/25708
	* elf-bfd.h (_bfd_elf_get_symbol_version_name): New.
	* elf.c (_bfd_elf_get_symbol_version_name): New function.  Based
	on the previous _bfd_elf_get_symbol_version_string.
	(_bfd_elf_get_symbol_version_string): Use it.

binutils/

	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.

ld/

	PR binutils/25708
	* testsuite/ld-elf/pr25708.d: New file.
2020-03-24 04:23:11 -07:00
Tom de Vries
a64fafb545 [gdb] Print user for maint info psymtabs
The type struct partial_symtab contains two fields (disregarding field next)
that express relations with other symtabs: user and dependencies.

When using "maint print psymbols", we see both the dependencies and the user
fields:
...
Partial symtab for source file  (object 0x35ef270)
  ...
  Depends on 0 other partial symtabs.
  Shared partial symtab with user 0x35d5f40
...

But with "maint info psymtabs", we only see dependencies:
...
  { psymtab  ((struct partial_symtab *) 0x35ef270)
    ...
    dependencies (none)
  }
...

Add printing of the user field for "maint info psymtabs", such that we have:
...
   { psymtab  ((struct partial_symtab *) 0x35ef270)
     ...
+    user hello.c ((struct partial_symtab *) 0x35d5f40)
     dependencies (none)
   }
...

Tested on x86_64-linux.

gdb/ChangeLog:

2020-03-24  Tom de Vries  <tdevries@suse.de>

	* psymtab.c (maintenance_info_psymtabs): Print user field.
2020-03-24 10:00:51 +01:00
Alan Modra
65109548f8 Overlarge allocation in _bfd_generic_read_ar_hdr_mag
* archive.c (_bfd_generic_read_ar_hdr_mag): Sanity check extended
	name size.  Use bfd_malloc rather than bfd_zmalloc, clearing just
	struct areltdata.
2020-03-24 19:00:35 +10:30
Alan Modra
5a814d6d96 readelf memory leak in process_mips_specific
* readelf.c (process_mips_specific): Free iconf on error path.
2020-03-24 13:19:14 +10:30
GDB Administrator
1ce0847daa Automatic date update in version.in 2020-03-24 00:00:08 +00:00
Nick Clifton
0636b24556 Avoid trigger an assertion failure in the STABS parser by replacing the abort with an error return.
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-23 16:19:07 +00:00
Sebastian Huber
fdde2fb60c Mention .tdata in comment in _bfd_elf_tls_setup()
This helps to find code areas which deal with the .tdata section.

bfd/

    	* elflink.c (_bfd_elf_tls_setup): Mention .tdata in comment.
2020-03-23 17:04:28 +01:00
Alan Modra
cf28cfef60 ECOFF archive uninitialised read
* ecoff.c (_bfd_ecoff_slurp_armap): Sanity check parsed_size and
	symbol count.  Allocate an extra byte to ensure name strings
	are terminated.  Sanity check name offsets.  Release memory on
	error return.
2020-03-23 23:26:12 +10:30
Alan Modra
5e737279c6 i386msdos uninitialised read
Also reinstate ld i386aout for i386-msdos target, which doesn't build
otherwise.

bfd/
	* i386msdos.c (msdos_object_p): Don't access e_lfanew when that
	field hasn't been read.  Remove unnecessary casts.
ld/
	* Makefile.am (ALL_EMULATION_SOURCES): Reinstate ei386aout.c.
	Include ei386aout dep file.
	* Makefile.in: Regenerate.
	* po/BLD-POTFILES.in: Regenerate.
2020-03-23 23:26:12 +10:30
Andrew Burgess
5935fd1530 gdb/testsuite: Remove hard coded addresses from expected results
In commit:

  commit 6b8c53f2f1
  Date:   Sat Feb 8 21:26:31 2020 +0000

      gdb/testsuite/fortran: Add mixed language stack test

The test incorrectly included two hard coded addresses in the expected
output, this commit replaces them with the $hex pattern.

gdb/testsuite/ChangeLog:

	* gdb.fortran/mixed-lang-stack.exp: Replace two hard coded address
	with $hex.
2020-03-23 12:01:08 +00:00
GDB Administrator
2957d8d054 Automatic date update in version.in 2020-03-23 00:00:08 +00:00
Alan Modra
c15a8f173e XCOFF64 uninitialised read
Like git commit 67338173a4.

	* coff64-rs6000.c (xcoff64_slurp_armap): Ensure size is large
	enough to read number of symbols.
2020-03-22 23:22:13 +10:30
Alan Modra
57cb32b3c3 H8300 use of uninitialised value
* h8300-dis.c (bfd_h8_disassemble): Limit data[] access to that
	successflly read from section.
2020-03-22 23:22:13 +10:30
Alan Modra
beea5cc1bc ARC: Use of uninitialised value
* arc-dis.c (find_format): Use ISO C string concatenation rather
	than line continuation within a string.  Don't access needs_limm
	before testing opcode != NULL.
2020-03-22 23:22:13 +10:30
Alan Modra
03704c7704 NS32K arg_bufs uninitialised
git commit d1e304bc27 was aimed at stopping uninitialised memory
access to the index_offset array.  Unfortunately that patch resulted
in a different array being uninitialised for all instructions with
more than two arguments.

	* ns32k-dis.c (print_insn_arg): Update comment.
	(print_insn_ns32k): Reduce size of index_offset array, and
	initialize, passing -1 to print_insn_arg for args that are not
	an index.  Don't exit arg loop early.  Abort on bad arg number.
2020-03-22 23:22:13 +10:30
Alan Modra
d1023b5d1e s12z disassembler tidy
Don't ignore buffer memory read failure, or malloc failure.  Lots of
functions get a return status to pass these failures up the chain in
this patch.

opcodes/
	* s12z-dis.c (abstract_read_memory): Don't print error on EOI.
	* s12z-opc.c: Formatting.
	(operands_f): Return an int.
	(opr_n_bytes_p1): Return -1 on reaching buffer memory limit.
	(opr_n_bytes2, bfextins_n_bytes, mul_n_bytes, bm_n_bytes),
	(shift_n_bytes, mov_imm_opr_n_bytes, loop_prim_n_bytes),
	(exg_sex_discrim): Likewise.
	(create_immediate_operand, create_bitfield_operand),
	(create_register_operand_with_size, create_register_all_operand),
	(create_register_all16_operand, create_simple_memory_operand),
	(create_memory_operand, create_memory_auto_operand): Don't
	segfault on malloc failure.
	(z_ext24_decode): Return an int status, negative on fail, zero
	on success.
	(x_imm1, imm1_decode, trap_decode, z_opr_decode, z_opr_decode2),
	(imm1234, reg_s_imm, reg_s_opr, z_imm1234_8base, z_imm1234_0base),
	(z_tfr, z_reg, reg_xy, lea_reg_xys_opr, lea_reg_xys, rel_15_7),
	(decode_rel_15_7, cmp_xy, sub_d6_x_y, sub_d6_y_x),
	(ld_18bit_decode, mul_decode, bm_decode, bm_rel_decode),
	(mov_imm_opr, ld_18bit_decode, exg_sex_decode),
	(loop_primitive_decode, shift_decode, psh_pul_decode),
	(bit_field_decode): Similarly.
	(z_decode_signed_value, decode_signed_value): Similarly.  Add arg
	to return value, update callers.
	(x_opr_decode_with_size): Check all reads, returning NULL on fail.
	Don't segfault on NULL operand.
	(decode_operation): Return OP_INVALID on first fail.
	(decode_s12z): Check all reads, returning -1 on fail.
gas/
	* testsuite/gas/s12z/truncated.d: Update expected output.
2020-03-22 23:20:15 +10:30
GDB Administrator
da2efc2050 Automatic date update in version.in 2020-03-22 00:00:09 +00:00
Martin Liska
e3b1fa32c2 include: Sync lto-symtab.h and plugin-api.h with GCC
Fix comma at end of enumerator list seen with -std=c++98.

	* plugin-api.h (enum ld_plugin_symbol_type): Remove
	comma after last value of an enum.
	* lto-symtab.h (enum gcc_plugin_symbol_type): Likewise.
2020-03-21 03:39:18 -07:00
GDB Administrator
d9fb0d7136 Automatic date update in version.in 2020-03-21 00:00:10 +00:00
Tom Tromey
fe26d3a34a Make dwarf2_evaluate_property parameter const
dwarf2_evaluate_property should not modify its "addr_stack"
parameter's contents.  This patch makes this part of the API, by
marking it const.

gdb/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* dwarf2/loc.h (dwarf2_evaluate_property): Make "addr_stack"
	const.
	* dwarf2/loc.c (dwarf2_evaluate_property): Make "addr_stack"
	const.
2020-03-20 13:06:22 -06:00
Tom de Vries
c623cc9089 [gdb/testsuite] Fix gdb.threads/omp-par-scope.exp XPASS
When running test-case gdb.threads/omp-par-scope.exp, I get this XPASS:
...
XPASS: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: \
  outer stop: get valueof "num"
...
for test:
...
           set thread_num [get_valueof "" "num" "unknown"]
...

The intention of the test is to get the value of local variable num, which
has been set to:
...
    int num = omp_get_thread_num ();
...
but the actually printed value is 'num':
...
(gdb) print num^M
$76 = num^M
...

This is due to the fact that num is missing in the locals, so instead we find
the enum member 'num' of enum expression_operator in glibc/intl/plural-exp.h.

Fix this by getting the value using a new proc get_local_valueof, which uses
the "info locals" commands to get the value.

Tested on x86_64-linux, with gcc 7.5.0 (where the test xfails) and gcc
10.0.1 (where the test passes).
2020-03-20 19:32:07 +01:00
Simon Marchi
c884cc4619 gdb: remove HAVE_DECL_PTRACE
I stumbled on this snippet in nat/gdb_ptrace.h:

    /* Some systems, in particular DEC OSF/1, Digital Unix, Compaq Tru64
       or whatever it's called these days, don't provide a prototype for
       ptrace.  Provide one to silence compiler warnings.  */

    #ifndef HAVE_DECL_PTRACE
    extern PTRACE_TYPE_RET ptrace();
    #endif

I believe this is unnecessary today and should be removed.  First, the
comment only mentions OSes we don't support (and to be honest, I had
never even heard of).

But most importantly, in C++, a declaration with empty parenthesis
declares a function that accepts no arguments, unlike in C.  So if this
declaration was really used, GDB wouldn't build, since all ptrace call
sites pass some arguments.  Since we haven't heard anything about this
causing some build failures since we have transitioned to C++, I
conclude that it's not used.

This patch removes it as well as the corresponding configure check.

gdb/ChangeLog:

	* ptrace.m4: Don't check for ptrace declaration.
	* config.in: Re-generate.
	* configure: Re-generate.
	* nat/gdb_ptrace.h: Don't declare ptrace if HAVE_DECL_PTRACE is
	not defined.

gdbserver/ChangeLog:

	* config.in: Re-generate.
	* configure: Re-generate.

gdbsupport/ChangeLog:

	* config.in: Re-generate.
	* configure: Re-generate.
2020-03-20 11:57:49 -04:00
Kamil Rytarowski
1ff700c202 Update the return type of gdb_ptrace to be more flexible
Linux returns long from ptrace(2) and BSDs int.

gdb/ChangeLog:

       * amd64-bsd-nat.c (gdb_ptrace): Change return type from `int' to
       `PTRACE_TYPE_RET'.
       * i386-bsd-nat.c (gdb_ptrace): Likewise.
       * sparc-nat.c (gdb_ptrace): Likewise.
       * x86-bsd-nat.c (gdb_ptrace): Likewise.
2020-03-20 15:51:16 +01:00
Tom Tromey
f7d4f0b1b9 Fix assert in c-exp.y
The "restrict" patch added some asserts to c-exp.y, but one spot was
copy-pasted and referred to the wrong table.  This was pointed out by
-fsanitize=address.  This patch fixes the bug.

gdb/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* c-exp.y (lex_one_token): Fix assert.
2020-03-20 08:31:17 -06:00
Tom Tromey
f67210ff1c Avoid stringop-truncation errors
I configured with -fsanitize=address and built gdb.  linux-tdep.c and
ada-tasks.c failed to build due to some stringop-truncation errors,
e.g.:

In function ‘char* strncpy(char*, const char*, size_t)’,
    inlined from ‘int linux_fill_prpsinfo(elf_internal_linux_prpsinfo*)’ at ../../binutils-gdb/gdb/linux-tdep.c:1742:11,
    inlined from ‘char* linux_make_corefile_notes(gdbarch*, bfd*, int*)’ at ../../binutils-gdb/gdb/linux-tdep.c:1878:27:
/usr/include/bits/string_fortified.h:106:34: error: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 81 equals destination size [-Werror=stringop-truncation]

This patch fixes the problem by using "sizeof - 1" in the call to
strndup, as recommended in the GCC manual.  This doesn't make a
difference here because the next line, in all cases, sets the final
element to '\0' anyway.

gdb/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* ada-tasks.c (read_atcb): Use smaller length in strncpy call.
	* linux-tdep.c (linux_fill_prpsinfo): Use smaller length in
	strncpy call.
2020-03-20 08:31:17 -06:00
Tom Tromey
1773be9ea2 Fix column alignment in "maint info line-table"
Andrew Burgess pointed out on irc that "maint info line-table" doesn't
properly align the table headers.  This patch fixes the problem by
switching the table to use ui-out.

This required a small tweak to one test case, as ui-out will pad a
field using spaces, even at the end of a line.

gdb/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* symmisc.c (maintenance_print_one_line_table): Use ui_out.

gdb/testsuite/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* gdb.dwarf2/dw2-ranges-base.exp: Update regular expressions.
2020-03-20 08:28:52 -06:00
Tom Tromey
70304be939 Fix Ada val_print removal regression
The removal of val_print caused a regression in the Ada code.  In one
scenario, a variant type would not be properly printed, because the
address of a component was lost.  This patch fixes the bug by changing
this API to be value-based.  This is cleaner and fixes the bug as a
side effect.

gdb/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* ada-valprint.c (print_variant_part): Remove parameters; switch
	to value-based API.
	(print_field_values): Likewise.
	(ada_val_print_struct_union): Likewise.
	(ada_value_print_1): Update.

gdb/testsuite/ChangeLog
2020-03-20  Tom Tromey  <tromey@adacore.com>

	* gdb.ada/sub_variant/subv.adb: New file.
	* gdb.ada/sub_variant.exp: New file.
2020-03-20 08:28:11 -06:00
Kamil Rytarowski
9faa006d11 Inherit ppc_nbsd_nat_target from nbsd_nat_target
gdb/ChangeLog:

	* ppc-nbsd-nat.c (ppc_nbsd_nat_target): Inherit from
	nbsd_nat_target instead of inf_ptrace_target.
	* ppc-nbsd-nat.c: Include "nbsd-nat.h", as we are now using
	nbsd_nat_target.
2020-03-20 15:25:32 +01:00
Kamil Rytarowski
4a90f06205 Add support for NetBSD threads in hppa-nbsd-nat.c
NetBSD ptrace(2) accepts thread id (LWP) as the 4th argument for threads.

gdb/ChangeLog:

	* hppa-nbsd-nat.c (fetch_registers): New variable lwp and pass
	it to the ptrace call.
	* (store_registers): Likewise.
2020-03-20 15:16:03 +01:00
Tom de Vries
0dd7b8f788 [gdb/testsuite] Fix timeouts in gdb.threads/step-over-*.exp
When running test-cases gdb.threads/step-over-lands-on-breakpoint.exp and
gdb.threads/step-over-trips-on-watchpoint.exp with target board
unix/-flto/-O0/-flto-partition=none/-ffat-lto-objects, we run into timeouts
due not being able to set a breakpoint and then trying to continue to that
breakpoint.

In total, we run into 186 timeouts, which roughly corresponds to half an hour:
...
$ grep "FAIL.*(timeout)" gdb.sum \
  | awk '{print $2}' \
  | sort \
  | uniq -c
     66 gdb.threads/step-over-lands-on-breakpoint.exp:
    120 gdb.threads/step-over-trips-on-watchpoint.exp:
...

Fix this by bailing out if the first break fails.

Tested on x86_64-linux, both with native and with target board mentioned above.

gdb/testsuite/ChangeLog:

2020-03-20  Tom de Vries  <tdevries@suse.de>

	* gdb.threads/step-over-lands-on-breakpoint.exp (do_test): Bail out if
	first break fails.
	* gdb.threads/step-over-trips-on-watchpoint.exp: (do_test): Same.
2020-03-20 14:59:01 +01:00
Sergey Belyashov
0d832e7f5e Add support for the xdef and xref pseudo-ops to the Z80 assembler.
PR 25690
	* config/tc-z80.c (md_pseudo_table): Add xdef anf xref pseudo ops.
	* doc/c-z80.texi: Update documentation.
2020-03-20 13:53:02 +00:00
Kamil Rytarowski
c7da12c72c Add support for NetBSD threads in ppc-nbsd-nat.c
NetBSD ptrace(2) accepts thread id (LWP) as the 4th argument for threads.

gdb/ChangeLog:

	* ppc-nbsd-nat.c (fetch_registers): New variable lwp and pass
        it to the ptrace call.
        * (store_registers): Likewise.
2020-03-20 13:35:03 +01:00
Nick Clifton
5844b4657a Fix compile time warnings about the possibility of using uninitialised fields in the Elf_Internal_Chdr structure when building readelf.
* 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 11:33:07 +00:00
H.J. Lu
3d98c46092 plugin: Don't invoke LTO-wrapper
Don't invoke LTO-wrapper since the LTO wrapper approach is not only
slow but also unreliable.  For GCC 10 or newer, LDPT_ADD_SYMBOLS_V2
will be used.

bfd/

	* configure.ac (HAVE_EXECUTABLE_SUFFIX): Removed.
	(EXECUTABLE_SUFFIX): Likewise.
	* config.in: Regenerated.
	* configure: Likewise.
	* plugin.c (bfd_plugin_close_and_cleanup): Defined as
	_bfd_generic_close_and_cleanup.
	(plugin_list_entry): Remove resolution_file, resolution_option,
	real_bfd, real_nsyms, real_syms, lto_nsyms, lto_syms, gcc,
	lto_wrapper, gcc_env and initialized,
	(need_lto_wrapper_p): Removed.
	(get_lto_wrapper): Likewise.
	(setup_lto_wrapper_env): Likewise.
	(register_all_symbols_read): Likewise.
	(egister_cleanup): Likewise.
	(get_symbols): Likewise.
	(add_input_file): Likewise.
	(bfd_plugin_set_program_name): Remove need_lto_wrapper.
	(add_symbols): Updated.
	(try_claim): Likewise.
	(try_load_plugin): Likewise.
	(bfd_plugin_canonicalize_symtab): Likewise.
	* plugin.h (bfd_plugin_set_program_name): Remove int argument.
	(plugin_data_struct): Remove real_bfd, real_nsyms and real_syms.

binutils/

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

ld/

	* testsuite/ld-plugin/lto.exp (lto_link_tests): Run PR ld/25355
	test only for GCC 10 or newer.
2020-03-20 03:55:30 -07:00
H.J. Lu
c3a1714ce7 plugin: Use LDPT_ADD_SYMBOLS_V2 to get symbol type
Since LTO plugin may generate more than one ltrans.o file from one input
IR object as LTO wrapper ignores -flto-partition=none:

lto-wrapper.c:608:

   604          /* Drop arguments that we want to take from the link line.  */
   605          case OPT_flto_:
   606          case OPT_flto:
   607          case OPT_flto_partition_:
   608            continue;

the LTO wrapper approach is not only slow but also unreliable.  Since
the LTO plugin API has been extended to add LDPT_ADD_SYMBOLS_V2 with
symbol type and section kind, we can use LDPT_ADD_SYMBOLS_V2 to get
symbol type, instead of invoking the LTO wrapper.

	PR binutils/25640
	* plugin.c (plugin_list_entry): Add has_symbol_type.
	(add_symbols_v2): New function.
	(bfd_plugin_open_input): Don't invoke LTO wrapper if LTO plugin
	provides symbol type.
	(try_load_plugin): Add LDPT_ADD_SYMBOLS_V2.
	(bfd_plugin_canonicalize_symtab): Use LTO plugin symbol type if
	available.
2020-03-19 21:00:58 -07:00
Alan Modra
c02d66610b Silence warnings due to plugin API change
* testplug.c (parse_symdefstr): Use %hhi to read sym->def, and
	clear new fields.
	* testplug2.c (parse_symdefstr): Likewise.
	* testplug3.c (parse_symdefstr): Likewise.
	* testplug4.c (parse_symdefstr): Likewise.
2020-03-20 12:59:54 +10:30
Alan Modra
67338173a4 XCOFF uninitialized read
* coff-rs6000.c (_bfd_xcoff_slurp_armap): Ensure size is large
	enough to read number of symbols.
2020-03-20 12:35:51 +10:30
Alan Modra
340f3ac808 metag uninitialized memory read
* metag-dis.c (print_insn_metag): Don't ignore status from
	read_memory_func.
2020-03-20 12:35:51 +10:30
Alan Modra
fe90ae8a9f NDS32 disassembly of odd sized sections
* nds32-dis.c (print_insn_nds32): Remove unnecessary casts.
	Initialize parts of buffer not written when handling a possible
	2-byte insn at end of section.  Don't attempt decoding of such
	an insn by the 4-byte machinery.
2020-03-20 12:35:51 +10:30
Alan Modra
833d919c93 PowerPC disassembly of odd sized sections
We shouldn't really decode a 2-byte left-over at the end of a section
as if the section contains two more bytes of zeros.  Not that it
matters very much, but this patch tidies the corner case.

	* ppc-dis.c (print_insn_powerpc): Only clear needed bytes of
	partially filled buffer.  Prevent lookup of 4-byte insns when
	only VLE 2-byte insns are possible due to section size.  Print
	".word" rather than ".long" for 2-byte leftovers.
2020-03-20 12:35:51 +10:30
Alan Modra
a859124df2 tidy elf_backend calls
Function pointers in elfNN_bed that are initialized by elfxx-target.h
to non-zero values generally don't need a non-NULL test before calling
them.  Targets don't set a non-NULL function to NULL.  The one
exception being elfnn-ia64.c and that exception is removed here.

	* elf.c (_bfd_elf_setup_sections): Don't test known non-NULL
	backend functions for NULL before calling.
	(copy_special_section_fields, _bfd_elf_copy_private_bfd_data),
	(bfd_section_from_shdr, assign_section_numbers): Likewise.
	* elfcode.h (elf_write_relocs, elf_slurp_reloc_table): Likewise.
	* elfnn-ia64.c (ignore_errors): New function.
	(elf_backend_link_order_error_handler): Redefine as ignore_errors.
2020-03-20 11:02:49 +10:30
GDB Administrator
ce2ea1c7e0 Automatic date update in version.in 2020-03-20 00:00:14 +00:00
Fangrui Song
9a6c68caa9 Add support for --no-rosegment option.
gold/
    * options.h (General_options): Add --no-rosegment option.
2020-03-19 15:54:38 -07:00
Kamil Rytarowski
f09db38094 Disable get_ptrace_pid for NetBSD
Unlike most other Operating Systems, NetBSD tracks both pid and lwp.
The process id on NetBSD is stored always in the pid field of ptid.

gdb/ChangeLog:

	* inf-ptrace.h: Disable get_ptrace_pid on NetBSD.
	* inf-ptrace.c: Likewise.
	* (gdb_ptrace): Add.
	* (inf_ptrace_target::resume): Update.
	* (inf_ptrace_target::xfer_partial): Likewise.
	* (inf_ptrace_peek_poke): Change argument `pid' to `ptid'.
	* (inf_ptrace_peek_poke): Update.
2020-03-19 22:20:03 +01:00
Nick Clifton
f3a08f7778 Fix discrepancies in nm's --line-number output by adding support for the DW_AT_specification DWARF Attttribute.
PR 25676
bfd	* dwarf2.c (struct varinfo): Add unit_offset field to record the
	location of the varinfo in the unit's debug info data.  Change the
	type of the stack field to a boolean.
	(lookup_var_by_offset): New function.  Returns the varinfo
	structure for the variable described at the given offset in the
	unit's debug info.
	(scan_unit_for_symbols): Add support for variables which have the
	DW_AT_specification attribute.

binutils* testsuite/binutils-all/dw4.s: New test source file.
	* testsuite/binutils-all/nm.exp: Run the new test.
2020-03-19 16:55:13 +00:00
Martin Liska
3734bec833 Include: Sync lto-symtab.h and plugin-api.h with GCC
2020-03-19  Martin Liska  <mliska@suse.cz>

	* lto-symtab.h (enum gcc_plugin_symbol_type): New.
	(enum gcc_plugin_symbol_section_kind): Likewise.

2020-03-19  Martin Liska  <mliska@suse.cz>

	* plugin-api.h (struct ld_plugin_symbol): Split
	int def into 4 char fields.
	(enum ld_plugin_symbol_type): New.
	(enum ld_plugin_symbol_section_kind): New.
	(enum ld_plugin_tag): Add LDPT_ADD_SYMBOLS_V2.
2020-03-19 09:16:04 -07:00
Luis Machado
2d07da271e [AArch64] When unavailable, fetch VG from ptrace.
I was doing some SVE tests on system QEMU and noticed quite a few failures
related to inferior function calls. Any attempt to do an inferior function
call would result in the following:

Unable to set VG register.: Success.

This happens because, after an inferior function call, GDB attempts to restore
the regcache state and updates the SVE register in order. Since the Z registers
show up before the VG register, VG is still INVALID by the time the first Z
register is being updated. So when executing the following code in
aarch64_sve_set_vq:

if (reg_buf->get_register_status (AARCH64_SVE_VG_REGNUM) != REG_VALID)
  return false;

By returning false, we signal something is wrong, then we get to this:

  /* First store vector length to the thread.  This is done first to ensure the
     ptrace buffers read from the kernel are the correct size.  */
  if (!aarch64_sve_set_vq (tid, regcache))
    perror_with_name (_("Unable to set VG register."));

Ideally we'd always have a valid VG before attempting to set the Z registers,
but in this case the ordering of registers doesn't make that possible.

I considered reordering the registers to put VG before the Z registers, like
the DWARF numbering, but that would break backwards compatibility with
existing implementations. Also, the Z register numbering is pinned to the V
registers, and adding VG before Z would create a gap for non-SVE targets,
since we wouldn't be able to undefine VG for non-SVE targets.

As a compromise, it seems we can safely fetch the VG register value from
ptrace. The value in the kernel is likely the updated value anyway.

This patch fixed all the failures i saw in the testsuite and caused no further
regressions.

gdb/ChangeLog:

2020-03-19  Luis Machado  <luis.machado@linaro.org>

	* nat/aarch64-sve-linux-ptrace.c (aarch64_sve_set_vq): If vg is not
	valid, fetch vg value from ptrace.
2020-03-19 12:51:31 -03:00
Nick Clifton
6a541707f3 Fix assertion failure in the BFD library when called to parse a file containing corrupt ELF group information.
PR 25699
	* elf.c (bfd_elf_set_group_contents): Replace assertion with an
	error return.
2020-03-19 14:40:00 +00:00
Kamil Rytarowski
fcc7376e0a Avoid get_ptrace_pid() usage on NetBSD in x86-bsd-nat.c
Add gdb_ptrace() that wraps the ptrace(2) API and correctly passes
the pid,lwp pair to the calls on NetBSD; and the result of
get_ptrace_pid() on other BSD Operating Systems.

gdb/ChangeLog:

	* x86-bsd-nat.c (gdb_ptrace): New.
	* (x86bsd_dr_set): Add new argument `ptid'.
	* (x86bsd_dr_get, x86bsd_dr_set, x86bsd_dr_set_control,
	x86bsd_dr_set_addr): Update.
2020-03-19 14:49:06 +01:00
H.J. Lu
ef3df11042 readelf.c: Use unsigned long to iterate over num_syms
process_symbol_table () has

  unsigned long num_syms;
  ...
  for (si = 0, psym = symtab; si < num_syms; si++, psym++)

We should use unsigned long to iterate over num_syms.

	* readelf.c (process_symbol_table): Use unsigned long for si.
2020-03-19 05:22:30 -07:00