Commit Graph

103992 Commits

Author SHA1 Message Date
Alan Modra
e4d9e5422f PowerPC paranioa testing of symbol merging involving comdat groups
Ensures we don't mistreat st_other localentry bits.

	* testsuite/ld-powerpc/group1.d,
	* testsuite/ld-powerpc/group1.s,
	* testsuite/ld-powerpc/group1.sym,
	* testsuite/ld-powerpc/group2.d,
	* testsuite/ld-powerpc/group2.s,
	* testsuite/ld-powerpc/group2.sym,
	* testsuite/ld-powerpc/group3.s,
	* testsuite/ld-powerpc/group3.sym: New test files.
	* testsuite/ld-powerpc/powerpc.exp: Run new tests.
2020-11-18 23:49:31 +10:30
Alan Modra
058430b4a1 Re: Stop Gas from generating line info or address ranges
* doc/as.texi (.nop): Document optional size arg.
	* dwarf2dbg.c (dwarf2_gen_line_info_1): Only check SEC_ALLOC
	when ELF.  Warn whenever dwarf line number information is ignored.
	* frags.c (frag_offset_ignore_align_p): New function.
	* frags.h (frag_offset_ignore_align_p): Declare.
	* read.c (s_nop): Extend to support optional size arg.
	* testsuite/gas/elf/dwarf2-20.d: Expect warnings, and exact range.
	* testsuite/gas/elf/dwarf2-20.s: Emit 16 bytes worth of nops.
	* testsuite/gas/m68hc11/indexed12.d: Expect warnings.
2020-11-18 23:46:39 +10:30
Jozef Lawrynowicz
99fabbc973 Support SHF_GNU_RETAIN ELF section flag
The SHF_GNU_RETAIN section flag is an extension to the GNU ELF OSABI.
It is defined as follows:

=========================================================
Section Attribute Flags
+-------------------------------------+
| Name           | Value              |
+-------------------------------------+
| SHF_GNU_RETAIN | 0x200000 (1 << 21) |
+-------------------------------------+

SHF_GNU_RETAIN
  The link editor should not garbage collect the section.
=========================================================

The .section directive accepts the "R" flag, which indicates
SHF_GNU_RETAIN should be applied to the section.

There is not a direct mapping of SHF_GNU_RETAIN to the BFD
section flag SEC_KEEP. Keeping these flags distinct allows
SHF_GNU_RETAIN sections to be explicitly removed by placing them in
/DISCARD/.

bfd/ChangeLog:

	* elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_retain.
	(struct elf_obj_tdata): Increase has_gnu_osabi to 4 bits.
	* elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_retain
	for SHF_GNU_RETAIN.
	(_bfd_elf_final_write_processing): Report if SHF_GNU_RETAIN is
	not supported by the OSABI.
	Adjust error messages.
	* elflink.c (elf_link_input_bfd): Copy enabled has_gnu_osabi bits from
	input BFD to output BFD.
	(bfd_elf_gc_sections): gc_mark the section if SHF_GNU_RETAIN is set.

binutils/ChangeLog:

	* NEWS: Announce SHF_GNU_RETAIN support.
	* readelf.c (get_elf_section_flags): Handle SHF_GNU_RETAIN.
	Recognize SHF_GNU_RETAIN and SHF_GNU_MBIND only for supported OSABIs.
	* testsuite/binutils-all/readelf.exp: Run new tests.
	Don't run run_dump_test when there isn't an assembler available.
	* testsuite/lib/binutils-common.exp (supports_gnu_osabi): Adjust
	comment.
	* testsuite/binutils-all/readelf-maskos-1a.d: New test.
	* testsuite/binutils-all/readelf-maskos-1b.d: New test.
	* testsuite/binutils-all/readelf-maskos.s: New test.
	* testsuite/binutils-all/retain1.s: New test.
	* testsuite/binutils-all/retain1a.d: New test.
	* testsuite/binutils-all/retain1b.d: New test.

gas/ChangeLog:

	* NEWS: Announce SHF_GNU_RETAIN support.
	* config/obj-elf.c (obj_elf_change_section): Merge SHF_GNU_RETAIN bit
	between section declarations.
	(obj_elf_parse_section_letters): Handle 'R' flag.
	Handle numeric flag values within the SHF_MASKOS range.
	(obj_elf_section): Validate SHF_GNU_RETAIN usage.
	* doc/as.texi: Document 'R' flag to .section directive.
	* testsuite/gas/elf/elf.exp: Run new tests.
	* testsuite/gas/elf/section10.d: Unset SHF_GNU_RETAIN bit.
	* testsuite/gas/elf/section10.s: Likewise.
	* testsuite/gas/elf/section22.d: New test.
	* testsuite/gas/elf/section22.s: New test.
	* testsuite/gas/elf/section23.s: New test.
	* testsuite/gas/elf/section23a.d: New test.
	* testsuite/gas/elf/section23b.d: New test.
	* testsuite/gas/elf/section23b.err: New test.
	* testsuite/gas/elf/section24.l: New test.
	* testsuite/gas/elf/section24.s: New test.
	* testsuite/gas/elf/section24a.d: New test.
	* testsuite/gas/elf/section24b.d: New test.

include/ChangeLog:

	* elf/common.h (SHF_GNU_RETAIN): Define.

ld/ChangeLog:

	* NEWS: Announce support for SHF_GNU_RETAIN.
	* ld.texi (garbage collection): Document SHF_GNU_RETAIN.
	(Output Section Discarding): Likewise.
	* testsuite/ld-elf/elf.exp: Run new tests.
	* testsuite/ld-elf/retain1.s: New test.
	* testsuite/ld-elf/retain1a.d: New test.
	* testsuite/ld-elf/retain1b.d: New test.
	* testsuite/ld-elf/retain2.d: New test.
	* testsuite/ld-elf/retain2.ld: New test.
	* testsuite/ld-elf/retain2.map: New test.
	* testsuite/ld-elf/retain3.d: New test.
	* testsuite/ld-elf/retain3.s: New test.
	* testsuite/ld-elf/retain4.d: New test.
	* testsuite/ld-elf/retain4.s: New test.
	* testsuite/ld-elf/retain5.d: New test.
	* testsuite/ld-elf/retain5.map: New test.
	* testsuite/ld-elf/retain5lib.s: New test.
	* testsuite/ld-elf/retain5main.s: New test.
	* testsuite/ld-elf/retain6a.d: New test.
	* testsuite/ld-elf/retain6b.d: New test.
	* testsuite/ld-elf/retain6lib.s: New test.
	* testsuite/ld-elf/retain6main.s: New test.
