Commit Graph

105836 Commits

Author SHA1 Message Date
Alan Modra
985e026451 PR27725, better objcopy -p times
Nanosecond rather than second resolution.

	PR 27725
	* configure.ac: Check for sys/time.h and utimensat.  Use standard
	checks for mkstemp and mkdtemp.  Whitespace.  Check for nanosecond
	members of struct stat.
	* rename.c: Prefer sys/time.h for utimes over utime.h for utime.
	(STAT_TIMESPEC, STAT_TIMESPEC_NS): Define
	(get_stat_atime_ns, get_stat_mtime_ns): New inline functions.
	(get_stat_atime, get_stat_mtime): Likewise.
	(set_times): Choose first available of utimensat, utimes, utime.
	Use above inline functions to set timespec and timeval values.
	* configure: Regenerate.
	* config.in: Regenerate.
	* testsuite/binutils-all/objcopy.exp (objcopy_test): Add test of
	file timestamp when --preserve-dates is used.
2021-04-15 17:51:17 +09:30
Alan Modra
d0ecdcddc3 Make objcopy -p work when an output file is specified
More fallout from the PR27456 fixes.

	PR 27456
	* rename.c (smart_rename): When TO and FROM are equal, just set
	file timestamp.
	* objcopy.c (strip_main, copy_main): Always call smart_rename.
2021-04-15 14:16:55 +09:30
Nelson Chu
ddfe525f28 RISC-V: PR27584, surpress local and empty name symbols for nm.
The local ".L0" symbol are usually generated to mark where the
auipc instruction is, and clang also uses ".LBB" to do the same
thing.  Besides, clang also uses the empty name symbols for label
differences.  Arm surpress their mapping symbols by regarding them
as special symbols, and MIPS surpress all local symbols.  Therefore,
RISC-V probably need to surpress the local and empty name symbols
for nm and related tools.  User can use "--special-syms" to show
these surpressed symbols.

bfd/
    PR27584
    * elfnn-riscv.c (riscv_elf_is_target_special_symbol): Added to
    omit local and empty symbols since they usually generated to
    mark the auipc instructions.
2021-04-15 10:32:36 +08:00
Lifang Xia
f6a1f95749 CSKY: Fix special_function in howto table
The special_function for reloc should be 'bfd_elf_generic_reloc',
reloc list:
	R_CKCORE_PCREL_IMM16BY2,
	R_CKCORE_PCREL_IMM16BY4,
	R_CKCORE_PCREL_IMM10BY4,
	R_CKCORE_PCREL_IMM18BY2,
	R_CKCORE_PCREL_FLRW_IMM8BY4

bfd/
	* elf32-csky.c (csky_elf_howto_table)
	<R_CKCORE_PCREL_IMM16BY2>: Set special_function to
	bfd_elf_generic_reloc.
	<R_CKCORE_PCREL_IMM16BY4>: Likewise.
	<R_CKCORE_PCREL_IMM10BY4>: Likewise.
	<R_CKCORE_PCREL_IMM18BY2>: Likewise.
	<R_CKCORE_PCREL_FLRW_IMM8BY4>: Likewise.
2021-04-15 10:07:35 +08:00
GDB Administrator
d4015fc5aa Automatic date update in version.in 2021-04-15 00:00:15 +00:00
Tankut Baris Aktemur
fcc99c428a testsuite, dwarf2: use @DW_INL_declared_inlined in a test
gdb/testsuite/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* gdb.dwarf2/dw2-inline-with-lexical-scope.exp: Use
	@DW_INL_declared_inlined for the inline attribute.
2021-04-14 19:10:02 +02:00
Tankut Baris Aktemur
34dc0f9596 gdb/dwarf2: fix "info locals" for clang-compiled inlined functions
GDB reports duplicate local vars with "<optimized out>" values for
inlined functions that are compiled with Clang.

Suppose we have

  __attribute__((always_inline))
  static void aFunction() {
    int a = 42;
    if(a > 2) {
      int value = a;
      value += 10; /* break here */
    }
  }

The "info locals" command at the "break here" line gives the following
output:

  ...
  Breakpoint 1, aFunction () at test.c:6
  6           value += 10; /* break here */
  (gdb) info locals
  value = 42
  a = 42
  value = <optimized out>
  (gdb)

The reason is, inlined functions that are compiled by Clang do not
contain DW_AT_abstract_origin attributes in the DW_TAG_lexical_block
entries.  See

  https://bugs.llvm.org/show_bug.cgi?id=49953

E.g. the DIE of the inlined function above is

0x00000087:     DW_TAG_inlined_subroutine
                  DW_AT_abstract_origin (0x0000002a "aFunction")
                  DW_AT_low_pc  (0x00000000004004b2)
                  DW_AT_high_pc (0x00000000004004d2)
                  DW_AT_call_file       ("/tmp/test.c")
                  DW_AT_call_line       (11)
                  DW_AT_call_column     (0x03)

