dfsan options at the IR level

Hi,
I am new to LLVM and am trying out the dfsan option to perform dynamic dataflow analysis. My understanding is that we have to insert the APIs within the source code to create, set and get labels to achieve this. I am attempting to do it at the IR level as an IR transformation pass.

My query is if I should first -emit-llvm it into bitcode format with the dfsan option or is it possible to provide the dfsan option after converting to bitcode. When I compare the IR of a simple program with and without the dfsan option, I see for the dfsan enabled bitcode, there are calls to __dfsan_union even when I have no instrumentation in place. I am unclear of when dfsan features are imposed on like at conversion to bitcode or compile time or link time.

Also there is a dfsan option available with opt, will this help in the dataflow analysis at the IR level. Is there any documentation on how this feature works.

Hi,

I am new to LLVM and am trying out the dfsan option to perform dynamic dataflow analysis. My understanding is that we have to insert the APIs within the source code to create, set and get labels to achieve this. I am attempting to do it at the IR level as an IR transformation pass.

My query is if I should first -emit-llvm it into bitcode format with the dfsan option or is it possible to provide the dfsan option after converting to bitcode. When I compare the IR of a simple program with and without the dfsan option, I see for the dfsan enabled bitcode, there are calls to __dfsan_union even when I have no instrumentation in place. I am unclear of when dfsan features are imposed on like at conversion to bitcode or compile time or link time.

Also there is a dfsan option available with opt, will this help in the dataflow analysis at the IR level. Is there any documentation on how this feature works.

Thanks