2020-11-18 11:51:13 +00:00
Joel Brobecker
40d9d2fd79 gdb/ChangeLog: fix typo in an entry from 2020-11-15 (gmp-utils.c) 2020-11-18 07:52:46 +04:00
GDB Administrator
632de67bdb Automatic date update in version.in 2020-11-18 00:00:14 +00:00
Simon Marchi
584903d3f5 gdb: make get_array_bounds return bool
Obvious change from int to bool.  I took the opportunity to move the doc
to the header file.

gdb/ChangeLog:

	* gdbtypes.h (get_array_bounds): Return bool, adjust some
	callers.  Move doc here.
	* gdbtypes.c (get_array_bounds): Return bool

Change-Id: I8ed20298cb0927963c1f09b345966533d5ed06e2
2020-11-17 18:47:05 -05:00
Nick Clifton
3d955acb36 When reading string arguments for the assembler's string directives treat space separated strings as a single entity.
* read.c (stringer): Treat space separated, quote enclosed strings
	as a single string.
	* doc/as.texi (asciz): Mention this behaviour in the description
	of the asciz directive.
	* testsuite/gas/all/asciz.s: New test.
	* testsuite/gas/all/asciz.d: New test driver.
	* testsuite/gas/all/gas.exp: Run the new test.
2020-11-17 15:45:01 +00:00
Gary Benson
811bdca093 Fix gdb.trace testcase build failures with Clang
25 gdb.trace tests failed to build on x86 with Clang because the
x86_trace_dummy function is optimized out, causing the builds to
fail with variations on the following error:

  gdb compile failed, /usr/bin/ld:
    /gdbtest/build/gdb/testsuite/outputs/gdb.trace/backtrace/backtrace0.o:
    in function `main':
    /gdbtest/src/gdb/testsuite/gdb.trace/actions.c:146: undefined
    reference to `x86_trace_dummy'
    clang-12: error: linker command failed with exit code 1

This commit adds __attribute__ ((used)) to x86_trace_dummy to prevent
this.

gdb/testsuite/ChangeLog:

	* gdb.trace/trace-common.h (x86_trace_dummy): Add
	__attribute__ ((used)).
2020-11-17 14:52:49 +00:00
Howard Chu
0833984dda Place the libdeps record in the second archive slot.
* ar.c (main): Place the libdeps record in the second archive
	slot.
2020-11-17 14:00:08 +00:00
Alan Modra
4e0e019fa8 [GOLD] powerpc incremental-dump assertion failure
incremental-dump wants to instantiate Target_powerpc without options
being set up.  This patch fixes
  internal error in options, at gold/parameters.h:92

	* powerpc.cc (Target_powerpc::no_tprel_opt_): Rename from tprel_opt_.
	Init to false.
	(Target_powerpc::tprel_opt): Test parameters->options().tls_optimize().
	(Target_powerpc::set_tprel_opt): Delete.
	(Target_powerpc::set_no_tprel_opt): New function.  Update all uses
	of set_tprel_opt.
2020-11-17 20:59:53 +10:30
Michael Hudson-Doyle
f1e05b1978 [GOLD] fix jump to long branch on powerpc
PR 26902
	* powerpc.cc (Relocate::relocate): Do not include local entry
	offset of target function when computing the address of a stub.
2020-11-17 20:59:53 +10:30
Alan Modra
7cc340055d PR26882, --enable-textrel-check=warning test failures on powerpc
PR 26882
	* testsuite/ld-powerpc/dotsym3.d: Add "-z notext" to ld options.
	* testsuite/ld-powerpc/dotsym4.d: Likewise.
	* testsuite/ld-powerpc/ppc476-shared.d: Likewise.
	* testsuite/ld-powerpc/ppc476-shared2.d: Likewise.
	* testsuite/ld-powerpc/powerpc.exp: Likewise for various tests.
	* testsuite/ld-undefined/weak-fundef.s: Add BLPLT variant.
	* testsuite/ld-undefined/weak-undef.exp: Define BLPLT for ppc32.
2020-11-17 20:59:53 +10:30
Andrew Burgess
6f2643dbd2 gdb/arc: fix print_one_insn selftest
I noticed that the ARC print_one_insn selftest was failing.  The
problem is that in print_one_insn_test the arc case falls through into
the special case that handles nios2, score, and riscv.

The special case for these targets hard codes the breakpoint kind to
'4'.  This is find for bare metal arc (see arc-tdep.c,
arc_sw_breakpoint_from_kind), however, for arc/linux only breakpoint
kind '2' is supported (see arc-linux-tdep.c,
arc_linux_sw_breakpoint_from_kind).

So the code in print_one_insn_test as it is currently written passed
in an invalid breakpoint kind, this leads to GDB trying to disassemble
unexpected memory.

The fix is to reorder the code in print_one_insn_test so that the arc
case falls through into the default case.  In the default we no longer
hard code the breakpoint kind, and everything should be good.

Additionally, given the arc code only expects specific breakpoint kind
values, I thought it would be nice to add some gdb_assert to validate
things.  This assert would have triggered in this case and made it
easier to find the error.

After this commit, configure GDB with --enable-targets=all, then run
gdb.gdb/unittest.exp, there should no longer be any failures.

gdb/ChangeLog:

	* arc-linux-tdep.c (arc_linux_sw_breakpoint_from_kind): Add an
	assert.
	* arc-tdep.c (arc_breakpoint_kind_from_pc): Likewise.
	* disasm-selftests.c (print_one_insn_test): Fall throough from ARC
	case to the default.
2020-11-17 10:11:51 +00:00
Andrew Burgess
c72e313608 gdb/testsuite: prevent timeout in gdb.gdb/unittest.exp
When GDB is compiled with --enable-targets=all I would sometimes see
the 'maintenance selftest' in gdb.gdb/unittest.exp test timeout.

This one command causes GDB to run many separate self tests, this can
take some time.  The output of this command basically follows this
pattern:

  (gdb) maintenance selftest
  Running selftest aarch64-analyze-prologue.
  Running selftest aarch64-process-record.
  Running selftest arm-record.
  Running selftest arm_analyze_prologue.
  Running selftest array_view.
  Running selftest child_path.
  Running selftest cli_utils.
  ..... snip lots more lines ....
  Ran 79 unit tests, 0 failed

