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 Phillipsvoid 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 PhillipsPrintf_t getPrintfFunction() { return PrintfWrapper; } 21*b302aa50SMitch Phillips } // namespace test 22*b302aa50SMitch Phillips } // namespace gwp_asan 23