1define SOURCE_HELLO
2#include <stdio.h>
3int main(void)
4{
5	return puts(\"hi\");
6}
7endef
8
9ifndef NO_DWARF
10define SOURCE_DWARF
11#include <dwarf.h>
12#include <elfutils/libdw.h>
13#include <elfutils/version.h>
14#ifndef _ELFUTILS_PREREQ
15#error
16#endif
17
18int main(void)
19{
20	Dwarf *dbg = dwarf_begin(0, DWARF_C_READ);
21	return (long)dbg;
22}
23endef
24endif
25
26define SOURCE_LIBELF
27#include <libelf.h>
28
29int main(void)
30{
31	Elf *elf = elf_begin(0, ELF_C_READ, 0);
32	return (long)elf;
33}
34endef
35
36define SOURCE_GLIBC
37#include <gnu/libc-version.h>
38
39int main(void)
40{
41	const char *version = gnu_get_libc_version();
42	return (long)version;
43}
44endef
45
46define SOURCE_BIONIC
47#include <android/api-level.h>
48
49int main(void)
50{
51	return __ANDROID_API__;
52}
53endef
54
55define SOURCE_ELF_MMAP
56#include <libelf.h>
57int main(void)
58{
59	Elf *elf = elf_begin(0, ELF_C_READ_MMAP, 0);
60	return (long)elf;
61}
62endef
63
64define SOURCE_ELF_GETPHDRNUM
65#include <libelf.h>
66int main(void)
67{
68	size_t dst;
69	return elf_getphdrnum(0, &dst);
70}
71endef
72
73ifndef NO_SLANG
74define SOURCE_SLANG
75#include <slang.h>
76
77int main(void)
78{
79	return SLsmg_init_smg();
80}
81endef
82endif
83
84ifndef NO_GTK2
85define SOURCE_GTK2
86#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
87#include <gtk/gtk.h>
88#pragma GCC diagnostic error \"-Wstrict-prototypes\"
89
90int main(int argc, char *argv[])
91{
92        gtk_init(&argc, &argv);
93
94        return 0;
95}
96endef
97
98define SOURCE_GTK2_INFOBAR
99#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
100#include <gtk/gtk.h>
101#pragma GCC diagnostic error \"-Wstrict-prototypes\"
102
103int main(void)
104{
105	gtk_info_bar_new();
106
107	return 0;
108}
109endef
110endif
111
112ifndef NO_LIBPERL
113define SOURCE_PERL_EMBED
114#include <EXTERN.h>
115#include <perl.h>
116
117int main(void)
118{
119perl_alloc();
120return 0;
121}
122endef
123endif
124
125ifndef NO_LIBPYTHON
126define SOURCE_PYTHON_VERSION
127#include <Python.h>
128#if PY_VERSION_HEX >= 0x03000000
129	#error
130#endif
131int main(void)
132{
133	return 0;
134}
135endef
136define SOURCE_PYTHON_EMBED
137#include <Python.h>
138int main(void)
139{
140	Py_Initialize();
141	return 0;
142}
143endef
144endif
145
146define SOURCE_BFD
147#include <bfd.h>
148
149int main(void)
150{
151	bfd_demangle(0, 0, 0);
152	return 0;
153}
154endef
155
156define SOURCE_CPLUS_DEMANGLE
157extern char *cplus_demangle(const char *, int);
158
159int main(void)
160{
161	cplus_demangle(0, 0);
162	return 0;
163}
164endef
165
166define SOURCE_STRLCPY
167#include <stdlib.h>
168extern size_t strlcpy(char *dest, const char *src, size_t size);
169
170int main(void)
171{
172	strlcpy(NULL, NULL, 0);
173	return 0;
174}
175endef
176
177ifndef NO_LIBUNWIND
178define SOURCE_LIBUNWIND
179#include <libunwind.h>
180#include <stdlib.h>
181
182extern int UNW_OBJ(dwarf_search_unwind_table) (unw_addr_space_t as,
183                                      unw_word_t ip,
184                                      unw_dyn_info_t *di,
185                                      unw_proc_info_t *pi,
186                                      int need_unwind_info, void *arg);
187
188
189#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table)
190
191int main(void)
192{
193	unw_addr_space_t addr_space;
194	addr_space = unw_create_addr_space(NULL, 0);
195	unw_init_remote(NULL, addr_space, NULL);
196	dwarf_search_unwind_table(addr_space, 0, NULL, NULL, 0, NULL);
197	return 0;
198}
199endef
200endif
201
202ifndef NO_BACKTRACE
203define SOURCE_BACKTRACE
204#include <execinfo.h>
205#include <stdio.h>
206
207int main(void)
208{
209	backtrace(NULL, 0);
210	backtrace_symbols(NULL, 0);
211	return 0;
212}
213endef
214endif
215
216ifndef NO_LIBAUDIT
217define SOURCE_LIBAUDIT
218#include <libaudit.h>
219
220int main(void)
221{
222	printf(\"error message: %s\", audit_errno_to_name(0));
223	return audit_open();
224}
225endef
226endif
227
228define SOURCE_ON_EXIT
229#include <stdio.h>
230
231int main(void)
232{
233	return on_exit(NULL, NULL);
234}
235endef
236
237define SOURCE_LIBNUMA
238#include <numa.h>
239#include <numaif.h>
240
241int main(void)
242{
243	numa_available();
244	return 0;
245}
246endef
247