summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2003-09-28 06:02:33 +0000
committerbde <bde@FreeBSD.org>2003-09-28 06:02:33 +0000
commitf245587e6d5928d2ccd12c3ef36695723a9a7df1 (patch)
tree4b2f26318e1316f5e499cdd4f15de958e52240f9
parenteae77f1521b3144d5191821283b440e297c74321 (diff)
downloadFreeBSD-src-f245587e6d5928d2ccd12c3ef36695723a9a7df1.zip
FreeBSD-src-f245587e6d5928d2ccd12c3ef36695723a9a7df1.tar.gz
Reworked rev.1.14. Use the ELF symbol type again to summarily reject
some symbols in X_db_search_symbol(). Reject the same symbols that rev.1.13 did (all except STT_OBJECT and STT_FUNC), except don't reject typeless symbols. This keeps the typeless symbols in non-verbosely written assembler code visible, but makes file symbols invisible. ELF file symbols have type STT_FILE and value 0, so this stops small values and offsets sometimes being displayed in terms of the first file symbol in the kernel (usually device_if.c). I think it rejects some other unwanted symbols (small absolute symbols for things like struct offsets). It may reject some wanted symbols (large absolute symbols for addresses like PTmap).
-rw-r--r--sys/ddb/db_elf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/ddb/db_elf.c b/sys/ddb/db_elf.c
index 3493115..4ebdc8e 100644
--- a/sys/ddb/db_elf.c
+++ b/sys/ddb/db_elf.c
@@ -266,6 +266,11 @@ X_db_search_symbol(symtab, off, strategy, diffp)
for (symp = symtab_start; symp < symtab_end; symp++) {
if (symp->st_name == 0)
continue;
+ if (ELF_ST_TYPE(symp->st_info) != STT_OBJECT &&
+ ELF_ST_TYPE(symp->st_info) != STT_FUNC &&
+ ELF_ST_TYPE(symp->st_info) != STT_NOTYPE)
+ continue;
+
if (off >= symp->st_value) {
if ((off - symp->st_value) < diff) {
diff = off - symp->st_value;
OpenPOWER on IntegriCloud