From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Stephan Kappertz <stephan.kappertz@kabelmail.de>
Cc: Xenomai <xenomai@xenomai.org>
Subject: Re: [Xenomai] Raspberry and Beaglebone patches
Date: Tue, 14 May 2013 08:41:06 +0200 [thread overview]
Message-ID: <5191DC82.6090509@xenomai.org> (raw)
In-Reply-To: <41BEC449-99F8-4C31-AA75-B98690DB3F23@kabelmail.de>
On 05/13/2013 01:20 PM, Stephan Kappertz wrote:
> Am 13.05.2013 um 12:37 schrieb Stephan Kappertz:
>
>> Am 10.05.2013 um 19:02 schrieb Gilles Chanteperdrix:
>>
>>> On 05/10/2013 06:48 PM, Gilles Chanteperdrix wrote:
>>>
>>>> On 05/10/2013 06:40 PM, Stephan Kappertz wrote:
>>>>
>>>>>>>>
>>>>>>>
>>>>>>> I'm using your git repository directly. Applied my post.patch and
>>>>>>> compiled the kernel. So this is 3.8.0. Looks like my Xenomai user
>>>>>>> space compile was broken. Still working on fixing it.
>>>>>>
>>>>>>
>>>>>> What options did you pass to the configure script?
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Gilles.
>>>>>>
>>>>>
>>>>> ../configure --target=arm-buildroot-linux-uclibcgnueabi --host=arm-buildroot-linux-uclibcgnueabi --build=i686-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --program-prefix="" --enable-static --enable-shared CFLAGS="-march=armv7-a -mfpu=vfp3" LDFLAGS="-march=armv7-a -mfpu=vfp3" --includedir=/usr/include/xenomai/
>>>>>
>>>>> This is a buildroot build.
>>>>
>>>>
>>>> Could you:
>>>> - tell me what version of gcc, binutils, etc... you use?
>>>> - show me a disassembly of the xeno_bind_skip_opt function in libxenomai.so?
>>>> - instrument the function xeno_sigill_handler in
>>>> src/skins/common/bind.c to see if you are indeed taking the SIGILL signal?
>>>
>>>
>>> Sorry, you do not take the SIGILL handler, please instrument
>>> xeno_bind_skin_opt to print the value of "muxid" returned by the
>>> XENOMAI_SYSBIND system call.
>>>
>>> --
>>> Gilles.
>>>
>>
>>
>> Ok, here's the compiler spec:
>>
>> $ arm-linux-gnueabi-gcc -v
>> Using built-in specs.
>> COLLECT_GCC=arm-linux-gnueabi-gcc
>> COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabi/4.6/lto-wrapper
>> Target: arm-linux-gnueabi
>> Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.6.3 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-float=softfp --with-fpu=vfpv3-d16 --with-mode=thumb --disable-werror --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include --with-headers=/usr/arm-linux-gnueabi/include --with-libs=/usr/arm-linux-gnueabi/lib
>> Thread model: posix
>> gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
>>
>> Binutils are 2.22:
>>
>> arm-linux-gnueabi-as -v
>> GNU assembler version 2.22 (arm-linux-gnueabi) using BFD version (GNU Binutils for Ubuntu) 2.22
>>
>>
>> Now what's interesting is: as soon as I am adding an instrumentation "fprintf(stdout, "Xenomai: xeno_bind_skin_opt muxid = %d\n", muxid);" to "static inline int xeno_bind_skin(unsigned skin_magic, const char *skin, const char *module)", binding succeeds and all xeno-test pass. The other option to get it work was: declaring "int xeno_bind_skin(unsigned skin_magic, const char *skin, const char *module);" in bind.h and defining it in bind.c.
>>
>> If I'm only instrumenting xeno_bind_skin_opt(), I see that it never gets called in the original code.
>>
>> Do you still want to see the disassembly?
>>
>> -- Stephan
>>
>
> Oops, sent you the wrong compiler spec. Xenomai libraries & tests are compiled with:
>
> $ host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc -v
> Using built-in specs.
> COLLECT_GCC=host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc
> COLLECT_LTO_WRAPPER=/home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr/libexec/gcc/arm-buildroot-linux-uclibcgnueabi/4.6.3/lto-wrapper
> Target: arm-buildroot-linux-uclibcgnueabi
> Configured with: /home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/toolchain/gcc-4.6.3/configure --prefix=/home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-buildroot-linux-uclibcgnueabi --enable-languages=c --with-sysroot=/home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot --with-build-time-tools=/home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr/arm-buildroot-linux-uclibcgnueabi/bin --disable-__cxa_atexit --enable-target-optspace --disable-libquadmath --disable-libgomp --with-gnu-ld --disable-libssp --disable-multilib --enable-tls --enable-shared --with-gmp=/home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr --with-mpfr=/home/stephan/dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr --with-mpc=/home/stephan/dev.ws
.Centaurus_skappert/embedded/products/Carbon/AM335x/host/usr --disable-nls --enable-threads --disable-decimal-float --with-float=soft --with-abi=aapcs-linux --with-arch=armv7-a --with-tune=cortex-a8 --disable-largefile --with-pkgversion='Buildroot 2013.02' --with-bugurl=http://bugs.buildroot.net/
> Thread model: posix
> gcc version 4.6.3 (Buildroot 2013.02)
>
> /dev.ws.Centaurus_skappert/embedded/products/Carbon/AM335x$ host/usr/bin/arm-buildroot-linux-uclibcgnueabi-as -v
> GNU assembler version 2.21.1 (arm-buildroot-linux-uclibcgnueabi) using BFD version (GNU Binutils) 2.21.1
Hi Stefan,
I have no other explanation than that the combination of the toolchain
you use with Xenomai code you use produces broken code.
The version of libnative.so generated with a similar toolchain
(codesourcery 2012.03) has three pointers in its .init_array section,
these are the pointers to the functions which are invoked upon library
startup:
frame_dummy
__init_xeno_interface
__init_native_tskey
The version of libnative.so you sent me has four pointers in its
.init_array section:
0x2458
0x2254
0x22b8
0x2308
I do not have the function names, I believe, because the binary you sent
me is stripped. However, 0x2308 looks like __init_xeno_interface, 0x2254
looks like __init_native_tskey, and 0x22b8 has the following disassembly:
22b8: e92d4008 push {r3, lr}
22bc: e59f3030 ldr r3, [pc, #48] ; 22f4 <free@plt+0x108>
22c0: e59f0030 ldr r0, [pc, #48] ; 22f8 <free@plt+0x10c>
22c4: e08f3003 add r3, pc, r3
22c8: e59f102c ldr r1, [pc, #44] ; 22fc <free@plt+0x110>
22cc: e59f202c ldr r2, [pc, #44] ; 2300 <free@plt+0x114>
22d0: e7930000 ldr r0, [r3, r0]
22d4: e08f1001 add r1, pc, r1
22d8: e59f3024 ldr r3, [pc, #36] ; 2304 <free@plt+0x118>
22dc: e08f2002 add r2, pc, r2
22e0: e08f3003 add r3, pc, r3
22e4: e5900000 ldr r0, [r0]
22e8: ebffff5f bl 206c <fprintf@plt>
22ec: e3a00001 mov r0, #1
22f0: ebffff99 bl 215c <exit@plt>
Which means that it calls directly fprintf and exit, without even
calling xeno_bind_skin_opt. So, it looks like an "optimized" version of
__init_xeno_interface, assuming xeno_bind_skin_opt always return -1.
So, questions now:
- what commit in xenomai git are you using?
- could you try another toolchain ?
Regards.
--
Gilles.
next prev parent reply other threads:[~2013-05-14 6:41 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-15 6:57 [Xenomai] Raspberry and Beaglebone patches Gilles Chanteperdrix
2013-04-15 10:52 ` Paul
2013-04-15 19:46 ` Gilles Chanteperdrix
2013-04-20 23:44 ` Paul
2013-04-21 0:01 ` Jason Kridner
2013-04-16 10:26 ` Stephan Kappertz
2013-04-16 18:06 ` Gilles Chanteperdrix
[not found] ` <F484004F-9908-449C-A4DA-CB73E47EE764@kabelmail.de>
[not found] ` <5182B1B5.1000107@xenomai.org>
2013-05-03 14:28 ` Stephan Kappertz
2013-05-03 18:19 ` Gilles Chanteperdrix
2013-05-03 20:41 ` Stephan Kappertz
2013-05-08 18:27 ` Gilles Chanteperdrix
2013-05-10 11:53 ` Stephan Kappertz
2013-05-10 13:21 ` Gilles Chanteperdrix
2013-05-10 14:43 ` Stephan Kappertz
2013-05-10 14:44 ` Gilles Chanteperdrix
2013-05-10 16:40 ` Stephan Kappertz
2013-05-10 16:48 ` Gilles Chanteperdrix
2013-05-10 17:02 ` Gilles Chanteperdrix
2013-05-13 10:37 ` Stephan Kappertz
2013-05-13 11:20 ` Stephan Kappertz
2013-05-14 6:41 ` Gilles Chanteperdrix [this message]
2013-05-14 6:50 ` Gilles Chanteperdrix
2013-05-14 7:33 ` Stephan Kappertz
2013-05-14 7:53 ` Gilles Chanteperdrix
2013-05-14 9:11 ` Stephan Kappertz
2013-05-14 9:20 ` Jan Kiszka
2013-05-14 9:44 ` Stephan Kappertz
2013-05-14 10:35 ` Jan Kiszka
2013-05-14 11:02 ` Gilles Chanteperdrix
2013-05-14 11:11 ` Jan Kiszka
2013-05-14 11:26 ` Gilles Chanteperdrix
2013-05-14 11:53 ` Jan Kiszka
2013-05-14 11:19 ` Stephan Kappertz
2013-05-14 11:26 ` Jan Kiszka
2013-05-14 18:30 ` Gilles Chanteperdrix
2013-05-15 7:34 ` Stephan Kappertz
2013-05-14 8:06 ` Stephan Kappertz
2013-05-13 11:22 ` Gilles Chanteperdrix
2013-05-13 11:52 ` Gilles Chanteperdrix
2013-05-13 22:49 ` Gilles Chanteperdrix
2013-05-18 15:04 ` Gilles Chanteperdrix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5191DC82.6090509@xenomai.org \
--to=gilles.chanteperdrix@xenomai.org \
--cc=stephan.kappertz@kabelmail.de \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.