Commit Graph

105189 Commits

Author SHA1 Message Date
Alan Modra
208599d928 objdump: don't cache section contents in load_specific_debug_section
* objdump.c (load_specific_debug_section): Don't call
	bfd_cache_section_contents.  Rearrange so that
	bfd_get_full_section_contents is not called on path where
	bfd_simple_get_relocated_section_contents is called.
	Don't set section->user_data.
	(free_debug_section): Always free section->start.  Don't twiddle
	section flags.
	* readelf.c (load_specific_debug_section): Don't set user_data.
	* dwarf.h (struct dwarf_section): Remove use_data field.
	* dwarf.c (NO_ABBREVS, ABBREV): Adjust to suit.
2021-02-15 13:34:08 +10:30
Alan Modra
1781a9d0f3 nds32_elf_get_relocated_section_contents
nds32_elf_get_relocated_section_contents uses nds32_get_section_contents
to read sections contents, but nds32_get_section_contents has the wrong
behaviour as it calls bfd_malloc_and_get_section.  That function always
mallocs its output buffer, whereas get_relocated_section_contents must
support an already allocated buffer.

bfd/
	* elf32-nds32.c (nds32_get_section_contents): Replace
	bfd_malloc_and_get_section with bfd_get_full_section_contents.
	(nds32_elf_relax_delete_blanks): Init contents.
	(nds32_elf_relax_section, nds32_relax_fp_as_gp): Likewise.
binutils/
	* testsuite/binutils-all/compress.exp: Remove nds32 xfails.
	* testsuite/binutils-all/objdump.exp: Likewise.
2021-02-15 13:34:08 +10:30
Alan Modra
8b78cbec31 alpha_ecoff_get_relocated_section_contents
Use bfd_get_full_section_contents and tidy the start of this function
to match current generic get_relocated_section_contents.

	* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
	bfd_get_full_section_contents.
2021-02-15 13:34:08 +10:30
GDB Administrator
a5e6af6d17 Automatic date update in version.in 2021-02-15 00:00:12 +00:00
Alan Modra
d7a7af8ff4 Modernise _bfd_elf_mips_get_relocated_section_contents
In particular, bfd_get_full_section_contents rather than
bfd_get_section_contents so that compressed sections are handled
properly.

Necessary for mips if objdump is to not cache debug sections.

	* elfxx-mips.c (_bfd_elf_mips_get_relocated_section_contents): Apply
	all fixes to bfd_generic_get_relocated_section_contents since this
	function was split out.
2021-02-14 22:54:34 +10:30
Alan Modra
1944212b42 objdump: don't add an extra entry to syms array
Space for a NULL is there in every backend bfd_get_symtab_upper_bound
or bfd_get_dynamic_symtab_upper_bound when the symbol count is non-zero,
and placed as a terminator by bfd_canonicalize_symtab.  Many backends
even return a single NULL entry array for zero symbol count, and while
there are a few that return a NULL array for no symbols, that case is
handled fine in objdump.  So don't have objdump add yet another NULL
entry.

	* objdump.c (slurp_symtab): Don't add an extra entry for NULL
	to the symbol array.
	(slurp_dynamic_symtab): Likewise.
	(dump_bfd): Formatting.  Copy terminating NULL from extra_syms.
2021-02-14 22:54:12 +10:30
Alan Modra
0d0a0d86c8 Regen for binutils/aclocal.m4 change
* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
2021-02-14 22:35:32 +10:30
Alan Modra
5b1f6c9570 ld testsuite: change unresolved to unsupported/fail
"unresolved" as a test result means runtest returns an error, which
can be confusing when there is no apparent error unless you look in
.log files.  In particular many tests are skipped without reporting an
error if no target C compiler is found, but if a target C compiler is
found but won't compile a testcase for some reason we used to mark the
test as unresolved.  Which is no more worthy of an error than when
lacking a C compiler entirely.

	* testsuite/ld-cdtest/cdtest.exp,
	* testsuite/ld-checks/checks.exp,
	* testsuite/ld-elf/binutils.exp,
	* testsuite/ld-elf/compress.exp,
	* testsuite/ld-elf/dwarf.exp,
	* testsuite/ld-elf/exclude.exp,
	* testsuite/ld-elf/frame.exp,
	* testsuite/ld-elf/indirect.exp,
	* testsuite/ld-elf/linux-x86.exp,
	* testsuite/ld-elf/sec-to-seg.exp,
	* testsuite/ld-elf/tls_common.exp,
	* testsuite/ld-elfcomm/elfcomm.exp,
	* testsuite/ld-elfvers/vers.exp,
	* testsuite/ld-elfvsb/elfvsb.exp,
	* testsuite/ld-elfweak/elfweak.exp,
	* testsuite/ld-ifunc/binutils.exp,
	* testsuite/ld-mips-elf/mips-elf-flags.exp,
	* testsuite/ld-misc/defsym.exp,
	* testsuite/ld-mn10300/mn10300.exp,
	* testsuite/ld-plugin/lto.exp,
	* testsuite/ld-plugin/plugin.exp,
	* testsuite/ld-scripts/align.exp,
	* testsuite/ld-scripts/assert.exp,
	* testsuite/ld-scripts/crossref.exp,
	* testsuite/ld-scripts/defined.exp,
	* testsuite/ld-scripts/extern.exp,
	* testsuite/ld-scripts/log2.exp,
	* testsuite/ld-scripts/map-address.exp,
	* testsuite/ld-scripts/phdrs.exp,
	* testsuite/ld-scripts/phdrs2.exp,
	* testsuite/ld-scripts/script.exp,
	* testsuite/ld-scripts/section-flags.exp,
	* testsuite/ld-scripts/sizeof.exp,
	* testsuite/ld-scripts/weak.exp,
	* testsuite/ld-selective/selective.exp,
	* testsuite/ld-sh/sh.exp,
	* testsuite/ld-shared/shared.exp,
	* testsuite/ld-srec/srec.exp,
	* testsuite/ld-tic6x/tic6x.exp,
	* testsuite/ld-undefined/undefined.exp,
	* testsuite/ld-undefined/weak-undef.exp,
	* testsuite/lib/ld-lib.exp: Don't use unresolved except after
	perror.  Instead report "unsupported" or "fail".
