Vedant Kumar via llvm-dev
2016-Jan-28 23:02 UTC
[llvm-dev] Proposal: Add a version symbol to instrumented binaries
Hi all, I'd like to change the version symbol used in binaries instrumented for profiling. This would let us catch `RawInstrProf::Version` mismatches between object files and compiler-rt at link-time. Currently, we will happily link programs against incompatible compiler-rt's and end up with useless profiles. Why is this a problem? Suppose A.o comes from clang and B.o comes from swift: if clang and swift are compiled against different versions of llvm, we can end up with the situation above. To implement this, I suggest having the compiler frontend emit a weak `__llvm_raw_prof_ver_%d` symbol where `%d = RawInstrProf::Version`. To update compiler-rt, we'd have to rename `__llvm_profile_raw_version` to `__llvm_profile_raw_version_%d`. Thoughts? In particular, I'd like to know whether rust, julia, and others would be OK with this. best, vedant