Hi, Weiming. This patch is stale; va_list is now defined by ASTContext (see 
ASTContext.cpp). I'm not sure if the copy-constructor assertion will still be a 
problem using the new implementation.

Thanks for catching this problem, though. Are you willing to rewrite it using 
the current handling of va_list?
Jordan


On Jul 19, 2012, at 4:00 PM, Weiming Zhao wrote:

> Hello,
>  
> ARM AAPCS ABI Section 7.1.4 
> (http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042d/IHI0042D_aapcs.pdf)
> specifies that va_list should be defined as 
> struct __va_list {
> void *__ap;
> }
> And in C++, __va_list is in namespace std.
>  
> However, LLVM defined it as "void *__ap", which generates different mangled 
> name for C++ code.
>  
> For example:
> For the following c++ code:
>  
> #include <stdarg.h>
> int bar(int a, va_list args)
> {
> }
>  
> It should generate the name "_Z3bariSt9__va_list" (GCC 4.4 does that 
> correctly).
> But now, it generates "_Z3bariPv".
>  
> Therefore, there is linkage issues between LLVM and other toolchains that 
> follow the ABI spec. 
>  
> I attached the fix and test case. (uploaded to 
> http://llvm.org/bugs/show_bug.cgi?id=11709 as well).
> It passes the test suite. For the unit test, no new fails. (the before/after 
> test report is attached).
>  
> One thing I’m very certain is the change in lib/AST/ExprClassification.cpp. 
> Without that change, in debug build, the assertion will be triggered. 
> So I relax the condition to let __va_list to pass the check. Please let me 
> know if there is a better solution.
>  
> Please review the patch.
>  
> Thanks,
> Weiming
>  
>  
>  
> <0001-change-definiation-of-va_list-to-meet-arm-abi.patch><test-suite-report_after.log><unit_test_after.log><unit_test_before.log>_______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to