diff mbox

[mips] fix JALR test in configure.ac

Message ID 53715B19.3070201@codesourcery.com
State New
Headers show

Commit Message

Sandra Loosemore May 12, 2014, 11:36 p.m. UTC
When configuring GCC for mips-linux-gnu, this happens:

configure:26145: checking assembler and linker for explicit JALR relocation
conftest.s: Assembler messages:
conftest.s:2: Internal error!
Assertion failure in macro_build at 
/scratch/sandra/mips-fsf/obj/binutils-src-mainline-0-mips-linux-gnu-i686-pc-linux-gnu/gas/config/tc-mips.c 
line 7953.
Please report this bug.

Probably this should be diagnosed as a user error instead of an assert 
failure on the binutils side, but on the GCC side, the assembly code 
being used for this configure test is incorrect and it would make the 
JALR relocation support test fail even if the assembler diagnosed it 
more nicely.  The trouble is that for the o32 ABI (the assembler 
default), the "ld" instruction being used in the test is really a macro 
that expands into 2 instructions.  This patch fixes it by substituting 
"lw", which allows the configure test to pass.

OK to commit?

-Sandra

2014-05-12  Catherine Moore  <clm@codesourcery.com>
	    Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* configure.ac: Fix assembly for explicit JALR relocation check.
	* configure: Regenerate.

Comments

Richard Sandiford May 13, 2014, 6:52 a.m. UTC | #1
Sandra Loosemore <sandra@codesourcery.com> writes:
> When configuring GCC for mips-linux-gnu, this happens:
>
> configure:26145: checking assembler and linker for explicit JALR relocation
> conftest.s: Assembler messages:
> conftest.s:2: Internal error!
> Assertion failure in macro_build at 
> /scratch/sandra/mips-fsf/obj/binutils-src-mainline-0-mips-linux-gnu-i686-pc-linux-gnu/gas/config/tc-mips.c 
> line 7953.
> Please report this bug.

Will try to look at that sometime...

> Probably this should be diagnosed as a user error instead of an assert 
> failure on the binutils side, but on the GCC side, the assembly code 
> being used for this configure test is incorrect and it would make the 
> JALR relocation support test fail even if the assembler diagnosed it 
> more nicely.  The trouble is that for the o32 ABI (the assembler 
> default), the "ld" instruction being used in the test is really a macro 
> that expands into 2 instructions.  This patch fixes it by substituting 
> "lw", which allows the configure test to pass.

OK, thanks.

Richard
diff mbox

Patch

Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac	(revision 210340)
+++ gcc/configure.ac	(working copy)
@@ -4206,8 +4206,8 @@  x:
         fi
       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
         echo '	.ent x' > conftest.s
-        echo 'x:	ld $2,%got_disp(y)($3)' >> conftest.s
-        echo '	ld $25,%call16(y)($28)' >> conftest.s
+        echo 'x:	lw $2,%got_disp(y)($3)' >> conftest.s
+        echo '	lw $25,%call16(y)($28)' >> conftest.s
         echo '	.reloc	1f,R_MIPS_JALR,y' >> conftest.s
         echo '1:	jalr $25' >> conftest.s
         echo '	.reloc	1f,R_MIPS_JALR,x' >> conftest.s
Index: gcc/configure
===================================================================
--- gcc/configure	(revision 210340)
+++ gcc/configure	(working copy)
@@ -26153,8 +26153,8 @@  $as_echo_n "checking assembler and linke
         fi
       elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x; then
         echo '	.ent x' > conftest.s
-        echo 'x:	ld $2,%got_disp(y)($3)' >> conftest.s
-        echo '	ld $25,%call16(y)($28)' >> conftest.s
+        echo 'x:	lw $2,%got_disp(y)($3)' >> conftest.s
+        echo '	lw $25,%call16(y)($28)' >> conftest.s
         echo '	.reloc	1f,R_MIPS_JALR,y' >> conftest.s
         echo '1:	jalr $25' >> conftest.s
         echo '	.reloc	1f,R_MIPS_JALR,x' >> conftest.s