[MPlayer-users] What Have I Done???

Reimar Döffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Sat Apr 28 11:19:35 CEST 2007


Hello,
On Sat, Apr 28, 2007 at 01:48:02AM -0700, CD Baric wrote:
> I have linked the /usr/include/linux directory to
> /usr/src/linux-2.6.20.7/include/linux directory.

These are not configured and will almost never work. Even when
configured they are problematic.

> ---
> ldt_keeper.c
> ldt_keeper.c: In function `Setup_LDT_Keeper':
> ldt_keeper.c:194: error: storage size of 'array' isn't known
> ldt_keeper.c:226: error: invalid application of `sizeof' to incomplete
> type `user_desc'
> make[1]: *** [ldt_keeper.o] Error 1
> make[1]: Leaving directory `/usr/src/mplayer-checkout-2007-04-28/loader'
> make: *** [loader/libloader.a] Error 2
> ---
> 
> Keep in mind that this particular Slackware installation is filled
> with additional libraries required for numerous high-end applications
> like audacity, rosegarden, dvdstyler, blender etc...

This really is only a problem with your linux headers.
The /usr/include/asm/ldt.h does not define user_desc properly.
This is my /usr/include/asm/ldt.h:
> /* Autogenerated by create_ml_includes() in multilib.eclass */
> 
> #ifdef __i386__
> # include <asm-i386/ldt.h>
> #endif /* __i386__ */
> 
> #ifdef __x86_64__
> # include <asm-x86_64/ldt.h>
> #endif /* __x86_64__ */

So this just includes e.g. asm-i386/ldt.h
I would assume that your problem lies here, since this file either needs
to be specially created by your distro (as here gentoo does) or asm
needs to be a link to e.g. asm-i386 (which is what the kernel does, but
that is not right in this case since on AMD64 systems you can build both
32 and 64 bit binaries, so a link would always be wrong for at least one
of these cases).
And for reference, this is my /usr/include/asm-i386/ldt.h:
> #define _LINUX_LDT_H
> 
> /* Maximum number of LDT entries supported. */
> #define LDT_ENTRIES     8192
> /* The size of each LDT entry. */
> #define LDT_ENTRY_SIZE  8
> 
> #ifndef __ASSEMBLY__
> struct user_desc {
>         unsigned int  entry_number;
>         unsigned long base_addr;
>         unsigned int  limit;
>         unsigned int  seg_32bit:1;
>         unsigned int  contents:2;
>         unsigned int  read_exec_only:1;
>         unsigned int  limit_in_pages:1;
>         unsigned int  seg_not_present:1;
>         unsigned int  useable:1;
> };
> 
> #define MODIFY_LDT_CONTENTS_DATA        0
> #define MODIFY_LDT_CONTENTS_STACK       1
> #define MODIFY_LDT_CONTENTS_CODE        2
> 
> #endif /* !__ASSEMBLY__ */
> #endif

[...]
> I suspect I have borked some library installation and caused the
> problem and was hoping somebody could advise  me where to start
> looking BUT I do not espect miracles.

I suspect your distro has borked the linux headers they ship in
/usr/include, they do that all the time, you're lucky when the answer to
a complaint isn't just "you aren't supposed to use them anyway".

You could try changing the
> #include <asm/ldt.h>
in loader/ldt_keeper.c to
> #include <asm-i386/ldt.h>

Greetings,
Reimar Döffinger



More information about the MPlayer-users mailing list