[ECOS] Re: h8300 cannot find libgcc.a

m mariga ma_ariga@yahoo.co.jp
Sun Aug 9 23:11:00 GMT 2009


Hello,

I've studied the GCC3.3.2's patch for building h8300 toolchains and I've 
learned its mechanism
and also I am encountered with new question.
Would you please teach me.

When gcc-configuration makes libgcc.a,double must be 64 bits,and when making 
h8300-elf-gcc double must be 32 bits.
In order to distinguish two targets the patch exhanges next lines.

-#define LONG_LONG_TYPE_SIZE 32
+#define LONG_LONG_TYPE_SIZE (TARGET_INT32 ? 64 : 32)
-#define DOUBLE_TYPE_SIZE 32
+#define DOUBLE_TYPE_SIZE (TARGET_INT32 ? 64 : 32)

And there were next codes in GCC3.3.2's /gcc/config/h8300/h8300.h.

--- from GCC3.3.2's /gcc/config/h8300/h8300.h
/* Run-time compilation parameters selecting different hardware subsets.  */

extern int target_flags;

/* Masks for the -m switches.  */
#define MASK_H8300S  0x00000001
#define MASK_MAC  0x00000002
#define MASK_INT32  0x00000008
#define MASK_ADDRESSES  0x00000040
#define MASK_QUICKCALL  0x00000080
#define MASK_SLOWBYTE  0x00000100
#define MASK_NORMAL_MODE  0x00000200
#define MASK_RELAX  0x00000400
#define MASK_RTL_DUMP  0x00000800
#define MASK_H8300H  0x00001000
#define MASK_ALIGN_300  0x00002000

/* Macros used in the machine description to test the flags.  */

/* Make int's 32 bits.  */
#define TARGET_INT32 (target_flags & MASK_INT32)

/* Dump recorded insn lengths into the output file.  This helps debug the
   md file.  */
#define TARGET_ADDRESSES (target_flags & MASK_ADDRESSES)

/* Pass the first few arguments in registers.  */
#define TARGET_QUICKCALL (target_flags & MASK_QUICKCALL)

/* Pretend byte accesses are slow.  */
#define TARGET_SLOWBYTE (target_flags & MASK_SLOWBYTE)

/* Dump each assembler insn's rtl into the output file.
   This is for debugging the compiler only.  */
#define TARGET_RTL_DUMP (target_flags & MASK_RTL_DUMP)
---

But there are not above codes in GCC4.4.0's /gcc/config/h8300/h8300.h !!!

I tentatively added above codes in GCC4.4.0's /gcc/config/h8300/h8300.h and 
applied patch codes and tried to configure gcc.
But the result was the same error.
/opt/ecos/ecos-3.0/packages/language/c/libm/v3_0/src/mathincl/fdlibm.h:78:3: 
error: #error IEEE-style 64-bit doubles are required to use the math library

Apparently in GCC4.4.0 or newer GCC,target_flags does not function as the 
same as in GCC3.3.2.

Now the question is what mechanism is used in newer GCC versions to 
configure h8300 toolchains.
How should I distinguish targets, libgcc.a and h8300-elf-gcc, in configuring 
?

Would you please enlighten me ?

m mariga


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list