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>
|
2014-03-31 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR ld/16744
|
PR ld/16744
|
||||||
|
@ -5213,7 +5213,7 @@ lang_size_sections_1
|
|||||||
*relax = TRUE;
|
*relax = TRUE;
|
||||||
}
|
}
|
||||||
dot = size_input_section (prev, output_section_statement,
|
dot = size_input_section (prev, output_section_statement,
|
||||||
output_section_statement->fill, dot);
|
fill, dot);
|
||||||
}
|
}
|
||||||
break;
|
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>
|
2014-03-31 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||||||
|
|
||||||
* ld-aarch64/eh-frame.d: Adjust FDE pc address.
|
* ld-aarch64/eh-frame.d: Adjust FDE pc address.
|
||||||
|
@ -23,7 +23,9 @@
|
|||||||
# text segment, confusing run_dump_test.
|
# text segment, confusing run_dump_test.
|
||||||
if {[is_aout_format]} {
|
if {[is_aout_format]} {
|
||||||
unsupported data
|
unsupported data
|
||||||
|
unsupported fill
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
run_dump_test data
|
run_dump_test data
|
||||||
|
run_dump_test fill
|
||||||
|
29
ld/testsuite/ld-scripts/fill.d
Normal file
29
ld/testsuite/ld-scripts/fill.d
Normal 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 .*
|
20
ld/testsuite/ld-scripts/fill.t
Normal file
20
ld/testsuite/ld-scripts/fill.t
Normal 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
|
||||||
|
}
|
2
ld/testsuite/ld-scripts/fill_0.s
Normal file
2
ld/testsuite/ld-scripts/fill_0.s
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
.text
|
||||||
|
.byte 1,1,1,1
|
3
ld/testsuite/ld-scripts/fill_1.s
Normal file
3
ld/testsuite/ld-scripts/fill_1.s
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.text
|
||||||
|
.p2align 2
|
||||||
|
.byte 2,2,2,2
|
3
ld/testsuite/ld-scripts/fill_2.s
Normal file
3
ld/testsuite/ld-scripts/fill_2.s
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.text
|
||||||
|
.p2align 2
|
||||||
|
.byte 3,3,3,3
|
Loading…
Reference in New Issue
Block a user