From 32f6332ef1a600a98c971614639e49aac239e18f Mon Sep 17 00:00:00 2001 From: George Rimar Date: Thu, 28 Feb 2019 08:21:50 +0000 Subject: [PATCH] [llvm-objdump] - Improve the error message for "removing a section that is used by relocation" case. This refines/improves the error message introduced in D58625 Differential revision: https://reviews.llvm.org/D58709 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355074 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-objcopy/ELF/strip-section-err.test | 2 +- tools/llvm-objcopy/ELF/Object.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/test/tools/llvm-objcopy/ELF/strip-section-err.test b/test/tools/llvm-objcopy/ELF/strip-section-err.test index f95185aba62..9bcea100bb9 100644 --- a/test/tools/llvm-objcopy/ELF/strip-section-err.test +++ b/test/tools/llvm-objcopy/ELF/strip-section-err.test @@ -3,7 +3,7 @@ # RUN: yaml2obj %s > %t1 # RUN: not llvm-objcopy -R .data %t1 2>&1 | FileCheck %s -# CHECK: error: Section .data cannot be removed because of symbol 'foo' used by the relocation patching offset 0x1 from section .rela.text. +# CHECK: error: Section .data can't be removed: (.text+0x1) has relocation against symbol 'foo' ## Check the behavior when we also remove the relocation section. ## We have no reference in this case and hence no error should be emitted. diff --git a/tools/llvm-objcopy/ELF/Object.cpp b/tools/llvm-objcopy/ELF/Object.cpp index a3ddfbec35d..e2944ae3e24 100644 --- a/tools/llvm-objcopy/ELF/Object.cpp +++ b/tools/llvm-objcopy/ELF/Object.cpp @@ -557,12 +557,12 @@ Error RelocationSection::removeSectionReferences( for (const Relocation &R : Relocations) { if (!R.RelocSymbol->DefinedIn || !ToRemove(R.RelocSymbol->DefinedIn)) continue; - return createStringError( - llvm::errc::invalid_argument, - "Section %s cannot be removed because of symbol '%s' " - "used by the relocation patching offset 0x%" PRIx64 " from section %s.", - R.RelocSymbol->DefinedIn->Name.data(), R.RelocSymbol->Name.c_str(), - R.Offset, this->Name.data()); + return createStringError(llvm::errc::invalid_argument, + "Section %s can't be removed: (%s+0x%" PRIx64 + ") has relocation against symbol '%s'", + R.RelocSymbol->DefinedIn->Name.data(), + SecToApplyRel->Name.data(), R.Offset, + R.RelocSymbol->Name.c_str()); } return Error::success(); -- 2.50.1