[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Tinycc-devel] core dump because stack overwritten
From: |
Herman ten Brugge |
Subject: |
[Tinycc-devel] core dump because stack overwritten |
Date: |
Tue, 22 Oct 2019 22:14:39 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
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] core dump because stack overwritten,
Herman ten Brugge <=
- Re: [Tinycc-devel] core dump because stack overwritten, Christian Jullien, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Herman ten Brugge, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Christian Jullien, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Herman ten Brugge, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Christian Jullien, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Herman ten Brugge, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Christian Jullien, 2019/10/23
- Re: [Tinycc-devel] core dump because stack overwritten, Michael Matz, 2019/10/24