1999-05-28 Martin Dorey <mdorey@madge.com>
* config/tc-i960.c: Several minor changes to add ELF and BFD_ASSEMBLER support. * config/tc-i960.h: Likewise. * configure.in (i960-*-elf*): New target. * aclocal.m4, configure: Rebuild.
This commit is contained in:
parent
5379904c27
commit
bedf545c12
@ -1,3 +1,11 @@
|
|||||||
|
1999-05-28 Martin Dorey <mdorey@madge.com>
|
||||||
|
|
||||||
|
* config/tc-i960.c: Several minor changes to add ELF and
|
||||||
|
BFD_ASSEMBLER support.
|
||||||
|
* config/tc-i960.h: Likewise.
|
||||||
|
* configure.in (i960-*-elf*): New target.
|
||||||
|
* aclocal.m4, configure: Rebuild.
|
||||||
|
|
||||||
1999-05-25 Alan Modra <alan@spri.levels.unisa.edu.au>
|
1999-05-25 Alan Modra <alan@spri.levels.unisa.edu.au>
|
||||||
|
|
||||||
* config/tc-i386.c (md_apply_fix3): Only do 1999-05-17 fx_pcrel
|
* config/tc-i386.c (md_apply_fix3): Only do 1999-05-17 fx_pcrel
|
||||||
|
2
gas/NEWS
2
gas/NEWS
@ -22,6 +22,8 @@ Mitsubishi D30V support added.
|
|||||||
|
|
||||||
Texas Instruments c80 (tms320c80) support added.
|
Texas Instruments c80 (tms320c80) support added.
|
||||||
|
|
||||||
|
i960 ELF support added.
|
||||||
|
|
||||||
Changes in 2.9:
|
Changes in 2.9:
|
||||||
|
|
||||||
Texas Instruments c30 (tms320c30) support added.
|
Texas Instruments c30 (tms320c30) support added.
|
||||||
|
477
gas/aclocal.m4
vendored
477
gas/aclocal.m4
vendored
@ -160,26 +160,58 @@ fi
|
|||||||
AC_SUBST($1)])
|
AC_SUBST($1)])
|
||||||
|
|
||||||
|
|
||||||
# serial 25 AM_PROG_LIBTOOL
|
# serial 35 AC_PROG_LIBTOOL
|
||||||
AC_DEFUN(AM_PROG_LIBTOOL,
|
AC_DEFUN(AC_PROG_LIBTOOL,
|
||||||
[AC_REQUIRE([AM_ENABLE_SHARED])dnl
|
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
|
||||||
AC_REQUIRE([AM_ENABLE_STATIC])dnl
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
# Save cache, so that ltconfig can load it
|
||||||
AC_REQUIRE([AC_CANONICAL_BUILD])dnl
|
AC_CACHE_SAVE
|
||||||
AC_REQUIRE([AC_PROG_RANLIB])dnl
|
|
||||||
AC_REQUIRE([AC_PROG_CC])dnl
|
# Actually configure libtool. ac_aux_dir is where install-sh is found.
|
||||||
AC_REQUIRE([AM_PROG_LD])dnl
|
CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
|
||||||
AC_REQUIRE([AM_PROG_NM])dnl
|
LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
|
||||||
AC_REQUIRE([AC_PROG_LN_S])dnl
|
DLLTOOL="$DLLTOOL" AS="$AS" \
|
||||||
dnl
|
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
|
||||||
|
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
|
||||||
|
|| AC_MSG_ERROR([libtool configure failed])
|
||||||
|
|
||||||
|
# Reload cache, that may have been modified by ltconfig
|
||||||
|
AC_CACHE_LOAD
|
||||||
|
|
||||||
|
# This can be used to rebuild libtool when needed
|
||||||
|
LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
|
||||||
|
|
||||||
# Always use our own libtool.
|
# Always use our own libtool.
|
||||||
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
|
||||||
AC_SUBST(LIBTOOL)dnl
|
AC_SUBST(LIBTOOL)dnl
|
||||||
|
|
||||||
|
# Redirect the config.log output again, so that the ltconfig log is not
|
||||||
|
# clobbered by the next message.
|
||||||
|
exec 5>>./config.log
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN(AC_LIBTOOL_SETUP,
|
||||||
|
[AC_PREREQ(2.13)dnl
|
||||||
|
AC_REQUIRE([AC_ENABLE_SHARED])dnl
|
||||||
|
AC_REQUIRE([AC_ENABLE_STATIC])dnl
|
||||||
|
AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_BUILD])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_RANLIB])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_CC])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_LD])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_NM])dnl
|
||||||
|
AC_REQUIRE([AC_SYS_NM_PARSE])dnl
|
||||||
|
AC_REQUIRE([AC_SYS_SYMBOL_UNDERSCORE])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_LN_S])dnl
|
||||||
|
dnl
|
||||||
|
|
||||||
# Check for any special flags to pass to ltconfig.
|
# Check for any special flags to pass to ltconfig.
|
||||||
libtool_flags=
|
libtool_flags="--cache-file=$cache_file"
|
||||||
test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
|
test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
|
||||||
test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
|
test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
|
||||||
|
test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
|
||||||
|
test "$lt_dlopen" = yes && libtool_flags="$libtool_flags --enable-dlopen"
|
||||||
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
|
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
|
||||||
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
|
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
|
||||||
test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
|
test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
|
||||||
@ -208,37 +240,46 @@ case "$host" in
|
|||||||
|
|
||||||
*-*-sco3.2v5*)
|
*-*-sco3.2v5*)
|
||||||
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
|
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
|
||||||
|
SAVE_CFLAGS="$CFLAGS"
|
||||||
CFLAGS="$CFLAGS -belf"
|
CFLAGS="$CFLAGS -belf"
|
||||||
|
AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
|
||||||
|
[AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
|
||||||
|
if test x"$lt_cv_cc_needs_belf" != x"yes"; then
|
||||||
|
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
|
||||||
|
CFLAGS="$SAVE_CFLAGS"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*-*-cygwin*)
|
*-*-cygwin*)
|
||||||
AM_SYS_LIBTOOL_CYGWIN
|
AC_SYS_LIBTOOL_CYGWIN
|
||||||
;;
|
;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Actually configure libtool. ac_aux_dir is where install-sh is found.
|
# enable the --disable-libtool-lock switch
|
||||||
CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
|
|
||||||
LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
|
|
||||||
DLLTOOL="$DLLTOOL" AS="$AS" \
|
|
||||||
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
|
|
||||||
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
|
|
||||||
|| AC_MSG_ERROR([libtool configure failed])
|
|
||||||
|
|
||||||
# Redirect the config.log output again, so that the ltconfig log is not
|
AC_ARG_ENABLE(libtool-lock,
|
||||||
# clobbered by the next message.
|
[ --disable-libtool-lock force libtool not to do file locking],
|
||||||
exec 5>>./config.log
|
need_locks=$enableval,
|
||||||
|
need_locks=yes)
|
||||||
|
|
||||||
|
if test x"$need_locks" = xno; then
|
||||||
|
libtool_flags="$libtool_flags --disable-lock"
|
||||||
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
# AM_ENABLE_SHARED - implement the --enable-shared flag
|
# AC_LIBTOOL_DLOPEN - check for dlopen support
|
||||||
# Usage: AM_ENABLE_SHARED[(DEFAULT)]
|
AC_DEFUN(AC_LIBTOOL_DLOPEN, [lt_dlopen=yes])
|
||||||
|
|
||||||
|
# AC_ENABLE_SHARED - implement the --enable-shared flag
|
||||||
|
# Usage: AC_ENABLE_SHARED[(DEFAULT)]
|
||||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||||
# `yes'.
|
# `yes'.
|
||||||
AC_DEFUN(AM_ENABLE_SHARED,
|
AC_DEFUN(AC_ENABLE_SHARED,
|
||||||
[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
|
[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||||
AC_ARG_ENABLE(shared,
|
AC_ARG_ENABLE(shared,
|
||||||
changequote(<<, >>)dnl
|
changequote(<<, >>)dnl
|
||||||
<< --enable-shared[=PKGS] build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT],
|
<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
|
||||||
changequote([, ])dnl
|
changequote([, ])dnl
|
||||||
[p=${PACKAGE-default}
|
[p=${PACKAGE-default}
|
||||||
case "$enableval" in
|
case "$enableval" in
|
||||||
@ -256,26 +297,22 @@ no) enable_shared=no ;;
|
|||||||
IFS="$ac_save_ifs"
|
IFS="$ac_save_ifs"
|
||||||
;;
|
;;
|
||||||
esac],
|
esac],
|
||||||
enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl
|
enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
# AM_DISABLE_SHARED - set the default shared flag to --disable-shared
|
# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
|
||||||
AC_DEFUN(AM_DISABLE_SHARED,
|
AC_DEFUN(AC_DISABLE_SHARED,
|
||||||
[AM_ENABLE_SHARED(no)])
|
[AC_ENABLE_SHARED(no)])
|
||||||
|
|
||||||
# AM_DISABLE_STATIC - set the default static flag to --disable-static
|
# AC_ENABLE_STATIC - implement the --enable-static flag
|
||||||
AC_DEFUN(AM_DISABLE_STATIC,
|
# Usage: AC_ENABLE_STATIC[(DEFAULT)]
|
||||||
[AM_ENABLE_STATIC(no)])
|
|
||||||
|
|
||||||
# AM_ENABLE_STATIC - implement the --enable-static flag
|
|
||||||
# Usage: AM_ENABLE_STATIC[(DEFAULT)]
|
|
||||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||||
# `yes'.
|
# `yes'.
|
||||||
AC_DEFUN(AM_ENABLE_STATIC,
|
AC_DEFUN(AC_ENABLE_STATIC,
|
||||||
[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
|
[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||||
AC_ARG_ENABLE(static,
|
AC_ARG_ENABLE(static,
|
||||||
changequote(<<, >>)dnl
|
changequote(<<, >>)dnl
|
||||||
<< --enable-static[=PKGS] build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT],
|
<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
|
||||||
changequote([, ])dnl
|
changequote([, ])dnl
|
||||||
[p=${PACKAGE-default}
|
[p=${PACKAGE-default}
|
||||||
case "$enableval" in
|
case "$enableval" in
|
||||||
@ -293,28 +330,74 @@ no) enable_static=no ;;
|
|||||||
IFS="$ac_save_ifs"
|
IFS="$ac_save_ifs"
|
||||||
;;
|
;;
|
||||||
esac],
|
esac],
|
||||||
enable_static=AM_ENABLE_STATIC_DEFAULT)dnl
|
enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# AC_DISABLE_STATIC - set the default static flag to --disable-static
|
||||||
|
AC_DEFUN(AC_DISABLE_STATIC,
|
||||||
|
[AC_ENABLE_STATIC(no)])
|
||||||
|
|
||||||
# AM_PROG_LD - find the path to the GNU or non-GNU linker
|
|
||||||
AC_DEFUN(AM_PROG_LD,
|
# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
|
||||||
|
# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
|
||||||
|
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||||
|
# `yes'.
|
||||||
|
AC_DEFUN(AC_ENABLE_FAST_INSTALL,
|
||||||
|
[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||||
|
AC_ARG_ENABLE(fast-install,
|
||||||
|
changequote(<<, >>)dnl
|
||||||
|
<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
|
||||||
|
changequote([, ])dnl
|
||||||
|
[p=${PACKAGE-default}
|
||||||
|
case "$enableval" in
|
||||||
|
yes) enable_fast_install=yes ;;
|
||||||
|
no) enable_fast_install=no ;;
|
||||||
|
*)
|
||||||
|
enable_fast_install=no
|
||||||
|
# Look at the argument we got. We use all the common list separators.
|
||||||
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
|
||||||
|
for pkg in $enableval; do
|
||||||
|
if test "X$pkg" = "X$p"; then
|
||||||
|
enable_fast_install=yes
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$ac_save_ifs"
|
||||||
|
;;
|
||||||
|
esac],
|
||||||
|
enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
|
||||||
|
AC_DEFUN(AC_DISABLE_FAST_INSTALL,
|
||||||
|
[AC_ENABLE_FAST_INSTALL(no)])
|
||||||
|
|
||||||
|
|
||||||
|
# AC_PROG_LD - find the path to the GNU or non-GNU linker
|
||||||
|
AC_DEFUN(AC_PROG_LD,
|
||||||
[AC_ARG_WITH(gnu-ld,
|
[AC_ARG_WITH(gnu-ld,
|
||||||
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||||||
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||||||
AC_REQUIRE([AC_PROG_CC])
|
AC_REQUIRE([AC_PROG_CC])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_BUILD])dnl
|
||||||
ac_prog=ld
|
ac_prog=ld
|
||||||
if test "$ac_cv_prog_gcc" = yes; then
|
if test "$ac_cv_prog_gcc" = yes; then
|
||||||
# Check if gcc -print-prog-name=ld gives a path.
|
# Check if gcc -print-prog-name=ld gives a path.
|
||||||
AC_MSG_CHECKING([for ld used by GCC])
|
AC_MSG_CHECKING([for ld used by GCC])
|
||||||
ac_prog=`($CC -print-prog-name=ld) 2>&5`
|
ac_prog=`($CC -print-prog-name=ld) 2>&5`
|
||||||
case "$ac_prog" in
|
case "$ac_prog" in
|
||||||
# Accept absolute paths.
|
# Accept absolute paths.
|
||||||
changequote(,)dnl
|
changequote(,)dnl
|
||||||
/* | [A-Za-z]:\\*)
|
/* | [A-Za-z]:[\\/]*)
|
||||||
|
re_direlt='/[^/][^/]*/\.\./'
|
||||||
changequote([,])dnl
|
changequote([,])dnl
|
||||||
test -z "$LD" && LD="$ac_prog"
|
# Canonicalize the path of ld
|
||||||
;;
|
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||||||
|
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||||||
|
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||||||
|
done
|
||||||
|
test -z "$LD" && LD="$ac_prog"
|
||||||
|
;;
|
||||||
"")
|
"")
|
||||||
# If it fails, then pretend we aren't using GCC.
|
# If it fails, then pretend we aren't using GCC.
|
||||||
ac_prog=ld
|
ac_prog=ld
|
||||||
@ -342,7 +425,7 @@ AC_CACHE_VAL(ac_cv_path_LD,
|
|||||||
if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
|
if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
|
||||||
test "$with_gnu_ld" != no && break
|
test "$with_gnu_ld" != no && break
|
||||||
else
|
else
|
||||||
test "$with_gnu_ld" != yes && break
|
test "$with_gnu_ld" != yes && break
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -358,10 +441,10 @@ else
|
|||||||
fi
|
fi
|
||||||
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
||||||
AC_SUBST(LD)
|
AC_SUBST(LD)
|
||||||
AM_PROG_LD_GNU
|
AC_PROG_LD_GNU
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN(AM_PROG_LD_GNU,
|
AC_DEFUN(AC_PROG_LD_GNU,
|
||||||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
|
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
|
||||||
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||||||
if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
|
if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
|
||||||
@ -371,8 +454,8 @@ else
|
|||||||
fi])
|
fi])
|
||||||
])
|
])
|
||||||
|
|
||||||
# AM_PROG_NM - find the path to a BSD-compatible name lister
|
# AC_PROG_NM - find the path to a BSD-compatible name lister
|
||||||
AC_DEFUN(AM_PROG_NM,
|
AC_DEFUN(AC_PROG_NM,
|
||||||
[AC_MSG_CHECKING([for BSD-compatible nm])
|
[AC_MSG_CHECKING([for BSD-compatible nm])
|
||||||
AC_CACHE_VAL(ac_cv_path_NM,
|
AC_CACHE_VAL(ac_cv_path_NM,
|
||||||
[if test -n "$NM"; then
|
[if test -n "$NM"; then
|
||||||
@ -380,20 +463,22 @@ AC_CACHE_VAL(ac_cv_path_NM,
|
|||||||
ac_cv_path_NM="$NM"
|
ac_cv_path_NM="$NM"
|
||||||
else
|
else
|
||||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||||
for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
|
for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
|
||||||
test -z "$ac_dir" && ac_dir=.
|
test -z "$ac_dir" && ac_dir=.
|
||||||
if test -f $ac_dir/nm; then
|
if test -f $ac_dir/nm; then
|
||||||
# Check to see if the nm accepts a BSD-compat flag.
|
# Check to see if the nm accepts a BSD-compat flag.
|
||||||
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
|
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
|
||||||
# nm: unknown option "B" ignored
|
# nm: unknown option "B" ignored
|
||||||
if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
|
if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
|
||||||
ac_cv_path_NM="$ac_dir/nm -B"
|
ac_cv_path_NM="$ac_dir/nm -B"
|
||||||
|
break
|
||||||
elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
|
elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
|
||||||
ac_cv_path_NM="$ac_dir/nm -p"
|
ac_cv_path_NM="$ac_dir/nm -p"
|
||||||
|
break
|
||||||
else
|
else
|
||||||
ac_cv_path_NM="$ac_dir/nm"
|
ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
|
||||||
|
continue # so that we can try to find one that supports BSD flags
|
||||||
fi
|
fi
|
||||||
break
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
IFS="$ac_save_ifs"
|
IFS="$ac_save_ifs"
|
||||||
@ -404,12 +489,280 @@ AC_MSG_RESULT([$NM])
|
|||||||
AC_SUBST(NM)
|
AC_SUBST(NM)
|
||||||
])
|
])
|
||||||
|
|
||||||
# AM_SYS_LIBTOOL_CYGWIN - find tools needed on cygwin
|
# AC_SYS_NM_PARSE - Check for command to grab the raw symbol name followed
|
||||||
AC_DEFUN(AM_SYS_LIBTOOL_CYGWIN,
|
# by C symbol name from nm.
|
||||||
|
AC_DEFUN(AC_SYS_NM_PARSE,
|
||||||
|
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_NM])dnl
|
||||||
|
# Check for command to grab the raw symbol name followed by C symbol from nm.
|
||||||
|
AC_MSG_CHECKING([command to parse $NM output])
|
||||||
|
AC_CACHE_VAL(ac_cv_sys_global_symbol_pipe,
|
||||||
|
[# These are sane defaults that work on at least a few old systems.
|
||||||
|
# {They come from Ultrix. What could be older than Ultrix?!! ;)}
|
||||||
|
|
||||||
|
changequote(,)dnl
|
||||||
|
# Character class describing NM global symbol codes.
|
||||||
|
ac_symcode='[BCDEGRST]'
|
||||||
|
|
||||||
|
# Regexp to match symbols that can be accessed directly from C.
|
||||||
|
ac_sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
|
||||||
|
|
||||||
|
# Transform the above into a raw symbol and a C symbol.
|
||||||
|
ac_symxfrm='\1 \2\3 \3'
|
||||||
|
|
||||||
|
# Transform an extracted symbol line into a proper C declaration
|
||||||
|
ac_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||||
|
|
||||||
|
# Define system-specific variables.
|
||||||
|
case "$host_os" in
|
||||||
|
aix*)
|
||||||
|
ac_symcode='[BCDT]'
|
||||||
|
;;
|
||||||
|
cygwin* | mingw*)
|
||||||
|
ac_symcode='[ABCDGISTW]'
|
||||||
|
;;
|
||||||
|
hpux*)
|
||||||
|
ac_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||||
|
;;
|
||||||
|
irix*)
|
||||||
|
ac_symcode='[BCDEGRST]'
|
||||||
|
;;
|
||||||
|
solaris*)
|
||||||
|
ac_symcode='[BDT]'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If we're using GNU nm, then use its standard symbol codes.
|
||||||
|
if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
|
||||||
|
ac_symcode='[ABCDGISTW]'
|
||||||
|
fi
|
||||||
|
changequote([,])dnl
|
||||||
|
|
||||||
|
# Try without a prefix undercore, then with it.
|
||||||
|
for ac_symprfx in "" "_"; do
|
||||||
|
|
||||||
|
ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($ac_symcode\)[ ][ ]*\($ac_symprfx\)$ac_sympat$/$ac_symxfrm/p'"
|
||||||
|
|
||||||
|
# Check to see that the pipe works correctly.
|
||||||
|
ac_pipe_works=no
|
||||||
|
rm -f conftest.$ac_ext
|
||||||
|
cat > conftest.$ac_ext <<EOF
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
char nm_test_var;
|
||||||
|
void nm_test_func(){}
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
int main(){nm_test_var='a';nm_test_func;return 0;}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if AC_TRY_EVAL(ac_compile); then
|
||||||
|
# Now try to grab the symbols.
|
||||||
|
ac_nlist=conftest.nm
|
||||||
|
|
||||||
|
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||||
|
|
||||||
|
# Try sorting and uniquifying the output.
|
||||||
|
if sort "$ac_nlist" | uniq > "$ac_nlist"T; then
|
||||||
|
mv -f "$ac_nlist"T "$ac_nlist"
|
||||||
|
else
|
||||||
|
rm -f "$ac_nlist"T
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make sure that we snagged all the symbols we need.
|
||||||
|
if egrep ' nm_test_var$' "$ac_nlist" >/dev/null; then
|
||||||
|
if egrep ' nm_test_func$' "$ac_nlist" >/dev/null; then
|
||||||
|
cat <<EOF > conftest.c
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EOF
|
||||||
|
# Now generate the symbol file.
|
||||||
|
eval "$ac_global_symbol_to_cdecl"' < "$ac_nlist" >> conftest.c'
|
||||||
|
|
||||||
|
cat <<EOF >> conftest.c
|
||||||
|
#if defined (__STDC__) && __STDC__
|
||||||
|
# define lt_ptr_t void *
|
||||||
|
#else
|
||||||
|
# define lt_ptr_t char *
|
||||||
|
# define const
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The mapping between symbol names and symbols. */
|
||||||
|
const struct {
|
||||||
|
const char *name;
|
||||||
|
lt_ptr_t address;
|
||||||
|
}
|
||||||
|
changequote(,)dnl
|
||||||
|
lt_preloaded_symbols[] =
|
||||||
|
changequote([,])dnl
|
||||||
|
{
|
||||||
|
EOF
|
||||||
|
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c
|
||||||
|
cat <<\EOF >> conftest.c
|
||||||
|
{0, (lt_ptr_t) 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
# Now try linking the two files.
|
||||||
|
mv conftest.$ac_objext conftestm.$ac_objext
|
||||||
|
ac_save_LIBS="$LIBS"
|
||||||
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
|
LIBS="conftestm.$ac_objext"
|
||||||
|
CFLAGS="$CFLAGS$no_builtin_flag"
|
||||||
|
if AC_TRY_EVAL(ac_link) && test -s conftest; then
|
||||||
|
ac_pipe_works=yes
|
||||||
|
else
|
||||||
|
echo "configure: failed program was:" >&AC_FD_CC
|
||||||
|
cat conftest.c >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
else
|
||||||
|
echo "cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "cannot find nm_test_var in $ac_nlist" >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$progname: failed program was:" >&AC_FD_CC
|
||||||
|
cat conftest.c >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
rm -rf conftest*
|
||||||
|
|
||||||
|
# Do not use the global_symbol_pipe unless it works.
|
||||||
|
if test "$ac_pipe_works" = yes; then
|
||||||
|
if test x"$ac_symprfx" = x"_"; then
|
||||||
|
ac_cv_sys_symbol_underscore=yes
|
||||||
|
else
|
||||||
|
ac_cv_sys_symbol_underscore=no
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
else
|
||||||
|
ac_cv_sys_global_symbol_pipe=
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
])
|
||||||
|
|
||||||
|
ac_result=yes
|
||||||
|
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||||
|
ac_result=no
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT($ac_result)
|
||||||
|
])
|
||||||
|
|
||||||
|
# AC_SYS_LIBTOOL_CYGWIN - find tools needed on cygwin
|
||||||
|
AC_DEFUN(AC_SYS_LIBTOOL_CYGWIN,
|
||||||
[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||||
AC_CHECK_TOOL(AS, as, false)
|
AC_CHECK_TOOL(AS, as, false)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# AC_SYS_SYMBOL_UNDERSCORE - does the compiler prefix global symbols
|
||||||
|
# with an underscore?
|
||||||
|
AC_DEFUN(AC_SYS_SYMBOL_UNDERSCORE,
|
||||||
|
[AC_REQUIRE([AC_PROG_NM])dnl
|
||||||
|
AC_REQUIRE([AC_SYS_NM_PARSE])dnl
|
||||||
|
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||||
|
AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
|
||||||
|
[ac_cv_sys_symbol_underscore=no
|
||||||
|
cat > conftest.$ac_ext <<EOF
|
||||||
|
void nm_test_func(){}
|
||||||
|
int main(){nm_test_func;return 0;}
|
||||||
|
EOF
|
||||||
|
if AC_TRY_EVAL(ac_compile); then
|
||||||
|
# Now try to grab the symbols.
|
||||||
|
ac_nlist=conftest.nm
|
||||||
|
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||||
|
# See whether the symbols have a leading underscore.
|
||||||
|
if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
|
||||||
|
ac_cv_sys_symbol_underscore=yes
|
||||||
|
else
|
||||||
|
if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "configure: failed program was:" >&AC_FD_CC
|
||||||
|
cat conftest.c >&AC_FD_CC
|
||||||
|
fi
|
||||||
|
rm -rf conftest*
|
||||||
|
])
|
||||||
|
AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
|
||||||
|
USE_SYMBOL_UNDERSCORE=${ac_cv_sys_symbol_underscore=no}
|
||||||
|
AC_SUBST(USE_SYMBOL_UNDERSCORE)dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
# AC_CHECK_LIBM - check for math library
|
||||||
|
AC_DEFUN(AC_CHECK_LIBM, [
|
||||||
|
AC_CHECK_LIB(mw, _mwvalidcheckl)
|
||||||
|
AC_CHECK_LIB(m, cos)
|
||||||
|
])
|
||||||
|
|
||||||
|
# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
|
||||||
|
# the libltdl convenience library, adds --enable-ltdl-convenience to
|
||||||
|
# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
|
||||||
|
# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
|
||||||
|
# to be `${top_builddir}/libltdl'. Make sure you start DIR with
|
||||||
|
# '${top_builddir}/' (note the single quotes!) if your package is not
|
||||||
|
# flat, and, if you're not using automake, define top_builddir as
|
||||||
|
# appropriate in the Makefiles.
|
||||||
|
AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [
|
||||||
|
case "$enable_ltdl_convenience" in
|
||||||
|
no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
|
||||||
|
"") enable_ltdl_convenience=yes
|
||||||
|
ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
|
||||||
|
esac
|
||||||
|
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
|
||||||
|
])
|
||||||
|
|
||||||
|
# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
|
||||||
|
# the libltdl installable library, and adds --enable-ltdl-install to
|
||||||
|
# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
|
||||||
|
# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
|
||||||
|
# to be `${top_builddir}/libltdl'. Make sure you start DIR with
|
||||||
|
# '${top_builddir}/' (note the single quotes!) if your package is not
|
||||||
|
# flat, and, if you're not using automake, define top_builddir as
|
||||||
|
# appropriate in the Makefiles.
|
||||||
|
# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
|
||||||
|
AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [
|
||||||
|
AC_CHECK_LIB(ltdl, main, LIBLTDL="-lltdl", [
|
||||||
|
case "$enable_ltdl_install" in
|
||||||
|
no) AC_MSG_WARN([libltdl not installed, but installation disabled]) ;;
|
||||||
|
"") enable_ltdl_install=yes
|
||||||
|
ac_configure_args="$ac_configure_args --enable-ltdl-install" ;;
|
||||||
|
esac
|
||||||
|
])
|
||||||
|
if test x"$enable_ltdl_install" != x"no"; then
|
||||||
|
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl old names
|
||||||
|
AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
|
||||||
|
AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
|
||||||
|
AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
|
||||||
|
AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
|
||||||
|
AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
|
||||||
|
AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
|
||||||
|
AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
|
||||||
|
AC_DEFUN(AM_SYS_NM_PARSE, [indir([AC_SYS_NM_PARSE])])dnl
|
||||||
|
AC_DEFUN(AM_SYS_SYMBOL_UNDERSCORE, [indir([AC_SYS_SYMBOL_UNDERSCORE])])dnl
|
||||||
|
AC_DEFUN(AM_SYS_LIBTOOL_CYGWIN, [indir([AC_SYS_LIBTOOL_CYGWIN])])dnl
|
||||||
|
|
||||||
# Like AC_CONFIG_HEADER, but automatically create stamp file.
|
# Like AC_CONFIG_HEADER, but automatically create stamp file.
|
||||||
|
|
||||||
AC_DEFUN(AM_CONFIG_HEADER,
|
AC_DEFUN(AM_CONFIG_HEADER,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-i960.c - All the i80960-specific stuff
|
/* tc-i960.c - All the i80960-specific stuff
|
||||||
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 97, 1998
|
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS.
|
This file is part of GAS.
|
||||||
@ -101,7 +101,22 @@
|
|||||||
#define TC_S_FORCE_TO_SYSPROC(s) (S_SET_STORAGE_CLASS((s), C_SCALL))
|
#define TC_S_FORCE_TO_SYSPROC(s) (S_SET_STORAGE_CLASS((s), C_SCALL))
|
||||||
|
|
||||||
#else /* ! OBJ_COFF */
|
#else /* ! OBJ_COFF */
|
||||||
you lose;
|
#ifdef OBJ_ELF
|
||||||
|
#define TC_S_IS_SYSPROC(s) 0
|
||||||
|
|
||||||
|
#define TC_S_IS_BALNAME(s) 0
|
||||||
|
#define TC_S_IS_CALLNAME(s) 0
|
||||||
|
#define TC_S_IS_BADPROC(s) 0
|
||||||
|
|
||||||
|
#define TC_S_SET_SYSPROC(s, p)
|
||||||
|
#define TC_S_GET_SYSPROC(s) 0
|
||||||
|
|
||||||
|
#define TC_S_FORCE_TO_BALNAME(s)
|
||||||
|
#define TC_S_FORCE_TO_CALLNAME(s)
|
||||||
|
#define TC_S_FORCE_TO_SYSPROC(s)
|
||||||
|
#else
|
||||||
|
#error COFF, a.out, b.out, and ELF are the only supported formats.
|
||||||
|
#endif /* ! OBJ_ELF */
|
||||||
#endif /* ! OBJ_COFF */
|
#endif /* ! OBJ_COFF */
|
||||||
#endif /* ! OBJ_A/BOUT */
|
#endif /* ! OBJ_A/BOUT */
|
||||||
|
|
||||||
@ -1009,7 +1024,6 @@ md_show_usage (stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef BFD_ASSEMBLER
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
md_convert_frag:
|
md_convert_frag:
|
||||||
Called by base assembler after address relaxation is finished: modify
|
Called by base assembler after address relaxation is finished: modify
|
||||||
@ -1023,11 +1037,19 @@ md_show_usage (stream)
|
|||||||
Replace the cobr with a two instructions (a compare and a branch).
|
Replace the cobr with a two instructions (a compare and a branch).
|
||||||
|
|
||||||
*************************************************************************** */
|
*************************************************************************** */
|
||||||
|
#ifndef BFD_ASSEMBLER
|
||||||
void
|
void
|
||||||
md_convert_frag (headers, seg, fragP)
|
md_convert_frag (headers, seg, fragP)
|
||||||
object_headers *headers;
|
object_headers *headers;
|
||||||
segT seg;
|
segT seg;
|
||||||
fragS *fragP;
|
fragS *fragP;
|
||||||
|
#else
|
||||||
|
void
|
||||||
|
md_convert_frag (abfd, sec, fragP)
|
||||||
|
bfd *abfd;
|
||||||
|
segT sec;
|
||||||
|
fragS *fragP;
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
fixS *fixP; /* Structure describing needed address fix */
|
fixS *fixP; /* Structure describing needed address fix */
|
||||||
|
|
||||||
@ -1082,6 +1104,7 @@ md_estimate_size_before_relax (fragP, segment_type)
|
|||||||
return 0;
|
return 0;
|
||||||
} /* md_estimate_size_before_relax() */
|
} /* md_estimate_size_before_relax() */
|
||||||
|
|
||||||
|
#if defined(OBJ_AOUT) | defined(OBJ_BOUT)
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
md_ri_to_chars:
|
md_ri_to_chars:
|
||||||
@ -1096,7 +1119,8 @@ md_estimate_size_before_relax (fragP, segment_type)
|
|||||||
does do the reordering (Ian Taylor 28 Aug 92).
|
does do the reordering (Ian Taylor 28 Aug 92).
|
||||||
|
|
||||||
*************************************************************************** */
|
*************************************************************************** */
|
||||||
void
|
|
||||||
|
static void
|
||||||
md_ri_to_chars (where, ri)
|
md_ri_to_chars (where, ri)
|
||||||
char *where;
|
char *where;
|
||||||
struct relocation_info *ri;
|
struct relocation_info *ri;
|
||||||
@ -1114,7 +1138,8 @@ md_ri_to_chars (where, ri)
|
|||||||
| (ri->r_callj << 6));
|
| (ri->r_callj << 6));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* BFD_ASSEMBLER */
|
#endif /* defined(OBJ_AOUT) | defined(OBJ_BOUT) */
|
||||||
|
|
||||||
|
|
||||||
/* FOLLOWING ARE THE LOCAL ROUTINES, IN ALPHABETICAL ORDER */
|
/* FOLLOWING ARE THE LOCAL ROUTINES, IN ALPHABETICAL ORDER */
|
||||||
|
|
||||||
@ -2819,11 +2844,21 @@ md_pcrel_from (fixP)
|
|||||||
return fixP->fx_where + fixP->fx_frag->fr_address;
|
return fixP->fx_where + fixP->fx_frag->fr_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
int
|
||||||
|
md_apply_fix (fixP, valp)
|
||||||
|
fixS *fixP;
|
||||||
|
valueT *valp;
|
||||||
|
#else
|
||||||
void
|
void
|
||||||
md_apply_fix (fixP, val)
|
md_apply_fix (fixP, val)
|
||||||
fixS *fixP;
|
fixS *fixP;
|
||||||
long val;
|
long val;
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
long val = *valp;
|
||||||
|
#endif
|
||||||
char *place = fixP->fx_where + fixP->fx_frag->fr_literal;
|
char *place = fixP->fx_where + fixP->fx_frag->fr_literal;
|
||||||
|
|
||||||
if (!fixP->fx_bit_fixP)
|
if (!fixP->fx_bit_fixP)
|
||||||
@ -2833,11 +2868,39 @@ md_apply_fix (fixP, val)
|
|||||||
if (fixP->fx_bsr)
|
if (fixP->fx_bsr)
|
||||||
val = 0;
|
val = 0;
|
||||||
|
|
||||||
|
#ifdef OBJ_ELF
|
||||||
|
/* For ELF, we always emit relocations for external or weak
|
||||||
|
symbols. */
|
||||||
|
if (fixP->fx_addsy != NULL
|
||||||
|
&& (S_IS_EXTERNAL (fixP->fx_addsy)
|
||||||
|
|| S_IS_WEAK (fixP->fx_addsy)))
|
||||||
|
val = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
fixP->fx_addnumber = val;
|
fixP->fx_addnumber = val;
|
||||||
|
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
/* HACK: With REL relocations this causes the offset in the code
|
||||||
|
to be doubled.
|
||||||
|
|
||||||
|
Guess: val is the old offset in the code, addnumber gets
|
||||||
|
passed back to md_gen_reloc() where it gets assigned to
|
||||||
|
addend, which the backend then writes back to the code (as
|
||||||
|
we're using REL, not RELA relocations). COFF must be working
|
||||||
|
without this hack, but I don't see how or why.
|
||||||
|
|
||||||
|
apeppere and martindo 22-10-1998. */
|
||||||
|
fixP->fx_addnumber = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
md_number_to_imm (place, val, fixP->fx_size, fixP);
|
md_number_to_imm (place, val, fixP->fx_size, fixP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
md_number_to_field (place, val, fixP->fx_bit_fixP);
|
md_number_to_field (place, val, fixP->fx_bit_fixP);
|
||||||
|
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(OBJ_AOUT) | defined(OBJ_BOUT)
|
#if defined(OBJ_AOUT) | defined(OBJ_BOUT)
|
||||||
@ -2937,8 +3000,14 @@ md_section_align (seg, addr)
|
|||||||
segT seg;
|
segT seg;
|
||||||
valueT addr; /* Address to be rounded up */
|
valueT addr; /* Address to be rounded up */
|
||||||
{
|
{
|
||||||
return ((addr + (1 << section_alignment[(int) seg]) - 1) & (-1 << section_alignment[(int) seg]));
|
int align;
|
||||||
} /* md_section_align() */
|
#ifdef BFD_ASSEMBLER
|
||||||
|
align = bfd_get_section_alignment (stdoutput, seg);
|
||||||
|
#else
|
||||||
|
align = section_alignment[(int) seg];
|
||||||
|
#endif
|
||||||
|
return (addr + (1 << align) - 1) & (-1 << align);
|
||||||
|
}
|
||||||
|
|
||||||
extern int coff_flags;
|
extern int coff_flags;
|
||||||
|
|
||||||
@ -3007,6 +3076,8 @@ tc_headers_hook (headers)
|
|||||||
|
|
||||||
#endif /* OBJ_COFF */
|
#endif /* OBJ_COFF */
|
||||||
|
|
||||||
|
#ifndef BFD_ASSEMBLER
|
||||||
|
|
||||||
/* Things going on here:
|
/* Things going on here:
|
||||||
|
|
||||||
For bout, We need to assure a couple of simplifying
|
For bout, We need to assure a couple of simplifying
|
||||||
@ -3066,6 +3137,8 @@ tc_crawl_symbol_chain (headers)
|
|||||||
} /* walk the symbol chain */
|
} /* walk the symbol chain */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* ! BFD_ASSEMBLER */
|
||||||
|
|
||||||
/* For aout or bout, the bal immediately follows the call.
|
/* For aout or bout, the bal immediately follows the call.
|
||||||
|
|
||||||
For coff, we cheat and store a pointer to the bal symbol in the
|
For coff, we cheat and store a pointer to the bal symbol in the
|
||||||
@ -3105,7 +3178,7 @@ tc_set_bal_of_call (callP, balP)
|
|||||||
} /* if not in order */
|
} /* if not in order */
|
||||||
|
|
||||||
#else /* ! OBJ_ABOUT */
|
#else /* ! OBJ_ABOUT */
|
||||||
(as yet unwritten.);
|
as_fatal ("Only supported for a.out, b.out, or COFF");
|
||||||
#endif /* ! OBJ_ABOUT */
|
#endif /* ! OBJ_ABOUT */
|
||||||
#endif /* ! OBJ_COFF */
|
#endif /* ! OBJ_COFF */
|
||||||
}
|
}
|
||||||
@ -3124,7 +3197,7 @@ tc_get_bal_of_call (callP)
|
|||||||
#ifdef OBJ_ABOUT
|
#ifdef OBJ_ABOUT
|
||||||
retval = symbol_next (callP);
|
retval = symbol_next (callP);
|
||||||
#else
|
#else
|
||||||
(as yet unwritten.);
|
as_fatal ("Only supported for a.out, b.out, or COFF");
|
||||||
#endif /* ! OBJ_ABOUT */
|
#endif /* ! OBJ_ABOUT */
|
||||||
#endif /* ! OBJ_COFF */
|
#endif /* ! OBJ_COFF */
|
||||||
|
|
||||||
@ -3228,4 +3301,67 @@ i960_validate_fix (fixP, this_segment_type, add_symbolPP)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BFD_ASSEMBLER
|
||||||
|
|
||||||
|
/* From cgen.c: */
|
||||||
|
|
||||||
|
static short
|
||||||
|
tc_bfd_fix2rtype (fixP)
|
||||||
|
fixS *fixP;
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
if (fixP->fx_bsr)
|
||||||
|
abort ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (fixP->fx_pcrel == 0 && fixP->fx_size == 4)
|
||||||
|
return BFD_RELOC_32;
|
||||||
|
|
||||||
|
if (fixP->fx_pcrel != 0 && fixP->fx_size == 4)
|
||||||
|
return BFD_RELOC_24_PCREL;
|
||||||
|
|
||||||
|
abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Translate internal representation of relocation info to BFD target
|
||||||
|
format.
|
||||||
|
|
||||||
|
FIXME: To what extent can we get all relevant targets to use this? */
|
||||||
|
|
||||||
|
arelent *
|
||||||
|
tc_gen_reloc (section, fixP)
|
||||||
|
asection *section;
|
||||||
|
fixS *fixP;
|
||||||
|
{
|
||||||
|
arelent * reloc;
|
||||||
|
|
||||||
|
reloc = (arelent *) xmalloc (sizeof (arelent));
|
||||||
|
|
||||||
|
/* HACK: Is this right? */
|
||||||
|
fixP->fx_r_type = tc_bfd_fix2rtype (fixP);
|
||||||
|
|
||||||
|
reloc->howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type);
|
||||||
|
if (reloc->howto == (reloc_howto_type *) NULL)
|
||||||
|
{
|
||||||
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
"internal error: can't export reloc type %d (`%s')",
|
||||||
|
fixP->fx_r_type,
|
||||||
|
bfd_get_reloc_code_name (fixP->fx_r_type));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert (!fixP->fx_pcrel == !reloc->howto->pc_relative);
|
||||||
|
|
||||||
|
reloc->sym_ptr_ptr = &fixP->fx_addsy->bsym;
|
||||||
|
reloc->address = fixP->fx_frag->fr_address + fixP->fx_where;
|
||||||
|
reloc->addend = fixP->fx_addnumber;
|
||||||
|
|
||||||
|
return reloc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end from cgen.c */
|
||||||
|
|
||||||
|
#endif /* BFD_ASSEMBLER */
|
||||||
|
|
||||||
/* end of tc-i960.c */
|
/* end of tc-i960.c */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* tc-i960.h - Basic 80960 instruction formats.
|
/* tc-i960.h - Basic 80960 instruction formats.
|
||||||
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 97, 1998
|
Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GAS, the GNU Assembler.
|
This file is part of GAS, the GNU Assembler.
|
||||||
@ -22,6 +22,11 @@
|
|||||||
#ifndef TC_I960
|
#ifndef TC_I960
|
||||||
#define TC_I960 1
|
#define TC_I960 1
|
||||||
|
|
||||||
|
#ifdef OBJ_ELF
|
||||||
|
#define TARGET_FORMAT "elf32-i960"
|
||||||
|
#define TARGET_ARCH bfd_arch_i960
|
||||||
|
#endif
|
||||||
|
|
||||||
#define TARGET_BYTES_BIG_ENDIAN 0
|
#define TARGET_BYTES_BIG_ENDIAN 0
|
||||||
|
|
||||||
#define WORKING_DOT_WORD
|
#define WORKING_DOT_WORD
|
||||||
@ -139,7 +144,23 @@ extern int i960_validate_fix PARAMS ((struct fix *, segT, struct symbol **));
|
|||||||
#define TC_VALIDATE_FIX(FIXP,SEGTYPE,LABEL) \
|
#define TC_VALIDATE_FIX(FIXP,SEGTYPE,LABEL) \
|
||||||
if (i960_validate_fix (FIXP, SEGTYPE, &add_symbolP) != 0) goto LABEL
|
if (i960_validate_fix (FIXP, SEGTYPE, &add_symbolP) != 0) goto LABEL
|
||||||
|
|
||||||
|
#ifdef OBJ_ELF
|
||||||
|
#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \
|
||||||
|
((FIX)->fx_addsy == NULL \
|
||||||
|
|| (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
|
||||||
|
&& ! S_IS_WEAK ((FIX)->fx_addsy) \
|
||||||
|
&& S_IS_DEFINED ((FIX)->fx_addsy) \
|
||||||
|
&& ! S_IS_COMMON ((FIX)->fx_addsy)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef OBJ_ELF
|
||||||
#define tc_fix_adjustable(FIXP) ((FIXP)->fx_bsr == 0)
|
#define tc_fix_adjustable(FIXP) ((FIXP)->fx_bsr == 0)
|
||||||
|
#else
|
||||||
|
#define tc_fix_adjustable(FIXP) \
|
||||||
|
((FIXP)->fx_bsr == 0 \
|
||||||
|
&& ! S_IS_EXTERNAL ((FIXP)->fx_addsy) \
|
||||||
|
&& ! S_IS_WEAK ((FIXP)->fx_addsy))
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void brtab_emit PARAMS ((void));
|
extern void brtab_emit PARAMS ((void));
|
||||||
#define md_end() brtab_emit ()
|
#define md_end() brtab_emit ()
|
||||||
|
784
gas/configure
vendored
784
gas/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -209,6 +209,7 @@ changequote([,])dnl
|
|||||||
i960-*-vxworks5.0) fmt=bout ;;
|
i960-*-vxworks5.0) fmt=bout ;;
|
||||||
i960-*-vxworks5.*) fmt=coff em=ic960 ;;
|
i960-*-vxworks5.*) fmt=coff em=ic960 ;;
|
||||||
i960-*-vxworks*) fmt=bout ;;
|
i960-*-vxworks*) fmt=bout ;;
|
||||||
|
i960-*-elf*) fmt=elf ;;
|
||||||
|
|
||||||
m32r-*-*) fmt=elf bfd_gas=yes ;;
|
m32r-*-*) fmt=elf bfd_gas=yes ;;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user