summaryrefslogtreecommitdiff
path: root/src/cmd/6l/l.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/6l/l.h')
-rw-r--r--src/cmd/6l/l.h35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/cmd/6l/l.h b/src/cmd/6l/l.h
index 5f62239a1..ffb8a4552 100644
--- a/src/cmd/6l/l.h
+++ b/src/cmd/6l/l.h
@@ -40,7 +40,26 @@
enum
{
thechar = '6',
- PtrSize = 8
+ PtrSize = 8,
+ IntSize = 8,
+
+ // Loop alignment constants:
+ // want to align loop entry to LoopAlign-byte boundary,
+ // and willing to insert at most MaxLoopPad bytes of NOP to do so.
+ // We define a loop entry as the target of a backward jump.
+ //
+ // gcc uses MaxLoopPad = 10 for its 'generic x86-64' config,
+ // and it aligns all jump targets, not just backward jump targets.
+ //
+ // As of 6/1/2012, the effect of setting MaxLoopPad = 10 here
+ // is very slight but negative, so the alignment is disabled by
+ // setting MaxLoopPad = 0. The code is here for reference and
+ // for future experiments.
+ //
+ LoopAlign = 16,
+ MaxLoopPad = 0,
+
+ FuncAlign = 16
};
#define P ((Prog*)0)
@@ -134,11 +153,16 @@ struct Sym
int32 plt;
int32 got;
int32 align; // if non-zero, required alignment in bytes
+ int32 elfsym;
+ int32 locals; // size of stack frame locals area
+ int32 args; // size of stack frame incoming arguments area
Sym* hash; // in hash table
Sym* allsym; // in all symbol list
Sym* next; // in text or data list
Sym* sub; // in SSUB list
Sym* outer; // container of sub
+ Sym* reachparent;
+ Sym* queue;
vlong value;
vlong size;
Sym* gotype;
@@ -146,6 +170,7 @@ struct Sym
char* dynimpname;
char* dynimplib;
char* dynimpvers;
+ struct Section* sect;
// STEXT
Auto* autom;
@@ -158,6 +183,7 @@ struct Sym
Reloc* r;
int32 nr;
int32 maxr;
+ int rel_ro;
};
struct Optab
{
@@ -294,9 +320,10 @@ enum
EXTERN int32 HEADR;
EXTERN int32 HEADTYPE;
EXTERN int32 INITRND;
-EXTERN vlong INITTEXT;
-EXTERN vlong INITDAT;
+EXTERN int64 INITTEXT;
+EXTERN int64 INITDAT;
EXTERN char* INITENTRY; /* entry point */
+EXTERN char* LIBINITENTRY; /* shared library entry point */
EXTERN char* pcstr;
EXTERN Auto* curauto;
EXTERN Auto* curhist;
@@ -304,7 +331,7 @@ EXTERN Prog* curp;
EXTERN Sym* cursym;
EXTERN Sym* datap;
EXTERN vlong elfdatsize;
-EXTERN char debug[128];
+EXTERN int debug[128];
EXTERN char literal[32];
EXTERN Sym* textp;
EXTERN Sym* etextp;