Commit Graph

103361 Commits

Author SHA1 Message Date
Jon Turney
7d155da3d9
Add sniffer for Cygwin x86_64 core dumps
Similarly to existing i386_cygwin_core_osabi_sniffer()

gdb/ChangeLog:

2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>

	* amd64-windows-tdep.c (amd64_cygwin_core_osabi_sniffer): New.
	(_initialize_amd64_windows_tdep): Register amd64_cygwin_core_osabi_sniffer.
2020-09-18 17:12:08 +01:00
Pedro Alves
e8ef12b996 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:18 +01:00
Pedro Alves
e11daf7a2e 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:18 +01:00
Nick Clifton
5947daaf75 Ensure that space allocated by assembler directives converts from an octet count to a byte count.
PR 26556
	* read.c (bss_alloc): Convert size parameter from octets to
	bytes.
2020-09-18 13:28:46 +01:00
Andrew Burgess
d0edc2b806 gdb/testsuite: Add missing expected results
The tests in this script are driven from two lists of expected
results, one of the lists is missing some data so DejaGNU ends up
passing the empty string to gdb_test, which means the test always
passes.

This commit adds the missing expected results into the script.  The
tests still pass so there's no change in the results, but we are now
actually checking GDB's behaviour.

gdb/testsuite/ChangeLog:

	* gdb.fortran/array-slices.exp: Add missing message data.
2020-09-18 10:51:35 +01:00
GDB Administrator
aab4ab8972 Automatic date update in version.in 2020-09-18 00:00:09 +00:00
Pedro Alves
7474326cb9 gdb.cp/call-c.exp C++ify
Make the testcase work when built with a C++ compiler.

gdb/testsuite/ChangeLog:

	* gdb.cp/call-c-1.c (foo) [__cplusplus]: Add extern "C".
2020-09-18 00:09:20 +01:00
Pedro Alves
dd23068d52 gdb.python/py-frame-inline.exp and C++
Make the testcase work when built with a C++ compiler.

gdb/testsuite/ChangeLog:

	* gdb.python/py-frame-inline.exp: Adjust to optionally expect a
	full prototype.
2020-09-18 00:09:02 +01:00
Pedro Alves
0640a54339 gdb.python/py-as-string.exp C++ify
Make the testcase buildable with a C++ compiler.

gdb/testsuite/ChangeLog:

	* gdb.python/py-as-string.c: Add cast.
2020-09-18 00:08:44 +01:00
Pedro Alves
ef0cdbc16f gdb.base/sizeof.exp C++ify
Fixes:

  src/gdb/testsuite/gdb.base/sizeof.c:54:9: error: cannot initialize a variable of type 'char *' with an lvalue of type 'void *'

... when the testcase is built with a C++ compiler.

gdb/testsuite/ChangeLog:

	* gdb.base/sizeof.c (fill): Add cast.
2020-09-18 00:08:17 +01:00
Pedro Alves
3a5eeb8b63 gdb.base/share-env-with-gdbserver.exp C++ify
gdb/testsuite/ChangeLog:

	* gdb.base/share-env-with-gdbserver.c (main): Add cast.
2020-09-18 00:07:59 +01:00
Pedro Alves
a8129512f6 gdb.base/{prologue,symbol-alias}.exp C++ify
Make these testcases work when compiled as C++ programs.

These testcases use the alias attribute, which requires passing in the
target function's mangled name in C++.  To avoid having to figure out
how the functions are mangled, explicitly specify a linkage name.
This is preferred over 'extern "C"' because that doesn't work with
static functions.

gdb/testsuite/ChangeLog:

	* gdb.base/prologue.c [__cplusplus] (marker): Explicitly specify
	linkage name.
	* gdb.base/prologue.exp: Use print /d.
	* gdb.base/symbol-alias.exp: Handle C++ output.
	* gdb.base/symbol-alias2.c: Handle C++ output.
	[__cplusplus] (func): Explicitly specify linkage name.
2020-09-18 00:07:41 +01:00
Pedro Alves
a83cdcb636 gdb.python/py-nested-maps.exp C++ify
This adjusts gdb.python/py-nested-maps.c to make it buildable as C++ program.

