http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59410
--- Comment #19 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to H.J. Lu from comment #18) > (In reply to Kostya Serebryany from comment #16) > > > Kernel is free to load PIE at ANY address it wants. But > > > you can specify where to load PIE via a linker switch > > > > > > -Ttext-segment 0x855555000000 > > > > > > to tell kernel to load PIE to a specific address. > > > > Hm. Interesting. What do I do wrong? > > % clang++ simple_race.cc -fsanitize=thread -Wl,-Ttext-segment=0x7d0000000000 > > ; (setarch x86_64 -R ./a.out ) > > FATAL: ThreadSanitizer can not mmap the shadow memory (something is mapped > > at 0x555555554000 < 0x7cf000000000) > > FATAL: Make sure to compile with -fPIE and to link with -pie. > > Please show the output of > > # readelf -lW a.out Your address must be sensible. Otherwise kernel will ignore it. Please try "-Ttext-segment 0x855555000000".