On Tuesday 08 September 2026 13:45:01 LIU Hao wrote:
> 在 2026-9-7 07:40, Pali Rohár 写道:
> > Anyway, here is simple fixup change disables that test for gcc builds:
> >
> > diff --git a/mingw-w64-crt/testcases/t_noatexit_dll.c
> > b/mingw-w64-crt/testcases/t_noatexit_dll.c
> > index 4f8a86328933..e62ad5b1dcd5 100644
> > --- a/mingw-w64-crt/testcases/t_noatexit_dll.c
> > +++ b/mingw-w64-crt/testcases/t_noatexit_dll.c
> > @@ -13,6 +13,13 @@ int main(void)
> > {
> > mingw_test_init();
> >
> > + /* gcc's crtbegin.o (libgcc/config/i386/cygming-crtbegin.c) injects
> > atexit call into every output binary.
> > + * So skip this test for all gcc builds (and exclude clang builds for
> > which this test is passing). */
> > +#if defined(__GNUC__) && !defined(__clang__)
> > + printf("test skipped for gcc builds\n");
> > + return 77;
> > +#endif
> > +
> > HMODULE lib = LoadLibraryA("libnoatexit.dll");
> > if (!lib) {
> > DWORD error = GetLastError();
>
> This change looks fine and passes the CI (at least for now), so I have
> pushed these patches with the change squashed into the test.
>
> I am not sure whether the issue is specific to `DWARF2_UNWIND_INFO`; I tried
> `#if defined(__GNUC__) && !defined(__clang__) && !defined(__SEH__)` but it
> didn't pass:
> https://github.com/lhmouse/mingw-w64/actions/runs/34134697664/job/101837213788#step:6:3668
The atexit callback function contains only #if DWARF2_UNWIND_INFO code.
But the atexit call is injected for the #if DEFAULT_USE_CXA_ATEXIT case,
it is injected also for non-DWARF code. So simple switching from DWARF
to SEH is not sufficient, and so the test is expected to fail.
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public