0x0000009b:       DW_TAG_variable
                    DW_AT_location      (DW_OP_fbreg -4)
                    DW_AT_abstract_origin       (0x00000032 "a")

0x000000a3:       DW_TAG_lexical_block
                    DW_AT_low_pc        (0x00000000004004c3)
                    DW_AT_high_pc       (0x00000000004004d2)

0x000000b0:         DW_TAG_variable
                      DW_AT_location    (DW_OP_fbreg -8)
                      DW_AT_abstract_origin     (0x0000003e "value")

This causes GDB to fail matching the concrete lexical scope with the
corresponding abstract entry.  Hence, the local vars of the abstract
function that are contained in the lexical scope are read separately
(and thus, in addition to) the local vars of the concrete scope.
Because the abstract definitions of the vars do not contain location
information, we see the extra 'value = <optimized out>' above.

This bug is highly related to PR gdb/25695, but the root cause is not
exactly the same.  In PR gdb/25695, GCC emits an extra
DW_TAG_lexical_block without an DW_AT_abstract_origin that wraps the
body of the inlined function.  That is, the trees of the abstract DIE
for the function and its concrete instance are structurally not the
same.  In the case of using Clang, the trees have the same structure.

To tackle the Clang case, when traversing the children of the concrete
instance root, keep a reference to the child of the abstract DIE that
corresponds to the concrete child, so that we can match the two DIEs
heuristically in case of missing DW_AT_abstract_origin attributes.

The updated gdb.opt/inline-locals.exp test has been checked with GCC
5-10 and Clang 5-11.

gdb/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* dwarf2/read.c (inherit_abstract_dies): Keep a reference to the
	corresponding child of the abstract DIE when iterating the
	children of the concrete DIE.

gdb/testsuite/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* gdb.opt/inline-locals.c (scoped): New function.
	(main): Call 'scoped'.
	* gdb.opt/inline-locals.exp: Update with "info locals" tests
	for scoped variables.
	* gdb.dwarf2/dw2-inline-with-lexical-scope.c: New file.
	* gdb.dwarf2/dw2-inline-with-lexical-scope.exp: New file.
2021-04-14 18:55:36 +02:00
Andrew Burgess
b9de3b915c gdb/doc: add missing parentheses around prompt in some examples
While reading the manual for -info-os I noticed that the GDB prompt is
given as 'gdb' when it should really be '(gdb)'.  This is because the
prompt is created with: '@value{GDBP}'.

The GDBP variable (the GDB program name) is intended for use as the
prompt string (though this is not used consistently throughout the
manual), however it is normally used like '(@value{GDBP})', but in a
couple of places the enclosing parentheses are missing.

In this commit I do the following:

 - Change '@value{GDBP}' to '(@value{GDBP})' wherever the variable
   represents a prompt string.

 - Replaces '(gdb)' with '(@value{GDBP})' in one example where we are
   already using '(@value{GDBP})', this makes that one example
   consistent.

I have NOT:

 - Changed all instances of '(gdb)' with '(@value{GDBP})', this would
   be a huge change.

gdb/doc/ChangeLog:

	* gdb.texinfo (GDB/MI Miscellaneous Commands): Add missing
	parentheses to GDB prompt in example, and replace '(gdb)' with
	'(@value{GDBP})' in one example where the latter was already in
	use.
2021-04-14 16:48:08 +01:00
Tom Tromey
38ae29156f Remove use of _WIN32_WCE
This removes the one last use of _WIN32_WCE from gdbserver.

gdbserver/ChangeLog
2021-04-14  Tom Tromey  <tromey@adacore.com>

	* win32-low.cc (windows_nat::handle_load_dll): Don't check
	_WIN32_WCE.
2021-04-14 06:45:44 -06:00
H.J. Lu
9917b5596a elf: Set p_memsz to p_filesz for loadable PT_NOTE segment
Since p_memsz of the loadable PT_NOTE segment should be the same as
p_filesz, set p_memsz on the loadable PT_NOTE segment when updating
p_filesz.

bfd/

	PR binutils/27708
	* elf.c (assign_file_positions_for_non_load_sections): Set
	p_memsz to p_filesz for the loadable PT_NOTE segment.

binutils/

	PR binutils/27708
	* testsuite/binutils-all/x86-64/pr27708.dump: New file.
	* testsuite/binutils-all/x86-64/pr27708.exe.bz2: Likewise.
	* testsuite/binutils-all/x86-64/x86-64.exp: Run binutils/27708
	test.
2021-04-14 05:31:15 -07:00
Mark Harmstone
6be872a439 Ignore trailing bytes at the end of a Windows Resource Version structure.
PR 27686
	* resbin.c (bin_to_res_version): Ignore any trailing bytes at the
	end of the structure.
