From: Alex Brainman Date: Sat, 20 Apr 2013 07:42:14 +0000 (+1000) Subject: cmd/ld: do not relocate ignored PE sections X-Git-Tag: go1.1rc2~71 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=782a57811fc008d6f30fcab24590337a1253ce7d;p=gostls13.git cmd/ld: do not relocate ignored PE sections This should have been part of CL8715043. Update #5106 R=golang-dev, r, iant CC=golang-dev https://golang.org/cl/8676050 --- diff --git a/src/cmd/ld/ldpe.c b/src/cmd/ld/ldpe.c index c1195a857d..7a5bc0c608 100644 --- a/src/cmd/ld/ldpe.c +++ b/src/cmd/ld/ldpe.c @@ -257,6 +257,11 @@ ldpe(Biobuf *f, char *pkg, int64 len, char *pn) continue; if(rsect->sh.Characteristics&IMAGE_SCN_MEM_DISCARDABLE) continue; + if((sect->sh.Characteristics&(IMAGE_SCN_CNT_CODE|IMAGE_SCN_CNT_INITIALIZED_DATA|IMAGE_SCN_CNT_UNINITIALIZED_DATA)) == 0) { + // This has been seen for .idata sections, which we + // want to ignore. See issues 5106 and 5273. + continue; + } r = mal(rsect->sh.NumberOfRelocations*sizeof r[0]); Bseek(f, obj->base+rsect->sh.PointerToRelocations, 0); for(j=0; jsh.NumberOfRelocations; j++) {