1 //===- lib/Linker/LinkModules.cpp - Module Linker Implementation ----------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file implements the LLVM module linker.
12 // Specifically, this:
13 // * Merges global variables between the two modules
14 // * Uninit + Uninit = Init, Init + Uninit = Init, Init + Init = Error if !=
15 // * Merges functions between two modules
17 //===----------------------------------------------------------------------===//
19 #include "llvm/Linker.h"
20 #include "llvm/Constants.h"
21 #include "llvm/DerivedTypes.h"
22 #include "llvm/Module.h"
23 #include "llvm/TypeSymbolTable.h"
24 #include "llvm/ValueSymbolTable.h"
25 #include "llvm/Instructions.h"
26 #include "llvm/Assembly/Writer.h"
27 #include "llvm/Support/Streams.h"
28 #include "llvm/System/Path.h"
32 // Error - Simple wrapper function to conditionally assign to E and return true.
33 // This just makes error return conditions a little bit simpler...
34 static inline bool Error(std::string
*E
, const std::string
&Message
) {
39 // ToStr - Simple wrapper function to convert a type to a string.
40 static std::string
ToStr(const Type
*Ty
, const Module
*M
) {
41 std::ostringstream OS
;
42 WriteTypeSymbolic(OS
, Ty
, M
);
47 // Function: ResolveTypes()
50 // Attempt to link the two specified types together.
53 // DestTy - The type to which we wish to resolve.
54 // SrcTy - The original type which we want to resolve.
55 // Name - The name of the type.
58 // DestST - The symbol table in which the new type should be placed.
61 // true - There is an error and the types cannot yet be linked.
64 static bool ResolveTypes(const Type
*DestTy
, const Type
*SrcTy
,
65 TypeSymbolTable
*DestST
, const std::string
&Name
) {
66 if (DestTy
== SrcTy
) return false; // If already equal, noop
68 // Does the type already exist in the module?
69 if (DestTy
&& !isa
<OpaqueType
>(DestTy
)) { // Yup, the type already exists...
70 if (const OpaqueType
*OT
= dyn_cast
<OpaqueType
>(SrcTy
)) {
71 const_cast<OpaqueType
*>(OT
)->refineAbstractTypeTo(DestTy
);
73 return true; // Cannot link types... neither is opaque and not-equal
75 } else { // Type not in dest module. Add it now.
76 if (DestTy
) // Type _is_ in module, just opaque...
77 const_cast<OpaqueType
*>(cast
<OpaqueType
>(DestTy
))
78 ->refineAbstractTypeTo(SrcTy
);
79 else if (!Name
.empty())
80 DestST
->insert(Name
, const_cast<Type
*>(SrcTy
));
85 static const FunctionType
*getFT(const PATypeHolder
&TH
) {
86 return cast
<FunctionType
>(TH
.get());
88 static const StructType
*getST(const PATypeHolder
&TH
) {
89 return cast
<StructType
>(TH
.get());
92 // RecursiveResolveTypes - This is just like ResolveTypes, except that it
93 // recurses down into derived types, merging the used types if the parent types
95 static bool RecursiveResolveTypesI(const PATypeHolder
&DestTy
,
96 const PATypeHolder
&SrcTy
,
97 TypeSymbolTable
*DestST
,
98 const std::string
&Name
,
99 std::vector
<std::pair
<PATypeHolder
, PATypeHolder
> > &Pointers
) {
100 const Type
*SrcTyT
= SrcTy
.get();
101 const Type
*DestTyT
= DestTy
.get();
102 if (DestTyT
== SrcTyT
) return false; // If already equal, noop
104 // If we found our opaque type, resolve it now!
105 if (isa
<OpaqueType
>(DestTyT
) || isa
<OpaqueType
>(SrcTyT
))
106 return ResolveTypes(DestTyT
, SrcTyT
, DestST
, Name
);
108 // Two types cannot be resolved together if they are of different primitive
109 // type. For example, we cannot resolve an int to a float.
110 if (DestTyT
->getTypeID() != SrcTyT
->getTypeID()) return true;
112 // Otherwise, resolve the used type used by this derived type...
113 switch (DestTyT
->getTypeID()) {
114 case Type::IntegerTyID
: {
115 if (cast
<IntegerType
>(DestTyT
)->getBitWidth() !=
116 cast
<IntegerType
>(SrcTyT
)->getBitWidth())
120 case Type::FunctionTyID
: {
121 if (cast
<FunctionType
>(DestTyT
)->isVarArg() !=
122 cast
<FunctionType
>(SrcTyT
)->isVarArg() ||
123 cast
<FunctionType
>(DestTyT
)->getNumContainedTypes() !=
124 cast
<FunctionType
>(SrcTyT
)->getNumContainedTypes())
126 for (unsigned i
= 0, e
= getFT(DestTy
)->getNumContainedTypes(); i
!= e
; ++i
)
127 if (RecursiveResolveTypesI(getFT(DestTy
)->getContainedType(i
),
128 getFT(SrcTy
)->getContainedType(i
), DestST
, "",
133 case Type::StructTyID
: {
134 if (getST(DestTy
)->getNumContainedTypes() !=
135 getST(SrcTy
)->getNumContainedTypes()) return 1;
136 for (unsigned i
= 0, e
= getST(DestTy
)->getNumContainedTypes(); i
!= e
; ++i
)
137 if (RecursiveResolveTypesI(getST(DestTy
)->getContainedType(i
),
138 getST(SrcTy
)->getContainedType(i
), DestST
, "",
143 case Type::ArrayTyID
: {
144 const ArrayType
*DAT
= cast
<ArrayType
>(DestTy
.get());
145 const ArrayType
*SAT
= cast
<ArrayType
>(SrcTy
.get());
146 if (DAT
->getNumElements() != SAT
->getNumElements()) return true;
147 return RecursiveResolveTypesI(DAT
->getElementType(), SAT
->getElementType(),
148 DestST
, "", Pointers
);
150 case Type::PointerTyID
: {
151 // If this is a pointer type, check to see if we have already seen it. If
152 // so, we are in a recursive branch. Cut off the search now. We cannot use
153 // an associative container for this search, because the type pointers (keys
154 // in the container) change whenever types get resolved...
155 for (unsigned i
= 0, e
= Pointers
.size(); i
!= e
; ++i
)
156 if (Pointers
[i
].first
== DestTy
)
157 return Pointers
[i
].second
!= SrcTy
;
159 // Otherwise, add the current pointers to the vector to stop recursion on
161 Pointers
.push_back(std::make_pair(DestTyT
, SrcTyT
));
163 RecursiveResolveTypesI(cast
<PointerType
>(DestTy
.get())->getElementType(),
164 cast
<PointerType
>(SrcTy
.get())->getElementType(),
165 DestST
, "", Pointers
);
169 default: assert(0 && "Unexpected type!"); return true;
173 static bool RecursiveResolveTypes(const PATypeHolder
&DestTy
,
174 const PATypeHolder
&SrcTy
,
175 TypeSymbolTable
*DestST
,
176 const std::string
&Name
){
177 std::vector
<std::pair
<PATypeHolder
, PATypeHolder
> > PointerTypes
;
178 return RecursiveResolveTypesI(DestTy
, SrcTy
, DestST
, Name
, PointerTypes
);
182 // LinkTypes - Go through the symbol table of the Src module and see if any
183 // types are named in the src module that are not named in the Dst module.
184 // Make sure there are no type name conflicts.
185 static bool LinkTypes(Module
*Dest
, const Module
*Src
, std::string
*Err
) {
186 TypeSymbolTable
*DestST
= &Dest
->getTypeSymbolTable();
187 const TypeSymbolTable
*SrcST
= &Src
->getTypeSymbolTable();
189 // Look for a type plane for Type's...
190 TypeSymbolTable::const_iterator TI
= SrcST
->begin();
191 TypeSymbolTable::const_iterator TE
= SrcST
->end();
192 if (TI
== TE
) return false; // No named types, do nothing.
194 // Some types cannot be resolved immediately because they depend on other
195 // types being resolved to each other first. This contains a list of types we
196 // are waiting to recheck.
197 std::vector
<std::string
> DelayedTypesToResolve
;
199 for ( ; TI
!= TE
; ++TI
) {
200 const std::string
&Name
= TI
->first
;
201 const Type
*RHS
= TI
->second
;
203 // Check to see if this type name is already in the dest module...
204 Type
*Entry
= DestST
->lookup(Name
);
206 if (ResolveTypes(Entry
, RHS
, DestST
, Name
)) {
207 // They look different, save the types 'till later to resolve.
208 DelayedTypesToResolve
.push_back(Name
);
212 // Iteratively resolve types while we can...
213 while (!DelayedTypesToResolve
.empty()) {
214 // Loop over all of the types, attempting to resolve them if possible...
215 unsigned OldSize
= DelayedTypesToResolve
.size();
217 // Try direct resolution by name...
218 for (unsigned i
= 0; i
!= DelayedTypesToResolve
.size(); ++i
) {
219 const std::string
&Name
= DelayedTypesToResolve
[i
];
220 Type
*T1
= SrcST
->lookup(Name
);
221 Type
*T2
= DestST
->lookup(Name
);
222 if (!ResolveTypes(T2
, T1
, DestST
, Name
)) {
223 // We are making progress!
224 DelayedTypesToResolve
.erase(DelayedTypesToResolve
.begin()+i
);
229 // Did we not eliminate any types?
230 if (DelayedTypesToResolve
.size() == OldSize
) {
231 // Attempt to resolve subelements of types. This allows us to merge these
232 // two types: { int* } and { opaque* }
233 for (unsigned i
= 0, e
= DelayedTypesToResolve
.size(); i
!= e
; ++i
) {
234 const std::string
&Name
= DelayedTypesToResolve
[i
];
235 PATypeHolder
T1(SrcST
->lookup(Name
));
236 PATypeHolder
T2(DestST
->lookup(Name
));
238 if (!RecursiveResolveTypes(T2
, T1
, DestST
, Name
)) {
239 // We are making progress!
240 DelayedTypesToResolve
.erase(DelayedTypesToResolve
.begin()+i
);
242 // Go back to the main loop, perhaps we can resolve directly by name
248 // If we STILL cannot resolve the types, then there is something wrong.
249 if (DelayedTypesToResolve
.size() == OldSize
) {
250 // Remove the symbol name from the destination.
251 DelayedTypesToResolve
.pop_back();
260 static void PrintMap(const std::map
<const Value
*, Value
*> &M
) {
261 for (std::map
<const Value
*, Value
*>::const_iterator I
= M
.begin(), E
=M
.end();
263 cerr
<< " Fr: " << (void*)I
->first
<< " ";
265 cerr
<< " To: " << (void*)I
->second
<< " ";
272 // RemapOperand - Use ValueMap to convert constants from one module to another.
273 static Value
*RemapOperand(const Value
*In
,
274 std::map
<const Value
*, Value
*> &ValueMap
) {
275 std::map
<const Value
*,Value
*>::const_iterator I
= ValueMap
.find(In
);
276 if (I
!= ValueMap
.end())
279 // Check to see if it's a constant that we are interested in transforming.
281 if (const Constant
*CPV
= dyn_cast
<Constant
>(In
)) {
282 if ((!isa
<DerivedType
>(CPV
->getType()) && !isa
<ConstantExpr
>(CPV
)) ||
283 isa
<ConstantInt
>(CPV
) || isa
<ConstantAggregateZero
>(CPV
))
284 return const_cast<Constant
*>(CPV
); // Simple constants stay identical.
286 if (const ConstantArray
*CPA
= dyn_cast
<ConstantArray
>(CPV
)) {
287 std::vector
<Constant
*> Operands(CPA
->getNumOperands());
288 for (unsigned i
= 0, e
= CPA
->getNumOperands(); i
!= e
; ++i
)
289 Operands
[i
] =cast
<Constant
>(RemapOperand(CPA
->getOperand(i
), ValueMap
));
290 Result
= ConstantArray::get(cast
<ArrayType
>(CPA
->getType()), Operands
);
291 } else if (const ConstantStruct
*CPS
= dyn_cast
<ConstantStruct
>(CPV
)) {
292 std::vector
<Constant
*> Operands(CPS
->getNumOperands());
293 for (unsigned i
= 0, e
= CPS
->getNumOperands(); i
!= e
; ++i
)
294 Operands
[i
] =cast
<Constant
>(RemapOperand(CPS
->getOperand(i
), ValueMap
));
295 Result
= ConstantStruct::get(cast
<StructType
>(CPS
->getType()), Operands
);
296 } else if (isa
<ConstantPointerNull
>(CPV
) || isa
<UndefValue
>(CPV
)) {
297 Result
= const_cast<Constant
*>(CPV
);
298 } else if (const ConstantVector
*CP
= dyn_cast
<ConstantVector
>(CPV
)) {
299 std::vector
<Constant
*> Operands(CP
->getNumOperands());
300 for (unsigned i
= 0, e
= CP
->getNumOperands(); i
!= e
; ++i
)
301 Operands
[i
] = cast
<Constant
>(RemapOperand(CP
->getOperand(i
), ValueMap
));
302 Result
= ConstantVector::get(Operands
);
303 } else if (const ConstantExpr
*CE
= dyn_cast
<ConstantExpr
>(CPV
)) {
304 std::vector
<Constant
*> Ops
;
305 for (unsigned i
= 0, e
= CE
->getNumOperands(); i
!= e
; ++i
)
306 Ops
.push_back(cast
<Constant
>(RemapOperand(CE
->getOperand(i
),ValueMap
)));
307 Result
= CE
->getWithOperands(Ops
);
308 } else if (isa
<GlobalValue
>(CPV
)) {
309 assert(0 && "Unmapped global?");
311 assert(0 && "Unknown type of derived type constant value!");
313 } else if (isa
<InlineAsm
>(In
)) {
314 Result
= const_cast<Value
*>(In
);
317 // Cache the mapping in our local map structure
319 ValueMap
.insert(std::make_pair(In
, Result
));
324 cerr
<< "LinkModules ValueMap: \n";
327 cerr
<< "Couldn't remap value: " << (void*)In
<< " " << *In
<< "\n";
328 assert(0 && "Couldn't remap value!");
332 /// ForceRenaming - The LLVM SymbolTable class autorenames globals that conflict
333 /// in the symbol table. This is good for all clients except for us. Go
334 /// through the trouble to force this back.
335 static void ForceRenaming(GlobalValue
*GV
, const std::string
&Name
) {
336 assert(GV
->getName() != Name
&& "Can't force rename to self");
337 ValueSymbolTable
&ST
= GV
->getParent()->getValueSymbolTable();
339 // If there is a conflict, rename the conflict.
340 if (GlobalValue
*ConflictGV
= cast_or_null
<GlobalValue
>(ST
.lookup(Name
))) {
341 assert(ConflictGV
->hasInternalLinkage() &&
342 "Not conflicting with a static global, should link instead!");
343 GV
->takeName(ConflictGV
);
344 ConflictGV
->setName(Name
); // This will cause ConflictGV to get renamed
345 assert(ConflictGV
->getName() != Name
&& "ForceRenaming didn't work");
347 GV
->setName(Name
); // Force the name back
351 /// CopyGVAttributes - copy additional attributes (those not needed to construct
352 /// a GlobalValue) from the SrcGV to the DestGV.
353 static void CopyGVAttributes(GlobalValue
*DestGV
, const GlobalValue
*SrcGV
) {
354 // Propagate alignment, visibility and section info.
355 DestGV
->setAlignment(std::max(DestGV
->getAlignment(), SrcGV
->getAlignment()));
356 DestGV
->setSection(SrcGV
->getSection());
357 DestGV
->setVisibility(SrcGV
->getVisibility());
358 if (const Function
*SrcF
= dyn_cast
<Function
>(SrcGV
)) {
359 Function
*DestF
= cast
<Function
>(DestGV
);
360 DestF
->setCallingConv(SrcF
->getCallingConv());
361 DestF
->setParamAttrs(SrcF
->getParamAttrs());
362 if (SrcF
->hasCollector())
363 DestF
->setCollector(SrcF
->getCollector());
367 /// GetLinkageResult - This analyzes the two global values and determines what
368 /// the result will look like in the destination module. In particular, it
369 /// computes the resultant linkage type, computes whether the global in the
370 /// source should be copied over to the destination (replacing the existing
371 /// one), and computes whether this linkage is an error or not. It also performs
372 /// visibility checks: we cannot link together two symbols with different
374 static bool GetLinkageResult(GlobalValue
*Dest
, GlobalValue
*Src
,
375 GlobalValue::LinkageTypes
<
, bool &LinkFromSrc
,
377 assert((!Dest
|| !Src
->hasInternalLinkage()) &&
378 "If Src has internal linkage, Dest shouldn't be set!");
380 // Linking something to nothing.
382 LT
= Src
->getLinkage();
383 } else if (Src
->isDeclaration()) {
384 // If Src is external or if both Src & Drc are external.. Just link the
385 // external globals, we aren't adding anything.
386 if (Src
->hasDLLImportLinkage()) {
387 // If one of GVs has DLLImport linkage, result should be dllimport'ed.
388 if (Dest
->isDeclaration()) {
390 LT
= Src
->getLinkage();
392 } else if (Dest
->hasExternalWeakLinkage()) {
393 //If the Dest is weak, use the source linkage
395 LT
= Src
->getLinkage();
398 LT
= Dest
->getLinkage();
400 } else if (Dest
->isDeclaration() && !Dest
->hasDLLImportLinkage()) {
401 // If Dest is external but Src is not:
403 LT
= Src
->getLinkage();
404 } else if (Src
->hasAppendingLinkage() || Dest
->hasAppendingLinkage()) {
405 if (Src
->getLinkage() != Dest
->getLinkage())
406 return Error(Err
, "Linking globals named '" + Src
->getName() +
407 "': can only link appending global with another appending global!");
408 LinkFromSrc
= true; // Special cased.
409 LT
= Src
->getLinkage();
410 } else if (Src
->hasWeakLinkage() || Src
->hasLinkOnceLinkage()) {
411 // At this point we know that Dest has LinkOnce, External*, Weak, or
413 if ((Dest
->hasLinkOnceLinkage() && Src
->hasWeakLinkage()) ||
414 Dest
->hasExternalWeakLinkage()) {
416 LT
= Src
->getLinkage();
419 LT
= Dest
->getLinkage();
421 } else if (Dest
->hasWeakLinkage() || Dest
->hasLinkOnceLinkage()) {
422 // At this point we know that Src has External* or DLL* linkage.
423 if (Src
->hasExternalWeakLinkage()) {
425 LT
= Dest
->getLinkage();
428 LT
= GlobalValue::ExternalLinkage
;
431 assert((Dest
->hasExternalLinkage() ||
432 Dest
->hasDLLImportLinkage() ||
433 Dest
->hasDLLExportLinkage() ||
434 Dest
->hasExternalWeakLinkage()) &&
435 (Src
->hasExternalLinkage() ||
436 Src
->hasDLLImportLinkage() ||
437 Src
->hasDLLExportLinkage() ||
438 Src
->hasExternalWeakLinkage()) &&
439 "Unexpected linkage type!");
440 return Error(Err
, "Linking globals named '" + Src
->getName() +
441 "': symbol multiply defined!");
445 if (Dest
&& Src
->getVisibility() != Dest
->getVisibility())
446 if (!Src
->isDeclaration() && !Dest
->isDeclaration())
447 return Error(Err
, "Linking globals named '" + Src
->getName() +
448 "': symbols have different visibilities!");
452 // LinkGlobals - Loop through the global variables in the src module and merge
453 // them into the dest module.
454 static bool LinkGlobals(Module
*Dest
, Module
*Src
,
455 std::map
<const Value
*, Value
*> &ValueMap
,
456 std::multimap
<std::string
, GlobalVariable
*> &AppendingVars
,
458 // Loop over all of the globals in the src module, mapping them over as we go
459 for (Module::global_iterator I
= Src
->global_begin(), E
= Src
->global_end();
461 GlobalVariable
*SGV
= I
;
462 GlobalVariable
*DGV
= 0;
463 // Check to see if may have to link the global.
464 if (SGV
->hasName() && !SGV
->hasInternalLinkage()) {
465 DGV
= Dest
->getGlobalVariable(SGV
->getName());
466 if (DGV
&& DGV
->getType() != SGV
->getType())
467 // If types don't agree due to opaque types, try to resolve them.
468 RecursiveResolveTypes(SGV
->getType(), DGV
->getType(),
469 &Dest
->getTypeSymbolTable(), "");
472 if (DGV
&& DGV
->hasInternalLinkage())
475 assert((SGV
->hasInitializer() || SGV
->hasExternalWeakLinkage() ||
476 SGV
->hasExternalLinkage() || SGV
->hasDLLImportLinkage()) &&
477 "Global must either be external or have an initializer!");
479 GlobalValue::LinkageTypes NewLinkage
= GlobalValue::InternalLinkage
;
480 bool LinkFromSrc
= false;
481 if (GetLinkageResult(DGV
, SGV
, NewLinkage
, LinkFromSrc
, Err
))
485 // No linking to be performed, simply create an identical version of the
486 // symbol over in the dest module... the initializer will be filled in
487 // later by LinkGlobalInits...
488 GlobalVariable
*NewDGV
=
489 new GlobalVariable(SGV
->getType()->getElementType(),
490 SGV
->isConstant(), SGV
->getLinkage(), /*init*/0,
491 SGV
->getName(), Dest
, SGV
->isThreadLocal());
492 // Propagate alignment, visibility and section info.
493 CopyGVAttributes(NewDGV
, SGV
);
495 // If the LLVM runtime renamed the global, but it is an externally visible
496 // symbol, DGV must be an existing global with internal linkage. Rename
498 if (NewDGV
->getName() != SGV
->getName() && !NewDGV
->hasInternalLinkage())
499 ForceRenaming(NewDGV
, SGV
->getName());
501 // Make sure to remember this mapping...
502 ValueMap
.insert(std::make_pair(SGV
, NewDGV
));
503 if (SGV
->hasAppendingLinkage())
504 // Keep track that this is an appending variable...
505 AppendingVars
.insert(std::make_pair(SGV
->getName(), NewDGV
));
506 } else if (DGV
->hasAppendingLinkage()) {
507 // No linking is performed yet. Just insert a new copy of the global, and
508 // keep track of the fact that it is an appending variable in the
509 // AppendingVars map. The name is cleared out so that no linkage is
511 GlobalVariable
*NewDGV
=
512 new GlobalVariable(SGV
->getType()->getElementType(),
513 SGV
->isConstant(), SGV
->getLinkage(), /*init*/0,
514 "", Dest
, SGV
->isThreadLocal());
516 // Propagate alignment, section and visibility info.
517 NewDGV
->setAlignment(DGV
->getAlignment());
518 CopyGVAttributes(NewDGV
, SGV
);
520 // Make sure to remember this mapping...
521 ValueMap
.insert(std::make_pair(SGV
, NewDGV
));
523 // Keep track that this is an appending variable...
524 AppendingVars
.insert(std::make_pair(SGV
->getName(), NewDGV
));
526 // Propagate alignment, section, and visibility info.
527 CopyGVAttributes(DGV
, SGV
);
529 // Otherwise, perform the mapping as instructed by GetLinkageResult. If
530 // the types don't match, and if we are to link from the source, nuke DGV
531 // and create a new one of the appropriate type.
532 if (SGV
->getType() != DGV
->getType() && LinkFromSrc
) {
533 GlobalVariable
*NewDGV
=
534 new GlobalVariable(SGV
->getType()->getElementType(),
535 DGV
->isConstant(), DGV
->getLinkage());
536 NewDGV
->setThreadLocal(DGV
->isThreadLocal());
537 CopyGVAttributes(NewDGV
, DGV
);
538 Dest
->getGlobalList().insert(DGV
, NewDGV
);
539 DGV
->replaceAllUsesWith(
540 ConstantExpr::getBitCast(NewDGV
, DGV
->getType()));
541 DGV
->eraseFromParent();
542 NewDGV
->setName(SGV
->getName());
546 DGV
->setLinkage(NewLinkage
);
549 // Inherit const as appropriate
550 DGV
->setConstant(SGV
->isConstant());
551 DGV
->setInitializer(0);
553 if (SGV
->isConstant() && !DGV
->isConstant()) {
554 if (DGV
->isDeclaration())
555 DGV
->setConstant(true);
557 SGV
->setLinkage(GlobalValue::ExternalLinkage
);
558 SGV
->setInitializer(0);
562 std::make_pair(SGV
, ConstantExpr::getBitCast(DGV
, SGV
->getType())));
568 // LinkAlias - Loop through the alias in the src module and link them into the
570 static bool LinkAlias(Module
*Dest
, const Module
*Src
, std::string
*Err
) {
571 // Loop over all alias in the src module
572 for (Module::const_alias_iterator I
= Src
->alias_begin(),
573 E
= Src
->alias_end(); I
!= E
; ++I
) {
574 const GlobalAlias
*GA
= I
;
576 GlobalValue
*NewAliased
= NULL
;
577 const GlobalValue
*Aliased
= GA
->getAliasedGlobal();
578 if (isa
<GlobalVariable
>(*Aliased
))
579 NewAliased
= Dest
->getGlobalVariable(Aliased
->getName());
580 else if (isa
<Function
>(*Aliased
))
581 NewAliased
= Dest
->getFunction(Aliased
->getName());
582 // FIXME: we should handle the bitcast alias.
583 assert(NewAliased
&& "Can't find the aliased GV.");
585 GlobalAlias
*NewGA
= new GlobalAlias(GA
->getType(), GA
->getLinkage(),
586 GA
->getName(), NewAliased
, Dest
);
587 CopyGVAttributes(NewGA
, GA
);
593 // LinkGlobalInits - Update the initializers in the Dest module now that all
594 // globals that may be referenced are in Dest.
595 static bool LinkGlobalInits(Module
*Dest
, const Module
*Src
,
596 std::map
<const Value
*, Value
*> &ValueMap
,
599 // Loop over all of the globals in the src module, mapping them over as we go
600 for (Module::const_global_iterator I
= Src
->global_begin(),
601 E
= Src
->global_end(); I
!= E
; ++I
) {
602 const GlobalVariable
*SGV
= I
;
604 if (SGV
->hasInitializer()) { // Only process initialized GV's
605 // Figure out what the initializer looks like in the dest module...
607 cast
<Constant
>(RemapOperand(SGV
->getInitializer(), ValueMap
));
609 GlobalVariable
*DGV
= cast
<GlobalVariable
>(ValueMap
[SGV
]);
610 if (DGV
->hasInitializer()) {
611 if (SGV
->hasExternalLinkage()) {
612 if (DGV
->getInitializer() != SInit
)
613 return Error(Err
, "Global Variable Collision on '" +
614 ToStr(SGV
->getType(), Src
) +"':%"+SGV
->getName()+
615 " - Global variables have different initializers");
616 } else if (DGV
->hasLinkOnceLinkage() || DGV
->hasWeakLinkage()) {
617 // Nothing is required, mapped values will take the new global
619 } else if (SGV
->hasLinkOnceLinkage() || SGV
->hasWeakLinkage()) {
620 // Nothing is required, mapped values will take the new global
622 } else if (DGV
->hasAppendingLinkage()) {
623 assert(0 && "Appending linkage unimplemented!");
625 assert(0 && "Unknown linkage!");
628 // Copy the initializer over now...
629 DGV
->setInitializer(SInit
);
636 // LinkFunctionProtos - Link the functions together between the two modules,
637 // without doing function bodies... this just adds external function prototypes
638 // to the Dest function...
640 static bool LinkFunctionProtos(Module
*Dest
, const Module
*Src
,
641 std::map
<const Value
*, Value
*> &ValueMap
,
643 // Loop over all of the functions in the src module, mapping them over
644 for (Module::const_iterator I
= Src
->begin(), E
= Src
->end(); I
!= E
; ++I
) {
645 const Function
*SF
= I
; // SrcFunction
647 if (SF
->hasName() && !SF
->hasInternalLinkage()) {
648 // Check to see if may have to link the function.
649 DF
= Dest
->getFunction(SF
->getName());
650 if (DF
&& SF
->getType() != DF
->getType())
651 // If types don't agree because of opaque, try to resolve them
652 RecursiveResolveTypes(SF
->getType(), DF
->getType(),
653 &Dest
->getTypeSymbolTable(), "");
657 if (DF
&& !DF
->hasInternalLinkage() &&
658 SF
->getVisibility() != DF
->getVisibility()) {
659 // If one is a prototype, ignore its visibility. Prototypes are always
660 // overridden by the definition.
661 if (!SF
->isDeclaration() && !DF
->isDeclaration())
662 return Error(Err
, "Linking functions named '" + SF
->getName() +
663 "': symbols have different visibilities!");
666 if (DF
&& DF
->hasInternalLinkage())
669 if (DF
&& DF
->getType() != SF
->getType()) {
670 if (DF
->isDeclaration() && !SF
->isDeclaration()) {
671 // We have a definition of the same name but different type in the
672 // source module. Copy the prototype to the destination and replace
673 // uses of the destination's prototype with the new prototype.
674 Function
*NewDF
= new Function(SF
->getFunctionType(), SF
->getLinkage(),
675 SF
->getName(), Dest
);
676 CopyGVAttributes(NewDF
, SF
);
678 // Any uses of DF need to change to NewDF, with cast
679 DF
->replaceAllUsesWith(ConstantExpr::getBitCast(NewDF
, DF
->getType()));
681 // DF will conflict with NewDF because they both had the same. We must
682 // erase this now so ForceRenaming doesn't assert because DF might
683 // not have internal linkage.
684 DF
->eraseFromParent();
686 // If the symbol table renamed the function, but it is an externally
687 // visible symbol, DF must be an existing function with internal
688 // linkage. Rename it.
689 if (NewDF
->getName() != SF
->getName() && !NewDF
->hasInternalLinkage())
690 ForceRenaming(NewDF
, SF
->getName());
692 // Remember this mapping so uses in the source module get remapped
693 // later by RemapOperand.
694 ValueMap
[SF
] = NewDF
;
695 } else if (SF
->isDeclaration()) {
696 // We have two functions of the same name but different type and the
697 // source is a declaration while the destination is not. Any use of
698 // the source must be mapped to the destination, with a cast.
699 ValueMap
[SF
] = ConstantExpr::getBitCast(DF
, SF
->getType());
701 // We have two functions of the same name but different types and they
702 // are both definitions. This is an error.
703 return Error(Err
, "Function '" + DF
->getName() + "' defined as both '" +
704 ToStr(SF
->getFunctionType(), Src
) + "' and '" +
705 ToStr(DF
->getFunctionType(), Dest
) + "'");
707 } else if (!DF
|| SF
->hasInternalLinkage() || DF
->hasInternalLinkage()) {
708 // Function does not already exist, simply insert an function signature
709 // identical to SF into the dest module.
710 Function
*NewDF
= new Function(SF
->getFunctionType(), SF
->getLinkage(),
711 SF
->getName(), Dest
);
712 CopyGVAttributes(NewDF
, SF
);
714 // If the LLVM runtime renamed the function, but it is an externally
715 // visible symbol, DF must be an existing function with internal linkage.
717 if (NewDF
->getName() != SF
->getName() && !NewDF
->hasInternalLinkage())
718 ForceRenaming(NewDF
, SF
->getName());
720 // ... and remember this mapping...
721 ValueMap
.insert(std::make_pair(SF
, NewDF
));
722 } else if (SF
->isDeclaration()) {
723 // If SF is a declaration or if both SF & DF are declarations, just link
724 // the declarations, we aren't adding anything.
725 if (SF
->hasDLLImportLinkage()) {
726 if (DF
->isDeclaration()) {
727 ValueMap
.insert(std::make_pair(SF
, DF
));
728 DF
->setLinkage(SF
->getLinkage());
731 ValueMap
.insert(std::make_pair(SF
, DF
));
733 } else if (DF
->isDeclaration() && !DF
->hasDLLImportLinkage()) {
734 // If DF is external but SF is not...
735 // Link the external functions, update linkage qualifiers
736 ValueMap
.insert(std::make_pair(SF
, DF
));
737 DF
->setLinkage(SF
->getLinkage());
738 // Visibility of prototype is overridden by vis of definition.
739 DF
->setVisibility(SF
->getVisibility());
740 } else if (SF
->hasWeakLinkage() || SF
->hasLinkOnceLinkage()) {
741 // At this point we know that DF has LinkOnce, Weak, or External* linkage.
742 ValueMap
.insert(std::make_pair(SF
, DF
));
744 // Linkonce+Weak = Weak
745 // *+External Weak = *
746 if ((DF
->hasLinkOnceLinkage() && SF
->hasWeakLinkage()) ||
747 DF
->hasExternalWeakLinkage())
748 DF
->setLinkage(SF
->getLinkage());
749 } else if (DF
->hasWeakLinkage() || DF
->hasLinkOnceLinkage()) {
750 // At this point we know that SF has LinkOnce or External* linkage.
751 ValueMap
.insert(std::make_pair(SF
, DF
));
752 if (!SF
->hasLinkOnceLinkage() && !SF
->hasExternalWeakLinkage())
753 // Don't inherit linkonce & external weak linkage
754 DF
->setLinkage(SF
->getLinkage());
755 } else if (SF
->getLinkage() != DF
->getLinkage()) {
756 return Error(Err
, "Functions named '" + SF
->getName() +
757 "' have different linkage specifiers!");
758 } else if (SF
->hasExternalLinkage()) {
759 // The function is defined identically in both modules!!
760 return Error(Err
, "Function '" +
761 ToStr(SF
->getFunctionType(), Src
) + "':\"" +
762 SF
->getName() + "\" - Function is already defined!");
764 assert(0 && "Unknown linkage configuration found!");
770 // LinkFunctionBody - Copy the source function over into the dest function and
771 // fix up references to values. At this point we know that Dest is an external
772 // function, and that Src is not.
773 static bool LinkFunctionBody(Function
*Dest
, Function
*Src
,
774 std::map
<const Value
*, Value
*> &ValueMap
,
776 assert(Src
&& Dest
&& Dest
->isDeclaration() && !Src
->isDeclaration());
778 // Go through and convert function arguments over, remembering the mapping.
779 Function::arg_iterator DI
= Dest
->arg_begin();
780 for (Function::arg_iterator I
= Src
->arg_begin(), E
= Src
->arg_end();
782 DI
->setName(I
->getName()); // Copy the name information over...
784 // Add a mapping to our local map
785 ValueMap
.insert(std::make_pair(I
, DI
));
788 // Splice the body of the source function into the dest function.
789 Dest
->getBasicBlockList().splice(Dest
->end(), Src
->getBasicBlockList());
791 // At this point, all of the instructions and values of the function are now
792 // copied over. The only problem is that they are still referencing values in
793 // the Source function as operands. Loop through all of the operands of the
794 // functions and patch them up to point to the local versions...
796 for (Function::iterator BB
= Dest
->begin(), BE
= Dest
->end(); BB
!= BE
; ++BB
)
797 for (BasicBlock::iterator I
= BB
->begin(), E
= BB
->end(); I
!= E
; ++I
)
798 for (Instruction::op_iterator OI
= I
->op_begin(), OE
= I
->op_end();
800 if (!isa
<Instruction
>(*OI
) && !isa
<BasicBlock
>(*OI
))
801 *OI
= RemapOperand(*OI
, ValueMap
);
803 // There is no need to map the arguments anymore.
804 for (Function::arg_iterator I
= Src
->arg_begin(), E
= Src
->arg_end();
812 // LinkFunctionBodies - Link in the function bodies that are defined in the
813 // source module into the DestModule. This consists basically of copying the
814 // function over and fixing up references to values.
815 static bool LinkFunctionBodies(Module
*Dest
, Module
*Src
,
816 std::map
<const Value
*, Value
*> &ValueMap
,
819 // Loop over all of the functions in the src module, mapping them over as we
821 for (Module::iterator SF
= Src
->begin(), E
= Src
->end(); SF
!= E
; ++SF
) {
822 if (!SF
->isDeclaration()) { // No body if function is external
823 Function
*DF
= cast
<Function
>(ValueMap
[SF
]); // Destination function
825 // DF not external SF external?
826 if (DF
->isDeclaration())
827 // Only provide the function body if there isn't one already.
828 if (LinkFunctionBody(DF
, SF
, ValueMap
, Err
))
835 // LinkAppendingVars - If there were any appending global variables, link them
836 // together now. Return true on error.
837 static bool LinkAppendingVars(Module
*M
,
838 std::multimap
<std::string
, GlobalVariable
*> &AppendingVars
,
839 std::string
*ErrorMsg
) {
840 if (AppendingVars
.empty()) return false; // Nothing to do.
842 // Loop over the multimap of appending vars, processing any variables with the
843 // same name, forming a new appending global variable with both of the
844 // initializers merged together, then rewrite references to the old variables
846 std::vector
<Constant
*> Inits
;
847 while (AppendingVars
.size() > 1) {
848 // Get the first two elements in the map...
849 std::multimap
<std::string
,
850 GlobalVariable
*>::iterator Second
= AppendingVars
.begin(), First
=Second
++;
852 // If the first two elements are for different names, there is no pair...
853 // Otherwise there is a pair, so link them together...
854 if (First
->first
== Second
->first
) {
855 GlobalVariable
*G1
= First
->second
, *G2
= Second
->second
;
856 const ArrayType
*T1
= cast
<ArrayType
>(G1
->getType()->getElementType());
857 const ArrayType
*T2
= cast
<ArrayType
>(G2
->getType()->getElementType());
859 // Check to see that they two arrays agree on type...
860 if (T1
->getElementType() != T2
->getElementType())
861 return Error(ErrorMsg
,
862 "Appending variables with different element types need to be linked!");
863 if (G1
->isConstant() != G2
->isConstant())
864 return Error(ErrorMsg
,
865 "Appending variables linked with different const'ness!");
867 if (G1
->getAlignment() != G2
->getAlignment())
868 return Error(ErrorMsg
,
869 "Appending variables with different alignment need to be linked!");
871 if (G1
->getVisibility() != G2
->getVisibility())
872 return Error(ErrorMsg
,
873 "Appending variables with different visibility need to be linked!");
875 if (G1
->getSection() != G2
->getSection())
876 return Error(ErrorMsg
,
877 "Appending variables with different section name need to be linked!");
879 unsigned NewSize
= T1
->getNumElements() + T2
->getNumElements();
880 ArrayType
*NewType
= ArrayType::get(T1
->getElementType(), NewSize
);
882 G1
->setName(""); // Clear G1's name in case of a conflict!
884 // Create the new global variable...
886 new GlobalVariable(NewType
, G1
->isConstant(), G1
->getLinkage(),
887 /*init*/0, First
->first
, M
, G1
->isThreadLocal());
889 // Propagate alignment, visibility and section info.
890 CopyGVAttributes(NG
, G1
);
892 // Merge the initializer...
893 Inits
.reserve(NewSize
);
894 if (ConstantArray
*I
= dyn_cast
<ConstantArray
>(G1
->getInitializer())) {
895 for (unsigned i
= 0, e
= T1
->getNumElements(); i
!= e
; ++i
)
896 Inits
.push_back(I
->getOperand(i
));
898 assert(isa
<ConstantAggregateZero
>(G1
->getInitializer()));
899 Constant
*CV
= Constant::getNullValue(T1
->getElementType());
900 for (unsigned i
= 0, e
= T1
->getNumElements(); i
!= e
; ++i
)
903 if (ConstantArray
*I
= dyn_cast
<ConstantArray
>(G2
->getInitializer())) {
904 for (unsigned i
= 0, e
= T2
->getNumElements(); i
!= e
; ++i
)
905 Inits
.push_back(I
->getOperand(i
));
907 assert(isa
<ConstantAggregateZero
>(G2
->getInitializer()));
908 Constant
*CV
= Constant::getNullValue(T2
->getElementType());
909 for (unsigned i
= 0, e
= T2
->getNumElements(); i
!= e
; ++i
)
912 NG
->setInitializer(ConstantArray::get(NewType
, Inits
));
915 // Replace any uses of the two global variables with uses of the new
918 // FIXME: This should rewrite simple/straight-forward uses such as
919 // getelementptr instructions to not use the Cast!
920 G1
->replaceAllUsesWith(ConstantExpr::getBitCast(NG
, G1
->getType()));
921 G2
->replaceAllUsesWith(ConstantExpr::getBitCast(NG
, G2
->getType()));
923 // Remove the two globals from the module now...
924 M
->getGlobalList().erase(G1
);
925 M
->getGlobalList().erase(G2
);
927 // Put the new global into the AppendingVars map so that we can handle
928 // linking of more than two vars...
931 AppendingVars
.erase(First
);
938 // LinkModules - This function links two modules together, with the resulting
939 // left module modified to be the composite of the two input modules. If an
940 // error occurs, true is returned and ErrorMsg (if not null) is set to indicate
941 // the problem. Upon failure, the Dest module could be in a modified state, and
942 // shouldn't be relied on to be consistent.
944 Linker::LinkModules(Module
*Dest
, Module
*Src
, std::string
*ErrorMsg
) {
945 assert(Dest
!= 0 && "Invalid Destination module");
946 assert(Src
!= 0 && "Invalid Source Module");
948 if (Dest
->getDataLayout().empty()) {
949 if (!Src
->getDataLayout().empty()) {
950 Dest
->setDataLayout(Src
->getDataLayout());
952 std::string DataLayout
;
954 if (Dest
->getEndianness() == Module::AnyEndianness
)
955 if (Src
->getEndianness() == Module::BigEndian
)
956 DataLayout
.append("E");
957 else if (Src
->getEndianness() == Module::LittleEndian
)
958 DataLayout
.append("e");
959 if (Dest
->getPointerSize() == Module::AnyPointerSize
)
960 if (Src
->getPointerSize() == Module::Pointer64
)
961 DataLayout
.append(DataLayout
.length() == 0 ? "p:64:64" : "-p:64:64");
962 else if (Src
->getPointerSize() == Module::Pointer32
)
963 DataLayout
.append(DataLayout
.length() == 0 ? "p:32:32" : "-p:32:32");
964 Dest
->setDataLayout(DataLayout
);
968 // COpy the target triple from the source to dest if the dest's is empty
969 if (Dest
->getTargetTriple().empty() && !Src
->getTargetTriple().empty())
970 Dest
->setTargetTriple(Src
->getTargetTriple());
972 if (!Src
->getDataLayout().empty() && !Dest
->getDataLayout().empty() &&
973 Src
->getDataLayout() != Dest
->getDataLayout())
974 cerr
<< "WARNING: Linking two modules of different data layouts!\n";
975 if (!Src
->getTargetTriple().empty() &&
976 Dest
->getTargetTriple() != Src
->getTargetTriple())
977 cerr
<< "WARNING: Linking two modules of different target triples!\n";
979 // Append the module inline asm string
980 if (!Src
->getModuleInlineAsm().empty()) {
981 if (Dest
->getModuleInlineAsm().empty())
982 Dest
->setModuleInlineAsm(Src
->getModuleInlineAsm());
984 Dest
->setModuleInlineAsm(Dest
->getModuleInlineAsm()+"\n"+
985 Src
->getModuleInlineAsm());
988 // Update the destination module's dependent libraries list with the libraries
989 // from the source module. There's no opportunity for duplicates here as the
990 // Module ensures that duplicate insertions are discarded.
991 Module::lib_iterator SI
= Src
->lib_begin();
992 Module::lib_iterator SE
= Src
->lib_end();
994 Dest
->addLibrary(*SI
);
998 // LinkTypes - Go through the symbol table of the Src module and see if any
999 // types are named in the src module that are not named in the Dst module.
1000 // Make sure there are no type name conflicts.
1001 if (LinkTypes(Dest
, Src
, ErrorMsg
))
1004 // ValueMap - Mapping of values from what they used to be in Src, to what they
1006 std::map
<const Value
*, Value
*> ValueMap
;
1008 // AppendingVars - Keep track of global variables in the destination module
1009 // with appending linkage. After the module is linked together, they are
1010 // appended and the module is rewritten.
1011 std::multimap
<std::string
, GlobalVariable
*> AppendingVars
;
1012 for (Module::global_iterator I
= Dest
->global_begin(), E
= Dest
->global_end();
1014 // Add all of the appending globals already in the Dest module to
1016 if (I
->hasAppendingLinkage())
1017 AppendingVars
.insert(std::make_pair(I
->getName(), I
));
1020 // Insert all of the globals in src into the Dest module... without linking
1021 // initializers (which could refer to functions not yet mapped over).
1022 if (LinkGlobals(Dest
, Src
, ValueMap
, AppendingVars
, ErrorMsg
))
1025 // Link the functions together between the two modules, without doing function
1026 // bodies... this just adds external function prototypes to the Dest
1027 // function... We do this so that when we begin processing function bodies,
1028 // all of the global values that may be referenced are available in our
1030 if (LinkFunctionProtos(Dest
, Src
, ValueMap
, ErrorMsg
))
1033 // Update the initializers in the Dest module now that all globals that may
1034 // be referenced are in Dest.
1035 if (LinkGlobalInits(Dest
, Src
, ValueMap
, ErrorMsg
)) return true;
1037 // Link in the function bodies that are defined in the source module into the
1038 // DestModule. This consists basically of copying the function over and
1039 // fixing up references to values.
1040 if (LinkFunctionBodies(Dest
, Src
, ValueMap
, ErrorMsg
)) return true;
1042 // If there were any appending global variables, link them together now.
1043 if (LinkAppendingVars(Dest
, AppendingVars
, ErrorMsg
)) return true;
1045 // If there were any alias, link them now.
1046 if (LinkAlias(Dest
, Src
, ErrorMsg
)) return true;
1048 // If the source library's module id is in the dependent library list of the
1049 // destination library, remove it since that module is now linked in.
1051 modId
.set(Src
->getModuleIdentifier());
1052 if (!modId
.isEmpty())
1053 Dest
->removeLibrary(modId
.getBasename());