[M3devel] ARMEL_LINUX on Raspberry Pi progress report

mika at async.caltech.edu mika at async.caltech.edu
Wed Oct 16 22:31:05 CEST 2013


It's still working its way through boot2.sh ..

here is what I have run into so far that looks wrong:

1. I get the following warning whenever I link a program (I think only as
"mika", not as "root"):

new source -> compiling Main.m3
 -> linking tnmtsetup
/usr/bin/ld: /usr/local/cm3/pkg/m3core/ARMEL_LINUX/libm3core.a(ThreadPThreadC.o)(.stab+0x2e28): R_ARM_ABS32 used with TLS symbol activations
 
I think it's just a warning because the executables still work.

2. I can't get anything with Trestle working.  I'm running in a VNC
session on a remote machine.  Not sure this has anything to do with the
compiler or even the ARM.  Has anyone seen it before (on any system)?

(gdb) cont
Continuing.
[New Thread 0x42276430 (LWP 24451)]
[Thread 0x42276430 (LWP 24451) exited]
[New Thread 0x424c6430 (LWP 24454)]
 
 
***
*** runtime error:
***    Exception "ZChildVBT.BadPercentage" not in RAISES list
***    file "../src/lego/ZChildVBT.m3", line 61
***
 
 
Program received signal SIGABRT, Aborted.
 
backtrace:
 
(gdb) where
#0  ZChildVBT__Init (z_L_120=0x422bbf70 "H\357K", ch_L_121=0x422bdb84 "\260\326K", h_L_122=0, v_L_123=1.75, loc_L_124=4 '\004', type_L_125=1 '\001', shaper_L_126=0x41a32b54, open_L_127=0 '\000') at ../src/lego/ZCh
ildVBT.m3:61
#1  0x40637518 in FormsVBT__pZChild (cl_L_1042=0x42280444, list_L_1043=0x424c54c4, s_L_1044=0x424c55dc) at ../src/FormsVBT.m3:2593
#2  0x40609f30 in FormsVBT__Item (cl_L_301=0x42280444, exp_L_302=0x41a45994 "", state_L_303=0x424c55dc) at ../src/FormsVBT.m3:250
#3  0x40648b3c in FormsVBT__AddChildren (cl_L_1229=0x42280444, v_L_1230=0x422b0634 " \365K", list_L_1231=0x41a48504, state_L_1232=0x424c55dc) at ../src/FormsVBT.m3:3671
#4  0x40634138 in FormsVBT__pZSplit (cl_L_999=0x42280444, list_L_1000=0x424c56bc, s_L_1001=0x424c57c4) at ../src/FormsVBT.m3:2454
#5  0x40609f30 in FormsVBT__Item (cl_L_301=0x42280444, exp_L_302=0x41a40ec0 "", state_L_303=0x424c57c4) at ../src/FormsVBT.m3:250
#6  0x4064838c in FormsVBT__OneChild (cl_L_1224=0x42280444, list_L_1225=0x0, state_L_1226=0x424c57c4) at ../src/FormsVBT.m3:3642
#7  0x406129c0 in FormsVBT__pShape (cl_L_496=0x42280444, list_L_497=0x424c58a4, s_L_498=0x424c59a4) at ../src/FormsVBT.m3:948
#8  0x40609f30 in FormsVBT__Item (cl_L_301=0x42280444, exp_L_302=0x41a402a4 "", state_L_303=0x424c59a4) at ../src/FormsVBT.m3:250
#9  0x4064838c in FormsVBT__OneChild (cl_L_1224=0x42280444, list_L_1225=0x0, state_L_1226=0x424c59a4) at ../src/FormsVBT.m3:3642
#10 0x4062ca10 in FormsVBT__pScale (cl_L_905=0x42280444, list_L_906=0x424c5a84, s_L_907=0x42280458) at ../src/FormsVBT.m3:2165
#11 0x40609f30 in FormsVBT__Item (cl_L_301=0x42280444, exp_L_302=0x41a4006c "", state_L_303=0x42280458) at ../src/FormsVBT.m3:250
#12 0x40606dec in FormsVBT__Apply (cl_L_293=0x42280444) at ../src/FormsVBT.m3:84
#13 0x40d27bd4 in ThreadPThread__RunThread (me_L_231=0x4c5d78 "0SLB\330]L") at ../src/thread/PTHREAD/ThreadPThread.m3:449
#14 0x40d27590 in ThreadPThread__ThreadBase (param_L_229=0x4c5d78 "0SLB\330]L") at ../src/thread/PTHREAD/ThreadPThread.m3:422
#15 0x41850bfc in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
#16 0x41933758 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#17 0x41933758 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) cont
Continuing.

