[2/9] gas: put emul decls in emul.h
Checks
Commit Message
The individual struct emulation instances shouldn't be declared in a .c
file; it and the producers of the symbols want to both see the
declarations, so declarations and definitions don't go out of sync. Move
these declarations to emul.h.
While there also adjust the conditional around this_format: That symbol
is never #define-d anywhere, and it's needed only when USE_EMULATIONS is
defined. (Really, when obj-multi isn't in use, it also is effectively
only ever written to.)
---
Sadly this way those declarations become globally exposed. But what do
you do; global exposure of about everything appears to be a principle
in gas.
@@ -130,10 +130,6 @@ static long start_time;
#ifdef USE_EMULATIONS
#define EMULATION_ENVIRON "AS_EMULATION"
-extern struct emulation mipsbelf, mipslelf, mipself;
-extern struct emulation i386coff, i386elf, i386aout;
-extern struct emulation crisaout, criself;
-
static struct emulation *const emulations[] = { EMULATIONS };
static const int n_emulations = sizeof (emulations) / sizeof (emulations[0]);
@@ -35,6 +35,10 @@ struct emulation
COMMON struct emulation * this_emulation;
+extern struct emulation mipsbelf, mipslelf, mipself;
+extern struct emulation i386coff, i386elf, i386aout;
+extern struct emulation crisaout, criself;
+
extern void common_emul_init (void);
#endif
@@ -82,7 +82,7 @@ extern const struct format_ops ecoff_for
extern const struct format_ops coff_format_ops;
extern const struct format_ops aout_format_ops;
-#ifndef this_format
+#ifdef USE_EMULATIONS
COMMON const struct format_ops *this_format;
#endif