in glibc 2.7, asm/unistd.h is: # ifdef __i386__ # include "unistd_32.h" # else # include "unistd_64.h" # endif it must become: if(defined(&__i386__)) { require 'asm/unistd_32.ph'; } else { require 'asm/unistd_64.ph'; } diff -p -up perl-5.10.0/utils/h2ph.PL.pix perl-5.10.0/utils/h2ph.PL --- perl-5.10.0/utils/h2ph.PL.pix 2007-12-18 10:47:08.000000000 +0000 +++ perl-5.10.0/utils/h2ph.PL 2008-01-14 17:23:04.000000000 +0000 @@ -186,9 +186,12 @@ while (defined (my $file = next_file())) print OUT $t,"unless(defined(\&$name)) {\n sub $name () {\t",$new,";}\n}\n"; } } - } elsif (/^(include|import|include_next)\s*[<\"](.*)[>\"]/) { + } elsif (/^(include|import|include_next)\s*[<\"](.*)([>\"])/) { $incl_type = $1; $incl = $2; + if ($3 eq '"') { + $incl = "$1$incl" if $file =~ m!(.*/)! && -e "$1$incl"; + } if (($incl_type eq 'include_next') || ($opt_e && exists($bad_file{$incl}))) { $incl =~ s/\.h$/.ph/; @@ -726,6 +729,10 @@ sub queue_includes_from if ($line =~ /^#\s*include\s+<(.*?)>/) { push(@ARGV, $1) unless $Is_converted{$1}; + } elsif ($line =~ /^#\s*include\s+"(.*?)"/) { + my $f = $1; + $f = "$1$f" if $file =~ m!(.*/)! && -e "$1$f"; + push(@ARGV, $f) unless $Is_converted{$f}; } } close HEADER;