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