1 // This test fails on VxWorks in kernel mode because it depends on the 2 // library version of "::operator new[]" calling the "::operator new" 3 // defined in this module. This doesn't work because the library version 4 // of "::operator new[]" is built into the kernel itself; library relocations 5 // are resolved when the kernel is linked. 6 // { dg-do run { xfail { powerpc-ibm-aix* || vxworks_kernel } } } 7 // { dg-options "-flat_namespace" { target *-*-darwin[67]* } } 8 // Avoid use of none-overridable new/delete operators in shared 9 // { dg-options "-static" { target *-*-mingw* } } 10 // GROUPS passed operator-new 11 #include <stdio.h> 12 #include <stdlib.h> 13 #include <new> 14 15 int pass = 0; 16 new(size_t sz)17void *operator new(size_t sz) 18 #if __cplusplus <= 199711L 19 throw (std::bad_alloc) 20 #endif 21 { 22 23 void *p; 24 25 pass = 1; 26 p = malloc(sz); 27 return p; 28 } 29 30 class A { 31 public: A()32 A() {} ~A()33 ~A() {} 34 35 int a; 36 int b; 37 }; 38 39 main()40int main() 41 { 42 A *bb = new A[10]; 43 delete [] bb; 44 45 if (pass) 46 printf ("PASS\n"); 47 else 48 { printf ("FAIL\n"); return 1; } 49 } 50