This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] This patch modifies the AVR linker script templates to use __<name>_REGION_LENGTH__ symbols, if prov


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=cb0728165e282be2ad9b121c8c1e9da98c9784e4

commit cb0728165e282be2ad9b121c8c1e9da98c9784e4
Author: Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
Date:   Tue Feb 24 11:26:28 2015 +0000

    This patch modifies the AVR linker script templates to use __<name>_REGION_LENGTH__ symbols, if provided, for setting memory region lengths, defaulting to the current constant values otherwise.
    
    ld	* 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.
    
    testsuite * ld-avr/region_overflow.d: New test.
    	* ld-avr/region_overflow.s: Likewise.

Diff:
---
 ld/ChangeLog                          |  7 +++++++
 ld/scripttempl/avr.sc                 | 21 +++++++++++++++------
 ld/scripttempl/avrtiny.sc             | 16 +++++++++++-----
 ld/testsuite/ChangeLog                |  5 +++++
 ld/testsuite/ld-avr/region_overflow.d |  6 ++++++
 ld/testsuite/ld-avr/region_overflow.s |  5 +++++
 6 files changed, 49 insertions(+), 11 deletions(-)

diff --git a/ld/ChangeLog b/ld/ChangeLog
index d952670..4db576c 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+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.
diff --git a/ld/scripttempl/avr.sc b/ld/scripttempl/avr.sc
index cc4561f..038e7ab 100644
--- a/ld/scripttempl/avr.sc
+++ b/ld/scripttempl/avr.sc
@@ -14,14 +14,23 @@ cat <<EOF
 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
diff --git a/ld/scripttempl/avrtiny.sc b/ld/scripttempl/avrtiny.sc
index 6e8b09d..a4cf5db 100644
--- a/ld/scripttempl/avrtiny.sc
+++ b/ld/scripttempl/avrtiny.sc
@@ -14,17 +14,23 @@ cat <<EOF
 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
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 3eb1c99..b362a0a 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+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
diff --git a/ld/testsuite/ld-avr/region_overflow.d b/ld/testsuite/ld-avr/region_overflow.d
new file mode 100644
index 0000000..305d242
--- /dev/null
+++ b/ld/testsuite/ld-avr/region_overflow.d
@@ -0,0 +1,6 @@
+#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'
diff --git a/ld/testsuite/ld-avr/region_overflow.s b/ld/testsuite/ld-avr/region_overflow.s
new file mode 100644
index 0000000..c2899e7
--- /dev/null
+++ b/ld/testsuite/ld-avr/region_overflow.s
@@ -0,0 +1,5 @@
+.section .text
+.byte 0xA
+.byte 0xB
+.byte 0xC
+.byte 0xD


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]