From: Fabian Cenedese <Cenedese@indel.ch>
To: gdb@sourceware.org
Subject: Symbols in same range
Date: Wed, 13 Dec 2006 08:46:00 -0000 [thread overview]
Message-ID: <5.2.0.9.1.20061213092734.01881ec0@NT_SERVER> (raw)
Hi
Is it correct to have several symbols in the same symtab range? Like:
maintenance_print_psymbols:
...
Partial symtab for source file N:/Indel-PPC/Tests/gccext3/OS/Inos/Src/Inos_mod.cpp (object 0x95bbb0)
Symbols cover text addresses 0x728e0-0xa89e0
Partial symtab for source file N:/Indel-PPC/Tests/gccext3/OS/Inos/Src/Inos_1ms.cpp (object 0x95b148)
Symbols cover text addresses 0x1918-0xa74dc
Partial symtab for source file N:/Indel-PPC/Tests/gccext3/OS/Inos/Src/Inos.cpp (object 0x9cc548)
Symbols cover text addresses 0x1918-0xa7168
Partial symtab for source file N:/Indel-PPC/Tests/gccext3/OS/Inos/Src/Inos_lib.cpp (object 0x95bb00)
Symbols cover text addresses 0x71afc-0xa799c
...
I think that this is one problem I have for not getting the right line info
for a PC. I tried to comment an example here:
map file:
.startup 0x00098a58 0xf7c N:/Indel-PPC/Tests/gccext3/lib41/libinos.603(Inos.603)
0x00099890 _INI_0200_INOS()
0x00099960 inos_main
Find line to pc=0x99928 with find_pc_line:
find_pc_line, pc=0x99928
find_pc_sect_line, pc=0x99928
lookup_minimal_symbol_by_pc, pc=0x99928
-> msymbol="_INI_0200_INOS"
find_pc_sect_symtab, pc=0x99928
lookup_minimal_symbol_by_pc_section, pc=0x99928
-> msymbol="_INI_0200_INOS"
s='Inos_mod.cpp'
find_pc_sect_psymtab, pc=0x99928
lookup_minimal_symbol_by_pc_section
-> msymbol="_INI_0200_INOS"
tpst='Inos_mod.cpp'
find_pc_sect_psymbol
-> p="CEnd"
-> ps='Inos_mod.cpp'
-> s='Inos_mod.cpp'
best_symtab=NULL
-> .line=0
The found msymbol is always correct, but when gdb continues to find
the corresponding block it takes the symtab from a wrong file. But the
addresses in there don't match (only the range) and the returned
result is .line=0.
The problem may come because of various code sections. We have
code not only in .text but also in different sections like .startup or
.cache (for better memory handling on the target). Various source
files place code in the different sections which of course get placed
together. So it is somehow correct that a source file symtab has
a very big range if you only look at the lowest and highest used
address. But not the whole range is covered and of course the
ranges will almost all overlap.
Is this an error in the finding strategy of gdb, like, it should look
in all symtabs and not only in the first whose range matches?
Or is there a possibility to find the block from the msymbol
which is found correctly? Something else I can do to improve
my results?
Thanks
bye Fabi
next reply other threads:[~2006-12-13 8:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-13 8:46 Fabian Cenedese [this message]
2006-12-13 18:13 ` Daniel Jacobowitz
2006-12-14 9:51 ` Fabian Cenedese
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5.2.0.9.1.20061213092734.01881ec0@NT_SERVER \
--to=cenedese@indel.ch \
--cc=gdb@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox