[flang-commits] [flang] [flang][docs] Add an FAQ about an executable stack (PR #171241)

David Spickett via flang-commits flang-commits at lists.llvm.org
Wed Dec 10 07:53:28 PST 2025


================
@@ -0,0 +1,53 @@
+<!--===- docs/FAQ.md
+
+   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
+
+-->
+
+<!-- TODO: remove this after adding this page to ToC -->
+```{eval-rst}
+:orphan:
+```
+
+# Frequently Asked Questions (FAQ)
+
+```{contents}
+---
+local:
+---
+```
+
+## Driver
+
+### Why do I get a warning or error about an executable stack?
+
+This occurs because Flang's implementation of pointers to internal procedures requires an executable stack.
+
+When an internal procedure is referenced from outside its host scope (e.g., via a procedure pointer), the implementation must ensure that it can still access its host-associated variables.
+To achieve this, the current implementation of Flang generates a small piece of code, called a "trampoline", on the stack dynamically.
+Since this trampoline code must be executed, the stack needs to be executable.
----------------
DavidSpickett wrote:

Start this with the reason it must be executed. If the reader is not familiar with the trampoline metaphor in a computing context, it will help.

(humans bounce on trampolines too, but generally we prefer to land back on the trampoline)

Something like:
When the procedure is called, execution first goes through this trampoline. This means that the stack must be executable.

https://github.com/llvm/llvm-project/pull/171241


More information about the flang-commits mailing list