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```
27*216575e5SSnehasish Kumarclang -fuse-ld=lld -Wl,--no-rosegment -gmlt -fdebug-info-for-profiling \
28*216575e5SSnehasish Kumar      -fmemory-profile -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer \
29*216575e5SSnehasish 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
34*216575e5SSnehasish KumarRUN: llvm-profdata show --memory %p/Inputs/basic.memprofraw --profiled-binary %p/Inputs/basic.memprofexe -o - | FileCheck %s
357cca33b4SSnehasish Kumar
367cca33b4SSnehasish KumarWe expect 3 MIB entries, 1 each for the malloc calls in the program and one
377cca33b4SSnehasish Kumaradditional entry from a realloc in glibc/libio/vasprintf.c.
387cca33b4SSnehasish Kumar
3914f4f63aSSnehasish KumarCHECK: MemprofProfile:
4014f4f63aSSnehasish KumarCHECK-NEXT:   -
4114f4f63aSSnehasish KumarCHECK-NEXT:   Header:
4214f4f63aSSnehasish KumarCHECK-NEXT:     Version: 1
4314f4f63aSSnehasish KumarCHECK-NEXT:     TotalSizeBytes: 1016
4414f4f63aSSnehasish KumarCHECK-NEXT:     NumSegments: 9
4514f4f63aSSnehasish KumarCHECK-NEXT:     NumMibInfo: 3
4614f4f63aSSnehasish KumarCHECK-NEXT:     NumStackOffsets: 3
47*216575e5SSnehasish KumarCHECK-NEXT:   Records:
48*216575e5SSnehasish KumarCHECK-NEXT:   -
49*216575e5SSnehasish KumarCHECK-NEXT:     Callstack:
50*216575e5SSnehasish KumarCHECK-NEXT:     -
51*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
52*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 73
53*216575e5SSnehasish KumarCHECK-NEXT:       Column: 3
54*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
55*216575e5SSnehasish KumarCHECK-NEXT:     -
56*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
57*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 0
58*216575e5SSnehasish KumarCHECK-NEXT:       Column: 0
59*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
60*216575e5SSnehasish KumarCHECK-NEXT:     MemInfoBlock:
61*216575e5SSnehasish KumarCHECK-NEXT:       AllocCount: 1
62*216575e5SSnehasish KumarCHECK-NEXT:       TotalAccessCount: 0
63*216575e5SSnehasish KumarCHECK-NEXT:       MinAccessCount: 0
64*216575e5SSnehasish KumarCHECK-NEXT:       MaxAccessCount: 0
65*216575e5SSnehasish KumarCHECK-NEXT:       TotalSize: 53
66*216575e5SSnehasish KumarCHECK-NEXT:       MinSize: 53
67*216575e5SSnehasish KumarCHECK-NEXT:       MaxSize: 53
68*216575e5SSnehasish KumarCHECK-NEXT:       AllocTimestamp: 0
69*216575e5SSnehasish KumarCHECK-NEXT:       DeallocTimestamp: 987
70*216575e5SSnehasish KumarCHECK-NEXT:       TotalLifetime: 987
71*216575e5SSnehasish KumarCHECK-NEXT:       MinLifetime: 987
72*216575e5SSnehasish KumarCHECK-NEXT:       MaxLifetime: 987
73*216575e5SSnehasish KumarCHECK-NEXT:       AllocCpuId: 4294967295
74*216575e5SSnehasish KumarCHECK-NEXT:       DeallocCpuId: 56
75*216575e5SSnehasish KumarCHECK-NEXT:       NumMigratedCpu: 1
76*216575e5SSnehasish KumarCHECK-NEXT:       NumLifetimeOverlaps: 0
77*216575e5SSnehasish KumarCHECK-NEXT:       NumSameAllocCpu: 0
78*216575e5SSnehasish KumarCHECK-NEXT:       NumSameDeallocCpu: 0
79*216575e5SSnehasish KumarCHECK-NEXT:   -
80*216575e5SSnehasish KumarCHECK-NEXT:     Callstack:
81*216575e5SSnehasish KumarCHECK-NEXT:     -
82*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
83*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 57
84*216575e5SSnehasish KumarCHECK-NEXT:       Column: 3
85*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
86*216575e5SSnehasish KumarCHECK-NEXT:     -
87*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
88*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 1
89*216575e5SSnehasish KumarCHECK-NEXT:       Column: 21
90*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
91*216575e5SSnehasish KumarCHECK-NEXT:     -
92*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
93*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 0
94*216575e5SSnehasish KumarCHECK-NEXT:       Column: 0
95*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
96*216575e5SSnehasish KumarCHECK-NEXT:     MemInfoBlock:
97*216575e5SSnehasish KumarCHECK-NEXT:       AllocCount: 1
98*216575e5SSnehasish KumarCHECK-NEXT:       TotalAccessCount: 2
99*216575e5SSnehasish KumarCHECK-NEXT:       MinAccessCount: 2
100*216575e5SSnehasish KumarCHECK-NEXT:       MaxAccessCount: 2
101*216575e5SSnehasish KumarCHECK-NEXT:       TotalSize: 10
102*216575e5SSnehasish KumarCHECK-NEXT:       MinSize: 10
103*216575e5SSnehasish KumarCHECK-NEXT:       MaxSize: 10
104*216575e5SSnehasish KumarCHECK-NEXT:       AllocTimestamp: 986
105*216575e5SSnehasish KumarCHECK-NEXT:       DeallocTimestamp: 986
106*216575e5SSnehasish KumarCHECK-NEXT:       TotalLifetime: 0
107*216575e5SSnehasish KumarCHECK-NEXT:       MinLifetime: 0
108*216575e5SSnehasish KumarCHECK-NEXT:       MaxLifetime: 0
109*216575e5SSnehasish KumarCHECK-NEXT:       AllocCpuId: 56
110*216575e5SSnehasish KumarCHECK-NEXT:       DeallocCpuId: 56
111*216575e5SSnehasish KumarCHECK-NEXT:       NumMigratedCpu: 0
112*216575e5SSnehasish KumarCHECK-NEXT:       NumLifetimeOverlaps: 0
113*216575e5SSnehasish KumarCHECK-NEXT:       NumSameAllocCpu: 0
114*216575e5SSnehasish KumarCHECK-NEXT:       NumSameDeallocCpu: 0
115*216575e5SSnehasish KumarCHECK-NEXT:   -
116*216575e5SSnehasish KumarCHECK-NEXT:     Callstack:
117*216575e5SSnehasish KumarCHECK-NEXT:     -
118*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
119*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 57
120*216575e5SSnehasish KumarCHECK-NEXT:       Column: 3
121*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
122*216575e5SSnehasish KumarCHECK-NEXT:     -
123*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
124*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 5
125*216575e5SSnehasish KumarCHECK-NEXT:       Column: 15
126*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
127*216575e5SSnehasish KumarCHECK-NEXT:     -
128*216575e5SSnehasish KumarCHECK-NEXT:       Function: {{[0-9]+}}
129*216575e5SSnehasish KumarCHECK-NEXT:       LineOffset: 0
130*216575e5SSnehasish KumarCHECK-NEXT:       Column: 0
131*216575e5SSnehasish KumarCHECK-NEXT:       Inline: 0
132*216575e5SSnehasish KumarCHECK-NEXT:     MemInfoBlock:
133*216575e5SSnehasish KumarCHECK-NEXT:       AllocCount: 1
134*216575e5SSnehasish KumarCHECK-NEXT:       TotalAccessCount: 2
135*216575e5SSnehasish KumarCHECK-NEXT:       MinAccessCount: 2
136*216575e5SSnehasish KumarCHECK-NEXT:       MaxAccessCount: 2
137*216575e5SSnehasish KumarCHECK-NEXT:       TotalSize: 10
138*216575e5SSnehasish KumarCHECK-NEXT:       MinSize: 10
139*216575e5SSnehasish KumarCHECK-NEXT:       MaxSize: 10
140*216575e5SSnehasish KumarCHECK-NEXT:       AllocTimestamp: 987
141*216575e5SSnehasish KumarCHECK-NEXT:       DeallocTimestamp: 987
142*216575e5SSnehasish KumarCHECK-NEXT:       TotalLifetime: 0
143*216575e5SSnehasish KumarCHECK-NEXT:       MinLifetime: 0
144*216575e5SSnehasish KumarCHECK-NEXT:       MaxLifetime: 0
145*216575e5SSnehasish KumarCHECK-NEXT:       AllocCpuId: 56
146*216575e5SSnehasish KumarCHECK-NEXT:       DeallocCpuId: 56
147*216575e5SSnehasish KumarCHECK-NEXT:       NumMigratedCpu: 0
148*216575e5SSnehasish KumarCHECK-NEXT:       NumLifetimeOverlaps: 0
149*216575e5SSnehasish KumarCHECK-NEXT:       NumSameAllocCpu: 0
150*216575e5SSnehasish KumarCHECK-NEXT:       NumSameDeallocCpu: 0
151