Sujet : Re: tcc - first impression. Was: Baby X is bor nagain
De : ben (at) *nospam* bsb.me.uk (Ben Bacarisse)
Groupes : comp.lang.cDate : 02. Jul 2024, 16:32:23
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <875xtnlshk.fsf@bsb.me.uk>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
User-Agent : Gnus/5.13 (Gnus v5.13)
Michael S <
already5chosen@yahoo.com> writes:
On Mon, 1 Jul 2024 20:09:24 +0300
Michael S <already5chosen@yahoo.com> wrote:
>
As far as I am concerned, the most intriguing feature of tcc is "Memory
and Bound checks". Unfortunately, I was not able to make it work. It
keeps telling me "segmentation error" at first attempt to dereference
argv. Is this feature Linux-only or 32-bit only or some other type
of "only" ?
The documentation says it should work on x86_64 in Windows.
Can you post the code so we can compare. With this little program
#include <stdio.h>
void f(int *a, int n)
{
printf("a[%d] == %d\n", n, a[n]);
}
int main(int argc, char **argv)
{
for (int i = 0; i <= argc; i++)
if (argv[i])
printf("argv[%d] == %s\n", i, argv[i]);
else printf("argv[%d] is a null pointer\n", i);
int a[3];
f(a, 3);
}
I get this output:
$ ./a.out 1
argv[0] == ./a.out
argv[1] == 1
argv[2] is a null pointer
004021b9 : at ???: BCHECK: 0x7ffca6719404 is outside of the region
t.c:5: by f
t.c:15: by main
t.c:5: at f: RUNTIME ERROR: invalid memory access
t.c:15: by main
-- Ben.