summaryrefslogtreecommitdiff
path: root/scripts/Dpkg
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Dpkg')
-rw-r--r--scripts/Dpkg/Arch.pm8
-rw-r--r--scripts/Dpkg/Shlibs.pm27
-rw-r--r--scripts/Dpkg/Shlibs/SymbolFile.pm2
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) {