diff options
author | Tianon Gravi <admwiggin@gmail.com> | 2015-01-15 11:54:00 -0700 |
---|---|---|
committer | Tianon Gravi <admwiggin@gmail.com> | 2015-01-15 11:54:00 -0700 |
commit | f154da9e12608589e8d5f0508f908a0c3e88a1bb (patch) | |
tree | f8255d51e10c6f1e0ed69702200b966c9556a431 /include | |
parent | 8d8329ed5dfb9622c82a9fbec6fd99a580f9c9f6 (diff) | |
download | golang-upstream/1.4.tar.gz |
Imported Upstream version 1.4upstream/1.4
Diffstat (limited to 'include')
-rw-r--r-- | include/bio.h | 8 | ||||
-rw-r--r-- | include/link.h | 35 |
2 files changed, 33 insertions, 10 deletions
diff --git a/include/bio.h b/include/bio.h index f61409b8a..982b881f1 100644 --- a/include/bio.h +++ b/include/bio.h @@ -129,6 +129,14 @@ int Bungetc(Biobuf*); int Bungetrune(Biobuf*); long Bwrite(Biobuf*, void*, long); int Bvprint(Biobuf*, char*, va_list); +/*c2go +int BGETC(Biobuf*); +int BGETLE2(Biobuf*); +int BGETLE4(Biobuf*); +int BPUTC(Biobuf*, int); +int BPUTLE2(Biobuf*, int); +int BPUTLE4(Biobuf*, int); +*/ #if defined(__cplusplus) } diff --git a/include/link.h b/include/link.h index 248497888..05e117c87 100644 --- a/include/link.h +++ b/include/link.h @@ -105,13 +105,15 @@ struct Prog int32 spadj; uchar mark; uchar back; // 6l, 8l - char ft; /* 6l, 8l oclass cache */ - char tt; // 6l, 8l - uchar optab; // 5l + uchar ft; /* 6l, 8l oclass cache */ + uchar tt; // 6l, 8l + uint16 optab; // 5l uchar isize; // 6l, 8l char width; /* fake for DATA */ char mode; /* 16, 32, or 64 in 6l, 8l; internal use in 5g, 6g, 8g */ + + /*c2go uchar TEXTFLAG; */ }; // prevent incompatible type signatures between liblink and 8l on Plan 9 @@ -124,6 +126,7 @@ struct LSym short type; short version; uchar dupok; + uchar cfunc; uchar external; uchar nosplit; uchar reachable; @@ -167,7 +170,7 @@ struct LSym // SDATA, SBSS uchar* p; - int32 np; + int np; int32 maxp; Reloc* r; int32 nr; @@ -201,10 +204,10 @@ enum SELFSECT, SMACHO, /* Mach-O __nl_symbol_ptr */ SMACHOGOT, + SWINDOWS, SNOPTRDATA, SINITARR, SDATA, - SWINDOWS, SBSS, SNOPTRBSS, STLSBSS, @@ -370,6 +373,7 @@ struct Link char* trimpath; char* goroot; char* goroot_final; + int32 enforce_data_order; // for use by assembler // hash table of all symbols LSym* hash[LINKHASH]; @@ -389,9 +393,9 @@ struct Link LSym* sym_divu; LSym* sym_mod; LSym* sym_modu; - LSym* symmorestack[20]; - LSym* gmsym; - LSym* plan9tos; + LSym* symmorestack[2]; + LSym* tlsg; + LSym* plan9privates; Prog* curp; Prog* printp; Prog* blitrl; @@ -403,7 +407,7 @@ struct Link int asmode; uchar* andptr; uchar and[100]; - int32 instoffset; + int64 instoffset; int32 autosize; int32 armsize; @@ -429,11 +433,17 @@ struct Link LSym* filesyms; }; +enum { + LittleEndian = 0x04030201, + BigEndian = 0x01020304, +}; + // LinkArch is the definition of a single architecture. struct LinkArch { char* name; // "arm", "amd64", and so on int thechar; // '5', '6', and so on + int32 endian; // LittleEndian or BigEndian void (*addstacksplit)(Link*, LSym*); void (*assemble)(Link*, LSym*); @@ -462,6 +472,7 @@ struct LinkArch int D_PARAM; int D_SCONST; int D_STATIC; + int D_OREG; int ACALL; int ADATA; @@ -532,6 +543,7 @@ vlong adduint8(Link *ctxt, LSym *s, uint8 v); vlong adduintxx(Link *ctxt, LSym *s, uint64 v, int wid); void mangle(char *file); void savedata(Link *ctxt, LSym *s, Prog *p, char *pn); +void savedata1(Link *ctxt, LSym *s, Prog *p, char *pn, int enforce_order); vlong setaddr(Link *ctxt, LSym *s, vlong off, LSym *t); vlong setaddrplus(Link *ctxt, LSym *s, vlong off, LSym *t, vlong add); vlong setuint16(Link *ctxt, LSym *s, vlong r, uint16 v); @@ -558,7 +570,7 @@ int find1(int32 l, int c); void linkgetline(Link *ctxt, int32 line, LSym **f, int32 *l); void histtoauto(Link *ctxt); void mkfwd(LSym*); -void nuxiinit(void); +void nuxiinit(LinkArch*); void savehist(Link *ctxt, int32 line, int32 off); Prog* copyp(Link*, Prog*); Prog* appendp(Link*, Prog*); @@ -600,6 +612,8 @@ extern char* anames5[]; extern char* anames6[]; extern char* anames8[]; +extern char* cnames5[]; + extern LinkArch link386; extern LinkArch linkamd64; extern LinkArch linkamd64p32; @@ -610,6 +624,7 @@ extern LinkArch linkarm; #pragma varargck type "lD" Addr* #pragma varargck type "P" Prog* #pragma varargck type "R" int +#pragma varargck type "^" int // TODO(ality): remove this workaround. // It's here because Pconv in liblink/list?.c references %L. |