cg_llvm: split dwarf filename and comp dir
llvm-dwp concatenates `DW_AT_comp_dir` with `DW_AT_GNU_dwo_name` (only when `DW_AT_comp_dir` exists), which can result in it failing to find the DWARF object files. In earlier testing, `DW_AT_comp_dir` wasn't present in the final object and the current directory was the output directory. When running tests through compiletest, the working directory of the compilation is different from output directory and that resulted in `DW_AT_comp_dir` being in the object file (and set to the current working directory, rather than the output directory), and `DW_AT_GNU_dwo_name` being set to the full path (rather than just the filename), so llvm-dwp was failing. This commit changes the compilation directory provided to LLVM to match the output directory, where DWARF objects are output; and ensures that only the filename is used for `DW_AT_GNU_dwo_name`. Signed-off-by: David Wood <david@davidtw.co>
This commit is contained in:
parent
99ad915e32
commit
ee073b5ec5
5 changed files with 21 additions and 8 deletions
|
@ -617,9 +617,20 @@ impl OutputFilenames {
|
|||
path
|
||||
}
|
||||
|
||||
/// Returns the name of the Split DWARF file - this can differ depending on which Split DWARF
|
||||
/// mode is being used, which is the logic that this function is intended to encapsulate.
|
||||
pub fn split_dwarf_filename(
|
||||
&self,
|
||||
split_dwarf_kind: SplitDwarfKind,
|
||||
cgu_name: Option<&str>,
|
||||
) -> Option<PathBuf> {
|
||||
self.split_dwarf_path(split_dwarf_kind, cgu_name)
|
||||
.map(|path| path.strip_prefix(&self.out_directory).unwrap_or(&path).to_path_buf())
|
||||
}
|
||||
|
||||
/// Returns the path for the Split DWARF file - this can differ depending on which Split DWARF
|
||||
/// mode is being used, which is the logic that this function is intended to encapsulate.
|
||||
pub fn split_dwarf_file(
|
||||
pub fn split_dwarf_path(
|
||||
&self,
|
||||
split_dwarf_kind: SplitDwarfKind,
|
||||
cgu_name: Option<&str>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue