aboutsummaryrefslogtreecommitdiffhomepage
path: root/obj/obj.h
diff options
context:
space:
mode:
Diffstat (limited to 'obj/obj.h')
-rw-r--r--obj/obj.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/obj/obj.h b/obj/obj.h
new file mode 100644
index 0000000..235ab4d
--- /dev/null
+++ b/obj/obj.h
@@ -0,0 +1,30 @@
+#include "../common.h"
+
+extern struct objfile {
+ const char *infile, *outfile;
+ uchar *textbegin, *textend;
+ uchar *code;
+ uchar dataalign, rodataalign, bssalign;
+ uint nbss;
+ vec_of(uchar) data, rodata;
+} objout;
+
+enum relockind {
+ REL_ABS64,
+ REL_ABS32,
+ REL_ABS32S,
+ REL_PCREL32,
+ REL_PLT32,
+ REL_GOTPCRELX,
+ REL_GOTPCRELX_REX,
+ NRELOCKIND,
+};
+enum section { Snone, Stext, Srodata, Sdata, Sbss };
+
+void objini(const char *infile, const char *outfile);
+void objdeffunc(const char *nam, bool globl, uint off, uint siz);
+uint objnewdat(const char *name, enum section, bool globl, uint siz, uint align);
+void objreloc(const char *sym, enum relockind, enum section, uint off, vlong addend);
+void objfini(void);
+
+/* vim:set ts=3 sw=3 expandtab: */