Merge reloc_func and reloc_globalsym into reloc_external.

This commit is contained in:
Dan Gohman
2017-10-31 12:06:13 -07:00
parent b60b2ce135
commit 5d063eb8bc
12 changed files with 52 additions and 55 deletions

View File

@@ -477,7 +477,7 @@ fnaddr4 = TailRecipe(
'fnaddr4', FuncAddr, size=4, ins=(), outs=GPR,
emit='''
PUT_OP(bits | (out_reg0 & 7), rex1(out_reg0), sink);
sink.reloc_func(RelocKind::Abs4.into(), func_ref);
sink.reloc_external(RelocKind::Abs4.into(), &func.dfg.ext_funcs[func_ref].name);
sink.put4(0);
''')
@@ -486,7 +486,7 @@ fnaddr8 = TailRecipe(
'fnaddr8', FuncAddr, size=8, ins=(), outs=GPR,
emit='''
PUT_OP(bits | (out_reg0 & 7), rex1(out_reg0), sink);
sink.reloc_func(RelocKind::Abs8.into(), func_ref);
sink.reloc_external(RelocKind::Abs8.into(), &func.dfg.ext_funcs[func_ref].name);
sink.put8(0);
''')
@@ -495,7 +495,7 @@ allones_fnaddr4 = TailRecipe(
'allones_fnaddr4', FuncAddr, size=4, ins=(), outs=GPR,
emit='''
PUT_OP(bits | (out_reg0 & 7), rex1(out_reg0), sink);
sink.reloc_func(RelocKind::Abs4.into(), func_ref);
sink.reloc_external(RelocKind::Abs4.into(), &func.dfg.ext_funcs[func_ref].name);
// Write the immediate as `!0` for the benefit of BaldrMonkey.
sink.put4(!0);
''')
@@ -505,7 +505,7 @@ allones_fnaddr8 = TailRecipe(
'allones_fnaddr8', FuncAddr, size=8, ins=(), outs=GPR,
emit='''
PUT_OP(bits | (out_reg0 & 7), rex1(out_reg0), sink);
sink.reloc_func(RelocKind::Abs8.into(), func_ref);
sink.reloc_external(RelocKind::Abs8.into(), &func.dfg.ext_funcs[func_ref].name);
// Write the immediate as `!0` for the benefit of BaldrMonkey.
sink.put8(!0);
''')
@@ -515,7 +515,7 @@ gvaddr4 = TailRecipe(
'gvaddr4', UnaryGlobalVar, size=4, ins=(), outs=GPR,
emit='''
PUT_OP(bits | (out_reg0 & 7), rex1(out_reg0), sink);
sink.reloc_globalsym(RelocKind::Abs4.into(), global_var);
sink.reloc_external(RelocKind::Abs4.into(), &func.global_vars[global_var].symbol_name());
sink.put4(0);
''')
@@ -524,7 +524,7 @@ gvaddr8 = TailRecipe(
'gvaddr8', UnaryGlobalVar, size=8, ins=(), outs=GPR,
emit='''
PUT_OP(bits | (out_reg0 & 7), rex1(out_reg0), sink);
sink.reloc_globalsym(RelocKind::Abs8.into(), global_var);
sink.reloc_external(RelocKind::Abs8.into(), &func.global_vars[global_var].symbol_name());
sink.put8(0);
''')
@@ -798,7 +798,7 @@ call_id = TailRecipe(
'call_id', Call, size=4, ins=(), outs=(),
emit='''
PUT_OP(bits, BASE_REX, sink);
sink.reloc_func(RelocKind::PCRel4.into(), func_ref);
sink.reloc_external(RelocKind::PCRel4.into(), &func.dfg.ext_funcs[func_ref].name);
sink.put4(0);
''')