public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v1 0/5 Add support for CRC64 generation in linker
@ 2023-02-17 13:54 binutils
  2023-02-17 13:54 ` [PATCH v1 1/5] ldlex.l: CRC64 binutils
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: binutils @ 2023-02-17 13:54 UTC (permalink / raw)
  To: binutils; +Cc: nickc

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] 8+ messages in thread

* [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; 8+ 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] 8+ 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; 8+ 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] 8+ 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; 8+ 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] 8+ 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; 8+ 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] 8+ 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; 8+ 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] 8+ 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; 8+ 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] 8+ messages in thread

* [PATCH v1 1/5] ldlex.l: CRC64
  2023-02-17 11:20 binutils
@ 2023-02-17 11:20 ` binutils
  0 siblings, 0 replies; 8+ messages in thread
From: binutils @ 2023-02-17 11:20 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] 8+ messages in thread

end of thread, other threads:[~2023-02-17 14:31 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH v1 3/5] Calculate CRC64 over the .text area binutils
2023-02-17 13:54 ` [PATCH v1 4/5] CRC64 commands documentation 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
  -- strict thread matches above, loose matches on Subject: below --
2023-02-17 11:20 binutils
2023-02-17 11:20 ` [PATCH v1 1/5] ldlex.l: CRC64 binutils

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).