summaryrefslogtreecommitdiff
path: root/gcc/ira-emit.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gcc.gnu.org>2013-04-30 04:07:23 +0000
committerMike Frysinger <vapier@gcc.gnu.org>2013-04-30 04:07:23 +0000
commit37953bd308af0b2ffe9205fbec12b40a0bf725a1 (patch)
treef21ee9c2aa4e009fc4843bffb10b136117b8784e /gcc/ira-emit.c
parent5eb8b03c897aba9796d421c160c65f1929fc6cf3 (diff)
gcc: arm: linux-eabi: fix handling of armv4 bx fixups when linking
The bpabi.h header already sets up defines to automatically use the --fix-v4bx flag with the assembler & linker as needed, and creates a default assembly & linker spec which uses those. Unfortunately, the linux-eabi.h header clobbers the LINK_SPEC define and doesn't include the v4bx define when setting up its own. So while the assembler spec is retained and works fine to generate the right relocs, building for armv4 targets doesn't invoke the linker correctly so all the relocs get processed as if we had an armv4t target. You can see this with -dumpspecs when configuring gcc for an armv4 target and using --with-arch=armv4: $ armv4l-unknown-linux-gnueabi-gcc -dumpspecs |& grep -B 1 fix-v4bx *subtarget_extra_asm_spec: .... %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx} ... With this fix in place, we also get the link spec: $ armv4l-unknown-linux-gnueabi-gcc -dumpspecs |& grep -B 1 fix-v4bx *link: ... %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4|mcpu=fa526|mcpu=fa626:--fix-v4bx} ... And all my hello world tests / glibc builds automatically turn the bx insn into the 'mov pc, lr' insn and all is right in the world. Signed-off-by: Mike Frysinger <vapier@gentoo.org> From-SVN: r198438
Diffstat (limited to 'gcc/ira-emit.c')
0 files changed, 0 insertions, 0 deletions