[BOLT][Instrumentation] Add support for MacOS counters
This commit adds support for generation of getter counters for AArch64 MacOS. Continuation of work D151899 Reviewed By: rafauleir, yota9 Differential Revision: https://reviews.llvm.org/D151901
This commit is contained in:
parent
6e4c230525
commit
70405a0bf7
@ -1352,6 +1352,34 @@ public:
|
||||
return createInstrumentedIndCallHandlerExitBB();
|
||||
}
|
||||
|
||||
InstructionListType createGetter(MCContext *Ctx, const char *name) const {
|
||||
InstructionListType Insts(4);
|
||||
MCSymbol *Locs = Ctx->getOrCreateSymbol(name);
|
||||
InstructionListType Addr = materializeAddress(Locs, Ctx, AArch64::X0);
|
||||
std::copy(Addr.begin(), Addr.end(), Insts.begin());
|
||||
assert(Addr.size() == 2 && "Invalid Addr size");
|
||||
loadReg(Insts[2], AArch64::X0, AArch64::X0);
|
||||
createReturn(Insts[3]);
|
||||
return Insts;
|
||||
}
|
||||
|
||||
InstructionListType createNumCountersGetter(MCContext *Ctx) const override {
|
||||
return createGetter(Ctx, "__bolt_num_counters");
|
||||
}
|
||||
|
||||
InstructionListType
|
||||
createInstrLocationsGetter(MCContext *Ctx) const override {
|
||||
return createGetter(Ctx, "__bolt_instr_locations");
|
||||
}
|
||||
|
||||
InstructionListType createInstrTablesGetter(MCContext *Ctx) const override {
|
||||
return createGetter(Ctx, "__bolt_instr_tables");
|
||||
}
|
||||
|
||||
InstructionListType createInstrNumFuncsGetter(MCContext *Ctx) const override {
|
||||
return createGetter(Ctx, "__bolt_instr_num_funcs");
|
||||
}
|
||||
|
||||
void convertIndirectCallToLoad(MCInst &Inst, MCPhysReg Reg) override {
|
||||
bool IsTailCall = isTailCall(Inst);
|
||||
if (IsTailCall)
|
||||
|
Loading…
x
Reference in New Issue
Block a user