[lfs-support] Glibc test error - Generating locale de_DE.ISO-8859-1

Alz alz at phyglos.org
Sat Apr 16 05:41:24 PDT 2016


Hi Nathan,

On 04/15/2016 12:00 AM, Nathan Bibb wrote:
>
>
> On Thu, Apr 14, 2016 at 12:49 PM, Nathan Bibb <nathanbibb at gmail.com
> <mailto:nathanbibb at gmail.com>> wrote:
>
>     At this point I think I am a bit stuck.  I see my options as:
>     1. Continue with the install and see what horrible mess I get into;
>
> I actually decided to see if 'make install' would do anything different,
> and I got the exact same error there.
>

As I've understood, your compilation (configure and make) had no issues. 
So you are having that error in 'make check'. This is not a test failure 
(some failing tests are expected) but an error that aborts the command. 
Right?

And now you are getting "the same" error in 'make install'? That is, the 
installation is aborted too?

> I have confirmed that cacheinfo.c exists in the sysdeps/i386 folder, but
> it only calls the version in the x86_64 folder - so no help there.
>

Code in x86_64 folder is also used for x86 builds. They are reusing code.

> All of the articles online that bear any resemblance to this issue
> involve valgrind - I know valgrind is not specifically installed in LFS,
> but is it included in some test suite distributions?
>

I think Valgrind loads some libraries that confuses glibc in determining 
the CPU type where it is built on, for some old types of CPU. Something 
similar could be happening here for this old Pentimum MMX on a recent 
glibc, not sure at all...

> So...is it time for me to through in the towel?  I feel that I am
> grasping at straws at this point.
>
>              > > `maxidx >=
>              > > 2' failed.
>              >

For the sake of curiosity, this could be the failing code.

=== sysdeps/x86_64/cacheinfo.c ===
static long int __attribute__ ((noinline))
handle_intel (int name, unsigned int maxidx)
{
   assert (maxidx >= 2);

   /* OK, we can use the CPUID instruction to get all info about the
      caches.  */
===

There is an assert in cacheinfo.c code for any guessed Intel CPU. Your 
build seems to get here and fail.

You can try a quick test. Before compiling glibc, modify the code to 
prevent the assert to fail in your machine. Add a line in:

=== sysdeps/x86_64/cacheinfo.c ===
static long int __attribute__ ((noinline))
handle_intel (int name, unsigned int maxidx)
{
   assert (maxidx >= 2);
...
===

something like this:
===
static long int __attribute__ ((noinline))
handle_intel (int name, unsigned int maxidx)
{
   if (maxidx < 2) return 0;
   assert (maxidx >= 2);
...
===

Dirty, but it can give some insight if it works.

It is your own time that you'll bet on this build. If you are decided to 
keep pushing forward, for such an specific machine I would probably set 
CFLAGS/CXXFLAGS with "-march=pentium-mmx" from the very beginning. See 
Ch 6.4 for a hint if you haven't.

Regards.
Alz.









More information about the lfs-support mailing list