diff options
| author | Oneirical <manchot@videotron.ca> | 2024-05-30 16:20:49 -0400 |
|---|---|---|
| committer | Oneirical <manchot@videotron.ca> | 2024-06-18 14:38:33 -0400 |
| commit | 83cb760e2c2b9fa3f0bb90ad2941f4cbceba2255 (patch) | |
| tree | 3f9976697abc11cfabe309e7017567c585e5a388 /src | |
| parent | 8814b926f49bc5780753ed9533853679a1181357 (diff) | |
| download | rust-83cb760e2c2b9fa3f0bb90ad2941f4cbceba2255.tar.gz rust-83cb760e2c2b9fa3f0bb90ad2941f4cbceba2255.zip | |
run_make_support nm implementation + bin-emit-no-symbols rmake rewrite
Diffstat (limited to 'src')
| m--------- | src/doc/book | 0 | ||||
| m--------- | src/doc/edition-guide | 0 | ||||
| m--------- | src/doc/reference | 0 | ||||
| m--------- | src/doc/rust-by-example | 0 | ||||
| m--------- | src/doc/rustc-dev-guide | 0 | ||||
| m--------- | src/tools/cargo | 0 | ||||
| -rw-r--r-- | src/tools/run-make-support/src/nm/mod.rs | 48 | ||||
| -rw-r--r-- | src/tools/tidy/src/allowed_run_make_makefiles.txt | 1 |
8 files changed, 48 insertions, 1 deletions
diff --git a/src/doc/book b/src/doc/book -Subproject 45c1a6d69edfd1fc91fb7504cb73958dbd09441 +Subproject 5e9051f71638aa941cd5dda465e25c61cde9594 diff --git a/src/doc/edition-guide b/src/doc/edition-guide -Subproject cb58c430b4e8054c2cb81d2d4434092c482a93d +Subproject bbaabbe088e21a81a0d9ae6757705020d5d7b41 diff --git a/src/doc/reference b/src/doc/reference -Subproject 0b805c65804019b0ac8f2fe3117afad82a6069b +Subproject 6019b76f5b28938565b251bbba0bf5cc5c43d86 diff --git a/src/doc/rust-by-example b/src/doc/rust-by-example -Subproject b1d97bd6113aba732b2091ce093c76f2d05bb8a +Subproject 4840dca06cadf48b305d3ce0aeafde7f80933f8 diff --git a/src/doc/rustc-dev-guide b/src/doc/rustc-dev-guide -Subproject aec82168dd3121289a194b381f56076fc789a4d +Subproject 6a7374bd87cbac0f8be4fd4877d8186d9c31398 diff --git a/src/tools/cargo b/src/tools/cargo -Subproject a1f47ec3f7cd076986f1bfcd7061f2e8cb1a726 +Subproject 431db31d0dbeda320caf8ef8535ea48eb309340 diff --git a/src/tools/run-make-support/src/nm/mod.rs b/src/tools/run-make-support/src/nm/mod.rs new file mode 100644 index 00000000000..c304877eba1 --- /dev/null +++ b/src/tools/run-make-support/src/nm/mod.rs @@ -0,0 +1,48 @@ +use crate::{fs_wrapper, object}; +use object::{Object, ObjectSection}; +use std::path::Path; + +#[derive(Debug)] +pub struct Nm { + file: Option<object::File>, +} + +pub fn nm() -> Nm { + Nm::new() +} + +impl Nm { + /// Construct a bare `nm` invocation. + pub fn new() -> Self { + Self { file: None } + } + + /// Specify the file to analyze the symbols of. + pub fn input<P: AsRef<Path>>(&mut self, path: P) -> &mut Self { + &mut Self { + file: Some( + object::File::parse(fs_wrapper::read(path)) + .expect(format!("Failed to parse ELF file at {:?}", path.as_ref().display())), + ), + } + } + + /// Collect all symbols of an object file into a String. + pub fn collect_symbols(&self) -> String { + let object_file = self.file; + let mut symbols_str = String::new(); + for section in object_file.sections() { + if let Ok(ObjectSection::SymbolTable(st)) = section.parse::<object::SymbolTable>() { + for symbol in st.symbols() { + symbols_str.push_str(&format!( + "{:016x} {:?} {}\n", + symbol.address(), + symbol.kind(), + symbol.name() + )); + } + } + } + symbols_str + } +} diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index 1596257747f..98438e8004d 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -84,7 +84,6 @@ run-make/issue-37839/Makefile run-make/issue-40535/Makefile run-make/issue-47384/Makefile run-make/issue-47551/Makefile -run-make/issue-51671/Makefile run-make/issue-68794-textrel-on-minimal-lib/Makefile run-make/issue-69368/Makefile run-make/issue-83045/Makefile |
