]> granicus.if.org Git - clang/commit
Include translation unit filename in global ctor symbol names.
authorNico Weber <nicolasweber@gmx.de>
Tue, 6 May 2014 20:32:45 +0000 (20:32 +0000)
committerNico Weber <nicolasweber@gmx.de>
Tue, 6 May 2014 20:32:45 +0000 (20:32 +0000)
commitafafe70f43dbb614f336ccbede1c4bbb132ec658
tree11a888fe4d8f7324062c221ba2feaea20584049a
parent0cb2626cb56ec10c82dc76b241b1cd035951847c
Include translation unit filename in global ctor symbol names.

This makes it easier to see where a global ctor comes from, and it also makes
ASan's init order analyzer output easier to understand.  gcc does this too,
but only in -fPIC mode for some reason.  Don't do this for constructors with
explicit init priority.

Also prepend "sub_" before the 'I', that way regular constructors stay
lexicographically after symbols with init priority (because
ord('s') > ord('I')).  gold seems to ignore the name of constructor symbols,
and ld only looks at the symbol if it includes an init priority, which this
patch doesn't change.

Before: __GLOBAL_I_a
Now: __GLOBAL_sub_I_myfile.cc

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208128 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGDeclCXX.cpp
test/CodeGenCXX/deferred-global-init.cpp
test/CodeGenCXX/global-init.cpp
test/CodeGenCXX/globalinit-loc.cpp
test/CodeGenCXX/init-priority-attr.cpp
test/CodeGenCXX/microsoft-abi-static-initializers.cpp
test/CodeGenCXX/runtimecc.cpp
test/CodeGenCXX/static-member-variable-explicit-specialization.cpp
test/CodeGenObjCXX/arc-globals.mm