131f251f1SXinliang David Li #include <stdint.h> 231f251f1SXinliang David Li #include <stdio.h> 331f251f1SXinliang David Li #include <stdlib.h> 431f251f1SXinliang David Li 531f251f1SXinliang David Li int __llvm_profile_runtime = 0; 631f251f1SXinliang David Li uint64_t __llvm_profile_get_size_for_buffer(void); 731f251f1SXinliang David Li int __llvm_profile_write_buffer(char *); 831f251f1SXinliang David Li void __llvm_profile_reset_counters(void); 931f251f1SXinliang David Li int __llvm_profile_check_compatibility(const char *, uint64_t); 1031f251f1SXinliang David Li 1131f251f1SXinliang David Li int gg = 0; bar(char c)1231f251f1SXinliang David Livoid bar(char c) { 1331f251f1SXinliang David Li if (c == '1') 1431f251f1SXinliang David Li gg++; 1531f251f1SXinliang David Li else 1631f251f1SXinliang David Li gg--; 1731f251f1SXinliang David Li } 1831f251f1SXinliang David Li 1931f251f1SXinliang David Li /* Returns 0 (size) when an error occurs. */ libEntry(char * Buffer,uint64_t MaxSize)2031f251f1SXinliang David Liuint64_t libEntry(char *Buffer, uint64_t MaxSize) { 2131f251f1SXinliang David Li 2231f251f1SXinliang David Li uint64_t Size = __llvm_profile_get_size_for_buffer(); 2331f251f1SXinliang David Li if (Size > MaxSize) 24*d4312d8aSXinliang David Li return 0; 2531f251f1SXinliang David Li 2631f251f1SXinliang David Li __llvm_profile_reset_counters(); 2731f251f1SXinliang David Li 2831f251f1SXinliang David Li bar('1'); 2931f251f1SXinliang David Li 3031f251f1SXinliang David Li if (__llvm_profile_write_buffer(Buffer)) 3131f251f1SXinliang David Li return 0; 3231f251f1SXinliang David Li 3331f251f1SXinliang David Li /* Now check compatibility. Should return 0. */ 3431f251f1SXinliang David Li if (__llvm_profile_check_compatibility(Buffer, Size)) 3531f251f1SXinliang David Li return 0; 3631f251f1SXinliang David Li 3731f251f1SXinliang David Li return Size; 3831f251f1SXinliang David Li } 3931f251f1SXinliang David Li 40