FYI: branch-1-5: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-13 Thread Ralf Wildenhues
Hi Kean,

* Kean Johnston wrote on Sat, Nov 12, 2005 at 07:15:24PM CET:
 Since this is really for a dying libtool branch, what the heck, repost
 as above.  At least it would match your usage pattern with
 -absolute-soname, too.
 
 Ok attached please find the revised patch. I was unable to
 avoid the test in the setting of hardcode_libdir_flag_spec
 but I think you'll agree this looks a great deal cleaner.

OK, thanks.  Yes, that's better.  I had thought to avoid the extra
quoting `\$SCOABSPATH' so that it would be invisible to the user from
the libtool output, but the way that is now is ok with me.  However,
it's a good idea not to carry this into CVS HEAD for another reason:
Sometime after 2.0 I may want to reform the quoting stuff a bit, both
to allow file names with spaces and possibly for efficiency.  Above
may not work any more then.


I went over the patch once, and installed it after a few small
modifications:
- use `test' instead of `[ ]'
- reformat comments a bit, fix typo execurity - security
- fixed quoting of allow_undefined_flag (use single quotes so the
  expansion occurs in libtool, not in configure).

A couple of open questions remain:
- was the quoting for allow_undefined_flag different on purpose
  (i.e., because of some bug in ltmain)?
- the archive_cmds and archive_expsyms_cmds do not make use of
  allow_undefined_flag at all (they used to do so before),
  that makes its setting ineffective.
  Could you be bothered to post a followup patch to fix this
  (including ChangeLog entry, if possible)?

Here's what I installed.  In a followup patch, I'll remove the
now-unnecessary cruft from AC_LIBTOOL_LANG_C_CONFIG.  :)

Cheers, and thank you,
Ralf

2005-11-13  Kean Johnston  [EMAIL PROTECTED],
Tim Rice [EMAIL PROTECTED]

* libtool.m4 (AC_LIBTOOL_SYS_DYNAMIC_LINKER)
(AC_DEPLIBS_CHECK_METHOD, AC_LIBTOOL_LANG_C_CONFIG)
(AC_LIBTOOL_LANG_CXX_CONFIG, AC_LIBTOOL_PROG_COMPILER_PIC)
(AC_LIBTOOL_PROG_LD_SHLIBS)
[ sco3.2v5, sysv4, sysv4.3, sysv5, sco3.2v5, sco5v6, unixware,
OpenUNIX, sysv4*uw2 ]: Complete overhaul of SCO support.
* THANKS: Updated.

Index: THANKS
===
RCS file: /cvsroot/libtool/libtool/THANKS,v
retrieving revision 1.34.2.12
diff -u -r1.34.2.12 THANKS
--- THANKS  4 Nov 2005 16:46:54 -   1.34.2.12
+++ THANKS  13 Nov 2005 17:32:59 -
@@ -59,6 +59,7 @@
   Noah Jeffrey Misch   [EMAIL PROTECTED] 2004-07-05
   Thorsten Glaser  [EMAIL PROTECTED] 
2004-10-11 
   Peter Ekberg [EMAIL PROTECTED] 2005-04-12
+  Tim Rice [EMAIL PROTECTED] 2005-11-10
 
 
 * The following additional people made especially gracious contributions of
@@ -105,7 +106,6 @@
   Steven M. Schultz[EMAIL PROTECTED]
   Sven Verdoolaege [EMAIL PROTECTED]
   Tim Mooney   [EMAIL PROTECTED]
-  Tim Rice [EMAIL PROTECTED]
   Todd Vierling[EMAIL PROTECTED]
   Tom Tromey   [EMAIL PROTECTED]
   Tor Lillqvist[EMAIL PROTECTED]
Index: libtool.m4
===
RCS file: /cvsroot/libtool/libtool/Attic/libtool.m4,v
retrieving revision 1.314.2.132
diff -u -r1.314.2.132 libtool.m4
--- libtool.m4  13 Nov 2005 15:09:27 -  1.314.2.132
+++ libtool.m4  13 Nov 2005 17:21:14 -
@@ -1657,13 +1657,6 @@
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -1689,7 +1682,7 @@
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -1722,17 +1715,27 @@
   fi
   ;;
 
-sysv5*)
-  version_type=linux
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  if test 

FYI: HEAD: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-13 Thread Ralf Wildenhues
Hi Tim, Kean,

* Tim Rice wrote on Thu, Nov 10, 2005 at 07:59:52PM CET:
 On Thu, 10 Nov 2005, Ralf Wildenhues wrote:
  
  Could you or Tim resubmit the patch like this for branch-1-5?
  Then, when you forward-port to CVS HEAD, leave out the SCOABSPATH part;
 
 Here is the forward port without the SCOABSPATH bits.

Thanks.  Similar to the branch-1-5 patch, I installed this after these
small modifications:
- reformat comments a bit, fix typo execurity - security
- fixed quoting of allow_undefined_flag (use single quotes so the
  expansion occurs in libtool, not in configure).

Accordingly, these questions remain here as well:
- was the quoting for allow_undefined_flag different on purpose
  (i.e., because of some bug in ltmain)?
- the archive_cmds and archive_expsyms_cmds do not make use of
  allow_undefined_flag at all; that makes its setting ineffective.
  Could you be bothered to post a followup patch to fix this
  (including ChangeLog entry, if possible)?

Installed patch below.

Cheers, and thanks again,
Ralf

2005-11-13  Kean Johnston  [EMAIL PROTECTED],
Tim Rice  [EMAIL PROTECTED]

