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.
rust-nasm-rs/0001-nasm_rs-Force-the-dwar...

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 {