Skip to content

Commit 77d7f79

Browse files
Refactored, improved test, and addressed reviewers.
1 parent 1a1808d commit 77d7f79

File tree

6 files changed

+14
-8
lines changed

6 files changed

+14
-8
lines changed

bolt/include/bolt/Core/MCPlusBuilder.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2041,7 +2041,10 @@ class MCPlusBuilder {
20412041
return InstructionListType();
20422042
}
20432043

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 {
20452048
llvm_unreachable("not implemented");
20462049
return InstructionListType();
20472050
}

bolt/lib/Passes/Instrumentation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ void Instrumentation::createAuxiliaryFunctions(BinaryContext &BC) {
754754
// with unknown symbol in runtime library. E.g. for static PIE
755755
// executable
756756
createSimpleFunction("__bolt_fini_trampoline",
757-
BC.MIB->createDummyReturnFunction(BC.Ctx.get()));
757+
BC.MIB->createDummyReturn(BC.Ctx.get()));
758758
}
759759
}
760760
}

bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1644,7 +1644,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
16441644
return Instrs;
16451645
}
16461646

1647-
InstructionListType createDummyReturnFunction(MCContext *Ctx) const override {
1647+
InstructionListType createDummyReturn(MCContext *Ctx) const override {
16481648
InstructionListType Insts(1);
16491649
createReturn(Insts[0]);
16501650
return Insts;

bolt/lib/Target/X86/X86MCPlusBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3241,7 +3241,7 @@ class X86MCPlusBuilder : public MCPlusBuilder {
32413241
return Insts;
32423242
}
32433243

3244-
InstructionListType createDummyReturnFunction(MCContext *Ctx) const override {
3244+
InstructionListType createDummyReturn(MCContext *Ctx) const override {
32453245
InstructionListType Insts(1);
32463246
createReturn(Insts[0]);
32473247
return Insts;

bolt/test/AArch64/dummy-return.test

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
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.
24

35
REQUIRES: system-linux
46

57
RUN: %clang %p/../Inputs/main.c -o %t -Wl,-q -static
68
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
810

911
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

bolt/test/Inputs/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// dummy function just for emitting relocations to the linker.
1+
// dummy function just for emitting relocations to the linker.
22
int foo() { return 0; }
33
int main(int argc, char **argv) { return foo() + 1; }

0 commit comments

Comments
 (0)