[Bug target/56473] Cross Compile Ubuntu x86_64 to Raspberry Pi Code Seg Faults When Executed
tomdean at speakeasy dot org
gcc-bugzilla@gcc.gnu.org
Thu Feb 28 00:39:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56473
--- Comment #4 from Thomas Dean <tomdean at speakeasy dot org> 2013-02-28 00:38:56 UTC ---
Looking again at gdb, _start from ubuntu is not the same as _start on
RaspberryPi, although both compiler versions are the same.
###################
## build on ubuntu
## gdb on raspi
tomdean@raspberrypi:~/p9x79/bug$ gdb hello
GNU gdb (GDB) 7.4.1-debian
<snip>
Reading symbols from /home/tomdean/p9x79/bug/hello...done.
(gdb) b main
Breakpoint 1 at 0x8364: file hello.c, line 3.
(gdb) r
Starting program: /home/tomdean/p9x79/bug/hello
Program received signal SIGSEGV, Segmentation fault.
0x000573a6 in ?? ()
(gdb) bt
#0 0x000573a6 in ?? ()
#1 0x000082ee in _start ()
(gdb) disassemble/r _start
Dump of assembler code for function _start:
0x000082e4 <+0>: 4f f0 00 0b mov.w r11, #0
0x000082e8 <+4>: 4f f0 00 0e mov.w lr, #0
0x000082ec <+8>: 5d f8 04 1b ldr.w r1, [sp], #4
0x000082f0 <+12>: 6a 46 mov r2, sp
0x000082f2 <+14>: 4d f8 04 2d str.w r2, [sp, #-4]!
0x000082f6 <+18>: 4d f8 04 0d str.w r0, [sp, #-4]!
0x000082fa <+22>: df f8 14 c0 ldr.w r12, [pc, #20] ; 0x8310
<_start+44>
0x000082fe <+26>: 4d f8 04 cd str.w r12, [sp, #-4]!
0x00008302 <+30>: 04 48 ldr r0, [pc, #16] ; (0x8314 <_start+48>)
0x00008304 <+32>: 04 4b ldr r3, [pc, #16] ; (0x8318 <_start+52>)
0x00008306 <+34>: ff f7 da ef blx 0x82bc <__libc_start_main>
0x0000830a <+38>: ff f7 e6 ef blx 0x82d8 <abort>
0x0000830e <+42>: 00 00 bd 83 ; <UNDEFINED>
instruction: 0x83bd0000
0x00008312 <+46>: 00 00 5c 83 cmphi r12, #0
0x00008316 <+50>: 00 00 79 83 cmnhi r9, #0
0x0000831a <+54>: 00 00 03 4b blmi 0xc8322
End of assembler dump.
###################
## compile on ubuntu
## link on raspi
## gdb on raspi
ubuntu> arm-linux-gnueabihf-gcc-4.6 -g -mcpu=arm1176jzf-s -mfpu=vfp
-mfloat-abi=hard -marm hello.c -Wl,-t -c -o hello.o
tomdean@raspberrypi:~/p9x79/bug$ arm-linux-gnueabihf-gcc-4.6 -g
-mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -marm hello.o -Wl,-t -o
~/work/hello
tomdean@raspberrypi:~/p9x79/bug$ gdb ~/work/hello
GNU gdb (GDB) 7.4.1-debian
<snip>
Reading symbols from /home/tomdean/work/hello...done.
(gdb) b main
Breakpoint 1 at 0x8398: file hello.c, line 3.
(gdb) r
Starting program: /home/tomdean/work/hello
Breakpoint 1, main () at hello.c:3
3 return 0;
(gdb) disassemble/r _start
Dump of assembler code for function _start:
0x000082e4 <+0>: 00 b0 a0 e3 mov r11, #0
0x000082e8 <+4>: 00 e0 a0 e3 mov lr, #0
0x000082ec <+8>: 04 10 9d e4 pop {r1} ; (ldr r1,
[sp], #4)
0x000082f0 <+12>: 0d 20 a0 e1 mov r2, sp
0x000082f4 <+16>: 04 20 2d e5 push {r2} ; (str r2, [sp,
#-4]!)
0x000082f8 <+20>: 04 00 2d e5 push {r0} ; (str r0, [sp,
#-4]!)
0x000082fc <+24>: 10 c0 9f e5 ldr r12, [pc, #16] ; 0x8314
<_start+48>
0x00008300 <+28>: 04 c0 2d e5 push {r12} ; (str r12,
[sp, #-4]!)
0x00008304 <+32>: 0c 00 9f e5 ldr r0, [pc, #12] ; 0x8318
<_start+52>
0x00008308 <+36>: 0c 30 9f e5 ldr r3, [pc, #12] ; 0x831c
<_start+56>
0x0000830c <+40>: eb ff ff eb bl 0x82c0 <__libc_start_main>
0x00008310 <+44>: f0 ff ff eb bl 0x82d8 <abort>
0x00008314 <+48>: 0c 84 00 00 andeq r8, r0, r12, lsl #8
0x00008318 <+52>: 90 83 00 00 muleq r0, r0, r3
0x0000831c <+56>: ac 83 00 00 andeq r8, r0, r12, lsr #7
End of assembler dump.
More information about the Gcc-bugs
mailing list