key_t is renamed because of:

  src/gdb/testsuite/gdb.python/py-nested-maps.c:23:8: error: definition of type 'key_t' conflicts with typedef of the same name
  struct key_t
	 ^
  /usr/include/x86_64-linux-gnu/sys/types.h:121:17: note: 'key_t' declared here
  typedef __key_t key_t;
		  ^

gdb/testsuite/ChangeLog:

	* gdb.python/py-nested-maps.c (struct key_t): Rename to...
	(struct my_key_t): ... this.  Adjust all references.
	(struct value_t): Rename to ...
	(struct my_value_t): ... this.  Adjust all references.
	(create_map, add_map_element, create_map_map)
	(add_map_map_element): Add casts.
2020-09-18 00:07:22 +01:00
Pedro Alves
d4bcee5ccc gdb.python/{py-framefilter-mi,py-framefilter}.c C++ify
This adjusts:

 gdb.python/{py-framefilter-mi,py-framefilter}.c

to make them buildable as C++ programs.

gdb/testsuite/ChangeLog:

	* gdb.python/py-framefilter-mi.c (funca): Add casts.
	* gdb.python/py-framefilter.c.c (funca, func2): Add casts.
2020-09-18 00:07:03 +01:00
Pedro Alves
81f904895e gdb.mi/var-cmd.c C++ify
This adjusts gdb.mi/var-cmd.c to make it buildable as a C++ program.

gdb/testsuite/ChangeLog:

	* gdb.mi/var-cmd.c (do_anonymous_type_tests): Add cast.
2020-09-18 00:06:39 +01:00
Pedro Alves
0a229804ab gdb.base/{exprs,ptype,ptype1,setvar,whatis}.c C++ify
This adjusts:

 gdb.base/{exprs,ptype,ptype1,setvar,whatis}.c,

to make them buildable as C++ programs.

gdb/testsuite/ChangeLog:

	* gdb.base/exprs.c: Replace 'this' with 'self' throughout.
	* gdb.base/ptype.c: : Replace 'this' with 'self' throughout.
	(charfoo, intfoo): Define full prototype.
	* gdb.base/ptype1.c (charfoo): Define full prototype.
	* gdb.base/setvar.c: Replace 'this' with 'self' throughout.
	* gdb.base/whatis.c: Replace 'this' with 'self' throughout.
2020-09-18 00:06:17 +01:00
Pedro Alves
c3e5138dcc gdb.base/charset.{c,exp} C++ify
Adjust gdb.base/charset.{c,exp} so that the testcase works when
compiled as a C++ program.

wchar_t is built-in in C++, so don't make a phony typedef.

The "print /d" is so that we also get "1" instead of "true" in C++
mode.

gdb/testsuite/ChangeLog:

	* gdb.base/charset.c [__cplusplus] (wchar_t, char16_t, char32_t):
	Don't define.
	(utf_32_string): Compile for both C and C++.
	* gdb.base/charset.exp: Use "print /d".
2020-09-18 00:05:57 +01:00
Pedro Alves
151fdbad7a gdb.base/watchpoint.{c,exp}
Adjust gdb.base/watchpoint.c so that it can be built as a C++ program.

Fixes:
gdb compile failed, src/gdb/testsuite/gdb.base/watchpoint.c:33:16: error: initializer-string for array of chars is too long [-fpermissive]
   33 | char buf[30] = "testtesttesttesttesttesttestte";
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gdb/testsuite/gdb.base/watchpoint.c:62:14: error: expected unqualified-id before 'nullptr'
   62 | struct foo5 *nullptr;
      |              ^~~~~~~

gdb/testsuite/ChangeLog:

	* gdb.base/watchpoint.c (buf): Make it 31 bytes.
	(nullptr): Rename to ...
	(null_ptr): ... this.
	* gdb.base/watchpoint.exp: Adjust to rename.
2020-09-18 00:05:39 +01:00
Pedro Alves
18a25b6481 gdb.base/printcmds.c C++-ify
Adjust gdb.base/printcmds.c to make it buildable as a C++ program.

