diff options
author | Tom Tromey <tromey@adacore.com> | 2023-08-21 09:55:14 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2023-09-05 09:54:53 -0600 |
commit | 358be6e72d464349e5146095bdb04b96be5734c1 (patch) | |
tree | be414ce7ecbcc1f7e738d5db274503babe1c2dd3 /gdb/target.c | |
parent | 655e4e52ef44c1670a3b6f979b85534279c9f6c1 (diff) | |
download | binutils-358be6e72d464349e5146095bdb04b96be5734c1.zip binutils-358be6e72d464349e5146095bdb04b96be5734c1.tar.gz binutils-358be6e72d464349e5146095bdb04b96be5734c1.tar.bz2 |
Read Ada main name from executable, not inferior
An upstream bug report points out this bug: if the user switches from
one Ada executable to another without "kill"ing the inferior, then the
"start" command will fail.
What happens here is that the Ada "main" name is found in a constant
string in the executable. But, if the inferior is running, then the
process_stratum target reads from the inferior memory.
This patch fixes the problem by changing the main name code to set
trust-readonly-sections, causing the target stack to read from the
executable instead.
I looked briefly at changing GNAT to emit DW_AT_main_subprogram
instead, but this looks to be pretty involved.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=25811
Diffstat (limited to 'gdb/target.c')
-rw-r--r-- | gdb/target.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/gdb/target.c b/gdb/target.c index 05db7e7..68d7fe2 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -116,10 +116,9 @@ static struct target_ops *the_debug_target; static struct cmd_list_element *targetlist = NULL; -/* True if we should trust readonly sections from the - executable when reading memory. */ +/* See target.h. */ -static bool trust_readonly = false; +bool trust_readonly = false; /* Nonzero if we should show true memory content including memory breakpoint inserted by gdb. */ |