[-cxx-abi microsoft] Mangle UUIDs correctly, stick them in the proper section
We mangled them like: L___uuid_12345678-1234-1234-1234-123456789abc We should've mangled them like: __GUID_12345678_1234_1234_1234_123456789abc Furthermore, they are external symbols. llvm-svn: 188053
This commit is contained in:
@@ -1059,7 +1059,8 @@ llvm::Constant *CodeGenModule::GetAddrOfUuidDescriptor(
|
||||
else
|
||||
Uuid = "00000000-0000-0000-0000-000000000000";
|
||||
}
|
||||
std::string Name = "__uuid_" + Uuid.str();
|
||||
std::string Name = "_GUID_" + Uuid.lower();
|
||||
std::replace(Name.begin(), Name.end(), '-', '_');
|
||||
|
||||
// Look for an existing global.
|
||||
if (llvm::GlobalVariable *GV = getModule().getNamedGlobal(Name))
|
||||
@@ -1082,7 +1083,7 @@ llvm::Constant *CodeGenModule::GetAddrOfUuidDescriptor(
|
||||
}
|
||||
|
||||
llvm::GlobalVariable *GV = new llvm::GlobalVariable(getModule(), GuidType,
|
||||
/*isConstant=*/true, llvm::GlobalValue::PrivateLinkage, Init, Name);
|
||||
/*isConstant=*/true, llvm::GlobalValue::ExternalLinkage, Init, Name);
|
||||
GV->setUnnamedAddr(true);
|
||||
return GV;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user