OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k/tags/tn_m001/newlib/libgloss/testsuite
    from Rev 861 to Rev 1765
    Reverse comparison

Rev 861 → Rev 1765

/Makefile.in
0,0 → 1,109
#
# Makefile
# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#
 
srcdir = .
 
prefix = /usr/local
 
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
libdir = $(exec_prefix)/lib
tooldir = $(exec_prefix)
 
SHELL = /bin/sh
 
INSTALL = `cd $(srcdir); pwd`/../../install-sh -c
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL)
 
AR_FLAGS = qv
BISON = bison
MAKEINFO = makeinfo
 
SUBDIRS =
OBJROOT =
SRCROOT =
 
.NOEXPORT:
MAKEOVERRIDES=
 
#### Host, target, and site specific Makefile fragments come in here.
###
 
# These are roughly topologically sorted in order to make porting more
# streamlined.
FLAGS_TO_PASS = \
"prefix=$(prefix)" \
"exec_prefix=$(exec_prefix)" \
"CC=$(CC)" \
"CFLAGS=$(CFLAGS)" \
"AR=$(AR)" \
"RANLIB=$(RANLIB)" \
"AR_FLAGS=$(AR_FLAGS)" \
"AS=$(AS)" \
"CROSS_CFLAGS=$(CROSS_CFLAGS)" \
"TARGET_CFLAGS=$(TARGET_CFLAGS)" \
"OBJROOT=$(OBJROOT)"
 
all:
@for dir in ${SUBDIRS}; do \
if [ -d $$dir ]; then \
(cd $$dir; $(MAKE) $(FLAGS_TO_PASS)); \
else true; fi; \
done
 
install:
-rm -f *~ core *.o a.out xgdb *.x
for dir in ${SUBDIRS}; do \
echo "$$dir:"; \
if [ -d $$dir ]; then \
(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) install); \
else true; fi; \
done
 
clean-here:
-rm -f *~ core *.o a.out xgdb *.x
 
clean mostlyclean: clean-here
for dir in ${SUBDIRS}; do \
echo "$$dir:"; \
if [ -d $$dir ]; then \
(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) $@); \
else true; fi; \
done
 
distclean maintainer-clean realclean: clean-here
for dir in ${SUBDIRS}; do \
echo "$$dir:"; \
if [ -d $$dir ]; then \
(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) $@); \
else true; fi; \
done
-rm -f Makefile config.status *-init.exp site.*
-rm -fr *.log summary detail *.sum blockit
 
.PHONY: info install-info clean-info
info:
install-info:
clean-info:
 
force:
 
Makefile: Makefile.in configure.in $(host_makefile_frag) $(target_makefile_frag)
$(SHELL) config.status
/config/m68k.mt
0,0 → 1,3
MULTILIB=
GLOSSDIR=m68k
SCRIPTS=mvme135 idp
/config/hppa.mt
0,0 → 1,4
MULTILIB=-msoft-float
GLOSSDIR=pa
SCRIPTS=w89k op50n
 
/config/mips.mt
0,0 → 1,3
MULTILIB=
GLOSSDIR=mips
SCRIPTS=array
/config/support.c
0,0 → 1,24
/*
* support.c -- minimal support functions. This is to keep the exit code
* generic enough that pattern matching from expect should be easier.
*/
 
#if defined (unix)
#define PRINT printf /* so we can test on a native system */
#else
#define PRINT iprintf /* this is only in newlib */
#endif
 
int
fail (str)
char *str;
{
PRINT ("FAIL: %s\n", str);
}
 
int
pass (str)
char *str;
{
PRINT ("PASS: %s\n", str);
}
/libgloss.all/Makefile.in
0,0 → 1,221
srcdir = .
OBJROOT =
SRCROOT =
 
SHELL = /bin/sh
 
#
# this is for code to support embedded testing
#
SUPPORT=support.o
 
#
# to add a new test, put it's name here, and list the objects
# required too.
TESTS= misc.x float.x io.x memory.x double.x math.x func.x div.x \
printf.x varargs.x varargs2.x array.x struct.x misc.x
 
CFLAGS= -g
LDFLAGS_FOR_TARGET= -g
LIBS_FOR_TARGET = ${SUPPORT} ${LIBC_FOR_TARGET} ${LIBGCC_FOR_TARGET} \
${LIBC_FOR_TARGET}
 
#### Host, target, and site specific Makefile fragments come in here.
###
 
#
# This attempts to build the binaries. Ideally these are getting built
# under control of DejaGnu, but it's nice to build these for times
# when testing needs to be done by hand.
#
all: support.o ${TESTS}
 
