You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
From 3f711947d749ecdfbbec5af236e97d5b760b7710 Mon Sep 17 00:00:00 2001
|
|
From: Luca Barbato <lu_zero@gentoo.org>
|
|
Date: Tue, 10 Dec 2019 11:44:19 +0100
|
|
Subject: [PATCH] nasm_rs: Force the dwarf debug for elf targets
|
|
|
|
---
|
|
src/lib.rs | 27 ++++++++++++++-------------
|
|
1 file changed, 14 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/src/lib.rs b/src/lib.rs
|
|
index eb032a0a0..c48a84efc 100644
|
|
--- a/src/lib.rs
|
|
+++ b/src/lib.rs
|
|
@@ -9,35 +9,35 @@ use std::process::Stdio;
|
|
use std::path::{Path, PathBuf};
|
|
use std::ffi::OsString;
|
|
|
|
-fn x86_triple(os: &str) -> &'static str {
|
|
+fn x86_triple(os: &str) -> (&'static str, &'static str) {
|
|
match os {
|
|
- "darwin" | "ios" => "-fmacho32",
|
|
- "windows" => "-fwin32",
|
|
- _ => "-felf32"
|
|
+ "darwin" => ("-fmacho32", "-g"),
|
|
+ "windows" => ("-fwin32", "-g"),
|
|
+ _ => ("-felf32", "-gdwarf"),
|
|
}
|
|
}
|
|
|
|
-fn x86_64_triple(os: &str) -> &'static str {
|
|
+fn x86_64_triple(os: &str) -> (&'static str, &'static str) {
|
|
match os {
|
|
- "darwin" | "ios" => "-fmacho64",
|
|
- "windows" => "-fwin64",
|
|
- _ => "-felf64"
|
|
+ "darwin" => ("-fmacho64", "-g"),
|
|
+ "windows" => ("-fwin64", "-g"),
|
|
+ _ => ("-felf64", "-gdwarf"),
|
|
}
|
|
}
|
|
|
|
-fn parse_triple(trip: &str) -> &'static str {
|
|
+fn parse_triple(trip: &str) -> (&'static str, &'static str) {
|
|
let parts = trip.split('-').collect::<Vec<_>>();
|
|
// ARCH-VENDOR-OS-ENVIRONMENT
|
|
// or ARCH-VENDOR-OS
|
|
// we don't care about environ so doesn't matter if triple doesn't have it
|
|
if parts.len() < 3 {
|
|
- return ""
|
|
+ return ("", "");
|
|
}
|
|
|
|
match parts[0] {
|
|
"x86_64" => x86_64_triple(parts[2]),
|
|
"x86" | "i386" | "i586" | "i686" => x86_triple(parts[2]),
|
|
- _ => ""
|
|
+ _ => ("", ""),
|
|
}
|
|
}
|
|
|
|
@@ -228,10 +228,11 @@ impl Build {
|
|
}
|
|
|
|
fn get_args(&self, target: &str) -> Vec<&str> {
|
|
- let mut args = vec![parse_triple(&target)];
|
|
+ let (arch_flag, debug_flag) = parse_triple(&target);
|
|
+ let mut args = vec![arch_flag];
|
|
|
|
if self.debug {
|
|
- args.push("-g");
|
|
+ args.push(debug_flag);
|
|
}
|
|
|
|
for arg in &self.flags {
|