2021-04-14 11:55:16 +01:00
Tankut Baris Aktemur
ac4d323ea0 testsuite, gdb: recognize DW_OP_fbreg in lib/dwarf.exp
gdb/testsuite/ChangeLog:
2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* lib/dwarf.exp (_location): Recognize DW_OP_fbreg as an op.
2021-04-14 12:49:22 +02:00
Frederic Cambus
5f47741bf6 Remove unneeded tests for definitions of NT_BSDNETCORE values.
binutils* readelf.c (get_netbsd_elfcore_note_type): Remove unneeded #ifdef
	checks for NT_NETBSDCORE_AUXV and NT_NETBSDCORE_LWPSTATUS.

bfd	* elf.c (elfcore_grok_netbsd_note): Remove unneeded #ifdef
	checks for NT_NETBSDCORE_AUXV and NT_NETBSDCORE_LWPSTATUS.
2021-04-14 11:15:01 +01:00
Alan Modra
8985b74b7d PR27631, ubsan: elf32-metag.c:1550:10
PR 27631
	* elf32-metag.c (elf_metag_relocate_section): Don't use &hh->elf
	when hh might be NULL, test for NULL first.
2021-04-14 17:37:27 +09:30
Alan Modra
c9f9a78d00 PR27630, ubsan: elf32-arm.c:6587:20
PR 27630
	* elf32-arm.c (elf32_arm_size_stubs): Don't use &hash->root when
	hash might be NULL, cast instead.
2021-04-14 17:26:15 +09:30
Alan Modra
13acb58d42 PR27716, build failure for msdosdjgpp: PATH_MAX undeclared
We shouldn't be using arbitrary limits like PATH_MAX in GNU programs.
This patch also fixes some memory leaks in readelf when processing
separate debug info.

	PR 27716
binutils/
	* objdump.c (show_line): Don't limit paths to PATH_MAX.
	* readelf.c (struct filedata): Change program_interpreter from
	a char array to a char pointer.
	(process_program_headers): Sanity check PT_INTERP p_filesz.
	Malloc program_interpreter using p_filesz and read directly from
	file.
	(process_dynamic_section): Check program_interpreter is non-NULL.
	(free_filedata): New function, split out from..
	(process_object): ..here.
	(close_debug_file): Call free_filedata.
	* sysdep.h: Don't include sys/param.h.
	(PATH_MAX): Don't define.
	* configure.ac: Don't check for sys/param.h.
	* configure: Regenerate.
gprof/
	* gprof.h (PATH_MAX): Don't define.
	* corefile.c (core_create_line_syms): Don't use PATH_MAX for initial
	file name size.
	* source.c (annotate_source): Malloc file name buffer.  Always
	trim off "-ann" when dos 8.3 annotate file matches original.
	* utils.c (print_name_only): Malloc file name buffer.
2021-04-14 15:06:11 +09:30
Alan Modra
d20eb46617 Re: PR27723, Internal error in select_cie_for_fde
Let's make sure what we allow in the CIE initial instructions and what
select_cie_for_fde compares for a match is always in sync.  Also
correct the previous patch that allowed DW_CFA_GNU_window_save to be
part of the CIE initial instructions, which was likely a mistake.

	PR 27723
	* dw2gencfi.c (initial_cie_insn): New function, extracted from..
	(select_cie_for_fde): ..here.  Simplify.
2021-04-14 09:37:41 +09:30
GDB Administrator
c48a248e33 Automatic date update in version.in 2021-04-14 00:00:16 +00:00
Alan Modra
c159f35225 PR27723, Internal error in select_cie_for_fde
PR 27723
	* dw2gencfi.c (select_cie_for_fde): Handle DW_CFA_val_offset,
	DW_CFA_GNU_window_save and DW_CFA_restore_state.
2021-04-14 08:09:46 +09:30
Pedro Alves
6cacd44948 Remove WinCE code from gdbreplay
gdbserver/ChangeLog:

	* gdbreplay.c [__MINGW32CE__] (COUNTOF, errno, strerror): Remove.
2021-04-13 22:18:24 +01:00
Tom Tromey
1228cb9094 Remove some unused typedefs from gdbserver
I noticed that gdbserver/win32-low.cc has a few typedefs that are not
used.  This patch removes them.

gdbserver/ChangeLog
2021-04-13  Tom Tromey  <tromey@adacore.com>

	* win32-low.cc (winapi_CreateToolhelp32Snapshot)
	(winapi_Module32First, winapi_Module32Next): Remove typedefs.
2021-04-13 10:32:29 -06:00
Tom de Vries
329534fda7 [gdb] Fix regoff_t incompatibility
I did an experiment with importing the regex module in gnulib, and trying to
build gdb.

The first problem I ran into was that:
- regoff_t was defined as long int, and
- the address of a regoff_t variable i in ui_file_style::parse was passed
  as int * to function extended_color.

