world leader in high performance signal processing
Trace: » testing

Testing the Toolchain

Purpose

The purpose of testing the toolchain is to ensure the release is stable and robust, which can be used to compile U-boot, the uClinux kernel, and any user space application written in Assembly, C or C++.

Overview

To test the GNU toolchain, a host system and Blackfin target are required. The host system is where the compiler (C, and C++), assembler, linker, libraries, debugger and simulator are built and run. The Blackfin target enables tests to be run on the processor ensuring that bugs in the simulator do not hide bugs in the remaining aspects of the toolchain. Since the hardware tests must be run under uClinux, it is critical to be running on a known good uClinux kernel (where the kernel is compiled with a known good toolchain). This helps remove issues with new kernel problems causing toolchain test failures.

For the current release, there are two toolchain versions provided: gcc-4.3 and gcc-4.5. Providing two versions at the same time aims to smoothly upgrade to the more advanced toolchain which ships with more features. Both versions of the toolchain are able to compile ELF binaries (with the bfin-linux-uclibc-gcc) as well as FLAT format binaries (with bfin-uclinux-gcc). For these 4 different combinations of the toolchain and apps, testing covers the assembler, linker, compiler, debugger,libs, as well as manual testcases to ensure everything functions correctly and as expected.

Besides, to ensure that the source in SVN is as stable as possible, there are regression test machines where source code from SVN head is checked out, tested and run. These test results can be seen from the maillist: toolchain-test-notify@blackfin.uclinux.org. It is always a good idea to check the status before checking out the SVN toolchain to see if things are better or worse than the last release. This allows us to find issues within hours, and make sure that SVN stays as stable as possible.

Assembler Testing

Assembler testing is completed by assembling source code into a object file, then disassembling the object file, and comparing the disassembled file to known good output. Assembler tests do not run on the hardware, leading to potential issues where the a bug in the assembler and disassembler would not be found until an end user discovers the problem. To attempt to reduce the likely hood of this occurring, the assembly source was run through the VDSP++ assembler, and disassembled with the gnu disassembler, and compared to the source. This attempts to ensure that the gnu assembler/disassembler tests match VDSP mnemonics to opcode translations as much as possible. The VDSP++ / GNU comparisons have been completed once, and are not a part of this testing procedure. Today the GNU toolchain does approximately 125 gas (assembler/disassembler) test cases, 35 binutils (disassembler, linker, librarian) cases, 90 ld cases, and 22 newlib cases.

Compiler/Debugger Testing

Compiler testing (both C and C++) is completed by compiling source code, and running the test program on the simulator and/or hardware and checking for expected results. More than 37,600 test cases for gcc, 12,200 test cases for g++. The debugger tests take this one step further, where the debugging process is also automated, and tested. There are over 10,200 test cases for the gnu debugger.

Testing on both the simulator and hardware also test the simulator, to ensure that it is simulating the Blackfin core properly. Since the tests, which are also running on the hardware, are linked against uClibc, (the libc implementation used), this also helps test the uClibc library, and find any issues with it.

The comparison of simulator and hardware provides a good benchmark to help identify the nature of where root cause may lie in test failures. (compiler, uClibc)

DejaGnu

To ease and automate the over 60,000 tests, checking of their expected results, a software package called dejagnu was developed. DejaGnu is a framework for testing other programs. Its purpose is to provide a single front end for all tests. This way, a simple command, like “make check” will test the compiler, and leave both a summary file, listing each test that passed or failed, and a log file listing the exact nature of the pass or (more interesting) the failure.

DejaGnu categorizes test results by their status codes. These codes are:

  • PASS: the test passed as expected
  • XPASS: the test unexpectedly passed. This can be just as bad as a failure.
  • FAIL: the test unexpectedly failed
  • XFAIL: the test failed as expected
  • UNSUPPORTED: the test is not supported on this platform
  • ERROR: the testsuite detected an error
  • WARNING: the testsuite detected a possible problem

DejaGnu should be installed on test machine for toolchain testing. Check if it exists, for example, in Suse:

test@toolchain42-bf533stamp:~> /usr/local/bin/runtest --version
...
Expect version is	5.44.1.5
Tcl version is		8.5
Framework version is	1.5

For detailed information on testing gcc, refer to the gcc test page or the DejaGnu page .

Manual Tests

There are toolchain features necessary for proper operation of specific kernel or U-boot features not covered by the automated testing that must be tested manually. At this time, there are only five items which seem to meet this criteria:

  • Built-in functions for csync/ssync (with work-arounds for hardware issues).
  • Stack Checking to see if there is an overflow in the programme running.
  • Compress flat file.
  • Long jump compiler option which is necessary for loadable modules to function in the kernel(Integrated in Dejagnu as gcc.dg bfin-longcall c files and been automatically tested, so omit in the following plan).
  • Shared library support(Automated also,select shared-lib options in both linux kernel and for application binary format, boot the built image to see if it is ok).
  1. To test the built-in functions for csync/ssync, simply compile the following csynctc.c with -mcsync-anomaly (which is on by default) and one of the optimization levels (-O0, -O1, -O2, or -Os ) to see if enough nops is inserted in the output assembly code. (csynctc.c is put in svn tree toolchain/buildscript/auto-test/. The section of test steps below would tell you how to download it.)
    This new feature could produce assembly code that will not trigger the hardware anomaly. Looking into the generated assembly file, after a predicted not taken conditional branch there should be three cycles before a csync/ssync is encountered, and at the destination of a predicted taken conditional branch there should be one cycle before a csync/ssync is seen. If there are other instructions in between the conditional branch and a csync/ssync, then the nops are not necessary now, for the instructions will go through a certain number of cycles. (bp) will be inserted in a predicted conditional branch. Please refer to examples in latter chapter.
  2. To have stack checking function, use the option -mstack-check-l1 when compiling a binary. Build “stacktst.c” in this way, and run it on the target board, it should abort with a trap when bar() is called (assuming default stack size).(stacktst.c is put in svn tree toolchain/buildscript/auto-test/.)
  3. To test if bfin-uclinux-flthdr compress flat file correctly so that the kernel can load and run much smaller binaries.

Environment

The requirements of a host system are those necessary to build the toolchain, which can be found at gcc prerequisites. For example purposes, the host system described in this document is composed as follows:

  • Dell x86 machine
  • Intel® Pentium® 4 CPU 3.00Ghz;
  • 512 M RAM;
  • Harddisk: 78 G;
  • Two Ethernet cards (one connection to the internet)
  • serial port
  • SuSE Linux 9.2, with these optional packages installed:
    • dejagnu 1.4.4
    • subversion-cvs2svn
    • expect
    • tftpd
    • kermit or minicom
    • perl

All the above requirements are basics for the toolchain test setting. Now we would prefer more powerful machine and install Suse 11 with dejagnu 1.5 equiptted.

The Blackfin target system must have the following features:

  • Blackfin processor, supported by uClinux
  • 10/100 Ethernet
  • SDRAM (32M)
  • Flash (128k bytes to Boot U-Boot)
  • U-Boot which can boot a kernel
  • Serial Port for console communications

For example purposes, the ADDS-BF533-STAMP board will be used for these tests. This board includes:

  • an Ethernet interface with an RJ45 (female) jack,
  • a serial port interface with a DB9 (female) connector,
  • a power supply jack and voltage regulator, as well as several interfaces to various Blackfin peripherals.
  • It is connected with the host machine using crossover network cable and the serial cable. Its IP address is also fixed, e.g.10.100.4.50.

Target Configuration

The target must be connected to the host with:

  • 10/100 Ethernet cross over cable
  • Serial Cable
  • Power must be applied to the target

Host Configuration

The following needs to be pre-configured on the machine, which is out of the scope of this document:

  • serial communication on /dev/ttyS0, set to 57,600 8-N-1 (8 data bits, No parity, one stop bit), which can be accessed by the user running the tests
  • A tftp server needs to be enabled, and its working directory set to /tftpboot
  • The IP address of Ethernet device is set to a fixed address, such as 10.100.4.174
  • A connection to the internet, with access to the svn machine (such as blackfin.uclinux.org/svn)

Toolchain test steps

Running the Automated Tests

