[yocto] SDK Problems for SuperH 4

Khem Raj raj.khem at gmail.com
Fri Oct 7 08:10:44 PDT 2016


> On Oct 7, 2016, at 12:58 AM, Martin Townsend <mtownsend1973 at gmail.com> wrote:
> 
> On Fri, Oct 7, 2016 at 8:46 AM, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>> On Fri, Oct 7, 2016 at 5:32 AM, Khem Raj <raj.khem at gmail.com> wrote:
>>> 
>>>> On Oct 6, 2016, at 12:09 PM, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>>> 
>>>> On Thu, Oct 6, 2016 at 7:57 PM, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>>>> Hi,
>>>>> 
>>>>> We have a poky sato distributions successfully built and running for
>>>>> our SuperH 4 processor board.  The problem is the SDK that is built
>>>>> when using -cpopulate_sdk doesn't.
>>>>> 
>>>>> The simple Makefile:
>>>>> hellomake: HelloWorld.c
>>>>> $(CC) -o HelloWorld HelloWorld.c
>>>> 
>>>> Hit send before I had chance to finish :)
>>>> 
>>>> ignore the missing tab but when trying to compile (after sourcing the
>>>> SDK environment) I get
>>>> sh4-poky-linux-gcc  -ml -m4
>>>> --sysroot=/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux -o HelloWorld
>>>> HelloWorld.o
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find crt1.o: No such file or directory
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find crti.o: No such file or directory
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find crtbegin.o: No such file or directory
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find -lgcc
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find -lgcc_s
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find -lc
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find -lgcc
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find -lgcc_s
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find crtend.o: No such file or directory
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/real-ld:
>>>> cannot find crtn.o: No such file or directory
>>>> 
>>>> So I tried the compiler and sysroot from the build
>>>> CC=/ws/vms/vms-rsc-yocto-build/build_vms/tmp/sysroots/x86_64-linux/usr/bin/sh4-poky-linux/sh4-poky-linux-gcc
>>>> SYSROOT=/ws/vms/vms-rsc-yocto-build/build_vms/tmp/sysroots/sh7760
>>>> 
>>>> hellomake: HelloWorld.c
>>>> $(CC) --sysroot=$(SYSROOT) -o HelloWorld HelloWorld.c
>>>> 
>>>> and it compiles fine.
>>>> 
>>>> So I ran $CC -print-search-dirs
>>>> install: /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/
>>>> programs: =/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/libexec/sh4-poky-linux/gcc/sh4-poky-linux/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/../../../../../sh4-poky-linux/bin/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/../../../../../sh4-poky-linux/bin/
>>>> libraries: =/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/../../../../../sh4-poky-linux/lib/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/../../../../../sh4-poky-linux/lib/:/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/lib/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/lib/:/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/usr/lib/sh4-poky-linux/4.9.3/:/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/usr/lib/
>>>> 
>>>> Then I checked that these files exist:
>>>> martin at martin-ubuntu-pconcepts:/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux$
>>>> find $SDKTARGETSYSROOT -name "crt*"
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/crtn.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/crti.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/crt1.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/sh4-poky-linux/4.9.3/crtendS.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/sh4-poky-linux/4.9.3/crtend.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/sh4-poky-linux/4.9.3/crtbeginT.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/sh4-poky-linux/4.9.3/crtbeginS.o
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/usr/lib/sh4-poky-linux/4.9.3/crtbegin.o
>>>> 
>>>> Putting the library search directories on a separate line
>>>> martin at martin-ubuntu-pconcepts:/opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux$
>>>> $CC -print-search-dirs | grep "^libraries:" | tr ':' '\n'
>>>> libraries
>>>> =/opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/../../../../../sh4-poky-linux/lib/sh4-poky-linux/4.9.3/
>>>> /opt/sdk/vms/2.0.2/sysroots/x86_64-pokysdk-linux/usr/lib/sh4-poky-linux/gcc/sh4-poky-linux/4.9.3/../../../../../sh4-poky-linux/lib/
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/lib/sh4-poky-linux/4.9.3/
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/lib/
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/usr/lib/sh4-poky-linux/4.9.3/
>>>> /opt/sdk/vms/2.0.2/sysroots/sh4-poky-linux/m4/usr/lib/
>>>> 
>>>> So it looks like there is a spurious m4 is the library path.  Anyone
>>>> know why this has happened and how I can fix it before I wade into the
>>>> populate_sdk task.
>>>> 
>>> 
>>> Can you pass --disable-multilib to gcc cross canadian configure options ?
>>> 
>>>> We are using the Jethro branch and we have fixed the GCC version to
>>>> 4.9.3 because this version works for SH4.
>>>> 
>>>> Many Thanks,
>>>> Martin.
>>>> --
>>>> _______________________________________________
>>>> yocto mailing list
>>>> yocto at yoctoproject.org
>>>> https://lists.yoctoproject.org/listinfo/yocto
>>> 
>> 
>> Thanks for the swift reply Khem.  I commented out the line from
>> gcc-cross-candian.inc
>> #GCCMULTILIB = "--enable-multilib"
>> 
>> and tried
>> --disable-multilib
>> in the EXTRA_OECONF
>> 
>> but I still get the same error when linking.  Let me know if there is
>> anything else I could try as I'm stumped.  Is there a workaround just
>> so I can get the developers up and running?
>> 
>> Cheers, Martin.
> 
> OK I have a workaround I create a symlink in the target sysroot
> /opt/vms/sdk/2.0.2/sysroots/sh4-poky-linux/m4 -> .
> 
> And everything now compiles fine.
> Any ideas on how to fix this in the GCC cross canadian recipe?

there might be a bug in gcc if disabling multilib did not work. Or it might
be assuming m4 to be default but then not addressing the directory structure
issue

> 
> Cheers, Martin.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 204 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20161007/d1fedff1/attachment.pgp>


More information about the yocto mailing list