Make .file directive to have basename only
Summary:
Currently LLVM puts directory along with the filename in .file directive, but this behavior doesn't match gcc. There's a no clear description about which one is right (https://sourceware.org/binutils/docs/as/File.html#File), but one document (https://sourceware.org/gdb/current/onlinedocs/stabs/ELF-Linker-Relocation.html) suggests that STT_FILE symbol in elf file is expected to have basename only, which should have a same sting file .file directive according to (https://docs.oracle.com/cd/E26502_01/html/E28388/eoiyg.html).
This also affects badly on the build system that uses hashing, as the directory info could be differnt from developer to developer even when they're working on same file.
Reviewers: pcc, mehdi_amini
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D36018
llvm-svn: 310642
diff --git a/llvm/test/CodeGen/X86/file-directive.ll b/llvm/test/CodeGen/X86/file-directive.ll
new file mode 100644
index 0000000..4b25a09
--- /dev/null
+++ b/llvm/test/CodeGen/X86/file-directive.ll
@@ -0,0 +1,13 @@
+; RUN: llc -mtriple=x86_64-linux-gnu -filetype=asm < %s | FileCheck %s --check-prefix=DIRECTIVE
+; RUN: llc -mtriple=x86_64-linux-gnu -filetype=obj < %s | llvm-readobj -symbols | FileCheck %s --check-prefix=STT-FILE
+
+; DIRECTIVE: .file "foobar"
+; STT-FILE: Name: foobar
+; STT-FILE-NEXT: Value: 0x0
+; STT-FILE-NEXT: Size: 0
+; STT-FILE-NEXT: Binding: Local
+; STT-FILE-NEXT: Type: File
+; STT-FILE-NEXT: Other: 0
+; STT-FILE-NEXT: Section: Absolute
+
+source_filename = "/path/to/foobar"