]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Allow symbols in MEMORY region specification
authorSenthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
Wed, 28 Jan 2015 04:31:50 +0000 (15:01 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 28 Jan 2015 04:36:48 +0000 (15:06 +1030)
commitcc9ad334a71b0c032f711e86885fb73821f3be16
treee721067748cda338595b230ab0557039b65d94f4
parente5fe4957b4513015b40472086f22cf8723b95773
Allow symbols in MEMORY region specification

This patch fixes PR 4643 by allowing symbols in the LENGTH and ORIGIN
fields of MEMORY regions.  Previously, only constants and constant
expressions are allowed.

For the AVR target, this helps define memory constraints more
accurately (per device), without having to create a ton of device
specific linker scripts.

ld/
PR 4643
* ldexp.c (fold_name): Fold LENGTH only after
lang_first_phase_enum.
* ldgram.y (memory_spec): Don't evaluate ORIGIN and LENGTH
rightaway.
* ldlang.h (struct memory_region_struct): Add origin_exp and
length_exp fields.
* ldlang.c (lang_do_memory_regions): New.
(lang_memory_region_lookup): Initialize origin_exp and
length_exp fields.
(lang_process): Call lang_do_memory_regions.
ld/testsuite/
* ld-scripts/memory.t: Define new symbol tred.
* ld-scripts/memory_sym.t: New.
* ld-scripts/script.exp: Perform MEMORY with symbols test, and
conditionally check values of linker symbols.
ld/ChangeLog
ld/ldexp.c
ld/ldgram.y
ld/ldlang.c
ld/ldlang.h
ld/testsuite/ChangeLog
ld/testsuite/ld-scripts/memory.t
ld/testsuite/ld-scripts/memory_sym.t [new file with mode: 0644]
ld/testsuite/ld-scripts/script.exp