aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ld-elf/dl5.cc13
-rw-r--r--ld/testsuite/ld-elf/dl5.h10
-rw-r--r--ld/testsuite/ld-elf/new.cc6
3 files changed, 19 insertions, 10 deletions
diff --git a/ld/testsuite/ld-elf/dl5.cc b/ld/testsuite/ld-elf/dl5.cc
index cc40455..77dbb62 100644
--- a/ld/testsuite/ld-elf/dl5.cc
+++ b/ld/testsuite/ld-elf/dl5.cc
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <new>
+#include "dl5.h"
int pass = 0;
@@ -30,22 +31,14 @@ operator delete (void *ptr) throw ()
free (ptr);
}
-class A
-{
-public:
- A() {}
- ~A() { }
- int a;
- int b;
-};
-
-
int
main (void)
{
A *bb = new A[10];
delete [] bb;
+ foo (bb);
bb = new (std::nothrow) A [10];
+ foo (bb);
delete [] bb;
if (pass == 4)
diff --git a/ld/testsuite/ld-elf/dl5.h b/ld/testsuite/ld-elf/dl5.h
new file mode 100644
index 0000000..0d4a7c1
--- /dev/null
+++ b/ld/testsuite/ld-elf/dl5.h
@@ -0,0 +1,10 @@
+class A
+{
+public:
+ A() {}
+ ~A() { }
+ int a;
+ int b;
+};
+
+extern void foo (A *);
diff --git a/ld/testsuite/ld-elf/new.cc b/ld/testsuite/ld-elf/new.cc
index 513cf2f..b038d77 100644
--- a/ld/testsuite/ld-elf/new.cc
+++ b/ld/testsuite/ld-elf/new.cc
@@ -1,4 +1,5 @@
#include <new>
+#include "dl5.h"
using std::bad_alloc;
@@ -45,3 +46,8 @@ operator new[] (std::size_t sz, const std::nothrow_t& nothrow) throw()
{
return ::operator new(sz, nothrow);
}
+
+void
+foo (A *)
+{
+}