Fix this by changing the types of some function parameters of functions
read_semi_number and extended_color from int * to regoff_t *.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-04-13  Tom de Vries  <tdevries@suse.de>

	* ui-style.c (read_semi_number, extended_color): Change idx parameter
	type to regoff_t *.
2021-04-13 17:38:53 +02:00
Luis Machado
d9d2ef05f1 Fix build failure for 32-bit targets with --enable-targets=all
Replace use of %lx with %s.

gdb/ChangeLog:

2021-04-13  Luis Machado  <luis.machado@linaro.org>

	* rs6000-tdep.c (ppc_displaced_step_fixup): Use %s to print
	hex values.
2021-04-13 10:49:57 -03:00
Nick Clifton
6418520e7f Document the effect of --as-needed on --rpath on Linux based systems.
* ld.texi (Options): Add note about the effect of --as-needed on
	the --rpath and --rpath-link options on Linux based systems.
2021-04-13 14:37:06 +01:00
Pedro Alves
0256da25c0 Remove process_stratum_target::hostio_last_error abstraction
Now that the WinCE port is gone, all ports map host I/O errors from
errno, so this abstraction is no longer necessary.

Basically undoes:
  https://sourceware.org/pipermail/gdb-patches/2008-January/055511.html
  https://sourceware.org/pipermail/gdb-patches/attachments/20080131/f44e7012/attachment.bin

gdbserver/ChangeLog:

	* Makefile.in (SFILES): Remove hostio-errno.cc.
	* configure: Regenerate.
	* configure.ac (GDBSERVER_DEPFILES): No longer add
	$srv_hostio_err_objs.
	* configure.srv (srv_hostio_err_objs): Delete.
	* hostio-errno.cc: Delete.
	* hostio.cc (hostio_error): Inline hostio_last_error_from_errno
	here.
	* hostio.h (hostio_last_error_from_errno): Delete.
	* target.cc (process_stratum_target::hostio_last_error): Delete.
	* target.h (class process_stratum_target) <hostio_last_error>:
	Delete.
2021-04-13 13:26:44 +01:00
Clément Chigot
d2f1139ef0 bfd: avoid infinite loop when static linking XCOFF
git commit b95a0a3177 changed a "return FALSE" to "continue", and
missed updating the while loop iterator.

	* xcofflink.c (xcoff_link_check_ar_symbols): Update esym earlier.
2021-04-13 18:23:39 +09:30
Alan Modra
1cfc6f00e4 PR27722, error: array subscript has type char
PR 27722
	* libdep_plugin.c (str2vec): Don't pass a potentially signed char
	to isspace.
2021-04-13 16:14:20 +09:30
Frederic Cambus
0fa29e2dee Remove now unneeded #ifdef check for NT_NETBSD_PAX.
NT_NETBSD_PAX was defined in commit be3b926d8d.

binutils/ChangeLog:

	* readelf.c (process_netbsd_elf_note): Remove now unneeded #ifdef
	check for NT_NETBSD_PAX.
2021-04-13 16:11:39 +09:30
Nelson Chu
e3839c100f RISC-V: Don't report the mismatched version warning for the implicit extensions.
bfd/
    * elfnn-riscv.c (riscv_version_mismatch): Do not report the warning
    when the version of input or output is RISCV_UNKNOWN_VERSION, since
    the extension is added implicitly.
    * elfxx-riscv.c: Updated the obsolete comments.
    (RISCV_UNKNOWN_VERSION): Moved to elfxx-riscv.h.
    * elfxx-riscv.h (RISCV_UNKNOWN_VERSION): Added.
2021-04-13 12:49:51 +08:00
GDB Administrator
8d85d1f53f Automatic date update in version.in 2021-04-13 00:00:18 +00:00
Will Schmidt
6b142048ad [PATCH,rs6000] Fix vsx-regs.exp testcase failure
Hi,
  This test exercise updates to the F* and VS* registers
and verifies updates to the same.  Note that the registers
overlap; the doubleword[1] portion of any VS0-VS31
register contains the F0-F31 register contents, so any updates
to one can be measured in the other.

Per a brief investigation, we see that dl_main() currently
uses some VSX instructions, so the VS* values are not
going to be zero when this testcase reaches main, where these
tests begin.  The test harness does not explicitly
initialize the full VS* values, so the first test loop
that updates the F* values means our VS* values are
uninitalized and will fail the first set of checks.
This update explicitly initializes the doubleword[0] portion
of the VS* registers, to allow this test to succeed.

2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

gdb/testsuite/ChangeLog:
        * gdb.arch/vsx-regs.exp: Initialize vs* doublewords.
2021-04-12 14:17:43 -05:00
Will Schmidt
c8a379440e [PATCH] gdb-power10-single-step
Hi,
  This is based on a patch originally written by Alan Modra.
Powerpc / Power10 ISA 3.1 adds prefixed instructions, which
are 8 bytes in length.  This is in contrast to powerpc previously
always having 4 byte instruction length.  This patch implements
changes to allow GDB to better detect prefixed instructions, and
handle single stepping across the 8 byte instructions.

