The input raw profile test has been generated from the following source code:

```
#include <sanitizer/memprof_interface.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv) {
  char *x = (char *)malloc(10);
  memset(x, 0, 10);
  free(x);
  __memprof_profile_dump();
  x = (char *)malloc(10);
  memset(x, 0, 10);
  free(x);
  return 0;
}
```

The following commands were used to compile the source to a memprof instrumented
executable and collect a raw binary format profile. Since the profile contains
virtual addresses for the callstack, we do not expect the raw binary profile to
be deterministic. The summary should be deterministic apart from changes to
the shared libraries linked in which could change the number of segments
recorded.

```
clang -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

env MEMPROF_OPTIONS=log_path=stdout ./rawprofile.out > multi.memprofraw
```

RUN: llvm-profdata show --memory %p/Inputs/multi.memprofraw -o - | FileCheck %s

We expect 2 MIB entries, 1 each for the malloc calls in the program. Unlike the
memprof-basic.test we do not see any allocation from glibc.

CHECK: MemProf Profile 1
CHECK:   Version: 1
CHECK:   TotalSizeBytes: 864
CHECK:   NumSegments: 9
CHECK:   NumMIBInfo: 2
CHECK:   NumStackOffsets: 2
CHECK: MemProf Profile 2
CHECK:   Version: 1
CHECK:   TotalSizeBytes: 864
CHECK:   NumSegments: 9
CHECK:   NumMIBInfo: 2
CHECK:   NumStackOffsets: 2
