-
-
Notifications
You must be signed in to change notification settings - Fork 270
Open
Labels
Description
When creating an executable with debug information (-g
), we need to run dsymutil
afterwards to create the correct debuginformation on macOS.
Not running dsymutil
resulted in a strange bug, which could have been very confusing for larger source files.
It happened while working on the LSan testcase.
- The source did not contain
//CHECK:
lines yet. Compiled with-g
and ran test. LSan detects memory leak, and reports it is on line 14. - I added
//CHECK:
lines, effectively changing the line of malloc (i.e. the line on which the leaked memory was allocated). - Reran the testcase. LSan still reported the old line!
- Running dsymutil on the executable --> now LSan reports the correct line of malloc.
AFAICT, other compilers all run dsymutil
after linking for -g
invocations of the compiler (e.g. clang, nim, rustc).
Note it is nice to include an option to turn default running dsymutil off (see: rust-lang/rust#79361).
Reference: https://stackoverflow.com/a/32299029