pass5.c - scc - simple c99 compiler
(HTM) git clone git://git.simple-cc.org/scc
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
pass5.c (824B)
---
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include <scc/mach.h>
5
6 #include "ld.h"
7
8 extern int bintype;
9 extern Symbol defhead;
10
11 /*
12 char *name;
13 int type;
14 int sect;
15 unsigned long long size;
16 unsigned long long value;
17 */
18
19 void
20 pass5(int argc, char *argv[])
21 {
22 Obj *obj;
23 Symbol *sym;
24 Segment **segp;
25 Objsym *osym;
26 FILE *fp;
27 static Segment *segv[] = {
28 &text,
29 &data,
30 &bss,
31 /* TODO: debug, */
32 NULL,
33 };
34
35 obj = objnew(bintype);
36
37 for (segp = segv; *segp; segp++)
38 /* objaddseg(obj, *segp) */ ;
39
40 for (sym = defhead.next; sym != &defhead; sym = sym->next) {
41 osym = objlookup(obj, sym->name, 1);
42 osym->size = sym->size;
43 osym->value = sym->value;
44 }
45
46 /* TODO: write relocations */
47 /* TODO: write line information */
48
49 fp = fopen(output, "wb");
50 (obj->ops->write)(obj, fp);
51 }