OK,

so it seems like the:
   2a:    4c39 0800 0000     mulsl 0 <init_module>,%d0
instruction is causing your illegal instruction trap.

I would suspect that the CPU you are running does not support multiplication instructions? You can look into the gcc man page to find out if there are any options you can pass to the compiler to generate instructions for your particular model.

Wolfgang

Stéphane wrote:
Hi

Ok I do that:
/opt/m68k-uclinux-tools-20060615/bin/m68k-uclinux-objdump -D xx.o


ucAsserv.o:     file format elf32-m68k

Disassembly of section .text:

00000000 <init_module>:
   0:    4e56 0000          linkw %fp,#0
   4:    42b9 0000 0000     clrl 0 <init_module>
   a:    42b9 0000 0000     clrl 0 <init_module>
  10:    42b9 0000 0000     clrl 0 <init_module>
  16:    4879 0000 0000     pea 0 <init_module>
  1c:    4eb9 0000 0000     jsr 0 <init_module>
  22:    588f               addql #4,%sp
  24:    2039 0000 0000     movel 0 <init_module>,%d0
  2a:    4c39 0800 0000     mulsl 0 <init_module>,%d0
  30:    0000
  32:    23c0 0000 0000     movel %d0,0 <init_module>
  38:    4879 0000 0000     pea 0 <init_module>
  3e:    4eb9 0000 0000     jsr 0 <init_module>
  44:    588f               addql #4,%sp
  46:    4280               clrl %d0
  48:    6000 0002          braw 4c <init_module+0x4c>
  4c:    4e5e               unlk %fp
  4e:    4e75               rts

00000050 <cleanup_module>:
  50:    4e56 0000          linkw %fp,#0
  54:    4e5e               unlk %fp
  56:    4e75               rts
Disassembly of section .bss:

00000000 <global_right_encoder>:
   0:    0000 0000          orib #0,%d0

00000004 <global_left_encoder>:
   4:    0000 0000          orib #0,%d0

00000008 <VitL>:
   8:    0000 0000          orib #0,%d0
Disassembly of section .modinfo:

00000000 <__module_kernel_version>:
   0:    6b65               bmis 67 <cleanup_module+0x17>
   2:    726e               moveq #110,%d1
   4:    656c               bcss 72 <cleanup_module+0x22>
   6:    5f76 6572 7369     subqw #7,%fp@(73696f6e)@(00003d32)
   c:    6f6e 3d32
  10:    2e34 2e33          movel %a4@(00000033,%d2:l:8),%d7
  14:    312d 7563          movew %a5@(30051),[EMAIL PROTECTED]
  18:    302d 414e          movew %a5@(16718),%d0
  1c:    492d 3130          chkl %a5@(12592),%d4
    ...

00000021 <__module_author>:
  21:    6175               bsrs 98 <cleanup_module+0x48>
  23:    7468               moveq #104,%d2
  25:    6f72               bles 99 <cleanup_module+0x49>
  27:    3d53 7465          movew %a3@,%fp@(29797)
  2b:    7068               moveq #104,%d0
  2d:    616e               bsrs 9d <cleanup_module+0x4d>
  2f:    6520               bcss 51 <cleanup_module+0x1>
  31:    4765               043545
  33:    726d               moveq #109,%d1
  35:    6169               bsrs a0 <cleanup_module+0x50>
  37:    6e00 6c69          bgtw 6ca2 <cleanup_module+0x6c52>

00000039 <__module_license>:
  39:    6c69               bges a4 <cleanup_module+0x54>
  3b:    6365               blss a2 <cleanup_module+0x52>
  3d:    6e73               bgts b2 <cleanup_module+0x62>
  3f:    653d               bcss 7e <cleanup_module+0x2e>
  41:    4750               043520
  43:    Address 0x00000045 is out of bounds.

Disassembly of section .rodata:

00000000 <.rodata>:
   0:    3c36 3e42          movew %fp@(00000042,%d3:l:8),%d6
   4:    7567               mvsw [EMAIL PROTECTED],%d2
   6:    3a0a               movew %a2,%d5
   8:    003c 363e          orib #62,%ccr
   c:    4e65               movel %a5,%usp
   e:    7665               moveq #101,%d3
  10:    7220               moveq #32,%d1
  12:    5265               addqw #1,[EMAIL PROTECTED]
  14:    6163               bsrs 79 <cleanup_module+0x29>
  16:    680a               bvcs 22 <__module_author+0x1>
    ...
Disassembly of section .comment:

00000000 <.comment>:
   0:    0047 4343          oriw #17219,%d7
   4:    3a20               movew [EMAIL PROTECTED],%d5
   6:    2847               moveal %d7,%a4
   8:    4e55 2920          linkw %a5,#10528
   c:    322e 3935          movew %fp@(14645),%d1
  10:    2e33 2032          movel %a3@(00000032,%d2:w),%d7
  14:    3030 3130 3331     movew %a0@(33313520,%d3:w),%d0
  1a:    3520
  1c:    2872 656c 6561     moveal %a2@(00006561)@(00000000),%a4
  22:    7365               mvsw [EMAIL PROTECTED],%d1
  24:    2928 436f          movel %a0@(17263),[EMAIL PROTECTED]
  28:    6c64               bges 8e <.comment+0x8e>
  2a:    4669 7265          notw %a1@(29285)
  2e:    2070 6174 6368     moveal %a0@(63686573)@(00000000),%a0
  34:    6573
  36:    202d 2032          movel %a5@(8242),%d0
  3a:    3030 3130 3331     movew %a0@(33313820,%d3:w),%d0
  40:    3820
  42:    6672               bnes b6 <cleanup_module+0x66>
  44:    6f6d               bles b3 <cleanup_module+0x63>
  46:    2068 7474          moveal %a0@(29812),%a0
  4a:    703a               moveq #58,%d0
  4c:    2f2f 6669          movel %sp@(26217),[EMAIL PROTECTED]
  50:    6464               bccs b6 <cleanup_module+0x66>
  52:    6573               bcss c7 <cleanup_module+0x77>
  54:    2e6e 6574          moveal %fp@(25972),%sp
  58:    2f63 6f6c          movel [EMAIL PROTECTED],%sp@(28524)
  5c:    6466               bccs c4 <cleanup_module+0x74>
  5e:    6972               bvss d2 <cleanup_module+0x82>
  60:    652f               bcss 91 <.comment+0x91>
  62:    2928 7543          movel %a0@(30019),[EMAIL PROTECTED]
  66:    6c69               bges d1 <cleanup_module+0x81>
  68:    6e75               bgts df <cleanup_module+0x8f>
  6a:    7820               moveq #32,%d4
  6c:    5849               addqw #4,%a1
  6e:    5020               addqb #8,[EMAIL PROTECTED]
  70:    616e               bsrs e0 <cleanup_module+0x90>
  72:    6420               bccs 94 <.comment+0x94>
  74:    7368 6172          mvsw %a0@(24946),%d1
  78:    6564               bcss de <cleanup_module+0x8e>
  7a:    206c 6962          moveal %a4@(26978),%a0
  7e:    2070 6174 6368     moveal %a0@(63686573)@(00000000),%a0
  84:    6573
  86:    2066               moveal [EMAIL PROTECTED],%a0
  88:    726f               moveq #111,%d1
  8a:    6d20               blts ac <cleanup_module+0x5c>
  8c:    6874               bvcs 102 <cleanup_module+0xb2>
  8e:    7470               moveq #112,%d2
  90:    3a2f 2f77          movew %sp@(12151),%d5
  94:    7777 2e73          mvsw %sp@(00000073,%d2:l:8),%d3
  98:    6e61               bgts fb <cleanup_module+0xab>
  9a:    7067               moveq #103,%d0
  9c:    6561               bcss ff <cleanup_module+0xaf>
  9e:    722e               moveq #46,%d1
  a0:    636f               blss 111 <cleanup_module+0xc1>
  a2:    6d2f               blts d3 <cleanup_module+0x83>
  a4:    2900               movel %d0,[EMAIL PROTECTED]





Wolfgang Reissnegger a écrit :
Hi,

try to use "objdump -D xx..o"

You should see the disassembled section of module_init.

Stéphane wrote:
Hi

I don't exactly know but:

objdump -sx xx.o :

ucAsserv.o:     file format elf32-big
ucAsserv.o
architecture: UNKNOWN!, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000058  00000000  00000000  00000034  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 ..data         00000000  00000000  00000000  0000008c  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000c  00000000  00000000  0000008c  2**2
                  ALLOC
  3 .modinfo      00000045  00000000  00000000  0000008c  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .rodata       00000019  00000000  00000000  000000d1  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .comment      000000a6  00000000  00000000  000000ea  2**0
                  CONTENTS, READONLY
