103978 Commits

Author SHA1 Message Date
10f6a3add6 Only use stride for final element type
A DWARF array type may specify a stride.  Currently, the DWARF reader
applies this stride to every dimension of an array.  However, this
seems incorrect to me -- only the innermost array ought to use the
stride, while outer arrays should compute a stride based on the size
of the inner arrays.  This patch arranges to apply the stride only to
the innermost array type.  This fixes a bug noticed when running some
Ada tests with -fgnat-encodings=minimal.

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

	* dwarf2/read.c (read_array_type): Only apply stride to innermost
	array.

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

	* gdb.ada/enum_idx_packed.exp: Add test.
	* gdb.ada/enum_idx_packed/foo.adb (Multi_Access):
	New variable.
	* gdb.ada/enum_idx_packed/pck.ads (Short)
	(Multi_Dimension, Multi_Dimension_Access): New types.
2020-11-04 08:49:18 -07:00
b72795a8f5 Fix bit strides for -fgnat-encodings=minimal
With -fgnat-encodings=minimal, the enum_idx_packed.exp test will fail.
In this test case, we have an array (with dynamic length) of arrays,
and the inner array has a bit stride.  In this situation, the outer
array's bit stride must be updated to account for the entire bit
length of the inner array.

Here, again, some tests must be kfail'd when an older version of GNAT
is in use.

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

	* gdbtypes.c (update_static_array_size): Handle bit stride.

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

	* gdb.ada/enum_idx_packed.exp: Test two forms of -fgnat-encodings.
2020-11-04 08:49:18 -07:00
24aa1b0282 Resolve dynamic type in ada_value_struct_elt
An internal AdaCore test case showed that gdb mishandled a case of
assigning to an array element in a packed array inside a variant
record.  This problem can only be seen with -fgnat-encodings=minimal,
which isn't yet widely used.  This patch fixes the bug, and also
updates an existing test to check this case.

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

	* ada-lang.c (ada_value_struct_elt): Resolve dynamic type.

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

	* gdb.ada/set_pckd_arr_elt.exp: Also test
	-fgnat-encodings=minimal.  Add tests.
	* gdb.ada/set_pckd_arr_elt/foo.adb (Foo): Add VA variable.
	Call Update_Small a second time.
	* gdb.ada/set_pckd_arr_elt/pck.adb (New_Variant): New function.
	* gdb.ada/set_pckd_arr_elt/pck.ads (Buffer, Variant)
	(Variant_Access): New types.
	(New_Variant): Declare.
2020-11-04 08:49:18 -07:00
c9a28cbed6 Reject slicing a packed array
In Ada mode, gdb rejects slicing a packed array.  However, with
-fgnat-encodings=minimal, gdb will instead print incorrect results.
This patch changes gdb to also reject slicing a packed array in this
mode.

FWIW I believe that this rejection is a gdb limitation.  Removing it
looked complicated, though, and meanwhile my main goal for the time
being is to bring the DWARF encodings up to par with Gnat encodings.

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

	* ada-lang.c (ada_is_any_packed_array_type): New function.
	(ada_evaluate_subexp) <case TERNOP_SLICE>: Use it.

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

	* gdb.ada/mod_from_name.exp: Test printing slice.
2020-11-04 08:49:17 -07:00
575673752c Synthesize array descriptors with -fgnat-encodings=minimal
When -fgnat-encodings=minimal, the compiler will avoid the special
GNAT-specific "encodings" format, and instead emit ordinary DWARF as
much as possible.

When emitting DWARF for thick pointers to arrays, the compiler emits
something like:

   <1><11db>: Abbrev Number: 7 (DW_TAG_array_type)
      <11dc>   DW_AT_name        : (indirect string, offset: 0x1bb8): string
      <11e0>   DW_AT_data_location: 2 byte block: 97 6
	  (DW_OP_push_object_address; DW_OP_deref)
      <11e3>   DW_AT_type        : <0x1173>
      <11e7>   DW_AT_sibling     : <0x1201>
   <2><11eb>: Abbrev Number: 8 (DW_TAG_subrange_type)
      <11ec>   DW_AT_type        : <0x1206>
      <11f0>   DW_AT_lower_bound : 6 byte block: 97 23 8 6 94 4
	  (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
	   DW_OP_deref_size: 4)
      <11f7>   DW_AT_upper_bound : 8 byte block: 97 23 8 6 23 4 94 4
	  (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
	   DW_OP_plus_uconst: 4; DW_OP_deref_size: 4)

If you read between the lines, the "array" is actually a structure
with two elements.  One element is a pointer to the array data, and
the other structure describes the bounds of the array.  However, the
compiler doesn't emit this explicitly, but instead hides it behind
these location expressions.

gdb can print such objects, but currently there is no way to construct
one.  So, this patch adds some code to the DWARF reader to recognize
this construct, and then synthesize an array descriptor.  This
descriptor is then handled by the existing Ada code.

Internally, we've modified GCC to emit the structure type explicitly
(we will of course be sending this upstream).  In this case, the array
still has the DW_AT_data_location, though.  This patch also modifies
gdb to ignore the data location in this case -- this is preferred
because the location only serves to confuse the Ada code that already
knows where to find the data.  In the future I hope to move some of
this handling to the gdb core, so that Ada-specific hacks are not
needed; however I have not yet done this.

Because parallel types are not emitted with -fgnat-encodings=minimal,
some changes to the Ada code were also required.

The change ina ada-valprint.c was needed to avoid infinite recursion
when trying to print a constrained packed array.  And, there didn't
seem to be any need for a recursive call here -- the value could
simply be returned instead.

Finally, gdb.ada/frame_arg_lang.exp no longer works in C mode, because
we drop back to the structure approach now.  As mentioned earlier,
future work should probably fix this again; meanwhile, this doesn't
seem to be a big problem, because it is what is currently done (users
as a rule don't use -fgnat-encodings=minimal -- which is what I am
ultimately trying to fix).

Note that a couple of tests have an added KFAIL.  Some
-fgnat-encodings=minimal changes have landed in GNAT, and you need
something very recent to pass all the tests.  I'm using git gcc to
accomplish this.

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

	* dwarf2/read.c (recognize_bound_expression)
	(quirk_ada_thick_pointer): New functions.
	(read_array_type): Call quirk_ada_thick_pointer.
	(set_die_type): Add "skip_data_location" parameter.
	(quirk_ada_thick_pointer): New function.
	(process_structure_scope): Call quirk_ada_thick_pointer.
	* ada-lang.c (ada_is_unconstrained_packed_array_type)
	(decode_packed_array_bitsize): Handle thick pointers without
	parallel types.
	(ada_is_gnat_encoded_packed_array_type): Rename from
	ada_is_packed_array_type.
	(ada_is_constrained_packed_array_type): Update.
	* ada-valprint.c (ada_val_print_gnat_array): Remove.
	(ada_value_print_1): Use ada_get_decoded_value.

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

	* gdb.ada/O2_float_param.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/access_to_unbounded_array.exp: Test different
	-fgnat-encodings values.
	* gdb.ada/big_packed_array.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/arr_enum_idx_w_gap.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/array_ptr_renaming.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/array_of_variable_length.exp: Test different
	-fgnat-encodings values.
	* gdb.ada/arrayparam.exp: Test different -fgnat-encodings values.
	* gdb.ada/arrayptr.exp: Test different -fgnat-encodings values.
	* gdb.ada/frame_arg_lang.exp: Revert -fgnat-encodings=minimal
	change.
	* gdb.ada/mi_string_access.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/mod_from_name.exp: Test different -fgnat-encodings values.
	* gdb.ada/out_of_line_in_inlined.exp: Test different
	-fgnat-encodings values.
	* gdb.ada/packed_array.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/pckd_arr_ren.exp: Test different -fgnat-encodings
	values.
	* gdb.ada/unc_arr_ptr_in_var_rec.exp: Test different
	-fgnat-encodings values.
	* gdb.ada/variant_record_packed_array.exp: Test different
	-fgnat-encodings values.