Added #defines to help test for PNOP and prefix instructions.
Update ppc_displaced_step_copy_insn() to handle pnop and prefixed
instructions whem R=0 (non-pc-relative).

Updated ppc_displaced_step_fixup() to properly handle the offset
value matching the current instruction size

Updated the for-loop within ppc_deal_with_atomic_sequence() to
count instructions properly in case we have a mix of 4-byte and
8-byte instructions within the atomic_sequence_length.

Added testcase and harness to exercise pc-relative load/store
instructions with R=0.

2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

        gdb/ChangeLog:
        * rs6000-tdep.c:  Add support for single-stepping of
        prefixed instructions.

        gdb/testsuite/ChangeLog:
        * gdb.arch/powerpc-plxv-nonrel.s:  Testcase using
        non-relative plxv instructions.
        * gdb.arch/powerpc-plxv-nonrel.exp: Testcase harness.
2021-04-12 14:11:02 -05:00
Will Schmidt
e3d528d7e6 [PATCH, rs6000, v3][PR gdb/27525] displaced stepping across addpcis/lnia.
This addresses PR gdb/27525.     The lnia and other variations
of the addpcis instruction write the value of the NIA into a target register.
If we are single-stepping across a breakpoint, the instruction is executed
from a displaced location, and thusly the written value of the PC/NIA
will be incorrect.   The changes here will measure the displacement
offset, and adjust the target register value to compensate.

YYYY-MM-DD  Will Schmidt  <will_schmidt@vnet.ibm.com>

gdb/ChangeLog:

        * rs6000-tdep.c (ppc_displaced_step_fixup): Update to handle
        the addpcis/lnia instruction.

gdb/testsuite/ChangeLog:

        * gdb.arch/powerpc-addpcis.exp: Testcase harness to
        exercise single-stepping over subpcis,lnia,addpcis instructions
        with displacement.
        * gdb.arch/powerpc-addpcis.s: Testcase with stream
        of addpcis/lnia/subpcis instructions.
        * gdb.arch/powerpc-lnia.exp: Testcase harness to exercise
        single-stepping over lnia instructions with displacement.
        * gdb.arch/powerpc-lnia.s: Testcase with stream of
        lnia instructions.
2021-04-12 13:35:54 -05:00
Will Schmidt
82d9b28047 [rs6000] Create a powerpc-power10.exp test
Inspired by the existing powerpc-power9.exp test, this is a
new test to cover the power10 instruction disassembly.

gdb/testsuite/ChangeLog:
2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>

	* gdb.arch/powerpc-power10.s: New test for instructions.
	* gdb.arch/powerpc-power10.exp: Harness to run the test.
2021-04-12 13:17:56 -05:00
Will Schmidt
b722acca42 Add myself to gdb/MAINTAINERS
gdb/ChangeLog:

        * MAINTAINERS (Write After Approval): Add myself.
2021-04-12 12:17:52 -05:00
Alan Modra
4bb920c68e m68hc11 gas testsuite wart
Writing to a potentially read-only source directory is not good.

	* testsuite/gas/m68hc11/m68hc11.exp (gas_m68hc11_message): Don't
	write to $srcdir.  Use gas_host_run and read output file rather
	than gas_start/gas_finish.
2021-04-13 01:20:37 +09:30
Carl Love
6ba4cb845b RS6000 Add support to print vector register contents as float128
This patch adds a floating point 128-bit composite field to the vsx
register type.  When printing the register with p/f the float128 field will
be printed as a 128-bit floating point value.  A test case to verify the new
vsx register field is visible and correctly prints out the value of a 128-bit
floating point value is also added.

gdb/ChangeLog:

	* rs6000-tdep.c (rs6000_builtin_type_vec128): Add t_float128 variable.
	(rs6000_builtin_type_vec128): Add append_composite_type_field for
	float128.

gdb/testsuite/ChangeLog:

	* gdb.arch/vsx-vsr-float128.c: New test file.
	* gdb.arch/vsx-vsr-float128.exp: New expect file.