2021-02-14 22:34:27 +10:30
GDB Administrator
f5b2658b0f Automatic date update in version.in 2021-02-14 00:00:12 +00:00
Mike Frysinger
b0dcd7d832 sim: testsuite: push $arch out to targets
This is needed to move to automake & its dejagnu-provided logic,
and eventually by the unified sim logic.  The $arch is used only
to figure out which `run` program to use when running tests, and
as we move to a single top-level build, we can delete this and
use sim/run directly.
2021-02-13 12:14:25 -05:00
Mike Frysinger
9ee455572d sim: rx: mitigate fread warning
Current toolchains warn about unused result from fread, so mitigate
the edge case if fread returns short data.  It's not great, but it
gets things building again.
2021-02-13 02:44:36 -05:00
Mike Frysinger
136da8cd9c sim: switch to AC_CONFIG_MACRO_DIRS
Rather than hand maintain m4 includes in various autotool files,
use AC_CONFIG_MACRO_DIRS to declare the relevant search paths.
This simplifies the code, makes it more robust, and cleans out
unused logic from configure.
2021-02-13 00:24:20 -05:00
Mike Frysinger
652f80e07b sim: common: delete unused aclocal.m4
This was missed when we deleted the common/configure build logic.
2021-02-13 00:17:45 -05:00
Mike Frysinger
adeab0c5b3 config/debuginfod: do not include pkg.m4 directly
Any code using AC_DEBUGINFOD from this dir is using -I../config when
running aclocal, so an explicit include on pkg.m4 is unnecessary:
aclocal will find the pkg.m4 in this dir just as easily.  This is
seen in the only two dirs that use AC_DEBUGINFOD (binutils & gdb)
as their aclocal.m4 already has m4_include on config m4 files.

The include as written only works if aclocal is run on a dir that is
at the same level of config/.  Any other depth will fail.
./
|-- config/
|-- binutils/    # works
|-- gdb/         # works
`-- sim/         # works
    `-- <port>/  # fails

It fails even if AC_DEBUGINFOD itself isn't used:
sim/bfin/ $ aclocal -I../../config
aclocal-1.15: error: ../../config/debuginfod.m4:8: file '../config/pkg.m4' does not exist
2021-02-13 00:15:11 -05:00
GDB Administrator
ceda7cf7f7 Automatic date update in version.in 2021-02-13 00:00:12 +00:00
Tom Tromey
77fba254d9 Add stdio support to gdbreplay
I've been using gdbreplay to help debug an intermittent failure, and I
wanted it to be a little simpler to use.  This patch adds support for
"-" as the "address" argument.  With this patch you can do:

    (gdb) target remote | gdbreplay logfile -

... and not have to start gdbreplay in a separate shell.

2021-02-12  Tom Tromey  <tromey@adacore.com>

	* gdbreplay.cc (remote_desc): Remove.
	(remote_desc_in, remote_desc_out): New globals.
	(remote_close): Update.
	(remote_open): Handle "-".
	(remote_open): Update.
	(logchar): Log to stderr.
	(expect, play): Update.
2021-02-12 12:45:51 -07:00
Tom de Vries
089436f787 [gdb/threads] Fix lin_thread_get_thread_signals for glibc 2.28
When running test-case gdb.threads/create-fail.exp on openSUSE Factory
(with glibc version 2.32) I run into:
...
(gdb) continue
Continuing.
[New Thread 0x7ffff7c83700 (LWP 626354)]
[New Thread 0x7ffff7482700 (LWP 626355)]
[Thread 0x7ffff7c83700 (LWP 626354) exited]
[New Thread 0x7ffff6c81700 (LWP 626356)]
[Thread 0x7ffff7482700 (LWP 626355) exited]
[New Thread 0x7ffff6480700 (LWP 626357)]
[Thread 0x7ffff6c81700 (LWP 626356) exited]
[New Thread 0x7ffff5c7f700 (LWP 626358)]
[Thread 0x7ffff6480700 (LWP 626357) exited]
pthread_create: 22: Invalid argument