gdb/testsuite/ChangeLog:

	* gdb.base/printcmds.c (three, flag_enum_without_zero)
	(three_not_flag): Add casts.
2020-09-18 00:05:10 +01:00
Pedro Alves
11fac33796 gdb.base/examine-backward.exp C++ify and Clang
Adjust gdb.base/examine-backward.exp to let the testcase build and run
as a C++ program, built with either G++ or Clang++.

The change to use unsigned char instead of plain char is to avoid
narrowing warnings:

  gdb compile failed, src/gdb/testsuite/gdb.base/examine-backward.c:55:1: error: narrowing conversion of '227' from 'int' to 'char' [-Wnarrowing]
     55 | };
	| ^

gdb/testsuite/ChangeLog:

	* gdb.base/examine-backward.c (Barrier, TestStrings): Now unsigned
	char array.
	(main): Add references to Barrier, TestStrings, TestStringsH and
	TestStringsW.
	* gdb.base/examine-backward.exp: Issue "set print asm-demangle on"
	and expect a full prototype in C++.
2020-09-18 00:04:47 +01:00
Pedro Alves
52626c5826 gdb.base/nested-addr.{c,exp} C++ify
Adjust gdb.base/nested-addr.exp to let the testcase build and run as a
C++ program.  "print /d" is used so we get "= 1" instead of "= true"
in C++ mode.

gdb/testsuite/ChangeLog:

	* gdb.base/nested-addr.c (main): Add cast.
	* gdb.base/nested-addr.exp: Use "print /d".
2020-09-18 00:04:29 +01:00
Pedro Alves
52bb090268 gdb.base/break.exp C++ify
Some adjustments to make gdb.base/break.exp work when compiled as a
C++ program.  Passes cleanly with Clang++, but not with G++.  The
latter puts a breakpoint at an unexpected line in one case.  It seems
like a bug that gcc and g++ behave differently here.

gdb/testsuite/ChangeLog:

	* gdb.base/break.exp (func): New.  Use it throughout when
	expecting a function name.
2020-09-18 00:04:12 +01:00
Pedro Alves
73e18ac9da gdb.base/display.exp C++ify
This makes the testcase work when compiled with C++ compiler.

gdb/testsuite/ChangeLog:

	* gdb.base/display.exp: Issue "set print asm-demangle on".
2020-09-18 00:03:37 +01:00
Pedro Alves
c8b188085d gdb.base/find.exp C++ify
This makes the testcase work when compiled with C++ compiler.

We need #include <string.h> for memset.

gdb/testsuite/ChangeLog:

	* gdb.base/find.c: Include <string.h>.
	(init_bufs): Add cast.
	* gdb.base/find.exp: Issue "set print asm-demangle on".
2020-09-17 23:33:40 +01:00
Tom Tromey
c1e1314d00 Change management of tdesc_arch_data
While working on something else, I noticed that tdesc_data_cleanup
took a void* parameter.  Looking more into this, I found that
tdesc_use_registers expected a transfer of ownership.

I think it's better to express this sort of thing via the type system,
when possible.  This patch changes tdesc_data_alloc to return a unique
pointer, changes tdesc_use_registers to accept an rvalue reference,
and then adapts all the users.

