Well here's a nice ten-liner that will undo the recent damage to HPUX
32 bit builds using HP's compilers/linkers;
+ cc -b -Wl,-B,symbolic,+vnocompatwarnings,-z,+h,libssl.sl.0.9.7 -o
libssl.sl.0.9.7 -Wl,-Fl,libssl.a -ldld
chmod: can't access libssl.sl.0.9.7
WTF is it about? Well, used to link using ld directly, now we are
passing through cc. But without splitting -Wl,-Fl from libssl.a with
a space, therefore without libssl.a as a link input, cc says "ha! nothing
to link" and -silently- goes away (leaving the user wondering, for hours,
what didn't just happen.) Yes, of course there is no libssl.sl.0.9.7.
Secondly, once we remove the space, we crash out with
/usr/ccs/bin/ld: CODE_ONE_SYM fixup to non-code subspace in file
/opt/langtools/lib/crt0.o - shared library must be position
independent. Use +z or +Z to recompile.
http://mail.gnome.org/archives/gtk-list/1999-March/msg00704.html reports
similar issues, with no resolution on how-to-exclude crt0.o from the 'cc'
flavor, so the patch proposes to go back to using ld as worked in 0.9.7e
and other releases.
Finally -b +s disappeared between 0.9.7e and 0.9.7i, for what reason I do
not know, but it certainly is needed on 32 bit builds. Now if the flag
interferes with the 64 bit ld/link loader, then perhaps these can go into
their own set of 32-bit flavor flags? immediately prior to -Fl? Discussion
welcome, I'm happy to play with the 64 bit flavor in about 2-3 weeks when
I'm back from ApacheCon.
Bill
--- Makefile 21 Oct 2005 18:18:09 -0000
+++ Makefile 7 Dec 2005 00:35:44 -0000
@@ -516,11 +516,11 @@
shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
fi; \
[ -f $$shlib ] && rm -f $$shlib; \
- ALLSYMSFLAGS='-Wl,-Fl'; \
- expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
- ( set -x; ${CC} ${SHARED_LDFLAGS} \
- -Wl,-B,symbolic,+vnocompatwarnings,-z,+h,$$shlib \
- -o $$shlib $$ALLSYMSFLAGS,lib$$i.a -ldld ) || exit 1; \
+ ALLSYMSFLAGS='-Fl'; \
+ expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='+forceload'; \
+ ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
+ -B symbolic +vnocompatwarnings -b -z +s +h $$shlib \
+ -o $$shlib $$ALLSYMSFLAGS lib$$i.a -ldld -lc ) || exit 1; \
chmod a=rx $$shlib; \
done
--- Makefile.org 21 Oct 2005 18:18:09 -0000
+++ Makefile.org 7 Dec 2005 00:35:44 -0000
@@ -516,11 +516,11 @@
shlib=lib$$i.sl.${SHLIB_MAJOR}.${SHLIB_MINOR}; \
fi; \
[ -f $$shlib ] && rm -f $$shlib; \
- ALLSYMSFLAGS='-Wl,-Fl'; \
- expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='-Wl,+forceload'; \
- ( set -x; ${CC} ${SHARED_LDFLAGS} \
- -Wl,-B,symbolic,+vnocompatwarnings,-z,+h,$$shlib \
- -o $$shlib $$ALLSYMSFLAGS,lib$$i.a -ldld ) || exit 1; \
+ ALLSYMSFLAGS='-Fl'; \
+ expr $(PLATFORM) : 'hpux64' > /dev/null && ALLSYMSFLAGS='+forceload'; \
+ ( set -x; /usr/ccs/bin/ld ${SHARED_LDFLAGS} \
+ -B symbolic +vnocompatwarnings -b -z +s +h $$shlib \
+ -o $$shlib $$ALLSYMSFLAGS lib$$i.a -ldld -lc ) || exit 1; \
chmod a=rx $$shlib; \
done