Thread 6 "create-fail" received signal SIG32, Real-time event 32.
[Switching to Thread 0x7ffff5c7f700 (LWP 626358)]
0x00007ffff7d87695 in clone () from /lib64/libc.so.6
(gdb) FAIL: gdb.threads/create-fail.exp: iteration 1: run till end
...
The problem is that glibc-internal signal SIGCANCEL is not recognized by gdb.

There's code in check_thread_signals that is supposed to take care of that,
but it's not working because this code in lin_thread_get_thread_signals has
stopped working:
...
  /* NPTL reserves the first two RT signals, but does not provide any
     way for the debugger to query the signal numbers - fortunately
     they don't change.  */
  sigaddset (set, __SIGRTMIN);
  sigaddset (set, __SIGRTMIN + 1);
...

Since glibc commit d2dc5467c6 "Filter out NPTL internal signals (BZ #22391)"
(first released as part of glibc 2.28), a sigaddset with a glibc-internal
signal has no other effect than setting errno to EINVALID.

Fix this by eliminating the usage of sigset_t in check_thread_signals and
lin_thread_get_thread_signals.

The same problem was observed on Ubuntu 20.04.

Tested on x86_64-linux, openSUSE Factory.
Tested on aarch64-linux, Ubuntu 20.04 and Ubuntu 18.04.

gdb/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

	PR threads/26228
	* linux-nat.c (lin_thread_get_thread_signals): Remove.
	(lin_thread_signals): New static var.
	(lin_thread_get_thread_signal_num, lin_thread_get_thread_signal):
	New function.
	* linux-nat.h (lin_thread_get_thread_signals): Remove.
	(lin_thread_get_thread_signal_num, lin_thread_get_thread_signal):
	Declare.
	* linux-thread-db.c (check_thread_signals): Use
	lin_thread_get_thread_signal_num and lin_thread_get_thread_signal.
2021-02-12 20:12:37 +01:00
Tom Tromey
c054dcd552 Minor constification in gdbreplay
I noticed a spot in gdbreplay where "const" could be used.

2021-02-12  Tom Tromey  <tromey@adacore.com>

	* gdbreplay.cc (remote_open): Constify.
2021-02-12 10:26:43 -07:00
Nick Clifton
c46b706620 Change the readelf and objdump programs so that they will automatically follow links to separate debug info files.
* configure.ac (follow-debug-links): Add option to enable or
	disable the following of debug links by default.  Set the
	default for the option to be 'follow'.
	* dwarf.c (do_follow_links): Initialise with DEFAULT_FOR_FOLLOW_LINKS.
	(dwarf_select_sections_by_names): Add no-follow-links option.
	(dwarf_select_sections_by_letter): Add 'N' option.
	* objdump.c (usage): Add conditional text describing the
	follow links option.
	(slurp_symtab): Ensure that there is a NULL entry at the end
	of the symbol table.
	(slurp_dynamic_symtab): Likewise.
	(dump_bfd): When extending the symbol table, ensure that there
	is still a NULL entry at the end.
	* readelf.c (usage): Add conditional text describing the
	follow links option.
	* doc/binutils.texi: Update documentation for objcopy and
	readelf.
	* doc/debug.options.texi: Update documentation of the
	follow-links option.
	* config.in: Regenerate.
	* configure: Regenerate.
	* testsuite/binutils-all/compress.exp: Add the -WN option to
	objdump command lines that are not expecting to follow links.
	* testsuite/binutils-all/readelf.exp: Add the
	--debug-dump=no-follow-links option to tests that are not
	expecting to follow debug links.

gas	* testsuite/gas/mach-o/sections-1.d: Stop automatic debug link
        following.
	* testsuite/gas/xgate/insns-dwarf2.d: Likewise.

ld	* testsuite/ld-elf/sec64k.exp: Stop readelf from automatically
	following debug links.
2021-02-12 14:52:22 +00:00
Andrew Burgess
96df3e28b8 gdb/fortran: support ALLOCATED builtin
Add support for the ALLOCATED keyword to the Fortran expression
parser.

gdb/ChangeLog:

	* f-exp.y (f77_keywords): Add allocated.
	* f-lang.c (evaluate_subexp_f): Handle UNOP_FORTRAN_ALLOCATED.
	(operator_length_f): Likewise.
	(print_subexp_f): Likewise.
	(dump_subexp_body_f): Likewise.
	(operator_check_f): Likewise.
	* std-operator.def (UNOP_FORTRAN_ALLOCATED): New operator.

gdb/testsuite/ChangeLog:

	* gdb.fortran/allocated.exp: New file.
	* gdb.fortran/allocated.f90: New file.
