[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