There are a few scripts necessary to test the Blackfin toolchain, which are in the svn tree toolchain/buildscript/auto-test:

  • toolchain_test : This is the main test script which will svn update to the latest toolchain and the latest kernel source code, build a fresh toolchain by using buildscript/BuildToolChain, and call build_toolchain_kernel.exp to build a fresh kernel image with this newly built toolchain. Then testing can be done on this kernel, which is booted up by restart_board.exp on target board and carry out testing with the script of buildscript-experimental/toolchain-regtest on both simulator and hardware. After that, it will also generate a comparison with the standard test report and between simulator and hardware test summary by using the compare_test_results script. If the test result is judged better than the standard one by the decide_standard script, then the current test result become the standard one.
  • restart_board.exp
  • build_toolchain_kernel.exp : build a stable kernel for toolchain test, which includes the rcp, rsh, rshd, Sysctl support, gdbserver tools, kernel support for FLAT and FDPIC ELF binaries and install ELF shared libraries(to select them if not on by default) and makes some changes to the linux files under /vendors/AnalogDevices/BF533-STAMP/ directory, like enlarge the kernel image size to 25600 BLOCKS in Makefile and set the ip address of target board by adding the command: ifconfig eth0 10.100.4.50 to rc file. In the end it also copy the generated linux/uImage image to /tftpboot directory.
  • compare_test_results: compare the result of every testing with the standard results which is the good one that is expected to see clearly where the regression is.
  • decide_standard
  • remote.exp: For dejagnu-1.4.4, there is a bug that prevents remote testing via rsh. Use this patch on your /usr/share/dejagnu/remote.exp to fix things.
    For dejagnu 1.5, which avoid this issue but should enlarge the timeout value for temporarily issue.this bug. The timeout fix to be applied onto dejagnu 1.5 is :
    diff --git a/runtest.exp b/runtest.exp
    index 2140020..5ec9f02 100755
    --- a/runtest.exp
    +++ b/runtest.exp
    @@ -1214,7 +1214,7 @@ if { $verbose > 2 } {
         log_user 0
     }
    
    -set timeout 10
    +set timeout 300
  • rsh.exp & utils.exp: There is a bug in dejagnu-1.5 and 1.4.x that causes environmental variables to be set on the host instead of the target. You must patch the mentioned files using the appropriate patch below:
  • Dejagnu 1.4.x - this patch
  • Dejagnu 1.5 - this patch

