// RUN: %clangxx_asan %s -o %t
// RUN: %env_asan_opts=print_module_map=1 not %run %t 2>&1 | FileCheck %s
// RUN: %env_asan_opts=print_module_map=2 not %run %t 2>&1 | FileCheck %s
// RUN: %clangxx_asan %s -o %t -fsanitize-recover=address
// RUN: %env_asan_opts=print_module_map=2:halt_on_error=0 %run %t 2>&1 | FileCheck %s
// We can't run system("otool") in the simulator.
// UNSUPPORTED: ios
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char buf[2048];
snprintf(buf, sizeof(buf), "otool -l %s 1>&2", argv[0]);
system(buf);
// CHECK: cmd LC_UUID
// CHECK-NEXT: cmdsize 24
// CHECK-NEXT: uuid [[UUID:[0-9A-F-]{36}]]
char *x = (char*)malloc(10 * sizeof(char));
free(x);
char mybuf[10];
memcpy(mybuf, x, 10);
// CHECK: {{.*ERROR: AddressSanitizer: heap-use-after-free on address}}
// CHECK: Process module map:
// CHECK: uuid.cpp.tmp {{.*}} <[[UUID]]>
fprintf(stderr, "Done.\n");
}