public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/31669] New: wrong "info symbol" output, symbol shadowing, __dso_handle
@ 2024-04-22 12:31 k4lizen at proton dot me
  2024-04-22 12:34 ` [Bug gdb/31669] " k4lizen at proton dot me
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: k4lizen at proton dot me @ 2024-04-22 12:31 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=31669

            Bug ID: 31669
           Summary: wrong "info symbol" output, symbol shadowing,
                    __dso_handle
           Product: gdb
           Version: 13.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gdb
          Assignee: unassigned at sourceware dot org
          Reporter: k4lizen at proton dot me
  Target Milestone: ---

Created attachment 15478
  --> https://sourceware.org/bugzilla/attachment.cgi?id=15478&action=edit
The file I encountered this issue with

gdb version: GNU gdb (Debian 13.2-1) 13.2
OS: Linux kali 6.6.9-amd64

In the attachment is the ELF I encountered the issue with. I initially
submitted an issue downstream: https://github.com/pwndbg/pwndbg/issues/2116.
Due to the way "info symbol" is used in pwndbg, it would be nice if this bug
was patched.

The issue:
Doing `info symbol 0x402367` gives `__dso_handle + 863 [...]` although the
value stored at 0x402367 has nothing to do with __dso_handle. The values at
0x402367 and 0x402a27 are the strings "r" and "./flag.txt" which are passed to
fopen near the start of the main function.

Notable:
+ The __dso_handle symbol seems to be registered even before libc is loaded,
but after libc is loaded doing "p __dso_handle" prints the symbol in libc. Is
the symbol supposed to be there before libc is loaded? It exists before libc in
multiple elfs I tried.

+ Is there a way to make "print" print the value of __dso_handle in
terminal.bin after libc is loaded?

+ I'm not sure if the bug is in "info symbol" and how it checks when a symbol
"ends" or with the handling of __dso_handle in particular.

===============
hacker@kali ~/m/gdbbugsymbols> gdb terminal.bin
GNU gdb (Debian 13.2-1) 13.2
[..copyright snip..]
Reading symbols from terminal.bin...
(No debugging symbols found in terminal.bin)
(gdb) x &__dso_handle
0x402008:       0x00000000
(gdb) break main
Breakpoint 1 at 0x401d9e
(gdb) run
Starting program: /home/hacker/mine/gdbbugsymbols/terminal.bin
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, 0x0000000000401d9e in main ()
(gdb) x &__dso_handle
0x7ffff7f9a780 <__dso_handle>:  0xf7f9a780
(gdb) info symbol 0x402367
__dso_handle + 863 in section .rodata of
/home/hacker/mine/gdbbugsymbols/terminal.bin
(gdb) info symbol 0x402008
__dso_handle in section .rodata of /home/hacker/mine/gdbbugsymbols/terminal.bin
(gdb) info symbol 0x7ffff7f9a780
__dso_handle in section .data.rel.ro of /lib/x86_64-linux-gnu/libc.so.6
(gdb)
===============

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-04-26 14:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-22 12:31 [Bug gdb/31669] New: wrong "info symbol" output, symbol shadowing, __dso_handle k4lizen at proton dot me
2024-04-22 12:34 ` [Bug gdb/31669] " k4lizen at proton dot me
2024-04-24 22:02 ` dominik.b.czarnota+bugzilla at gmail dot com
2024-04-24 22:09 ` dominik.b.czarnota+bugzilla at gmail dot com
2024-04-24 22:27 ` schwab@linux-m68k.org
2024-04-24 23:36 ` dominik.b.czarnota+bugzilla at gmail dot com
2024-04-25 16:54 ` k4lizen at proton dot me
2024-04-26 14:39 ` sam at gentoo dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).