2021-02-12 09:22:17 +00:00
Alan Modra
17e04eff81 binutils testsuite: replace unresolved with unsupported
You'd think "unresolved" would be correct for an objcopy test when the
assembler refuses to assemble one of our source files.  After all, the
test of objcopy hasn't been run.  However, "unresolved" results in
runtest returning with an error status.  If instead we report
"unsupported", runtest returns success.  Which is a little less
confusing to a user who doesn't see any errors reported unless they
look in log files.

	* testsuite/binutils-all/objcopy.exp: Report "unsupported" when
	gas or ld fails to build a testcase rather than "unresolved".
	Report "fail" when readelf returns an error status rather than
	"unresolved".
	* testsuite/binutils-all/ar.exp: Likewise.
	* testsuite/binutils-all/compress.exp: Likewise.
	* testsuite/binutils-all/readelf.exp: Likewise.
2021-02-12 18:56:05 +10:30
Alan Modra
8f054a7a5a binutils test pr25662: don't use single character labels
This fixes the test for z80, which predefine register symbols "a" and
"c" among others.

	* testsuite/binutils-all/pr25662.s: Replace "a" with "aaa" and
	"c" with "ccc" labels.
2021-02-12 18:55:36 +10:30
Alan Modra
3c1d41015b gas testsuite: adjust recently added tests for hppa
Some hppa gas targets treat anything starting in the first column as a
label, so directives can't start there.  Also, binutils_assemble and
run_dump_test cleverly edit test source to suit the hppa .comm
directive which has a different syntax to most targets.  The editing
means we can't match source file names in dumps.  Finally, hppa gas
complains if instructions are emitted without a ".text" or similar
directive.

	* testsuite/gas/all/pr27381.err: Don't match source file name.
	* testsuite/gas/all/pr27381.s: Don't start directive in first column.
	* testsuite/gas/all/pr27384.err: Don't match source file name.
	Adjust line number.
	* testsuite/gas/all/pr27384.s: Add ".text" directive.
	* testsuite/gas/elf/pr27355.err: Don't match source file name.
2021-02-12 18:54:19 +10:30
Tom de Vries
528a4f87c6 [binutils] Fix typo in comment in dwarf.h
Fix typo DW_AT_GNU_FORM_addr_index -> DW_FORM_GNU_addr_index.

binutils/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

	* dwarf.h (debug_info): Fix typo in comment.
2021-02-12 04:43:03 +01:00
Tom de Vries
95abb3944c [binutils] Fix printing of .debug_str_offsets
With exec:
...
$ clang -gdwarf-5 ./src/gdb/testsuite/gdb.dwarf2/fission-mix*.c
...
we have:
...
$ readelf -w a.out
  ...
Contents of the .debug_str_offsets section:

    Length: 0x24
    Version: 0x5
       Index   Offset [String]
           0      1d0 clang version 10.0.1
           1      1e6 src/gdb/testsuite/gdb.dwarf2/fission-mix-2.c
           2      213 /home/vries/gdb_versions/devel
           3      232 bar
           4      236 x
           5       61 int
           6      238 s
           7      23a func2
           8       2c ild/BUILD/glibc-2.26/csu
           9        5 sdeps/x86_64/start.S
          10      1d0 clang version 10.0.1
          11      240 src/gdb/testsuite/gdb.dwarf2/fission-mix.c
          12      213 /home/vries/gdb_versions/devel
          13      26b foo
          14      236 x
          15       61 int
          16      238 s
          17      26f func
          18      274 main
          19      279 arg
...

The section consists of two parts, one for each CU, each with a header, but
the printing only reads the first header as a header, and prints the second
header as:
...
           8       2c ild/BUILD/glibc-2.26/csu
           9        5 sdeps/x86_64/start.S
...

Fix this in display_debug_str_offsets such that we have:
...
           6      238 s
           7      23a func2
    Length: 0x2c
    Version: 0x5
       Index   Offset [String]
           0      1d0 clang version 10.0.1
           1      240 src/gdb/testsuite/gdb.dwarf2/fission-mix.c
...

binutils/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

	* dwarf.c (display_debug_str_offsets): Handle multiple sets of
	entries.
2021-02-12 04:43:03 +01:00
Tom de Vries
d60f79984a [binutils] Print DWO ID
With exec:
...
$ gcc -gsplit-dwarf ~/hello.c -gdwarf-5
...
a dwarf-5 DW_UT_skeleton CU is generated, but the corresponding DWO ID is not
printed by readelf -wi.

Add this, such that we have:
....
   Compilation Unit @ offset 0xc7:
    Length:        0x31 (32-bit)
    Version:       5
    Unit Type:     DW_UT_skeleton (4)
    Abbrev Offset: 0x64
    Pointer Size:  8
+   DWO ID:        0x4756ae3ac4348f21
  <0><db>: Abbrev Number: 1 (DW_TAG_skeleton_unit)
...

binutils/ChangeLog:

2021-02-12  Tom de Vries  <tdevries@suse.de>

	* dwarf.c (process_debug_info): Print DWO ID.
