scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

coff32loadmap.c (552B)


      1 #include <stdio.h>
      2 
      3 #include <scc/mach.h>
      4 #include <scc/coff32.h>
      5 
      6 #include "../libmach.h"
      7 #include "fun.h"
      8 
      9 Map *
     10 coff32loadmap(Obj *obj, FILE *fp)
     11 {
     12 	int i, nsec;
     13 	Section sec;
     14 	Map *map;
     15 	FILE *src;
     16 	SCNHDR *scn;
     17 	struct coff32 *coff = obj->data;
     18 	FILHDR *hdr = &coff->hdr;
     19 
     20 	nsec = hdr->f_nscns;
     21 	if ((map = newmap(nsec, 0)) == NULL)
     22 		return NULL;
     23 
     24 	for (i = 0; getsec(obj, &i, &sec); ++i) {
     25 		sec.offset += obj->pos;
     26 		src = ((sec.flags & SALLOC) != 0) ? fp : NULL;
     27 
     28 		if (mapsec(map, &sec, src, sec.size) < 0)
     29 			return NULL;
     30 	}
     31 
     32 	return map;
     33 }