ref: 9332f34cf7bae72b9ccaa290cae5a1eec3f34f3d
dir: /src/cmd/ld/pass5.c/
#include <stdio.h>
#include <stdlib.h>
#include <scc/mach.h>
#include "ld.h"
extern int bintype;
extern Symbol defhead;
/*
char *name;
int type;
int sect;
unsigned long long size;
unsigned long long value;
*/
void
pass5(int argc, char *argv[])
{
Obj *obj;
Symbol *sym;
Segment **segp;
Objsym *osym;
FILE *fp;
static Segment *segv[] = {
&text,
&data,
&bss,
/* TODO: debug, */
NULL,
};
obj = objnew(bintype);
for (segp = segv; *segp; segp++)
objaddseg(obj, *segp);
for (sym = defhead.next; sym != &defhead; sym = sym->next) {
osym = objlookup(obj, sym->name, 1);
osym->size = sym->size;
osym->value = sym->value;
}
/* TODO: write relocations */
/* TODO: write line information */
fp = fopen(output, "wb");
objsync(obj);
objwrite(obj, fp);
}