aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2011-12-15 10:56:48 +0000
committerTristan Gingold <gingold@adacore.com>2011-12-15 10:56:48 +0000
commit0c9ef0f001e727226aae6a0dd3963dd81998e2e8 (patch)
tree4a4b58070fbe66330f9a0aeecab7c1d9a5c6fda1 /gas
parent5011093dd0015bc0eaff522b4e0a18250725d4b4 (diff)
downloadbinutils-0c9ef0f001e727226aae6a0dd3963dd81998e2e8.zip
binutils-0c9ef0f001e727226aae6a0dd3963dd81998e2e8.tar.gz
binutils-0c9ef0f001e727226aae6a0dd3963dd81998e2e8.tar.bz2
bfd/
2011-12-15 Iain Sandoe <iains@gcc.gnu.org> * mach-o-target.c (bfd_mach_o_bfd_set_private_flags): Use bfd_mach_o_bfd_set_private_flags. * mach-o.c (bfd_mach_o_bfd_set_private_flags): New. * mach-o.h (bfd_mach_o_bfd_set_private_flags): Declare. gas/ 2011-12-15 Iain Sandoe <iains@gcc.gnu.org> * config/obj-macho.c (obj_mach_o_subsections_by_symbols): New global. (obj_mach_o_file_properties): New enum. (obj_mach_o_subsections_via_symbols): Generalize name to... ... (obj_mach_o_fileprop) and use to set subsections_via_symbols. gas/testsuite/ 2011-12-15 Iain Sandoe <iains@gcc.gnu.org> * gas/mach-o/subsect-via-symbols-0.d: New. * gas/mach-o/subsect-via-symbols-1.d: New. * gas/mach-o/subsect-via-symbols.s: New.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/obj-macho.c37
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/mach-o/subsect-via-symbols-0.d6
-rw-r--r--gas/testsuite/gas/mach-o/subsect-via-symbols-1.d6
-rw-r--r--gas/testsuite/gas/mach-o/subsect-via-symbols.s3
6 files changed, 60 insertions, 5 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index b7a9a87..2a996c2 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2011-12-15 Iain Sandoe <iains@gcc.gnu.org>
+
+ * config/obj-macho.c (obj_mach_o_subsections_by_symbols): New global.
+ (obj_mach_o_file_properties): New enum.
+ (obj_mach_o_subsections_via_symbols): Generalize name to...
+ ... (obj_mach_o_fileprop) and use to set subsections_via_symbols.
+
2011-12-14 Stuart Henderson <shenders@gcc.gnu.org>
* config/bfin-parse.y (asm_1): set SRCx fields to all 1s for
diff --git a/gas/config/obj-macho.c b/gas/config/obj-macho.c
index 018f653..7f147e3 100644
--- a/gas/config/obj-macho.c
+++ b/gas/config/obj-macho.c
@@ -53,6 +53,10 @@ static int obj_mach_o_is_static;
static int seen_objc_section;
+/* Remember the subsections_by_symbols state in case we need to reset
+ the file flags. */
+static int obj_mach_o_subsections_by_symbols;
+
static void
obj_mach_o_weak (int ignore ATTRIBUTE_UNUSED)
{
@@ -674,11 +678,33 @@ obj_mach_o_comm (int is_local)
s_comm_internal (is_local, obj_mach_o_common_parse);
}
-static void
-obj_mach_o_subsections_via_symbols (int arg ATTRIBUTE_UNUSED)
+/* Set properties that apply to the whole file. At present, the only
+ one defined, is subsections_via_symbols. */
+
+typedef enum obj_mach_o_file_properties {
+ OBJ_MACH_O_FILE_PROP_NONE = 0,
+ OBJ_MACH_O_FILE_PROP_SUBSECTS_VIA_SYMS,
+ OBJ_MACH_O_FILE_PROP_MAX
+} obj_mach_o_file_properties;
+
+static void
+obj_mach_o_fileprop (int prop)
{
- /* Currently ignore it. */
- demand_empty_rest_of_line ();
+ if (prop < 0 || prop >= OBJ_MACH_O_FILE_PROP_MAX)
+ as_fatal (_("internal error: bad file property ID %d"), prop);
+
+ switch ((obj_mach_o_file_properties) prop)
+ {
+ case OBJ_MACH_O_FILE_PROP_SUBSECTS_VIA_SYMS:
+ subsections_by_symbols = 1;
+ if (!bfd_set_private_flags (stdoutput,
+ BFD_MACH_O_MH_SUBSECTIONS_VIA_SYMBOLS))
+ as_bad (_("failed to set subsections by symbols"));
+ demand_empty_rest_of_line ();
+ break;
+ default:
+ break;
+ }
}
/* Dummy function to allow test-code to work while we are working
@@ -776,7 +802,8 @@ const pseudo_typeS mach_o_pseudo_table[] =
{ "weak", obj_mach_o_weak, 0}, /* extension */
/* File flags. */
- { "subsections_via_symbols", obj_mach_o_subsections_via_symbols, 0 },
+ { "subsections_via_symbols", obj_mach_o_fileprop,
+ OBJ_MACH_O_FILE_PROP_SUBSECTS_VIA_SYMS},
{NULL, NULL, 0}
};
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 5fa4335..c9efc90 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-15 Iain Sandoe <iains@gcc.gnu.org>
+
+ * gas/mach-o/subsect-via-symbols-0.d: New.
+ * gas/mach-o/subsect-via-symbols-1.d: New.
+ * gas/mach-o/subsect-via-symbols.s: New.
+
2011-12-15 Nick Clifton <nickc@redhat.com>
* gas/frv/immediates.s: New test file - checks assembly of
diff --git a/gas/testsuite/gas/mach-o/subsect-via-symbols-0.d b/gas/testsuite/gas/mach-o/subsect-via-symbols-0.d
new file mode 100644
index 0000000..4dd2739
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/subsect-via-symbols-0.d
@@ -0,0 +1,6 @@
+#objdump: -P header
+#source: empty.s
+.*: +file format mach-o.*
+#...
+.*flags +: 00000000 \(-\)
+#pass
diff --git a/gas/testsuite/gas/mach-o/subsect-via-symbols-1.d b/gas/testsuite/gas/mach-o/subsect-via-symbols-1.d
new file mode 100644
index 0000000..163a9c2
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/subsect-via-symbols-1.d
@@ -0,0 +1,6 @@
+#objdump: -P header
+#source: subsect-via-symbols.s
+.*: +file format mach-o.*
+#...
+.*flags +: 00002000 \(subsections_via_symbols\)
+#pass
diff --git a/gas/testsuite/gas/mach-o/subsect-via-symbols.s b/gas/testsuite/gas/mach-o/subsect-via-symbols.s
new file mode 100644
index 0000000..b244150
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/subsect-via-symbols.s
@@ -0,0 +1,3 @@
+# just set subsections by symbols
+ .subsections_via_symbols
+