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

Shi, Steven via llvm-dev
Sat, 22 Jul 2017 13:06:49 -0000

> 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.



Vedant,

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?





llvm\projects\compiler-rt\lib\ubsan\ubsan_value.h

class SourceLocation {

  const char *Filename;

  u32 Line;

  u32 Column;



public:

  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!



Thanks

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