[oe] linux-libc-headers-native, gcc-cross issue

Frans Meulenbroeks fransmeulenbroeks at gmail.com
Mon Jun 21 19:49:01 UTC 2010


2010/6/21 Khem Raj <raj.khem at gmail.com>:
> On (21/06/10 21:27), Frans Meulenbroeks wrote:
>> 2010/6/21 Tom Rini <tom_rini at mentor.com>:
>> > Frans Meulenbroeks wrote:
>> >>
>> >> Dear all,
>> >>
>> >> After the introduction of linux-libc-headers-native I've bumped into
>> >> the following issue.
>> >> linux-libc-headers-native installs unistd.h in sysroots
>> >> This causes other recipes to pick up the x86 files instead of the target
>> >> ones.
>> >> I've seen this happen for both unistd.h and sigcontext.h
>> >
>> > What DISTRO/MACHINE are you using?
>>
>> DISTRO is angstrom-2008.1, MACHINE is NEEK; this one is NIOS2 based
>> and not committed yet.
>> From examining the gcc-cross dir I suspect some other archtectures
>> will also be vulnerable to this (as they also have a linux-unwind.h
>> which includes signal.h to get sigcontext).
>> The following architectures have a sigcontext struct in their gcc/config dir:
>>
>> gcc-cross-4.1.2-r23.1/gcc-4.1.2/gcc/config> grep -r sigcontext .
>> ./sh/linux-unwind.h:  struct sigcontext *sc;
>> ./sh/linux-unwind.h:      sc = (struct sigcontext *) (void *)
>> &rt_->uc.uc_mcontext;
>> ./sh/linux-unwind.h:  struct sigcontext *sc;
>> ./sh/linux-unwind.h:      sc = (struct sigcontext *) (void *)
>> &rt_->uc.uc_mcontext;
>> ./alpha/linux-unwind.h:  struct sigcontext *sc;
>> ./i386/linux-unwind.h:  struct sigcontext *sc;
>> ./i386/linux-unwind.h:      sc = (struct sigcontext *) (void *)
>> &uc_->uc_mcontext;
>> ./i386/linux-unwind.h:  struct sigcontext *sc;
>> ./i386/linux-unwind.h:      sc = (struct sigcontext *) (void *)
>> &rt_->uc.uc_mcontext;
>> ./mips/linux-unwind.h:    struct sigcontext uc_mcontext;
>> ./mips/linux-unwind.h:  struct sigcontext *sc;
>> ./mips/linux-unwind.h:        struct sigcontext sigctx;
>> ./mips/linux-unwind.h:  /* On o32 Linux, the register save slots in
>> the sigcontext are
>> ./ia64/linux-unwind.h:/* This works only for glibc-2.3 and later,
>> because sigcontext is different
>> ./ia64/linux-unwind.h:        struct sigcontext *sc;
>> ./ia64/linux-unwind.h:      struct sigcontext *sc = frame_->sc;
>> ./ia64/linux-unwind.h:         in the sigcontext but leaves them intact, so there's no
>> ./ia64/linux-unwind.h:        struct sigcontext *sc;
>> ./ia64/linux-unwind.h:      struct sigcontext *sc = frame->sc;
>> ./ia64/linux-unwind.h:         in the sigcontext but leaves them intact, so there's no
>> ./pa/linux-unwind.h:   tell us how to locate the sigcontext structure.
>> ./pa/linux-unwind.h:  struct sigcontext *sc;
>> ./nios2/linux-unwind.h:       struct sigcontext ctx;
>
> try to port recipes/gcc/gcc-4.2.4/sh_unwind.patch to nios. This could help
> here.
>

Will look into it. This might indeed help (actually I don't know too
much about this).
Still of course this is only a workaround. The root cause is the host
inc dir when compiling a target dir.
Thinking of it, apart from fixing the root cause (which is probably
above my capabilities), the simplest way would be just to patch the
generated Makefile and remove the offending -I
That would also solve my unistd.h problem.

Frans




More information about the Openembedded-devel mailing list