186d5dc9aSSnehasish KumarREQUIRES: x86_64-linux 286d5dc9aSSnehasish Kumar 37cca33b4SSnehasish KumarThe input raw profile test has been generated from the following source code: 47cca33b4SSnehasish Kumar 57cca33b4SSnehasish Kumar``` 67cca33b4SSnehasish Kumar#include <stdlib.h> 77cca33b4SSnehasish Kumar#include <string.h> 87cca33b4SSnehasish Kumarint main(int argc, char **argv) { 97cca33b4SSnehasish Kumar char *x = (char *)malloc(10); 107cca33b4SSnehasish Kumar memset(x, 0, 10); 117cca33b4SSnehasish Kumar free(x); 127cca33b4SSnehasish Kumar x = (char *)malloc(10); 137cca33b4SSnehasish Kumar memset(x, 0, 10); 147cca33b4SSnehasish Kumar free(x); 157cca33b4SSnehasish Kumar return 0; 167cca33b4SSnehasish Kumar} 177cca33b4SSnehasish Kumar``` 187cca33b4SSnehasish Kumar 197cca33b4SSnehasish KumarThe following commands were used to compile the source to a memprof instrumented 207cca33b4SSnehasish Kumarexecutable and collect a raw binary format profile. Since the profile contains 217cca33b4SSnehasish Kumarvirtual addresses for the callstack, we do not expect the raw binary profile to 227cca33b4SSnehasish Kumarbe deterministic. The summary should be deterministic apart from changes to 237cca33b4SSnehasish Kumarthe shared libraries linked in which could change the number of segments 247cca33b4SSnehasish Kumarrecorded. 257cca33b4SSnehasish Kumar 267cca33b4SSnehasish Kumar``` 27216575e5SSnehasish Kumarclang -fuse-ld=lld -Wl,--no-rosegment -gmlt -fdebug-info-for-profiling \ 28216575e5SSnehasish Kumar -fmemory-profile -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer \ 29216575e5SSnehasish Kumar -fno-optimize-sibling-calls -m64 -Wl,-build-id source.c -o basic.memprofexe 307cca33b4SSnehasish Kumar 317cca33b4SSnehasish Kumarenv MEMPROF_OPTIONS=log_path=stdout ./rawprofile.out > basic.memprofraw 327cca33b4SSnehasish Kumar``` 337cca33b4SSnehasish Kumar 34216575e5SSnehasish KumarRUN: llvm-profdata show --memory %p/Inputs/basic.memprofraw --profiled-binary %p/Inputs/basic.memprofexe -o - | FileCheck %s 357cca33b4SSnehasish Kumar 3611314f40SSnehasish KumarWe expect 2 MIB entries, 1 each for the malloc calls in the program. Any 3711314f40SSnehasish Kumaradditional allocations which do not originate from the main binary are pruned. 387cca33b4SSnehasish Kumar 3914f4f63aSSnehasish KumarCHECK: MemprofProfile: 40962db7deSSnehasish KumarCHECK-NEXT: Summary: 4114f4f63aSSnehasish KumarCHECK-NEXT: Version: 1 4214f4f63aSSnehasish KumarCHECK-NEXT: NumSegments: 9 43962db7deSSnehasish KumarCHECK-NEXT: NumMibInfo: 2 44962db7deSSnehasish KumarCHECK-NEXT: NumAllocFunctions: 1 45962db7deSSnehasish KumarCHECK-NEXT: NumStackOffsets: 2 46*8a87f42fSSnehasish KumarCHECK-NEXT: Segments: 47*8a87f42fSSnehasish KumarCHECK-NEXT: - 48*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 49*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x200000 50*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x298000 51*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x0 52*8a87f42fSSnehasish KumarCHECK-NEXT: - 53*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 54*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7C7C000 55*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7DC5000 56*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x26000 57*8a87f42fSSnehasish KumarCHECK-NEXT: - 58*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 59*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7E1E000 60*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7E30000 61*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x3000 62*8a87f42fSSnehasish KumarCHECK-NEXT: - 63*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 64*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7E36000 65*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7E38000 66*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x1000 67*8a87f42fSSnehasish KumarCHECK-NEXT: - 68*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 69*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7E4A000 70*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7EE5000 71*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0xF000 72*8a87f42fSSnehasish KumarCHECK-NEXT: - 73*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 74*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7F83000 75*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7F87000 76*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x3000 77*8a87f42fSSnehasish KumarCHECK-NEXT: - 78*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 79*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7F92000 80*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7FA1000 81*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x7000 82*8a87f42fSSnehasish KumarCHECK-NEXT: - 83*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 84*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7FD0000 85*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7FD2000 86*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x0 87*8a87f42fSSnehasish KumarCHECK-NEXT: - 88*8a87f42fSSnehasish KumarCHECK-NEXT: BuildId: <None> 89*8a87f42fSSnehasish KumarCHECK-NEXT: Start: 0x7FFFF7FD3000 90*8a87f42fSSnehasish KumarCHECK-NEXT: End: 0x7FFFF7FF3000 91*8a87f42fSSnehasish KumarCHECK-NEXT: Offset: 0x1000 92216575e5SSnehasish KumarCHECK-NEXT: Records: 93216575e5SSnehasish KumarCHECK-NEXT: - 9427a4f254SSnehasish KumarCHECK-NEXT: FunctionGUID: {{[0-9]+}} 9527a4f254SSnehasish KumarCHECK-NEXT: AllocSites: 9627a4f254SSnehasish KumarCHECK-NEXT: - 97216575e5SSnehasish KumarCHECK-NEXT: Callstack: 98216575e5SSnehasish KumarCHECK-NEXT: - 99216575e5SSnehasish KumarCHECK-NEXT: Function: {{[0-9]+}} 100ec51971eSSnehasish KumarCHECK-NEXT: SymbolName: main 101216575e5SSnehasish KumarCHECK-NEXT: LineOffset: 1 102216575e5SSnehasish KumarCHECK-NEXT: Column: 21 103216575e5SSnehasish KumarCHECK-NEXT: Inline: 0 104216575e5SSnehasish KumarCHECK-NEXT: MemInfoBlock: 105216575e5SSnehasish KumarCHECK-NEXT: AllocCount: 1 106216575e5SSnehasish KumarCHECK-NEXT: TotalAccessCount: 2 107216575e5SSnehasish KumarCHECK-NEXT: MinAccessCount: 2 108216575e5SSnehasish KumarCHECK-NEXT: MaxAccessCount: 2 109216575e5SSnehasish KumarCHECK-NEXT: TotalSize: 10 110216575e5SSnehasish KumarCHECK-NEXT: MinSize: 10 111216575e5SSnehasish KumarCHECK-NEXT: MaxSize: 10 112216575e5SSnehasish KumarCHECK-NEXT: AllocTimestamp: 986 113216575e5SSnehasish KumarCHECK-NEXT: DeallocTimestamp: 986 114216575e5SSnehasish KumarCHECK-NEXT: TotalLifetime: 0 115216575e5SSnehasish KumarCHECK-NEXT: MinLifetime: 0 116216575e5SSnehasish KumarCHECK-NEXT: MaxLifetime: 0 117216575e5SSnehasish KumarCHECK-NEXT: AllocCpuId: 56 118216575e5SSnehasish KumarCHECK-NEXT: DeallocCpuId: 56 119216575e5SSnehasish KumarCHECK-NEXT: NumMigratedCpu: 0 120216575e5SSnehasish KumarCHECK-NEXT: NumLifetimeOverlaps: 0 121216575e5SSnehasish KumarCHECK-NEXT: NumSameAllocCpu: 0 122216575e5SSnehasish KumarCHECK-NEXT: NumSameDeallocCpu: 0 12350713461SSnehasish KumarCHECK-NEXT: DataTypeId: {{[0-9]+}} 124216575e5SSnehasish KumarCHECK-NEXT: - 125216575e5SSnehasish KumarCHECK-NEXT: Callstack: 126216575e5SSnehasish KumarCHECK-NEXT: - 127216575e5SSnehasish KumarCHECK-NEXT: Function: {{[0-9]+}} 128ec51971eSSnehasish KumarCHECK-NEXT: SymbolName: main 129216575e5SSnehasish KumarCHECK-NEXT: LineOffset: 5 130216575e5SSnehasish KumarCHECK-NEXT: Column: 15 131216575e5SSnehasish KumarCHECK-NEXT: Inline: 0 132216575e5SSnehasish KumarCHECK-NEXT: MemInfoBlock: 133216575e5SSnehasish KumarCHECK-NEXT: AllocCount: 1 134216575e5SSnehasish KumarCHECK-NEXT: TotalAccessCount: 2 135216575e5SSnehasish KumarCHECK-NEXT: MinAccessCount: 2 136216575e5SSnehasish KumarCHECK-NEXT: MaxAccessCount: 2 137216575e5SSnehasish KumarCHECK-NEXT: TotalSize: 10 138216575e5SSnehasish KumarCHECK-NEXT: MinSize: 10 139216575e5SSnehasish KumarCHECK-NEXT: MaxSize: 10 140216575e5SSnehasish KumarCHECK-NEXT: AllocTimestamp: 987 141216575e5SSnehasish KumarCHECK-NEXT: DeallocTimestamp: 987 142216575e5SSnehasish KumarCHECK-NEXT: TotalLifetime: 0 143216575e5SSnehasish KumarCHECK-NEXT: MinLifetime: 0 144216575e5SSnehasish KumarCHECK-NEXT: MaxLifetime: 0 145216575e5SSnehasish KumarCHECK-NEXT: AllocCpuId: 56 146216575e5SSnehasish KumarCHECK-NEXT: DeallocCpuId: 56 147216575e5SSnehasish KumarCHECK-NEXT: NumMigratedCpu: 0 148216575e5SSnehasish KumarCHECK-NEXT: NumLifetimeOverlaps: 0 149216575e5SSnehasish KumarCHECK-NEXT: NumSameAllocCpu: 0 150216575e5SSnehasish KumarCHECK-NEXT: NumSameDeallocCpu: 0 15150713461SSnehasish KumarCHECK-NEXT: DataTypeId: {{[0-9]+}} 152