SYMBOL TABLE:
00000000 l    df *ABS*    00000000 ucAsserv.c
00000000 l    d  .text    00000000 .text
00000000 l    d  .data    00000000 .data
00000000 l    d  .bss    00000000 .bss
00000000 l       .text    00000000 gcc2_compiled.
00000000 l    d  .modinfo    00000000 .modinfo
00000000 l     O .modinfo    00000021 __module_kernel_version
00000000 l    d  .rodata    00000000 .rodata
00000008 l     O .bss    00000004 VitL
00000004 l     O .bss    00000004 global_left_encoder
00000000 l     O .bss    00000004 global_right_encoder
00000039 l     O .modinfo    0000000c __module_license
00000000 l    d  .comment    00000000 .comment
00000000 g     F .text    00000050 init_module
00000000         *UND*    00000000 printk
00000050 g     F .text    00000008 cleanup_module
00000021 g     O .modinfo    00000018 __module_author


RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE
00000006 UNKNOWN           .bss+0x00000008
0000000c UNKNOWN           .bss+0x00000004
00000012 UNKNOWN           .bss
00000018 UNKNOWN           .rodata
0000001e UNKNOWN           printk
00000026 UNKNOWN           .bss+0x00000004
0000002e UNKNOWN           .bss
00000034 UNKNOWN           .bss+0x00000008
0000003a UNKNOWN           .rodata+0x00000009
00000040 UNKNOWN           printk