#
# we create a false implicit rule to make a binary ".x" file from
# an object file. this also makes us an srecord and a dissasmbly
# cause if something goes wrong, we'll need them.
#
.SUFFIXES: .x
.o.x:
for script in ${SCRIPTS}; do \
echo Building $@ for $${script}... ; \
echo Link Line is ${LD_FOR_TARGET} \
${LDFLAGS_FOR_TARGET} $< -L${OBJROOT}/libgloss/${GLOSSDIR} \
-T${srcdir}/../../${GLOSSDIR}/$${script}.ld \
${SUPPORT} -o $*-$${script} $(LIBS_FOR_TARGET); \
${LD_FOR_TARGET} ${LDFLAGS_FOR_TARGET} $< -L${OBJROOT}/libgloss/${GLOSSDIR} \
-T${srcdir}/../../${GLOSSDIR}/$${script}.ld \
${SUPPORT} -o $*-$${script}.x $(LIBS_FOR_TARGET); \
if [ -s $*-$${script}.x ] ; then \
echo "Making an srecord for $@..." ; \
${OBJCOPY_FOR_TARGET} -O srec $*-$${script}.x $*-$${script}.srec ; \
echo "Making an disassembly file for $@..." ; \
rm -f $*-$${script}.dis ; \
${OBJDUMP_FOR_TARGET} -d $*-$${script}.x > $*-$${script}.dis ; \
else \
rm $*-$${script}.x ; \
echo "WARNING: $*-$${script} didn't build." ; \
fi ; \
touch $@ ; \
done
 
#
# here's all the dependancies. This is a little messy cause we want
# dependancies to work for the rule we just defined. this isn't
# tottally ideal cause if one of the architectures doesn't build. it
# relinks for all of the scrip0t files.
#
array.o: ${srcdir}/array.c
array.x: array-w89k.x array-op50n.x
array-w89k.x: array.o
array-op50n.x: array.o
float.o: ${srcdir}/float.c
float.x: float-w89k.x float-op50n.x
float-w89k.x: float.o
float-op50n.x: float.o
io.o: ${srcdir}/io.c
io.x: io-w89k.x io-op50n.x
io-w89k.x: io.o
io-op50n.x: io.o
memory.o: ${srcdir}/memory.c
memory.x: memory-w89k.x memory-op50n.x
memory-w89k.x: memory.o
memory-op50n.x: memory.o
double.o: ${srcdir}/double.c
double.x: double-w89k.x double-op50n.x
double-w89k.x: double.o
double-op50n.x: double.o
math.o: ${srcdir}/math.c
math.x: math-w89k.x math-op50n.x
math-w89k.x: math.o
math-op50n.x: math.o
misc.o: ${srcdir}/misc.c
misc.x: misc-w89k.x misc-op50n.x
misc-w89k.x: misc.o
misc-op50n.x: misc.o
func.o: ${srcdir}/func.c
func.x: func-w89k.x func-op50n.x
func-w89k.x: func.o
func-op50n.x: func.o
div.o: ${srcdir}/div.c
div.x: div-w89k.x div-op50n.x
div-w89k.x: div.o
div-op50n.x: div.o
struct.o: ${srcdir}/struct.c
struct.x: struct-w89k.x struct-op50n.x
struct-w89k.x: struct.o
struct-op50n.x: struct.o
printf.o: ${srcdir}/printf.c
printf.x: printf-w89k.x printf-op50n.x
printf-w89k.x: printf.o
printf-op50n.x: printf.o
varargs.o: ${srcdir}/varargs.c
varargs.x: varargs-w89k.x varargs-op50n.x
varargs-w89k.x: varargs.o
varargs-op50n.x: varargs.o
varargs2.o: ${srcdir}/varargs2.c
varargs2.x: varargs2-w89k.x varargs2-op50n.x
varargs2-w89k.x: varargs2.o
varargs2-op50n.x: varargs.o
misc.o: ${srcdir}/misc.c
misc.x: misc-w89k.x misc-op50n.x
misc-w89k.x: misc.o
misc-op50n.x: misc.o
 
