]> git.ipfire.org Git - thirdparty/binutils-gdb.git/log
thirdparty/binutils-gdb.git
2 years agoFix "start" for D, Rust, etc
Tom Tromey [Tue, 14 Feb 2023 00:44:54 +0000 (17:44 -0700)] 
Fix "start" for D, Rust, etc

The new DWARF indexer broke "start" for some languages.

For D, it is broken because, while the code in cooked_index_shard::add
specifically excludes Ada, it fails to exclude D.  This means that the
C "main" will be detected as "main" here -- whereas what is intended
is for the code in find_main_name to use d_main_name to find the name.

The Rust compiler, on the other hand, uses DW_AT_main_subprogram.
However, the code in dwarf2_build_psymtabs_hard fails to create a
fully-qualified name, so the name always ends up as plain "main".

For D and Ada, a very simple approach suffices: remove the check
against "main" from cooked_index_shard::add.  This also has the
benefit of slightly speeding up DWARF indexing.  I assume this
approach will work for Pascal and Modula-2 as well, but I don't have a
way to test those at present.

For Rust, though, this is not sufficient.  And, computing the
fully-qualified name in dwarf2_build_psymtabs_hard will crash, because
cooked_index_entry::full_name uses the canonical name -- and that is
not computed until after canonicalization.

However, we don't want to wait for canonicalization to be done before
computing the main name.  That would remove any benefit from doing
canonicalization is the background.

This patch solves this dilemma by noticing that languages using
DW_AT_main_subprogram are, currently, disjoint from languages
requiring canonicalization.  Because of this, we can add a parameter
to full_name to let us avoid crashes, slowdowns, and races here.

This is kind of tricky and ugly, so I've tried to comment it
sufficiently.

While doing this, I had to change gdb.dwarf2/main-subprogram.exp.  A
different possibility here would be to ignore the canonicalization
needs of C in this situation, because those only affect certain types.
However, I chose this approach because the test case is artificial
anyhow.

A long time ago, in an earlier threading attempt, I changed the global
current_language to be a function (hidden behind a macro) to let us
attempt lazily computing the current language.  Perhaps this approach
could still be made to work.  However, that also seemed rather tricky,
more so than this patch.

Reviewed-By: Andrew Burgess <aburgess@redhat.com>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30116
(cherry picked from commit 47fe57c92810c7302bb80eafdec6f4345bcc69c8)

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 18 Feb 2023 00:00:27 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 17 Feb 2023 00:00:39 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 16 Feb 2023 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 15 Feb 2023 00:00:44 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 14 Feb 2023 00:00:44 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoFix doc build dependencies for --with-system-readline
Keith Seitz [Mon, 13 Feb 2023 14:14:40 +0000 (06:14 -0800)] 
Fix doc build dependencies for --with-system-readline

PR build/30108 concerns building gdb documentation with
--with-sytem-readline.  If the in-tree readline directory is
missing, though, the docs will fail to build:

make[4]: Entering directory '/home/keiths/work/readline-doc-issue/linux/gdb/doc'
make[4]: *** No rule to make target '../../../src/gdb/doc/../../readline/readline/doc/rluser.texi', needed by 'gdb.info'.  Stop.

The listed file (and hsuser.texi) are conditionally included by gdb.texinfo.
When system readline is used, gdb/configure.ac will leave
READLINE_TEXI_INCFLAGS empty, causing doc/Makefile.in to output a line to
$BUILD/doc/GDBvn.texi with "@set SYSTEM_READLINE".  This surpresses the
inclusion of the missing files. They are not needed or used in this
scenario.

However, GDB_DOC_SOURCE_INCLUDES always lists these two files as dependencies,
thus provoking the build error whenever readline/ is missing.

This patch fixes this by creating (essentially) a conditional setting of the
dependencies to be included from readline.

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 13 Feb 2023 00:00:26 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 12 Feb 2023 00:00:26 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 11 Feb 2023 00:00:32 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 10 Feb 2023 00:00:34 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 9 Feb 2023 00:00:43 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 8 Feb 2023 00:00:45 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 7 Feb 2023 00:00:45 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 6 Feb 2023 00:00:44 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 5 Feb 2023 00:00:37 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 4 Feb 2023 00:00:28 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 3 Feb 2023 00:00:42 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoBump GDB's version number to 13.0.91.DATE-git.
Joel Brobecker [Thu, 2 Feb 2023 05:23:37 +0000 (09:23 +0400)] 
Bump GDB's version number to 13.0.91.DATE-git.

