aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-05-05 00:28:39 +0000
committerDan Gohman <gohman@apple.com>2008-05-05 00:28:39 +0000
commita65530a04a5ad39718ea0ac848a7d329117a1b2f (patch)
treef42654f8d9d6b2d0310b31500cedd1a0f93e05bb /include
parent4fbf00ba28ee2163b6aaece9bca4dffed3167f07 (diff)
downloadexternal_llvm-a65530a04a5ad39718ea0ac848a7d329117a1b2f.zip
external_llvm-a65530a04a5ad39718ea0ac848a7d329117a1b2f.tar.gz
external_llvm-a65530a04a5ad39718ea0ac848a7d329117a1b2f.tar.bz2
Add AsmPrinter support for emitting a directive to declare that
the code being generated does not require an executable stack. Also, add target-specific code to make use of this on Linux on x86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50634 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Target/TargetAsmInfo.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h
index 7fd88b2..b635cb2 100644
--- a/include/llvm/Target/TargetAsmInfo.h
+++ b/include/llvm/Target/TargetAsmInfo.h
@@ -61,10 +61,16 @@ namespace llvm {
/// Null if this target doesn't support a BSS section.
///
const char *TLSBSSSection;// Default to ".section .tbss,"awT",@nobits".
+
/// ZeroFillDirective - Directive for emitting a global to the ZeroFill
/// section on this target. Null if this target doesn't support zerofill.
const char *ZeroFillDirective; // Default is null.
+ /// NonexecutableStackDirective - Directive for declaring to the
+ /// linker and beyond that the emitted code does not require stack
+ /// memory to be executable.
+ const char *NonexecutableStackDirective; // Default is null.
+
/// NeedsSet - True if target asm treats expressions in data directives
/// as linktime-relocatable. For assembly-time computation, we need to
/// use a .set. Thus:
@@ -440,6 +446,9 @@ namespace llvm {
const char *getZeroFillDirective() const {
return ZeroFillDirective;
}
+ const char *getNonexecutableStackDirective() const {
+ return NonexecutableStackDirective;
+ }
bool needsSet() const {
return NeedsSet;
}