Pad sections according to current script FILL.

When aligning input sections, we are supposed to take the fill pattern
from a FILL statement, if there is one in the output section statement.

ld/
	* ldlang.c (lang_size_sections_1 <lang_input_section_enum>): Use
	current "fill", not "output_section_statement->fill".
ld/testsuite/
	* ld-scripts/fill.d, * ld-scripts/fill.t, * ld-scripts/fill_0.s,
	* ld-scripts/fill_1.s, * ld-scripts/fill_2.s: New test.
	* ld-scripts/data.exp: Run it.
This commit is contained in:
Alan Modra 2014-04-04 11:45:03 +10:30
parent 4554c4528a
commit ffe54b3798
9 changed files with 71 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2014-04-04 Alan Modra <amodra@gmail.com>
* ldlang.c (lang_size_sections_1 <lang_input_section_enum>): Use
current "fill", not "output_section_statement->fill".
2014-03-31 Nick Clifton <nickc@redhat.com>
PR ld/16744

View File

@ -5213,7 +5213,7 @@ lang_size_sections_1
*relax = TRUE;
}
dot = size_input_section (prev, output_section_statement,
output_section_statement->fill, dot);
fill, dot);
}
break;

View File

@ -1,3 +1,9 @@
2014-04-04 Alan Modra <amodra@gmail.com>
* ld-scripts/fill.d, * ld-scripts/fill.t, * ld-scripts/fill_0.s,
* ld-scripts/fill_1.s, * ld-scripts/fill_2.s: New test.
* ld-scripts/data.exp: Run it.
2014-03-31 Marcus Shawcroft <marcus.shawcroft@arm.com>
* ld-aarch64/eh-frame.d: Adjust FDE pc address.

View File

@ -23,7 +23,9 @@
# text segment, confusing run_dump_test.
if {[is_aout_format]} {
unsupported data
unsupported fill
return
}
run_dump_test data
run_dump_test fill

View File

@ -0,0 +1,29 @@
#source: fill_0.s
#source: fill_1.s
#source: fill_2.s
#ld: -T fill.t
#objdump: -s -j .text
#xfail: ia64-*-* alpha-*-*ecoff m32c-*-* mips*-*-* sh-*-pe sparc*-*-coff
#xfail: tic30-*-coff tic4x-*-* tic54x-*-*
#xfail: x86_64-*-pe* x86_64-*-mingw* x86_64-*-cygwin z8k-*-*
# Breaks on ia64 due to minimum alignment of code. The section alignment
# could be increased to suit ia64 but then we'd break many coff targets
# that don't support alignment other than 4 bytes.
# alpha-linuxecoff always aligns code to 16 bytes.
# m32c pads out code sections to 8 bytes.
# mips aligns to 16 bytes
# sh-pe pads out code sections to 16 bytes
# sparc-coff aligns to 8 bytes
# tic30-coff aligns to 2 bytes
# tic4x has 4 octet bytes
# tic54x doesn't support .p2align
# x86_64-pe aligns to 16 bytes
# z8k-coff aligns to 2 bytes
.*: file format .*
Contents of section .text:
[0-9a-f]+ cafebabe 01010101 02020202 12232323 .*
[0-9a-f]+ 03030303 00345600 00004567 000089ab .*
[0-9a-f]+ (deadbeef|efbeadde) 00004567 000089ab 0000cdef .*
[0-9a-f]+ 00004567 000089ab 0000cdef 00000123 .*

View File

@ -0,0 +1,20 @@
SECTIONS
{
.text :
{
. += 4;
*0.o(.text)
FILL (0x12)
*1.o(.text)
. += 1;
FILL (0x23)
*2.o(.text)
FILL (0x003456)
. += 4;
FILL (0x00004567000089ab0000cdef00000123)
. += 8;
LONG (0xdeadbeef)
. += 12;
. += 16;
} =0xcafebabe
}

View File

@ -0,0 +1,2 @@
.text
.byte 1,1,1,1

View File

@ -0,0 +1,3 @@
.text
.p2align 2
.byte 2,2,2,2

View File

@ -0,0 +1,3 @@
.text
.p2align 2
.byte 3,3,3,3