|
From: | pursuer2 |
Subject: | Re: [Tinycc-devel] Segfault on arm64 when making a function call with many arguments |
Date: | Sat, 19 Jun 2021 14:27:57 +0800 |
I confirm it fails on arm64 (but works on arm 32bits).
It also fails with complete prototype:
void map_add(int a, int b, int c, int d, int e, int f, int g, int h, int i)
{}
C.
From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=orange.fr@nongnu.org] On Behalf Of Arthur Williams
Sent: Wednesday, June 16, 2021 20:18
To: tinycc-devel@nongnu.org
Subject: [Tinycc-devel] Segfault on arm64 when making a function call with many arguments
Was trying to compile vim with tcc on arm64 but got a segfault. I can simplify it to the following case:
void map_add(){}
void main() {
int A;
int B;
map_add(0, 0, 0, 0, 0, 0, 0, 0, A && B); // segfaults when compiling
}
The bad pointer was generated in arm64-gen.c::gsym_addr and the actual segfault occurred in tcc.h::read16le.
Removing one of the 0s or removing A/B or replacing A && B with a constant avoids the problem. Cannot repro on x86. I'm running musl on Linux and using the latest tcc from mob.
[Prev in Thread] | Current Thread | [Next in Thread] |