Note that a deleter structure is introduced to avoid having to move
tdesc_arch_data to the header file.

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

	* tic6x-tdep.c (tic6x_gdbarch_init): Update.
	* target-descriptions.h (struct tdesc_arch_data_deleter): New.
	(tdesc_arch_data_up): New typedef.
	(tdesc_use_registers, tdesc_data_alloc): Update.
	(tdesc_data_cleanup): Don't declare.
	* target-descriptions.c (tdesc_data_alloc): Return a
	tdesc_arch_data_up.
	(tdesc_arch_data_deleter::operator()): Rename from
	tdesc_data_cleanup.  Change argument type.
	(tdesc_use_registers): Change early_data to an rvalue reference.
	(tdesc_use_registers): Don't use delete.
	* sparc-tdep.c (sparc32_gdbarch_init): Update.
	* s390-tdep.c (s390_gdbarch_init): Update.
	* rx-tdep.c (rx_gdbarch_init): Update.
	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
	* riscv-tdep.c (riscv_gdbarch_init): Update.
	* or1k-tdep.c (or1k_gdbarch_init): Update.
	* nios2-tdep.c (nios2_gdbarch_init): Update.
	* nds32-tdep.c (nds32_gdbarch_init): Update.
	* mips-tdep.c (mips_gdbarch_init): Update.
	* microblaze-tdep.c (microblaze_gdbarch_init): Update.
	* m68k-tdep.c (m68k_gdbarch_init): Update.
	* i386-tdep.c (i386_gdbarch_init): Update.
	* arm-tdep.c (arm_gdbarch_init): Update.
	* arc-tdep.c (arc_tdesc_init): Update.
	(arc_gdbarch_init): Update.
	* aarch64-tdep.c (aarch64_gdbarch_init): Update.
2020-09-17 14:28:06 -06:00
Hannes Domani
0363df3db7 Fix ctrl-c when debugging WOW64 processes
DebugBreakProcess starts a new thread in the target process with the
entry point DbgUiRemoteBreakin, where an int3 triggers a breakpoint
exception for gdb.

But this uses DbgUiRemoteBreakin of the 64bit ntdll.dll even for
WOW64 processes.
It stops in 64bit code, Wow64GetThreadContext reports a wrong pc without
the int3, and gdb lets the target process continue.

So this uses DbgUiRemoteBreakin of the 32bit ntdll.dll as the thread
entry point for WOW64 processes instead.

gdb/ChangeLog:

2020-09-17  Hannes Domani  <ssbssa@yahoo.de>

	* windows-nat.c (ctrl_c_handler): Use 32bit DbgUiRemoteBreakin
	for WOW64 processes.
2020-09-17 22:17:01 +02:00
Tom Tromey
280a9412e4 Use htab_up in dwarf2/read.c
This changes dwarf2/read.c to use htab_up rather than explicit calls
to htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* dwarf2/read.c (compute_compunit_symtab_includes): Use htab_up.
2020-09-17 11:58:56 -06:00
Tom Tromey
6108fd1823 Use htab_up in type copying
This changes create_copied_types_hash to return an htab_up, then
modifies the callers to avoid explicit use of htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* value.c (preserve_values): Update.
	* python/py-type.c (save_objfile_types): Update.
	* guile/scm-type.c (save_objfile_types): Update.
	* gdbtypes.h (create_copied_types_hash): Return htab_up.
	* gdbtypes.c (create_copied_types_hash): Return htab_up.
	* compile/compile-object-run.c (compile_object_run): Update.
2020-09-17 11:58:56 -06:00
Tom Tromey
fa9b11648c Use htab_up in typedef_hash_table
This changes typedef_hash_table to use htab_up rather than explicit
calls to htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* typeprint.h (class typedef_hash_table) <~typedef_hash_table>:
	Remove.
	<m_table>: Now htab_up.
	* typeprint.c (typedef_hash_table::recursively_update)
	(typedef_hash_table::add_template_parameters)
	(typedef_hash_table::typedef_hash_table): Update.
	(typedef_hash_table::~typedef_hash_table): Remove.
	(typedef_hash_table::typedef_hash_table)
	(typedef_hash_table::find_global_typedef)
	(typedef_hash_table::find_typedef): Update.
2020-09-17 11:58:56 -06:00
Tom Tromey
eb53f10555 Use htab_up in target-descriptions.c
This changes target-descriptions.c to use htab_up rather than explicit
calls to htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* target-descriptions.c (tdesc_use_registers): Use htab_up.
2020-09-17 11:58:56 -06:00
Tom Tromey
7a8a5d47c3 Use htab_up in linespec.c
This changes linespec.c to use htab_up rather than explicit calls to
htab_delete.  Note that a use still exists in this file, because
linespec_state hasn't been converted to have a real destructor.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* linespec.c (class decode_compound_collector)
	<~decode_compound_collector>: Remove.
	<m_unique_syms>: Now htab_up.
	(decode_compound_collector::operator ()): Update.
	(class symtab_collector) <~symtab_collector>: Remove.
	<m_symtab_table>: Now htab_up.
	(symtab_collector::operator ()): Update.
