[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