xref: /aosp_15_r20/external/gwp_asan/android/test_printf.cpp (revision b302aa5039729da396909ef03e815160dab4448c)
1*b302aa50SMitch Phillips #include <async_safe/log.h>
2*b302aa50SMitch Phillips #include <stdarg.h>
3*b302aa50SMitch Phillips #include <unistd.h>
4*b302aa50SMitch Phillips 
5*b302aa50SMitch Phillips #include "gwp_asan/optional/printf.h"
6*b302aa50SMitch Phillips 
7*b302aa50SMitch Phillips namespace {
PrintfWrapper(const char * Format,...)8*b302aa50SMitch Phillips void PrintfWrapper(const char *Format, ...) {
9*b302aa50SMitch Phillips   va_list List;
10*b302aa50SMitch Phillips   va_start(List, Format);
11*b302aa50SMitch Phillips   async_safe_fatal_va_list("GWP-ASan", Format, List);
12*b302aa50SMitch Phillips   va_end(List);
13*b302aa50SMitch Phillips }
14*b302aa50SMitch Phillips } // anonymous namespace
15*b302aa50SMitch Phillips 
16*b302aa50SMitch Phillips namespace gwp_asan {
17*b302aa50SMitch Phillips namespace test {
18*b302aa50SMitch Phillips // Android version of the Printf() function for use in gwp_asan_unittest. You
19*b302aa50SMitch Phillips // can find the declaration of this function in gwp_asan/optional/printf.h
getPrintfFunction()20*b302aa50SMitch Phillips Printf_t getPrintfFunction() { return PrintfWrapper; }
21*b302aa50SMitch Phillips } // namespace test
22*b302aa50SMitch Phillips } // namespace gwp_asan
23