2020-09-17 11:58:56 -06:00
Tom Tromey
99032cfcc6 Use htab_up in filename_seen_cache
This changes filename_seen_cache to use htab_up, rather than explicit
calls to htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* filename-seen-cache.c (filename_seen_cache::filename_seen_cache)
	(filename_seen_cache::clear): Update.
	(~filename_seen_cache): Remove.
	(filename_seen_cache::seen): Update.
	* filename-seen-cache.h (class filename_seen_cache) <m_tab>: Now
	htab_up.
	<~filename_seen_cache>: Remove.
	<traverse>: Update.
2020-09-17 11:58:56 -06:00
Tom Tromey
32580f6d2e Use htab_up in completion_tracker
This changes completion_tracker to use htab_up, rather than explicit
calls to htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* completer.c (completion_tracker::discard_completions)
	(completion_tracker::~completion_tracker)
	(completion_tracker::maybe_add_completion)
	(completion_tracker::remove_completion)
	(completion_tracker::recompute_lowest_common_denominator)
	(completion_tracker::build_completion_result): Update.
	* completer.h (class completion_tracker) <have_completions>:
	Update.
	<m_entries_hash>: Now htab_up.
2020-09-17 11:58:56 -06:00
Tom Tromey
c1fb98360c Use htab_up in breakpoint.c
This changes breakpoint.c to use htab_up rather than an explicit
htab_delete.  This simplifies the code somewhat.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* breakpoint.c (ambiguous_names_p): Use htab_up.
2020-09-17 11:58:56 -06:00
Tom Tromey
88f07206fa Use htab_up in auto-load.c
This changes auto-load.c to use htab_up, rather than manually calling
htab_delete.

gdb/ChangeLog
2020-09-17  Tom Tromey  <tom@tromey.com>

	* auto-load.c (struct auto_load_pspace_info)
	<~auto_load_pspace_info, auto_load_pspace_info>: Remove.
	<loaded_script_files, loaded_script_texts>: Change type to
	htab_up.
	(~auto_load_pspace_info) Remove.
	(init_loaded_scripts_info, maybe_add_script_file)
	(maybe_add_script_text, auto_load_info_scripts): Update.
2020-09-17 11:58:56 -06:00
Tom Tromey
9519b2eea0 Make c-exp.y:name_obstack static
c-exp.y:name_obstack is not static, but should be.  This patch makes
the change.  Tested by rebuilding.

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

	* c-exp.y (name_obstack): Now static.
2020-09-17 08:06:01 -06:00
Mikael Pettersson
dd80eb2cff Skip IFUNC relocations in debug sections ignored by ld.so. Fixes some ld test failures on sparc-linux-gnu.
PR ld/18808
	* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Skip IFUNC
	relocations in debug sections, change abort to _bfd_error_handler.
2020-09-17 10:45:39 +01:00
Chungyi Chi
d2cd411356 gdb/riscv: fix decode of c.sdsp instruction
The decode of c.sdsp was incorrectly claiming to be a 4-byte store
instead of an 8-byte store.

gdb/ChangeLog:

	* riscv-tdep.c (riscv-insn::decode): Fix recorded insn type.
2020-09-17 09:45:50 +01:00
Alan Modra
848471acef Tidy gas i386.exp
Possibly a quirk of my version of tcl, but I see "nm-new --help" being
run on non-x86 targets.

	* testsuite/gas/i386/i386.exp: Return early if not x86.
2020-09-17 17:42:53 +09:30
Andrew Burgess
c568ac5ff7 opcodes/csky: return the default disassembler when there is no bfd
The disassembler function should return a valid disassembler function
even when there is no BFD present.  This is implied (I believe) by the
comment in dis-asm.h which says the BFD may be NULL.  Further, it
makes sense when considering that the disassembler is used in GDB, and
GDB may connect to a target and perform debugging even without a BFD
being supplied.

