@@ -2,8 +2,8 @@ use std::path::{Path, PathBuf};
2
2
3
3
use crate :: { env_var, Command } ;
4
4
5
- /// Construct a new `llvm-readobj` invocation. This assumes that `llvm-readobj` is available
6
- /// at `$LLVM_BIN_DIR/llvm-readobj`.
5
+ /// Construct a new `llvm-readobj` invocation with the `GNU` output style.
6
+ /// This assumes that `llvm-readobj` is available at `$LLVM_BIN_DIR/llvm-readobj`.
7
7
#[ track_caller]
8
8
pub fn llvm_readobj ( ) -> LlvmReadobj {
9
9
LlvmReadobj :: new ( )
@@ -56,13 +56,24 @@ pub fn llvm_bin_dir() -> PathBuf {
56
56
}
57
57
58
58
impl LlvmReadobj {
59
- /// Construct a new `llvm-readobj` invocation. This assumes that `llvm-readobj` is available
60
- /// at `$LLVM_BIN_DIR/llvm-readobj`.
59
+ /// Construct a new `llvm-readobj` invocation with the `GNU` output style.
60
+ /// This assumes that `llvm-readobj` is available at `$LLVM_BIN_DIR/llvm-readobj`.
61
61
#[ track_caller]
62
62
pub fn new ( ) -> Self {
63
63
let llvm_readobj = llvm_bin_dir ( ) . join ( "llvm-readobj" ) ;
64
64
let cmd = Command :: new ( llvm_readobj) ;
65
- Self { cmd }
65
+ let mut readobj = Self { cmd } ;
66
+ readobj. elf_output_style ( "GNU" ) ;
67
+ readobj
68
+ }
69
+
70
+ /// Specify the format of the ELF information.
71
+ ///
72
+ /// Valid options are `LLVM` (default), `GNU`, and `JSON`.
73
+ pub fn elf_output_style ( & mut self , style : & str ) -> & mut Self {
74
+ self . cmd . arg ( "--elf-output-style" ) ;
75
+ self . cmd . arg ( style) ;
76
+ self
66
77
}
67
78
68
79
/// Provide an input file.
@@ -76,6 +87,13 @@ impl LlvmReadobj {
76
87
self . cmd . arg ( "--file-header" ) ;
77
88
self
78
89
}
90
+
91
+ /// Specify the section to display.
92
+ pub fn section ( & mut self , section : & str ) -> & mut Self {
93
+ self . cmd . arg ( "--string-dump" ) ;
94
+ self . cmd . arg ( section) ;
95
+ self
96
+ }
79
97
}
80
98
81
99
impl LlvmProfdata {
0 commit comments