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``` 277cca33b4SSnehasish Kumarclang -fmemory-profile -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -m64 -Wl,-build-id source.c -o rawprofile.out 287cca33b4SSnehasish Kumar 297cca33b4SSnehasish Kumarenv MEMPROF_OPTIONS=log_path=stdout ./rawprofile.out > basic.memprofraw 307cca33b4SSnehasish Kumar``` 317cca33b4SSnehasish Kumar 327cca33b4SSnehasish KumarRUN: llvm-profdata show --memory %p/Inputs/basic.memprofraw -o - | FileCheck %s 337cca33b4SSnehasish Kumar 347cca33b4SSnehasish KumarWe expect 3 MIB entries, 1 each for the malloc calls in the program and one 357cca33b4SSnehasish Kumaradditional entry from a realloc in glibc/libio/vasprintf.c. 367cca33b4SSnehasish Kumar 37*14f4f63aSSnehasish KumarCHECK: MemprofProfile: 38*14f4f63aSSnehasish KumarCHECK-NEXT: - 39*14f4f63aSSnehasish KumarCHECK-NEXT: Header: 40*14f4f63aSSnehasish KumarCHECK-NEXT: Version: 1 41*14f4f63aSSnehasish KumarCHECK-NEXT: TotalSizeBytes: 1016 42*14f4f63aSSnehasish KumarCHECK-NEXT: NumSegments: 9 43*14f4f63aSSnehasish KumarCHECK-NEXT: NumMibInfo: 3 44*14f4f63aSSnehasish KumarCHECK-NEXT: NumStackOffsets: 3 45