Commit Graph

115868 Commits

Author SHA1 Message Date
Joseph Myers 7fdd4fcee1 config: Fix host -rdynamic detection for build != host != target
[Merge from GCC commit 4d9bc81a5d8d884dee7a7781fa4c1577a6c9681a.]

The GCC_ENABLE_PLUGINS configure logic for detecting whether -rdynamic
is necessary and supported uses an appropriate objdump for $host
binaries (running on $build) in cases where $host is $build or
$target.

However, it is missing such logic in the case where $host is neither
$build nor $target, resulting in the compilers not being linked with
-rdynamic and plugins not being usable with such a compiler.  In fact
$ac_cv_prog_OBJDUMP, as used when $build = $host, is always an objdump
for $host binaries that runs on $build; that is, it's appropriate to
use in this case as well.

Tested in such a configuration that it does result in cc1 being linked
with -rdynamic as expected.  Also bootstrapped with no regressions for
x86_64-pc-linux-gnu.

config/
	* gcc-plugin.m4 (GCC_ENABLE_PLUGINS): Use
	export_sym_check="$ac_cv_prog_OBJDUMP -T" also when host is not
	build or target.
2023-09-01 15:20:47 +00:00
Tom Tromey b47a4f92de Fix "usage" errors for some MI varobj commands
I noticed that the "usage" error for -var-set-frozen mentioned the
wrong command name.  Then I looked through the whole file and found a
couple other spots that didn't mention the command name at all.  This
patch fixes all of these.