This commit changes gdb/version.in to 13.0.91.DATE-git.

2 years agoEnsure that libbacktrace/allocfail.sh is not deleted when creating release tarballs.
Nick Clifton [Thu, 2 Feb 2023 04:53:45 +0000 (08:53 +0400)] 
Ensure that libbacktrace/allocfail.sh is not deleted when creating release tarballs.

        * Makefile.am (CLEANFILES): Import patch from upstream to prevent
        allocafail.sh from being removed when running 'make clean'.

(cherry picked from commit edf64cd235f5ecb3725e7cf1ff83bbdb6dd53340)

2 years agoSet GDB version number to 13.0.91.
Joel Brobecker [Thu, 2 Feb 2023 03:53:17 +0000 (07:53 +0400)] 
Set GDB version number to 13.0.91.

This commit changes gdb/version.in to 13.0.91.

2 years agogdb/NEWS: Change "Changes since GDB 12" to "Changes in GDB 13".
Joel Brobecker [Thu, 2 Feb 2023 03:49:08 +0000 (07:49 +0400)] 
gdb/NEWS: Change "Changes since GDB 12" to "Changes in GDB 13".

Now that the version number is confirmed to GDB 13, this commit
updates the gdb/NEWS file accordingly, as per GDB's release procedures.

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 2 Feb 2023 00:00:28 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 1 Feb 2023 00:00:45 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agogdb/arm: Use new dwarf2 function cache
Torbjörn SVENSSON [Thu, 17 Nov 2022 11:18:20 +0000 (12:18 +0100)] 
gdb/arm: Use new dwarf2 function cache

This patch resolves the performance issue reported in pr/29738 by
caching the values for the stack pointers for the inner frame.  By
doing so, the impact can be reduced to checking the state and
returning the appropriate value.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Signed-off-by: Yvan Roux <yvan.roux@foss.st.com>
2 years agogdb: dwarf2 generic implementation for caching function data
Torbjörn SVENSSON [Thu, 17 Nov 2022 11:17:53 +0000 (12:17 +0100)] 
gdb: dwarf2 generic implementation for caching function data

When there is no dwarf2 data for a register, a function can be called
to provide the value of this register.  In some situations, it might
not be trivial to determine the value to return and it would cause a
performance bottleneck to do the computation each time.

This patch allows the called function to have a "cache" object that it
can use to store some metadata between calls to reduce the performance
impact of the complex logic.

The cache object is unique for each function and frame, so if there are
more than one function pointer stored in the dwarf2_frame_cache->reg
array, then the appropriate pointer will be supplied (the type is not
known by the dwarf2 implementation).

dwarf2_frame_get_fn_data can be used to retrieve the function unique
cache object.
dwarf2_frame_allocate_fn_data can be used to allocate and retrieve the
function unique cache object.

Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Signed-off-by: Yvan Roux <yvan.roux@foss.st.com>
2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 31 Jan 2023 00:00:36 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoFix comparator bug in cooked index
Tom Tromey [Fri, 27 Jan 2023 18:19:16 +0000 (11:19 -0700)] 
Fix comparator bug in cooked index

Simon pointed out that the cooked index template-matching patch
introduced a failure in libstdc++ debug mode.  In particular, the new
code violates the assumption of std::lower_bound and std::upper_bound
that the range is sorted with respect to the comparison.

When I first debugged this, I thought the problem was unfixable as-is
and that a second layer of filtering would have to be done.  However,
on irc, Simon pointed out that it could perhaps be solved if the
comparison function were assured that one operand always came from the
index, with the other always being the search string.

This patch implements this idea.

First, a new mode is introduced: a sorting mode for
cooked_index_entry::compare.  In this mode, strings are compared
case-insensitively, but we're careful to always sort '<' before any
other printable character.  This way, two names like "func" and
"func<param>" will be sorted next to each other -- i.e., "func1" will
not be seen between them.  This is important when searching.

