@@ -2,8 +2,8 @@ use std::path::{Path, PathBuf};
22
33use crate :: { env_var, Command } ;
44
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`.
77#[ track_caller]
88pub fn llvm_readobj ( ) -> LlvmReadobj {
99 LlvmReadobj :: new ( )
@@ -70,13 +70,24 @@ pub fn llvm_bin_dir() -> PathBuf {
7070}
7171
7272impl 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`.
7575 #[ track_caller]
7676 pub fn new ( ) -> Self {
7777 let llvm_readobj = llvm_bin_dir ( ) . join ( "llvm-readobj" ) ;
7878 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
8091 }
8192
8293 /// Provide an input file.
@@ -90,6 +101,13 @@ impl LlvmReadobj {
90101 self . cmd . arg ( "--file-header" ) ;
91102 self
92103 }
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+ }
93111}
94112
95113impl LlvmProfdata {
0 commit comments