File tree Expand file tree Collapse file tree 6 files changed +14
-8
lines changed Expand file tree Collapse file tree 6 files changed +14
-8
lines changed Original file line number Diff line number Diff line change @@ -2041,7 +2041,10 @@ class MCPlusBuilder {
2041
2041
return InstructionListType ();
2042
2042
}
2043
2043
2044
- virtual InstructionListType createDummyReturnFunction (MCContext *Ctx) const {
2044
+ // / Returns a function body that contains only a return instruction. An
2045
+ // / example usage is a workaround for the '__bolt_fini_trampoline' of
2046
+ // Instrumentation.
2047
+ virtual InstructionListType createDummyReturn (MCContext *Ctx) const {
2045
2048
llvm_unreachable (" not implemented" );
2046
2049
return InstructionListType ();
2047
2050
}
Original file line number Diff line number Diff line change @@ -754,7 +754,7 @@ void Instrumentation::createAuxiliaryFunctions(BinaryContext &BC) {
754
754
// with unknown symbol in runtime library. E.g. for static PIE
755
755
// executable
756
756
createSimpleFunction (" __bolt_fini_trampoline" ,
757
- BC.MIB ->createDummyReturnFunction (BC.Ctx .get ()));
757
+ BC.MIB ->createDummyReturn (BC.Ctx .get ()));
758
758
}
759
759
}
760
760
}
Original file line number Diff line number Diff line change @@ -1644,7 +1644,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
1644
1644
return Instrs;
1645
1645
}
1646
1646
1647
- InstructionListType createDummyReturnFunction (MCContext *Ctx) const override {
1647
+ InstructionListType createDummyReturn (MCContext *Ctx) const override {
1648
1648
InstructionListType Insts (1 );
1649
1649
createReturn (Insts[0 ]);
1650
1650
return Insts;
Original file line number Diff line number Diff line change @@ -3241,7 +3241,7 @@ class X86MCPlusBuilder : public MCPlusBuilder {
3241
3241
return Insts;
3242
3242
}
3243
3243
3244
- InstructionListType createDummyReturnFunction (MCContext *Ctx) const override {
3244
+ InstructionListType createDummyReturn (MCContext *Ctx) const override {
3245
3245
InstructionListType Insts (1 );
3246
3246
createReturn (Insts[0 ]);
3247
3247
return Insts;
Original file line number Diff line number Diff line change 1
- // Tests that AArch64 is able to instrument static binaries in relocation mode.
1
+ // Tests that AArch64 is able to instrument static binaries in relocation mode,
2
+ // by checking that '__bolt_fini_trampoline' is generated and contains a 'ret'
3
+ // instruction.
2
4
3
5
REQUIRES: system-linux
4
6
5
7
RUN: %clang %p/../Inputs/main.c -o %t -Wl,-q -static
6
8
RUN: llvm-bolt -instrument -instrumentation-sleep-time=1 %t -o %t.instr 2>&1 | FileCheck %s
7
- RUN: llvm-nm -n %t.instr | FileCheck %s -check-prefix=CHECK-SYM
9
+ RUN: llvm-objdump --disassemble-symbols=__bolt_fini_trampoline %t.instr -D | FileCheck %s -check-prefix=CHECK-ASM
8
10
9
11
CHECK: BOLT-INFO: output linked against instrumentation runtime library
10
- CHECK-SYM: __bolt_fini_trampoline
12
+ CHECK-ASM: <__bolt_fini_trampoline>:
13
+ CHECK-ASM-NEXT: ret
Original file line number Diff line number Diff line change 1
- // dummy function just for emitting relocations to the linker.
1
+ // dummy function just for emitting relocations to the linker.
2
2
int foo () { return 0 ; }
3
3
int main (int argc , char * * argv ) { return foo () + 1 ; }
You can’t perform that action at this time.
0 commit comments