ref: c75d39d84fcaf779903f1e76c1ffebccac2de3cc
dir: /src/libmach/objsize.c/
#include <limits.h> #include <stdio.h> #include <scc/mach.h> #include "libmach.h" int objsize(Obj *obj, unsigned long long *text, unsigned long long *data, unsigned long long *bss) { Section *sp, *secs = obj->sections; unsigned long long *p; *text = 0; *data = 0; *bss = 0; for (sp =secs; sp < &secs[obj->nsecs]; sp++) { switch (sp->type) { case 'T': p = text; break; case 'D': p = data; break; case 'B': p = bss; break; default: continue; } if (*p > ULLONG_MAX - sp->size) return -1; *p += sp->size; } return 0; }