Index: lib/ObjectYAML/WasmYAML.cpp =================================================================== --- lib/ObjectYAML/WasmYAML.cpp +++ lib/ObjectYAML/WasmYAML.cpp @@ -533,6 +533,7 @@ BCaseMask(VISIBILITY_MASK, VISIBILITY_HIDDEN); BCaseMask(UNDEFINED, UNDEFINED); BCaseMask(EXPORTED, EXPORTED); + BCaseMask(EXPLICIT_NAME, EXPLICIT_NAME); #undef BCaseMask } Index: test/tools/llvm-readobj/Inputs/imports.obj.yaml =================================================================== --- test/tools/llvm-readobj/Inputs/imports.obj.yaml +++ test/tools/llvm-readobj/Inputs/imports.obj.yaml @@ -0,0 +1,85 @@ +--- !WASM +FileHeader: + Version: 0x00000001 +Sections: + - Type: TYPE + Signatures: + - Index: 0 + ReturnType: I32 + ParamTypes: [] + - Index: 1 + ReturnType: NORESULT + ParamTypes: [] + - Type: IMPORT + Imports: + - Module: env + Field: __linear_memory + Kind: MEMORY + Memory: + Initial: 0x00000000 + - Module: env + Field: __indirect_function_table + Kind: TABLE + Table: + ElemType: FUNCREF + Limits: + Initial: 0x00000000 + - Module: red + Field: foo + Kind: FUNCTION + SigIndex: 1 + - Module: env + Field: green + Kind: FUNCTION + SigIndex: 1 + - Module: blue + Field: purple + Kind: FUNCTION + SigIndex: 1 + - Type: FUNCTION + FunctionTypes: [ 0 ] + - Type: CODE + Relocations: + - Type: R_WASM_FUNCTION_INDEX_LEB + Index: 1 + Offset: 0x00000004 + - Type: R_WASM_FUNCTION_INDEX_LEB + Index: 2 + Offset: 0x0000000A + - Type: R_WASM_FUNCTION_INDEX_LEB + Index: 3 + Offset: 0x00000010 + Functions: + - Index: 3 + Locals: [] + Body: 10808080800010818080800010828080800041000B + - Type: CUSTOM + Name: linking + Version: 2 + SymbolTable: + - Index: 0 + Kind: FUNCTION + Name: test + Flags: [ VISIBILITY_HIDDEN ] + Function: 3 + - Index: 1 + Kind: FUNCTION + Name: foo + Flags: [ UNDEFINED ] + Function: 0 + - Index: 2 + Kind: FUNCTION + Name: bar + Flags: [ UNDEFINED, EXPLICIT_NAME ] + Function: 1 + - Index: 3 + Kind: FUNCTION + Name: qux + Flags: [ UNDEFINED, EXPLICIT_NAME ] + Function: 2 + - Type: CUSTOM + Name: producers + Tools: + - Name: clang + Version: '9.0.0 (trunk 359436)' +... Index: test/tools/llvm-readobj/wasm-imports.test =================================================================== --- test/tools/llvm-readobj/wasm-imports.test +++ test/tools/llvm-readobj/wasm-imports.test @@ -0,0 +1,47 @@ +RUN: yaml2obj %p/Inputs/imports.obj.yaml | llvm-readobj --symbols | FileCheck %s + +CHECK: Format: WASM +CHECK-NEXT: Arch: wasm32 +CHECK-NEXT: AddressSize: 32bit +CHECK-NEXT: Symbols [ +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: test +CHECK-NEXT: Type: FUNCTION (0x0) +CHECK-NEXT: Flags [ (0x4) +CHECK-NEXT: VISIBILITY_HIDDEN (0x4) +CHECK-NEXT: ] +CHECK-NEXT: ElementIndex: 0x3 +CHECK-NEXT: } +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: foo +CHECK-NEXT: Type: FUNCTION (0x0) +CHECK-NEXT: Flags [ (0x10) +CHECK-NEXT: UNDEFINED (0x10) +CHECK-NEXT: ] +CHECK-NEXT: ImportName: foo +CHECK-NEXT: ImportModule: red +CHECK-NEXT: ElementIndex: 0x0 +CHECK-NEXT: } +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: bar +CHECK-NEXT: Type: FUNCTION (0x0) +CHECK-NEXT: Flags [ (0x50) +CHECK-NEXT: EXPLICIT_NAME (0x40) +CHECK-NEXT: UNDEFINED (0x10) +CHECK-NEXT: ] +CHECK-NEXT: ImportName: green +CHECK-NEXT: ImportModule: env +CHECK-NEXT: ElementIndex: 0x1 +CHECK-NEXT: } +CHECK-NEXT: Symbol { +CHECK-NEXT: Name: qux +CHECK-NEXT: Type: FUNCTION (0x0) +CHECK-NEXT: Flags [ (0x50) +CHECK-NEXT: EXPLICIT_NAME (0x40) +CHECK-NEXT: UNDEFINED (0x10) +CHECK-NEXT: ] +CHECK-NEXT: ImportName: purple +CHECK-NEXT: ImportModule: blue +CHECK-NEXT: ElementIndex: 0x2 +CHECK-NEXT: } +CHECK-NEXT: ] Index: tools/llvm-readobj/WasmDumper.cpp =================================================================== --- tools/llvm-readobj/WasmDumper.cpp +++ tools/llvm-readobj/WasmDumper.cpp @@ -50,6 +50,7 @@ ENUM_ENTRY(VISIBILITY_HIDDEN), ENUM_ENTRY(UNDEFINED), ENUM_ENTRY(EXPORTED), + ENUM_ENTRY(EXPLICIT_NAME), #undef ENUM_ENTRY };