summaryrefslogtreecommitdiff
path: root/src/SDCCmem.h
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-21 00:22:00 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-21 00:22:00 +0200
commit3fcc2d265f1521c2dcae0734de355962cc6cd7a0 (patch)
tree9f914b554fa9af110fda60e6a3962fe9e3a40423 /src/SDCCmem.h
parenta2a263dd383d76e4ee0ed62f393376ef2ae49171 (diff)
downloadsdcc-gas-3fcc2d265f1521c2dcae0734de355962cc6cd7a0.tar.gz
More work on GNU as generation
On _gas_mapping, label definitions do not allow "::". ":" must be used instead. gasOutput is now part of "options". Unneeded sections, such as HOME/GSINIT/etc., are no longer declared and/or defined. GNU as just does not need them. Startup function name must equal "_start" for GNU ld. The value of some macros, such as CODE_NAME or DATA_NAME, must change according to options.gasOutput, as "CODE" or "DATA" (among many others) are not understood by GNU as. STM8 port now selects GNU as format on --gas switch enabled.
Diffstat (limited to 'src/SDCCmem.h')
-rw-r--r--src/SDCCmem.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/SDCCmem.h b/src/SDCCmem.h
index ddfea0b..8e1bc56 100644
--- a/src/SDCCmem.h
+++ b/src/SDCCmem.h
@@ -48,10 +48,10 @@ extern FILE *junkFile;
/* memory map prefixes MOF added the DATA,CODE,XDATA,BIT */
#define XSTACK_NAME port->mem.xstack_name
#define ISTACK_NAME port->mem.istack_name
-#define CODE_NAME port->mem.code_name
-#define DATA_NAME port->mem.data_name
-#define INITIALIZED_NAME port->mem.initialized_name
-#define INITIALIZER_NAME port->mem.initializer_name
+#define CODE_NAME (options.gasOutput ? ".text" : port->mem.code_name)
+#define DATA_NAME (options.gasOutput ? ".bss" : port->mem.data_name)
+#define INITIALIZED_NAME (options.gasOutput ? ".data" : port->mem.data_name)
+#define INITIALIZER_NAME (options.gasOutput ? ".data.rodata" : port->mem.data_name)
#define IDATA_NAME port->mem.idata_name
#define PDATA_NAME port->mem.pdata_name
#define XDATA_NAME port->mem.xdata_name
@@ -60,9 +60,9 @@ extern FILE *junkFile;
#define BIT_NAME port->mem.bit_name
#define REG_NAME port->mem.reg_name
#define STATIC_NAME port->mem.static_name
-#define HOME_NAME port->mem.home_name
+#define HOME_NAME (options.gasOutput ? ".text.interrupt_vector" : port->mem.home_name)
#define OVERLAY_NAME port->mem.overlay_name
-#define CONST_NAME port->mem.const_name
+#define CONST_NAME (options.gasOutput ? ".rodata" : port->mem.const_name)
#define CABS_NAME port->mem.cabs_name
#define XABS_NAME port->mem.xabs_name
#define IABS_NAME port->mem.iabs_name