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:[email protected]] On 
Behalf Of Arthur Williams
Sent: Wednesday, June 16, 2021 20:18
To: [email protected]
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.

 

_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to