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
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).  */
 
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to