I'm not an official maintainer but as long is fixes a bug (with associated test) and does break anything else, I would say yes (to push on mod). If you do, please add the other test given by Pursuer.
C. -----Original Message----- From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] On Behalf Of Herman ten Brugge via Tinycc-devel Sent: Wednesday, October 23, 2019 17:26 To: jull...@eligis.com; tinycc-devel@nongnu.org Cc: Herman ten Brugge Subject: Re: [Tinycc-devel] core dump because stack overwritten I looked at the website and see that -DTCC_TARGET_PE is used to compile gcc on windows. This uses 'tccpe.c' and not 'x86_64-gen.c x86_64-link.c i386-asm.c x86_64-asm.h'. I compiled the code with the x86_64-w64-mingw32-gcc compile on linux and see different code with tccpe.c. So I still believe my patch is correct. The other targets never touch this code. So only x86_64 is using this. Can I apply this patch? Or is there some one else who can confirm that this is the correct or not. Herman On 2019-10-23 15:53, Christian Jullien wrote: > Yes, it's fixed now. Thanks. > > There are different ways to build tcc for Windows. > I personally wrote and maintain https://sourceforge.net/projects/wintcc/ > > Which makes a reproducible native build on Windows with both 32/64 backend. > > It requires Cygwin only for first step bootstrap with gcc. > > C. > > -----Original Message----- > From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] > On Behalf Of Herman ten Brugge via Tinycc-devel > Sent: Wednesday, October 23, 2019 13:20 > To: jull...@eligis.com; tinycc-devel@nongnu.org > Cc: Herman ten Brugge > Subject: Re: [Tinycc-devel] core dump because stack overwritten > > I updated the Makefile. I hope it now works on all targets. > How do I test the Windows port. I do not have any compilers installed. I > use linux 99.999% of the time. > > Herman > > On 2019-10-23 11:50, Christian Jullien wrote: >> Again I've no idea of the best patch to apply, but two remarks: >> >> * First, 106_pthread.c fails on Windows because of: >> Test: 106_pthread... >> --- 106_pthread.expect 2019-10-22 20:47:55.982574300 +0200 >> +++ 106_pthread.output 2019-10-23 11:40:46.742218000 +0200 >> @@ -1 +1,2 @@ >> -ok >> +In file included from 106_pthread.c:2: >> +106_pthread.c:2: error: include file 'pthread.h' not found >> You should run this test only on Linux systems >> >> * Your new patch test TCC_TARGET_X86_64, how do you explain that with or >> without this patch your test case looks to work on Windows x64 and produces >> "42 42"? >> >> >> -----Original Message----- >> From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] >> On Behalf Of Herman ten Brugge via Tinycc-devel >> Sent: Wednesday, October 23, 2019 11:23 >> To: jull...@eligis.com; tinycc-devel@nongnu.org >> Cc: Herman ten Brugge >> Subject: Re: [Tinycc-devel] core dump because stack overwritten >> >> How about this patch: >> >> -------------------------- >> --- a/tccgen.c 2019-10-22 19:52:48.761977245 +0200 >> +++ b/tccgen.c 2019-10-23 11:18:14.871290060 +0200 >> @@ -2627,7 +2627,9 @@ static void gen_cvt_ftoi1(int t) >> gfunc_call(1); >> vpushi(0); >> vtop->r = REG_IRET; >> +#if !defined(TCC_TARGET_X86_64) /* REG_LRET only for VT_QLONG */ >> vtop->r2 = REG_LRET; >> +#endif >> } else { >> gen_cvt_ftoi(t); >> } >> -------------------------- >> According to https://en.wikipedia.org/wiki/X86_calling_conventions the >> x86_64 only uses rax for 64 bits returns. >> >> Herman >> >> >> On 2019-10-23 07:20, Christian Jullien wrote: >>> I confirm your test case fails on Linux x64. It looks your patch pay >>> attention to PTR_SIZE == 4 (i.e. it now enters if only with 32bit >>> processor). >>> However, w.o. the patch I can't reproduce the core dump on aarch64 Linux >>> nor with Windows x64 which are also a 64bit processors. They both correctly >>> display "42 42" >>> No core dumps does not mean it works, memory may be corrupted somewhere >>> else. >>> >>> Either your patch is only required for Linux x64 or there is something to >>> investigate more carefully. >>> >>> I can only test on different platforms but I'm unable to give you further >>> advices. >>> >>> M2c >>> >>> C. >>> >>> -----Original Message----- >>> From: Tinycc-devel >>> [mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] On Behalf Of >>> Herman ten Brugge via Tinycc-devel >>> Sent: Tuesday, October 22, 2019 22:15 >>> To: tinycc-devel@nongnu.org >>> Cc: Herman ten Brugge >>> Subject: [Tinycc-devel] core dump because stack overwritten >>> >>> I have a small testcase: >>> >>> -------------- >>> #include <stdio.h> >>> #include <stdlib.h> >>> #include <inttypes.h> >>> >>> int >>> main(void) >>> { >>> struct tst_struct { uint64_t cnt; } *tst = >>> (struct tst_struct *) malloc (sizeof (struct tst_struct)); >>> >>> tst->cnt = 42; >>> printf ("%" PRIu64 " %" PRIu64 "\n", tst->cnt, (uint64_t) (tst->cnt / >>> 1.0)); >>> return 0; >>> } >>> ---------------- >>> when I compile this with tcc and run it I get a core dump. The problem >>> is that the stack is overwritten. >>> I have a fix. >>> >>> ------------------------ >>> --- a/tccgen.c 2019-10-22 19:52:48.761977245 +0200 >>> +++ b/tccgen.c 2019-10-22 22:08:08.465825842 +0200 >>> @@ -1203,7 +1203,7 @@ ST_FUNC void save_reg_upstack(int r, int >>> } >>> #endif >>> /* special long long case */ >>> - if ((p->r2 & VT_VALMASK) < VT_CONST) { >>> + if (PTR_SIZE == 4 && (p->r2 & VT_VALMASK) < VT_CONST) { >>> sv.c.i += PTR_SIZE; >>> store(p->r2, &sv); >>> } >>> --------------------- >>> But am not sure if this is the correct fix. The code generator is quite >>> complex. >>> >>> 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 >> > > _______________________________________________ > 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 _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel