1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-23 04:30:10 +00:00

test related to issue #1265

This commit is contained in:
mrdudz 2020-09-25 16:25:32 +02:00
parent 5ba9d28488
commit 61d934fd7b
2 changed files with 60 additions and 0 deletions

View File

@ -100,6 +100,15 @@ $(WORKDIR)/bug1263.$1.$2.prg: pptest2.c | $(WORKDIR)
$(if $(QUIET),echo misc/bug1263.$1.$2.prg)
$(NOT) $(CC65) -t sim$2 -$1 -o $$@ $$< $(NULLERR)
# this one requires --std=c89, it fails with --std=c99
# it fails currently at runtime
$(WORKDIR)/bug1265.$1.$2.prg: bug1265.c | $(WORKDIR)
$(if $(QUIET),echo misc/bug1265.$1.$2.prg)
$(CC65) --standard c89 -t sim$2 -$1 -o $$(@:.prg=.s) $$< $(NULLERR)
$(CA65) -t sim$2 -o $$(@:.prg=.o) $$(@:.prg=.s) $(NULLERR)
$(LD65) -t sim$2 -o $$@ $$(@:.prg=.o) sim$2.lib $(NULLERR)
$(NOT) $(SIM65) $(SIM65FLAGS) $$@ $(NULLOUT) $(NULLERR)
# should compile, but then hangs in an endless loop
$(WORKDIR)/endless.$1.$2.prg: endless.c | $(WORKDIR)
$(if $(QUIET),echo misc/endless.$1.$2.prg)

51
test/misc/bug1265.c Normal file
View File

@ -0,0 +1,51 @@
/* bug #1265 - misadjusted stack from unprototyped function call */
#include <stdio.h>
#include <string.h>
int failures = 0;
char str1[10];
char str2[10];
int f2 (int x) { return x == 2345 ? 23 : -1; }
int main (void) {
int x, n;
sprintf (str1, "%p\n", &x);
puts(str1);
x = 1234;
n = f1 (x);
sprintf (str2, "%p\n", &x);
puts(str2);
if (strcmp(str1, str2)) {
puts("not equal");
failures++;
}
if (n != 42) {
puts("f1 returns wrong value");
failures++;
}
sprintf (str1, "%p\n", &x);
puts(str1);
x = 2345;
n = f2 (x);
sprintf (str2, "%p\n", &x);
puts(str2);
if (strcmp(str1, str2)) {
puts("not equal");
failures++;
}
if (n != 23) {
puts("f2 returns wrong value");
failures++;
}
return failures;
}
int f1 (int x) { return x == 1234 ? 42 : -1; }