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).