Fix all testcases for openbsd except dlltest. Remember dlopen calls and use them to fix openbsd dlsym problem Use crtbeginS.o/crtendS.o for DLL for bsd Do not include -ldl for __NetBSD__ Redirect malloc, realloc, ..., free for bsd Align stack in tests/asm-c-connect-*.c for x86_64 Remove -B in tests/pp/Makefile (not supported on bsd)
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			862 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			862 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include <stdio.h>
 | 
						|
 | 
						|
#if (defined _WIN32 || defined __APPLE__) && (!defined __TINYC__ || defined __leading_underscore)
 | 
						|
# define _ "_"
 | 
						|
#else
 | 
						|
# define _
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef __clang__
 | 
						|
/* clang needs some help tp not throw functions away even at -O0 */
 | 
						|
#define __USED __attribute__((__used__))
 | 
						|
#else
 | 
						|
#define __USED
 | 
						|
#endif
 | 
						|
 | 
						|
int x3(void)
 | 
						|
{
 | 
						|
    printf(" x3");
 | 
						|
    return 3;
 | 
						|
}
 | 
						|
 | 
						|
/* That callx4 is defined globally (as if ".globl callx4")
 | 
						|
   is a TCC extension.  GCC doesn't behave like this.  */
 | 
						|
void callx4(void);
 | 
						|
#if __i386__
 | 
						|
__asm__(_"callx4: call "_"x4; ret;"
 | 
						|
#else
 | 
						|
/* Keep stack aligned */
 | 
						|
__asm__(_"callx4: sub $8,%rsp; call "_"x4; add $8,%rsp; ret;"
 | 
						|
#endif
 | 
						|
#ifndef __TINYC__
 | 
						|
    " .global "_"callx4"
 | 
						|
#endif
 | 
						|
);
 | 
						|
 | 
						|
extern void x5(void);
 | 
						|
 | 
						|
void callx5_again(void);
 | 
						|
void callx5_again(void)
 | 
						|
{
 | 
						|
    x5();
 | 
						|
    asm("call "_"x6");
 | 
						|
}
 | 
						|
 | 
						|
static void __USED x6()
 | 
						|
{
 | 
						|
    printf(" x6-2");
 | 
						|
}
 |