Here are the steps to follow to test the toolchain( We give example steps on dejagnu 1.5 host ):

  • On Host: Check out toolchain test scripts.
    cd /home/test/test_scripts/
    svn checkout --username anonymous https://blackfin.uclinux.org/svn/toolchain/trunk/buildscript/auto-test toolchain
  • On Host: Download the toolchain,u-boot(since the source of tool mkimage is in u-boot) and uClinux source code with the branch or tag name(the version number is 2.6.x) from svn to ~/checkouts/kernel/.
    cd  ~/checkouts/
    svn checkout --username anonymous https://blackfin.uclinux.org/svn/toolchain/trunk .
    svn checkout --username anonymous https://blackfin.uclinux.org/svn/u-boot/trunk .
    svn checkout --username anonymous https://blackfin.uclinux.org/svn/uclinux-dist/trunk .
    svn checkout --username anonymous https://blackfin.uclinux.org/svn/linux-kernel/trunk .
  • On Host: Configure as root the IP address of the ethernet card that is connecting with the target board.
       sudo ifconfig eth1 10.100.4.174
  • Make sure the stamp board is connected with the host through the serial port(/dev/ttyS0,if not change the ttydev value in restart_board.exp) and the Ethernet port.
  • On Host: Start minicom at shell console to have a connection with the target board through the serial port.
        minicom
  • On Target: Power on the board, stop it at uboot prompt and set the uboot environment, such as serverip, ipaddress, bootcmd.
        set ipaddr 10.100.4.50
        set serverip 10.100.4.174
        set bootcmd run tftp_boot
        set tftp_boot 'tftpboot 0x1800000 uImage;bootm 0x1800000'
        save
  • On Target: Let the board boot into kernel to get ready for testing on hardware.
        run tftp_boot
  • On Host: Close minicom by entering ctrl-A followed by Q to cut off the serial port connection. Because in the next step, when toolchain_test calls restart_board.exp,it will also need establish a serial connection with the target board through the same serial port.
  • On Host: Enter the directory where the toolchain_test file is.
    You can edit the path for the tested toolchain by setting TEST_TOOLCHAIN_DIR. This is very useful when testing the pre-installed rpm toolchain package in release.
    The new kernel built by the toolchain in TEST_TOOLCHAIN_DIR includes the needed tools to test the compiler and configure the target board ip address in kernel inital file. When it finished, it will copy the linux/uImage kernel image to /tftpboot directory.
    So just run ./toolchain_test script to kick off the testing.
        cd /home/test/test_scripts/toolchain
        ./toolchain_test

    It will print removing and checking out infomation, and the messages got from building and testing the toolchain. The test result files and the comparison files can be found at /home/test/test_scripts/toolchain/toolchain-build/toolchain-200x_xxx_xx_xx_xx/tests.
    Following is the main part of the output:

    ************** Testing is done on target with kernel config (normal). *************
    ************** Testing 4.3 toolchain on BF537-STAMP. ************
    ************** Host SUSE 10.99.29.40. ***********
    
    ************** Tested toolchain svn info ***************
    At revision 5879.
    Path: .
    URL: svn://10.99.29.20/toolchain/trunk
    Repository Root: svn://10.99.29.20/toolchain
    Repository UUID: 2adf4935-75e9-4407-93b2-34b21a1880a4
    Revision: 5879
    Node Kind: directory
    Schedule: normal
    Last Changed Author: shenders
    Last Changed Rev: 5879
    Last Changed Date: 2012-06-22 23:01:34 +0800 (Fri, 22 Jun 2012)
    ************** Tested U-Boot svn info ******************
    Already up-to-date.
    commit 94705c83329c231832e923447f6e5d24ddcb888a
    Author: Bob Liu <lliubbo@gmail.com>
    Date:   Fri Jun 15 14:25:05 2012 +0800
    ************* Tested uclinux-dist svn info *************
    At revision 10725. 
    Path: .
    URL: svn://10.99.29.20/uclinux-dist/trunk
    Repository Root: svn://10.99.29.20/uclinux-dist
    Repository UUID: 3e2a5524-39e8-4cb9-84a9-c49da69cba3a
    Revision: 10725
    Node Kind: directory
    Schedule: normal
    Last Changed Author: vivili
    Last Changed Rev: 10725
    Last Changed Date: 2012-06-26 16:12:37 +0800 (Tue, 26 Jun 2012)
    ************* Tested linux svn info ********************
    Already up-to-date.
    commit 19a796648d77b4e42a1df7b2e34c2caf659b09f6
    Author: Bob Liu <lliubbo@gmail.com>
    Date:   Tue Jun 26 23:09:25 2012 +0800
    
    Found multiple versions of autoconf, using the one at /usr/bin/autoconf
    Found multiple versions of automake, using the one at /usr/bin/automake
    Found multiple versions of awk, using the one at /usr/bin/awk
    Found multiple versions of bison, using the one at /usr/bin/bison
    Found multiple versions of flex, using the one at /usr/bin/flex
    Found multiple versions of gcc, using the one at /usr/bin/gcc
    Found multiple versions of gettext, using the one at /usr/bin/gettext
    Found multiple versions of grep, using the one at /usr/bin/grep
    Found multiple versions of m4, using the one at /usr/bin/m4
    Found multiple versions of make, using the one at /usr/bin/make
    Found multiple versions of makeinfo, using the one at /usr/bin/makeinfo
    Found multiple versions of msgfmt, using the one at /usr/bin/msgfmt
    Found multiple versions of sed, using the one at /usr/bin/sed
    Found multiple versions of tail, using the one at /usr/bin/tail
    Found multiple versions of wc, using the one at /usr/bin/wc
    Found multiple versions of which, using the one at /usr/bin/which
    Found multiple versions of pkg-config, using the one at /usr/bin/pkg-config
    Found multiple versions of Xvfb, using the one at /usr/bin/Xvfb
    Found multiple versions of make, using the one at /usr/bin/make
    Building packages:          bfin-elf bfin-uclinux bfin-linux-uclibc qemu u-boot ldr-utils urjtag gdbproxy target-libs
    Building gcc versions:      4.3
    Building gcc languages:     all found
    Utilizing make:             make -j1 
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-linux-uclibc/bin
    Toolchain source:           /home/test/work/cruise/checkouts/toolchain
    Kernel source:              /home/test/work/cruise/checkouts/uclinux-dist/linux-2.6.x
    Path to staging output dir: /home/test/work/cruise/temp/staging_build
    Path to ELF output dir:     /home/test/work/cruise/temp/bfin-elf
    Path to logs output dir:    /home/test/work/cruise/temp/logs
    Path to binutils-2.21:      /home/test/work/cruise/checkouts/toolchain/binutils-2.21
    Path to binutils-2.17:      /home/test/work/cruise/checkouts/toolchain/binutils-2.17
    Path to binutils-2.21:      /home/test/work/cruise/checkouts/toolchain/binutils-2.21
    Path to gcc-4.3:            /home/test/work/cruise/checkouts/toolchain/gcc-4.3
    Path to elf2flt:            /home/test/work/cruise/checkouts/toolchain/elf2flt
    Path to uClibc:             /home/test/work/cruise/checkouts/toolchain/uClibc
    Path to uClibc config:      /home/test/work/cruise/checkouts/toolchain/uClibc/extra/Configs/
    Path to qemu:               /home/test/work/cruise/checkouts/toolchain/qemu
    Path to ldr-utils:          /home/test/work/cruise/checkouts/toolchain/ldr-utils
    Path to gdbproxy:           /home/test/work/cruise/checkouts/toolchain/gdbproxy
    Path to urjtag:             /home/test/work/cruise/checkouts/toolchain/urjtag
    Path to libftdi-1.0:        /home/test/work/cruise/checkouts/toolchain/libftdi-1.0
    Path to libusb:             /home/test/work/cruise/checkouts/toolchain/libusb
    Path to readline:           /home/test/work/cruise/checkouts/toolchain/readline
    Path to FLAT output dir:    /home/test/work/cruise/temp/bfin-uclinux
    Path to FDPIC output dir:   /home/test/work/cruise/temp/bfin-linux-uclibc
    Path to kernel output dir:  /home/test/work/cruise/temp/kernel_build
    Path to U-Boot:             /home/test/work/cruise/checkouts/u-boot
    Creating log file:          /home/test/work/cruise/temp/logs/log
    *** Warnings going to /home/test/work/cruise/temp/logs/warn
    *** expat: configuring (2.0.1)                              26 Jun 2012 16:57:40
    *** expat: building                                         26 Jun 2012 16:58:06
    *** expat: installing                                       26 Jun 2012 16:58:10
    *** bfin-elf: binutils: configuring (2.21)                  26 Jun 2012 16:58:36
    *** bfin-elf: binutils: building                            26 Jun 2012 16:58:41
    *** bfin-elf: gdb: configuring (2.17)                       26 Jun 2012 17:00:39
    *** bfin-elf: gdb: building                                 26 Jun 2012 17:00:41
    *** bfin-elf: binutils: installing                          26 Jun 2012 17:05:06
    *** bfin-elf: gdb: installing                               26 Jun 2012 17:05:11
    *** bfin-elf: elf2flt: configuring                          26 Jun 2012 17:05:30
    *** bfin-elf: elf2flt: building                             26 Jun 2012 17:05:31
    *** bfin-elf: elf2flt: installing                           26 Jun 2012 17:05:33
    *** bfin-elf: gcc: linking external packages                26 Jun 2012 17:05:51
    *** bfin-elf: gcc: linking gmp (4.3.2)                      26 Jun 2012 17:05:51
    *** bfin-elf: gcc: linking mpfr (2.4.2)                     26 Jun 2012 17:05:51
    *** bfin-elf: gcc: linking mpc (0.9)                        26 Jun 2012 17:05:51
    *** bfin-elf: gcc: linking ppl (0.12.1)                     26 Jun 2012 17:05:51
    *** bfin-elf: gcc: linking cloog (configure)                26 Jun 2012 17:05:51
    *** bfin-elf: gcc: linking newlib (1.19.0 via 2.21)         26 Jun 2012 17:05:51
    *** bfin-elf: gcc: configuring (4.3.5)                      26 Jun 2012 17:05:52
    *** bfin-elf: gcc: building                                 26 Jun 2012 17:05:54
    *** bfin-elf: gcc: installing                               26 Jun 2012 17:29:31
    *** bfin-uclinux: binutils: configuring (2.21)              26 Jun 2012 17:30:19
    *** bfin-uclinux: binutils: building                        26 Jun 2012 17:30:22
    *** bfin-uclinux: gdb: configuring (2.17)                   26 Jun 2012 17:32:15
    *** bfin-uclinux: gdb: building                             26 Jun 2012 17:32:17
    *** bfin-uclinux: binutils: installing                      26 Jun 2012 17:36:34
    *** bfin-uclinux: gdb: installing                           26 Jun 2012 17:36:38
    *** bfin-uclinux: elf2flt: configuring                      26 Jun 2012 17:36:52
    *** bfin-uclinux: elf2flt: building                         26 Jun 2012 17:36:53
    *** bfin-uclinux: elf2flt: installing                       26 Jun 2012 17:36:54
    *** bfin-uclinux: linux-headers: configuring (3.3.0)        26 Jun 2012 17:36:55
    *** bfin-uclinux: linux-headers: installing                 26 Jun 2012 17:37:02
    *** bfin-uclinux: uClibc: installing headers (0.9.29)       26 Jun 2012 17:37:02
    *** bfin-uclinux: gcc: linking external packages            26 Jun 2012 17:37:08
    *** bfin-uclinux: gcc: linking gmp (4.3.2)                  26 Jun 2012 17:37:08
    *** bfin-uclinux: gcc: linking mpfr (2.4.2)                 26 Jun 2012 17:37:08
    *** bfin-uclinux: gcc: linking mpc (0.9)                    26 Jun 2012 17:37:08
    *** bfin-uclinux: gcc: linking ppl (0.12.1)                 26 Jun 2012 17:37:08
    *** bfin-uclinux: gcc: linking cloog (configure)            26 Jun 2012 17:37:09
    *** bfin-uclinux: gcc: configuring (4.3.5/bare)             26 Jun 2012 17:37:09
    *** bfin-uclinux: gcc: building                             26 Jun 2012 17:37:11
    *** bfin-uclinux: gcc: installing                           26 Jun 2012 17:44:50
    *** bfin-uclinux: uClibc: checking CFLAGS -g -O2            26 Jun 2012 17:44:53
    *** bfin-uclinux: uClibc: configuring for .                 26 Jun 2012 17:44:53
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:44:53
    *** bfin-uclinux: uClibc: setup                             26 Jun 2012 17:45:01
    *** bfin-uclinux: uClibc: building                          26 Jun 2012 17:45:02
    *** bfin-uclinux: uClibc: installing                        26 Jun 2012 17:45:49
    *** bfin-uclinux: uClibc: configuring for bf532-none        26 Jun 2012 17:45:53
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:45:53
    *** bfin-uclinux: uClibc: setup                             26 Jun 2012 17:45:58
    *** bfin-uclinux: uClibc: building                          26 Jun 2012 17:45:59
    *** bfin-uclinux: uClibc: installing                        26 Jun 2012 17:46:43
    *** bfin-uclinux: uClibc: configuring for                   26 Jun 2012 17:46:46
        mid-shared-library                                      
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:46:47
    *** bfin-uclinux: uClibc: setup                             26 Jun 2012 17:46:51
    *** bfin-uclinux: uClibc: building                          26 Jun 2012 17:46:52
    *** bfin-uclinux: uClibc: installing                        26 Jun 2012 17:48:12
    *** bfin-uclinux: uClibc: configuring for msep-data         26 Jun 2012 17:48:17
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:48:18
    *** bfin-uclinux: uClibc: setup                             26 Jun 2012 17:48:24
    *** bfin-uclinux: uClibc: building                          26 Jun 2012 17:48:25
    *** bfin-uclinux: uClibc: installing                        26 Jun 2012 17:49:09
    *** bfin-uclinux: uClibc: configuring for                   26 Jun 2012 17:49:13
        bf532-none/mid-shared-library                           
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:49:13
    *** bfin-uclinux: uClibc: setup                             26 Jun 2012 17:49:18
    *** bfin-uclinux: uClibc: building                          26 Jun 2012 17:49:19
    *** bfin-uclinux: uClibc: installing                        26 Jun 2012 17:50:39
    *** bfin-uclinux: uClibc: configuring for                   26 Jun 2012 17:50:44
        bf532-none/msep-data                                    
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:50:44
    *** bfin-uclinux: uClibc: setup                             26 Jun 2012 17:50:50
    *** bfin-uclinux: uClibc: building                          26 Jun 2012 17:50:52
    *** bfin-uclinux: uClibc: installing                        26 Jun 2012 17:51:36
    *** bfin-uclinux: uClibc: cleaning                          26 Jun 2012 17:51:40
    *** bfin-uclinux: gcc: linking external packages            26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: linking gmp (4.3.2)                  26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: linking mpfr (2.4.2)                 26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: linking mpc (0.9)                    26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: linking ppl (0.12.1)                 26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: linking cloog (configure)            26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: configuring (4.3.5)                  26 Jun 2012 17:51:46
    *** bfin-uclinux: gcc: building                             26 Jun 2012 17:51:50
    *** bfin-uclinux: gcc: installing                           26 Jun 2012 18:19:10
    *** bfin-linux-uclibc: binutils: configuring (2.21)         26 Jun 2012 18:19:51
    *** bfin-linux-uclibc: binutils: building                   26 Jun 2012 18:19:54
    *** bfin-linux-uclibc: gdb: configuring (2.17)              26 Jun 2012 18:21:45
    *** bfin-linux-uclibc: gdb: building                        26 Jun 2012 18:21:48
    *** bfin-linux-uclibc: binutils: installing                 26 Jun 2012 18:26:11
    *** bfin-linux-uclibc: gdb: installing                      26 Jun 2012 18:26:15
    *** bfin-linux-uclibc: linux-headers: configuring (3.3.0)   26 Jun 2012 18:26:28
    *** bfin-linux-uclibc: linux-headers: installing            26 Jun 2012 18:26:28
    *** bfin-linux-uclibc: uClibc: installing headers (0.9.29)  26 Jun 2012 18:26:28
    *** bfin-linux-uclibc: gcc: linking external packages       26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: linking gmp (4.3.2)             26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: linking mpfr (2.4.2)            26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: linking mpc (0.9)               26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: linking ppl (0.12.1)            26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: linking cloog (configure)       26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: configuring (4.3.5/bare)        26 Jun 2012 18:26:33
    *** bfin-linux-uclibc: gcc: building                        26 Jun 2012 18:26:36
    *** bfin-linux-uclibc: gcc: installing                      26 Jun 2012 18:33:37
    *** bfin-linux-uclibc: uClibc: checking CFLAGS -g -O2       26 Jun 2012 18:33:39
    *** bfin-linux-uclibc: uClibc: configuring for .            26 Jun 2012 18:33:39
    *** bfin-linux-uclibc: uClibc: cleaning                     26 Jun 2012 18:33:40
    *** bfin-linux-uclibc: uClibc: setup                        26 Jun 2012 18:33:44
    *** bfin-linux-uclibc: uClibc: building                     26 Jun 2012 18:33:45
    *** bfin-linux-uclibc: uClibc: installing                   26 Jun 2012 18:34:37
    *** bfin-linux-uclibc: uClibc: configuring for bf532-none   26 Jun 2012 18:34:41
    *** bfin-linux-uclibc: uClibc: cleaning                     26 Jun 2012 18:34:42
    *** bfin-linux-uclibc: uClibc: setup                        26 Jun 2012 18:34:47
    *** bfin-linux-uclibc: uClibc: building                     26 Jun 2012 18:34:48
    *** bfin-linux-uclibc: uClibc: installing                   26 Jun 2012 18:35:39
    *** bfin-linux-uclibc: uClibc: building host utils          26 Jun 2012 18:35:43
    *** bfin-linux-uclibc: uClibc: cleaning                     26 Jun 2012 18:35:44
    *** bfin-linux-uclibc: gcc: linking external packages       26 Jun 2012 18:35:50
    *** bfin-linux-uclibc: gcc: linking gmp (4.3.2)             26 Jun 2012 18:35:50
    *** bfin-linux-uclibc: gcc: linking mpfr (2.4.2)            26 Jun 2012 18:35:50
    *** bfin-linux-uclibc: gcc: linking mpc (0.9)               26 Jun 2012 18:35:50
    *** bfin-linux-uclibc: gcc: linking ppl (0.12.1)            26 Jun 2012 18:35:51
    *** bfin-linux-uclibc: gcc: linking cloog (configure)       26 Jun 2012 18:35:51
    *** bfin-linux-uclibc: gcc: configuring (4.3.5)             26 Jun 2012 18:35:51
    *** bfin-linux-uclibc: gcc: building                        26 Jun 2012 18:35:54
    *** bfin-linux-uclibc: gcc: installing                      26 Jun 2012 18:53:23
    *** Installed libgomp.so (1.0.0.4.3.5)                      26 Jun 2012 18:53:42
    *** Installed libmudflapth.so (0.0.0.4.3.5)                 26 Jun 2012 18:53:42
    *** Installed libobjc.so (2.0.0.4.3.5)                      26 Jun 2012 18:53:42
    *** Installed libstdc++.so (6.0.10.4.3.5)                   26 Jun 2012 18:53:42
    *** Installed libgcc_s.so (1.4.3.5)                         26 Jun 2012 18:53:42
    *** Installed bf532-none/libgomp.so (1.0.0.4.3.5)           26 Jun 2012 18:53:42
    *** Installed bf532-none/libmudflapth.so (0.0.0.4.3.5)      26 Jun 2012 18:53:42
    *** Installed bf532-none/libobjc.so (2.0.0.4.3.5)           26 Jun 2012 18:53:42
    *** Installed bf532-none/libstdc++.so (6.0.10.4.3.5)        26 Jun 2012 18:53:42
    *** Installed bf532-none/libgcc_s.so (1.4.3.5)              26 Jun 2012 18:53:42
    *** Installed bf532-none/libmudflap.so (0.0.0.4.3.5)        26 Jun 2012 18:53:42
    *** Installed bf532-none/libgfortran.so (3.0.0.4.3.5)       26 Jun 2012 18:53:42
    *** Installed libmudflap.so (0.0.0.4.3.5)                   26 Jun 2012 18:53:43
    *** Installed libgfortran.so (3.0.0.4.3.5)                  26 Jun 2012 18:53:43
    *** linux-headers: cleaning                                 26 Jun 2012 18:53:43
    *** U-Boot: building helper tools (2011.09)                 26 Jun 2012 18:53:43
    *** U-Boot: cleaning                                        26 Jun 2012 18:53:43
    *** U-Boot: building                                        26 Jun 2012 18:53:43
    *** U-Boot: installing tools                                26 Jun 2012 18:53:48
    *** U-Boot: cleaning                                        26 Jun 2012 18:53:48
    *** qemu: cleaning (1.1.0)                                  26 Jun 2012 18:53:48
    *** qemu: configuring                                       26 Jun 2012 18:53:51
    *** qemu: building                                          26 Jun 2012 18:53:55
    *** qemu: installing                                        26 Jun 2012 18:54:26
    *** libusb: cleaning (1.0.9-rc3)                            26 Jun 2012 18:54:27
    *** libusb: configuring                                     26 Jun 2012 18:54:27
    *** libusb: building                                        26 Jun 2012 18:54:32
    *** libusb: installing                                      26 Jun 2012 18:54:34
    *** ldr-utils: cleaning (svn-3936)                          26 Jun 2012 18:54:34
    *** ldr-utils: configuring                                  26 Jun 2012 18:54:34
    *** ldr-utils: building                                     26 Jun 2012 18:54:47
    *** ldr-utils: installing                                   26 Jun 2012 18:54:50
    *** libftdi-1.0: cleaning (0.17)                            26 Jun 2012 18:54:51
    *** libftdi-1.0: configuring                                26 Jun 2012 18:54:51
    *** libftdi-1.0: building                                   26 Jun 2012 18:54:56
    *** libftdi-1.0: installing                                 26 Jun 2012 18:54:57
    *** urjtag: cleaning (0.10)                                 26 Jun 2012 18:54:57
    *** urjtag: configuring                                     26 Jun 2012 18:54:59
    *** urjtag: building                                        26 Jun 2012 18:55:07
    *** urjtag: installing                                      26 Jun 2012 18:55:35
    *** gdbproxy: cleaning (0.7.2)                              26 Jun 2012 18:55:45
    *** gdbproxy: configuring                                   26 Jun 2012 18:55:46
    *** gdbproxy: building                                      26 Jun 2012 18:55:56
    *** gdbproxy: installing                                    26 Jun 2012 18:56:01
    *** Building libs                                           26 Jun 2012 18:56:02
    *** bfin-uclinux: target libbfd: building                   26 Jun 2012 18:56:40
    *** bfin-uclinux: target libbfd: installing                 26 Jun 2012 18:57:32
    *** bfin-linux-uclibc: target libbfd: building              26 Jun 2012 18:57:33
    *** bfin-linux-uclibc: target libbfd: installing            26 Jun 2012 18:58:25
    *** It took 2h49s to complete                               26 Jun 2012 18:58:28
    *** Done                                                    26 Jun 2012 18:58:28
    
    Exported toolchain path :
    PATH is /home/test/work/cruise/temp/bfin-uclinux/bin:/home/test/work/cruise/temp/bfin-elf/bin:/home/test/work/cruise/temp/bfin-linux-uclibc/bin:/home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-uclinux/bin:/home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-elf/bin:/home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-linux-uclibc/bin:/home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2011_Sep_30_06_38/bfin-uclinux/bin:/home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2011_Sep_30_06_38/bfin-elf/bin:/home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2011_Sep_30_06_38/bfin-linux-uclibc/bin:/home/test/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin 
    Using built-in specs.
    Target: bfin-uclinux
    Configured with: /home/test/work/cruise/checkouts/toolchain/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=bfin-uclinux --prefix=/home/test/work/cruise/temp/bfin-uclinux --disable-libstdcxx-pch --with-sysroot=/home/test/work/cruise/temp/bfin-uclinux/bfin-uclinux/runtime --enable-threads=posix --enable-clocale=generic --disable-symvers --disable-libssp --disable-libffi --disable-libgcj --enable-version-specific-runtime-libs --enable-__cxa_atexit --with-bugurl=URL:http://blackfin.uclinux.org/gf/project/toolchain/tracker --with-pkgversion=ADI-trunk/svn-5865
    Thread model: posix
    gcc version 4.3.5 (ADI-trunk/svn-5865) 
    
    uImage.shared_flat is built and copied.
    Booting up uImage.shared_flat is ok.
    uImage.normal is built and copied.
    Booting up uImage.normal is ok.
    Testing is running on target with following versions:
    kernel:    Linux release 3.3.0-ADI-2012R1-pre-00758-g19a7966, build #6 Tue Jun 26 19:28:19 CST 2012
    toolchain: bfin-uclinux-gcc release gcc version 4.3.5 (ADI-trunk/svn-5865) 
    user-dist: release svn-10725, build #2 Tue Jun 26 19:27:43 CST 2012
    
    Targets:                    elf-sim
    Components:                 binutils gas ld sim gdb newlib gcc g++ gfortran objc libstdc++ libmudflap libgomp
    Host:                       i686-pc-linux-gnu
    Build:                      i686-pc-linux-gnu
    Removing from PATH: /home/test/work/cruise/temp/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/temp/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/temp/bfin-linux-uclibc/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-linux-uclibc/bin
    Found multiple versions of runtest, using the one at /usr/local/bin/runtest
    Found multiple versions of bc, using the one at /usr/bin/bc
    Found multiple versions of killall, using the one at /usr/bin/killall
    Found multiple versions of pstree, using the one at /usr/bin/pstree
    Toolchain source:           /home/test/work/cruise/checkouts/toolchain
    Path to logs output dir:    /home/test/work/cruise/temp/regtest_build4.3/logs
    Path to tests output dir:   /home/test/work/cruise/temp/regtest_build4.3/tests
    Path to elf-sim output dir: /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    Previous elf-sim test logs: /home/test/work/cruise/checkouts/toolchain/buildscript/test_results/elf-sim
    Creating log file:          /home/test/work/cruise/temp/regtest_build4.3/logs/log
    Path to boards output dir:  /home/test/work/cruise/temp/regtest_build4.3/boards
    *** Testing bfin-elf via simulator                          26 Jun 2012 19:52:12
    binutils version:           2.21
    binutils path:              /home/test/work/cruise/temp/bfin-elf/bin
    *** Running tests on binutils                               26 Jun 2012 19:52:12
    *** Running tests on gas                                    26 Jun 2012 19:52:16
    *** Running tests on ld                                     26 Jun 2012 19:52:25
    gdb version:                6.6
    gdb path:                   /home/test/work/cruise/temp/bfin-elf/bin
    *** Running tests on gdb                                    26 Jun 2012 19:52:41
    gcc version:                4.3.5
    gcc path:                   /home/test/work/cruise/temp/bfin-elf/bin
    *** Running tests on gcc                                    26 Jun 2012 19:57:06
    *** Running tests on g++                                    26 Jun 2012 20:38:08
    bfin-elf-gfortran not found
    objc support not found in bfin-elf toolchain
    *** Running tests on libstdc++                              26 Jun 2012 20:49:20
    *** Running tests on sim                                    26 Jun 2012 21:45:53
    *** Running tests on newlib (.)                             26 Jun 2012 21:48:03
    *** Running tests on newlib (bf532-none)                    26 Jun 2012 21:48:18
    *** Running tests on newlib (mid-shared-library)            26 Jun 2012 21:48:33
    *** Running tests on newlib (msep-data)                     26 Jun 2012 21:48:36
    *** Running tests on newlib (mfdpic)                        26 Jun 2012 21:48:46
    *** Running tests on newlib (bf532-none/mid-shared-library) 26 Jun 2012 21:49:01
    *** Running tests on newlib (bf532-none/msep-data)          26 Jun 2012 21:49:04
    *** Running tests on newlib (bf532-none/mfdpic)             26 Jun 2012 21:49:06
    *** Legacify result names                                   26 Jun 2012 21:49:22
    *** Done testing - results                                  26 Jun 2012 21:49:22
    
    ### New: binutils-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== binutils Summary ===
    # of expected passes		77
    # of unsupported tests		5
    
    ### New: g++-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== g++ Summary ===
    # of expected passes		17440
    # of unexpected failures	1
    # of expected failures		92
    # of unsupported tests		183
    
    ### New: gas-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== gas Summary ===
    # of expected passes		160
    # of expected failures		1
    
    ### New: gcc-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== gcc Summary ===
    # of expected passes		49307
    # of unexpected failures	2
    # of expected failures		89
    # of unresolved testcases	1
    # of untested testcases		35
    # of unsupported tests		450
    
    ### New: gdb-6.6.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== gdb Summary ===
    # of expected passes		9877
    # of unexpected failures	62
    # of expected failures		42
    # of known failures		56
    # of unresolved testcases	1
    # of untested testcases		9
    # of unsupported tests		36
    
    ### New: ld-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== ld Summary ===
    # of expected passes		183
    # of expected failures		9
    
    ### New: libstdc++-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== libstdc++ Summary ===
    # of expected passes		4859
    # of unexpected failures	6
    # of expected failures		60
    # of unsupported tests		342
    
    ### New: newlib-4.3-bf532-none-mfdpic-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		23
    # of unexpected failures	1
    
    ### New: newlib-4.3-bf532-none-mid-shared-library-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		12
    # of unexpected failures	12
    
    ### New: newlib-4.3-bf532-none-msep-data-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		12
    # of unexpected failures	12
    
    ### New: newlib-4.3-bf532-none-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		23
    # of unexpected failures	1
    
    ### New: newlib-4.3-mfdpic-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		23
    # of unexpected failures	1
    
    ### New: newlib-4.3-mid-shared-library-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		12
    # of unexpected failures	12
    
    ### New: newlib-4.3-msep-data-newlib.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		12
    # of unexpected failures	12
    
    ### New: newlib-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== newlib Summary ===
    # of expected passes		23
    # of unexpected failures	1
    
    ### New: sim-6.6.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/elf-sim
    		=== sim Summary ===
    # of expected passes		824
    # of unexpected failures	1
    # of expected failures		2
    
    *** It took 2h24s to complete                               26 Jun 2012 21:52:35
    Targets:                    uclinux
    Components:                 binutils gas ld sim gdb newlib gcc g++ gfortran objc libstdc++ libmudflap libgomp
    Host:                       i686-pc-linux-gnu
    Build:                      i686-pc-linux-gnu
    Removing from PATH: /home/test/work/cruise/temp/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/temp/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/temp/bfin-linux-uclibc/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-linux-uclibc/bin
    Found multiple versions of runtest, using the one at /usr/local/bin/runtest
    Found multiple versions of bc, using the one at /usr/bin/bc
    Found multiple versions of killall, using the one at /usr/bin/killall
    Found multiple versions of pstree, using the one at /usr/bin/pstree
    Found multiple versions of rsh, using the one at /usr/bin/rsh
    Found multiple versions of rcp, using the one at /usr/bin/rcp
    Toolchain source:           /home/test/work/cruise/checkouts/toolchain
    Path to logs output dir:    /home/test/work/cruise/temp/regtest_build4.3/logs
    Path to tests output dir:   /home/test/work/cruise/temp/regtest_build4.3/tests
    Path to uclinux output dir: /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    Previous uclinux test logs: /home/test/work/cruise/checkouts/toolchain/buildscript/test_results/uclinux
    Creating log file:          /home/test/work/cruise/temp/regtest_build4.3/logs/log
    Checking host sysctl:       /proc/sys/net/ipv4/tcp_tw_recycle
    Checking target sysctl:     /proc/sys/net/ipv4/tcp_tw_recycle
    Detected board cpu:         bf537-0.2
        Board at '10.100.4.50' being set so syslog doesn't fill /var/log/messages
    Path to boards output dir:  /home/test/work/cruise/temp/regtest_build4.3/boards
    *** Testing bfin-uclinux via hardware (10.100.4.50)         26 Jun 2012 21:52:37
    binutils version:           2.21
    binutils path:              /home/test/work/cruise/temp/bfin-uclinux/bin
    *** Running tests on binutils                               26 Jun 2012 21:52:38
    *** Running tests on gas                                    26 Jun 2012 21:52:43
    *** Running tests on ld                                     26 Jun 2012 21:52:54
    gdb version:                6.6
    gdb path:                   /home/test/work/cruise/temp/bfin-uclinux/bin
    *** Running tests on gdb                                    26 Jun 2012 21:53:10
    gcc version:                4.3.5
    gcc path:                   /home/test/work/cruise/temp/bfin-uclinux/bin
    *** Running tests on gcc                                    26 Jun 2012 22:14:29
    *** Running tests on g++                                    26 Jun 2012 23:13:04
    *** Running tests on gfortran                               26 Jun 2012 23:26:13
    objc support not found in bfin-uclinux toolchain
    *** Running tests on libstdc++                              27 Jun 2012 00:35:59
    *** Running tests on libmudflap                             27 Jun 2012 01:12:25
    *** Running tests on libgomp                                27 Jun 2012 01:19:20
    *** Legacify result names                                   27 Jun 2012 01:27:40
    *** Done testing - results                                  27 Jun 2012 01:27:40
    
    ### New: binutils-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== binutils Summary ===
    # of expected passes		71
    # of unsupported tests		5
    
    ### New: g++-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== g++ Summary ===
    # of expected passes		17440
    # of unexpected failures	1
    # of expected failures		92
    # of unsupported tests		183
    
    ### New: gas-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== gas Summary ===
    # of expected passes		125
    # of expected failures		1
    
    ### New: gcc-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== gcc Summary ===
    # of expected passes		49316
    # of unexpected failures	2
    # of expected failures		89
    # of unresolved testcases	1
    # of untested testcases		35
    # of unsupported tests		445
    
    ### New: gdb-6.6.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== gdb Summary ===
    # of expected passes		10106
    # of unexpected failures	172
    # of expected failures		42
    # of known failures		58
    # of unresolved testcases	11
    # of untested testcases		10
    # of unsupported tests		18
    
    ### New: gfortran-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== gfortran Summary ===
    # of expected passes		24572
    # of unexpected failures	161
    # of expected failures		3
    # of unsupported tests		154
    
    ### New: ld-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== ld Summary ===
    # of expected passes		176
    # of expected failures		9
    # of unsupported tests		1
    
    ### New: libgomp-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== libgomp Summary ===
    # of expected passes		1763
    
    ### New: libmudflap-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== libmudflap Summary ===
    # of expected passes		1788
    # of unexpected failures	48
    # of expected failures		8
    
    ### New: libstdc++-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/uclinux
    		=== libstdc++ Summary ===
    # of expected passes		4869
    # of unexpected failures	8
    # of unexpected successes	2
    # of expected failures		70
    # of unsupported tests		350
    
    *** It took 3h35m7s to complete                             27 Jun 2012 01:27:42
    Targets:                    linux-uclibc
    Components:                 binutils gas ld sim gdb newlib gcc g++ gfortran objc libstdc++ libmudflap libgomp
    Host:                       i686-pc-linux-gnu
    Build:                      i686-pc-linux-gnu
    Removing from PATH: /home/test/work/cruise/temp/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/temp/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/temp/bfin-linux-uclibc/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-uclinux/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-elf/bin
    Removing from PATH: /home/test/work/cruise/test_scripts/toolchain/toolchain-build/toolchain-2012_Jun_25_15_49/bfin-linux-uclibc/bin
    Found multiple versions of runtest, using the one at /usr/local/bin/runtest
    Found multiple versions of bc, using the one at /usr/bin/bc
    Found multiple versions of killall, using the one at /usr/bin/killall
    Found multiple versions of pstree, using the one at /usr/bin/pstree
    Found multiple versions of rsh, using the one at /usr/bin/rsh
    Found multiple versions of rcp, using the one at /usr/bin/rcp
    Toolchain source:           /home/test/work/cruise/checkouts/toolchain
    Path to logs output dir:    /home/test/work/cruise/temp/regtest_build4.3/logs
    Path to tests output dir:   /home/test/work/cruise/temp/regtest_build4.3/tests
    Path to linux-uclibc output dir: /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    Previous linux-uclibc test logs: /home/test/work/cruise/checkouts/toolchain/buildscript/test_results/linux-uclibc
    Creating log file:          /home/test/work/cruise/temp/regtest_build4.3/logs/log
    Checking host sysctl:       /proc/sys/net/ipv4/tcp_tw_recycle
    Checking target sysctl:     /proc/sys/net/ipv4/tcp_tw_recycle
    Detected board cpu:         bf537-0.2
        For both flat and fdpic userspace - I'll check /lib/*.so are the same when testing
    Path to boards output dir:  /home/test/work/cruise/temp/regtest_build4.3/boards
    *** Testing bfin-linux-uclibc via hardware (10.100.4.50)    27 Jun 2012 01:27:46
    gcc version:                4.3.5
    gcc path:                   /home/test/work/cruise/temp/bfin-linux-uclibc/bin
    *** Checking shared libraries on target                     27 Jun 2012 01:27:46
    binutils version:           2.21
    binutils path:              /home/test/work/cruise/temp/bfin-linux-uclibc/bin
    *** Running tests on binutils                               27 Jun 2012 01:27:49
    *** Running tests on gas                                    27 Jun 2012 01:27:54
    *** Running tests on ld                                     27 Jun 2012 01:28:05
    gdb version:                6.6
    gdb path:                   /home/test/work/cruise/temp/bfin-linux-uclibc/bin
    *** Running tests on gdb                                    27 Jun 2012 01:28:26
    *** Running tests on gcc                                    27 Jun 2012 01:42:30
    *** Running tests on g++                                    27 Jun 2012 02:52:36
    *** Running tests on gfortran                               27 Jun 2012 03:06:57
    *** Running tests on objc                                   27 Jun 2012 04:06:49
    *** Running tests on libstdc++                              27 Jun 2012 04:10:40
    *** Running tests on libmudflap                             27 Jun 2012 04:52:52
    *** Running tests on libgomp                                27 Jun 2012 05:00:13
    *** Legacify result names                                   27 Jun 2012 05:07:43
    *** Done testing - results                                  27 Jun 2012 05:07:43
    
    ### New: binutils-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== binutils Summary ===
    # of expected passes		80
    # of unsupported tests		2
    
    ### New: g++-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== g++ Summary ===
    # of expected passes		17451
    # of expected failures		92
    # of unsupported tests		178
    
    ### New: gas-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== gas Summary ===
    # of expected passes		160
    # of expected failures		1
    
    ### New: gcc-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== gcc Summary ===
    # of expected passes		49327
    # of unexpected failures	2
    # of expected failures		89
    # of unresolved testcases	1
    # of untested testcases		35
    # of unsupported tests		440
    
    ### New: gdb-6.6.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== gdb Summary ===
    # of expected passes		10242
    # of unexpected failures	142
    # of expected failures		42
    # of known failures		61
    # of unresolved testcases	3
    # of untested testcases		10
    # of unsupported tests		23
    
    ### New: gfortran-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== gfortran Summary ===
    # of expected passes		24572
    # of unexpected failures	161
    # of expected failures		3
    # of unsupported tests		154
    
    ### New: ld-2.21.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== ld Summary ===
    # of expected passes		234
    # of unexpected failures	9
    # of expected failures		12
    
    ### New: libgomp-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== libgomp Summary ===
    # of expected passes		1763
    
    ### New: libmudflap-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== libmudflap Summary ===
    # of expected passes		1788
    # of unexpected failures	48
    # of expected failures		8
    
    ### New: libstdc++-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== libstdc++ Summary ===
    # of expected passes		4895
    # of unexpected failures	8
    # of unexpected successes	2
    # of expected failures		70
    # of unsupported tests		337
    
    ### New: objc-4.3.sum in /home/test/work/cruise/temp/regtest_build4.3/tests/linux-uclibc
    		=== objc Summary ===
    # of expected passes		1831
    # of unexpected failures	1
    # of expected failures		7
    # of unsupported tests		24
    
    *** It took 3h40m2s to complete                             27 Jun 2012 05:07:44
    
    // Output from BuildToolChain script.
  • Once it has been set up, the next time you're testing the toolchain just run the toolchain_test script.

