PR ld/15222
ld/ * ldlang.c (lang_size_sections_1): When given an lma_region align LMA as per VMA only if lma_region is the same as region. ld/testsuite/ * ld-scripts/rgn-at6.s, * ld-scripts/rgn-at6.t, * ld-scripts/rgn-at6.d, * ld-scripts/rgn-at7.t, * ld-scripts/rgn-at7.d: New tests.
This commit is contained in:
parent
da797b631b
commit
13762d2ee4
8 changed files with 65 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-03-05 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/15222
|
||||
* ldlang.c (lang_size_sections_1): When given an lma_region align
|
||||
LMA as per VMA only if lma_region is the same as region.
|
||||
|
||||
2013-02-27 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* scripttempl/elf32msp430.sc: Add placement of .data.* sections.
|
||||
|
|
|
@ -4963,6 +4963,13 @@ lang_size_sections_1
|
|||
{
|
||||
bfd_vma lma = os->lma_region->current;
|
||||
|
||||
/* When LMA_REGION is the same as REGION, align the LMA
|
||||
as we did for the VMA, possibly including alignment
|
||||
from the bfd section. If a different region, then
|
||||
only align according to the value in the output
|
||||
statement. */
|
||||
if (os->lma_region != os->region)
|
||||
section_alignment = os->section_alignment;
|
||||
if (section_alignment > 0)
|
||||
lma = align_power (lma, section_alignment);
|
||||
os->bfd_section->lma = lma;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-03-05 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* ld-scripts/rgn-at6.s, * ld-scripts/rgn-at6.t, * ld-scripts/rgn-at6.d,
|
||||
* ld-scripts/rgn-at7.t, * ld-scripts/rgn-at7.d: New tests.
|
||||
|
||||
2013-02-28 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* ld-arm/tls-local-static.s: New test.
|
||||
|
|
9
ld/testsuite/ld-scripts/rgn-at6.d
Normal file
9
ld/testsuite/ld-scripts/rgn-at6.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
#source: rgn-at6.s
|
||||
#ld: -T rgn-at6.t
|
||||
#objdump: -h --wide
|
||||
#xfail: rx-*-*
|
||||
# Test that lma is aligned as for vma when lma_region==region.
|
||||
|
||||
#...
|
||||
.* 0+10000 +0+10000 .*
|
||||
.* 0+10100 +0+10100 .*
|
6
ld/testsuite/ld-scripts/rgn-at6.s
Normal file
6
ld/testsuite/ld-scripts/rgn-at6.s
Normal file
|
@ -0,0 +1,6 @@
|
|||
.text
|
||||
.long 0
|
||||
|
||||
.data
|
||||
.p2align 8
|
||||
.long 0
|
11
ld/testsuite/ld-scripts/rgn-at6.t
Normal file
11
ld/testsuite/ld-scripts/rgn-at6.t
Normal file
|
@ -0,0 +1,11 @@
|
|||
MEMORY
|
||||
{
|
||||
ram : ORIGIN = 0x10000, LENGTH = 0x10000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {*(.text)} > ram AT> ram
|
||||
.data : ALIGN (16) {*(.data)} > ram AT> ram
|
||||
/DISCARD/ : {*(*)}
|
||||
}
|
9
ld/testsuite/ld-scripts/rgn-at7.d
Normal file
9
ld/testsuite/ld-scripts/rgn-at7.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
#source: rgn-at6.s
|
||||
#ld: -T rgn-at7.t
|
||||
#objdump: -h --wide
|
||||
#xfail: rx-*-*
|
||||
# Test that lma is only aligned by script when lma_region!=region.
|
||||
|
||||
#...
|
||||
.* 0+10000 +0+20000 .*
|
||||
.* 0+10100 +0+20010 .*
|
12
ld/testsuite/ld-scripts/rgn-at7.t
Normal file
12
ld/testsuite/ld-scripts/rgn-at7.t
Normal file
|
@ -0,0 +1,12 @@
|
|||
MEMORY
|
||||
{
|
||||
ram : ORIGIN = 0x10000, LENGTH = 0x10000
|
||||
rom : ORIGIN = 0x20000, LENGTH = 0x10000
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {*(.text)} > ram AT> rom
|
||||
.data : ALIGN (16) {*(.data)} > ram AT> rom
|
||||
/DISCARD/ : {*(*)}
|
||||
}
|
Loading…
Reference in a new issue