mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
a2a176c46b
The DWARF spec says: Any debugging information entry representing the declaration of an object, module, subprogram or type may have DW_AT_decl_file, DW_AT_decl_line and DW_AT_decl_column attributes, each of whose value is an unsigned integer ^^^^^^^^ constant. Grepping around the DWARF-assembler-based testcases, I noticed that gdb.trace/unavailable-dwarf-piece.exp emits decl_line with DW_FORM_sdata, a signed integer form. This commit tweaks it to use DW_FORM_udata instead. Unsurprisingly, this: $ make check \ TESTS="gdb.trace/unavailable-dwarf-piece.exp" \ RUNTESTFLAGS="--target_board=native-gdbserver" ... still passes cleanly for me after this change. I've noticed this because current llvm-dwarfdump crashed on an ROCm-internal DWARF-assembler-based testcase that incorrectly used signed forms for DW_AT_decl_file/DW_AT_decl_line. The older llvm-dwarfdump found on Ubuntu 20.04 (LLVM 10) reads the line numbers with signed forms as "0" instead of crashing. Here's the before/after fix for gdb.trace/unavailable-dwarf-piece.exp with that llvm-dwarfdump version: $ diff -up before.txt after.txt --- before.txt 2022-07-07 13:21:28.387690334 +0100 +++ after.txt 2022-07-07 13:21:39.379801092 +0100 @@ -18,7 +18,7 @@ DW_AT_name ("s") DW_AT_byte_size (3) DW_AT_decl_file (0) - DW_AT_decl_line (0) + DW_AT_decl_line (1) 0x0000002f: DW_TAG_member DW_AT_name ("a") @@ -41,7 +41,7 @@ DW_AT_name ("t") DW_AT_byte_size (3) DW_AT_decl_file (0) - DW_AT_decl_line (0) + DW_AT_decl_line (1) 0x00000054: DW_TAG_member DW_AT_name ("a") Change-Id: I5c866946356da421ff944019d0eca2607b2b738f |
||
---|---|---|
.. | ||
actions-changed.c | ||
actions-changed.exp | ||
actions.c | ||
actions.exp | ||
ax.exp | ||
backtrace.exp | ||
change-loc-1.c | ||
change-loc-2.c | ||
change-loc.c | ||
change-loc.exp | ||
change-loc.h | ||
circ.c | ||
circ.exp | ||
collection.c | ||
collection.exp | ||
deltrace.exp | ||
disconnected-tracing.c | ||
disconnected-tracing.exp | ||
entry-values.c | ||
entry-values.exp | ||
ftrace-lock.c | ||
ftrace-lock.exp | ||
ftrace.c | ||
ftrace.exp | ||
infotrace.exp | ||
mi-trace-frame-collected.exp | ||
mi-trace-save.exp | ||
mi-trace-unavailable.exp | ||
mi-traceframe-changed.exp | ||
mi-tracepoint-changed.exp | ||
mi-tsv-changed.exp | ||
no-attach-trace.c | ||
no-attach-trace.exp | ||
packetlen.exp | ||
passc-dyn.exp | ||
passcount.exp | ||
pending.c | ||
pending.exp | ||
pendshr1.c | ||
pendshr2.c | ||
pr16508.exp | ||
qtro.c | ||
qtro.exp | ||
range-stepping.c | ||
range-stepping.exp | ||
read-memory.c | ||
read-memory.exp | ||
report.exp | ||
save-trace.exp | ||
signal.c | ||
signal.exp | ||
stap-trace.c | ||
stap-trace.exp | ||
status-stop.c | ||
status-stop.exp | ||
strace.c | ||
strace.exp | ||
tfile.c | ||
tfile.exp | ||
tfind.exp | ||
trace-break.c | ||
trace-break.exp | ||
trace-buffer-size.c | ||
trace-buffer-size.exp | ||
trace-common.h | ||
trace-condition.c | ||
trace-condition.exp | ||
trace-enable-disable.c | ||
trace-enable-disable.exp | ||
trace-mt.c | ||
trace-mt.exp | ||
trace-unavailable.c | ||
tracecmd.exp | ||
tracefile-pseudo-reg.c | ||
tracefile-pseudo-reg.exp | ||
tspeed.c | ||
tspeed.exp | ||
tstatus.exp | ||
tsv.exp | ||
unavailable-dwarf-piece.c | ||
unavailable-dwarf-piece.exp | ||
unavailable.cc | ||
unavailable.exp | ||
while-dyn.exp | ||
while-stepping.exp |