Reviewed-by: Kevin Buettner <kevinb@redhat.com>
2023-09-01 06:48:07 -06:00
Jan Beulich dfab07b9ea x86: unindent most of set_cpu_arch()
Inverting the initial if()'s condition allows to move out the bulk of
the function by a level, improving readability at least a bit. While
doing that also pull the push/pop handling up first, such that "else if"
after "return" isn't needed anymore; the order in which special cases
are checked doesn't really matter.
2023-09-01 12:29:44 +02:00
Jan Beulich d54678ebc0 x86: rename CpuPCLMUL
The name we use internally isn't in line with the SDM, and also isn't in
line with CpuVPCLMULQDQ. Add the missing suffix, but of course leave
alone user facing names.
2023-09-01 12:29:24 +02:00
Jan Beulich e30e957592 x86: correct source used for two non-AVX512 VEXWIG tests
These shouldn't wrongly include the AVX512VL sources. Obviously the
expectations therefore also need to change.
2023-09-01 12:28:57 +02:00
Jan Beulich e746be9858 x86: drop Size64 from VMOVQ
Commit 916fae9135 ("Add Size64 to movq/vmovq with Reg64 operand" was
right in adding the attribute to MOVQ, but there was no need to add it
to VMOVQ. (See also the AVX512F form, which doesn't have the attribute
either.)
2023-09-01 12:27:20 +02:00
Jan Beulich f438659a6f RISC-V: move various alias entries
For disassembly to only use spec-mandated aliases, respective non-alias
entries need to come ahead of their alias ones. Since identical
mnemonics need to stay together, whole groups are moved up where
necessary.

This partly reverts 839189bc93 ("RISC-V: re-arrange opcode table for
consistent alias handling"), but then also goes beyond a plain revert.

Reviewed-by: Tsukasa OI <research_trasio@irq.a4lg.com>
Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
2023-09-01 12:26:46 +02:00
Jerry Zhang Jian be3bed0696 Fix ld Makefile variable naming: ELF_CLFAGS -> ELF_CFLAGS
Signed-off-by: Jerry Zhang Jian <jerry.zhangjian@sifive.com>
2023-09-01 17:59:49 +09:30
Nelson Chu 12e70a6d0c RISC-V: Fixed the wrong expansion for pseudo vmsge[u].vx instructions.
The original report was from Kiva Oyama <libkernelpanic@gmail.com>,
https://sourceware.org/pipermail/binutils/2023-August/129255.html

The vmsge[u].vx pseudo should be expanded to masked vmslt[u].vx only when
vd != v0.  Otherwise, it should be expanded to unmasked one.

gas/
	* config/tc-riscv.c (vector_macro): Fixed the wrong expansion for
	pseudo vmsge[u].vx instructions.
	* testsuite/gas/riscv/vector-insns-vmsgtvx.d: Updated.
2023-09-01 15:37:59 +08:00
Simon Marchi 8ba212f893 gdb: remove uses of alloca in gdbtypes.c
Replace two uses of alloca with std::string.

Change-Id: I970ae3f450da407494d95668a57bba8796d6292b
Approved-by: Kevin Buettner <kevinb@redhat.com>
2023-08-31 21:28:48 -04:00
GDB Administrator 9e2dda428d Automatic date update in version.in 2023-09-01 00:00:45 +00:00
Nicolas Boulenguez eb5b52158f PR30806, CPPFLAGS are missing for bfd/chew, syslex_wrap and sysinfo
PR 30806
bfd/
	* doc/local.mk (doc/chew.stamp): Add CPPFLAGS_FOR_BUILD.
	* Makefile.in: Regenerate.
binutils/
	* Makefile.am (syslex_wrap.@OBJEXT@): Add CPPFLAGS_FOR_BUILD.
	(sysinfo.@OBJEXT@): Likewise.
	* Makefile.in: Regenerate.
2023-09-01 09:18:05 +09:30
H.J. Lu 12123021f1 elf: Adjust PR ld/30791 tests
Adjust PR ld/30791 tests:

1. Generic linker targets don't comply with all orhpan section merging
rules.
2. z80 fails since a, b, c, d are registers for z80.
3. hppa fails since .text sections aren't merged for relocatable link.

	PR ld/30791
	* testsuite/ld-elf/pr30791a.d: Xfail for generic and z80
	targets.
	* testsuite/ld-elf/pr30791b.d: Xfail for hppa and z80 targets.
2023-08-31 16:21:17 -07:00
Tom Tromey 911e1e795e Add symbol::matches method
This adds symbol::matches, a wrapper for symbol_matches_domain.  Most
places calling symbol_matches_domain can call this method instead,
which is a bit less wordy and also (IMO) clearer.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2023-08-31 12:41:02 -06:00
Simon Marchi 8c329d5c65 gdb: remove TYPE_FIELD_PACKED
Replace with a new equivalent "is_packed" method on struct field.

Change-Id: I78647be3d408b40b63becb6b6f0fca211bede51c
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:15 -04:00
Simon Marchi 3757d2d44f gdb: remove TYPE_FIELD_BITSIZE
Replace with type::field + field::bitsize.

Change-Id: I2a24755a33683e4a2775a6d2a7b7a9ae7362e43a
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:14 -04:00
Simon Marchi 3be8c91910 gdb: remove FIELD_BITSIZE
Replace with field::bitsize.

Change-Id: I400be235d6a1f446d0a4aafac01df5e850185d3a
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:14 -04:00
Simon Marchi 886176b865 gdb: introduce field::bitsize / field::set_bitsize
Add these two methods, rename the field to m_bitsize to make it pseudo
private.

Change-Id: Ief95e5cf106e72f2c22ae47b033d0fa47202b413
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:13 -04:00
Simon Marchi 454977cdc4 gdb: remove TYPE_FIELD_ARTIFICIAL
Replace with type::field + field::is_artificial.

Change-Id: Ie3bacae49d9bd02e83e504c1ce01470aba56a081
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:13 -04:00
Simon Marchi 6c0f749351 gdb: remove FIELD_ARTIFICIAL
Replace uses with field::is_artificial.

Change-Id: I599616fdd9f4b6d044de492e8151aa6130725cd1
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:12 -04:00
Simon Marchi 321d8b3f28 gdb: introduce field::is_artificial / field::set_is_artificial
Add these two methods, rename the field to m_artificial to make it
pseudo private.

Change-Id: If3a3825473d1d79bb586a8a074b87bba9b43fb1a
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 13:16:11 -04:00
Tom Tromey 4bea97df59 Remove eval_op_ternop
eval_op_ternop is only used by the implementation of
ternop_slice_operation.  While working on another series, it was
convenient for me to merge this function into its only caller.

Reviewed-by: Kevin Buettner <kevinb@redhat.com>
2023-08-31 10:56:07 -06:00
Kevin Buettner 79771b88bf [symtab/27831] New test case: gdb.base/add-symbol-file-attach.exp
This commit adds a new test case for bug 27831.  See the contents
of the .exp file for a description of what it's about.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27831
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 07:52:59 -07:00
Kevin Buettner 62669649dc [symtab/27831] Fix OBJF_MAINLINE assert
This commit fixes a bug mentioned by Florian Weimer during the
libpthread/ld.so load order discussion from 2021.  Florian provided
instructions for reproducing the bug here:

https://sourceware.org/pipermail/gdb-patches/2021-April/177923.html

That particular test does some interesting things involving forks,
threads, and thread local storage.  Fortunately, none of that is
needed to reproduce the problem.

I've made a new test case (which is now found in a separate commit)
contained in the files gdb.base/add-symbol-file-attach.{c,exp}.  The
.c file is fairly simple as is the recipe for reproducing the problem.

After separately starting the test case and noting the process id,
start gdb (w/ no arguments), and do the following to reproduce the
assertion failure - for this run, the process id of the separately
started add-symbol-file-attach process is 4103218:

(gdb) add-symbol-file add-symbol-file-attach
add symbol table from file "add-symbol-file-attach"
(y or n) y
Reading symbols from add-symbol-file-attach...
(gdb) attach 4103218
Attaching to process 4103218
Load new symbol table from "/tmp/add-symbol-file-attach"? (y or n) y
Reading symbols from /tmp/add-symbol-file-attach...
Reading symbols from /lib64/libc.so.6...
(No debugging symbols found in /lib64/libc.so.6)
Reading symbols from /lib64/ld-linux-x86-64.so.2...
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)
0x00007f502130bf27 in pause () from /lib64/libc.so.6
(gdb) p foo
symtab.c:6417: internal-error: CORE_ADDR get_msymbol_address(objfile*,
  const minimal_symbol*): Assertion `(objf->flags & OBJF_MAINLINE) == 0'
  failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

The add-symbol-file command causes the symbols to be loaded without
the SYMFILE_MAINLINE (and hence the OBJFILE_MAINLINE) flags being
set.  This, in turn, causes the "maybe_copied" flag to be set for
the global symbol (named "foo" in the provided test case).

The attach command will cause another objfile to be created, but
it will reuse the symtabs from the objfile created by add-symbol-file,
leading to a situation in which the OBJFILE_MAINLINE flag will be set
for the new (attach-created) objfile, however the "maybe_copied"
flag will still be set for the global symbol.  Had it been loaded
anew, this flag would not be set due to OBJFILE_MAINLINE being set
for the objfile.

At present, minimal_symbol::value_address looks like this:

CORE_ADDR
minimal_symbol::value_address (objfile *objfile) const
{
  if (this->maybe_copied (objfile))
    return get_msymbol_address (objfile, this);
  else
    return (CORE_ADDR (this->unrelocated_address ())
	    + objfile->section_offsets[this->section_index ()]);
}

So, we can now see the problem: When the "maybe_copied" flag is set,
get_msymbol_address() will be called.  However, get_msymbol_address()
assumes that it won't be called with the OBF_MAINLINE flag set for
the objfile in question.  It, in fact, contains an assert() which
makes sure that this is the case:

  gdb_assert ((objf->flags & OBJF_MAINLINE) == 0);

(If this assert is removed, then get_msymbol_address() recurses
infinitely for the case under consideration.)

So, the problem here is that the maybe_copied flag is set for the
symbol AND the OBJF_MAINLINE flag is set for the objfile.  As noted
earlier, this happens due to add-symbol-file being used; this causes
the maybe_copied flag to be set.  Later, when the attach is performed,
OBJF_MAINLINE will be set for that objfile, leading to this
unfortunate situation.

My first cut at a solution involved adjusting the
MSYMBOL_VALUE_ADDRESS macro (which has since been changed to be the
method noted above) to include a test of the OBJFILE_MAINLINE flag.
However, Simon Marchi, in his review of my patch, suggested a better
solution.  Simon observed that the 'maybe_copied' flag is (was, after
this commit) being set/initialized in record_minimal_symbol() using
using the objfile in the context in which the symbol was created.

Simon further observed:

  Today, a single copy is created, as symtabs are shared between
  objfiles.  This means that everything that we store into a symbol
  must be independent of any objfile.  However, the value of the
  maybe_copied field is dependent on the objfile in the context of
  which the symbol was created.  Meaning that when the symbol is
  re-used in the context of another objfile, the maybe_copied value is
  not right in the context of that objfile.

  So I think it means there isn't a single "is this symbol maybe
  copied" value, but instead "is this symbol maybe copied, in the
  context of this given objfile".  And the answer is yes or no,
  depending on whether the objfile is mainline.  So maybe_copied
  should become a method that takes an objfile and returns an answer
  based on that.

Simon's full review can be found here:

  https://sourceware.org/pipermail/gdb-patches/2021-May/178855.html

Simon also provided a patch which implements this suggestion.  The
current patch is mostly his work, though I did make some adjustments
during a rebase in addition to making some changes to account for a
concern from Tom Tromey.

During his review of the v3 series, Tom noted, "The old approach was
specific to ELF, while the new approach will be used by any object
format." Tom further observed, "...it seems like it could result in an
incorrect evaluation in some scenario."  This seemed plausible to me,
so I introduced the flag 'object_format_has_copy_relocs' to struct
objfile.  It is set at the end of elf_symfile_read() in elfread.c.
The minimal_symbol::maybe_copied method tests this new flag, forcing
this method to return false when the flag is not set.  If we find that
other object file formats use the same copy reloc mechanism as ELF,
then 'object_format_has_copy_relocs' should be set for objfiles using
those formats.

Lastly, I'll note that this is a strange use case.  It's far more
common to either let gdb figure out which file to load by itself when
attaching, i.e.

(gdb) attach 4104360
Attaching to process 4104360
Reading symbols from /tmp/add-symbol-file-attach...
Reading symbols from /lib64/libc.so.6...
(No debugging symbols found in /lib64/libc.so.6)
Reading symbols from /lib64/ld-linux-x86-64.so.2...
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)
0x00007fdb1fc33f27 in pause () from /lib64/libc.so.6
(gdb) p foo
$1 = 42

...or to use the "file" command prior to the attach, like this:

(gdb) file add-symbol-file-attach
Reading symbols from add-symbol-file-attach...
(gdb) attach 4104360
Attaching to program: /tmp/add-symbol-file-attach, process 4104360
Reading symbols from /lib64/libc.so.6...
(No debugging symbols found in /lib64/libc.so.6)
Reading symbols from /lib64/ld-linux-x86-64.so.2...
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)
0x00007fdb1fc33f27 in pause () from /lib64/libc.so.6

Both of these more common scenarios work perfectly fine; using
"add-symbol-file" to load the program to which you will attach
isn't recommended as a normal use case.  That said, it's bad for
gdb to assert, hence this fix.

Reviewed-by: Simon Marchi <simon.marchi@polymtl.ca>
Co-Authored-by: Simon Marchi <simon.marchi@polymtl.ca>
Approved-by: Tom Tromey <tom@tromey.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=27831
2023-08-31 07:52:59 -07:00
Tom Tromey 8688bb6278 Unify DW_TAG_typedef case in new_symbol
This patch merges the DW_TAG_typedef case in new_symbol with some
other type-related cases.  These all have identical code.

Reviewed-By: Guinevere Larsen <blarsen@redhat.com>
2023-08-31 07:39:50 -06:00
Tom Tromey 3b23b03a86 Revert "Simplify @node use in BFD documentation"
This reverts commit 8bb23cdbb4.

My earlier patch to simplifify the @node uses in the BFD manual didn't
take into account (1) that BFD doesn't use the ordinary texinfo
sectioning commands, and (2) that some users are stuck on very ancient
versions of makeinfo.

This patch reverts the change.

I went through the entire manual using the spacebar, trying to find
the original problem I reported in the change, but couldn't.  I don't
know why.  Anyway, all this means is that, with this reversion,
editing the node structure will be slightly less convenient.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30703

2023-08-30  Tom Tromey  <tom@tromey.com>

	PR binutils/30703
	* doc/webassembly.texi, doc/bfd.texi: Revert 8bb23cdb, adding
	parameters back to @node.
2023-08-31 07:27:01 -06:00
Tom de Vries 3f62178ed7 [gdb/contrib] Require minimal dwz version in cc-with-tweaks.sh
I usually run target boards cc-with-dwz and cc-with-dwz-m using a dwz build
from current trunk, but the pathname to the build dir changed and I forgot to
update my test scripts, so the test scripts reverted to using system dwz,
version 0.12.

Consequently, I ran into:
...
(gdb) p ZERO^M
No symbol "ZERO" in current context.^M
(gdb) FAIL: gdb.base/enumval.exp: p ZERO
...
which is due to PR dwz/24468, which was fixed in version 0.13.

Fix this by minimally requiring dwz version 0.13 in cc-with-tweaks.sh, such
that this situation is detected and we get instead:
...
gdb compile failed, cc-with-tweaks.sh: dwz version 0.12 detected, version \
  0.13 or higher required
...

Tested on x86_64-linux, verified with shellcheck.

Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 15:25:31 +02:00
Alan Modra ad4ee59eb7 vms-alpha: Free memory on failure path
* vms-alpha.c (evax_bfd_print_eobj): Free rec on failure.
2023-08-31 21:35:39 +09:30
Alan Modra 3bab069c29 gas init_stab_section and get_stab_string_offset
get_stab_string_offset currently creates the stabstr section if not
already present, in the process keeping a reference to the malloc'd
section name string.  Really, the name belongs in bfd_alloc'd memory
or some obstack so that it doesn't show as a memory leak on exit.
s_stab_generic at least does allocate the name for the stab section on
an obstack, but doesn't tidy that as well as it could.  Return paths
after issuing a warning don't release the memory, nor the memory for
the "string" copy.

This patch fixes these problems.  s_stab_generic is rearranged so that
creation of the sections occurs earlier, before any potential uses of
the note obstack during expression parsing.  That makes it possible to
always free the section name strings unless used to create new
sections.  I've also avoided get_absolute_expression_and_terminator
as I see that function might skip over end-of-line, and lack of a
--input_line_pointer might have caused the following source line to be
ignored.  (Other uses of this function in gas are OK.)

	* config/obj-coff.c (obj_coff_init_stab_section): Add stabstr
	param.  Pass to get_stab_string_offset rather than name of
	section.
	* config/obj-som.c (obj_som_init_stab_section): Likewise.
	* config/obj-elf.c (obj_elf_init_stab_section): Likewise.
	(elf_init_stab_section): Adjust.
	* config/obj-coff.h (INIT_STAB_SECTION): Update.
	(obj_coff_init_stab_section): Update prototype.
	* config/obj-som.h: Similarly.
	* config/obj-elf.h: Similarly.
	* config/obj-multi.h (INIT_STAB_SECTION): Update.
	* obj.h (struct format_ops <init_stab_section>): Update.
	* read.h (get_stab_string_offset): Update prototype.
	* stabs.c (cached_sec): Delete.
	(stabs_begin): Adjust to suit.
	(get_stab_string_offset): Add stabstr param, delete stabstr_name
	and free_stabstr_secname params.  Don't make stabstr section
	here.
	(eat_comma): New function.
	(s_stab_generic): Replace stab_secname_obstack_end param with
	bool freenames.  Move creation of stab and stabstr sections
	earlier, so the names can be freed earlier before possible use
	of notes obstack during expression parsing.  Tidy error paths
	ensuring "string" is freed.  Use get_absolute_expression in
	place of get_absolute_expression_and_terminator.
	(s_stab): Adjust.
	(s_xstab): Use notes_concat to make stabstr section name.
2023-08-31 21:32:11 +09:30
Alan Modra 5333003969 gas OBJ_PROCESS_STAB
This macro and the supporting functions have an unused "seg" first
argument.  Tidy that.

	* config/obj-aout.c (obj_aout_process_stab): Delete first param.
	* config/obj-ecoff.h (OBJ_PROCESS_STAB): Likewise.
	* config/obj-elf.c (elf_process_stab): Likewise.
	* config/obj-elf.h (OBJ_PROCESS_STAB): Likewise.
	* config/obj-macho.h (OBJ_PROCESS_STAB): Likewise.
	* config/obj-multi.h (OBJ_PROCESS_STAB): Likewise.
	* ecoff.c (ecoff_stab): Likewise.
	* ecoff.h (ecoff_stab): Likewise.
	* obj.h (struct format_ops <process_stab>): Likewise.
	* stabs.c (OBJ_PROCESS_STAB): Likewise.
2023-08-31 18:06:10 +09:30
Tom de Vries 959db21230 [gdb/symtab] Replace TYPE_ALLOC with TYPE_ZALLOC where required
Handle the remaining uses of TYPE_ALLOC, either by:
- replacing with TYPE_ZALLOC, or
- adding a comment explaining why zero-initialization is not necessary.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 09:37:44 +02:00
Tom de Vries 6d3c2d749b [gdb/symtab] Replace TYPE_ALLOC + B_CLRALL with TYPE_ZALLOC
I noticed some cases of TYPE_ALLOC followed by B_CLRALL.

Replace these with TYPE_ZALLOC.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 09:37:44 +02:00
Tom de Vries 34c9386e21 [gdb/symtab] Replace TYPE_ALLOC + memset with TYPE_ZALLOC
I noticed a case of TYPE_ALLOC followed by memset.

Replace this with TYPE_ZALLOC.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 09:37:44 +02:00
Tom de Vries 4b3d893ac8 [gdb/symtab] Do more zero-initialization of type::fields
Now that we've introduced type::{alloc_fields,copy_fields}, the places where
no zero-initialization of allocated fields is done are easy to spot:
...
$ find gdb* -type f | grep -v ChangeLog | xargs grep alloc_fields | grep false
gdb/coffread.c:  type->alloc_fields (nfields, false);
gdb/coffread.c:  type->alloc_fields (nsyms, false);
gdb/stabsread.c:	  ftype->alloc_fields (nsemi, false);
gdb/gdbtypes.c:  resolved_type->alloc_fields (nfields, false);
gdb/gdbtypes.c:  alloc_fields (nfields, false);
gdb/gdbtypes.c:  alloc_fields (nfields, false);
gdb/mdebugread.c:	t->alloc_fields (nfields, false);
gdb/mdebugread.c:		  ftype->alloc_fields (nparams, false);
...

All hits in gdbtypes.c are ok.  There are two hits in the two variants of
copy_fields, and there's already a comment for the third.

AFAICT, the other ones are not ok, so fix those by dropping the "false"
argument.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>
2023-08-31 09:37:44 +02:00
Tom de Vries 2774f2dad5 [gdb/symtab] Factor out type::{alloc_fields,copy_fields}
After finding this code in buildsym_compunit::finish_block_internal:
...
              ftype->set_fields
                ((struct field *)
                 TYPE_ALLOC (ftype, nparams * sizeof (struct field)));
...
and fixing PR30810 by using TYPE_ZALLOC, I wondered if there were more
locations that needed fixing.

I decided to make things easier to spot by factoring out a new function
alloc_fields:
...
 /* Allocate the fields array of this type, with NFIELDS elements.  If INIT,
     zero-initialize the allocated memory.  */
  void
  type::alloc_fields (unsigned int nfields, bool init = true);
...
where:
- a regular use would be "alloc_fields (nfields)", and
- an exceptional use that needed no initialization would be
  "alloc_fields (nfields, false)".

Pretty soon I discovered that most of the latter cases are due to
initialization by memcpy, so I added two variants of copy_fields as well.

After this rewrite there are 8 uses of set_fields left:
...
gdb/coffread.c:	  type->set_fields (nullptr);
gdb/coffread.c:	  type->set_fields (nullptr);
gdb/coffread.c:	  type->set_fields (nullptr);
gdb/eval.c:  type->set_fields
gdb/gdbtypes.c:  type->set_fields (args);
gdb/gdbtypes.c:  t->set_fields (XRESIZEVEC (struct field, t->fields (),
gdb/dwarf2/read.c:      type->set_fields (new_fields);
gdb/dwarf2/read.c:	      sub_type->set_fields (sub_type->fields () + 1);
...

These fall into the following categories:
- set to nullptr (coffread.c),
- type not owned by objfile or gdbarch (eval.c), and
- modifying an existing fields array, like adding an element at the end or
  dropping an element at the start (the rest).

Tested on x86_64-linux.
2023-08-31 09:37:44 +02:00
Tom de Vries 0b8b932dce [gdb/symtab] Fix uninitialized memory in buildsym_compunit::finish_block_internal
When running test-case gdb.dwarf2/per-bfd-sharing.exp with target board stabs,
gdb either segfaults or asserts due to reading uninitialized memory, allocated
here in buildsym_compunit::finish_block_internal:
...
	      ftype->set_fields
		((struct field *)
		 TYPE_ALLOC (ftype, nparams * sizeof (struct field)));
...

Fix this by using TYPE_ZALLOC instead.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>

PR symtab/30810
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30810
2023-08-31 09:37:44 +02:00
Claudiu Zissulescu cd60a3956d arc: Update elfarcv2 script template
Update ARC's elfarcv2 script template with:

- The .ivt section (Interrupt Vector Table) is mapped at the begining
  of STARTUP_MEMORY when ivtbase_addr is not defined. Previously, it
  was pointing to 0x00.

- MEMORY_FILE is a new emulation paramter and sets the name for the
  linker script file which holds the MEMORY commands required by
  arcv2elfx emulation.

- Four new linker variables are introduced available when arcv2elf emulation is used:
  * __TEXT_REGION_ORIGIN__ Once defined it is setting the text region origin. By default it points to zero.
  * __TEXT_REGION_LENGTH__ Once defined it is setting the text region length. By default it is set to 2M.
  * __DATA_REGION_ORIGIN__ Once defined it is setting the data region origin. By default it is set to 0x80000000.
  * __DATA_REGION_LENGTH__ Once defined it is setting the data region length. By default it is set to 2M.

ld/ChangeLog:

	* scripttempl/elfarcv2.sc: Update script template.

Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
2023-08-31 08:13:53 +03:00
H.J. Lu 68a2d9bf87 elf: Don't merge sections with different SHF_LINK_ORDER
For relocatable link, don't merge 2 SHF_LINK_ORDER sections if output
sections of their linked to sections are different.

	* ldelf.c (elf_orphan_compatible): Don't merge sections with
	different SHF_LINK_ORDER.
	* testsuite/ld-elf/pr30791a.d: New file.
	* testsuite/ld-elf/pr30791a.s: Likewise.
	* testsuite/ld-elf/pr30791b.d: Likewise.
	* testsuite/ld-elf/pr30791b.s: Likewise.
	* testsuite/ld-elf/pr30791c.s: Likewise.
	* testsuite/ld-elf/pr30791d.s: Likewise.
2023-08-30 17:17:31 -07:00
H.J. Lu bac5753ca2 elf: Check DT_SYMTAB only on non-IR object
Check DT_SYMTAB only on non-IR object of archive member to avoid crash
on LLVM IR object with NULL elf_tdata.

	PR ld/30811
	* elflink.c (elf_link_is_defined_archive_symbol): Check
	DT_SYMTAB only on non-IR object.
2023-08-30 17:17:31 -07:00
GDB Administrator 48abc08d13 Automatic date update in version.in 2023-08-31 00:00:44 +00:00
Alan Modra 00aea11f40 libbfd.texi zero size
Pattern rules in doc/local.mk exist that specify how to make
libbfd.texi from libfd.h or libbfd.c.  Since both files exist and the
libbfd.h rule is first, libbfd.h is used.  libbfd.h doesn't contain
the documentation..

	* doc/local.mk (doc/%stamp): Put rule making this from %.c
	before %.h rule.
	* Makefile.in: Regenerate.
	* libbfd.c (Byte swapping routines): Don't omit description.
2023-08-31 08:57:31 +09:30
Alan Modra d7d4e91155 DEFAULT_BUFFERSIZE
There isn't any reason to think that a particular buffer size is
ideal in bfd, so let's just not define it.

	* libbfd-in.h (DEFAULT_BUFFERSIZE): Don't define.
	* libbfd.h: Regenerate.
	* archive.c (AR_WRITE_BUFFERSIZE): Substitute value.
	* vms-lib.c (_bfd_vms_lib_write_archive_contents): Likewise.
	* coff-rs6000.c (do_copy): Likewise, and use sizeof.
2023-08-31 07:48:16 +09:30
Tom de Vries 50e193c186 [gdb/testsuite] Fix gdb.dwarf2/nullptr_t.exp with cc-with-dwz-m
When running test-case gdb.dwarf2/nullptr_t.exp with target board
cc-with-dwz-m, I run into:
...
FAIL: gdb.dwarf2/nullptr_t.exp: decltype(nullptr) symbol
...

The problem is that were looking for "typedef void decltype\\(nullptr\\)"
using "maint print symbols -source $srcfile", but dwz has moved the typedef to
a PU, so it's shown by "maint print symbols -source <unknown>" instead.

Fix this by dropping the "-source $srcfile" bit.

Tested on x86_64-linux, with make-check-all.sh.
2023-08-30 23:33:31 +02:00
Simon Marchi 7c651c5fe6 gdb: simplify vector construction in eval_op_rust_array
Replace the manual fill of the vector with the appropriate std::vector
constructor that makes N copies of the provided value.

Change-Id: I579570748c48f53d35024105269d83c716294746
Approved-By: Tom Tromey <tom@tromey.com>
2023-08-30 14:32:11 -04:00
Maciej W. Rozycki 0c164d29d1 Revert "Gold: Add targ_extra_little_endian to configure.ac"
This reverts commit cf8565fb2e.  It was
applied unapproved.
2023-08-30 18:45:14 +01:00
Maciej W. Rozycki ddf8117d3c Revert "Gold/MIPS: Use EM_MIPS instead of EM_MIPS_RS3_LE for little endian"
This reverts commit 3983426378.  It was
applied unapproved.
2023-08-30 18:45:14 +01:00
Maciej W. Rozycki 6537f54611 Revert "Gold/MIPS: Drop mips*le/mips*el* triple pattern"
This reverts commit adb3ae2eba.  It was
applied unapproved.
2023-08-30 18:45:14 +01:00
Maciej W. Rozycki edc9d95966 Revert "Gold/MIPS: Add targ_extra_size=64 for mips32 triples"
This reverts commit d6cdc0af2b.  It was
applied unapproved.
2023-08-30 18:45:14 +01:00
Maciej W. Rozycki 7c9ab4a564 Revert "Gold/MIPS: Add mips64*/mips64*el triple support"
This reverts commit 5c4cdba100.  It was
applied unapproved.
2023-08-30 18:45:14 +01:00
Maciej W. Rozycki c1a5464809 Revert "MIPS: Use 64-bit a ABI by default for `mipsisa64*-*-linux*' targets"
This reverts commit 025e84f935.  It was
applied unapproved.
2023-08-30 18:45:14 +01:00