[llvm-dev] creating an .init section
Lin, Jin via llvm-dev
llvm-dev at lists.llvm.org
Fri Oct 14 11:58:48 PDT 2016
Thank a lot Martin. I will give a try.
Have a good weekend,
Jin
From: Martin J. O'Riordan [mailto:martin.oriordan at movidius.com]
Sent: Friday, October 14, 2016 11:52 AM
To: Lin, Jin <jin.lin at intel.com>
Cc: 'LLVM Developers' <llvm-dev at lists.llvm.org>
Subject: RE: [llvm-dev] creating an .init section
I don't use '.init', but I do use '.ctors' and '.dtors' for our target. This is implemented in '<Target>TargetObjectFile.cpp', in my case as follows:
MCSection *SHAVETargetObjectFile::getStaticCtorSection(unsigned Priority,
const MCSymbol * /* KeySym */) const {
std::string ctorsSectionName;
if (Priority == 65535u)
ctorsSectionName = ".ctors";
else
ctorsSectionName = std::string(".ctors.") + utostr(65535u - Priority);
return getSHAVESection(ctorsSectionName, DATA);
}
and in 'SelectSectionForGlobal' in the same file, I have:
if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(GV1)) {
const StringRef gvName = GV->getName();
bool isLLVMSpecial = StringSwitch<bool>(gvName)
.Case("llvm.used", true)
.Case("llvm.metadata", true)
.Case("llvm.global_ctors", true)
.Case("llvm.global_dtors", true)
.Default(false);
if (isLLVMSpecial) {
if (gvName == "llvm.global_ctors")
return getStaticCtorSection();
Then use '__attribute__((constructor))' on the function definition you want to run in the initialisation phase.
MartinO
From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of Lin, Jin via llvm-dev
Sent: 14 October 2016 19:10
To: llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>
Subject: [llvm-dev] creating an .init section
Hi,
I would like to create an .init section in the LLVM backend. Can anyone shed me the light on how to do it? Do I have to create it in the clang?
Thanks,
Jin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161014/efb7df7f/attachment.html>
More information about the llvm-dev
mailing list