#
# this attempts to build these test cases on a DOS box
#
DOSLIBS= ../lib/soft-flo/libc.a ../lib/soft-flo/libgcc.a ../lib/soft-flo/libc.a
LIBDIR= -L../lib
dos:
gcc -msoft-float -c support.c
gcc -msoft-float -c io.c
gcc -msoft-float -c float.c
gcc -msoft-float -c memory.c
gcc -msoft-float -c double.c
gcc -msoft-float -c func.c
gcc -msoft-float -c array.c
gcc -msoft-float -c math.c
gcc -msoft-float -c div.c
gcc -msoft-float -c struct.c
gcc -msoft-float -c printf.c
gcc -msoft-float -c varargs.c
gcc -msoft-float -c varargs2.c
gcc -msoft-float -c misc.c
ld ${LIBDIR} io.o -Tw89k.ld -o io-wec.x support.o ${DOSLIBS}
objcopy -O srec io-wec.x io-wec.sre
ld ${LIBDIR} io.o -Top50n.ld -o io-oki.x support.o ${DOSLIBS}
objcopy -O srec io-oki.x io-oki.sre
ld ${LIBDIR} func.o -Tw89k.ld -o func-wec.x support.o ${DOSLIBS}
objcopy -O srec func-wec.x func-wec.sre
ld ${LIBDIR} func.o -Top50n.ld -o func-oki.x support.o ${DOSLIBS}
objcopy -O srec func-oki.x func-oki.sre
ld ${LIBDIR} math.o -Tw89k.ld -o math-wec.x support.o ${DOSLIBS}
objcopy -O srec math-wec.x math-wec.sre
gcc ${LIBDIR} math.o -Top50n.ld -o math-oki.x support.o ${DOSLIBS}
objcopy -O srec math-oki.x math-oki.sre
gcc ${LIBDIR} float.o -Tw89k.ld -o flot-wec.x support.o ${DOSLIBS}
objcopy -O srec flot-wec.x flot-wec.sre
gcc ${LIBDIR} float.o -Top50n.ld -o flot-oki.x support.o ${DOSLIBS}
objcopy -O srec flot-oki.x flot-oki.sre
gcc ${LIBDIR} memory.o -Tw89k.ld -o mem-wec.x support.o ${DOSLIBS}
objcopy -O srec mem-wec.x mem-wec.sre
gcc ${LIBDIR} memory.c -Top50n.ld -o mem-oki.x support.o ${DOSLIBS}
objcopy -O srec mem-oki.x mem-oki.sre
gcc ${LIBDIR} double.o -Tw89k.ld -o doub-wec.x support.o ${DOSLIBS}
objcopy -O srec mem-wec.x doub-wec.sre
gcc ${LIBDIR} double.o -Top50n.ld -o doub-oki.x support.o ${DOSLIBS}
objcopy -O srec doub-oki.x doub-oki.sre
gcc ${LIBDIR} array.o -Tw89k.ld -o arry-wec.x support.o ${DOSLIBS}
objcopy -O srec arry-wec.x arry-wec.sre
gcc ${LIBDIR} array.o -Top50n.ld -o arry-oki.x support.o ${DOSLIBS}
objcopy -O srec arry-oki.x arry-oki.sre
gcc ${LIBDIR} div.o -Tw89k.ld -o div-wec.x support.o ${DOSLIBS}
objcopy -O srec div-wec.x div-wec.sre
gcc ${LIBDIR} div.o -Top50n.ld -o div-oki.x support.o ${DOSLIBS}
objcopy -O srec div-oki.x div-oki.sre
gcc ${LIBDIR} printf.o -Tw89k.ld -o printf-wec.x support.o ${DOSLIBS}
objcopy -O srec printf-wec.x printf-wec.sre
gcc ${LIBDIR} printf.o -Top50n.ld -o printf-oki.x support.o ${DOSLIBS}
objcopy -O srec printf-oki.x printf-oki.sre
gcc ${LIBDIR} struct.o -Tw89k.ld -o struct-wec.x support.o ${DOSLIBS}
objcopy -O srec struct-wec.x struct-wec.sre
gcc ${LIBDIR} struct.o -Top50n.ld -o struct-oki.x support.o ${DOSLIBS}
objcopy -O srec struct-oki.x struct-oki.sre
gcc ${LIBDIR} varargs.o -Tw89k.ld -o args-wec.x support.o ${DOSLIBS}
objcopy -O srec args-wec.x args-wec.sre
gcc ${LIBDIR} varargs.o -Top50n.ld -o args-oki.x support.o ${DOSLIBS}
objcopy -O srec args-oki.x args-oki.sre
gcc ${LIBDIR} varargs2.o -Tw89k.ld -o arg2-wec.x support.o ${DOSLIBS}
objcopy -O srec arg2-wec.x arg2-wec.sre
gcc ${LIBDIR} varargs2.o -Top50n.ld -o arg2-oki.x support.o ${DOSLIBS}
objcopy -O srec arg2-oki.x arg2-oki.sre
gcc ${LIBDIR} misc.o -Tw89k.ld -o misc-wec.x support.o ${DOSLIBS}
objcopy -O srec misc-wec.x misc-wec.sre
gcc ${LIBDIR} misc.o -Top50n.ld -o misc-oki.x support.o ${DOSLIBS}
objcopy -O srec misc-oki.x misc-oki.sre
 
