ref: c75d39d84fcaf779903f1e76c1ffebccac2de3cc
dir: /src/libmach/objstrip.c/
#include <stdio.h>
#include <scc/mach.h>
#include "libmach.h"
extern stripfun_t stripv[];
/* TODO: It is better to move this to a common place */
static void
delsyms(Obj *obj)
{
Symbol *sym, *next;
for (sym = obj->head; sym; sym = next) {
next = sym->next;
free(sym->name);
free(sym);
}
obj->head = NULL;
memset(obj->htab, 0, sizeof(obj->htab));
}
int
objstrip(Obj *obj)
{
int fmt;
stripfun_t fn;
fmt = FORMAT(obj->type);
if (fmt >= NFORMATS)
return -1;
fn = stripv[fmt];
(*fn)(obj);
delsyms(obj);
return 0;
}