Second, the compare function is changed to work in a strcmp-like way.
This makes it easier to test and (IMO) understand.

Third, the compare function is modified so that in non-sorting modes,
the index entry is always the first argument.  This allows consistency
in compares.

I regression tested this in libstdc++ debug mode on x86-64 Fedora 36.
It fixes the crash that Simon saw.

This is v2.  I believe it addresses the review comments, except for
the 'enum class' change, as I mentioned in email on the list.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
(cherry picked from commit c121e82c39659d1140b1a6a3cfd72c765741b9f5)

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 30 Jan 2023 00:00:51 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 29 Jan 2023 00:01:35 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 28 Jan 2023 00:01:00 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 27 Jan 2023 00:00:34 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 26 Jan 2023 00:00:33 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 25 Jan 2023 00:00:51 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 24 Jan 2023 00:00:57 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 23 Jan 2023 00:00:53 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 22 Jan 2023 00:00:30 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 21 Jan 2023 00:00:33 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 20 Jan 2023 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 19 Jan 2023 00:00:48 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 18 Jan 2023 00:00:49 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoFix parameter-less template regression in new DWARF reader
Tom Tromey [Wed, 14 Dec 2022 21:37:41 +0000 (14:37 -0700)] 
Fix parameter-less template regression in new DWARF reader

PR c++/29896 points out a regression in the new DWARF reader.  It does
not properly handle a case like "break fn", where "fn" is a template
function.

This happens because the new index uses strncasecmp to compare.
However, to make this work correctly, we need a custom function that
ignores template parameters.

This patch adds a custom comparison function and fixes the bug.  A new
test case is included.

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

(cherry picked from commit ac37b79cc440e37fc704d425a6e450afb3c7ee89)

2 years agoMove hash_entry and eq_entry into cooked_index::do_finalize
Tom Tromey [Thu, 15 Dec 2022 16:38:05 +0000 (09:38 -0700)] 
Move hash_entry and eq_entry into cooked_index::do_finalize

I was briefly confused by the hash_entry and eq_entry functions in the
cooked index.  They are only needed in a single method, and that
method already has a couple of local lambdas for a different hash
table.  So, it seemed cleaner to move these there as well.

(cherry picked from commit 5a89072f36ddd3be71103e3806d42ff5e49ff616)

2 years agoAvoid submitting empty tasks in parallel_for_each
Tom Tromey [Tue, 13 Dec 2022 19:03:34 +0000 (12:03 -0700)] 
Avoid submitting empty tasks in parallel_for_each

I found that parallel_for_each would submit empty tasks to the thread
pool.  For example, this can happen if the number of tasks is smaller
than the number of available threads.  In the DWARF reader, this
resulted in the cooked index containing empty sub-indices.  This patch
arranges to instead shrink the result vector and process the trailing
entries in the calling thread.

(cherry picked from commit 63078a04984b73e1fdeb4571a63605ee5c13f929)

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 17 Jan 2023 00:01:16 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 16 Jan 2023 00:01:01 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 15 Jan 2023 00:01:00 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 14 Jan 2023 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 13 Jan 2023 00:01:01 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoSet _WIN32_WINNT in common.m4 configure check
Tom Tromey [Mon, 9 Jan 2023 14:43:29 +0000 (07:43 -0700)] 
Set _WIN32_WINNT in common.m4 configure check

GCC recently added support for the Windows thread model, enabling
libstdc++ to support Windows natively.  However, this supporrt
requires a version of Windows later than the minimum version that is
supported by GDB.

PR build/29966 points out that the GDB configure test for std::thread
does not work in this situation, because _WIN32_WINNT is not defined
in test program, and so <thread> seems to be fine.

This patch is an attempt to fix the problem, by using the same setting
for _WIN32_WINNT at configure time as is used at build time.

I don't have access to one of the older systems so I don't think I can
truly test this.  I did do a mingw cross build, though.  I'm going to
ask the bug reporter to test it.

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

