[LLVMdev] StructType for dispatch_object_t changed by Linker

Jean-Daniel Dupas devlists at shadowlab.org
Fri Dec 14 10:10:24 PST 2012


Le 14 déc. 2012 à 17:08, Jaymie Strecker <jstrecker at kosada.com> a écrit :

> Duncan, thanks for your reply. 
> 
>> Probably the types are not defined precisely the same in each module (maybe you
>> could send the exact definitions in each module to the mailing list?), 
> 
> 
> In the module loaded in Step 1 (otherModule): 
> 
> %struct.dispatch_group_s = type opaque
> %union.dispatch_object_t = type { %struct.dispatch_object_s* }
> %struct.dispatch_object_s = type opaque
> 
> In the module generated in Step 2 (mainModule): 
> 
> %struct.dispatch_group_s = type {}
> %union.dispatch_object_t = type { %struct.dispatch_object_s* }
> %struct.dispatch_object_s = type {}
> 
> (The LLVM API calls to generate mainModule were generated by calling `llc -march=cpp` on otherModule.) 
> 

Is there any chance one module was compiled in C mode and the other one in C++ mode ?

The dispatch_object declarations are not the same for both languages:

#if defined(__cplusplus)
/*
 * Dispatch objects are NOT C++ objects. Nevertheless, we can at least keep C++
 * aware of type compatibility.
 */
typedef struct dispatch_object_s {
private:
	dispatch_object_s();
	~dispatch_object_s();
	dispatch_object_s(const dispatch_object_s &);
	void operator=(const dispatch_object_s &);
} *dispatch_object_t;


>> but I
>> think there were also some bugs in this area that were fixed in 3.2.
> 
> Great, I'll also test on 3.2 when I get a chance. Thanks. 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-- Jean-Daniel




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121214/8b8b8111/attachment.html>


More information about the llvm-dev mailing list