aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Harmstone <mark@harmstone.com>2022-12-27 22:16:04 +0000
committerMark Harmstone <mark@harmstone.com>2023-01-10 23:30:52 +0000
commit7697bc652347ec5009c2225d0abd3aff41477917 (patch)
treebc8cb35d2be9e417d57a0230ed7283a1c333003d
parent16fea92ccd993fce6b5b0efebe059d542cad9932 (diff)
downloadbinutils-7697bc652347ec5009c2225d0abd3aff41477917.zip
binutils-7697bc652347ec5009c2225d0abd3aff41477917.tar.gz
binutils-7697bc652347ec5009c2225d0abd3aff41477917.tar.bz2
gas: Restore tc_pe_dwarf2_emit_offset for pe-aarch64
Restores tc_pe_dwarf2_emit_offset in tc-aarch64.c, which is needed to make sure that DWARF offsets are encoded correctly (they're secrels in COFF). There were remnants of this there before, but they were removed by Jedidiah's original patch - presumably because we didn't yet have .secrel32.
-rw-r--r--gas/config/tc-aarch64.c11
-rw-r--r--gas/config/tc-aarch64.h5
2 files changed, 16 insertions, 0 deletions
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index ad070cd..2b74db2 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -2116,6 +2116,17 @@ s_secrel (int dummy ATTRIBUTE_UNUSED)
input_line_pointer--;
demand_empty_rest_of_line ();
}
+
+void
+tc_pe_dwarf2_emit_offset (symbolS *symbol, unsigned int size)
+{
+ expressionS exp;
+
+ exp.X_op = O_secrel;
+ exp.X_add_symbol = symbol;
+ exp.X_add_number = 0;
+ emit_expr (&exp, size);
+}
#endif /* TE_PE */
static void s_aarch64_arch (int);
diff --git a/gas/config/tc-aarch64.h b/gas/config/tc-aarch64.h
index fa4b3ac..134c1f8 100644
--- a/gas/config/tc-aarch64.h
+++ b/gas/config/tc-aarch64.h
@@ -315,7 +315,12 @@ extern int tc_aarch64_regname_to_dw2regnum (char *regname);
extern void tc_aarch64_frame_initial_instructions (void);
#ifdef TE_PE
+
#define O_secrel O_md1
+
+#define TC_DWARF2_EMIT_OFFSET tc_pe_dwarf2_emit_offset
+void tc_pe_dwarf2_emit_offset (symbolS *, unsigned int);
+
#endif /* TE_PE */
#endif /* TC_AARCH64 */