Skip to content

Commit 0e39460

Browse files
committed
Merging r323288:
------------------------------------------------------------------------ r323288 | ruiu | 2018-01-23 16:26:57 -0800 (Tue, 23 Jan 2018) | 3 lines Fix retpoline PLT header size for i386. Differential Revision: https://reviews.llvm.org/D42397 ------------------------------------------------------------------------ llvm-svn: 324026
1 parent ff3a8f1 commit 0e39460

File tree

2 files changed

+27
-47
lines changed

2 files changed

+27
-47
lines changed

lld/ELF/Arch/X86.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ void RetpolinePic::writePlt(uint8_t *Buf, uint64_t GotPltEntryAddr,
438438
}
439439

440440
RetpolineNoPic::RetpolineNoPic() {
441-
PltHeaderSize = 64;
441+
PltHeaderSize = 48;
442442
PltEntrySize = 32;
443443
}
444444

@@ -464,10 +464,6 @@ void RetpolineNoPic::writePltHeader(uint8_t *Buf) const {
464464
0x59, // 2d: pop %ecx
465465
0xc3, // 2e: ret
466466
0xcc, // 2f: int3
467-
0xcc, 0xcc, 0xcc, 0xcc,
468-
0xcc, 0xcc, 0xcc, 0xcc,
469-
0xcc, 0xcc, 0xcc, 0xcc,
470-
0xcc, 0xcc, 0xcc, 0xcc,
471467
};
472468
memcpy(Buf, PltData, sizeof(PltData));
473469
assert(sizeof(PltData) == TargetInfo::PltHeaderSize);

lld/test/ELF/i386-retpoline-nopic.s

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -30,50 +30,34 @@
3030
// CHECK-NEXT: 1103d: 59 popl %ecx
3131
// CHECK-NEXT: 1103e: c3 retl
3232
// CHECK-NEXT: 1103f: cc int3
33-
// CHECK-NEXT: 11040: cc int3
34-
// CHECK-NEXT: 11041: cc int3
35-
// CHECK-NEXT: 11042: cc int3
36-
// CHECK-NEXT: 11043: cc int3
37-
// CHECK-NEXT: 11044: cc int3
38-
// CHECK-NEXT: 11045: cc int3
39-
// CHECK-NEXT: 11046: cc int3
40-
// CHECK-NEXT: 11047: cc int3
41-
// CHECK-NEXT: 11048: cc int3
42-
// CHECK-NEXT: 11049: cc int3
43-
// CHECK-NEXT: 1104a: cc int3
44-
// CHECK-NEXT: 1104b: cc int3
45-
// CHECK-NEXT: 1104c: cc int3
46-
// CHECK-NEXT: 1104d: cc int3
47-
// CHECK-NEXT: 1104e: cc int3
48-
// CHECK-NEXT: 1104f: cc int3
49-
// CHECK-NEXT: 11050: 50 pushl %eax
50-
// CHECK-NEXT: 11051: a1 0c 20 01 00 movl 73740, %eax
51-
// CHECK-NEXT: 11056: e8 d5 ff ff ff calll -43 <.plt+0x20>
52-
// CHECK-NEXT: 1105b: e9 c1 ff ff ff jmp -63 <.plt+0x11>
53-
// CHECK-NEXT: 11060: 68 00 00 00 00 pushl $0
54-
// CHECK-NEXT: 11065: e9 a6 ff ff ff jmp -90 <.plt>
55-
// CHECK-NEXT: 1106a: cc int3
56-
// CHECK-NEXT: 1106b: cc int3
57-
// CHECK-NEXT: 1106c: cc int3
58-
// CHECK-NEXT: 1106d: cc int3
59-
// CHECK-NEXT: 1106e: cc int3
60-
// CHECK-NEXT: 1106f: cc int3
61-
// CHECK-NEXT: 11070: 50 pushl %eax
62-
// CHECK-NEXT: 11071: a1 10 20 01 00 movl 73744, %eax
63-
// CHECK-NEXT: 11076: e8 b5 ff ff ff calll -75 <.plt+0x20>
64-
// CHECK-NEXT: 1107b: e9 a1 ff ff ff jmp -95 <.plt+0x11>
65-
// CHECK-NEXT: 11080: 68 08 00 00 00 pushl $8
66-
// CHECK-NEXT: 11085: e9 86 ff ff ff jmp -122 <.plt>
67-
// CHECK-NEXT: 1108a: cc int3
68-
// CHECK-NEXT: 1108b: cc int3
69-
// CHECK-NEXT: 1108c: cc int3
70-
// CHECK-NEXT: 1108d: cc int3
71-
// CHECK-NEXT: 1108e: cc int3
72-
// CHECK-NEXT: 1108f: cc int3
33+
// CHECK-NEXT: 11040: 50 pushl %eax
34+
// CHECK-NEXT: 11041: a1 0c 20 01 00 movl 73740, %eax
35+
// CHECK-NEXT: 11046: e8 e5 ff ff ff calll -27 <.plt+0x20>
36+
// CHECK-NEXT: 1104b: e9 d1 ff ff ff jmp -47 <.plt+0x11>
37+
// CHECK-NEXT: 11050: 68 00 00 00 00 pushl $0
38+
// CHECK-NEXT: 11055: e9 b6 ff ff ff jmp -74 <.plt>
39+
// CHECK-NEXT: 1105a: cc int3
40+
// CHECK-NEXT: 1105b: cc int3
41+
// CHECK-NEXT: 1105c: cc int3
42+
// CHECK-NEXT: 1105d: cc int3
43+
// CHECK-NEXT: 1105e: cc int3
44+
// CHECK-NEXT: 1105f: cc int3
45+
// CHECK-NEXT: 11060: 50 pushl %eax
46+
// CHECK-NEXT: 11061: a1 10 20 01 00 movl 73744, %eax
47+
// CHECK-NEXT: 11066: e8 c5 ff ff ff calll -59 <.plt+0x20>
48+
// CHECK-NEXT: 1106b: e9 b1 ff ff ff jmp -79 <.plt+0x11>
49+
// CHECK-NEXT: 11070: 68 08 00 00 00 pushl $8
50+
// CHECK-NEXT: 11075: e9 96 ff ff ff jmp -106 <.plt>
51+
// CHECK-NEXT: 1107a: cc int3
52+
// CHECK-NEXT: 1107b: cc int3
53+
// CHECK-NEXT: 1107c: cc int3
54+
// CHECK-NEXT: 1107d: cc int3
55+
// CHECK-NEXT: 1107e: cc int3
56+
// CHECK-NEXT: 1107f: cc int3
7357

7458
// CHECK: Contents of section .got.plt:
75-
// CHECK-NEXT: 00300100 00000000 00000000 60100100
76-
// CHECK-NEXT: 80100100
59+
// CHECK-NEXT: 00300100 00000000 00000000 50100100
60+
// CHECK-NEXT: 70100100
7761

7862
.global _start
7963
_start:

0 commit comments

Comments
 (0)