This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
libperl.t + ASAN + -DPERL_GLOBAL_STRUCT_PRIVATE
authorDavid Mitchell <davem@iabyn.com>
Tue, 8 Jul 2014 15:28:55 +0000 (16:28 +0100)
committerDavid Mitchell <davem@iabyn.com>
Tue, 8 Jul 2014 15:28:55 +0000 (16:28 +0100)
One of the t/porting/libperl.t tests was failing under
-DPERL_GLOBAL_STRUCT_PRIVATE with clang and address sanitizer,
since that combo added a data symbol to each object file:

    0000000000000000 d __unnamed_1

which contradicted the test of not having any global data.
Simply ignore that symbol for the purposes of the test.

t/porting/libperl.t

index 92bbc52..a0c8245 100644 (file)
@@ -258,7 +258,10 @@ if ($GSP) {
     ok(!exists $data_symbols{PL_ppaddr}, "has no PL_ppaddr");
 
     ok(! exists $symbols{data}{bss}, "has no data bss symbols");
-    ok(! exists $symbols{data}{data}, "has no data data symbols");
+    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");
 
     # -DPERL_GLOBAL_STRUCT_PRIVATE should NOT have