Bug 204563
Summary: | Solaris build problem | ||||||
---|---|---|---|---|---|---|---|
Product: | [Retired] 389 | Reporter: | Noriko Hosoi <nhosoi> | ||||
Component: | Directory Server | Assignee: | Noriko Hosoi <nhosoi> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Viktor Ashirov <vashirov> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | 1.0.2 | ||||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | sparc | ||||||
OS: | Other | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2015-12-07 16:36:56 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 152373, 240316 | ||||||
Attachments: |
|
Description
Noriko Hosoi
2006-08-30 00:30:53 UTC
Solaris build has started failing since we switched to v5.17-sun-merge. The
reason is the new LDAP C SDK contains the sasl symbols. By default, the
undefined symbols are allowed in the shared library. But libmakefile is
explicitly setting '-z defs' to the ld command line (see the comments in
libmakefile below). That kind of checking is not done on the other platforms.
How do we want to fix this? 1) Adding "-lsasl2" to build libslapd.so? Or 2)
dropping "-z defs"?
--noriko
$ nm
/share/builds/components/ldapsdk50/v5.17/SunOS5.9_64_DBG.OBJ/lib/libldap50.so |
grep "\<sasl_"
$
$ nm
/share/builds/sbsintegration/ldapcsdk/v5.17-sun-merge/SunOS5.9_64_DBG.OBJ/lib/libldap50.so
| grep "\<sasl_"
[1944] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_client_init
[1782] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_client_new
[1743] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_client_start
[1949] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_client_step
[1880] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_decode
[1647] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_dispose
[1861] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_encode
[1832] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_errdetail
[1824] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_getprop
[1760] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_set_alloc
[1710] | 0| 0|FUNC |GLOB |0 |UNDEF |sasl_setprop
ldap/servers/slapd/libmakefile
# for Solaris, our most common unix build platform, we check for undefined
# symbols at link time so we don't catch them at run time. To do this, we
# set the -z defs flag. We also have to add explicitly link with the C and
# C++ runtime libraries (e.g., -lc) because, even though ld and CC link
# with them implicitly, -z defs will throw errors if we do not link with
# them explicitly.
ifeq ($(ARCH), SOLARIS)
LINK_DLL += -z defs
>From 'man ld'
-z defs | nodefs
The -z defs option forces a fatal error if any unde-
fined symbols remain at the end of the link. This is
the default when an executable is built, but for his-
toric reasons is not the default when building a
shared object. Use of the -z defs option is recom-
mended, as it assures the object being built is self-
contained, that is, that all its symbolic references
are resolved internally or to the object's immediate
dependencies.
The -z nodefs option allows undefined symbols. For
historic reasons, this is the default when a shared
object is built. When used with executables, the
behavior of references to such undefined symbols is
unspecified. Use of the -z nodefs option is not recom-
mended
We have to give up "-z defs" for libback-ldbm.so, too. Index: Makefile =================================================================== RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/Makefile,v retrieving revision 1.7 diff -t -w -U10 -r1.7 Makefile --- Makefile 19 Apr 2005 22:07:37 -0000 1.7 +++ Makefile 30 Aug 2006 01:38:13 -0000 @@ -127,21 +127,22 @@ ifeq ($(ARCH), SOLARIS) EXTRA_LIBS_DEP += \ $(LDAPSDK_DEP) \ $(LDAP_LIBLDIF_DEP) \ $(LDAP_LIBAVL_DEP) EXTRA_LIBS += \ $(LDAPLINK) $(SECURITYLINK) $(NSPRLINK) \ $(LDAP_LIBLDIF) \ $(LDAP_LIBAVL) \ $(DLL_EXTRA_LIBS) -lc -LINK_DLL += -z defs +# All the dependent libraries may not be linked with. (e.g., Cyrus SASL) +# LINK_DLL += -z defs endif Created attachment 135180 [details]
cvs commit message
As discussed in the Directory Server meeting, checked in the makefiles into
HEAD.
Verified build: /share/dev4/ds/ds80/logs/20071129.1/mars_Solaris9 libslapd.so is successfully built: /usr/ccs/bin/ld -64 -G -h libslapd.so.0 -o .libs/libslapd.so.0.0.0 ldap/servers/slapd/.libs/libslapd_la-add.o ... -L/usr/lib/sparcv9 -lssldap60 -lprldap60 -lldap60 -lldif60 -lsasl2 -lsvrcore -lssl3 -lnss3 -lsoftokn3 -lplc4 -lplds4 -lnspr4 -lc (cd .libs && rm -f libslapd.so.0 && ln -s libslapd.so.0.0.0 libslapd.so.0) (cd .libs && rm -f libslapd.so && ln -s libslapd.so.0.0.0 libslapd.so) creating libslapd.la I.e., verified. |