aboutsummaryrefslogtreecommitdiffhomepage
path: root/obj.c
blob: 78aab146c44024c654e81ebbde63d63d458795ae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "obj.h"
#include "common.h"

struct objfile objout;

void
objini(const char *file)
{
   enum { NTEXT = 4<<20 /* 4MiB */ };
   assert(!objout.file);
   objout.file = file;
   objout.code = objout.textbegin = mapzeros(NTEXT);
   objout.textend = objout.textbegin + NTEXT;
}

void
objfini(void)
{
   void *popen(char *, char *), pclose(void *);
   long fwrite(void *, size_t, size_t, void *);
   void *cmd = popen("ndisasm -b64 -", "w");
   ioflush(&bstderr); ioflush(&bstdout);
   fwrite(objout.textbegin, 1, objout.code - objout.textbegin, cmd);
   pclose(cmd);
}

/* vim:set ts=3 sw=3 expandtab: */