From: Ulf Samuelsson Date: Mon, 6 Mar 2023 13:31:51 +0000 (+0100) Subject: DIGEST: testsuite X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a4135d1a4886400ea29af2da782dd8dd40ccad23;p=binutils-gdb.git DIGEST: testsuite Signed-off-by: Ulf Samuelsson --- diff --git a/ld/testsuite/ld-scripts/begin_tag.inc b/ld/testsuite/ld-scripts/begin_tag.inc new file mode 100644 index 00000000000..ef395bbe717 --- /dev/null +++ b/ld/testsuite/ld-scripts/begin_tag.inc @@ -0,0 +1,9 @@ + BYTE(0x43); + BYTE(0x4F); + BYTE(0x44); + BYTE(0x45); + BYTE(0xDE); + BYTE(0xAD); + BYTE(0xBE); + BYTE(0xEF); + QUAD(0); diff --git a/ld/testsuite/ld-scripts/crc32-poly.d b/ld/testsuite/ld-scripts/crc32-poly.d new file mode 100644 index 00000000000..726534d32d9 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32-poly.d @@ -0,0 +1,26 @@ +#source: crc32-poly.s +#ld: -T crc32-poly.t +#objdump: -s -j .text +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .text: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 cbf43926 00000000 00000000 00000000 ..9&............ + 1220 cbf43926 00000000 00000000 00000000 ..9&............ + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 1c00 454e4420 5441424c 45000000 00000000 END TABLE....... + 1c10 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc32-poly.s b/ld/testsuite/ld-scripts/crc32-poly.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32-poly.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc32-poly.t b/ld/testsuite/ld-scripts/crc32-poly.t new file mode 100644 index 00000000000..a2b7d130ba7 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32-poly.t @@ -0,0 +1,42 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0xCB); + BYTE(0xF4); + BYTE(0x39); + BYTE(0x26); + LONG(0x0); + QUAD(0x0); + + + crc32 = .; + DIGEST "_CRC32#BE" POLY(32, 0x04C11DB7, 0xFFFFFFFF,0xFFFFFFFF,1,1,0 )(ecc_start , ecc_end) + LONG(0); + QUAD(0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc32.d b/ld/testsuite/ld-scripts/crc32.d new file mode 100644 index 00000000000..e35eaf8e53e --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32.d @@ -0,0 +1,26 @@ +#source: crc32.s +#ld: -T crc32.t +#objdump: -s -j .text +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .text: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 cbf43926 00000000 00000000 00000000 ..9&............ + 1220 cbf43926 00000000 00000000 00000000 ..9&............ + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 1c00 454e4420 5441424c 45000000 00000000 END TABLE....... + 1c10 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc32.s b/ld/testsuite/ld-scripts/crc32.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc32.t b/ld/testsuite/ld-scripts/crc32.t new file mode 100644 index 00000000000..b218ef1424f --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32.t @@ -0,0 +1,41 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0xCB); + BYTE(0xF4); + BYTE(0x39); + BYTE(0x26); + LONG(0x0); + QUAD(0x0); + + crc32 = .; + DIGEST "_CRC32#BE" "CRC32" (ecc_start , ecc_end); + LONG(0); + QUAD(0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-bad-endian-contents.d b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.d new file mode 100644 index 00000000000..09df3cb2bbf --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.d @@ -0,0 +1,6 @@ +#source: crc64-bad-endian-size.s +#ld: -T crc64-bad-endian-size.t +# error: .*: bad 'endian' .* in digest label.* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-bad-endian-contents.s b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-bad-endian-contents.t b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.t new file mode 100644 index 00000000000..8eecaf06dc8 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#NE" "CRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-bad-endian-size.d b/ld/testsuite/ld-scripts/crc64-bad-endian-size.d new file mode 100644 index 00000000000..09df3cb2bbf --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-size.d @@ -0,0 +1,6 @@ +#source: crc64-bad-endian-size.s +#ld: -T crc64-bad-endian-size.t +# error: .*: bad 'endian' .* in digest label.* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-bad-endian-size.s b/ld/testsuite/ld-scripts/crc64-bad-endian-size.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-size.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-bad-endian-size.t b/ld/testsuite/ld-scripts/crc64-bad-endian-size.t new file mode 100644 index 00000000000..8f9cd600773 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-size.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BEG" "CRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-bad-label-2.d b/ld/testsuite/ld-scripts/crc64-bad-label-2.d new file mode 100644 index 00000000000..8e9d1604470 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label-2.d @@ -0,0 +1,6 @@ +#source: crc64-bad-label-2.s +#ld: -T crc64-bad-label-2.t +# error: .*: Illegal label .* in digest command.* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-bad-label-2.s b/ld/testsuite/ld-scripts/crc64-bad-label-2.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label-2.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-bad-label-2.t b/ld/testsuite/ld-scripts/crc64-bad-label-2.t new file mode 100644 index 00000000000..19782bf827d --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label-2.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC^64#BE" "CRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-bad-label.d b/ld/testsuite/ld-scripts/crc64-bad-label.d new file mode 100644 index 00000000000..9215a10fc8f --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label.d @@ -0,0 +1,6 @@ +#source: crc64-bad-label.s +#ld: -T crc64-bad-label.t +# error: .*: Illegal label .* in digest command.* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-bad-label.s b/ld/testsuite/ld-scripts/crc64-bad-label.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-bad-label.t b/ld/testsuite/ld-scripts/crc64-bad-label.t new file mode 100644 index 00000000000..8c0941c674b --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "0_CRC64#BE" "CRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-ecma.d b/ld/testsuite/ld-scripts/crc64-ecma.d new file mode 100644 index 00000000000..06b0476e627 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-ecma.d @@ -0,0 +1,26 @@ +#source: crc64-ecma.s +#ld: -T crc64-ecma.t +#objdump: -s -j .text +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .text: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 6c40df5f 0b497347 00000000 00000000 l@._.IsG........ + 1220 6c40df5f 0b497347 00000000 00000000 l@._.IsG........ + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 2000 454e4420 5441424c 45000000 00000000 END TABLE....... + 2010 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc64-ecma.s b/ld/testsuite/ld-scripts/crc64-ecma.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-ecma.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-ecma.t b/ld/testsuite/ld-scripts/crc64-ecma.t new file mode 100644 index 00000000000..2a82039a93e --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-ecma.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" "CRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-in-section.d b/ld/testsuite/ld-scripts/crc64-in-section.d new file mode 100644 index 00000000000..6f9d678b7fc --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-in-section.d @@ -0,0 +1,6 @@ +#source: crc64-in-section.s +#ld: -T crc64-in-section.t +#error: .*: CRC located inside checked area +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-in-section.s b/ld/testsuite/ld-scripts/crc64-in-section.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-in-section.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-in-section.t b/ld/testsuite/ld-scripts/crc64-in-section.t new file mode 100644 index 00000000000..e2e8cd99e8b --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-in-section.t @@ -0,0 +1,45 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + bad_start = .; + DIGEST "_CRC64#BE" "CRC64-ECMA" (bad_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-iso.d b/ld/testsuite/ld-scripts/crc64-iso.d new file mode 100644 index 00000000000..11f85c18adf --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso.d @@ -0,0 +1,26 @@ +#source: crc64-iso.s +#ld: -T crc64-iso.t +#objdump: -s -j .text +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .text: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 b90956c7 75a41001 00000000 00000000 ..V.u........... + 1220 b90956c7 75a41001 00000000 00000000 ..V.u........... + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 2000 454e4420 5441424c 45000000 00000000 END TABLE....... + 2010 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc64-iso.s b/ld/testsuite/ld-scripts/crc64-iso.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-iso.t b/ld/testsuite/ld-scripts/crc64-iso.t new file mode 100644 index 00000000000..20dedc47d12 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso.t @@ -0,0 +1,43 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0xb9); + BYTE(0x09); + BYTE(0x56); + BYTE(0xc7); + BYTE(0x75); + BYTE(0xa4); + BYTE(0x10); + BYTE(0x01); + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" "CRC64-GO-ISO" (ecc_start , ecc_end) + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-iso_be.d b/ld/testsuite/ld-scripts/crc64-iso_be.d new file mode 100644 index 00000000000..e256b414c5d --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso_be.d @@ -0,0 +1,26 @@ +#source: crc64-iso_be.s +#ld: -T crc64-iso_be.t +#objdump: -s -j .text +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .text: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 0110a475 c75609b9 00000000 00000000 ...u.V.......... + 1220 0110a475 c75609b9 00000000 00000000 ...u.V.......... + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 2000 454e4420 5441424c 45000000 00000000 END TABLE....... + 2010 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc64-iso_be.s b/ld/testsuite/ld-scripts/crc64-iso_be.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso_be.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-iso_be.t b/ld/testsuite/ld-scripts/crc64-iso_be.t new file mode 100644 index 00000000000..22cc37ca304 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso_be.t @@ -0,0 +1,43 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x01); + BYTE(0x10); + BYTE(0xa4); + BYTE(0x75); + BYTE(0xc7); + BYTE(0x56); + BYTE(0x09); + BYTE(0xb9); + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64" "CRC64-GO-ISO" (ecc_start , ecc_end) + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table_be.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-multiple-digest.d b/ld/testsuite/ld-scripts/crc64-multiple-digest.d new file mode 100644 index 00000000000..5a1e5ccf3ca --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-multiple-digest.d @@ -0,0 +1,6 @@ +#source: crc64-multiple-digest.s +#ld: -T crc64-multiple-digest.t +# error: .*: Duplicate digest .* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-multiple-digest.s b/ld/testsuite/ld-scripts/crc64-multiple-digest.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-multiple-digest.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-multiple-digest.t b/ld/testsuite/ld-scripts/crc64-multiple-digest.t new file mode 100644 index 00000000000..49c1119ad1c --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-multiple-digest.t @@ -0,0 +1,45 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64A#BE" "CRC64-ECMA" (ecc_start , ecc_end); + DIGEST "_CRC64B#BE" "CRC64-ISO" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-poly-size.d b/ld/testsuite/ld-scripts/crc64-poly-size.d new file mode 100644 index 00000000000..841dd830ff0 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly-size.d @@ -0,0 +1,6 @@ +#source: crc64-poly-size.s +#ld: -T crc64-poly-size.t +# error: .*: Illegal Size in DIGEST: .* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-poly-size.s b/ld/testsuite/ld-scripts/crc64-poly-size.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly-size.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-poly-size.t b/ld/testsuite/ld-scripts/crc64-poly-size.t new file mode 100644 index 00000000000..8dad7186b9f --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly-size.t @@ -0,0 +1,43 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" POLY(80,0x42F0E1EBA9EA3693,0,0,0,0,0)(ecc_start , ecc_end) + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-poly.d b/ld/testsuite/ld-scripts/crc64-poly.d new file mode 100644 index 00000000000..6be05b6aed8 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly.d @@ -0,0 +1,26 @@ +#source: crc64-poly.s +#ld: -T crc64-poly.t +#objdump: -s -j .text +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .text: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 6c40df5f 0b497347 00000000 00000000 l@._.IsG........ + 1220 6c40df5f 0b497347 00000000 00000000 l@._.IsG........ + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 2000 454e4420 5441424c 45000000 00000000 END TABLE....... + 2010 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc64-poly.s b/ld/testsuite/ld-scripts/crc64-poly.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-poly.t b/ld/testsuite/ld-scripts/crc64-poly.t new file mode 100644 index 00000000000..fb357caedf9 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly.t @@ -0,0 +1,43 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" POLY(64,0x42F0E1EBA9EA3693,0,0,0,0,0)(ecc_start , ecc_end) + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-reverse-area.d b/ld/testsuite/ld-scripts/crc64-reverse-area.d new file mode 100644 index 00000000000..344e8d28ed9 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-reverse-area.d @@ -0,0 +1,6 @@ +#source: crc64-reverse-area.s +#ld: -T crc64-reverse-area.t +# error: .*: CRC area starts after its end location.* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-reverse-area.s b/ld/testsuite/ld-scripts/crc64-reverse-area.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-reverse-area.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-reverse-area.t b/ld/testsuite/ld-scripts/crc64-reverse-area.t new file mode 100644 index 00000000000..27aef4413a0 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-reverse-area.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" "CRC64-ECMA" (ecc_end, ecc_start); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-same-section.d b/ld/testsuite/ld-scripts/crc64-same-section.d new file mode 100644 index 00000000000..787145a6432 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-same-section.d @@ -0,0 +1,6 @@ +#source: crc64-same-section.s +#ld: -T crc64-same-section.t +#error: .*: The CRC digest and table should be inside the .* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-same-section.s b/ld/testsuite/ld-scripts/crc64-same-section.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-same-section.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-same-section.t b/ld/testsuite/ld-scripts/crc64-same-section.t new file mode 100644 index 00000000000..47c96f556a7 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-same-section.t @@ -0,0 +1,47 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .crc ALIGN (0x200) : + { + crc64 = .; + DIGEST "_CRC64#BE" "CRC64-ECMA" (ecc_start , ecc_end); + } > rom + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-section.d b/ld/testsuite/ld-scripts/crc64-section.d new file mode 100644 index 00000000000..16e625b71c9 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-section.d @@ -0,0 +1,26 @@ +#source: crc64-section.s +#ld: -T crc64-section.t +#objdump: -s -j .foo +#target: [is_elf_format] [is_coff_format] +#notarget: [is_aout_format] +#xfail: tic4x-*-* tic54x-*-* +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff + +.*: file format .* + +Contents of section .foo: + 1200 434f4445 deadbeef 00000000 00000000 CODE............ + 1210 6c40df5f 0b497347 00000000 00000000 l@._.IsG........ + 1220 6c40df5f 0b497347 00000000 00000000 l@._.IsG........ + 1230 00000000 00000000 deadbeef 434f4445 ............CODE + 1240 31323334 35363738 3900ffff ffffffff 123456789....... + 1250 434f4445 00000000 00000000 00000000 CODE............ + 1260 ffffffff ffffffff ffffffff ffffffff .* +#... + 17e0 434f4445 deadbeef 00000000 00000000 CODE............ + 17f0 44494745 53542054 41424c45 00000000 DIGEST TABLE.... +#... + 2000 454e4420 5441424c 45000000 00000000 END TABLE....... + 2010 00000000 00000000 deadbeef 434f4445 ............CODE +#pass diff --git a/ld/testsuite/ld-scripts/crc64-section.s b/ld/testsuite/ld-scripts/crc64-section.s new file mode 100644 index 00000000000..99ff9f84960 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-section.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .foo +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-section.t b/ld/testsuite/ld-scripts/crc64-section.t new file mode 100644 index 00000000000..7cfcdf7beb4 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-section.t @@ -0,0 +1,56 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .foo ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" "CRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + ecc_start = .; + ASCIZ "123456789" + ecc_end = . - 1; + . = ALIGN(0x10); + + entry = .; + *(.foo) + . = ALIGN(0x100); + BYTE(1); + INCLUDE "digest_table.inc" + } > rom + .text ALIGN (0x200) : + { + *(.text) + QUAD(0x0) + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc64-unknown-digest.d b/ld/testsuite/ld-scripts/crc64-unknown-digest.d new file mode 100644 index 00000000000..051b06c8879 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-unknown-digest.d @@ -0,0 +1,6 @@ +#source: crc64-unknown-digest.s +#ld: -T crc64-unknown-digest.t +# error: .*: Unknown digest.* +#skip: tic4x-coff, tic54x-cof +#skip: ns32k-pc532-macho, pdp11-dec-aout, powerpc-ibm-aix5.2.0 +#skip: rs6000-aix4.3.3, alpha-linuxecoff diff --git a/ld/testsuite/ld-scripts/crc64-unknown-digest.s b/ld/testsuite/ld-scripts/crc64-unknown-digest.s new file mode 100644 index 00000000000..e4ffb15af62 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-unknown-digest.s @@ -0,0 +1,21 @@ + .extern ecc_start + .section .text +main: + .byte 0x43 + .byte 0x4F + .byte 0x44 + .byte 0x45 + .long 0 + .long 0 + .long 0 + .section .data + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xde + .byte 0xad + .byte 0xbe + .byte 0xef + .section .bss + .long 0 diff --git a/ld/testsuite/ld-scripts/crc64-unknown-digest.t b/ld/testsuite/ld-scripts/crc64-unknown-digest.t new file mode 100644 index 00000000000..9f4c900924c --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-unknown-digest.t @@ -0,0 +1,44 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x4000 + ram : ORIGIN = 0x008000, LENGTH = 0x1000 +} + +_start = 0x000000; +SECTIONS +{ + . = 0x1000 + SIZEOF_HEADERS; + .text ALIGN (0x200) : + + { + FILL(0xFF) + header = .; + INCLUDE "begin_tag.inc" + + expected = .; + BYTE(0x6C); + BYTE(0x40); + BYTE(0xDF); + BYTE(0x5F); + BYTE(0x0B); + BYTE(0x49); + BYTE(0x73); + BYTE(0x47); + + QUAD(0x0); + + crc64 = .; + DIGEST "_CRC64#BE" "TCRC64-ECMA" (ecc_start , ecc_end); + QUAD(0x0); + + INCLUDE "end_tag.inc" + + INCLUDE "crc_data.inc" + + INCLUDE "digest_table.inc" + } > rom + + .data : AT (0x008000) { *(.data) } >ram /* NO default AT>rom */ + . = ALIGN(0x20); + .bss : { *(.bss) } >ram /* NO default AT>rom */ + /DISCARD/ : { *(*) } +} diff --git a/ld/testsuite/ld-scripts/crc_data.inc b/ld/testsuite/ld-scripts/crc_data.inc new file mode 100644 index 00000000000..176a4689493 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc_data.inc @@ -0,0 +1,9 @@ + ecc_start = .; + ASCIZ "123456789" + ecc_end = . - 1; + . = ALIGN(0x10); + + entry = .; + *(.text) + . = ALIGN(0x100); + BYTE(1); diff --git a/ld/testsuite/ld-scripts/digest_table.inc b/ld/testsuite/ld-scripts/digest_table.inc new file mode 100644 index 00000000000..fb40a4fa024 --- /dev/null +++ b/ld/testsuite/ld-scripts/digest_table.inc @@ -0,0 +1,6 @@ + . = ALIGN(2048) - 32; + INCLUDE "begin_tag.inc" + ASCII (16) "DIGEST TABLE" + DIGEST TABLE "CRCTAB" + ASCII (16) "END TABLE" + INCLUDE "end_tag.inc" diff --git a/ld/testsuite/ld-scripts/digest_table_be.inc b/ld/testsuite/ld-scripts/digest_table_be.inc new file mode 100644 index 00000000000..eec712d9eff --- /dev/null +++ b/ld/testsuite/ld-scripts/digest_table_be.inc @@ -0,0 +1,6 @@ + . = ALIGN(2048) - 32; + INCLUDE "begin_tag.inc" + ASCII (16) "DIGEST TABLE" + DIGEST TABLE "CRCTAB.BE" + ASCII (16) "END TABLE" + INCLUDE "end_tag.inc" diff --git a/ld/testsuite/ld-scripts/end_tag.inc b/ld/testsuite/ld-scripts/end_tag.inc new file mode 100644 index 00000000000..4c80854b062 --- /dev/null +++ b/ld/testsuite/ld-scripts/end_tag.inc @@ -0,0 +1,9 @@ + QUAD(0); + BYTE(0xDE); + BYTE(0xAD); + BYTE(0xBE); + BYTE(0xEF); + BYTE(0x43); + BYTE(0x4F); + BYTE(0x44); + BYTE(0x45); diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp index 56e12da8e61..64767d87f83 100644 --- a/ld/testsuite/ld-scripts/script.exp +++ b/ld/testsuite/ld-scripts/script.exp @@ -229,6 +229,23 @@ foreach test_script $test_script_list { run_dump_test "asciz" run_dump_test "ascii" +run_dump_test "crc64-ecma" +run_dump_test "crc64-iso" +run_dump_test "crc64-iso_be" +run_dump_test "crc64-poly" +run_dump_test "crc32" +run_dump_test "crc32-poly" +run_dump_test "crc64-reverse-area" +run_dump_test "crc64-in-section" +run_dump_test "crc64-same-section" +run_dump_test "crc64-multiple-digest" +run_dump_test "crc64-unknown-digest" +run_dump_test "crc64-poly-size" +run_dump_test "crc64-bad-label" +run_dump_test "crc64-bad-label-2" +run_dump_test "crc64-bad-endian-size" +run_dump_test "crc64-bad-endian-contents" + run_dump_test "align-with-input" run_dump_test "pr20302" run_dump_test "output-section-types"