2021-04-12 10:36:10 -05:00
Simon Marchi
d471748373 gdb, gdbserver: remove WinCE support code
The support for WinCE was removed with commit 84b300de36 ("gdbserver:
remove support for ARM/WinCE").  There is some leftover code for WinCE
support, guarded by the _WIN32_WCE macro, which I didn't know of at the
time.

I didn't remove the _WIN32_WCE references in the tests, because in
theory we still support the WinCE architecture in GDB (when debugging
remotely).  So someone could run a test with that (although I'd be
really surprised).

gdb/ChangeLog:

	* nat/windows-nat.c: Remove all code guarded by _WIN32_WCE.
	* nat/windows-nat.h: Likewise.

gdbserver/ChangeLog:

	* win32-low.cc: Remove all code guarded by _WIN32_WCE.
	* win32-low.h: Likewise.

Change-Id: I7a871b897e2135dc195b10690bff2a01d9fac05a
2021-04-12 11:10:57 -04:00
Alan Modra
43e05cd4f4 ENABLE_CHECKING in bfd, opcodes, binutils, ld
gas already has this.  Here it enables checking hash table type passed
to elf_link_hash_lookup and elf_link_hash_traverse.

bfd/
	* elf-bfd.h (ENABLE_CHECKING): Define.
	(elf_link_hash_lookup): Abort if wrong type of hash table.
	(elf_link_hash_traverse): Likewise.
	* configure.ac (--enable-checking): Add support.
	* config.in: Regenerate.
	* configure: Regenerate.
binutils/
	* configure.ac (--enable-checking): Add support.
	* config.in: Regenerate.
	* configure: Regenerate.
ld/
	* configure.ac (--enable-checking): Add support.
	* config.in: Regenerate.
	* configure: Regenerate.
opcodes/
	* configure.ac (--enable-checking): Add support.
	* config.in: Regenerate.
	* configure: Regenerate.
2021-04-13 00:35:44 +09:30
Tankut Baris Aktemur
04977957ec gdbserver: constify the 'pid_to_exec_file' target op
gdbserver/ChangeLog:
2021-04-12  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* target.h (class process_stratum_target) <pid_to_exec_file>:
	Constify the return type.  Update the definition/references below.
	* target.cc (process_stratum_target::pid_to_exec_file)
	* linux-low.h (class linux_process_target) <pid_to_exec_file>
	* linux-low.cc (linux_process_target::pid_to_exec_file)
	* netbsd-low.h (class netbsd_process_target) <pid_to_exec_file>
	* netbsd-low.cc (netbsd_process_target::pid_to_exec_file)
	* server.cc (handle_qxfer_exec_file)
2021-04-12 16:36:25 +02:00
Markus Metzger
9d8f30221b gdb, testsuite, btrace: relax unneeded stepi expected output
In gdb.btrace/reconnect.exp, we test that we can disconnect and reconnect
again to a GDB session that is recording with the btrace recording format.
It does not really matter what we are recording.

The test assumed that stepping from _start will bring us into an area
without debug information.  This is not correct on all systems.

Relax the expected output to also support systems where we do have debug
information for that code.
2021-04-12 14:46:16 +02:00
Alan Modra
2cc15b10e5 convert elf_link_hash macros to inline functions
Involves a bit of editing as we now need to be more precise in pointer
types.

bfd/
	* elf-bfd.h (is_elf_hash_table): Convert macro to inline function.
	(elf_link_hash_lookup, elf_link_hash_traverse): Likewise.
	(elf_hash_table, elf_hash_table_id): Likewise.
	* elf32-arm.c (elf32_arm_setup_section_lists): Delete redundant
	is_elf_hash_table check.
	* elf32-csky.c (elf32_csky_setup_section_lists): Likewise.
	* elf32-hppa.c (clobber_millicode_symbols): Correct param types.
	* elf64-alpha.c (elf64_alpha_output_extsym): Likewise.
	* elfnn-ia64.c (elfNN_ia64_global_dyn_info_free: Likewise.
	(elfNN_ia64_global_dyn_sym_thunk: Likewise.
	* elf64-ia64-vms.c (elf64_ia64_global_dyn_info_free): Likewise.
	(elf64_ia64_global_dyn_sym_thunk): Likewise.
	(elf64_vms_link_add_object_symbols): Pass base type of hash table
	to is_elf_hash_table.
	* elflink.c (_bfd_elf_dynamic_symbol_p): Likewise.
	(_bfd_elf_symbol_refs_local_p, _bfd_elf_add_dynamic_entry): Likewise.
	(_bfd_elf_strip_zero_sized_dynamic_sections): Likewise.
	(_bfd_elf_link_check_relocs, elf_link_add_object_symbols): Likewise.
	(bfd_elf_final_link): Likewise.
	* elfnn-aarch64.c (elfNN_aarch64_setup_section_lists): Likewise.
	* elf64-ppc.c (ppc64_elf_set_toc): Likewise.  Use bfd_link_hash_lookup.
ld/
	* emultempl/mipself.em (mips_create_output_section_statements):
	Pass base type of hash table to is_elf_hash_table.
	* ldelf.c (ldelf_after_open): Likewise.
2021-04-12 21:19:02 +09:30
Alan Modra
b585e89996 elf_backend_archive_symbol_lookup
elf_backend_archive_symbol_lookup might be called when the linker hash
table has entries of type generic_link_hash_entry.  This happens for
instance when running the mmix target linker testsuite where the
output is mmo but input is elf64-mmix.

	* elf-bfd.h (struct elf_backend_data): Return bfd_link_hash_entry*
	from elf_backend_archive_symbol_lookup.
	(_bfd_elf_archive_symbol_lookup): Return bfd_link_hash_entry*.
	* elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Likewise.  Check
	we have a ppc_hash_table before accessing ppc_link_hash_entry
	fields.
	* elflink.c (_bfd_elf_archive_symbol_lookup): Return
	bfd_link_hash_entry*.
	(elf_link_add_archive_symbols): Adjust to suit.
2021-04-12 21:19:02 +09:30
Nelson Chu
f5b1097353 RISC-V: The version of i-ext should be RISCV_UNKNOWN_VERSION when expanding g-ext.
Fix the wrong version of i-ext when expanding g-ext.  This was changed by
the previous patch accidently.

bfd/
    * elfxx-riscv.c (riscv_parse_std_ext): Fixed the wrong versions of
    i-ext when expanding g-ext.
2021-04-12 18:04:12 +08:00
Nelson Chu
f0bae2552d RISC-V: Add i-ext as the implicit extension when e-ext is set.
The linker does not care the default versions of the extensions, since
it does not have the default ISA spec setting.  Therefore, linker won't
insert the implicit extensions for the input objects.  But we used to
insert the i-ext as the explicit extension, even if the e-ext is set.
This causes linker to report "cannot find default versions of the ISA
extension `i'" errors when linking the input objects with e-ext.

This patch fixes the above linker problem, and also remove the confused
riscv_ext_dont_care_version function.  Unless these "dont care" extensions
are set in the input architecture explicitly, otherwise we always insert
them as the implicit ones.  Afterwards, let riscv_arch_str1 surpress them
not to output to the architecture string if their versions are
RISCV_UNKNOWN_VERSION.

bfd/
    * elfxx-riscv.c (riscv_ext_dont_care_version): Removed.
    (riscv_parse_add_subset): Always add the implicit extensions, even if
    their versions are RISCV_UNKNOWN_VERSION.
    (riscv_parse_std_ext): Delay to add i-ext as the implicit extension
    in the riscv_parse_add_implicit_subsets.  Besides, add g-ext as the
    implicit extension after it has been expanded.
    (riscv_parse_add_implicit_subsets): Updated.
2021-04-12 17:51:07 +08:00
Mike Frysinger
d5a71b1131 sim: cgen: move cgen_cpu_max_extra_bytes logic into the common code
Every arch handles this the same way, so move it to the common code.
This will also make unifying the sim_cpu structure easier.
2021-04-12 00:14:32 -04:00
Alan Modra
32d715691a Power10 bignum operands
When built on a 32-bit host without --enable-64-bit-bfd, powerpc-linux
and other 32-bit powerpc targeted binutils fail to assemble some
power10 prefixed instructions with 34-bit fields.  A typical error
seen when running the testsuite is
.../gas/testsuite/gas/ppc/prefix-pcrel.s:10: Error: bignum invalid
In practice this doesn't matter for addresses:  32-bit programs don't
need or use the top 2 bits of a d34 field when calculating addresses.
However it may matter when loading or adding 64-bit constants with
paddi.  A power10 processor in 32-bit mode still has 64-bit wide GPRs.
So this patch enables limited support for O_big PowerPC operands, and
corrects sign extension of 32-bit constants using X_extrabit.

	* config/tc-ppc.c (insn_validate): Use uint64_t for operand values.
	(md_assemble): Likewise.  Handle bignum operands.
	(ppc_elf_suffix): Handle O_big.  Remove unnecessary input_line_pointer
	check.
	* expr.c: Delete unnecessary forward declarations.
	(generic_bignum_to_int32): Return uint32_t.
	(generic_bignum_to_int64): Return uint64_t.  Compile always.
	(operand): Twiddle X_extrabit for unary '~'.  Set X_unsigned and
	clear X_extrabit for unary '!'.
	* expr.h (generic_bignum_to_int32): Declare.
	(generic_bignum_to_int64): Declare.
	* testsuite/gas/ppc/prefix-pcrel.s,
	* testsuite/gas/ppc/prefix-pcrel.d: Add more instructions.
2021-04-12 11:57:03 +09:30
Alan Modra
fc304b8891 PR27719, lang_mark_undefineds trashes memory
It's not enough to test that the output is ELF before casting
bfd_link_hash_entry to elf_link_hash_entry.  Some ELF targets (d30v,
dlx, pj, s12z, xgate) use the generic linker support in bfd/linker.c
and thus their symbols are of type generic_link_hash_entry.

Not all of the places this patch touches can result in wrong accesses,
but I thought it worth ensuring that all occurrences of
elf_link_hash_entry in ld/ were obviously correct.

	PR 27719
	* ldlang.c (lang_mark_undefineds, undef_start_stop): Test that
	the symbol hash table is the correct type before accessing
	elf_link_hash_entry symbols.
	* plugin.c (is_visible_from_outside): Likewise.
	* emultempl/armelf.em (ld${EMULATION_NAME}_finish): Likewise.
	* emultempl/solaris2.em (elf_solaris2_before_allocation): Likewise.
2021-04-12 11:57:03 +09:30
Nelson Chu
e601909a32 RISC-V: Support to parse the multi-letter prefix in the architecture string.
The original discussion is as follows,
https://github.com/riscv/riscv-isa-manual/issues/637

I never considered the prefixes may have multiple letters, like zxm.
But the ISA spec has been updated for a long time that I haven't noticed.
This patch rewrites the part of architecture parser to support parsing
the multi-letter prefixes.  Besides, I also improve the parser to report
errors in details.  One of the most obvious improvement is - Do not parse
the prefixed extensions according to the orders in the parse_config.
If we do so, then we used to get "unexpected ISA string at end" errors,
but the message is a little bit  hard to know what is happening.  I Remove
the confused message, and let riscv_parse_prefixed_ext to report the details.

bfd/
    * elfxx-riscv.c (riscv_std_z_ext_strtab): Moved forward.
    (riscv_std_s_ext_strtab): Likewise.
    (riscv_std_h_ext_strtab): Likewise.
    (riscv_std_zxm_ext_strtab): Added for the zxm prefix.
    (enum riscv_prefix_ext_class): Moved forward and renamed from
    riscv_isa_ext_class.  Reorder them according to the parsing order,
    since the enum values are used to check the orders in the
    riscv_compare_subsets.
    (struct riscv_parse_prefix_config): Moved forward and renamed from
    riscv_parse_config_t.  Also removed the ext_valid_p field, the
    related functions are replaced by riscv_valid_prefixed_ext.
    (parse_config): Moved forward and updated.  The more letters of the
    prefix string, the more forward it must be defined.  Otherwise, we
    will get the wrong mapping when using strncmp in riscv_get_prefix_class.
    (riscv_get_prefix_class): Moved forward.  Support to parse the
    multi-letter prefix, like zxm.
    (riscv_known_prefixed_ext): New function, check if the prefixed
    extension is supported according to the right riscv_std_*_ext_strtab.
    (riscv_valid_prefixed_ext): New function, used to replace the
    riscv_ext_*_valid_p functions.
    (riscv_init_ext_order): Do not set the values for prefix keywords
    since they may have multiple letters for now.
    (riscv_compare_subsets): Set the order values of prefix keywords
    to negative numbers according to the riscv_prefix_ext_class.
    (riscv_parse_std_ext): Call riscv_get_prefix_class to see if we
    have parsed the prefixed extensions.
    (riscv_parse_prefixed_ext): Updated and removed the parameter config.
    Report error when the prefix is unknown.
    (riscv_parse_subset): Do not parse the prefixed extensions according
    to the orders in the parse_config.  Remove the confused message and
    let riscv_parse_prefixed_ext to report the details.
    * elfxx-riscv.h (enum riscv_isa_ext_class): Moved to elfxx-riscv.c.
    (riscv_get_prefix_class): Removed to static.
gas/
    * testsuite/gas/riscv/march-fail-order-x-std.d: Renamed from
    march-fail-porder-x-std.d.
    * testsuite/gas/riscv/march-fail-order-z-std.d: Renamed from
    march-fail-porder-z-std.d.
    * testsuite/gas/riscv/march-fail-order-x-z.d: Renamed from
    march-fail-porder-x-z.d.
    * testsuite/gas/riscv/march-fail-order-zx-std.l: Added to replace
    march-fail-porder.l.
    * testsuite/gas/riscv/march-fail-order-x-z.l: Likewise.
    * testsuite/gas/riscv/march-fail-order-x.l: Updated.
    * testsuite/gas/riscv/march-fail-order-z.l: Likewise.
    * testsuite/gas/riscv/march-fail-single-prefix-h.d: Renamed from
    march-fail-single-char-h.d.
    * testsuite/gas/riscv/march-fail-single-prefix-s.d: Renamed from
    march-fail-single-char-s.d.
    * testsuite/gas/riscv/march-fail-single-prefix-x.d: Renamed from
    march-fail-single-char-x.d.
    * testsuite/gas/riscv/march-fail-single-prefix-z.d: Renamed from
    march-fail-single-char-z.d.
    * testsuite/gas/riscv/march-fail-single-prefix-zmx.d: Added.
    * testsuite/gas/riscv/march-fail-single-prefix.l: Added to replace
    march-fail-single-prefix.l.
    * testsuite/gas/riscv/march-fail-unknown-zxm.d: Added.
    * testsuite/gas/riscv/march-fail-unknown-std.l: Updated.
    * testsuite/gas/riscv/march-fail-unknown.l: Likewise.
2021-04-12 10:05:37 +08:00
GDB Administrator
6803e1cb21 Automatic date update in version.in 2021-04-12 00:00:15 +00:00