N2X, GR740 and coverage: The impact of a linkcmds patch from 2014 to gcov_init calls

Thanassis.Tsiodras at esa.int Thanassis.Tsiodras at esa.int
Wed Feb 28 08:59:23 UTC 2018


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 
.... at ...@..T at ..T
4001d110:       40 00 1b 38 40 00 22 4c 40 00 25 c0 @..8 at ."L at .%.

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 at 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 
.... at ..`@..$@...
40024c34:       40 00 1d 34 40 00 24 74 40 00 28 08 @..4 at .$t at .(.
=================================

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 at 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 at 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 at 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 at 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.Tsiodras at esa.int | www.esa.int
T +31 71 565 5332



From:   Chris Johns <chrisj at rtems.org>
To:     Thanassis.Tsiodras at esa.int, devel at 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.Tsiodras at 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.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20180228/40eb984d/attachment-0002.html>


More information about the devel mailing list