Skip to content

Commit 2079efa

Browse files
committed
add pipeline settings for inlines/mangling, pass feature flag to minidump-debugger
1 parent e99f05e commit 2079efa

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

pipeline.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
# These files are basically Cargo.toml dependencies, that minidump-pipeline
55
# will use to fetch binaries, either with `cargo install` or `cargo build`.
66

7-
7+
inlines = true
8+
rust-mangling = "v0"
89

910
# [my-example-dep]
1011
# # via crates.io (the default, if version not specified, uses latest):
@@ -30,6 +31,7 @@ branch = "inline"
3031

3132
# optional! (only used when you pass --debugger)
3233
[minidump-debugger]
34+
features = ["inline"]
3335
git = "https://github.com/Gankra/minidump-debugger"
3436
branch = "inline"
3537
# path = "../minidump-debugger/"

src/main.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ struct Cli {
4141

4242
#[derive(Debug, Clone, Deserialize)]
4343
struct ConfigFile {
44+
/// Whether to pass --inlines to dump_syms (cli flag overrides this)
45+
inlines: Option<bool>,
46+
47+
/// What custom `-Csymbol-mangling-version` should be passed to rustc
48+
#[serde(rename = "rust-mangling")]
49+
rust_mangling: Option<String>,
50+
51+
// Various dirs
4452
#[serde(default = "default_run_dir")]
4553
run_dir: String,
4654
#[serde(default = "default_install_dir")]
@@ -52,6 +60,7 @@ struct ConfigFile {
5260
#[serde(default = "default_report_dir")]
5361
report_dir: String,
5462

63+
// Various deps
5564
#[serde(rename = "minidump-stackwalk")]
5665
minidump_stackwalk: Dep,
5766
dump_syms: Dep,
@@ -131,6 +140,7 @@ struct BuildEnv {
131140
dump_dir: Utf8PathBuf,
132141
report_dir: Utf8PathBuf,
133142
run_dir: Utf8PathBuf,
143+
rust_mangling: Option<String>,
134144
}
135145

136146
/////////////////////////////////////////////////////////
@@ -293,6 +303,7 @@ fn do_pipeline(cli: &Cli, config: &ConfigFile) -> Result<(), PipelineError> {
293303
report_dir: run_dir.join(&config.report_dir),
294304
run_dir,
295305
_root_dir: root_dir,
306+
rust_mangling: config.rust_mangling.clone(),
296307
};
297308

298309
if env.run_dir.exists() {
@@ -324,13 +335,15 @@ fn do_pipeline(cli: &Cli, config: &ConfigFile) -> Result<(), PipelineError> {
324335
println!("artifacts built!");
325336
println!();
326337

338+
let default_inlines = false;
339+
let inlines = config.inlines.unwrap_or(default_inlines) || cli.inlines;
327340
let app_sym = do_dump_syms(
328341
&dump_syms.installed,
329342
app.orig_bin_path
330343
.as_ref()
331344
.expect("app must be rebuilt for dump_syms!"),
332345
&env,
333-
cli.inlines,
346+
inlines,
334347
)?;
335348
let client_sym = do_dump_syms(
336349
&dump_syms.installed,
@@ -339,7 +352,7 @@ fn do_pipeline(cli: &Cli, config: &ConfigFile) -> Result<(), PipelineError> {
339352
.as_ref()
340353
.expect("crash-client must be rebuilt for dump_syms!"),
341354
&env,
342-
cli.inlines,
355+
inlines,
343356
)?;
344357
let suite = do_get_suite(&app.installed)?;
345358

@@ -710,6 +723,10 @@ fn build(to_build: &str, dep: &Dep, env: &BuildEnv) -> Result<InstallOutput, Pip
710723
if cfg!(target_os = "macos") {
711724
rustflags.push_str(" -Csplit-debuginfo=packed");
712725
}
726+
if let Some(rust_mangling) = &env.rust_mangling {
727+
use std::fmt::Write;
728+
write!(rustflags, " -Csymbol-mangling-version={}", rust_mangling).unwrap();
729+
}
713730

714731
command.env("RUSTFLAGS", rustflags);
715732
}

0 commit comments

Comments
 (0)