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
>>>>>> [email protected]
>>>>>> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
>>>>>> This message was resent by [email protected]
>>>>>> To unsubscribe see:
>>>>>> http://mailman.uclinux.org/mailman/options/uclinux-dev
>>>>> _______________________________________________
>>>>> uClinux-dev mailing list
>>>>> [email protected]
>>>>> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
>>>>> This message was resent by [email protected]
>>>>> To unsubscribe see:
>>>>> http://mailman.uclinux.org/mailman/options/uclinux-dev
>>>>>
>>>>>
>>>> _______________________________________________
>>>> uClinux-dev mailing list
>>>> [email protected]
>>>> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
>>>> This message was resent by [email protected]
>>>> To unsubscribe see:
>>>> http://mailman.uclinux.org/mailman/options/uclinux-dev
>>> _______________________________________________
>>> uClinux-dev mailing list
>>> [email protected]
>>> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
>>> This message was resent by [email protected]
>>> To unsubscribe see:
>>> http://mailman.uclinux.org/mailman/options/uclinux-dev
>>>
>>>
>>
>> _______________________________________________
>> uClinux-dev mailing list
>> [email protected]
>> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
>> This message was resent by [email protected]
>> To unsubscribe see:
>> http://mailman.uclinux.org/mailman/options/uclinux-dev
>
> _______________________________________________
> uClinux-dev mailing list
> [email protected]
> http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
> This message was resent by [email protected]
> To unsubscribe see:
> http://mailman.uclinux.org/mailman/options/uclinux-dev
>
>
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev