This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: Re: h8300 cannot find libgcc.a
- From: "m mariga" <ma_ariga at yahoo dot co dot jp>
- To: "John Dallaway" <john at dallaway dot org dot uk>
- Cc: <ecos-discuss at ecos dot sourceware dot org>
- Date: Mon, 10 Aug 2009 08:10:52 +0900
- Subject: Re: [ECOS] Re: h8300 cannot find libgcc.a
- References: <3100D422DF3A4D7B9D337FD86D646F40@masahiro> <4A65D8D3.9060400@dallaway.org.uk> <3F8ED0BDC83C43259ADD0DDE963395DF@masahiro> <4A671AEE.2000101@dallaway.org.uk> <407D126036C3460AB7AA0264475F04E0@masahiro> <4A6971F2.1030100@dallaway.org.uk> <E6A66DCA0038483BAC5493029EF4A913@masahiro>
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