Hi,
On Fri, 28 Mar 2025 at 14:24, ci_notify@linaro.org wrote:
Dear contributor,
Our automatic CI has detected problems related to your patch(es). Please find some details below.
In arm-eabi cortex-m23 soft, after: | commit gcc-15-8947-g8ed2d5d219e | Author: Jørgen Kvalsvik j@lambda.is | Date: Tue Jun 4 14:13:22 2024 +0200 | | Add prime path coverage to gcc/gcov | | This patch adds prime path coverage to gcc/gcov. First, a quick | introduction to path coverage, before I explain a bit on the pieces of | the patch. | ... 404 lines of the commit log omitted.
Produces 5 regressions: | | regressions.sum: | Running g++:g++.dg/gcov/gcov.exp ... | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++17 gcov failed: spawn failed | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++26 gcov failed: spawn failed | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++98 gcov failed: spawn failed | Running gcc:gcc.misc-tests/gcov.exp ... | ... and 2 more
I've given a quick look at the logs, and gcov-22.C says: spawn -ignore SIGHUP /home/tcwg-buildslave/workspace/tcwg_gnu_0/abe/builds/destdir/x86_64-pc-linux-gnu/bin/gcov --prime-paths gcov-22.C FAIL: g++.dg/gcov/gcov-22.C -std=gnu++98 gcov failed: spawn failed
I believe that rather than "dg-compile", it should use "dg-do run { target native }" like almost all other gcov tests?
For the other errors: FAIL: gcc.misc-tests/gcov-31.c (test for excess errors) FAIL: gcc.misc-tests/gcov-32.c (test for excess errors) the log actually says: /gcov-31.c:12:8: error: unknown type name 'sigjmp_buf'; did you mean 'jmp_buf'? /gcov-31.c: In function 'run_pending_traps': /gcov-31.c:22:5: error: implicit declaration of function '__sigsetjmp' [-Wimplicit-function-declaration]
/gcov-32.c:6:8: error: unknown type name 'sigjmp_buf'; did you mean 'jmp_buf'? /gcov-32.c:21:19: error: passing argument 1 of 'setjmp' makes pointer from integer without a cast [-Wint-conversion]
I haven't looked further, but does this indicate a dependency on glibc? (this target "arm-none-eabi" uses newlib)
Thanks,
Christophe
Used configuration : *CI config* tcwg_gnu_embed_check_gcc arm-eabi -mthumb -march=armv8-m.base -mtune=cortex-m23 -mfloat-abi=soft -mfpu=auto *configure and test flags:* --target arm-eabi --disable-multilib --with-mode=thumb --with-cpu=cortex-m23 --with-float=soft --target_board=-mthumb/-march=armv8-m.base/-mtune=cortex-m23/-mfloat-abi=soft/-mfpu=auto qemu_cpu=cortex-m33
We track this bug report under https://linaro.atlassian.net/browse/GNU-1551. Please let us know if you have a fix.
If you have any questions regarding this report, please ask on linaro-toolchain@lists.linaro.org mailing list.
-----------------8<--------------------------8<--------------------------8<--------------------------
The information below contains the details of the failures, and the ways to reproduce a debug environment:
You can find the failure logs in *.log.1.xz files in
The full lists of regressions and improvements as well as configure and make commands are in
The list of [ignored] baseline and flaky failures are in
Current build : https://ci.linaro.org/job/tcwg_gnu_embed_check_gcc--master-thumb_m23_soft_ea... Reference build : https://ci.linaro.org/job/tcwg_gnu_embed_check_gcc--master-thumb_m23_soft_ea...
Instruction to reproduce the build : https://git-us.linaro.org/toolchain/ci/interesting-commits.git/plain/gcc/sha...
Full commit : https://gcc.gnu.org/git/?p=gcc.git%3Ba=commitdiff%3Bh=8ed2d5d219e999aee42015...
On 3/28/25 14:44, Christophe Lyon wrote:
Hi,
On Fri, 28 Mar 2025 at 14:24, ci_notify@linaro.org wrote:
Dear contributor,
Our automatic CI has detected problems related to your patch(es). Please find some details below.
In arm-eabi cortex-m23 soft, after: | commit gcc-15-8947-g8ed2d5d219e | Author: Jørgen Kvalsvik j@lambda.is | Date: Tue Jun 4 14:13:22 2024 +0200 | | Add prime path coverage to gcc/gcov | | This patch adds prime path coverage to gcc/gcov. First, a quick | introduction to path coverage, before I explain a bit on the pieces of | the patch. | ... 404 lines of the commit log omitted.
Produces 5 regressions: | | regressions.sum: | Running g++:g++.dg/gcov/gcov.exp ... | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++17 gcov failed: spawn failed | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++26 gcov failed: spawn failed | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++98 gcov failed: spawn failed | Running gcc:gcc.misc-tests/gcov.exp ... | ... and 2 more
I've given a quick look at the logs, and gcov-22.C says: spawn -ignore SIGHUP /home/tcwg-buildslave/workspace/tcwg_gnu_0/abe/builds/destdir/x86_64-pc-linux-gnu/bin/gcov --prime-paths gcov-22.C FAIL: g++.dg/gcov/gcov-22.C -std=gnu++98 gcov failed: spawn failed
I believe that rather than "dg-compile", it should use "dg-do run { target native }" like almost all other gcov tests?
Not necessarily -- the functions in this file is a distillation of the odd CFGs and functions that caused gnarly and unexpected errors, usually ICEs. There is no main() and some of the functions are infinite loops. We get enough information by simply compiling.
For the other errors: FAIL: gcc.misc-tests/gcov-31.c (test for excess errors) FAIL: gcc.misc-tests/gcov-32.c (test for excess errors) the log actually says: /gcov-31.c:12:8: error: unknown type name 'sigjmp_buf'; did you mean 'jmp_buf'? /gcov-31.c: In function 'run_pending_traps': /gcov-31.c:22:5: error: implicit declaration of function '__sigsetjmp' [-Wimplicit-function-declaration]
/gcov-32.c:6:8: error: unknown type name 'sigjmp_buf'; did you mean 'jmp_buf'? /gcov-32.c:21:19: error: passing argument 1 of 'setjmp' makes pointer from integer without a cast [-Wint-conversion]
I haven't looked further, but does this indicate a dependency on glibc? (this target "arm-none-eabi" uses newlib)
Looks like it. This is only partially intentional -- the tests are cleaned examples from real programs (bash, check) which use sigjmp_buf. The bash case (gcov-31.c) uses __sigsetjmp and surely has a glibc dependency, but gcov-32.c could maybe be tuned to use jmp_buf. I don't know if that will preserve the failure mode however, and the root of the problem was fixed when the test was added.
Looks like Dimitar Dimitrov (CC) already addressed the failure.
commit 1c5c57092cf23ac6eae139627d2406f67fe3303b Author: Dimitar Dimitrov dimitar@dinux.eu Date: Thu Mar 27 20:31:17 2025 +0200
testsuite: Require effective target sigsetjmp for gcov-31/32
Thanks,
Christophe
Used configuration : *CI config* tcwg_gnu_embed_check_gcc arm-eabi -mthumb -march=armv8-m.base -mtune=cortex-m23 -mfloat-abi=soft -mfpu=auto *configure and test flags:* --target arm-eabi --disable-multilib --with-mode=thumb --with-cpu=cortex-m23 --with-float=soft --target_board=-mthumb/-march=armv8-m.base/-mtune=cortex-m23/-mfloat-abi=soft/-mfpu=auto qemu_cpu=cortex-m33
We track this bug report under https://linaro.atlassian.net/browse/GNU-1551. Please let us know if you have a fix.
If you have any questions regarding this report, please ask on linaro-toolchain@lists.linaro.org mailing list.
-----------------8<--------------------------8<--------------------------8<--------------------------
The information below contains the details of the failures, and the ways to reproduce a debug environment:
You can find the failure logs in *.log.1.xz files in
The full lists of regressions and improvements as well as configure and make commands are in
The list of [ignored] baseline and flaky failures are in
Current build : https://ci.linaro.org/job/tcwg_gnu_embed_check_gcc--master-thumb_m23_soft_ea... Reference build : https://ci.linaro.org/job/tcwg_gnu_embed_check_gcc--master-thumb_m23_soft_ea...
Instruction to reproduce the build : https://git-us.linaro.org/toolchain/ci/interesting-commits.git/plain/gcc/sha...
Full commit : https://gcc.gnu.org/git/?p=gcc.git%3Ba=commitdiff%3Bh=8ed2d5d219e999aee42015...
On Fri, 28 Mar 2025 at 15:15, Jørgen Kvalsvik j@lambda.is wrote:
On 3/28/25 14:44, Christophe Lyon wrote:
Hi,
On Fri, 28 Mar 2025 at 14:24, ci_notify@linaro.org wrote:
Dear contributor,
Our automatic CI has detected problems related to your patch(es). Please find some details below.
In arm-eabi cortex-m23 soft, after: | commit gcc-15-8947-g8ed2d5d219e | Author: Jørgen Kvalsvik j@lambda.is | Date: Tue Jun 4 14:13:22 2024 +0200 | | Add prime path coverage to gcc/gcov | | This patch adds prime path coverage to gcc/gcov. First, a quick | introduction to path coverage, before I explain a bit on the pieces of | the patch. | ... 404 lines of the commit log omitted.
Produces 5 regressions: | | regressions.sum: | Running g++:g++.dg/gcov/gcov.exp ... | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++17 gcov failed: spawn failed | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++26 gcov failed: spawn failed | FAIL: g++.dg/gcov/gcov-22.C -std=gnu++98 gcov failed: spawn failed | Running gcc:gcc.misc-tests/gcov.exp ... | ... and 2 more
I've given a quick look at the logs, and gcov-22.C says: spawn -ignore SIGHUP /home/tcwg-buildslave/workspace/tcwg_gnu_0/abe/builds/destdir/x86_64-pc-linux-gnu/bin/gcov --prime-paths gcov-22.C FAIL: g++.dg/gcov/gcov-22.C -std=gnu++98 gcov failed: spawn failed
I believe that rather than "dg-compile", it should use "dg-do run { target native }" like almost all other gcov tests?
Not necessarily -- the functions in this file is a distillation of the odd CFGs and functions that caused gnarly and unexpected errors, usually ICEs. There is no main() and some of the functions are infinite loops. We get enough information by simply compiling.
OK I've understood the issue. Our build system defines GXX_UNDER_TEST (pointing to the just-installed compiler), but we still test "in build tree". So gcc-transform-out-of-tree will do nothing and we set GCOV to an invalid path ( /home/tcwg-buildslave/workspace/tcwg_gnu_0/abe/builds/destdir/x86_64-pc-linux-gnu/bin/gcov above) because the actual binary is called $target-gcov, just like the compiler is called $target-gcc.
I'll take a look at writing a patch to support a new variable (GCOV_UNDER_TEST).
For the other errors: FAIL: gcc.misc-tests/gcov-31.c (test for excess errors) FAIL: gcc.misc-tests/gcov-32.c (test for excess errors) the log actually says: /gcov-31.c:12:8: error: unknown type name 'sigjmp_buf'; did you mean 'jmp_buf'? /gcov-31.c: In function 'run_pending_traps': /gcov-31.c:22:5: error: implicit declaration of function '__sigsetjmp' [-Wimplicit-function-declaration]
/gcov-32.c:6:8: error: unknown type name 'sigjmp_buf'; did you mean 'jmp_buf'? /gcov-32.c:21:19: error: passing argument 1 of 'setjmp' makes pointer from integer without a cast [-Wint-conversion]
I haven't looked further, but does this indicate a dependency on glibc? (this target "arm-none-eabi" uses newlib)
Looks like it. This is only partially intentional -- the tests are cleaned examples from real programs (bash, check) which use sigjmp_buf. The bash case (gcov-31.c) uses __sigsetjmp and surely has a glibc dependency, but gcov-32.c could maybe be tuned to use jmp_buf. I don't know if that will preserve the failure mode however, and the root of the problem was fixed when the test was added.
Looks like Dimitar Dimitrov (CC) already addressed the failure.
commit 1c5c57092cf23ac6eae139627d2406f67fe3303b Author: Dimitar Dimitrov dimitar@dinux.eu Date: Thu Mar 27 20:31:17 2025 +0200
testsuite: Require effective target sigsetjmp for gcov-31/32
Indeed, thanks for the heads-up!
Thanks,
Christophe
Thanks,
Christophe
Used configuration : *CI config* tcwg_gnu_embed_check_gcc arm-eabi -mthumb -march=armv8-m.base -mtune=cortex-m23 -mfloat-abi=soft -mfpu=auto *configure and test flags:* --target arm-eabi --disable-multilib --with-mode=thumb --with-cpu=cortex-m23 --with-float=soft --target_board=-mthumb/-march=armv8-m.base/-mtune=cortex-m23/-mfloat-abi=soft/-mfpu=auto qemu_cpu=cortex-m33
We track this bug report under https://linaro.atlassian.net/browse/GNU-1551. Please let us know if you have a fix.
If you have any questions regarding this report, please ask on linaro-toolchain@lists.linaro.org mailing list.
-----------------8<--------------------------8<--------------------------8<--------------------------
The information below contains the details of the failures, and the ways to reproduce a debug environment:
You can find the failure logs in *.log.1.xz files in
The full lists of regressions and improvements as well as configure and make commands are in
The list of [ignored] baseline and flaky failures are in
Current build : https://ci.linaro.org/job/tcwg_gnu_embed_check_gcc--master-thumb_m23_soft_ea... Reference build : https://ci.linaro.org/job/tcwg_gnu_embed_check_gcc--master-thumb_m23_soft_ea...
Instruction to reproduce the build : https://git-us.linaro.org/toolchain/ci/interesting-commits.git/plain/gcc/sha...
Full commit : https://gcc.gnu.org/git/?p=gcc.git%3Ba=commitdiff%3Bh=8ed2d5d219e999aee42015...
linaro-toolchain@lists.linaro.org