preserve sections of globals
authorAndrew Lenharth <andrewl@lenharth.org>
Thu, 1 Feb 2007 17:12:54 +0000 (17:12 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Thu, 1 Feb 2007 17:12:54 +0000 (17:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33756 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkModules.cpp

index 44d90d24a39915ffe77b4bb3f505766148fc48a8..8b1a06d4c692d5284098bff5fc2e026e9ece8c19 100644 (file)
@@ -478,7 +478,10 @@ static bool LinkGlobals(Module *Dest, Module *Src,
                            SGV->getName(), Dest);
       // Propagate alignment info.
       NewDGV->setAlignment(SGV->getAlignment());
-      
+
+      // Propagate section info.
+      NewDGV->setSection(SGV->getSection());
+
       // If the LLVM runtime renamed the global, but it is an externally visible
       // symbol, DGV must be an existing global with internal linkage.  Rename
       // it.
@@ -503,6 +506,9 @@ static bool LinkGlobals(Module *Dest, Module *Src,
       // Propagate alignment info.
       NewDGV->setAlignment(std::max(DGV->getAlignment(), SGV->getAlignment()));
 
+      // Propagate section info.
+      NewDGV->setSection(SGV->getSection());
+
       // Make sure to remember this mapping...
       ValueMap.insert(std::make_pair(SGV, NewDGV));
 
@@ -512,6 +518,9 @@ static bool LinkGlobals(Module *Dest, Module *Src,
       // Propagate alignment info.
       DGV->setAlignment(std::max(DGV->getAlignment(), SGV->getAlignment()));
 
+      // Propagate section info.
+      DGV->setSection(SGV->getSection());
+
       // Otherwise, perform the mapping as instructed by GetLinkageResult.  If
       // the types don't match, and if we are to link from the source, nuke DGV
       // and create a new one of the appropriate type.