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:
40*962db7deSSnehasish KumarCHECK-NEXT:   Summary:
4114f4f63aSSnehasish KumarCHECK-NEXT:     Version: 1
4214f4f63aSSnehasish KumarCHECK-NEXT:     NumSegments: 9
43*962db7deSSnehasish KumarCHECK-NEXT:     NumMibInfo: 2
44*962db7deSSnehasish KumarCHECK-NEXT:     NumAllocFunctions: 1
45*962db7deSSnehasish KumarCHECK-NEXT:     NumStackOffsets: 2
46216575e5SSnehasish KumarCHECK-NEXT:   Records:
47216575e5SSnehasish KumarCHECK-NEXT:   -
4827a4f254SSnehasish KumarCHECK-NEXT:     FunctionGUID: {{[0-9]+}}
4927a4f254SSnehasish KumarCHECK-NEXT:     AllocSites:
5027a4f254SSnehasish KumarCHECK-NEXT:     -
51216575e5SSnehasish KumarCHECK-NEXT:       Callstack:
52216575e5SSnehasish KumarCHECK-NEXT:       -
53216575e5SSnehasish KumarCHECK-NEXT:         Function: {{[0-9]+}}
54ec51971eSSnehasish KumarCHECK-NEXT:         SymbolName: main
55216575e5SSnehasish KumarCHECK-NEXT:         LineOffset: 1
56216575e5SSnehasish KumarCHECK-NEXT:         Column: 21
57216575e5SSnehasish KumarCHECK-NEXT:         Inline: 0
58216575e5SSnehasish KumarCHECK-NEXT:       MemInfoBlock:
59216575e5SSnehasish KumarCHECK-NEXT:         AllocCount: 1
60216575e5SSnehasish KumarCHECK-NEXT:         TotalAccessCount: 2
61216575e5SSnehasish KumarCHECK-NEXT:         MinAccessCount: 2
62216575e5SSnehasish KumarCHECK-NEXT:         MaxAccessCount: 2
63216575e5SSnehasish KumarCHECK-NEXT:         TotalSize: 10
64216575e5SSnehasish KumarCHECK-NEXT:         MinSize: 10
65216575e5SSnehasish KumarCHECK-NEXT:         MaxSize: 10
66216575e5SSnehasish KumarCHECK-NEXT:         AllocTimestamp: 986
67216575e5SSnehasish KumarCHECK-NEXT:         DeallocTimestamp: 986
68216575e5SSnehasish KumarCHECK-NEXT:         TotalLifetime: 0
69216575e5SSnehasish KumarCHECK-NEXT:         MinLifetime: 0
70216575e5SSnehasish KumarCHECK-NEXT:         MaxLifetime: 0
71216575e5SSnehasish KumarCHECK-NEXT:         AllocCpuId: 56
72216575e5SSnehasish KumarCHECK-NEXT:         DeallocCpuId: 56
73216575e5SSnehasish KumarCHECK-NEXT:         NumMigratedCpu: 0
74216575e5SSnehasish KumarCHECK-NEXT:         NumLifetimeOverlaps: 0
75216575e5SSnehasish KumarCHECK-NEXT:         NumSameAllocCpu: 0
76216575e5SSnehasish KumarCHECK-NEXT:         NumSameDeallocCpu: 0
7750713461SSnehasish KumarCHECK-NEXT:         DataTypeId: {{[0-9]+}}
78216575e5SSnehasish KumarCHECK-NEXT:     -
79216575e5SSnehasish KumarCHECK-NEXT:       Callstack:
80216575e5SSnehasish KumarCHECK-NEXT:       -
81216575e5SSnehasish KumarCHECK-NEXT:         Function: {{[0-9]+}}
82ec51971eSSnehasish KumarCHECK-NEXT:         SymbolName: main
83216575e5SSnehasish KumarCHECK-NEXT:         LineOffset: 5
84216575e5SSnehasish KumarCHECK-NEXT:         Column: 15
85216575e5SSnehasish KumarCHECK-NEXT:         Inline: 0
86216575e5SSnehasish KumarCHECK-NEXT:       MemInfoBlock:
87216575e5SSnehasish KumarCHECK-NEXT:         AllocCount: 1
88216575e5SSnehasish KumarCHECK-NEXT:         TotalAccessCount: 2
89216575e5SSnehasish KumarCHECK-NEXT:         MinAccessCount: 2
90216575e5SSnehasish KumarCHECK-NEXT:         MaxAccessCount: 2
91216575e5SSnehasish KumarCHECK-NEXT:         TotalSize: 10
92216575e5SSnehasish KumarCHECK-NEXT:         MinSize: 10
93216575e5SSnehasish KumarCHECK-NEXT:         MaxSize: 10
94216575e5SSnehasish KumarCHECK-NEXT:         AllocTimestamp: 987
95216575e5SSnehasish KumarCHECK-NEXT:         DeallocTimestamp: 987
96216575e5SSnehasish KumarCHECK-NEXT:         TotalLifetime: 0
97216575e5SSnehasish KumarCHECK-NEXT:         MinLifetime: 0
98216575e5SSnehasish KumarCHECK-NEXT:         MaxLifetime: 0
99216575e5SSnehasish KumarCHECK-NEXT:         AllocCpuId: 56
100216575e5SSnehasish KumarCHECK-NEXT:         DeallocCpuId: 56
101216575e5SSnehasish KumarCHECK-NEXT:         NumMigratedCpu: 0
102216575e5SSnehasish KumarCHECK-NEXT:         NumLifetimeOverlaps: 0
103216575e5SSnehasish KumarCHECK-NEXT:         NumSameAllocCpu: 0
104216575e5SSnehasish KumarCHECK-NEXT:         NumSameDeallocCpu: 0
10550713461SSnehasish KumarCHECK-NEXT:         DataTypeId: {{[0-9]+}}
106