This commit makes the csky_get_disassembler function return the
default disassembler configuration when no bfd is supplied, this is
the same default configuration as is used when a BFD is supplied, but
the BFD has no attributes section.

Before the change configuring GDB with --enable-targets=all and
running the tests gdb.base/all-architectures-2.exp results in many
errors, but after this change there are no failures.

opcodes/ChangeLog:

	* csky-dis.c (csky_get_disassembler): Don't return NULL when there
	is no BFD.
2020-09-17 14:52:05 +08:00
GDB Administrator
c2f876e11e Automatic date update in version.in 2020-09-17 00:00:07 +00:00
Simon Marchi
b650a28273 gdb: use bool in the solib catchpoint area
Use bool instead of int in struct solib_catchpoint and in init_catchpoint &
related functions.

gdb/ChangeLog:

	* breakpoint.h (init_catchpoint): Change int parameter to bool.
	(add_solib_catchpoint): Likewise.
	* breakpoint.c (struct solib_catchpoint) <is_load>: Change type
	to bool.
	(add_solib_catchpoint): Change int parameter/variable to bool.
	(catch_load_or_unload): Likewise.
	(init_catchpoint): Likewise.
	(create_fork_vfork_event_catchpoint): Likewise.
	(catch_fork_command_1): Likewise.
	(catch_exec_command_1): Likewise.

Change-Id: I1faf4506e9109f3ccdd7229ba766dc7d77aa7aa0
2020-09-16 17:26:45 -04:00
Simon Marchi
4d0bcfcf62 gdb: update instance_flags field name in gdb-gdb.py.in
Commit 314ad88df6 ("Use type_instance_flags more throughout") changed
the name of field type::instance_flags to type::m_instance_flags.  It
however missed changing it in the gdb-gdb.py.in file, which results in
this when trying to use the pretty-printer:

    (top-gdb) p *val.type
    Traceback (most recent call last):
      File "/home/smarchi/build/binutils-gdb/gdb/gdb-gdb.py", line 116, in to_string
        % TypeFlagsPrinter(self.val['instance_flags']))
      File "/home/smarchi/build/binutils-gdb/gdb/gdb-gdb.py", line 76, in __str__
        flag_list = [flag.short_name for flag in TYPE_FLAGS
      File "/home/smarchi/build/binutils-gdb/gdb/gdb-gdb.py", line 77, in <listcomp>
        if self.val & flag.value]
    gdb.error: Argument to arithmetic operation not a number or boolean.
    $7 =

This patch fixes it.

gdb/ChangeLog:

	* gdb-gdb.py.in (class StructTypePrettyPrinter) <to_string>:
	Change instance_flags to m_instance_flags.

Change-Id: Ib5e03c08fe41ca11cd71998f2b1c58052879ce95
2020-09-16 16:43:39 -04:00
Tom Tromey
fe83066292 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:32:38 -06:00
John Baldwin
fe5ddfc3ee Assume FreeBSD kernels always report exec events.
FreeBSD kernels have reported exec events via the PL_FLAG_EXEC flag
since 8.2 release.  The most recent release that did not support this
flag is 7.4 released in November of 2011.

Note that the FreeBSD native target already assumed that PL_FLAG_SCE
and PL_FLAG_SCX were always supported on systems supporting
PT_LWPINFO, but those flags were added at the same time as
PL_FLAG_EXEC.  Building the native target on a system without
PL_FLAG_EXEC would have failed to build before this change already as
a result.

gdb/ChangeLog:

	* fbsd-nat.c (fbsd_nat_target::wait): Always check for
	PL_FLAG_EXEC.
	(fbsd_nat_target::insert_exec_catchpoint)
	(fbsd_nat_target::remove_exec_catchpoint): Always define.
	* fbsd-nat.h (fbsd_nat_target::insert_exec_catchpoint)
	(fbsd_nat_target::remove_exec_catchpoint): Always declare.
2020-09-16 11:40:05 -07:00
John Baldwin
e911c6663b Require kinfo_get_file and kinfo_get_vmmap for FreeBSD hosts.
FreeBSD systems have provided these functions in libutil since 7.1
release.  The most recent release without support is 6.4 released in
November of 2008.

