Browse Source
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.gdb-7.8-branch
9 changed files with 71 additions and 1 deletions
@ -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