Contents of section .text:
 0000 4e560000 42b90000 000042b9 00000000  NV..B.....B.....
 0010 42b90000 00004879 00000000 4eb90000  B.....Hy....N...
 0020 0000588f 20390000 00004c39 08000000  ..X. 9....L9....
 0030 000023c0 00000000 48790000 00004eb9  ..#.....Hy....N.
 0040 00000000 588f4280 60000002 4e5e4e75  ....X.B.`...N^Nu
 0050 4e560000 4e5e4e75                    NV..N^Nu       Contents of
section .modinfo:
 0000 6b65726e 656c5f76 65727369 6f6e3d32  kernel_version=2
 0010 2e342e33 312d7563 302d414e 492d3130  .4.31-uc0-ANI-10
 0020 00617574 686f723d 53746570 68616e65  .author=Stephane
 0030 20476572 6d61696e 006c6963 656e7365   Germain.license
 0040 3d47504c 00                          =GPL.          Contents of
section .rodata:
 0000 3c363e42 75673a0a 003c363e 4e657665  <6>Bug:..<6>Neve
 0010 72205265 6163680a 00                 r Reach..      Contents of
section .comment:
 0000 00474343 3a202847 4e552920 322e3935  .GCC: (GNU) 2.95
 0010 2e332032 30303130 33313520 2872656c  .3 20010315 (rel
 0020 65617365 2928436f 6c644669 72652070  ease)(ColdFire p
 0030 61746368 6573202d 20323030 31303331  atches - 2001031
 0040 38206672 6f6d2068 7474703a 2f2f6669  8 from http://fi
 0050 64646573 2e6e6574 2f636f6c 64666972  ddes.net/coldfir
 0060 652f2928 75436c69 6e757820 58495020  e/)(uClinux XIP
 0070 616e6420 73686172 6564206c 69622070  and shared lib p
 0080 61746368 65732066 726f6d20 68747470  atches from http
 0090 3a2f2f77 77772e73 6e617067 6561722e  ://www.snapgear.
00a0 636f6d2f 2900 com/).




Wolfgang Reissnegger a écrit :
Hi Stéphane,

can you also generate an objdump of the module and post it?

Stéphane wrote:
Hmm,

In Makefile:

/********************/

INCLUDE := -isystem ../uClinux-dist-20060803/linux-2.4.x/include
CFLAGS  := -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC      := /opt/uClinux-m68k-elf/bin/m68k-elf-gcc
   ${TARGET}.o: ${TARGET}.c

/************************/

and with -S  :

/*****************************************/

        .file   "ucAsserv.c"
gcc2_compiled.:
.section        .modinfo,"a",@progbits
        .type    __module_kernel_version,@object
        .size    __module_kernel_version,33
__module_kernel_version:
        .string "kernel_version=2.4.31-uc0-ANI-10"
.section        .rodata
.LC0:
        .string "<6>Bug:\n"
.LC1:
        .string "<6>Never Reach\n"
.text
        .align  2
.globl init_module
        .type    init_module,@function
init_module:
        link.w %a6,#0
        clr.l VitL
        clr.l global_left_encoder
        clr.l global_right_encoder
        pea .LC0
        jsr printk
        addq.l #4,%sp
        move.l global_left_encoder,%d0
        muls.l global_right_encoder,%d0
        move.l %d0,VitL
        pea .LC1
        jsr printk
        addq.l #4,%sp
        clr.l %d0
        jbra .L95
        .align  2
.L95:
        unlk %a6
        rts
.Lfe1:
        .size    init_module,.Lfe1-init_module
        .align  2
.globl cleanup_module
        .type    cleanup_module,@function
cleanup_module:
        link.w %a6,#0
.L96:
        unlk %a6
        rts
.Lfe2:
        .size    cleanup_module,.Lfe2-cleanup_module
.globl __module_author
.section        .modinfo
        .type    __module_author,@object
        .size    __module_author,24
__module_author:
        .string "author=Stephane Germain"
        .type    __module_license,@object
        .size    __module_license,12
__module_license:
        .string "license=GPL"
        .local  global_right_encoder
        .comm   global_right_encoder,4,2
        .local  global_left_encoder
        .comm   global_left_encoder,4,2
        .local  VitL
        .comm   VitL,4,2
        .ident  "GCC: (GNU) 2.95.3 20010315 (release)(ColdFire
patches -
20010318 from
http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from
http://www.snapgear.com/)"

/***************************************************/


I use the default toolchain

/opt/uClinux-m68k-elf/bin/m68k-elf-gcc -v :
Reading specs from
/opt/uClinux-m68k-elf/lib/gcc-lib/m68k-elf/2.95.3/specs
gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from
http://fiddes.net/coldfire/)(uClinux XIP
and shared lib patches from http://www.snapgear.com/)

thanks


Wolfgang Reissnegger a écrit :
Hi Stéphane,

looks like you are compiling your code with compiler flags that
generate instructions that the processor does not support. That's why
you see the illegal instruction trap.

The reason that it all works if the variables are local is probably
that you also use an optimization flag (e.g. -O3) that causes the
compiler to optimize the whole multiplication away in main because it
has no effect on the function's result and is local to the function.

You should try to compile the code with gcc -S to generate assembler
output. Then you can identify the instruction that causes the
problem.

Cheers,
   Wolfgang

Stéphane wrote:
Hi,

I have a bug that I can be resume as:

/***************************/
#include <linux/module.h>    // Needed by all modules
#include <linux/kernel.h>    // Needed for KERN_INFO

static long global_right_encoder;
static long global_left_encoder;
static long VitL;

int init_module(void)
{
    VitL = 0;
    global_left_encoder = 0;
    global_right_encoder = 0;

    printk(KERN_INFO "Bug:\n");
       VitL = global_left_encoder*global_right_encoder;
       printk(KERN_INFO "Never Reach\n");
       return 0;
}


void cleanup_module(void)
{
}

MODULE_AUTHOR("Stephane Germain");
MODULE_LICENSE("GPL");
/**********************************/

result:

insmod xxx.o:
SIGSEGV

dmesg:
Bug:
*** ILLEGAL INSTRUCTION ***   FORMAT=0
Current process id is 47
BAD KERNEL TRAP: 00000000
PC: [<000a8bec>]
SR: 2014  SP: 007dbee8  a2: 10c16b34
d0: 00000000    d1: 00000991    d2: 00000000    d3: ffffffea
d4: 00000060    d5: 00000008    a0: 0003dc8c    a1: 0003dca8
Process insmod (pid: 47, stackpage=007db000)
Frame format=0
Stack from 007dbf1c:
        000a8c14 007d3000 007dbfc4 10c17856 007c5348 00102428
007c5348
000000e8
        00000002 00000001 007da000 00192e00 007c51c0 00190004
00140560
0015fae0
        007d3000 007d4000 00000060 0003dd58 000a8bc0 000000e8
00000000
00000000
        00000000 00000000 00000000 00000000 00000000 00000000
00000000
00000000
        00000000 00000000 00000000 00000000 00000000 00000000
00000000
00000000
        00000000 00000000 0019fdc8 10c127d2 00192e00 007c5348
00102428
007c5348
Call Trace:
        [<10c17856>] [<10c127d2>]
Code: 4c39 0800 000a 8c3c 23c0 000a 8c44 4879 000a 8c1d

/*****************************/


if the variables are local, all work!

Somebody know something that I don't  about that?

Thanks

Stephane Germain



_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev


_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev


_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev



_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to