ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dwarfopen.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.