llvm/compiler-rt/lib/builtins/enable_execute_stack.c

//===-- enable_execute_stack.c - Implement __enable_execute_stack ---------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "int_lib.h"

#ifndef _WIN32
#include <sys/mman.h>
#endif

// #include "config.h"
// FIXME: CMake - include when cmake system is ready.
// Remove #define HAVE_SYSCONF 1 line.
#define HAVE_SYSCONF

#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#else
#ifndef __APPLE__
#include <unistd.h>
#endif // __APPLE__
#endif // _WIN32

#if __LP64__
#define TRAMPOLINE_SIZE
#else
#define TRAMPOLINE_SIZE
#endif

// The compiler generates calls to __enable_execute_stack() when creating
// trampoline functions on the stack for use with nested functions.
// It is expected to mark the page(s) containing the address
// and the next 48 bytes as executable.  Since the stack is normally rw-
// that means changing the protection on those page(s) to rwx.

COMPILER_RT_ABI void __enable_execute_stack(void *addr) {}