1#include <stdint.h> 2#include <stdio.h> 3#include <stdlib.h> 4 5int __llvm_profile_runtime = 0; 6uint64_t __llvm_profile_get_size_for_buffer(void); 7int __llvm_profile_write_buffer(char *); 8void __llvm_profile_reset_counters(void); 9int __llvm_profile_check_compatibility(const char *, uint64_t); 10 11int gg = 0; 12void bar(char c) { 13 if (c == '1') 14 gg++; 15 else 16 gg--; 17} 18 19/* Returns 0 (size) when an error occurs. */ 20uint64_t libEntry(char *Buffer, uint64_t MaxSize) { 21 22 uint64_t Size = __llvm_profile_get_size_for_buffer(); 23 if (Size > MaxSize) 24 return 0; 25 26 __llvm_profile_reset_counters(); 27 28 bar('1'); 29 30 if (__llvm_profile_write_buffer(Buffer)) 31 return 0; 32 33 /* Now check compatibility. Should return 0. */ 34 if (__llvm_profile_check_compatibility(Buffer, Size)) 35 return 0; 36 37 return Size; 38} 39 40