Running the Manual Tests

This section describes how to run the manual tests step by step. The expected outcome of the tests (with the output thats suppose to be generated) and the expected failure of the test if necessary are also given out.

  1. Compiling csynctc.c using the flat toolchain as following:
     bfin-uclinux-gcc -S -mcsync-anomaly -O0 csynctc.c
     bfin-uclinux-gcc -S -mcsync-anomaly -O1 csynctc.c
     bfin-uclinux-gcc -S -mcsync-anomaly -O2 csynctc.c
     bfin-uclinux-gcc -S -mcsync-anomaly -Os csynctc.c

    To build with elf format, it is needed to add one more flag -mfdpic.

     bfin-linux-uclibc-gcc -S -mcsync-anomaly -O0 csynctc.c
     bfin-linux-uclibc-gcc -S -mcsync-anomaly -O1 csynctc.c
     bfin-linux-uclibc-gcc -S -mcsync-anomaly -O2 csynctc.c
     bfin-linux-uclibc-gcc -S -mcsync-anomaly -Os csynctc.c

    The expected assembly code of the second command(with -O1,in flat format) is :

    .file "csynctc.c";
    .text;
    	.align 4
    .global _foo;
    .type _foo, STT_FUNC;
    _foo:
    	[--sp] = ( r7:7, p5:4 );
    
    	LINK 16;
    	P5 = R0;
    	P4 = R1;
    	jump.s L$L$2;
    L$L$4:
    	nop;
    	csync;
    	R0 = 4 (X);
    	[SP+12] = R0;
    	R0 = 1 (X);
    	R1 = 2 (X);
    	R2 = 3 (X);
    	call _baz;
    L$L$2:
    	call _bar;
    	cc =R0==0;
    	if !cc jump L$L$4 (bp);
    	csync;
    	call _bar;
    	cc =R0==0;
    	if !cc jump L$L$6 (bp);
    	call _bar;
    	cc =R0==0;
    	if cc jump L$L$7 (bp);
    	csync;
    	R0 = 3 (X);
    	[SP+12] = R0;
    	R0 = 1 (X);
    	R1 = 2 (X);
    	R2 = 4 (X);
    	call _baz;
    	jump.s L$L$8;
    L$L$7:
    	nop;
    	csync;
    	R0 = 2 (X);
    	[SP+12] = R0;
    	R0 = 1 (X);
    	R1 = 3 (X);
    	R2 = 4 (X);
    	call _baz;
    L$L$8:
    	call _bar;
    	cc =R0==0;
    	if cc jump L$L$9;
    	nop;
    	nop;
    	nop;
    	csync;
    	R0 = 3 (X);
    	[SP+12] = R0;
    	R0 = 2 (X);
    	R1 = 1 (X);
    	R2 = 4 (X);
    	call _baz;
    	jump.s L$L$10;
    L$L$9:
    	csync;
    	R0 = 2 (X);
    	[SP+12] = R0;
    	R0 = 3 (X);
    	R1 = 1 (X);
    	R2 = 4 (X);
    	call _baz;
    L$L$10:
    	call _bar;
    	cc =R0==0;
    	if cc jump L$L$11 (bp);
    	R7 = [P4];
    	csync;
    	R0 = 3 (X);
    	[SP+12] = R0;
    	R0 = 1 (X);
    	R1 = 2 (X);
    	R2 = 4 (X);
    	call _baz;
    	jump.s L$L$12;
    L$L$11:
    	R7 = [P5];
    	csync;
    	R0 = 2 (X);
    	[SP+12] = R0;
    	R0 = 1 (X);
    	R1 = 3 (X);
    	R2 = 4 (X);
    	call _baz;
    L$L$12:
    	call _bar;
    	cc =R0==0;
    	if cc jump L$L$13;
    	nop;
    	nop;
    	R7 = [P5];
    	csync;
    	R0 = 3 (X);
    	[SP+12] = R0;
    	R0 = 2 (X);
    	R1 = 1 (X);
    	R2 = 4 (X);
    	call _baz;
    	jump.s L$L$14;
    L$L$13:
    	R7 = [P4];
    	csync;
    	R0 = 2 (X);
    	[SP+12] = R0;
    	R0 = 3 (X);
    	R1 = 1 (X);
    	R2 = 4 (X);
    	call _baz;
    L$L$14:
    	call _bar;
    	cc =R0==0;
    	if cc jump L$L$15 (bp);
    L$L$6:
    	nop;
    	ssync;
    L$L$15:
    	call _bar;
    	cc =R0==0;
    	if !cc jump L$L$6 (bp);
    	R0 = R7;
    	UNLINK;
    	( r7:7, p5:4 ) = [sp++];
    
    	rts;
    	.size	_foo, .-_foo
    	.ident	"GCC: (GNU) 3.4.4"

    The generated code just adds the nops at the needed places. As to L$L$11, there is no nop at this predicted taken conditional branch because one other instruction is already executed before csync goes. The other commands have quite similar effect after having -mcsync-anomaly option on.

  2. When testing the stack checking option, compile stacktst as either of the two lines:
    bfin-uclinux-gcc  -o stacktst  -mstack-check-l1 stacktst.c -Wl,-elf2flt
    bfin-linux-uclibc-gcc  -o stacktst  -mstack-check-l1 stacktst.c 

    Copy the generated stacktst program onto the target board through the ftp server (ftp service is on by default).

    • Set the cross development environment as explained in the above test steps.
    • On Target: At the kernel prompt,configure the ip address.
           ifconfig eth0 10.100.4.50
    • On Host: At shell prompt, connect to the ftp service on the target board.
          ftp 10.100.4.50

      Please log in as root and the password is uClinux.

    • On Host: Put the stacktst program to target board at ftp prompt.
          ftp> put stacktst

      There must be the stacktst file at the root directory of the target board.

    • On Target: Change the mode of the stacktst file to make it executable.
          chmod 777 stacktst
    • On Target: Run stacktst.
          ./stacktst

      It prints out:

      root:~> ./stacktst
      calling baz
      
      baz 0x3a07040
      
      calling bar
      Application stack overflow
       - Please increase the stack size of the application using elf2flt -s option,
       and/or reduce the stack use of the application.
      ... 
      SIGSEGV

      The bar function should be detacted a stack overflow (assuming default stack size).

  3. To test if bfin-uclinux-flthdr compress flat file correctly.
      ls -l filename
      bfin-uclinux-flthdr -z filename
      bfin-uclinux-flthdr -p filename
      ls -l filename

    It can be seen that the file size has been obviously smaller than before.
    In the kernel to have zflat binary support.

    under Customize Kernel Settings
    == Select Executable File Formats ==
        Enable ZFLAT support           

    Copy the compressed file to target board, it should be run correctly now.

  4. Shared library testing.
    under Customize Kernel Settings
    == Select Executable File Formats ==
        Enable shared FLAT support   
    under Customize Vendor/User Settings
    == Select Blackfin build Options == 
       Select  Binary format -> Shared-FLAT         

    The image building out by this way has included a lot of shared-flat formated applications and libs, thus covers the test cases we used to do and can prove the functionality of the shared-flat feature. So if this image can boot and works ok, we take this case pass. More infomation can be found at Shared libraries under uClinux.