# this is a minimalist testing API for these test cases to keep the
# outout standardized enough to help with automated testing.
support.o: ${srcdir}/../config/support.c
rootme=`pwd | sed -e 's@/[^/]*$$@@'`; \
$(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $<
 
doc:
 
clean mostlyclean:
rm -f a.out core *.i *~ *.o *-test *.srec *.dis *.map *.x
 
distclean maintainer-clean realclean: clean
rm -f Makefile config.status a.out
 
.PHONY: install info install-info clean-info
install:
info:
install-info:
clean-info:
 
Makefile: Makefile.in $(host_makefile_frag) $(target_makefile_frag)
$(SHELL) config.status
 
 
/libgloss.all/printf.c
0,0 → 1,31
/* Oki bug report [OKI006]
 
The following program is no work.
 
illegal trap: 0x12 pc=d000d954
d000d954 08000240 NOP
*/
 
#include <stdio.h>
 
main ()
{
int i, j, k;
 
print ("\r\nDemo Program Start\r\n");
printf ("Value = %d, %d\r\n", 2, 1);
pass ("printf [OKI006]");
/* Oki bug report [OKI007]
 
iprintf is no work.
"Value = 2, 1" string is not displayed.
break instruction trap (9) pc=4003c
0004003c 00000000 BREAK 0x0,0x0
*/
print ("\r\nDemo Program Start\r\n");
iprintf ("Value = %d, %d\r\n", 2, 1);
pass ("iprintf [OKI007]");
fflush (stdout);
}
/libgloss.all/varargs.c
0,0 → 1,46
/* Oki bug report [OKI013]
Variable argments test failed.
 
Execution result.
val1, val2 = 1, 0
val1, val2 = 2, 0
val1, val2 = 3, 0
 
Note, this tests for ANSI style varargs.
 
*/
 
#include <stdio.h>
#include <stdarg.h>
int func(int, ...);
 
main()
{
func(2, 1., 2., 3.);
}
 
func(int i, ...)
{
va_list p;
int j;
 
va_start(p, i);
for (j = 1; j <= 3; ++j){
dequals(__LINE__, (double)j, va_arg(p, double));
}
va_end(p);
return (i);
}
 
dequals(int line, double val1, double val2)
{
iprintf ("val1, val2 = %d, %d\n", (int)val1, (int)val2);
if(val1 == val2)
pass ("varargs [OKI013]");
else
fail ("varargs [OKI013]");
 
fflush (stdout);
return;
}
/libgloss.all/float.c
0,0 → 1,20
#include <stdio.h>
 
main()
{
float a,b,c;
 
a = 0.11;
b = 3.12;
c = a+b;
 
printf ("Print float, result with 'f' = %f\n", c);
printf ("Print float, result with 'e' = %e\n", c);
printf ("Print float, result with 'E' = %E\n", c);
printf ("Print float, result with 'g' = %g\n", c);
printf ("Print float, result with 'G' = %G\n", c);
 
pass ("float");
fflush (stdout);
}
 
/libgloss.all/configure.in
0,0 → 1,54
# This file is a shell script fragment that supplies the information
# necessary to tailor a template configure script into the configure
# script appropriate for this directory. For more information, check
# any existing configure script.
 
srctrigger=io.c
srcname="libgloss testsuite"
target_dependent=true
 
# per-host:
 
# This is basically a hack so that we don't have to replicate the same
# defines in all the Makefiles. We put a standard set of definitions
# in host/any, and use them everywhere except DOS, which is braindead.
 
host_makefile_frag=../../config/default.mh
case "${host}" in
i[3456]86-*-go32)
host_makefile_frag=../../config/dos.mh
;;
esac
 
# per-target:
case "${target}" in
m68*-unknown-*)
target_makefile_frag=../config/m68k.mt
;;
hppa*-*-pro*)
target_makefile_frag=../config/hppa.mt
;;
sparclite-*-*)
target_makefile_frag=../config/sparcl.mt
;;
mips*-*-*)
target_makefile_frag=../config/mips.mt
;;
esac
 
# post-target:
 
case ${srcdir} in
.)
;;
*)
grep "source ${srcdir}/.gdbinit" .gdbinit >/dev/null 2>/dev/null || \
echo "source ${srcdir}/.gdbinit" >> .gdbinit
esac
 
