mirror of
https://github.com/rkd77/elinks.git
synced 2024-09-28 03:06:20 -04:00
1044: Check for -rdynamic with libraries.
With Sun Studio 11 on Solaris 9, we get "cc: Warning: illegal option -dynamic"; then, cc proceeds anyway, but the option can prevent the linker from finding the libraries listed in -l operands. To detect this, move the -rdynamic check in configure.in down to a place where the libraries have already been added to $LDFLAGS. So if -rdynamic interferes with the search for libraries, ELinks won't use it. Merely moving the test would also change the location of -rdynamic in $LDFLAGS. Counteract that by making the test add -rdynamic to the beginning of $LDFLAGS, rather than to the end. This may make the test more reliable on Solaris.
This commit is contained in:
parent
64f0f6e7a8
commit
49f529a582
2
NEWS
2
NEWS
@ -30,6 +30,8 @@ includes the changes listed under "ELinks 0.11.4.GIT now" below.
|
|||||||
SSL errors especially in HTTP POST requests using GnuTLS.
|
SSL errors especially in HTTP POST requests using GnuTLS.
|
||||||
* minor bug 951: SpiderMonkey scripting objects used to prevent ELinks
|
* minor bug 951: SpiderMonkey scripting objects used to prevent ELinks
|
||||||
from removing files from the memory cache.
|
from removing files from the memory cache.
|
||||||
|
* build bug 1044: Check whether -rdynamic works with libraries.
|
||||||
|
With Sun Studio 11 on Solaris 9, it reportedly doesn't.
|
||||||
|
|
||||||
Bugs that should be removed from NEWS before the 0.12.0 release:
|
Bugs that should be removed from NEWS before the 0.12.0 release:
|
||||||
|
|
||||||
|
79
configure.in
79
configure.in
@ -250,42 +250,6 @@ EL_CHECK_CODE([variadic macros], HAVE_VARIADIC_MACROS,
|
|||||||
#define a(b,c...) printf(b,##c)],
|
#define a(b,c...) printf(b,##c)],
|
||||||
[a("foo");a("%s","bar");a("%s%s","baz","quux");])
|
[a("foo");a("%s","bar");a("%s%s","baz","quux");])
|
||||||
|
|
||||||
# Check for -rdynamic
|
|
||||||
#
|
|
||||||
# gcc -rdynamic calls ld -export-dynamic, which adds all symbols of
|
|
||||||
# the executable to its dynamic symbol table. ELinks uses this for
|
|
||||||
# two purposes:
|
|
||||||
#
|
|
||||||
# 1. If ELinks detects a bug, it can try to display a backtrace by
|
|
||||||
# calling backtrace_symbols_fd() in the GNU libc. The glibc-2.3.6
|
|
||||||
# manual states users of GNU ld must pass -rdynamic to make the
|
|
||||||
# symbols available to the program.
|
|
||||||
#
|
|
||||||
# 2. It would eventually be nice to dynamically load shared
|
|
||||||
# libraries as plugins (bug 73). The plugins must be able to
|
|
||||||
# call ELinks functions. This can be implemented either by
|
|
||||||
# registering all callable functions in ELinks-specific data
|
|
||||||
# structures, or by letting the dynamic linker handle them.
|
|
||||||
# The latter way requires something equivalent to -rdynamic.
|
|
||||||
#
|
|
||||||
# Because backtraces are not needed for correct operation, and bug
|
|
||||||
# 73 is not yet being fixed, the configure script and makefiles
|
|
||||||
# should not complain to the user if they find that -rdynamic does
|
|
||||||
# not work. Besides, it was reported at elinks-users on 2006-09-12
|
|
||||||
# that gcc-3.4.2 with "ld: Software Generation Utilities - Solaris
|
|
||||||
# Link Editors: 5.8-1.284" on Sun Solaris 8 Sparc does not support
|
|
||||||
# -rdynamic but does something equivalent automatically. (This was
|
|
||||||
# tested with "nm -D elinks | grep redraw_from_window".)
|
|
||||||
#
|
|
||||||
# FIXME: This check doesn't work. Something to do with the compiler
|
|
||||||
# happily ignoring it and stderr not being checked for error messages.
|
|
||||||
AC_MSG_CHECKING([for -rdynamic])
|
|
||||||
LDFLAGS_X="$LDFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS -rdynamic"
|
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[have_rdynamic=yes],[have_rdynamic=no])
|
|
||||||
test "$have_rdynamic" = no && LDFLAGS="$LDFLAGS_X"
|
|
||||||
AC_MSG_RESULT($have_rdynamic)
|
|
||||||
|
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# Check for POSIX <regex.h>
|
# Check for POSIX <regex.h>
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
@ -1357,12 +1321,55 @@ AC_ARG_ENABLE(weehoofooboomookerchoo,
|
|||||||
[AC_MSG_ERROR(Are you strange, or what?)])
|
[AC_MSG_ERROR(Are you strange, or what?)])
|
||||||
|
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# Further LDFLAGS tweaks
|
||||||
|
# ===================================================================
|
||||||
|
|
||||||
# == EMX hack
|
# == EMX hack
|
||||||
|
|
||||||
test "$CONFIG_OS_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS="$LDFLAGS -Zexe"
|
||||||
test "$CONFIG_OS_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
|
test "$CONFIG_OS_OS2" = yes && LDFLAGS=`echo "$LDFLAGS" | sed "s/-Zbin-files//g"`
|
||||||
|
|
||||||
|
|
||||||
|
# Check for -rdynamic
|
||||||
|
#
|
||||||
|
# gcc -rdynamic calls ld -export-dynamic, which adds all symbols of
|
||||||
|
# the executable to its dynamic symbol table. ELinks uses this for
|
||||||
|
# two purposes:
|
||||||
|
#
|
||||||
|
# 1. If ELinks detects a bug, it can try to display a backtrace by
|
||||||
|
# calling backtrace_symbols_fd() in the GNU libc. The glibc-2.3.6
|
||||||
|
# manual states users of GNU ld must pass -rdynamic to make the
|
||||||
|
# symbols available to the program.
|
||||||
|
#
|
||||||
|
# 2. It would eventually be nice to dynamically load shared
|
||||||
|
# libraries as plugins (bug 73). The plugins must be able to
|
||||||
|
# call ELinks functions. This can be implemented either by
|
||||||
|
# registering all callable functions in ELinks-specific data
|
||||||
|
# structures, or by letting the dynamic linker handle them.
|
||||||
|
# The latter way requires something equivalent to -rdynamic.
|
||||||
|
#
|
||||||
|
# Because backtraces are not needed for correct operation, and bug
|
||||||
|
# 73 is not yet being fixed, the configure script and makefiles
|
||||||
|
# should not complain to the user if they find that -rdynamic does
|
||||||
|
# not work. Besides, it was reported at elinks-users on 2006-09-12
|
||||||
|
# that gcc-3.4.2 with "ld: Software Generation Utilities - Solaris
|
||||||
|
# Link Editors: 5.8-1.284" on Sun Solaris 8 Sparc does not support
|
||||||
|
# -rdynamic but does something equivalent automatically. (This was
|
||||||
|
# tested with "nm -D elinks | grep redraw_from_window".)
|
||||||
|
#
|
||||||
|
# With Sun Studio 11 on Solaris 9, we get "cc: Warning: illegal option
|
||||||
|
# -dynamic"; then, cc proceeds anyway, but the option can prevent the
|
||||||
|
# linker from finding the libraries listed in -l operands. So this
|
||||||
|
# -rdynamic check needs to happen after the libraries have already
|
||||||
|
# been added to $LDFLAGS.
|
||||||
|
AC_MSG_CHECKING([for -rdynamic])
|
||||||
|
LDFLAGS_X="$LDFLAGS"
|
||||||
|
LDFLAGS="-rdynamic $LDFLAGS"
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[have_rdynamic=yes],[have_rdynamic=no])
|
||||||
|
test "$have_rdynamic" = no && LDFLAGS="$LDFLAGS_X"
|
||||||
|
AC_MSG_RESULT($have_rdynamic)
|
||||||
|
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# Export directory paths
|
# Export directory paths
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
Loading…
Reference in New Issue
Block a user