scc

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

pass4.c (724B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 
      4 #include <scc/mach.h>
      5 
      6 #include "ld.h"
      7 
      8 void
      9 pass4(int argc, char *argv[])
     10 {
     11 	Objlst *lp;
     12 	Objsec *sp;
     13 	Section *sec;
     14 	unsigned long i;
     15 	FILE *fp;
     16 
     17 	for (lp = objhead; lp; lp = lp->next) {
     18 		/* TODO: fp = lp->obj->fp; */
     19 		for (sp = lp->obj->secs; sp; sp = sp->next) {
     20 			/* TODO:
     21 			 * if (!objpos(lp->obj, lp->obj->fp, sp->seek))
     22 			 *	error("seeking for section content");
     23 			 */
     24 			sec = section(sp->name);
     25 			if (!sec->fp) {
     26 				sec->fp = tmpfile();
     27 				if (!sec->fp) {
     28 					error("out of memory");
     29 					exit(EXIT_FAILURE);
     30 				}
     31 			}
     32 
     33 			/* TODO: add symbol alignment */
     34 
     35 			for (i = 0; i < sp->size; i++)
     36 				putc(getc(fp), sec->fp);
     37 
     38 			/* TODO: Apply relocations */
     39 		}
     40 	}
     41 }