Aiden Grossman bf932867ac
[compiler-rt] Remove REQUIRES: shell lines (#173338)
The shell feature only implies that we are not running on Windows now
that the internal shell is enabled by default everywhere. Remove where
we can and rewrite to the more intentional UNSUPPORTED: system-windows
when we still need to prevent tests from running on Windows.
2025-12-23 12:04:13 -08:00

52 lines
2.1 KiB
C++

// RUN: %clangxx_memprof %s -o %t
// stderr log_path
// RUN: %env_memprof_opts=print_text=true:log_path=stderr %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-GOOD --dump-input=always
// Good log_path.
// RUN: rm -f %t.log.*
// RUN: %env_memprof_opts=print_text=true:log_path=%t.log %run %t
// RUN: FileCheck %s --check-prefix=CHECK-GOOD --dump-input=always < %t.log.*
// Invalid log_path.
// RUN: %env_memprof_opts=print_text=true:log_path=/INVALID not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-INVALID --dump-input=always
// Directory of log_path can't be created.
// RUN: %env_memprof_opts=print_text=true:log_path=/dev/null/INVALID not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-BAD-DIR --dump-input=always
// Too long log_path.
// RUN: %python -c "for i in range(0, 10000): print(i, end='')" > %t.long_log_path
// RUN: %env_memprof_opts=print_text=true:log_path=%{readfile:%t.long_log_path} \
// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-LONG --dump-input=always
// Specifying the log name via the __memprof_profile_filename variable.
// Note we use an invalid path since that is sufficient for checking that the
// specified __memprof_profile_filename value is passed through to the runtime.
// Using an automatically generated name via %t can cause weird issues with
// unexpected macro expansion if the path includes tokens that match a build
// system macro (e.g. "linux").
// RUN: %clangxx_memprof %s -o %t -DPROFILE_NAME_VAR="/INVALID"
// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-INVALID --dump-input=always
#include <sanitizer/memprof_interface.h>
#ifdef PROFILE_NAME_VAR
#define xstr(s) str(s)
#define str(s) #s
char __memprof_profile_filename[] = xstr(PROFILE_NAME_VAR);
#endif
#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();
return 0;
}
// CHECK-GOOD: Memory allocation stack id
// CHECK-INVALID: ERROR: Can't open file: /INVALID
// CHECK-BAD-DIR: ERROR: Can't create directory: /dev/null
// CHECK-LONG: ERROR: Path is too long: 01234