Skip to content

Commit

Permalink
[llvm-readobj] Rename JSON Flag fields to be more consistent
Browse files Browse the repository at this point in the history
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
  • Loading branch information
ilovepi committed Mar 18, 2023
1 parent 23fd6e3 commit 93c1a5f
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 83 deletions.
3 changes: 3 additions & 0 deletions llvm/docs/ReleaseNotes.rst
Expand Up @@ -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
---------------------------------

Expand Down
12 changes: 6 additions & 6 deletions llvm/include/llvm/Support/ScopedPrinter.h
Expand Up @@ -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();
Expand All @@ -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);
Expand Down Expand Up @@ -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));
});
}

Expand All @@ -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();
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/tools/llvm-readobj/ELF/aarch64-symbols-stother.test
Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down
8 changes: 4 additions & 4 deletions llvm/test/tools/llvm-readobj/ELF/mips-symbols-stother.test
Expand Up @@ -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",
Expand All @@ -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",
Expand Down
72 changes: 36 additions & 36 deletions llvm/test/tools/llvm-readobj/ELF/relocations.test
Expand Up @@ -120,51 +120,51 @@
# 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: },
# JSON-EXPAND-64-NEXT: {
# 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: },
# JSON-EXPAND-64-NEXT: {
# 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: },
# JSON-EXPAND-64-NEXT: {
# 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: }}
Expand All @@ -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: }
Expand All @@ -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: }
Expand All @@ -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: }
Expand All @@ -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: }
Expand All @@ -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: }
Expand Down
16 changes: 8 additions & 8 deletions llvm/test/tools/llvm-readobj/ELF/symbol-visibility.test
Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down

0 comments on commit 93c1a5f

Please sign in to comment.