Huh?

My email on 2/24 was definitely not intended to imply anything
about "old windows versions".  I was simply trying to make a suggestion
about how to locally configure tcc to avoid a reported compiler error.

In any case grischka responded 9 or so hours later to say
that the commit that caused that compiler error on windows
had been reverted.

- Eric

On Tue, Feb 27, 2024 at 10:51 PM Herman ten Brugge via Tinycc-devel <
tinycc-devel@nongnu.org> wrote:

> On 2/27/24 19:51, grischka wrote:
> > On 26.02.2024 19:55, Herman ten Brugge via Tinycc-devel wrote:
> >> I commited a change to lib/runmain.c to silence a warning from gcc.
> >> After that testcase 112 did not work any more on 64 bits windows
> >> (tested with wine).
> >>
> >> I can fix this with fix1 (see below) or fix2 (see below).
> >> I do not know enough about windows to make the correct fix.
> >> Both fix1/fix2 look not correct to me.
> >
> > Hi Herman,
> >
> > well, first we'd need to know what problem we want to fix.  Maybe
> > the problem is not in tinycc at all.
> >
> > Also, the obvious to avoid that gcc warning IMO would be using:
> >
> >     __attribute__((noreturn)) void __rt_exit(rt_frame *, int);
> >
> > Also, while at it:
> >
> >     # ifdef _WIN32
> >     #   define CONFIG_RUNMEM_RO 0
> >     # else
> >     #   define CONFIG_RUNMEM_RO 1
> >     # endif
> >
> > would suggest a special case needed for windows.  However that is not
> > the case.  Whereas according to your comment, the exception is APPLE
> > actually.  So we'd better say #ifdef __APPLE__ or just use '1' for all
> > and leave a comment that it's needed for APPLE.
> >
> > Although tests on github actions did not show such problem, at least
> > not on macos-11.  Note that CONFIG_RUNMEM_RO was first introduced with
> > .rodata sections in commit 72f1dea5372ed551d203311e4f2ab769a54de9bd
> > from 2021-02,  and it seems that tcc already did work on MacOS even
> > before that commit.  If those previous commits still work then the
> > problem now might be elsewhere.
> >
> > Anyway, we cannot disable the runtime-function-unwind table because
> > without it longjmp() would crash on (a real) _WIN64.
> >
> > Also obviously, if __rt_exit doesn't return, then any code after it
> > cannot have any effect:
> >
> >>       __rt_exit(&f, code);
> >> +    abort (); // avoid noreturn warning
> >
> > I'd assume something weird going on with set/longjmp of WINE and/or
> > the mingw-gcc that you use.  In any case it is important that
> > setjmp/longjmp/jmp_buf implementations do match each other.
> >
> > Which is why I made it so that tcc_setjmp records the longjmp
> > function pointer too because otherwise it could end up using the
> > longjmp from libtcc.dll/so and the setjmp from the application
> > that links to it, with possibly different concepts each. (Not
> > sure if/where it really can happen though).
> >
> There is probably a bug in the wine stack unwinding code.
> The __attribute__((noreturn)) looks like the correct fix. I will apply it.
>
> I made the change to CONFIG_RUNMEM_RO because it was set to 1
> before and that worked on all targets. I saw a mail from Eric Raible
> on 25 Feb 2024 that it should be set to 0 for old window versions.
> This is why I made the change to only effect windows.
> On most targets setting it to 0 or 1 did work. (Not tested on all)
>
> I use an apple machine from the gcc compile farm.
> Darwin cfarm104.cfarm.net 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug
> 22 20:20:05 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T8101 arm64
> I did not check why it failed but with CONFIG_RUNMEM_RO=0 it reported:
> mprotect failed (did you mean to configure --with-selinux?)
> Using --with-selinux on apple works but looked strange.
>
> I also noticed that maybe --with-selinux is not needed any more
> with the recent changes. I removed it on all my test targets.
>
>      Herman
>
>
> _______________________________________________
> Tinycc-devel mailing list
> Tinycc-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/tinycc-devel
>
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to