1 #include <stdint.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int __llvm_profile_runtime = 0; 6 uint64_t __llvm_profile_get_size_for_buffer(void); 7 int __llvm_profile_write_buffer(char *); 8 void __llvm_profile_reset_counters(void); 9 int __llvm_profile_check_compatibility(const char *, uint64_t); 10 11 int gg = 0; bar(char c)12void bar(char c) { 13 if (c == '1') 14 gg++; 15 else 16 gg--; 17 } 18 19 /* Returns 0 (size) when an error occurs. */ libEntry(char * Buffer,uint64_t MaxSize)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