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

Reply via email to