From ea5cae92bdd0686144ac42346d32c58e6f0e0b16 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 6 Oct 2010 08:58:59 +0000 Subject: * script-sections.cc(class Memory_region): Remove current_lma_offset_ field. Rename current_vma_offset_ to current_offset_. Add last_section_ field. (Memory_region::get_current_vma_address): Rename to get_current_address. (Memory_region::get_current_lma_address): Delete. (Memory_region::increment_vma_offset): Rename to increment_offset. (Memory_region::increment_lma_offset): Delete. (Memory_region::attributes_compatible): New method. Returns true if the provided section is compatible with the region. (Memory_region::get_last_section): New method. Returns the last section to use the region. (Memory_region::set_last_section): New method. Stores the last section to use the region. (Script_sections::block_in_region): New method. Returns true if a block of memory is contained within a region. (Script_sections::find_memory_region): New method. Locates a memory region to be used to set a VMA or LMA address. (Output_section_definition::set_section_addresses): Add code to check for addresses set by memory regions. (Output_segment::set_section_addresses): Remove memory region walking code. (Script_sections::create_segment): Add a warning if a header segment is created outside of any region. * script-sections.h (class Script_sections): Add prototypes for find_memory_region and block_in_region methods. * testsuite/memory_test.s: Use .long instead of .word. * testsuite/memory_test.t: Add some more output sections. * testsuite/memory_test.sh: Update expected output. * ld.texinfo: Update description of computation of VMA and LMA addresses for output sections. * ld-scripts/rgn-at5.t: Add some more output sections. * ld-scripts/rgn-at5.d: Update expected output. --- gold/testsuite/memory_test.s | 10 +++++----- gold/testsuite/memory_test.sh | 19 ++++++++++++++----- gold/testsuite/memory_test.t | 8 ++++++-- 3 files changed, 25 insertions(+), 12 deletions(-) (limited to 'gold/testsuite') diff --git a/gold/testsuite/memory_test.s b/gold/testsuite/memory_test.s index dbb63ea..ce8576c 100644 --- a/gold/testsuite/memory_test.s +++ b/gold/testsuite/memory_test.s @@ -1,14 +1,14 @@ .section .sec0, "a" - .word 0 + .long 0 .section .sec1, "a" - .word 0x11 + .long 0x11 .section .sec2, "a" - .word 0x22 + .long 0x22 .section .sec3, "a" - .word 0x33 + .long 0x33 .section .sec4, "a" - .word 0x44 + .long 0x44 diff --git a/gold/testsuite/memory_test.sh b/gold/testsuite/memory_test.sh index 5c172f4..db3917a 100755 --- a/gold/testsuite/memory_test.sh +++ b/gold/testsuite/memory_test.sh @@ -23,6 +23,14 @@ # MA 02110-1301, USA. +# NOTE: The linker script used in this test (memory_test.t) +# should be the same as the one used in the rgn-at5 linker +# test (ld/testsuite/ld-scripts/rgn-at5.t). +# +# Modulo some section ordering the output from GOLD in this +# test should be the same as the output from GNU LD in the +# rgn-at5 test. + check() { file=$1 @@ -36,13 +44,14 @@ check() } check memory_test.stdout \ - " LOAD 0x001000 0x0*00000000 0x0*00000000 0x00000\?2 0x00000\?2 R 0x1000" + " LOAD 0x001000 0x0*02000 0x0*02000 0x0*04 0x0*04 R 0x1000" check memory_test.stdout \ - " LOAD 0x00112c 0x0*00001000 0x0*0000012c 0x00000\?2 0x00000\?2 R 0x1000" + " LOAD 0x001004 0x0*01000 0x0*02004 0x0*04 0x0*04 R 0x1000" check memory_test.stdout \ - " LOAD 0x002000 0x0*00005000 0x0*00005000 0x00000\?2 0x00000\?2 R 0x1000" + " LOAD 0x001008 0x0*02008 0x0*02008 0x0*08 0x0*08 R 0x1000" check memory_test.stdout \ - " LOAD 0x00203c 0x0*00004000 0x0*0000603c 0x00000\?2 0x00000\?2 R 0x1000" - + " LOAD 0x002000 0x0*05000 0x0*05000 0x0*04 0x0*04 R 0x1000" +check memory_test.stdout \ + " LOAD 0x00203c 0x0*04000 0x0*0603c 0x0*04 0x0*04 R 0x1000" exit 0 diff --git a/gold/testsuite/memory_test.t b/gold/testsuite/memory_test.t index 5963c93..3a35994 100644 --- a/gold/testsuite/memory_test.t +++ b/gold/testsuite/memory_test.t @@ -10,13 +10,17 @@ SECTIONS { .sec0 : { *(*.sec0) } - .sec1 ORIGIN (region1) : AT(LENGTH (region2)) { *(*.sec1) } + .sec1 ORIGIN (region1) : { *(*.sec1) } AT> region2 - fred = ORIGIN (region1) + LENGTH (region1) ; + fred = ORIGIN (region1) + LENGTH (region1); .sec2 : { *(*.sec2) } > region3 AT> region4 .sec3 0x5000 : { *(*.sec3) } + .sec4 : { *(*.sec4) } AT> region2 + + .sec5 : { LONG(0x5555) } > region2 + /DISCARD/ : { *(*) } } -- cgit v1.1