Browse Source

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.
gdb_7_6-branch
Alan Modra 14 years ago
parent
commit
13762d2ee4
  1. 6
      ld/ChangeLog
  2. 7
      ld/ldlang.c
  3. 5
      ld/testsuite/ChangeLog
  4. 9
      ld/testsuite/ld-scripts/rgn-at6.d
  5. 6
      ld/testsuite/ld-scripts/rgn-at6.s
  6. 11
      ld/testsuite/ld-scripts/rgn-at6.t
  7. 9
      ld/testsuite/ld-scripts/rgn-at7.d
  8. 12
      ld/testsuite/ld-scripts/rgn-at7.t

6
ld/ChangeLog

@ -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.

7
ld/ldlang.c

@ -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;

5
ld/testsuite/ChangeLog

@ -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

@ -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

@ -0,0 +1,6 @@
.text
.long 0
.data
.p2align 8
.long 0

11
ld/testsuite/ld-scripts/rgn-at6.t

@ -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

@ -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

@ -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…
Cancel
Save