add clang
This commit is contained in:
parent
4715742aa8
commit
9a4b261179
890 changed files with 229323 additions and 20 deletions
165
05/tcc-final/tests/tests2/112_backtrace.c
Normal file
165
05/tcc-final/tests/tests2/112_backtrace.c
Normal file
|
@ -0,0 +1,165 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/* ------------------------------------------------------- */
|
||||
#if defined test_backtrace_1
|
||||
|
||||
void f3()
|
||||
{
|
||||
printf("* f3()\n"), fflush(stdout);
|
||||
*(void**)0 = 0;
|
||||
}
|
||||
void f2()
|
||||
{
|
||||
printf("* f2()\n"), fflush(stdout);
|
||||
f3();
|
||||
}
|
||||
void f1()
|
||||
{
|
||||
printf("* f1()\n"), fflush(stdout);
|
||||
f2();
|
||||
}
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
printf("* main\n"), fflush(stdout);
|
||||
f1();
|
||||
printf("* exit main\n"), fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------- */
|
||||
#elif defined test_bcheck_1
|
||||
|
||||
struct s { int a,b,c,d,e; };
|
||||
struct s s[3];
|
||||
struct s *ps = s;
|
||||
void f1()
|
||||
{
|
||||
printf("* f1()\n"), fflush(stdout);
|
||||
ps[3] = ps[2];
|
||||
}
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
printf("* main\n"), fflush(stdout);
|
||||
f1();
|
||||
printf("* exit main\n"), fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------- */
|
||||
#elif defined test_tcc_backtrace_2
|
||||
|
||||
/* test custom backtrace and 'exit()' redirection */
|
||||
int tcc_backtrace(const char *fmt, ...);
|
||||
void exit(int);
|
||||
|
||||
void f2()
|
||||
{
|
||||
printf("* f2()\n");
|
||||
printf("* exit f2\n"), fflush(stdout);
|
||||
exit(34);
|
||||
}
|
||||
void f1()
|
||||
{
|
||||
printf("* f1()\n"), fflush(stdout);
|
||||
tcc_backtrace("Hello from %s!", "f1");
|
||||
f2();
|
||||
}
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
printf("* main\n"), fflush(stdout);
|
||||
f1();
|
||||
printf("* exit main\n"), fflush(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------- */
|
||||
#elif defined test_tcc_backtrace_3
|
||||
|
||||
/* this test should be run despite of the exit(34) above */
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
printf("* main\n"), fflush(stdout);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------- */
|
||||
#else
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
char *strdup();
|
||||
int main()
|
||||
{
|
||||
char pad1[10];
|
||||
char a[10];
|
||||
char pad2[10];
|
||||
char b[10];
|
||||
char pad3[10];
|
||||
memset (pad1, 0, sizeof(pad1));
|
||||
memset (pad2, 0, sizeof(pad2));
|
||||
memset (pad3, 0, sizeof(pad3));
|
||||
|
||||
memset (a, 'a', 10);
|
||||
a[3] = 0;
|
||||
a[9] = 0;
|
||||
memset (b, 'b', 10);
|
||||
|
||||
#if defined test_bcheck_100
|
||||
memcpy(&a[1],&b[0],10);
|
||||
#elif defined test_bcheck_101
|
||||
memcpy(&a[0],&b[1],10);
|
||||
#elif defined test_bcheck_102
|
||||
memcpy(&a[0],&a[3],4);
|
||||
#elif defined test_bcheck_103
|
||||
memcpy(&a[3],&a[0],4);
|
||||
#elif defined test_bcheck_104
|
||||
memcmp(&b[1],&b[0],10);
|
||||
#elif defined test_bcheck_105
|
||||
memcmp(&b[0],&b[1],10);
|
||||
#elif defined test_bcheck_106
|
||||
memmove(&b[1],&b[0],10);
|
||||
#elif defined test_bcheck_107
|
||||
memmove(&b[0],&b[1],10);
|
||||
#elif defined test_bcheck_108
|
||||
memset(&b[1],'b',10);
|
||||
#elif defined test_bcheck_109
|
||||
strlen(&b[0]);
|
||||
#elif defined test_bcheck_110
|
||||
strcpy(&a[7], &a[0]);
|
||||
#elif defined test_bcheck_111
|
||||
strcpy(&a[0], &b[7]);
|
||||
#elif defined test_bcheck_112
|
||||
strcpy(&a[0], &a[1]);
|
||||
#elif defined test_bcheck_113
|
||||
strcpy(&a[2], &a[0]);
|
||||
#elif defined test_bcheck_114
|
||||
strncpy(&a[7], &a[0], 10);
|
||||
#elif defined test_bcheck_115
|
||||
strncpy(&a[0], &b[7], 10);
|
||||
#elif defined test_bcheck_116
|
||||
strncpy(&a[0], &a[1], 10);
|
||||
#elif defined test_bcheck_117
|
||||
strncpy(&a[2], &a[0], 10);
|
||||
#elif defined test_bcheck_118
|
||||
strcmp(&b[2], &b[0]);
|
||||
#elif defined test_bcheck_119
|
||||
strcmp(&b[0], &b[2]);
|
||||
#elif defined test_bcheck_120
|
||||
strncmp(&b[5], &b[0], 10);
|
||||
#elif defined test_bcheck_121
|
||||
strncmp(&b[0], &b[5], 10);
|
||||
#elif defined test_bcheck_122
|
||||
strcat(&a[7], &a[0]);
|
||||
#elif defined test_bcheck_123
|
||||
strcat(&a[0], &b[3]);
|
||||
#elif defined test_bcheck_124
|
||||
strcat(&a[0], &a[4]);
|
||||
#elif defined test_bcheck_125
|
||||
strcat(&a[3], &a[0]);
|
||||
#elif defined test_bcheck_126
|
||||
strchr(&b[0], 'a');
|
||||
#elif defined test_bcheck_127
|
||||
free(strdup(&b[0]));
|
||||
#endif
|
||||
}
|
||||
/* ------------------------------------------------------- */
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue