aboutsummaryrefslogtreecommitdiff
path: root/ld/ldgram.y
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2023-02-16 16:27:08 +0000
committerNick Clifton <nickc@redhat.com>2023-02-16 16:27:08 +0000
commit9fe129a4105bb59398f73ce96938a94f19265b79 (patch)
tree33772b47038b290b37158f78813bab4ce8360958 /ld/ldgram.y
parent6f63b61dd116becf96f47bb2dec61edd59f88a08 (diff)
downloadgdb-9fe129a4105bb59398f73ce96938a94f19265b79.zip
gdb-9fe129a4105bb59398f73ce96938a94f19265b79.tar.gz
gdb-9fe129a4105bb59398f73ce96938a94f19265b79.tar.bz2
Add support for the ASCII directive inside linker scripts.
* ldlex.l: Add ASCII token. * ldgram.y: Add parsing of the ASCII command. * ldlang.c (lang_add_string): Add maximum size parameter. Move escape character handling code into separate function. * ldlang.h (lang_add_string): Update prototype. * NEWS: Mention the new feature. * ld.texi (Output Section Data): Document the new directives. * testsuite/ld-scripts/asciz.t: Adjust to work on more architectures and to test more aspects of the ASCIZ directive. * testsuite/ld-scripts/asciz.d: Adjust to match the changes to the test linker script. * testsuite/ld-scripts/ascii.d: New test driver. * testsuite/ld-scripts/ascii.s: New test assembler source. * testsuite/ld-scripts/ascii.t: New test script. * testsuite/ld-scripts/script.exp: Run the new test.
Diffstat (limited to 'ld/ldgram.y')
-rw-r--r--ld/ldgram.y10
1 files changed, 8 insertions, 2 deletions
diff --git a/ld/ldgram.y b/ld/ldgram.y
index 8240cf9..faffeec 100644
--- a/ld/ldgram.y
+++ b/ld/ldgram.y
@@ -125,7 +125,7 @@ static int error_index;
%right UNARY
%token END
%left <token> '('
-%token <token> ALIGN_K BLOCK BIND QUAD SQUAD LONG SHORT BYTE ASCIZ
+%token <token> ALIGN_K BLOCK BIND QUAD SQUAD LONG SHORT BYTE ASCII ASCIZ
%token SECTIONS PHDRS INSERT_K AFTER BEFORE
%token DATA_SEGMENT_ALIGN DATA_SEGMENT_RELRO_END DATA_SEGMENT_END
%token SORT_BY_NAME SORT_BY_ALIGNMENT SORT_NONE
@@ -668,9 +668,15 @@ statement:
{
lang_add_data ((int) $1, $3);
}
+ | ASCII '(' mustbe_exp ')' NAME
+ {
+ /* 'value' is a memory leak, do we care? */
+ etree_type *value = $3;
+ lang_add_string (value->value.value, $5);
+ }
| ASCIZ NAME
{
- lang_add_string ($2);
+ lang_add_string (0, $2);
}
| FILL '(' fill_exp ')'
{