30 lines
1.1 KiB
C
30 lines
1.1 KiB
C
/*
|
|
* vlibc-under-test adapter for the bench_vlibc harness (todo 6 bench fix).
|
|
*
|
|
* This translation unit is compiled with vlibc's OWN headers (-I ../include)
|
|
* and is the ONLY TU in the benchmark that may include a vlibc header. The
|
|
* harness TU (bench_vlibc.c) must never include one: vlibc's self-contained
|
|
* <stdarg.h>/<stddef.h>/<limits.h>/<float.h> shadow GCC's internal headers,
|
|
* so any TU that mixes a vlibc header with the host <stdio.h>/<time.h>
|
|
* fails to compile (glibc's <stdio.h> needs __gnuc_va_list, which only the
|
|
* compiler's internal <stdarg.h> defines). The adapter isolates the
|
|
* vlibc-facing call here and exposes it to the host-header harness through
|
|
* its own declaration.
|
|
*
|
|
* Passing through the adapter also drops vlibc_version()'s
|
|
* __attribute__((const)) at the harness call site: the harness sees a plain
|
|
* external function, so the timed loop genuinely executes the call instead
|
|
* of being hoisted out by the optimizer.
|
|
*/
|
|
|
|
#include <vlibc.h>
|
|
|
|
const char *
|
|
bench_vlibc_version(void);
|
|
|
|
const char *
|
|
bench_vlibc_version(void)
|
|
{
|
|
return vlibc_version();
|
|
}
|