From d8150d92150b08ade63d7cd8b666cb26551110ff Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Wed, 25 Mar 2009 16:16:00 +0000 Subject: x20090325-1615 --- include/dynld.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 include/dynld.h (limited to 'include/dynld.h') diff --git a/include/dynld.h b/include/dynld.h new file mode 100644 index 00000000..de02cb02 --- /dev/null +++ b/include/dynld.h @@ -0,0 +1,44 @@ +/* uncomment these lines when installed in /sys/include */ +/* +#pragma src "/sys/src/libdynld" +#pragma lib "libdynld.a" +*/ + +typedef struct Dynobj Dynobj; +typedef struct Dynsym Dynsym; + +struct Dynobj +{ + ulong size; /* total size in bytes */ + ulong text; /* bytes of text */ + ulong data; /* bytes of data */ + ulong bss; /* bytes of bss */ + uchar* base; /* start of text, data, bss */ + int nexport; + Dynsym* export; /* export table */ + int nimport; + Dynsym** import; /* import table */ +}; + +/* + * this structure is known to the linkers + */ +struct Dynsym +{ + ulong sig; + ulong addr; + char *name; +}; + +extern Dynsym* dynfindsym(char*, Dynsym*, int); +extern void dynfreeimport(Dynobj*); +extern void* dynimport(Dynobj*, char*, ulong); +extern int dynloadable(void*, long (*r)(void*,void*,long), vlong(*sk)(void*,vlong,int)); +extern Dynobj* dynloadfd(int, Dynsym*, int, ulong); +extern Dynobj* dynloadgen(void*, long (*r)(void*,void*,long), vlong (*s)(void*,vlong,int), void (*e)(char*), Dynsym*, int, ulong); +extern long dynmagic(void); +extern void dynobjfree(Dynobj*); +extern char* dynreloc(uchar*, ulong, int, Dynsym**, int); +extern int dyntabsize(Dynsym*); + +extern Dynsym _exporttab[]; /* created by linker -x (when desired) */ -- cgit v1.2.3