diff options
Diffstat (limited to 'scripts/Dpkg')
-rw-r--r-- | scripts/Dpkg/Arch.pm | 8 | ||||
-rw-r--r-- | scripts/Dpkg/Shlibs.pm | 27 | ||||
-rw-r--r-- | scripts/Dpkg/Shlibs/SymbolFile.pm | 2 |
3 files changed, 34 insertions, 3 deletions
diff --git a/scripts/Dpkg/Arch.pm b/scripts/Dpkg/Arch.pm index 14709d6cc..531bc118e 100644 --- a/scripts/Dpkg/Arch.pm +++ b/scripts/Dpkg/Arch.pm @@ -395,11 +395,13 @@ sub gnutriplet_to_multiarch($) my $gnu = shift; my ($cpu, $cdr) = split(/-/, $gnu, 2); + if ($cdr =~ /solaris2\.11/) { + $cdr = 'illumos'; + } if ($cpu =~ /^i[4567]86$/) { - return "i386-$cdr"; - } else { - return $gnu; + $cpu = 'i386'; } + return "$cpu-$cdr"; } =item $multiarch = debarch_to_multiarch($arch) diff --git a/scripts/Dpkg/Shlibs.pm b/scripts/Dpkg/Shlibs.pm index 2b19d14a7..bf52cc555 100644 --- a/scripts/Dpkg/Shlibs.pm +++ b/scripts/Dpkg/Shlibs.pm @@ -51,6 +51,32 @@ my @custom_librarypaths; my @system_librarypaths; my $librarypaths_init; +sub parse_crle { + my @CRLE = qw(/sbin/crle /usr/bin/crle /usr/sbin/crle); + foreach my $crle (@CRLE) { + if ( -x $crle) { + parse_crle1($crle); + parse_crle1("$crle -32"); + parse_crle1("$crle -64"); + last; + } + } +} + +sub parse_crle1 { + my ($cmd) = @_; + open my $crle, "$cmd |" or syserr(_g("cannot run %s"), $cmd); + while (<$crle>) { + # Default Library Path (ELF): /lib/x86_64-illumos:/usr/lib/x86_64-illumos:/usr/lib (system default) + if (/Default Library Path \(ELF\):\s+(\S+)\s+[^:]+$/) { + foreach my $L (split(/:/, $1)) { + push @system_librarypaths, $L; + } + } + } + close $crle; +} + sub parse_ldso_conf { my $file = shift; state %visited; @@ -133,6 +159,7 @@ sub setup_library_paths { # Update library paths with ld.so config. parse_ldso_conf('/etc/ld.so.conf') if -e '/etc/ld.so.conf'; + parse_crle(); push @system_librarypaths, DEFAULT_MULTILIB_PATH; diff --git a/scripts/Dpkg/Shlibs/SymbolFile.pm b/scripts/Dpkg/Shlibs/SymbolFile.pm index 4b1c7ef50..28b2111c7 100644 --- a/scripts/Dpkg/Shlibs/SymbolFile.pm +++ b/scripts/Dpkg/Shlibs/SymbolFile.pm @@ -62,6 +62,8 @@ my %blacklist = ( _PROCEDURE_LINKAGE_TABLE_ => 1, # sparc, alpha _SDA2_BASE_ => 1, # powerpc _SDA_BASE_ => 1, # powerpc + '_etext' => 1, # solaris + '_lib_version' => 1, # solaris ); for my $i (14 .. 31) { |