blob: dceb8bac42dc5703a8ac70791c7c2f4b22019cda (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
device: 0.101
graphic: 0.092
instruction: 0.054
semantic: 0.030
other: 0.028
vnc: 0.013
socket: 0.013
boot: 0.010
network: 0.007
assembly: 0.006
mistranslation: 0.005
KVM: 0.001
qemu-x86_64: gdb doesn't read symbols from dynamically linked shared libraries.
Description of problem:
GDB fails to load dynamically linked shared libraries when connecting to qemu-x86_64, causing it to not recognize symbols from the shared libraries. As a result, breakpoints in shared library functions (e.g, `break printf`) do not work.
Steps to reproduce:
1. Start the debug server: `./qemu-x86_64 -g PORT ./x86_64-binary`
2. Connect GDB to the debug server:
```
$ gdb-multiarch ./x86_64-binary
(gdb) set verbose on
(gdb) target remote :PORT
```
3. GDB displays a warning and fails to load shared libraries:
```
(gdb) target remote :PORT
Remote debugging using :PORT
warning: platform-specific solib_create_inferior_hook did not load initial shared libraries.
(gdb) info sharedlibrary
No shared libraries loaded at this time.
```
Additional information:
This issue does not occur when using gdbserver on a native x86_64 machine and connecting to it from gdb-multiarch on an ARM64 machine, indicating the issue is likely related to QEMU rather than GDB.
GDB correctly recognizes symbols from the target binary (e.g., the `main` function), and breakpoints at these symbols function as expected.
|