(cherry picked from commit 2124b2de4bba05063218501dcccfc4cffe648cda)

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 12 Jan 2023 00:01:26 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 11 Jan 2023 00:00:47 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 10 Jan 2023 00:01:20 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 9 Jan 2023 00:01:22 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 8 Jan 2023 00:01:06 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 7 Jan 2023 00:00:53 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 6 Jan 2023 00:01:12 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 5 Jan 2023 00:01:00 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 4 Jan 2023 00:00:49 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years ago[gdb] Fix segfault during inferior call to ifunc
Andrew Burgess [Tue, 3 Jan 2023 10:53:09 +0000 (11:53 +0100)] 
[gdb] Fix segfault during inferior call to ifunc

With a simple test-case:
...
$ cat test.c
char *p = "a";
int main (void) {
  return strlen (p);
}
$ gcc -g test.c
...
we run into this segfault:
...
$ gdb -q -batch a.out -ex start -ex "p strlen (p)"
Temporary breakpoint 1 at 0x1151: file test.c, line 4.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Temporary breakpoint 1, main () at test.c:4
4   return strlen (p);

Fatal signal: Segmentation fault
...

The strlen is an ifunc, and consequently during the call to
call_function_by_hand_dummy for "p strlen (p)" another call
to call_function_by_hand_dummy is used to resolve the ifunc.

This invalidates the get_current_frame () result in the outer call.

Fix this by using prepare_reinflate and reinflate.

