Skip to content

Commit

Permalink
[llvm-objcopy] Use the full filename in --add-gnu-debuglink
Browse files Browse the repository at this point in the history
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
  • Loading branch information
arichardson committed Feb 19, 2018
1 parent e60f147 commit 6c85992
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
5 changes: 3 additions & 2 deletions llvm/test/tools/llvm-objcopy/add-gnu-debuglink.test
Original file line number Diff line number Diff line change
Expand Up @@ -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: )
4 changes: 2 additions & 2 deletions llvm/tools/llvm-objcopy/Object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 6c85992

Please sign in to comment.