ea5cae92bd
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.
27 lines
546 B
Raku
27 lines
546 B
Raku
MEMORY
|
|
{
|
|
region1 : ORIGIN = 0x1000, LENGTH = 0x1000 ,
|
|
region2 (r) : org = 0x2000, len = 300
|
|
region3 (wx) : o = 0x4000, l = 4
|
|
region4 (!r) : o = 0x6000 + 60, len = 0x30 * 0x6
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
.sec0 : { *(*.sec0) }
|
|
|
|
.sec1 ORIGIN (region1) : { *(*.sec1) } AT> region2
|
|
|
|
fred = ORIGIN (region1) + LENGTH (region1);
|
|
|
|
.sec2 : { *(*.sec2) } > region3 AT> region4
|
|
|
|
.sec3 0x5000 : { *(*.sec3) }
|
|
|
|
.sec4 : { *(*.sec4) } AT> region2
|
|
|
|
.sec5 : { LONG(0x5555) } > region2
|
|
|
|
/DISCARD/ : { *(*) }
|
|
}
|