+2007-10-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/5221
+ * config/obj-elf.c (obj_elf_section): Handle optional
+ parameters for .pushsection.
+
+ * doc/as.texinfo: Document optional parameters for
+ .pushsection.
+
2007-10-24 H.J. Lu <hongjiu.lu@intel.com>
* configure.in: Move AM_PROG_LIBTOOL after AC_GNU_SOURCE.
++input_line_pointer;
SKIP_WHITESPACE ();
- if (push)
+ if (push && ISDIGIT (*input_line_pointer))
{
+ /* .pushsection has an optional subsection. */
new_subsection = (subsegT) get_absolute_expression ();
+
+ SKIP_WHITESPACE ();
+
+ /* Stop if we don't see a comma. */
+ if (*input_line_pointer != ',')
+ goto done;
+
+ /* Skip the comma. */
+ ++input_line_pointer;
+ SKIP_WHITESPACE ();
}
- else if (*input_line_pointer == '"')
+
+ if (*input_line_pointer == '"')
{
beg = demand_copy_C_string (&dummy);
if (beg == NULL)
}
}
+done:
demand_empty_rest_of_line ();
obj_elf_change_section (name, type, attr, entsize, group_name, linkonce, push);
@ifset ELF
@node PushSection
-@section @code{.pushsection @var{name} , @var{subsection}}
+@section @code{.pushsection @var{name} [, @var{subsection}] [, "@var{flags}"[, @@@var{type}[,@var{arguments}]]]}
@cindex @code{pushsection} directive
@cindex Section Stack
This directive pushes the current section (and subsection) onto the
top of the section stack, and then replaces the current section and
-subsection with @code{name} and @code{subsection}.
+subsection with @code{name} and @code{subsection}. The optional
+@code{flags}, @code{type} and @code{arguments} are treated the same
+as in the @code{.section} (@pxref{Section}) directive.
@end ifset
@node Quad
+2007-10-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/5221
+ * gas/elf/elf.exp: Run section7.
+
+ * gas/elf/section7.d: New.
+ * gas/elf/section7.s: Likewise.
+
2007-10-23 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/katmai.s: Remove cmpps opcode test.
run_dump_test "symver"
run_elf_list_test "type" "" "" "-s" "| grep \"1 \\\[FONTC\\\]\""
run_dump_test "section6"
+ run_dump_test "section7"
}
--- /dev/null
+#objdump: -s
+#name: elf section7
+
+.*: +file format .*
+
+# The MIPS includes a 'section .reginfo' and such here.
+#...
+Contents of section .bar:
+ 0000 00000000 00000000 0000 .*
+Contents of section .bar1:
+ 0000 0102 .*
+Contents of section .bar2:
+ 0000 0102 .*
+Contents of section .bar3:
+ 0000 0103 .*
+Contents of section .bar4:
+ 0000 04 .*
+Contents of section .text:
+ 0000 feff .*
+# Arm includes a .ARM.attributes section here
+#...
--- /dev/null
+ .section .bar,"a"
+ .byte 0
+.pushsection .bar1,2,"a"
+ .byte 2
+.popsection
+ .byte 0
+.pushsection .bar2,3,"a"
+ .byte 2
+.popsection
+ .byte 0
+.pushsection .bar3,2,"a", %progbits
+ .byte 3
+.popsection
+ .byte 0
+.pushsection .bar4
+ .byte 4
+.popsection
+ .byte 0
+.pushsection .text,1,"axG",%progbits,foo,comdat
+ .byte -1
+.popsection
+ .byte 0
+.pushsection .text,"axG",%progbits,foo,comdat
+ .byte -2
+.popsection
+ .byte 0
+.pushsection .bar1,"a"
+ .byte 1
+.popsection
+ .byte 0
+.pushsection .bar3,"a", %progbits
+ .byte 1
+.popsection
+ .byte 0
+.pushsection .bar2,"a"
+ .byte 1
+.popsection
+ .byte 0