Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendwarfopen.c
Go to the documentation of this file.
00001 00002 #include <precomp.h> 00003 #define NDEBUG 00004 #include <debug.h> 00005 00006 /* Adapted for PE */ 00007 00008 Dwarf* 00009 dwarfopen(Pe *pe) 00010 { 00011 Dwarf *d; 00012 00013 if(pe == nil){ 00014 werrstr("nil pe passed to dwarfopen"); 00015 return nil; 00016 } 00017 00018 d = mallocz(sizeof(Dwarf), 1); 00019 if(d == nil) 00020 return nil; 00021 00022 d->pe = pe; 00023 if(pe->loadsection(pe, ".debug_abbrev", &d->abbrev) < 0 00024 || pe->loadsection(pe, ".debug_aranges", &d->aranges) < 0 00025 || pe->loadsection(pe, ".debug_line", &d->line) < 0 00026 || pe->loadsection(pe, ".debug_info", &d->info) < 0 00027 || pe->loadsection(pe, ".debug_loc", &d->loc) < 0) 00028 goto err; 00029 pe->loadsection(pe, ".debug_pubnames", &d->pubnames); 00030 pe->loadsection(pe, ".debug_frame", &d->frame); 00031 pe->loadsection(pe, ".debug_ranges", &d->ranges); 00032 pe->loadsection(pe, ".debug_str", &d->str); 00033 00034 return d; 00035 00036 err: 00037 DPRINT("Failed to open dwarf\n"); 00038 free(d->abbrev.data); 00039 free(d->aranges.data); 00040 free(d->frame.data); 00041 free(d->line.data); 00042 free(d->pubnames.data); 00043 free(d->ranges.data); 00044 free(d->str.data); 00045 free(d->info.data); 00046 free(d->loc.data); 00047 free(d); 00048 return nil; 00049 } 00050 00051 void 00052 dwarfclose(Dwarf *d) 00053 { 00054 free(d->abbrev.data); 00055 free(d->aranges.data); 00056 free(d->frame.data); 00057 free(d->line.data); 00058 free(d->pubnames.data); 00059 free(d->ranges.data); 00060 free(d->str.data); 00061 free(d->info.data); 00062 pefree(d->pe); 00063 free(d); 00064 } 00065 Generated on Sun May 27 2012 04:36:17 for ReactOS by
1.7.6.1
|