[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[MLB] AIX fixes patch
From: |
Robert Boehne |
Subject: |
[MLB] AIX fixes patch |
Date: |
Sat, 02 Jun 2001 14:14:48 -0500 |
Hello,
This patch enables run time linking under AIX 4.2+ when the
-brtl flag is set in LDFLAGS and also fixes the incorrect
settings of static_flag when using gcc/g++. I've done some
work to the original patch generated by Albert Chin, and
updated the patch to the current MLB.
ChangeLog entry:
2001-06-02 Albert Chin <address@hidden>
* ltconfig.in [aix4* | aix5*]: Enable the $aix_use_runtimelinking
variable to turn on run time linking if -brtl is in LDFLAGS.
* ltcf-gcj.sh ditto.
* ltcf-c.sh ditto. Also fix incorrect setting of lt_cv_prog_cc_static
when using gcc.
* ltcf-cxx.sh ditto.
Robert
--
Robert Boehne Software Engineer
Ricardo Software Chicago Technical Center
TEL: (630)789-0003 x. 238
FAX: (630)789-0127
email: address@hidden
Index: ltcf-c.sh
===================================================================
RCS file: /cvsroot/libtool/libtool/Attic/ltcf-c.sh,v
retrieving revision 1.1.2.36
diff -u -r1.1.2.36 ltcf-c.sh
--- ltcf-c.sh 2001/04/24 23:58:18 1.1.2.36
+++ ltcf-c.sh 2001/06/02 19:05:52
@@ -268,6 +268,31 @@
;;
aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does runtime linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
hardcode_direct=yes
hardcode_libdir_separator=':'
link_all_deplibs=yes
@@ -303,29 +328,14 @@
if test "$host_cpu" = ia64; then
shared_flag='${wl}-G'
else
- shared_flag='${wl}-bM:SRE'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
fi
fi
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # Test if we are trying to use run time linking, or normal AIX style
linking.
- # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
- aix_use_runtimelinking=no
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
# -bexpall does not export symbols beginning with underscore (_)
always_export_symbols=yes
if test "$aix_use_runtimelinking" = yes; then
@@ -333,7 +343,11 @@
# link without error, but may produce a broken library.
allow_undefined_flag=' ${wl}-berok'
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname
$libobjs $deplibs $compiler_flags ${allow_undefined_flag}
'"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+
+ # Shared library flag -G must be at the end of the link line
+ # because it is the conglomeration of other flags and we don't
+ # want any user-supplied flags overriding the behavior of -G.
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs
$compiler_flags '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols
$shared_flag"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
@@ -347,8 +361,8 @@
whole_archive_flag_spec=' '
build_libtool_need_lc=yes
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
- # This is similar to how AIX traditionally builds it's shared
libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname
$libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols
${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS
$output_objdir/$libname$release.a $output_objdir/$soname'
+ # This is similar to how AIX traditionally builds it's shared libraries
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname
$libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry~$AR
$AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
fi
fi
;;
@@ -620,12 +634,7 @@
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_cv_prog_cc_static='-Bstatic'
- else
- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
+ ac_cv_prog_cc_pic=
;;
amigaos*)
# FIXME: we need at least 68020 code to build shared libraries, but
@@ -663,8 +672,14 @@
# PORTME Check for PIC flags for the system compiler.
case $host_os in
aix*)
- # All AIX code is PIC.
- ac_cv_prog_cc_static="$ac_cv_prog_cc_static ${ac_cv_prog_cc_wl}-lC"
+ ac_cv_prog_cc_wl='-Wl,'
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ ac_cv_prog_cc_static='-Bstatic'
+ else
+ ac_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+ fi
;;
hpux9* | hpux10* | hpux11*)
Index: ltcf-cxx.sh
===================================================================
RCS file: /cvsroot/libtool/libtool/Attic/ltcf-cxx.sh,v
retrieving revision 1.1.2.47
diff -u -r1.1.2.47 ltcf-cxx.sh
--- ltcf-cxx.sh 2001/05/28 20:59:25 1.1.2.47
+++ ltcf-cxx.sh 2001/06/02 19:05:52
@@ -121,6 +121,31 @@
ld_shlibs=no
;;
aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
archive_cmds=''
hardcode_direct=yes
hardcode_libdir_separator=':'
@@ -157,36 +182,24 @@
if test "$host_cpu" = ia64; then
shared_flag='${wl}-G'
else
- shared_flag='${wl}-bM:SRE'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
fi
fi
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # Test if we are trying to use run time linking, or normal AIX style
linking.
- # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
- aix_use_runtimelinking=no
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
# It seems that -bexpall does not export symbols beginning with
# underscore (_), so it is better to generate a list of symbols to export.
always_export_symbols=yes
if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag=' ${wl}-berok'
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
- allow_undefined_flag=' -Wl,-G'
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname
$libobjs $deplibs $compiler_flags ${allow_undefined_flag}
'"\${wl}$no_entry_flag \${wl}-brtl \${wl}$exp_sym_flag:\$export_symbols"
+
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs
$compiler_flags '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols
$shared_flag"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
@@ -204,7 +217,7 @@
whole_archive_flag_spec=' '
build_libtool_need_lc=yes
# This is similar to how AIX traditionally builds it's shared
libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname
$libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols
${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS
$output_objdir/$libname$release.a $output_objdir/$soname'
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname
$libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry
${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a
$output_objdir/$soname'
fi
fi
;;
@@ -666,12 +679,7 @@
case $host_os in
aix*)
# All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_cv_prog_cc_static='-Bstatic'
- else
- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
- fi
+ ac_cv_prog_cc_pic=
;;
amigaos*)
# FIXME: we need at least 68020 code to build shared libraries, but
@@ -708,12 +716,13 @@
else
case $host_os in
aix4* | aix5*)
+ ac_cv_prog_cc_wl='-Wl,'
# All AIX code is PIC.
if test "$host_cpu" = ia64; then
# AIX 5 now supports IA64 processor
- lt_cv_prog_cc_static='-Bstatic'
+ ac_cv_prog_cc_static='-Bstatic'
else
- lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+ ac_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
fi
;;
chorus*)
Index: ltcf-gcj.sh
===================================================================
RCS file: /cvsroot/libtool/libtool/Attic/ltcf-gcj.sh,v
retrieving revision 1.1.2.21
diff -u -r1.1.2.21 ltcf-gcj.sh
--- ltcf-gcj.sh 2001/04/24 23:58:18 1.1.2.21
+++ ltcf-gcj.sh 2001/06/02 19:05:52
@@ -605,13 +605,8 @@
# PIC is the default for these OSes.
;;
aix*)
- # Below there is a dirty hack to force normal static linking with -ldl
- # The problem is because libdl dynamically linked with both libc and
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
- # we not sure about C++ programs.
- ac_cv_prog_cc_static="$ac_cv_prog_cc_static ${ac_cv_prog_cc_wl}-lC"
+ # All aix code is PIC.
+ ac_cv_prog_cc_pic=
;;
*djgpp*)
# DJGPP does not suppot shared libraries at all
Index: ltconfig.in
===================================================================
RCS file: /cvsroot/libtool/libtool/Attic/ltconfig.in,v
retrieving revision 1.246.2.61
diff -u -r1.246.2.61 ltconfig.in
--- ltconfig.in 2001/05/28 20:09:07 1.246.2.61
+++ ltconfig.in 2001/06/02 19:05:52
@@ -1540,8 +1540,8 @@
echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
test "$can_build_shared" = "no" && enable_shared=no
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
+# On AIX 3, shared libraries and static libraries use the same namespace,
+# and are all built from PIC.
case $host_os in
aix3*)
test "$enable_shared" = yes && enable_static=no
@@ -1552,7 +1552,9 @@
;;
aix4*)
- test "$enable_shared" = yes && enable_static=no
+ if test "$aix_use_runtimelinking" != yes; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
;;
esac
- [MLB] AIX fixes patch,
Robert Boehne <=