1 #include "lib9.h"
2 #include <a.out.h>
3 #include <dynld.h>
4
5 typedef struct Fd Fd;
6 struct Fd {
7 int fd;
8 };
9
10 static long
readfd(void * a,void * buf,long nbytes)11 readfd(void *a, void *buf, long nbytes)
12 {
13 return read(((Fd*)a)->fd, buf, nbytes);
14 }
15
16 static vlong
seekfd(void * a,vlong off,int t)17 seekfd(void *a, vlong off, int t)
18 {
19 return seek(((Fd*)a)->fd, off, t);
20 }
21
22 static void
errfd(char * s)23 errfd(char *s)
24 {
25 werrstr("%s", s);
26 }
27
28 Dynobj*
dynloadfd(int fd,Dynsym * sym,int nsym,ulong maxsize)29 dynloadfd(int fd, Dynsym *sym, int nsym, ulong maxsize)
30 {
31 Fd f;
32
33 f.fd = fd;
34 return dynloadgen(&f, readfd, seekfd, errfd, sym, nsym, maxsize);
35 }
36