|
|
0e5f8d |
diff -rup binutils.orig/gas/config/obj-elf.c binutils-2.30/gas/config/obj-elf.c
|
|
|
0e5f8d |
--- binutils.orig/gas/config/obj-elf.c 2018-09-24 17:50:06.974172867 +0100
|
|
|
0e5f8d |
+++ binutils-2.30/gas/config/obj-elf.c 2018-09-25 15:19:33.559830794 +0100
|
|
|
0e5f8d |
@@ -82,9 +82,11 @@ static void obj_elf_gnu_attribute (int);
|
|
|
0e5f8d |
static void obj_elf_tls_common (int);
|
|
|
0e5f8d |
static void obj_elf_lcomm (int);
|
|
|
0e5f8d |
static void obj_elf_struct (int);
|
|
|
0e5f8d |
+static void obj_elf_attach_to_group (int);
|
|
|
0e5f8d |
|
|
|
0e5f8d |
static const pseudo_typeS elf_pseudo_table[] =
|
|
|
0e5f8d |
{
|
|
|
0e5f8d |
+ {"attach_to_group", obj_elf_attach_to_group, 0},
|
|
|
0e5f8d |
{"comm", obj_elf_common, 0},
|
|
|
0e5f8d |
{"common", obj_elf_common, 1},
|
|
|
0e5f8d |
{"ident", obj_elf_ident, 0},
|
|
|
0e5f8d |
@@ -1007,6 +1009,27 @@ obj_elf_section_name (void)
|
|
|
0e5f8d |
return name;
|
|
|
0e5f8d |
}
|
|
|
0e5f8d |
|
|
|
0e5f8d |
+static void
|
|
|
0e5f8d |
+obj_elf_attach_to_group (int dummy ATTRIBUTE_UNUSED)
|
|
|
0e5f8d |
+{
|
|
|
0e5f8d |
+ const char * gname = obj_elf_section_name ();
|
|
|
0e5f8d |
+
|
|
|
0e5f8d |
+ if (gname == NULL)
|
|
|
0e5f8d |
+ {
|
|
|
0e5f8d |
+ as_warn ("group name not parseable");
|
|
|
0e5f8d |
+ return;
|
|
|
0e5f8d |
+ }
|
|
|
0e5f8d |
+
|
|
|
0e5f8d |
+ if (elf_group_name (now_seg))
|
|
|
0e5f8d |
+ {
|
|
|
0e5f8d |
+ as_warn ("already has a group");
|
|
|
0e5f8d |
+ return;
|
|
|
0e5f8d |
+ }
|
|
|
0e5f8d |
+
|
|
|
0e5f8d |
+ elf_group_name (now_seg) = xstrdup (gname);
|
|
|
0e5f8d |
+ elf_section_flags (now_seg) |= SHF_GROUP;
|
|
|
0e5f8d |
+}
|
|
|
0e5f8d |
+
|
|
|
0e5f8d |
void
|
|
|
0e5f8d |
obj_elf_section (int push)
|
|
|
0e5f8d |
{
|
|
|
0e5f8d |
diff -rup binutils.orig/gas/doc/as.texinfo binutils-2.30/gas/doc/as.texinfo
|
|
|
0e5f8d |
--- binutils.orig/gas/doc/as.texi 2018-09-24 17:50:06.984172788 +0100
|
|
|
0e5f8d |
+++ binutils-2.30/gas/doc/as.texi 2018-09-25 15:19:43.557748972 +0100
|
|
|
0e5f8d |
@@ -4407,6 +4407,7 @@ Some machine configurations provide addi
|
|
|
0e5f8d |
* Altmacro:: @code{.altmacro}
|
|
|
0e5f8d |
* Ascii:: @code{.ascii "@var{string}"}@dots{}
|
|
|
0e5f8d |
* Asciz:: @code{.asciz "@var{string}"}@dots{}
|
|
|
0e5f8d |
+* Attach_to_group:: @code{.attach_to_group @var{name}}
|
|
|
0e5f8d |
* Balign:: @code{.balign @var{abs-expr} , @var{abs-expr}}
|
|
|
0e5f8d |
* Bundle directives:: @code{.bundle_align_mode @var{abs-expr}}, etc
|
|
|
0e5f8d |
* Byte:: @code{.byte @var{expressions}}
|
|
|
0e5f8d |
@@ -4703,6 +4704,12 @@ trailing zero byte) into consecutive add
|
|
|
0e5f8d |
@code{.asciz} is just like @code{.ascii}, but each string is followed by
|
|
|
0e5f8d |
a zero byte. The ``z'' in @samp{.asciz} stands for ``zero''.
|
|
|
0e5f8d |
|
|
|
0e5f8d |
+@node Attach_to_group
|
|
|
0e5f8d |
+@section @code{.attach_to_group @var{name}}
|
|
|
0e5f8d |
+Attaches the current section to the named group. This is like declaring
|
|
|
0e5f8d |
+the section with the @code{G} attribute, but can be done after the section
|
|
|
0e5f8d |
+has been created.
|
|
|
0e5f8d |
+
|
|
|
0e5f8d |
@node Balign
|
|
|
0e5f8d |
@section @code{.balign[wl] @var{abs-expr}, @var{abs-expr}, @var{abs-expr}}
|
|
|
0e5f8d |
|
|
|
0e5f8d |
|