Don't warn zero LMA adjustment.

bfd/

2010-09-09  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11998
	* elf.c (assign_file_positions_for_load_sections): Don't warn
	zero LMA adjustment.

ld/testsuite/

2010-09-09  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/11998
	* ld-scripts/rgn-at5.d: New.
	* ld-scripts/rgn-at5.s: Likewise.
	* ld-scripts/rgn-at5.t: Likewise.
This commit is contained in:
H.J. Lu 2010-09-09 19:22:29 +00:00
parent 497462ef9e
commit a2d1e02801
6 changed files with 76 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2010-09-09 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11998
* elf.c (assign_file_positions_for_load_sections): Don't warn
zero LMA adjustment.
2010-09-09 Bernd Schmidt <bernds@codesourcery.com>
bfd/

View File

@ -4481,8 +4481,9 @@ assign_file_positions_for_load_sections (bfd *abfd,
bfd_vma s_start = sec->lma;
bfd_vma adjust = s_start - p_end;
if (s_start < p_end
|| p_end < p_start)
if (adjust != 0
&& (s_start < p_end
|| p_end < p_start))
{
(*_bfd_error_handler)
(_("%B: section %A lma %#lx adjusted to %#lx"), abfd, sec,

View File

@ -1,3 +1,10 @@
2010-09-09 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11998
* ld-scripts/rgn-at5.d: New.
* ld-scripts/rgn-at5.s: Likewise.
* ld-scripts/rgn-at5.t: Likewise.
2010-09-07 Andrew Burgess <aburgess@broadcom.com>
* ld-x86-64/split-by-file.rd: New test.

View File

@ -0,0 +1,17 @@
# name: rgn-at5
# source: rgn-at5.s
# ld: -T rgn-at5.t -z max-page-size=0x1000
# objdump: -w -h
# xfail: rx-*-*
# FAILS on the RX because the linker has to set LMA == VMA for the
# Renesas loader.
.*: file format .*
Sections:
Idx +Name +Size +VMA +LMA +File off +Algn +Flags
0 .sec0 +0+2 +0+02000 +0+2000 +0+02000 +.*
1 .sec1 +0+2 +0+01000 +0+012c +0+01000 +.*
2 .sec2 +0+2 +0+04000 +0+603c +0+04000 +.*
3 .sec3 +0+2 +0+05000 +0+412c +0+03000 +.*
4 .sec4 +0+2 +0+02002 +0+2002 +0+02002 +.*

View File

@ -0,0 +1,14 @@
.section .sec0, "a"
.word 0
.section .sec1, "a"
.word 0x11
.section .sec2, "a"
.word 0x22
.section .sec3, "a"
.word 0x33
.section .sec4, "a"
.word 0x44

View File

@ -0,0 +1,29 @@
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) : AT(LENGTH (region2)) { *(*.sec1) }
fred = ORIGIN (region1) + LENGTH (region1) ;
.sec2 : { *(*.sec2) } > region3 AT> region4
.sec3 0x5000 : { *(*.sec3) }
/* In theory we could put:
/DISCARD/ : { *(*) }
here as we do not need any other sections for this test.
In practice however doing so breaks GOLD as it relies upon
being able to create/find various other sections such as
.dynamic, .dynsym and .gnu.hash. */
}