From 6c85992c6da7ee88265e4ff7f69776b520d54891 Mon Sep 17 00:00:00 2001 From: Alexander Richardson Date: Mon, 19 Feb 2018 19:53:44 +0000 Subject: [PATCH] [llvm-objcopy] Use the full filename in --add-gnu-debuglink Summary: The current implementation was writing the file name without the extension whereas GNU objcopy writes the full filename. With this change GDB will now load the .debug file instead of silently ignoring it. Reviewers: jakehehrlich, jhenderson Reviewed By: jakehehrlich Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D43474 llvm-svn: 325528 --- llvm/test/tools/llvm-objcopy/add-gnu-debuglink.test | 5 +++-- llvm/tools/llvm-objcopy/Object.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/llvm/test/tools/llvm-objcopy/add-gnu-debuglink.test b/llvm/test/tools/llvm-objcopy/add-gnu-debuglink.test index c858640..16f4637 100644 --- a/llvm/test/tools/llvm-objcopy/add-gnu-debuglink.test +++ b/llvm/test/tools/llvm-objcopy/add-gnu-debuglink.test @@ -16,12 +16,13 @@ FileHeader: # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 # CHECK-NEXT: Offset: -# CHECK-NEXT: Size: 32 +# CHECK-NEXT: Size: 36 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 # CHECK-NEXT: AddressAlignment: 4 # CHECK-NEXT: EntrySize: 0 # CHECK-NEXT: SectionData ( # CHECK-NEXT: 0000: 6164642D 676E752D 64656275 676C696E |add-gnu-debuglin| -# CHECK-NEXT: 0010: 6B2E7465 73742E74 6D700000 72C49B0C |k.test.tmp..r...| +# CHECK-NEXT: 0010: 6B2E7465 73742E74 6D702E62 6C6F6200 |k.test.tmp.blob.| +# CHECK-NEXT: 0020: 72C49B0C |r...| # CHECK-NEXT: ) diff --git a/llvm/tools/llvm-objcopy/Object.cpp b/llvm/tools/llvm-objcopy/Object.cpp index 53291a3..b3ad732 100644 --- a/llvm/tools/llvm-objcopy/Object.cpp +++ b/llvm/tools/llvm-objcopy/Object.cpp @@ -371,8 +371,8 @@ void SectionWithStrTab::initialize(SectionTableRef SecTable) { void SectionWithStrTab::finalize() { this->Link = StrTab->Index; } void GnuDebugLinkSection::init(StringRef File, StringRef Data) { - FileName = sys::path::stem(File); - // The format for the .gnu_debuglink starts with the stemmed file name and is + FileName = sys::path::filename(File); + // The format for the .gnu_debuglink starts with the file name and is // followed by a null terminator and then the CRC32 of the file. The CRC32 // should be 4 byte aligned. So we add the FileName size, a 1 for the null // byte, and then finally push the size to alignment and add 4. -- 2.7.4