aboutsummaryrefslogtreecommitdiff
path: root/libmudflap
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@redhat.com>2005-06-14 19:12:24 +0000
committerFrank Ch. Eigler <fche@gcc.gnu.org>2005-06-14 19:12:24 +0000
commit0ea49890a80cdddc5f79f1b56a3e8b508bdd2e86 (patch)
treef6e6325380fda0d3045ff8cc52f110a6f9949dee /libmudflap
parent7666af8941bb4826038df099f5eef0f2a23784bc (diff)
downloadgcc-0ea49890a80cdddc5f79f1b56a3e8b508bdd2e86.zip
gcc-0ea49890a80cdddc5f79f1b56a3e8b508bdd2e86.tar.gz
gcc-0ea49890a80cdddc5f79f1b56a3e8b508bdd2e86.tar.bz2
re PR libmudflap/21023 (mudflap reports errors for external array variable with no size specified)
2005-06-14 Frank Ch. Eigler <fche@redhat.com> PR mudflap/21023 * tree-mudflap.c (mudflap_finish_file): Exclude non-public rather than static objects (!) from libmudflap registration. * testsuite/libmudflap.c/externs.exp, externs-{1,2}.c: New test files. * testsuite/libmudflap.c/cfrags.exp: Bypass new sources. From-SVN: r100950
Diffstat (limited to 'libmudflap')
-rw-r--r--libmudflap/ChangeLog6
-rw-r--r--libmudflap/testsuite/libmudflap.c/cfrags.exp6
-rw-r--r--libmudflap/testsuite/libmudflap.c/externs-1.c14
-rw-r--r--libmudflap/testsuite/libmudflap.c/externs-2.c2
-rw-r--r--libmudflap/testsuite/libmudflap.c/externs.exp40
5 files changed, 67 insertions, 1 deletions
diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog
index 3cc2238..4e0525c2 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,5 +1,11 @@
2005-06-14 Frank Ch. Eigler <fche@redhat.com>
+ PR mudflap/21023
+ * testsuite/libmudflap.c/externs.exp, externs-{1,2}.c: New test files.
+ * testsuite/libmudflap.c/cfrags.exp: Bypass new sources.
+
+2005-06-14 Frank Ch. Eigler <fche@redhat.com>
+
PR libmudflap/21094
* testsuite/libmudflap.c++/*.exp: Assert build tree g++.
diff --git a/libmudflap/testsuite/libmudflap.c/cfrags.exp b/libmudflap/testsuite/libmudflap.c/cfrags.exp
index c29975c..577a4cc 100644
--- a/libmudflap/testsuite/libmudflap.c/cfrags.exp
+++ b/libmudflap/testsuite/libmudflap.c/cfrags.exp
@@ -5,7 +5,11 @@ dg-init
global srcdir
foreach flags [list {} {-static} {-O2} {-O3}] {
- foreach srcfile [lsort [glob -nocomplain ${srcdir}/libmudflap.c/*.c]] {
+ foreach srcfile [lsort [glob -nocomplain \
+ ${srcdir}/libmudflap.c/*frag.c \
+ ${srcdir}/libmudflap.c/heap*.c \
+ ${srcdir}/libmudflap.c/hook*.c \
+ ${srcdir}/libmudflap.c/pass*.c]] {
set bsrc [file tail $srcfile]
setenv MUDFLAP_OPTIONS "-viol-segv"
dg-runtest $srcfile $flags "-fmudflap -lmudflap"
diff --git a/libmudflap/testsuite/libmudflap.c/externs-1.c b/libmudflap/testsuite/libmudflap.c/externs-1.c
new file mode 100644
index 0000000..552801d
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/externs-1.c
@@ -0,0 +1,14 @@
+typedef struct { char *name; } dummy;
+extern dummy d[];
+
+int
+main (void)
+{
+ dummy *pd = d;
+
+ while (pd->name)
+ {
+ printf ("%s\n", pd->name);
+ pd++;
+ }
+}
diff --git a/libmudflap/testsuite/libmudflap.c/externs-2.c b/libmudflap/testsuite/libmudflap.c/externs-2.c
new file mode 100644
index 0000000..cecf625
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/externs-2.c
@@ -0,0 +1,2 @@
+typedef struct { char *name; } dummy;
+dummy d[] = { {"a"}, {0} };
diff --git a/libmudflap/testsuite/libmudflap.c/externs.exp b/libmudflap/testsuite/libmudflap.c/externs.exp
new file mode 100644
index 0000000..e97e0b6
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/externs.exp
@@ -0,0 +1,40 @@
+libmudflap-init c
+dg-init
+
+global srcdir subdir
+
+foreach flags [list {} {-static} {-O2} {-O3}] {
+ set l1 [libmudflap_target_compile "$srcdir/$subdir/externs-1.c" "externs-1.o" object {additional_flags=-fmudflap}]
+ set test "externs-1 compilation ${flags}"
+ if [string match "*mudflap cannot track unknown size extern *d*" $l1] { pass $test } { fail $test }
+
+ set l2 [libmudflap_target_compile "$srcdir/$subdir/externs-2.c" "externs-2.o" object {additional_flags=-fmudflap}]
+ set test "externs-2 compilation ${flags}"
+ if [string match "" $l2] { pass $test } { fail $test }
+
+ set l3 [libmudflap_target_compile "externs-1.o externs-2.o" "externs-12.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap}]
+ set test "externs-12 linkage ${flags}"
+ if [string match "" $l3] { pass $test } { fail $test }
+
+ set l4 [libmudflap_target_compile "externs-2.o externs-1.o" "externs-21.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap}]
+ set test "externs-21 linkage ${flags}"
+ if [string match "" $l3] { pass $test } { fail $test }
+
+ setenv MUDFLAP_OPTIONS "-viol-segv"
+
+ remote_spawn host "./externs-12.exe"
+ set l5 [remote_wait host 10]
+ set test "externs-12 execution ${flags}"
+ if {[lindex $l5 0] == 0} { pass $test } { fail $test }
+
+ remote_spawn host "./externs-21.exe"
+ set l6 [remote_wait host 10]
+ set test "externs-21 execution ${flags}"
+ if {[lindex $l6 0] == 0} { pass $test } { fail $test }
+
+ foreach f [glob -nocomplain "externs-*"] {
+ remote_file build delete $f
+ }
+}
+
+dg-finish