2020-11-04 08:49:17 -07:00
a7400e443c Fix decoding of multi-dimensional constrained packed arrays
Printing a multi-dimensional constrained packed array in Ada would not
show the correct values.  The bug here is that, when decoding the type
of such an array, only the innermost dimension's element bitsize would
be correct.  For outer dimensions, the bitsize must account for the
size of each sub-array, but this was not done.

This patch fixes the problem by arranging to compute these sizes after
decoding the array type.  I've included a bit more test case than is
strictly necessary -- the current test here was derived from an
internal test, and this patch brings the two into sync.

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

	* ada-lang.c (recursively_update_array_bitsize): New function.
	(decode_constrained_packed_array_type): Call it.

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

	* gdb.ada/enum_idx_packed.exp: Add tests.
	* gdb.ada/enum_idx_packed/foo.adb: Add variables.
	* gdb.ada/enum_idx_packed/pck.adb: Add functions.
	* gdb.ada/enum_idx_packed/pck.ads: Add types, function
	declarations.
2020-11-04 08:49:17 -07:00
75fd6a26f8 Avoid crash in ada-lang.c:to_fixed_array_type
When debugging Ada programs compiled by certain versions of GNAT with
-fgnat-encodings=minimal, gdb can crash.  These crashes occur when
running the gdb test suite, once some of the later patches in this
series have been applied.

This patch works around the bug by throwing an exception in the
failing case.  I did not implement a full fix because GNAT has been
changed to emit better DWARF, and so in the near future this will stop
being a problem.  (Currently, users don't generally use
-fgnat-encodings=minimal, and the GNAT default will only be changed in
a fully-patched compiler.)

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

	* ada-lang.c (to_fixed_array_type): Error if
	decode_constrained_packed_array_type returns NULL.
2020-11-04 08:49:16 -07:00
93f9561e0f Rewrite leb.h:read_3_bytes
read_3_bytes assumes little-endian data, but in fact it depends on the
BFD.  This patch rewrites this function to use bfd_get_24 instead.

2020-11-04  Tom Tromey  <tromey@adacore.com>

	* dwarf2/leb.h (read_3_bytes): Use bfd_get_24.
2020-11-04 08:22:05 -07:00
ad1b5e48d5 Automatic date update in version.in 2020-11-04 00:00:16 +00:00
c40907bfe0 [gdb/testsuite] Fix .debug_abbrev terminators
The abbreviations table for a single compilation unit has two types of
terminators:
- a ".byte 0" pair denoting the end of an attribute list
- a single ".byte 0" denoting the end of the table

However, at the end of the .debug_abbrev section in dw2-line-number-zero-dw.S,
we have four ".byte 0" entries:
...
        .uleb128        0x12            /* DW_AT_high_pc */
        .uleb128        0x01            /* DW_FORM_addr */
        .byte        0x0                /* Terminator */
        .byte        0x0                /* Terminator */
        .byte        0x0                /* Terminator */
        .byte        0x0                /* Terminator */
...

The first two are the attribute list terminator, the third is the end-of-table
terminator, and the last is superfluous/incorrect.

Fix this by emitting instead:
...
        .uleb128        0x12            /* DW_AT_high_pc */
        .uleb128        0x01            /* DW_FORM_addr */
        .byte        0x0                /* DW_AT - Terminator */
        .byte        0x0                /* DW_FORM - Terminator */
        .byte        0x0                /* Abbrev end - Terminator */
...
where the last comment resembles the comment for other abbreviation codes:
...
        .section .debug_abbrev
.Labbrev1_begin:
        .uleb128        2               /* Abbrev start */
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

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

	* lib/dwarf.exp (Dwarf::_handle_DW_TAG): Improve attribute list
	terminator comments.
	(Dwarf::cu, Dwarf::tu): Remove superfluous abbreviation table
	terminator.
2020-11-03 17:41:11 +01:00
f3016d6ce1 Add an option to the archiver to add a section recording library dependencies.
* ar.c (long_options): Add --record-libdeps.
	(usage): Mention the new option.
	(decode_options): Handle the new option.
	(replace_members): If necessary, create a bfd to hold the libdeps
	description.
	* binemul.c (ar_emul_append_bfd): New function.
	(ar_emul_replace_bfd): New function.
	(ar_emul_default_append): Replace file_name and target arguments
	with new_bfd argument.
	(ar_emul_default_replace): Likewise.
	* binemul.h: Update prototypes.
	(struct bin_emulation_xfer_struct): Update fields.
	* doc/binutils.texi: Document the new option.
	* NEWS: Mention the new feature.
	* emul_aix.c (ar_emul_aix_append): Update.
	(ar_emul_aix_replace): Likewise.
	* testsuite/binutils-all/ar.exp: Add test of new feature.
2020-11-03 15:12:47 +00:00
fd65497db4 [PATCH][GAS] aarch64: Add atomic 64-byte load/store instructions for Armv8.7
Armv8.7 architecture introduces the "accelerator extension", aka
load/store of 64 bytes. New atomic load/store instructions are: LD64B,
ST64B, ST64BV and ST64BV0.

This patch adds:
+ New feature +ls64 to -march command line.
+ New atomic load/store instructions associated with above feature.

For more details regarding atomic 64-byte load/store instruction for
Armv8.7 please refer to Arm A64 Instruction set documentation for
Armv8-A architecture profile, see document page 157 for load
instruction, and pages 414-418 for store instructions of [0].

    [0]: https://developer.arm.com/docs/ddi0596/i
2020-11-03 14:29:31 +00:00
b0d0d02bde PowerPC problem building gold with clang
* powerpc.cc (Target_powerpc::tocsave_loc): Return a pointer.
	(Target_powerpc::Relocate::relocate): Avoid -Wdangling-gsl error.
2020-11-04 00:48:51 +10:30
3a959875ea [PATCH] aarch64: Update missing ChangeLog for AArch64 commits
Patch with missing ChangeLog entries for GAS AArch64 files.
2020-11-03 11:55:14 +00:00
70237b84c5 Fix compile time warning 2020-11-03 08:56:27 +00:00
05862db73f gas: fix symbol value calculation for versioned symbol aliases
Symbol value is in bytes while fragS::fr_address is in octets. Fixes GAS
symver12 and symver13 tests on ELF targets with with OCTETS_PER_BYTE>1.

	* config/obj-elf (elf_frob_symbol): Fix symbol value calculation
	for versioned symbol aliases.

Signed-off-by: Christian Eggers <ceggers@gmx.de>
2020-11-03 18:17:35 +10:30
706d7ce948 asan: leak in bfd_section_from_shdr
* elf.c (bfd_section_from_shdr): Free sections_being_created.
	Use bfd_zmalloc.
2020-11-03 10:34:51 +10:30
af61e84fd2 gold: ensure file_counts_lock is initialized before using
Since upgrading to binutils 2.35 I've been experiencing random memory
corruption related crashes with ld.gold --threads. It's caused by
multiple threads concurrently pushing elements onto the shared
std::vector in File_read::record_file_read(). This vector is supposed to
be protected by file_counts_lock, but that is initialized lazily and
might be NULL when File_read::open() is called, in which case
Hold_optional_lock silently skips locking it.

