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 \
29*b0c51f00SSnehasish Kumar      -fno-optimize-sibling-calls -m64 -Wl,-build-id -Wl,-no-pie \
30*b0c51f00SSnehasish Kumar      source.c -o basic.memprofexe
317cca33b4SSnehasish Kumar
32*b0c51f00SSnehasish Kumarenv MEMPROF_OPTIONS=log_path=stdout ./basic.memprofexe > basic.memprofraw
337cca33b4SSnehasish Kumar```
347cca33b4SSnehasish Kumar
35216575e5SSnehasish KumarRUN: llvm-profdata show --memory %p/Inputs/basic.memprofraw --profiled-binary %p/Inputs/basic.memprofexe -o - | FileCheck %s
367cca33b4SSnehasish Kumar
3711314f40SSnehasish KumarWe expect 2 MIB entries, 1 each for the malloc calls in the program. Any
3811314f40SSnehasish Kumaradditional allocations which do not originate from the main binary are pruned.
397cca33b4SSnehasish Kumar
4014f4f63aSSnehasish KumarCHECK:  MemprofProfile:
41962db7deSSnehasish KumarCHECK-NEXT:   Summary:
4214f4f63aSSnehasish KumarCHECK-NEXT:     Version: 1
4314f4f63aSSnehasish KumarCHECK-NEXT:     NumSegments: 9
44962db7deSSnehasish KumarCHECK-NEXT:     NumMibInfo: 2
45962db7deSSnehasish KumarCHECK-NEXT:     NumAllocFunctions: 1
46962db7deSSnehasish KumarCHECK-NEXT:     NumStackOffsets: 2
478a87f42fSSnehasish KumarCHECK-NEXT:   Segments:
488a87f42fSSnehasish KumarCHECK-NEXT:   -
498a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
508a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x200000
518a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x298000
528a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x0
538a87f42fSSnehasish KumarCHECK-NEXT:   -
548a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
558a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7C7C000
568a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7DC5000
578a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x26000
588a87f42fSSnehasish KumarCHECK-NEXT:   -
598a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
608a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7E1E000
618a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7E30000
628a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x3000
638a87f42fSSnehasish KumarCHECK-NEXT:   -
648a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
658a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7E36000
668a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7E38000
678a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x1000
688a87f42fSSnehasish KumarCHECK-NEXT:   -
698a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
708a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7E4A000
718a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7EE5000
728a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0xF000
738a87f42fSSnehasish KumarCHECK-NEXT:   -
748a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
758a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7F83000
768a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7F87000
778a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x3000
788a87f42fSSnehasish KumarCHECK-NEXT:   -
798a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
808a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7F92000
818a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7FA1000
828a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x7000
838a87f42fSSnehasish KumarCHECK-NEXT:   -
848a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
858a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7FD0000
868a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7FD2000
878a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x0
888a87f42fSSnehasish KumarCHECK-NEXT:   -
898a87f42fSSnehasish KumarCHECK-NEXT:     BuildId: <None>
908a87f42fSSnehasish KumarCHECK-NEXT:     Start: 0x7FFFF7FD3000
918a87f42fSSnehasish KumarCHECK-NEXT:     End: 0x7FFFF7FF3000
928a87f42fSSnehasish KumarCHECK-NEXT:     Offset: 0x1000
93216575e5SSnehasish KumarCHECK-NEXT:   Records:
94216575e5SSnehasish KumarCHECK-NEXT:   -
9527a4f254SSnehasish KumarCHECK-NEXT:     FunctionGUID: {{[0-9]+}}
9627a4f254SSnehasish KumarCHECK-NEXT:     AllocSites:
9727a4f254SSnehasish KumarCHECK-NEXT:     -
98216575e5SSnehasish KumarCHECK-NEXT:       Callstack:
99216575e5SSnehasish KumarCHECK-NEXT:       -
100216575e5SSnehasish KumarCHECK-NEXT:         Function: {{[0-9]+}}
101ec51971eSSnehasish KumarCHECK-NEXT:         SymbolName: main
102216575e5SSnehasish KumarCHECK-NEXT:         LineOffset: 1
103216575e5SSnehasish KumarCHECK-NEXT:         Column: 21
104216575e5SSnehasish KumarCHECK-NEXT:         Inline: 0
105216575e5SSnehasish KumarCHECK-NEXT:       MemInfoBlock:
106216575e5SSnehasish KumarCHECK-NEXT:         AllocCount: 1
107216575e5SSnehasish KumarCHECK-NEXT:         TotalAccessCount: 2
108216575e5SSnehasish KumarCHECK-NEXT:         MinAccessCount: 2
109216575e5SSnehasish KumarCHECK-NEXT:         MaxAccessCount: 2
110216575e5SSnehasish KumarCHECK-NEXT:         TotalSize: 10
111216575e5SSnehasish KumarCHECK-NEXT:         MinSize: 10
112216575e5SSnehasish KumarCHECK-NEXT:         MaxSize: 10
113216575e5SSnehasish KumarCHECK-NEXT:         AllocTimestamp: 986
114216575e5SSnehasish KumarCHECK-NEXT:         DeallocTimestamp: 986
115216575e5SSnehasish KumarCHECK-NEXT:         TotalLifetime: 0
116216575e5SSnehasish KumarCHECK-NEXT:         MinLifetime: 0
117216575e5SSnehasish KumarCHECK-NEXT:         MaxLifetime: 0
118216575e5SSnehasish KumarCHECK-NEXT:         AllocCpuId: 56
119216575e5SSnehasish KumarCHECK-NEXT:         DeallocCpuId: 56
120216575e5SSnehasish KumarCHECK-NEXT:         NumMigratedCpu: 0
121216575e5SSnehasish KumarCHECK-NEXT:         NumLifetimeOverlaps: 0
122216575e5SSnehasish KumarCHECK-NEXT:         NumSameAllocCpu: 0
123216575e5SSnehasish KumarCHECK-NEXT:         NumSameDeallocCpu: 0
12450713461SSnehasish KumarCHECK-NEXT:         DataTypeId: {{[0-9]+}}
125216575e5SSnehasish KumarCHECK-NEXT:     -
126216575e5SSnehasish KumarCHECK-NEXT:       Callstack:
127216575e5SSnehasish KumarCHECK-NEXT:       -
128216575e5SSnehasish KumarCHECK-NEXT:         Function: {{[0-9]+}}
129ec51971eSSnehasish KumarCHECK-NEXT:         SymbolName: main
130216575e5SSnehasish KumarCHECK-NEXT:         LineOffset: 5
131216575e5SSnehasish KumarCHECK-NEXT:         Column: 15
132216575e5SSnehasish KumarCHECK-NEXT:         Inline: 0
133216575e5SSnehasish KumarCHECK-NEXT:       MemInfoBlock:
134216575e5SSnehasish KumarCHECK-NEXT:         AllocCount: 1
135216575e5SSnehasish KumarCHECK-NEXT:         TotalAccessCount: 2
136216575e5SSnehasish KumarCHECK-NEXT:         MinAccessCount: 2
137216575e5SSnehasish KumarCHECK-NEXT:         MaxAccessCount: 2
138216575e5SSnehasish KumarCHECK-NEXT:         TotalSize: 10
139216575e5SSnehasish KumarCHECK-NEXT:         MinSize: 10
140216575e5SSnehasish KumarCHECK-NEXT:         MaxSize: 10
141216575e5SSnehasish KumarCHECK-NEXT:         AllocTimestamp: 987
142216575e5SSnehasish KumarCHECK-NEXT:         DeallocTimestamp: 987
143216575e5SSnehasish KumarCHECK-NEXT:         TotalLifetime: 0
144216575e5SSnehasish KumarCHECK-NEXT:         MinLifetime: 0
145216575e5SSnehasish KumarCHECK-NEXT:         MaxLifetime: 0
146216575e5SSnehasish KumarCHECK-NEXT:         AllocCpuId: 56
147216575e5SSnehasish KumarCHECK-NEXT:         DeallocCpuId: 56
148216575e5SSnehasish KumarCHECK-NEXT:         NumMigratedCpu: 0
149216575e5SSnehasish KumarCHECK-NEXT:         NumLifetimeOverlaps: 0
150216575e5SSnehasish KumarCHECK-NEXT:         NumSameAllocCpu: 0
151216575e5SSnehasish KumarCHECK-NEXT:         NumSameDeallocCpu: 0
15250713461SSnehasish KumarCHECK-NEXT:         DataTypeId: {{[0-9]+}}
153