2021-02-12 04:43:03 +01:00
GDB Administrator
a5a310d616 Automatic date update in version.in 2021-02-12 00:00:19 +00:00
Tom de Vries
05f68f52ef [gdb/symtab] Handle DW_FORM_strx in form_requires_reprocessing
When running test-case gdb.dwarf2/fission-mix.exp using gcc-11, I run into:
...
(gdb) file fission-mix^M
Reading symbols from fission-mix...^M
src/gdb/dwarf2/attribute.h:258: internal-error: \
  void attribute::set_unsigned_reprocess(ULONGEST): \
  Assertion `form_requires_reprocessing ()' failed.^M
...

This happens when calling set_unsigned_reprocess on an attribute with form
DW_FORM_strx.  The assert triggers because DW_FORM_strx is not listed in
form_requires_reprocessing.

Fix this by adding DW_FORM_strx in form_requires_reprocessing.

Tested on x86_64-linux.

gdb/ChangeLog:

2021-02-11  Tom de Vries  <tdevries@suse.de>

	PR symtab/27353
	* dwarf2/attribute.c (attribute::form_requires_reprocessing):
	Return true for DW_FORM_strx.
2021-02-11 21:03:03 +01:00
Tom Tromey
b260f8d60c Fix two Fortran regressions
Luis pointed out that an earlier patch of mine caused two regressions
in gdb.fortran.  This patch fixes the problem.

Regression tested on x86-64 Fedora 32.

gdb/ChangeLog
2021-02-11  Tom Tromey  <tromey@adacore.com>

	PR gdb/27383:
	* parse.c (write_exp_symbol_reference): Write sym.block.
2021-02-11 08:32:50 -07:00
Alan Modra
234b98ced2 Remove ia64 from obsolete list
* config.bfd: Remove ia64 from obsolete list.
2021-02-11 22:33:48 +10:30
Alan Modra
769c253f45 Revert "ia64: Check UNDEFWEAK_NO_DYNAMIC_RELOC"
This reverts commit db41f6eb52.
2021-02-11 22:33:48 +10:30
Andrew Burgess
a1670b7263 gdb/testsuite: remove old comment
In commit:

  commit e92c8eb86d
  Date:   Tue Feb 9 15:46:13 2021 +0000

      gdb/fortran: add parser support for lbound and ubound

When I created the test gdb/testsuite/gdb.fortran/lbound-ubound.exp, I
copied the script from a different file and failed to delete the test
description comment at the top (even though I added a new
description).  Fixed in this commit.

gdb/testsuite/ChangeLog:

	* gdb.fortran/lbound-ubound.exp: Remove old comment.
2021-02-11 11:32:09 +00:00
Andrew Burgess
bf3386f0c1 gdb: change 'maint info section' to use command options
The 'maintenance info sections' command currently takes a list of
filters on the command line.  It can also accept the magic string
'ALLOBJ' which acts more like a command line flag, telling the command
to print information about all objfiles.

The manual has this to say about the options and filters:

  ... In addition, 'maint info sections' provides the following
  command options (which may be arbitrarily combined): ...

Implying (to me at least) that I can do this:

  (gdb) maint info sections ALLOBJ READONLY

to list all the read-only sections from all currently loaded object
files.

Unfortunately, this doesn't work.  The READONLY filter will work, but
ALLOBJ will not be detected correctly.

It would be fairly simple to fix the ALLOBJ detection.  However, I
dislike this mixing of command options (ALLOBJ) with command data (the
filters, e.g. READONLY, etc).

As this is a maintenance command, so not really intended for end
users, I think we can be a little more aggressive in "fixing" the
option parsing.  So that's what I do in this commit.

The ALLOBJ mechanism is replaced with a real command
option (-all-objects).  The rest of the command operates just as
before.  The example above would now become:

  (gdb) maint info sections -all-objects READONLY

The manual has been updated, and I added a NEWS entry to document the
change.

gdb/ChangeLog:

	* NEWS: Mention changes to 'maint info sections'.
	* maint.c (match_substring): Return a bool, fix whitespace issue.
	(struct single_bfd_flag_info): New struct.
	(bfd_flag_info): New static global.
	(match_bfd_flags): Return a bool, use bfd_flag_info.
	(print_bfd_flags): Use bfd_flag_info.
	(maint_print_section_info): Delete trailing whitespace.
	(struct maint_info_sections_opts): New struct.
	(maint_info_sections_option_defs): New static global.
	(maint_info_sections_completer): New function.
	(maintenance_info_sections): Use option parsing mechanism.
	(_initialize_maint_cmds): Register command completer.

gdb/doc/ChangeLog:

	* gdb.texinfo (Files): Update documentation for 'maint info
	sections'.

gdb/testsuite/ChangeLog:

	* gdb.base/maint-info-sections.exp: Update expected output, and
	add additional tests. Again.
2021-02-11 10:26:19 +00:00
Andrew Burgess
4790db1496 gdb: 'maint info sections' - handle the no executable case
The 'maint info sections' command is split into two blocks or work,
first if there's an executable then the sections from the executable,
and optionally all other loaded object files are printed.  Then all
the sections from any core file are printed.

I ran into a situation where (for various reasons) I wasn't using a
main executable.  Instead I connected to a remote target and used
add-symbol-file.  This allowed me to debug an image that was already
loaded on the remote system.

Unfortunately, when I tried to use 'maint info sections' I saw
nothing.  The reason is that the loop over all object files is hidden
behind a check that we have a main executable.

This commit removes this check and merges together some duplicate
code.  I also (I think) made the output of this command cleaner.

Here is the original output of 'maint info sections':

  Exec file:
      `/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

