From: Nick Clifton <nickc@redhat.com>
To: binutils@emagii.com, binutils@sourceware.org
Subject: Re: [RFC v0 0/6] ASCII Command for output section
Date: Wed, 15 Feb 2023 17:28:56 +0000 [thread overview]
Message-ID: <b9c6f385-894b-83bf-bf1d-373607ed8975@redhat.com> (raw)
In-Reply-To: <20230215114052.28292-1-binutils@emagii.com>
[-- Attachment #1: Type: text/plain, Size: 273 bytes --]
Hi Ulf,
What do you think of this alternative version of your patch ?
It will still need tweaking so that the tests will work on big-endian
architectures, and the documentation will need fixing, but I think
that it does most of what you want.
Cheers
Nick
[-- Attachment #2: ascii.patch --]
[-- Type: text/x-patch, Size: 20509 bytes --]
diff --git a/ld/NEWS b/ld/NEWS
index 4ce7e19d40b..38af9cba877 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,11 @@
-*- text -*-
+* The linker script syntax has a new command for output sections:
+ ASCII (<size>) "string" (Alt 1 = Working)
+ ASCII <size>, "string" (Alt 2 = Not Working)
+ This will reserve a zero filled block of <size> bytes at the current
+ location and insert a zero-terminated string at the beginning of the block.
+
* The linker script syntax has a new command for output sections: ASCIZ "string"
This will insert a zero-terminated string at the current location.
diff --git a/ld/ld.texi b/ld/ld.texi
index 335886d4e6b..e309eebfa43 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -5308,6 +5308,7 @@ C identifiers because they contain a @samp{.} character.
@cindex data
@cindex section data
@cindex output section data
+@kindex ASCII (@var{expression}) ``@var{string}''
@kindex ASCIZ ``@var{string}''
@kindex BYTE(@var{expression})
@kindex SHORT(@var{expression})
@@ -5345,14 +5346,27 @@ When the object file format does not have an explicit endianness, as is
true of, for example, S-records, the value will be stored in the
endianness of the first input object file.
+You can include a fixed size string in an output section by using @code{ASCII}.
+The keyword is followed by a size and a string which is stored at
+the current value of the location counter adding zero bytes at the end.
+
You can include a zero-terminated string in an output section by using
@code{ASCIZ}. The keyword is followed by a string which is stored at
-the current value of the location counter adding a zero byte at the
-end. If the string includes spaces it must be enclosed in double
-quotes. The string may contain '\n', '\r', '\t' and octal numbers.
-Hex numbers are not supported.
+the current value of the location counter adding a zero byte at the end.
+
+If the string in an @code{ASCIZ} or @code{ASCIZ} command includes spaces
+it must be enclosed in double quotes.
+If the string is too long, a warning is issued and the string is truncated.
+The string can have C escape characters like '\n', '\r', '\t' and octal numbers.
+The '\"' escape is not supported.
+
+Example 1: This is string of 16 characters and will create a 32 byte area
+@smallexample
+ ASCII 32, "This is 16 bytes"
+ ASCII (32) "This is 16 bytes"
+@end smallexample
-For example, this string of 16 characters will create a 17 byte area
+Example 2: This is a string of 16 characters and will create a 17 byte area
@smallexample
ASCIZ "This is 16 bytes"
@end smallexample
diff --git a/ld/ldgram.y b/ld/ldgram.y
index 8240cf97327..faffeec94b8 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 ')'
{
diff --git a/ld/ldlang.c b/ld/ldlang.c
index b20455c9373..82e623a6f4a 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -8361,15 +8361,16 @@ lang_add_data (int type, union etree_union *exp)
new_stmt->type = type;
}
-void
-lang_add_string (const char *s)
+static char *
+convert_string (const char * s)
{
- bfd_vma len = strlen (s);
- bfd_vma i;
- bool escape = false;
+ int len = strlen (s);
+ int i;
+ bool escape = false;
+ char * buffer = malloc (len + 1);
+ char * b;
- /* Add byte expressions until end of string. */
- for (i = 0 ; i < len; i++)
+ for (i = 0, b = buffer; i < len; i++)
{
char c = *s++;
@@ -8404,7 +8405,7 @@ lang_add_string (const char *s)
value += (c - '0');
i++;
s++;
-
+
c = *s;
if ((c >= '0') && (c <= '7'))
{
@@ -8422,26 +8423,58 @@ lang_add_string (const char *s)
i--;
s--;
}
-
+
c = value;
}
break;
}
-
- lang_add_data (BYTE, exp_intop (c));
escape = false;
}
else
{
if (c == '\\')
- escape = true;
- else
- lang_add_data (BYTE, exp_intop (c));
+ {
+ escape = true;
+ continue;
+ }
}
+
+ * b ++ = c;
}
- /* Remeber to terminate the string. */
- lang_add_data (BYTE, exp_intop (0));
+ * b = 0;
+ return buffer;
+}
+
+void
+lang_add_string (int size, const char *s)
+{
+ int len;
+ int i;
+ char * string;
+
+ string = convert_string (s);
+ len = strlen (string);
+
+ /* Check if it is ASCIZ command (len == 0) */
+ if (size == 0)
+ size = len + 1;
+ else if (len > size)
+ {
+ /* We cannot fit the '\0' at the end. */
+ len = size;
+
+ einfo (_("%P:%pS: warning: ASCII string does not fit in allocated space,"
+ " truncated\n"), NULL);
+ }
+
+ for (i = 0 ; i < len ; i++)
+ lang_add_data (BYTE, exp_intop (string[i]));
+
+ while (i++ < size)
+ lang_add_data (BYTE, exp_intop ('\0'));
+
+ free (string);
}
/* Create a new reloc statement. RELOC is the BFD relocation type to
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 32819066b8a..fe85e159aa7 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -646,8 +646,9 @@ extern void pop_stat_ptr
(void);
extern void lang_add_data
(int, union etree_union *);
+extern bfd_vma charcount(const char *s);
extern void lang_add_string
- (const char *);
+ (int, const char *s);
extern void lang_add_reloc
(bfd_reloc_code_real_type, reloc_howto_type *, asection *, const char *,
union etree_union *);
diff --git a/ld/ldlex.l b/ld/ldlex.l
index 32336cf0be2..910e7ea3b8b 100644
--- a/ld/ldlex.l
+++ b/ld/ldlex.l
@@ -309,6 +309,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
<WILD>"LONG" { RTOKEN(LONG); }
<WILD>"SHORT" { RTOKEN(SHORT); }
<WILD>"BYTE" { RTOKEN(BYTE); }
+<WILD>"ASCII" { RTOKEN(ASCII); }
<WILD>"ASCIZ" { RTOKEN(ASCIZ); }
<SCRIPT>"NOFLOAT" { RTOKEN(NOFLOAT); }
<SCRIPT,EXPRESSION>"NOCROSSREFS" { RTOKEN(NOCROSSREFS); }
diff --git a/ld/testsuite/ld-scripts/asciz.d b/ld/testsuite/ld-scripts/asciz.d
index 615cf99732f..d3b8e89fb31 100644
--- a/ld/testsuite/ld-scripts/asciz.d
+++ b/ld/testsuite/ld-scripts/asciz.d
@@ -1,17 +1,12 @@
#source: asciz.s
#ld: -T asciz.t
-#objdump: -s -j .text
-#target: [is_elf_format]
-#skip: mips*-*-*
-#skip: tilegx*-*-* tilepro-*-*
-# COFF, PE and MIPS targets align code to a 16 byte boundary
-# tilegx andtilepro aligns code to a 8 byte boundary.
+#objdump: -s -j .data
.*: file format .*
-Contents of section .text:
- .... 01010101 54686973 20697320 61207374 ....This is a st
- .... 72696e67 00...... ........ ........ ring............
- .... 54686973 20697320 616e6f74 68657220 This is another
- .... 0a737472 696e6753 00 .stringS........
+Contents of section .data:
+ .... 54686973 20697320 61207374 72696e67 This is a string
+ .... 00546869 73206973 20616e6f 74686572 .This is another
+ .... 0a537472 696e6700 006e6f71 756f7465 .String..noquote
+ .... 7300 s.
#pass
diff --git a/ld/testsuite/ld-scripts/asciz.t b/ld/testsuite/ld-scripts/asciz.t
index ab66f9a5bfb..3aeb7d0c767 100644
--- a/ld/testsuite/ld-scripts/asciz.t
+++ b/ld/testsuite/ld-scripts/asciz.t
@@ -1,23 +1,16 @@
-MEMORY {
- rom : ORIGIN = 0x00000, LENGTH = 0x10000
- ram : ORIGIN = 0x10000, LENGTH = 0x10000
-}
_start = 0x000000;
SECTIONS
{
. = 0x1000 + SIZEOF_HEADERS;
- .text ALIGN (0x20) :
- {
- *(.text)
+
+ .data : AT (0x10000)
+ {
ASCIZ "This is a string"
- . = ALIGN(0x20);
- align_label = .;
- ASCIZ "This is another \nstring\123"
- unalign_label = .;
- }
- .data : AT (0x10000) { *(.data) } >ram /* NO default AT>rom */
- . = ALIGN(0x20);
- .bss : { *(.bss) } >ram /* NO default AT>rom */
+ ASCIZ "This is another\n\123tring"
+ ASCIZ ""
+ ASCIZ noquotes
+ }
+
/DISCARD/ : { *(*) }
}
diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp
index a574dde034c..56e12da8e61 100644
--- a/ld/testsuite/ld-scripts/script.exp
+++ b/ld/testsuite/ld-scripts/script.exp
@@ -228,6 +228,7 @@ foreach test_script $test_script_list {
}
run_dump_test "asciz"
+run_dump_test "ascii"
run_dump_test "align-with-input"
run_dump_test "pr20302"
run_dump_test "output-section-types"
--- /dev/null 2023-02-15 08:07:19.809001089 +0000
+++ current/ld/testsuite/ld-scripts/ascii.s 2023-02-15 11:43:49.984490869 +0000
@@ -0,0 +1,9 @@
+ .extern ecc_start
+ .section .text
+main:
+ .long 0x45444F43
+ .long ecc_start
+ .section .data
+ .long 0x9abcdef0
+ .section .bss
+ .long 0
--- /dev/null 2023-02-15 08:07:19.809001089 +0000
+++ current/ld/testsuite/ld-scripts/ascii.t 2023-02-15 16:51:11.265841306 +0000
@@ -0,0 +1,51 @@
+MEMORY {
+ rom : ORIGIN = 0x000000, LENGTH = 0x400000
+ ram : ORIGIN = 0x400000, LENGTH = 0x10000
+}
+
+_start = 0x000000;
+SECTIONS
+{
+ . = 0x1000 + SIZEOF_HEADERS;
+ .text ALIGN (0x100) :
+
+ {
+ INCLUDE "header.inc"
+
+ FILL(0xFF)
+ entry = .;
+ *(.text)
+ . = ALIGN(0x100);
+ ASCII (128) "This is a string, 128 byte long"
+/* ASCII (32) "This is a string" */
+ LONG(ecc_start)
+ . = ALIGN(16);
+ align_label = .;
+ ASCIZ "This is an unaligned string"
+ unalign_label = .;
+ BYTE(1)
+ BYTE(2)
+ BYTE(3)
+ BYTE(4)
+ BYTE(4)
+ BYTE(7)
+ BYTE(1)
+ BYTE(1)
+ . = ALIGN(16);
+ BYTE(1)
+ . = ALIGN(16);
+ /* ASCII (8) "This is way too long" */
+ . = ALIGN(16);
+ ASCII (64) "I meant to say: This is way too long"
+ . = ALIGN(1024);
+ ASCII (512) "A very long string followed by a '01'"
+ BYTE(1)
+ ecc_end = .;
+ } > rom
+
+ .data : AT (0x400000) { *(.data) } >ram /* NO default AT>rom */
+ . = ALIGN(0x20);
+ .bss : { *(.bss) } >ram /* NO default AT>rom */
+ /DISCARD/ : { *(*) }
+}
+
--- /dev/null 2023-02-15 08:07:19.809001089 +0000
+++ current/ld/testsuite/ld-scripts/ascii.d 2023-02-15 17:25:33.406181103 +0000
@@ -0,0 +1,155 @@
+#source: ascii.s
+#ld: -T ascii.t
+#objdump: -s -j .text
+#notarget: [is_aout_format]
+#xfail: tic4x-*-* tic54x-*-*
+
+.*: file format .*
+
+Contents of section .text:
+ 1100 434f4445 deadbeef 00000000 00000000 CODE............
+ 1110 00120000 f1080000 00000000 00000000 ................
+ 1120 01020304 17000000 00004711 deadbeef ..........G.....
+ 1130 70726f67 72616d20 6e616d65 00000000 program name....
+ 1140 656d7074 79000000 00000000 00000000 empty...........
+ 1150 00000000 00000000 00000000 00000000 ................
+ 1160 00000000 00000000 00000000 00000000 ................
+ 1170 00000000 00000000 00000000 00000000 ................
+ 1180 636f6d6d 656e7420 310a0000 00000000 comment 1.......
+ 1190 00000000 00000000 00000000 00000000 ................
+ 11a0 636f6d6d 656e7420 320a0000 00000000 comment 2.......
+ 11b0 00000000 00000000 00000000 00000000 ................
+ 11c0 636f6d6d 656e7420 330a0000 00000000 comment 3.......
+ 11d0 00000000 00000000 00000000 00000000 ................
+ 11e0 636f6d6d 656e7420 340a0000 00000000 comment 4.......
+ 11f0 00000000 00000000 deadbeef 434f4445 ............CODE
+ 1200 434f4445 10110000 ffffffff ffffffff CODE............
+ 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 54686973 20697320 61207374 72696e67 This is a string
+ 1310 2c203132 38206279 7465206c 6f6e6700 , 128 byte long.
+ 1320 00000000 00000000 00000000 00000000 ................
+ 1330 00000000 00000000 00000000 00000000 ................
+ 1340 00000000 00000000 00000000 00000000 ................
+ 1350 00000000 00000000 00000000 00000000 ................
+ 1360 00000000 00000000 00000000 00000000 ................
+ 1370 00000000 00000000 00000000 00000000 ................
+ 1380 10110000 ffffffff ffffffff ffffffff ................
+ 1390 54686973 20697320 616e2075 6e616c69 This is an unali
+ 13a0 676e6564 20737472 696e6700 01020304 gned string.....
+ 13b0 04070101 ffffffff ffffffff ffffffff ................
+ 13c0 01ffffff ffffffff ffffffff ffffffff ................
+ 13d0 49206d65 616e7420 746f2073 61793a20 I meant to say:
+ 13e0 54686973 20697320 77617920 746f6f20 This is way too
+ 13f0 6c6f6e67 00000000 00000000 00000000 long............
+ .... 00000000 00000000 00000000 00000000 ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... ffffffff ffffffff ffffffff ffffffff ................
+ .... 41207665 7279206c 6f6e6720 73747269 A very long stri
+ .... 6e672066 6f6c6c6f 77656420 62792061 ng followed by a
+ .... 20273031 27000000 00000000 00000000 '01'...........
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 00000000 00000000 00000000 00000000 ................
+ .... 01 .
+#pass
--- /dev/null 2023-02-15 08:07:19.809001089 +0000
+++ current/ld/testsuite/ld-scripts/header.inc 2023-02-15 16:49:45.026041032 +0000
@@ -0,0 +1,34 @@
+ /* HEADER */
+ FILL(0xFF)
+ QUAD(0xEFBEADDE45444F43);
+ crc64 = .;
+ QUAD(0)
+ ecc_start = .;
+ /* Program Entry */
+ LONG(entry)
+
+ /* Program size */
+ LONG(ecc_end - ecc_start)
+
+ /* Time Stamp */
+ time_since_epoch = .;
+ QUAD(0)
+
+ /* 32 bytes here */
+ /* Version info */
+ BYTE(1)
+ BYTE(2)
+ BYTE(3)
+ BYTE(4)
+ LONG(0x17)
+ LONG(0x11470000)
+ LONG(0xEFBEADDE)
+ /* 48 bytes here */
+ ASCII (16) "program name"
+ /* 64 bytes here */
+ ASCII (64) "empty"
+ ASCII (32) "comment 1\n"
+ ASCII (32) "comment 2\n"
+ ASCII (32) "comment 3\n"
+ ASCII (24) "comment 4\n"
+ QUAD(0x45444F43EFBEADDE);
next prev parent reply other threads:[~2023-02-15 17:29 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-15 11:40 binutils
2023-02-15 11:40 ` [PATCH v0 1/6] Add testsuite for ASCII command binutils
2023-02-15 11:40 ` [PATCH v0 2/6] Add ASCII command info to NEWS binutils
2023-02-15 11:40 ` [PATCH v0 3/6] Add ASCII to info file binutils
2023-02-15 11:40 ` [PATCH v0 4/6] ldlex.l: add ASCII binutils
2023-02-15 11:44 ` Ulf Samuelsson
2023-02-15 11:40 ` [PATCH v0 5/6] ldgram.y: " binutils
2023-02-15 11:40 ` [PATCH v0 6/6] ldlang.*: parse ASCII command binutils
2023-02-15 17:07 ` [RFC v0 0/6] ASCII Command for output section Nick Clifton
2023-02-15 17:55 ` Ulf Samuelsson
2023-02-15 17:28 ` Nick Clifton [this message]
2023-02-15 17:52 ` Ulf Samuelsson
2023-02-15 18:29 ` Ulf Samuelsson
2023-02-16 16:31 ` Nick Clifton
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=b9c6f385-894b-83bf-bf1d-373607ed8975@redhat.com \
--to=nickc@redhat.com \
--cc=binutils@emagii.com \
--cc=binutils@sourceware.org \
/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).