[binutils-gdb] PR31177: Let region text start at __TEXT_REGION_ORIGIN___

Nick Clifton nickc@sourceware.org
Mon Dec 18 10:05:55 GMT 2023


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

commit d51cd0f64c6d3bd235f140ed71cc2c3e0b87a5ff
Author: Georg-Johann Lay <avr@gjlay.de>
Date:   Sun Dec 17 19:20:54 2023 +0100

    PR31177: Let region text start at __TEXT_REGION_ORIGIN___
    
    The start of MEMORY region text currently starts hard-coded at 0.
    
    The linker can produce more exact diagnostics when it knows the exact placements of the memory regions.
    
    For some old devices, program memory starts at 0x8000, so allow to specify program memory start at __TEXT_REGION_ORIGIN__ similar to how the data region is described.
    
    If ok, please apply to master.
    This one is also fine to back-port.
    
    Johann
    
    --
    
    AVR: Use __TEXT_REGION_ORIGIN__ as start for MEMORY region text.
    
    ld/
            PR 31177
            * scripttempl/avr.sc (__TEXT_REGION_ORIGIN__): New symbol.
            (MEMORY): Use as start address for the text region.

Diff:
---
 ld/scripttempl/avr.sc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/ld/scripttempl/avr.sc b/ld/scripttempl/avr.sc
index a44eba5c9e9..00ff49aacf4 100644
--- a/ld/scripttempl/avr.sc
+++ b/ld/scripttempl/avr.sc
@@ -92,6 +92,7 @@ OUTPUT_ARCH(${ARCH})
 EOF
 
 test -n "${RELOCATING}" && cat <<EOF
+__TEXT_REGION_ORIGIN__ = DEFINED(__TEXT_REGION_ORIGIN__) ? __TEXT_REGION_ORIGIN__ : 0;
 __TEXT_REGION_LENGTH__ = DEFINED(__TEXT_REGION_LENGTH__) ? __TEXT_REGION_LENGTH__ : $TEXT_LENGTH;
 __DATA_REGION_ORIGIN__ = DEFINED(__DATA_REGION_ORIGIN__) ? __DATA_REGION_ORIGIN__ : $DATA_ORIGIN;
 __DATA_REGION_LENGTH__ = DEFINED(__DATA_REGION_LENGTH__) ? __DATA_REGION_LENGTH__ : $DATA_LENGTH;
@@ -108,7 +109,7 @@ ${HAVE_FLMAP+__RODATA_REGION_LENGTH__ = DEFINED(__RODATA_REGION_LENGTH__) ? __RO
 ${HAVE_FLMAP+__RODATA_ORIGIN__ = __RODATA_VMA__ + __RODATA_LDS_OFFSET__;}
 MEMORY
 {
-  text   (rx)   : ORIGIN = 0, LENGTH = __TEXT_REGION_LENGTH__
+  text   (rx)   : ORIGIN = __TEXT_REGION_ORIGIN__, LENGTH = __TEXT_REGION_LENGTH__
   data   (rw!x) : ORIGIN = __DATA_REGION_ORIGIN__, LENGTH = __DATA_REGION_LENGTH__
 ${EEPROM_LENGTH+  eeprom (rw!x) : ORIGIN = 0x810000, LENGTH = __EEPROM_REGION_LENGTH__}
   $FUSE_NAME      (rw!x) : ORIGIN = 0x820000, LENGTH = __FUSE_REGION_LENGTH__


More information about the Binutils-cvs mailing list