cg: use thorin instead of llvm-dwp
`thorin` is a Rust implementation of a DWARF packaging utility that supports reading DWARF objects from archive files (i.e. rlibs) and therefore is better suited for integration into rustc. Signed-off-by: David Wood <david.wood@huawei.com>
This commit is contained in:
parent
08ed338f56
commit
2dc1a8a779
10 changed files with 259 additions and 90 deletions
|
|
@ -57,7 +57,45 @@ packed-single:
|
|||
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
|
||||
rm -rf $(TMPDIR)/*.dwp
|
||||
|
||||
unpacked: unpacked-split unpacked-single
|
||||
packed-remapped: packed-remapped-split packed-remapped-single
|
||||
|
||||
packed-remapped-split:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=packed -C debuginfo=2 \
|
||||
-Z split-dwarf-kind=split --remap-path-prefix $(TMPDIR)=/a foo.rs -g
|
||||
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
|
||||
|
||||
packed-remapped-single:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=packed -C debuginfo=2 \
|
||||
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a foo.rs -g
|
||||
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
|
||||
|
||||
packed-crosscrate: packed-crosscrate-split packed-crosscrate-single
|
||||
|
||||
packed-crosscrate-split:
|
||||
$(RUSTC) --crate-type lib -Z unstable-options -C split-debuginfo=packed \
|
||||
-Zsplit-dwarf-kind=split -C debuginfo=2 -g bar.rs
|
||||
ls $(TMPDIR)/*.rlib
|
||||
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
|
||||
ls $(TMPDIR)/*.dwp && exit 1 || exit 0
|
||||
$(RUSTC) --extern bar=$(TMPDIR)/libbar.rlib -Z unstable-options -C split-debuginfo=packed \
|
||||
-Zsplit-dwarf-kind=split -C debuginfo=2 -g main.rs
|
||||
rm $(TMPDIR)/*.dwo
|
||||
rm $(TMPDIR)/main.dwp
|
||||
rm $(TMPDIR)/$(call BIN,main)
|
||||
|
||||
packed-crosscrate-single:
|
||||
$(RUSTC) --crate-type lib -Z unstable-options -C split-debuginfo=packed \
|
||||
-Zsplit-dwarf-kind=single -C debuginfo=2 -g bar.rs
|
||||
ls $(TMPDIR)/*.rlib
|
||||
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
|
||||
ls $(TMPDIR)/*.dwp && exit 1 || exit 0
|
||||
$(RUSTC) --extern bar=$(TMPDIR)/libbar.rlib -Z unstable-options -C split-debuginfo=packed \
|
||||
-Zsplit-dwarf-kind=single -C debuginfo=2 -g main.rs
|
||||
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
|
||||
rm $(TMPDIR)/main.dwp
|
||||
rm $(TMPDIR)/$(call BIN,main)
|
||||
|
||||
unpacked: unpacked-split unpacked-single unpacked-remapped-split unpacked-remapped-single
|
||||
|
||||
unpacked-split:
|
||||
$(RUSTC) foo.rs -g -C split-debuginfo=unpacked -Z unstable-options -Zsplit-dwarf-kind=split
|
||||
|
|
@ -69,5 +107,15 @@ unpacked-single:
|
|||
$(RUSTC) foo.rs -g -C split-debuginfo=unpacked -Z unstable-options -Zsplit-dwarf-kind=single
|
||||
ls $(TMPDIR)/*.dwp && exit 1 || exit 0
|
||||
ls $(TMPDIR)/*.dwo && exit 1 || exit 0
|
||||
|
||||
unpacked-remapped-split:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=unpacked -C debuginfo=2 \
|
||||
-Z split-dwarf-kind=split --remap-path-prefix $(TMPDIR)=/a foo.rs -g
|
||||
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
|
||||
|
||||
unpacked-remapped-single:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=unpacked -C debuginfo=2 \
|
||||
-Z split-dwarf-kind=single --remap-path-prefix $(TMPDIR)=/a foo.rs -g
|
||||
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
|
||||
endif
|
||||
endif
|
||||
|
|
|
|||
13
src/test/run-make-fulldeps/split-debuginfo/bar.rs
Normal file
13
src/test/run-make-fulldeps/split-debuginfo/bar.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
pub struct Bar {
|
||||
x: u32,
|
||||
}
|
||||
|
||||
impl Bar {
|
||||
pub fn print(&self) {
|
||||
println!("{}", self.x);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn make_bar(x: u32) -> Bar {
|
||||
Bar { x }
|
||||
}
|
||||
|
|
@ -1 +1,15 @@
|
|||
pub struct Foo {
|
||||
x: u32,
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
pub fn print(&self) {
|
||||
println!("{}", self.x);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn make_foo(x: u32) -> Foo {
|
||||
Foo { x }
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
8
src/test/run-make-fulldeps/split-debuginfo/main.rs
Normal file
8
src/test/run-make-fulldeps/split-debuginfo/main.rs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
extern crate bar;
|
||||
|
||||
use bar::{Bar, make_bar};
|
||||
|
||||
fn main() {
|
||||
let b = make_bar(3);
|
||||
b.print();
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
-include ../tools.mk
|
||||
|
||||
# only-linux
|
||||
|
||||
all: packed remapped
|
||||
|
||||
remapped:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=packed -C debuginfo=2 --remap-path-prefix $(TMPDIR)=/a foo.rs -g
|
||||
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
|
||||
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=unpacked -C debuginfo=2 --remap-path-prefix $(TMPDIR)=/a foo.rs -g
|
||||
objdump -Wi $(TMPDIR)/foo | grep DW_AT_GNU_dwo_name | (! grep $(TMPDIR)) || exit 1
|
||||
|
||||
packed:
|
||||
$(RUSTC) -Z unstable-options -C split-debuginfo=packed -C debuginfo=2 foo.rs -g
|
||||
rm $(TMPDIR)/foo.dwp
|
||||
rm $(TMPDIR)/$(call BIN,foo)
|
||||
|
|
@ -1 +0,0 @@
|
|||
fn main() {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue