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