#ifndef LIBUNWIND_TEST_SUPPORT_FUNC_BOUNDS_H
#define LIBUNWIND_TEST_SUPPORT_FUNC_BOUNDS_H
#ifdef __APPLE__
#define FUNC_BOUNDS_DECL(name) \
extern char name##_start __asm("section$start$__TEXT$__" #name); \
extern char name##_end __asm("section$end$__TEXT$__" #name)
#define FUNC_ATTR(name) \
__attribute__((section("__TEXT,__" #name ",regular,pure_instructions")))
#define FUNC_START(name) (&name##_start)
#define FUNC_END(name) (&name##_end)
#else
#define FUNC_BOUNDS_DECL(name) \
extern char __start_##name; \
extern char __stop_##name
#define FUNC_ATTR(name) __attribute__((section(#name)))
#define FUNC_START(name) (&__start_##name)
#define FUNC_END(name) (&__stop_##name)
#endif
#endif