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 },