Ack. Thanks, Ramesh.
On 2/10/2017 7:35 PM, Anders Widell wrote: > Makefile.am | 3 ++- > README | 12 ++++++++++-- > opensaf.spec.in | 2 +- > samples/Makefile.common | 1 + > src/base/Makefile.am | 3 ++- > tools/cluster_sim_uml/build_uml | 4 ++-- > 6 files changed, 18 insertions(+), 7 deletions(-) > > > An application binary linked with the OpenSAF AIS libraries may fail to load > after upgrading to OpenSAF 5.2. The reason is that libopensaf_core.so.0 has > moved from /usr/local/lib to /usr/local/lib/opensaf. This problem can happen > if > the following two conditions are met: > > * The application was linked without using the -Wl,--as-needed option (and > this > option is not enabled by default by the Linux distribution used when > building > the application binary) > * The directory /usr/local/lib/opensaf is not listed in LD_LIBRARY_PATH or > /etc/ld.so.conf > > This is fixed by: > > * Moving libopensaf_core back to /usr/local/lib > * Updating the documentation to mention that -Wl,--as-needed must to be used > when linking with the OpenSAF libraries, to avoid similar problems in the > future. > > diff --git a/Makefile.am b/Makefile.am > --- a/Makefile.am > +++ b/Makefile.am > @@ -1,6 +1,7 @@ > # -*- OpenSAF -*- > # > # (C) Copyright 2008 The OpenSAF Foundation > +# Copyright Ericsson AB 2009, 2017 - All Rights Reserved. > # > # This program is distributed in the hope that it will be useful, but > # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > @@ -54,7 +55,7 @@ AM_CPPFLAGS = \ > > AM_CFLAGS = -pipe -std=gnu11 @OSAF_HARDEN_FLAGS@ -Wall -Wformat=2 -Werror > AM_CXXFLAGS = -pipe -std=gnu++11 @OSAF_HARDEN_FLAGS@ -Wall -Wformat=2 > -Werror > -AM_LDFLAGS = @OSAF_HARDEN_FLAGS@ -ldl -lrt -pthread -rdynamic > +AM_LDFLAGS = @OSAF_HARDEN_FLAGS@ -Wl,--as-needed -ldl -lrt -pthread -rdynamic > ACLOCAL_AMFLAGS = -I m4 > OSAF_LIB_FLAGS = > > diff --git a/README b/README > --- a/README > +++ b/README > @@ -824,6 +824,7 @@ installed with the other system `*.pc' f > There are two easy ways to use `pkgconfig'. The first one is to call it > directly > from a `Makefile' and assign its content to make variables e.g.: > > + AMF_LDFLAGS=-Wl,--as-needed > AMF_LIBS=`pkg-config opensaf-amf --libs` > AMF_CFLAGS=`pkg-config opensaf-amf --cflags` > > @@ -837,8 +838,15 @@ It will then provides two special variab > > -- in Makefile.am -- > mumble_CFLAGS = @AMF_CFLAGS@ > + mumble_LDFLAGS = -Wl,--as-needed > mumble_LDADD = @AMF_LIBS@ > > +The --as-needed ld flag is enabled by default on many modern Linux > +distributions, but just to be on the safe side please make sure to add > +-Wl,--as-needed to your LDFLAGS when linking application programs with the > +OpenSAF AIS libraries. Otherwise the resulting binary may not be compatible > with > +other versions of OpenSAF. > + > > How to Configure `OpenSAF' > ========================== > @@ -918,13 +926,13 @@ The `Makefile' looks for installed `SAF > standard system wide locations (e.g. /usr/include/ & /usr/lib/): > > INCLUDES = -I. > - LDFLAGS = -lSaAmf > + LDFLAGS = -Wl,--as-needed -lSaAmf > > If you have `OpenSAF' development packages installed somewhere else, > override > the default values e.g.: > > % make INCLUDES="-I. -I/tmp/usr/local/include" \ > - LDFLAGS="-L/tmp/usr/local/lib -lSaAmf -lopensaf_core" > + LDFLAGS="-Wl,--as-needed -L/tmp/usr/local/lib -lSaAmf -lopensaf_core" > > To run an application you will need a configured `OpenSAF' node running. > > diff --git a/opensaf.spec.in b/opensaf.spec.in > --- a/opensaf.spec.in > +++ b/opensaf.spec.in > @@ -1427,7 +1427,7 @@ fi > %files libs > %defattr(-,root,root) > %dir %{_pkglibdir} > -%{_pkglibdir}/libopensaf_core.so.* > +%{_libdir}/libopensaf_core.so.* > %{_pkglibdir}/libosaf_common.so.* > > %files tools > diff --git a/samples/Makefile.common b/samples/Makefile.common > --- a/samples/Makefile.common > +++ b/samples/Makefile.common > @@ -1,5 +1,6 @@ > AM_CPPFLAGS = $(all_includes) > AM_CFLAGS = -fPIC -Wall > +AM_LDFLAGS = -Wl,--as-needed > #AM_CFLAGS = -fPIC -Wall -Werror > > lsbinitdir = $(initscriptdir) > diff --git a/src/base/Makefile.am b/src/base/Makefile.am > --- a/src/base/Makefile.am > +++ b/src/base/Makefile.am > @@ -1,6 +1,7 @@ > # -*- OpenSAF -*- > # > # (C) Copyright 2016 The OpenSAF Foundation > +# Copyright Ericsson AB 2017 - All Rights Reserved. > # > # This program is distributed in the hope that it will be useful, but > # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > @@ -14,7 +15,7 @@ > # Author(s): Ericsson AB > # > > -osaf_lib_LTLIBRARIES += lib/libopensaf_core.la > +lib_LTLIBRARIES += lib/libopensaf_core.la > > lib_libopensaf_core_la_CFLAGS = $(OSAF_LIB_FLAGS) -fno-strict-aliasing > $(AM_CFLAGS) > > diff --git a/tools/cluster_sim_uml/build_uml b/tools/cluster_sim_uml/build_uml > --- a/tools/cluster_sim_uml/build_uml > +++ b/tools/cluster_sim_uml/build_uml > @@ -84,7 +84,7 @@ cmd_build_testprog() { > -I$opensaf_home/src/osaf/saf \ > -DSA_EXTENDED_NAME_SOURCE \ > -o $installd/amf_demo $src/amf_demo.c \ > - -L$libd -lSaAmf -lamf_common -L$libd/opensaf -lopensaf_core > + -Wl,--as-needed "-Wl,-rpath-link,$libd:$libd/opensaf" "-L$libd" -lSaAmf > > echo "Creating [$root/root.cpio] ..." > cmd_mkcpio > @@ -110,7 +110,7 @@ cmd_install_testprog() { > -I$opensaf_home/src/osaf/saf \ > -DSA_EXTENDED_NAME_SOURCE \ > -o $installd/amf_demo $src/amf_demo.c \ > - -L$libd -lSaAmf -lamf_common -L$libd/opensaf -lopensaf_core > + -Wl,--as-needed "-Wl,-rpath-link,$libd:$libd/opensaf" "-L$libd" -lSaAmf > > test -r $immxml.orig || cp $immxml $immxml.orig > $opensaf_home/src/imm/tools/immxml-merge \ ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel