diff --git a/test/elf/gdb-index-dwarf5.sh b/test/elf/gdb-index-dwarf5.sh index 3e05cd9d..6b1e64b5 100755 --- a/test/elf/gdb-index-dwarf5.sh +++ b/test/elf/gdb-index-dwarf5.sh @@ -21,11 +21,14 @@ which gdb >& /dev/null || { echo skipped; exit; } echo 'int main() {}' | $CC -o /dev/null -xc -gdwarf-5 -g - >& /dev/null || { echo skipped; exit; } -cat < $t/a.c +cat < -void hello() { +void trap() {} + +static void hello() { printf("Hello world\n"); + trap(); } void greet() { @@ -33,10 +36,10 @@ void greet() { } EOF -$CC -o $t/b.o -c -ggnu-pubnames -gdwarf-5 -g $t/a.c -$CC -o $t/c.o -c -ggnu-pubnames -gdwarf-5 -g $t/a.c -gz +$CC -B. -shared -o $t/b.so $t/a.o -Wl,--gdb-index +readelf -WS $t/b.so 2> /dev/null | fgrep -q .gdb_index -cat <& /dev/null +$CC -B. -o $t/exe $t/b.so $t/c.o -Wl,--gdb-index +readelf -WS $t/exe 2> /dev/null | fgrep -q .gdb_index -$CC -B. -o $t/exe2 $t/c.o $t/d.o -Wl,--gdb-index -$QEMU $t/exe2 | grep -q 'Hello world' -readelf -WS $t/exe2 | fgrep -q .gdb_index -DEBUGINFOD_URLS= gdb $t/exe2 -ex 'b main' -ex run -ex cont -ex quit >& /dev/null +$QEMU $t/exe | grep -q 'Hello world' + +DEBUGINFOD_URLS= gdb $t/exe -batch -ex 'b main' -ex r -ex 'b trap' \ + -ex c -ex bt -ex quit >& $t/log + +grep -Pq 'hello \(\) at .*:7' $t/log +grep -Pq 'greet \(\) at .*:11' $t/log +grep -Pq 'main \(\) at .*:4' $t/log echo OK