[llvm] f4670fb - [llvm-readobj] Print empty line between note sections in GNU mode

Alex Richardson via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 9 08:59:47 PST 2021


Author: Alex Richardson
Date: 2021-02-09T16:59:21Z
New Revision: f4670fbfff228554006828bf6a66ebc472340c61

URL: https://github.com/llvm/llvm-project/commit/f4670fbfff228554006828bf6a66ebc472340c61
DIFF: https://github.com/llvm/llvm-project/commit/f4670fbfff228554006828bf6a66ebc472340c61.diff

LOG: [llvm-readobj] Print empty line between note sections in GNU mode

This matches GNU binutils.

Reviewed By: rupprecht, jhenderson, MaskRay

Differential Revision: https://reviews.llvm.org/D96010

Added: 
    

Modified: 
    llvm/test/tools/llvm-readobj/ELF/note-amd.s
    llvm/test/tools/llvm-readobj/ELF/note-amdgpu-invalid.s
    llvm/test/tools/llvm-readobj/ELF/note-core-ntfile.test
    llvm/test/tools/llvm-readobj/ELF/note-core.test
    llvm/test/tools/llvm-readobj/ELF/note-freebsd.s
    llvm/test/tools/llvm-readobj/ELF/note-generic.s
    llvm/test/tools/llvm-readobj/ELF/note-unknown.s
    llvm/tools/llvm-readobj/ELFDumper.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-amd.s b/llvm/test/tools/llvm-readobj/ELF/note-amd.s
index 94feaa27d8a9..8130ee575335 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-amd.s
+++ b/llvm/test/tools/llvm-readobj/ELF/note-amd.s
@@ -8,10 +8,11 @@
 // GNU-NEXT:   Owner                Data size        Description
 // GNU-NEXT:   AMD                  0x00000000       NT_AMD_AMDGPU_HSA_METADATA (HSA Metadata)
 // GNU-NEXT:     HSA Metadata:
-// GNU-NEXT: {{^ +$}}
+// GNU-NEXT: {{^        $}}
 // GNU-NEXT:   AMD                  0x00000000       NT_AMD_AMDGPU_ISA (ISA Version)
 // GNU-NEXT:     ISA Version:
-// GNU-NEXT: {{^ +$}}
+// GNU-NEXT: {{^        $}}
+// GNU-EMPTY:
 // GNU-NEXT: Displaying notes found in: .note.desc
 // GNU-NEXT:   Owner                Data size        Description
 // GNU-NEXT:   AMD                  0x0000000a       NT_AMD_AMDGPU_HSA_METADATA (HSA Metadata)
@@ -20,9 +21,11 @@
 // GNU-NEXT:   AMD                  0x00000009       NT_AMD_AMDGPU_ISA (ISA Version)
 // GNU-NEXT:     ISA Version:
 // GNU-NEXT:     isa_blah
+// GNU-EMPTY:
 // GNU-NEXT: Displaying notes found in: .note.other
 // GNU-NEXT:   Owner                Data size        Description
 // GNU-NEXT:   AMD                  0x00000000       NT_AMD_AMDGPU_PAL_METADATA (PAL Metadata)
+// GNU-EMPTY:
 
 // LLVM:      Notes [
 // LLVM-NEXT:   NoteSection {

diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-amdgpu-invalid.s b/llvm/test/tools/llvm-readobj/ELF/note-amdgpu-invalid.s
index 04f75ec84774..3f9665e0cd49 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-amdgpu-invalid.s
+++ b/llvm/test/tools/llvm-readobj/ELF/note-amdgpu-invalid.s
@@ -20,6 +20,7 @@
 # GNU-NEXT:     .vgpr_count:     7
 # GNU-NEXT:     .wavefront_size: 5
 # GNU-NEXT: ...
+# GNU-EMPTY:
 
 # LLVM:      Notes [
 # LLVM-NEXT:   NoteSection {

diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-core-ntfile.test b/llvm/test/tools/llvm-readobj/ELF/note-core-ntfile.test
index 53b1c1c4f239..752cb723cd22 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-core-ntfile.test
+++ b/llvm/test/tools/llvm-readobj/ELF/note-core-ntfile.test
@@ -60,7 +60,7 @@ ProgramHeaders:
 # GNU-NEXT:         /path/to/libc.so
 # GNU-NEXT:     0x0000000000007000  0x0000000000008000  0x0000000000009000
 # GNU-NEXT:         [stack]
-# GNU-NOT:  {{.}}
+# GNU-EMPTY:
 
 # LLVM:      Notes [
 # LLVM-NEXT:   NoteSection {

diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-core.test b/llvm/test/tools/llvm-readobj/ELF/note-core.test
index 3c7216027d74..2dbee21365eb 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-core.test
+++ b/llvm/test/tools/llvm-readobj/ELF/note-core.test
@@ -252,6 +252,7 @@
 
 # CHECK-GNU:      Owner Data size  Description
 # CHECK-GNU-NEXT: CORE  0x00000000 [[DESC]]
+# CHECK-GNU-EMPTY:
 
 # CHECK-LLVM:      Note {
 # CHECK-LLVM-NEXT:   Owner: CORE

diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-freebsd.s b/llvm/test/tools/llvm-readobj/ELF/note-freebsd.s
index 3caca6cc0d71..c3175db69da1 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-freebsd.s
+++ b/llvm/test/tools/llvm-readobj/ELF/note-freebsd.s
@@ -8,13 +8,16 @@
 // GNU-NEXT:   Owner                Data size        Description
 // GNU-NEXT:   FreeBSD              0x00000000       NT_THRMISC (thrmisc structure)
 // GNU-NEXT:   FreeBSD              0x00000000       NT_PROCSTAT_PROC (proc data)