And my modified output:

  Exec file: `/home/andrew/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

The forced newline after 'Exec file: ' has been removed.  This is now
a wrap point (in case the filename is very long).

Here is the original output of 'maint info sections ALLOBJ':

  Exec file:
      `/tmp/hello.x', file type elf64-x86-64.
    Object file: /tmp/hello.x
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...
    Object file: /lib64/ld-linux-x86-64.so.2
   [0]      0x7ffff7fd12a8->0x7ffff7fd12c8 at 0x000002a8: .note.gnu.property ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x7ffff7fd12c8->0x7ffff7fd12ec at 0x000002c8: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

And my modified output:

  Exec file: `/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...
  Object file: `/lib64/ld-linux-x86-64.so.2', file type elf64-x86-64.
   [0]      0x7ffff7fd12a8->0x7ffff7fd12c8 at 0x000002a8: .note.gnu.property ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x7ffff7fd12c8->0x7ffff7fd12ec at 0x000002c8: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

The executable now only gets a single header line.  The header line
for the additional object files is no longer indented as it was
before, and the line is laid out in a similar style to the main
executable line (with quotes and file type information).

And of course, the biggest change.  If GDB is started with no
executable, but then the user does 'add-symbol-file ....' followed by
'maint info sections ALLOBJ', previously they got nothing, now they
get:

  Object file: `/tmp/hello.x', file type elf64-x86-64.
   [0]      0x004002a8->0x004002c4 at 0x000002a8: .interp ALLOC LOAD READONLY DATA HAS_CONTENTS
   [1]      0x004002c4->0x004002e8 at 0x000002c4: .note.gnu.build-id ALLOC LOAD READONLY DATA HAS_CONTENTS
   ...

gdb/ChangeLog:

	* maint.c (print_bfd_section_info_maybe_relocated): Delete,
	functionality merged into...
	(maint_print_all_sections): ...this new function.
	(maintenance_info_sections): Make use of maint_print_all_sections,
	allow all objects to be printed even where there's no executable.

gdb/testsuite/ChangeLog:

	* gdb.base/maint-info-sections.exp: Update expected output, and
	add additional tests.
2021-02-11 10:26:18 +00:00
Andrew Burgess
f4be677293 gdb/testsuite: split 'maint info sections' tests to a new file
The next couple of patches are going to add more tests for the 'maint
info sections' command.  Rather than try to jam these tests into the
already quite long gdb.base/maint.c, this commit moves all of the
tests for 'maint info sections' into a new file.

I've updated the tests to make use of some newer testsuite constructs,
like -wrap and $gdb_test_name for gdb_test_multiple, but otherwise the
tests should not have changed with this commit.

gdb/testsuite/ChangeLog:

	* gdb.base/maint-info-sections.exp: New file, content is moved
	from gdb.base/maint.exp and cleaned up to use latest testsuite
	techniques.
	* gdb.base/maint.exp: Tests moved out to
	gdb.base/maint-info-sections.exp.
2021-02-11 10:26:18 +00:00
Andrew Burgess
1db66e348a gdb: add obj_section function to bound_minimal_symbol
Add a new obj_section function to bound_minimal_symbol, this just
calls obj_section on the contained minimal_symbol passing in the
contained objfile.

This allows some minor code simplification in a few places.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* breakpoint.c (resolve_sal_pc): Make use of
	bound_minimal_symbol::obj_section.
	* maint.c (maintenance_translate_address): Likewise.
	* minsyms.c (minimal_symbol_upper_bound): Likewise.
	* minsyms.h (struct bound_minimal_symbol) <obj_section>: New
	member function.
	* printcmd.c (info_address_command): Make use of
	bound_minimal_symbol::obj_section.
2021-02-11 09:50:58 +00:00
Alan Modra
31c711a2b3 PR27294, avr OOM
PR 27294
	* elf32-avr.c (avr_elf32_load_records_from_section): Use
	bfd_malloc_and_get_section.  Use bfd_byte* vars and remove then
	unnecessary casts.
2021-02-11 19:42:15 +10:30
Alan Modra
1cfcf3004e PR27290, PR27293, PR27295, various avr objdump fixes
Adds missing sanity checks for avr device info note, to avoid
potential buffer overflows.  Uses bfd_malloc_and_get_section for
sanity checking section size.

	PR 27290
	PR 27293
	PR 27295
	* od-elf32_avr.c (elf32_avr_get_note_section_contents): Formatting.
	Use bfd_malloc_and_get_section.
	(elf32_avr_get_note_desc): Formatting.  Return descsz.  Sanity
	check namesz.  Return NULL if descsz is too small.  Ensure
	string table is terminated.
	(elf32_avr_get_device_info): Formatting.  Add note_size param.
	Sanity check note.
	(elf32_avr_dump_mem_usage): Adjust to suit.
2021-02-11 19:30:47 +10:30
Alan Modra
6db658c517 PR27291, integer overflow in bfd_get_section_contents
Makes the code a little more elegant too.  Note that the unsigned
overflow reported here is well defined so this patch doesn't fix any
real problem.

	PR 27291
	* section.c (bfd_get_section_contents): Avoid possible overflow
	when range checking offset and count.
	(bfd_set_section_contents): Likewise.
2021-02-11 11:58:19 +10:30
Simon Marchi
160fe19337 gdb: adjust comment in gdb.multi/multi-target.exp.tcl
I wanted to make this change before pushing the last patch but forgot to
amend before pushing.

Change-Id: I8e1f03ee0131c1e75973718e7835b39580a06054
2021-02-10 19:17:47 -05:00
GDB Administrator
10ed138aa3 Automatic date update in version.in 2021-02-11 00:00:10 +00:00
Simon Marchi
25ad1e83c8 gdb/testsuite: use "set sysroot" in gdb.multi/multi-target.exp.tcl
The multi-target tests involve some inferiors using remote targets.  By
default, GDB uses target: as the sysroot, which makes it read loaded
libraries and their debug info through GDBserver.  This makes the tests
run slower than necessary.

Pass `-ex "set sysroot"` when launching GDB in these tests, so that GDB
always reads from its local file system.

On a system where I don't have debug info for libc, that reduces run
time for

    $ make check TESTS="gdb.multi/multi-target-*.exp"

from 1:15 to 0:45.

On this other system where debug info is installed though, it reduces it
from 13:00 to 1:45.

gdb/testsuite/ChangeLog:

	* gdb.multi/multi-target.exp.tcl (setup): Add "set sysroot" to
	GDBFLAGS.

Change-Id: I9d24f3def843472d35dfb5667c12d70ae1d7e984
2021-02-10 18:01:10 -05:00
Alan Modra
18b8df43bd gdb: Remove arm-symbianelf support
Since it has gone from bfd/.

	* arm-symbian-tdep.c: Delete.
	* NEWS: Mention arm-symbian removal.
	* Makefile.in: Remove arm-symbian-tdep entries.
	* configure.tgt: Remove arm*-*-symbianelf*.
	* doc/gdb.texinfo: Remove mention of SymbianOS.
	* osabi.c (gdb_osabi_names): Remove "Symbian".
	* osabi.h (enum gdb_osabi): Remove GDB_OSABI_SYMBIAN.
	* testsuite/gdb.base/ending-run.exp: Remove E32Main handling.
	* testsuite/gdb.ada/catch_ex_std.exp: Remove arm*-*-symbianelf*
	handling.
	* testsuite/gdb.base/dup-sect.exp: Likewise.
	* testsuite/gdb.base/long_long.exp: Likewise.
	* testsuite/gdb.base/solib-weak.exp: Likewise.
	* testsuite/gdb.guile/scm-section-script.exp: Likewise.
	* testsuite/gdb.python/py-section-script.exp: Likewise.
	* testsuite/lib/dwarf.exp: Likewise.
	* testsuite/lib/gdb.exp: Likewise.
2021-02-11 07:23:42 +10:30
Alan Modra
933feaf37e Re: Remove arm-symbianelf
gas/
	* NEWS: Mention arm-symbianelf removal.
ld/
	* NEWS: Mention arm-symbianelf removal.
2021-02-11 07:22:20 +10:30
Tom de Vries
d9d9d8ef8c [binutils] Handle absolute DW_AT_dwo_name
With an exec:
...
$ pwd
/home/vries/tmp
$ gcc /home/vries/tmp/src/hello.c -gsplit-dwarf -c \
  -o /home/vries/tmp/obj/hello.o
...
I get:
...
$ readelf -w obj/hello.o > READELF
readelf: Warning: Unable to load dwo file: \
  /home/vries/tmp//home/vries/tmp/obj/hello.dwo
...

The dwo file name is listed here:
...
    <20>   DW_AT_GNU_dwo_name: /home/vries/tmp/obj/hello.dwo
    <24>   DW_AT_comp_dir    : /home/vries/tmp
...

The standard states about the DW_AT_dwo_name attribute:
...
value is a null-terminated string containing the full or relative path name
(relative to the value of the DW_AT_comp_dir attribute, see below) of the
object file that contains the full compilation unit.
...

So, readelf shouldn't try to prefix an absolute path with DW_AT_comp_dir.

Fix this in load_dwo_file by handling the absolute path case.

binutils/ChangeLog:

2021-02-10  Tom de Vries  <tdevries@suse.de>

	PR binutils/27391
	* dwarf.c (load_dwo_file): Handle case that name is absolute path.
2021-02-10 17:26:50 +01:00
Andrew Burgess
e92c8eb86d gdb/fortran: add parser support for lbound and ubound
Add support for the LBOUND and UBOUND built in functions to the
Fortran expression parser.

Both support taking one or two arguments.  A single argument, which
must be an array, returns an array containing all of the lower or
upper bound data.

When passed two arguments, the second argument is the dimension being
asked about.  In this case the result is a scalar containing the lower
or upper bound just for that dimension.

Some examples of usage taken from the new test:

  # Given:
  #   integer, dimension (-8:-1,-10:-2) :: neg_array
  #
  (gdb) p lbound (neg_array)
  $1 = (-8, -10)
  (gdb) p lbound (neg_array, 1)
  $3 = -8
  (gdb) p lbound (neg_array, 2)
  $5 = -10

gdb/ChangeLog:

	* f-exp.y (UNOP_OR_BINOP_INTRINSIC): New token.
	(exp): New pattern using UNOP_OR_BINOP_INTRINSIC.
	(one_or_two_args): New pattern.
	(f77_keywords): Add lbound and ubound.
	* f-lang.c (fortran_bounds_all_dims): New function.
	(fortran_bounds_for_dimension): New function.
	(evaluate_subexp_f): Handle FORTRAN_LBOUND and FORTRAN_UBOUND.
	(operator_length_f): Likewise.
	(print_subexp_f): Likewise.
	(dump_subexp_body_f): Likewise.
	(operator_check_f): Likewise.
	* std-operator.def (FORTRAN_LBOUND): Define.
	(FORTRAN_UBOUND): Define.

gdb/testsuite/ChangeLog:

	* gdb.fortran/lbound-ubound.F90: New file.
	* gdb.fortran/lbound-ubound.exp: New file.
2021-02-10 16:03:49 +00:00
Nick Alcock
758f590744 libctf: add missing header in BFD ELF check
Without this, GCC warns:

In file included from conftest.c:36:
../../libctf/../bfd/elf-bfd.h: In function 'bfd_section_is_ctf':
../../libctf/../bfd/elf-bfd.h:3089:10: warning: implicit declaration of function 'strncmp' [-Wimplicit-function-declaration]
 3089 |   return strncmp (name, ".ctf", 4) == 0 && (name[4] == 0 || name[4] == '.');
      |          ^~~~~~~
../../libctf/../bfd/elf-bfd.h:3089:33: warning: 'strncmp' argument 3 type is 'int' where 'long unsigned int' is expected in a call to built-in function declared without prototype [-Wbuiltin-declaration-mismatch]
 3089 |   return strncmp (name, ".ctf", 4) == 0 && (name[4] == 0 || name[4] == '.');
      |                                 ^
<built-in>: note: built-in 'strncmp' declared here

These warnings do not currently throw off the result of the configure
check, but it's better to squash them anyway.

libctf/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac (ac_cv_libctf_bfd_elf): Include string.h.
	* configure: Regenerated.
2021-02-10 15:26:57 +00:00
Nick Alcock
cbd8f5bbcc libctf: require a Tcl capable of try/catch to run tests
The run_native_host_cmd implementation in testsuite/lib/ctf-lib.exp
uses try/catch, which are new in Tcl 8.6.  Require a Tcl that knows
that try exists, as suggested by Jan Beulich.

libctf/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac (EXPECT): Check for, in order to define...
	(TCL_TRY): ... this, if Tcl supports try/catch.
	* Makefile.am (TCL_TRY): Run the testsuite only if set.
	* configure: Regenerated.
	* Makefile.in: Likewise.
2021-02-10 15:26:57 +00:00
Nick Alcock
9514861402 bfd, opcodes, libctf: support --with-included-gettext
Right now, these libraries hardwire -L../intl -lintl on a few fixed
platforms, which works fine on those platforms but on other platforms
leads to shared libraries that lack libintl_* symbols when configured
--with-included-gettext, and/or static libraries that contain libintl as
*another* static library.  If we instead use the LIBINTL variable
defined in ../intl/config.intl, this gives us the right thing on all
three classes of platform (gettext in libc, gettext in system libintl,
gettext in ../intl/libintl.a)..  This also means we can rip out some
Darwin-specific machinery from configure.ac and also simplify the Cygwin
side.

This also means that the libctf testsuite (and other places that include
libbfd, libopcodes or libctf) don't need to grow libintl dependencies
just on account of those libraries (though they still need such
dependencies if they themselves use gettext machinery).

bfd/ChangeLog
2021-02-03  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
	favour of LIBINTL.
	* configure: Regenerated.

libctf/ChangeLog
2021-02-02  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac (CTF_LIBADD): Remove explicit -lintl population in
	favour of LIBINTL.
	* Makefile.am (libctf_nobfd_la_LIBADD): No longer explicitly
	include $(LIBINTL).
	(check-DEJAGNU): Pass down to tests as well.
	* configure: Regenerated.
	* Makefile.in: Likewise.

opcodes/ChangeLog
2021-02-04  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
	favour of LIBINTL.
	* configure: Regenerated.
2021-02-10 15:26:57 +00:00
Nick Alcock
aee224d643 intl: turn LIBINTL into -L / -l form
This variable currently refers directly, not to a .la file, but to an .a
file.  This produces wrong results when building into a library on some
platforms: so convert it to the general form "-L${top_builddir}../intl
-lintl ..." ... so that both libtool and non-libtool builds will always
do the right thing for both static and shared links.

intl/ChangeLog
2021-02-04  Nick Alcock  <nick.alcock@oracle.com>

	* configure.ac (LIBINTL): Transform into -L/-lintl form.
	* configure: Regenerate.
2021-02-10 15:26:57 +00:00