+2015-02-24 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ * scripttempl/avr.sc: Add new user_signatures region. Define and
+ use symbols for all region lengths.
+ * scripttempl/avrtiny.sc: Define and use symbols for all region
+ lengths.
+
2015-01-21 Yoshinori Sato <ysato@users.sourceforge.jp>
* Makefile.am: (ALL_EMULATION_SOURCES): Add new emulations.
OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
OUTPUT_ARCH(${ARCH})
+__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : $TEXT_LENGTH;
+__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : $DATA_LENGTH;
+__EEPROM_REGION_LENGTH__ = DEFINED(__EEPROM_REGION_LENGTH__) ? __EEPROM_REGION_LENGTH__ : 64K;
+__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 1K;
+__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 1K;
+__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 1K;
+__USER_SIGNATURE_REGION_LENGTH__ = DEFINED(__USER_SIGNATURE_REGION_LENGTH__) ? __USER_SIGNATURE_REGION_LENGTH__ : 1K;
+
MEMORY
{
- text (rx) : ORIGIN = 0, LENGTH = $TEXT_LENGTH
- data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
- eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = 64K
- fuse (rw!x) : ORIGIN = 0x820000, LENGTH = 1K
- lock (rw!x) : ORIGIN = 0x830000, LENGTH = 1K
- signature (rw!x) : ORIGIN = 0x840000, LENGTH = 1K
+ text (rx) : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
+ data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = __DATA_REGION_LENGTH__
+ eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__
+ fuse (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
+ lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
+ signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
+ user_signatures (rw!x) : ORIGIN = 0x850000, LENGTH = __USER_SIGNATURE_REGION_LENGTH__
}
SECTIONS
OUTPUT_FORMAT("${OUTPUT_FORMAT}","${OUTPUT_FORMAT}","${OUTPUT_FORMAT}")
OUTPUT_ARCH(${ARCH})
+__TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : $TEXT_LENGTH;
+__DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : $DATA_LENGTH;
+__FUSE_REGION_LENGTH__ = DEFINED(__FUSE_REGION_LENGTH__) ? __FUSE_REGION_LENGTH__ : 2;
+__LOCK_REGION_LENGTH__ = DEFINED(__LOCK_REGION_LENGTH__) ? __LOCK_REGION_LENGTH__ : 2;
+__SIGNATURE_REGION_LENGTH__ = DEFINED(__SIGNATURE_REGION_LENGTH__) ? __SIGNATURE_REGION_LENGTH__ : 4;
+
MEMORY
{
- text (rx) : ORIGIN = $TEXT_ORIGIN, LENGTH = $TEXT_LENGTH
- data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = $DATA_LENGTH
+ text (rx) : ORIGIN = $TEXT_ORIGIN, LENGTH = __TEXT_REGION_LENGTH__
+ data (rw!x) : ORIGIN = $DATA_ORIGIN, LENGTH = __DATA_REGION_LENGTH__
/* Provide offsets for config, lock and signature to match
production file format. Ignore offsets in datasheet. */
- config (rw!x) : ORIGIN = 0x820000, LENGTH = 2
- lock (rw!x) : ORIGIN = 0x830000, LENGTH = 2
- signature (rw!x) : ORIGIN = 0x840000, LENGTH = 4
+ config (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__
+ lock (rw!x) : ORIGIN = 0x830000, LENGTH = __LOCK_REGION_LENGTH__
+ signature (rw!x) : ORIGIN = 0x840000, LENGTH = __SIGNATURE_REGION_LENGTH__
}
SECTIONS
+2015-02-24 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ * ld-avr/region_overflow.d: New test.
+ * ld-avr/region_overflow.s: Likewise.
+
2015-02-19 H.J. Lu <hongjiu.lu@intel.com>
PR ld/4317
--- /dev/null
+#name: AVR catch region overflow errors
+#as: -mmcu=avrxmega2
+#ld: -mavrxmega2 --relax --defsym __TEXT_REGION_LENGTH__=2
+#source: region_overflow.s
+#target: avr-*-*
+#error: `.text' will not fit in region `text'
--- /dev/null
+.section .text
+.byte 0xA
+.byte 0xB
+.byte 0xC
+.byte 0xD