message: Fix line debuginfo malformness in presence of macros
diff: use crate::prelude::*;
  -use std::path::Path;
  use std::marker::PhantomData;
  +use syntax::source_map::FileName;
  +
  use gimli::write::{
  Address, AttributeValue, CompilationUnit, DebugAbbrev, DebugInfo, DebugLine, DebugRanges,
  DebugRngLists, DebugStr, EndianVec, LineProgram, LineProgramId, LineProgramTable, Range,
  @@ -24,16 +25,29 @@ fn target_endian(tcx: TyCtxt) -> RunTimeEndian {
  }
  }
  -fn line_program_add_file<P: AsRef<Path>>(line_program: &mut LineProgram, file: P) -> FileId {
  - let file = file.as_ref();
  +fn line_program_add_file(line_program: &mut LineProgram, file: &FileName) -> FileId {
  + match file {
  + FileName::Real(path) => {
  let dir_id =
  - line_program.add_directory(file.parent().unwrap().to_str().unwrap().as_bytes());
  + line_program.add_directory(path.parent().unwrap().to_str().unwrap().as_bytes());
  line_program.add_file(
  - file.file_name().unwrap().to_str().unwrap().as_bytes(),
  + path.file_name().unwrap().to_str().unwrap().as_bytes(),
  dir_id,
  None,
  )
  }
  + // FIXME give more appropriate file names
  + _ => {
  + let dir_id = line_program.default_directory();
  + line_program.add_file(
  + file.to_string().as_bytes(),
  + dir_id,
  + None,
  + )
  + }
  + }
  +
  +}
  struct DebugReloc {
  offset: u32,
  @@ -146,7 +160,7 @@ fn emit_location(&mut self, tcx: TyCtxt<'a, 'tcx, 'tcx>, entry_id: UnitEntryId,
  let loc = tcx.sess.source_map().lookup_char_pos(span.lo());
  let line_program = self.line_programs.get_mut(self.global_line_program);
  - let file_id = line_program_add_file(line_program, loc.file.name.to_string());
  + let file_id = line_program_add_file(line_program, &loc.file.name);
  let unit = self.units.get_mut(self.unit_id);
  let entry = unit.get_mut(entry_id);
  @@ -347,7 +361,7 @@ pub fn define(
  let create_row_for_span = |line_program: &mut LineProgram, span: Span| {
  let loc = tcx.sess.source_map().lookup_char_pos(span.lo());
  - let file_id = line_program_add_file(line_program, loc.file.name.to_string());
  + let file_id = line_program_add_file(line_program, &loc.file.name);
  /*println!(
  "srcloc {:>04X} {}:{}:{}",
  