diff options
author | Thiago Jung Bauermann <thiago.bauermann@linaro.org> | 2023-04-03 22:39:46 +0000 |
---|---|---|
committer | Thiago Jung Bauermann <thiago.bauermann@linaro.org> | 2023-04-05 19:56:09 +0000 |
commit | 03e323abf479e9ee3ebd38c4077a8da7fa1efe0c (patch) | |
tree | 8e94293b3801971a1f71fb983f45488e9afa92a6 /gdb | |
parent | 3401f947d8612ffad751fc71e7deda8613b6630e (diff) | |
download | gdb-03e323abf479e9ee3ebd38c4077a8da7fa1efe0c.zip gdb-03e323abf479e9ee3ebd38c4077a8da7fa1efe0c.tar.gz gdb-03e323abf479e9ee3ebd38c4077a8da7fa1efe0c.tar.bz2 |
gdb: Fix reading of partial symtabs in dbxread.c
After commit 9675da25357c ("Use unrelocated_addr in minimal symbols"),
aarch64-linux started failing gdb.asm/asm-source.exp:
Running /home/thiago.bauermann/src/binutils-gdb/gdb/testsuite/gdb.asm/asm-source.exp ...
PASS: gdb.asm/asm-source.exp: f at main
PASS: gdb.asm/asm-source.exp: n at main
PASS: gdb.asm/asm-source.exp: next over macro
FAIL: gdb.asm/asm-source.exp: step into foo2
PASS: gdb.asm/asm-source.exp: info target
PASS: gdb.asm/asm-source.exp: info symbol
PASS: gdb.asm/asm-source.exp: list
PASS: gdb.asm/asm-source.exp: search
FAIL: gdb.asm/asm-source.exp: f in foo2
FAIL: gdb.asm/asm-source.exp: n in foo2 (the program exited)
FAIL: gdb.asm/asm-source.exp: bt ALL in foo2
FAIL: gdb.asm/asm-source.exp: bt 2 in foo2
PASS: gdb.asm/asm-source.exp: s 2
PASS: gdb.asm/asm-source.exp: n 2
FAIL: gdb.asm/asm-source.exp: bt 3 in foo3
PASS: gdb.asm/asm-source.exp: info source asmsrc1.s
FAIL: gdb.asm/asm-source.exp: finish from foo3 (the program is no longer running)
FAIL: gdb.asm/asm-source.exp: info source asmsrc2.s
PASS: gdb.asm/asm-source.exp: info sources
FAIL: gdb.asm/asm-source.exp: info line
FAIL: gdb.asm/asm-source.exp: next over foo3 (the program is no longer running)
FAIL: gdb.asm/asm-source.exp: return from foo2
PASS: gdb.asm/asm-source.exp: look at global variable
PASS: gdb.asm/asm-source.exp: x/i &globalvar
PASS: gdb.asm/asm-source.exp: disassem &globalvar, (int *) &globalvar+1
PASS: gdb.asm/asm-source.exp: look at static variable
PASS: gdb.asm/asm-source.exp: x/i &staticvar
PASS: gdb.asm/asm-source.exp: disassem &staticvar, (int *) &staticvar+1
PASS: gdb.asm/asm-source.exp: look at static function
The problem is simple: a pair of parentheses was removed from the
expression calculating text_end and thus text_size was only added if
lowest_text_address wasn't equal to -1.
This patch restores the previous behaviour and fixes the testcase.
Tested on native aarch64-linux.
Reviewed-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/dbxread.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/gdb/dbxread.c b/gdb/dbxread.c index f7c44c1..73371ed 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -1950,9 +1950,9 @@ read_dbx_symtab (minimal_symbol_reader &reader, is. */ unrelocated_addr text_end = (unrelocated_addr - (lowest_text_address == (unrelocated_addr) -1 - ? text_addr - : CORE_ADDR (lowest_text_address) + ((lowest_text_address == (unrelocated_addr) -1 + ? text_addr + : CORE_ADDR (lowest_text_address)) + text_size)); dbx_end_psymtab (objfile, partial_symtabs, |