summaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2017-05-03 13:13:52 -0700
committerMax Filippov <jcmvbkbc@gmail.com>2022-11-28 18:16:12 -0800
commitd0a2cfbd3141dae38498fa077b01ae6bb394462b (patch)
tree8cb6fc2a729622c8b9dd3cbbce771a418e3a088f /gas/config
parentcb44f89ce977b1ab2d4063f2487950bddfb75bc7 (diff)
downloadbinutils-gdb-d0a2cfbd3141dae38498fa077b01ae6bb394462b.tar.gz
xtensa: allow dynamic configuration
Import include/xtensa-dynconfig.h that defines XCHAL_* macros as fields of a structure returned from the xtensa_get_config_v<x> function call. Define that structure and fill it with default parameter values specified in the include/xtensa-config.h. Define reusable function xtensa_load_config that tries to load configuration and return an address of an exported object from it. Define functions xtensa_get_config_v{1,2} that use xtensa_load_config to get structures xtensa_config_v{1,2}, either dynamically configured or the default. bfd/ * Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Append xtensa-dynconfig.c. * Makefile.in: Regenerate. * configure: Regenerate. * configure.ac (xtensa_elf32_be_vec, xtensa_elf32_le_vec): Add xtensa-dynconfig.lo to the tb. * elf32-xtensa.c (xtensa-config.h): Replace #include with xtensa-dynconfig.h. (XSHAL_ABI, XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): Remove definitions. * xtensa-dynconfig.c: New file. * xtensa-isa.c (xtensa-dynconfig.h): New #include. (xtensa_get_modules): New function. (xtensa_isa_init): Call xtensa_get_modules instead of taking address of global xtensa_modules. gas/ * config/tc-xtensa.c (xtensa-config.h): Replace #include with xtensa-dynconfig.h. (XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0, XTENSA_MARCH_EARLIEST): Remove definitions. * config/tc-xtensa.h (xtensa-config.h): Replace #include with xtensa-dynconfig.h. * config/xtensa-relax.c (xtensa-config.h): Replace #include with xtensa-dynconfig.h. (XCHAL_HAVE_WIDE_BRANCHES): Remove definition. include/ * xtensa-dynconfig.h: New file. ld/ * emultempl/xtensaelf.em (xtensa-config.h): Replace #include with xtensa-dynconfig.h. (XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): Remove definitions.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-xtensa.c15
-rw-r--r--gas/config/tc-xtensa.h2
-rw-r--r--gas/config/xtensa-relax.c6
3 files changed, 3 insertions, 20 deletions
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index f7a28d32d0c..30152bbfbfd 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -27,22 +27,9 @@
#include "xtensa-relax.h"
#include "dwarf2dbg.h"
#include "xtensa-istack.h"
-#include "xtensa-config.h"
+#include "xtensa-dynconfig.h"
#include "elf/xtensa.h"
-/* Provide default values for new configuration settings. */
-#ifndef XTHAL_ABI_WINDOWED
-#define XTHAL_ABI_WINDOWED 0
-#endif
-
-#ifndef XTHAL_ABI_CALL0
-#define XTHAL_ABI_CALL0 1
-#endif
-
-#ifndef XTENSA_MARCH_EARLIEST
-#define XTENSA_MARCH_EARLIEST 0
-#endif
-
#ifndef uint32
#define uint32 unsigned int
#endif
diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h
index e67abbc9920..b3a49ac8667 100644
--- a/gas/config/tc-xtensa.h
+++ b/gas/config/tc-xtensa.h
@@ -28,7 +28,7 @@ struct fix;
#endif
#include "xtensa-isa.h"
-#include "xtensa-config.h"
+#include "xtensa-dynconfig.h"
#define TARGET_BYTES_BIG_ENDIAN 0
diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c
index 0682b29f815..5df220113da 100644
--- a/gas/config/xtensa-relax.c
+++ b/gas/config/xtensa-relax.c
@@ -93,11 +93,7 @@
#include "xtensa-isa.h"
#include "xtensa-relax.h"
#include <stddef.h>
-#include "xtensa-config.h"
-
-#ifndef XCHAL_HAVE_WIDE_BRANCHES
-#define XCHAL_HAVE_WIDE_BRANCHES 0
-#endif
+#include "xtensa-dynconfig.h"
/* Imported from bfd. */
extern xtensa_isa xtensa_default_isa;