Patchwork [C++,testsuite] Fix g++.dg/abi/arm_cxa_vec1.C

login
register
mail settings
Submitter Yufeng Zhang
Date March 3, 2011, 11:35 a.m.
Message ID <000101cbd997$25854090$708fc1b0$@Zhang@arm.com>
Download mbox | patch
Permalink /patch/85257/
State New
Headers show

Comments

Yufeng Zhang - March 3, 2011, 11:35 a.m.
Hi,

Here is a patch that fixes a problem in one g++ test case. A typo (of
using the macro ___ARM_EABI__ rather than __ARM_EABI__) has made the
original test case almost a NOP.

Also with a few other changes that make the test work properly.

I have already tested the updated test case that it still passes with
arm-eabi as an expected pass and passes with x86 as an unsupported test.

OK for the trunk?

Thanks,
Yufeng


2011-03-03  Yufeng Zhang  <yufeng.zhang@arm.com>

        * g++.dg/abi/arm_cxa_vec1.C: Correct the typos/errors in the
        test case.
Richard Earnshaw - March 24, 2011, 4:28 p.m.
On Thu, 2011-03-03 at 11:35 +0000, Yufeng Zhang wrote:
> Hi,
> 
> Here is a patch that fixes a problem in one g++ test case. A typo (of
> using the macro ___ARM_EABI__ rather than __ARM_EABI__) has made the
> original test case almost a NOP.
> 
> Also with a few other changes that make the test work properly.
> 
> I have already tested the updated test case that it still passes with
> arm-eabi as an expected pass and passes with x86 as an unsupported test.
> 
> OK for the trunk?
> 
> Thanks,
> Yufeng
> 
> 
> 2011-03-03  Yufeng Zhang  <yufeng.zhang@arm.com>
> 
>         * g++.dg/abi/arm_cxa_vec1.C: Correct the typos/errors in the
>         test case.
> 

OK.

R.

Patch

Index: gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
===================================================================
--- gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C     (revision 170373)
+++ gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C     (working copy)
@@ -3,10 +3,12 @@ 
 
 #include <cxxabi.h>
 
-#ifdef ___ARM_EABI__
-static void cctor (void * a, void * b)
+#ifdef __ARM_EABI__
+using namespace __cxxabiv1;
+static __cxa_cdtor_return_type cctor (void * a, void * b)
 {
-  *(char *) a = *(char *) b
+  *(char *) a = *(char *) b;
+  return a;
 }
 
 int main()
@@ -15,10 +17,10 @@ 
   char data2;
   char *p;
 
-  p = __cxa_vec_ctor (&data, 1, 1, NULL, NULL);
+  p = (char *) __cxa_vec_ctor (&data, 1, 1, NULL, NULL);
   if (p != &data)
     return 1;
-  p = __cxa_vec_cctor (&data2, &data, 1, 1, cctor, NULL);
+  p = (char *) __cxa_vec_cctor (&data2, &data, 1, 1, cctor, NULL);
   if (p != &data2)
     return 1;