objroot=`pwd | sed -e 's@/[^/]*$@@' -e 's@/[^/]*$@@' -e 's@/[^/]*$@@'`
srcroot=`echo $srcdir | sed -e 's@/[^/]*$@@' -e 's@/[^/]*$@@' -e 's@/[^/]*$@@'`
sed -e "s:^OBJROOT[ ]*=.*$:OBJROOT = ${objroot}:" -e "s:^SRCROOT[ ]*=.*$:SRCROOT = ${srcroot}:" \
${Makefile} > Makefile.tem
rm -f ${Makefile}
mv Makefile.tem ${Makefile}
/libgloss.all/io.c
0,0 → 1,71
/*
io.c -- Test the serial I/O.
*/
 
#define BUFSIZE 80
#include <stdio.h>
 
main()
{
char buf[100];
char *tmp;
int result;
 
/* test the lowest level output function */
result = outbyte ('&');
if (result != 0x0) {
pass ("outbyte");
} else {
fail ("outbyte");
}
 
/* try writing a string */
result = write ("Write Test:\n", 12);
print ("result was ");
putnum (result);
outbyte ('\n');
if (result == 12) {
pass ("write");
} else {
fail ("write");
}
 
/* try the print() function too */
result = print ("Print Test:\n");
print ("result was ");
putnum (result);
outbyte ('\n');
if (result == 12) {
pass ("print");
} else {
fail ("print");
}
 
/* try the iprintf() function too */
result = print ("Iprintf Test:\n");
print ("result was ");
putnum (result);
outbyte ('\n');
if (result == 14) {
pass ("iprintf");
} else {
fail ("iprintf");
}
 
/* try to read a string */
print ("Type 5 characters");
 
result = 0;
result = read (0, buf, 5);
print (buf);
if (result == 5) {
pass ("read");
} else {
fail ("read");
}
 
/* clear everything out */
fflush (stdout);
}
 
 
/libgloss.all/memory.c
0,0 → 1,38
/* WinBond bug report
 
malloc() returns 0x0.
 
test the memory calls. These test sbrk(), which is part of glue.c
for most architectures.
*/
 
#include <stdio.h>
#define BUFSIZE 80
 
main()
{
char *buf;
char *tmp;
char *result;
 
/* see if we can get some memory */
buf = (char *)malloc(BUFSIZE);
if (buf != 0x0) {
pass ("malloc");
} else {
fail ("malloc");
}
 
/* see if we can realloc it */
tmp = buf;
result = (char *)realloc (buf, BUFSIZE+100);
if ((buf != 0x0) && (result != 0x0)) {
pass ("realloc");
} else {
fail ("realloc");
}
/* see if we can free it up. FIXME: how to test free ?*/
free (buf);
fflush (stdout);
}
/libgloss.all/double.c
0,0 → 1,33
/* Oki bug report [OKI001](gcc008_1)
 
The following program is not executed.
error messages are as follow.
 
illegal trap: 0x12 pc=d000d954
d000d954 08000240 NOP
*/
 
#include <stdio.h>
extern double dcall ();
 
main ()
{
double d1, d2, d3;
int i;
 
d1 = dcall (1.);
printf ("d1 = %e\n", d1);
 
pass ("double [OKI001]");
fflush(stdout);
}
 
double
dcall (d)
double d;
{
int Zero = 0;
return d + Zero;
}
 
 
/libgloss.all/.gdbinit
0,0 → 1,82
define wec-test
set height 0
set remotedebug 0
echo Running array test...
load array-w89k.x
run
echo Running double test...
load double-w89k.x
run
echo Running float test...
load float-w89k.x
run
echo Running func test...
load func-w89k.x
run
echo Running io test...
load io-w89k.x
run
echo Running math test...
load math-w89k.x
run
echo Running memory test...
load memory-w89k.x
run
echo Running div test...
load div-w89k.x
run
echo Running struct test...
load struct-w89k.x
run
echo Running printf test...
load printf-w89k.x
run
echo Running varargs test...
load varargs-w89k.x
run
echo Running varargs2 test...
load varargs2-w89k.x
run
end
 
define oki-test
set height 0
set remotedebug 0
echo Running array test...
load array-op50n.x
run
echo Running double test...
load double-op50n.x
run
echo Running float test...
load float-op50n.x
run
echo Running func test...
load func-op50n.x
run
echo Running io test...
load io-op50n.x
run
echo Running math test...
load math-op50n.x
run
echo Running memory test...
load memory-op50n.x
run
echo Running div test...
load div-op50n.x
run
echo Running struct test...
load struct-op50n.x
run
echo Running printf test...
load printf-op50n.x
run
echo Running varargs test...
load varargs-op50n.x
run
echo Running varargs2 test...
load varargs2-op50n.x
run
end
 
