@@ -65,36 +65,32 @@ static const MCSection *getTargetSection(const MCExpr *Expr) {
6565unsigned WebAssemblyWasmObjectWriter::getRelocType (
6666 const MCValue &Target, const MCFixup &Fixup,
6767 const MCSectionWasm &FixupSection, bool IsLocRel) const {
68- const MCSymbolRefExpr *RefA = Target.getSymA ();
69- assert (RefA);
70- auto & SymA = cast<MCSymbolWasm>(RefA->getSymbol ());
71-
72- auto Modifier = Target.getAccessVariant ();
73-
74- switch (Modifier) {
75- case MCSymbolRefExpr::VK_GOT:
76- case MCSymbolRefExpr::VK_WASM_GOT_TLS:
77- return wasm::R_WASM_GLOBAL_INDEX_LEB;
78- case MCSymbolRefExpr::VK_WASM_TBREL:
79- assert (SymA.isFunction ());
80- return is64Bit () ? wasm::R_WASM_TABLE_INDEX_REL_SLEB64
81- : wasm::R_WASM_TABLE_INDEX_REL_SLEB;
82- case MCSymbolRefExpr::VK_WASM_TLSREL:
83- return is64Bit () ? wasm::R_WASM_MEMORY_ADDR_TLS_SLEB64
84- : wasm::R_WASM_MEMORY_ADDR_TLS_SLEB;
85- case MCSymbolRefExpr::VK_WASM_MBREL:
86- assert (SymA.isData ());
87- return is64Bit () ? wasm::R_WASM_MEMORY_ADDR_REL_SLEB64
88- : wasm::R_WASM_MEMORY_ADDR_REL_SLEB;
89- case MCSymbolRefExpr::VK_WASM_TYPEINDEX:
90- return wasm::R_WASM_TYPE_INDEX_LEB;
91- case MCSymbolRefExpr::VK_None:
92- break ;
93- case MCSymbolRefExpr::VK_WASM_FUNCINDEX:
94- return wasm::R_WASM_FUNCTION_INDEX_I32;
95- default :
96- report_fatal_error (" unknown VariantKind" );
97- break ;
68+ auto &SymA = cast<MCSymbolWasm>(*Target.getAddSym ());
69+ auto Spec = Target.getSymSpecifier ();
70+ switch (Spec) {
71+ case MCSymbolRefExpr::VK_GOT:
72+ case MCSymbolRefExpr::VK_WASM_GOT_TLS:
73+ return wasm::R_WASM_GLOBAL_INDEX_LEB;
74+ case MCSymbolRefExpr::VK_WASM_TBREL:
75+ assert (SymA.isFunction ());
76+ return is64Bit () ? wasm::R_WASM_TABLE_INDEX_REL_SLEB64
77+ : wasm::R_WASM_TABLE_INDEX_REL_SLEB;
78+ case MCSymbolRefExpr::VK_WASM_TLSREL:
79+ return is64Bit () ? wasm::R_WASM_MEMORY_ADDR_TLS_SLEB64
80+ : wasm::R_WASM_MEMORY_ADDR_TLS_SLEB;
81+ case MCSymbolRefExpr::VK_WASM_MBREL:
82+ assert (SymA.isData ());
83+ return is64Bit () ? wasm::R_WASM_MEMORY_ADDR_REL_SLEB64
84+ : wasm::R_WASM_MEMORY_ADDR_REL_SLEB;
85+ case MCSymbolRefExpr::VK_WASM_TYPEINDEX:
86+ return wasm::R_WASM_TYPE_INDEX_LEB;
87+ case MCSymbolRefExpr::VK_None:
88+ break ;
89+ case MCSymbolRefExpr::VK_WASM_FUNCINDEX:
90+ return wasm::R_WASM_FUNCTION_INDEX_I32;
91+ default :
92+ report_fatal_error (" unknown VariantKind" );
93+ break ;
9894 }
9995
10096 switch (unsigned (Fixup.getKind ())) {
0 commit comments