[llvm-readobj/elf][test] - Test all core note types properly.
authorGeorgii Rymar <grimar@accesssoftek.com>
Thu, 10 Sep 2020 13:59:06 +0000 (16:59 +0300)
committerGeorgii Rymar <grimar@accesssoftek.com>
Mon, 14 Sep 2020 11:27:12 +0000 (14:27 +0300)
Currently we don't test all core note types that are defined in
`getCoreNoteTypeName` in ELFDumper.cpp.

Also we don't have a test for an unknown core note type.

This patch fixes it.

Differential revision: https://reviews.llvm.org/D87453

llvm/test/tools/llvm-readobj/ELF/note-core.test

index c283519..d7ec0c3 100644 (file)
@@ -1,8 +1,263 @@
 ## Test that note values are interpreted correctly for core files.
 
-# RUN: yaml2obj %s -o %t.o
-# RUN: llvm-readelf --notes %t.o | FileCheck %s --check-prefix=GNU
-# RUN: llvm-readobj --notes %t.o | FileCheck %s --check-prefix=LLVM
+## Check NT_PRSTATUS.
+# RUN: yaml2obj %s -DTYPE=0x1 -o %t1.o
+# RUN: llvm-readelf --notes %t1.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PRSTATUS (prstatus structure)"
+# RUN: llvm-readobj --notes %t1.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PRSTATUS (prstatus structure)"
+
+## Check NT_FPREGSET.
+# RUN: yaml2obj %s -DTYPE=0x2 -o %t2.o
+# RUN: llvm-readelf --notes %t2.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_FPREGSET (floating point registers)"
+# RUN: llvm-readobj --notes %t2.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_FPREGSET (floating point registers)"
+
+## Check NT_PRPSINFO.
+# RUN: yaml2obj %s -DTYPE=0x3 -o %t3.o
+# RUN: llvm-readelf --notes %t3.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PRPSINFO (prpsinfo structure)"
+# RUN: llvm-readobj --notes %t3.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PRPSINFO (prpsinfo structure)"
+
+## Check NT_TASKSTRUCT.
+# RUN: yaml2obj %s -DTYPE=0x4 -o %t4.o
+# RUN: llvm-readelf --notes %t4.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_TASKSTRUCT (task structure)"
+# RUN: llvm-readobj --notes %t4.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_TASKSTRUCT (task structure)"
+
+## Check NT_AUXV.
+# RUN: yaml2obj %s -DTYPE=0x6 -o %t5.o
+# RUN: llvm-readelf --notes %t5.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_AUXV (auxiliary vector)"
+# RUN: llvm-readobj --notes %t5.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_AUXV (auxiliary vector)"
+
+## Check NT_PSTATUS.
+# RUN: yaml2obj %s -DTYPE=0xA -o %t6.o
+# RUN: llvm-readelf --notes %t6.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PSTATUS (pstatus structure)"
+# RUN: llvm-readobj --notes %t6.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PSTATUS (pstatus structure)"
+
+## Check NT_FPREGS.
+# RUN: yaml2obj %s -DTYPE=0xC -o %t7.o
+# RUN: llvm-readelf --notes %t7.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_FPREGS (floating point registers)"
+# RUN: llvm-readobj --notes %t7.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_FPREGS (floating point registers)"
+
+## Check NT_PSINFO.
+# RUN: yaml2obj %s -DTYPE=0xD -o %t8.o
+# RUN: llvm-readelf --notes %t8.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PSINFO (psinfo structure)"
+# RUN: llvm-readobj --notes %t8.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PSINFO (psinfo structure)"
+
+## Check NT_LWPSTATUS.
+# RUN: yaml2obj %s -DTYPE=0x10 -o %t9.o
+# RUN: llvm-readelf --notes %t9.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_LWPSTATUS (lwpstatus_t structure)"
+# RUN: llvm-readobj --notes %t9.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_LWPSTATUS (lwpstatus_t structure)"
+
+## Check NT_LWPSINFO.
+# RUN: yaml2obj %s -DTYPE=0x11 -o %t10.o
+# RUN: llvm-readelf --notes %t10.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_LWPSINFO (lwpsinfo_t structure)"
+# RUN: llvm-readobj --notes %t10.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_LWPSINFO (lwpsinfo_t structure)"
+
+## Check NT_WIN32PSTATUS.
+# RUN: yaml2obj %s -DTYPE=0x12 -o %t11.o
+# RUN: llvm-readelf --notes %t11.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_WIN32PSTATUS (win32_pstatus structure)"
+# RUN: llvm-readobj --notes %t11.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_WIN32PSTATUS (win32_pstatus structure)"
+
+## Check ELF::NT_PPC_VMX.
+# RUN: yaml2obj %s -DTYPE=0x100 -o %t12.o
+# RUN: llvm-readelf --notes %t12.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_VMX (ppc Altivec registers)"
+# RUN: llvm-readobj --notes %t12.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_VMX (ppc Altivec registers)"
+
+## Check ELF::NT_PPC_VSX.
+# RUN: yaml2obj %s -DTYPE=0x102 -o %t13.o
+# RUN: llvm-readelf --notes %t13.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_VSX (ppc VSX registers)"
+# RUN: llvm-readobj --notes %t13.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_VSX (ppc VSX registers)"
+
+## Check ELF::NT_PPC_TAR.
+# RUN: yaml2obj %s -DTYPE=0x103 -o %t14.o
+# RUN: llvm-readelf --notes %t14.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TAR (ppc TAR register)"
+# RUN: llvm-readobj --notes %t14.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TAR (ppc TAR register)"
+
+## Check ELF::NT_PPC_PPR.
+# RUN: yaml2obj %s -DTYPE=0x104 -o %t15.o
+# RUN: llvm-readelf --notes %t15.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_PPR (ppc PPR register)"
+# RUN: llvm-readobj --notes %t15.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_PPR (ppc PPR register)"
+
+## Check ELF::NT_PPC_DSCR.
+# RUN: yaml2obj %s -DTYPE=0x105 -o %t16.o
+# RUN: llvm-readelf --notes %t16.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_DSCR (ppc DSCR register)"
+# RUN: llvm-readobj --notes %t16.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_DSCR (ppc DSCR register)"
+
+## Check ELF::NT_PPC_EBB.
+# RUN: yaml2obj %s -DTYPE=0x106 -o %t17.o
+# RUN: llvm-readelf --notes %t17.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_EBB (ppc EBB registers)"
+# RUN: llvm-readobj --notes %t17.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_EBB (ppc EBB registers)"
+
+## Check ELF::NT_PPC_PMU.
+# RUN: yaml2obj %s -DTYPE=0x107 -o %t18.o
+# RUN: llvm-readelf --notes %t18.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_PMU (ppc PMU registers)"
+# RUN: llvm-readobj --notes %t18.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_PMU (ppc PMU registers)"
+
+## Check ELF::NT_PPC_TM_CGPR.
+# RUN: yaml2obj %s -DTYPE=0x108 -o %t19.o
+# RUN: llvm-readelf --notes %t19.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CGPR (ppc checkpointed GPR registers)"
+# RUN: llvm-readobj --notes %t19.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CGPR (ppc checkpointed GPR registers)"
+
+## Check ELF::NT_PPC_TM_CFPR.
+# RUN: yaml2obj %s -DTYPE=0x109 -o %t20.o
+# RUN: llvm-readelf --notes %t20.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CFPR (ppc checkpointed floating point registers)"
+# RUN: llvm-readobj --notes %t20.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CFPR (ppc checkpointed floating point registers)"
+
+## Check ELF::NT_PPC_TM_CVMX.
+# RUN: yaml2obj %s -DTYPE=0x10a -o %t21.o
+# RUN: llvm-readelf --notes %t21.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CVMX (ppc checkpointed Altivec registers)"
+# RUN: llvm-readobj --notes %t21.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CVMX (ppc checkpointed Altivec registers)"
+
+## Check ELF::NT_PPC_TM_CVSX.
+# RUN: yaml2obj %s -DTYPE=0x10b -o %t22.o
+# RUN: llvm-readelf --notes %t22.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CVSX (ppc checkpointed VSX registers)"
+# RUN: llvm-readobj --notes %t22.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CVSX (ppc checkpointed VSX registers)"
+
+## Check ELF::NT_PPC_TM_SPR.
+# RUN: yaml2obj %s -DTYPE=0x10c -o %t23.o
+# RUN: llvm-readelf --notes %t23.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_SPR (ppc TM special purpose registers)"
+# RUN: llvm-readobj --notes %t23.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_SPR (ppc TM special purpose registers)"
+
+## Check ELF::NT_PPC_TM_CTAR.
+# RUN: yaml2obj %s -DTYPE=0x10d -o %t24.o
+# RUN: llvm-readelf --notes %t24.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CTAR (ppc checkpointed TAR register)"
+# RUN: llvm-readobj --notes %t24.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CTAR (ppc checkpointed TAR register)"
+
+## Check ELF::NT_PPC_TM_CPPR.
+# RUN: yaml2obj %s -DTYPE=0x10e -o %t25.o
+# RUN: llvm-readelf --notes %t25.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CPPR (ppc checkpointed PPR register)"
+# RUN: llvm-readobj --notes %t25.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CPPR (ppc checkpointed PPR register)"
+
+## Check ELF::NT_PPC_TM_CDSCR.
+# RUN: yaml2obj %s -DTYPE=0x10f -o %t26.o
+# RUN: llvm-readelf --notes %t26.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PPC_TM_CDSCR (ppc checkpointed DSCR register)"
+# RUN: llvm-readobj --notes %t26.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PPC_TM_CDSCR (ppc checkpointed DSCR register)"
+
+## Check ELF::NT_386_TLS.
+# RUN: yaml2obj %s -DTYPE=0x200 -o %t27.o
+# RUN: llvm-readelf --notes %t27.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_386_TLS (x86 TLS information)"
+# RUN: llvm-readobj --notes %t27.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_386_TLS (x86 TLS information)"
+
+## Check ELF::NT_386_IOPERM.
+# RUN: yaml2obj %s -DTYPE=0x201 -o %t28.o
+# RUN: llvm-readelf --notes %t28.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_386_IOPERM (x86 I/O permissions)"
+# RUN: llvm-readobj --notes %t28.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_386_IOPERM (x86 I/O permissions)"
+
+## Check ELF::NT_X86_XSTATE.
+# RUN: yaml2obj %s -DTYPE=0x202 -o %t29.o
+# RUN: llvm-readelf --notes %t29.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_X86_XSTATE (x86 XSAVE extended state)"
+# RUN: llvm-readobj --notes %t29.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_X86_XSTATE (x86 XSAVE extended state)"
+
+## Check ELF::NT_S390_HIGH_GPRS.
+# RUN: yaml2obj %s -DTYPE=0x300 -o %t30.o
+# RUN: llvm-readelf --notes %t30.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_HIGH_GPRS (s390 upper register halves)"
+# RUN: llvm-readobj --notes %t30.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_HIGH_GPRS (s390 upper register halves)"
+
+## Check ELF::NT_S390_TIMER.
+# RUN: yaml2obj %s -DTYPE=0x301 -o %t31.o
+# RUN: llvm-readelf --notes %t31.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_TIMER (s390 timer register)"
+# RUN: llvm-readobj --notes %t31.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_TIMER (s390 timer register)"
+
+## Check ELF::NT_S390_TODCMP.
+# RUN: yaml2obj %s -DTYPE=0x302 -o %t32.o
+# RUN: llvm-readelf --notes %t32.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_TODCMP (s390 TOD comparator register)"
+# RUN: llvm-readobj --notes %t32.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_TODCMP (s390 TOD comparator register)"
+
+## Check ELF::NT_S390_TODPREG.
+# RUN: yaml2obj %s -DTYPE=0x303 -o %t33.o
+# RUN: llvm-readelf --notes %t33.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_TODPREG (s390 TOD programmable register)"
+# RUN: llvm-readobj --notes %t33.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_TODPREG (s390 TOD programmable register)"
+
+## Check ELF::NT_S390_CTRS.
+# RUN: yaml2obj %s -DTYPE=0x304 -o %t34.o
+# RUN: llvm-readelf --notes %t34.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_CTRS (s390 control registers)"
+# RUN: llvm-readobj --notes %t34.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_CTRS (s390 control registers)"
+
+## Check ELF::NT_S390_PREFIX.
+# RUN: yaml2obj %s -DTYPE=0x305 -o %t35.o
+# RUN: llvm-readelf --notes %t35.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_PREFIX (s390 prefix register)"
+# RUN: llvm-readobj --notes %t35.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_PREFIX (s390 prefix register)"
+
+## Check ELF::NT_S390_LAST_BREAK.
+# RUN: yaml2obj %s -DTYPE=0x306 -o %t36.o
+# RUN: llvm-readelf --notes %t36.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_LAST_BREAK (s390 last breaking event address)"
+# RUN: llvm-readobj --notes %t36.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_LAST_BREAK (s390 last breaking event address)"
+
+## Check ELF::NT_S390_SYSTEM_CALL.
+# RUN: yaml2obj %s -DTYPE=0x307 -o %t37.o
+# RUN: llvm-readelf --notes %t37.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_SYSTEM_CALL (s390 system call restart data)"
+# RUN: llvm-readobj --notes %t37.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_SYSTEM_CALL (s390 system call restart data)"
+
+## Check ELF::NT_S390_TDB.
+# RUN: yaml2obj %s -DTYPE=0x308 -o %t38.o
+# RUN: llvm-readelf --notes %t38.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_TDB (s390 transaction diagnostic block)"
+# RUN: llvm-readobj --notes %t38.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_TDB (s390 transaction diagnostic block)"
+
+## Check ELF::NT_S390_VXRS_LOW.
+# RUN: yaml2obj %s -DTYPE=0x309 -o %t39.o
+# RUN: llvm-readelf --notes %t39.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_VXRS_LOW (s390 vector registers 0-15 upper half)"
+# RUN: llvm-readobj --notes %t39.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_VXRS_LOW (s390 vector registers 0-15 upper half)"
+
+## Check ELF::NT_S390_VXRS_HIGH.
+# RUN: yaml2obj %s -DTYPE=0x30a -o %t40.o
+# RUN: llvm-readelf --notes %t40.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_VXRS_HIGH (s390 vector registers 16-31)"
+# RUN: llvm-readobj --notes %t40.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_VXRS_HIGH (s390 vector registers 16-31)"
+
+## Check ELF::NT_S390_GS_CB.
+# RUN: yaml2obj %s -DTYPE=0x30b -o %t41.o
+# RUN: llvm-readelf --notes %t41.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_GS_CB (s390 guarded-storage registers)"
+# RUN: llvm-readobj --notes %t41.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_GS_CB (s390 guarded-storage registers)"
+
+## Check ELF::NT_S390_GS_BC.
+# RUN: yaml2obj %s -DTYPE=0x30c -o %t42.o
+# RUN: llvm-readelf --notes %t42.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_S390_GS_BC (s390 guarded-storage broadcast control)"
+# RUN: llvm-readobj --notes %t42.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_S390_GS_BC (s390 guarded-storage broadcast control)"
+
+## Check ELF::NT_ARM_VFP.
+# RUN: yaml2obj %s -DTYPE=0x400 -o %t43.o
+# RUN: llvm-readelf --notes %t43.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_ARM_VFP (arm VFP registers)"
+# RUN: llvm-readobj --notes %t43.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_ARM_VFP (arm VFP registers)"
+
+## Check ELF::NT_ARM_TLS.
+# RUN: yaml2obj %s -DTYPE=0x401 -o %t44.o
+# RUN: llvm-readelf --notes %t44.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_ARM_TLS (AArch TLS registers)"
+# RUN: llvm-readobj --notes %t44.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_ARM_TLS (AArch TLS registers)"
+
+## Check ELF::NT_ARM_HW_BREAK.
+# RUN: yaml2obj %s -DTYPE=0x402 -o %t45.o
+# RUN: llvm-readelf --notes %t45.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_ARM_HW_BREAK (AArch hardware breakpoint registers)"
+# RUN: llvm-readobj --notes %t45.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_ARM_HW_BREAK (AArch hardware breakpoint registers)"
+
+## Check ELF::NT_ARM_HW_WATCH.
+# RUN: yaml2obj %s -DTYPE=0x403 -o %t46.o
+# RUN: llvm-readelf --notes %t46.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_ARM_HW_WATCH (AArch hardware watchpoint registers)"
+# RUN: llvm-readobj --notes %t46.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_ARM_HW_WATCH (AArch hardware watchpoint registers)"
+
+## Check ELF::NT_FILE.
+# RUN: yaml2obj %s -DTYPE=0x46494c45 -o %t47.o
+# RUN: llvm-readelf --notes %t47.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_FILE (mapped files)"
+# RUN: llvm-readobj --notes %t47.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_FILE (mapped files)"
+
+## Check ELF::NT_PRXFPREG.
+# RUN: yaml2obj %s -DTYPE=0x46e62b7f -o %t48.o
+# RUN: llvm-readelf --notes %t48.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_PRXFPREG (user_xfpregs structure)"
+# RUN: llvm-readobj --notes %t48.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_PRXFPREG (user_xfpregs structure)"
+
+## Check ELF::NT_SIGINFO.
+# RUN: yaml2obj %s -DTYPE=0x53494749 -o %t49.o
+# RUN: llvm-readelf --notes %t49.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="NT_SIGINFO (siginfo_t data)"
+# RUN: llvm-readobj --notes %t49.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="NT_SIGINFO (siginfo_t data)"
+
+## Check an arbitrary unknown type.
+# RUN: yaml2obj %s -DTYPE=0x12345678 -o %t50.o
+# RUN: llvm-readelf --notes %t50.o | FileCheck %s --check-prefix=CHECK-GNU  -DDESC="Unknown note type: (0x12345678)"
+# RUN: llvm-readobj --notes %t50.o | FileCheck %s --check-prefix=CHECK-LLVM -DDESC="Unknown (0x12345678)"
+
+# CHECK-GNU:      Owner Data size  Description
+# CHECK-GNU-NEXT: CORE  0x00000000 [[DESC]]
+
+# CHECK-LLVM:      Note {
+# CHECK-LLVM-NEXT:   Owner: CORE
+# CHECK-LLVM-NEXT:   Data size: 0x0
+# CHECK-LLVM-NEXT:   Type: [[DESC]]
+# CHECK-LLVM-NEXT: }
 
 --- !ELF
 FileHeader:
