]> granicus.if.org Git - llvm/commitdiff
llvm-readobj: fix next note entry calculation and print unknown note types
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Thu, 2 Feb 2017 23:44:49 +0000 (23:44 +0000)
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>
Thu, 2 Feb 2017 23:44:49 +0000 (23:44 +0000)
Differential Revision: https://reviews.llvm.org/D29131

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293964 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/AMDGPU/runtime-metadata.ll
tools/llvm-readobj/ELFDumper.cpp

index abdbc325fd4d811f5269ca0ebbed7b8cd3dea63c..b8e943cd5a887d73ca31ee2b4e39e42d1bc36b4a 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -mtriple=amdgcn--amdhsa -filetype=obj -o - < %s | llvm-readobj -amdgpu-runtime-metadata | FileCheck %s
+; RUN: llc -mtriple=amdgcn--amdhsa -filetype=obj -o - < %s | llvm-readobj -amdgpu-runtime-metadata -elf-output-style=GNU -notes | FileCheck %s --check-prefix=NOTES
 ; RUN: llc -mtriple=amdgcn--amdhsa -filetype=obj -amdgpu-dump-rtmd -amdgpu-check-rtmd-parser %s -o - 2>&1 | FileCheck --check-prefix=CHECK --check-prefix=PARSER %s
 
 %struct.A = type { i8, float }
@@ -341,6 +341,12 @@ define amdgpu_kernel void @test_pointee_align(i64 addrspace(1)* %a, i8 addrspace
 
 ; PARSER: AMDGPU runtime metadata parser test passes.
 
+; NOTES: Displaying notes found at file offset 0x{{[0-9]+}}
+; NOTES-NEXT: Owner    Data size    Description
+; NOTES-NEXT: AMD      0x00000008   Unknown note type: (0x00000001)
+; NOTES-NEXT: AMD      0x0000001b   Unknown note type: (0x00000003)
+; NOTES-NEXT: AMD      0x00005196   Unknown note type: (0x00000008)
+
 !llvm.printf.fmts = !{!100, !101}
 
 !1 = !{i32 0}
index eda3390b0f58a0f4cf51bcfc0575eb56da313253..109dde142efee8a1f6b42ad766598a7325e8bf14 100644 (file)
@@ -3416,10 +3416,12 @@ void GNUStyle<ELFT>::printNotes(const ELFFile<ELFT> *Obj) {
       if (Name == "GNU") {
         OS << getGNUNoteTypeName(Type) << '\n';
         printGNUNote<ELFT>(OS, Type, Descriptor);
+      } else {
+        OS << "Unknown note type: (" << format_hex(Type, 10) << ')';
       }
       OS << '\n';
 
-      P = P + 3 * sizeof(Elf_Word) * alignTo<4>(NameSize) +
+      P = P + 3 * sizeof(Elf_Word) + alignTo<4>(NameSize) +
           alignTo<4>(DescriptorSize);
     }
   };