Note that this series (
https://inbox.sourceware.org/gdb-patches/20221214033441.499512-1-simon.marchi@polymtl.ca/ )
should address this problem, but this patch is a simpler fix which is easy to
backport.

Tested on x86_64-linux.

Co-Authored-By: Tom de Vries <tdevries@suse.de>
PR gdb/29941
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29941

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 3 Jan 2023 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoFix target remote pipe command for MinGW
Jonas Hoerberg [Thu, 22 Dec 2022 15:22:17 +0000 (15:22 +0000)] 
Fix target remote pipe command for MinGW

The cced7cacecad104fff0 ("gdb: preserve `|` in connection details string")
commit added '|' detection and removal to ser-pipe.c, but missed to add it
to ser-mingw.c.

This results in the error message below for MinGW hosts:
error starting child process '| <executable> <args>': CreateProcess: No such file or directory

This commit add the missing '|' detection and removal to ser-mingw.c.

(cherry picked from commit c43d829bca5e45c5e6c0255a549abc5766f6de7f)

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 2 Jan 2023 00:00:31 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agomanual copyright year range of various GDB files to add 2023
Joel Brobecker [Sun, 1 Jan 2023 13:07:44 +0000 (17:07 +0400)] 
manual copyright year range of various GDB files to add 2023

This commit updates the following file...

   gdb/doc/gdb.texinfo
   gdb/doc/refcard.tex
   gdb/syscalls/update-netbsd.sh

... by hand as instructed by the gdb/copyright.py script.
The update by hand is needed because the copyright headers
to update are actually nested inside those files, rather
than located at the start of the file.

(cherry picked from commit 944bfb2ccb564803279f41019e75c62d7ec8e5af)

2 years agoUpdate copyright year range in header of all files managed by GDB
Joel Brobecker [Sun, 1 Jan 2023 13:07:37 +0000 (17:07 +0400)] 
Update copyright year range in header of all files managed by GDB

This commit is the result of running the gdb/copyright.py script,
which automated the update of the copyright year range for all
source files managed by the GDB project to be updated to include
year 2023.

2 years agogdb/copyright.py: Adjust following rename of sim/ppc/ppc-instructions...
Joel Brobecker [Sun, 1 Jan 2023 13:07:32 +0000 (17:07 +0400)] 
gdb/copyright.py: Adjust following rename of sim/ppc/ppc-instructions...

... to sim/ppc/powerpc.igen

This file is in the NOT_FSF_LIST because this file has a copyright
which is not assigned to the FSF. Since the file got renamed,
the corresponding entry in NOT_FSF_LIST needs to be renamed as well.

(cherry picked from commit e4661570ead7be521c9d693f188b0944d7b8c78c)

2 years agoUpdate copyright year in help message of gdb, gdbserver, gdbreplay
Joel Brobecker [Sun, 1 Jan 2023 13:07:20 +0000 (17:07 +0400)] 
Update copyright year in help message of gdb, gdbserver, gdbreplay

This commit updates the copyright year displayed by gdb, gdbserver
and gdbreplay's help message from 2022 to 2023, as per our Start
of New Year procedure. The corresponding source files' copyright
header are also updated accordingly.

(cherry picked from commit e1ca55341ca328b2343ecc5cb78699fdbd1caa22)

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 1 Jan 2023 00:00:31 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 31 Dec 2022 00:01:01 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 30 Dec 2022 00:00:39 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 29 Dec 2022 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoFix "set debug timestamp"
Tom Tromey [Tue, 27 Dec 2022 23:34:44 +0000 (16:34 -0700)] 
Fix "set debug timestamp"

PR cli/29945 points out that "set debug timestamp 1" stopped working
-- this is a regression due to commit b8043d27 ("Remove a ui-related
memory leak").

This patch fixes the bug and adds a regression test.

I think this should probably be backported to the gdb 13 branch.

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

(cherry picked from commit a60535c39ba52d88c47740db6ab116db32e2331a)

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 28 Dec 2022 00:00:56 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 27 Dec 2022 00:01:08 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 26 Dec 2022 00:00:25 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sun, 25 Dec 2022 00:00:54 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 24 Dec 2022 00:00:38 +0000 (00:00 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Fri, 23 Dec 2022 00:02:38 +0000 (00:02 +0000)] 
Automatic date update in version.in

2 years agoFix MinGW build using mingw.org's MinGW
Eli Zaretskii [Thu, 22 Dec 2022 10:42:24 +0000 (12:42 +0200)] 
Fix MinGW build using mingw.org's MinGW

This allows to build GDB even though the default value of
_WIN32_WINNT is lower than the one needed to expose some
new APIs used here, and leave the test for their actual
support to run time.
* gdb/nat/windows-nat.c (EXTENDED_STARTUPINFO_PRESENT): Define if
not defined.
(create_process_wrapper): Use 'gdb_lpproc_thread_attribute_list'
instead of 'PPROC_THREAD_ATTRIBUTE_LIST' (which might not be defined
at compile time).  This fixes compilation error using mingw.org's
MinGW.

2 years agoPR29915, bfdio.c does not compile with mingw.org's MinGW
Alan Modra [Tue, 20 Dec 2022 07:31:07 +0000 (18:01 +1030)] 
PR29915, bfdio.c does not compile with mingw.org's MinGW

PR 29915
* configure.ac: Add AC_CHECK_DECLS test ___lc_codepage_func.
* configure: Regenerate.
* config.in: Regenerate.
* bfdio.c (___lc_codepage_func): Move declaration to..
(_bfd_real_fopen): ..here, and use !HAVE_DECL____LC_CODEPAGE_FUNC.

(cherry picked from commit 9d0991449285833b9a77cc02850a1e113e460362)

2 years agoAutomatic date update in version.in
GDB Administrator [Thu, 22 Dec 2022 00:01:48 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Wed, 21 Dec 2022 00:01:36 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoFix install-strip target
Hannes Domani [Mon, 19 Dec 2022 16:29:27 +0000 (17:29 +0100)] 
Fix install-strip target

The libtool patch broke install-strip of gdb:

/bin/sh ../../gdb/../mkinstalldirs /src/gdb/inst/share/gdb/python/gdb
transformed_name=`t='s,y,y,'; \
                  echo gdb | sed -e "$t"` ; \
        if test "x$transformed_name" = x; then \
          transformed_name=gdb ; \
        else \
          true ; \
        fi ; \
        /bin/sh ../../gdb/../mkinstalldirs /src/gdb/inst/bin ; \
        /bin/sh ./libtool --mode=install STRIPPROG='strip' /bin/sh /src/gdb/gdb.git/install-sh -c -s \
                gdb \
                /src/gdb/inst/bin/$transformed_name ; \
        /bin/sh ../../gdb/../mkinstalldirs /src/gdb/inst/include/gdb ; \
        /usr/bin/install -c -m 644 jit-reader.h /src/gdb/inst/include/gdb/jit-reader.h
libtool: install: `/src/gdb/inst/bin/gdb' is not a directory
libtool: install: Try `libtool --help --mode=install' for more information.

Since INSTALL_PROGRAM_ENV is no longer at the beginning of the command, the
gdb executable is not installed with install-strip.

2 years agogdb: fix command lookup in execute_command ()
Jan Vrany [Mon, 19 Dec 2022 11:24:36 +0000 (11:24 +0000)] 
gdb: fix command lookup in execute_command ()

Commit b5661ff2 ("gdb: fix possible use-after-free when
executing commands") used lookup_cmd_exact () to lookup
command again after its execution to avoid possible
use-after-free error.

However this change broke test gdb.base/define.exp which
defines a post-hook for subcommand ("target testsuite").
In this case,  lookup_cmd_exact () returned NULL because
there's no command 'testsuite' in top-level commands.

This commit fixes this case by looking up the command again
using the original command line via lookup_cmd ().

Approved-By: Simon Marchi <simon.marchi@efficios.com>
(cherry picked from commit 37e5833da583310268dc1b04fc6839e81b987897)

2 years agoAutomatic date update in version.in
GDB Administrator [Tue, 20 Dec 2022 00:01:24 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoAutomatic date update in version.in
GDB Administrator [Mon, 19 Dec 2022 00:01:54 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoSet development mode to "off" by default.
Joel Brobecker [Sun, 18 Dec 2022 04:34:09 +0000 (08:34 +0400)] 
Set development mode to "off" by default.

This is done by setting the "development" variable to "false"
in bfd/development.sh.

2 years agoBump version to 13.0.90.DATE-git.
Joel Brobecker [Sun, 18 Dec 2022 04:33:54 +0000 (08:33 +0400)] 
Bump version to 13.0.90.DATE-git.

Now that the GDB 13 branch has been created,
this commit bumps the version number in gdb/version.in to
13.0.90.DATE-git

For the record, the GDB 13 branch was created
from commit 71c90666e601c511a5f495827ca9ba545e4cb463.

2 years agoAutomatic date update in version.in gdb-13-branchpoint
GDB Administrator [Sun, 18 Dec 2022 00:01:10 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agobfd_get_relocated_section_contents allow NULL data buffer
Alan Modra [Fri, 16 Dec 2022 11:07:29 +0000 (21:37 +1030)] 
bfd_get_relocated_section_contents allow NULL data buffer

This patch removes the bfd_malloc in default_indirect_link_order and
bfd_simple_get_relocated_section_contents, pushing the allocation down
to bfd_get_relocated_section_contents.  The idea is to make use of the
allocation done with sanity checking in bfd_get_full_section_contents,
which is called by bfd_generic_get_relocated_section_contents.

Doing this exposed a bug in bfd_get_full_section_contents.  With
relaxation it is possible that an input section rawsize is different
to the section size.  In that case we want to use the larger of
rawsize (the on-disk size for input sections) and size.

* reloc.c (bfd_generic_get_relocated_section_contents),
* reloc16.c (bfd_coff_reloc16_get_relocated_section_contents),
* coff-alpha.c (alpha_ecoff_get_relocated_section_contents),
* coff-sh.c (sh_coff_get_relocated_section_contents),
* elf-m10200.c (mn10200_elf_get_relocated_section_contents),
* elf-m10300.c (mn10300_elf_get_relocated_section_contents),
* elf32-avr.c (elf32_avr_get_relocated_section_contents),
* elf32-cr16.c (elf32_cr16_get_relocated_section_contents),
* elf32-crx.c (elf32_crx_get_relocated_section_contents),
* elf32-h8300.c (elf32_h8_get_relocated_section_contents),
* elf32-nds32.c (nds32_elf_get_relocated_section_contents),
* elf32-sh.c (sh_elf_get_relocated_section_contents),
* elfxx-mips.c (_bfd_elf_mips_get_relocated_section_contents):
Handle NULL data buffer.
* bfd.c (bfd_get_section_alloc_size): New function.
* bfd-in2.h: Regenerate.
* compress.c (bfd_get_full_section_contents): Correct section
malloc size.
* linker.c (default_indirect_link_order): Don't malloc memory
here before calling bfd_get_relocated_section_contents.
* simple.c (bfd_simple_get_relocated_section_contents): Likewise.

2 years agoasan: elf.c:12621:18: applying zero offset to null pointer
Alan Modra [Fri, 16 Dec 2022 07:43:38 +0000 (18:13 +1030)] 
asan: elf.c:12621:18: applying zero offset to null pointer

That's this line in elf_parse_notes:
  while (p < buf + size)

* elf.c (_bfd_elf_make_section_from_shdr): Don't call
elf_parse_notes when sh_size is zero.

2 years agoRe: The problem with warning in elf_object_p
Alan Modra [Thu, 15 Dec 2022 12:37:10 +0000 (23:07 +1030)] 
Re: The problem with warning in elf_object_p

Commit 5aa0f10c424e added a per_xvec_warn array to provide support for
warnings from elf_object_p (and a later patch for warnings from
pe_bfd_object_p) to be cached and then only printed if the target
matches.  It was quite limited in the style of message supported, only
one message could be printed, and didn't really meet the stated aim of
only warning when a target matches:  There are many other errors and
warnings that can be emitted by functions called from elf_object_p.

So this patch extends the error handler functions to support printing
to a string buffer, extends per_xvec_warn to support multiple errors/
warnings, and hooks this all into bfd_check_format_matches.  If
bfd_check_format_matches succeeds then any errors/warnings are printed
for the matching target.  If bfd_check_format_matches fails either due
to no match or to multiple matches and only one target vector produced
errors, then those errors are printed.

* bfd.c (MAX_ARGS): Define, use throughout.
(print_func): New typedef.
(_bfd_doprnt): Add new print param.  Replace calls to fprintf
with print.
(PRINT_TYPE): Similarly.
(error_handler_fprintf): Renamed from error_handler_internal.
Use _bfd_get_error_program_name.  Add fprintf arg.  Move code
setting up args..
(_bfd_doprnt_scan): ..to here.  Add ap param.
(struct buf_stream): New.
(err_sprintf): New function.
(error_handler_bfd): New static variable.
(error_handler_sprintf): New function.
(_bfd_set_error_handler_caching): New function.
(_bfd_get_error_program_name): New function.
* elfcode.h (elf_swap_shdr_in): Use _bfd_error_handler in
warning messages.
(elf_object_p): Likewise.
* format.c (print_warnmsg): New function.
(clear_warnmsg): Rewrite.
(null_error_handler): New function.
(bfd_check_format_matches): Ignore warnings from recursive calls
checking first element of an archive.  Use caching error handler
otherwise.  Print warnings on successful match, or when only one
target has emitted warnings/errors.
* peicode.h (pe_bfd_object_p): Use _bfd_error_handler in
warning messages.
* targets.c (per_xvec_warn): Change type of array elements.
(struct per_xvec_message): New.
(_bfd_per_xvec_warn): Rewrite.
* Makefile.am (LIBBFD_H_FILES): Add bfd.c.
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.

2 years agosframe: doc: update spec for the mangled-RA bit in FRE
Indu Bhagat [Sat, 17 Dec 2022 06:02:11 +0000 (22:02 -0800)] 
sframe: doc: update spec for the mangled-RA bit in FRE

ChangeLog:

* libsframe/doc/sframe-spec.texi

2 years agogas: sframe: testsuite: add testcase for .cfi_negate_ra_state
Indu Bhagat [Sat, 17 Dec 2022 06:02:07 +0000 (22:02 -0800)] 
gas: sframe: testsuite: add testcase for .cfi_negate_ra_state

Add a new test to check that .cfi_negate_ra_state on aarch64 is handled
well (a non-empty SFrame section with valid SFrame FREs is generated).

ChangeLog:

* testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.d: New test.
* testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.s: Likewise.
* testsuite/gas/cfi-sframe/cfi-sframe.exp: Adjust the list
accordingly.

2 years agoobjdump/readelf: sframe: emit marker for FREs with mangled RA
Indu Bhagat [Sat, 17 Dec 2022 06:02:02 +0000 (22:02 -0800)] 
objdump/readelf: sframe: emit marker for FREs with mangled RA

In the textual dump of the SFrame section, when an SFrame FRE recovers a
mangled RA, use string "[s]" in the output to indicate that the return
address is a signed (mangled) one.

ChangeLog:

        * libsframe/sframe-dump.c (dump_sframe_func_with_fres): Postfix
with "[s]" if RA is signed with authorization code.

2 years agolibsframe: provide new access API for mangled RA bit
Indu Bhagat [Sat, 17 Dec 2022 06:01:57 +0000 (22:01 -0800)] 
libsframe: provide new access API for mangled RA bit

include/ChangeLog:

* sframe-api.h (sframe_fre_get_ra_mangled_p): New declaration.

ChangeLog:

* libsframe/sframe.c (sframe_get_fre_ra_mangled_p): New
definition.
(sframe_fre_get_ra_mangled_p): New static function.

2 years agogas: sframe: add support for .cfi_negate_ra_state
Indu Bhagat [Sat, 17 Dec 2022 06:01:51 +0000 (22:01 -0800)] 
gas: sframe: add support for .cfi_negate_ra_state

DW_CFA_AARCH64_negate_ra_state in aarch64 is multiplexed with
DW_CFA_GNU_window_save in the DWARF format.

Remove the common-empty-4 testcase because the generated SFrame section
will not be be empty anymore.  A relevant test will be added in a later
commit.

ChangeLog:

* gas/gen-sframe.c (sframe_v1_set_fre_info): Add new argument
for mangled_ra_p.
(sframe_set_fre_info): Likewise.
(output_sframe_row_entry): Handle mangled_ra_p.
(sframe_row_entry_new): Reset mangled_ra_p.
(sframe_row_entry_initialize): Initialize mangled_ra_p.
(sframe_xlate_do_gnu_window_save): New definition.
(sframe_do_cfi_insn): Handle DW_CFA_GNU_window_save.
* gas/gen-sframe.h (struct sframe_row_entry): New member.
(struct sframe_version_ops): Add a new argument for
mangled_ra_p.
* gas/testsuite/gas/cfi-sframe/cfi-sframe.exp: Remove test.
* gas/testsuite/gas/cfi-sframe/common-empty-4.d: Removed.
* gas/testsuite/gas/cfi-sframe/common-empty-4.s: Removed.

2 years agosframe.h: add support for .cfi_negate_ra_state
Indu Bhagat [Sat, 17 Dec 2022 06:01:40 +0000 (22:01 -0800)] 
sframe.h: add support for .cfi_negate_ra_state

Use the last remaining bit in the 'SFrame FRE info' word to store whether
the RA is signed/unsigned with PAC authorization code: this bit is named
as the "mangled RA" bit.  This bit is still unused for x86-64.

The behaviour of the mangled-RA info bit in SFrame format closely
follows the behaviour of DW_CFA_AARCH64_negate_ra_state in DWARF.  During
unwinding, whenever an SFrame FRE with non-zero "mangled RA" bit is
encountered, it means the upper bits of the return address contain Pointer
Authentication code.  The unwinder, hence, must use appropriate means to
restore LR correctly in such cases.

include/ChangeLog:

* sframe.h (SFRAME_V1_FRE_INFO_UPDATE_MANGLED_RA_P): New macro.
(SFRAME_V1_FRE_MANGLED_RA_P): Likewise.

2 years agoAutomatic date update in version.in
GDB Administrator [Sat, 17 Dec 2022 00:01:15 +0000 (00:01 +0000)] 
Automatic date update in version.in

2 years agoDelay checking whether /proc/pid/mem is writable (PR gdb/29907)
Pedro Alves [Fri, 16 Dec 2022 12:04:54 +0000 (12:04 +0000)] 
Delay checking whether /proc/pid/mem is writable (PR gdb/29907)

As of 1bcb0708f229 ("gdb/linux-nat: Check whether /proc/pid/mem is
writable"), GDB checks if /proc/pid/mem is writable.  This is done
early at GDB startup, in order to get a consistent warning, instead of
a warning that depends on whenever GDB writes to inferior memory.

PR gdb/29907 points out that some build systems (like QEMU's,
apparently) may call 'gdb --version' to check GDB's presence & its
version on the system, and that Gentoo's build process has sandboxing
which blocks the /proc/pid/mem access and thus GDB warns, which
results in build fails.

To help with that, this patch delays the /proc/pid/mem check until we
start or attach to an inferior.  Ends up potentially emiting a warning
close where we already emit other ptrace- and /proc- related warnings,
which just Feels Right.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29907
Change-Id: I5537653ecfbbe76a04ab035e40e59d09b4980763