Fix by calling the initialize() method before attempting to acquire the
lock, the same as other places that use file_counts_lock.

	PR 26827
	* fileread.cc (File_read::open): Ensure file_counts_lock is
	initialized.
	* testsuite/Makefile.am (check_PROGRAMS): Add a test that passes
	-Wl,--threads.
	* testsuite/Makefile.in: Regenerate.
2020-11-03 10:34:51 +10:30
0dd05d40de Automatic date update in version.in 2020-11-03 00:00:12 +00:00
f468977aac gdb/testsuite: fix failure in gdb.base/step-over-no-symbols.exp
This test fails on my machine:

    p /x $pc^M
    $2 = 0x55555555514e^M
    (gdb) PASS: gdb.base/step-over-no-symbols.exp: displaced=off: get after PC
    FAIL: gdb.base/step-over-no-symbols.exp: displaced=off: advanced

This is due to the check added in 5f0e2eb79e6b ("GDB/testsuite: Fix a
catastrophic step-over-no-symbols.exp failure"), that makes sure the PC
values are integer.  As documented in the TCL doc [1], "string is
integer" returns 1 if the string is a valid 32-bit integer format.  The
PC values are greater than 32 bits, so are not recognized as integers by
that test.

    % string is integer -strict 0x55555555
    1
    % string is integer -strict 0x555555555
    0

Replace the "string is integer" test with a regexp one, that verifies
the PC is a hex value.

[1] https://www.tcl.tk/man/tcl/TclCmd/string.htm#M21

gdb/testsuite/ChangeLog:

	* gdb.base/step-over-no-symbols.exp (test_step_over): Replace
	integer format test with regexp.

Change-Id: I71f8197e7b52e97b4901980544a8d1072aabd362
2020-11-02 16:35:47 -05:00
257e02d836 Add x86_64 ravenscar support
Support for x86_64 ravenscar was recently added to the Ada runtime.
This patch updates gdb to follow.

As this is Ada-specific, and was reviewed internally by Joel, I am
checking it in.

2020-11-02  Tom Tromey  <tromey@adacore.com>

	* Makefile.in (ALL_64_TARGET_OBS): Add amd64-ravenscar-thread.o.
	(ALLDEPFILES): Add amd64-ravenscar-thread.c.
	(HFILES_NO_SRCDIR): Add amd64-ravenscar-thread.h.
	* amd64-ravenscar-thread.c: New file.
	* amd64-ravenscar-thread.h: New file.
	* amd64-tdep.c (amd64_init_abi): Register ravenscar ops.
	* configure.tgt (amd64_tobjs): Add ravenscar objects.
2020-11-02 12:10:51 -07:00
74d877e522 gdb: new function to wrap up executing command line scripts/commands
Small refactor to wrap up executing the scripts and commands passed
using the -x, -ex, -ix, -iex command line flags.

There should be no user visible changes after this commit.

gdb/ChangeLog:

	* main.c (execute_cmdargs): New function.
	(captured_main_1): Make use of execute_cmdargs.
2020-11-02 17:42:11 +00:00
64aaad6349 gdb: use get_standard_config_dir when looking for .gdbinit
This commit effectively changes the default location of the .gdbinit
file, while maintaining backward compatibility.

For non Apple hosts the .gdbinit file will now be looked for in the
following locations:

  $XDG_CONFIG_HOME/gdb/gdbinit
  $HOME/.config/gdb/gdbinit
  $HOME/.gdbinit

On Apple hosts the search order is instead:

  $HOME/Library/Preferences/gdb/gdbinit
  $HOME/.gdbinit

I've performed an extensive rewrite of the documentation, moving all
information about initialization files and where to find them into a
new @node, text from other areas has been moved into this one
location, and other areas cross-reference to this new @node as much as
possible.

gdb/ChangeLog:

	* NEWS: Mention changes to config file search path.
	* main.c

gdb/doc/ChangeLog:

	* gdb.texinfo (Mode Options): Descriptions of initialization files
	has been moved to 'Initialization Files'.
	(Startup): Likewise.
	(Initialization Files): New node.
	(gdb man): Update to mention alternative file paths.
	(gdbinit man): Likewise.
2020-11-02 17:42:11 +00:00
8768c3e362 Add get_standard_config_dir function
This adds a new get_standard_config_dir, which returns the name of the
configuration directory.  In XDG, this is ~/.config/gdb/.  Future
patches will make use of this.

2020-07-05  Tom Tromey  <tom@tromey.com>

	* pathstuff.h (get_standard_config_dir): Declare.
	* pathstuff.cc (get_standard_config_dir): New function.
2020-11-02 17:42:10 +00:00
5b3d3560e9 Minor Python simplifications
I noticed that a few "#if"s could be removed from the Python code.
This patch is the result.

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

	* python/python.c: Consolidate two HAVE_PYTHON blocks.
	(python_GdbModuleDef): Move earlier.  Now static.
	(do_start_initialization): Consolidate some IS_PY3K blocks.
2020-11-02 10:17:07 -07:00
dda83cd783 gdb, gdbserver, gdbsupport: fix leading space vs tabs issues
Many spots incorrectly use only spaces for indentation (for example,
there are a lot of spots in ada-lang.c).  I've always found it awkward
when I needed to edit one of these spots: do I keep the original wrong
indentation, or do I fix it?  What if the lines around it are also
wrong, do I fix them too?  I probably don't want to fix them in the same
patch, to avoid adding noise to my patch.

So I propose to fix as much as possible once and for all (hopefully).

One typical counter argument for this is that it makes code archeology
more difficult, because git-blame will show this commit as the last
change for these lines.  My counter counter argument is: when
git-blaming, you often need to do "blame the file at the parent commit"
anyway, to go past some other refactor that touched the line you are
interested in, but is not the change you are looking for.  So you
already need a somewhat efficient way to do this.

Using some interactive tool, rather than plain git-blame, makes this
trivial.  For example, I use "tig blame <file>", where going back past
the commit that changed the currently selected line is one keystroke.
It looks like Magit in Emacs does it too (though I've never used it).
Web viewers of Github and Gitlab do it too.  My point is that it won't
really make archeology more difficult.

The other typical counter argument is that it will cause conflicts with
existing patches.  That's true... but it's a one time cost, and those
are not conflicts that are difficult to resolve.  I have also tried "git
rebase --ignore-whitespace", it seems to work well.  Although that will
re-introduce the faulty indentation, so one needs to take care of fixing
the indentation in the patch after that (which is easy).

gdb/ChangeLog:

	* aarch64-linux-tdep.c: Fix indentation.
	* aarch64-ravenscar-thread.c: Fix indentation.
	* aarch64-tdep.c: Fix indentation.
	* aarch64-tdep.h: Fix indentation.
	* ada-lang.c: Fix indentation.
	* ada-lang.h: Fix indentation.
	* ada-tasks.c: Fix indentation.
	* ada-typeprint.c: Fix indentation.
	* ada-valprint.c: Fix indentation.
	* ada-varobj.c: Fix indentation.
	* addrmap.c: Fix indentation.
	* addrmap.h: Fix indentation.
	* agent.c: Fix indentation.
	* aix-thread.c: Fix indentation.
	* alpha-bsd-nat.c: Fix indentation.
	* alpha-linux-tdep.c: Fix indentation.
	* alpha-mdebug-tdep.c: Fix indentation.
	* alpha-nbsd-tdep.c: Fix indentation.
	* alpha-obsd-tdep.c: Fix indentation.
	* alpha-tdep.c: Fix indentation.
	* amd64-bsd-nat.c: Fix indentation.
	* amd64-darwin-tdep.c: Fix indentation.
	* amd64-linux-nat.c: Fix indentation.
	* amd64-linux-tdep.c: Fix indentation.
	* amd64-nat.c: Fix indentation.
	* amd64-obsd-tdep.c: Fix indentation.
	* amd64-tdep.c: Fix indentation.
	* amd64-windows-tdep.c: Fix indentation.
	* annotate.c: Fix indentation.
	* arc-tdep.c: Fix indentation.
	* arch-utils.c: Fix indentation.
	* arch/arm-get-next-pcs.c: Fix indentation.
	* arch/arm.c: Fix indentation.
	* arm-linux-nat.c: Fix indentation.
	* arm-linux-tdep.c: Fix indentation.
	* arm-nbsd-tdep.c: Fix indentation.
	* arm-pikeos-tdep.c: Fix indentation.
	* arm-tdep.c: Fix indentation.
	* arm-tdep.h: Fix indentation.
	* arm-wince-tdep.c: Fix indentation.
	* auto-load.c: Fix indentation.
	* auxv.c: Fix indentation.
	* avr-tdep.c: Fix indentation.
	* ax-gdb.c: Fix indentation.
	* ax-general.c: Fix indentation.
	* bfin-linux-tdep.c: Fix indentation.
	* block.c: Fix indentation.
	* block.h: Fix indentation.
	* blockframe.c: Fix indentation.
	* bpf-tdep.c: Fix indentation.
	* break-catch-sig.c: Fix indentation.
	* break-catch-syscall.c: Fix indentation.
	* break-catch-throw.c: Fix indentation.
	* breakpoint.c: Fix indentation.
	* breakpoint.h: Fix indentation.
	* bsd-uthread.c: Fix indentation.
	* btrace.c: Fix indentation.
	* build-id.c: Fix indentation.
	* buildsym-legacy.h: Fix indentation.
	* buildsym.c: Fix indentation.
	* c-typeprint.c: Fix indentation.
	* c-valprint.c: Fix indentation.
	* c-varobj.c: Fix indentation.
	* charset.c: Fix indentation.
	* cli/cli-cmds.c: Fix indentation.
	* cli/cli-decode.c: Fix indentation.
	* cli/cli-decode.h: Fix indentation.
	* cli/cli-script.c: Fix indentation.
	* cli/cli-setshow.c: Fix indentation.
	* coff-pe-read.c: Fix indentation.
	* coffread.c: Fix indentation.
	* compile/compile-cplus-types.c: Fix indentation.
	* compile/compile-object-load.c: Fix indentation.
	* compile/compile-object-run.c: Fix indentation.
	* completer.c: Fix indentation.
	* corefile.c: Fix indentation.
	* corelow.c: Fix indentation.
	* cp-abi.h: Fix indentation.
	* cp-namespace.c: Fix indentation.
	* cp-support.c: Fix indentation.
	* cp-valprint.c: Fix indentation.
	* cris-linux-tdep.c: Fix indentation.
	* cris-tdep.c: Fix indentation.
	* darwin-nat-info.c: Fix indentation.
	* darwin-nat.c: Fix indentation.
	* darwin-nat.h: Fix indentation.
	* dbxread.c: Fix indentation.
	* dcache.c: Fix indentation.
	* disasm.c: Fix indentation.
	* dtrace-probe.c: Fix indentation.
	* dwarf2/abbrev.c: Fix indentation.
	* dwarf2/attribute.c: Fix indentation.
	* dwarf2/expr.c: Fix indentation.
	* dwarf2/frame.c: Fix indentation.
	* dwarf2/index-cache.c: Fix indentation.
	* dwarf2/index-write.c: Fix indentation.
	* dwarf2/line-header.c: Fix indentation.
	* dwarf2/loc.c: Fix indentation.
	* dwarf2/macro.c: Fix indentation.
	* dwarf2/read.c: Fix indentation.
	* dwarf2/read.h: Fix indentation.
	* elfread.c: Fix indentation.
	* eval.c: Fix indentation.
	* event-top.c: Fix indentation.
	* exec.c: Fix indentation.
	* exec.h: Fix indentation.
	* expprint.c: Fix indentation.
	* f-lang.c: Fix indentation.
	* f-typeprint.c: Fix indentation.
	* f-valprint.c: Fix indentation.
	* fbsd-nat.c: Fix indentation.
	* fbsd-tdep.c: Fix indentation.
	* findvar.c: Fix indentation.
	* fork-child.c: Fix indentation.
	* frame-unwind.c: Fix indentation.
	* frame-unwind.h: Fix indentation.
	* frame.c: Fix indentation.
	* frv-linux-tdep.c: Fix indentation.
	* frv-tdep.c: Fix indentation.
	* frv-tdep.h: Fix indentation.
	* ft32-tdep.c: Fix indentation.
	* gcore.c: Fix indentation.
	* gdb_bfd.c: Fix indentation.
	* gdbarch.sh: Fix indentation.
	* gdbarch.c: Re-generate
	* gdbarch.h: Re-generate.
	* gdbcore.h: Fix indentation.
	* gdbthread.h: Fix indentation.
	* gdbtypes.c: Fix indentation.
	* gdbtypes.h: Fix indentation.
	* glibc-tdep.c: Fix indentation.
	* gnu-nat.c: Fix indentation.
	* gnu-nat.h: Fix indentation.
	* gnu-v2-abi.c: Fix indentation.
	* gnu-v3-abi.c: Fix indentation.
	* go32-nat.c: Fix indentation.
	* guile/guile-internal.h: Fix indentation.
	* guile/scm-cmd.c: Fix indentation.
	* guile/scm-frame.c: Fix indentation.
	* guile/scm-iterator.c: Fix indentation.
	* guile/scm-math.c: Fix indentation.
	* guile/scm-ports.c: Fix indentation.
	* guile/scm-pretty-print.c: Fix indentation.
	* guile/scm-value.c: Fix indentation.
	* h8300-tdep.c: Fix indentation.
	* hppa-linux-nat.c: Fix indentation.
	* hppa-linux-tdep.c: Fix indentation.
	* hppa-nbsd-nat.c: Fix indentation.
	* hppa-nbsd-tdep.c: Fix indentation.
	* hppa-obsd-nat.c: Fix indentation.
	* hppa-tdep.c: Fix indentation.
	* hppa-tdep.h: Fix indentation.
	* i386-bsd-nat.c: Fix indentation.
	* i386-darwin-nat.c: Fix indentation.
	* i386-darwin-tdep.c: Fix indentation.
	* i386-dicos-tdep.c: Fix indentation.
	* i386-gnu-nat.c: Fix indentation.
	* i386-linux-nat.c: Fix indentation.
	* i386-linux-tdep.c: Fix indentation.
	* i386-nto-tdep.c: Fix indentation.
	* i386-obsd-tdep.c: Fix indentation.
	* i386-sol2-nat.c: Fix indentation.
	* i386-tdep.c: Fix indentation.
	* i386-tdep.h: Fix indentation.
	* i386-windows-tdep.c: Fix indentation.
	* i387-tdep.c: Fix indentation.
	* i387-tdep.h: Fix indentation.
	* ia64-libunwind-tdep.c: Fix indentation.
	* ia64-libunwind-tdep.h: Fix indentation.
	* ia64-linux-nat.c: Fix indentation.
	* ia64-linux-tdep.c: Fix indentation.
	* ia64-tdep.c: Fix indentation.
	* ia64-tdep.h: Fix indentation.
	* ia64-vms-tdep.c: Fix indentation.
	* infcall.c: Fix indentation.
	* infcmd.c: Fix indentation.
	* inferior.c: Fix indentation.
	* infrun.c: Fix indentation.
	* iq2000-tdep.c: Fix indentation.
	* language.c: Fix indentation.
	* linespec.c: Fix indentation.
	* linux-fork.c: Fix indentation.
	* linux-nat.c: Fix indentation.
	* linux-tdep.c: Fix indentation.
	* linux-thread-db.c: Fix indentation.
	* lm32-tdep.c: Fix indentation.
	* m2-lang.c: Fix indentation.
	* m2-typeprint.c: Fix indentation.
	* m2-valprint.c: Fix indentation.
	* m32c-tdep.c: Fix indentation.
	* m32r-linux-tdep.c: Fix indentation.
	* m32r-tdep.c: Fix indentation.
	* m68hc11-tdep.c: Fix indentation.
	* m68k-bsd-nat.c: Fix indentation.
	* m68k-linux-nat.c: Fix indentation.
	* m68k-linux-tdep.c: Fix indentation.
	* m68k-tdep.c: Fix indentation.
	* machoread.c: Fix indentation.
	* macrocmd.c: Fix indentation.
	* macroexp.c: Fix indentation.
	* macroscope.c: Fix indentation.
	* macrotab.c: Fix indentation.
	* macrotab.h: Fix indentation.
	* main.c: Fix indentation.
	* mdebugread.c: Fix indentation.
	* mep-tdep.c: Fix indentation.
	* mi/mi-cmd-catch.c: Fix indentation.
	* mi/mi-cmd-disas.c: Fix indentation.
	* mi/mi-cmd-env.c: Fix indentation.
	* mi/mi-cmd-stack.c: Fix indentation.
	* mi/mi-cmd-var.c: Fix indentation.
	* mi/mi-cmds.c: Fix indentation.
	* mi/mi-main.c: Fix indentation.
	* mi/mi-parse.c: Fix indentation.
	* microblaze-tdep.c: Fix indentation.
	* minidebug.c: Fix indentation.
	* minsyms.c: Fix indentation.
	* mips-linux-nat.c: Fix indentation.
	* mips-linux-tdep.c: Fix indentation.
	* mips-nbsd-tdep.c: Fix indentation.
	* mips-tdep.c: Fix indentation.
	* mn10300-linux-tdep.c: Fix indentation.
	* mn10300-tdep.c: Fix indentation.
	* moxie-tdep.c: Fix indentation.
	* msp430-tdep.c: Fix indentation.
	* namespace.h: Fix indentation.
	* nat/fork-inferior.c: Fix indentation.
	* nat/gdb_ptrace.h: Fix indentation.
	* nat/linux-namespaces.c: Fix indentation.
	* nat/linux-osdata.c: Fix indentation.
	* nat/netbsd-nat.c: Fix indentation.
	* nat/x86-dregs.c: Fix indentation.
	* nbsd-nat.c: Fix indentation.
	* nbsd-tdep.c: Fix indentation.
	* nios2-linux-tdep.c: Fix indentation.
	* nios2-tdep.c: Fix indentation.
	* nto-procfs.c: Fix indentation.
	* nto-tdep.c: Fix indentation.
	* objfiles.c: Fix indentation.
	* objfiles.h: Fix indentation.
	* opencl-lang.c: Fix indentation.
	* or1k-tdep.c: Fix indentation.
	* osabi.c: Fix indentation.
	* osabi.h: Fix indentation.
	* osdata.c: Fix indentation.
	* p-lang.c: Fix indentation.
	* p-typeprint.c: Fix indentation.
	* p-valprint.c: Fix indentation.
	* parse.c: Fix indentation.
	* ppc-linux-nat.c: Fix indentation.
	* ppc-linux-tdep.c: Fix indentation.
	* ppc-nbsd-nat.c: Fix indentation.
	* ppc-nbsd-tdep.c: Fix indentation.
	* ppc-obsd-nat.c: Fix indentation.
	* ppc-ravenscar-thread.c: Fix indentation.
	* ppc-sysv-tdep.c: Fix indentation.
	* ppc64-tdep.c: Fix indentation.
	* printcmd.c: Fix indentation.
	* proc-api.c: Fix indentation.
	* producer.c: Fix indentation.
	* producer.h: Fix indentation.
	* prologue-value.c: Fix indentation.
	* prologue-value.h: Fix indentation.
	* psymtab.c: Fix indentation.
	* python/py-arch.c: Fix indentation.
	* python/py-bpevent.c: Fix indentation.
	* python/py-event.c: Fix indentation.
	* python/py-event.h: Fix indentation.
	* python/py-finishbreakpoint.c: Fix indentation.
	* python/py-frame.c: Fix indentation.
	* python/py-framefilter.c: Fix indentation.
	* python/py-inferior.c: Fix indentation.
	* python/py-infthread.c: Fix indentation.
	* python/py-objfile.c: Fix indentation.
	* python/py-prettyprint.c: Fix indentation.
	* python/py-registers.c: Fix indentation.
	* python/py-signalevent.c: Fix indentation.
	* python/py-stopevent.c: Fix indentation.
	* python/py-stopevent.h: Fix indentation.
	* python/py-threadevent.c: Fix indentation.
	* python/py-tui.c: Fix indentation.
	* python/py-unwind.c: Fix indentation.
	* python/py-value.c: Fix indentation.
	* python/py-xmethods.c: Fix indentation.
	* python/python-internal.h: Fix indentation.
	* python/python.c: Fix indentation.
	* ravenscar-thread.c: Fix indentation.
	* record-btrace.c: Fix indentation.
	* record-full.c: Fix indentation.
	* record.c: Fix indentation.
	* reggroups.c: Fix indentation.
	* regset.h: Fix indentation.
	* remote-fileio.c: Fix indentation.
	* remote.c: Fix indentation.
	* reverse.c: Fix indentation.
	* riscv-linux-tdep.c: Fix indentation.
	* riscv-ravenscar-thread.c: Fix indentation.
	* riscv-tdep.c: Fix indentation.
	* rl78-tdep.c: Fix indentation.
	* rs6000-aix-tdep.c: Fix indentation.
	* rs6000-lynx178-tdep.c: Fix indentation.
	* rs6000-nat.c: Fix indentation.
	* rs6000-tdep.c: Fix indentation.
	* rust-lang.c: Fix indentation.
	* rx-tdep.c: Fix indentation.
	* s12z-tdep.c: Fix indentation.
	* s390-linux-tdep.c: Fix indentation.
	* score-tdep.c: Fix indentation.
	* ser-base.c: Fix indentation.
	* ser-mingw.c: Fix indentation.
	* ser-uds.c: Fix indentation.
	* ser-unix.c: Fix indentation.
	* serial.c: Fix indentation.
	* sh-linux-tdep.c: Fix indentation.
	* sh-nbsd-tdep.c: Fix indentation.
	* sh-tdep.c: Fix indentation.
	* skip.c: Fix indentation.
	* sol-thread.c: Fix indentation.
	* solib-aix.c: Fix indentation.
	* solib-darwin.c: Fix indentation.
	* solib-frv.c: Fix indentation.
	* solib-svr4.c: Fix indentation.
	* solib.c: Fix indentation.
	* source.c: Fix indentation.
	* sparc-linux-tdep.c: Fix indentation.
	* sparc-nbsd-tdep.c: Fix indentation.
	* sparc-obsd-tdep.c: Fix indentation.
	* sparc-ravenscar-thread.c: Fix indentation.
	* sparc-tdep.c: Fix indentation.
	* sparc64-linux-tdep.c: Fix indentation.
	* sparc64-nbsd-tdep.c: Fix indentation.
	* sparc64-obsd-tdep.c: Fix indentation.
	* sparc64-tdep.c: Fix indentation.
	* stabsread.c: Fix indentation.
	* stack.c: Fix indentation.
	* stap-probe.c: Fix indentation.
	* stubs/ia64vms-stub.c: Fix indentation.
	* stubs/m32r-stub.c: Fix indentation.
	* stubs/m68k-stub.c: Fix indentation.
	* stubs/sh-stub.c: Fix indentation.
	* stubs/sparc-stub.c: Fix indentation.
	* symfile-mem.c: Fix indentation.
	* symfile.c: Fix indentation.
	* symfile.h: Fix indentation.
	* symmisc.c: Fix indentation.
	* symtab.c: Fix indentation.
	* symtab.h: Fix indentation.
	* target-float.c: Fix indentation.
	* target.c: Fix indentation.
	* target.h: Fix indentation.
	* tic6x-tdep.c: Fix indentation.
	* tilegx-linux-tdep.c: Fix indentation.
	* tilegx-tdep.c: Fix indentation.
	* top.c: Fix indentation.
	* tracefile-tfile.c: Fix indentation.
	* tracepoint.c: Fix indentation.
	* tui/tui-disasm.c: Fix indentation.
	* tui/tui-io.c: Fix indentation.
	* tui/tui-regs.c: Fix indentation.
	* tui/tui-stack.c: Fix indentation.
	* tui/tui-win.c: Fix indentation.
	* tui/tui-winsource.c: Fix indentation.
	* tui/tui.c: Fix indentation.
	* typeprint.c: Fix indentation.
	* ui-out.h: Fix indentation.
	* unittests/copy_bitwise-selftests.c: Fix indentation.
	* unittests/memory-map-selftests.c: Fix indentation.
	* utils.c: Fix indentation.
	* v850-tdep.c: Fix indentation.
	* valarith.c: Fix indentation.
	* valops.c: Fix indentation.
	* valprint.c: Fix indentation.
	* valprint.h: Fix indentation.
	* value.c: Fix indentation.
	* value.h: Fix indentation.
	* varobj.c: Fix indentation.
	* vax-tdep.c: Fix indentation.
	* windows-nat.c: Fix indentation.
	* windows-tdep.c: Fix indentation.
	* xcoffread.c: Fix indentation.
	* xml-syscall.c: Fix indentation.
	* xml-tdesc.c: Fix indentation.
	* xstormy16-tdep.c: Fix indentation.
	* xtensa-config.c: Fix indentation.
	* xtensa-linux-nat.c: Fix indentation.
	* xtensa-linux-tdep.c: Fix indentation.
	* xtensa-tdep.c: Fix indentation.

gdbserver/ChangeLog:

	* ax.cc: Fix indentation.
	* dll.cc: Fix indentation.
	* inferiors.h: Fix indentation.
	* linux-low.cc: Fix indentation.
	* linux-nios2-low.cc: Fix indentation.
	* linux-ppc-ipa.cc: Fix indentation.
	* linux-ppc-low.cc: Fix indentation.
	* linux-x86-low.cc: Fix indentation.
	* linux-xtensa-low.cc: Fix indentation.
	* regcache.cc: Fix indentation.
	* server.cc: Fix indentation.
	* tracepoint.cc: Fix indentation.

gdbsupport/ChangeLog:

	* common-exceptions.h: Fix indentation.
	* event-loop.cc: Fix indentation.
	* fileio.cc: Fix indentation.
	* filestuff.cc: Fix indentation.
	* gdb-dlfcn.cc: Fix indentation.
	* gdb_string_view.h: Fix indentation.
	* job-control.cc: Fix indentation.
	* signals.cc: Fix indentation.

Change-Id: I4bad7ae6be0fbe14168b8ebafb98ffe14964a695
2020-11-02 10:28:45 -05:00
1c2bec1918 Fix gdb.base/print-file-var.exp with Clang
The C++ parts of gdb.base/print-file-var.exp failed to build with
Clang because the "-x c++" option added by gdb_compile caused the
compiler to attempt to parse .so files as C++.  This commit splits
the compiler and linker options into separate lists, and switches
to building via build_executable_from_specs which can accommodate
this separation.

gdb/testsuite/ChangeLog:

	* gdb.base/print-file-var.exp (test): Separate compiler and
	linker options, and build using build_executable_from_specs
	to accommodate this.
2020-11-02 14:19:29 +00:00
6539a36d0e Detect and report incompatible gdb_compile options
In commits 221db974e653659edb280787af1b3efdd1615083 and
68d654afdfcff840ebb3ae432ed72dca0521d670, these patches:

    2020-06-24  Pedro Alves  <palves@redhat.com>

	* lib/gdb.exp (gdb_compile): Pass "-x c++" explicitly when
	compiling C++ programs.

    2020-09-25  Gary Benson <gbenson@redhat.com>

	* lib/gdb.exp (gdb_compile): Pass "-x c++" earlier, and only
	for .c files.

attempted to fix problems with testcases that compile .c files
using the C++ compiler.  These patches cause gdb_compile to add
"-x c++" to the compiler options when using Clang.  This fix does
not work for gdb.base/print-file-var.exp, however, which attempts
to compile a .c input file to an executable linked with shared
libraries: the resulting command caused the compiler to attempt
to parse the .so files as C++.  This commit causes gdb_compile
to reject this combination of options.

gdb/testsuite/ChangeLog:

	* lib/gdb.exp (gdb_compile): Inhibit passing "-x c++"
	for .c files compiled as C++ with Clang if any shared
	libraries are specified.
2020-11-02 14:19:29 +00:00
7ea44a51fa Fix testcases using __attribute__((noclone)) with Clang
Clang fails to compile a number of files with the following warning:
unknown attribute 'noclone' ignored [-Wunknown-attributes].  This
commit adds a new header, lib/noclone.h, which defines the macro
ATTRIBUTE_NOCLONE accordingly, and updates the relevant testcases
to use it.

gdb/testsuite/ChangeLog:

	* lib/attributes.h: New header.
	* gdb.base/backtrace.c: Include the above. Replace
	__attribute__(noclone)) with ATTRIBUTE_NOCLONE.
	* gdb.base/infcall-nested-structs.c: Likewise.
	* gdb.base/vla-optimized-out.c: Likewise.
2020-11-02 11:52:41 +00:00
ab8f783d7a [gdb/testsuite] Remove .debug_line.dwo from gdb.dwarf2/fission-multi-cu.S
Consider test-case gdb.dwarf2/fission-multi-cu.exp.  It produces an executable
fission-multi-cu and a dwo file fission-multi-cu.dwo.

The file fission-multi-cu.dwo contains a .debug_line.dwo section, which
according to the DWARF v5 standard is a "specialized line number table" for
type units in the .debug_info.dwo section, and contains only the directory and
filename lists.

When reading the actual .debug_line.dwo section using readelf -w, we get:
...
 The Directory Table is empty.

 The File Name Table is empty.

 No Line Number Statements.
...
So, the section does not contain any actual information.  Furthermore, no
information is required because the .debug_line.dwo section does not contain
any type units.

This is confirmed by:
- re-doing the commands listed at the start of fission-multi-cu.S, which were
  used as starting point for fission-multi-cu.S, and
- compiling the fission-multi-cu{1,2}.c files with clang -flto -g -gsplit-dwarf
In both cases, no .debug_line.dwo section is generated.

Remove the .debug_line.dwo section, to make it fit how split dwarf is actually
generated by clang.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

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

	* gdb.dwarf2/fission-multi-cu.S: Remove .debug_line.dwo section.
2020-11-02 11:25:38 +01:00
e1f57067b1 gdb/riscv: read frame base register as unsigned in the unwinder
I noticed an issue with the RISC-V prologue scanning stack unwinder.
We currently read the frame base register (either $sp or $fp) as a
signed value.  This means that the frame_id's stack_addr field will be
a signed value.

In other contexts though these registers are data pointers, and so are
unsigned.

There's not many places where this mismatch actually shows though, but
I did find one place.  Consider this GDB session:

  (gdb) maintenance set dwarf unwinders off
  (gdb) set backtrace past-main on
  ...
  (gdb) b main
  Breakpoint 1 at 0x20400344: file main.c, line 86.
  (gdb) run
  ...
  (gdb) bt
  #0  main () at main.c:86
  #1  0x2040005c in _start () at start.S:59
  Backtrace stopped: frame did not save the PC
  (gdb) info frame 1
  Stack frame at 0x80000a1c:
   pc = 0x2040005c in _start (start.S:59); saved pc = <not saved>
   Outermost frame: frame did not save the PC
   caller of frame at 0x80000a1c
   source language asm.
   Arglist at 0x80000a1c, args:
   Locals at 0x80000a1c, Previous frame's sp is 0x80000a1c
  (gdb) frame address 0x80000a1c
  No frame at address 0x80000a1c.
  (gdb) frame address 0xffffffff80000a1c
  #1  0x2040005c in _start () at start.S:59
  59              call main

Notice that the 'info frame 1' reports that the frame is at
'0x80000a1c', this is the unsigned frame base value, but when I try
to select a frame using this address I can't.

The reason is that the frame_id for frame #1 actually has the
unsigned (and hence sign-extended) stack_addr value.  When I use the
sign extended address I can correctly select the frame.

I propose changing the prologue scanning unwinder to read the frame
base as unsigned.  After this in the above case I can now do this:

  (gdb) frame address 0x80000a1c
  #1  0x2040005c in _start () at start.S:59
  59              call main
  (gdb) frame address 0xffffffff80000a1c
  No frame at address 0xffffffff80000a1c.

Which I think makes more sense.

This issue causes failures in gdb.base/frame-selection.exp if you
compile for RV32 with a linker script that places the stack in the
correct location, which are resolved by this patch.

gdb/ChangeLog:

	* riscv-tdep.c (riscv_frame_cache): Read the frame base register
	as an unsigned value.
2020-11-02 09:07:05 +00:00
8807d3127c sim/bpf: re-generate configure
I noticed a little diff when re-generating the configure file in this
directory.

sim/ChangeLog:

	* bpf/configure: Re-generate.

Change-Id: Ieb26be2cc1be8108d4b08387255f45b57f288171
2020-11-01 19:39:11 -05:00
fb446b46cb Automatic date update in version.in 2020-11-02 00:00:14 +00:00
b1a92c635c PR26806, Suspected linker bug with LTO
This patch reverts most of git commit 1e3b96fd6cf, so IR symbols are
again not marked def_regular or ref_regular.  That should be enough to
stop IR symbols from becoming dynamic.  To mark as-needed shared
libraries referenced by IR symbols, use the referencing BFD rather
than the ref flags.

bfd/
	PR 15146
	PR 26314
	PR 26530
	PR 26806
	* elflink.c (elf_link_add_object_symbols): Don't set def/ref flags
	for plugin syms.  Do allow plugin syms to mark as-needed libs.
ld/
	PR 26806
	* testsuite/ld-plugin/lto-19.h,
	* testsuite/ld-plugin/lto-19a.c,
	* testsuite/ld-plugin/lto-19b.c,
	* testsuite/ld-plugin/lto-19c.c: New test.
	* testsuite/ld-plugin/pr26806.c,
	* testsuite/ld-plugin/pr26806.d: New test.
	* testsuite/ld-plugin/lto.exp: Run them.
2020-11-02 09:39:53 +10:30
ae7754b256 Change end_psymtab_common to a method
This changes end_psymtab_common to be a method on partial_symtab.
This seems a little cleaner to me.

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

	* dbxread.c (dbx_end_psymtab): Update.
	* dwarf2/read.c (process_psymtab_comp_unit_reader)
	(build_type_psymtabs_reader): Update.
	* xcoffread.c (xcoff_end_psymtab): Update.
	* ctfread.c (scan_partial_symbols): Update.
	* psymtab.c (sort_pst_symbols): Remove.
	(partial_symtab::end): Rename from end_psymtab_common.  Inline
	sort_pst_symbols.
	* psympriv.h (struct partial_symtab) <end>: New method.
	(end_psymtab_common): Don't declare.
2020-11-01 09:51:15 -07:00
0684bb51b5 Remove partial symbol statistics
The "n_psyms" statistic in the per-objfile stats is not really needed,
but its use requires passing the objfile to add_psymbol.  This patch
removes the field in favor of counting the psyms when needed.

Note that this is not exactly equivalent -- in the old approach, a
psymbol can in theory be created and then the psymtab discarded, which
would increment the counter.  This does not seem very important to me.

I rewrote the code to count partial symbols; though TBH I think that
this information is not really very useful.

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

	* symmisc.c (count_psyms): New function.
	(print_objfile_statistics): Use it.
	* psymtab.c (append_psymbol_to_list): Remove.
	(partial_symtab::add_psymbol): Inline append_psymbol_to_list.
	* objfiles.h (struct objstats) <n_psyms>: Remove.
2020-11-01 09:51:14 -07:00
089002bba0 Remove parameter from end_psymtab_common
The objfile parameter to end_psymtab_common is no longer needed, so
this removes it.

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

	* dbxread.c (dbx_end_psymtab): Update.
	* dwarf2/read.c (process_psymtab_comp_unit_reader): Update.
	(build_type_psymtabs_reader): Update.
	* xcoffread.c (xcoff_end_psymtab): Update.
	* ctfread.c (scan_partial_symbols): Update.
	* psympriv.h (end_psymtab_common): Update.
	* psymtab.c (end_psymtab_common): Remove objfile parameter.
	(sort_pst_symbols): Likewise.
2020-11-01 09:51:14 -07:00
525454d654 Remove init_psymbol_list
init_psymbol_list is now empty, and so this removes it.

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

	* dbxread.c (dbx_symfile_read): Update.
	* dwarf2/read.c (dwarf2_build_psymtabs): Update.
	* xcoffread.c (xcoff_initial_scan): Update.
	* psympriv.h (init_psymbol_list): Don't declare.
	* psymtab.c (init_psymbol_list): Remove.
2020-11-01 09:51:13 -07:00
d77c922455 avoid unwarranted assumption in gdb.ada/fixed_points/fixed_points.adb
The test program being used declares a fixed-point type
(Base_Fixed_Point_Type) Base_Fixed_Point_Type whose (scaled) range
is System.Min_Int .. System.Max_Int. is an unwarranted assumption because
the range is implementation-defined. It means the compiler is therefore
free to reject that declaration.

We noticed this while one of my coworkers was working on enhancing
GNAT to support 128bit integers. The bulk of the work has been done,
but one side-effect is that there is a small gap in this particular
area where the compiler is now rejecting this code. We will eventually
plug that gap, but in meantime, since the testcase itself doesn't really
need such a large range, this commit simply adjusts the test program
to use hard-coded bounds for the range whose value are more reasonable.

gdb/testsuite/ChangeLog:

        * gdb.ada/fixed_points/fixed_points.adb: Replace use of
        System.Min_Int and System.Max_Int with smaller hardcoded
        constants.
2020-11-01 15:37:41 +04:00
60bd1d53a0 ada-lang.c: Rename gnat_encoded_fixed_type_info
This commit renames gnat_encoded_fixed_type_info into
gnat_encoded_fixed_point_type_info, so as to be more consistent
with the naming used for the other associated routines (i.e.
use "fixed_point" rather than just "fixed").

gdb/ChangeLog:

        * ada-lang.c (gnat_encoded_fixed_point_type_info): Renames
        gnat_encoded_fixed_type_info.  Update all callers.
2020-11-01 03:46:10 -05:00
db99d0d055 ada-lang.c: fix line too long in cast_from_gnat_encoded_fixed_point_type
One of the lines got too long after a renaming done in a previous
commit. This fixes that.

gdb/ChangeLog:

        * ada-lang.c (cast_from_gnat_encoded_fixed_point_type): Split
        line too long.
2020-11-01 03:46:05 -05:00
75f24e86ba ada-lang.c: Renaming some fixed-point-related routines
This patch renames some of the fixed-point-related subprograms in ada-lang.c
so as to make it obvious that those routines only handle the case where
the types are encoded using the GNAT encoding.

No function change; this patch is preparation work for adding support
for fixed-point types purely based on standard DWARF debug info.

gdb/ChangeLog:

        * ada-lang.c (cast_from_gnat_encoded_fixed_point_type): Renames
        cast_from_fixed.  Update all callers.
        (cast_to_gnat_encoded_fixed_point_type): Renames cast_to_fixed.
        Update all callers.
        (gnat_encoded_fixed_point_scaling_factor): Renames ada_scaling_factor.
        Update all callers.
        * ada-lang.h (gnat_encoded_fixed_point_scaling_factor): Renames
        ada_scaling_factor.
        * ada-typeprint.c: Replace call to ada_scaling_factor by call
        to print_gnat_encoded_fixed_point_type.
        * ada-valprint.c: Likewise.
2020-11-01 02:29:27 -05:00
80630624b4 Automatic date update in version.in 2020-11-01 00:00:12 +00:00
4f0469cdd6 gdb: restore some checks of debug flags
This partially reverts some parts of the commit:

  commit 17417fb0ec9842de1774e1e76f1f11c00cdafc47
  Date:   Sat Oct 31 09:01:25 2020 -0400

      gdb, gdbsupport: add debug_prefixed_printf, remove boilerplate functions

This commit removed 3 places where some debug flags were being
checked.  The result was that debug tracing was being printed
unconditionally.

This commit adds back the 3 flag checks.

gdb/ChangeLog:

	* infrun.h (infrun_debug_printf): Add check of debug_infrun flag.
	(debug_prefixed_printf): Add check of debug_displaced flag.
	* linux-nat.c (linux_nat_debug_printf): Add check of
	debug_linux_nat flag.
2020-10-31 21:58:58 +00:00
17417fb0ec gdb, gdbsupport: add debug_prefixed_printf, remove boilerplate functions
The *_debug_print_1 functions are all very similar, the only difference
being the subsystem name.  Remove them all and make the logging macros
use a new debug_prefixed_printf function directly.

gdb/ChangeLog:

	* infrun.c (infrun_debug_printf_1): Remove.
	(displaced_debug_printf_1): Remove.
	(stop_all_threads): Use debug_prefixed_printf.
	* infrun.h (infrun_debug_printf_1): Remove.
	(infrun_debug_printf): Use debug_prefixed_printf.
	(displaced_debug_printf_1): Remove.
	(displaced_debug_printf): Use debug_prefixed_printf.
	* linux-nat.c (linux_nat_debug_printf_1): Remove.
	(linux_nat_debug_printf): Use debug_prefixed_printf.

gdbsupport/ChangeLog:

	* common-debug.cc (debug_prefixed_printf): New.
	* common-debug.h (debug_prefixed_printf): New declaration.
	* event-loop.cc (event_loop_debug_printf_1): Remove.
	* event-loop.h (event_loop_debug_printf_1): Remove.
	(event_loop_debug_printf): Use debug_prefixed_printf.
	(event_loop_ui_debug_printf): Use debug_prefixed_printf.

Change-Id: Ib323087c7257f0060121d302055c41eb64aa60c6
2020-10-31 09:15:13 -04:00
19dd0ae5e7 gdbserver: replace AC_TRY_COMPILE in acinclude.m4
... with AC_COMPILE_IFELSE and AC_LANG_PROGRAM.

All changes in the generated configure file are insignificant
whitespace changes.

gdbserver/ChangeLog:

	* acinclude.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE +
	AC_LANG_PROGRAM.
	* configure: Re-generate.

Change-Id: Idab8b5e1a984046b5283940c02e5a22da2291d58
2020-10-31 08:31:00 -04:00
ad6dba1cea gdb: replace AC_TRY_LINK in sanitize.m4
... with AC_LINK_IFELSE + AC_LANG_PROGRAM.

All changes in the generated configure file are insignificant whitespace
changes.

gdb/ChangeLog:

	* configure: Re-generate.
	* sanitize.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE +
	AC_LANG_PROGRAM.

Change-Id: I6fc4c39e10b28d2ade964e0d59a7f8ec0d3a272a
2020-10-31 08:31:00 -04:00
b9442ec18b gdbsupport: replace AC_TRY_COMPILE in common.m4
... with AC_COMPILE_IFELSE + AC_LANG_PROGRAM.  All the changes in the
generated configure files are insignificant whitespace changes.

gdb/ChangeLog:

	* configure: Re-generate.

gdbserver/ChangeLog:

	* configure: Re-generate.

gdbsupport/ChangeLog:

	* common.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE +
	AC_LANG_PROGRAM.
	* configure: Re-generate.

Change-Id: Id58e6e887f6be817d52b189921845838031dbd2a
2020-10-31 08:31:00 -04:00
15dabc52a1 gdbsupport: use AC_FUNC_FORK instead of AC_FUNC_VFORK
autoupdate does this change, it fixes this warning:

    configure.ac:50: warning: The macro `AC_FUNC_VFORK' is obsolete.
    configure.ac:50: You should run autoupdate.
    ../../lib/autoconf/functions.m4:1944: AC_FUNC_VFORK is expanded from...
    common.m4:20: GDB_AC_COMMON is expanded from...
    configure.ac:50: the top level

There are not changes in the generated configure files.

gdbsupport/ChangeLog:

	* common.m4: Replace AC_FUNC_VFORK with AC_FUNC_FORK.

Change-Id: I9de9f718c57e6d51c9734161f36c36ce39170325
2020-10-31 08:31:00 -04:00
864ca43565 gdbsupport: replace AC_TRY_COMPILE in warning.m4
Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE + AC_LANG_PROGRAM.

All changes in generated configure files are insignificant whitespace
changes.

gdb/ChangeLog:

	* configure: Re-generate.

gdbserver/ChangeLog:

	* configure: Re-generate.

gdbsupport/ChangeLog:

	* configure: Re-generate.
	* warning.m4: Replace AC_TRY_COMPILE with AC_COMPILE_IFELSE +
	AC_LANG_PROGRAM.

Change-Id: I517bd20ec3af960ad999a586761df0ac8959a3fc
2020-10-31 08:30:59 -04:00