* libltdl/m4/libtool.m4 (_LT_SYS_DYNAMIC_LINKER)
(_LT_CHECK_MAGIC_METHOD, _LT_COMPILER_PIC, _LT_LINKER_SHLIBS)
(_LT_LANG_C_CONFIG, _LT_LANG_CXX_CONFIG)
[ sco3.2v5, sysv4, sysv4.3, sysv5, sco3.2v5, sco5v6, unixware,
OpenUNIX, sysv4*uw2 ]: Complete overhaul of SCO support.
* THANKS: Updated.

Index: THANKS
===
RCS file: /cvsroot/libtool/libtool/THANKS,v
retrieving revision 1.49
diff -u -r1.49 THANKS
--- THANKS  4 Nov 2005 16:45:52 -   1.49
+++ THANKS  13 Nov 2005 18:55:59 -
@@ -59,6 +59,7 @@
   Noah Jeffrey Misch   [EMAIL PROTECTED] 2004-07-05
   Thorsten Glaser  [EMAIL PROTECTED] 
2004-10-11 
   Peter Ekberg [EMAIL PROTECTED] 2005-04-12
+  Tim Rice [EMAIL PROTECTED] 2005-11-10
 
 
 * The following additional people made especially gracious contributions of
@@ -105,7 +106,6 @@
   Steven M. Schultz[EMAIL PROTECTED]
   Sven Verdoolaege [EMAIL PROTECTED]
   Tim Mooney   [EMAIL PROTECTED]
-  Tim Rice [EMAIL PROTECTED]
   Todd Vierling[EMAIL PROTECTED]
   Tom Tromey   [EMAIL PROTECTED]
   Tor Lillqvist[EMAIL PROTECTED]
Index: libltdl/m4/libtool.m4
===
RCS file: /cvsroot/libtool/libtool/libltdl/m4/libtool.m4,v
retrieving revision 1.43
diff -u -r1.43 libtool.m4
--- libltdl/m4/libtool.m4   12 Nov 2005 11:54:13 -  1.43
+++ libltdl/m4/libtool.m4   13 Nov 2005 17:20:53 -
@@ -2373,13 +2373,6 @@
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -2405,7 +2398,7 @@
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2437,6 +2430,28 @@
   fi
   ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test $with_gnu_ld = yes; then
+sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib 
/usr/lib /lib'
+  else
+sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+case $host_os in
+  sco3.2v5*)
+sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
+   ;;
+esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
   version_type=linux
@@ -2867,19 +2882,15 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
 lt_cv_deplibs_check_method='file_magic 

Re: FYI: branch-1-5: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-13 Thread Ralf Wildenhues
* Ralf Wildenhues wrote on Sun, Nov 13, 2005 at 08:06:42PM CET:
 * Kean Johnston wrote on Sat, Nov 12, 2005 at 07:15:24PM CET:
  
  Ok attached please find the revised patch.
 
 A couple of open questions remain:
 - was the quoting for allow_undefined_flag different on purpose
   (i.e., because of some bug in ltmain)?
 - the archive_cmds and archive_expsyms_cmds do not make use of
   allow_undefined_flag at all (they used to do so before),
   that makes its setting ineffective.
   Could you be bothered to post a followup patch to fix this
   (including ChangeLog entry, if possible)?

Another one (sorry, I thought I had it listed):

- You change shlibpath_overrides_runpath depending on the linker.
  This makes little sense, as this is a rtld feature, not a ld one.
  Is there a rationale to this?

Cheers,
Ralf




Re: FYI: branch-1-5: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-13 Thread Kean Johnston

