@@ -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 ( )
@@ -70,13 +70,24 @@ pub fn llvm_bin_dir() -> PathBuf {
70
70
}
71
71
72
72
impl LlvmReadobj {
73
- /// Construct a new `llvm-readobj` invocation. This assumes that `llvm-readobj` is available
74
- /// at `$LLVM_BIN_DIR/llvm-readobj`.
73
+ /// Construct a new `llvm-readobj` invocation with the `GNU` output style.
74
+ /// This assumes that `llvm-readobj` is available at `$LLVM_BIN_DIR/llvm-readobj`.
75
75
#[ track_caller]
76
76
pub fn new ( ) -> Self {
77
77
let llvm_readobj = llvm_bin_dir ( ) . join ( "llvm-readobj" ) ;
78
78
let cmd = Command :: new ( llvm_readobj) ;
79
- Self { cmd }
79
+ let mut readobj = Self { cmd } ;
80
+ readobj. elf_output_style ( "GNU" ) ;
81
+ readobj
82
+ }
83
+
84
+ /// Specify the format of the ELF information.
85
+ ///
86
+ /// Valid options are `LLVM` (default), `GNU`, and `JSON`.
87
+ pub fn elf_output_style ( & mut self , style : & str ) -> & mut Self {
88
+ self . cmd . arg ( "--elf-output-style" ) ;
89
+ self . cmd . arg ( style) ;
90
+ self
80
91
}
81
92
82
93
/// Provide an input file.
@@ -90,6 +101,13 @@ impl LlvmReadobj {
90
101
self . cmd . arg ( "--file-header" ) ;
91
102
self
92
103
}
104
+
105
+ /// Specify the section to display.
106
+ pub fn section ( & mut self , section : & str ) -> & mut Self {
107
+ self . cmd . arg ( "--string-dump" ) ;
108
+ self . cmd . arg ( section) ;
109
+ self
110
+ }
93
111
}
94
112
95
113
impl LlvmProfdata {
0 commit comments