From 3e13b299f9a30c566b8ff9e62edaf3dbf2a6b7e8 Mon Sep 17 00:00:00 2001 From: Amir Aupov Date: Thu, 29 Jun 2023 22:11:17 -0700 Subject: [PATCH] Revert "[BOLT][Instrumentation][NFC] define and use mmap flags" This reverts commit f0b45fba4b64ab0b5d6c50d978e02f0d12d4d070. The stack broke https://lab.llvm.org/buildbot/#/builders/252. --- bolt/runtime/common.h | 24 ------------------------ bolt/runtime/instr.cpp | 20 ++++++++++++++------ 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/bolt/runtime/common.h b/bolt/runtime/common.h index a929115..906ab27 100644 --- a/bolt/runtime/common.h +++ b/bolt/runtime/common.h @@ -82,30 +82,6 @@ typedef int int32_t; "pop %%rbx\n" \ "pop %%rax\n" -#define PROT_READ 0x1 /* Page can be read. */ -#define PROT_WRITE 0x2 /* Page can be written. */ -#define PROT_EXEC 0x4 /* Page can be executed. */ -#define PROT_NONE 0x0 /* Page can not be accessed. */ -#define PROT_GROWSDOWN \ - 0x01000000 /* Extend change to start of \ - growsdown vma (mprotect only). */ -#define PROT_GROWSUP \ - 0x02000000 /* Extend change to start of \ - growsup vma (mprotect only). */ - -/* Sharing types (must choose one and only one of these). */ -#define MAP_SHARED 0x01 /* Share changes. */ -#define MAP_PRIVATE 0x02 /* Changes are private. */ -#define MAP_FIXED 0x10 /* Interpret addr exactly. */ - -#if defined(__APPLE__) -#define MAP_ANONYMOUS 0x1000 -#else -#define MAP_ANONYMOUS 0x20 -#endif - -#define MAP_FAILED ((void *)-1) - // Functions that are required by freestanding environment. Compiler may // generate calls to these implicitly. extern "C" { diff --git a/bolt/runtime/instr.cpp b/bolt/runtime/instr.cpp index 1070980..cbfc19e 100644 --- a/bolt/runtime/instr.cpp +++ b/bolt/runtime/instr.cpp @@ -134,9 +134,16 @@ public: Lock L(M); if (StackBase == nullptr) { +#if defined(__APPLE__) + int MAP_PRIVATE_MAP_ANONYMOUS = 0x1002; +#else + int MAP_PRIVATE_MAP_ANONYMOUS = 0x22; +#endif StackBase = reinterpret_cast( - __mmap(0, MaxSize, PROT_READ | PROT_WRITE, - (Shared ? MAP_SHARED : MAP_PRIVATE) | MAP_ANONYMOUS, -1, 0)); + __mmap(0, MaxSize, 0x3 /* PROT_READ | PROT_WRITE*/, + Shared ? 0x21 /*MAP_SHARED | MAP_ANONYMOUS*/ + : MAP_PRIVATE_MAP_ANONYMOUS /* MAP_PRIVATE | MAP_ANONYMOUS*/, + -1, 0)); StackSize = 0; } @@ -707,7 +714,7 @@ ProfileWriterContext readDescriptions() { // mmap our binary to memory uint64_t Size = __lseek(FD, 0, 2 /*SEEK_END*/); uint8_t *BinContents = reinterpret_cast( - __mmap(0, Size, PROT_READ, MAP_PRIVATE, FD, 0)); + __mmap(0, Size, 0x1 /* PROT_READ*/, 0x2 /* MAP_PRIVATE*/, FD, 0)); Result.MMapPtr = BinContents; Result.MMapSize = Size; Elf64_Ehdr *Hdr = reinterpret_cast(BinContents); @@ -1593,9 +1600,10 @@ extern "C" void __attribute((force_align_arg_pointer)) __bolt_instr_setup() { assert (CountersEnd > CountersStart, "no counters"); // Maps our counters to be shared instead of private, so we keep counting for // forked processes - void *Ret = - __mmap(CountersStart, CountersEnd - CountersStart, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_SHARED | MAP_FIXED, -1, 0); + __mmap(CountersStart, CountersEnd - CountersStart, + 0x3 /*PROT_READ|PROT_WRITE*/, + 0x31 /*MAP_ANONYMOUS | MAP_SHARED | MAP_FIXED*/, -1, 0); + __bolt_ind_call_counter_func_pointer = __bolt_instr_indirect_call; __bolt_ind_tailcall_counter_func_pointer = __bolt_instr_indirect_tailcall; // Conservatively reserve 100MiB shared pages -- 2.7.4