This is the mail archive of the gcc-patches@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]

Do not build interworking support functions on non-Thumb targets


Hi Guys,

  I am checking in this small fix to the ARM libgcc assembler
functions.  It prevents the building of the interworking support
functions on any ARM architecture that does not support the Thumb
instructions.  Discovered recently whilst trying to create a StrongARM
multilib.

Cheers
	Nick


2000-12-04  Nick Clifton  <nickc@redhat.com>

	* config/arm/lib1funcs.asm (interwork_call_via_, call_via_): Do
	not create these functions if the target architecture does not
	support Thumb instructions.

Index: config/arm/lib1funcs.asm
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/arm/lib1funcs.asm,v
retrieving revision 1.16
diff -p -r1.16 lib1funcs.asm
*** lib1funcs.asm	2000/08/23 19:46:57	1.16
- --- lib1funcs.asm	2000/12/04 22:54:29
*************** Lover12:
*** 657,666 ****
     assembler because their presence allows interworked code to be linked even
     when the GCC library is this one.  */
  		
! /* Do not build the interworking functions when the target cpu
!    is the arm v3 architecture.  (This is one of the multilib
!    options).  */
! #if defined L_call_via_rX && ! defined __ARM_ARCH_3__
  
  /* These labels & instructions are used by the Arm/Thumb interworking code. 
     The address of function to be called is loaded into a register and then 
- --- 657,665 ----
     assembler because their presence allows interworked code to be linked even
     when the GCC library is this one.  */
  		
! /* Do not build the interworking functions when the target architecture does 
!    not support Thumb instructions.  (This can be a multilib option).  */
! #if defined L_call_via_rX && (defined __ARM_ARCH_4T__ || defined __ARM_ARCH_5T__ || defined __ARM_ARCH_5TE__)
  
  /* These labels & instructions are used by the Arm/Thumb interworking code. 
     The address of function to be called is loaded into a register and then 
*************** Lover12:
*** 699,708 ****
  
  #endif /* L_call_via_rX */
  /* ------------------------------------------------------------------------ */
! /* Do not build the interworking functions when the target cpu
!    is the arm v3 architecture.  (This is one of the multilib
!    options).  */
! #if defined L_interwork_call_via_rX && ! defined __ARM_ARCH_3__
  
  /* These labels & instructions are used by the Arm/Thumb interworking code,
     when the target address is in an unknown instruction set.  The address 
- --- 698,706 ----
  
  #endif /* L_call_via_rX */
  /* ------------------------------------------------------------------------ */
! /* Do not build the interworking functions when the target architecture does 
!    not support Thumb instructions.  (This can be a multilib option).  */
! #if defined L_interwork_call_via_rX && (defined __ARM_ARCH_4T__ || defined __ARM_ARCH_5T__ || defined __ARM_ARCH_5TE__)
  
  /* These labels & instructions are used by the Arm/Thumb interworking code,
     when the target address is in an unknown instruction set.  The address 


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