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 A6038385700E for ; Thu, 2 Mar 2023 23:12:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A6038385700E 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 63C891201F3; Fri, 3 Mar 2023 00:11:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emagii.com; s=default; t=1677798722; bh=deWohKlrewEeYkmumYrrXxiijZlH/G9YLFEMq8yLGKc=; h=From:To:Subject; b=w196EQgQp4gOlFhUNcGkBS1EOUdKVs9kurx1SqzYJ02me9UNA6JwmTD+lQafKq2uU oPZBg0SuWod0kNd4SKOhpNRmXgv2bUHvyElKYB7IaGHANYv1fN4Q7rPWTuzpg5DO49 99RAcDMuTEtGv1foYulVa8mKvDkD426A1DsbsGg8= 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 v10 04/11] DIGEST: testsuite Date: Fri, 3 Mar 2023 00:10:44 +0100 Message-Id: <20230302231051.1928782-5-binutils@emagii.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230302231051.1928782-1-binutils@emagii.com> References: <20230302231051.1928782-1-binutils@emagii.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-PPP-Message-ID: <167779872043.1212295.14706294042701117459@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/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-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/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-test.d | 24 +++++++++ ld/testsuite/ld-scripts/crc64-test.s | 21 ++++++++ ld/testsuite/ld-scripts/crc64-test.t | 57 +++++++++++++++++++++ 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 | 8 +++ 27 files changed, 675 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-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-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-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-test.d create mode 100644 ld/testsuite/ld-scripts/crc64-test.s create mode 100644 ld/testsuite/ld-scripts/crc64-test.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-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-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-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-test.d b/ld/testsuite/ld-scripts/crc64-test.d new file mode 100644 index 00000000000..3bb63ecc554 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-test.d @@ -0,0 +1,24 @@ +#source: crc64-test.s +#ld: -T crc64-test.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-test.s b/ld/testsuite/ld-scripts/crc64-test.s new file mode 100644 index 00000000000..99ff9f84960 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-test.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-test.t b/ld/testsuite/ld-scripts/crc64-test.t new file mode 100644 index 00000000000..31482c19a86 --- /dev/null +++ b/ld/testsuite/ld-scripts/crc64-test.t @@ -0,0 +1,57 @@ +MEMORY { + rom : ORIGIN = 0x000000, LENGTH = 0x400000 + ram : ORIGIN = 0x400000, LENGTH = 0x10000 +} + +_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) + DIGEST SECTION ".foo" + } > rom + + .data : AT (0x400000) { *(.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..e8819c18e9b 100644 --- a/ld/testsuite/ld-scripts/script.exp +++ b/ld/testsuite/ld-scripts/script.exp @@ -229,6 +229,14 @@ 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-test" + run_dump_test "align-with-input" run_dump_test "pr20302" run_dump_test "output-section-types" -- 2.34.1