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:
parent
4554c4528a
commit
ffe54b3798
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 .*
|
|
@ -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
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
.text
|
||||
.byte 1,1,1,1
|
|
@ -0,0 +1,3 @@
|
|||
.text
|
||||
.p2align 2
|
||||
.byte 2,2,2,2
|
|
@ -0,0 +1,3 @@
|
|||
.text
|
||||
.p2align 2
|
||||
.byte 3,3,3,3
|
Loading…
Reference in New Issue