diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2017-07-19 13:11:59 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2017-07-19 13:11:59 +0100 |
commit | 62a5222fdab2acdc129b7c7d3713e7f349e26029 (patch) | |
tree | e303b2bd76d0effcfff9febef429e5f42ebc39d2 /ld | |
parent | 29866fa186ee3ebda5242221607dba360b2e541e (diff) | |
download | gdb-62a5222fdab2acdc129b7c7d3713e7f349e26029.zip gdb-62a5222fdab2acdc129b7c7d3713e7f349e26029.tar.gz gdb-62a5222fdab2acdc129b7c7d3713e7f349e26029.tar.bz2 |
LD/testsuite: Add 2**4 section alignment FILL script statement test
Complement commit ffe54b3798db ("Pad sections according to current
script FILL.") and add a FILL script statement test for targets that
impose the minimum alignment of more than 2**2 for the `.text' section.
These targets include IA-64 targets, MIPS targets other than bare-metal
ELF and VxWorks, TILE-Gx targets, TILEPro targets and X86-64 PE targets.
Use the `notarget' tag for configuration triplets that are incompatible
with the new test, but are supported by the existing FILL test, and
`xfail' for ones that have issues due to section alignment or padding
with both tests. Make a complementary change to the existing FILL test,
removing the following test issues:
arm-epoc-pe -FAIL: ld-scripts/fill
mips-elf -XPASS: ld-scripts/fill
mips-img-elf -XPASS: ld-scripts/fill
mips-mti-elf -XPASS: ld-scripts/fill
mips-sde-elf -XPASS: ld-scripts/fill
mips-vxworks -XPASS: ld-scripts/fill
mipsel-elf -XPASS: ld-scripts/fill
mipsel-img-elf -XPASS: ld-scripts/fill
mipsel-mti-elf -XPASS: ld-scripts/fill
mipsel-vxworks -XPASS: ld-scripts/fill
mipsisa32-elf -XPASS: ld-scripts/fill
mipsisa32el-elf -XPASS: ld-scripts/fill
mipsisa64-elf -XPASS: ld-scripts/fill
mipsisa64el-elf -XPASS: ld-scripts/fill
tilegx-linux -FAIL: ld-scripts/fill
tilepro-elf -FAIL: ld-scripts/fill
tx39-elf -XPASS: ld-scripts/fill
ld/
* testsuite/ld-scripts/fill.d: Adjust `xfail' entries. Add
`notarget' entries. Update comments.
* testsuite/ld-scripts/fill16.d: New test.
* testsuite/ld-scripts/fill16_0.s: New test source.
* testsuite/ld-scripts/fill16_1.s: New test source.
* testsuite/ld-scripts/fill16_2.s: New test source.
* testsuite/ld-scripts/data.exp: Run the new test.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/data.exp | 1 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/fill.d | 33 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/fill16.d | 43 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/fill16_0.s | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/fill16_1.s | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-scripts/fill16_2.s | 6 |
7 files changed, 97 insertions, 8 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 00eada7..534204d 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,13 @@ +2017-07-19 Maciej W. Rozycki <macro@imgtec.com> + + * testsuite/ld-scripts/fill.d: Adjust `xfail' entries. Add + `notarget' entries. Update comments. + * testsuite/ld-scripts/fill16.d: New test. + * testsuite/ld-scripts/fill16_0.s: New test source. + * testsuite/ld-scripts/fill16_1.s: New test source. + * testsuite/ld-scripts/fill16_2.s: New test source. + * testsuite/ld-scripts/data.exp: Run the new test. + 2017-07-19 Claudiu Zissulescu <claziss@synopsys.com> John Eric Martin <John.Martin@emmicro-us.com> diff --git a/ld/testsuite/ld-scripts/data.exp b/ld/testsuite/ld-scripts/data.exp index 1bae4c1..3d8f270 100644 --- a/ld/testsuite/ld-scripts/data.exp +++ b/ld/testsuite/ld-scripts/data.exp @@ -29,3 +29,4 @@ if {[is_aout_format]} { run_dump_test data run_dump_test fill +run_dump_test fill16 diff --git a/ld/testsuite/ld-scripts/fill.d b/ld/testsuite/ld-scripts/fill.d index 8dd789b..4e42c70 100644 --- a/ld/testsuite/ld-scripts/fill.d +++ b/ld/testsuite/ld-scripts/fill.d @@ -3,20 +3,37 @@ #source: fill_2.s #ld: -T fill.t #objdump: -s -j .text -#xfail: ia64-*-* alpha-*-*ecoff m32c-*-* mips*-*-* sh-*-pe sparc*-*-coff +#notarget: ia64-*-* +#notarget: mips*-*-irix* mips*-*-linux* mips*-*-freebsd* mips*-*-gnu* +#notarget: mips*-*-kfreebsd* mips*-*-netbsd* mips*-*-openbsd* mips*-*-sysv4* +#notarget: tilegx*-*-* +#notarget: tilepro-*-* +#notarget: x86_64-*-cygwin x86_64-*-mingw* x86_64-*-pe* +#xfail: alpha*-*-*ecoff +#xfail: arm-epoc-pe +#xfail: m32c-*-* +#xfail: sh-*-pe +#xfail: 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 +#xfail: z8k-*-* +# +# See also fill16.d. We use `notarget' for configurations unsupported +# here that are covered there, and `xfail' for configurations that work +# in neither place. See below for details as to why individual +# configurations are listed above. +# +# alpha-linuxecoff pads out code to 16 bytes. +# arm-epoc-pe always pads out code to 512 bytes. +# ia64 aligns code to minimum 16 bytes. +# m32c pads out code sections with 4 NOPs (see `m32c_md_end'). +# mips aligns to minimum 16 bytes (except for bare-metal ELF and VxWorks). # 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 +# tilegx aligns code to minimum 8 bytes. +# tilepro aligns code to minimum 8 bytes. # x86_64-pe aligns to 16 bytes # z8k-coff aligns to 2 bytes diff --git a/ld/testsuite/ld-scripts/fill16.d b/ld/testsuite/ld-scripts/fill16.d new file mode 100644 index 0000000..d1e369c --- /dev/null +++ b/ld/testsuite/ld-scripts/fill16.d @@ -0,0 +1,43 @@ +#source: fill16_0.s +#source: fill16_1.s +#source: fill16_2.s +#ld: -T fill.t +#objdump: -s -j .text +#notarget: arm-*-coff +#notarget: i[3-7]86-*-coff +#xfail: alpha*-*-*ecoff +#xfail: arm-epoc-pe +#xfail: m32c-*-* +#xfail: sh-*-pe +#xfail: sparc*-*-coff +#xfail: tic30-*-coff tic4x-*-* tic54x-*-* +#xfail: z8k-*-* +# +# See also fill.d. We use `notarget' for configurations unsupported +# here that are covered there, and `xfail' for configurations that work +# with neither place. See below for details as to why individual +# configurations are listed above. +# +# alpha-linuxecoff pads out code to 16 bytes. +# arm-epoc-pe always pads out code to 512 bytes. +# arm-coff always aligns code to 4 bytes. +# i386-coff always aligns code to 4 bytes. +# m32c pads out code sections with 4 NOPs (see `m32c_md_end'). +# 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 +# z8k-coff aligns to 2 bytes + +.*: file format .* + +Contents of section .text: + [0-9a-f]+ cafebabe cafebabe cafebabe cafebabe .* + [0-9a-f]+ 01010101 01010101 01010101 01010101 .* + [0-9a-f]+ 02020202 02020202 02020202 02020202 .* + [0-9a-f]+ 12232323 23232323 23232323 23232323 .* + [0-9a-f]+ 03030303 03030303 03030303 03030303 .* + [0-9a-f]+ 00345600 00004567 000089ab (deadbeef|efbeadde) .* + [0-9a-f]+ 00004567 000089ab 0000cdef 00004567 .* + [0-9a-f]+ 000089ab 0000cdef 00000123 .* diff --git a/ld/testsuite/ld-scripts/fill16_0.s b/ld/testsuite/ld-scripts/fill16_0.s new file mode 100644 index 0000000..2723728 --- /dev/null +++ b/ld/testsuite/ld-scripts/fill16_0.s @@ -0,0 +1,6 @@ + .text + .p2align 4, 0 + .byte 1,1,1,1 + .byte 1,1,1,1 + .byte 1,1,1,1 + .byte 1,1,1,1 diff --git a/ld/testsuite/ld-scripts/fill16_1.s b/ld/testsuite/ld-scripts/fill16_1.s new file mode 100644 index 0000000..261ea7e --- /dev/null +++ b/ld/testsuite/ld-scripts/fill16_1.s @@ -0,0 +1,6 @@ + .text + .p2align 4, 0 + .byte 2,2,2,2 + .byte 2,2,2,2 + .byte 2,2,2,2 + .byte 2,2,2,2 diff --git a/ld/testsuite/ld-scripts/fill16_2.s b/ld/testsuite/ld-scripts/fill16_2.s new file mode 100644 index 0000000..1ddd145 --- /dev/null +++ b/ld/testsuite/ld-scripts/fill16_2.s @@ -0,0 +1,6 @@ + .text + .p2align 4, 0 + .byte 3,3,3,3 + .byte 3,3,3,3 + .byte 3,3,3,3 + .byte 3,3,3,3 |