* [PATCH v1 1/5] ldlex.l: CRC64
2023-02-17 13:54 [PATCH v1 0/5 Add support for CRC64 generation in linker binutils
@ 2023-02-17 13:54 ` binutils
2023-02-17 13:54 ` [PATCH v1 2/5] ldgram.y: CRC64 binutils
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: binutils @ 2023-02-17 13:54 UTC (permalink / raw)
To: binutils; +Cc: nickc, Ulf Samuelsson
From: Ulf Samuelsson <binutils@emagii.com>
Signed-off-by: Ulf Samuelsson <binutils@emagii.com>
---
ld/ldlex.l | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/ld/ldlex.l b/ld/ldlex.l
index 910e7ea3b8b..a8c95e66f7b 100644
--- a/ld/ldlex.l
+++ b/ld/ldlex.l
@@ -298,6 +298,15 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
<SCRIPT>"AFTER" { RTOKEN(AFTER); }
<SCRIPT>"BEFORE" { RTOKEN(BEFORE); }
<WILD>"FILL" { RTOKEN(FILL); }
+<WILD>"CRC64" { RTOKEN(CRC64); }
+<WILD>"ECMA" { RTOKEN(ECMA); }
+<WILD>"ISO" { RTOKEN(ISO); }
+<WILD>"POLY" { RTOKEN(POLY); }
+<WILD>"POLYI" { RTOKEN(POLYI); }
+<WILD>"TABLE" { RTOKEN(TABLE); }
+<WILD>"DEBUG" { RTOKEN(DEBUG); }
+<WILD>"ON" { RTOKEN(ON); }
+<WILD>"OFF" { RTOKEN(OFF); }
<SCRIPT>"STARTUP" { RTOKEN(STARTUP); }
<SCRIPT>"OUTPUT_FORMAT" { RTOKEN(OUTPUT_FORMAT); }
<SCRIPT>"OUTPUT_ARCH" { RTOKEN(OUTPUT_ARCH); }
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 2/5] ldgram.y: CRC64
2023-02-17 13:54 [PATCH v1 0/5 Add support for CRC64 generation in linker binutils
2023-02-17 13:54 ` [PATCH v1 1/5] ldlex.l: CRC64 binutils
@ 2023-02-17 13:54 ` binutils
2023-02-17 13:54 ` [PATCH v1 3/5] Calculate CRC64 over the .text area binutils
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: binutils @ 2023-02-17 13:54 UTC (permalink / raw)
To: binutils; +Cc: nickc, Ulf Samuelsson
From: Ulf Samuelsson <binutils@emagii.com>
Signed-off-by: Ulf Samuelsson <binutils@emagii.com>
---
ld/ldgram.y | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/ld/ldgram.y b/ld/ldgram.y
index faffeec94b8..d543d47a5ef 100644
--- a/ld/ldgram.y
+++ b/ld/ldgram.y
@@ -41,6 +41,7 @@
#include "mri.h"
#include "ldctor.h"
#include "ldlex.h"
+#include "checksum.h"
#ifndef YYDEBUG
#define YYDEBUG 1
@@ -130,6 +131,8 @@ static int error_index;
%token DATA_SEGMENT_ALIGN DATA_SEGMENT_RELRO_END DATA_SEGMENT_END
%token SORT_BY_NAME SORT_BY_ALIGNMENT SORT_NONE
%token SORT_BY_INIT_PRIORITY
+%token CRC64 ECMA ISO POLY POLYI TABLE
+%token DEBUG ON OFF
%token '{' '}'
%token SIZEOF_HEADERS OUTPUT_FORMAT FORCE_COMMON_ALLOCATION OUTPUT_ARCH
%token INHIBIT_COMMON_ALLOCATION FORCE_GROUP_ALLOCATION
@@ -682,6 +685,28 @@ statement:
{
lang_add_fill ($3);
}
+ | DEBUG ON
+ {
+ yydebug = 1;
+ }
+ | DEBUG OFF
+ {
+ yydebug = 0;
+ }
+ | CRC64
+ {
+ lang_add_assignment (exp_assign (CRC_ADDRESS, exp_nameop (NAME,"."), false));
+ }
+ polynome '(' mustbe_exp ',' mustbe_exp ')'
+ {
+ lang_add_assignment (exp_assign (CRC_START, $5, false));
+ lang_add_assignment (exp_assign (CRC_END, $7, false));
+ }
+ | CRC64 TABLE
+ {
+ lang_add_assignment (exp_assign (CRC_TABLE, exp_nameop (NAME,"."), false));
+ lang_add_crc_table();
+ }
| ASSERT_K
{ ldlex_expression (); }
'(' exp ',' NAME ')' separator
@@ -696,6 +721,25 @@ statement:
statement_list_opt END
;
+polynome:
+ ECMA
+ {
+ lang_add_crc_syndrome(false, CRC_POLY_64);
+ }
+ | ISO
+ {
+ lang_add_crc_syndrome(false, CRC_POLY_64_ISO);
+ }
+ | POLY mustbe_exp
+ {
+ lang_add_crc_syndrome(false, $2->value.value);
+ }
+
+ | POLYI mustbe_exp
+ {
+ lang_add_crc_syndrome(true, $2->value.value);
+ }
+
statement_list:
statement_list statement
| statement
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 3/5] Calculate CRC64 over the .text area
2023-02-17 13:54 [PATCH v1 0/5 Add support for CRC64 generation in linker binutils
2023-02-17 13:54 ` [PATCH v1 1/5] ldlex.l: CRC64 binutils
2023-02-17 13:54 ` [PATCH v1 2/5] ldgram.y: CRC64 binutils
@ 2023-02-17 13:54 ` binutils
2023-02-17 13:54 ` [PATCH v1 4/5] CRC64 commands documentation binutils
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: binutils @ 2023-02-17 13:54 UTC (permalink / raw)
To: binutils; +Cc: nickc, Ulf Samuelsson
From: Ulf Samuelsson <binutils@emagii.com>
Signed-off-by: Ulf Samuelsson <binutils@emagii.com>
---
ld/Makefile.am | 2 +-
ld/checksum.h | 48 ++++++++
ld/ldlang.c | 308 +++++++++++++++++++++++++++++++++++++++++++++++++
ld/ldlang.h | 8 ++
ld/ldmain.c | 1 +
5 files changed, 366 insertions(+), 1 deletion(-)
create mode 100755 ld/checksum.h
diff --git a/ld/Makefile.am b/ld/Makefile.am
index 760225c5b88..91b024d1cba 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -481,7 +481,7 @@ CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
plugin.c ldbuildid.c ldelf.c ldelfgen.c \
pdb.c
-HFILES = ld.h ldctor.h ldemul.h ldexp.h ldfile.h \
+HFILES = checksum.h ld.h ldctor.h ldemul.h ldexp.h ldfile.h \
ldlang.h ldlex.h ldmain.h ldmisc.h ldver.h \
ldwrite.h mri.h deffile.h pe-dll.h pep-dll.h \
elf-hints-local.h plugin.h ldbuildid.h ldelf.h ldelfgen.h \
diff --git a/ld/checksum.h b/ld/checksum.h
new file mode 100755
index 00000000000..16a8db170e7
--- /dev/null
+++ b/ld/checksum.h
@@ -0,0 +1,48 @@
+/*
+ * Library: libcrc
+ * Author: Lammert Bies
+ *
+ * This file is licensed under the MIT License as stated below
+ *
+ * Copyright (c) 2016 Lammert Bies
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+
+#ifndef CHECKSUM_H
+#define CHECKSUM_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+#define CRC_POLY_64 0x42F0E1EBA9EA3693ull
+#define CRC_POLY_64_ISO 0xD800000000000000ull
+#define CRC_START_64 0x0000000000000000ull
+#define CRC_START_64_INV 0xFFFFFFFFFFFFFFFFull
+
+#define CRC_ADDRESS "___CRC64___"
+#define CRC_START "___CRC64_START___"
+#define CRC_END "___CRC64_END___"
+#define CRC_TABLE "___CRC64_TABLE___"
+
+bfd_vma crc_64 (const unsigned char *input_str, size_t num_bytes);
+bfd_vma crc_64_inv(const unsigned char *input_str, size_t num_bytes);
+
+#endif /* CHECKSUM_H */
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 2852a4222d3..5e424770f46 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -18,6 +18,8 @@
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
+#define DEBUG_CRC 1
+
#include "sysdep.h"
#include <limits.h>
#include "bfd.h"
@@ -42,6 +44,8 @@
#include "demangle.h"
#include "hashtab.h"
#include "elf-bfd.h"
+#include "checksum.h"
+
#if BFD_SUPPORTS_PLUGINS
#include "plugin.h"
#endif /* BFD_SUPPORTS_PLUGINS */
@@ -145,6 +149,11 @@ int lang_statement_iteration = 0;
/* Count times through one_lang_size_sections_pass after mark phase. */
static int lang_sizing_iteration = 0;
+/* CRC calculation on output section */
+bfd_vma crc64_poly = CRC_POLY_64; /* Default Polynome is CRC64 ECMA */
+bfd_vma *crc64_tab = NULL;
+bool crc64_invert= false;
+
/* Return TRUE if the PATTERN argument is a wildcard pattern.
Although backslashes are treated specially if a pattern contains
wildcards, we do not consider the mere presence of a backslash to
@@ -8524,6 +8533,305 @@ lang_add_attribute (enum statement_enum attribute)
new_statement (attribute, sizeof (lang_statement_header_type), stat_ptr);
}
+/*
+ * bfd_vma *init_crc64_tab( bfd_vma poly ) ;
+ *
+ * For optimal speed, the CRC64 calculation uses a table with pre-calculated
+ * bit patterns which are used in the XOR operations in the program.
+ * init_crc64_tab is copyright (c) 2016 Lammert Bies
+ */
+static
+bfd_vma *init_crc64_tab( bfd_vma poly ) {
+
+ bfd_vma i;
+ bfd_vma j;
+ bfd_vma c;
+ bfd_vma crc;
+ bfd_vma *crc_tab;
+
+ crc_tab = malloc(256 * sizeof(bfd_vma));
+ if (crc_tab == NULL)
+ return NULL;
+
+ for (i=0; i<256; i++) {
+
+ crc = 0;
+ c = i << 56;
+
+ for (j=0; j<8; j++) {
+
+ if ( ( crc ^ c ) & 0x8000000000000000ull )
+ crc = ( crc << 1 ) ^ poly;
+ else
+ crc = crc << 1;
+
+ c = c << 1;
+ }
+
+ crc_tab[i] = crc;
+ }
+ return crc_tab;
+
+} /* init_crc64_tab */
+
+/*
+ * The function crc_64_inv() calculates in one pass the CRC64 64 bit CRC
+ * value for a byte string that is passed to the function together with a
+ * parameter indicating the length.
+ * This is used for CRC64-WE
+ * crc_64_inv is copyright (c) 2016 Lammert Bies
+ */
+
+bfd_vma crc_64_inv( const unsigned char *input_str, size_t num_bytes ) {
+
+ bfd_vma crc;
+ const unsigned char *ptr;
+ size_t a;
+
+ crc = CRC_START_64_INV;
+ ptr = input_str;
+
+ if ( ptr != NULL ) {
+ for (a=0; a<num_bytes; a++) {
+ crc = (crc << 8) ^
+ crc64_tab[
+ ((crc >> 56) ^ (bfd_vma) *ptr++) &
+ 0x00000000000000FFull
+ ];
+ }
+ }
+
+ return crc ^ 0xFFFFFFFFFFFFFFFFull;
+
+} /* crc_64_inv */
+
+/*
+ * bfd_vma crc_64( const unsigned char *input_str, size_t num_bytes );
+ *
+ * The function crc_64() calculates in one pass the 64 bit CRC value
+ * for a byte string that is passed to the function together with a
+ * parameter indicating the length.
+ * This is used for CRC64-ECMA and CRC64-ISO
+ * crc_64 is copyright (c) 2016 Lammert Bies
+ */
+
+bfd_vma crc_64(const unsigned char *input_str, size_t num_bytes)
+{
+ bfd_vma crc;
+ const unsigned char *ptr;
+ size_t a;
+ if (crc64_invert)
+ return crc_64_inv(input_str, num_bytes);
+ crc = CRC_START_64;
+ ptr = input_str;
+ if ( ptr != NULL ) {
+ for (a=0; a<num_bytes; a++) {
+ crc = (crc << 8) ^
+ crc64_tab[
+ ((crc >> 56) ^ (bfd_vma) *ptr++) &
+ 0x00000000000000FFull
+ ];
+ }
+ }
+ return crc;
+} /* crc_64 */
+
+extern void lang_add_crc_syndrome(bool invert, bfd_vma poly)
+{
+ crc64_poly = poly; /* Set the polynom */
+ crc64_invert = invert;
+#if (DEBUG_CRC == 1)
+ printf("Adding Syndrome: 0x%08lx\n", poly);
+#endif
+ lang_add_data (QUAD, exp_intop (0)); /* Reserve room for the ECC value */
+ if (crc64_tab == NULL)
+ {
+ crc64_tab = init_crc64_tab(crc64_poly);
+ }
+ else
+ {
+ einfo (_("%P:%pS: warning: CRC polynome declared twice (ignored)\n"),
+ NULL);
+ }
+}
+
+extern void lang_add_crc_table(void)
+{
+ if (crc64_tab == NULL)
+ {
+ crc64_tab = init_crc64_tab(crc64_poly);
+ if (crc64_tab == NULL)
+ {
+ einfo (_("%F%P: can not allocate memory for CRC table: %E\n"));
+ return;
+ }
+ }
+ for (bfd_vma i = 0 ; i < 256 ; i++)
+ {
+ lang_add_data (QUAD, exp_intop (crc64_tab[i]));
+ }
+}
+
+static bool symbol_lookup(char *name, bfd_vma *val)
+{
+ struct bfd_link_hash_entry *h;
+ h = bfd_link_hash_lookup (link_info.hash, name,
+ false, false, true);
+ if (h != NULL)
+ {
+ if ((h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak)
+ && h->u.def.section->output_section != NULL)
+ {
+ *val = (h->u.def.value
+ + bfd_section_vma (h->u.def.section->output_section)
+ + h->u.def.section->output_offset);
+ return true;
+ }
+ }
+ return false;
+}
+
+#if (DEBUG_CRC == 1)
+static void output_hex(char *prompt, unsigned char *section,
+ bfd_vma address, bfd_vma sz)
+{
+ bfd_vma *vma_section = (bfd_vma *) section;
+ bfd_vma size = (sz)/sizeof(bfd_vma);
+ printf("%s:\n", prompt);
+ for (bfd_vma i = 0 ; i < size ; i+=8)
+ {
+ printf("0x%08lx: 0x%016lx 0x%016lx 0x%016lx 0x%016lx\n",
+ address + (i*sizeof(bfd_vma)),
+ vma_section[i+0],
+ vma_section[i+1],
+ vma_section[i+2],
+ vma_section[i+3]);
+ }
+}
+#endif
+
+void lang_generate_crc(void)
+{
+ bfd_vma crc64, start, end;
+ bfd_vma crc;
+ bool can_do_crc;
+ bool crc_in_section;
+ asection *ts;
+ unsigned char *text_section = NULL;
+
+ /* These symbols must be present, for CRC to be generated */
+ /* They are all defined in the CRC <syndrome> statement
+ * If the user defines them without the CRC <syndrome>
+ * the ECMA algorithm will be used.
+ * Should we consider using a value which cannot be parser by the linker?
+ * I.E. CRC-64 is never an identifier
+ */
+ can_do_crc = symbol_lookup(CRC_ADDRESS, &crc64) &&
+ symbol_lookup(CRC_START, &start) &&
+ symbol_lookup(CRC_END, &end);
+
+ if (!can_do_crc)
+ return;
+
+ /*
+ * Get the '.text' section
+ * Is there a risk that CRC needs to be calculated on more than .text?
+ * We do not support that...
+ */
+ ts = bfd_get_section_by_name (link_info.output_bfd, entry_section);
+ if (ts == NULL)
+ einfo (_("%P:%pS: Cannot retrieve '.text' section\n"), NULL);
+
+ bfd_vma text_start = ts->lma;
+ bfd_vma text_end = ts->lma + ts->size;
+
+#if (DEBUG_CRC == 1)
+ printf("%s: [0x%08lx .. 0x%08lx]\n",
+ ts->name,
+ text_start,
+ text_end);
+#endif
+
+ crc_in_section =
+ ((text_start <= crc64) && (crc64 <= text_end)) &&
+ ((text_start <= start) && (start <= text_end)) &&
+ ((text_start <= end) && (end <= text_end));
+
+ if (!crc_in_section)
+ {
+ einfo (_("%P:%pS: warning: CRC area outside the '.text' section\n"
+ "CRC generation aborted\n"), NULL);
+ /*
+ * Maybe we should printout the text section start and end
+ * as well as the boundaries of the CRC check area.
+ */
+ return;
+ }
+
+ /* Get the contents of the '.text' area so we can calculate the CRC */
+ if (!bfd_malloc_and_get_section(link_info.output_bfd,
+ ts->output_section,
+ (bfd_byte **) &text_section))
+ {
+ einfo (_("%P:%pS: warning: '.text' section contents unavailable\n"
+ "CRC generation aborted\n"), NULL);
+ return;
+ }
+
+#if (DEBUG_CRC == 1)
+ output_hex("Before CRC", text_section, ts->vma, 64);
+#endif
+
+ /* Calculate and set the CRC */
+ {
+ /*
+ * The '.text' area does not neccessarily start at 0x0000,
+ * so we have to shift the indices.
+ */
+ bfd_vma _crc64 = crc64 - ts->vma;
+ bfd_vma _start = start - ts->vma;
+ bfd_vma _end = end - ts->vma;
+
+ /* This is the CRC calculation which we worked so hard for */
+ crc = crc_64(&text_section[_start] , _end - _start);
+
+ /*
+ * The '.text' contents are no longer needed.
+ * It is but a copy of the contents, and will therefore be stale
+ * after we updated the CRC.
+ * Remove it, before we try to set the CRC, to simplify the code logic.
+ */
+ free(text_section);
+
+ /* Set the 64-bit CRC64 at CRC_ADDRESS */
+ if (!bfd_set_section_contents(link_info.output_bfd,
+ ts->output_section,
+ &crc,
+ _crc64,
+ sizeof(bfd_vma)))
+ {
+ einfo (_("%P:%pS: warning: updating CRC failed\n"
+ "CRC generation aborted\n"), NULL);
+ return;
+ }
+ }
+
+#if (DEBUG_CRC == 1)
+ printf("CRC [0x%016lx] update at 0x%08lx succeeded\n", crc, crc64);
+
+ /* In order to see the updated contents, we have to it them again */
+ if (bfd_malloc_and_get_section(link_info.output_bfd,
+ ts->output_section,
+ (bfd_byte **) &text_section))
+ {
+ output_hex("After CRC", text_section, ts->vma, 64);
+ output_hex("Full Section After CRC", text_section, ts->vma, ts->size);
+ free(text_section);
+ }
+#endif
+}
+
void
lang_startup (const char *name)
{
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 2300fa5b2a3..94ca4a9f239 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -632,6 +632,14 @@ extern lang_output_section_statement_type *lang_output_section_statement_lookup
(const char *, int, int);
extern lang_output_section_statement_type *next_matching_output_section_statement
(lang_output_section_statement_type *, int);
+extern void lang_add_crc_syndrome
+ (bool, bfd_vma);
+extern void lang_add_crc_table
+ (void);
+extern void lang_set_crc_region
+ (union etree_union *start, union etree_union *end);
+extern void lang_generate_crc
+ (void);
extern void ldlang_add_undef
(const char *const, bool);
extern void ldlang_add_require_defined
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 25cc89b72f9..8b57b2dc5fc 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -527,6 +527,7 @@ main (int argc, char **argv)
ldwrite ();
+ lang_generate_crc(); /* Calculate and store CRC on request */
if (config.map_file != NULL)
lang_map ();
if (command_line.cref)
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 4/5] CRC64 commands documentation
2023-02-17 13:54 [PATCH v1 0/5 Add support for CRC64 generation in linker binutils
` (2 preceding siblings ...)
2023-02-17 13:54 ` [PATCH v1 3/5] Calculate CRC64 over the .text area binutils
@ 2023-02-17 13:54 ` binutils
2023-02-17 13:54 ` [PATCH v1 5/5] CRC64 testsuite binutils
2023-02-17 14:31 ` [PATCH v1 0/5 Add support for CRC64 generation in linker Ulf Samuelsson
5 siblings, 0 replies; 7+ messages in thread
From: binutils @ 2023-02-17 13:54 UTC (permalink / raw)
To: binutils; +Cc: nickc, Ulf Samuelsson
From: Ulf Samuelsson <binutils@emagii.com>
* LIBCRC license
* NEWS
* ls.texi
Signed-off-by: Ulf Samuelsson <binutils@emagii.com>
---
COPYING.CRC64 | 43 ++++++++++++++++++++++++
ld/NEWS | 29 ++++++++++++++++
ld/ld.texi | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 164 insertions(+)
create mode 100755 COPYING.CRC64
diff --git a/COPYING.CRC64 b/COPYING.CRC64
new file mode 100755
index 00000000000..0034ba311fc
--- /dev/null
+++ b/COPYING.CRC64
@@ -0,0 +1,43 @@
+The GNU linker contains CRC routines that are used to implement the
+CRC16 command in the output section.
+
+The CRC routines are extracted from LIBCRC available at
+
+They are used to
+* https://www.libcrc.org/
+* https://github.com/lammertb/libcrc/tree/v2.0
+
+
+/*
+ * Library: libcrc
+ * File: src/crc64.c
+ * Author: Lammert Bies
+ *
+ * This file is licensed under the MIT License as stated below
+ *
+ * Copyright (c) 2016 Lammert Bies
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Description
+ * -----------
+ * The source file src/crc64.c contains the routines which are needed to
+ * calculate a 64 bit CRC value of a sequence of bytes.
+ */
+
diff --git a/ld/NEWS b/ld/NEWS
index 4b91f2c3b0a..8df2fc76617 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,34 @@
-*- text -*-
+* The linker script syntax has new commands for handling CRC-64 calculations
+ on the '.text' section
+ It uses code from https://www.libcrc.org/
+
+ CRC64 ECMA (start, end)
+ CRC64 ISO (start, end)
+ CRC64 POLY(polynome) (start, end)
+ CRC64 POLYI(polynome)(start, end) (inversion during CRC calculation)
+ CRC64 TABLE
+
+ The ECMA, ISO, POLY, POLYI defines the polynome to use
+ and reserves space for the 64-bit CRC in the '.text' section.
+ The default polynome is the ECMA.
+
+ The CRC64 <polynome> command defines some global symbols.
+ ___CRC64___ is the address of the CRC64 checksum
+ ___CRC64_START___ is the address where CRC calculation starts
+ ___CRC64_END___ The CRC calculation ends before this address.
+ All three symbols must refer to addresses in the '.text' section.
+ If they are defined at the end of the linking process, then
+ the CRC64 will be calculated between ___CRC64_START___ .. ___CRC64_END___ -1
+ and the result will be inserted at ___CRC64___.
+
+ The CRC64 TABLE command generates a table for CRC generation.
+ This is not neccessary, but will speed up the calculation
+ and makes it compatible with the CRC check routines at https://www.libcrc.org/
+ It defines the ___CRC64_TABLE___ symbol at the start of the table.
+ The user may choose to add this table to his code instead of using the linker.
+
* The linker script syntax has two new commands for inserting text into output
sections:
ASCII (<size>) "string"
diff --git a/ld/ld.texi b/ld/ld.texi
index 7802f0661b0..b7a9b9264e3 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -5394,6 +5394,98 @@ area:
ASCIZ "This is 16 bytes"
@end smallexample
+@cindex output section strings
+@kindex CRC64 ECMA (@var{expression}, @var{expression})
+@kindex CRC64 ISO (@var{expression}, @var{expression})
+@kindex CRC64 POLY (@var{expression})(@var{expression}, @var{expression})
+@kindex CRC64 POLYI (@var{expression})(@var{expression}, @var{expression})
+
+You can calculate the CRC of a part of the '.text' section through the
+@code{CRC64} commands. The commands take a parameter for the @code{polynome}
+and then two more, specifying range of the checked area. The end address is
+the first address past the checked area.
+
+There are two predefined polynomes
+
+* @code{ECMA} @code{0x42F0E1EBA9EA3693}
+
+* @code{ISO} @code{0xD800000000000000}
+
+You can also select your own @code{polynome} using the @code{CRC64 POLY} or
+@code{CRC64 POLYI}. The @code{POLYI} will invert the polynome before and after
+the calculation which is neccessary for the @code{CRC64-WE} algorithm
+
+The default polynome is the @code{ECMA}
+
+The CRC64 <polynome> command defines some global symbols.
+
+* @code{___CRC64___} address of the CRC64 checksum
+
+* @code{___CRC64_START___} first address in the checked area.
+
+* @code{___CRC64_END___} first address past the checked area.
+
+Note: The generated CRC value must be stored outside the checked area.
+
+Example 1: This request a CRC check using the @code{ECMA} algorithm
+
+@smallexample
+ CRC = '.';
+ CRC65 ECMA (START_CHECK,END_TEXT)
+ START_CHECK = '.';
+@end smallexample
+
+The user can retrieve the CRC value through the @code{CRC} label.
+
+Example 2: This request a CRC check using the @code{ISO} algorithm
+
+@smallexample
+ CRC = '.';
+ CRC65 ISO (START_CHECK,END_TEXT)
+ START_CHECK = '.';
+@end smallexample
+
+The user can retrieve the CRC value through the @code{CRC} label.
+
+Example 3: This request a CRC check using a user defined @code{polynome}
+
+@smallexample
+ CRC = '.';
+ CRC65 POLY (0xDEADBEEFDEADBEEF) (START_CHECK,END_TEXT)
+ START_CHECK = '.';
+@end smallexample
+
+The user can retrieve the CRC value through the @code{CRC} label.
+
+Example 4: This request a CRC check using a user defined @code{polynome}
+ The @code{polynome} is inverted before use, and teh result is inverted.
+
+@smallexample
+ CRC = '.';
+ CRC65 POLYI (0xDEADBEEFDEADBEEF) (START_CHECK,END_TEXT)
+ START_CHECK = '.';
+@end smallexample
+
+The user can retrieve the CRC value through the @code{CRC} label.
+
+@cindex output section strings
+@kindex CRC64 TABLE
+
+The @code{CRC64 TABLE} command creates a 2 kByte table for a table-driven
+CRC calculation. This speeds up the CRC calculation over a non-table-driver
+version since you can handle 8 bits at a time, instead of 1 bit.
+
+The table generated is for the @code{polynome} selected using a @code{CRC64}
+command. If no @code{CRC64} command has been emitted, the @code{ECMA} is used.
+
+Example 1: Generate a 2 kB table
+@smallexample
+ mytable = '.';
+ CRC64 TABLE
+@end smallexample
+
+The use can declare @code{extern uint64_t *mytable;} in his code to use it.
+
@kindex FILL(@var{expression})
@cindex holes, filling
@cindex unspecified memory
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 5/5] CRC64 testsuite
2023-02-17 13:54 [PATCH v1 0/5 Add support for CRC64 generation in linker binutils
` (3 preceding siblings ...)
2023-02-17 13:54 ` [PATCH v1 4/5] CRC64 commands documentation binutils
@ 2023-02-17 13:54 ` binutils
2023-02-17 14:31 ` [PATCH v1 0/5 Add support for CRC64 generation in linker Ulf Samuelsson
5 siblings, 0 replies; 7+ messages in thread
From: binutils @ 2023-02-17 13:54 UTC (permalink / raw)
To: binutils; +Cc: nickc, Ulf Samuelsson
From: Ulf Samuelsson <binutils@emagii.com>
Signed-off-by: Ulf Samuelsson <binutils@emagii.com>
---
ld/testsuite/ld-scripts/crc-ecma.d | 379 ++++++++++++++++++++++++++++
ld/testsuite/ld-scripts/crc-ecma.s | 9 +
ld/testsuite/ld-scripts/crc-ecma.t | 41 +++
ld/testsuite/ld-scripts/crc-iso.d | 379 ++++++++++++++++++++++++++++
ld/testsuite/ld-scripts/crc-iso.s | 9 +
ld/testsuite/ld-scripts/crc-iso.t | 41 +++
ld/testsuite/ld-scripts/crc-poly.d | 379 ++++++++++++++++++++++++++++
ld/testsuite/ld-scripts/crc-poly.s | 9 +
ld/testsuite/ld-scripts/crc-poly.t | 41 +++
ld/testsuite/ld-scripts/crc-polyi.d | 379 ++++++++++++++++++++++++++++
ld/testsuite/ld-scripts/crc-polyi.s | 9 +
ld/testsuite/ld-scripts/crc-polyi.t | 41 +++
12 files changed, 1716 insertions(+)
create mode 100644 ld/testsuite/ld-scripts/crc-ecma.d
create mode 100644 ld/testsuite/ld-scripts/crc-ecma.s
create mode 100644 ld/testsuite/ld-scripts/crc-ecma.t
create mode 100644 ld/testsuite/ld-scripts/crc-iso.d
create mode 100644 ld/testsuite/ld-scripts/crc-iso.s
create mode 100644 ld/testsuite/ld-scripts/crc-iso.t
create mode 100644 ld/testsuite/ld-scripts/crc-poly.d
create mode 100644 ld/testsuite/ld-scripts/crc-poly.s
create mode 100644 ld/testsuite/ld-scripts/crc-poly.t
create mode 100644 ld/testsuite/ld-scripts/crc-polyi.d
create mode 100644 ld/testsuite/ld-scripts/crc-polyi.s
create mode 100644 ld/testsuite/ld-scripts/crc-polyi.t
diff --git a/ld/testsuite/ld-scripts/crc-ecma.d b/ld/testsuite/ld-scripts/crc-ecma.d
new file mode 100644
index 00000000000..59b112c3a5a
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-ecma.d
@@ -0,0 +1,379 @@
+#source: crc.s
+#ld: -T crc-ecma.t
+#objdump: -s -j .text
+#notarget: [is_aout_format]
+#xfail: tic4x-*-* tic54x-*-*
+
+.*: file format .*
+
+Contents of section .text:
+ 1100 434f4445 deadbeef d89e4425 b46db823 CODE......D%.m.#
+ 1110 10110000 00000000 10280000 00000000 .........(......
+ 1120 00170000 00000000 deadbeef 434f4445 ............CODE
+ 1130 434f4445 10110000 ffffffff ffffffff CODE............
+ 1140 ffffffff ffffffff ffffffff ffffffff ................
+ 1150 ffffffff ffffffff ffffffff ffffffff ................
+ 1160 ffffffff ffffffff ffffffff ffffffff ................
+ 1170 ffffffff ffffffff ffffffff ffffffff ................
+ 1180 ffffffff ffffffff ffffffff ffffffff ................
+ 1190 ffffffff ffffffff ffffffff ffffffff ................
+ 11a0 ffffffff ffffffff ffffffff ffffffff ................
+ 11b0 ffffffff ffffffff ffffffff ffffffff ................
+ 11c0 ffffffff ffffffff ffffffff ffffffff ................
+ 11d0 ffffffff ffffffff ffffffff ffffffff ................
+ 11e0 ffffffff ffffffff ffffffff ffffffff ................
+ 11f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1200 01ffffff ffffffff ffffffff ffffffff ................
+ 1210 ffffffff ffffffff ffffffff ffffffff ................
+ 1220 ffffffff ffffffff ffffffff ffffffff ................
+ 1230 ffffffff ffffffff ffffffff ffffffff ................
+ 1240 ffffffff ffffffff ffffffff ffffffff ................
+ 1250 ffffffff ffffffff ffffffff ffffffff ................
+ 1260 ffffffff ffffffff ffffffff ffffffff ................
+ 1270 ffffffff ffffffff ffffffff ffffffff ................
+ 1280 ffffffff ffffffff ffffffff ffffffff ................
+ 1290 ffffffff ffffffff ffffffff ffffffff ................
+ 12a0 ffffffff ffffffff ffffffff ffffffff ................
+ 12b0 ffffffff ffffffff ffffffff ffffffff ................
+ 12c0 ffffffff ffffffff ffffffff ffffffff ................
+ 12d0 ffffffff ffffffff ffffffff ffffffff ................
+ 12e0 ffffffff ffffffff ffffffff ffffffff ................
+ 12f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1300 ffffffff ffffffff ffffffff ffffffff ................
+ 1310 ffffffff ffffffff ffffffff ffffffff ................
+ 1320 ffffffff ffffffff ffffffff ffffffff ................
+ 1330 ffffffff ffffffff ffffffff ffffffff ................
+ 1340 ffffffff ffffffff ffffffff ffffffff ................
+ 1350 ffffffff ffffffff ffffffff ffffffff ................
+ 1360 ffffffff ffffffff ffffffff ffffffff ................
+ 1370 ffffffff ffffffff ffffffff ffffffff ................
+ 1380 ffffffff ffffffff ffffffff ffffffff ................
+ 1390 ffffffff ffffffff ffffffff ffffffff ................
+ 13a0 ffffffff ffffffff ffffffff ffffffff ................
+ 13b0 ffffffff ffffffff ffffffff ffffffff ................
+ 13c0 ffffffff ffffffff ffffffff ffffffff ................
+ 13d0 ffffffff ffffffff ffffffff ffffffff ................
+ 13e0 ffffffff ffffffff ffffffff ffffffff ................
+ 13f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1400 ffffffff ffffffff ffffffff ffffffff ................
+ 1410 ffffffff ffffffff ffffffff ffffffff ................
+ 1420 ffffffff ffffffff ffffffff ffffffff ................
+ 1430 ffffffff ffffffff ffffffff ffffffff ................
+ 1440 ffffffff ffffffff ffffffff ffffffff ................
+ 1450 ffffffff ffffffff ffffffff ffffffff ................
+ 1460 ffffffff ffffffff ffffffff ffffffff ................
+ 1470 ffffffff ffffffff ffffffff ffffffff ................
+ 1480 ffffffff ffffffff ffffffff ffffffff ................
+ 1490 ffffffff ffffffff ffffffff ffffffff ................
+ 14a0 ffffffff ffffffff ffffffff ffffffff ................
+ 14b0 ffffffff ffffffff ffffffff ffffffff ................
+ 14c0 ffffffff ffffffff ffffffff ffffffff ................
+ 14d0 ffffffff ffffffff ffffffff ffffffff ................
+ 14e0 ffffffff ffffffff ffffffff ffffffff ................
+ 14f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1500 ffffffff ffffffff ffffffff ffffffff ................
+ 1510 ffffffff ffffffff ffffffff ffffffff ................
+ 1520 ffffffff ffffffff ffffffff ffffffff ................
+ 1530 ffffffff ffffffff ffffffff ffffffff ................
+ 1540 ffffffff ffffffff ffffffff ffffffff ................
+ 1550 ffffffff ffffffff ffffffff ffffffff ................
+ 1560 ffffffff ffffffff ffffffff ffffffff ................
+ 1570 ffffffff ffffffff ffffffff ffffffff ................
+ 1580 ffffffff ffffffff ffffffff ffffffff ................
+ 1590 ffffffff ffffffff ffffffff ffffffff ................
+ 15a0 ffffffff ffffffff ffffffff ffffffff ................
+ 15b0 ffffffff ffffffff ffffffff ffffffff ................
+ 15c0 ffffffff ffffffff ffffffff ffffffff ................
+ 15d0 ffffffff ffffffff ffffffff ffffffff ................
+ 15e0 ffffffff ffffffff ffffffff ffffffff ................
+ 15f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1600 ffffffff ffffffff ffffffff ffffffff ................
+ 1610 ffffffff ffffffff ffffffff ffffffff ................
+ 1620 ffffffff ffffffff ffffffff ffffffff ................
+ 1630 ffffffff ffffffff ffffffff ffffffff ................
+ 1640 ffffffff ffffffff ffffffff ffffffff ................
+ 1650 ffffffff ffffffff ffffffff ffffffff ................
+ 1660 ffffffff ffffffff ffffffff ffffffff ................
+ 1670 ffffffff ffffffff ffffffff ffffffff ................
+ 1680 ffffffff ffffffff ffffffff ffffffff ................
+ 1690 ffffffff ffffffff ffffffff ffffffff ................
+ 16a0 ffffffff ffffffff ffffffff ffffffff ................
+ 16b0 ffffffff ffffffff ffffffff ffffffff ................
+ 16c0 ffffffff ffffffff ffffffff ffffffff ................
+ 16d0 ffffffff ffffffff ffffffff ffffffff ................
+ 16e0 ffffffff ffffffff ffffffff ffffffff ................
+ 16f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1700 ffffffff ffffffff ffffffff ffffffff ................
+ 1710 ffffffff ffffffff ffffffff ffffffff ................
+ 1720 ffffffff ffffffff ffffffff ffffffff ................
+ 1730 ffffffff ffffffff ffffffff ffffffff ................
+ 1740 ffffffff ffffffff ffffffff ffffffff ................
+ 1750 ffffffff ffffffff ffffffff ffffffff ................
+ 1760 ffffffff ffffffff ffffffff ffffffff ................
+ 1770 ffffffff ffffffff ffffffff ffffffff ................
+ 1780 ffffffff ffffffff ffffffff ffffffff ................
+ 1790 ffffffff ffffffff ffffffff ffffffff ................
+ 17a0 ffffffff ffffffff ffffffff ffffffff ................
+ 17b0 ffffffff ffffffff ffffffff ffffffff ................
+ 17c0 ffffffff ffffffff ffffffff ffffffff ................
+ 17d0 ffffffff ffffffff ffffffff ffffffff ................
+ 17e0 ffffffff ffffffff ffffffff ffffffff ................
+ 17f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1800 ffffffff ffffffff ffffffff ffffffff ................
+ 1810 ffffffff ffffffff ffffffff ffffffff ................
+ 1820 ffffffff ffffffff ffffffff ffffffff ................
+ 1830 ffffffff ffffffff ffffffff ffffffff ................
+ 1840 ffffffff ffffffff ffffffff ffffffff ................
+ 1850 ffffffff ffffffff ffffffff ffffffff ................
+ 1860 ffffffff ffffffff ffffffff ffffffff ................
+ 1870 ffffffff ffffffff ffffffff ffffffff ................
+ 1880 ffffffff ffffffff ffffffff ffffffff ................
+ 1890 ffffffff ffffffff ffffffff ffffffff ................
+ 18a0 ffffffff ffffffff ffffffff ffffffff ................
+ 18b0 ffffffff ffffffff ffffffff ffffffff ................
+ 18c0 ffffffff ffffffff ffffffff ffffffff ................
+ 18d0 ffffffff ffffffff ffffffff ffffffff ................
+ 18e0 ffffffff ffffffff ffffffff ffffffff ................
+ 18f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1900 ffffffff ffffffff ffffffff ffffffff ................
+ 1910 ffffffff ffffffff ffffffff ffffffff ................
+ 1920 ffffffff ffffffff ffffffff ffffffff ................
+ 1930 ffffffff ffffffff ffffffff ffffffff ................
+ 1940 ffffffff ffffffff ffffffff ffffffff ................
+ 1950 ffffffff ffffffff ffffffff ffffffff ................
+ 1960 ffffffff ffffffff ffffffff ffffffff ................
+ 1970 ffffffff ffffffff ffffffff ffffffff ................
+ 1980 ffffffff ffffffff ffffffff ffffffff ................
+ 1990 ffffffff ffffffff ffffffff ffffffff ................
+ 19a0 ffffffff ffffffff ffffffff ffffffff ................
+ 19b0 ffffffff ffffffff ffffffff ffffffff ................
+ 19c0 ffffffff ffffffff ffffffff ffffffff ................
+ 19d0 ffffffff ffffffff ffffffff ffffffff ................
+ 19e0 ffffffff ffffffff ffffffff ffffffff ................
+ 19f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1a00 ffffffff ffffffff ffffffff ffffffff ................
+ 1a10 ffffffff ffffffff ffffffff ffffffff ................
+ 1a20 ffffffff ffffffff ffffffff ffffffff ................
+ 1a30 ffffffff ffffffff ffffffff ffffffff ................
+ 1a40 ffffffff ffffffff ffffffff ffffffff ................
+ 1a50 ffffffff ffffffff ffffffff ffffffff ................
+ 1a60 ffffffff ffffffff ffffffff ffffffff ................
+ 1a70 ffffffff ffffffff ffffffff ffffffff ................
+ 1a80 ffffffff ffffffff ffffffff ffffffff ................
+ 1a90 ffffffff ffffffff ffffffff ffffffff ................
+ 1aa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ab0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ac0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ad0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ae0 ffffffff ffffffff ffffffff ffffffff ................
+ 1af0 ffffffff ffffffff ffffffff ffffffff ................
+ 1b00 ffffffff ffffffff ffffffff ffffffff ................
+ 1b10 ffffffff ffffffff ffffffff ffffffff ................
+ 1b20 ffffffff ffffffff ffffffff ffffffff ................
+ 1b30 ffffffff ffffffff ffffffff ffffffff ................
+ 1b40 ffffffff ffffffff ffffffff ffffffff ................
+ 1b50 ffffffff ffffffff ffffffff ffffffff ................
+ 1b60 ffffffff ffffffff ffffffff ffffffff ................
+ 1b70 ffffffff ffffffff ffffffff ffffffff ................
+ 1b80 ffffffff ffffffff ffffffff ffffffff ................
+ 1b90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ba0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1be0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1c00 ffffffff ffffffff ffffffff ffffffff ................
+ 1c10 ffffffff ffffffff ffffffff ffffffff ................
+ 1c20 ffffffff ffffffff ffffffff ffffffff ................
+ 1c30 ffffffff ffffffff ffffffff ffffffff ................
+ 1c40 ffffffff ffffffff ffffffff ffffffff ................
+ 1c50 ffffffff ffffffff ffffffff ffffffff ................
+ 1c60 ffffffff ffffffff ffffffff ffffffff ................
+ 1c70 ffffffff ffffffff ffffffff ffffffff ................
+ 1c80 ffffffff ffffffff ffffffff ffffffff ................
+ 1c90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ca0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ce0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1d00 ffffffff ffffffff ffffffff ffffffff ................
+ 1d10 ffffffff ffffffff ffffffff ffffffff ................
+ 1d20 ffffffff ffffffff ffffffff ffffffff ................
+ 1d30 ffffffff ffffffff ffffffff ffffffff ................
+ 1d40 ffffffff ffffffff ffffffff ffffffff ................
+ 1d50 ffffffff ffffffff ffffffff ffffffff ................
+ 1d60 ffffffff ffffffff ffffffff ffffffff ................
+ 1d70 ffffffff ffffffff ffffffff ffffffff ................
+ 1d80 ffffffff ffffffff ffffffff ffffffff ................
+ 1d90 ffffffff ffffffff ffffffff ffffffff ................
+ 1da0 ffffffff ffffffff ffffffff ffffffff ................
+ 1db0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1de0 ffffffff ffffffff ffffffff ffffffff ................
+ 1df0 ffffffff ffffffff ffffffff ffffffff ................
+ 1e00 ffffffff ffffffff ffffffff ffffffff ................
+ 1e10 ffffffff ffffffff ffffffff ffffffff ................
+ 1e20 ffffffff ffffffff ffffffff ffffffff ................
+ 1e30 ffffffff ffffffff ffffffff ffffffff ................
+ 1e40 ffffffff ffffffff ffffffff ffffffff ................
+ 1e50 ffffffff ffffffff ffffffff ffffffff ................
+ 1e60 ffffffff ffffffff ffffffff ffffffff ................
+ 1e70 ffffffff ffffffff ffffffff ffffffff ................
+ 1e80 ffffffff ffffffff ffffffff ffffffff ................
+ 1e90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ea0 ffffffff ffffffff ffffffff ffffffff ................
+ 1eb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ec0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ed0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ee0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ef0 ffffffff ffffffff ffffffff ffffffff ................
+ 1f00 ffffffff ffffffff ffffffff ffffffff ................
+ 1f10 ffffffff ffffffff ffffffff ffffffff ................
+ 1f20 ffffffff ffffffff ffffffff ffffffff ................
+ 1f30 ffffffff ffffffff ffffffff ffffffff ................
+ 1f40 ffffffff ffffffff ffffffff ffffffff ................
+ 1f50 ffffffff ffffffff ffffffff ffffffff ................
+ 1f60 ffffffff ffffffff ffffffff ffffffff ................
+ 1f70 ffffffff ffffffff ffffffff ffffffff ................
+ 1f80 ffffffff ffffffff ffffffff ffffffff ................
+ 1f90 ffffffff ffffffff ffffffff ffffffff ................
+ 1fa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fe0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ff0 ffffffff ffffffff 434f4445 deadbeef ........CODE....
+ 2000 00000000 00000000 9336eaa9 ebe1f042 .........6.....B
+ 2010 266dd453 d7c3e185 b55b3efa 3c2211c7 &m.S.....[>.<"..
+ 2020 dfec420e 45663349 4cdaa8a7 ae87c30b ..B.Ef3IL.......
+ 2030 f981965d 92a5d2cc 6ab77cf4 7944228e ...]....j.|.yD".
+ 2040 bed9851c 8acc6692 2def6fb5 612d96d0 ......f.-.o.a-..
+ 2050 98b4514f 5d0f8717 0b82bbe6 b6ee7755 ..QO].........wU
+ 2060 6135c712 cfaa55db f2032dbb 244ba599 a5....U...-.$K..
+ 2070 47581341 1869b45e d46ef9e8 f388441c GX.A.i.^.n....D.
+ 2080 ef85e190 ff783d66 7cb30b39 1499cd24 .....x=f|..9...$
+ 2090 c9e835c3 28bbdce3 5adedf6a c35a2ca1 ..5.(...Z..j.Z,.
+ 20a0 3069a39e ba1e0e2f a35f4937 51fffe6d 0i...../._I7Q..m
+ 20b0 160477cd 6dddefaa 85329d64 863c1fe8 ..w.m....2.d.<..
+ 20c0 515c648c 75b45bf4 c26a8e25 9e55abb6 Q\d.u.[..j.%.U..
+ 20d0 7731b0df a277ba71 e4075a76 49964a33 w1...w.q..ZvI.J3
+ 20e0 8eb02682 30d268bd 1d86cc2b db3398ff ..&.0.h....+.3..
+ 20f0 a8ddf2d1 e7118938 3beb1878 0cf0797a .......8;..x..yz
+ 2100 de0bc321 fff17acc 4d3d2988 14108a8e ...!..z.M=).....
+ 2110 f8661772 28329b49 6b50fddb c3d36b0b .f.r(2.IkP....k.
+ 2120 01e7812f ba974985 92d16b86 5176b9c7 .../..I...k.Qv..
+ 2130 278a557c 6d54a800 b4bcbfd5 86b55842 '.U|mT........XB
+ 2140 60d2463d 753d1c5e f3e4ac94 9edcec1c `.F=u=.^........
+ 2150 46bf926e a2fefddb d58978c7 491f0d99 F..n......x.I...
+ 2160 bf3e0433 305b2f17 2c08ee9a dbbadf55 .>.30[/.,......U
+ 2170 9953d060 e798ce92 0a653ac9 0c793ed0 .S.`.....e:..y>.
+ 2180 318e22b1 008947aa a2b8c818 eb68b7e8 1."...G......h..
+ 2190 17e3f6e2 d74aa62f 84d51c4b 3cab566d .....J./...K<.Vm
+ 21a0 ee6260bf 45ef74e3 7d548a16 ae0e84a1 .b`.E.t.}T......
+ 21b0 c80fb4ec 922c9566 5b395e45 79cd6524 .....,.f[9^Ey.e$
+ 21c0 8f57a7ad 8a452138 1c614d04 61a4d17a .W...E!8.aM.a..z
+ 21d0 a93a73fe 5d86c0bd 3a0c9957 b66730ff .:s.]...:..W.g0.
+ 21e0 50bbe5a3 cf231271 c38d0f0a 24c2e233 P....#.q....$..3
+ 21f0 76d631f0 18e0f3f4 e5e0db59 f30103b6 v.1........Y....
+ 2200 2f216cea 150205da bc178643 fee3f598 /!l........C....
+ 2210 094cb8b9 c2c1e45f 9a7a5210 2920141d .L....._.zR.) ..
+ 2220 f0cd2ee4 50643693 63fbc44d bb85c6d1 ....Pd6.c..M....
+ 2230 d6a0fab7 87a7d716 4596101e 6c462754 ........E...lF'T
+ 2240 91f8e9f6 9fce6348 02ce035f 742f930a ......cH..._t/..
+ 2250 b7953da5 480d82cd 24a3d70c a3ec728f ..=.H...$.....r.
+ 2260 4e14abf8 daa85001 dd224151 3149a043 N.....P.."AQ1I.C
+ 2270 68797fab 0d6bb184 fb4f9502 e68a41c6 hy...k...O....A.
+ 2280 c0a48d7a ea7a38bc 539267d3 019bc8fe ...z.z8.S.g.....
+ 2290 e6c95929 3db9d939 75ffb380 d658297b ..Y)=..9u....X){
+ 22a0 1f48cf74 af1c0bf5 8c7e25dd 44fdfbb7 .H.t.....~%.D...
+ 22b0 39251b27 78dfea70 aa13f18e 933e1a32 9%.'x..p.....>.2
+ 22c0 7e7d0866 60b65e2e ed4be2cf 8b57ae6c ~}.f`.^..K...W.l
+ 22d0 5810dc35 b775bfab cb26369c 5c944fe9 X..5.u...&6.\.O.
+ 22e0 a1914a68 25d06d67 32a7a0c1 ce319d25 ..Jh%.mg2....1.%
+ 22f0 87fc9e3b f2138ce2 14ca7492 19f27ca0 ...;......t...|.
+ 2300 f12aafcb eaf37f16 621c4562 01128f54 .*......b.Eb...T
+ 2310 d7477b98 3d309e93 44719131 d6d16ed1 .G{.=0..Dq.1..n.
+ 2320 2ec6edc5 af954c5f bdf0076c 4474bc1d ......L_...lDt..
+ 2330 08ab3996 7856adda 9b9dd33f 93b75d98 ..9.xV.....?..].
+ 2340 4ff32ad7 603f1984 dcc5c07e 8bdee9c6 O.*.`?.....~....
+ 2350 699efe84 b7fcf801 faa8142d 5c1d0843 i..........-\..C
+ 2360 901f68d9 25592acd 03298270 ceb8da8f ..h.%Y*..).p....
+ 2370 b672bc8a f29acb48 25445623 197b3b0a .r.....H%DV#.{;.
+ 2380 1eaf4e5b 158b4270 8d99a4f2 fe6ab232 ..N[..Bp.....j.2
+ 2390 38c29a08 c248a3f5 abf470a1 29a953b7 8....H....p.).S.
+ 23a0 c1430c55 50ed7139 5275e6fc bb0c817b .C.UP.q9Ru.....{
+ 23b0 e72ed806 872e90bc 741832af 6ccf60fe ........t.2.l.`.
+ 23c0 a076cb47 9f4724e2 334021ee 74a6d4a0 .v.G.G$.3@!.t...
+ 23d0 861b1f14 4884c567 152df5bd a3653525 ....H..g.-...e5%
+ 23e0 7f9a8949 da2117ab ecac63e0 31c0e7e9 ...I.!....c.1...
+ 23f0 59f75d1a 0de2f62e cac1b7b3 e603066c Y.]............l
+ 2400 cd74327d c0e5faf6 5e42d8d4 2b040ab4 .t2}....^B..+...
+ 2410 eb19e62e 17261b73 782f0c87 fcc7eb31 .....&.sx/.....1
+ 2420 12987073 8583c9bf 81ae9ada 6e6239fd ..ps........nb9.
+ 2430 34f5a420 5240283a a7c34e89 b9a1d878 4.. R@(:..N....x
+ 2440 73adb761 4a299c64 e09b5dc8 a1c86c26 s..aJ).d..]...l&
+ 2450 55c06332 9dea7de1 c6f6899b 760b8da3 U.c2..}.....v...
+ 2460 ac41f56f 0f4faf2d 3f771fc6 e4ae5f6f .A.o.O.-?w...._o
+ 2470 8a2c213c d88c4ea8 191acb95 336dbeea .,!<..N.....3m..
+ 2480 22f1d3ed 3f9dc790 b1c73944 d47c37d2 "...?.....9D.|7.
+ 2490 049c07be e85e2615 97aaed17 03bfd657 .....^&........W
+ 24a0 fd1d91e3 7afbf4d9 6e2b7b4a 911a049b ....z...n+{J....
+ 24b0 db7045b0 ad38155c 4846af19 46d9e51e .pE..8.\HF..F...
+ 24c0 9c2856f1 b551a102 0f1ebc58 5eb05140 .(V..Q.....X^.Q@
+ 24d0 ba4582a2 62924087 2973680b 8973b0c5 .E..b.@.)sh..s..
+ 24e0 43c414ff f037924b d0f2fe56 1bd66209 C....7.K...V..b.
+ 24f0 65a9c0ac 27f473ce f69f2a05 cc15838c e...'.s...*.....
+ 2500 137ff15c 3f14803a 80491bf5 d4f57078 ...\?..:.I....px
+ 2510 3512250f e8d761bf a624cfa6 033691fd 5.%...a..$...6..
+ 2520 cc93b352 7a72b373 5fa559fb 91934331 ...Rzr.s_.Y...C1
+ 2530 eafe6701 adb152f6 79c88da8 4650a2b4 ..g...R.y...FP..
+ 2540 ada67440 b5d8e6a8 3e909ee9 5e3916ea ..t@....>...^9..
+ 2550 8bcba013 621b072d 18fd4aba 89faf76f ....b..-..J....o
+ 2560 724a364e f0bed5e1 e17cdce7 1b5f25a3 rJ6N.....|..._%.
+ 2570 5427e21d 277d3464 c71108b4 cc9cc426 T'..'}4d.......&
+ 2580 fcfa10cc c06cbd5c 6fccfa65 2b8d4d1e .....l.\o..e+.M.
+ 2590 da97c49f 17af5cd9 49a12e36 fc4eac9b ......\.I..6.N..
+ 25a0 231652c2 850a8e15 b020b86b 6eeb7e57 #.R...... .kn.~W
+ 25b0 057b8691 52c96f90 964d6c38 b9289fd2 .{..R.o..Ml8.(..
+ 25c0 422395d0 4aa0dbce d1157f79 a1412b8c B#..J......y.A+.
+ 25d0 644e4183 9d633a4b f778ab2a 7682ca09 dNA..c:K.x.*v...
+ 25e0 9dcfd7de 0fc6e887 0ef93d77 e42718c5 ..........=w.'..
+ 25f0 bba2038d d8050902 2894e924 33e4f940 ........(..$3..@
+ 2600 e2555e97 d5e7ff2c 7163b43e 3e060f6e .U^....,qc.>>..n
+ 2610 c4388ac4 02241ea9 570e606d e9c5eeeb .8...$..W.`m....
+ 2620 3db91c99 9081cc65 ae8ff630 7b603c27 =......e...0{`<'
+ 2630 1bd4c8ca 47422de0 88e22263 aca3dda2 ....GB-..."c....
+ 2640 5c8cdb8b 5f2b99be cfba3122 b4ca69fc \..._+....1"..i.
+ 2650 7ae10fd8 88e8783b e9d7e571 63098879 z.....x;...qc..y
+ 2660 83609985 1a4daaf7 1056732c f1ac5ab5 .`...M...Vs,..Z.
+ 2670 a50d4dd6 cd8e4b72 363ba77f 266fbb30 ..M...Kr6;..&o.0
+ 2680 0dd0bf07 2a9fc24a 9ee655ae c17e3208 ....*..J..U..~2.
+ 2690 2bbd6b54 fd5c23cf b88b81fd 16bdd38d +.kT.\#.........
+ 26a0 d23cfd09 6ff9f103 410a17a0 84180141 .<..o...A......A
+ 26b0 f451295a b83a1086 6767c3f3 53dbe0c4 .Q)Z.:..gg..S...
+ 26c0 b3093a1b a053a4d8 203fd0b2 4bb2549a ..:..S.. ?..K.T.
+ 26d0 9564ee48 7790455d 065204e1 9c71b51f .d.Hw.E].R...q..
+ 26e0 6ce57815 e5359791 ffd392bc 0ed467d3 l.x..5........g.
+ 26f0 4a88ac46 32f67614 d9be46ef d9178656 J..F2.v...F....V
+ 2700 3c5e9db6 2a1685e0 af68771f c1f775a2 <^..*....hw...u.
+ 2710 1a3349e5 fdd56465 8905a34c 16349427 .3I...de...L.4.'
+ 2720 e3b2dfb8 6f70b6a9 70843511 849146eb ....op..p.5...F.
+ 2730 c5df0beb b8b3572c 56e9e142 5352a76e ......W,V..BSR.n
+ 2740 828718aa a0dae372 11b1f203 4b3b1330 .......r....K;.0
+ 2750 a4eaccf9 771902f7 37dc2650 9cf8f2b5 ....w...7.&P....
+ 2760 5d6b5aa4 e5bcd03b ce5db00d 0e5d2079 ]kZ....;.]...] y
+ 2770 7b068ef7 327f31be e830645e d99ec1fc {...2.1..0d^....
+ 2780 d3db7c26 d56eb886 40ed968f 3e8f48c4 ..|&.n..@...>.H.
+ 2790 f5b6a875 02ad5903 668042dc e94ca941 ...u..Y.f.B..L.A
+ 27a0 0c373e28 90088bcf 9f01d481 7be97b8d .7>(........{.{.
+ 27b0 2a5aea7b 47cb6a4a b96c00d2 ac2a9a08 *Z.{G.jJ.l...*..
+ 27c0 6d02f93a 5fa2de14 fe341393 b4432e56 m..:_....4...C.V
+ 27d0 4b6f2d69 88613f91 d859c7c0 6380cfd3 Ko-i.a?..Y..c...
+ 27e0 b2eebb34 1ac4ed5d 21d8519d f1251d1f ...4...]!.Q..%..
+ 27f0 94836f67 cd070cd8 07b585ce 26e6fc9a ..og........&...
+ 2800 434f4445 deadbeef 00000000 00000000 CODE............
+#pass
diff --git a/ld/testsuite/ld-scripts/crc-ecma.s b/ld/testsuite/ld-scripts/crc-ecma.s
new file mode 100644
index 00000000000..704b492ae61
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-ecma.s
@@ -0,0 +1,9 @@
+ .extern ecc_start
+ .section .text
+main:
+ .long 0x45444F43
+ .long ecc_start
+ .section .data
+ .long 0x9abcdef0
+ .section .bss
+ .long 0
diff --git a/ld/testsuite/ld-scripts/crc-ecma.t b/ld/testsuite/ld-scripts/crc-ecma.t
new file mode 100644
index 00000000000..cd0893c1474
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-ecma.t
@@ -0,0 +1,41 @@
+MEMORY {
+ rom : ORIGIN = 0x000000, LENGTH = 0x400000
+ ram : ORIGIN = 0x400000, LENGTH = 0x10000
+}
+
+_start = 0x000000;
+SECTIONS
+{
+ . = 0x1000 + SIZEOF_HEADERS;
+ .text ALIGN (0x100) :
+
+ {
+ FILL(0xFF)
+ QUAD(0xEFBEADDE45444F43);
+ crc64 = .;
+ DEBUG OFF
+ CRC64 ECMA (ecc_start , ecc_end)
+ DEBUG OFF
+ ecc_start = .;
+ QUAD(ecc_start)
+ QUAD(ecc_end);
+ QUAD(ecc_end - ecc_start);
+ QUAD(0x45444F43EFBEADDE);
+ entry = .;
+ *(.text)
+ . = ALIGN(0x100);
+ BYTE(1)
+ . = ALIGN(4096) - 8;
+ QUAD(0xEFBEADDE45444F43);
+ CRC64 TABLE
+ QUAD(0xEFBEADDE45444F43);
+ QUAD(0);
+ ecc_end = .;
+ } > 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-iso.d b/ld/testsuite/ld-scripts/crc-iso.d
new file mode 100644
index 00000000000..7b9883b6e66
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-iso.d
@@ -0,0 +1,379 @@
+#source: crc.s
+#ld: -T crc-iso.t
+#objdump: -s -j .text
+#notarget: [is_aout_format]
+#xfail: tic4x-*-* tic54x-*-*
+
+.*: file format .*
+
+Contents of section .text:
+ 1100 434f4445 deadbeef 00000000 000000a8 CODE............
+ 1110 10110000 00000000 10280000 00000000 .........(......
+ 1120 00170000 00000000 deadbeef 434f4445 ............CODE
+ 1130 434f4445 10110000 ffffffff ffffffff CODE............
+ 1140 ffffffff ffffffff ffffffff ffffffff ................
+ 1150 ffffffff ffffffff ffffffff ffffffff ................
+ 1160 ffffffff ffffffff ffffffff ffffffff ................
+ 1170 ffffffff ffffffff ffffffff ffffffff ................
+ 1180 ffffffff ffffffff ffffffff ffffffff ................
+ 1190 ffffffff ffffffff ffffffff ffffffff ................
+ 11a0 ffffffff ffffffff ffffffff ffffffff ................
+ 11b0 ffffffff ffffffff ffffffff ffffffff ................
+ 11c0 ffffffff ffffffff ffffffff ffffffff ................
+ 11d0 ffffffff ffffffff ffffffff ffffffff ................
+ 11e0 ffffffff ffffffff ffffffff ffffffff ................
+ 11f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1200 01ffffff ffffffff ffffffff ffffffff ................
+ 1210 ffffffff ffffffff ffffffff ffffffff ................
+ 1220 ffffffff ffffffff ffffffff ffffffff ................
+ 1230 ffffffff ffffffff ffffffff ffffffff ................
+ 1240 ffffffff ffffffff ffffffff ffffffff ................
+ 1250 ffffffff ffffffff ffffffff ffffffff ................
+ 1260 ffffffff ffffffff ffffffff ffffffff ................
+ 1270 ffffffff ffffffff ffffffff ffffffff ................
+ 1280 ffffffff ffffffff ffffffff ffffffff ................
+ 1290 ffffffff ffffffff ffffffff ffffffff ................
+ 12a0 ffffffff ffffffff ffffffff ffffffff ................
+ 12b0 ffffffff ffffffff ffffffff ffffffff ................
+ 12c0 ffffffff ffffffff ffffffff ffffffff ................
+ 12d0 ffffffff ffffffff ffffffff ffffffff ................
+ 12e0 ffffffff ffffffff ffffffff ffffffff ................
+ 12f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1300 ffffffff ffffffff ffffffff ffffffff ................
+ 1310 ffffffff ffffffff ffffffff ffffffff ................
+ 1320 ffffffff ffffffff ffffffff ffffffff ................
+ 1330 ffffffff ffffffff ffffffff ffffffff ................
+ 1340 ffffffff ffffffff ffffffff ffffffff ................
+ 1350 ffffffff ffffffff ffffffff ffffffff ................
+ 1360 ffffffff ffffffff ffffffff ffffffff ................
+ 1370 ffffffff ffffffff ffffffff ffffffff ................
+ 1380 ffffffff ffffffff ffffffff ffffffff ................
+ 1390 ffffffff ffffffff ffffffff ffffffff ................
+ 13a0 ffffffff ffffffff ffffffff ffffffff ................
+ 13b0 ffffffff ffffffff ffffffff ffffffff ................
+ 13c0 ffffffff ffffffff ffffffff ffffffff ................
+ 13d0 ffffffff ffffffff ffffffff ffffffff ................
+ 13e0 ffffffff ffffffff ffffffff ffffffff ................
+ 13f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1400 ffffffff ffffffff ffffffff ffffffff ................
+ 1410 ffffffff ffffffff ffffffff ffffffff ................
+ 1420 ffffffff ffffffff ffffffff ffffffff ................
+ 1430 ffffffff ffffffff ffffffff ffffffff ................
+ 1440 ffffffff ffffffff ffffffff ffffffff ................
+ 1450 ffffffff ffffffff ffffffff ffffffff ................
+ 1460 ffffffff ffffffff ffffffff ffffffff ................
+ 1470 ffffffff ffffffff ffffffff ffffffff ................
+ 1480 ffffffff ffffffff ffffffff ffffffff ................
+ 1490 ffffffff ffffffff ffffffff ffffffff ................
+ 14a0 ffffffff ffffffff ffffffff ffffffff ................
+ 14b0 ffffffff ffffffff ffffffff ffffffff ................
+ 14c0 ffffffff ffffffff ffffffff ffffffff ................
+ 14d0 ffffffff ffffffff ffffffff ffffffff ................
+ 14e0 ffffffff ffffffff ffffffff ffffffff ................
+ 14f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1500 ffffffff ffffffff ffffffff ffffffff ................
+ 1510 ffffffff ffffffff ffffffff ffffffff ................
+ 1520 ffffffff ffffffff ffffffff ffffffff ................
+ 1530 ffffffff ffffffff ffffffff ffffffff ................
+ 1540 ffffffff ffffffff ffffffff ffffffff ................
+ 1550 ffffffff ffffffff ffffffff ffffffff ................
+ 1560 ffffffff ffffffff ffffffff ffffffff ................
+ 1570 ffffffff ffffffff ffffffff ffffffff ................
+ 1580 ffffffff ffffffff ffffffff ffffffff ................
+ 1590 ffffffff ffffffff ffffffff ffffffff ................
+ 15a0 ffffffff ffffffff ffffffff ffffffff ................
+ 15b0 ffffffff ffffffff ffffffff ffffffff ................
+ 15c0 ffffffff ffffffff ffffffff ffffffff ................
+ 15d0 ffffffff ffffffff ffffffff ffffffff ................
+ 15e0 ffffffff ffffffff ffffffff ffffffff ................
+ 15f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1600 ffffffff ffffffff ffffffff ffffffff ................
+ 1610 ffffffff ffffffff ffffffff ffffffff ................
+ 1620 ffffffff ffffffff ffffffff ffffffff ................
+ 1630 ffffffff ffffffff ffffffff ffffffff ................
+ 1640 ffffffff ffffffff ffffffff ffffffff ................
+ 1650 ffffffff ffffffff ffffffff ffffffff ................
+ 1660 ffffffff ffffffff ffffffff ffffffff ................
+ 1670 ffffffff ffffffff ffffffff ffffffff ................
+ 1680 ffffffff ffffffff ffffffff ffffffff ................
+ 1690 ffffffff ffffffff ffffffff ffffffff ................
+ 16a0 ffffffff ffffffff ffffffff ffffffff ................
+ 16b0 ffffffff ffffffff ffffffff ffffffff ................
+ 16c0 ffffffff ffffffff ffffffff ffffffff ................
+ 16d0 ffffffff ffffffff ffffffff ffffffff ................
+ 16e0 ffffffff ffffffff ffffffff ffffffff ................
+ 16f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1700 ffffffff ffffffff ffffffff ffffffff ................
+ 1710 ffffffff ffffffff ffffffff ffffffff ................
+ 1720 ffffffff ffffffff ffffffff ffffffff ................
+ 1730 ffffffff ffffffff ffffffff ffffffff ................
+ 1740 ffffffff ffffffff ffffffff ffffffff ................
+ 1750 ffffffff ffffffff ffffffff ffffffff ................
+ 1760 ffffffff ffffffff ffffffff ffffffff ................
+ 1770 ffffffff ffffffff ffffffff ffffffff ................
+ 1780 ffffffff ffffffff ffffffff ffffffff ................
+ 1790 ffffffff ffffffff ffffffff ffffffff ................
+ 17a0 ffffffff ffffffff ffffffff ffffffff ................
+ 17b0 ffffffff ffffffff ffffffff ffffffff ................
+ 17c0 ffffffff ffffffff ffffffff ffffffff ................
+ 17d0 ffffffff ffffffff ffffffff ffffffff ................
+ 17e0 ffffffff ffffffff ffffffff ffffffff ................
+ 17f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1800 ffffffff ffffffff ffffffff ffffffff ................
+ 1810 ffffffff ffffffff ffffffff ffffffff ................
+ 1820 ffffffff ffffffff ffffffff ffffffff ................
+ 1830 ffffffff ffffffff ffffffff ffffffff ................
+ 1840 ffffffff ffffffff ffffffff ffffffff ................
+ 1850 ffffffff ffffffff ffffffff ffffffff ................
+ 1860 ffffffff ffffffff ffffffff ffffffff ................
+ 1870 ffffffff ffffffff ffffffff ffffffff ................
+ 1880 ffffffff ffffffff ffffffff ffffffff ................
+ 1890 ffffffff ffffffff ffffffff ffffffff ................
+ 18a0 ffffffff ffffffff ffffffff ffffffff ................
+ 18b0 ffffffff ffffffff ffffffff ffffffff ................
+ 18c0 ffffffff ffffffff ffffffff ffffffff ................
+ 18d0 ffffffff ffffffff ffffffff ffffffff ................
+ 18e0 ffffffff ffffffff ffffffff ffffffff ................
+ 18f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1900 ffffffff ffffffff ffffffff ffffffff ................
+ 1910 ffffffff ffffffff ffffffff ffffffff ................
+ 1920 ffffffff ffffffff ffffffff ffffffff ................
+ 1930 ffffffff ffffffff ffffffff ffffffff ................
+ 1940 ffffffff ffffffff ffffffff ffffffff ................
+ 1950 ffffffff ffffffff ffffffff ffffffff ................
+ 1960 ffffffff ffffffff ffffffff ffffffff ................
+ 1970 ffffffff ffffffff ffffffff ffffffff ................
+ 1980 ffffffff ffffffff ffffffff ffffffff ................
+ 1990 ffffffff ffffffff ffffffff ffffffff ................
+ 19a0 ffffffff ffffffff ffffffff ffffffff ................
+ 19b0 ffffffff ffffffff ffffffff ffffffff ................
+ 19c0 ffffffff ffffffff ffffffff ffffffff ................
+ 19d0 ffffffff ffffffff ffffffff ffffffff ................
+ 19e0 ffffffff ffffffff ffffffff ffffffff ................
+ 19f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1a00 ffffffff ffffffff ffffffff ffffffff ................
+ 1a10 ffffffff ffffffff ffffffff ffffffff ................
+ 1a20 ffffffff ffffffff ffffffff ffffffff ................
+ 1a30 ffffffff ffffffff ffffffff ffffffff ................
+ 1a40 ffffffff ffffffff ffffffff ffffffff ................
+ 1a50 ffffffff ffffffff ffffffff ffffffff ................
+ 1a60 ffffffff ffffffff ffffffff ffffffff ................
+ 1a70 ffffffff ffffffff ffffffff ffffffff ................
+ 1a80 ffffffff ffffffff ffffffff ffffffff ................
+ 1a90 ffffffff ffffffff ffffffff ffffffff ................
+ 1aa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ab0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ac0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ad0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ae0 ffffffff ffffffff ffffffff ffffffff ................
+ 1af0 ffffffff ffffffff ffffffff ffffffff ................
+ 1b00 ffffffff ffffffff ffffffff ffffffff ................
+ 1b10 ffffffff ffffffff ffffffff ffffffff ................
+ 1b20 ffffffff ffffffff ffffffff ffffffff ................
+ 1b30 ffffffff ffffffff ffffffff ffffffff ................
+ 1b40 ffffffff ffffffff ffffffff ffffffff ................
+ 1b50 ffffffff ffffffff ffffffff ffffffff ................
+ 1b60 ffffffff ffffffff ffffffff ffffffff ................
+ 1b70 ffffffff ffffffff ffffffff ffffffff ................
+ 1b80 ffffffff ffffffff ffffffff ffffffff ................
+ 1b90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ba0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1be0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1c00 ffffffff ffffffff ffffffff ffffffff ................
+ 1c10 ffffffff ffffffff ffffffff ffffffff ................
+ 1c20 ffffffff ffffffff ffffffff ffffffff ................
+ 1c30 ffffffff ffffffff ffffffff ffffffff ................
+ 1c40 ffffffff ffffffff ffffffff ffffffff ................
+ 1c50 ffffffff ffffffff ffffffff ffffffff ................
+ 1c60 ffffffff ffffffff ffffffff ffffffff ................
+ 1c70 ffffffff ffffffff ffffffff ffffffff ................
+ 1c80 ffffffff ffffffff ffffffff ffffffff ................
+ 1c90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ca0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ce0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1d00 ffffffff ffffffff ffffffff ffffffff ................
+ 1d10 ffffffff ffffffff ffffffff ffffffff ................
+ 1d20 ffffffff ffffffff ffffffff ffffffff ................
+ 1d30 ffffffff ffffffff ffffffff ffffffff ................
+ 1d40 ffffffff ffffffff ffffffff ffffffff ................
+ 1d50 ffffffff ffffffff ffffffff ffffffff ................
+ 1d60 ffffffff ffffffff ffffffff ffffffff ................
+ 1d70 ffffffff ffffffff ffffffff ffffffff ................
+ 1d80 ffffffff ffffffff ffffffff ffffffff ................
+ 1d90 ffffffff ffffffff ffffffff ffffffff ................
+ 1da0 ffffffff ffffffff ffffffff ffffffff ................
+ 1db0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1de0 ffffffff ffffffff ffffffff ffffffff ................
+ 1df0 ffffffff ffffffff ffffffff ffffffff ................
+ 1e00 ffffffff ffffffff ffffffff ffffffff ................
+ 1e10 ffffffff ffffffff ffffffff ffffffff ................
+ 1e20 ffffffff ffffffff ffffffff ffffffff ................
+ 1e30 ffffffff ffffffff ffffffff ffffffff ................
+ 1e40 ffffffff ffffffff ffffffff ffffffff ................
+ 1e50 ffffffff ffffffff ffffffff ffffffff ................
+ 1e60 ffffffff ffffffff ffffffff ffffffff ................
+ 1e70 ffffffff ffffffff ffffffff ffffffff ................
+ 1e80 ffffffff ffffffff ffffffff ffffffff ................
+ 1e90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ea0 ffffffff ffffffff ffffffff ffffffff ................
+ 1eb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ec0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ed0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ee0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ef0 ffffffff ffffffff ffffffff ffffffff ................
+ 1f00 ffffffff ffffffff ffffffff ffffffff ................
+ 1f10 ffffffff ffffffff ffffffff ffffffff ................
+ 1f20 ffffffff ffffffff ffffffff ffffffff ................
+ 1f30 ffffffff ffffffff ffffffff ffffffff ................
+ 1f40 ffffffff ffffffff ffffffff ffffffff ................
+ 1f50 ffffffff ffffffff ffffffff ffffffff ................
+ 1f60 ffffffff ffffffff ffffffff ffffffff ................
+ 1f70 ffffffff ffffffff ffffffff ffffffff ................
+ 1f80 ffffffff ffffffff ffffffff ffffffff ................
+ 1f90 ffffffff ffffffff ffffffff ffffffff ................
+ 1fa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fe0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ff0 ffffffff ffffffff 434f4445 deadbeef ........CODE....
+ 2000 00000000 00000000 00000000 000000d8 ................
+ 2010 00000000 00000068 00000000 000000b0 .......h........
+ 2020 00000000 000000d0 00000000 00000008 ................
+ 2030 00000000 000000b8 00000000 00000060 ...............`
+ 2040 00000000 00000078 00000000 000000a0 .......x........
+ 2050 00000000 00000010 00000000 000000c8 ................
+ 2060 00000000 000000a8 00000000 00000070 ...............p
+ 2070 00000000 000000c0 00000000 00000018 ................
+ 2080 00000000 000000f0 00000000 00000028 ...............(
+ 2090 00000000 00000098 00000000 00000040 ...............@
+ 20a0 00000000 00000020 00000000 000000f8 ....... ........
+ 20b0 00000000 00000048 00000000 00000090 .......H........
+ 20c0 00000000 00000088 00000000 00000050 ...............P
+ 20d0 00000000 000000e0 00000000 00000038 ...............8
+ 20e0 00000000 00000058 00000000 00000080 .......X........
+ 20f0 00000000 00000030 00000000 000000e8 .......0........
+ 2100 00000000 00000038 00000000 000000e0 .......8........
+ 2110 00000000 00000050 00000000 00000088 .......P........
+ 2120 00000000 000000e8 00000000 00000030 ...............0
+ 2130 00000000 00000080 00000000 00000058 ...............X
+ 2140 00000000 00000040 00000000 00000098 .......@........
+ 2150 00000000 00000028 00000000 000000f0 .......(........
+ 2160 00000000 00000090 00000000 00000048 ...............H
+ 2170 00000000 000000f8 00000000 00000020 ...............
+ 2180 00000000 000000c8 00000000 00000010 ................
+ 2190 00000000 000000a0 00000000 00000078 ...............x
+ 21a0 00000000 00000018 00000000 000000c0 ................
+ 21b0 00000000 00000070 00000000 000000a8 .......p........
+ 21c0 00000000 000000b0 00000000 00000068 ...............h
+ 21d0 00000000 000000d8 00000000 00000000 ................
+ 21e0 00000000 00000060 00000000 000000b8 .......`........
+ 21f0 00000000 00000008 00000000 000000d0 ................
+ 2200 00000000 00000070 00000000 000000a8 .......p........
+ 2210 00000000 00000018 00000000 000000c0 ................
+ 2220 00000000 000000a0 00000000 00000078 ...............x
+ 2230 00000000 000000c8 00000000 00000010 ................
+ 2240 00000000 00000008 00000000 000000d0 ................
+ 2250 00000000 00000060 00000000 000000b8 .......`........
+ 2260 00000000 000000d8 00000000 00000000 ................
+ 2270 00000000 000000b0 00000000 00000068 ...............h
+ 2280 00000000 00000080 00000000 00000058 ...............X
+ 2290 00000000 000000e8 00000000 00000030 ...............0
+ 22a0 00000000 00000050 00000000 00000088 .......P........
+ 22b0 00000000 00000038 00000000 000000e0 .......8........
+ 22c0 00000000 000000f8 00000000 00000020 ...............
+ 22d0 00000000 00000090 00000000 00000048 ...............H
+ 22e0 00000000 00000028 00000000 000000f0 .......(........
+ 22f0 00000000 00000040 00000000 00000098 .......@........
+ 2300 00000000 00000048 00000000 00000090 .......H........
+ 2310 00000000 00000020 00000000 000000f8 ....... ........
+ 2320 00000000 00000098 00000000 00000040 ...............@
+ 2330 00000000 000000f0 00000000 00000028 ...............(
+ 2340 00000000 00000030 00000000 000000e8 .......0........
+ 2350 00000000 00000058 00000000 00000080 .......X........
+ 2360 00000000 000000e0 00000000 00000038 ...............8
+ 2370 00000000 00000088 00000000 00000050 ...............P
+ 2380 00000000 000000b8 00000000 00000060 ...............`
+ 2390 00000000 000000d0 00000000 00000008 ................
+ 23a0 00000000 00000068 00000000 000000b0 .......h........
+ 23b0 00000000 00000000 00000000 000000d8 ................
+ 23c0 00000000 000000c0 00000000 00000018 ................
+ 23d0 00000000 000000a8 00000000 00000070 ...............p
+ 23e0 00000000 00000010 00000000 000000c8 ................
+ 23f0 00000000 00000078 00000000 000000a0 .......x........
+ 2400 00000000 000000e0 00000000 00000038 ...............8
+ 2410 00000000 00000088 00000000 00000050 ...............P
+ 2420 00000000 00000030 00000000 000000e8 .......0........
+ 2430 00000000 00000058 00000000 00000080 .......X........
+ 2440 00000000 00000098 00000000 00000040 ...............@
+ 2450 00000000 000000f0 00000000 00000028 ...............(
+ 2460 00000000 00000048 00000000 00000090 .......H........
+ 2470 00000000 00000020 00000000 000000f8 ....... ........
+ 2480 00000000 00000010 00000000 000000c8 ................
+ 2490 00000000 00000078 00000000 000000a0 .......x........
+ 24a0 00000000 000000c0 00000000 00000018 ................
+ 24b0 00000000 000000a8 00000000 00000070 ...............p
+ 24c0 00000000 00000068 00000000 000000b0 .......h........
+ 24d0 00000000 00000000 00000000 000000d8 ................
+ 24e0 00000000 000000b8 00000000 00000060 ...............`
+ 24f0 00000000 000000d0 00000000 00000008 ................
+ 2500 00000000 000000d8 00000000 00000000 ................
+ 2510 00000000 000000b0 00000000 00000068 ...............h
+ 2520 00000000 00000008 00000000 000000d0 ................
+ 2530 00000000 00000060 00000000 000000b8 .......`........
+ 2540 00000000 000000a0 00000000 00000078 ...............x
+ 2550 00000000 000000c8 00000000 00000010 ................
+ 2560 00000000 00000070 00000000 000000a8 .......p........
+ 2570 00000000 00000018 00000000 000000c0 ................
+ 2580 00000000 00000028 00000000 000000f0 .......(........
+ 2590 00000000 00000040 00000000 00000098 .......@........
+ 25a0 00000000 000000f8 00000000 00000020 ...............
+ 25b0 00000000 00000090 00000000 00000048 ...............H
+ 25c0 00000000 00000050 00000000 00000088 .......P........
+ 25d0 00000000 00000038 00000000 000000e0 .......8........
+ 25e0 00000000 00000080 00000000 00000058 ...............X
+ 25f0 00000000 000000e8 00000000 00000030 ...............0
+ 2600 00000000 00000090 00000000 00000048 ...............H
+ 2610 00000000 000000f8 00000000 00000020 ...............
+ 2620 00000000 00000040 00000000 00000098 .......@........
+ 2630 00000000 00000028 00000000 000000f0 .......(........
+ 2640 00000000 000000e8 00000000 00000030 ...............0
+ 2650 00000000 00000080 00000000 00000058 ...............X
+ 2660 00000000 00000038 00000000 000000e0 .......8........
+ 2670 00000000 00000050 00000000 00000088 .......P........
+ 2680 00000000 00000060 00000000 000000b8 .......`........
+ 2690 00000000 00000008 00000000 000000d0 ................
+ 26a0 00000000 000000b0 00000000 00000068 ...............h
+ 26b0 00000000 000000d8 00000000 00000000 ................
+ 26c0 00000000 00000018 00000000 000000c0 ................
+ 26d0 00000000 00000070 00000000 000000a8 .......p........
+ 26e0 00000000 000000c8 00000000 00000010 ................
+ 26f0 00000000 000000a0 00000000 00000078 ...............x
+ 2700 00000000 000000a8 00000000 00000070 ...............p
+ 2710 00000000 000000c0 00000000 00000018 ................
+ 2720 00000000 00000078 00000000 000000a0 .......x........
+ 2730 00000000 00000010 00000000 000000c8 ................
+ 2740 00000000 000000d0 00000000 00000008 ................
+ 2750 00000000 000000b8 00000000 00000060 ...............`
+ 2760 00000000 00000000 00000000 000000d8 ................
+ 2770 00000000 00000068 00000000 000000b0 .......h........
+ 2780 00000000 00000058 00000000 00000080 .......X........
+ 2790 00000000 00000030 00000000 000000e8 .......0........
+ 27a0 00000000 00000088 00000000 00000050 ...............P
+ 27b0 00000000 000000e0 00000000 00000038 ...............8
+ 27c0 00000000 00000020 00000000 000000f8 ....... ........
+ 27d0 00000000 00000048 00000000 00000090 .......H........
+ 27e0 00000000 000000f0 00000000 00000028 ...............(
+ 27f0 00000000 00000098 00000000 00000040 ...............@
+ 2800 434f4445 deadbeef 00000000 00000000 CODE............
+#pass
diff --git a/ld/testsuite/ld-scripts/crc-iso.s b/ld/testsuite/ld-scripts/crc-iso.s
new file mode 100644
index 00000000000..704b492ae61
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-iso.s
@@ -0,0 +1,9 @@
+ .extern ecc_start
+ .section .text
+main:
+ .long 0x45444F43
+ .long ecc_start
+ .section .data
+ .long 0x9abcdef0
+ .section .bss
+ .long 0
diff --git a/ld/testsuite/ld-scripts/crc-iso.t b/ld/testsuite/ld-scripts/crc-iso.t
new file mode 100644
index 00000000000..7d5914940ee
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-iso.t
@@ -0,0 +1,41 @@
+MEMORY {
+ rom : ORIGIN = 0x000000, LENGTH = 0x400000
+ ram : ORIGIN = 0x400000, LENGTH = 0x10000
+}
+
+_start = 0x000000;
+SECTIONS
+{
+ . = 0x1000 + SIZEOF_HEADERS;
+ .text ALIGN (0x100) :
+
+ {
+ FILL(0xFF)
+ QUAD(0xEFBEADDE45444F43);
+ crc64 = .;
+ DEBUG OFF
+ CRC64 ISO (ecc_start , ecc_end)
+ DEBUG OFF
+ ecc_start = .;
+ QUAD(ecc_start)
+ QUAD(ecc_end);
+ QUAD(ecc_end - ecc_start);
+ QUAD(0x45444F43EFBEADDE);
+ entry = .;
+ *(.text)
+ . = ALIGN(0x100);
+ BYTE(1)
+ . = ALIGN(4096) - 8;
+ QUAD(0xEFBEADDE45444F43);
+ CRC64 TABLE
+ QUAD(0xEFBEADDE45444F43);
+ QUAD(0);
+ ecc_end = .;
+ } > 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-poly.d b/ld/testsuite/ld-scripts/crc-poly.d
new file mode 100644
index 00000000000..b2406e124ef
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-poly.d
@@ -0,0 +1,379 @@
+#source: crc.s
+#ld: -T crc-poly.t
+#objdump: -s -j .text
+#notarget: [is_aout_format]
+#xfail: tic4x-*-* tic54x-*-*
+
+.*: file format .*
+
+Contents of section .text:
+ 1100 434f4445 deadbeef 5da495a3 927272b3 CODE....]....rr.
+ 1110 10110000 00000000 10280000 00000000 .........(......
+ 1120 00170000 00000000 deadbeef 434f4445 ............CODE
+ 1130 434f4445 10110000 ffffffff ffffffff CODE............
+ 1140 ffffffff ffffffff ffffffff ffffffff ................
+ 1150 ffffffff ffffffff ffffffff ffffffff ................
+ 1160 ffffffff ffffffff ffffffff ffffffff ................
+ 1170 ffffffff ffffffff ffffffff ffffffff ................
+ 1180 ffffffff ffffffff ffffffff ffffffff ................
+ 1190 ffffffff ffffffff ffffffff ffffffff ................
+ 11a0 ffffffff ffffffff ffffffff ffffffff ................
+ 11b0 ffffffff ffffffff ffffffff ffffffff ................
+ 11c0 ffffffff ffffffff ffffffff ffffffff ................
+ 11d0 ffffffff ffffffff ffffffff ffffffff ................
+ 11e0 ffffffff ffffffff ffffffff ffffffff ................
+ 11f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1200 01ffffff ffffffff ffffffff ffffffff ................
+ 1210 ffffffff ffffffff ffffffff ffffffff ................
+ 1220 ffffffff ffffffff ffffffff ffffffff ................
+ 1230 ffffffff ffffffff ffffffff ffffffff ................
+ 1240 ffffffff ffffffff ffffffff ffffffff ................
+ 1250 ffffffff ffffffff ffffffff ffffffff ................
+ 1260 ffffffff ffffffff ffffffff ffffffff ................
+ 1270 ffffffff ffffffff ffffffff ffffffff ................
+ 1280 ffffffff ffffffff ffffffff ffffffff ................
+ 1290 ffffffff ffffffff ffffffff ffffffff ................
+ 12a0 ffffffff ffffffff ffffffff ffffffff ................
+ 12b0 ffffffff ffffffff ffffffff ffffffff ................
+ 12c0 ffffffff ffffffff ffffffff ffffffff ................
+ 12d0 ffffffff ffffffff ffffffff ffffffff ................
+ 12e0 ffffffff ffffffff ffffffff ffffffff ................
+ 12f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1300 ffffffff ffffffff ffffffff ffffffff ................
+ 1310 ffffffff ffffffff ffffffff ffffffff ................
+ 1320 ffffffff ffffffff ffffffff ffffffff ................
+ 1330 ffffffff ffffffff ffffffff ffffffff ................
+ 1340 ffffffff ffffffff ffffffff ffffffff ................
+ 1350 ffffffff ffffffff ffffffff ffffffff ................
+ 1360 ffffffff ffffffff ffffffff ffffffff ................
+ 1370 ffffffff ffffffff ffffffff ffffffff ................
+ 1380 ffffffff ffffffff ffffffff ffffffff ................
+ 1390 ffffffff ffffffff ffffffff ffffffff ................
+ 13a0 ffffffff ffffffff ffffffff ffffffff ................
+ 13b0 ffffffff ffffffff ffffffff ffffffff ................
+ 13c0 ffffffff ffffffff ffffffff ffffffff ................
+ 13d0 ffffffff ffffffff ffffffff ffffffff ................
+ 13e0 ffffffff ffffffff ffffffff ffffffff ................
+ 13f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1400 ffffffff ffffffff ffffffff ffffffff ................
+ 1410 ffffffff ffffffff ffffffff ffffffff ................
+ 1420 ffffffff ffffffff ffffffff ffffffff ................
+ 1430 ffffffff ffffffff ffffffff ffffffff ................
+ 1440 ffffffff ffffffff ffffffff ffffffff ................
+ 1450 ffffffff ffffffff ffffffff ffffffff ................
+ 1460 ffffffff ffffffff ffffffff ffffffff ................
+ 1470 ffffffff ffffffff ffffffff ffffffff ................
+ 1480 ffffffff ffffffff ffffffff ffffffff ................
+ 1490 ffffffff ffffffff ffffffff ffffffff ................
+ 14a0 ffffffff ffffffff ffffffff ffffffff ................
+ 14b0 ffffffff ffffffff ffffffff ffffffff ................
+ 14c0 ffffffff ffffffff ffffffff ffffffff ................
+ 14d0 ffffffff ffffffff ffffffff ffffffff ................
+ 14e0 ffffffff ffffffff ffffffff ffffffff ................
+ 14f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1500 ffffffff ffffffff ffffffff ffffffff ................
+ 1510 ffffffff ffffffff ffffffff ffffffff ................
+ 1520 ffffffff ffffffff ffffffff ffffffff ................
+ 1530 ffffffff ffffffff ffffffff ffffffff ................
+ 1540 ffffffff ffffffff ffffffff ffffffff ................
+ 1550 ffffffff ffffffff ffffffff ffffffff ................
+ 1560 ffffffff ffffffff ffffffff ffffffff ................
+ 1570 ffffffff ffffffff ffffffff ffffffff ................
+ 1580 ffffffff ffffffff ffffffff ffffffff ................
+ 1590 ffffffff ffffffff ffffffff ffffffff ................
+ 15a0 ffffffff ffffffff ffffffff ffffffff ................
+ 15b0 ffffffff ffffffff ffffffff ffffffff ................
+ 15c0 ffffffff ffffffff ffffffff ffffffff ................
+ 15d0 ffffffff ffffffff ffffffff ffffffff ................
+ 15e0 ffffffff ffffffff ffffffff ffffffff ................
+ 15f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1600 ffffffff ffffffff ffffffff ffffffff ................
+ 1610 ffffffff ffffffff ffffffff ffffffff ................
+ 1620 ffffffff ffffffff ffffffff ffffffff ................
+ 1630 ffffffff ffffffff ffffffff ffffffff ................
+ 1640 ffffffff ffffffff ffffffff ffffffff ................
+ 1650 ffffffff ffffffff ffffffff ffffffff ................
+ 1660 ffffffff ffffffff ffffffff ffffffff ................
+ 1670 ffffffff ffffffff ffffffff ffffffff ................
+ 1680 ffffffff ffffffff ffffffff ffffffff ................
+ 1690 ffffffff ffffffff ffffffff ffffffff ................
+ 16a0 ffffffff ffffffff ffffffff ffffffff ................
+ 16b0 ffffffff ffffffff ffffffff ffffffff ................
+ 16c0 ffffffff ffffffff ffffffff ffffffff ................
+ 16d0 ffffffff ffffffff ffffffff ffffffff ................
+ 16e0 ffffffff ffffffff ffffffff ffffffff ................
+ 16f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1700 ffffffff ffffffff ffffffff ffffffff ................
+ 1710 ffffffff ffffffff ffffffff ffffffff ................
+ 1720 ffffffff ffffffff ffffffff ffffffff ................
+ 1730 ffffffff ffffffff ffffffff ffffffff ................
+ 1740 ffffffff ffffffff ffffffff ffffffff ................
+ 1750 ffffffff ffffffff ffffffff ffffffff ................
+ 1760 ffffffff ffffffff ffffffff ffffffff ................
+ 1770 ffffffff ffffffff ffffffff ffffffff ................
+ 1780 ffffffff ffffffff ffffffff ffffffff ................
+ 1790 ffffffff ffffffff ffffffff ffffffff ................
+ 17a0 ffffffff ffffffff ffffffff ffffffff ................
+ 17b0 ffffffff ffffffff ffffffff ffffffff ................
+ 17c0 ffffffff ffffffff ffffffff ffffffff ................
+ 17d0 ffffffff ffffffff ffffffff ffffffff ................
+ 17e0 ffffffff ffffffff ffffffff ffffffff ................
+ 17f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1800 ffffffff ffffffff ffffffff ffffffff ................
+ 1810 ffffffff ffffffff ffffffff ffffffff ................
+ 1820 ffffffff ffffffff ffffffff ffffffff ................
+ 1830 ffffffff ffffffff ffffffff ffffffff ................
+ 1840 ffffffff ffffffff ffffffff ffffffff ................
+ 1850 ffffffff ffffffff ffffffff ffffffff ................
+ 1860 ffffffff ffffffff ffffffff ffffffff ................
+ 1870 ffffffff ffffffff ffffffff ffffffff ................
+ 1880 ffffffff ffffffff ffffffff ffffffff ................
+ 1890 ffffffff ffffffff ffffffff ffffffff ................
+ 18a0 ffffffff ffffffff ffffffff ffffffff ................
+ 18b0 ffffffff ffffffff ffffffff ffffffff ................
+ 18c0 ffffffff ffffffff ffffffff ffffffff ................
+ 18d0 ffffffff ffffffff ffffffff ffffffff ................
+ 18e0 ffffffff ffffffff ffffffff ffffffff ................
+ 18f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1900 ffffffff ffffffff ffffffff ffffffff ................
+ 1910 ffffffff ffffffff ffffffff ffffffff ................
+ 1920 ffffffff ffffffff ffffffff ffffffff ................
+ 1930 ffffffff ffffffff ffffffff ffffffff ................
+ 1940 ffffffff ffffffff ffffffff ffffffff ................
+ 1950 ffffffff ffffffff ffffffff ffffffff ................
+ 1960 ffffffff ffffffff ffffffff ffffffff ................
+ 1970 ffffffff ffffffff ffffffff ffffffff ................
+ 1980 ffffffff ffffffff ffffffff ffffffff ................
+ 1990 ffffffff ffffffff ffffffff ffffffff ................
+ 19a0 ffffffff ffffffff ffffffff ffffffff ................
+ 19b0 ffffffff ffffffff ffffffff ffffffff ................
+ 19c0 ffffffff ffffffff ffffffff ffffffff ................
+ 19d0 ffffffff ffffffff ffffffff ffffffff ................
+ 19e0 ffffffff ffffffff ffffffff ffffffff ................
+ 19f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1a00 ffffffff ffffffff ffffffff ffffffff ................
+ 1a10 ffffffff ffffffff ffffffff ffffffff ................
+ 1a20 ffffffff ffffffff ffffffff ffffffff ................
+ 1a30 ffffffff ffffffff ffffffff ffffffff ................
+ 1a40 ffffffff ffffffff ffffffff ffffffff ................
+ 1a50 ffffffff ffffffff ffffffff ffffffff ................
+ 1a60 ffffffff ffffffff ffffffff ffffffff ................
+ 1a70 ffffffff ffffffff ffffffff ffffffff ................
+ 1a80 ffffffff ffffffff ffffffff ffffffff ................
+ 1a90 ffffffff ffffffff ffffffff ffffffff ................
+ 1aa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ab0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ac0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ad0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ae0 ffffffff ffffffff ffffffff ffffffff ................
+ 1af0 ffffffff ffffffff ffffffff ffffffff ................
+ 1b00 ffffffff ffffffff ffffffff ffffffff ................
+ 1b10 ffffffff ffffffff ffffffff ffffffff ................
+ 1b20 ffffffff ffffffff ffffffff ffffffff ................
+ 1b30 ffffffff ffffffff ffffffff ffffffff ................
+ 1b40 ffffffff ffffffff ffffffff ffffffff ................
+ 1b50 ffffffff ffffffff ffffffff ffffffff ................
+ 1b60 ffffffff ffffffff ffffffff ffffffff ................
+ 1b70 ffffffff ffffffff ffffffff ffffffff ................
+ 1b80 ffffffff ffffffff ffffffff ffffffff ................
+ 1b90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ba0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1be0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1c00 ffffffff ffffffff ffffffff ffffffff ................
+ 1c10 ffffffff ffffffff ffffffff ffffffff ................
+ 1c20 ffffffff ffffffff ffffffff ffffffff ................
+ 1c30 ffffffff ffffffff ffffffff ffffffff ................
+ 1c40 ffffffff ffffffff ffffffff ffffffff ................
+ 1c50 ffffffff ffffffff ffffffff ffffffff ................
+ 1c60 ffffffff ffffffff ffffffff ffffffff ................
+ 1c70 ffffffff ffffffff ffffffff ffffffff ................
+ 1c80 ffffffff ffffffff ffffffff ffffffff ................
+ 1c90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ca0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ce0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1d00 ffffffff ffffffff ffffffff ffffffff ................
+ 1d10 ffffffff ffffffff ffffffff ffffffff ................
+ 1d20 ffffffff ffffffff ffffffff ffffffff ................
+ 1d30 ffffffff ffffffff ffffffff ffffffff ................
+ 1d40 ffffffff ffffffff ffffffff ffffffff ................
+ 1d50 ffffffff ffffffff ffffffff ffffffff ................
+ 1d60 ffffffff ffffffff ffffffff ffffffff ................
+ 1d70 ffffffff ffffffff ffffffff ffffffff ................
+ 1d80 ffffffff ffffffff ffffffff ffffffff ................
+ 1d90 ffffffff ffffffff ffffffff ffffffff ................
+ 1da0 ffffffff ffffffff ffffffff ffffffff ................
+ 1db0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1de0 ffffffff ffffffff ffffffff ffffffff ................
+ 1df0 ffffffff ffffffff ffffffff ffffffff ................
+ 1e00 ffffffff ffffffff ffffffff ffffffff ................
+ 1e10 ffffffff ffffffff ffffffff ffffffff ................
+ 1e20 ffffffff ffffffff ffffffff ffffffff ................
+ 1e30 ffffffff ffffffff ffffffff ffffffff ................
+ 1e40 ffffffff ffffffff ffffffff ffffffff ................
+ 1e50 ffffffff ffffffff ffffffff ffffffff ................
+ 1e60 ffffffff ffffffff ffffffff ffffffff ................
+ 1e70 ffffffff ffffffff ffffffff ffffffff ................
+ 1e80 ffffffff ffffffff ffffffff ffffffff ................
+ 1e90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ea0 ffffffff ffffffff ffffffff ffffffff ................
+ 1eb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ec0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ed0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ee0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ef0 ffffffff ffffffff ffffffff ffffffff ................
+ 1f00 ffffffff ffffffff ffffffff ffffffff ................
+ 1f10 ffffffff ffffffff ffffffff ffffffff ................
+ 1f20 ffffffff ffffffff ffffffff ffffffff ................
+ 1f30 ffffffff ffffffff ffffffff ffffffff ................
+ 1f40 ffffffff ffffffff ffffffff ffffffff ................
+ 1f50 ffffffff ffffffff ffffffff ffffffff ................
+ 1f60 ffffffff ffffffff ffffffff ffffffff ................
+ 1f70 ffffffff ffffffff ffffffff ffffffff ................
+ 1f80 ffffffff ffffffff ffffffff ffffffff ................
+ 1f90 ffffffff ffffffff ffffffff ffffffff ................
+ 1fa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fe0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ff0 ffffffff ffffffff 434f4445 deadbeef ........CODE....
+ 2000 00000000 00000000 efbeadde efbeadde ................
+ 2010 31c3f663 30c3f663 de7d5bbd df7d5bbd 1..c0..c.}[..}[.
+ 2020 6286edc7 6086edc7 8d384019 8f384019 b...`....8@..8@.
+ 2030 53451ba4 50451ba4 bcfbb67a bffbb67a SE..PE.....z...z
+ 2040 2bb27651 2eb27651 c40cdb8f c10cdb8f +.vQ..vQ........
+ 2050 1a718032 1e718032 f5cf2dec f1cf2dec .q.2.q.2..-...-.
+ 2060 49349b96 4e349b96 a68a3648 a18a3648 I4..N4....6H..6H
+ 2070 78f76df5 7ef76df5 9749c02b 9149c02b x.m.~.m..I.+.I.+
+ 2080 5664eda2 5c64eda2 b9da407c b3da407c Vd..\d....@|..@|
+ 2090 67a71bc1 6ca71bc1 8819b61f 8319b61f g...l...........
+ 20a0 34e20065 3ce20065 db5cadbb d35cadbb 4..e<..e.\...\..
+ 20b0 0521f606 0c21f606 ea9f5bd8 e39f5bd8 .!...!....[...[.
+ 20c0 7dd69bf3 72d69bf3 9268362d 9d68362d }...r....h6-.h6-
+ 20d0 4c156d90 42156d90 a3abc04e adabc04e L.m.B.m....N...N
+ 20e0 1f507634 12507634 f0eedbea fdeedbea .Pv4.Pv4........
+ 20f0 2e938057 22938057 c12d2d89 cd2d2d89 ...W"..W.--..--.
+ 2100 4376779b 5676779b acc8da45 b9c8da45 Cvw.Vvw....E...E
+ 2110 72b581f8 66b581f8 9d0b2c26 890b2c26 r...f.....,&..,&
+ 2120 21f09a5c 36f09a5c ce4e3782 d94e3782 !..\6..\.N7..N7.
+ 2130 10336c3f 06336c3f ff8dc1e1 e98dc1e1 .3l?.3l?........
+ 2140 68c401ca 78c401ca 877aac14 977aac14 h...x....z...z..
+ 2150 5907f7a9 4807f7a9 b6b95a77 a7b95a77 Y...H.....Zw..Zw
+ 2160 0a42ec0d 1842ec0d e5fc41d3 f7fc41d3 .B...B....A...A.
+ 2170 3b811a6e 28811a6e d43fb7b0 c73fb7b0 ;..n(..n.?...?..
+ 2180 15129a39 0a129a39 faac37e7 e5ac37e7 ...9...9..7...7.
+ 2190 24d16c5a 3ad16c5a cb6fc184 d56fc184 $.lZ:.lZ.o...o..
+ 21a0 779477fe 6a9477fe 982ada20 852ada20 w.w.j.w..*. .*.
+ 21b0 4657819d 5a57819d a9e92c43 b5e92c43 FW..ZW....,C..,C
+ 21c0 3ea0ec68 24a0ec68 d11e41b6 cb1e41b6 >..h$..h..A...A.
+ 21d0 0f631a0b 14631a0b e0ddb7d5 fbddb7d5 .c...c..........
+ 21e0 5c2601af 442601af b398ac71 ab98ac71 \&..D&.....q...q
+ 21f0 6de5f7cc 74e5f7cc 825b5a12 9b5b5a12 m...t....[Z..[Z.
+ 2200 695243e8 425243e8 86ecee36 adecee36 iRC.BRC....6...6
+ 2210 5891b58b 7291b58b b72f1855 9d2f1855 X...r..../.U./.U
+ 2220 0bd4ae2f 22d4ae2f e46a03f1 cd6a03f1 .../"../.j...j..
+ 2230 3a17584c 1217584c d5a9f592 fda9f592 :.XL..XL........
+ 2240 42e035b9 6ce035b9 ad5e9867 835e9867 B.5.l.5..^.g.^.g
+ 2250 7323c3da 5c23c3da 9c9d6e04 b39d6e04 s#..\#....n...n.
+ 2260 2066d87e 0c66d87e cfd875a0 e3d875a0 f.~.f.~..u...u.
+ 2270 11a52e1d 3ca52e1d fe1b83c3 d31b83c3 ....<...........
+ 2280 3f36ae4a 1e36ae4a d0880394 f1880394 ?6.J.6.J........
+ 2290 0ef55829 2ef55829 e14bf5f7 c14bf5f7 ..X)..X).K...K..
+ 22a0 5db0438d 7eb0438d b20eee53 910eee53 ].C.~.C....S...S
+ 22b0 6c73b5ee 4e73b5ee 83cd1830 a1cd1830 ls..Ns.....0...0
+ 22c0 1484d81b 3084d81b fb3a75c5 df3a75c5 ....0....:u..:u.
+ 22d0 25472e78 00472e78 caf983a6 eff983a6 %G.x.G.x........
+ 22e0 760235dc 500235dc 99bc9802 bfbc9802 v.5.P.5.........
+ 22f0 47c1c3bf 60c1c3bf a87f6e61 8f7f6e61 G...`.....na..na
+ 2300 2a243473 14243473 c59a99ad fb9a99ad *$4s.$4s........
+ 2310 1be7c210 24e7c210 f4596fce cb596fce ....$....Yo..Yo.
+ 2320 48a2d9b4 74a2d9b4 a71c746a 9b1c746a H...t.....tj..tj
+ 2330 79612fd7 44612fd7 96df8209 abdf8209 ya/.Da/.........
+ 2340 01964222 3a964222 ee28effc d528effc ..B":.B".(...(..
+ 2350 3055b441 0a55b441 dfeb199f e5eb199f 0U.A.U.A........
+ 2360 6310afe5 5a10afe5 8cae023b b5ae023b c...Z......;...;
+ 2370 52d35986 6ad35986 bd6df458 856df458 R.Y.j.Y..m.X.m.X
+ 2380 7c40d9d1 4840d9d1 93fe740f a7fe740f |@..H@....t...t.
+ 2390 4d832fb2 78832fb2 a23d826c 973d826c M./.x./..=.l.=.l
+ 23a0 1ec63416 28c63416 f17899c8 c77899c8 ..4.(.4..x...x..
+ 23b0 2f05c275 1805c275 c0bb6fab f7bb6fab /..u...u..o...o.
+ 23c0 57f2af80 66f2af80 b84c025e 894c025e W...f....L.^.L.^
+ 23d0 663159e3 563159e3 898ff43d b98ff43d f1Y.V1Y....=...=
+ 23e0 35744247 06744247 dacaef99 e9caef99 5tBG.tBG........
+ 23f0 04b7b424 36b7b424 eb0919fa d90919fa ...$6..$........
+ 2400 3d1a2b0e 6a1a2b0e d2a486d0 85a486d0 =.+.j.+.........
+ 2410 0cd9dd6d 5ad9dd6d e36770b3 b56770b3 ...mZ..m.gp..gp.
+ 2420 5f9cc6c9 0a9cc6c9 b0226b17 e5226b17 _........"k.."k.
+ 2430 6e5f30aa 3a5f30aa 81e19d74 d5e19d74 n_0.:_0....t...t
+ 2440 16a85d5f 44a85d5f f916f081 ab16f081 ..]_D.]_........
+ 2450 276bab3c 746bab3c c8d506e2 9bd506e2 'k.<tk.<........
+ 2460 742eb098 242eb098 9b901d46 cb901d46 t...$......F...F
+ 2470 45ed46fb 14ed46fb aa53eb25 fb53eb25 E.F...F..S.%.S.%
+ 2480 6b7ec6ac 367ec6ac 84c06b72 d9c06b72 k~..6~....kr..kr
+ 2490 5abd30cf 06bd30cf b5039d11 e9039d11 Z.0...0.........
+ 24a0 09f82b6b 56f82b6b e64686b5 b94686b5 ..+kV.+k.F...F..
+ 24b0 383bdd08 663bdd08 d78570d6 898570d6 8;..f;....p...p.
+ 24c0 40ccb0fd 18ccb0fd af721d23 f7721d23 @........r.#.r.#
+ 24d0 710f469e 280f469e 9eb1eb40 c7b1eb40 q.F.(.F....@...@
+ 24e0 224a5d3a 784a5d3a cdf4f0e4 97f4f0e4 "J]:xJ]:........
+ 24f0 1389ab59 4889ab59 fc370687 a7370687 ...YH..Y.7...7..
+ 2500 7e6c5c95 3c6c5c95 91d2f14b d3d2f14b ~l\.<l\....K...K
+ 2510 4fafaaf6 0cafaaf6 a0110728 e3110728 O..........(...(
+ 2520 1ceab152 5ceab152 f3541c8c b3541c8c ...R\..R.T...T..
+ 2530 2d294731 6c294731 c297eaef 8397eaef -)G1l)G1........
+ 2540 55de2ac4 12de2ac4 ba60871a fd60871a U.*...*..`...`..
+ 2550 641ddca7 221ddca7 8ba37179 cda37179 d...".....qy..qy
+ 2560 3758c703 7258c703 d8e66add 9de66add 7X..rX....j...j.
+ 2570 069b3160 429b3160 e9259cbe ad259cbe ..1`B.1`.%...%..
+ 2580 2808b137 6008b137 c7b61ce9 8fb61ce9 (..7`..7........
+ 2590 19cb4754 50cb4754 f675ea8a bf75ea8a ..GTP.GT.u...u..
+ 25a0 4a8e5cf0 008e5cf0 a530f12e ef30f12e J.\...\..0...0..
+ 25b0 7b4daa93 304daa93 94f3074d dff3074d {M..0M.....M...M
+ 25c0 03bac766 4ebac766 ec046ab8 a1046ab8 ...fN..f..j...j.
+ 25d0 32793105 7e793105 ddc79cdb 91c79cdb 2y1.~y1.........
+ 25e0 613c2aa1 2e3c2aa1 8e82877f c182877f a<*..<*.........
+ 25f0 50ffdcc2 1effdcc2 bf41711c f141711c P........Aq..Aq.
+ 2600 544868e6 284868e6 bbf6c538 c7f6c538 THh.(Hh....8...8
+ 2610 658b9e85 188b9e85 8a35335b f735335b e........53[.53[
+ 2620 36ce8521 48ce8521 d97028ff a77028ff 6..!H..!.p(..p(.
+ 2630 070d7342 780d7342 e8b3de9c 97b3de9c ..sBx.sB........
+ 2640 7ffa1eb7 06fa1eb7 9044b369 e944b369 .........D.i.D.i
+ 2650 4e39e8d4 3639e8d4 a187450a d987450a N9..69....E...E.
+ 2660 1d7cf370 667cf370 f2c25eae 89c25eae .|.pf|.p..^...^.
+ 2670 2cbf0513 56bf0513 c301a8cd b901a8cd ,...V...........
+ 2680 022c8544 742c8544 ed92289a 9b92289a .,.Dt,.D..(...(.
+ 2690 33ef7327 44ef7327 dc51def9 ab51def9 3.s'D.s'.Q...Q..
+ 26a0 60aa6883 14aa6883 8f14c55d fb14c55d `.h...h....]...]
+ 26b0 51699ee0 24699ee0 bed7333e cbd7333e Qi..$i....3>..3>
+ 26c0 299ef315 5a9ef315 c6205ecb b5205ecb )...Z.... ^.. ^.
+ 26d0 185d0576 6a5d0576 f7e3a8a8 85e3a8a8 .].vj].v........
+ 26e0 4b181ed2 3a181ed2 a4a6b30c d5a6b30c K...:...........
+ 26f0 7adbe8b1 0adbe8b1 9565456f e565456f z........eEo.eEo
+ 2700 173e1f7d 7e3e1f7d f880b2a3 9180b2a3 .>.}~>.}........
+ 2710 26fde91e 4efde91e c94344c0 a14344c0 &...N....CD..CD.
+ 2720 75b8f2ba 1eb8f2ba 9a065f64 f1065f64 u........._d.._d
+ 2730 447b04d9 2e7b04d9 abc5a907 c1c5a907 D{...{..........
+ 2740 3c8c692c 508c692c d332c4f2 bf32c4f2 <.i,P.i,.2...2..
+ 2750 0d4f9f4f 604f9f4f e2f13291 8ff13291 .O.O`O.O..2...2.
+ 2760 5e0a84eb 300a84eb b1b42935 dfb42935 ^...0.....)5..)5
+ 2770 6fc97288 00c97288 8077df56 ef77df56 o.r...r..w.V.w.V
+ 2780 415af2df 225af2df aee45f01 cde45f01 AZ.."Z...._..._.
+ 2790 709904bc 129904bc 9f27a962 fd27a962 p........'.b.'.b
+ 27a0 23dc1f18 42dc1f18 cc62b2c6 ad62b2c6 #...B....b...b..
+ 27b0 121fe97b 721fe97b fda144a5 9da144a5 ...{r..{..D...D.
+ 27c0 6ae8848e 0ce8848e 85562950 e3562950 j........V)P.V)P
+ 27d0 5b2b72ed 3c2b72ed b495df33 d395df33 [+r.<+r....3...3
+ 27e0 086e6949 6c6e6949 e7d0c497 83d0c497 .niIlniI........
+ 27f0 39ad9f2a 5cad9f2a d61332f4 b31332f4 9..*\..*..2...2.
+ 2800 434f4445 deadbeef 00000000 00000000 CODE............
+#pass
diff --git a/ld/testsuite/ld-scripts/crc-poly.s b/ld/testsuite/ld-scripts/crc-poly.s
new file mode 100644
index 00000000000..704b492ae61
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-poly.s
@@ -0,0 +1,9 @@
+ .extern ecc_start
+ .section .text
+main:
+ .long 0x45444F43
+ .long ecc_start
+ .section .data
+ .long 0x9abcdef0
+ .section .bss
+ .long 0
diff --git a/ld/testsuite/ld-scripts/crc-poly.t b/ld/testsuite/ld-scripts/crc-poly.t
new file mode 100644
index 00000000000..c264712abc7
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-poly.t
@@ -0,0 +1,41 @@
+MEMORY {
+ rom : ORIGIN = 0x000000, LENGTH = 0x400000
+ ram : ORIGIN = 0x400000, LENGTH = 0x10000
+}
+
+_start = 0x000000;
+SECTIONS
+{
+ . = 0x1000 + SIZEOF_HEADERS;
+ .text ALIGN (0x100) :
+
+ {
+ FILL(0xFF)
+ QUAD(0xEFBEADDE45444F43);
+ crc64 = .;
+ DEBUG ON
+ CRC64 POLY(0xDEADBEEFDEADBEEF)(ecc_start , ecc_end)
+ DEBUG OFF
+ ecc_start = .;
+ QUAD(ecc_start)
+ QUAD(ecc_end);
+ QUAD(ecc_end - ecc_start);
+ QUAD(0x45444F43EFBEADDE);
+ entry = .;
+ *(.text)
+ . = ALIGN(0x100);
+ BYTE(1)
+ . = ALIGN(4096) - 8;
+ QUAD(0xEFBEADDE45444F43);
+ CRC64 TABLE
+ QUAD(0xEFBEADDE45444F43);
+ QUAD(0);
+ ecc_end = .;
+ } > 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-polyi.d b/ld/testsuite/ld-scripts/crc-polyi.d
new file mode 100644
index 00000000000..8942296578f
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-polyi.d
@@ -0,0 +1,379 @@
+#source: crc.s
+#ld: -T crc-polyi.t
+#objdump: -s -j .text
+#notarget: [is_aout_format]
+#xfail: tic4x-*-* tic54x-*-*
+
+.*: file format .*
+
+Contents of section .text:
+ 1100 434f4445 deadbeef b7f7857f d0d5802a CODE...........*
+ 1110 10110000 00000000 10280000 00000000 .........(......
+ 1120 00170000 00000000 deadbeef 434f4445 ............CODE
+ 1130 434f4445 10110000 ffffffff ffffffff CODE............
+ 1140 ffffffff ffffffff ffffffff ffffffff ................
+ 1150 ffffffff ffffffff ffffffff ffffffff ................
+ 1160 ffffffff ffffffff ffffffff ffffffff ................
+ 1170 ffffffff ffffffff ffffffff ffffffff ................
+ 1180 ffffffff ffffffff ffffffff ffffffff ................
+ 1190 ffffffff ffffffff ffffffff ffffffff ................
+ 11a0 ffffffff ffffffff ffffffff ffffffff ................
+ 11b0 ffffffff ffffffff ffffffff ffffffff ................
+ 11c0 ffffffff ffffffff ffffffff ffffffff ................
+ 11d0 ffffffff ffffffff ffffffff ffffffff ................
+ 11e0 ffffffff ffffffff ffffffff ffffffff ................
+ 11f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1200 01ffffff ffffffff ffffffff ffffffff ................
+ 1210 ffffffff ffffffff ffffffff ffffffff ................
+ 1220 ffffffff ffffffff ffffffff ffffffff ................
+ 1230 ffffffff ffffffff ffffffff ffffffff ................
+ 1240 ffffffff ffffffff ffffffff ffffffff ................
+ 1250 ffffffff ffffffff ffffffff ffffffff ................
+ 1260 ffffffff ffffffff ffffffff ffffffff ................
+ 1270 ffffffff ffffffff ffffffff ffffffff ................
+ 1280 ffffffff ffffffff ffffffff ffffffff ................
+ 1290 ffffffff ffffffff ffffffff ffffffff ................
+ 12a0 ffffffff ffffffff ffffffff ffffffff ................
+ 12b0 ffffffff ffffffff ffffffff ffffffff ................
+ 12c0 ffffffff ffffffff ffffffff ffffffff ................
+ 12d0 ffffffff ffffffff ffffffff ffffffff ................
+ 12e0 ffffffff ffffffff ffffffff ffffffff ................
+ 12f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1300 ffffffff ffffffff ffffffff ffffffff ................
+ 1310 ffffffff ffffffff ffffffff ffffffff ................
+ 1320 ffffffff ffffffff ffffffff ffffffff ................
+ 1330 ffffffff ffffffff ffffffff ffffffff ................
+ 1340 ffffffff ffffffff ffffffff ffffffff ................
+ 1350 ffffffff ffffffff ffffffff ffffffff ................
+ 1360 ffffffff ffffffff ffffffff ffffffff ................
+ 1370 ffffffff ffffffff ffffffff ffffffff ................
+ 1380 ffffffff ffffffff ffffffff ffffffff ................
+ 1390 ffffffff ffffffff ffffffff ffffffff ................
+ 13a0 ffffffff ffffffff ffffffff ffffffff ................
+ 13b0 ffffffff ffffffff ffffffff ffffffff ................
+ 13c0 ffffffff ffffffff ffffffff ffffffff ................
+ 13d0 ffffffff ffffffff ffffffff ffffffff ................
+ 13e0 ffffffff ffffffff ffffffff ffffffff ................
+ 13f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1400 ffffffff ffffffff ffffffff ffffffff ................
+ 1410 ffffffff ffffffff ffffffff ffffffff ................
+ 1420 ffffffff ffffffff ffffffff ffffffff ................
+ 1430 ffffffff ffffffff ffffffff ffffffff ................
+ 1440 ffffffff ffffffff ffffffff ffffffff ................
+ 1450 ffffffff ffffffff ffffffff ffffffff ................
+ 1460 ffffffff ffffffff ffffffff ffffffff ................
+ 1470 ffffffff ffffffff ffffffff ffffffff ................
+ 1480 ffffffff ffffffff ffffffff ffffffff ................
+ 1490 ffffffff ffffffff ffffffff ffffffff ................
+ 14a0 ffffffff ffffffff ffffffff ffffffff ................
+ 14b0 ffffffff ffffffff ffffffff ffffffff ................
+ 14c0 ffffffff ffffffff ffffffff ffffffff ................
+ 14d0 ffffffff ffffffff ffffffff ffffffff ................
+ 14e0 ffffffff ffffffff ffffffff ffffffff ................
+ 14f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1500 ffffffff ffffffff ffffffff ffffffff ................
+ 1510 ffffffff ffffffff ffffffff ffffffff ................
+ 1520 ffffffff ffffffff ffffffff ffffffff ................
+ 1530 ffffffff ffffffff ffffffff ffffffff ................
+ 1540 ffffffff ffffffff ffffffff ffffffff ................
+ 1550 ffffffff ffffffff ffffffff ffffffff ................
+ 1560 ffffffff ffffffff ffffffff ffffffff ................
+ 1570 ffffffff ffffffff ffffffff ffffffff ................
+ 1580 ffffffff ffffffff ffffffff ffffffff ................
+ 1590 ffffffff ffffffff ffffffff ffffffff ................
+ 15a0 ffffffff ffffffff ffffffff ffffffff ................
+ 15b0 ffffffff ffffffff ffffffff ffffffff ................
+ 15c0 ffffffff ffffffff ffffffff ffffffff ................
+ 15d0 ffffffff ffffffff ffffffff ffffffff ................
+ 15e0 ffffffff ffffffff ffffffff ffffffff ................
+ 15f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1600 ffffffff ffffffff ffffffff ffffffff ................
+ 1610 ffffffff ffffffff ffffffff ffffffff ................
+ 1620 ffffffff ffffffff ffffffff ffffffff ................
+ 1630 ffffffff ffffffff ffffffff ffffffff ................
+ 1640 ffffffff ffffffff ffffffff ffffffff ................
+ 1650 ffffffff ffffffff ffffffff ffffffff ................
+ 1660 ffffffff ffffffff ffffffff ffffffff ................
+ 1670 ffffffff ffffffff ffffffff ffffffff ................
+ 1680 ffffffff ffffffff ffffffff ffffffff ................
+ 1690 ffffffff ffffffff ffffffff ffffffff ................
+ 16a0 ffffffff ffffffff ffffffff ffffffff ................
+ 16b0 ffffffff ffffffff ffffffff ffffffff ................
+ 16c0 ffffffff ffffffff ffffffff ffffffff ................
+ 16d0 ffffffff ffffffff ffffffff ffffffff ................
+ 16e0 ffffffff ffffffff ffffffff ffffffff ................
+ 16f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1700 ffffffff ffffffff ffffffff ffffffff ................
+ 1710 ffffffff ffffffff ffffffff ffffffff ................
+ 1720 ffffffff ffffffff ffffffff ffffffff ................
+ 1730 ffffffff ffffffff ffffffff ffffffff ................
+ 1740 ffffffff ffffffff ffffffff ffffffff ................
+ 1750 ffffffff ffffffff ffffffff ffffffff ................
+ 1760 ffffffff ffffffff ffffffff ffffffff ................
+ 1770 ffffffff ffffffff ffffffff ffffffff ................
+ 1780 ffffffff ffffffff ffffffff ffffffff ................
+ 1790 ffffffff ffffffff ffffffff ffffffff ................
+ 17a0 ffffffff ffffffff ffffffff ffffffff ................
+ 17b0 ffffffff ffffffff ffffffff ffffffff ................
+ 17c0 ffffffff ffffffff ffffffff ffffffff ................
+ 17d0 ffffffff ffffffff ffffffff ffffffff ................
+ 17e0 ffffffff ffffffff ffffffff ffffffff ................
+ 17f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1800 ffffffff ffffffff ffffffff ffffffff ................
+ 1810 ffffffff ffffffff ffffffff ffffffff ................
+ 1820 ffffffff ffffffff ffffffff ffffffff ................
+ 1830 ffffffff ffffffff ffffffff ffffffff ................
+ 1840 ffffffff ffffffff ffffffff ffffffff ................
+ 1850 ffffffff ffffffff ffffffff ffffffff ................
+ 1860 ffffffff ffffffff ffffffff ffffffff ................
+ 1870 ffffffff ffffffff ffffffff ffffffff ................
+ 1880 ffffffff ffffffff ffffffff ffffffff ................
+ 1890 ffffffff ffffffff ffffffff ffffffff ................
+ 18a0 ffffffff ffffffff ffffffff ffffffff ................
+ 18b0 ffffffff ffffffff ffffffff ffffffff ................
+ 18c0 ffffffff ffffffff ffffffff ffffffff ................
+ 18d0 ffffffff ffffffff ffffffff ffffffff ................
+ 18e0 ffffffff ffffffff ffffffff ffffffff ................
+ 18f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1900 ffffffff ffffffff ffffffff ffffffff ................
+ 1910 ffffffff ffffffff ffffffff ffffffff ................
+ 1920 ffffffff ffffffff ffffffff ffffffff ................
+ 1930 ffffffff ffffffff ffffffff ffffffff ................
+ 1940 ffffffff ffffffff ffffffff ffffffff ................
+ 1950 ffffffff ffffffff ffffffff ffffffff ................
+ 1960 ffffffff ffffffff ffffffff ffffffff ................
+ 1970 ffffffff ffffffff ffffffff ffffffff ................
+ 1980 ffffffff ffffffff ffffffff ffffffff ................
+ 1990 ffffffff ffffffff ffffffff ffffffff ................
+ 19a0 ffffffff ffffffff ffffffff ffffffff ................
+ 19b0 ffffffff ffffffff ffffffff ffffffff ................
+ 19c0 ffffffff ffffffff ffffffff ffffffff ................
+ 19d0 ffffffff ffffffff ffffffff ffffffff ................
+ 19e0 ffffffff ffffffff ffffffff ffffffff ................
+ 19f0 ffffffff ffffffff ffffffff ffffffff ................
+ 1a00 ffffffff ffffffff ffffffff ffffffff ................
+ 1a10 ffffffff ffffffff ffffffff ffffffff ................
+ 1a20 ffffffff ffffffff ffffffff ffffffff ................
+ 1a30 ffffffff ffffffff ffffffff ffffffff ................
+ 1a40 ffffffff ffffffff ffffffff ffffffff ................
+ 1a50 ffffffff ffffffff ffffffff ffffffff ................
+ 1a60 ffffffff ffffffff ffffffff ffffffff ................
+ 1a70 ffffffff ffffffff ffffffff ffffffff ................
+ 1a80 ffffffff ffffffff ffffffff ffffffff ................
+ 1a90 ffffffff ffffffff ffffffff ffffffff ................
+ 1aa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ab0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ac0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ad0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ae0 ffffffff ffffffff ffffffff ffffffff ................
+ 1af0 ffffffff ffffffff ffffffff ffffffff ................
+ 1b00 ffffffff ffffffff ffffffff ffffffff ................
+ 1b10 ffffffff ffffffff ffffffff ffffffff ................
+ 1b20 ffffffff ffffffff ffffffff ffffffff ................
+ 1b30 ffffffff ffffffff ffffffff ffffffff ................
+ 1b40 ffffffff ffffffff ffffffff ffffffff ................
+ 1b50 ffffffff ffffffff ffffffff ffffffff ................
+ 1b60 ffffffff ffffffff ffffffff ffffffff ................
+ 1b70 ffffffff ffffffff ffffffff ffffffff ................
+ 1b80 ffffffff ffffffff ffffffff ffffffff ................
+ 1b90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ba0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1be0 ffffffff ffffffff ffffffff ffffffff ................
+ 1bf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1c00 ffffffff ffffffff ffffffff ffffffff ................
+ 1c10 ffffffff ffffffff ffffffff ffffffff ................
+ 1c20 ffffffff ffffffff ffffffff ffffffff ................
+ 1c30 ffffffff ffffffff ffffffff ffffffff ................
+ 1c40 ffffffff ffffffff ffffffff ffffffff ................
+ 1c50 ffffffff ffffffff ffffffff ffffffff ................
+ 1c60 ffffffff ffffffff ffffffff ffffffff ................
+ 1c70 ffffffff ffffffff ffffffff ffffffff ................
+ 1c80 ffffffff ffffffff ffffffff ffffffff ................
+ 1c90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ca0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ce0 ffffffff ffffffff ffffffff ffffffff ................
+ 1cf0 ffffffff ffffffff ffffffff ffffffff ................
+ 1d00 ffffffff ffffffff ffffffff ffffffff ................
+ 1d10 ffffffff ffffffff ffffffff ffffffff ................
+ 1d20 ffffffff ffffffff ffffffff ffffffff ................
+ 1d30 ffffffff ffffffff ffffffff ffffffff ................
+ 1d40 ffffffff ffffffff ffffffff ffffffff ................
+ 1d50 ffffffff ffffffff ffffffff ffffffff ................
+ 1d60 ffffffff ffffffff ffffffff ffffffff ................
+ 1d70 ffffffff ffffffff ffffffff ffffffff ................
+ 1d80 ffffffff ffffffff ffffffff ffffffff ................
+ 1d90 ffffffff ffffffff ffffffff ffffffff ................
+ 1da0 ffffffff ffffffff ffffffff ffffffff ................
+ 1db0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1dd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1de0 ffffffff ffffffff ffffffff ffffffff ................
+ 1df0 ffffffff ffffffff ffffffff ffffffff ................
+ 1e00 ffffffff ffffffff ffffffff ffffffff ................
+ 1e10 ffffffff ffffffff ffffffff ffffffff ................
+ 1e20 ffffffff ffffffff ffffffff ffffffff ................
+ 1e30 ffffffff ffffffff ffffffff ffffffff ................
+ 1e40 ffffffff ffffffff ffffffff ffffffff ................
+ 1e50 ffffffff ffffffff ffffffff ffffffff ................
+ 1e60 ffffffff ffffffff ffffffff ffffffff ................
+ 1e70 ffffffff ffffffff ffffffff ffffffff ................
+ 1e80 ffffffff ffffffff ffffffff ffffffff ................
+ 1e90 ffffffff ffffffff ffffffff ffffffff ................
+ 1ea0 ffffffff ffffffff ffffffff ffffffff ................
+ 1eb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ec0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ed0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ee0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ef0 ffffffff ffffffff ffffffff ffffffff ................
+ 1f00 ffffffff ffffffff ffffffff ffffffff ................
+ 1f10 ffffffff ffffffff ffffffff ffffffff ................
+ 1f20 ffffffff ffffffff ffffffff ffffffff ................
+ 1f30 ffffffff ffffffff ffffffff ffffffff ................
+ 1f40 ffffffff ffffffff ffffffff ffffffff ................
+ 1f50 ffffffff ffffffff ffffffff ffffffff ................
+ 1f60 ffffffff ffffffff ffffffff ffffffff ................
+ 1f70 ffffffff ffffffff ffffffff ffffffff ................
+ 1f80 ffffffff ffffffff ffffffff ffffffff ................
+ 1f90 ffffffff ffffffff ffffffff ffffffff ................
+ 1fa0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fb0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fc0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fd0 ffffffff ffffffff ffffffff ffffffff ................
+ 1fe0 ffffffff ffffffff ffffffff ffffffff ................
+ 1ff0 ffffffff ffffffff 434f4445 deadbeef ........CODE....
+ 2000 00000000 00000000 efbeadde efbeadde ................
+ 2010 31c3f663 30c3f663 de7d5bbd df7d5bbd 1..c0..c.}[..}[.
+ 2020 6286edc7 6086edc7 8d384019 8f384019 b...`....8@..8@.
+ 2030 53451ba4 50451ba4 bcfbb67a bffbb67a SE..PE.....z...z
+ 2040 2bb27651 2eb27651 c40cdb8f c10cdb8f +.vQ..vQ........
+ 2050 1a718032 1e718032 f5cf2dec f1cf2dec .q.2.q.2..-...-.
+ 2060 49349b96 4e349b96 a68a3648 a18a3648 I4..N4....6H..6H
+ 2070 78f76df5 7ef76df5 9749c02b 9149c02b x.m.~.m..I.+.I.+
+ 2080 5664eda2 5c64eda2 b9da407c b3da407c Vd..\d....@|..@|
+ 2090 67a71bc1 6ca71bc1 8819b61f 8319b61f g...l...........
+ 20a0 34e20065 3ce20065 db5cadbb d35cadbb 4..e<..e.\...\..
+ 20b0 0521f606 0c21f606 ea9f5bd8 e39f5bd8 .!...!....[...[.
+ 20c0 7dd69bf3 72d69bf3 9268362d 9d68362d }...r....h6-.h6-
+ 20d0 4c156d90 42156d90 a3abc04e adabc04e L.m.B.m....N...N
+ 20e0 1f507634 12507634 f0eedbea fdeedbea .Pv4.Pv4........
+ 20f0 2e938057 22938057 c12d2d89 cd2d2d89 ...W"..W.--..--.
+ 2100 4376779b 5676779b acc8da45 b9c8da45 Cvw.Vvw....E...E
+ 2110 72b581f8 66b581f8 9d0b2c26 890b2c26 r...f.....,&..,&
+ 2120 21f09a5c 36f09a5c ce4e3782 d94e3782 !..\6..\.N7..N7.
+ 2130 10336c3f 06336c3f ff8dc1e1 e98dc1e1 .3l?.3l?........
+ 2140 68c401ca 78c401ca 877aac14 977aac14 h...x....z...z..
+ 2150 5907f7a9 4807f7a9 b6b95a77 a7b95a77 Y...H.....Zw..Zw
+ 2160 0a42ec0d 1842ec0d e5fc41d3 f7fc41d3 .B...B....A...A.
+ 2170 3b811a6e 28811a6e d43fb7b0 c73fb7b0 ;..n(..n.?...?..
+ 2180 15129a39 0a129a39 faac37e7 e5ac37e7 ...9...9..7...7.
+ 2190 24d16c5a 3ad16c5a cb6fc184 d56fc184 $.lZ:.lZ.o...o..
+ 21a0 779477fe 6a9477fe 982ada20 852ada20 w.w.j.w..*. .*.
+ 21b0 4657819d 5a57819d a9e92c43 b5e92c43 FW..ZW....,C..,C
+ 21c0 3ea0ec68 24a0ec68 d11e41b6 cb1e41b6 >..h$..h..A...A.
+ 21d0 0f631a0b 14631a0b e0ddb7d5 fbddb7d5 .c...c..........
+ 21e0 5c2601af 442601af b398ac71 ab98ac71 \&..D&.....q...q
+ 21f0 6de5f7cc 74e5f7cc 825b5a12 9b5b5a12 m...t....[Z..[Z.
+ 2200 695243e8 425243e8 86ecee36 adecee36 iRC.BRC....6...6
+ 2210 5891b58b 7291b58b b72f1855 9d2f1855 X...r..../.U./.U
+ 2220 0bd4ae2f 22d4ae2f e46a03f1 cd6a03f1 .../"../.j...j..
+ 2230 3a17584c 1217584c d5a9f592 fda9f592 :.XL..XL........
+ 2240 42e035b9 6ce035b9 ad5e9867 835e9867 B.5.l.5..^.g.^.g
+ 2250 7323c3da 5c23c3da 9c9d6e04 b39d6e04 s#..\#....n...n.
+ 2260 2066d87e 0c66d87e cfd875a0 e3d875a0 f.~.f.~..u...u.
+ 2270 11a52e1d 3ca52e1d fe1b83c3 d31b83c3 ....<...........
+ 2280 3f36ae4a 1e36ae4a d0880394 f1880394 ?6.J.6.J........
+ 2290 0ef55829 2ef55829 e14bf5f7 c14bf5f7 ..X)..X).K...K..
+ 22a0 5db0438d 7eb0438d b20eee53 910eee53 ].C.~.C....S...S
+ 22b0 6c73b5ee 4e73b5ee 83cd1830 a1cd1830 ls..Ns.....0...0
+ 22c0 1484d81b 3084d81b fb3a75c5 df3a75c5 ....0....:u..:u.
+ 22d0 25472e78 00472e78 caf983a6 eff983a6 %G.x.G.x........
+ 22e0 760235dc 500235dc 99bc9802 bfbc9802 v.5.P.5.........
+ 22f0 47c1c3bf 60c1c3bf a87f6e61 8f7f6e61 G...`.....na..na
+ 2300 2a243473 14243473 c59a99ad fb9a99ad *$4s.$4s........
+ 2310 1be7c210 24e7c210 f4596fce cb596fce ....$....Yo..Yo.
+ 2320 48a2d9b4 74a2d9b4 a71c746a 9b1c746a H...t.....tj..tj
+ 2330 79612fd7 44612fd7 96df8209 abdf8209 ya/.Da/.........
+ 2340 01964222 3a964222 ee28effc d528effc ..B":.B".(...(..
+ 2350 3055b441 0a55b441 dfeb199f e5eb199f 0U.A.U.A........
+ 2360 6310afe5 5a10afe5 8cae023b b5ae023b c...Z......;...;
+ 2370 52d35986 6ad35986 bd6df458 856df458 R.Y.j.Y..m.X.m.X
+ 2380 7c40d9d1 4840d9d1 93fe740f a7fe740f |@..H@....t...t.
+ 2390 4d832fb2 78832fb2 a23d826c 973d826c M./.x./..=.l.=.l
+ 23a0 1ec63416 28c63416 f17899c8 c77899c8 ..4.(.4..x...x..
+ 23b0 2f05c275 1805c275 c0bb6fab f7bb6fab /..u...u..o...o.
+ 23c0 57f2af80 66f2af80 b84c025e 894c025e W...f....L.^.L.^
+ 23d0 663159e3 563159e3 898ff43d b98ff43d f1Y.V1Y....=...=
+ 23e0 35744247 06744247 dacaef99 e9caef99 5tBG.tBG........
+ 23f0 04b7b424 36b7b424 eb0919fa d90919fa ...$6..$........
+ 2400 3d1a2b0e 6a1a2b0e d2a486d0 85a486d0 =.+.j.+.........
+ 2410 0cd9dd6d 5ad9dd6d e36770b3 b56770b3 ...mZ..m.gp..gp.
+ 2420 5f9cc6c9 0a9cc6c9 b0226b17 e5226b17 _........"k.."k.
+ 2430 6e5f30aa 3a5f30aa 81e19d74 d5e19d74 n_0.:_0....t...t
+ 2440 16a85d5f 44a85d5f f916f081 ab16f081 ..]_D.]_........
+ 2450 276bab3c 746bab3c c8d506e2 9bd506e2 'k.<tk.<........
+ 2460 742eb098 242eb098 9b901d46 cb901d46 t...$......F...F
+ 2470 45ed46fb 14ed46fb aa53eb25 fb53eb25 E.F...F..S.%.S.%
+ 2480 6b7ec6ac 367ec6ac 84c06b72 d9c06b72 k~..6~....kr..kr
+ 2490 5abd30cf 06bd30cf b5039d11 e9039d11 Z.0...0.........
+ 24a0 09f82b6b 56f82b6b e64686b5 b94686b5 ..+kV.+k.F...F..
+ 24b0 383bdd08 663bdd08 d78570d6 898570d6 8;..f;....p...p.
+ 24c0 40ccb0fd 18ccb0fd af721d23 f7721d23 @........r.#.r.#
+ 24d0 710f469e 280f469e 9eb1eb40 c7b1eb40 q.F.(.F....@...@
+ 24e0 224a5d3a 784a5d3a cdf4f0e4 97f4f0e4 "J]:xJ]:........
+ 24f0 1389ab59 4889ab59 fc370687 a7370687 ...YH..Y.7...7..
+ 2500 7e6c5c95 3c6c5c95 91d2f14b d3d2f14b ~l\.<l\....K...K
+ 2510 4fafaaf6 0cafaaf6 a0110728 e3110728 O..........(...(
+ 2520 1ceab152 5ceab152 f3541c8c b3541c8c ...R\..R.T...T..
+ 2530 2d294731 6c294731 c297eaef 8397eaef -)G1l)G1........
+ 2540 55de2ac4 12de2ac4 ba60871a fd60871a U.*...*..`...`..
+ 2550 641ddca7 221ddca7 8ba37179 cda37179 d...".....qy..qy
+ 2560 3758c703 7258c703 d8e66add 9de66add 7X..rX....j...j.
+ 2570 069b3160 429b3160 e9259cbe ad259cbe ..1`B.1`.%...%..
+ 2580 2808b137 6008b137 c7b61ce9 8fb61ce9 (..7`..7........
+ 2590 19cb4754 50cb4754 f675ea8a bf75ea8a ..GTP.GT.u...u..
+ 25a0 4a8e5cf0 008e5cf0 a530f12e ef30f12e J.\...\..0...0..
+ 25b0 7b4daa93 304daa93 94f3074d dff3074d {M..0M.....M...M
+ 25c0 03bac766 4ebac766 ec046ab8 a1046ab8 ...fN..f..j...j.
+ 25d0 32793105 7e793105 ddc79cdb 91c79cdb 2y1.~y1.........
+ 25e0 613c2aa1 2e3c2aa1 8e82877f c182877f a<*..<*.........
+ 25f0 50ffdcc2 1effdcc2 bf41711c f141711c P........Aq..Aq.
+ 2600 544868e6 284868e6 bbf6c538 c7f6c538 THh.(Hh....8...8
+ 2610 658b9e85 188b9e85 8a35335b f735335b e........53[.53[
+ 2620 36ce8521 48ce8521 d97028ff a77028ff 6..!H..!.p(..p(.
+ 2630 070d7342 780d7342 e8b3de9c 97b3de9c ..sBx.sB........
+ 2640 7ffa1eb7 06fa1eb7 9044b369 e944b369 .........D.i.D.i
+ 2650 4e39e8d4 3639e8d4 a187450a d987450a N9..69....E...E.
+ 2660 1d7cf370 667cf370 f2c25eae 89c25eae .|.pf|.p..^...^.
+ 2670 2cbf0513 56bf0513 c301a8cd b901a8cd ,...V...........
+ 2680 022c8544 742c8544 ed92289a 9b92289a .,.Dt,.D..(...(.
+ 2690 33ef7327 44ef7327 dc51def9 ab51def9 3.s'D.s'.Q...Q..
+ 26a0 60aa6883 14aa6883 8f14c55d fb14c55d `.h...h....]...]
+ 26b0 51699ee0 24699ee0 bed7333e cbd7333e Qi..$i....3>..3>
+ 26c0 299ef315 5a9ef315 c6205ecb b5205ecb )...Z.... ^.. ^.
+ 26d0 185d0576 6a5d0576 f7e3a8a8 85e3a8a8 .].vj].v........
+ 26e0 4b181ed2 3a181ed2 a4a6b30c d5a6b30c K...:...........
+ 26f0 7adbe8b1 0adbe8b1 9565456f e565456f z........eEo.eEo
+ 2700 173e1f7d 7e3e1f7d f880b2a3 9180b2a3 .>.}~>.}........
+ 2710 26fde91e 4efde91e c94344c0 a14344c0 &...N....CD..CD.
+ 2720 75b8f2ba 1eb8f2ba 9a065f64 f1065f64 u........._d.._d
+ 2730 447b04d9 2e7b04d9 abc5a907 c1c5a907 D{...{..........
+ 2740 3c8c692c 508c692c d332c4f2 bf32c4f2 <.i,P.i,.2...2..
+ 2750 0d4f9f4f 604f9f4f e2f13291 8ff13291 .O.O`O.O..2...2.
+ 2760 5e0a84eb 300a84eb b1b42935 dfb42935 ^...0.....)5..)5
+ 2770 6fc97288 00c97288 8077df56 ef77df56 o.r...r..w.V.w.V
+ 2780 415af2df 225af2df aee45f01 cde45f01 AZ.."Z...._..._.
+ 2790 709904bc 129904bc 9f27a962 fd27a962 p........'.b.'.b
+ 27a0 23dc1f18 42dc1f18 cc62b2c6 ad62b2c6 #...B....b...b..
+ 27b0 121fe97b 721fe97b fda144a5 9da144a5 ...{r..{..D...D.
+ 27c0 6ae8848e 0ce8848e 85562950 e3562950 j........V)P.V)P
+ 27d0 5b2b72ed 3c2b72ed b495df33 d395df33 [+r.<+r....3...3
+ 27e0 086e6949 6c6e6949 e7d0c497 83d0c497 .niIlniI........
+ 27f0 39ad9f2a 5cad9f2a d61332f4 b31332f4 9..*\..*..2...2.
+ 2800 434f4445 deadbeef 00000000 00000000 CODE............
+ #pass
diff --git a/ld/testsuite/ld-scripts/crc-polyi.s b/ld/testsuite/ld-scripts/crc-polyi.s
new file mode 100644
index 00000000000..704b492ae61
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-polyi.s
@@ -0,0 +1,9 @@
+ .extern ecc_start
+ .section .text
+main:
+ .long 0x45444F43
+ .long ecc_start
+ .section .data
+ .long 0x9abcdef0
+ .section .bss
+ .long 0
diff --git a/ld/testsuite/ld-scripts/crc-polyi.t b/ld/testsuite/ld-scripts/crc-polyi.t
new file mode 100644
index 00000000000..f335660256e
--- /dev/null
+++ b/ld/testsuite/ld-scripts/crc-polyi.t
@@ -0,0 +1,41 @@
+MEMORY {
+ rom : ORIGIN = 0x000000, LENGTH = 0x400000
+ ram : ORIGIN = 0x400000, LENGTH = 0x10000
+}
+
+_start = 0x000000;
+SECTIONS
+{
+ . = 0x1000 + SIZEOF_HEADERS;
+ .text ALIGN (0x100) :
+
+ {
+ FILL(0xFF)
+ QUAD(0xEFBEADDE45444F43);
+ crc64 = .;
+ DEBUG OFF
+ CRC64 POLYI(0xDEADBEEFDEADBEEF)(ecc_start , ecc_end)
+ DEBUG OFF
+ ecc_start = .;
+ QUAD(ecc_start)
+ QUAD(ecc_end);
+ QUAD(ecc_end - ecc_start);
+ QUAD(0x45444F43EFBEADDE);
+ entry = .;
+ *(.text)
+ . = ALIGN(0x100);
+ BYTE(1)
+ . = ALIGN(4096) - 8;
+ QUAD(0xEFBEADDE45444F43);
+ CRC64 TABLE
+ QUAD(0xEFBEADDE45444F43);
+ QUAD(0);
+ ecc_end = .;
+ } > rom
+
+ .data : AT (0x400000) { *(.data) } >ram /* NO default AT>rom */
+ . = ALIGN(0x20);
+ .bss : { *(.bss) } >ram /* NO default AT>rom */
+ /DISCARD/ : { *(*) }
+}
+
--
2.17.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 0/5 Add support for CRC64 generation in linker
2023-02-17 13:54 [PATCH v1 0/5 Add support for CRC64 generation in linker binutils
` (4 preceding siblings ...)
2023-02-17 13:54 ` [PATCH v1 5/5] CRC64 testsuite binutils
@ 2023-02-17 14:31 ` Ulf Samuelsson
5 siblings, 0 replies; 7+ messages in thread
From: Ulf Samuelsson @ 2023-02-17 14:31 UTC (permalink / raw)
To: binutils; +Cc: nickc
Checked this, and realized that there were a lot of white space fixes
needed.
I have done them, but I will wait for feedback before resend.
Best Regards.
Ulf Samuelsson
Den 2023-02-17 kl. 14:54, skrev Ulf Samuelsson via Binutils:
> Here is the first patchset for introducing CRC64 generation in the linker
>
> Supports the following new linker commands:
> * CRC64 ECMA '(' crc_start ',' crc_end ')'
> * CRC64 ISO '(' crc_start ',' crc_end ')'
> * CRC64 POLY '[' mustbe_exp ']' '(' crc_start ',' crc_end ')'
> * CRC64 POLYI '[' mustbe_exp ']' '(' crc_start ',' crc_end ')'
> * CRC64 TABLE
>
> ECMA == 0x42F0E1EBA9EA3693
> ISO == 0xD800000000000000
> POLY == Allows your own polynome
> POLYI == Allows your own polynome, with inversion during calc
>
> The CRC is calculated from crc_start to crc_end (not included)
>
> The "CRC64 <polynome> command
> * Allows specifying the polynom (ECMA(default), ISO or your own)
> * Allows for inversion in the CRC calculation (CRC64-WE)
> * Allows specifying the area that should be checked.
> * reserves room for the CRC (8 bytes)
> * Declares a symbol ___CRC64___ for the address of the CRC.
> * Declares a symbol ___CRC64_START___ for the first address of the checked area
> * Declares a symbol ___CRC64_END___ for the first address after the checked area
>
> The symbols names are declared in "checksum.h".
> If the names are unsuitable, it is easy to change.
>
> The CRC TABLE command
> This is used to speed up the CRC calculation.
> * Creates a 2kB table which speeds up the CRC calculation
> * Can insert the 2kB table into the .text section at current location.
> * Declares a symbol ___CRC64_TABLE___ if the table is inserted.
>
> Comments on the code:
> This version also supports the
> * DEBUG ON
> * DEBUG OFF
> turning on/off yydebug
> I find it useful for debugging the build, but it can easly be removed.
>
> This patch contains a lot of debug output, that is enabled by
> #define DEBUG_CRC 1
> This should be removed in the final version.
>
> The ld.texi stuff needs some more work. Not very experienced with that.
>
> Added an entry in NEWS
>
> Added 4 test cases for the different CRC64 polynome commands.
> All testcases generate a CRC table.
>
> The code is using the libcrc released under an MIT license found in
> * https://www.libcrc.org/
> * https://github.com/lammertb/libcrc/tree/v2.0
> Author: Lammert Bies
> A license for libcrc is added to the patch.
>
> [PATCH v1 1/5] ldlex.l: CRC64
> [PATCH v1 2/5] ldgram.y: CRC64
> [PATCH v1 3/5] Calculate CRC64 over the .text area
> [PATCH v1 4/5] CRC64 commands documentation
> [PATCH v1 5/5] CRC64 testsuite
>
^ permalink raw reply [flat|nested] 7+ messages in thread