From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from emagii.se (www.emagii.com [185.133.207.17]) by sourceware.org (Postfix) with ESMTPS id 1C38B385B50D for ; Fri, 3 Mar 2023 14:47:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1C38B385B50D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=emagii.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=emagii.com Received: from valinor.ownit.se (84-55-68-216.customers.ownit.se [84.55.68.216]) by emagii.se (Postfix) with ESMTPSA id 4715E120190; Fri, 3 Mar 2023 15:47:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emagii.com; s=default; t=1677854870; bh=Z9CvZ0ZTUPkuSf5N5lwhb470vMxH7GY8YyhXoMnp+EA=; h=From:To:Subject; b=B5MtNiz0zcmxCtC9CvFvGeZQFPztvomDPQNKp6pLnSSrAg0uyQ8utjnAbowQ8gJRJ gE3ku14NVQ/blKSWuIZVh2m6JGnoplAbcNFA2f/nFhgvf3HDV5YimwLVo/CByBYxqP 3H3KY/QY9j28CaCibj7c2GMl/WTvUpQyR6W1q0c4= Authentication-Results: emagii.beebytevps.io; spf=pass (sender IP is 84.55.68.216) smtp.mailfrom=binutils@emagii.com smtp.helo=valinor.ownit.se Received-SPF: pass (emagii.beebytevps.io: connection is authenticated) From: binutils@emagii.com To: binutils@sourceware.org Cc: nickc@redhat.com, Ulf Samuelsson Subject: [PATCH v11 04/11] DIGEST: testsuite Date: Fri, 3 Mar 2023 15:46:59 +0100 Message-Id: <20230303144706.1977061-5-binutils@emagii.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230303144706.1977061-1-binutils@emagii.com> References: <20230303144706.1977061-1-binutils@emagii.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <167785486919.1849445.1120494165764052019@localhost.localdomain> X-PPP-Vhost: emagii.com X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_FAIL,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Ulf Samuelsson Signed-off-by: Ulf Samuelsson --- ld/testsuite/ld-scripts/begin_tag.inc | 9 +++ ld/testsuite/ld-scripts/crc32-poly.d | 24 ++++++++ ld/testsuite/ld-scripts/crc32-poly.s | 21 +++++++ ld/testsuite/ld-scripts/crc32-poly.t | 42 ++++++++++++++ ld/testsuite/ld-scripts/crc32.d | 24 ++++++++ ld/testsuite/ld-scripts/crc32.s | 21 +++++++ ld/testsuite/ld-scripts/crc32.t | 41 ++++++++++++++ .../ld-scripts/crc64-bad-endian-contents.d | 3 + .../ld-scripts/crc64-bad-endian-contents.s | 21 +++++++ .../ld-scripts/crc64-bad-endian-contents.t | 44 +++++++++++++++ .../ld-scripts/crc64-bad-endian-size.d | 3 + .../ld-scripts/crc64-bad-endian-size.s | 21 +++++++ .../ld-scripts/crc64-bad-endian-size.t | 44 +++++++++++++++ ld/testsuite/ld-scripts/crc64-bad-label-2.d | 3 + ld/testsuite/ld-scripts/crc64-bad-label-2.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-bad-label-2.t | 44 +++++++++++++++ ld/testsuite/ld-scripts/crc64-bad-label.d | 3 + ld/testsuite/ld-scripts/crc64-bad-label.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-bad-label.t | 44 +++++++++++++++ ld/testsuite/ld-scripts/crc64-ecma.d | 24 ++++++++ ld/testsuite/ld-scripts/crc64-ecma.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-ecma.t | 44 +++++++++++++++ ld/testsuite/ld-scripts/crc64-in-section.d | 3 + ld/testsuite/ld-scripts/crc64-in-section.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-in-section.t | 45 +++++++++++++++ ld/testsuite/ld-scripts/crc64-iso.d | 24 ++++++++ ld/testsuite/ld-scripts/crc64-iso.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-iso.t | 43 ++++++++++++++ ld/testsuite/ld-scripts/crc64-iso_be.d | 24 ++++++++ ld/testsuite/ld-scripts/crc64-iso_be.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-iso_be.t | 43 ++++++++++++++ .../ld-scripts/crc64-multiple-digest.d | 3 + .../ld-scripts/crc64-multiple-digest.s | 21 +++++++ .../ld-scripts/crc64-multiple-digest.t | 45 +++++++++++++++ ld/testsuite/ld-scripts/crc64-poly-size.d | 3 + ld/testsuite/ld-scripts/crc64-poly-size.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-poly-size.t | 43 ++++++++++++++ ld/testsuite/ld-scripts/crc64-poly.d | 24 ++++++++ ld/testsuite/ld-scripts/crc64-poly.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-poly.t | 43 ++++++++++++++ ld/testsuite/ld-scripts/crc64-reverse-area.d | 3 + ld/testsuite/ld-scripts/crc64-reverse-area.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-reverse-area.t | 44 +++++++++++++++ ld/testsuite/ld-scripts/crc64-same-section.d | 3 + ld/testsuite/ld-scripts/crc64-same-section.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-same-section.t | 47 ++++++++++++++++ ld/testsuite/ld-scripts/crc64-section.d | 24 ++++++++ ld/testsuite/ld-scripts/crc64-section.s | 21 +++++++ ld/testsuite/ld-scripts/crc64-section.t | 56 +++++++++++++++++++ .../ld-scripts/crc64-unknown-digest.d | 3 + .../ld-scripts/crc64-unknown-digest.s | 21 +++++++ .../ld-scripts/crc64-unknown-digest.t | 44 +++++++++++++++ ld/testsuite/ld-scripts/crc_data.inc | 9 +++ ld/testsuite/ld-scripts/digest_table.inc | 6 ++ ld/testsuite/ld-scripts/digest_table_be.inc | 6 ++ ld/testsuite/ld-scripts/end_tag.inc | 9 +++ ld/testsuite/ld-scripts/script.exp | 17 ++++++ 57 files changed, 1367 insertions(+) create mode 100644 ld/testsuite/ld-scripts/begin_tag.inc create mode 100644 ld/testsuite/ld-scripts/crc32-poly.d create mode 100644 ld/testsuite/ld-scripts/crc32-poly.s create mode 100644 ld/testsuite/ld-scripts/crc32-poly.t create mode 100644 ld/testsuite/ld-scripts/crc32.d create mode 100644 ld/testsuite/ld-scripts/crc32.s create mode 100644 ld/testsuite/ld-scripts/crc32.t create mode 100644 ld/testsuite/ld-scripts/crc64-bad-endian-contents.d create mode 100644 ld/testsuite/ld-scripts/crc64-bad-endian-contents.s create mode 100644 ld/testsuite/ld-scripts/crc64-bad-endian-contents.t create mode 100644 ld/testsuite/ld-scripts/crc64-bad-endian-size.d create mode 100644 ld/testsuite/ld-scripts/crc64-bad-endian-size.s create mode 100644 ld/testsuite/ld-scripts/crc64-bad-endian-size.t create mode 100644 ld/testsuite/ld-scripts/crc64-bad-label-2.d create mode 100644 ld/testsuite/ld-scripts/crc64-bad-label-2.s create mode 100644 ld/testsuite/ld-scripts/crc64-bad-label-2.t create mode 100644 ld/testsuite/ld-scripts/crc64-bad-label.d create mode 100644 ld/testsuite/ld-scripts/crc64-bad-label.s create mode 100644 ld/testsuite/ld-scripts/crc64-bad-label.t create mode 100644 ld/testsuite/ld-scripts/crc64-ecma.d create mode 100644 ld/testsuite/ld-scripts/crc64-ecma.s create mode 100644 ld/testsuite/ld-scripts/crc64-ecma.t create mode 100644 ld/testsuite/ld-scripts/crc64-in-section.d create mode 100644 ld/testsuite/ld-scripts/crc64-in-section.s create mode 100644 ld/testsuite/ld-scripts/crc64-in-section.t create mode 100644 ld/testsuite/ld-scripts/crc64-iso.d create mode 100644 ld/testsuite/ld-scripts/crc64-iso.s create mode 100644 ld/testsuite/ld-scripts/crc64-iso.t create mode 100644 ld/testsuite/ld-scripts/crc64-iso_be.d create mode 100644 ld/testsuite/ld-scripts/crc64-iso_be.s create mode 100644 ld/testsuite/ld-scripts/crc64-iso_be.t create mode 100644 ld/testsuite/ld-scripts/crc64-multiple-digest.d create mode 100644 ld/testsuite/ld-scripts/crc64-multiple-digest.s create mode 100644 ld/testsuite/ld-scripts/crc64-multiple-digest.t create mode 100644 ld/testsuite/ld-scripts/crc64-poly-size.d create mode 100644 ld/testsuite/ld-scripts/crc64-poly-size.s create mode 100644 ld/testsuite/ld-scripts/crc64-poly-size.t create mode 100644 ld/testsuite/ld-scripts/crc64-poly.d create mode 100644 ld/testsuite/ld-scripts/crc64-poly.s create mode 100644 ld/testsuite/ld-scripts/crc64-poly.t create mode 100644 ld/testsuite/ld-scripts/crc64-reverse-area.d create mode 100644 ld/testsuite/ld-scripts/crc64-reverse-area.s create mode 100644 ld/testsuite/ld-scripts/crc64-reverse-area.t create mode 100644 ld/testsuite/ld-scripts/crc64-same-section.d create mode 100644 ld/testsuite/ld-scripts/crc64-same-section.s create mode 100644 ld/testsuite/ld-scripts/crc64-same-section.t create mode 100644 ld/testsuite/ld-scripts/crc64-section.d create mode 100644 ld/testsuite/ld-scripts/crc64-section.s create mode 100644 ld/testsuite/ld-scripts/crc64-section.t create mode 100644 ld/testsuite/ld-scripts/crc64-unknown-digest.d create mode 100644 ld/testsuite/ld-scripts/crc64-unknown-digest.s create mode 100644 ld/testsuite/ld-scripts/crc64-unknown-digest.t create mode 100644 ld/testsuite/ld-scripts/crc_data.inc create mode 100644 ld/testsuite/ld-scripts/digest_table.inc create mode 100644 ld/testsuite/ld-scripts/digest_table_be.inc create mode 100644 ld/testsuite/ld-scripts/end_tag.inc 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..028ef14460f --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32-poly.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..c154fb579f4 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc32.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..abbd1d7594e --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-contents.d @@ -0,0 +1,3 @@ +#source: crc64-bad-endian-size.s +#ld: -T crc64-bad-endian-size.t +# error: .*: bad 'endian' .* in digest label.* 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..abbd1d7594e --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-endian-size.d @@ -0,0 +1,3 @@ +#source: crc64-bad-endian-size.s +#ld: -T crc64-bad-endian-size.t +# error: .*: bad 'endian' .* in digest label.* 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..e5f26dc7be5 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label-2.d @@ -0,0 +1,3 @@ +#source: crc64-bad-label-2.s +#ld: -T crc64-bad-label-2.t +# error: .*: Illegal label .* in digest command.* 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..c61c86ae54d --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-bad-label.d @@ -0,0 +1,3 @@ +#source: crc64-bad-label.s +#ld: -T crc64-bad-label.t +# error: .*: Illegal label .* in digest command.* 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..d30d6a7cd7e --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-ecma.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..cee0cabde6e --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-in-section.d @@ -0,0 +1,3 @@ +#source: crc64-in-section.s +#ld: -T crc64-in-section.t +#error: .*: CRC located inside checked area 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..12b9d319a61 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..131116d4305 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-iso_be.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..d2c00ccd45a --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-multiple-digest.d @@ -0,0 +1,3 @@ +#source: crc64-multiple-digest.s +#ld: -T crc64-multiple-digest.t +# error: .*: Duplicate digest .* 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..360743a9c36 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly-size.d @@ -0,0 +1,3 @@ +#source: crc64-poly-size.s +#ld: -T crc64-poly-size.t +# error: .*: Illegal Size in DIGEST: .* 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..d683d8b0058 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-poly.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..4d99ee3e0f5 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-reverse-area.d @@ -0,0 +1,3 @@ +#source: crc64-reverse-area.s +#ld: -T crc64-reverse-area.t +# error: .*: CRC area starts after its end location.* 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..5762e39faff --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-same-section.d @@ -0,0 +1,3 @@ +#source: crc64-same-section.s +#ld: -T crc64-same-section.t +#error: .*: The CRC digest and table should be inside the .* 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..9698c2d6716 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-section.d @@ -0,0 +1,24 @@ +#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-*-* + +.*: 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..5759b89efec --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-unknown-digest.d @@ -0,0 +1,3 @@ +#source: crc64-unknown-digest.s +#ld: -T crc64-unknown-digest.t +# error: .*: Unknown digest.* 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" -- 2.34.1