[PATCH] D74823: [XCOFF/objdump] Fix crash in objdump when trying to use -r with XCOFF binaries

Dave Bozier via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 19 02:50:44 PST 2020


davidb updated this revision to Diff 245361.
davidb added a comment.

- fix space issues


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D74823/new/

https://reviews.llvm.org/D74823

Files:
  llvm/include/llvm/Object/XCOFFObjectFile.h
  llvm/test/tools/llvm-objdump/xcoff-disassemble-all.test
  llvm/tools/llvm-objdump/llvm-objdump.cpp


Index: llvm/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -45,6 +45,7 @@
 #include "llvm/Object/MachO.h"
 #include "llvm/Object/MachOUniversal.h"
 #include "llvm/Object/ObjectFile.h"
+#include "llvm/Object/XCOFFObjectFile.h"
 #include "llvm/Object/Wasm.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/CommandLine.h"
@@ -2193,6 +2194,14 @@
     DumpOpts.DumpType = DwarfDumpType;
     DICtx->dump(outs(), DumpOpts);
   }
+
+  // Relocation processing is not yet implemented for XCOFF binaries
+  if(Relocations && isa<XCOFFObjectFile>(O)) {
+    reportWarning("-r/--relocs option not supported for XCOFF object files, "
+                  "ignoring option", O->getFileName());
+    Relocations = false;
+  }
+ 
   if (Relocations && !Disassemble)
     printRelocations(O);
   if (DynamicRelocations)
Index: llvm/test/tools/llvm-objdump/xcoff-disassemble-all.test
===================================================================
--- llvm/test/tools/llvm-objdump/xcoff-disassemble-all.test
+++ llvm/test/tools/llvm-objdump/xcoff-disassemble-all.test
@@ -1,5 +1,7 @@
-# RUN: llvm-objdump -D %p/Inputs/xcoff-section-headers.o | \
-# RUN: FileCheck %s
+# RUN: llvm-objdump -D %p/Inputs/xcoff-section-headers.o 2>&1 | \
+# RUN: FileCheck %s --check-prefixes=CHECK,NO-RELOC-OPTION
+# RUN: llvm-objdump -D -r %p/Inputs/xcoff-section-headers.o 2>&1 | \
+# RUN: FileCheck %s --check-prefixes=CHECK,RELOC-OPTION
 
 # xcoff-section-headers.o Compiled with IBM XL C/C++ for AIX, V16.1.0
 # compiler command: xlc -qtls -o xcoff-section-headers.o -c test.c
@@ -14,6 +16,8 @@
 # }
 ; REQUIRES: powerpc-registered-target
 CHECK: Inputs/xcoff-section-headers.o:	file format aixcoff-rs6000
+NO-RELOC-OPTION-NOT: -r/--relocs option not supported for XCOFF object files, ignoring option
+RELOC-OPTION: -r/--relocs option not supported for XCOFF object files, ignoring option
 CHECK: Disassembly of section .text:
 CHECK: 00000000 .text:
 CHECK-NEXT:        0: 80 62 00 04                  	lwz 3, 4(2)
Index: llvm/include/llvm/Object/XCOFFObjectFile.h
===================================================================
--- llvm/include/llvm/Object/XCOFFObjectFile.h
+++ llvm/include/llvm/Object/XCOFFObjectFile.h
@@ -346,6 +346,7 @@
 
   Expected<ArrayRef<XCOFFRelocation32>>
   relocations(const XCOFFSectionHeader32 &) const;
+  static bool classof(const Binary *v) { return v->isXCOFF(); }
 }; // XCOFFObjectFile
 
 class XCOFFSymbolRef {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74823.245361.patch
Type: text/x-patch
Size: 2589 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200219/531dd04d/attachment.bin>


More information about the llvm-commits mailing list