Thread overview
Profiling with LDC
Apr 25, 2018
H. S. Teoh
Apr 25, 2018
Johan Engelen
Apr 26, 2018
Dmitry Olshansky
April 25, 2018
I'm trying to figure out how to do a traditional instrumented profile with LDC.  All docs that I've managed to find so far say to use -fprofile-instr-generate, but when I try that, I get a ton of linker errors complaining of undefined reference to the symbol:

	__llvm_profile_instrument_target

What gives?  I'm guessing I need to specify some additional LLVM libraries for this?

I'm using the official Debian ldc package, btw.  Is there possibly a missing dependency on some llvm libraries?


T

-- 
If the comments and the code disagree, it's likely that *both* are wrong. -- Christopher
April 25, 2018
On Wednesday, 25 April 2018 at 17:31:06 UTC, H. S. Teoh wrote:
> I'm trying to figure out how to do a traditional instrumented profile with LDC.  All docs that I've managed to find so far say to use -fprofile-instr-generate, but when I try that, I get a ton of linker errors complaining of undefined reference to the symbol:
>
> 	__llvm_profile_instrument_target
>
> What gives?  I'm guessing I need to specify some additional LLVM libraries for this?

How are you linking? Do you let LDC link and is `-fprofile-instr-generate` passed during linking aswell?

The profiling runtime must be linked in. On Unixes, the file is "libldc_rt.profile-x86_64.a".

- Johan

April 26, 2018
On Wednesday, 25 April 2018 at 17:31:06 UTC, H. S. Teoh wrote:
> I'm trying to figure out how to do a traditional instrumented profile with LDC.  All docs that I've managed to find so far say to use -fprofile-instr-generate, but when I try that, I get a ton of linker errors complaining of undefined reference to the symbol:
>
> 	__llvm_profile_instrument_target
>
> What gives?  I'm guessing I need to specify some additional LLVM libraries for this?

I’d suggest perf if you are on Linux. It also tracks kernel-land calls if you have permissions.

Just compile with debug symbols and run:

perf record -g ./app ...
perf report

Works for both DMD and LDC. It is sampling, so might not be accurate for short lived stuff.

>
> I'm using the official Debian ldc package, btw.  Is there possibly a missing dependency on some llvm libraries?
>
>
> T