arm-elf tools problems

yuwen yuwen@micetek.com.cn
Fri Jul 25 02:55:00 GMT 2003


Kai Ruottu wrote:

>Hi,
>regarding to your problem with the arm-elf with soft-float, the following
>forwarded message should help:
>
>------- Forwarded message follows -------
>To:             	Doug Evans <dje@sebabeach.org>
>Copies to:      	gcc-bugs@gcc.gnu.org, binutils@sources.redhat.com
>Subject:        	Re: arm-elf snafu?  can't mix default-soft-float,
>explicit
> -msoft-float
>From:           	Nick Clifton <nickc@redhat.com>
>Date sent:      	Wed, 23 Jul 2003 19:31:37 +0100
>
>[ Double-click this line for list subscription options ] 
>
>Hi Doug,
>
>  
>
>>Simple testcase:
>>
>>bash$ rm foo1.c foo2.c ; touch foo1.c foo2.c
>>bash$ arm-elf-gcc -c foo1.c
>>bash$ arm-elf-objdump -p foo1.o
>>foo1.o:     file format elf32-littlearm
>>private flags = 0: [APCS-32] [FPA float format]
>>bash$ arm-elf-gcc -c foo2.c -msoft-float
>>foo1.o:     file format elf32-littlearm
>>private flags = 200: [APCS-32] [FPA float format] [software FP]
>>bash$ arm-elf-gcc -nostdlib foo1.o foo2.o
>>[links successfully]
>>bash$ arm-elf-gcc -nostdlib foo2.o foo1.o
>>/samantha/gnu-pure/rel/lib/gcc-lib/arm-elf/3.4/../../../../arm-elf/bin/l
>>d: ERROR: foo1.o uses hardware FP, whereas a.out uses software FP
>>    
>>
>
>  
>
>>This line in gcc/config/arm/elf.h
>>
>>#ifndef SUBTARGET_ASM_FLOAT_SPEC
>>#define SUBTARGET_ASM_FLOAT_SPEC "\
>>%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
>>#endif
>>    
>>
>
>
>I think that this is the problem.  If you apply the patch below for
>example, then arm-elf targets will always pass -mfpu=softfpa to GAS,
>unless -mhard-float is specfied, whereas the arm-linux toolchain will
>always pass an explicit -mfpu=fpa unless -msoft-float is specified.
>
>What do you think ?
>
>Cheers
>        Nick
>
>gcc/ChangeLog                
>2003-07-23  Nick Clifton  <nickc@redhat.com>
>
> * config/arm/elf.h (SUBTARGET_ASM_FLOAT_SPEC): Pass
> -mfpu=softfpa to GAS by default.
> * config/arm/linux-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Define.
>        Pass -mfpu=fpa to GAS by default.
>
>Index: gcc/config/arm/elf.h
>=====================================================
>============
>==
>RCS file: /cvs/gcc/gcc/gcc/config/arm/elf.h,v
>retrieving revision 1.44
>diff -c -3 -p -r1.44 elf.h
>*** gcc/config/arm/elf.h	19 Jun 2003 21:47:06 -0000	1.44
>--- gcc/config/arm/elf.h	23 Jul 2003 18:32:24 -0000
>***************
>*** 46,52 ****
>
>  #ifndef SUBTARGET_ASM_FLOAT_SPEC
>  #define SUBTARGET_ASM_FLOAT_SPEC "\
>! %{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
>  #endif
>
>  #ifndef ASM_SPEC
>--- 46,52 ----
>
>  #ifndef SUBTARGET_ASM_FLOAT_SPEC
>  #define SUBTARGET_ASM_FLOAT_SPEC "\
>! %{mapcs-float:-mfloat} %{!mhard-float:-mfpu=softfpa}
>! %{mhard-float:-mfpu=fpa}"
>  #endif
>
>  #ifndef ASM_SPEC
>
>Index: gcc/config/arm/linux-elf.h
>=====================================================
>============
>==
>RCS file: /cvs/gcc/gcc/gcc/config/arm/linux-elf.h,v
>retrieving revision 1.40
>diff -c -3 -p -r1.40 linux-elf.h
>*** gcc/config/arm/linux-elf.h	14 Jun 2003 17:11:57 -0000	1.40
>--- gcc/config/arm/linux-elf.h	23 Jul 2003 18:32:24 -0000
>***************
>*** 40,45 ****
>--- 40,49 ----
>  #define MULTILIB_DEFAULTS \
>   { "marm", "mlittle-endian", "mhard-float", "mapcs-32",
>   "mno-thumb-interwork" }
>
>+ #undef  SUBTARGET_ASM_FLOAT_SPEC
>+ #define SUBTARGET_ASM_FLOAT_SPEC "\
>+   %{mapcs-float:-mfloat} %{!msoft-float:-mfpu=fpa}
>+   %{msoft-float:-mfpu=softfpa}"
>+ 
>  #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
>
>  /* The GNU C++ standard library requires that these macros be 
>defined. 
>  */
>
>------- End of forwarded message -------
>
> I did something similar with my arm-elf tools some weeks ago and it
> definitely
>helped, the assembler needs to know the '-mfpu=softfpa' also in the
>default case, not only when '-msoft-float' was explicitly given!
>
>Cheers, Kai
>
>
>
>  
>
Thank you very much.  Your message is very helpful.  I'll try it.

Best regards,
Dai Yuwen



------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list