[2/9] gas: put emul decls in emul.h

Message ID 994381fe-560a-4ca1-aada-a110730880ed@suse.com
State New
Headers
Series gas: tidying of emulations |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Jan Beulich Sept. 27, 2024, 1:02 p.m. UTC
  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.
  

Patch

--- a/gas/as.c
+++ b/gas/as.c
@@ -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]);
 
--- a/gas/emul.h
+++ b/gas/emul.h
@@ -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
--- a/gas/obj.h
+++ b/gas/obj.h
@@ -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