[llvm-dev] Where does the LLVM implement the Ubsan's instrumentations?

Shi, Steven via llvm-dev llvm-dev at lists.llvm.org
Sat Jul 22 06:06:49 PDT 2017

> You might try compiling with '-fsanitize=undefined -fno-sanitize-

> Ubsan doesn't provide an option of using callbacks to implement its

> instrumentation. If the no-recovery mode won't work for you, it's pretty

> simply to write a custom ubsan runtime that fits in a single object file. That's

> what I ended up doing to sanitize our kernel (xnu), so I can offer help if you

> decide to go down that path.


Thank you. I'm OK to write customized runtime libs for Ubsan. In fact, I did in this way when I enable the Asan in my firmware. My problem is how to correctly implement the UBsan C++ runtime lib with pure C functions in my firmware. You know, the UBsan define the runtime interface in C++, which is different from the Asan extern "C" ones. Many UBsan RT lib input parameters type are mixed with C++ Class. I'm not sure how to correctly parse the C++ class with C structure. E.g. Many UBsan RT functions use the Class SourceLocation to pass the source location info. How should I parse or map the class SourceLocation layout to a C structure?


class SourceLocation {

  const char *Filename;

  u32 Line;

  u32 Column;


  SourceLocation() : Filename(), Line(), Column() {}

  SourceLocation(const char *Filename, unsigned Line, unsigned Column)

    : Filename(Filename), Lin

.... ....


I'd like to take a look at your XNU Ubsan runtime lib code, and if you have open-sourced them, please show me their links. Thank you!


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170722/eecec17c/attachment.html>

More information about the llvm-dev mailing list