From: binutils@emagii.com
To: binutils@sourceware.org
Cc: nickc@redhat.com, Ulf Samuelsson <ulf@emagii.com>
Subject: [PATCH v12 06/11] DIGEST: ldgram.y
Date: Mon, 6 Mar 2023 14:31:53 +0100 [thread overview]
Message-ID: <20230306133158.91917-7-binutils@emagii.com> (raw)
In-Reply-To: <20230306133158.91917-1-binutils@emagii.com>
From: Ulf Samuelsson <ulf@emagii.com>
Signed-off-by: Ulf Samuelsson <ulf@emagii.com>
---
ld/ldgram.y | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 60 insertions(+), 1 deletion(-)
diff --git a/ld/ldgram.y b/ld/ldgram.y
index 26e56fe1566..ea0c569279a 100644
--- a/ld/ldgram.y
+++ b/ld/ldgram.y
@@ -41,6 +41,7 @@
#include "mri.h"
#include "ldctor.h"
#include "ldlex.h"
+#include "lddigest.h"
#ifndef YYDEBUG
#define YYDEBUG 1
@@ -130,6 +131,9 @@ 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 DIGEST POLY POLYI TABLE
+%token TIMESTAMP
+%token DEBUG ON OFF
%token '{' '}'
%token SIZEOF_HEADERS OUTPUT_FORMAT FORCE_COMMON_ALLOCATION OUTPUT_ARCH
%token INHIBIT_COMMON_ALLOCATION FORCE_GROUP_ALLOCATION
@@ -668,7 +672,7 @@ statement:
{
lang_add_data ((int) $1, $3);
}
- | ASCII '(' mustbe_exp ')' NAME
+ | ASCII '(' mustbe_exp ')' NAME
{
/* 'value' is a memory leak, do we care? */
etree_type *value = $3;
@@ -685,6 +689,31 @@ statement:
{
lang_add_fill ($3);
}
+ | DIGEST NAME
+ { /* CRC_ADDRESS is set in <polynome>, but polynome reserves space, so we use a temporary */
+ digest_label = lang_get_label($2, &digest_big_endian);
+ lang_add_assignment (exp_assign (digest_label, exp_nameop (NAME, "."), false));
+ }
+ polynome '(' mustbe_exp ',' mustbe_exp ')'
+ {
+ if (polynome_valid)
+ {
+ lang_add_assignment (exp_assign (CRC_ADDRESS, exp_nameop (NAME, digest_label), false));
+ lang_add_assignment (exp_assign (CRC_START, $6, false));
+ lang_add_assignment (exp_assign (CRC_END, $8, false));
+ }
+ }
+ | DIGEST TABLE NAME
+ {
+ bool big_endian;
+ const char *label = lang_get_label($3, &big_endian);
+ lang_add_assignment (exp_assign (label, exp_nameop (NAME,"."), false));
+ lang_add_digest_table (big_endian);
+ }
+ | TIMESTAMP
+ {
+ lang_add_timestamp ();
+ }
| ASSERT_K
{ ldlex_expression (); }
'(' exp ',' NAME ')' separator
@@ -692,13 +721,43 @@ statement:
ldlex_popstate ();
lang_add_assignment (exp_assert ($4, $6));
}
+ | DEBUG ON
+ {
+ yydebug = 1;
+ }
+ | DEBUG OFF
+ {
+ yydebug = 0;
+ }
| INCLUDE filename
{
ldfile_open_command_file ($2);
}
+
statement_list_opt END
;
+polynome:
+ NAME
+ {
+ polynome_valid = lang_set_digest($1);
+ }
+ | POLY '(' mustbe_exp ','
+ mustbe_exp ',' mustbe_exp ',' mustbe_exp ','
+ mustbe_exp ',' mustbe_exp ',' mustbe_exp ')'
+ {
+ lang_add_digest (
+ $3->value.value, /* size */
+ $5->value.value, /* polynome */
+ $7->value.value, /* initial value */
+ $9->value.value, /* xor value */
+ $11->value.value, /* input reflected */
+ $13->value.value, /* output reflected */
+ $15->value.value /* reciprocal */
+ );
+ polynome_valid = true;
+ }
+
statement_list:
statement_list statement
| statement
--
2.34.1
next prev parent reply other threads:[~2023-03-06 13:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-06 13:31 [PATCH v12 0/11 Add support for CRC64 generation in linker binutils
2023-03-06 13:31 ` [PATCH v12 01/11] DIGEST: LICENSING binutils
2023-03-06 13:31 ` [PATCH v12 02/11] DIGEST: NEWS binutils
2023-03-06 13:31 ` [PATCH v12 03/11] DIGEST: Documentation binutils
2023-03-06 13:31 ` [PATCH v12 04/11] DIGEST: testsuite binutils
2023-03-06 13:31 ` [PATCH v12 05/11] DIGEST: ldlex.l binutils
2023-03-06 13:31 ` binutils [this message]
2023-03-06 13:31 ` [PATCH v12 07/11] DIGEST: ldmain.c binutils
2023-03-06 13:31 ` [PATCH v12 08/11] DIGEST: ldlang.*: add timestamp binutils
2023-03-06 13:31 ` [PATCH v12 09/11] DIGEST: calculation binutils
2023-03-06 13:31 ` [PATCH v12 10/11] DIGEST: Makefile.* binutils
2023-03-06 13:31 ` [PATCH v12 11/11] Build ldint binutils
2023-03-07 13:59 ` [PATCH v12 0/11 Add support for CRC64 generation in linker Nick Clifton
2023-03-07 18:03 ` Ulf Samuelsson
2023-03-07 18:08 ` Ulf Samuelsson
2023-03-08 9:31 ` Martin Liška
2023-03-08 11:48 ` Ulf Samuelsson
2023-03-08 12:52 ` Nick Clifton
2023-03-08 13:23 ` Ulf Samuelsson
2023-03-08 12:57 ` Alan Modra
2023-03-08 13:39 ` Ulf Samuelsson
2023-03-09 8:48 ` Ulf Samuelsson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230306133158.91917-7-binutils@emagii.com \
--to=binutils@emagii.com \
--cc=binutils@sourceware.org \
--cc=nickc@redhat.com \
--cc=ulf@emagii.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).