3. looking at the generated C and binaries I am wondering if everything
is quite all right.  The binaries are twice as large as on x86_64 (give
or take).  Mentor is 13MB...

Looking at the C code it also looks to me like the intent was to inline things such as the following:

00000048 <m3_eq_ADDRESS>:
  48:   e52db004        push    {fp}            ; (str fp, [sp, #-4]!)
  4c:   e28db000        add     fp, sp, #0
  50:   e24dd00c        sub     sp, sp, #12
  54:   e50b0008        str     r0, [fp, #-8]
  58:   e50b100c        str     r1, [fp, #-12]
  5c:   e51b2008        ldr     r2, [fp, #-8]
  60:   e51b300c        ldr     r3, [fp, #-12]
  64:   e1520003        cmp     r2, r3
  68:   13a03000        movne   r3, #0
  6c:   03a03001        moveq   r3, #1
  70:   e1a00003        mov     r0, r3
  74:   e28bd000        add     sp, fp, #0
  78:   e8bd0800        pop     {fp}
  7c:   e12fff1e        bx      lr

yet it's not getting inlined but "threaded"...

e.g.,

(92)raspberrypi:/big/home2/mika/2/cm3-cvs/cm3/m3-ui/ui/ARMEL_LINUX>nm libm3ui.a | grep m3_eq_ADDRESS | wc
     79     237    1975

or indeed:

(95)raspberrypi:/big/home2/mika/2/cm3-cvs/cm3/m3-ui/ui/ARMEL_LINUX>nm libm3ui.a | grep ^0 | awk '{print $3}' | sort | uniq -c | sort -n | tail -50
      2 L_82_L_83
      2 m3_lt_float
      2 m3_max_float
      2 m3_min_float
      2 m3_trunc
      3 L_11_L_12
      3 L_17_L_18
      3 L_18_L_19
      3 L_19_L_20
      3 L_35_L_36
      3 L_46_L_47
      3 L_8_L_9
      3 m3_ge_float
      3 m3_le_float
      3 m3_mod_INT32
      3 m3_set_member
      3 m3_shift_UINT32
      4 L_7_L_8
      5 L_28_L_29
      5 m3_ne_float
      6 L_16_L_17
      6 L_21_L_22
      6 L_5_L_6
      7 L_3_L_4
      8 L_10_L_11
      8 m3_div_INT32
      9 L_0_L_1
     10 L_9_L_10
     10 m3_round
     11 L_14_L_15
     11 L_6_L_7
     11 m3_check_range_INT32
     12 m3_sign_extend_INT32
     13 L_2_L_3
     13 L_4_L_5
     15 L_1_L_2
     16 m3_pop_INT32
     18 m3_min_INT32
     22 m3_lt_INT32
     22 m3_max_INT32
     27 m3_eq_UINT32
     27 m3_le_INT32
     31 m3_gt_INT32
     42 m3_ne_UINT32
     57 m3_ge_INT32
     64 m3_ne_ADDRESS
     79 m3_eq_ADDRESS
     81 m3_extract_UINT32
     83 m3_ne_INT32
    208 m3_eq_INT32

where... (judging from the macros in the .c this might be important):

(96)raspberrypi:/big/home2/mika/2/cm3-cvs/cm3/m3-ui/ui/ARMEL_LINUX>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-14+rpi1' --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/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.6.3 (Debian 4.6.3-14+rpi1) 



      Mika



More information about the M3devel mailing list