root/trunk/src/objfile.h

Revision 428, 1.6 kB (checked in by walter, 2 years ago)

remove tabs, any trailing spaces

  • Property svn:eol-style set to native
Line 
1 #ifndef OBJFILE_H
2 #define OBJFILE_H
3
4 #include "root.h"
5
6 typedef void *SymHandle;
7 typedef unsigned SegOffset;
8
9 enum ObjFormat
10 {
11         NTCOFF,
12         ELF
13 };
14
15 struct ObjFile : File
16 {
17     ObjFile(FileName *);
18     ~ObjFile();
19
20     ObjFile *init(ObjFormat);
21
22     void comment(const char *);         // insert comment into object file
23     void modulename(const char *);      // set module name
24     void library(const char *);         // add default library
25     void startaddress(SegHandle seg, SegOffset offset);         // set start address
26
27     // Segments
28     enum SegHandle
29     {   code = 1,
30         data, bss
31     };
32
33     SymHandle defineSym(const char *name, SegHandle seg, SegOffset offset);
34     SymHandle externSym(const char *name);
35
36     SegOffset write(SegHandle seg, const void *data, unsigned nbytes);
37     SegOffset writestring(SegHandle seg, char *string);
38     SegOffset write8(SegHandle seg, unsigned b);
39     SegOffset write16(SegHandle seg, unsigned w);
40     SegOffset write32(SegHandle seg, unsigned long v);
41     SegOffset write64(SegHandle seg, unsigned long long v);
42     SegOffset fill0(SegHandle seg, unsigned nbytes);
43     SegOffset align(SegHandle seg, unsigned size);
44     SegOffset writefixup(SegHandle seg, SymHandle sym, unsigned value, int selfrelative);
45
46     // Non-binding hint as to how big seg will grow
47     void reserve(SegHandle seg, SegOffset size);
48
49     // Set actual size
50     void setSize(SegHandle seg, SegOffset size);
51
52     // Get/set offset for subsequent writes
53     void setOffset(SegHandle seg, SegOffset offset);
54     SegOffset getOffset(SegHandle seg);
55
56     SegHandle createSeg(const char *name);
57 };
58
59 #endif
Note: See TracBrowser for help on using the browser.