Received: (at submit) by debbugs.gnu.org; 24 Apr 2019 21:41:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 24 17:41:46 2019 Received: from localhost ([127.0.0.1]:56642 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1hJPe9-0001VS-5A for submit <at> debbugs.gnu.org; Wed, 24 Apr 2019 17:41:46 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39080) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <bfriesen@HIDDEN>) id 1hJPe7-0001VC-Mu for submit <at> debbugs.gnu.org; Wed, 24 Apr 2019 17:41:39 -0400 Received: from lists.gnu.org ([209.51.188.17]:46836) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <bfriesen@HIDDEN>) id 1hJPe2-0000fD-IN for submit <at> debbugs.gnu.org; Wed, 24 Apr 2019 17:41:34 -0400 Received: from eggs.gnu.org ([209.51.188.92]:53346) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <bfriesen@HIDDEN>) id 1hJPe1-00055v-Ec for bug-libtool@HIDDEN; Wed, 24 Apr 2019 17:41:34 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <bfriesen@HIDDEN>) id 1hJPcA-0007gN-EY for bug-libtool@HIDDEN; Wed, 24 Apr 2019 17:39:39 -0400 Received: from smtp.simplesystems.org ([65.66.246.90]:59072) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <bfriesen@HIDDEN>) id 1hJPcA-0007fU-7E for bug-libtool@HIDDEN; Wed, 24 Apr 2019 17:39:38 -0400 Received: from scrappy.simplesystems.org (scrappy.simplesystems.org [65.66.246.73]) by smtp.simplesystems.org (8.14.4+Sun/8.14.4) with ESMTP id x3OLdUZc007806; Wed, 24 Apr 2019 16:39:30 -0500 (CDT) Date: Wed, 24 Apr 2019 16:39:30 -0500 (CDT) From: Bob Friesenhahn <bfriesen@HIDDEN> X-X-Sender: bfriesen@HIDDEN To: Vita Batrla <vitezslav.batrla@HIDDEN> Subject: Re: bug#35245: libltdl.so uses 32-bit search path in 64-bit mode in Solaris 11.4 In-Reply-To: <20190412090443.GB1659@ultra> Message-ID: <alpine.GSO.2.20.1904241631280.29259@HIDDEN> References: <20190412090443.GB1659@ultra> User-Agent: Alpine 2.20 (GSO 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (smtp.simplesystems.org [65.66.246.90]); Wed, 24 Apr 2019 16:39:30 -0500 (CDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux (Android) X-Received-From: 65.66.246.90 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit Cc: 35245 <at> debbugs.gnu.org, bug-libtool@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -2.4 (--) On Fri, 12 Apr 2019, Vita Batrla wrote: > Hi all, > > I noticed that 64-bit version of libtool's libltdl.so shipped in Solaris 11.4 > is compiled with 32-bit search path. This mismatch leads causes a failure to > dynamically load a module using lt_dlopen() interface. > > Here's an example of a 64-bit executable trying to dynamically load > "libcrypt.so": I agree with your problem statement and your patch, but would like to point out that loading a bare module name without a specified path is somewhat insecure and not a recommended use case. I do not recall similar problems with failing to find 64-bit modules on my Solaris (and Solaris-derived) systems, but my software stores modules in a directory with a well defined path (a wise thing to do) and opens the ".la" module wrapper file via that path. The libraries listed in the ".la" module are then loaded as expected. In the mean time, Oracle could fix the libltdl.so shipped in Solaris 11.4. Bob -- Bob Friesenhahn bfriesen@HIDDEN, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt
bug-libtool@HIDDEN:bug#35245; Package libtool.
Full text available.Received: (at 35245) by debbugs.gnu.org; 24 Apr 2019 21:39:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 24 17:39:39 2019 Received: from localhost ([127.0.0.1]:56637 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1hJPcA-0001SC-LX for submit <at> debbugs.gnu.org; Wed, 24 Apr 2019 17:39:38 -0400 Received: from smtp.simplesystems.org ([65.66.246.90]:57725) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <bfriesen@HIDDEN>) id 1hJPc8-0001Rz-Jh for 35245 <at> debbugs.gnu.org; Wed, 24 Apr 2019 17:39:37 -0400 Received: from scrappy.simplesystems.org (scrappy.simplesystems.org [65.66.246.73]) by smtp.simplesystems.org (8.14.4+Sun/8.14.4) with ESMTP id x3OLdUZc007806; Wed, 24 Apr 2019 16:39:30 -0500 (CDT) Date: Wed, 24 Apr 2019 16:39:30 -0500 (CDT) From: Bob Friesenhahn <bfriesen@HIDDEN> X-X-Sender: bfriesen@HIDDEN To: Vita Batrla <vitezslav.batrla@HIDDEN> Subject: Re: bug#35245: libltdl.so uses 32-bit search path in 64-bit mode in Solaris 11.4 In-Reply-To: <20190412090443.GB1659@ultra> Message-ID: <alpine.GSO.2.20.1904241631280.29259@HIDDEN> References: <20190412090443.GB1659@ultra> User-Agent: Alpine 2.20 (GSO 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (smtp.simplesystems.org [65.66.246.90]); Wed, 24 Apr 2019 16:39:30 -0500 (CDT) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 35245 Cc: 35245 <at> debbugs.gnu.org, bug-libtool@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) On Fri, 12 Apr 2019, Vita Batrla wrote: > Hi all, > > I noticed that 64-bit version of libtool's libltdl.so shipped in Solaris 11.4 > is compiled with 32-bit search path. This mismatch leads causes a failure to > dynamically load a module using lt_dlopen() interface. > > Here's an example of a 64-bit executable trying to dynamically load > "libcrypt.so": I agree with your problem statement and your patch, but would like to point out that loading a bare module name without a specified path is somewhat insecure and not a recommended use case. I do not recall similar problems with failing to find 64-bit modules on my Solaris (and Solaris-derived) systems, but my software stores modules in a directory with a well defined path (a wise thing to do) and opens the ".la" module wrapper file via that path. The libraries listed in the ".la" module are then loaded as expected. In the mean time, Oracle could fix the libltdl.so shipped in Solaris 11.4. Bob -- Bob Friesenhahn bfriesen@HIDDEN, http://www.simplesystems.org/users/bfriesen/ GraphicsMagick Maintainer, http://www.GraphicsMagick.org/ Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt
bug-libtool@HIDDEN:bug#35245; Package libtool.
Full text available.
Received: (at submit) by debbugs.gnu.org; 12 Apr 2019 14:28:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 12 10:28:41 2019
Received: from localhost ([127.0.0.1]:56603 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1hExAW-0005Lr-Ap
for submit <at> debbugs.gnu.org; Fri, 12 Apr 2019 10:28:40 -0400
Received: from eggs.gnu.org ([209.51.188.92]:38719)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <vitezslav.batrla@HIDDEN>) id 1hEs7T-0001VM-Rh
for submit <at> debbugs.gnu.org; Fri, 12 Apr 2019 05:05:14 -0400
Received: from lists.gnu.org ([209.51.188.17]:47637)
by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
(Exim 4.71) (envelope-from <vitezslav.batrla@HIDDEN>)
id 1hEs7N-0008UE-6U
for submit <at> debbugs.gnu.org; Fri, 12 Apr 2019 05:05:05 -0400
Received: from eggs.gnu.org ([209.51.188.92]:53064)
by lists.gnu.org with esmtp (Exim 4.71)
(envelope-from <vitezslav.batrla@HIDDEN>) id 1hEs7L-0000wN-Uj
for bug-libtool@HIDDEN; Fri, 12 Apr 2019 05:05:05 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level:
X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_40,RCVD_IN_DNSWL_MED,
UNPARSEABLE_RELAY autolearn=disabled version=3.3.2
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
(envelope-from <vitezslav.batrla@HIDDEN>) id 1hEs7K-0008RS-OF
for bug-libtool@HIDDEN; Fri, 12 Apr 2019 05:05:03 -0400
Received: from aserp2130.oracle.com ([141.146.126.79]:60472)
by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)
(Exim 4.71) (envelope-from <vitezslav.batrla@HIDDEN>)
id 1hEs7K-0008DP-Ay
for bug-libtool@HIDDEN; Fri, 12 Apr 2019 05:05:02 -0400
Received: from pps.filterd (aserp2130.oracle.com [127.0.0.1])
by aserp2130.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x3C8xjQD140281
for <bug-libtool@HIDDEN>; Fri, 12 Apr 2019 09:04:47 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com;
h=date : from : to :
subject : message-id : mime-version : content-type; s=corp-2018-07-02;
bh=ajFhy4Qd+ohtduPRakAYlru8rdJ6fU37nESZVww//Yo=;
b=H+MDzKvEwTZPTIpsqCADpVxor1/kJyRn7LlLDOiSFOtwlsEtG7vfGMQ20mV60+AGRldJ
p1byiWEL4ngv9hoSYaXPJ/tktftKcWEKb07tKxcFBIZXYUCrhSYnW0JOFUreO3NVYpes
ij7gfcu0Zafy76JcO7Ki3jXoFbj0ySyZvL9Qd7DnirY/HBLsSsFX9SV7/n7oMKhC6rz/
0eAUWo11uUn8zkEAF2W6pd0kR7Jmie9LoAq17Hng21ZiOz4if8X6Ka9T+mCMcUz6a4W1
DztVciFGxV+B+QGTZPJ+gfeR25ppLhBRRzfOFxQvT5MpqiHrJRGE2GlEp/4mXmxDGoWc yQ==
Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71])
by aserp2130.oracle.com with ESMTP id 2rphmewjn3-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
for <bug-libtool@HIDDEN>; Fri, 12 Apr 2019 09:04:47 +0000
Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1])
by aserp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x3C93h1e080636
for <bug-libtool@HIDDEN>; Fri, 12 Apr 2019 09:04:47 GMT
Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236])
by aserp3030.oracle.com with ESMTP id 2rt9uq29mr-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK)
for <bug-libtool@HIDDEN>; Fri, 12 Apr 2019 09:04:47 +0000
Received: from abhmp0001.oracle.com (abhmp0001.oracle.com [141.146.116.7])
by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x3C94k5H006865
for <bug-libtool@HIDDEN>; Fri, 12 Apr 2019 09:04:46 GMT
Received: from ultra (/10.175.53.220) by default (Oracle Beehive Gateway v4.0)
with ESMTP ; Fri, 12 Apr 2019 02:04:46 -0700
Date: Fri, 12 Apr 2019 11:04:43 +0200
From: Vita Batrla <vitezslav.batrla@HIDDEN>
To: bug-libtool@HIDDEN
Subject: libltdl.so uses 32-bit search path in 64-bit mode in Solaris 11.4
Message-ID: <20190412090443.GB1659@ultra>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="7AUc2qLy4jB3hD7Z"
Content-Disposition: inline
User-Agent: Mutt/1.9.1 (2017-09-22)
X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9224
signatures=668685
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1
malwarescore=0
phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=978
adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1
engine=8.0.1-1810050000 definitions=main-1904120061
X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=9224
signatures=668685
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
priorityscore=1501 malwarescore=0
suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011
lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0
classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000
definitions=main-1904120061
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic]
X-Received-From: 141.146.126.79
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Fri, 12 Apr 2019 10:28:38 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)
--7AUc2qLy4jB3hD7Z
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Hi all,
I noticed that 64-bit version of libtool's libltdl.so shipped in Solaris 11.4
is compiled with 32-bit search path. This mismatch leads causes a failure to
dynamically load a module using lt_dlopen() interface.
Here's an example of a 64-bit executable trying to dynamically load
"libcrypt.so":
$ truss -t open,mmapobj ./ltdldemo
openat(AT_FDCWD, "/var/ld/64/ld.config", O_RDONLY) Err#2 ENOENT
openat(AT_FDCWD, "/usr/lib/64/libltdl.so.7", O_RDONLY) = 3
openat(AT_FDCWD, "/lib/64/libc.so.1", O_RDONLY) = 3
calling lt_dlinit
calling lt_dlopen
openat(AT_FDCWD, "/usr/lib/libcrypt.so", O_RDONLY) = 3
^ found "libcrypt.so" in 32-bit path
mmapobj(3, MMOBJ_INTERPRET, 0x7FFFBF6ED210, 0x7FFFBFFFEA0C, 0x00000000) Err#48 ENOTSUP
^ failed to map it
libcrypt.so: file not found
I assume the failure is obvious. A 64-bit program doesn't like 32-bit
library (/usr/lib/libcrypt.so) and so mmapobj(2) syscall returns ENOTSUP
per its man page:
ENOTSUP The current user data model does not match the fd to be
interpreted. For example, a 32-bit process that tried to
use mmapobj() to interpret a 64-bit object would return
The fix is to use 64-bit default search path in 64-bit mode (/lib/64
/usr/lib/64). There are two workarounds:
1. LTDL_LIBRARY_PATH=/lib/64:/usr/lib/64
2. re-compile 64-bit libtool:
./configure lt_cv_sys_dlsearch_path="/lib/64 /usr/lib/64"
Perhaps the best solution would be to auto-detect whether to use 32-bit or
64-bit library search paths [1][2][3] on Solaris OS in a configure script.
Please see a suggested fix in an attached patch.
Thanks,
Vita
[1] Search paths per ld(1) man page:
LIBPATH For 32-bit libraries, the default search path is /lib,
followed by /usr/lib. For 64-bit libraries, the default
search path is /lib/64, followed by /usr/lib/64.
[2] Search paths per ld.so.1(1) man page:
The runtime linker uses a prescribed search path for locating the
dynamic dependencies of an object. The default search paths are the
runpath recorded in the object, followed by a series of defaults. For
32-bit objects, the defaults are /lib followed by /usr/lib. For 64-bit
objects, the defaults are /lib/64 followed by /usr/lib/64.
[3] Search paths per crle(1) man page:
The default search paths for 32-bit ELF objects are /lib followed
by /usr/lib. For 64-bit ELF objects, the default search paths are
/lib/64 followed by /usr/lib/64.
--7AUc2qLy4jB3hD7Z
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename="000-64-bit-sys_dlsearch_path.patch"
Prevent libltdl.so from using 32-bit search path in 64-bit mode in Solaris OS.
--- libtool-2.4.6.orig/m4/libtool.m4 Tue Jan 20 17:15:19 2015
+++ libtool-2.4.6/m4/libtool.m4 Thu Apr 11 19:20:11 2019
@@ -1456,6 +1456,7 @@
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*64-bit*)
+ SOLARIS_ISA_BITS=64
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
@@ -1478,6 +1479,9 @@
;;
esac
;;
+ *32-bit*)
+ SOLARIS_ISA_BITS=32
+ ;;
esac
fi
rm -rf conftest*
@@ -2995,6 +2999,12 @@
hardcode_into_libs=yes
# ldd complains unless libraries are executable
postinstall_cmds='chmod +x $lib'
+ if test 32 = "$SOLARIS_ISA_BITS"; then
+ sys_lib_search_path_spec="/lib /usr/lib"
+ else
+ sys_lib_search_path_spec="/lib/64 /usr/lib/64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
;;
sunos4*)
--7AUc2qLy4jB3hD7Z--
Vita Batrla <vitezslav.batrla@HIDDEN>:bug-libtool@HIDDEN.
Full text available.bug-libtool@HIDDEN:bug#35245; Package libtool.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.