Extend t/porting/diag.t to cover code in DynaLoader.
authorNicholas Clark <nick@ccl4.org>
Wed, 13 Feb 2013 16:06:59 +0000 (17:06 +0100)
committerNicholas Clark <nick@ccl4.org>
Fri, 15 Feb 2013 09:54:32 +0000 (10:54 +0100)
This seems a reasonable extension to cover, as it's arguably part of the
core, because it has to be linked into the perl executable, and handled
differently from everything else, even "static" extensions.

This reveals that DynaLoader can generate a previously undocumented warning,
so document this.

pod/perldiag.pod
t/porting/diag.t

index ef69cd1..c5fdbb6 100644 (file)
@@ -998,6 +998,15 @@ e.g. open(FH, ">:nosuchlayer", "somefile").
 (F) List assignment to %ENV is not supported on some systems, notably
 VMS.
 
+=item Can't make loaded symbols global on this platform while loading %s
+
+(W) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request
+that symbols from the stated file are made available globally within the
+process, but that functionality is not available on this platform.  Whilst
+the module likely will still work, this may prevent the perl interpreter
+from loading other XS-based extensions which need to link directly to
+functions defined in the C or XS code in the stated file.
+
 =item Can't modify %s in %s
 
 (F) You aren't allowed to assign to the item indicated, or otherwise try
index 49090f6..73e5bae 100644 (file)
@@ -193,10 +193,12 @@ my $specialformats_re = qr/%$format_modifiers"\s*($specialformats)(\s*")?/;
 
 open my $fh, '<', 'MANIFEST' or die "Can't open MANIFEST: $!";
 while (my $file = <$fh>) {
-    next if $file =~ m!\A(?:ext|dist|cpan|lib|t)/!;
     chomp $file;
     $file =~ s/\s+.*//;
-    next unless $file =~ /\.(?:c|cpp|h|y)\z/ or $file =~ /^perly\./;
+    next unless $file =~ /\.(?:c|cpp|h|xs|y)\z/ or $file =~ /^perly\./;
+    # OS/2 extensions have never been migrated to ext/, hence the special case:
+    next if $file =~ m!\A(?:ext|dist|cpan|lib|t|os2/OS2)/!
+            && $file !~ m!\Aext/DynaLoader/!;
     check_file($file);
 }
 close $fh or die $!;