[RFC 3127 - Trim Paths]: Condition remapped filepath on remap scopes
This commit is contained in:
parent
8c3eda36df
commit
2f461b74ff
@ -414,11 +414,12 @@ impl<'tcx> FunctionCx<'_, '_, 'tcx> {
|
|||||||
// Note: must be kept in sync with get_caller_location from cg_ssa
|
// Note: must be kept in sync with get_caller_location from cg_ssa
|
||||||
pub(crate) fn get_caller_location(&mut self, mut source_info: mir::SourceInfo) -> CValue<'tcx> {
|
pub(crate) fn get_caller_location(&mut self, mut source_info: mir::SourceInfo) -> CValue<'tcx> {
|
||||||
let span_to_caller_location = |fx: &mut FunctionCx<'_, '_, 'tcx>, span: Span| {
|
let span_to_caller_location = |fx: &mut FunctionCx<'_, '_, 'tcx>, span: Span| {
|
||||||
|
use rustc_session::RemapFileNameExt;
|
||||||
let topmost = span.ctxt().outer_expn().expansion_cause().unwrap_or(span);
|
let topmost = span.ctxt().outer_expn().expansion_cause().unwrap_or(span);
|
||||||
let caller = fx.tcx.sess.source_map().lookup_char_pos(topmost.lo());
|
let caller = fx.tcx.sess.source_map().lookup_char_pos(topmost.lo());
|
||||||
let const_loc = fx.tcx.const_caller_location((
|
let const_loc = fx.tcx.const_caller_location((
|
||||||
rustc_span::symbol::Symbol::intern(
|
rustc_span::symbol::Symbol::intern(
|
||||||
&caller.file.name.prefer_remapped().to_string_lossy(),
|
&caller.file.name.for_codegen(&fx.tcx.sess).to_string_lossy(),
|
||||||
),
|
),
|
||||||
caller.line as u32,
|
caller.line as u32,
|
||||||
caller.col_display as u32 + 1,
|
caller.col_display as u32 + 1,
|
||||||
|
@ -95,7 +95,11 @@ impl DebugContext {
|
|||||||
match &source_file.name {
|
match &source_file.name {
|
||||||
FileName::Real(path) => {
|
FileName::Real(path) => {
|
||||||
let (dir_path, file_name) =
|
let (dir_path, file_name) =
|
||||||
split_path_dir_and_file(path.remapped_path_if_available());
|
split_path_dir_and_file(if self.should_remap_filepaths {
|
||||||
|
path.remapped_path_if_available()
|
||||||
|
} else {
|
||||||
|
path.local_path_if_available()
|
||||||
|
});
|
||||||
let dir_name = osstr_as_utf8_bytes(dir_path.as_os_str());
|
let dir_name = osstr_as_utf8_bytes(dir_path.as_os_str());
|
||||||
let file_name = osstr_as_utf8_bytes(file_name);
|
let file_name = osstr_as_utf8_bytes(file_name);
|
||||||
|
|
||||||
@ -116,7 +120,14 @@ impl DebugContext {
|
|||||||
filename => {
|
filename => {
|
||||||
let dir_id = line_program.default_directory();
|
let dir_id = line_program.default_directory();
|
||||||
let dummy_file_name = LineString::new(
|
let dummy_file_name = LineString::new(
|
||||||
filename.prefer_remapped().to_string().into_bytes(),
|
filename
|
||||||
|
.display(if self.should_remap_filepaths {
|
||||||
|
FileNameDisplayPreference::Remapped
|
||||||
|
} else {
|
||||||
|
FileNameDisplayPreference::Local
|
||||||
|
})
|
||||||
|
.to_string()
|
||||||
|
.into_bytes(),
|
||||||
line_program.encoding(),
|
line_program.encoding(),
|
||||||
line_strings,
|
line_strings,
|
||||||
);
|
);
|
||||||
|
@ -31,6 +31,8 @@ pub(crate) struct DebugContext {
|
|||||||
|
|
||||||
dwarf: DwarfUnit,
|
dwarf: DwarfUnit,
|
||||||
unit_range_list: RangeList,
|
unit_range_list: RangeList,
|
||||||
|
|
||||||
|
should_remap_filepaths: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) struct FunctionDebugContext {
|
pub(crate) struct FunctionDebugContext {
|
||||||
@ -63,12 +65,18 @@ impl DebugContext {
|
|||||||
|
|
||||||
let mut dwarf = DwarfUnit::new(encoding);
|
let mut dwarf = DwarfUnit::new(encoding);
|
||||||
|
|
||||||
|
let should_remap_filepaths = tcx.sess.should_prefer_remapped_for_codegen();
|
||||||
|
|
||||||
let producer = producer();
|
let producer = producer();
|
||||||
let comp_dir = tcx
|
let comp_dir = tcx
|
||||||
.sess
|
.sess
|
||||||
.opts
|
.opts
|
||||||
.working_dir
|
.working_dir
|
||||||
.to_string_lossy(FileNameDisplayPreference::Remapped)
|
.to_string_lossy(if should_remap_filepaths {
|
||||||
|
FileNameDisplayPreference::Remapped
|
||||||
|
} else {
|
||||||
|
FileNameDisplayPreference::Local
|
||||||
|
})
|
||||||
.into_owned();
|
.into_owned();
|
||||||
let (name, file_info) = match tcx.sess.local_crate_source_file() {
|
let (name, file_info) = match tcx.sess.local_crate_source_file() {
|
||||||
Some(path) => {
|
Some(path) => {
|
||||||
@ -102,7 +110,12 @@ impl DebugContext {
|
|||||||
root.set(gimli::DW_AT_low_pc, AttributeValue::Address(Address::Constant(0)));
|
root.set(gimli::DW_AT_low_pc, AttributeValue::Address(Address::Constant(0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
DebugContext { endian, dwarf, unit_range_list: RangeList(Vec::new()) }
|
DebugContext {
|
||||||
|
endian,
|
||||||
|
dwarf,
|
||||||
|
unit_range_list: RangeList(Vec::new()),
|
||||||
|
should_remap_filepaths,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn define_function(
|
pub(crate) fn define_function(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user