/libgloss.all/array.c
0,0 → 1,18
/* WinBond bug report
 
this is a compile test. At one time static arrays over 500 elements
didn't work. We'll test both global and local array. If it compiles at
all, it it passes.
*/
 
#include <stdio.h>
static short aa[64][64];
static int bb[500];
 
main()
{
static short cc[64][64];
static int dd[500];
pass ("large arrays");
fflush(stdout);
}
/libgloss.all/div.c
0,0 → 1,35
/* WinBond bug report
 
Please don't use "gcc -O3 -S hello.c" command, because it
will optimize "i/5" to be "2" in compile time.
 
*/
 
#include <stdio.h>
#define TESTSEED 10
 
main ()
{
int a1,b1,c1;
long a2,b2,c2;
double a3,b3,c3;
float a4,b4,c4;
char buf[20];
 
/* integer tests */
for (a1 = 1; a1 < 16; a1++) {
b1 = TESTSEED/a1;
c1 = TESTSEED%a1;
printf ("%d/%d = %d, ^ = %d\n", TESTSEED, a1, b1, c1);
if ((c1 + (a1 * b1)) == TESTSEED) {
sprintf (buf, "div %d by %d", TESTSEED, a1);
pass (buf);
} else {
sprintf (buf, "div %d by %d", TESTSEED, a1);
fail (buf);
}
fflush (stdout);
}
}
 
 
/libgloss.all/struct.c
0,0 → 1,65
/* Oki bug report, no number. Here's the output the error generates.
 
gcc -c -g -ansi oki008.c -o oki008.o -msoft-float
oki008.c: In function `Proc0':
oki008.c:50: internal error--insn does not satisfy its constraints:
(insn 37 35 24 (set (mem:DF (post_inc:DF (reg:SI 1 %r1)))
(reg:DF 48 %fr12)) 94 {reload_outdf+2} (nil)
(nil))
gcc: Internal compiler error: program cc1 got fatal signal 6
*/
 
#include <stdio.h>
 
typedef int Enumeration;
typedef int OneToFifty;
typedef char String30[31];
struct Record
{
struct Record *PtrComp;
Enumeration Discr;
Enumeration EnumComp;
OneToFifty IntComp;
String30 StringComp;
};
 
typedef struct Record RecordType;
typedef RecordType * RecordPtr;
typedef int boolean;
 
#include <stdio.h>
 
char buf[0x10000];
char *pbuf = buf;
 
char *_malloc(size)
{
char *p;
 
p = pbuf;
pbuf += size;
if (pbuf >= &buf[sizeof (buf)]) {
printf("_malloc error\n");
return (0);
}
return (p);
}
 
main()
{
Proc0();
pass ("struct");
fflush (stdout);
return (0);
}
 
RecordPtr PtrGlbNext;
 
Proc0()
{
extern char *_malloc();
 
register unsigned int i;
 
PtrGlbNext = (RecordPtr) _malloc(sizeof(RecordType));
}
/libgloss.all/varargs2.c
0,0 → 1,48
/* Oki bug report [OKI013]
 
Variable argments test failed.
 
Execution result.
val1, val2 = 1, 0
val1, val2 = 2, 0
val1, val2 = 3, 0
 
Note, this test case for for traditional style C code.
 
*/
 
#include <stdio.h>
#include <varargs.h>
int func();
 
main()
{
func(1., 2., 3.);
}
 
func(va_alist)
va_dcl
{
va_list p;
double val1, val2;
int j;
 
va_start(p);
for (j = 1; j <= 3; ++j){
dequals((double)j, va_arg(p, double));
}
va_end(p);
return (p);
}
 
dequals(double val1, double val2)
{
iprintf ("val1 is %d, val2 is %d\n", (int)val1, (int)val2);
if (val1 == val2)
pass ("varargs2 [OKI013]");
else
fail ("varargs2 [OKI013]");
 
fflush (stdout);
return;
}
/libgloss.all/math.c
0,0 → 1,88
/* Oki bug report [OKI004](gcc005)
 
The following computation is no work.
-1 / 1 => 1 (correct -1)
-1 % 2 => 1 (correct -1)
*/
 
#include <stdio.h>
 