Criteria

Automated Testing

The release criteria will be that the release candidate will not fail more tests than the previous release toolchain in any category. All passing tests on the previously released toolchain should also pass with the new toolchain. And the svn toolchain’s test results are below.

The test results of 4.3 toolchain is as follows:
                               Simulator  uClinux (flat)  uClinux (FD-PIC)  
=== gcc Summary ===
# of expected passes		49307	       49316	       49329		    
# of unexpected failures	8              8               8
# of expected failures		89             89              89
# of unresolved testcases	1               1               1
# of untested testcases		35              35              35
# of unsupported tests		450             445             439

=== g++ Summary ===
# of expected passes		17440		17440		17451
# of unexpected failures	1               1               0
# of expected failures		92              92              92
# of unsupported tests		183             183            178

=== gfortran Summary ===
# of expected passes		                24564		24564
# of unexpected failures	                169  		169
# of expected failures		                3    		3
# of unresolved testcases	   		                
# of unsupported tests		                154		154

=== gdb Summary ===
# of expected passes		9877		10102		10244
# of unexpected failures	62              176             141
# of expected failures		42              42              42
# of known failures		56              58              60
# of unresolved testcases	1               11              3
# of untested testcases		9               10              10
# of unsupported tests		36              18		23

=== libstdc++ Summary ===
# of expected passes		4859		4869		4895
# of unexpected failures	6               8               8
# of unexpected successes	0                2               2
# of expected failures		60               70              70
# of unsupported tests		342		350		337

