diff options
author | Nick Clifton <nickc@redhat.com> | 2023-02-16 16:27:08 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2023-02-16 16:27:08 +0000 |
commit | 9fe129a4105bb59398f73ce96938a94f19265b79 (patch) | |
tree | 33772b47038b290b37158f78813bab4ce8360958 /ld/ldgram.y | |
parent | 6f63b61dd116becf96f47bb2dec61edd59f88a08 (diff) | |
download | gdb-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.y | 10 |
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 ')' { |