[llvm] 93c1a5f - [llvm-readobj] Rename JSON Flag fields to be more consistent
Paul Kirth via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 17 17:04:59 PDT 2023
Author: Paul Kirth
Date: 2023-03-18T00:04:47Z
New Revision: 93c1a5f3ddd41e0ec09f38ab0045bd5e92199fd5
URL: https://github.com/llvm/llvm-project/commit/93c1a5f3ddd41e0ec09f38ab0045bd5e92199fd5
DIFF: https://github.com/llvm/llvm-project/commit/93c1a5f3ddd41e0ec09f38ab0045bd5e92199fd5.diff
LOG: [llvm-readobj] Rename JSON Flag fields to be more consistent
Today the JSON uses `Value` and `RawValue` when printing `Flags`, when really
the `Value` field is always the name of an Enum variant, and `RawValue` is its
underlying numeric value. Similarly, we rename the `RawFlags` key to `Value`,
to match the new scheme. This also allows JSON parsing to use consistent logic
for `Flag` types.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D137091
Added:
Modified:
llvm/docs/ReleaseNotes.rst
llvm/include/llvm/Support/ScopedPrinter.h
llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test
llvm/test/tools/llvm-readobj/ELF/mips-symbols-stother.test
llvm/test/tools/llvm-readobj/ELF/relocations.test
llvm/test/tools/llvm-readobj/ELF/symbol-visibility.test
llvm/unittests/Support/ScopedPrinterTest.cpp
Removed:
################################################################################
diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst
index e0da56da6b69b..c752b8dbf01c6 100644
--- a/llvm/docs/ReleaseNotes.rst
+++ b/llvm/docs/ReleaseNotes.rst
@@ -205,6 +205,9 @@ Changes to the LLVM tools
---------------------------------
* llvm-lib now supports the /def option for generating a Windows import library from a definition file.
+* Made significant changes to JSON output format of `llvm-readobj`/`llvm-readelf`
+ to improve correctness and clarity.
+
Changes to LLDB
---------------------------------
diff --git a/llvm/include/llvm/Support/ScopedPrinter.h b/llvm/include/llvm/Support/ScopedPrinter.h
index b91acb576ba59..15965bf79ade5 100644
--- a/llvm/include/llvm/Support/ScopedPrinter.h
+++ b/llvm/include/llvm/Support/ScopedPrinter.h
@@ -682,7 +682,7 @@ class JSONScopedPrinter : public ScopedPrinter {
void printFlagsImpl(StringRef Label, HexNumber Value,
ArrayRef<FlagEntry> Flags) override {
JOS.attributeObject(Label, [&]() {
- JOS.attribute("RawFlags", hexNumberToInt(Value));
+ JOS.attribute("Value", hexNumberToInt(Value));
JOS.attributeArray("Flags", [&]() {
for (const FlagEntry &Flag : Flags) {
JOS.objectBegin();
@@ -697,7 +697,7 @@ class JSONScopedPrinter : public ScopedPrinter {
void printFlagsImpl(StringRef Label, HexNumber Value,
ArrayRef<HexNumber> Flags) override {
JOS.attributeObject(Label, [&]() {
- JOS.attribute("RawFlags", hexNumberToInt(Value));
+ JOS.attribute("Value", hexNumberToInt(Value));
JOS.attributeArray("Flags", [&]() {
for (const HexNumber &Flag : Flags) {
JOS.value(Flag.Value);
@@ -728,8 +728,8 @@ class JSONScopedPrinter : public ScopedPrinter {
void printHexImpl(StringRef Label, StringRef Str, HexNumber Value) override {
JOS.attributeObject(Label, [&]() {
- JOS.attribute("Value", Str);
- JOS.attribute("RawValue", hexNumberToInt(Value));
+ JOS.attribute("Name", Str);
+ JOS.attribute("Value", hexNumberToInt(Value));
});
}
@@ -744,8 +744,8 @@ class JSONScopedPrinter : public ScopedPrinter {
void printNumberImpl(StringRef Label, StringRef Str,
StringRef Value) override {
JOS.attributeObject(Label, [&]() {
- JOS.attribute("Value", Str);
- JOS.attributeBegin("RawValue");
+ JOS.attribute("Name", Str);
+ JOS.attributeBegin("Value");
JOS.rawValueBegin() << Value;
JOS.rawValueEnd();
JOS.attributeEnd();
diff --git a/llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test b/llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test
index 35205ae88eaa6..a223c519c819e 100644
--- a/llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test
+++ b/llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test
@@ -29,9 +29,9 @@
# GNU-NEXT: 3: 0000000000000000 0 NOTYPE LOCAL PROTECTED [VARIANT_PCS] UND foo3
# GNU-NEXT: 4: 0000000000000000 0 NOTYPE LOCAL PROTECTED UND foo4
-# JSON: "Value": "foo1",
+# JSON: "Name": "foo1",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 128,
+# JSON-NEXT: "Value": 128,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STO_AARCH64_VARIANT_PCS",
@@ -40,9 +40,9 @@
# JSON-NEXT: ]
# JSON-NEXT:},
-# JSON: "Value": "foo2",
+# JSON: "Name": "foo2",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 192,
+# JSON-NEXT: "Value": 192,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STO_AARCH64_VARIANT_PCS",
@@ -51,9 +51,9 @@
# JSON-NEXT: ]
# JSON-NEXT:},
-# JSON: "Value": "foo3",
+# JSON: "Name": "foo3",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 131,
+# JSON-NEXT: "Value": 131,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STO_AARCH64_VARIANT_PCS",
@@ -66,9 +66,9 @@
# JSON-NEXT: ]
# JSON-NEXT:},
-# JSON: "Value": "foo4",
+# JSON: "Name": "foo4",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 3,
+# JSON-NEXT: "Value": 3,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STV_PROTECTED",
diff --git a/llvm/test/tools/llvm-readobj/ELF/mips-symbols-stother.test b/llvm/test/tools/llvm-readobj/ELF/mips-symbols-stother.test
index 983aefba1101c..cc6a13928203b 100644
--- a/llvm/test/tools/llvm-readobj/ELF/mips-symbols-stother.test
+++ b/llvm/test/tools/llvm-readobj/ELF/mips-symbols-stother.test
@@ -24,9 +24,9 @@
# MIPS-GNU-NEXT: 1: 00000000 0 NOTYPE LOCAL DEFAULT [<other: 0xac>] UND foo
# MIPS-GNU-NEXT: 2: 00000000 0 NOTYPE LOCAL DEFAULT [<other: 0xf0>] UND bar
-# MIPS-JSON: "Value": "foo",
+# MIPS-JSON: "Name": "foo",
# MIPS-JSON: "Other": {
-# MIPS-JSON-NEXT: "RawFlags": 172,
+# MIPS-JSON-NEXT: "Value": 172,
# MIPS-JSON-NEXT: "Flags": [
# MIPS-JSON-NEXT: {
# MIPS-JSON-NEXT: "Name": "STO_MIPS_MICROMIPS",
@@ -46,9 +46,9 @@
# MIPS-JSON-NEXT: }
# MIPS-JSON-NEXT: ]
# MIPS-JSON-NEXT: },
-# MIPS-JSON: "Value": "bar",
+# MIPS-JSON: "Name": "bar",
# MIPS-JSON: "Other": {
-# MIPS-JSON-NEXT: "RawFlags": 240,
+# MIPS-JSON-NEXT: "Value": 240,
# MIPS-JSON-NEXT: "Flags": [
# MIPS-JSON-NEXT: {
# MIPS-JSON-NEXT: "Name": "STO_MIPS_MIPS16",
diff --git a/llvm/test/tools/llvm-readobj/ELF/relocations.test b/llvm/test/tools/llvm-readobj/ELF/relocations.test
index 5c9e0293e4967..34a610b6af63f 100644
--- a/llvm/test/tools/llvm-readobj/ELF/relocations.test
+++ b/llvm/test/tools/llvm-readobj/ELF/relocations.test
@@ -120,12 +120,12 @@
# JSON-EXPAND-64: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 0,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_NONE",
-# JSON-EXPAND-64-NEXT: "RawValue": 0
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_NONE",
+# JSON-EXPAND-64-NEXT: "Value": 0
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rel_0",
-# JSON-EXPAND-64-NEXT: "RawValue": 1
+# JSON-EXPAND-64-NEXT: "Name": "rel_0",
+# JSON-EXPAND-64-NEXT: "Value": 1
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: },
@@ -133,12 +133,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 1,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_PC32",
-# JSON-EXPAND-64-NEXT: "RawValue": 2
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_PC32",
+# JSON-EXPAND-64-NEXT: "Value": 2
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rel_neg",
-# JSON-EXPAND-64-NEXT: "RawValue": 2
+# JSON-EXPAND-64-NEXT: "Name": "rel_neg",
+# JSON-EXPAND-64-NEXT: "Value": 2
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: },
@@ -146,12 +146,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 5,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_PLT32",
-# JSON-EXPAND-64-NEXT: "RawValue": 4
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_PLT32",
+# JSON-EXPAND-64-NEXT: "Value": 4
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rel_pos",
-# JSON-EXPAND-64-NEXT: "RawValue": 3
+# JSON-EXPAND-64-NEXT: "Name": "rel_pos",
+# JSON-EXPAND-64-NEXT: "Value": 3
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: },
@@ -159,12 +159,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 9,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_64",
-# JSON-EXPAND-64-NEXT: "RawValue": 1
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_64",
+# JSON-EXPAND-64-NEXT: "Value": 1
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rel_64",
-# JSON-EXPAND-64-NEXT: "RawValue": 4
+# JSON-EXPAND-64-NEXT: "Name": "rel_64",
+# JSON-EXPAND-64-NEXT: "Value": 4
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: }
# JSON-EXPAND-64-NEXT: }}
@@ -174,12 +174,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 0,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_NONE",
-# JSON-EXPAND-64-NEXT: "RawValue": 0
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_NONE",
+# JSON-EXPAND-64-NEXT: "Value": 0
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rela_0",
-# JSON-EXPAND-64-NEXT: "RawValue": 5
+# JSON-EXPAND-64-NEXT: "Name": "rela_0",
+# JSON-EXPAND-64-NEXT: "Value": 5
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Addend": 0
# JSON-EXPAND-64-NEXT: }
@@ -188,12 +188,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 1,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_PC32",
-# JSON-EXPAND-64-NEXT: "RawValue": 2
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_PC32",
+# JSON-EXPAND-64-NEXT: "Value": 2
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rela_neg",
-# JSON-EXPAND-64-NEXT: "RawValue": 6
+# JSON-EXPAND-64-NEXT: "Name": "rela_neg",
+# JSON-EXPAND-64-NEXT: "Value": 6
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Addend": 18446744073709551615
# JSON-EXPAND-64-NEXT: }
@@ -202,12 +202,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 5,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_PLT32",
-# JSON-EXPAND-64-NEXT: "RawValue": 4
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_PLT32",
+# JSON-EXPAND-64-NEXT: "Value": 4
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rela_pos",
-# JSON-EXPAND-64-NEXT: "RawValue": 7
+# JSON-EXPAND-64-NEXT: "Name": "rela_pos",
+# JSON-EXPAND-64-NEXT: "Value": 7
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Addend": 2
# JSON-EXPAND-64-NEXT: }
@@ -216,12 +216,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 18446744073709551615,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_64",
-# JSON-EXPAND-64-NEXT: "RawValue": 1
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_64",
+# JSON-EXPAND-64-NEXT: "Value": 1
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rela_minneg",
-# JSON-EXPAND-64-NEXT: "RawValue": 8
+# JSON-EXPAND-64-NEXT: "Name": "rela_minneg",
+# JSON-EXPAND-64-NEXT: "Value": 8
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Addend": 9223372036854775808
# JSON-EXPAND-64-NEXT: }
@@ -230,12 +230,12 @@
# JSON-EXPAND-64-NEXT: "Relocation": {
# JSON-EXPAND-64-NEXT: "Offset": 9,
# JSON-EXPAND-64-NEXT: "Type": {
-# JSON-EXPAND-64-NEXT: "Value": "R_X86_64_32S",
-# JSON-EXPAND-64-NEXT: "RawValue": 11
+# JSON-EXPAND-64-NEXT: "Name": "R_X86_64_32S",
+# JSON-EXPAND-64-NEXT: "Value": 11
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Symbol": {
-# JSON-EXPAND-64-NEXT: "Value": "rela_maxpos",
-# JSON-EXPAND-64-NEXT: "RawValue": 9
+# JSON-EXPAND-64-NEXT: "Name": "rela_maxpos",
+# JSON-EXPAND-64-NEXT: "Value": 9
# JSON-EXPAND-64-NEXT: },
# JSON-EXPAND-64-NEXT: "Addend": 9223372036854775807
# JSON-EXPAND-64-NEXT: }
diff --git a/llvm/test/tools/llvm-readobj/ELF/symbol-visibility.test b/llvm/test/tools/llvm-readobj/ELF/symbol-visibility.test
index fa3a8c1971daf..a25e1e0a253ae 100644
--- a/llvm/test/tools/llvm-readobj/ELF/symbol-visibility.test
+++ b/llvm/test/tools/llvm-readobj/ELF/symbol-visibility.test
@@ -31,15 +31,15 @@
# GNU-NEXT: HIDDEN UND hidden
# GNU-NEXT: PROTECTED UND protected
-# JSON: "Value": "default",
+# JSON: "Name": "default",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 0,
+# JSON-NEXT: "Value": 0,
# JSON-NEXT: "Flags": []
# JSON-NEXT: },
-# JSON: "Value": "internal",
+# JSON: "Name": "internal",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 1,
+# JSON-NEXT: "Value": 1,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STV_INTERNAL",
@@ -48,9 +48,9 @@
# JSON-NEXT: ]
# JSON-NEXT: },
-# JSON: "Value": "hidden",
+# JSON: "Name": "hidden",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 2,
+# JSON-NEXT: "Value": 2,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STV_HIDDEN",
@@ -59,9 +59,9 @@
# JSON-NEXT: ]
# JSON-NEXT: },
-# JSON: "Value": "protected",
+# JSON: "Name": "protected",
# JSON: "Other": {
-# JSON-NEXT: "RawFlags": 3,
+# JSON-NEXT: "Value": 3,
# JSON-NEXT: "Flags": [
# JSON-NEXT: {
# JSON-NEXT: "Name": "STV_PROTECTED",
diff --git a/llvm/unittests/Support/ScopedPrinterTest.cpp b/llvm/unittests/Support/ScopedPrinterTest.cpp
index 5afb796aeacff..b98fe5361481a 100644
--- a/llvm/unittests/Support/ScopedPrinterTest.cpp
+++ b/llvm/unittests/Support/ScopedPrinterTest.cpp
@@ -236,8 +236,8 @@ DoesNotExist: 0x5
const char *JSONExpectedOut = R"({
"Exists": {
- "Value": "Name2",
- "RawValue": 2
+ "Name": "Name2",
+ "Value": 2
},
"DoesNotExist": 5
})";
@@ -345,15 +345,15 @@ FirstSecondThirdByteMask [ (0x333)
const char *JSONExpectedOut = R"({
"ZeroFlag": {
- "RawFlags": 0,
+ "Value": 0,
"Flags": []
},
"NoFlag": {
- "RawFlags": 8,
+ "Value": 8,
"Flags": []
},
"Flag1": {
- "RawFlags": 1,
+ "Value": 1,
"Flags": [
{
"Name": "Name1",
@@ -362,7 +362,7 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"Flag1&3": {
- "RawFlags": 5,
+ "Value": 5,
"Flags": [
{
"Name": "Name1",
@@ -375,30 +375,30 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"ZeroFlagRaw": {
- "RawFlags": 0,
+ "Value": 0,
"Flags": []
},
"NoFlagRaw": {
- "RawFlags": 8,
+ "Value": 8,
"Flags": [
8
]
},
"Flag1Raw": {
- "RawFlags": 1,
+ "Value": 1,
"Flags": [
1
]
},
"Flag1&3Raw": {
- "RawFlags": 5,
+ "Value": 5,
"Flags": [
1,
4
]
},
"FlagSorted": {
- "RawFlags": 7,
+ "Value": 7,
"Flags": [
{
"Name": "A",
@@ -415,7 +415,7 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"NoBitMask": {
- "RawFlags": 4095,
+ "Value": 4095,
"Flags": [
{
"Name": "FirstByte1",
@@ -456,7 +456,7 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"FirstByteMask": {
- "RawFlags": 3,
+ "Value": 3,
"Flags": [
{
"Name": "FirstByte3",
@@ -465,7 +465,7 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"SecondByteMask": {
- "RawFlags": 48,
+ "Value": 48,
"Flags": [
{
"Name": "SecondByte3",
@@ -474,7 +474,7 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"ValueOutsideMask": {
- "RawFlags": 1,
+ "Value": 1,
"Flags": [
{
"Name": "FirstByte1",
@@ -483,11 +483,11 @@ FirstSecondThirdByteMask [ (0x333)
]
},
"FirstSecondByteMask": {
- "RawFlags": 255,
+ "Value": 255,
"Flags": []
},
"FirstSecondThirdByteMask": {
- "RawFlags": 819,
+ "Value": 819,
"Flags": [
{
"Name": "FirstByte3",
@@ -594,8 +594,8 @@ label: value (0)
"int8_t-min": -128,
"apsint": 9999999999999999999999,
"label": {
- "Value": "value",
- "RawValue": 0
+ "Name": "value",
+ "Value": 0
}
})";
verifyAll(ExpectedOut, JSONExpectedOut, PrintFunc);
@@ -761,8 +761,8 @@ HexLabel: Name (0x10)
const char *JSONExpectedOut = R"({
"HexNumber": 16,
"HexLabel": {
- "Value": "Name",
- "RawValue": 16
+ "Name": "Name",
+ "Value": 16
}
})";
verifyAll(ExpectedOut, JSONExpectedOut, PrintFunc);
More information about the llvm-commits
mailing list