@@ -10,52 +265,12 @@ FileHeader:
   Data:  ELFDATA2LSB
   Type:  ET_CORE
 Sections:
-  - Name:        .note.foo
-    Type:        SHT_NOTE
-    # Note: format is 0500000000000000<NT_FOO value>434F524500000000 repeated
-    Content:     050000000000000001000000434F524500000000050000000000000002000000434F524500000000050000000000000003000000434F524500000000050000000000000004000000434F524500000000050000000000000006000000434F524500000000
+  - Name: .note.foo
+    Type: SHT_NOTE
+    Notes:
+      - Name: CORE
+        Type: [[TYPE]]
 ProgramHeaders:
-  - Type:        PT_NOTE
+  - Type: PT_NOTE
     Sections:
       - Section: .note.foo
-
-# GNU:      Displaying notes found
-# GNU-NEXT:   Owner                 Data size       Description
-# GNU-NEXT:   CORE                  0x00000000      NT_PRSTATUS (prstatus structure)
-# GNU-NEXT:   CORE                  0x00000000      NT_FPREGSET (floating point registers)
-# GNU-NEXT:   CORE                  0x00000000      NT_PRPSINFO (prpsinfo structure)
-# GNU-NEXT:   CORE                  0x00000000      NT_TASKSTRUCT (task structure)
-# GNU-NEXT:   CORE                  0x00000000      NT_AUXV (auxiliary vector)
-
-# LLVM:      Notes [
-# LLVM-NEXT:   NoteSection {
-# LLVM-NEXT:     Name: <?>
-# LLVM-NEXT:     Offset:
-# LLVM-NEXT:     Size:
-# LLVM-NEXT:     Note {
-# LLVM-NEXT:       Owner: CORE
-# LLVM-NEXT:       Data size: 0x0
-# LLVM-NEXT:       Type: NT_PRSTATUS (prstatus structure)
-# LLVM-NEXT:     }
-# LLVM-NEXT:     Note {
-# LLVM-NEXT:       Owner: CORE
-# LLVM-NEXT:       Data size: 0x0
-# LLVM-NEXT:       Type: NT_FPREGSET (floating point registers)
-# LLVM-NEXT:     }
-# LLVM-NEXT:     Note {
-# LLVM-NEXT:       Owner: CORE
-# LLVM-NEXT:       Data size: 0x0
-# LLVM-NEXT:       Type: NT_PRPSINFO (prpsinfo structure)
-# LLVM-NEXT:     }
-# LLVM-NEXT:     Note {
-# LLVM-NEXT:       Owner: CORE
-# LLVM-NEXT:       Data size: 0x0
-# LLVM-NEXT:       Type: NT_TASKSTRUCT (task structure)
-# LLVM-NEXT:     }
-# LLVM-NEXT:     Note {
-# LLVM-NEXT:       Owner: CORE
-# LLVM-NEXT:       Data size: 0x0
-# LLVM-NEXT:       Type: NT_AUXV (auxiliary vector)
-# LLVM-NEXT:     }
-# LLVM-NEXT:   }
-# LLVM-NEXT: ]