+// GNU-EMPTY:
 // GNU-NEXT: Displaying notes found in: .note.bar
 // GNU-NEXT:   Owner                Data size        Description
 // GNU-NEXT:   FreeBSD              0x00000000       NT_PROCSTAT_FILES (files data)
+// GNU-EMPTY:
 // GNU-NEXT: Displaying notes found in: .note.baz
 // GNU-NEXT:   Owner                Data size        Description
 // GNU-NEXT:   FreeBSD              0x0000001c       Unknown note type: (0x00000003)
 // GNU-NEXT:    description data: 4c 6f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 73 69 74 20 61 6d 65 74 00 00
+// GNU-EMPTY:
 
 // LLVM:      Notes [
 // LLVM-NEXT:   NoteSection {

diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-generic.s b/llvm/test/tools/llvm-readobj/ELF/note-generic.s
index d5b750534f44..59df75e3ee19 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-generic.s
+++ b/llvm/test/tools/llvm-readobj/ELF/note-generic.s
@@ -1,24 +1,24 @@
 // REQUIRES: x86-registered-target
 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t.o
 
-// RUN: llvm-readobj --notes %t.o | FileCheck %s --check-prefix=LLVM
-// RUN: llvm-readelf --notes %t.o | FileCheck %s --check-prefix=GNU
+// RUN: llvm-readobj --notes %t.o | FileCheck %s --check-prefix=LLVM --strict-whitespace
+// RUN: llvm-readelf --notes %t.o | FileCheck %s --check-prefix=GNU --strict-whitespace
 
-// GNU:      Displaying notes found in: .note.version
-// GNU-NEXT:   Owner                 Data size       Description
-// GNU-NEXT:   XYZ                  0x00000000       NT_VERSION (version)
-
-// GNU:      Displaying notes found in: .note.arch
-// GNU-NEXT:   Owner                 Data size       Description
-// GNU-NEXT:   XYZ                  0x00000000       NT_ARCH (architecture)
-
-// GNU:      Displaying notes found in: .note.open
-// GNU-NEXT:   Owner                 Data size       Description
-// GNU-NEXT:   XYZ                  0x00000000       OPEN
-
-// GNU:      Displaying notes found in: .note.func
-// GNU-NEXT:   Owner                 Data size       Description
-// GNU-NEXT:   XYZ                  0x00000000       func
+// GNU:      Displaying notes found in: .note.version{{$}}
+// GNU-NEXT:   Owner                Data size 	Description
+// GNU-NEXT:   XYZ                  0x00000000	NT_VERSION (version)
+// GNU-EMPTY:
+// GNU-NEXT: Displaying notes found in: .note.arch{{$}}
+// GNU-NEXT:   Owner                Data size 	Description
+// GNU-NEXT:   XYZ                  0x00000000	NT_ARCH (architecture)
+// GNU-EMPTY:
+// GNU-NEXT: Displaying notes found in: .note.open{{$}}
+// GNU-NEXT:   Owner                Data size 	Description
+// GNU-NEXT:   XYZ                  0x00000000	OPEN
+// GNU-EMPTY:
+// GNU-NEXT: Displaying notes found in: .note.func{{$}}
+// GNU-NEXT:   Owner                Data size 	Description
+// GNU-NEXT:   XYZ                  0x00000000	func
 
 // LLVM:      Notes [
 // LLVM-NEXT:   NoteSection {

diff  --git a/llvm/test/tools/llvm-readobj/ELF/note-unknown.s b/llvm/test/tools/llvm-readobj/ELF/note-unknown.s
index 9b35908d2b52..27f8f8e92342 100644
--- a/llvm/test/tools/llvm-readobj/ELF/note-unknown.s
+++ b/llvm/test/tools/llvm-readobj/ELF/note-unknown.s
@@ -7,10 +7,12 @@
 // GNU:      Displaying notes found in: .note.foo
 // GNU-NEXT:   Owner                 Data size       Description
 // GNU-NEXT:   XYZ                  0x00000000       Unknown note type: (0x00000003)
+// GNU-EMPTY:
 // GNU-NEXT: Displaying notes found in: .note.bar
 // GNU-NEXT:   Owner                 Data size       Description
 // GNU-NEXT:   XYZ                  0x0000001c       Unknown note type: (0x00000003)
 // GNU-NEXT:     description data: 4c 6f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 73 69 74 20 61 6d 65 74 00 00
+// GNU-EMPTY:
 
 // LLVM:      Notes [
 // LLVM-NEXT:   NoteSection {

diff  --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 74994ca912e1..81f79393c3a8 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -5232,9 +5232,17 @@ static void printNotesHelper(
 }
 
 template <class ELFT> void GNUELFDumper<ELFT>::printNotes() {
+  bool IsFirstHeader = true;
   auto PrintHeader = [&](Optional<StringRef> SecName,
                          const typename ELFT::Off Offset,
                          const typename ELFT::Addr Size) {
+    // Print a newline between notes sections to match GNU readelf.
+    if (!IsFirstHeader) {
+      OS << '\n';
+    } else {
+      IsFirstHeader = false;
+    }
+
     OS << "Displaying notes found ";
 
     if (SecName)


        


More information about the llvm-commits mailing list