main ()
{
long l1, l2, l6;
auto long l3;
long oza1, oza2, oza;
 
l1 = 1;
l2 = 2;
l3 = -1;
l6 = 6;
 
/*** test 1 ***/
oza = ((l3 / ((l1)--)) | (l6 <= (l3 % l2)));
printf ("test 1 has a result of %d.\n", oza);
if (oza != -1)
fail ("divide test [OKI004]");
else
pass ("divide test [OKI004]");
 
l1 = 1;
/*** test 2 ***/
oza1 = (l3 / ((l1)--));
oza2 = (l6 <= (l3 % l2));
oza = oza1 | oza2;
printf ("test 2 has a result of %d.\n", oza);
if (oza != -1)
fail ("modulos test [OKI004]");
else
pass ("modulos test [OKI004]");
fflush (stdout);
 
test_1();
}
 
/*
32760 / (1) = 32760
32760 / (-1) = 32760 -------> ERROR, same as you said.
32760 / (2) = 16380
32760 / (-2) = -2147467268 ----> ERROR
32760 / (3) = 10920
32760 / (-3) = -1431644845 ----> ERROR
32760 / (4) = 8190
32760 / (-4) = -8190
*/
test_1()
{
int value, i, j;
 
i = 32760;
j = 1;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = -1;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = 2;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = -2;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = 3;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = -3;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = 4;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
j = -4;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
}
 
/libgloss.all/misc.c
0,0 → 1,167
/*
* this file contains misc bug reports from WinBond.
*/
#include <stdio.h>
#include <math.h>
 
#if unix
#define pass(x) printf("PASS: %s\n", x);
#define fail(x) printf("FAIL: %s\n", x);
#endif
 
/*
The compare operation is error. Because the constant value 1.0 is
not correct. It seems compare with 0 in this statement.
 
HP-UX native:
dist is 0.301
PASS: float compare
*cp = be9a1cac, *cp1 = be9a1cac
PASS: float multiple 1
PASS: float multiple 2
32760 / (-2) = -16380
PASS: float divide 1
32760 / (-1) = -32760
PASS: float divide 1
These test only pass if the output matches:
Correct output is
1.0 = 1.000000E+00, 0.3010 = 3.000000E-01, -1.0 = -1.000000E+0
1.0 = 1.000000E+00, 0.3010 = 3.010000E-01, -1.0 = -1.000000E+00
These test only pass if the outut matches:
Correct output is
ans = 1.000000E+00, ans1 = 3.010000E-01, ans2 = -1.000000E+00
ans = 1.000000E+00, ans1 = 3.010000E-01, ans2 = -1.000000E+00
 
 
Test run on Oki:
 
dist is 0
PASS: float compare
*cp = be9a1cac, *cp1 = be9a1cac
PASS: float multiple 1
PASS: float multiple 2
32760 / (-2) = -2147467268
PASS: float divide 1
32760 / (-1) = 32760
PASS: float divide 1
These test only pass if the output matches:
Correct output is
1.0 = 1.000000E+00, 0.3010 = 3.000000E-01, -1.0 = -1.000000E+0
1.0 = 1.586860E-318, 0.3010 = -1.009091E-303, -1.0 = 5.290504E-315
These test only pass if the outut matches:
Correct output is
ans = 1.000000E+00, ans1 = 3.010000E-01, ans2 = -1.000000E+00
ans = 4.940656E-324, ans1 = -5.299809E-315, ans2 = 5.290504E-315
 
*/
 
main()
{
float dist = 0.3010;
 
printf ("dist is %G\n", dist);
if ( dist < 1.0 ) {
pass ("float compare");
} else {
fail ("float compare");
}
 
test_1();
test_2();
test_3();
test_4();
 
fflush (stdout);
}
 
/*
* *cp = be9a1cac, *cp1 = 00000000
*/
test_1()
{
float i, ans, ans1;
unsigned int *cp=&ans, *cp1=&ans1;
i = 0.3010;
ans = (-1.0) * 0.3010 * 1.0; /* OK */
ans1 = (-1.0) * i * 1.0; /* Disaster */
printf ("*cp = %08x, *cp1 = %08x\n", *cp, *cp1);
 
if (*cp != 0xbe9a1cac) {
fail ("float multiple 1");
} else {
pass ("float multiple 1");
}
 
if (*cp1 != 0xbe9a1cac) {
fail ("float multiple 2");
} else {
pass ("float multiple 2");
}
}
 
/*
Positive integer divide Negative integer may get interesting result.
For examples:
EX1: 32760 / (-2) = -2147467268
*/
test_2()
{
int value, i, j;
i = 32760;
j = -2;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
if (value != -16380) {
fail ("float divide 1");
} else {
pass ("float divide 1");
}
}
 
/*
EX2: 32760 / (-1) = 32760
*/
test_3()
{
int value, i, j;
i = 32760;
j = -1;
value = i / (j);
printf ("%d / (%d) = %d\n", i, j, value);
 
if (value != -32760) {
fail ("float divide 1");
} else {
pass ("float divide 1");
}
}
 
