summary refs log tree commit diff
path: root/src/libcompiler_builtins
diff options
context:
space:
mode:
authorShawn Walker-Salas <shawn.walker@oracle.com>2017-02-16 21:19:43 -0800
committerShawn Walker-Salas <shawn.walker@oracle.com>2017-02-16 21:40:14 -0800
commit2e756e22b3d5ffcb9cf8b199796ecb35cfc7b415 (patch)
tree50b3ee502357f3b8912077327bf28c74c2149b92 /src/libcompiler_builtins
parent087c2337c156af2f7e408145737b2415e66693da (diff)
downloadrust-2e756e22b3d5ffcb9cf8b199796ecb35cfc7b415.tar.gz
rust-2e756e22b3d5ffcb9cf8b199796ecb35cfc7b415.zip
add solaris sparcv9 support
* Update bootstrap to recognize the cputype 'sparcv9' (used on Solaris)
* Change to never use -fomit-frame-pointer on Solaris or for sparc
* Adds rust target sparcv9-sun-solaris

Fixes #39901
Diffstat (limited to 'src/libcompiler_builtins')
-rw-r--r--src/libcompiler_builtins/build.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libcompiler_builtins/build.rs b/src/libcompiler_builtins/build.rs
index 5360bbdeacd..16ecf882566 100644
--- a/src/libcompiler_builtins/build.rs
+++ b/src/libcompiler_builtins/build.rs
@@ -92,7 +92,15 @@ fn main() {
         // compiler-rt's build system already
         cfg.flag("-fno-builtin");
         cfg.flag("-fvisibility=hidden");
-        cfg.flag("-fomit-frame-pointer");
+        // Accepted practice on Solaris is to never omit frame pointer so that
+        // system observability tools work as expected.  In addition, at least
+        // on Solaris, -fomit-frame-pointer on sparcv9 appears to generate
+        // references to data outside of the current stack frame.  A search of
+        // the gcc bug database provides a variety of issues surrounding
+        // -fomit-frame-pointer on non-x86 platforms.
+        if !target.contains("solaris") && !target.contains("sparc") {
+            cfg.flag("-fomit-frame-pointer");
+        }
         cfg.flag("-ffreestanding");
         cfg.define("VISIBILITY_HIDDEN", None);
     }