2005-01-27 Hans-Peter Nilsson <hp@axis.com>
* configure.in: Support cris-*-* and crisv32-*-*. * libnosys/configure.in: Ditto. * configure, libnosys/configure: Regenerate. * cris: New directory. * cris/crt0.S, cris/crtn.c, cris/gensyscalls, cris/linunistd.h, cris/outbyte.c, cris/configure.in, cris/crti.c, cris/lcrt0.c, cris/Makefile.in, cris/setup.S, cris/configure: New files.
This commit is contained in:
parent
8cc85fff15
commit
3a26703803
@ -1,3 +1,13 @@
|
|||||||
|
2005-01-27 Hans-Peter Nilsson <hp@axis.com>
|
||||||
|
|
||||||
|
* configure.in: Support cris-*-* and crisv32-*-*.
|
||||||
|
* libnosys/configure.in: Ditto.
|
||||||
|
* configure, libnosys/configure: Regenerate.
|
||||||
|
* cris: New directory.
|
||||||
|
* cris/crt0.S, cris/crtn.c, cris/gensyscalls, cris/linunistd.h,
|
||||||
|
cris/outbyte.c, cris/configure.in, cris/crti.c, cris/lcrt0.c,
|
||||||
|
cris/Makefile.in, cris/setup.S, cris/configure: New files.
|
||||||
|
|
||||||
2005-01-21 Hans-Peter Nilsson <hp@axis.com>
|
2005-01-21 Hans-Peter Nilsson <hp@axis.com>
|
||||||
|
|
||||||
* libnosys/warning.h (stub_warning): Remove "warning: " prefix.
|
* libnosys/warning.h (stub_warning): Remove "warning: " prefix.
|
||||||
|
54
libgloss/configure
vendored
54
libgloss/configure
vendored
@ -774,6 +774,9 @@ case "${target}" in
|
|||||||
mn10300-*-*)
|
mn10300-*-*)
|
||||||
configdirs="${configdirs} mn10300 testsuite"
|
configdirs="${configdirs} mn10300 testsuite"
|
||||||
;;
|
;;
|
||||||
|
cris-*-* | crisv32-*-*)
|
||||||
|
configdirs="${configdirs} cris testsuite"
|
||||||
|
;;
|
||||||
crx-*-*)
|
crx-*-*)
|
||||||
configdirs="${configdirs} crx"
|
configdirs="${configdirs} crx"
|
||||||
;;
|
;;
|
||||||
@ -826,7 +829,7 @@ subdirs="$configdirs"
|
|||||||
# Extract the first word of "gcc", so it can be a program name with args.
|
# Extract the first word of "gcc", so it can be a program name with args.
|
||||||
set dummy gcc; ac_word=$2
|
set dummy gcc; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:830: checking for $ac_word" >&5
|
echo "configure:833: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -856,7 +859,7 @@ if test -z "$CC"; then
|
|||||||
# Extract the first word of "cc", so it can be a program name with args.
|
# Extract the first word of "cc", so it can be a program name with args.
|
||||||
set dummy cc; ac_word=$2
|
set dummy cc; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:860: checking for $ac_word" >&5
|
echo "configure:863: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -905,7 +908,7 @@ fi
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
||||||
echo "configure:909: checking whether we are using GNU C" >&5
|
echo "configure:912: checking whether we are using GNU C" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -914,7 +917,7 @@ else
|
|||||||
yes;
|
yes;
|
||||||
#endif
|
#endif
|
||||||
EOF
|
EOF
|
||||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||||
ac_cv_prog_gcc=yes
|
ac_cv_prog_gcc=yes
|
||||||
else
|
else
|
||||||
ac_cv_prog_gcc=no
|
ac_cv_prog_gcc=no
|
||||||
@ -929,7 +932,7 @@ if test $ac_cv_prog_gcc = yes; then
|
|||||||
ac_save_CFLAGS="$CFLAGS"
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
CFLAGS=
|
CFLAGS=
|
||||||
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
|
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
|
||||||
echo "configure:933: checking whether ${CC-cc} accepts -g" >&5
|
echo "configure:936: checking whether ${CC-cc} accepts -g" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -961,7 +964,7 @@ AS=${AS-as}
|
|||||||
# Extract the first word of "ar", so it can be a program name with args.
|
# Extract the first word of "ar", so it can be a program name with args.
|
||||||
set dummy ar; ac_word=$2
|
set dummy ar; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:965: checking for $ac_word" >&5
|
echo "configure:968: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -995,7 +998,7 @@ LD=${LD-ld}
|
|||||||
# Extract the first word of "ranlib", so it can be a program name with args.
|
# Extract the first word of "ranlib", so it can be a program name with args.
|
||||||
set dummy ranlib; ac_word=$2
|
set dummy ranlib; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:999: checking for $ac_word" >&5
|
echo "configure:1002: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -1096,34 +1099,15 @@ trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
|
|||||||
# Transform confdefs.h into DEFS.
|
# Transform confdefs.h into DEFS.
|
||||||
# Protect against shell expansion while executing Makefile rules.
|
# Protect against shell expansion while executing Makefile rules.
|
||||||
# Protect against Makefile macro expansion.
|
# Protect against Makefile macro expansion.
|
||||||
#
|
cat > conftest.defs <<\EOF
|
||||||
# If the first sed substitution is executed (which looks for macros that
|
s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
|
||||||
# take arguments), then we branch to the quote section. Otherwise,
|
s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
|
||||||
# look for a macro that doesn't take arguments.
|
s%\[%\\&%g
|
||||||
cat >confdef2opt.sed <<\_ACEOF
|
s%\]%\\&%g
|
||||||
t clear
|
s%\$%$$%g
|
||||||
: clear
|
EOF
|
||||||
s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
|
DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
|
||||||
t quote
|
rm -f conftest.defs
|
||||||
s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
|
|
||||||
t quote
|
|
||||||
d
|
|
||||||
: quote
|
|
||||||
s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
|
|
||||||
s,\[,\\&,g
|
|
||||||
s,\],\\&,g
|
|
||||||
s,\$,$$,g
|
|
||||||
p
|
|
||||||
_ACEOF
|
|
||||||
# We use echo to avoid assuming a particular line-breaking character.
|
|
||||||
# The extra dot is to prevent the shell from consuming trailing
|
|
||||||
# line-breaks from the sub-command output. A line-break within
|
|
||||||
# single-quotes doesn't work because, if this script is created in a
|
|
||||||
# platform that uses two characters for line-breaks (e.g., DOS), tr
|
|
||||||
# would break.
|
|
||||||
ac_LF_and_DOT=`echo; echo .`
|
|
||||||
DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
|
|
||||||
rm -f confdef2opt.sed
|
|
||||||
|
|
||||||
|
|
||||||
# Without the "./", some shells look in PATH for config.status.
|
# Without the "./", some shells look in PATH for config.status.
|
||||||
|
@ -85,6 +85,9 @@ case "${target}" in
|
|||||||
mn10300-*-*)
|
mn10300-*-*)
|
||||||
configdirs="${configdirs} mn10300 testsuite"
|
configdirs="${configdirs} mn10300 testsuite"
|
||||||
;;
|
;;
|
||||||
|
cris-*-* | crisv32-*-*)
|
||||||
|
configdirs="${configdirs} cris testsuite"
|
||||||
|
;;
|
||||||
crx-*-*)
|
crx-*-*)
|
||||||
configdirs="${configdirs} crx"
|
configdirs="${configdirs} crx"
|
||||||
;;
|
;;
|
||||||
|
254
libgloss/cris/Makefile.in
Normal file
254
libgloss/cris/Makefile.in
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
#
|
||||||
|
# libgloss Makefile.in for CRIS. Copied and modified from mcore long ago.
|
||||||
|
#
|
||||||
|
|
||||||
|
DESTDIR =
|
||||||
|
VPATH = @srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
objdir = .
|
||||||
|
srcroot = $(srcdir)/../..
|
||||||
|
objroot = $(objdir)/../..
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
host_alias = @host_alias@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
|
||||||
|
bindir = @bindir@
|
||||||
|
libdir = @libdir@
|
||||||
|
tooldir = $(exec_prefix)/$(target_alias)
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
|
||||||
|
# Multilib support variables.
|
||||||
|
# TOP is used instead of MULTI{BUILD,SRC}TOP.
|
||||||
|
MULTIDIRS =
|
||||||
|
MULTISUBDIR =
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
|
||||||
|
AS = @AS@
|
||||||
|
AR = @AR@
|
||||||
|
LD = @LD@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
|
||||||
|
OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \
|
||||||
|
then echo ${objroot}/../binutils/objdump ; \
|
||||||
|
else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi`
|
||||||
|
OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
|
||||||
|
then echo ${objroot}/../binutils/objcopy ; \
|
||||||
|
else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
|
||||||
|
|
||||||
|
CFLAGS = -g
|
||||||
|
SCRIPTS =
|
||||||
|
|
||||||
|
OBJS = outbyte.o
|
||||||
|
|
||||||
|
# Beware: GNU make construct used (shell call). Since GCC at the time
|
||||||
|
# of this writing requires GNU make >= 3.79.1, this should pose no
|
||||||
|
# problem.
|
||||||
|
SYSCALL_CFILES := $(shell sed -ne 's/^cat > \([^ ]*\).*/\1/p' < $(srcdir)/gensyscalls)
|
||||||
|
|
||||||
|
# Here is all of the simulator stuff.
|
||||||
|
# Actually, now it's just the GNU/Linux stuff, as that's also the
|
||||||
|
# simulator ABI. The name of the library is different, though.
|
||||||
|
SIM_SCRIPTS =
|
||||||
|
SIM_LDFLAGS =
|
||||||
|
SIM_BSP = libsyssim.a
|
||||||
|
SIM_CRT0 = $(LIN_CRT0)
|
||||||
|
SIM_OBJS = $(LIN_OBJS)
|
||||||
|
SIM_TEST = sim-test
|
||||||
|
SIM_INSTALL = install-sim
|
||||||
|
|
||||||
|
# Here is all of the GNU/Linux stuff. At present we don't build newlib
|
||||||
|
# and libgloss for cris*-linux-gnu*, but it's nice to keep that as an
|
||||||
|
# option.
|
||||||
|
LIN_PREFIX =
|
||||||
|
LIN_LDFLAGS =
|
||||||
|
LIN_BSP = libsyslinux.a
|
||||||
|
LIN_CRT0 = lcrt0.o
|
||||||
|
LIN_EXTRA = crti.o crtn.o crt1.o
|
||||||
|
LIN_OBJS = close.o execve.o exit.o fcntl.o fork.o fstat.o getpid.o \
|
||||||
|
gettod.o isatty.o kill.o link.o lseek.o open.o read.o \
|
||||||
|
rename.o sbrk.o stat.o times.o unlink.o wait.o write.o ${OBJS}
|
||||||
|
LIN_SCRIPTS =
|
||||||
|
LIN_TEST =
|
||||||
|
LIN_INSTALL = install-lin
|
||||||
|
|
||||||
|
# In (over)due time, here will be all stuff necessary for a development
|
||||||
|
# board.
|
||||||
|
BSP_PREFIX =
|
||||||
|
BSP_LDFLAGS =
|
||||||
|
BSP_BSP = libbsp.a
|
||||||
|
BSP_CRT0 = crt0.o
|
||||||
|
BSP_OBJS = ${OBJS} setup.o
|
||||||
|
BSP_SCRIPTS =
|
||||||
|
BSP_TEST =
|
||||||
|
BSP_INSTALL = install-bsp
|
||||||
|
|
||||||
|
# Host specific makefile fragment comes in here.
|
||||||
|
@host_makefile_frag@
|
||||||
|
|
||||||
|
# Need to augment the definition from host_makefile_frag above.
|
||||||
|
INCLUDES += -I$(srcdir)
|
||||||
|
|
||||||
|
all: ${SIM_CRT0} ${LIN_CRT0} ${BSP_CRT0} ${SIM_BSP} ${LIN_BSP} ${BSP_BSP} \
|
||||||
|
libnosys.a ${LIN_EXTRA}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Here's where we build the board support packages for each target.
|
||||||
|
#
|
||||||
|
${SIM_BSP}: ${SIM_OBJS}
|
||||||
|
${AR} ${ARFLAGS} ${SIM_BSP} ${SIM_OBJS}
|
||||||
|
${RANLIB} ${SIM_BSP}
|
||||||
|
|
||||||
|
${BSP_BSP}: ${BSP_OBJS}
|
||||||
|
${AR} ${ARFLAGS} ${BSP_BSP} ${BSP_OBJS}
|
||||||
|
${RANLIB} ${BSP_BSP}
|
||||||
|
|
||||||
|
${LIN_BSP}: ${LIN_OBJS}
|
||||||
|
${AR} ${ARFLAGS} ${LIN_BSP} ${LIN_OBJS}
|
||||||
|
${RANLIB} ${LIN_BSP}
|
||||||
|
|
||||||
|
# We need a link to libnosys.a in this directory, since this is the
|
||||||
|
# directory used when test-compiling for configuration for other parts and
|
||||||
|
# when running the testsuite. By using a symbolic link, it does not
|
||||||
|
# matter whether libnosys.a is built yet when the rule is executed.
|
||||||
|
libnosys.a:
|
||||||
|
ln -s ../libnosys/libnosys.a
|
||||||
|
|
||||||
|
#
|
||||||
|
# Build a test program for each target board. Just trying to get
|
||||||
|
# it to link is a good test, so we ignore all the errors for now.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Here's where we build the test programs for each target.
|
||||||
|
#
|
||||||
|
.PHONY: test
|
||||||
|
test: ${SIM_TEST} ${BSP_TEST}
|
||||||
|
|
||||||
|
sim-test: sim-test.x sim-test.dis
|
||||||
|
|
||||||
|
sim-test.x: test.o ${SIM_CRT0} ${SIM_BSP}
|
||||||
|
${CC} ${LDFLAGS_FOR_TARGET} -L${objdir} \
|
||||||
|
${SIM_CRT0} test.o \
|
||||||
|
-o sim-test.x ${LIBS_FOR_TARGET} -lc ${SIM_BSP}
|
||||||
|
|
||||||
|
sim-test.dis: sim-test.x
|
||||||
|
${OBJDUMP} -d sim-test.x > sim-test.dis
|
||||||
|
|
||||||
|
|
||||||
|
test.o: ${srcdir}/m68k/test.c
|
||||||
|
|
||||||
|
# Debug usage.
|
||||||
|
.c.S:
|
||||||
|
${CC} ${CFLAGS_FOR_TARGET} $(INCLUDES) $(CFLAGS) -c $<
|
||||||
|
|
||||||
|
# Caveat: for the -melinux multilib in cris-axis-aout, crt0.o is the
|
||||||
|
# same as lcrt0.o, while elsewhere (other cris-axis-aout multilib and
|
||||||
|
# cris-axis-elf) it's crt0.c compiled.
|
||||||
|
crt0.o: lcrt0.o crt0.S
|
||||||
|
case "${MULTISUBDIR}" in \
|
||||||
|
*/elinux) \
|
||||||
|
cp -p $< $@; st=$$?;; \
|
||||||
|
*) \
|
||||||
|
case "$?" in \
|
||||||
|
*crt0.S) \
|
||||||
|
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -xassembler-with-cpp -c $(srcdir)/crt0.S;; \
|
||||||
|
*) touch $@;; \
|
||||||
|
esac; \
|
||||||
|
st=$$?;; \
|
||||||
|
esac; exit $$st
|
||||||
|
|
||||||
|
crt1.o: lcrt0.o
|
||||||
|
cp -p $< $@
|
||||||
|
|
||||||
|
clean mostlyclean:
|
||||||
|
rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(BSP_BSP) $(LIN_BSP) libnosys.a
|
||||||
|
|
||||||
|
distclean maintainer-clean realclean: clean
|
||||||
|
rm -f Makefile config.status *~
|
||||||
|
|
||||||
|
.PHONY: install info install-info clean-info
|
||||||
|
install: ${SIM_INSTALL} ${BSP_INSTALL} ${LIN_INSTALL}
|
||||||
|
|
||||||
|
# Note that bsp and elinux objects are exclusive: do not overlap
|
||||||
|
# installed files.
|
||||||
|
install-bsp:
|
||||||
|
case "${MULTISUBDIR}" in \
|
||||||
|
*/elinux) ;; \
|
||||||
|
*) set -e; \
|
||||||
|
for x in ${BSP_CRT0} ${BSP_BSP} ${BSP_SCRIPTS}; do \
|
||||||
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
||||||
|
done;; \
|
||||||
|
esac
|
||||||
|
|
||||||
|
install-sim:
|
||||||
|
set -e; \
|
||||||
|
for x in ${SIM_CRT0} ${SIM_BSP} ${SIM_SCRIPTS}; do \
|
||||||
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
||||||
|
done
|
||||||
|
|
||||||
|
install-lin:
|
||||||
|
case "${MULTISUBDIR}" in \
|
||||||
|
*/elinux) \
|
||||||
|
${INSTALL_DATA} ${LIN_CRT0} $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/crt0.o; \
|
||||||
|
set -e; \
|
||||||
|
for x in ${LIN_BSP} ${LIN_SCRIPTS}; do \
|
||||||
|
${INSTALL_DATA} $$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; \
|
||||||
|
done;; \
|
||||||
|
*) \
|
||||||
|
set -e; \
|
||||||
|
for x in ${LIN_BSP} ${LIN_SCRIPTS} ${LIN_EXTRA}; do \
|
||||||
|
${INSTALL_DATA} $$x ${tooldir}/lib${MULTISUBDIR}/$$x; \
|
||||||
|
done;; \
|
||||||
|
esac
|
||||||
|
|
||||||
|
doc:
|
||||||
|
info:
|
||||||
|
install-info:
|
||||||
|
clean-info:
|
||||||
|
|
||||||
|
Makefile: Makefile.in config.status @host_makefile_frag_path@
|
||||||
|
$(SHELL) config.status
|
||||||
|
|
||||||
|
config.status: configure
|
||||||
|
$(SHELL) config.status --recheck
|
||||||
|
|
||||||
|
$(SYSCALL_CFILES): syscalls.stamp
|
||||||
|
|
||||||
|
syscalls.stamp: gensyscalls
|
||||||
|
$(SHELL) $(srcdir)/gensyscalls
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
# Dependencies that could and should be auto-generated.
|
||||||
|
close.o: close.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
execve.o: execve.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
exit.o: exit.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
fork.o: fork.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
fstat.o: fstat.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
fcntl.o: fcntl.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
getpid.o: getpid.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
gettod.o: gettod.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
isatty.o: isatty.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
kill.o: kill.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
link.o: link.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
lseek.o: lseek.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
open.o: open.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
read.o: read.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
rename.o: rename.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
sbrk.o: sbrk.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
stat.o: stat.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
times.o: times.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
unlink.o: unlink.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
wait.o: wait.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
write.o: write.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
lcrt0.o: lcrt0.c linunistd.h $(objdir)/../libnosys/config.h $(srcdir)/../libnosys/warning.h
|
||||||
|
setup.o: setup.S
|
||||||
|
crti.o: crti.c
|
||||||
|
crtn.o: crtn.c
|
1203
libgloss/cris/configure
vendored
Executable file
1203
libgloss/cris/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
90
libgloss/cris/configure.in
Normal file
90
libgloss/cris/configure.in
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
dnl This file is based on ../mcore/configure.in
|
||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
AC_PREREQ(2.5)dnl
|
||||||
|
AC_INIT(Makefile.in)
|
||||||
|
|
||||||
|
if test "${enable_shared}" = "yes" ; then
|
||||||
|
echo "Shared libraries not supported for cross compiling, ignored"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$srcdir" = "." ; then
|
||||||
|
if test "${with_target_subdir}" != "." ; then
|
||||||
|
libgloss_topdir="${srcdir}/${with_multisrctop}../../.."
|
||||||
|
else
|
||||||
|
libgloss_topdir="${srcdir}/${with_multisrctop}../.."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
libgloss_topdir="${srcdir}/../.."
|
||||||
|
fi
|
||||||
|
AC_CONFIG_AUX_DIR($libgloss_topdir)
|
||||||
|
|
||||||
|
AC_CANONICAL_SYSTEM
|
||||||
|
AC_ARG_PROGRAM
|
||||||
|
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
||||||
|
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
||||||
|
# are probably using a cross compiler, which will not be able to fully
|
||||||
|
# link an executable. This should really be fixed in autoconf
|
||||||
|
# itself.
|
||||||
|
|
||||||
|
AC_DEFUN(LIB_AC_PROG_CC,
|
||||||
|
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
||||||
|
AC_CHECK_PROG(CC, gcc, gcc)
|
||||||
|
if test -z "$CC"; then
|
||||||
|
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
|
||||||
|
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_PROG_CC_GNU
|
||||||
|
|
||||||
|
if test $ac_cv_prog_gcc = yes; then
|
||||||
|
GCC=yes
|
||||||
|
dnl Check whether -g works, even if CFLAGS is set, in case the package
|
||||||
|
dnl plays around with CFLAGS (such as to build both debugging and
|
||||||
|
dnl normal versions of a library), tasteless as that idea is.
|
||||||
|
ac_test_CFLAGS="${CFLAGS+set}"
|
||||||
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS=
|
||||||
|
AC_PROG_CC_G
|
||||||
|
if test "$ac_test_CFLAGS" = set; then
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
elif test $ac_cv_prog_cc_g = yes; then
|
||||||
|
CFLAGS="-g -O2"
|
||||||
|
else
|
||||||
|
CFLAGS="-O2"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
GCC=
|
||||||
|
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
LIB_AC_PROG_CC
|
||||||
|
AS=${AS-as}
|
||||||
|
AC_SUBST(AS)
|
||||||
|
AR=${AR-ar}
|
||||||
|
AC_SUBST(AR)
|
||||||
|
LD=${LD-ld}
|
||||||
|
AC_SUBST(LD)
|
||||||
|
AC_PROG_RANLIB
|
||||||
|
|
||||||
|
host_makefile_frag=${srcdir}/../config/default.mh
|
||||||
|
|
||||||
|
dnl We have to assign the same value to other variables because autoconf
|
||||||
|
dnl doesn't provide a mechanism to substitute a replacement keyword with
|
||||||
|
dnl arbitrary data or pathnames.
|
||||||
|
dnl
|
||||||
|
host_makefile_frag_path=$host_makefile_frag
|
||||||
|
AC_SUBST(host_makefile_frag_path)
|
||||||
|
AC_SUBST_FILE(host_makefile_frag)
|
||||||
|
|
||||||
|
AC_OUTPUT(Makefile,
|
||||||
|
. ${libgloss_topdir}/config-ml.in,
|
||||||
|
srcdir=${srcdir}
|
||||||
|
target=${target}
|
||||||
|
ac_configure_args="${ac_configure_args} --enable-multilib"
|
||||||
|
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
||||||
|
libgloss_topdir=${libgloss_topdir}
|
||||||
|
)
|
83
libgloss/cris/crt0.S
Normal file
83
libgloss/cris/crt0.S
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/* Generic simplistic start-up-stub for CRIS/CRISv32.
|
||||||
|
Copyright (C) 1993-2005 Axis Communications.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Neither the name of Axis Communications nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
#undef cris
|
||||||
|
#undef L
|
||||||
|
#ifdef __NO_UNDERSCORES__
|
||||||
|
#define L(x) x
|
||||||
|
#else
|
||||||
|
#define L(x) _ ## x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
; Rudimentary v0..v32-compatible startup stub.
|
||||||
|
|
||||||
|
#ifdef __ELF__
|
||||||
|
.section .startup,"ax"
|
||||||
|
#endif
|
||||||
|
.global __start
|
||||||
|
nop
|
||||||
|
__start:
|
||||||
|
ba 0f
|
||||||
|
nop
|
||||||
|
|
||||||
|
.rept 256 - 2
|
||||||
|
.dword _.int
|
||||||
|
.endr
|
||||||
|
|
||||||
|
_.int:
|
||||||
|
#ifdef __arch_common_v10_v32
|
||||||
|
; This is just to allow the multilib to compile without
|
||||||
|
; hackery: the "common" subset doesn't recognize
|
||||||
|
; interrupt-return insns.
|
||||||
|
#elif __CRIS_arch_version >= 32
|
||||||
|
rete
|
||||||
|
rfe
|
||||||
|
#else
|
||||||
|
reti
|
||||||
|
nop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
0:
|
||||||
|
move.d __setup,$r9
|
||||||
|
jsr $r9
|
||||||
|
nop
|
||||||
|
#ifdef __ELF__
|
||||||
|
jsr L(_init)
|
||||||
|
nop
|
||||||
|
move.d L(_fini),$r10
|
||||||
|
jsr L(atexit)
|
||||||
|
nop
|
||||||
|
#endif
|
||||||
|
jsr L(main)
|
||||||
|
nop
|
||||||
|
jsr L(exit)
|
||||||
|
nop
|
||||||
|
0:
|
||||||
|
nop
|
||||||
|
ba 0b
|
||||||
|
nop
|
77
libgloss/cris/crti.c
Normal file
77
libgloss/cris/crti.c
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/* Executable and DSO init/fini start for cris*-axis-linux-gnu and simulators
|
||||||
|
Copyright (C) 2000, 2001, 2004, 2005 Axis Communications.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Neither the name of Axis Communications nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
#ifdef __ELF__
|
||||||
|
__asm__ (".syntax no_register_prefix");
|
||||||
|
|
||||||
|
__asm__ (".section .init\n"
|
||||||
|
#ifdef __NO_UNDERSCORES__
|
||||||
|
" .globl _init\n"
|
||||||
|
"_init:\n"
|
||||||
|
#else /* not __NO_UNDERSCORES__ */
|
||||||
|
" .globl __init\n"
|
||||||
|
"__init:\n"
|
||||||
|
#endif /* not __NO_UNDERSCORES__ */
|
||||||
|
"\tsubq 4,sp\n"
|
||||||
|
"\tmove srp,[sp]\n"
|
||||||
|
#ifdef __PIC__
|
||||||
|
"\tsubq 4,sp\n"
|
||||||
|
"\tmove.d r0,[sp]\n"
|
||||||
|
#if __CRIS_arch_version >= 32
|
||||||
|
"\tlapc _GLOBAL_OFFSET_TABLE_,$r0\n"
|
||||||
|
#else /* not __CRIS_arch_version >= 32 */
|
||||||
|
"\tmove.d $pc,$r0\n"
|
||||||
|
"\tsub.d .:GOTOFF,$r0\n"
|
||||||
|
#endif /* not __CRIS_arch_version >= 32 */
|
||||||
|
#endif /* __PIC__ */
|
||||||
|
|
||||||
|
"\t.section .fini\n"
|
||||||
|
#ifdef __NO_UNDERSCORES__
|
||||||
|
" .globl _fini\n"
|
||||||
|
"_fini:\n"
|
||||||
|
#else /* not __NO_UNDERSCORES__ */
|
||||||
|
" .globl __fini\n"
|
||||||
|
"__fini:\n"
|
||||||
|
#endif /* not __NO_UNDERSCORES__ */
|
||||||
|
"\tsubq 4,sp\n"
|
||||||
|
"\tmove srp,[sp]\n"
|
||||||
|
#ifdef __PIC__
|
||||||
|
"\tsubq 4,sp\n"
|
||||||
|
"\tmove.d r0,[sp]\n"
|
||||||
|
#if __CRIS_arch_version >= 32
|
||||||
|
"\tlapc _GLOBAL_OFFSET_TABLE_,$r0\n"
|
||||||
|
#else /* not __CRIS_arch_version >= 32 */
|
||||||
|
"\tmove.d $pc,$r0\n"
|
||||||
|
"\tsub.d .:GOTOFF,$r0\n"
|
||||||
|
#endif /* not __CRIS_arch_version >= 32 */
|
||||||
|
#endif /* __PIC__ */
|
||||||
|
);
|
||||||
|
|
||||||
|
#else /* not __ELF__ */
|
||||||
|
extern int Dummy;
|
||||||
|
#endif /* not __ELF__ */
|
51
libgloss/cris/crtn.c
Normal file
51
libgloss/cris/crtn.c
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/* Executable and DSO init/fini end for cris*-axis-linux-gnu and simulators
|
||||||
|
Copyright (C) 2000, 2001, 2004, 2005 Axis Communications.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Neither the name of Axis Communications nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
#ifdef __ELF__
|
||||||
|
|
||||||
|
__asm__ (".syntax no_register_prefix");
|
||||||
|
|
||||||
|
__asm__ (".section .init\n"
|
||||||
|
#ifdef __PIC__
|
||||||
|
"\tmove.d [sp+],r0\n"
|
||||||
|
#endif
|
||||||
|
"\tmove.d [sp+],r9\n"
|
||||||
|
"\tjump r9\n"
|
||||||
|
"\tnop\n"
|
||||||
|
|
||||||
|
"\t.section .fini\n"
|
||||||
|
#ifdef __PIC__
|
||||||
|
"\tmove.d [sp+],r0\n"
|
||||||
|
#endif
|
||||||
|
"\tmove.d [sp+],r9\n"
|
||||||
|
"\tjump r9\n"
|
||||||
|
"\tnop\n");
|
||||||
|
|
||||||
|
#else
|
||||||
|
extern int Dummy;
|
||||||
|
#endif
|
252
libgloss/cris/gensyscalls
Normal file
252
libgloss/cris/gensyscalls
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# Copyright (C) 2005 Axis Communications.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
#
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# 2. Neither the name of Axis Communications nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived
|
||||||
|
# from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
# COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
# To avoid an abundance of copyright/license messages for boilerplate
|
||||||
|
# code, we instead generate them from this file. Generating the
|
||||||
|
# function code could also be done automatically, but at the cost of
|
||||||
|
# slightly more intricate build machinery and/or scattered syscall
|
||||||
|
# information. Beware that the cat-lines must match the sed regexp
|
||||||
|
# "^cat > \([^ ]*\).*".
|
||||||
|
|
||||||
|
lu='/* -*- buffer-read-only: t -*-
|
||||||
|
THIS FILE IS AUTOMATICALLY GENERATED
|
||||||
|
FROM "'$0'". */
|
||||||
|
#include "linunistd.h"
|
||||||
|
#define R(x) return (x); }
|
||||||
|
'
|
||||||
|
lui="$lu int"
|
||||||
|
r=") { R (_Sys_"
|
||||||
|
|
||||||
|
cat > close.c <<EOF
|
||||||
|
$lui _close (int fd${r}close (fd))
|
||||||
|
EOF
|
||||||
|
cat > execve.c <<EOF
|
||||||
|
$lui _execve (char *path, char **argv, char **env${r}execve (path, argv, env))
|
||||||
|
EOF
|
||||||
|
cat > exit.c <<EOF
|
||||||
|
$lu void _exit (int val) { _Sys_exit (val); /* Appease GCC: */ while (1) ; }
|
||||||
|
EOF
|
||||||
|
cat > fcntl.c <<EOF
|
||||||
|
$lui _fcntl (int fd, int cmd, long arg${r}fcntl (fd, cmd, arg))
|
||||||
|
EOF
|
||||||
|
cat > fork.c <<EOF
|
||||||
|
$lui _fork (void${r}fork ())
|
||||||
|
EOF
|
||||||
|
cat > fstat.c <<EOF
|
||||||
|
$lu#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
int
|
||||||
|
_fstat (int fd, struct stat *buf)
|
||||||
|
{
|
||||||
|
struct new_stat ks;
|
||||||
|
int retval = _Sys_fstat (fd, &ks);
|
||||||
|
|
||||||
|
/* Blank before filling it in. */
|
||||||
|
memset (buf, 0, sizeof (*buf));
|
||||||
|
|
||||||
|
/* We have to translate from the linux struct new_stat.
|
||||||
|
It seems we don't have to translate the contents, though. */
|
||||||
|
buf->st_dev = ks.st_dev;
|
||||||
|
buf->st_ino = ks.st_ino;
|
||||||
|
buf->st_mode = ks.st_mode;
|
||||||
|
buf->st_nlink = ks.st_nlink;
|
||||||
|
buf->st_uid = ks.st_uid;
|
||||||
|
buf->st_gid = ks.st_gid;
|
||||||
|
buf->st_rdev = ks.st_rdev;
|
||||||
|
buf->st_size = ks.st_size;
|
||||||
|
buf->st_blksize = ks.st_blksize;
|
||||||
|
buf->st_blocks = ks.st_blocks;
|
||||||
|
buf->st_atime = ks.st_atime;
|
||||||
|
buf->st_mtime = ks.st_mtime;
|
||||||
|
buf->st_ctime = ks.st_ctime;
|
||||||
|
R (retval)
|
||||||
|
EOF
|
||||||
|
cat > getpid.c <<EOF
|
||||||
|
$lui _getpid (void${r}getpid ())
|
||||||
|
EOF
|
||||||
|
cat > gettod.c <<EOF
|
||||||
|
$lu#include <sys/time.h>
|
||||||
|
#include <sys/times.h>
|
||||||
|
int
|
||||||
|
_gettimeofday (struct timeval *tp, struct timezone *tzp
|
||||||
|
${r}gettimeofday (tp, tzp))
|
||||||
|
EOF
|
||||||
|
cat > isatty.c <<EOF
|
||||||
|
$lu
|
||||||
|
typedef unsigned int tcflag_t;
|
||||||
|
typedef unsigned char cc_t;
|
||||||
|
#define NCCS 19
|
||||||
|
|
||||||
|
struct termios {
|
||||||
|
tcflag_t c_iflag; /* input mode flags */
|
||||||
|
tcflag_t c_oflag; /* output mode flags */
|
||||||
|
tcflag_t c_cflag; /* control mode flags */
|
||||||
|
tcflag_t c_lflag; /* local mode flags */
|
||||||
|
cc_t c_line; /* line discipline */
|
||||||
|
cc_t c_cc[NCCS]; /* control characters */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* From asm-etrax100/ioctls.h: beware of updates. */
|
||||||
|
#define TCGETS 0x5401
|
||||||
|
|
||||||
|
/* Note that this name does not have a prepended underscore. */
|
||||||
|
int
|
||||||
|
isatty (int fd)
|
||||||
|
{
|
||||||
|
struct termios dummy;
|
||||||
|
int save_errno = errno;
|
||||||
|
int ret = _Sys_ioctl (fd, TCGETS, (unsigned long) &dummy);
|
||||||
|
errno = save_errno;
|
||||||
|
R (ret == 0)
|
||||||
|
EOF
|
||||||
|
cat > kill.c <<EOF
|
||||||
|
$lui _kill (int pid, int sig${r}kill (pid, sig))
|
||||||
|
EOF
|
||||||
|
cat > link.c <<EOF
|
||||||
|
$lui _link (const char *old, const char *new${r}link (old, new))
|
||||||
|
EOF
|
||||||
|
cat > lseek.c <<EOF
|
||||||
|
$lui _lseek (int fd, int offset, int whence${r}lseek (fd, offset, whence))
|
||||||
|
EOF
|
||||||
|
cat > open.c <<EOF
|
||||||
|
$lui _open (const char *fnam, int flags, int mode${r}open (fnam, flags, mode))
|
||||||
|
EOF
|
||||||
|
cat > read.c <<EOF
|
||||||
|
$lui _read (int fd, char *buf, int nbytes${r}read (fd, buf, nbytes))
|
||||||
|
EOF
|
||||||
|
cat > rename.c <<EOF
|
||||||
|
$lui _rename (const char *old, const char *new${r}rename (old, new))
|
||||||
|
EOF
|
||||||
|
cat > sbrk.c <<EOF
|
||||||
|
$lu
|
||||||
|
/* From asm-etrax100/mman.h: beware of updates. */
|
||||||
|
#define PROT_READ 0x1 /* page can be read */
|
||||||
|
#define PROT_WRITE 0x2 /* page can be written */
|
||||||
|
#define MAP_ANONYMOUS 0x20 /* don't use a file */
|
||||||
|
char *
|
||||||
|
_sbrk (int d)
|
||||||
|
{
|
||||||
|
static long last_alloc = 0;
|
||||||
|
|
||||||
|
/* FIXME: Things are a whole lot different than elinux. */
|
||||||
|
#ifdef __elinux__
|
||||||
|
|
||||||
|
/* We can't promise linear memory from a predetermined location.
|
||||||
|
We're NO_MM. We're paria. We have to rely on tweaks and unclean
|
||||||
|
behavior. We abuse the fact that the malloc function in newlib
|
||||||
|
accepts nonlinear chunks in return to its sbrk calls (with a minor
|
||||||
|
patch). */
|
||||||
|
|
||||||
|
/* We use an "old" type mmap, which takes a pointer to a vector of 6
|
||||||
|
longs where the parameters are stored. */
|
||||||
|
long buffer[6];
|
||||||
|
|
||||||
|
/* We can't return memory. Well we could, but we would have to keep a
|
||||||
|
list of previous allocations. FIXME: Seems reasonable to do that
|
||||||
|
later. */
|
||||||
|
if (d < 0)
|
||||||
|
return (char *) last_alloc;
|
||||||
|
|
||||||
|
buffer[3] = MAP_ANONYMOUS; /* Not associated with a file. */
|
||||||
|
buffer[4] = -1; /* No file. */
|
||||||
|
buffer[0] = 0; /* Address 0: let mmap pick one. */
|
||||||
|
buffer[1] = d; /* Length. */
|
||||||
|
buffer[2] = (PROT_READ | PROT_WRITE); /* Protection flags. */
|
||||||
|
buffer[5] = 0; /* Offset into file. */
|
||||||
|
|
||||||
|
last_alloc = _Sys_mmap (buffer);
|
||||||
|
|
||||||
|
return (char *) last_alloc;
|
||||||
|
|
||||||
|
#else /* not __elinux__ */
|
||||||
|
|
||||||
|
long prev_brk;
|
||||||
|
|
||||||
|
if (last_alloc == 0)
|
||||||
|
{
|
||||||
|
last_alloc = _Sys_brk (0);
|
||||||
|
|
||||||
|
if (last_alloc < 0)
|
||||||
|
return (char *) -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
prev_brk = last_alloc;
|
||||||
|
|
||||||
|
if (_Sys_brk (last_alloc + d) < last_alloc + d)
|
||||||
|
return (char *) -1;
|
||||||
|
|
||||||
|
last_alloc += d;
|
||||||
|
|
||||||
|
return (char *) prev_brk;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
cat > stat.c <<EOF
|
||||||
|
$lu#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
int
|
||||||
|
_stat (const char *path, struct stat *buf)
|
||||||
|
{
|
||||||
|
struct new_stat ks;
|
||||||
|
int retval = _Sys_stat (path, &ks);
|
||||||
|
|
||||||
|
/* Blank before filling it in. */
|
||||||
|
memset (buf, 0, sizeof (*buf));
|
||||||
|
|
||||||
|
/* We have to translate from the linux struct new_stat.
|
||||||
|
It seems we don't have to translate the contents, though. */
|
||||||
|
buf->st_dev = ks.st_dev;
|
||||||
|
buf->st_ino = ks.st_ino;
|
||||||
|
buf->st_mode = ks.st_mode;
|
||||||
|
buf->st_nlink = ks.st_nlink;
|
||||||
|
buf->st_uid = ks.st_uid;
|
||||||
|
buf->st_gid = ks.st_gid;
|
||||||
|
buf->st_rdev = ks.st_rdev;
|
||||||
|
buf->st_size = ks.st_size;
|
||||||
|
buf->st_blksize = ks.st_blksize;
|
||||||
|
buf->st_blocks = ks.st_blocks;
|
||||||
|
buf->st_atime = ks.st_atime;
|
||||||
|
buf->st_mtime = ks.st_mtime;
|
||||||
|
buf->st_ctime = ks.st_ctime;
|
||||||
|
R (retval)
|
||||||
|
EOF
|
||||||
|
cat > times.c <<EOF
|
||||||
|
$lu#include <sys/times.h>
|
||||||
|
clock_t
|
||||||
|
_times (struct tms * tp${r}times (tp))
|
||||||
|
EOF
|
||||||
|
cat > unlink.c <<EOF
|
||||||
|
$lui _unlink (const char *f${r}unlink (f))
|
||||||
|
EOF
|
||||||
|
cat > wait.c <<EOF
|
||||||
|
$lui _wait (int *status${r}wait4 (_getpid(), status, 0, 0))
|
||||||
|
EOF
|
||||||
|
cat > write.c <<EOF
|
||||||
|
$lui _write (int fd, char *buf, int nbytes${r}write (fd, buf, nbytes))
|
||||||
|
EOF
|
||||||
|
exit 0
|
128
libgloss/cris/lcrt0.c
Normal file
128
libgloss/cris/lcrt0.c
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/* Support for cris*-axis-linux-gnu and src/sim/cris simulator.
|
||||||
|
Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Axis Communications.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Neither the name of Axis Communications nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
#include "linunistd.h"
|
||||||
|
|
||||||
|
extern void exit (int) __attribute ((__noreturn__));
|
||||||
|
|
||||||
|
__asm__ (".syntax no_register_prefix");
|
||||||
|
|
||||||
|
#ifdef __ELF__
|
||||||
|
/* This simulator magic for an earlier simulator was supposed to be
|
||||||
|
found two bytes before _start. Let's keep it for sake of
|
||||||
|
compatibility. Trying to emit them with an ordinary const char[]
|
||||||
|
and attribute section makes gcc barf; it doesn't like having the
|
||||||
|
same section attribute for both code and data.
|
||||||
|
The code is supposed to cause a crash if someone jumps to 0. */
|
||||||
|
__asm__
|
||||||
|
(
|
||||||
|
" .section .startup,\"ax\",@progbits\n"
|
||||||
|
" .byte 55,55\n"
|
||||||
|
" move.d 0xbadacce5,r9\n"
|
||||||
|
" clear.d [r9]\n"
|
||||||
|
" setf\n"
|
||||||
|
" setf\n"
|
||||||
|
" .previous");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__asm__
|
||||||
|
(
|
||||||
|
#ifdef __AOUT__
|
||||||
|
" .text\n\t"
|
||||||
|
#elif defined (__ELF__)
|
||||||
|
" .section .startup,\"ax\",@progbits\n"
|
||||||
|
#endif
|
||||||
|
" .global __start\n"
|
||||||
|
"__start:\n"
|
||||||
|
/* SP must be set up by the simulator or the system. */
|
||||||
|
|
||||||
|
/* Find ARGC, ARGV and ENV. */
|
||||||
|
/* ARGC. */
|
||||||
|
" move.d [sp],r10\n"
|
||||||
|
|
||||||
|
/* ARGV. */
|
||||||
|
" move.d sp,r11\n"
|
||||||
|
" addq 4,r11\n"
|
||||||
|
|
||||||
|
/* ENVP. */
|
||||||
|
" move.d sp,r12\n"
|
||||||
|
" addi r10.d,r12\n"
|
||||||
|
" addq 8,r12\n"
|
||||||
|
|
||||||
|
/* Terminate R9 and R6; we don't have a "console_print_etrax" or system
|
||||||
|
call function. */
|
||||||
|
" clear.d r9\n"
|
||||||
|
" clear.d r6\n"
|
||||||
|
" move.d __start1,r13\n"
|
||||||
|
" jump r13\n"
|
||||||
|
" setf\n"
|
||||||
|
#ifndef __AOUT__
|
||||||
|
/* We rely on a.out not being in .data here. Quite fragile, but
|
||||||
|
covered by e.g. running the GCC test-suite for cris-unknown-aout. */
|
||||||
|
" .previous"
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
extern void _Libctors (void);
|
||||||
|
extern void _Libdtors (void);
|
||||||
|
|
||||||
|
extern void __init__start (void) __attribute ((weak));
|
||||||
|
extern void __aout__ctors (void) __attribute ((weak));
|
||||||
|
|
||||||
|
static void start1 () __asm__ ("__start1") __attribute ((__used__));
|
||||||
|
static void
|
||||||
|
start1 (int argc, char **argv, char **env)
|
||||||
|
{
|
||||||
|
#ifdef __ELF__
|
||||||
|
/* For ELF systems, we call _init and register _fini with atexit. */
|
||||||
|
{
|
||||||
|
extern void _init (void);
|
||||||
|
extern void _fini (void);
|
||||||
|
_init ();
|
||||||
|
if (atexit (_fini) != 0)
|
||||||
|
exit (-1);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* Constructors which may get here through the ELF .init section, when
|
||||||
|
linking ELF and producing a.out. */
|
||||||
|
if (__init__start)
|
||||||
|
__init__start ();
|
||||||
|
|
||||||
|
if (__aout__ctors)
|
||||||
|
__aout__ctors ();
|
||||||
|
|
||||||
|
/* Call constructors in shared libraries. */
|
||||||
|
_Libctors ();
|
||||||
|
|
||||||
|
if (atexit (_Libdtors) != 0)
|
||||||
|
exit (-1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Call the user program. */
|
||||||
|
exit (main (argc, argv, env));
|
||||||
|
}
|
423
libgloss/cris/linunistd.h
Normal file
423
libgloss/cris/linunistd.h
Normal file
@ -0,0 +1,423 @@
|
|||||||
|
/* Support for syscalls for cris*-axis-linux-gnu and simulators
|
||||||
|
Copyright (C) 1998-2005 Axis Communications.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Neither the name of Axis Communications nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
/* Derived from asm-etrax100/unistd.h with minor modifications to fit as
|
||||||
|
LOSS for newlib. */
|
||||||
|
|
||||||
|
#ifndef _ASM_ELINUX_UNISTD_H_
|
||||||
|
#define _ASM_ELINUX_UNISTD_H_
|
||||||
|
|
||||||
|
/* Our callers might want to use link_warning, so provide it from here. */
|
||||||
|
#include "../libnosys/config.h"
|
||||||
|
#include "libnosys/warning.h"
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#undef errno
|
||||||
|
extern int errno;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file contains the system call numbers, and stub macros for libc.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define __NR_setup 0 /* used only by init, to get system going */
|
||||||
|
#define __NR_exit 1
|
||||||
|
#define __NR_fork 2
|
||||||
|
#define __NR_read 3
|
||||||
|
#define __NR_write 4
|
||||||
|
#define __NR_open 5
|
||||||
|
#define __NR_close 6
|
||||||
|
#define __NR_waitpid 7
|
||||||
|
#define __NR_creat 8
|
||||||
|
#define __NR_link 9
|
||||||
|
#define __NR_unlink 10
|
||||||
|
#define __NR_execve 11
|
||||||
|
#define __NR_chdir 12
|
||||||
|
#define __NR_time 13
|
||||||
|
#define __NR_mknod 14
|
||||||
|
#define __NR_chmod 15
|
||||||
|
#define __NR_chown 16
|
||||||
|
#define __NR_break 17
|
||||||
|
#define __NR_oldstat 18
|
||||||
|
#define __NR_lseek 19
|
||||||
|
#define __NR_getpid 20
|
||||||
|
#define __NR_mount 21
|
||||||
|
#define __NR_umount 22
|
||||||
|
#define __NR_setuid 23
|
||||||
|
#define __NR_getuid 24
|
||||||
|
#define __NR_stime 25
|
||||||
|
#define __NR_ptrace 26
|
||||||
|
#define __NR_alarm 27
|
||||||
|
#define __NR_oldfstat 28
|
||||||
|
#define __NR_pause 29
|
||||||
|
#define __NR_utime 30
|
||||||
|
#define __NR_stty 31
|
||||||
|
#define __NR_gtty 32
|
||||||
|
#define __NR_access 33
|
||||||
|
#define __NR_nice 34
|
||||||
|
#define __NR_ftime 35
|
||||||
|
#define __NR_sync 36
|
||||||
|
#define __NR_kill 37
|
||||||
|
#define __NR_rename 38
|
||||||
|
#define __NR_mkdir 39
|
||||||
|
#define __NR_rmdir 40
|
||||||
|
#define __NR_dup 41
|
||||||
|
#define __NR_pipe 42
|
||||||
|
#define __NR_times 43
|
||||||
|
#define __NR_prof 44
|
||||||
|
#define __NR_brk 45
|
||||||
|
#define __NR_setgid 46
|
||||||
|
#define __NR_getgid 47
|
||||||
|
#define __NR_signal 48
|
||||||
|
#define __NR_geteuid 49
|
||||||
|
#define __NR_getegid 50
|
||||||
|
#define __NR_acct 51
|
||||||
|
#define __NR_phys 52
|
||||||
|
#define __NR_lock 53
|
||||||
|
#define __NR_ioctl 54
|
||||||
|
#define __NR_fcntl 55
|
||||||
|
#define __NR_mpx 56
|
||||||
|
#define __NR_setpgid 57
|
||||||
|
#define __NR_ulimit 58
|
||||||
|
#define __NR_oldolduname 59
|
||||||
|
#define __NR_umask 60
|
||||||
|
#define __NR_chroot 61
|
||||||
|
#define __NR_ustat 62
|
||||||
|
#define __NR_dup2 63
|
||||||
|
#define __NR_getppid 64
|
||||||
|
#define __NR_getpgrp 65
|
||||||
|
#define __NR_setsid 66
|
||||||
|
#define __NR_sigaction 67
|
||||||
|
#define __NR_sgetmask 68
|
||||||
|
#define __NR_ssetmask 69
|
||||||
|
#define __NR_setreuid 70
|
||||||
|
#define __NR_setregid 71
|
||||||
|
#define __NR_sigsuspend 72
|
||||||
|
#define __NR_sigpending 73
|
||||||
|
#define __NR_sethostname 74
|
||||||
|
#define __NR_setrlimit 75
|
||||||
|
#define __NR_getrlimit 76
|
||||||
|
#define __NR_getrusage 77
|
||||||
|
#define __NR_gettimeofday 78
|
||||||
|
#define __NR_settimeofday 79
|
||||||
|
#define __NR_getgroups 80
|
||||||
|
#define __NR_setgroups 81
|
||||||
|
#define __NR_select 82
|
||||||
|
#define __NR_symlink 83
|
||||||
|
#define __NR_oldlstat 84
|
||||||
|
#define __NR_readlink 85
|
||||||
|
#define __NR_uselib 86
|
||||||
|
#define __NR_swapon 87
|
||||||
|
#define __NR_reboot 88
|
||||||
|
#define __NR_readdir 89
|
||||||
|
#define __NR_mmap 90
|
||||||
|
#define __NR_munmap 91
|
||||||
|
#define __NR_truncate 92
|
||||||
|
#define __NR_ftruncate 93
|
||||||
|
#define __NR_fchmod 94
|
||||||
|
#define __NR_fchown 95
|
||||||
|
#define __NR_getpriority 96
|
||||||
|
#define __NR_setpriority 97
|
||||||
|
#define __NR_profil 98
|
||||||
|
#define __NR_statfs 99
|
||||||
|
#define __NR_fstatfs 100
|
||||||
|
#define __NR_ioperm 101
|
||||||
|
#define __NR_socketcall 102
|
||||||
|
#define __NR_syslog 103
|
||||||
|
#define __NR_setitimer 104
|
||||||
|
#define __NR_getitimer 105
|
||||||
|
#define __NR_stat 106
|
||||||
|
#define __NR_lstat 107
|
||||||
|
#define __NR_fstat 108
|
||||||
|
#define __NR_olduname 109
|
||||||
|
#define __NR_iopl 110
|
||||||
|
#define __NR_vhangup 111
|
||||||
|
#define __NR_idle 112
|
||||||
|
#define __NR_vm86 113
|
||||||
|
#define __NR_wait4 114
|
||||||
|
#define __NR_swapoff 115
|
||||||
|
#define __NR_sysinfo 116
|
||||||
|
#define __NR_ipc 117
|
||||||
|
#define __NR_fsync 118
|
||||||
|
#define __NR_sigreturn 119
|
||||||
|
#define __NR_clone 120
|
||||||
|
#define __NR_setdomainname 121
|
||||||
|
#define __NR_uname 122
|
||||||
|
#define __NR_modify_ldt 123
|
||||||
|
#define __NR_adjtimex 124
|
||||||
|
#define __NR_mprotect 125
|
||||||
|
#define __NR_sigprocmask 126
|
||||||
|
#define __NR_create_module 127
|
||||||
|
#define __NR_init_module 128
|
||||||
|
#define __NR_delete_module 129
|
||||||
|
#define __NR_get_kernel_syms 130
|
||||||
|
#define __NR_quotactl 131
|
||||||
|
#define __NR_getpgid 132
|
||||||
|
#define __NR_fchdir 133
|
||||||
|
#define __NR_bdflush 134
|
||||||
|
#define __NR_sysfs 135
|
||||||
|
#define __NR_personality 136
|
||||||
|
#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
|
||||||
|
#define __NR_setfsuid 138
|
||||||
|
#define __NR_setfsgid 139
|
||||||
|
#define __NR__llseek 140
|
||||||
|
#define __NR_getdents 141
|
||||||
|
#define __NR__newselect 142
|
||||||
|
#define __NR_flock 143
|
||||||
|
#define __NR_msync 144
|
||||||
|
#define __NR_readv 145
|
||||||
|
#define __NR_writev 146
|
||||||
|
#define __NR_getsid 147
|
||||||
|
#define __NR_fdatasync 148
|
||||||
|
#define __NR__sysctl 149
|
||||||
|
#define __NR_mlock 150
|
||||||
|
#define __NR_munlock 151
|
||||||
|
#define __NR_mlockall 152
|
||||||
|
#define __NR_munlockall 153
|
||||||
|
#define __NR_sched_setparam 154
|
||||||
|
#define __NR_sched_getparam 155
|
||||||
|
#define __NR_sched_setscheduler 156
|
||||||
|
#define __NR_sched_getscheduler 157
|
||||||
|
#define __NR_sched_yield 158
|
||||||
|
#define __NR_sched_get_priority_max 159
|
||||||
|
#define __NR_sched_get_priority_min 160
|
||||||
|
#define __NR_sched_rr_get_interval 161
|
||||||
|
#define __NR_nanosleep 162
|
||||||
|
#define __NR_mremap 163
|
||||||
|
|
||||||
|
#define __NR_mmap2 192
|
||||||
|
|
||||||
|
#define PASTE(x,y) x##y
|
||||||
|
#define XSTR(x) # x
|
||||||
|
#define STR(x) XSTR (x)
|
||||||
|
|
||||||
|
#ifdef __elinux__
|
||||||
|
# define CRIS_SYSCALL "jir .$System.call"
|
||||||
|
# define CALLNO_REG r1
|
||||||
|
# define ARG5_REG r0
|
||||||
|
# define MOVE_ARG5 "move.d"
|
||||||
|
# define COLON_ARG5_CLOBBER : "r0"
|
||||||
|
#else
|
||||||
|
# define CRIS_SYSCALL "break 13"
|
||||||
|
# define CALLNO_REG r9
|
||||||
|
# define ARG5_REG srp
|
||||||
|
# define MOVE_ARG5 "move"
|
||||||
|
# define COLON_ARG5_CLOBBER
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
|
||||||
|
#define _syscall0(type,name) \
|
||||||
|
type PASTE(_Sys_,name) (void) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10"); \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_)); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _syscall1(type,name,type1,arg1) \
|
||||||
|
type PASTE(_Sys_,name) (type1 arg1) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10") = (long) arg1; \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_), "0" (__a)); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _syscall2(type,name,type1,arg1,type2,arg2) \
|
||||||
|
type PASTE(_Sys_,name) (type1 arg1,type2 arg2) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10") = (long) arg1; \
|
||||||
|
register long __b __asm__ ("r11") = (long) arg2; \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_), "0" (__a), "r" (__b)); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
|
||||||
|
type PASTE(_Sys_,name) (type1 arg1,type2 arg2,type3 arg3) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10") = (long) arg1; \
|
||||||
|
register long __b __asm__ ("r11") = (long) arg2; \
|
||||||
|
register long __c __asm__ ("r12") = (long) arg3; \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_), "0" (__a), "r" (__b), "r" (__c)); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
|
||||||
|
type PASTE(_Sys_,name) (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10") = (long) arg1; \
|
||||||
|
register long __b __asm__ ("r11") = (long) arg2; \
|
||||||
|
register long __c __asm__ ("r12") = (long) arg3; \
|
||||||
|
register long __d __asm__ ("r13") = (long) arg4; \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_), "0" (__a), "r" (__b), \
|
||||||
|
"r" (__c), "r" (__d)); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
|
||||||
|
type5,arg5) \
|
||||||
|
type PASTE(_Sys_,name) (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10") = (long) arg1; \
|
||||||
|
register long __b __asm__ ("r11") = (long) arg2; \
|
||||||
|
register long __c __asm__ ("r12") = (long) arg3; \
|
||||||
|
register long __d __asm__ ("r13") = (long) arg4; \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (MOVE_ARG5 " %6,$" STR (ARG5_REG) "\n\t" \
|
||||||
|
CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_), "0" (__a), "r" (__b), \
|
||||||
|
"r" (__c), "r" (__d), "g" (arg5) \
|
||||||
|
COLON_ARG5_CLOBBER); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
|
||||||
|
type5,arg5,type6,arg6) \
|
||||||
|
type PASTE(_Sys_,name) (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6) \
|
||||||
|
{ \
|
||||||
|
register long __a __asm__ ("r10") = (long) arg1; \
|
||||||
|
register long __b __asm__ ("r11") = (long) arg2; \
|
||||||
|
register long __c __asm__ ("r12") = (long) arg3; \
|
||||||
|
register long __d __asm__ ("r13") = (long) arg4; \
|
||||||
|
register long __n_ __asm__ (STR (CALLNO_REG)) = (__NR_##name); \
|
||||||
|
__asm__ __volatile__ (MOVE_ARG5 " %6,$" STR (ARG5_REG) "\n\t" \
|
||||||
|
"move %7,$mof\n\t" \
|
||||||
|
CRIS_SYSCALL \
|
||||||
|
: "=r" (__a) \
|
||||||
|
: "r" (__n_), "0" (__a), "r" (__b), \
|
||||||
|
"r" (__c), "r" (__d), "g" (arg5), "g" (arg6) \
|
||||||
|
COLON_ARG5_CLOBBER); \
|
||||||
|
if (__a >= 0) \
|
||||||
|
return (type) __a; \
|
||||||
|
errno = -__a; \
|
||||||
|
return -1; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define __NR__exit __NR_exit
|
||||||
|
static inline _syscall0(int,idle)
|
||||||
|
static inline _syscall0(int,fork)
|
||||||
|
static inline _syscall2(int,clone,unsigned long,flags,char *,esp)
|
||||||
|
static inline _syscall0(int,pause)
|
||||||
|
static inline _syscall0(int,setup)
|
||||||
|
static inline _syscall0(int,sync)
|
||||||
|
static inline _syscall3(int,write,int,fd,const char *,buf,unsigned,count)
|
||||||
|
static inline _syscall1(int,dup,int,fd)
|
||||||
|
static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
|
||||||
|
static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
|
||||||
|
static inline _syscall1(int,close,int,fd)
|
||||||
|
static inline _syscall1(int,_exit,int,exitcode)
|
||||||
|
static inline _syscall1(int,exit,int,exitcode)
|
||||||
|
static inline _syscall3(int,waitpid,int,pid,int *,wait_stat,int,options)
|
||||||
|
static inline _syscall3(int,read,int,fd,char *,buf,unsigned,count)
|
||||||
|
static inline _syscall2(int,socketcall,int,call,unsigned long *,args)
|
||||||
|
static inline _syscall3(int,ioctl,unsigned int,fd,unsigned int,cmd,unsigned long,arg)
|
||||||
|
static inline _syscall3(int,fcntl,unsigned int,fd,unsigned int,cmd,unsigned long,arg)
|
||||||
|
static inline _syscall5(int,mount,const char *,a,const char *,b,const char *,c,unsigned long,rwflag,const void *,data)
|
||||||
|
static inline _syscall2(int,rename,const char *,a,const char*,b)
|
||||||
|
|
||||||
|
#ifndef __elinux__
|
||||||
|
/* Make sure these are only used where they are supported. */
|
||||||
|
static inline _syscall6(int,mmap2,unsigned long, addr, unsigned long, len,
|
||||||
|
unsigned long, prot, unsigned long, flags,
|
||||||
|
unsigned long, fd, unsigned long, pgoff)
|
||||||
|
static inline _syscall1(long,brk,long,addr)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* This structure is ripped from asm-etrax100/stat.h: beware of updates. */
|
||||||
|
struct new_stat {
|
||||||
|
unsigned short st_dev;
|
||||||
|
unsigned short __pad1;
|
||||||
|
unsigned long st_ino;
|
||||||
|
unsigned short st_mode;
|
||||||
|
unsigned short st_nlink;
|
||||||
|
unsigned short st_uid;
|
||||||
|
unsigned short st_gid;
|
||||||
|
unsigned short st_rdev;
|
||||||
|
unsigned short __pad2;
|
||||||
|
unsigned long st_size;
|
||||||
|
unsigned long st_blksize;
|
||||||
|
unsigned long st_blocks;
|
||||||
|
unsigned long st_atime;
|
||||||
|
unsigned long __unused1;
|
||||||
|
unsigned long st_mtime;
|
||||||
|
unsigned long __unused2;
|
||||||
|
unsigned long st_ctime;
|
||||||
|
unsigned long __unused3;
|
||||||
|
unsigned long __unused4;
|
||||||
|
unsigned long __unused5;
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline _syscall2(int,stat,const char *,path,struct new_stat *,statbuf)
|
||||||
|
static inline _syscall2(int,fstat,int,fd,struct new_stat *,statbuf)
|
||||||
|
static inline _syscall0(int,getpid)
|
||||||
|
static inline _syscall2(int,kill,int,pid,int,sig)
|
||||||
|
static inline _syscall3(int,lseek,int,fd,int,offset,int,whence)
|
||||||
|
struct tms;
|
||||||
|
static inline _syscall1(long,times,struct tms *,tbuf)
|
||||||
|
static inline _syscall1(long,mmap,long *, buf)
|
||||||
|
struct timeval;
|
||||||
|
struct timezone;
|
||||||
|
static inline _syscall2(int,gettimeofday,struct timeval *,tp,
|
||||||
|
struct timezone *, tzp)
|
||||||
|
static inline _syscall2(int,link,const char *,old,const char *,new)
|
||||||
|
static inline _syscall1(int,unlink,const char *, f)
|
||||||
|
struct rusage;
|
||||||
|
static inline _syscall4(int,wait4,int,pid,int *,sa,int,op,struct rusage *,ru)
|
||||||
|
#endif /* _ASM_ELINUX_UNISTD_H_ */
|
9
libgloss/cris/outbyte.c
Normal file
9
libgloss/cris/outbyte.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* Low-level kind-of-support for CRIS. Mostly used as a placeholder
|
||||||
|
function. Too small and obvious to warrant a copyright notice. */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
void
|
||||||
|
outbyte (int ch)
|
||||||
|
{
|
||||||
|
write (1, &ch, 1);
|
||||||
|
}
|
44
libgloss/cris/setup.S
Normal file
44
libgloss/cris/setup.S
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/* Support for standalone CRIS/CRISv32 code.
|
||||||
|
Copyright (C) 2005 Axis Communications.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Neither the name of Axis Communications nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||||
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||||
|
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE. */
|
||||||
|
|
||||||
|
.text
|
||||||
|
.global __setup
|
||||||
|
__setup:
|
||||||
|
/* Make sure to save SRP. */
|
||||||
|
#ifdef __arch_common_v10_v32
|
||||||
|
/* Can't do anything if we don't know for which arch. This file is
|
||||||
|
then only a placeholder. Oh, and we can't use the "ret" insn in
|
||||||
|
"common" code. */
|
||||||
|
#else
|
||||||
|
/* Code missing:
|
||||||
|
- Initialize RAM circuits.
|
||||||
|
- Initialize serial output and input.
|
||||||
|
- Set stack-pointer. */
|
||||||
|
ret
|
||||||
|
nop
|
||||||
|
#endif
|
32
libgloss/libnosys/configure
vendored
32
libgloss/libnosys/configure
vendored
@ -755,6 +755,8 @@ case "${target}" in
|
|||||||
;;
|
;;
|
||||||
strongarm-*-*)
|
strongarm-*-*)
|
||||||
;;
|
;;
|
||||||
|
cris-*-* | crisv32-*-*)
|
||||||
|
;;
|
||||||
d10v*)
|
d10v*)
|
||||||
;;
|
;;
|
||||||
h8300*-*-*)
|
h8300*-*-*)
|
||||||
@ -807,7 +809,7 @@ EOF
|
|||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
|
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
|
||||||
echo "configure:811: checking for .previous assembler directive" >&5
|
echo "configure:813: checking for .previous assembler directive" >&5
|
||||||
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -816,7 +818,7 @@ else
|
|||||||
.section foo_section
|
.section foo_section
|
||||||
.previous
|
.previous
|
||||||
EOF
|
EOF
|
||||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:820: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||||
libc_cv_asm_previous_directive=yes
|
libc_cv_asm_previous_directive=yes
|
||||||
cat >> confdefs.h <<\EOF
|
cat >> confdefs.h <<\EOF
|
||||||
#define HAVE_ASM_PREVIOUS_DIRECTIVE 1
|
#define HAVE_ASM_PREVIOUS_DIRECTIVE 1
|
||||||
@ -829,7 +831,7 @@ fi
|
|||||||
echo "$ac_t""$libc_cv_asm_previous_directive" 1>&6
|
echo "$ac_t""$libc_cv_asm_previous_directive" 1>&6
|
||||||
|
|
||||||
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
|
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
|
||||||
echo "configure:833: checking for .popsection assembler directive" >&5
|
echo "configure:835: checking for .popsection assembler directive" >&5
|
||||||
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -838,7 +840,7 @@ else
|
|||||||
.pushsection foo_section
|
.pushsection foo_section
|
||||||
.popsection
|
.popsection
|
||||||
EOF
|
EOF
|
||||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:844: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||||
libc_cv_asm_popsection_directive=yes
|
libc_cv_asm_popsection_directive=yes
|
||||||
cat >> confdefs.h <<\EOF
|
cat >> confdefs.h <<\EOF
|
||||||
#define HAVE_ASM_POPSECTION_DIRECTIVE 1
|
#define HAVE_ASM_POPSECTION_DIRECTIVE 1
|
||||||
@ -851,7 +853,7 @@ fi
|
|||||||
echo "$ac_t""$libc_cv_asm_popsection_directive" 1>&6
|
echo "$ac_t""$libc_cv_asm_popsection_directive" 1>&6
|
||||||
|
|
||||||
echo $ac_n "checking for section attributes""... $ac_c" 1>&6
|
echo $ac_n "checking for section attributes""... $ac_c" 1>&6
|
||||||
echo "configure:855: checking for section attributes" >&5
|
echo "configure:857: checking for section attributes" >&5
|
||||||
if eval "test \"`echo '$''{'libc_cv_section_attributes'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'libc_cv_section_attributes'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -860,7 +862,7 @@ else
|
|||||||
int secttest __attribute__ ((section (".gnu.warning.secttest"))) = 10;
|
int secttest __attribute__ ((section (".gnu.warning.secttest"))) = 10;
|
||||||
int main() {}
|
int main() {}
|
||||||
EOF
|
EOF
|
||||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.c 1>&5'; { (eval echo configure:864: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
if { ac_try='${CC-cc} -c $CFLAGS conftest.c 1>&5'; { (eval echo configure:866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||||
libc_cv_section_attributes=yes
|
libc_cv_section_attributes=yes
|
||||||
cat >> confdefs.h <<\EOF
|
cat >> confdefs.h <<\EOF
|
||||||
#define HAVE_SECTION_ATTRIBUTES 1
|
#define HAVE_SECTION_ATTRIBUTES 1
|
||||||
@ -875,7 +877,7 @@ echo "$ac_t""$libc_cv_section_attributes" 1>&6
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
echo $ac_n "checking for symbol prefix""... $ac_c" 1>&6
|
echo $ac_n "checking for symbol prefix""... $ac_c" 1>&6
|
||||||
echo "configure:879: checking for symbol prefix" >&5
|
echo "configure:881: checking for symbol prefix" >&5
|
||||||
if eval "test \"`echo '$''{'libc_symbol_prefix'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'libc_symbol_prefix'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -883,11 +885,11 @@ else
|
|||||||
foo () { }
|
foo () { }
|
||||||
EOF
|
EOF
|
||||||
libc_symbol_prefix=none
|
libc_symbol_prefix=none
|
||||||
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo" > /dev/null'; { (eval echo configure:887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo" > /dev/null'; { (eval echo configure:889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||||
then
|
then
|
||||||
libc_symbol_prefix='$'
|
libc_symbol_prefix='$'
|
||||||
else
|
else
|
||||||
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "_foo" > /dev/null'; { (eval echo configure:891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "_foo" > /dev/null'; { (eval echo configure:893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||||
then
|
then
|
||||||
libc_symbol_prefix=_
|
libc_symbol_prefix=_
|
||||||
fi
|
fi
|
||||||
@ -911,7 +913,7 @@ fi
|
|||||||
# Extract the first word of "gcc", so it can be a program name with args.
|
# Extract the first word of "gcc", so it can be a program name with args.
|
||||||
set dummy gcc; ac_word=$2
|
set dummy gcc; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:915: checking for $ac_word" >&5
|
echo "configure:917: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -941,7 +943,7 @@ if test -z "$CC"; then
|
|||||||
# Extract the first word of "cc", so it can be a program name with args.
|
# Extract the first word of "cc", so it can be a program name with args.
|
||||||
set dummy cc; ac_word=$2
|
set dummy cc; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:945: checking for $ac_word" >&5
|
echo "configure:947: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -990,7 +992,7 @@ fi
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
||||||
echo "configure:994: checking whether we are using GNU C" >&5
|
echo "configure:996: checking whether we are using GNU C" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -999,7 +1001,7 @@ else
|
|||||||
yes;
|
yes;
|
||||||
#endif
|
#endif
|
||||||
EOF
|
EOF
|
||||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1003: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1005: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||||
ac_cv_prog_gcc=yes
|
ac_cv_prog_gcc=yes
|
||||||
else
|
else
|
||||||
ac_cv_prog_gcc=no
|
ac_cv_prog_gcc=no
|
||||||
@ -1014,7 +1016,7 @@ if test $ac_cv_prog_gcc = yes; then
|
|||||||
ac_save_CFLAGS="$CFLAGS"
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
CFLAGS=
|
CFLAGS=
|
||||||
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
|
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
|
||||||
echo "configure:1018: checking whether ${CC-cc} accepts -g" >&5
|
echo "configure:1020: checking whether ${CC-cc} accepts -g" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
@ -1050,7 +1052,7 @@ LD=${LD-ld}
|
|||||||
# Extract the first word of "ranlib", so it can be a program name with args.
|
# Extract the first word of "ranlib", so it can be a program name with args.
|
||||||
set dummy ranlib; ac_word=$2
|
set dummy ranlib; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:1054: checking for $ac_word" >&5
|
echo "configure:1056: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
|
@ -89,6 +89,8 @@ case "${target}" in
|
|||||||
;;
|
;;
|
||||||
strongarm-*-*)
|
strongarm-*-*)
|
||||||
;;
|
;;
|
||||||
|
cris-*-* | crisv32-*-*)
|
||||||
|
;;
|
||||||
d10v*)
|
d10v*)
|
||||||
;;
|
;;
|
||||||
h8300*-*-*)
|
h8300*-*-*)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user