Currently the expect script waits for the final summary line ("Ran 79
unit test, 0 failed") before declaring pass or fail.  The problem is
that if the summary line takes too long to appear the test will
timeout.

As this test makes use of gdb_test_multiple then all I've done is add
an extra pattern that matches the 'Running selftest ....' lines and
then calls exp_continue.  Doing this means we find matches much more
frequently, and each time we do the timeout timer resets, preventing
the overall test from timing out.

gdb/testsuite/ChangeLog:

	* gdb.gdb/unittest.exp: Spot 'Running...' lines.
2020-11-17 10:11:50 +00:00
Andrew Burgess
037d7135de gdb: improve command completion for 'print', 'x', and 'display'
The /FMT specification on the print command currently breaks command
completion, so:

  (gdb) p var.<TAB><TAB>
  .... list of fields in var .....

But,

  (gdb) p/d var.<TAB><TAB>
  ..... list of all symbols .....

After this commit this issue is now resolved.

There are some other details around tab-completion and /FMT which
hopefully this commit improves.  So, before:

  (gdb) p/<TAB><TAB>
  .... lists all symbols .....

After:

  (gdb) p/<TAB><TAB>		# Nothing changes...

The thinking here is that after a / the user must type a FMT, but we
don't offer tab completion on FMT characters.  Placing a symbol
directly after a / will not do what the user expects, so offering that
seems wrong.

Similarly, before we had:

  (gdb) p/d<TAB><TAB>
  ... lists all symbols starting with 'd' ....

But afterwards:

  (gdb) p/d<TAB><TAB>		# Adds a single space, so we get:
  (gdb) p/d <CURSOR>

As before, typing a symbol where FMT is expected will not do what the
user expects.  If the user has added a FMT string then upon tab
completion GDB assumes the FMT string is complete and prepares the
user to type an expression.

In this commit I have also added completion functions for the 'x' and
'display' commands.  These commands also support /FMT specifiers and
so share some code with 'print'.

gdb/ChangeLog:

	* printcmd.c: Include 'safe-ctype.c'.
	(skip_over_slash_fmt): New function.
	(print_command_completer): Call skip_over_slash_fmt.
	(display_and_x_command_completer): New function.
	(_initialize_printcmd): Add command completion for 'x' and
	'display'.

gdb/testsuite/ChangeLog:

	* gdb.base/completion.exp: Add new tests.
2020-11-17 10:01:11 +00:00
GDB Administrator
0bfc584f66 Automatic date update in version.in 2020-11-17 00:00:17 +00:00
Przemyslaw Wirkus
3f4ff0886f aarch64: Add +pauth flag for Pointer Authentication feature
New -march option +pauth enables PAuth vel PAC (Pointer Authentication)
feature.
2020-11-16 21:22:09 +00:00
Przemyslaw Wirkus
e64441b14c aarch64: Extract Condition flag manipulation feature from Armv8.4-A
Extract FLAGM (Condition flag manipulation) feature from Armv8.4-A.
Please note that FLAGM stays a Armv8.4-A feature but now can be
assigned to other architectures or CPUs.

New -march option +flagm is added to enable independently this
feature.
2020-11-16 21:07:17 +00:00
Przemyslaw Wirkus
1bbda94fe0 arm: Add support for Cortex-A78C
This patch adds support for -mcpu=cortex-a78c command line option.
For more information about this processor, see [0]:

[0] https://developer.arm.com/ip-products/processors/cortex-a/cortex-a78c
2020-11-16 20:28:14 +00:00
Tom Tromey
119e99bb7f Update gdb.dwarf2/data-loc.exp
Tom de Vries pointed out that the series to handle
-fgnat-encodings=minimal regressed data-loc.exp:

https://sourceware.org/pipermail/gdb-patches/2020-November/173035.html

This was my oversight.  Looking at the test, it mimics what GNAT
emits.  The patch series in question changed the approach that gdb
takes to such arrays -- now they are transformed back into "old" style
structures.  (This is perhaps a step backward in a semantics sense,
but on the other hand it more accurately reflects the underlying
reality, and lets gdb continue to create objects of this type.)

This patch updates the test case, by adjusting the expected output.
It also removes the tests done in the C language, because they are now
incorrect, and because (IMO) they don't add much value.

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

	* gdb.dwarf2/data-loc.exp: Update expected output.  Remove C
	tests.
2020-11-16 08:55:53 -07:00
Pedro Alves
2b3cb4006a Fix frame cycle detection
The recent commit to make scoped_restore_current_thread's cdtors
exception free regressed gdb.base/eh_return.exp:

  Breakpoint 1, 0x00000000004012bb in eh2 (gdb/frame.c:641: internal-error: frame_id get_frame_id(frame_info*): Assertion `stashed' failed.
  A problem internal to GDB has been detected,
  further debugging may prove unreliable.
  Quit this debugging session? (y or n) FAIL: gdb.base/eh_return.exp: hit breakpoint (GDB internal error)

That testcase uses __builtin_eh_return and, before the regression, the
backtrace at eh2 looked like this:

 (gdb) bt
 #0  0x00000000004006eb in eh2 (p=0x4006ec <continuation>) at src/gdb/testsuite/gdb.base/eh_return.c:54
 Backtrace stopped: previous frame identical to this frame (corrupt stack?)

That "previous frame identical to this frame" is caught by the cycle
detection based on frame id.

The assertion failing is this one:

 638           /* Since this is the first frame in the chain, this should
 639              always succeed.  */
 640           bool stashed = frame_stash_add (fi);
 641           gdb_assert (stashed);

originally added by

  commit f245535cf5
  Author:     Pedro Alves <palves@redhat.com>
  AuthorDate: Mon Sep 5 18:41:38 2016 +0100

      Fix PR19927: Avoid unwinder recursion if sniffer uses calls parse_and_eval

The assertion is failing because frame #1's frame id was stashed
before the id of frame #0 is stashed.  The frame id of frame #1 was
stashed here:

 (top-gdb) bt
 #0  frame_stash_add (frame=0x1e24c90) at src/gdb/frame.c:276
 #1  0x0000000000669c1b in get_prev_frame_if_no_cycle (this_frame=0x19f8370) at src/gdb/frame.c:2120
 #2  0x000000000066a339 in get_prev_frame_always_1 (this_frame=0x19f8370) at src/gdb/frame.c:2303
 #3  0x000000000066a360 in get_prev_frame_always (this_frame=0x19f8370) at src/gdb/frame.c:2319
 #4  0x000000000066b56c in get_frame_unwind_stop_reason (frame=0x19f8370) at src/gdb/frame.c:3028
 #5  0x000000000059f929 in dwarf2_frame_cfa (this_frame=0x19f8370) at src/gdb/dwarf2/frame.c:1462
 #6  0x00000000005ce434 in dwarf_evaluate_loc_desc::get_frame_cfa (this=0x7fffffffc070) at src/gdb/dwarf2/loc.c:666
 #7  0x00000000005989a9 in dwarf_expr_context::execute_stack_op (this=0x7fffffffc070, op_ptr=0x1b2a053 "\364\003", op_end=0x1b2a053 "\364\003") at src/gdb/dwarf2/expr.c:1161
 #8  0x0000000000596af6 in dwarf_expr_context::eval (this=0x7fffffffc070, addr=0x1b2a052 "\234\364\003", len=1) at src/gdb/dwarf2/expr.c:303
 #9  0x0000000000597b4e in dwarf_expr_context::execute_stack_op (this=0x7fffffffc070, op_ptr=0x1b2a063 "", op_end=0x1b2a063 "") at src/gdb/dwarf2/expr.c:865
 #10 0x0000000000596af6 in dwarf_expr_context::eval (this=0x7fffffffc070, addr=0x1b2a061 "\221X", len=2) at src/gdb/dwarf2/expr.c:303
 #11 0x00000000005c8b5a in dwarf2_evaluate_loc_desc_full (type=0x1b564d0, frame=0x19f8370, data=0x1b2a061 "\221X", size=2, per_cu=0x1b28760, per_objfile=0x1a84930, subobj_type=0x1b564d0, subobj_byte_offset=0) at src/gdb/dwarf2/loc.c:2260
 #12 0x00000000005c9243 in dwarf2_evaluate_loc_desc (type=0x1b564d0, frame=0x19f8370, data=0x1b2a061 "\221X", size=2, per_cu=0x1b28760, per_objfile=0x1a84930) at src/gdb/dwarf2/loc.c:2444
 #13 0x00000000005cb769 in locexpr_read_variable (symbol=0x1b59840, frame=0x19f8370) at src/gdb/dwarf2/loc.c:3687
 #14 0x0000000000663137 in language_defn::read_var_value (this=0x122ea60 <c_language_defn>, var=0x1b59840, var_block=0x0, frame=0x19f8370) at src/gdb/findvar.c:618
 #15 0x0000000000663c3b in read_var_value (var=0x1b59840, var_block=0x0, frame=0x19f8370) at src/gdb/findvar.c:822
 #16 0x00000000008c7d9f in read_frame_arg (fp_opts=..., sym=0x1b59840, frame=0x19f8370, argp=0x7fffffffc470, entryargp=0x7fffffffc490) at src/gdb/stack.c:542
 #17 0x00000000008c89cd in print_frame_args (fp_opts=..., func=0x1b597c0, frame=0x19f8370, num=-1, stream=0x1aba860) at src/gdb/stack.c:890
 #18 0x00000000008c9bf8 in print_frame (fp_opts=..., frame=0x19f8370, print_level=0, print_what=SRC_AND_LOC, print_args=1, sal=...) at src/gdb/stack.c:1394
 #19 0x00000000008c92b9 in print_frame_info (fp_opts=..., frame=0x19f8370, print_level=0, print_what=SRC_AND_LOC, print_args=1, set_current_sal=1) at src/gdb/stack.c:1119
 #20 0x00000000008c75f0 in print_stack_frame (frame=0x19f8370, print_level=0, print_what=SRC_AND_LOC, set_current_sal=1) at src/gdb/stack.c:366
 #21 0x000000000070250b in print_stop_location (ws=0x7fffffffc9e0) at src/gdb/infrun.c:8110
 #22 0x0000000000702569 in print_stop_event (uiout=0x1a8b9e0, displays=true) at src/gdb/infrun.c:8126
 #23 0x000000000096d04b in tui_on_normal_stop (bs=0x1bcd1c0, print_frame=1) at src/gdb/tui/tui-interp.c:98
 ...

Before the commit to make scoped_restore_current_thread's cdtors
exception free, scoped_restore_current_thread's dtor would call
get_frame_id on the selected frame, and we use
scoped_restore_current_thread pervasively.  That had the side effect
of stashing the frame id of frame #0 before reaching the path shown in
the backtrace.  I.e., the frame id of frame #0 happened to be stashed
before the frame id of frame #1.  But that was by chance, not by
design.

This commit:

  commit 256ae5dbc7
  Author:     Kevin Buettner <kevinb@redhat.com>
  AuthorDate: Mon Oct 31 12:47:42 2016 -0700

      Stash frame id of current frame before stashing frame id for previous frame

Fixed a similar problem, by making sure get_prev_frame computes the
frame id of the current frame before unwinding the previous frame, so
that the cycle detection works properly.  That fix misses the scenario
we're now running against, because if you notice, the backtrace above
shows that frame #4 calls get_prev_frame_always, not get_prev_frame.
I.e., nothing is calling get_frame_id on the current frame.

The fix here is to move Kevin's fix down from get_prev_frame to
get_prev_frame_always.  Or actually, a bit further down to
get_prev_frame_always_1 -- note that inline_frame_this_id calls
get_prev_frame_always, so we need to be careful to avoid recursion in
that scenario.

gdb/ChangeLog:

	* frame.c (get_prev_frame): Move get_frame_id call from here ...
	(get_prev_frame_always_1): ... to here.
	* inline-frame.c (inline_frame_this_id): Mention
	get_prev_frame_always_1 in comment.

Change-Id: Id960c98ab2d072c48a436c3eb160cc4b2a5cfd1d
2020-11-16 14:54:43 +00:00
Nick Clifton
10c9f4e584 Update the Spanish translation for the ld/ subdirectory.
* po/es.po: Updated Spanish translation.
2020-11-16 12:32:06 +00:00
Shahab Vahedi
315d05eb3f ld: Fix the tls_ie-01 test for arc
The purpose of the test is to look for entries of "foo" and
"bar" in the ".got".  The old "objdump -s ..." has been replaced
with "objdump -D ..." to inspect the final executable.  A sample
output looks like:

------------------------8<------------------------

$ arc-elf32-objdump -D -j .got tls_ie-01

tls_ie-01:     file format elf32-littlearc

Disassembly of section .got:

00002110 <_GLOBAL_OFFSET_TABLE_>:
        ...
    211c:       08 00 00 00        .word   0x00000008
    2120:       0c 00 00 00        .word   0x0000000c

------------------------>8------------------------

ld/
	* testsuite/ld-arc/tls_ie-01.d: Update the dump command.
2020-11-16 13:48:49 +02:00
GDB Administrator
5778e0dd5d Automatic date update in version.in 2020-11-16 00:00:10 +00:00
Joel Brobecker
b74dbc2093 Add support for fixed-point type comparison operators
This patch adds support for binary comparison operators with
fixed-point type values.

gdb/ChangeLog:

        * valarith.c (fixed_point_binop): Add BINOP_EQUAL and BINOP_LESS
        handling.
        (value_less): Add fixed-point handling.

gdb/testsuite/ChangeLog:

        * gdb.ada/fixed_cmp.exp: Add -fgnat-encodings=minimal testing.
        * gdb.dwarf2/dw2-fixed-point.c (pck__fp1_var2): New global.
        (main): Add reference to pck__fp1_var2.
        * gdb.dwarf2/dw2-fixed-point.exp: Add comparison operator testing.
2020-11-15 03:18:35 -05:00
Joel Brobecker
0a12719e51 Add support for fixed-point type arithmetic
This patch adds support for binary operations on fixed-point values,
as well as for the negative unary operator.

gdb/ChangeLog:

        * eval.c (binop_promote): Add fixed-point type handling.
        * valarith.c (fixed_point_binop): New function.
        (scalar_binop): Add fixed-point type handling.
        (value_neg): Add fixed-point type handling.
        * valops.c (value_cast_to_fixed_point): New function.
        (value_cast): Add fixed-point type handling.

gdb/testsuite/ChangeLog:

        * gdb.dwarf2/dw2-fixed-point.exp: Add arithmetic tests.
2020-11-15 03:17:12 -05:00
Joel Brobecker
0c9150e4de Add ptype support for DWARF-based fixed-point types
Note that the ptype information printed for types described
via pure DWARF debug info is slightly less informative as
the one printed when the information is encoded in the type's
name, via the GNAT encoding. As a result, the output in
the case of DWARF-described fixed point types is slightly
different. In pratice, this is no real loss because the information
not available in DWARF has no bearing on how the type is actually
stored in memory.

gdb/ChangeLog:

        * ada-typeprint.c (ada_print_type): Add handing of fixed-point
        range types.
        * c-typeprint.c (c_type_print_varspec_prefix)
        (c_type_print_varspec_suffix, c_type_print_base_1): Add
        TYPE_CODE_FIXED_POINT handling.
        * p-typeprint.c (pascal_type_print_varspec_prefix)
        (pascal_type_print_varspec_suffix): Likewise.
        * typeprint.c (print_type_fixed_point): New function.
        * typeprint.h (print_type_fixed_point): Add declaration.

gdb/testsuite/ChangeLog:

        * gdb.ada/fixed_points.exp: Add ptype tests.
        * gdb.dwarf2/dw2-fixed-point.exp: Likewise.
2020-11-15 03:16:01 -05:00
Joel Brobecker
b26daff97c fix printing of DWARF fixed-point type objects with format modifier
Consider a fixed-point type such the scaling factor is 1/16,
as the following Ada code snippet would create:

      type FP1_Type is delta 0.1 range -1.0 .. +1.0;
      FP1_Var : FP1_Type := 0.25;

Printing the value of this variable with a format modifier yields
the wrong value. E.g.:

    (gdb) p /x fp1_var
    $6 = 0x4

Since the real value is 0.25, we therefore expected...

    (gdb) p /x fp1_var
    $6 = 0x0

What happens, in this case, is that the value being printed is
actually the "raw" value of our object, before the scaling factor
gets applied.

This commit fixes the issue by using approach as for float values,
where we convert the value into an integer value, prior to printing,
knowing that the conversion takes the scaling factor into account.

gdb/ChangeLog:

        * printcmd.c (print_scalar_formatted): Add fixed-point type
        handling when options->format is set.

gdb/testsuite/ChangeLog:

        * gdb.dwarf2/dw2-fixed-point.exp: Add "print /x" tests.
2020-11-15 03:14:24 -05:00
Joel Brobecker
0958441403 Add support for printing value of DWARF-based fixed-point type objects
This commit introduces a new kind of type, meant to describe
fixed-point types, using a new code added specifically for
this purpose (TYPE_CODE_FIXED_POINT).

It then adds handling of fixed-point base types in the DWARF reader.

And finally, as a first step, this commit adds support for printing
the value of fixed-point type objects.

Note that this commit has a known issue: Trying to print the value
of a fixed-point object with a format letter (e.g. "print /x NAME")
causes the wrong value to be printed because the scaling factor
is not applied. Since the fix for this issue is isolated, and
this is not a regression, the fix will be made in a pach of its own.
This is meant to simplify review and archeology.

Also, other functionalities related to fixed-point type handling
(ptype, arithmetics, etc), will be added piecemeal as well, for
the same reasons (faciliate reviews and archeology). Related to this,
the testcase gdb.ada/fixed_cmp.exp is adjusted to compile the test
program with -fgnat-encodings=all, so as to force the use of GNAT
encodings, rather than rely on the compiler's default to use them.
The intent is to enhance this testcase to also test the pure DWARF
approach using -fgnat-encodings=minimal as soon as the corresponding
suport gets added in. Thus, the modification to the testcase is made
in a way that it prepares this testcase to be tested in both modes.

gdb/ChangeLog:

        * ada-valprint.c (ada_value_print_1): Add fixed-point type handling.
        * dwarf2/read.c (get_dwarf2_rational_constant)
        (get_dwarf2_unsigned_rational_constant, finish_fixed_point_type)
        (has_zero_over_zero_small_attribute): New functions.
        read_base_type, set_die_type): Add fixed-point type handling.
        * gdb-gdb.py.in: Add fixed-point type handling.
        * gdbtypes.c: #include "gmp-utils.h".
        (create_range_type, set_type_code): Add fixed-point type handling.
        (init_fixed_point_type): New function.
        (is_integral_type, is_scalar_type): Add fixed-point type handling.
        (print_fixed_point_type_info): New function.
        (recursive_dump_type, copy_type_recursive): Add fixed-point type
        handling.
        (fixed_point_type_storage): New typedef.
        (fixed_point_objfile_key): New static global.
        (allocate_fixed_point_type_info, is_fixed_point_type): New functions.
        (fixed_point_type_base_type, fixed_point_scaling_factor): New
        functions.
        * gdbtypes.h: #include "gmp-utils.h".
        (enum type_code) <TYPE_SPECIFIC_FIXED_POINT>: New enum.
        (union type_specific) <fixed_point_info>: New field.
        (struct fixed_point_type_info): New struct.
        (INIT_FIXED_POINT_SPECIFIC, TYPE_FIXED_POINT_INFO): New macros.
        (init_fixed_point_type, is_fixed_point_type)
        (fixed_point_type_base_type, fixed_point_scaling_factor)
        (allocate_fixed_point_type_info): Add declarations.
        * valprint.c (generic_val_print_fixed_point): New function.
        (generic_value_print): Add fixed-point type handling.
        * value.c (value_as_address, unpack_long): Add fixed-point type
        handling.

gdb/testsuite/ChangeLog:

        * gdb.ada/fixed_cmp.exp: Force compilation to use -fgnat-encodings=all.
        * gdb.ada/fixed_points.exp: Add fixed-point variables printing tests.
        * gdb.ada/fixed_points/pck.ads, gdb.ada/fixed_points/pck.adb:
        New files.
        * gdb.ada/fixed_points/fixed_points.adb: Add use of package Pck.

        * gdb.dwarf2/dw2-fixed-point.c, gdb.dwarf2/dw2-fixed-point.exp:
        New files.
2020-11-15 03:12:52 -05:00
Joel Brobecker
e55c6530db Move uinteger_pow gdb/valarith.c to gdb/utils.c and make it public
This is a generic function which I would like to use in a followup
patch adding support for fixed-point types. So this commit moves it
out of valarith.c into util.c, and makes it non-static.

gdb/ChangeLog:

        * utils.h (uinteger_pow): Add declaration.
        * utils.c (uinteger_pow): Moved here (without changes)...
        * valarith.c (uinteger_pow): ... from here.
2020-11-15 03:10:52 -05:00
Joel Brobecker
b34c74ab9a gmp-utils: New API to simply use of GMP's integer/rational/float objects
This API was motivated by a number of reasons:
  - GMP's API does not handle "long long" and "unsigned long long",
    so using LONGEST and ULONGEST is not straightforward;
  - Automate the need to initialize GMP objects before use, and
    clear them when no longer used.

However, this API grew also to help with similar matter such
as formatting to a string, and also reading/writing fixed-point
values from byte buffers.

Dedicated unit testing is also added.

gdb/ChangeLog:

        * gmp-utils.h,  gmp-utils.h: New file.
        * unittests/gmp-utils-selftests.c: New file.
        * Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
        unittests/gmp-utils-selftests.c.
        (COMMON_SFILES) Add gmp-utils.c.
        (HFILES_NO_SRCDIR): Add gmp-utils.h.
2020-11-15 03:09:44 -05:00
Joel Brobecker
1b4ac058f7 gdb: Make GMP a required dependency for building GDB
This commit modifies gdb's configure script to trigger an error
if we cannot find a usable libgmp.

For the record, making this a requirement was discussed in March 2018:
https://sourceware.org/pipermail/gdb-patches/2018-March/147373.html

gdb/ChangeLog:

        * configure.ac: Generate an error if a usable GMP library
        could not be found.
        * configure: Regenerate.
2020-11-15 03:08:40 -05:00
Joel Brobecker
2c947d9bc2 gdb/configure: Add --with-libgmp-prefix option
This patch allows a user to tell gdb's configure script where
his GMP library is installed.

gdb/ChangeLog:

        * configure.ac: Add support for --with-libgmp-prefix.
        * Makefile.in (LIBGMP): New variable.
        (CLIBS): Include $(LIBGMP).
        * configure, config.in: Regenerate
2020-11-15 03:07:45 -05:00
GDB Administrator
0eb994e572 Automatic date update in version.in 2020-11-15 00:00:13 +00:00
Andrew Burgess
9dd02fc063 gdb: add tab completion of type field names for Fortran
Add support for tab-completion on Fortran field names.  Consider this
test case:

 program test
   type my_type
      integer :: field_a
      integer :: other_field
      integer :: last_field
   end type my_type

   type(my_type) :: var

   print *, var
 end program test

And the GDB session before this patch:

 (gdb) start
 ...
 (gdb) p var%                   <- Trigger TAB completion here.
 Display all 200 possibilities? (y or n) n
 (gdb) p var%

And the GDB session with this patch:

 (gdb) start
 ...
 (gdb) p var%                   <- Trigger TAB completion here.
 field_a      last_field   other_field
 (gdb) p var%

The implementation for this is basically copied from c-exp.y, I
tweaked the parser patterns to be appropriate for Fortran, and it
"just worked".

gdb/ChangeLog:

	PR cli/26879
	* f-exp.y (COMPLETE): New token.
	(exp): Two new rules for tab-completion.
	(saw_name_at_eof): New static global.
	(last_was_structop): Likewise.
	(yylex): Set new variables, and return COMPLETE token at the end
	of the input stream in some cases.

gdb/testsuite/ChangeLog:

	PR cli/26879
	* gdb.fortran/completion.exp: New file.
	* gdb.fortran/completion.f90: New file.
2020-11-14 21:19:27 +00:00
Tom Tromey
758cb81029 Use "bool" in fetch_inferior_event
A while back I noticed that fetch_inferior_event used "int" for
should_stop, whereas it can be bool.  The method it is assigned from:

	      should_stop = thread_fsm->should_stop (thr);

... already returns bool.

Tested by rebuilding.

gdb/ChangeLog
2020-11-14  Tom Tromey  <tom@tromey.com>

	* infrun.c (fetch_inferior_event): Use "bool" for should_stop.
2020-11-14 09:44:56 -07:00
Tom Tromey
749065b7a7 Add use of const in opencl-lang.c
I found another expression-related spot that could use constification.
This patch adds it.  Tested by rebuilding.

gdb/ChangeLog
2020-11-14  Tom Tromey  <tom@tromey.com>

	* opencl-lang.c (opencl_component_ref): Make "comps" const.
2020-11-14 09:24:41 -07:00
Simon Marchi
2c5b1849a6 gdb: fix comment in arm-tdep.c
gdb/ChangeLog:

	* arm-tdep.c (class arm_instruction_reader) <read>: Fix comment.

Change-Id: I8f5355b314e8db643b645a6281042f514b46a908
2020-11-14 11:18:59 -05:00
Borislav Petkov
0fa0fc8539 x86: Ignore CS/DS/ES/SS segment-override prefixes in 64-bit mode
"In 64-bit mode, the CS, DS, ES, and SS segment-override prefixes have
no effect. These four prefixes are not treated as segment-override
prefixes for the purposes of multiple-prefix rules. Instead, they are
treated as null prefixes." (AMD APM v2).

However, objdump disassembles instructions containing those ignored
prefixes by still generating that segment override:

  66 66 2e 0f 1f 84 00 	data16 nopw %cs:0x0(%rax,%rax,1)
  00 00 00 00

Print those segment override prefixes as excessive ones:

  66 66 2e 0f 1f 84 00    data16 cs nopw 0x0(%rax,%rax,1)
  00 00 00 00

which is what they actually are - they have no effect and the decoding
hardware ignores them.

gas/

2020-11-14  Borislav Petkov  <bp@suse.de>

	* testsuite/gas/i386/x86-64-segovr.d: Adjust regexes.
	* testsuite/gas/i386/x86-64-nops.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-1.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-1-g64.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-1-core2.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-1-k8.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-2.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-3.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-4.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-4-core2.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-4-k8.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-5.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-5-k8.d: Likewise.
	* testsuite/gas/i386/x86-64-nops-7.d: Likewise.
	* testsuite/gas/i386/x86-64-nop-1.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-1a.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-1b.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-1c.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-1d.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-1g.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-2c.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-6.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-7.d: Likewise.
	* testsuite/gas/i386/x86-64-align-branch-8.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-1-core2.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-1-k8.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-1.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-2.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-3.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-4-core2.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-4-k8.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-4.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-5-k8.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops-5.d: Likewise.
	* testsuite/gas/i386/ilp32/x86-64-nops.d:: Likewise.

ld/

2020-11-14  Borislav Petkov  <bp@suse.de>

	* testsuite/ld-x86-64/pe-x86-64-4.od: Adjust regexes.
	* testsuite/ld-x86-64/tlsld3.dd: Likewise.
	* testsuite/ld-x86-64/tlsld4.dd: Likewise.

opcodes/

2020-11-14  Borislav Petkov  <bp@suse.de>

	* i386-dis.c (ckprefix): Do not assign active_seg_prefix in
	64-bit addressing mode.
	(NOTRACK_Fixup): Test prefixes for PREFIX_DS, instead of
	active_seg_prefix.
2020-11-14 06:20:33 -08:00
Tom Tromey
e8b2f0d952 Use const more in c-lang.c
This changes a few functions in c-lang.c to add "const" to parameters
and return types.  Tested by rebuilding.

gdb/ChangeLog
2020-11-13  Tom Tromey  <tom@tromey.com>

	* c-lang.c (convert_ucn, convert_octal, convert_hex)
	(convert_escape, parse_one_string): Constify.
2020-11-13 19:42:50 -07:00
GDB Administrator
1aa9981f1c Automatic date update in version.in 2020-11-14 00:00:16 +00:00
H.J. Lu
cbd5b99cce elf: Set rel_from_abs to 1 for __ehdr_start
bfdlink.h has

  /* Symbol will be converted from absolute to section-relative.  Set for
     symbols defined by a script from "dot" (also SEGMENT_START or ORIGIN)
     outside of an output section statement.  */
  unsigned int rel_from_abs : 1;

linker.c has

.{* Return TRUE if the symbol described by a linker hash entry H
.   is going to be absolute.  Linker-script defined symbols can be
.   converted from absolute to section-relative ones late in the
.   link.  Use this macro to correctly determine whether the symbol
.   will actually end up absolute in output.  *}
.#define bfd_is_abs_symbol(H) \
.  (((H)->type == bfd_link_hash_defined \
.    || (H)->type == bfd_link_hash_defweak) \
.   && bfd_is_abs_section ((H)->u.def.section) \
.   && !(H)->rel_from_abs)
.

Set rel_from_abs to 1 for __ehdr_start which will be converted from
absolute to section-relative in assign_file_positions_for_load_sections.

	PR ld/26869
	* ldelf.c (ldelf_before_allocation): Set rel_from_abs to 1 for
	__ehdr_start.
	* testsuite/ld-i386/i386.exp: Run pr26869.
	* testsuite/ld-i386/pr26869.d: New file.
	* testsuite/ld-i386/pr26869.s: Likewise.
2020-11-13 15:44:47 -08:00
Keith Seitz
25f4c26276 Exclude debuginfo files from "outside of ELF segments" warning
When GDB loads an ELF file, it will warn when a section is not located
in an ELF segment:

$ ./gdb -q -iex "set build-id-verbose 0" --ex "b systemctl_main" -ex "r" -batch --args systemctl kexec
Breakpoint 1 at 0xc24d: file ../src/systemctl/systemctl.c, line 8752.
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libgcc_s.so.1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libcap.so.2
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libacl.so.1
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libcryptsetup.so.12
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libgcrypt.so.20
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libip4tc.so.2
[snip]
This has feature has also been reported by various users, most notably
the Fedora-EOL'd bug 1553086.

Mark Wielaard explains the issue quite nicely in

   https://sourceware.org/bugzilla/show_bug.cgi?id=24717#c2

The short of it is, the ELF program headers for debuginfo files are
not suited to this particular use case. Consequently, the warning
generated above really is useless and should be ignored.

This patch follows the same heuristic that BFD itself uses.

gdb/ChangeLog
2020-11-13  Keith Seitz  <keiths@redhat.com>

	https://bugzilla.redhat.com/show_bug.cgi?id=1553086
	* elfread.c (elf_symfile_segments): Omit "Loadable section ...
	outside of ELF segments" warning for debugin
2020-11-13 09:31:49 -08:00
Keith Seitz
9d3ab915be Add file name to "Loadable section ... outside of ELF segments" warning
As requested in gdb/23034, I would like to extend the warning message
GDB displays when it detects a loadable section that is outside any
ELF segment.

Before:

$ gdb -q --ex "b systemctl_main" -ex "r" -batch --args systemctl kexec
Breakpoint 1 at 0xc24d: file ../src/systemctl/systemctl.c, line 8752.
warning: Loadable section ".note.gnu.property" outside of ELF segments
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
warning: Loadable section ".note.gnu.property" outside of ELF segments
[snip]

Breakpoint 1, systemctl_main (argv=0x7fffffffd348, argc=2) at ../src/systemctl/systemctl.c:8752
8752                    r = systemctl_main(argc, argv);

After:

warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libcap.so.2
warning: Loadable section ".note.gnu.property" outside of ELF segments
  in .gnu_debugdata for /lib64/libacl.so.1
[snip]

I think this is eminently more useful output.

gdb/ChangeLog
2020-11-13  Keith Seitz  <keiths@redhat.com>

	PR gdb/23034
	* elfread.c (elf_symfile_segments): Output a BFD file name
	for the "Loadable section ... outside of ELF segments" warning.
2020-11-13 09:28:50 -08:00
Simon Marchi
9ecab40c77 gdb/arm: avoid undefined behavior shift when decoding immediate value
When loading the code file provided in PR 26828 and GDB is build with
UBSan, we get:

    Core was generated by `./Foo'.
    Program terminated with signal SIGABRT, Aborted.
    #0  0xb6c3809c in pthread_cond_wait () from /home/simark/build/binutils-gdb/gdb/repo/lib/libpthread.so.0
    [Current thread is 1 (LWP 29367)]
    (gdb) bt
    /home/simark/src/binutils-gdb/gdb/arm-tdep.c:1551:30: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int'

The sequence of instructions at pthread_cond_wait, in the
libpthread.so.0 library, contains this instruction with an immediate
constant with a "rotate amount" of 0:

    e24dd044        sub     sp, sp, #68     ; 0x44

Since arm_analyze_prologue shifts by "32 - rotate amount", it does a 32
bit shift of a 32 bit type, which is caught by UBSan.

Fix it by factoring out the decoding of immediates in a new function,
arm_expand_immediate.

I added a selftest for arm_analyze_prologue that replicates the
instruction sequence.  Without the fix, it crashes GDB if it is build
with --enable-ubsan.

I initially wanted to re-use the abstract_memory_reader class already in
arm-tdep.c, used to make arm_process_record testable.  However,
arm_process_record and arm_analyze_prologue don't use the same kind of
memory reading functions.  arm_process_record uses a function that
returns an error status on failure while arm_analyze_prologue uses one
that throws an exception.  Since i didn't want to introduce any other
behavior change, I decided to just introduce a separate interface
(arm_instruction_reader).  It is derived from
abstract_instruction_reader in aarch64-tdep.c.

gdb/ChangeLog:

	PR gdb/26835
	* arm-tdep.c (class arm_instruction_reader): New.
	(target_arm_instruction_reader): New.
	(arm_analyze_prologue): Add instruction reader parameter and use
	it.  Use arm_expand_immediate.
	(class target_arm_instruction_reader): Adjust.
	(arm_skip_prologue): Adjust.
	(arm_expand_immediate): New.
	(arm_scan_prologue): Adjust.
	(arm_analyze_prologue_test): New.
	(class test_arm_instruction_reader): New.

Change-Id: Ieb1c1799bd66f8c7421384f44f5c2777b578ff8d
2020-11-13 11:58:37 -05:00
Joseph Myers
5643c500fe Fix Windows-target testing in gdb_file_cmd
GCC for Windows target produces executables called foo.exe when given
"-o foo".  (More specifically, it's done that for native compilers for
a long time, and for cross compilers to Windows target since GCC
commit 5bc86b599054f494ec0a45e49b82749320eaa9c4, in GCC 8 and later.)
This causes problems for many GDB tests expecting a program to have
the exact file name passed to -o.

Fix this by checking for the case where only the .exe exists in
gdb_file_cmd and adjusting the name passed to the file command
accordingly.  There may well be other places with this issue in the
GDB testsuite, but this fix allows many tests to succeed that
previously fell over.

2020-11-12  Joseph Myers  <joseph@codesourcery.com>

	* lib/gdb.exp (gdb_file_cmd): Check for case where $arg.exe exists
	but $arg does not.
2020-11-13 16:35:02 +00:00
Nick Clifton
50ea087755 Fix readelf's and objdump's dislplay of DWO links when multiple links are present.
PR 26829
 * dwarf.c (struct dwo_info): Add cu_offset field.
 (add_dwo_info): Add cu_offset parameter.  Record in new dwo_info
 struct.
 (add_dwo_name): Add cu_offset field.
 (add_dwo_dir): Add cu_offset field.
 (add_dwo_id): Add cu_offset field.
 (read_and_display_attr_value): Pass cu_offset to dwo recording
 functions.
 (load_separate_debug_files): Accumulate name, dir and id values
 and display once for each CU.
 * testsuite/binutils-all/dwo.sL Use a separate CU for the second
 dwo link.
 * testsuite/binutils-all/readelf.k2: Update expected output.
2020-11-13 16:02:39 +00:00
Andrew Burgess
5a7cf52794 gdb: delete a couple of declarations from f-lang.h
One declaration in f-lang.h is for a function that doesn't even exist,
another is for a function that is only used within f-lang.c.

One declaration is deleted, the other function I make static in
f-lang.c.

gdb/ChangeLog:

	* f-lang.c (fortran_argument_convert): Add declaration.  Add
	header comment, taken from f-lang.h.  Make static.
	* f-lang.h (f77_get_dynamic_array_length): Delete declaration.
	(fortran_argument_convert): Delete declaration.
2020-11-13 13:51:09 +00:00
Andre Vieira
48f4d8ce96 gas, arm: PR26858 Fix availability of single precision vmul/vmla in arm mode
This patch fixes a mistake when enabling MVE instructions that disabled support
for single precision vmla and vmul for arm mode.

gas/ChangeLog:
2020-11-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	PR 26858
	*  config/tc-arm.c (asm_opcode insns): Fix vmul and vmla's ARM_VARIANT.
	* testsuite/gas/arm/pr26858.s: New test.
	* testsuite/gas/arm/pr26858.d: New test.
2020-11-13 08:59:48 +00:00
GDB Administrator
a4ae48ccf8 Automatic date update in version.in 2020-11-13 00:00:20 +00:00