public inbox for gcc-regression@sourceware.org
help / color / mirror / Atom feed
* Re: [TCWG CI] Regression caused by gcc: [PATCH] stddef.h: add support for musl typedef macro guards
[not found] <286095228.5701.1639809711150@jenkins.jenkins>
@ 2021-12-21 14:37 ` Maxim Kuvyrkov
0 siblings, 0 replies; only message in thread
From: Maxim Kuvyrkov @ 2021-12-21 14:37 UTC (permalink / raw)
To: Sören Tempel; +Cc: gcc-regression
Hi Sören,
This was sent out due to a bug in our CI. Sorry for the noise.
Regards,
--
Maxim Kuvyrkov
https://www.linaro.org
> On 18 Dec 2021, at 09:41, ci_notify@linaro.org wrote:
>
> [TCWG CI] Regression caused by gcc: [PATCH] stddef.h: add support for musl typedef macro guards:
> commit 85a438fc78dd12249ca854a3e5c577fefeb1a5cd
> Author: Sören Tempel <soeren@soeren-tempel.net>
>
> [PATCH] stddef.h: add support for musl typedef macro guards
>
> Results regressed to
> # reset_artifacts:
> -10
> # build_abe binutils:
> -9
> # build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer --set gcc_override_configure=--disable-multilib --set gcc_override_configure=--with-cpu=cortex-m4 --set gcc_override_configure=--with-mode=thumb --set gcc_override_configure=--with-float=hard:
> -8
> # build_abe newlib:
> -6
> # build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer --set gcc_override_configure=--disable-multilib --set gcc_override_configure=--with-cpu=cortex-m4 --set gcc_override_configure=--with-mode=thumb --set gcc_override_configure=--with-float=hard:
> -5
> # benchmark -- -O2_LTO_mthumb artifacts/build-85a438fc78dd12249ca854a3e5c577fefeb1a5cd/results_id:
> 1
>
> from
> # reset_artifacts:
> -10
> # build_abe binutils:
> -9
> # build_abe stage1 -- --set gcc_override_configure=--disable-libsanitizer --set gcc_override_configure=--disable-multilib --set gcc_override_configure=--with-cpu=cortex-m4 --set gcc_override_configure=--with-mode=thumb --set gcc_override_configure=--with-float=hard:
> -8
> # build_abe newlib:
> -6
> # build_abe stage2 -- --set gcc_override_configure=--disable-libsanitizer --set gcc_override_configure=--disable-multilib --set gcc_override_configure=--with-cpu=cortex-m4 --set gcc_override_configure=--with-mode=thumb --set gcc_override_configure=--with-float=hard:
> -5
> # benchmark -- -O2_LTO_mthumb artifacts/build-baseline/results_id:
> 1
>
> THIS IS THE END OF INTERESTING STUFF. BELOW ARE LINKS TO BUILDS, REPRODUCTION INSTRUCTIONS, AND THE RAW COMMIT.
>
> This commit has regressed these CI configurations:
> - tcwg_bmk_gnu_eabi_stm32/gnu_eabi-master-arm_eabi-coremark-O2_LTO
>
> First_bad build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/build-85a438fc78dd12249ca854a3e5c577fefeb1a5cd/
> Last_good build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/build-a888259a71fbbb7f14923751251e056829d76342/
> Baseline build: https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/build-baseline/
> Even more details: https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/
>
> Reproduce builds:
> <cut>
> mkdir investigate-gcc-85a438fc78dd12249ca854a3e5c577fefeb1a5cd
> cd investigate-gcc-85a438fc78dd12249ca854a3e5c577fefeb1a5cd
>
> # Fetch scripts
> git clone https://git.linaro.org/toolchain/jenkins-scripts
>
> # Fetch manifests and test.sh script
> mkdir -p artifacts/manifests
> curl -o artifacts/manifests/build-baseline.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/manifests/build-baseline.sh --fail
> curl -o artifacts/manifests/build-parameters.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/manifests/build-parameters.sh --fail
> curl -o artifacts/test.sh https://ci.linaro.org/job/tcwg_bmk_ci_gnu_eabi-bisect-tcwg_bmk_stm32-gnu_eabi-master-arm_eabi-coremark-O2_LTO/12/artifact/artifacts/test.sh --fail
> chmod +x artifacts/test.sh
>
> # Reproduce the baseline build (build all pre-requisites)
> ./jenkins-scripts/tcwg_bmk-build.sh @@ artifacts/manifests/build-baseline.sh
>
> # Save baseline build state (which is then restored in artifacts/test.sh)
> mkdir -p ./bisect
> rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ --exclude /gcc/ ./ ./bisect/baseline/
>
> cd gcc
>
> # Reproduce first_bad build
> git checkout --detach 85a438fc78dd12249ca854a3e5c577fefeb1a5cd
> ../artifacts/test.sh
>
> # Reproduce last_good build
> git checkout --detach a888259a71fbbb7f14923751251e056829d76342
> ../artifacts/test.sh
>
> cd ..
> </cut>
>
> Full commit (up to 1000 lines):
> <cut>
> commit 85a438fc78dd12249ca854a3e5c577fefeb1a5cd
> Author: Sören Tempel <soeren@soeren-tempel.net>
> Date: Tue Dec 14 18:07:47 2021 -0500
>
> [PATCH] stddef.h: add support for musl typedef macro guards
>
> The stddef.h header checks/sets various hardcoded toolchain/os specific
> macro guards to prevent redefining types such as ptrdiff_t, wchar_t, or
> size_t. However, without this patch, the file does not check/set the
> typedef macro guards for musl libc. This causes types such as size_t to
> be defined twice for files which include both musl's stdlib.h as well as
> GCC's ginclude/stddef.h. This is, for example, the case for
> libgo/sysinfo.c. If libgo/sysinfo.c has multiple typedefs for size_t
> this confuses -fdump-go-spec and causes size_t not to be included in the
> generated type definitions thereby causing a gcc-go compilation failure
> on Alpine Linux Edge (which uses musl libc) with the following error:
>
> sysinfo.go:7765:13: error: use of undefined type '_size_t'
> 7765 | type Size_t _size_t
> | ^
> libcall_posix.go:49:35: error: non-integer len argument in make
> 49 | b := make([]byte, len)
> |
>
> This commit fixes this issue by ensuring that ptrdiff_t, wchar_t, and size_t
> are only defined once in the pre-processed libgo/sysinfo.c file by enhancing
> gcc/ginclude/stddef.h with musl-specific typedef macro guards.
>
> gcc/ChangeLog:
>
> * ginclude/stddef.h (__DEFINED_ptrdiff_t): Add support for musl
> libc typedef macro guard.
> (__DEFINED_size_t): Ditto.
> (__DEFINED_wchar_t): Ditto.
> ---
> gcc/ginclude/stddef.h | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
> index 66619fe43b1..50d710a5ab9 100644
> --- a/gcc/ginclude/stddef.h
> +++ b/gcc/ginclude/stddef.h
> @@ -128,6 +128,7 @@ _TYPE_wchar_t;
> #ifndef ___int_ptrdiff_t_h
> #ifndef _GCC_PTRDIFF_T
> #ifndef _PTRDIFF_T_DECLARED /* DragonFly */
> +#ifndef __DEFINED_ptrdiff_t /* musl libc */
> #define _PTRDIFF_T
> #define _T_PTRDIFF_
> #define _T_PTRDIFF
> @@ -137,10 +138,12 @@ _TYPE_wchar_t;
> #define ___int_ptrdiff_t_h
> #define _GCC_PTRDIFF_T
> #define _PTRDIFF_T_DECLARED
> +#define __DEFINED_ptrdiff_t
> #ifndef __PTRDIFF_TYPE__
> #define __PTRDIFF_TYPE__ long int
> #endif
> typedef __PTRDIFF_TYPE__ ptrdiff_t;
> +#endif /* __DEFINED_ptrdiff_t */
> #endif /* _PTRDIFF_T_DECLARED */
> #endif /* _GCC_PTRDIFF_T */
> #endif /* ___int_ptrdiff_t_h */
> @@ -174,6 +177,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
> #ifndef _SIZE_T_DEFINED
> #ifndef _BSD_SIZE_T_DEFINED_ /* Darwin */
> #ifndef _SIZE_T_DECLARED /* FreeBSD 5 */
> +#ifndef __DEFINED_size_t /* musl libc */
> #ifndef ___int_size_t_h
> #ifndef _GCC_SIZE_T
> #ifndef _SIZET_
> @@ -191,6 +195,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
> #define _SIZE_T_DEFINED
> #define _BSD_SIZE_T_DEFINED_ /* Darwin */
> #define _SIZE_T_DECLARED /* FreeBSD 5 */
> +#define __DEFINED_size_t /* musl libc */
> #define ___int_size_t_h
> #define _GCC_SIZE_T
> #define _SIZET_
> @@ -215,6 +220,7 @@ typedef long ssize_t;
> #endif /* _SIZET_ */
> #endif /* _GCC_SIZE_T */
> #endif /* ___int_size_t_h */
> +#endif /* __DEFINED_size_t */
> #endif /* _SIZE_T_DECLARED */
> #endif /* _BSD_SIZE_T_DEFINED_ */
> #endif /* _SIZE_T_DEFINED */
> @@ -251,6 +257,7 @@ typedef long ssize_t;
> #ifndef _BSD_WCHAR_T_DEFINED_ /* Darwin */
> #ifndef _BSD_RUNE_T_DEFINED_ /* Darwin */
> #ifndef _WCHAR_T_DECLARED /* FreeBSD 5 */
> +#ifndef __DEFINED_wchar_t /* musl libc */
> #ifndef _WCHAR_T_DEFINED_
> #ifndef _WCHAR_T_DEFINED
> #ifndef _WCHAR_T_H
> @@ -272,6 +279,7 @@ typedef long ssize_t;
> #define __INT_WCHAR_T_H
> #define _GCC_WCHAR_T
> #define _WCHAR_T_DECLARED
> +#define __DEFINED_wchar_t
>
> /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
> instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
> @@ -326,6 +334,7 @@ typedef __WCHAR_TYPE__ wchar_t;
> #endif
> #endif
> #endif
> +#endif /* __DEFINED_wchar_t */
> #endif /* _WCHAR_T_DECLARED */
> #endif /* _BSD_RUNE_T_DEFINED_ */
> #endif
> </cut>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-12-21 14:37 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <286095228.5701.1639809711150@jenkins.jenkins>
2021-12-21 14:37 ` [TCWG CI] Regression caused by gcc: [PATCH] stddef.h: add support for musl typedef macro guards Maxim Kuvyrkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).