diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-08-04 14:01:52 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-08-04 14:01:52 +0000 |
commit | b1a3d7c0ac2105f40d53efeb86d5914ecefe3d56 (patch) | |
tree | c2613cb6099175d7cd4a8502a14c2788c51f0805 /gcc | |
parent | 5d8ffa7905375de71e733df6d84b41bd784d4d1f (diff) |
2010-08-04 Vinu Rajashekhar <vinutheraj@gmail.com>
* do_one, rundeja: Add support for libgo testing.
* rtems_libgo_init.c: New file.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rwxr-xr-x | gcc/do_one | 30 | ||||
-rw-r--r-- | gcc/rtems_libgo_init.c | 206 | ||||
-rwxr-xr-x | gcc/rundeja | 13 |
4 files changed, 248 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d74f4b9..bf4effe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-08-04 Vinu Rajashekhar <vinutheraj@gmail.com> + + * do_one, rundeja: Add support for libgo testing. + * rtems_libgo_init.c: New file. + 2010-07-22 Vinu Rajashekhar <vinutheraj@gmail.com> * do_one: Add Go support. Plus some cleanup from Joel. @@ -50,6 +50,7 @@ do_rtems=no run_gcctests=no run_acats=no run_gccgotests=no +run_libgotests=no # Do we send email to gcc-testresults with the test results? do_mail=yes # Are we noisy when running? @@ -77,6 +78,7 @@ do_one [options] CPU BSP -v - verbose -M - do NOT email test results to gcc-testresults -o - run GCC Go tests + -t - run libgo tests EOF } @@ -95,7 +97,7 @@ toggle() esac } -while getopts bdDnv1cmargioCATMG OPT +while getopts bdDnv1cmargiotCATMG OPT do case "$OPT" in A) do_binutils="yes" @@ -105,6 +107,7 @@ do do_multilib="yes" do_ada="yes" do_gccgo="yes" + do_gccgo_multilib="yes" do_rtems="yes" ;; d) do_cleanup=`toggle ${do_cleanup}` ;; @@ -132,6 +135,7 @@ do v) verbose=`toggle ${verbose}` ;; M) do_mail=`toggle ${do_mail}` ;; o) run_gccgotests=`toggle ${run_gccgotests}` ;; + t) run_libgotests=`toggle ${run_libgotests}` ;; *) fatal ;; esac done @@ -172,6 +176,7 @@ if [ ${verbose} = yes ] ; then echo "Run GCC Tests : " ${run_gcctests} echo "Run ACATS : " ${run_acats} echo "Run Go Tests : " ${run_gccgotests} + echo "Do libgo Tests: " ${run_libgotests} echo "Email Tests : " ${do_mail} echo "Native GCC : " `type gcc` echo "PATH : " ${PATH} @@ -719,17 +724,17 @@ if [ ${run_gccgotests} = "yes" ] ; then cp testsuite/go/go.log testsuite/go/go.sum ${RDIR} if [ ${do_mail} = "yes" ] ; then - echo Sending test results to GCC community.. + echo Sending Go test results to GCC community.. ${DIR}/contrib/test_summary -m gcc-testresults@gcc.gnu.org | sh if [ $? -ne 0 ] ; then - echo "Failed to email GCC Test Results to GCC Community .. bailing" + echo "Failed to email GCC Go Test Results to GCC Community .. bailing" exit 1 fi - echo Sending test results to RTEMS community.. + echo Sending Go test results to RTEMS community.. ${GCCDIR}/contrib/test_summary -o -m rtems-tooltestresults@rtems.org | sh if [ $? -ne 0 ] ; then - echo "Failed to email GCC Test Results to RTEMS Community .. bailing" + echo "Failed to email GCC GO Test Results to RTEMS Community .. bailing" exit 1 fi fi @@ -738,6 +743,21 @@ else echo Skipping GCC Go DejaGNU tests for ${cpu}/${bsp} fi +##### Do the libgo tests +if [ ${run_libgotests} = "yes" ] ; then + echo "Running libgo DejaGNU tests..." + cd ${BASEDIR}/b-gccgo1-${cpu} || exit 1 + time sh -x ${SCRIPTDIR}/gcc/rundeja ${bsp} libgo \ + >${LOGDIR}/${cpu}-libgotests-${bsp}.log 2>&1 + + RDIR=${RESULTSDIR}/${TARGET}-${bsp}/`date +%Y-%m-%d-%H-%M-%S` + mkdir -p ${RDIR} + cp ${TARGET}-${bsp}/libgo/testsuite/libgo-all.log \ + ${TARGET}-${bsp}/libgo/testsuite/libgo-all.sum ${RDIR} +else + echo Skipping libgo DejaGNU tests for ${cpu}/${bsp} +fi + if [ ${do_gccgo} = "yes" ] ; then test ${do_cleanup} = "yes" && rm -rf b-gccgo1-${cpu} fi diff --git a/gcc/rtems_libgo_init.c b/gcc/rtems_libgo_init.c new file mode 100644 index 0000000..adae9b2 --- /dev/null +++ b/gcc/rtems_libgo_init.c @@ -0,0 +1,206 @@ +/* + * Init for libgo testing. + */ + +#include <rtems.h> +#include <bsp.h> + +#include <stdlib.h> +#include <stdio.h> + +#include <rtems/rtems_bsdnet.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include "networkconfig.h" + +#include <rtems/libcsupport.h> +#include <rtems/imfs.h> +#include <rtems/untar.h> +/* + * The tarfile image is built automatically externally. + */ +#include "FilesystemImage.h" +#include "FilesystemImage.c" + +static void fileio_print_free_heap(void) +{ + printf("--- unused dynamic memory: %lu bytes ---\n", + (unsigned long) malloc_free_space()); +} + +/* + * Set up first argument + */ +static int argc = 1; +static char arg0[20] = "rtems"; +static char *argv[20] = { arg0 }; + +#if defined(MAIN_USE_REQUIRES_COMMAND_LINE) + +#define COMMAND_LINE_MAXIMUM 200 + +#include <stdio.h> +#include <ctype.h> + +void parse_arguments( + char *buffer, + size_t maximum_length +) +{ + char *cp; + char *linebuf = buffer; + size_t length; + + for (;;) { + + #if defined(MAIN_COMMAND_LINE) + strncpy (linebuf, MAIN_COMMAND_LINE, maximum_length); + #else + /* + * Read a line + */ + printf (">>> %s ", argv[0]); + fflush (stdout); + fgets (linebuf, maximum_length, stdin); + + length = strnlen( linebuf, maximum_length ); + if ( linebuf[length - 1] == '\n' || linebuf[length - 1] == '\r' ) { + linebuf[length - 1] = '\0'; + } + #endif + + /* + * Break line into arguments + */ + cp = linebuf; + for (;;) { + while (isspace (*cp)) + *cp++ = '\0'; + if (*cp == '\0') + break; + if (argc >= ((sizeof argv / sizeof argv[0]) - 1)) { + printf ("Too many arguments.\n"); + argc = 0; + break; + } + argv[argc++] = cp; + while (!isspace (*cp)) { + if (*cp == '\0') + break; + cp++; + } + } + if (argc > 1) { + argv[argc] = NULL; + break; + } + printf ("You must give some arguments!\n"); + } + + #if defined(DEBUG_COMMAND_LINE_ARGUMENTS) + { + int i; + for (i=0; i<argc ; i++ ) { + printf( "argv[%d] = ***%s***\n", i, argv[i] ); + } + printf( "\n" ); + } + #endif +} + + +#endif + +int main( int, char ** ); + +void *POSIX_Init( + void *argument +) +{ + //printk("Initializing Network\n"); + rtems_bsdnet_initialize_network (); + //rtems_bsdnet_show_inet_routes (); +#if defined(MAIN_USE_REQUIRES_COMMAND_LINE) + char command_line[ COMMAND_LINE_MAXIMUM ]; + parse_arguments( command_line, COMMAND_LINE_MAXIMUM ); +#endif + + int status; + + printf( "\nmaking the libgo_test_workdir directory\n" ); + status = mkdir( "/libgo_test_workdir", 0777 ); + printf( "mkdir() status : %d\n\n", status ); + + printf("=============== Loading filesystem image ===============\n"); + //status = Untar_FromMemory((char *)FilesystemImage, FilesystemImage_size); + status = rtems_tarfs_load ("/libgo_test_workdir", (uint8_t *) FilesystemImage, (size_t) FilesystemImage_size); + printf ("rtems_tarfs_load status : %d\n\n", status); + + printf( "\nchdir to the libgo_test_workdir directory\n" ); + status = chdir( "/libgo_test_workdir" ); + printf( "chdir() status : %d\n\n", status ); + + printf( "\nMaking /tmp directory\n" ); + status = mkdir( "/tmp", 0777 ); + printf( "mkdir() status : %d\n\n", status ); + + printf("============== Look at Local Filesystem ==============\n"); + printf( "PWD: " ); + //pwd(); + + printf( "\n--->ls /\n" ); + //ls("/"); + + main(argc, argv); + exit(0); + return 0; +} + +/* configuration information */ + +/* NOTICE: the clock driver is explicitly disabled */ +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_POSIX_INIT_THREAD_TABLE +// Works with 32 Mb too, this is faster +//#define CONFIGURE_EXECUTIVE_RAM_SIZE (5 * 1024 * 1024) +#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 500 +#define CONFIGURE_MAXIMUM_POSIX_THREADS 400 +#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 500 +#define CONFIGURE_MAXIMUM_TASK_VARIABLES (2 * 400) +#define CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 1 +#define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 10 +#define CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE (32 * 1024) +#define CONFIGURE_MINIMUM_TASK_STACK_SIZE (4 * 1024) +//#define CONFIGURE_MEMORY_OVERHEAD (4 * 1024) + +//#define CONFIGURE_MICROSECONDS_PER_TICK 1000 +#define CONFIGURE_TICKS_PER_TIMESLICE 50 +#define CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(1000) + +#define CONFIGURE_MAXIMUM_TASKS 20 +#define CONFIGURE_MAXIMUM_SEMAPHORES 20 +//#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 20 + +#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 20 + +#define CONFIGURE_PIPES_ENABLED TRUE +#define CONFIGURE_MAXIMUM_PIPES 20 +//#define CONFIGURE_MAXIMUM_BARRIERS 20 + +#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY TRUE +//#define BSP_ZERO_WORKSPACE_AUTOMATICALLY 1 +#define CONFIGURE_UNIFIED_WORK_AREAS +//#define CONFIGURE_MALLOC_DIRTY +//#define CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY 1 +#define CONFIGURE_STACK_CHECKER_ENABLED TRUE + +#define CONFIGURE_MALLOC_STATISTICS + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> + +/* end of file */ diff --git a/gcc/rundeja b/gcc/rundeja index 68e2455..3b54abb 100755 --- a/gcc/rundeja +++ b/gcc/rundeja @@ -111,7 +111,18 @@ else echo "set boards_dir ${SCRIPTDIR}/dejagnu/boards" >${dfile} fi -if [ $2 = gccgo ] ; then +if [ $2 = libgo ] ; then + rtems_libgo_init=${SCRIPTDIR}/gcc/rtems_libgo_init.c + rtems_bin2c=${INSTALL}/bin/rtems-bin2c + make check-target-libgo RUNTESTFLAGS="\ + SIM=${BSP_SIM} \ + RTEMS_MAKEFILE_PATH=${rtemsdir} \ + RTEMS_LIBGO_INIT=${rtems_libgo_init} \ + RTEMS_BIN2C=${rtems_bin2c} \ + RTEMS_CONFIG_OBJ= \ + --target_board=rtems-${CPU}-${DEJABSP} \ + " +elif [ $2 = gccgo ] ; then RTEMS_MAKEFILE_PATH=${rtemsdir} \ SCRIPTDIR=${SCRIPTDIR} \ make -f ${SCRIPTDIR}/gcc/Makefile.rtems_gccgoinit |