Re: [PATCH 1/1] erc32 sim: Add libdl to build of sis

Joel Sherrill
2014-08-14T22:37:57Z

I just tried psim and it fails missing libdl also. Did something change
in general in the simulators build procedure or does something
like this need to be propagated?

--joel
On 8/14/2014 5:21 PM, Joel Sherrill wrote:
> sis failed to link on Fedora 20 because it was not linking against
> libdl. There may be a better way but this does work.
>
> 2013-08-14 Joel Sherrill <joel.sherrill@oarcorp.com>
>
> * Makefile.in, configure.ac: Probe for libdl and use if available.
> * configure: Regenerated
> ---
> sim/erc32/Makefile.in | 3 +-
> sim/erc32/configure | 94 +++++++++++++++++++++++++++++++++++++++++++++-----
> sim/erc32/configure.ac | 3 ++
> 3 files changed, 90 insertions(+), 10 deletions(-)
>
> diff --git a/sim/erc32/Makefile.in b/sim/erc32/Makefile.in
> index 0ce58a6..b5a6c4b 100644
> --- a/sim/erc32/Makefile.in
> +++ b/sim/erc32/Makefile.in
> @@ -20,9 +20,10 @@
>
> TERMCAP_LIB = @TERMCAP@
> READLINE_LIB = @READLINE@
> +DL_LIB = @DLLIB@
>
> SIM_OBJS = exec.o erc32.o func.o help.o float.o interf.o
> -SIM_EXTRA_LIBS = $(READLINE_LIB) $(TERMCAP_LIB) -lm
> +SIM_EXTRA_LIBS = $(READLINE_LIB) $(TERMCAP_LIB) $(DL_LIB) -lm
> SIM_EXTRA_ALL = sis
> SIM_EXTRA_INSTALL = install-sis
> SIM_EXTRA_CLEAN = clean-sis
> diff --git a/sim/erc32/configure b/sim/erc32/configure
> index b8fd852..dd9882e 100755
> --- a/sim/erc32/configure
> +++ b/sim/erc32/configure
> @@ -601,6 +601,7 @@ ac_includes_default="\
> ac_subst_vars='LTLIBOBJS
> LIBOBJS
> cgen_breaks
> +DLLIB
> READLINE
> TERMCAP
> REPORT_BUGS_TEXI
> @@ -1389,7 +1390,7 @@ Optional Features:
> --disable-option-checking ignore unrecognized --enable/--with options
> --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
> --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
> - --enable-plugins Enable support for plugins (defaults no)
> + --enable-plugins Enable support for plugins
> --enable-shared[=PKGS] build shared libraries [default=yes]
> --enable-static[=PKGS] build static libraries [default=yes]
> --enable-fast-install[=PKGS]
> @@ -8768,15 +8769,46 @@ fi
>
> # BFD uses libdl when when plugins enabled.
>
> -# Check whether --enable-plugins was given.
> + maybe_plugins=no
> + for ac_header in dlfcn.h
> +do :
> + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
> +"
> +if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
> + cat >>confdefs.h <<_ACEOF
> +#define HAVE_DLFCN_H 1
> +_ACEOF
> + maybe_plugins=yes
> +fi
> +
> +done
> +
> + for ac_header in windows.h
> +do :
> + ac_fn_c_check_header_compile "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default
> +"
> +if test "x$ac_cv_header_windows_h" = x""yes; then :
> + cat >>confdefs.h <<_ACEOF
> +#define HAVE_WINDOWS_H 1
> +_ACEOF
> + maybe_plugins=yes
> +fi
> +
> +done
> +
> +
> + # Check whether --enable-plugins was given.
> if test "${enable_plugins+set}" = set; then :
> enableval=$enable_plugins; case "${enableval}" in
> - yes | "") plugins=yes ;;
> - no) plugins=no ;;
> - *) plugins=yes ;;
> - esac
> + no) plugins=no ;;
> + *) plugins=yes
> + if test "$maybe_plugins" != "yes" ; then
> + as_fn_error "Building with plugin support requires a host that supports dlopen." "$LINENO" 5
> + fi ;;
> + esac
> else
> - plugins=no
> + plugins=$maybe_plugins
> +
> fi
>
>
> @@ -12265,7 +12297,7 @@ else
> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> lt_status=$lt_dlunknown
> cat > conftest.$ac_ext <<_LT_EOF
> -#line 12268 "configure"
> +#line 12300 "configure"
> #include "confdefs.h"
>
> #if HAVE_DLFCN_H
> @@ -12371,7 +12403,7 @@ else
> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
> lt_status=$lt_dlunknown
> cat > conftest.$ac_ext <<_LT_EOF
> -#line 12374 "configure"
> +#line 12406 "configure"
> #include "confdefs.h"
>
> #if HAVE_DLFCN_H
> @@ -13022,6 +13054,50 @@ fi
> fi
>
>
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dl in -ldl" >&5
> +$as_echo_n "checking for dl in -ldl... " >&6; }
> +if test "${ac_cv_lib_dl_dl+set}" = set; then :
> + $as_echo_n "(cached) " >&6
> +else
> + ac_check_lib_save_LIBS=$LIBS
> +LIBS="-ldl $LIBS"
> +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h. */
> +
> +/* Override any GCC internal prototype to avoid an error.
> + Use char because int might match the return type of a GCC
> + builtin and then its argument prototype would still apply. */
> +#ifdef __cplusplus
> +extern "C"
> +#endif
> +char dl ();
> +int
> +main ()
> +{
> +return dl ();
> + ;
> + return 0;
> +}
> +_ACEOF
> +if ac_fn_c_try_link "$LINENO"; then :
> + ac_cv_lib_dl_dl=yes
> +else
> + ac_cv_lib_dl_dl=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext \
> + conftest$ac_exeext conftest.$ac_ext
> +LIBS=$ac_check_lib_save_LIBS
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dl" >&5
> +$as_echo "$ac_cv_lib_dl_dl" >&6; }
> +if test "x$ac_cv_lib_dl_dl" = x""yes; then :
> + DLLIB=-ldl
> +else
> + :
> +fi
> +
> +
> +
> ac_sources="$sim_link_files"
> ac_dests="$sim_link_links"
> while test -n "$ac_sources"; do
> diff --git a/sim/erc32/configure.ac b/sim/erc32/configure.ac
> index bc46091..21e5813 100644
> --- a/sim/erc32/configure.ac
> +++ b/sim/erc32/configure.ac
> @@ -32,4 +32,7 @@ else
> AC_ERROR([the required "readline" library is missing]), $TERMCAP)
> fi
> AC_SUBST(READLINE)
> +
> +AC_CHECK_LIB(dl, dl, DLLIB=-ldl, :, )
> +AC_SUBST(DLLIB)
> SIM_AC_OUTPUT