Hi Chris. You can clone this repository:
https://github.com/ttsiodras/EmbeddedCoverage ...and then use different build invocations to easily reproduce - like this: First, with an older toolchain: ================================= (master)$ /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -v Using built-in specs. COLLECT_GCC=_sparc-rtems4.11-gcc COLLECT_LTO_WRAPPER=/opt/rtems-4.11/libexec/gcc/sparc-rtems4.11/4.8.1/lto-wrapper Target: sparc-rtems4.11 Configured with: ../gcc-4.8.1/configure --enable-threads -with-gnu-as --with-gnu-ld --with-newlib --verbose --with-system-zlib --disable-nls --enable-version-specific-runtime-libs --enable-languages=c,c++,ada --target=sparc-rtems4.11 --prefix=/opt/rtems-4.11 --with-gmp=/opt/rtems-4.11 --with-mpfr=/opt/rtems-4.11 --with-mpc=/opt/rtems-4.11 Thread model: rtems gcc version 4.8.1 (GCC) (master)$ make PLATFORM=OAR RTEMS=/opt/rtems-4.11 FPU=1 COVERAGE=1 CROSS_PREFIX=sparc-rtems4.11 V=1 CPU=leon3 Generating dependencies for src/gcov_hooks.c Generating dependencies for src/gcc.c Generating dependencies for src/task2.c Generating dependencies for src/task1.c Generating dependencies for src/my_main.c Generating dependencies for src/init.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/init.o src/init.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/my_main.o src/my_main.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/task1.o src/task1.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/task2.o src/task2.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/gcc.o src/gcc.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/gcov_hooks.o src/gcov_hooks.c /opt/rtems-4.11/bin/sparc-rtems4.11-gcc -g -o bin.debug.leon3.OAR/fputest objs.debug.leon3.OAR/init.o objs.debug.leon3.OAR/my_main.o objs.debug.leon3.OAR/task1.o objs.debug.leon3.OAR/task2.o objs.debug.leon3.OAR/gcc.o objs.debug.leon3.OAR/gcov_hooks.o -fprofile-arcs -ftest-coverage -B/opt/rtems-4.11/sparc-rtems4.11/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress Built debug version at bin.debug.leon3.OAR/fputest Build done via RTEMS at /opt/rtems-4.11/sparc-rtems4.11/leon3/lib for leon3. ================================= With the old toolchain, CTOR_LIST contains this: ================================= (master)$ sparc-rtems4.11-objdump -d -x -S ./bin.debug.leon3.OAR/fputest | grep -A6 '<__CTOR_LIST__>' 4001d100 <__CTOR_LIST__>: 4001d100: ff ff ff ff 40 00 13 ac 40 00 14 54 40 00 18 54 ....@...@..T@..T 4001d110: 40 00 1b 38 40 00 22 4c 40 00 25 c0 @..8@."L@.%. 4001d11c <__CTOR_END__>: 4001d11c: 00 00 00 00 .... ================================= ...so the addresses of the "coverage stubs" are indeed stored in __CTOR_LIST__. Then, with rtems 4.12: ================================= (master)$ make clean (master)$ make PLATFORM=OAR RTEMS=/opt/rtems-4.12 FPU=1 COVERAGE=1 CROSS_PREFIX=sparc-rtems4.12 V=1 CPU=leon3 Generating dependencies for src/gcov_hooks.c Generating dependencies for src/gcc.c Generating dependencies for src/task2.c Generating dependencies for src/task1.c Generating dependencies for src/my_main.c Generating dependencies for src/init.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/init.o src/init.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/my_main.o src/my_main.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/task1.o src/task1.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/task2.o src/task2.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/gcc.o src/gcc.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_leon3 -o objs.debug.leon3.OAR/gcov_hooks.o src/gcov_hooks.c /opt/rtems-4.12/bin/sparc-rtems4.12-gcc -g -o bin.debug.leon3.OAR/fputest objs.debug.leon3.OAR/init.o objs.debug.leon3.OAR/my_main.o objs.debug.leon3.OAR/task1.o objs.debug.leon3.OAR/task2.o objs.debug.leon3.OAR/gcc.o objs.debug.leon3.OAR/gcov_hooks.o -fprofile-arcs -ftest-coverage -B/opt/rtems-4.12/sparc-rtems4.12/leon3/lib -specs bsp_specs -qrtems -mcpu=cypress Built debug version at bin.debug.leon3.OAR/fputest Build done via RTEMS at /opt/rtems-4.12/sparc-rtems4.12/leon3/lib for leon3. ttsiod@rtems-builder ~/GitHub/EmbeddedCoverage (master)$ /opt/rtems-4.12/bin/sparc-rtems4.12-objdump -d -x -S ./bin.debug.leon3.OAR/fputest | grep -A7 '<__CTOR_LIST__>' 40024c20 <__CTOR_LIST__>: 40024c20: ff ff ff ff .... 40024c24 <__CTOR_END__>: 40024c24: 00 00 00 00 40 00 14 60 40 00 15 24 40 00 19 cc ....@..`@..$@... 40024c34: 40 00 1d 34 40 00 24 74 40 00 28 08 @..4@.$t@.(. ================================= The CTOR_LIST is empty - the addresses of the coverage stubs are in __CTOR_END__ - they are not read by do_global_ctors_aux (see the relevant code in the previous post). Then with a freshly built RTEMS5 from the mainline (RSB 703532cb04c6990fb21e97cb7347a16e9df11108-modified) ================================= (master)$ make clean (master)$ make PLATFORM=OAR RTEMS=/opt/rtems-5.1-2018.02.05 FPU=1 COVERAGE=1 CROSS_PREFIX=sparc-rtems5 V=1 CPU=gr740 Generating dependencies for src/gcov_hooks.c Generating dependencies for src/gcc.c Generating dependencies for src/task2.c Generating dependencies for src/task1.c Generating dependencies for src/my_main.c Generating dependencies for src/init.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/init.o src/init.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/my_main.o src/my_main.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/task1.o src/task1.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/task2.o src/task2.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/gcc.o src/gcc.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/gcov_hooks.o src/gcov_hooks.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -g -o bin.debug.gr740.OAR/fputest objs.debug.gr740.OAR/init.o objs.debug.gr740.OAR/my_main.o objs.debug.gr740.OAR/task1.o objs.debug.gr740.OAR/task2.o objs.debug.gr740.OAR/gcc.o objs.debug.gr740.OAR/gcov_hooks.o -fprofile-arcs -ftest-coverage -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress Built debug version at bin.debug.gr740.OAR/fputest Build done via RTEMS at /opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib for gr740. ttsiod@rtems-builder ~/GitHub/EmbeddedCoverage (master)$ /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-objdump -d -x -S ./bin.debug.gr740.OAR/fputest | grep -A7 '<__CTOR_LIST__>' 000242c0 <__CTOR_LIST__>: 242c0: ff ff ff ff .... 000242c4 <__CTOR_END__>: 242c4: 00 00 00 00 00 00 14 60 00 00 15 24 00 00 19 cc .......`...$.... 242d4: 00 00 1d 34 00 00 24 74 00 00 28 08 ...4..$t..(. ================================= But if we patch linkcmds.base like this... ================================= root@rtems-builder:/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib# diff -u linkcmds.base.old linkcmds.base --- linkcmds.base.old 2018-02-28 09:51:46.984834147 +0100 +++ linkcmds.base 2018-02-28 09:52:11.732833637 +0100 @@ -89,11 +89,13 @@ The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) - KEEP (*(SORT(.ctors*))) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) - KEEP (*(SORT(.dtors*))) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) root@rtems-builder:/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib# exit (master)$ make clean (master)$ make PLATFORM=OAR RTEMS=/opt/rtems-5.1-2018.02.05 FPU=1 COVERAGE=1 CROSS_PREFIX=sparc-rtems5 V=1 CPU=gr740 Generating dependencies for src/gcov_hooks.c Generating dependencies for src/gcc.c Generating dependencies for src/task2.c Generating dependencies for src/task1.c Generating dependencies for src/my_main.c Generating dependencies for src/init.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/init.o src/init.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/my_main.o src/my_main.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/task1.o src/task1.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/task2.o src/task2.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/gcc.o src/gcc.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -c -DCOVERAGE_ENABLED -fprofile-arcs -ftest-coverage -Wall -Wextra -g -I src -DOAR -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -DDEBUG -O0 -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress -DBSP_gr740 -o objs.debug.gr740.OAR/gcov_hooks.o src/gcov_hooks.c /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-gcc -g -o bin.debug.gr740.OAR/fputest objs.debug.gr740.OAR/init.o objs.debug.gr740.OAR/my_main.o objs.debug.gr740.OAR/task1.o objs.debug.gr740.OAR/task2.o objs.debug.gr740.OAR/gcc.o objs.debug.gr740.OAR/gcov_hooks.o -fprofile-arcs -ftest-coverage -B/opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib -specs bsp_specs -qrtems -mcpu=cypress Built debug version at bin.debug.gr740.OAR/fputest Build done via RTEMS at /opt/rtems-5.1-2018.02.05/sparc-rtems5/gr740/lib for gr740. ttsiod@rtems-builder ~/GitHub/EmbeddedCoverage (master)$ /opt/rtems-5.1-2018.02.05/bin/sparc-rtems5-objdump -d -x -S ./bin.debug.gr740.OAR/fputest | grep -A7 '<__CTOR_LIST__>' 000242c0 <__CTOR_LIST__>: 242c0: ff ff ff ff 00 00 14 60 00 00 15 24 00 00 19 cc .......`...$.... 242d0: 00 00 1d 34 00 00 24 74 00 00 28 08 ...4..$t..(. 000242dc <__CTOR_END__>: 242dc: 00 00 00 00 .... ================================= ...then the addresses of the coverage stubs end up on the right list. Hope this makes things clearer, Thanassis. Thanassis Tsiodras Real-time Embedded Software Engineer System, Software and Technology Department ESTEC Keplerlaan 1, PO Box 299 NL-2200 AG Noordwijk, The Netherlands thanassis.tsiod...@esa.int | www.esa.int T +31 71 565 5332 From: Chris Johns <chr...@rtems.org> To: thanassis.tsiod...@esa.int, devel@rtems.org Date: 28/02/2018 04:43 Subject: Re: N2X, GR740 and coverage: The impact of a linkcmds patch from 2014 to gcov_init calls On 28/02/2018 03:30, thanassis.tsiod...@esa.int wrote: > What follows is a detailed bug report - and a suggested fix - regarding the > impact on calls to "__gcov_init" from a patch made to sparc's linkscmds file > back in 2014. Thank you for the detail report. > [snip] > > Can you please confirm whether this is indeed a bug - and/or indicate whether > there's some other workaround that can be used besides "hacking" the linkcmds > this way, to make coverage functionality operate properly? Do you have a test case with the compile and link commands that can be used to show the problem? Thanks Chris This message and any attachments are intended for the use of the addressee or addressees only. The unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its content is not permitted. If you received this message in error, please notify the sender and delete it from your system. Emails can be altered and their integrity cannot be guaranteed by the sender. Please consider the environment before printing this email.
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel