This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Build problems; Please help


Thanks for all the help. The below patch did solve part of the problem.
I had to remove the configure option --with-cpu=strongarm110 to get rid
of the assembler error totally. 


Thanks again
JP Brahma


>Your problem is that __arm__ is being defined in Thumb mode.  The
>-mthumb switch tells gcc to produce Thumb opcodes.  The libgcc support
>file gcc/longlong.h however, has an inlined version of the umul_ppmm
>function, which contains ARM instructions.   This inlined version
>therefore, should be used in ARM mode, not Thumb mode.  The inclusion
>f the inclined version is dependent upon the preprocessor symbol
>__arm__ being defined.  This symbol is supposed to be defined in ARM
>mode, but not in Thumb mode.
>
>I suspect that this is happening because your configuration is
>including gcc/config/arm/vxarm.h which unilaterally defines __arm__ in
>CPP_PREDEFINES.  I would suggest that you try removing the definition
>from there and allowing the CPP_SPEC code in arm.h to handle defining
>this macro.
>
>ie:
>
>Index: gcc/config/arm/vxarm.h
>===================================================================
>RCS file: /cvs/gcc/egcs/gcc/config/arm/vxarm.h,v
>retrieving revision 1.3
>diff -p -r1.3 vxarm.h
>*** vxarm.h	2000/02/15 16:36:34	1.3
>--- vxarm.h	2000/07/25 00:20:52
>*************** Boston, MA 02111-1307, USA.  */
>*** 39,45 ****
>    %{!mcpu*:%{!march=*:-DCPU=ARM710A}} \
>  "
>  #undef  CPP_PREDEFINES
>! #define CPP_PREDEFINES  "-D__vxworks -D__arm__ -Acpu(arm) -Amachine(arm)"
>  
>  /* VxWorks does all the library stuff itself.  */
>  
>--- 39,45 ----
>    %{!mcpu*:%{!march=*:-DCPU=ARM710A}} \
>  "
>  #undef  CPP_PREDEFINES
>! #define CPP_PREDEFINES  "-D__vxworks -Acpu(arm) -Amachine(arm)"
>  
>  /* VxWorks does all the library stuff itself.  */
>
>
>
>: Again it tries to build the multilib with --enable-multilib=no.
>: Here is the configure script that I used.
>: 
>: ../egcs-20000717/configure --prefix=/home/jbrahma/local
>: --target=arm-wrs-vxworks \
>: --with-newlib --disable-biendian --enable-languages="c c++"
>: --enable-multilib=no \
>: --with-cpu=strongarm110
>
>I suspect (but I am not sure) that disabling multilibs only works at
>the top level, ie for disabling building mutlilibbed version of
>newlib, libstdc++ etc.  I think that you cannot disable the building
>of multilib'ed versions of libgcc.a if they are specified in the
>relevant t- file.
>
>My suggestion: edit the t- file and remove the multilibs that you do
>not want.  (I do not know which t- file you are using, because you say
>that you have created a new target in configure.in.  I suspect however
>that it will probably be t-arm-coff.  If you do have a new target in
>configure.in, then I would suggest changing the defintion of
>tmake_file to, say t-arm-vxworks, and then copying t-arm-coff to this
>file, and then edititing it to your hearts content.


The target arm-wrs-vxworks was already present in the egcs code.
But it was missing in binutils package. So I made a copy of the
target arm-coff and built the binutils package so that the compiler
picks up the binutils binaries from the right place.


>
>Cheers
>	Nick
>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]