aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-04-20 05:43:05 +0000
committerrsc <devnull@localhost>2004-04-20 05:43:05 +0000
commitebd395452e7f81ece3d3877a04fbe26a324f6a3d (patch)
tree796eb1516c754703a47c8eebe3befeff5274faaf
parenta16e9f2de75587a89515697be0256847ab2a3907 (diff)
downloadplan9port-ebd395452e7f81ece3d3877a04fbe26a324f6a3d.tar.gz
plan9port-ebd395452e7f81ece3d3877a04fbe26a324f6a3d.tar.bz2
plan9port-ebd395452e7f81ece3d3877a04fbe26a324f6a3d.zip
cut dwarf a little slack.
-rw-r--r--src/libmach/dwarfcfa.c4
-rw-r--r--src/libmach/dwarfopen.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/src/libmach/dwarfcfa.c b/src/libmach/dwarfcfa.c
index de342cd7..d09edcb3 100644
--- a/src/libmach/dwarfcfa.c
+++ b/src/libmach/dwarfcfa.c
@@ -110,6 +110,10 @@ findfde(Dwarf *d, ulong pc, State *s, DwarfBuf *fde)
ulong len, id, base, size;
DwarfBuf b;
+ if(d->frame.data == nil){
+ werrstr("no frame debugging information");
+ return -1;
+ }
b.d = d;
b.p = d->frame.data;
b.ep = b.p + d->frame.len;
diff --git a/src/libmach/dwarfopen.c b/src/libmach/dwarfopen.c
index 6122ae68..728944f4 100644
--- a/src/libmach/dwarfopen.c
+++ b/src/libmach/dwarfopen.c
@@ -58,13 +58,13 @@ dwarfopen(Elf *elf)
d->elf = elf;
if(loadsection(elf, ".debug_abbrev", &d->abbrev) < 0
|| loadsection(elf, ".debug_aranges", &d->aranges) < 0
- || loadsection(elf, ".debug_frame", &d->frame) < 0
|| loadsection(elf, ".debug_line", &d->line) < 0
|| loadsection(elf, ".debug_pubnames", &d->pubnames) < 0
- || loadsection(elf, ".debug_ranges", &d->ranges) < 0
- || loadsection(elf, ".debug_str", &d->str) < 0
|| loadsection(elf, ".debug_info", &d->info) < 0)
goto err;
+ loadsection(elf, ".debug_frame", &d->frame);
+ loadsection(elf, ".debug_ranges", &d->ranges);
+ loadsection(elf, ".debug_str", &d->str);
/* make this a table once there are more */
switch(d->elf->hdr.machine){