From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <5190D3F2.7080009@xenomai.org> Date: Mon, 13 May 2013 13:52:18 +0200 From: Gilles Chanteperdrix MIME-Version: 1.0 References: <516BA4E9.3070201@xenomai.org> <90FBAEE5-D70C-4563-B9DB-776D6E4E7FA9@kabelmail.de> <516D933F.8060502@xenomai.org> <5182B1B5.1000107@xenomai.org> <12E434B4-4F26-44AC-8D50-2CF70B5089E1@kabelmail.de> <5183FFB3.1000006@xenomai.org> <8D9AB79C-4A66-4511-B08B-ACF825FED1BF@kabelmail.de> <518A98F5.30000@xenomai.org> <0ECFC8C0-CF1D-4D65-9724-B0A1A91887DC@kabelmail.de> <518CF43E.3080601@xenomai.org> <5F179C54-A023-4C27-9082-13195B16B9BB@kabelmail.de> <518D07BB.1060900@xenomai.org> <518D24E8.6070305@xenomai.org> <518D2815.7000602@xenomai.org> <19C79116-400B-4A5C-BFDA-87EEF8799554@kabelmail.de> In-Reply-To: <19C79116-400B-4A5C-BFDA-87EEF8799554@kabelmail.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai] Raspberry and Beaglebone patches List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stephan Kappertz Cc: Xenomai On 05/13/2013 12:37 PM, Stephan Kappertz wrote: > 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. That looks impossible, have you tried putting a printf at the very beginning of xeno_bind_skin_opt? I can not seem to find the function __init_xeno_interface in libnative.so.3.0.0, do you see it with the version of objdump you use? This all screams for a bug in the syscall assembly, but if xeno_bind_skin_opt gets magically inlined in libnative.so.3.0.0, we need to find the inlined version to find the assembly bug. -- Gilles.