diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2023-12-17 19:20:54 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2023-12-18 09:50:51 +0000 |
commit | d51cd0f64c6d3bd235f140ed71cc2c3e0b87a5ff (patch) | |
tree | 33f4c7caca4621c777bf322268c8c6d5f5886430 /ld/scripttempl | |
parent | c4fb39bb31a53bbb2df3be3200d694f025c5b892 (diff) | |
download | gdb-d51cd0f64c6d3bd235f140ed71cc2c3e0b87a5ff.zip gdb-d51cd0f64c6d3bd235f140ed71cc2c3e0b87a5ff.tar.gz gdb-d51cd0f64c6d3bd235f140ed71cc2c3e0b87a5ff.tar.bz2 |
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.
Diffstat (limited to 'ld/scripttempl')
-rw-r--r-- | ld/scripttempl/avr.sc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ld/scripttempl/avr.sc b/ld/scripttempl/avr.sc index a44eba5..00ff49a 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__ |