/*
The data output format %e, %E, %g, %G in printf() can not work.
Please test the following example:
 
1.0 = 1.000000E+00, 0.3010 = 3.009999E-01, -1.0 = -1.000000E+00
ans = 4.940656E-324, ans1 = -5.299809E-315, ans2 = 5.290504E-315
*/
test_4()
{
float ans, ans1, ans2;
ans = 1.0;
ans1 = 0.3010;
ans2 = -1.0;
 
printf ("These test only pass if the output matches:\nCorrect output is\n1.0 = 1.000000E+00, 0.3010 = 3.000000E-01, -1.0 = -1.000000E+0\n");
printf ("1.0 = %E, 0.3010 = %E, -1.0 = %E\n", 1.0, 0.3010, -1.0);
printf ("These test only pass if the outut matches:\nCorrect output is\nans = 1.000000E+00, ans1 = 3.010000E-01, ans2 = -1.000000E+00\n");
printf ("ans = %E, ans1 = %E, ans2 = %E\n", ans, ans1, ans2);
}
 
 
 
 
 
/libgloss.all/func.c
0,0 → 1,26
/* Oki bug report [OKI002](gcc008_2)
 
The following program is not executed.
Error message is as follow.
 
illegal trap: 0x12 pc=d000d954
d000d954 08000240 NOP
 
*/
 
#include <stdio.h>
#include <stdarg.h>
 
int func (int, ...);
 
void main ()
{
func (2, 1., 2., 3.);
pass ("func [OKI002]");
fflush (stdout);
}
 
int func (int i, ...)
{
return (i);
}
/configure.in
0,0 → 1,29
# This file is a shell script fragment that supplies the information
# necessary to tailor a template configure script into the configure
# script appropriate for this directory. For more information, check
# any existing configure script.
 
srctrigger=Makefile.in
srcname="testing support"
target_dependent=true
 
# per-host:
 
# This is basically a hack so that we don't have to replicate the same
# defines in all the Makefiles. We put a standard set of definitions
# in host/any, and use them everywhere.
 
host_makefile_frag=../config/default.mh
 
# per-target:
 
configdirs="libgloss.all"
 
# post-target:
 
objroot=`pwd | sed -e 's@/[^/]*$@@' -e 's@/[^/]*$@@'`
srcroot=`echo $srcdir | sed -e 's@/[^/]*$@@' -e 's@/[^/]*$@@'`
sed -e "s:^OBJROOT[ ]*=.*$:OBJROOT = ${objroot}:" -e "s:^SRCROOT[ ]*=.*$:SRCROOT = ${srcroot}:" \
${Makefile} > Makefile.tem
rm -f ${Makefile}
mv Makefile.tem ${Makefile}
/lib/libgloss.exp
0,0 → 1,77
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
# This file was written by Rob Savoye. (rob@cygnus.com)
 
# The default option list can be overridden by
# TORTURE_OPTIONS="{ { list1 } ... { listN } }"
 
if ![info exists TORTURE_OPTIONS] {
# FIXME: We should test -g at least once.
set TORTURE_OPTIONS [list \
{ -O0 } { -O1 } { -O2 } \
{ -O2 -fomit-frame-pointer -finline-functions } \
{ -O2 -fomit-frame-pointer -finline-functions -funroll-all-loops }]
}
 
# These globals are used if no compiler arguments are provided.
# They are also used by the various testsuites to define the environment:
# where to find stdio.h, libc.a, etc.
 
global CC
if ![info exists CC] then {
set CC [findfile $base_dir/xgcc "$base_dir/xgcc -B$base_dir/" [transform gcc
]]
}
if { [which $CC] == 0 } then {
perror "$CC does not exist"
exit 1
}
 
global CFLAGS
if ![info exists CFLAGS] then {
set CFLAGS ""
}
 
global LIBS
if ![info exists LIBS] then {
set LIBS ""
}
 
# It is difficult to come up with a situation where one has to use LDFLAGS
# and not LIBS (why two?). Both are useful in makefiles, so maybe it's better
# to just continue existing practice. However, there is still a lot of
# confusion about when to use one or the other.
global LDFLAGS
if ![info exists LDFLAGS] then {
set LDFLAGS ""
}
 
proc just_compile { file } {
global CFLAGS
set output "$tmpdir/[file tail [file rootname $src]].o"
append CFLAGS " -w -c -o $output $option"
}
 
proc just_link { file } {
}
 
proc just_execute { file } {
}
 
proc run_test { file } {
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.