Annotate generated machine code / binary with LLVM basic block information

Hi everyone,
What I want to do is to generate an X86 binary that is annorated with LLVM basic block information, which can be helpful for further trace-based analysis. After I go through the documents, the only way I can think of is writing a MachineFunctionPass and adding dummy instructions to the beginning and end of each basic block that indicates its ID. Since this requires a recompilation of entire LLVM, which is far from ideal, so I follow the suggestion on the documentation and come and ask here first. I am really new to LLVM, so any suggestions would be very appreciated!

Yizhou

More specifically, I want to use two undefined instructions X86::UD2B and X86::TRAP (declared in lib/Target/X86/X86InstrSystem.td) for annotation. Since X86::UD2B can accept extra operands, we can put the basic block ID there.

Yizhou Wei <787012293john@gmail.com> 于2019年3月1日周五 上午9:33写道: