diff options
| author | Shenghou Ma <minux.ma@gmail.com> | 2013-03-22 04:00:54 +0800 |
|---|---|---|
| committer | Shenghou Ma <minux.ma@gmail.com> | 2013-03-22 04:00:54 +0800 |
| commit | d04ac4b0b74ff7fdb42d9578ddb3f25d15f5b477 (patch) | |
| tree | de2e516c14291c431880098ff5c39b8485c1ef4c /src/cmd/ld | |
| parent | a891b916bd6d284fba0349804da46ad2135e370c (diff) | |
| download | go-d04ac4b0b74ff7fdb42d9578ddb3f25d15f5b477.tar.xz | |
cmd/ld: portability fixes
fix code that implicitly assumes little-endian machines.
R=golang-dev, bradfitz, rsc, alex.brainman
CC=golang-dev
https://golang.org/cl/6792043
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/ldpe.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/cmd/ld/ldpe.c b/src/cmd/ld/ldpe.c index 39c15e6a14..98923bfbf6 100644 --- a/src/cmd/ld/ldpe.c +++ b/src/cmd/ld/ldpe.c @@ -135,7 +135,8 @@ ldpe(Biobuf *f, char *pkg, int64 len, char *pn) { char *name; int32 base; - int i, j, l, numaux; + uint32 l; + int i, j, numaux; PeObj *obj; PeSect *sect, *rsect; IMAGE_SECTION_HEADER sh; @@ -170,11 +171,12 @@ ldpe(Biobuf *f, char *pkg, int64 len, char *pn) // TODO return error if found .cormeta } // load string table - Bseek(f, base+obj->fh.PointerToSymbolTable+18*obj->fh.NumberOfSymbols, 0); - if(Bread(f, &l, sizeof l) != sizeof l) + Bseek(f, base+obj->fh.PointerToSymbolTable+sizeof(symbuf)*obj->fh.NumberOfSymbols, 0); + if(Bread(f, symbuf, 4) != 4) goto bad; + l = le32(symbuf); obj->snames = mal(l); - Bseek(f, base+obj->fh.PointerToSymbolTable+18*obj->fh.NumberOfSymbols, 0); + Bseek(f, base+obj->fh.PointerToSymbolTable+sizeof(symbuf)*obj->fh.NumberOfSymbols, 0); if(Bread(f, obj->snames, l) != l) goto bad; // read symbols |
