This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
t/porting/libperl.t: add better dianostics
authorDavid Mitchell <davem@iabyn.com>
Fri, 17 Mar 2017 12:19:44 +0000 (12:19 +0000)
committerDavid Mitchell <davem@iabyn.com>
Fri, 17 Mar 2017 14:10:14 +0000 (14:10 +0000)
For -DPERL_GLOBAL_STRUCT_PRIVATE builds, it checks that there aren't any
global symbols.  Make it display the symbols if it finds any. It already
does so for bss; this commit adds data and common diag()s.

t/porting/libperl.t

index 8c1350f..1536fda 100644 (file)
@@ -359,8 +359,19 @@ if ($GSP) {
     ok(! exists $symbols{data}{data} ||
             # clang with ASAN seems to add this symbol to every object file:
             !grep($_ ne '__unnamed_1', keys %{$symbols{data}{data}}),
-        "has no data data symbols");
-    ok(! exists $symbols{data}{common}, "has no data common symbols");
+        "has no data data symbols")
+        or do {
+            my $bad = "DATA entries (there are supposed to be none):\n";
+            $bad .= "  data sym: $_\n" for sort keys %{$symbols{data}{data}};
+            diag($bad);
+        };
+
+    ok(! exists $symbols{data}{common}, "has no data common symbols")
+        or do {
+            my $bad = "COMMON entries (there are supposed to be none):\n";
+            $bad .= "  common sym: $_\n" for sort keys %{$symbols{data}{common}};
+            diag($bad);
+        };
 
     # -DPERL_GLOBAL_STRUCT_PRIVATE should NOT have
     # the extra text symbol for accessing the vars