If you want to play with gcc 4.9 really badly *and* you're a masochist,
it's in ports now.
However, you need to sacrifice a chicken before it builds:
- Patch binutils-2.17 and install them
- Modify both share/mk/bsd.own.mk and add arm to BINUTILS217_ARCH
- rebuild base etc with new binutils.
Now build gcc and enjoy your FrankensteinBSD with the latest gnu
bloatware.
I do not expect anyone attempting this, it's more of a reminder that
someone(tm) needs to look into binutils-2.17 and make it the default on
arm. Or tell me what needs to be done to it before it can be made the
default.
Index: binutils-2.17/gas/config/tc-arm.c
===================================================================
RCS file:
/home/vcs/cvs/openbsd/src/gnu/usr.bin/binutils-2.17/gas/config/tc-arm.c,v
retrieving revision 1.3
diff -u -p -r1.3 tc-arm.c
--- binutils-2.17/gas/config/tc-arm.c 22 Aug 2012 14:39:43 -0000 1.3
+++ binutils-2.17/gas/config/tc-arm.c 30 Sep 2014 12:15:06 -0000
@@ -1730,6 +1730,43 @@ s_syntax (int unused ATTRIBUTE_UNUSED)
demand_empty_rest_of_line ();
}
+/* .inst directive from GPLv3 binutils. This is a GPLv2 compatible
+ * re-implementation for OpenBSD. It does not support Thumb mode.
+ */
+static void
+s_inst(int ignore ATTRIBUTE_UNUSED)
+{
+ expressionS exp;
+
+ if (is_it_end_of_statement()) {
+ demand_empty_rest_of_line();
+ return;
+ }
+
+ if (thumb_mode) {
+ as_bad(".inst not implemented in Thumb mode");
+ ignore_rest_of_line();
+ return;
+ }
+
+ do {
+ expression(&exp);
+#if 0
+ fprintf(stderr, "X_op=%d, value=0x%x\n", exp.X_op, exp.X_add_number);
+#endif
+
+ if (exp.X_op != O_constant)
+ as_bad("constant expression required");
+ else
+ emit_expr(&exp, 4);
+
+ } while (*input_line_pointer++ == ',');
+
+ /* Put terminator back into stream. */
+ input_line_pointer--;
+ demand_empty_rest_of_line();
+}
+
/* Directives: sectioning and alignment. */
/* Same as s_align_ptwo but align 0 => align 2. */
@@ -2985,6 +3022,7 @@ const pseudo_typeS md_pseudo_table[] =
{ "ltorg", s_ltorg, 0 },
{ "pool", s_ltorg, 0 },
{ "syntax", s_syntax, 0 },
+ { "inst", s_inst, 0 },
#ifdef OBJ_ELF
{ "word", s_arm_elf_cons, 4 },
{ "long", s_arm_elf_cons, 4 },