https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62105
Bug ID: 62105 Summary: sanitizer libraries in wrong command line position in link spec file Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: driver Assignee: unassigned at gcc dot gnu.org Reporter: jtaylor.debian at googlemail dot com when linking a file with -fsanitize=* the sanatizer library (e.g. -ltsan is placed before the object on the command line: gcc-4.10 test.c -fsanitize=thread -v -fPIC -shared 2>&1 | grep --color tsan [...] -ltsan /tmp/cc6ovqw5.o -lgcc --as-needed -lgcc_s [...] this is problematic on distributions like Ubuntu which add the --as-needed flag to the beginning of the the gcc link spec. This causes the linker to drop the -ltsan because when it has parsed the -ltsan option it determines it as not needed and drops it. The object needing it only comes later. The fix would be to move the library after the object needing it (like -lgcc). In principle this is Ubuntus issue as they add the non standard as-needed flag, but as the other libraries like -lgcc and -lc are placed correctly maybe the -l*san can be moved too? I used a gcc built from recent SVN head on Ubuntu 14.04 amd64. /tmp/jtaylor $ gcc-4.10 --version gcc (GCC) 4.10.0 20140812 (experimental)