Mercurial > projects > ldc
comparison dmd2/objfile.h @ 1452:638d16625da2
LDC 2 compiles again.
author | Robert Clipsham <robert@octarineparrot.com> |
---|---|
date | Sat, 30 May 2009 17:23:32 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1423:42bd767ec5a4 | 1452:638d16625da2 |
---|---|
1 | |
2 | |
3 #ifndef OBJFILE_H | |
4 #define OBJFILE_H | |
5 | |
6 #include "root.h" | |
7 | |
8 typedef void *SymHandle; | |
9 typedef unsigned SegOffset; | |
10 | |
11 enum ObjFormat | |
12 { | |
13 NTCOFF, | |
14 ELF | |
15 }; | |
16 | |
17 struct ObjFile : File | |
18 { | |
19 ObjFile(FileName *); | |
20 ~ObjFile(); | |
21 | |
22 ObjFile *init(ObjFormat); | |
23 | |
24 void comment(const char *); // insert comment into object file | |
25 void modulename(const char *); // set module name | |
26 void library(const char *); // add default library | |
27 void startaddress(SegHandle seg, SegOffset offset); // set start address | |
28 | |
29 // Segments | |
30 enum SegHandle | |
31 { code = 1, | |
32 data, bss | |
33 }; | |
34 | |
35 SymHandle defineSym(const char *name, SegHandle seg, SegOffset offset); | |
36 SymHandle externSym(const char *name); | |
37 | |
38 SegOffset write(SegHandle seg, const void *data, unsigned nbytes); | |
39 SegOffset writestring(SegHandle seg, char *string); | |
40 SegOffset write8(SegHandle seg, unsigned b); | |
41 SegOffset write16(SegHandle seg, unsigned w); | |
42 SegOffset write32(SegHandle seg, unsigned long v); | |
43 SegOffset write64(SegHandle seg, unsigned long long v); | |
44 SegOffset fill0(SegHandle seg, unsigned nbytes); | |
45 SegOffset align(SegHandle seg, unsigned size); | |
46 SegOffset writefixup(SegHandle seg, SymHandle sym, unsigned value, int selfrelative); | |
47 | |
48 // Non-binding hint as to how big seg will grow | |
49 void reserve(SegHandle seg, SegOffset size); | |
50 | |
51 // Set actual size | |
52 void setSize(SegHandle seg, SegOffset size); | |
53 | |
54 // Get/set offset for subsequent writes | |
55 void setOffset(SegHandle seg, SegOffset offset); | |
56 SegOffset getOffset(SegHandle seg); | |
57 | |
58 SegHandle createSeg(const char *name); | |
59 }; | |
60 | |
61 #endif |