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