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:
parent
5ba9d28488
commit
61d934fd7b
@ -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
51
test/misc/bug1265.c
Normal 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; }
|
Loading…
Reference in New Issue
Block a user