This also requires libutil-freebsd on GNU/kFreeBSD systems.  I assume
that those systems have supported kinfo_get_file and kinfo_get_vmmap
over a similar timeframe.

gdb/ChangeLog:

	* configure.ac: Remove check for kinfo_getvmmap().
	* configure, config.in: Regenerate.
	* fbsd-nat.c (fbsd_read_mapping): Remove
	(fbsd_nat_target::find_memory_regions): Remove the procfs version.
	(fbsd_nat_target::info_proc): Assume kinfo_getfile() and
	kinfo_get_vmmap() are always present.

gdbsupport/ChangeLog:

	* common.m4 (GDB_AC_COMMON): Refactor checks for kinfo_getfile().
	* configure, config.in: Regenerate.
2020-09-16 11:40:05 -07:00
John Baldwin
1f17d37249 Assume FreeBSD hosts include support for fetching signal information.
The current layout of siginfo_t and support for fetching it has been
included in FreeBSD kernels since 7.0 release.  The most recent
release without support is 6.4 released in November of 2008.

gdb/ChangeLog:

	* fbsd-nat.c: Always include support for
	TARGET_OBJECT_SIGNAL_INFO.
2020-09-16 11:40:05 -07:00
John Baldwin
bcb1da7fb7 Assume KERN_PROC_PATHNAME is present on FreeBSD hosts.
FreeBSD kernels have included this sysctl since 6.0 release.  The most
recent release without support is 5.5 which was released in May of
2006.

Both the sysctl and the /proc/<pid>/exe file call the same function in
the kernel to obtain the path (vn_fullpath).  If the sysctl fails, the
readlink call will also fail, so there is no need to keep the readlink
fallback.

gdb/ChangeLog:

	* fbsd-nat.c (fbsd_nat_target::pid_to_exec_file): Always use
	sysctl and remove procfs fallback.
2020-09-16 11:40:05 -07:00
John Baldwin
5515f72973 Assume that PT_LWPINFO is always defined on FreeBSD hosts.
FreeBSD kernels have included support for this since 5.0 release.
The most recent release without support is 4.11 which was released
in January of 2005.

gdb/ChangeLog:

	* fbsd-nat.c: Assume PT_LWPINFO is always defined.
	* fbsd-nat.h: Likewise.
2020-09-16 11:40:04 -07:00
Tom de Vries
945ff6e213 [gdb/testsuite] Fix gdb.dlang/watch-loc.exp on ppc64
On ppc64, we run into:
...
/tmp/ccKXURmw.s: Assembler messages:^M
/tmp/ccKXURmw.s:99: Error: can't resolve \
  `_Dmain_end' {.text section} - `_Dmain' {.opd section}^M
compiler exited with status 1
...

The unresolvable entity comes from the .debug_aranges section hardcoded in
watch-loc.c:
...
"      .4byte  _Dmain \n"      // Address
"      .4byte  _Dmain_end - _Dmain \n" // Length
...
where _Dmain is the function label for function _Dmain, and _Dmain_end is a
label after function _Dmain:
...
int _Dmain (void)
{
  asm ("_Dmain_label: .globl _Dmain_label");
  return 0;
}

asm ("_Dmain_end: .globl _Dmain_end");
...

The problem is that the two labels are not in the same section, because _Dmain
ends up in the .opd section, which "contains the official procedure
descriptors.  A pointer to a function shall reference a procedure descriptor in
this section."

Fix this by using function_range instead to get the length.

Also, fix the address part to not use _Dmain, but instead use the function
start as returned by function_range.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

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

	PR testsuite/26617
	* gdb.dlang/watch-loc.c: Only add .debug_aranges if
        WITH_DEBUG_SECTIONS is defined.
	(xstr, str): New macro.
	(.debug_aranges): Use DMAIN_START_0/1/2 and DMAIN_LENGTH
	to get start and size of _Dmain.
	* gdb.dlang/watch-loc.exp: Pass DMAIN_START_0/1/2 and DMAIN_LENGTH
	using additional_flags.
2020-09-16 18:04:37 +02:00