-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmkosdefs.c
76 lines (70 loc) · 1.53 KB
/
mkosdefs.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <stddef.h>
#include <stdint.h>
#include <wchar.h>
#if defined(__WIN32__)
# include <w32dlfcn.h>
#else
# include <dlfcn.h>
#endif
#ifndef RTLD_DEFAULT
# define RTLD_DEFAULT 0
#endif
#define STR(X) #X
#define defint(X) printf("(define %s %ld)\n", #X, (long)X)
#define defstr(X) printf("(define %s \"%s\")\n", #X, STR(X))
#define defsize(X) printf("(define-constant sizeof-%s %ld)\n", #X, (long)sizeof(X))
#define defalign(X) { struct { char _; X x; } x; printf("(define-constant alignof-%s %ld)\n", #X, (long)&x.x - (long)&x); }
#define defsao(X) defsize(X); defalign(X)
typedef long long longlong;
typedef long double longdouble;
typedef void *pointer;
typedef int32_t int32;
typedef int64_t int64;
typedef wchar_t wchar;
int main()
{
# ifdef __APPLE__
defint(__APPLE__);
# endif
# ifdef __ELF__
defint(__ELF__);
# endif
# ifdef __LITTLE_ENDIAN__
defint(__LITTLE_ENDIAN__);
# endif
# ifdef __MACH__
defint(__MACH__);
# endif
# ifdef __WIN32__
defint(__WIN32__);
# endif
# ifdef __USER_LABEL_PREFIX__
defstr(__USER_LABEL_PREFIX__);
# endif
# ifdef __i386__
defint(__i386__);
# endif
# ifdef __i586__
defint(__i586__);
# endif
# ifdef __linux__
defint(__linux__);
# endif
defsao(char);
defsao(short);
defsao(int);
defsao(long);
defsao(longlong);
defsao(int32);
defsao(int64);
defsao(wchar);
defsao(float);
defsao(double);
defsao(longdouble);
defsao(pointer);
defint(RTLD_NOW);
defint(RTLD_GLOBAL);
defint(RTLD_DEFAULT);
return 0;
}