On my ongoing effort to support clang cross-compiling of world for ARM architecture I hit one weird issue:
Problem is that old ARM Architecture Reference Manual (ARMv5) specifies mnemonics "mov r0, r0, rrx"
while new ARM ARM defines same instruction as "rrx r0,r0".
Both have same opcode: 0xe1a00060.
Problem is that clang currently uses GAS to assemble files and GAS version we have (2.17.50) doesn't have a clue about new mnemonics "rrx r0,r0".
I see 3 options to fix this:
1. Ask clang folks to patch llvm to use old mnemonics ("mov r0, r0, rrx" instead of "rrx r0,r0")
2. Maintain same patch for freebsd only
3. patch binutils to support this new mnemonics
Any thoughts how to proceed?