FC4 host (was Re: [RFC] LFS-6.1.1)

Alexander E. Patrakov patrakov at ums.usu.ru
Mon Oct 10 04:02:02 PDT 2005


Greg Schafer wrote:
> Alexander E. Patrakov wrote:
> 
> 
>>5) Blacklist Fedora Core 4 since it can't build binutils.
> 
> 
> Huh? Stable or development LFS?

Stable, i.e. 6.1

 > Could you please supply details of the problem?

This is from the current development LFS LiveCD, not FC4, but I assume 
the problem is the same:

make[3]: Entering directory `/tmp/binutils-build/gas'
gcc -DHAVE_CONFIG_H -I. -I../../binutils-2.15.94.0.2.2/gas -I. 
-D_GNU_SOURCE -I. -I../../binutils-2.15.94.0.2.2/gas -I../bfd 
-I../../binutils-2.15.94.0.2.2/gas/config 
-I../../binutils-2.15.94.0.2.2/gas/../include 
-I../../binutils-2.15.94.0.2.2/gas/.. 
-I../../binutils-2.15.94.0.2.2/gas/../bfd 
-I../../binutils-2.15.94.0.2.2/gas/../intl -I../intl 
-DLOCALEDIR="\"/tools/share/locale\""   -W -Wall -Wstrict-prototypes 
-Wmissing-prototypes -g -O2  -c ../../binutils-2.15.94.0.2.2/gas/app.c
In file included from ./targ-cpu.h:1,
                  from ../../binutils-2.15.94.0.2.2/gas/config/obj-elf.h:42,
                  from ./obj-format.h:1,
                  from ../../binutils-2.15.94.0.2.2/gas/config/te-linux.h:4,
                  from ./targ-env.h:1,
                  from ../../binutils-2.15.94.0.2.2/gas/as.h:625,
                  from ../../binutils-2.15.94.0.2.2/gas/app.c:30:
../../binutils-2.15.94.0.2.2/gas/config/tc-i386.h:443: error: array type 
has incomplete element type
make[3]: *** [app.o] Error 1

> Does passing --disable-werror help?

No, as there is no -Werror on gcc command line, and compilation passed 
past many warnings above that error.

> Or maybe we just need to add
> the required GCC4 patches to the Binutils version used in stable LFS as
> errata.

In binutils-2.16.1, they moved "struct relax_type" definition from 
gas/tc.h to gas/as.h. See backport in the attached patch. This does help 
compiling binutils. If there are no other problems further in the build, 
please include the patch into 6.1.1 instead of blacklisting gcc4-based 
hosts.

> I'm a bit mystified as I have received successful bootstrap reports of the
> DIY build from FC4 using pretty much the same packages as current
> development LFS.

But the problem is in the "stable" LFS.

> Blacklisting any current distro is a major cop-out IMHO. We should be
> giving top priority to fixing these kinds of host bootstrap problems.

Probably you are right that such known "host bootstrap" problems should 
be fixed in stable dot releases. The main problem here is that they pop 
up only after the release, and there's no way to predict them. Some 
warning about the possibility of unknown "downgrade" issues of this kind 
is still appropriate. Let's see if today's DIY-linux buildability 
survives after FC5 or FC6 comes out.

BTW also the following text should be changed in the book:

  --disable-nls

This disables internationalization as i18n is not needed for the 
temporary tools.


Should be:

This avoids the dependency on gettext being installed on the host.

-- 
Alexander E. Patrakov
-------------- next part --------------
Submitted By: Alexander E. Patrakov
Date: 2005-10-10
Initial Package Version: 2.15.94.0.2.2
Upstream Status: Backport from 2.16.1
Origin: Alexander E. Patrakov
Description: Fixes compilation by gcc4 (e.g. from Fedora Core 4 hosts)

--- binutils-2.15.94.0.2.2/gas/tc.h	2004-11-22 20:33:31.000000000 +0000
+++ binutils-2.16.1/gas/tc.h	2005-02-17 13:46:00.000000000 +0000
@@ -24,25 +25,6 @@
 
 extern const pseudo_typeS md_pseudo_table[];
 
-/* JF moved this here from as.h under the theory that nobody except MACHINE.c
-   and write.c care about it anyway.  */
-
-struct relax_type
-{
-  /* Forward reach. Signed number. > 0.  */
-  long rlx_forward;
-  /* Backward reach. Signed number. < 0.  */
-  long rlx_backward;
-
-  /* Bytes length of this address.  */
-  unsigned char rlx_length;
-
-  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
-  relax_substateT rlx_more;
-};
-
-typedef struct relax_type relax_typeS;
-
 extern const int md_reloc_size;	/* Size of a relocation record.  */
 
 char * md_atof (int, char *, int *);
--- binutils-2.15.94.0.2.2/gas/as.h	2004-09-15 19:05:03.000000000 +0000
+++ binutils-2.16.1/gas/as.h	2005-04-13 17:58:40.000000000 +0000
@@ -397,6 +384,22 @@
 /* Enough bits for address, but still an integer type.
    Could be a problem, cross-assembling for 64-bit machines.  */
 typedef addressT relax_addressT;
+
+struct relax_type
+{
+  /* Forward reach. Signed number. > 0.  */
+  offsetT rlx_forward;
+  /* Backward reach. Signed number. < 0.  */
+  offsetT rlx_backward;
+
+  /* Bytes length of this address.  */
+  unsigned char rlx_length;
+
+  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
+  relax_substateT rlx_more;
+};
+
+typedef struct relax_type relax_typeS;
 

 /* main program "as.c" (command arguments etc).  */
 


More information about the lfs-dev mailing list