OK, thanks.  Yes, that's better.  I had thought to avoid the extra
quoting `\$SCOABSPATH' so that it would be invisible to the user from
the libtool output, but the way that is now is ok with me.  However,
it's a good idea not to carry this into CVS HEAD for another reason:
Sometime after 2.0 I may want to reform the quoting stuff a bit, both
to allow file names with spaces and possibly for efficiency.  Above
may not work any more then.

Right, ans I'm sure we will craft an entirely different mechanism
for supporting absolute pathnames.


A couple of open questions remain:
- was the quoting for allow_undefined_flag different on purpose
  (i.e., because of some bug in ltmain)?

Almost certainly not. Most likely just habbit. I'll check to make
sure though.


- the archive_cmds and archive_expsyms_cmds do not make use of
  allow_undefined_flag at all (they used to do so before),
  that makes its setting ineffective.
  Could you be bothered to post a followup patch to fix this
  (including ChangeLog entry, if possible)?

Absolutely. I think it was an oversight, but I will test and
make sure and ocrrect it.


Here's what I installed.  In a followup patch, I'll remove the

Most excelent, thank you Ralf.

Kean




Re: FYI: branch-1-5: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-13 Thread Kean Johnston

- You change shlibpath_overrides_runpath depending on the linker.
  This makes little sense, as this is a rtld feature, not a ld one.
  Is there a rationale to this?

Yes indeed :)

And the interpretation of LD_LIBRARY_PATH is an RTLD feature,
but both the SVR4 and GNU ld use it during actual library creation.
See the man page Tim pointed you at, and the code in
binutils/ld/emultempl/elf32.em. The reason it changes based on
link editor is that the SVR4/OSR5 ld looks at LD_LIBRARY_PATH
first, then at any DT_RUNPATH or DT_RPATH entries its found
along the way. In GNU ld, that order is reversed, hence with
GNU ld, setting LD_LIBRARY_PATH really doesn't override
DT_RUNPATH whereas on OSR5/SVR4, it really does. Without this,
two tests, I believe the rebuild ones, fail, and tell you to
set shlibpath_overrides_runpath to no (when using GNU ld).

Kean




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-12 Thread Kean Johnston

Since this is really for a dying libtool branch, what the heck, repost
as above.  At least it would match your usage pattern with
-absolute-soname, too.


Ok attached please find the revised patch. I was unable to
avoid the test in the setting of hardcode_libdir_flag_spec
but I think you'll agree this looks a great deal cleaner.

Kean
Index: libtool.m4
===
RCS file: /cvsroot/libtool/libtool/Attic/libtool.m4,v
retrieving revision 1.314.2.128
diff -u -3 -p -u -r1.314.2.128 libtool.m4
--- libtool.m4  10 Nov 2005 18:29:38 -  1.314.2.128
+++ libtool.m4  12 Nov 2005 18:11:51 -
@@ -1652,13 +1652,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -1684,7 +1677,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -1717,17 +1710,27 @@ sysv4*MP*)
   fi
   ;;
 
-sysv5*)
-  version_type=linux
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  if test $with_gnu_ld = yes; then
+sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib 
/usr/lib /lib'
+shlibpath_overrides_runpath=no
+  else
+sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+shlibpath_overrides_runpath=yes
+case $host_os in
+  sco3.2v5*)
+sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
+   ;;
+esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
   ;;
 
 uts4*)
@@ -2353,15 +2356,11 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB 
(shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
@@ -2388,7 +2387,7 @@ sysv4 | sysv4.2uw2* | sysv4.3*)
   esac
   ;;
 
-unixware7* | sysv5*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
@@ -2634,13 +2633,6 @@ _LT_LINKER_BOILERPLATE
 # Check for any special shared library compilation flags.
 #
 _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
-if test $GCC = no; then
-  case $host_os in
-  sco3.2v5*)
-_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
-;;
-  esac
-fi
 if test -n $_LT_AC_TAGVAR(lt_prog_cc_shlib, $1); then
   AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build 
shared libraries])
   if echo $old_CC $old_CFLAGS  | grep [[
]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[]] /dev/null; then :
@@ -3488,19 +3480,6 @@ case $host_os in
 # FIXME: insert proper C++ library support
 _LT_AC_TAGVAR(ld_shlibs, $1)=no
 ;;
-  sco*)
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-case $cc_basename in
-  CC*)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-  *)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-esac
-;;
   sunos4*)
 case $cc_basename in
   CC*)
@@ -3593,27 +3572,57 @@ case $host_os in
;;
 esac
 ;;
-  sysv5OpenUNIX8* | sysv5UnixWare7.[[01]].[[01]]* | sysv5uw[[78]]* | 
unixware7*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | 
sco3.2v5.0.[[024]]*)
+_LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+runpath_var='LD_RUN_PATH'
+
 case $cc_basename in
   CC*)
-   _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
-   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib 
$libobjs $deplibs $compiler_flags'
-   _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-

Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-10 Thread Ralf Wildenhues
Hi Kean,

* Kean Johnston wrote on Wed, Nov 09, 2005 at 10:26:11AM CET:
 I believe hardcode_libdir_flag_spec should be set to 
   '${wl}-R,$libdir'
 in any case.  This has little to do with absolute sonames, but with the
 dependent programs finding the library.  So the SCOABSPATH hack is
 mixing up different issues here.
 Not at all. If you are using absolute path names you have absolutely
 no need to have a DT_RUNPATH entry in the executable, and in fact,
 having one there can change the runtime semantics of the program
 becuase the search order for libraries will be subtly different

D'oh, I read the logic the wrong way round (i.e., I thought you added
the -R$libdir only when SCOABSPATH was set, not when it was unset).
Sorry for that confusion.

 (for any shared libraries that do *not* have absolute path names
 becuase they were constructed before the libtool patch). That has
 forseeable, albeit unlikely, security implications. Here's why.
 
 Suppose, for arguments sake, you had an a.out with a DT_RUNPATH
 entry pointing to /usr/pgsql/lib. That a.out is has the following
 DT_NEEDED entries:
/usr/lib/libc.so.1
/usr/pgsql/lib/libpq.so.8
libz.so.1
 
 The /usr/pgsql directory is owned by the PostgreSQL db admin, who
 in BigCorp, isn't root, just a DBA. All that DBA needs to do to
 get root on that machine is put in a libz.so.1 in /usr/pgsql/lib
 and wait for root to run a postgres command at voila, they have
 root access.
 
 Without the DT_RUNPATH entry, the RTLD will use the normal
 LD_LIBRARY_PATH and standard system locations, which we can assume
 a competant root will protect himself from.

Ah, ok.  Hmm, this means though that we /may/ need to refine my
absolute-soname proposal.

- When linking against a library that has an absolute soname, we should
  not add its path to rpath.  This probably requires that the installed
  library has a .la file present, and the absolute path setting is
  recorded there, so we can know about this fact.

Now what I don't know is: Do we also need to parameterize this question?
IOW: if an absolute soname overrides whatever other paths are used for
searching, then we wouldn't have to take care of this step.  OTOH, if it
could not be overridden at all at link time (as opposed to at execution
time), that would prevent DESTDIR setups, which would suck. :-/
(I don't know if such a system exists.)

With your current SCOABSPATH hack, the information would not be present
in the installed .la files, so when you finally upgrade to a working
-absolute-soname libtool, you will still have to install everything
again, or we'd have to add yet another (really gross, and
system-dependent) hack to find out whether the soname of the installed
library is absolute.  Right?  The change of hardcode_libdir_flag_spec
depends not on whether your currently compiled library will have
absolute soname, but whether your installations of its dependencies had
it.

Other than above thoughts: your scenario _is_ pretty artificial, don't
you think?  I mean, if you either don't trust your PostgreSQL db admin,
or if you have a root admin that executes postgres commands (or any
commands at all, FWIW) without thinking, you have bigger problems than
worrying about shared library searching?!  I mean, he could just add
malicious code right in libpq anyway, no need for any shared library
search order games?  ;)
(But you do have a point anyway: you might want to guard against him
inadvertantly installing a different libz there.)

Cheers,
Ralf




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-10 Thread Ralf Wildenhues
Hi Kean,

* Kean Johnston wrote on Wed, Nov 09, 2005 at 10:18:27AM CET:
 Well, I believe the SCOABSPATH is not only ugly, but also broken (from a
 libtool perspective): if you have a package which creates two libraries,
 one depending on the other, your uninstalled library will link against a
 previous installed version, if that exists.  While testing, this is
 wrong.
 I agree its ugly but its a necessary evil. All the point you raise
 about it being generalized are valid, and I will help out as much
 as I can to make that happen. But its going to take a while for
 2.0 to be adopted. Meanwhile, I believe a new release of 1.5 is
 imminent, and people are likely to upgrade to that, and it will be
 around for a while. The problem is, as things currently stand,
 libtool will create shared libraries that expose a severe security
 flaw.

OK.  I'll take the SCOABSPATH, but would rather like it a bit
differently, if you agree:

The way I understand your intentions, it should suffice if you can
decide at configure time about the absoluteness of the paths (rather
than at link time).  So you could do this instead:

  if test -z $SCOABSPATH; then
archive_cmds='bla bla'
archive_expsyms_cmds='bla otherbla'
  else
# ...
  fi

which would be at least a lot more readable.

Could you or Tim resubmit the patch like this for branch-1-5?
Then, when you forward-port to CVS HEAD, leave out the SCOABSPATH part;
we shall try to get -allow-absolute-soname working (and can still think
about moving the hack forward if that doesn't work out).  At the first
occurrence of SCOABSPATH, please add a comment that this thingy will not
be supported, and that it breaks testing of uninstalled libraries.

Would this be ok with you?

Cheers,
Ralf




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-10 Thread Tim Rice
On Thu, 10 Nov 2005, Ralf Wildenhues wrote:

 
 Could you or Tim resubmit the patch like this for branch-1-5?

I'll let Kean work on this one.

 Then, when you forward-port to CVS HEAD, leave out the SCOABSPATH part;

Here is the forward port without the SCOABSPATH bits.

And how it looks on my platforms.
http://www.multitalents.net/head-status.html

-- 
Tim RiceMultitalents(707) 887-1469
[EMAIL PROTECTED]
--- libltdl/m4/libtool.m4.old   2005-11-08 12:11:19.0 -0800
+++ libltdl/m4/libtool.m4   2005-11-10 05:48:07.0 -0800
@@ -2364,13 +2364,6 @@
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -2396,7 +2389,7 @@
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2428,6 +2421,28 @@
   fi
   ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test $with_gnu_ld = yes; then
+sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib 
/usr/lib /lib'
+  else
+sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+case $host_os in
+  sco3.2v5*)
+sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
+   ;;
+esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
   version_type=linux
@@ -2849,19 +2864,15 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB 
(shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
@@ -2882,13 +2893,12 @@
   siemens)
 lt_cv_deplibs_check_method=pass_all
 ;;
+  pc)
+lt_cv_deplibs_check_method=pass_all
+;;
   esac
   ;;
 
-sysv4*uw2* | unixware7*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3490,15 +3500,6 @@
;;
   psos*)
;;
-  sco*)
-   case $cc_basename in
- CC*)
-   _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-   ;;
- *)
-   ;;
-   esac
-   ;;
   solaris*)
case $cc_basename in
  CC*)
@@ -3530,6 +3531,15 @@
;;
esac
;;
+  sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+   case $cc_basename in
+ CC*)
+   _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+   _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+   _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+   ;;
+   esac
+   ;;
   tandem*)
case $cc_basename in
  NCC*)
@@ -3540,8 +3550,6 @@
;;
esac
;;
-  unixware*)
-   ;;
   vxworks*)
;;
   *)
@@ -3715,11 +3723,6 @@
   _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
   ;;
 
-sco3.2v5*)
-  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
-  _LT_TAGVAR(lt_prog_compiler_static, $1)='-dn'
-  ;;
-
 solaris*)
   _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
   _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -3737,7 +3740,7 @@
   _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.2uw2* | sysv4.3*)
   _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
   _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
   _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -3750,6 +3753,12 @@
   fi
   ;;
 
+sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+  ;;
+
 unicos*)
   _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
   

Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-10 Thread Kean Johnston

The way I understand your intentions, it should suffice if you can
decide at configure time about the absoluteness of the paths (rather
than at link time).  So you could do this instead:

  if test -z $SCOABSPATH; then
archive_cmds='bla bla'
archive_expsyms_cmds='bla otherbla'
  else
# ...
  fi

which would be at least a lot more readable.

Sure, I can do that, I'm open for compromise :) The only reason
I did it the way it currently stands is it allows me to do the
following:

  ./configure
  make install
  make clean
  SCOABSPATH=1 make install DESTDIR=/whatever

with no intervening re-running of configure in between. In fact
the SCOABSPATH thing as it currently stands used to look a great
deal neater. Perhaps this would be more acceptable (I suspect it
might), so that I can preserve the above behaviour (line split
by mailer, not in script):

  archive_cmds='$CC -shared
${wl},-h${SCOABSPATH:+${install_libdir}/}$soname -o $lib
$libobjs $deplibs $compiler_flags'

It has the exact same effect, but looks a *great* deal cleaner.
In fact, before I submitted the patch thats how it looked. I
changed it to the current mechanism becuase I thought it made
it more obvious what was happening. But I can see your point
about it being ugly as sin.

If even that is too ugly for you, then I guess I can live with
the pain of having to re-run configure to enable the absolute
path stuff, but I'm really hoping not :)


about moving the hack forward if that doesn't work out).  At the first
occurrence of SCOABSPATH, please add a comment that this thingy will not
be supported, and that it breaks testing of uninstalled libraries.

I can certainly do that. Is there a suitable place in the doc
for platform specific quirks that I can document it more
eloquently and obviously too?

Kean




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-10 Thread Ralf Wildenhues
Hi Kean,

* Kean Johnston wrote on Thu, Nov 10, 2005 at 10:35:09PM CET:
 The way I understand your intentions, it should suffice if you can
 decide at configure time about the absoluteness of the paths (rather
 than at link time).  So you could do this instead:
 
   if test -z $SCOABSPATH; then

 which would be at least a lot more readable.
 Sure, I can do that, I'm open for compromise :) The only reason
 I did it the way it currently stands is it allows me to do the
 following:
 
   ./configure
   make install
   make clean
   SCOABSPATH=1 make install DESTDIR=/whatever

I know.  You could even `find . -name \*.la | xargs rm' to avoid the
`make clean'.

 with no intervening re-running of configure in between. In fact
 the SCOABSPATH thing as it currently stands used to look a great
 deal neater. Perhaps this would be more acceptable (I suspect it
 might), so that I can preserve the above behaviour (line split
 by mailer, not in script):
 
   archive_cmds='$CC -shared
 ${wl},-h${SCOABSPATH:+${install_libdir}/}$soname -o $lib
 $libobjs $deplibs $compiler_flags'
 
 It has the exact same effect, but looks a *great* deal cleaner.
 In fact, before I submitted the patch thats how it looked. I
 changed it to the current mechanism becuase I thought it made
 it more obvious what was happening. But I can see your point
 about it being ugly as sin.

Well, this is better than your previous version.  Still, innocent users
happening to compile a package see the SCOABSPATH, and this is what bugs
me (yes, I know #users = 2).

 If even that is too ugly for you, then I guess I can live with
 the pain of having to re-run configure to enable the absolute
 path stuff, but I'm really hoping not :)

Since this is really for a dying libtool branch, what the heck, repost
as above.  At least it would match your usage pattern with
-absolute-soname, too.

 about moving the hack forward if that doesn't work out).  At the first
 occurrence of SCOABSPATH, please add a comment that this thingy will not
 be supported, and that it breaks testing of uninstalled libraries.
 I can certainly do that. Is there a suitable place in the doc
 for platform specific quirks that I can document it more
 eloquently and obviously too?

I had hoped doc/notes.texi (CVS HEAD) to be for platform specific
questions, but: I definitely don't want to see it in there.  I don't
want it prominently documented; just people that find it anyway should
also be able to find the comment do not rely on this.

Cheers,
Ralf




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-09 Thread Kean Johnston
I believe hardcode_libdir_flag_spec should be set to 
  '${wl}-R,$libdir'

in any case.  This has little to do with absolute sonames, but with the
dependent programs finding the library.  So the SCOABSPATH hack is
mixing up different issues here.

Not at all. If you are using absolute path names you have absolutely
no need to have a DT_RUNPATH entry in the executable, and in fact,
having one there can change the runtime semantics of the program
becuase the search order for libraries will be subtly different
(for any shared libraries that do *not* have absolute path names
becuase they were constructed before the libtool patch). That has
forseeable, albeit unlikely, security implications. Here's why.

Suppose, for arguments sake, you had an a.out with a DT_RUNPATH
entry pointing to /usr/pgsql/lib. That a.out is has the following
DT_NEEDED entries:
   /usr/lib/libc.so.1
   /usr/pgsql/lib/libpq.so.8
   libz.so.1

The /usr/pgsql directory is owned by the PostgreSQL db admin, who
in BigCorp, isn't root, just a DBA. All that DBA needs to do to
get root on that machine is put in a libz.so.1 in /usr/pgsql/lib
and wait for root to run a postgres command at voila, they have
root access.

Without the DT_RUNPATH entry, the RTLD will use the normal
LD_LIBRARY_PATH and standard system locations, which we can assume
a competant root will protect himself from.

Kean




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-09 Thread Kean Johnston

Well, I believe the SCOABSPATH is not only ugly, but also broken (from a
libtool perspective): if you have a package which creates two libraries,
one depending on the other, your uninstalled library will link against a
previous installed version, if that exists.  While testing, this is
wrong.

I agree its ugly but its a necessary evil. All the point you raise
about it being generalized are valid, and I will help out as much
as I can to make that happen. But its going to take a while for
2.0 to be adopted. Meanwhile, I believe a new release of 1.5 is
imminent, and people are likely to upgrade to that, and it will be
around for a while. The problem is, as things currently stand,
libtool will create shared libraries that expose a severe security
flaw.

Picture this. Someone compiles KDE for their box. It creates
a bunch of shared libraries using libtool. kterm is setuid root.
A user can now trivially get root on that box if they are running
an older release of SCO.

The intent of SCOABSPATH was admittedly a little selfish. I would
*really* like it if for once, just once, I can pull down a package
and do a ./configure; make and have it do the right thing. If I
have to maintain my own patched libtool I have to re-autoconf the
thing and on some packages, that is very painful.

I would really *really* beg that you let me keep the SCOABSPATH
thing in as it stands. For normal usage, it doesn't interfere
with anybody or anything. Its localized to an OS that a relatively
few number of people care about. Its primary user is me, who is
pendantic in teh extreme about compiling packages. For example,
I always compile twice: first time I do a make install, then I
recompile with SCOABSPATH set and to a make install DESTDIR=/whatever
for packaging and production. It is by far the safest way to fly.
When the more generalized work can be done for 2.0, and more
packages adopt it, maybe I wont have to do that.

libtool is meant to be a tool for developers. The reality is,
there are two of us at SCO that provide 90% of the open source
stuff for our platform. I tend to focus on stuff that makes it
in-product, and Ron Record does the stuff for our Skunkware
collection of open source tools. Between the two of us, you've
covered about 50% of the users of libtool on SCO platforms :)
SCOABSPATH as it currently stands really helps us immensely.

Also, with due respect, if you are going to reject the patch
just becuase of the SCOABSPATH thing can I please ask you to
reconsider? It may look unclean but in reality its really
pretty simple ... insert a libtool variable into another libtool
variable is an environment variable is set. There are far
worse things going on in libtool :)

Kean




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-09 Thread Tim Rice
On Wed, 9 Nov 2005, Ralf Wildenhues wrote:

Hi Ralf,
 
 * Tim Rice wrote on Wed, Nov 09, 2005 at 06:57:16AM CET:
  I don't know if this is any help or not, but here are the
  before and after stats on the (sco) platforms I have running.
  http://www.multitalents.net/branch-1-5-status.html
 
 Thanks.  It would be even better if you could show the output of the
 failed test groups with VERBOSE=x set.  :)
 (remember you have to run the tests in groups for them to work)
 
 There are a few new failures.  I wonder why they fail now but did not
 before the patch.  Maybe the verbose output of the ones that passed
 would help, too.

There are new failures on UnixWare 2.03 and OpenServer 5.0.4.
Of all those platforms listed, those two are the ones I least care about.
There are probably only a handful of UW2.03 boxes running in the entire
world. And I'm probably the only one that tries to run libtool on it.
Although there are more OpenServer 5.0.4 boxes running, it's likely that
the number of libtool users on 5.0.4 are very small. They normally just
go to SCO's skunkware site and download binaries.

The platforms we care about, UnixWare 7.1.4, OpenServer 6.0.0,
OpenServer 5.0.7, (and to a lesser extent) UnixWare 7.1.1 are either
the same or better. (And even if they are the same test wise, what
Kean has done is more correct (ignoring the SCOBASEPATH stuff))

I've attached the failures from UW711. I'll be glad to try out any
ideas on how to fix the 3 failures.

I suspect if we can figure out the build-relink test that will fix
the build-relink2 test also. Those 2 would would put the OpenServer 5.0.4
even with before.

-- 
Tim RiceMultitalents(707) 887-1469
[EMAIL PROTECTED]


uw711-build-relink-fail.gz
Description: uw711-build-relink-fail.gz


uw711-build-relink2-fail.gz
Description: uw711-build-relink2-fail.gz


uw711-link-order-fail.gz
Description: uw711-link-order-fail.gz


Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-11-08 Thread Tim Rice
On Tue, 1 Nov 2005, Ralf Wildenhues wrote:

 Hi Kean,
 
 * Kean Johnston wrote on Mon, Oct 31, 2005 at 06:43:03PM CET:
  Patch 7 of 10 attached ...
  
  Here's a re-submission using install_libdir instead of the
  'instrpath' hack I invented.
 
  Rationale:
  
  I like it when things work on my platform :)
 
 Ugh.  It's really difficult to judge over this huge patch -- would have
 been much easier without the SCOABSPATH part.  Also, I haven't checked
 closely yet (other eyes appreciated!), so I'll only give a few
 suggestions:

I don't know if this is any help or not, but here are the
before and after stats on the (sco) platforms I have running.
http://www.multitlents.net/branch-1-5-status.html

 By the way, is there good online documentation for these systems' ld and
 dynamic loader?

ld man pages are here.

UnixWare 7.1.1
http://docsrv.sco.com/cgi-bin/man/man?ld+1

UnixWare 7.1.4
http://uw714doc.sco.com/en/man/html.1/ld.1.html

OpenServer 6.0.0
http://osr600doc.sco.com/en/man/html.CP/ld.CP.html

OpenServer 5.0.7
http://osr507doc.sco.com/en/man/html.CP/ld.CP.html

OpenServer 5.0.6
http://osr5doc.ca.caldera.com:457/cgi-bin/man/man?ld+CP

OpenServer 5.0.5
http://osr5doc.ca.caldera.com:1997/cgi-bin/man/man?ld+CP

 
 Cheers,
 Ralf
 

-- 
Tim RiceMultitalents(707) 887-1469
[EMAIL PROTECTED]






Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-10-31 Thread Peter O'Gorman

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Kean Johnston wrote:
|
| -sco3.2v5*)
| -  version_type=osf

I haven't looked closely yet, but I worry about changing the version_type,
as it will result in startlingly different output on these platforms for
different versions of libtool.

Peter
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.0 (Darwin)

iQCVAwUBQ2YtHriDAg3OZTLPAQI7pQP/QDhNqLqpsP3Ra8/OdhnLktnAOOKF94nY
YPTVEkwjuwBM1fQOvKj5v+lNNBWPdeoM2qbPjcuoGqzD1YiRcEEgyVybfRO49P82
vdrKmMrbcbxoM9KD7vjSXzC7hVfSyWFbTGVD20G4KAD59U6pD/GbcnUEWWm1xK+r
wMFGCmwxuKs=
=d4Tj
-END PGP SIGNATURE-




Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-10-31 Thread Kean Johnston

Kean Johnston wrote:

Patch 7 of 10 attached ...


Here's a re-submission using install_libdir instead of the
'instrpath' hack I invented.

Kean
Rationale:

I like it when things work on my platform :)

2005-10-24  Kean Johnston  [EMAIL PROTECTED]

* libtool.m4: Complete overhaul of SCO support.

Index: libtool.m4
===
RCS file: /cvsroot/libtool/libtool/Attic/libtool.m4,v
retrieving revision 1.314.2.115
diff -u -3 -p -r1.314.2.115 libtool.m4
--- libtool.m4  9 Oct 2005 06:26:21 -   1.314.2.115
+++ libtool.m4  30 Oct 2005 21:22:24 -
@@ -1623,13 +1635,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -1655,7 +1660,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -1688,17 +1693,27 @@ sysv4*MP*)
   fi
   ;;
 
-sysv5*)
-  version_type=linux
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  if test $with_gnu_ld = yes; then
+shlibpath_overrides_runpath=no
+sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib 
/usr/lib /lib'
+  else
+shlibpath_overrides_runpath=yes
+sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+case $host_os in
+  sco3.2v5*)
+sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
+   ;;
+esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
   ;;
 
 uts4*)
@@ -2319,15 +2334,11 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB 
(shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
@@ -2354,7 +2365,7 @@ sysv4 | sysv4.2uw2* | sysv4.3*)
   esac
   ;;
 
-unixware7* | sysv5*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
@@ -2600,13 +2615,6 @@ _LT_LINKER_BOILERPLATE
 # Check for any special shared library compilation flags.
 #
 _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
-if test $GCC = no; then
-  case $host_os in
-  sco3.2v5*)
-_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
-;;
-  esac
-fi
 if test -n $_LT_AC_TAGVAR(lt_prog_cc_shlib, $1); then
   AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build 
shared libraries])
   if echo $old_CC $old_CFLAGS  | grep [[
]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[]] /dev/null; then :
@@ -3477,19 +3485,6 @@ case $host_os in
 # FIXME: insert proper C++ library support
 _LT_AC_TAGVAR(ld_shlibs, $1)=no
 ;;
-  sco*)
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-case $cc_basename in
-  CC*)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-  *)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-esac
-;;
   sunos4*)
 case $cc_basename in
   CC*)
@@ -3582,27 +3577,48 @@ case $host_os in
;;
 esac
 ;;
-  sysv5OpenUNIX8* | sysv5UnixWare7.[[01]].[[01]]* | sysv5uw[[78]]* | 
unixware7*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | 
sco3.2v5.0.[[024]]*)
+_LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+runpath_var='LD_RUN_PATH'
+
 case $cc_basename in
   CC*)
-   _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
-   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib 
$libobjs $deplibs $compiler_flags'
-   _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-   runpath_var='LD_RUN_PATH'
-

Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-10-31 Thread Ralf Wildenhues
Hi Kean,

* Kean Johnston wrote on Mon, Oct 31, 2005 at 06:43:03PM CET:
 Patch 7 of 10 attached ...
 
 Here's a re-submission using install_libdir instead of the
 'instrpath' hack I invented.

 Rationale:
 
 I like it when things work on my platform :)

Ugh.  It's really difficult to judge over this huge patch -- would have
been much easier without the SCOABSPATH part.  Also, I haven't checked
closely yet (other eyes appreciated!), so I'll only give a few
suggestions:

- the SCOABSPATH stuff should likely be replaced by a generic libtool
option to achieve the same thing, or dropped.  Failing that, libtool
should to things on SCO the way it does on other platforms, ie. hardcode
the stuff that's not found by default.  (New features are post 2.0, by
the way.)

- You may and should use `~' as command separator in *_cmds, together
with newlines.  For example:
  foo_cmds='ls~echo~cat baz~
