GNU bug report logs - #22373
Preloading symbols on Solaris 11.3

Previous Next

Package: libtool;

Reported by: Martyn Plummer <plummerm <at> iarc.fr>

Date: Thu, 14 Jan 2016 16:04:01 UTC

Severity: normal

To reply to this bug, email your comments to 22373 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-libtool <at> gnu.org:
bug#22373; Package libtool. (Thu, 14 Jan 2016 16:04:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Martyn Plummer <plummerm <at> iarc.fr>:
New bug report received and forwarded. Copy sent to bug-libtool <at> gnu.org. (Thu, 14 Jan 2016 16:04:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Martyn Plummer <plummerm <at> iarc.fr>
To: "bug-libtool <at> gnu.org" <bug-libtool <at> gnu.org>
Subject: Preloading symbols on Solaris 11.3
Date: Thu, 14 Jan 2016 10:29:17 +0000
[Message part 1 (text/plain, inline)]
Solaris 11.3 (released October 2015) introduced a change in the "nm"
utility which breaks the ability of autoconf to detect that ltdl can use
preloaded symbols. The attached one-line patch fixes the problem.

My software [1] uses autoconf and incorporates the macro file libtool.m4
into the configure script. On Solaris 11.3 I get the following in
config.log:

libltdl_cv_preloaded_symbols=no

This is a change from Solaris 11.2 when the result was "yes".

The bug strikes when the variable "lt_cv_sys_global_symbol_pipe" is set.
The built-in test for the global symbol pipe fails and it is reset to
null.

The  program conftest.c created for the test of the global symbol pipe
is:

#ifdef __cplusplus
extern "C" {
#endif
char nm_test_var;
void nm_test_func(void);
void nm_test_func(void){}
#ifdef __cplusplus
}
#endif
int main(){nm_test_var='a';nm_test_func();return(0);}

Under Solaris 11.2, the result of "/usr/bin/nm -p" on the object file
for this test program is

0000000032 T main
0000000016 T nm_test_func
0000000001 D nm_test_var

(additional lines of output omitted for clarity). Under 11.3 this is now

0000000032 T main
0000000016 T nm_test_func
0000000001 C nm_test_var

So nm_test_var is now listed as common ("C") instead of initialized data
("D"). This brings the behaviour of Oracle's nm in line with the GNU
version. 

Currently "C" is not recognized as a possible symbol code on Solaris.
Therefore nm_test_var is not extracted by the global symbol pipe and the
test fails. This bug is fixed in the attached patch for libtool.m4,
which adds "C" to the regular expression symcode for Solaris.

best regards
Martyn Plummer

PS The nm utility on Solaris is provided by the base-developer-utilities
package, and the change occurred between versions
0.5.11-0.175.2.0.0.42.2 and 0.5.11-0.175.3.0.0.30.0.

[1]
http://sourceforge.net/projects/mcmc-jags/files/JAGS/4.x/Source/JAGS-4.0.1.tar.gz

-----------------------------------------------------------------------
This message and its attachments are strictly confidential. If you are
not the intended recipient of this message, please immediately notify
the sender and delete it. Since its integrity cannot be guaranteed,
its content cannot involve the sender's responsibility. Any misuse,
any disclosure or publication of its content, either whole or partial,
is prohibited, exception made of formally approved use
-----------------------------------------------------------------------
[solaris-libtool.patch (text/x-patch, attachment)]

This bug report was last modified 9 years and 215 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.