Commit Graph

103225 Commits

Author SHA1 Message Date
Victor Collod
b892828bcb gdb: Update i386_analyze_prologue to skip endbr32
With -m32 -fcf-protection, GCC generates an `endbr32` instruction at the
function entry:

[hjl@gnu-cfl-2 gdb]$ cat /tmp/x.c
int
main(void)
{
  return 0;
}
[hjl@gnu-cfl-2 gdb]$ gcc -g -fcf-protection /tmp/x.c -m32
(gdb) b main
Breakpoint 1 at 0x8049176: file /tmp/x.c, line 3.
(gdb) r
Breakpoint 1, main () at /tmp/x.c:3
3	{
(gdb) disass
Dump of assembler code for function main:
=> 0x08049176 <+0>:	endbr32
   0x0804917a <+4>:	push   %ebp
   0x0804917b <+5>:	mov    %esp,%ebp
   0x0804917d <+7>:	mov    $0x0,%eax
   0x08049182 <+12>:	pop    %ebp
   0x08049183 <+13>:	ret
End of assembler dump.
(gdb)

Update i386_analyze_prologue to skip `endbr32`:

(gdb) b main
Breakpoint 1 at 0x804917d: file /tmp/x.c, line 4.
(gdb) r
Breakpoint 1, main () at /tmp/x.c:4
4	  return 0;
(gdb) disass
Dump of assembler code for function main:
   0x08049176 <+0>:	endbr32
   0x0804917a <+4>:	push   %ebp
   0x0804917b <+5>:	mov    %esp,%ebp
=> 0x0804917d <+7>:	mov    $0x0,%eax
   0x08049182 <+12>:	pop    %ebp
   0x08049183 <+13>:	ret
End of assembler dump.
(gdb)

Tested with

$ make check RUNTESTFLAGS="--target_board='unix{-m32,}' i386-prologue-skip-cf-protection.exp"

on Fedora 32/x86-64.

2020-0X-YY  Victor Collod  <vcollod@nvidia.com>

gdb/ChangeLog:

	PR gdb/26635
	* i386-tdep.c (i386_skip_endbr): Add a helper function to skip endbr.
	(i386_analyze_prologue): Call i386_skip_endbr.

gdb/testsuite/ChangeLog:

	PR gdb/26635
	* gdb.arch/amd64-prologue-skip-cf-protection.exp: Make the test
	compatible with i386, and move it to...
	* gdb.arch/i386-prologue-skip-cf-protection.exp: ... here.
	* gdb.arch/amd64-prologue-skip-cf-protection.c: Move to...
	* gdb.arch/i386-prologue-skip-cf-protection.c: ... here.
2020-09-19 19:53:05 -04:00
GDB Administrator
4567103763 Automatic date update in version.in 2020-09-19 00:00:46 +00:00
Pedro Alves
5573f8461b Fix "thread find" with multiple inferiors/targets (PR gdb/26631)
"thread find" with multiple inferiors got broken with the multi-target
work:

 Thread 1 "gdb" hit Breakpoint 1, internal_error (...) at ../../src/gdbsupport/errors.cc:51
 51      {
 (top-gdb) bt
 #0  internal_error (file=0xffffd4d0 <error: Cannot access memory at address 0xffffd4d0>, line=0, fmt=0x555556330320 "en_US.UTF-8") at ../../src/gdbsupport/errors.cc:51
 #1  0x0000555555bca4c7 in target_thread_name (info=0x555556801290) at ../../src/gdb/target.c:2035
 #2  0x0000555555beb07a in thread_find_command (arg=0x7fffffffe08e "1", from_tty=0) at ../../src/gdb/thread.c:1959
 #3  0x000055555572ec49 in do_const_cfunc (c=0x555556786bc0, args=0x7fffffffe08e "1", from_tty=0) at ../../src/gdb/cli/cli-decode.c:95
 #4  0x0000555555732abd in cmd_func (cmd=0x555556786bc0, args=0x7fffffffe08e "1", from_tty=0) at ../../src/gdb/cli/cli-decode.c:2181
 #5  0x0000555555bf1245 in execute_command (p=0x7fffffffe08e "1", from_tty=0) at ../../src/gdb/top.c:664
 #6  0x00005555559cad10 in catch_command_errors (command=0x555555bf0c31 <execute_command(char const*, int)>, arg=0x7fffffffe082 "thread find 1", from_tty=0) at ../../src/gdb/main.c:457
 #7  0x00005555559cc33d in captured_main_1 (context=0x7fffffffdb60) at ../../src/gdb/main.c:1218
 #8  0x00005555559cc571 in captured_main (data=0x7fffffffdb60) at ../../src/gdb/main.c:1243
 #9  0x00005555559cc5e8 in gdb_main (args=0x7fffffffdb60) at ../../src/gdb/main.c:1268
 #10 0x0000555555623816 in main (argc=17, argv=0x7fffffffdc78) at ../../src/gdb/gdb.c:32

The problem is that we're not switching to the inferior/target before
calling target methods, which trips on an assertion put in place
exactly to catch this sort of problem.

gdb/testsuite/ChangeLog:

	PR gdb/26631
	* gdb.multi/multi-target-thread-find.exp: New file.

gdb/ChangeLog:

	PR gdb/26631
	* thread.c (thread_find_command): Switch inferior before calling
	target methods.
2020-09-18 13:40:55 +01:00
Pedro Alves
a77c0fd170 Split gdb.multi/multi-target.exp into separate testcases
gdb.multi/multi-target.exp sets up a debug environment with multiple
gdbservers, multiple native processes, and multiple cores, which has
proved useful for exercising a number of multi-target scenarios.

But, as we add more tests to gdb.base/multi-target.exp, it is growing
a bit too large (making a bit cumbersome to debug) and too slow to run
(if you have glibc debug info).

This commit thus splits the multi-target.exp into several testcases,
one per use case.  The common setup code is moved to a new
multi-target.exp.tcl file that is included by all the resulting
multi-target testcases.

gdb/testsuite/ChangeLog:

	* gdb.multi/multi-target-continue.exp: New file, factored out from
	multi-target.exp.
	* gdb.multi/multi-target-info-inferiors.exp: New file, factored out from
	multi-target.exp.
	* gdb.multi/multi-target-interrupt.exp: New file, factored out from
	multi-target.exp.
	* gdb.multi/multi-target-no-resumed.exp: New file, factored out from
	multi-target.exp.
	* gdb.multi/multi-target-ping-pong-next.exp: New file, factored out from
	multi-target.exp.
	* gdb.multi/multi-target.exp.tcl: New file, factored out from
	multi-target.exp.
	* gdb.multi/multi-target.exp: Delete.
2020-09-18 13:40:55 +01:00
GDB Administrator
0d789f59d1 Automatic date update in version.in 2020-09-18 00:00:42 +00:00
GDB Administrator
7ea31d3da0 Automatic date update in version.in 2020-09-17 00:00:38 +00:00
Tom Tromey
1f2950be0b Match demangled name in "skip"
PR gdb/26598 notes that, before commit bcfe6157ca ("Use the linkage
name if it exists"), the "skip" command would match the demangled name
of a symbol, but now only matches the linkage name.

This patch fixes this regression.  I looked at all calls to
function_name_is_marked_for_skip, and only one used the linkage name.

2020-09-16  Tom Tromey  <tromey@adacore.com>

	PR gdb/26598:
	* infrun.c (fill_in_stop_func): Use find_pc_partial_function_sym.

gdb/testsuite/ChangeLog
2020-09-16  Tom Tromey  <tromey@adacore.com>

	PR gdb/26598:
	* gdb.base/skipcxx.exp: New file.
	* gdb.base/skipcxx.cc: New file.
2020-09-16 13:55:37 -06:00
GDB Administrator
f0f01c9e23 Automatic date update in version.in 2020-09-16 00:00:39 +00:00
Tom Tromey
efb04be6ae Avoid running one Rust test against older LLVM
LLVM 8.0 introduced some changes to let the Rust compiler emit DWARF
variant parts.  Before this change, the compiler would emit two types
with the same name, and unfortunately gdb happens to pick the wrong
one.  So, this patch disables the test when using an older version of
LLVM.

2020-09-15  Tom Tromey  <tromey@adacore.com>

	PR rust/26197:
	* lib/rust-support.exp (rust_llvm_version): New proc.
	* gdb.rust/simple.exp: Check rust_llvm_version.
2020-09-15 09:31:22 -06:00
Fredrik Hederstierna
ba8b04a8d8 Fix exception stack unwinding for ARM Cortex-M
For Cortex-M targets using floating-point, eg the Cortex-M4F, its not possible
to get any call-stack backtrace if setting a breakpoint in ISR.

The exception stack unwinder for Cortex-M does not consider if floating-point
registers was stacked or not, further the Cortex-M has two stack pointers: MSP
(Main Stack Pointer) and PSP (Process Stack Pointer).
This is not handled when GDB tries to backtrace in the exception stack
unwinder.

This patch fixes this, and gives a correct call-stack backtrace from
breakpoints set in a handler or ISR.

gdb/ChangeLog:

        * arm-tdep.c (arm_m_exception_cache): Try use correct stack
        pointer and stack frame offset when unwinding.
2020-09-15 14:57:49 +01:00
GDB Administrator
9c4a30eb45 Automatic date update in version.in 2020-09-15 00:00:51 +00:00
GDB Administrator
5ebb0da9a5 Automatic date update in version.in 2020-09-14 00:00:48 +00:00
Joel Brobecker
423e52cef3 Bump GDB version number to 10.0.90.DATE-git.
gdb/ChangeLog:

	* version.in: Set GDB version number to 10.0.90.DATE-git.
2020-09-12 20:06:27 -07:00
Joel Brobecker
46ecde124e Document the GDB 10.0.90 release in gdb/ChangeLog
gdb/ChangeLog:

	GDB 10.0.90 released.
2020-09-12 20:06:13 -07:00
Joel Brobecker
f1e420ce92 Set GDB version number to 10.0.90.
gdb/ChangeLog:

	* version.in: Set GDB version number to 10.0.90.
2020-09-12 19:57:18 -07:00
Joel Brobecker
c527795867 gdb/NEWS: Change "since GDB 9" to "in GDB 10"
gdb/ChangeLog:

	* NEWS: Change "Changes since GDB 9" to "Changes in GDB 10".
2020-09-12 19:49:53 -07:00
Joel Brobecker
713bde4c19 Set development mode to "off" by default.
bfd/ChangeLog:

	* development.sh (development): Set to false.
2020-09-12 19:34:37 -07:00
Joel Brobecker
31c6c31e02 Bump version to 10.0.90.DATE-git.
Now that the GDB 10 branch has been created, we can
bump the version number.

gdb/ChangeLog:

	GDB 10 branch created (8087c3fa8b):
	* version.in: Bump version to 10.0.90.DATE-git.
2020-09-12 19:34:15 -07:00
Joel Brobecker
8087c3fa8b Fix GDB build in infrun.c when configured with unit tests disabled
I noticed this while testing the GDB in the context of the upcoming
GDB 10 release branching, because part of the process involves setting
development to False, which in turn changes the default for including
unittest to false as well. As a result, without this patch, we get
compilation errors in infrun.c such as:

    infrun.c:9219:5: error: `scoped_mock_context' was not declared in this scope

This patch fixes it by bracketing the unitttest in namespace selftest
with an #if GDB_SELF_TEST.

gdb/ChangeLog:

        * infrun.c (namespace selftests): Only define #if GDB_SELF_TEST.

Tested on x86_64-linux, with and without self-tests.
gdb-10-branchpoint
2020-09-12 12:38:35 -07:00
H.J. Lu
496afd1705 elf: Add -z unique-symbol to avoid duplicated local symbol names
The symbol string table in the .symtab section is optional and cosmetic.
The contents of the .symtab section have no impact on run-time execution.
The symbol names in the symbol string table help distinguish addresses at
different locations.  Add a linker option, -z unique-symbol, to avoid
duplicated local symbol names in the symbol string table.

This feature was well received by the livepatch maintainers.  It not only
solves the duplicated local symbol name problem, but also would allow
livepatch to more precisely locate duplicate symbols in general for
patching.

bfd/

	PR ld/26391
	* elflink.c (elf_final_link_info): Add local_hash_table.
	(local_hash_entry): New.
	(local_hash_newfunc): Likewise.
	(elf_link_output_symstrtab): Append ".COUNT" to duplicated local
	symbols.
	(bfd_elf_final_link): Initialize and free local_hash_table for
	"-z unique-symbol".

include/

	PR ld/26391
	* bfdlink.h (bfd_link_info): Add unique_symbol.

ld/

	PR ld/26391
	* NEWS: Mention "-z unique-symbol".
	* emultempl/elf.em (gld${EMULATION_NAME}_handle_option): Handle
	"-z unique-symbol" and "-z nounique-symbol".
	* ld.texi: Document "-z unique-symbol" and "-z nounique-symbol".
	* lexsup.c (elf_static_list_options): Add "-z unique-symbol" and
	"-z nounique-symbol".
	* testsuite/ld-elf/elf.exp: Add PR ld/26391 tests.
	* testsuite/ld-elf/pr26391.nd: New file.
	* testsuite/ld-elf/pr26391.out: Likewise.
	* testsuite/ld-elf/pr26391a.c: Likewise.
	* testsuite/ld-elf/pr26391b.c: Likewise.
	* testsuite/ld-elf/pr26391c.c: Likewise.
	* testsuite/ld-elf/pr26391d.c: Likewise.
2020-09-12 05:37:43 -07:00
GDB Administrator
e71774ed24 Automatic date update in version.in 2020-09-12 00:00:07 +00:00
Felix Willgerodt
2a67f09db1 Add bfloat16 support for AVX512 register view.
This adds support for the bfloat16 datatype, which can be seen as a short
version of FP32, skipping the least significant 16 bits of the mantissa.
Since the datatype is currently only supported by the AVX512 registers,
the printing of bfloat16 values is only supported for xmm, ymm and zmm
registers.

gdb/ChangeLog:
2020-09-11  Moritz Riesterer  <moritz.riesterer@intel.com>
	    Felix Willgerodt  <Felix.Willgerodt@intel.com>

	* gdbarch.sh: Added bfloat16 type.
	* gdbarch.c: Regenerated.
	* gdbarch.h: Regenerated.
	* gdbtypes.c (floatformats_bfloat16): New struct.
	(gdbtypes_post_init): Add builtin_bfloat16.
	* gdbtypes.h (struct builtin_type) <builtin_bfloat16>: New member.
	(floatformats_bfloat16): New struct.
	* i386-tdep.c (i386_zmm_type): Add field "v32_bfloat16"
	(i386_ymm_type): Add field "v16_bfloat16"
	(i386_gdbarch_init): Add set_gdbarch_bfloat16_format.
	* target-descriptions.c (make_gdb_type): Add case TDESC_TYPE_BFLOAT16.
	* gdbsupport/tdesc.cc (tdesc_predefined_types): New member bfloat16.
	* gdbsupport/tdesc.h (tdesc_type_kind): New member TDESC_TYPE_BFLOAT16.
	* features/i386/64bit-avx512.xml: Add bfloat16 type.
	* features/i386/64bit-avx512.c: Regenerated.
	* features/i386/64bit-sse.xml: Add bfloat16 type.
	* features/i386/64bit-sse.c: Regenerated.

gdb/testsuite/ChangeLog:
2020-09-11  Moritz Riesterer  <moritz.riesterer@intel.com>
	    Felix Willgerodt  <Felix.Willgerodt@intel.com>

	* x86-avx512bf16.c: New file.
	* x86-avx512bf16.exp: Likewise.
	* lib/gdb.exp (skip_avx512bf16_tests): New function.
2020-09-11 11:42:47 -07:00
Felix Willgerodt
1347d11109 i386-tdep: Fix naming in zmm and ymm type descriptions.
gdb/Changelog:
2020-07-02  Felix Willgerodt  <felix.willgerodt@intel.com>

	* i386-tdep.c (i386_zmm_type): Fix field names.
	(i386_ymm_type): Fix field names.
2020-09-11 11:36:14 -07:00
Felix Willgerodt
dae7c5a444 Sync include, libiberty with GCC.
include:
2020-09-10  Felix Willgerodt  <felix.willgerodt@intel.com>

    Sync with GCC
    2020-08-17  Felix Willgerodt  <felix.willgerodt@intel.com>

    * floatformat.h (floatformat_bfloat16_big): New.
    (floatformat_bfloat16_little): New.

libiberty:
2020-09-10  Felix Willgerodt  <felix.willgerodt@intel.com>

    Sync with GCC
    2020-08-17  Felix Willgerodt  <felix.willgerodt@intel.com>

    * floatformat.c (floatformat_bfloat16_big): New.
    (floatformat_bfloat16_little): New.
2020-09-11 11:32:00 -07:00
Mark Wielaard
edc7a80a9c gas: Don't error when .debug_line already exists, unless .loc was used
When -g was used to generate DWARF gas would error out when a .debug_line
already exists. But when a .debug_info section already exists it would
simply skip generating one without warning or error. Do the same for
.debug_line. It is only an error when the user explicitly uses .loc
directives and also generates the .debug_line table itself.

The tests are unfortunately arch specific because the line table is only
generated when actual instructions have been emitted. Use i386 because
that is probably the most used architecture. Before this patch the new
dwarf-line-2 testcase would fail, with this patch it succeeds (and doesn't
try to add its own line table).

gas/ChangeLog:

    * as.texi (-g): Explicitly mention when .debug_info and .debug_line
    are generated for the DWARF format.
    (Loc): Add that it is an error to both use a .loc directive and
    generate a .debug_line yourself.
    * dwarf2dbg.c (dwarf2_any_loc_directive_seen): New static variable.
    (dwarf2_directive_loc): Set dwarf2_any_loc_directive_seen to TRUE.
    (dwarf2_finish): Check dwarf2_any_loc_directive_seen before emitting
    an error. Only create .debug_line if it is empty (or doesn't exist).
    * testsuite/gas/i386/i386.exp: Add dwarf2-line-{1,2,3,4} when testing
    an elf target.
    * testsuite/gas/i386/dwarf2-line-{1,2,3,4}.{s,d,l}: New test files.
2020-09-11 19:18:44 +02:00
Cooper Qu
548f527578 CSKY: Change ISA flag's type to bfd_uint64_t and fix build error.
The previous patch missed one modification.
Following is the error message:
gas/config/tc-csky.c:806:5: error: 'CSKY_ARCH_804' undeclared here
(not in a function); did you mean 'CSKY_ARCH_807'?

include/
	* opcode/csky.h (CSKYV1_ISA_E1): Convert to bfd_uint64_t type.
	(CSKYV2_ISA_E1): Likewise.
	(CSKYV2_ISA_1E2): Likewise.
	(CSKYV2_ISA_2E3): Likewise.
	(CSKYV2_ISA_3E7): Likewise.
	(CSKYV2_ISA_7E10): Likewise.
	(CSKYV2_ISA_3E3R1): Likewise.
	(CSKYV2_ISA_3E3R2): Likewise.
	(CSKYV2_ISA_10E60): Likewise.
	(CSKYV2_ISA_3E3R3): Likewise.
	(CSKY_ISA_TRUST): Likewise.
	(CSKY_ISA_CACHE): Likewise.
	(CSKY_ISA_NVIC): Likewise.
	(CSKY_ISA_CP): Likewise.
	(CSKY_ISA_MP): Likewise.
	(CSKY_ISA_MP_1E2): Likewise.
	(CSKY_ISA_JAVA): Likewise.
	(CSKY_ISA_MAC): Likewise.
	(CSKY_ISA_MAC_DSP): Likewise.
	(CSKY_ISA_DSP): Likewise.
	(CSKY_ISA_DSP_1E2): Likewise.
	(CSKY_ISA_DSP_ENHANCE): Likewise.
	(CSKY_ISA_DSPE60): Likewise.
	(CSKY_ISA_FLOAT_E1): Likewise.
	(CSKY_ISA_FLOAT_1E2): Likewise.
	(CSKY_ISA_FLOAT_1E3): Likewise.
	(CSKY_ISA_FLOAT_3E4): Likewise.
	(CSKY_ISA_FLOAT_7E60): Likewise.
	(CSKY_ISA_VDSP): Likewise.
	(CSKY_ISA_VDSP_2): Likewise.
	(CSKY_ARCH_804): Define.
	(CSKY_ARCH_805): Define.
	(CSKY_ARCH_800): Define.
2020-09-12 00:56:01 +08:00
Jeremy Drake
9cdc5bacdd Fix a segfault when creating an import library with 0 exports.
PR 26588
	* emultempl/pe.em (_finish): Only generate a import library if not
	exporting relocs.
	* emultempl/pep.em: Likewise.
2020-09-11 17:51:16 +01:00
Tom de Vries
ad570dd76c [gdb/testsuite] Kfail gdb.cp/ambiguous.exp FAILs for PR26602
Kfail these FAILs as caused by PR exp/26602:
...
FAIL: gdb.cp/ambiguous.exp: print x.x
FAIL: gdb.cp/ambiguous.exp: print n.x
FAIL: gdb.cp/ambiguous.exp: print j.x
FAIL: gdb.cp/ambiguous.exp: print jva1.x
FAIL: gdb.cp/ambiguous.exp: print jva2.x
FAIL: gdb.cp/ambiguous.exp: print (A1)j
FAIL: gdb.cp/ambiguous.exp: print (A1)jva1
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-09-11  Tom de Vries  <tdevries@suse.de>

	PR exp/26602
	* gdb.cp/ambiguous.exp: Add KFAILs for PR26602.
2020-09-11 15:56:44 +02:00
H.J. Lu
8d58ed37f1 x86: Add NT_X86_CET note
Define NT_X86_CET which is the proposed note for x86 CET state to support
Intel CET in Linux kernel.  Double check it after Intel CET patches have
been merged into Linux kernel.

binutils/

	* readelf.c (get_note_type): Support NT_X86_CET.

include/

	* elf/common.h (NT_X86_CET): New.
2020-09-11 05:52:06 -07:00
Nick Clifton
ce139cd560 Fix the debuglink following code to recursively load links found in the newly loaded debug info.
PR 26595
	* dwarf.c (load_separate_debug_info): Return NULL rather than
	FALSE in error situations.
	(load_separate_debug_file): Move code to load debug links to ...
	(check_for_and_load_links): ... here.  New function.  Load
	separate debug information pointed to by debuglink and
	debugaltlink sections.  Recursively scan newly loaded debug
	information for more links and load them too.
2020-09-11 13:30:56 +01:00
Tankut Baris Aktemur
7a4e8e7d55 gdb/breakpoint: fix typo in help message of "set breakpoint condition-evaluation"
The options for the "breakpoint condition-evaluation" setting are
"host", "target", and "auto".  The help message mentions the option
"gdb" at one point instead of "host".  Fix this typo.  Also add a period.

gdb/ChangeLog:
2020-09-11  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* breakpoint.c: Fix typo in the help message of the
	"set breakpoint condition-evaluation" command.
2020-09-11 13:50:09 +02:00
Tankut Baris Aktemur
a56f73917a gdb/testsuite: remove stale comment in gdb.base/bp-cmds-execution-x-script.exp
Remove a stale command that is apparently forgotten after a copy-paste
from 'gdb.base/break-main-file-remove-fail.exp'.

gdb/testsuite/ChangeLog:
2020-09-11  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>

	* gdb.base/bp-cmds-execution-x-script.exp: Remove a stale comment.
2020-09-11 13:44:09 +02:00
GDB Administrator
580decb024 Automatic date update in version.in 2020-09-11 00:00:13 +00:00
Siddhesh Poyarekar
c7cd291722 aarch64: Return an error on conditional branch to an undefined symbol
The fix in 7e05773767 introduced a PLT
for conditional jumps when the target symbol is undefined.  This is
incorrect because conditional branch relocations are not allowed to
clobber IP0/IP1 and hence, should not result in a dynamic relocation.

Revert that change and in its place, issue an error when the target
symbol is undefined.

bfd/

	2020-09-10  Siddhesh Poyarekar  <siddesh.poyarekar@arm.com>

	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Revert
	changes in 7e05773767.  Set
	error for undefined symbol in BFD_RELOC_AARCH64_BRANCH19 and
	BFD_RELOC_AARCH64_TSTBR14 relocations.

ld/

	2020-09-10  Siddhesh Poyarekar  <siddesh.poyarekar@arm.com>

	* testsuite/ld-aarch64/emit-relocs-560.d: Expect error instead
	of valid output.
2020-09-10 21:42:37 +05:30
H.J. Lu
93d49941ed ld: Add more tests for --as-needed
Prior to

commit 1e3b96fd6c
Author: Alan Modra <amodra@gmail.com>
Date:   Fri Sep 4 13:54:21 2020 +0930

    Allow plugin syms to mark as-needed shared libs needed

when removing unused IR symbol references, ld didn't add unnecessary
DT_NEEDED libraries which may lead to undefined symbol reference in a
--as-needed library when the symbol is defined in a prior --as-needed
library and there is no reference in relocatable inputs.  This behavior
is desirable since it ensures that both lazy and non-lazy bindings work
the same way.  The problem is with --as-needed libraries, which happens
with and without LTO.  Now, the linker may add many unnecessary DT_NEEDED
libraries for IR inputs.

	PR ld/26590
	* testsuite/ld-elf/pr26590.err: New file.
	* testsuite/ld-elf/pr26590a.c: Likewise.
	* testsuite/ld-elf/pr26590b.c: Likewise.
	* testsuite/ld-elf/pr26590c.c: Likewise.
	* testsuite/ld-elf/pr26590d.c: Likewise.
	* testsuite/ld-elf/shared.exp: Run ld/26590 tests.
2020-09-10 07:52:20 -07:00
Alan Modra
918619e5e5 PR26597, FAIL: gdb.dlang/demangle.exp: _D8demangle4testFI5identZv
gcc commit 387d0773f3 changed the D demangler, with the following
commit log:

    libiberty: Add support for `in' and `in ref' storage classes.

    The storage class `in' is now a first-class citizen with its own mangle
    symbol, of which also permits `in ref'.  Previously, `in' was an alias
    to `const [scope]', which is a type constructor.

    The mangle symbol repurposed for this is `I', which was originally used
    by identifier types.  However, while TypeIdentifier is part of the
    grammar, it must be resolved to some other entity during the semantic
    passes, and so shouldn't appear anywhere in the mangled name.

    Old tests that are now no longer valid have been removed.

This patch makes the same changes to the gdb testsuite as were made to
the upstream gcc libiberty testsuite.

gdb/testsuite/
	PR 26597
	* gdb.dlang/demangle.exp: Update tests as per gcc commit 387d0773f3.
2020-09-10 23:57:56 +09:30
Kamil Rytarowski
62ba50486f Add minimal and functional NetBSD/amd64 gdbserver
Implement the following functionality: create_inferior,
post_create_inferior, attach, kill, detach, mourn, join, thread_alive,
resume, wait, fetch_registers, store_registers, read_memory, write_memory,
request_interrupt, supports_read_auxv, read_auxv,
supports_hardware_single_step, sw_breakpoint_from_kind,
supports_z_point_type, insert_point, remove_point,
stopped_by_sw_breakpoint, supports_qxfer_siginfo, qxfer_siginfo,
supports_stopped_by_sw_breakpoint, supports_non_stop,
supports_multi_process, supports_fork_events, supports_vfork_events,
supports_exec_events, supports_disable_randomization,
supports_qxfer_libraries_svr4, qxfer_libraries_svr4,
supports_pid_to_exec_file, pid_to_exec_file, thread_name,
supports_catch_syscall.

The only CPU architecture supported: x86_64.

Implement only support for hardware assisted single step and
software breakpoint.

Implement support only for regular X86 registers, thus no FPU.

gdbserver/ChangeLog:

       * netbsd-low.cc: Add.
       * netbsd-low.h: Likewise.
       * netbsd-amd64-low.cc: Likewise.
       * Makefile.in (SFILES): Register "netbsd-low.cc", "netbsd-low.h",
       "netbsd-amd64-low.cc".
       * configure.srv: Add x86_64-*-netbsd*.
2020-09-10 15:40:10 +02:00
Kamil Rytarowski
cf4ac4be12 Switch local native code to gdb/nat shared functions
No functional change as the same functionality inlined in nbsd-nat.c
is offered in gdb/nat/netbsd-nat.c.

gdb/ChangeLog:

	* nbsd-nat.c: Include "nat/netbsd-nat.h".
	* (nbsd_nat_target::pid_to_exec_file)
	(nbsd_nat_target::thread_alive, nbsd_nat_target::thread_name)
	(nbsd_nat_target::post_startup_inferior)
	(nbsd_nat_target::post_attach, nbsd_nat_target::xfer_partial)
	(nbsd_add_threads): Switch local code to common gdb/nat functions.
	* (nbsd_pid_to_cmdline): Call sysctl from the global namespace.
	* (nbsd_thread_lister): Remove.
2020-09-10 15:39:45 +02:00
Kamil Rytarowski
f404573e4f Avoid double free in startup_inferior
Do not free the last execd pathname as it will be used in
prepare_resume_reply(), after attaching a client side.

gdb/ChangeLog:

	* fork-inferior.c (startup_inferior): Avoid double free.
2020-09-10 15:39:19 +02:00
Kamil Rytarowski
1ccb2c170c Add a common utility function to read and write siginfo_t in inferior
gdb/ChangeLog:

        * netbsd-nat.h (netbsd_nat::qxfer_siginfo): Add.
        * netbsd-nat.c (netbsd_nat::qxfer_siginfo): Likewise.
2020-09-10 15:38:57 +02:00
Kamil Rytarowski
feedfcc773 Add netbsd_nat::enable_proc_events in gdb/nat
Add generic function to enable debugger events in a process.

gdb/ChangeLog:

        * netbsd-nat.h (netbsd_nat::enable_proc_events): Add.
	* netbsd-nat.c: Include <sys/ptrace.h>.
	* (netbsd_nat::enable_proc_events): Add.
2020-09-10 15:38:23 +02:00
Kamil Rytarowski
c489f8c6e6 Add gdb/nat common functions for listing threads
Add netbsd_nat::netbsd_thread_lister a generic thread lister, used
internally in netbsd-nat.c, copied from gdb/nbsd-nat.c.

Add public extern functions for listing threads:
 * netbsd_nat::thread_alive
 * netbsd_nat::thread_name
 * netbsd_nat::for_each_thread

gdb/ChangeLog:

	* netbsd-nat.h: Include "gdbsupport/function-view.h".
	* (netbsd_nat::thread_alive, netbsd_nat::thread_name)
	(netbsd_nat::for_each_thread): Add.
	* netbsd-nat.c: Include "gdbsupport/common-defs.h" and
	"gdbsupport/common-debug.h".
	* (netbsd_nat::netbsd_thread_lister)
	(netbsd_nat::thread_alive, netbsd_nat::thread_name)
	(netbsd_nat::for_each_thread): Add.
2020-09-10 15:37:52 +02:00
Kamil Rytarowski
330662f684 Add netbsd_nat::pid_to_exec_file
gdb/ChangeLog:

        * netbsd-nat.h: Include <unistd.h>.
        * (netbsd_nat::pid_to_exec_file): Add.
        * netbsd-nat.c: Include <sys/types.h> and <sys/sysctl.h>.
        * (netbsd_nat::pid_to_exec_file) Add.
2020-09-10 15:37:32 +02:00
Kamil Rytarowski
70b67307e9 Build nat/netbsd-nat.o for the NetBSD native target
gdb/ChangeLog:

	* configure.nat (NATDEPFILES): Add nat/netbsd-nat.o when needed.
2020-09-10 15:36:27 +02:00
Kamil Rytarowski
99cf6da66a Register a placeholder for NetBSD shared functions in gdb/nat
gdb/ChangeLog:

	* netbsd-nat.h: New file.
	* netbsd-nat.c: Likewise.
2020-09-10 15:35:51 +02:00
Kamil Rytarowski
48c9b43332 Add handle_eintr to wrap EINTR handling in syscalls
gdbsupport/ChangeLog:

	* eintr.h: New file.
2020-09-10 15:35:12 +02:00
Nick Clifton
7ad578807a Stop symbols generated by the annobin gcc plugin from breaking the disassembly of PowerPC binaries.
* ppc-dis.c (ppc_symbol_is_valid): New function.  Returns false
	for hidden, local, no-type symbols.
	(disassemble_init_powerpc): Point the symbol_is_valid field in the
	info structure at the new function.
2020-09-10 13:23:11 +01:00
Cooper Qu
89ce8eab23 CSKY: Enable extend lrw by default for CK802, CK803 and CK860.
gas/
	* config/tc-csky.c (md_begin): Enable extend lrw by default for
	CK802, CK803 and CK860.
2020-09-10 17:41:38 +08:00
Cooper Qu
79c8d443b1 CSKY: Add L2Cache instructions for CK860.
opcodes/
	* csky-opc.h (csky_v2_opcodes): Add L2Cache instructions.
	* testsuite/gas/csky/cskyv2_ck860.d : Adjust to icache.iva
	opcode fixing.
2020-09-10 17:41:23 +08:00
Cooper Qu
525a0aa301 CSKY: Add new arches while refine the cpu option process.
Add arches CK804, CK805 and CK800. CK800 is an special arch which
support all instructions for CSKYV2. Refine the cpu tables to
simplify adding a new cpu.

Co-Authored-By: Lifang Xia <lifang_xia@c-sky.com>

gas/
	* config/tc-csky.c (struct csky_cpu_info): Add new members
	isa_flag, features and ver.
	(struct csky_cpu_feature): New.
	(struct csky_cpu_version): New.
	(CSKY_FEATURE_MAX): Define.
	(CSKY_CPU_REVERISON_MAX): Define.
	(FEATURE_DSP_EXT, FEATURE_DSP, FEATURE_MMU, FEATURE_VDSP,
	 FEATURE_FLOAT, FEATURE_TRUST, FEATURE_JAVA, FEATURE_SHIELD):
	Define, each standard one collection of instructions.
	(CSKY_FEATURES_DEF_NULL, CSKY_FEATURES_DEF_e,
	 CSKY_FEATURES_DEF_t, CSKY_FEATURES_DEF_f, CSKY_FEATURES_DEF_v,
	 CSKY_FEATURES_DEF_ef, CSKY_FEATURES_DEF_jt,
	 CSKY_FEATURES_DEF_efht, CSKY_FEATURES_DEF_efv,
	 CSKY_FEATURES_DEF_eft, CSKY_FEATURES_DEF_d,
	 CSKY_FEATURES_DEF_df, CSKY_FEATURES_DEF_ft,
	 CSKY_FEATURES_DEF_tv, CSKY_FEATURES_DEF_fv,
	 CSKY_FEATURES_DEF_dft, CSKY_FEATURES_DEF_dfv,
	 CSKY_FEATURES_DEF_ftv, CSKY_FEATURES_DEF_eftv): Define,
	the features combination used by cpu.
	(CSKY_CPU_REVERISON_r0p0, CSKY_CPU_REVERISON_r1p0,
	 CSKY_CPU_REVERISON_r2p0, CSKY_CPU_REVERISON_r3p0,
	 CSKY_CPU_REVERISON_RESERVED, CSKY_CPU_REVERISON_R3):
	Define, version information used by cpu.
	(csky_cpus): Refine, and add CK804, CK805 and CK800.
	(parse_cpu): Refine.
	(parse_arch): Refine.
	(md_show_usage): Refine.
	(md_begin): Refine.

include/
	* opcode/csky.h (CSKY_ARCH_804): Define.
	(CSKY_ARCH_805): Define.
	(CSKY_ARCH_800): Define.
2020-09-10 17:41:11 +08:00