=== libmudflap Summary ===
# of expected passes				1788		1788
# of unexpected failures	                48              48
# of expected failures	                        8               8

=== binutils Summary ===    
# of expected passes           77               71              80
# of unsupported tests         5                5               2              
# of unresolved testcases                       

=== gas Summary ===        
# of expected passes           160              125             160
# of expected failures         1                1               1

=== ld Summary ===
# of expected passes	       183	        176	       234
# of unexpected failures       9                9              9
# of expected failures                                         12
# of untested testcases		                1       
	
=== newlib Summary ===
# of expected passes		12	      		
# of unexpected failures	12 

=== libgomp Summary ===
# of expected passes		               1763            1763
=== objc Summary ===
# of expected passes		                               1831
# of unexpected failures	                                1
# of expected failures		                                7
# of unsupported tests		                                24


The test of 4.3 toolchain should be smoothly finished and achieve experimental quality.

Because simply looking at the numbers can not tell if an old test is passing, and new tests are failing, a comparison of which tests (by name) must be completed before the toolchain can be released. There is a shell script compare_tests which can help compare things by name in the gcc/gcc-4.x/contrib folder.

Manual Testing

  1. The expected code for built-in csync/ssync functions test are four assembly files.
    • csynctc.s compiled with -mcsync-anomaly -O0 flags:
      .file "csynctc.c";
      .text;
      	.align 4
      .global _foo;
      .type _foo, STT_FUNC;
      _foo:
      	LINK 20;
      	[FP+8] = R0;
      	[FP+12] = R1;
      L$L$2:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$3;
      	nop;
      	nop;
      	nop;
      	csync;
      	R0 = 4 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 2 (X);
      	R2 = 3 (X);
      	call _baz;
      	jump.s L$L$2;
      L$L$3:
      	csync;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$4;
      	jump.s L$L$5;
      L$L$4:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$6;
      	nop;
      	nop;
      	nop;
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 2 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$7;
      L$L$6:
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 3 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$7:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$8;
      	nop;
      	nop;
      	nop;
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$9;
      L$L$8:
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$9:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$10;
      	nop;
      	P2 = [FP+12];
      	R0 = [P2];
      	[FP+-4] = R0;
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 2 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$11;
      L$L$10:
      	P2 = [FP+8];
      	R0 = [P2];
      	[FP+-4] = R0;
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 3 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$11:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$12;
      	nop;
      	P2 = [FP+8];
      	R0 = [P2];
      	[FP+-4] = R0;
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$13;
      L$L$12:
      	P2 = [FP+12];
      	R0 = [P2];
      	[FP+-4] = R0;
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$13:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$14;
      	nop;
      	nop;
      	nop;
      L$L$5:
      	ssync;
      L$L$14:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$15;
      	jump.s L$L$5;
      L$L$15:
      	R0 = [FP+-4];
      	UNLINK;
      	rts;
      	.size	_foo, .-_foo
      	
    • csynctc.s for -mcsync-anomaly -O1 flags:
      .file "csynctc.c";
      .text;
      	.align 4
      .global _foo;
      .type _foo, STT_FUNC;
      _foo:
      	[--sp] = ( r7:7, p5:4 );
      
      	LINK 16;
      	P5 = R0;
      	P4 = R1;
      	jump.s L$L$2;
      L$L$4:
      	nop;
      	csync;
      	R0 = 4 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 2 (X);
      	R2 = 3 (X);
      	call _baz;
      L$L$2:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$4 (bp);
      	csync;
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$6 (bp);
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$7 (bp);
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 2 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$8;
      L$L$7:
      	nop;
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 3 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$8:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$9;
      	nop;
      	nop;
      	nop;
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$10;
      L$L$9:
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$10:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$11 (bp);
      	R7 = [P4];
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 2 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$12;
      L$L$11:
      	R7 = [P5];
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 1 (X);
      	R1 = 3 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$12:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$13;
      	nop;
      	nop;
      	R7 = [P5];
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	jump.s L$L$14;
      L$L$13:
      	R7 = [P4];
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      L$L$14:
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$15 (bp);
      L$L$6:
      	nop;
      	ssync;
      L$L$15:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$6 (bp);
      	R0 = R7;
      	UNLINK;
      	( r7:7, p5:4 ) = [sp++];
      
      	rts;
      	.size	_foo, .-_foo
      	
    • csynctc.s for -mcsync-anomaly -O2 flags:
      .file "csynctc.c";
      .text;
      	.align 4
      .global _foo;
      .type _foo, STT_FUNC;
      _foo:
      	[--sp] = ( r7:7, p5:4 );
      
      	LINK 16;
      	P5 = R0;
      	P4 = R1;
      	jump.s L$L$2;
      L$L$4:
      	nop;
      	csync;
      	R0 = 4 (X);
      	[SP+12] = R0;
      	R1 = 2 (X);
      	R0 = 1 (X);
      	R2 = 3 (X);
      	call _baz;
      L$L$2:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$4 (bp);
      	csync;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$22;
      	nop;
      	nop;
      L$L$6:
      	nop;
      	ssync;
      L$L$15:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$6 (bp);
      	UNLINK;
      	R0 = R7;
      	( r7:7, p5:4 ) = [sp++];
      
      	rts;
      L$L$22:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$23;
      	nop;
      	nop;
      	nop;
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R1 = 3 (X);
      	R0 = 1 (X);
      L$L$17:
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$9;
      	nop;
      	nop;
      	nop;
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      L$L$18:
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$24;
      	nop;
      	nop;
      	R7 = [P5];
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R1 = 3 (X);
      	R0 = 1 (X);
      L$L$19:
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$13;
      	nop;
      	nop;
      	R7 = [P5];
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      L$L$20:
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$15 (bp);
      	jump.s L$L$6;
      L$L$23:
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R1 = 2 (X);
      	R0 = 1 (X);
      	jump.s L$L$17;
      L$L$13:
      	R7 = [P4];
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      	jump.s L$L$20;
      L$L$24:
      	R7 = [P4];
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R1 = 2 (X);
      	R0 = 1 (X);
      	jump.s L$L$19;
      L$L$9:
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      	jump.s L$L$18;
      	.size	_foo, .-_foo
      	
    • csynctc.s for -mcsync-anomaly -Os flags:
      .file "csynctc.c";
      .text;
      	.align 4
      .global _foo;
      .type _foo, STT_FUNC;
      _foo:
      	[--sp] = ( r7:7, p5:4 );
      
      	LINK 16;
      	P4 = R0;
      	P5 = R1;
      	jump.s L$L$2;
      L$L$4:
      	nop;
      	csync;
      	R0 = 4 (X);
      	[SP+12] = R0;
      	R1 = 2 (X);
      	R0 = 1 (X);
      	R2 = 3 (X);
      	call _baz;
      L$L$2:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$4 (bp);
      	csync;
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$6 (bp);
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$7 (bp);
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R1 = 2 (X);
      	R0 = 1 (X);
      	jump.s L$L$17;
      L$L$7:
      	nop;
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R1 = 3 (X);
      	R0 = 1 (X);
      L$L$17:
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$9 (bp);
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      	jump.s L$L$18;
      L$L$9:
      	nop;
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      L$L$18:
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$11 (bp);
      	R7 = [P5];
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R1 = 2 (X);
      	R0 = 1 (X);
      	jump.s L$L$19;
      L$L$11:
      	R7 = [P4];
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R1 = 3 (X);
      	R0 = 1 (X);
      L$L$19:
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$13 (bp);
      	R7 = [P4];
      	csync;
      	R0 = 3 (X);
      	[SP+12] = R0;
      	R0 = 2 (X);
      	jump.s L$L$20;
      L$L$13:
      	R7 = [P5];
      	csync;
      	R0 = 2 (X);
      	[SP+12] = R0;
      	R0 = 3 (X);
      L$L$20:
      	R1 = 1 (X);
      	R2 = 4 (X);
      	call _baz;
      	call _bar;
      	cc =R0==0;
      	if cc jump L$L$15 (bp);
      L$L$6:
      	nop;
      	ssync;
      L$L$15:
      	call _bar;
      	cc =R0==0;
      	if !cc jump L$L$6 (bp);
      	UNLINK;
      	R0 = R7;
      	( r7:7, p5:4 ) = [sp++];
      
      	rts;
      	.size	_foo, .-_foo
      	...
  2. When running stacktst on a target board to check the stack, the expected output message is:
    calling baz
    
    baz 0x3a07040
    
    calling bar
    Application stack overflow
     - Please increase the stack size of the application using elf2flt -s option,
     and/or reduce the stack use of the application.
    
    CURRENT PROCESS:
    
    COMM=stacktst PID=39
    TEXT=03a00044-03a02ce4 DATA=03a02ce8-03a032c8 BSS=03a032c8-03a034e8
    USER-STACK=03a07f7c
    
    return address: 03a001a2; contents of [PC-16...PC+8[:
    5aba e120 f128 3208 5a8a 9110 e801 0000
    0010 e14a 03a1 e10a 0bde 08d6 1402 00a3 X
    e800 2714 b0b8 e14a ffff e10a 63c0 5a97
    
    RETE:  00000000  RETN: 038ae000  RETX: 03a001a2  RETS: 03a00226
    IPEND: 0030  SYSCFG: 0036
    SEQSTAT: 00060003    SP: 038adf24
    R0: 00000003    R1: 03a033e8    R2: 00000001    R3: 00000000
    R4: 0035f668    R5: 003a0598    R6: 00000001    R7: 03a07f88
    P0: 00000004    P1: 03a033e8    P2: 03a10bde    P3: 003584b4
    P4: 03a07f80    P5: 03a02ca8    FP: 03a07f3c
    A0.w: 00000000    A0.x: 00000000    A1.w: 00000000    A1.x: 00000000
    LB0: 03a01d6d  LT0: 03a01d60  LC0: 00000000
    LB1: 00000001  LT1: 00000000  LC1: 00000000
    B0: 00000000  L0: 00000000  M0: 00000000  I0: 03a02e68
    B1: 00000000  L1: 00000000  M1: 00000000  I1: 00000000
    B2: 00000000  L2: 00000000  M2: 00000000  I2: 00000000
    B3: 00000000  L3: 00000000  M3: 00000000  I3: 00000000
    
    USP: 03a07f30   ASTAT: 02001024
    
    
    Hardware Trace:
     0 Target : <000040b0>{_trap_c+0}<0>
       Source : <000067ce>{exception_to_level5+146}<0>
     1 Target : <0000673c>{exception_to_level5+0}<0>
       Source : <00006738>{ex_trap_c+44}<0>
     2 Target : <0000670c>{ex_trap_c+0}<0>
       Source : <00006858>{_trap+40}<0>
     3 Target : <00006830>{_trap+0}<0>
       Source : <03a001a0>{stacktst+0x15c}<0>
     4 Target : <03a00194>{stacktst+0x150}<0>
       Source : <03a00222>{stacktst+0x1de}<0>
     5 Target : <03a00220>{stacktst+0x1dc}<0>
       Source : <03a0036a>{stacktst+0x326}<0>
     6 Target : <03a00362>{stacktst+0x31e}<0>
       Source : <03a00358>{stacktst+0x314}<0>
     7 Target : <03a0034e>{stacktst+0x30a}<0>
       Source : <03a00512>{stacktst+0x4ce}<0>
     8 Target : <03a0050c>{stacktst+0x4c8}<0>
       Source : <03a00508>{stacktst+0x4c4}<0>
    Stack from 038ade74:<0>
           <0> 0000000b<0> 0000413a<0> 003c4c00<0> 00000003<0> 00000001<0> 0000000b<0> 00000000<0> 00030003<0>
           <0> 03a001a2<0> 0025f944<0> 003584b4<0> 00000000<0> 00029112<0> 0025f920<0> 00000001<0> 03a07e9c<0>
           <0> 000378a8<0> 0025e080<0> 038adee8<0> 000291fe<0> 038adee8<0> 0025f920<0> fffffff7<0> 03a033e8<0>
           <0> 00000001<0> 00000036<0> 0025f920<0> 00000000<0> 038adee8<0> 00000000<0> 00000000<0> 00000000<0>
           <0> 0000698e<0> 000291c8<0> 00000004<0> 00000000<0> ffffe000<0> 000067d2<0> 00006f0c<0> 03a07f88<0>
           <0> 0000ffff<0> 00000000<0> 00000000<0> 03a01bda<0> 03a001a2<0> 00000030<0> 00060003<0> 00000000<0>
    Call Trace:<0>
    
    
    SIGSEGV
  3. When running the linux image built with shared library, it should has much smaller file size:
    root:/> PHY: 0:01 - Link is Up - 100/Full
    root:/> ls -l /bin/rcp
    -rwxr--r--    1 root     root         9640 Mar 11  2009 /bin/rcp
    root:/> 

Problem reporting and tracking

Limitations

  • At this time performance is not examined, nor a part of the test criteria.