if $foo; then bar; fi'

- Ideally, C++ support should be tested with CVS HEADs template library
tests first.. but that is optional.

- the `-belf' setting (sco3.2v5*) vanished completely:
| -  sco3.2v5*)
| -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'

Oversight?  If not: it's the only cruft that uses lt_prog_cc_shlib at
all, so the whole bag of that can go as well.

- the ChangeLog entry is, umm, a bit terse.  But granted, it's not
needed until the rest is in good shape.

By the way, is there good online documentation for these systems' ld and
dynamic loader?

Cheers,
Ralf

 2005-10-24  Kean Johnston  [EMAIL PROTECTED]
 
   * libtool.m4: Complete overhaul of SCO support.
 




SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-10-30 Thread Kean Johnston

Patch 7 of 10 attached ...
Rationale:

I like it when things work on my platform :)

2005-10-24  Kean Johnston  [EMAIL PROTECTED]

* libtool.m4: Complete overhaul of SCO support.

Index: libtool.m4
===
RCS file: /cvsroot/libtool/libtool/Attic/libtool.m4,v
retrieving revision 1.314.2.115
diff -u -3 -p -r1.314.2.115 libtool.m4
--- libtool.m4  9 Oct 2005 06:26:21 -   1.314.2.115
+++ libtool.m4  30 Oct 2005 21:22:24 -
@@ -1623,13 +1635,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -1655,7 +1660,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -1688,17 +1693,27 @@ sysv4*MP*)
   fi
   ;;
 
-sysv5*)
-  version_type=linux
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  if test $with_gnu_ld = yes; then
+shlibpath_overrides_runpath=no
+sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib 
/usr/lib /lib'
+  else
+shlibpath_overrides_runpath=yes
+sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+case $host_os in
+  *-*-sco3.2v5*)
+sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
+   ;;
+esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
   ;;
 
 uts4*)
@@ -2319,15 +2334,11 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB 
(shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
@@ -2354,7 +2365,7 @@ sysv4 | sysv4.2uw2* | sysv4.3*)
   esac
   ;;
 
-unixware7* | sysv5*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
@@ -2600,13 +2615,6 @@ _LT_LINKER_BOILERPLATE
 # Check for any special shared library compilation flags.
 #
 _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
-if test $GCC = no; then
-  case $host_os in
-  sco3.2v5*)
-_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
-;;
-  esac
-fi
 if test -n $_LT_AC_TAGVAR(lt_prog_cc_shlib, $1); then
   AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build 
shared libraries])
   if echo $old_CC $old_CFLAGS  | grep [[
]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[]] /dev/null; then :
@@ -3477,19 +3485,6 @@ case $host_os in
 # FIXME: insert proper C++ library support
 _LT_AC_TAGVAR(ld_shlibs, $1)=no
 ;;
-  sco*)
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-case $cc_basename in
-  CC*)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-  *)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-esac
-;;
   sunos4*)
 case $cc_basename in
   CC*)
@@ -3582,27 +3577,48 @@ case $host_os in
;;
 esac
 ;;
-  sysv5OpenUNIX8* | sysv5UnixWare7.[[01]].[[01]]* | sysv5uw[[78]]* | 
unixware7*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | 
sco3.2v5.0.[024]*)
+_LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+runpath_var='LD_RUN_PATH'
+
 case $cc_basename in
   CC*)
-   _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
-   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib 
$libobjs $deplibs $compiler_flags'
-   _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-   runpath_var='LD_RUN_PATH'
-   _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o 

Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-10-30 Thread Tim Rice
On Sun, 30 Oct 2005, Kean Johnston wrote:

 Patch 7 of 10 attached ...
 
 Rationale:
 
 I like it when things work on my platform :)
 
 2005-10-24  Kean Johnston  [EMAIL PROTECTED]
 
 * libtool.m4: Complete overhaul of SCO support.
 

I'm attaching a corrected patch.

.
 case $host_os in
+  sco3.2v5*)
-  *-*-sco3.2v5*)
 sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
;;
 esac


Missing some square brackets.
-  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | 
sco3.2v5.0.[024]*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | 
sco3.2v5.0.[[024]]*)


-- 
Tim RiceMultitalents(707) 887-1469
[EMAIL PROTECTED]
--- libtool.m4.old  2005-10-15 13:12:08.0 -0700
+++ libtool.m4  2005-10-30 18:30:34.371040302 -0800
@@ -1623,13 +1635,6 @@
   sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -1655,7 +1660,7 @@
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -1688,17 +1693,27 @@
   fi
   ;;
 
-sysv5*)
-  version_type=linux
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix 
${libname}${release}${shared_ext} $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  if test $with_gnu_ld = yes; then
+shlibpath_overrides_runpath=no
+sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib 
/usr/lib /lib'
+  else
+shlibpath_overrides_runpath=yes
+sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+case $host_os in
+  sco3.2v5*)
+sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
+   ;;
+esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
   ;;
 
 uts4*)
@@ -2319,15 +2334,11 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
 lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB 
(shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
@@ -2354,7 +2365,7 @@
   esac
   ;;
 
-unixware7* | sysv5*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
@@ -2600,13 +2615,6 @@
 # Check for any special shared library compilation flags.
 #
 _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
-if test $GCC = no; then
-  case $host_os in
-  sco3.2v5*)
-_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
-;;
-  esac
-fi
 if test -n $_LT_AC_TAGVAR(lt_prog_cc_shlib, $1); then
   AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build 
shared libraries])
   if echo $old_CC $old_CFLAGS  | grep [[
]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[]] /dev/null; then :
@@ -3477,19 +3485,6 @@
 # FIXME: insert proper C++ library support
 _LT_AC_TAGVAR(ld_shlibs, $1)=no
 ;;
-  sco*)
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-case $cc_basename in
-  CC*)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-  *)
-   # FIXME: insert proper C++ library support
-   _LT_AC_TAGVAR(ld_shlibs, $1)=no
-   ;;
-esac
-;;
   sunos4*)
 case $cc_basename in
   CC*)
@@ -3582,27 +3577,48 @@
;;
 esac
 ;;
-  sysv5OpenUNIX8* | sysv5UnixWare7.[[01]].[[01]]* | sysv5uw[[78]]* | 
unixware7*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | 
sco3.2v5.0.[[024]]*)
+_LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+runpath_var='LD_RUN_PATH'
+
 case $cc_basename in
   CC*)
-   _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
-   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib 
$libobjs $deplibs 

Re: SCO/bugfix patch 7 of 10: Improve SCO platform support

2005-10-30 Thread Kean Johnston

Tim Rice wrote:

On Sun, 30 Oct 2005, Kean Johnston wrote:



Patch 7 of 10 attached ...

Rationale:

I like it when things work on my platform :)

2005-10-24  Kean Johnston  [EMAIL PROTECTED]

   * libtool.m4: Complete overhaul of SCO support.




I'm attaching a corrected patch.

.
 case $host_os in
+  sco3.2v5*)
-  *-*-sco3.2v5*)
 sys_lib_search_path_spec=$sys_lib_search_path_spec /lib
;;
 esac



Ooops sorry Tim. You told me about that one and I dropped the ball.
Sorry :(