
#10863: "hello world" produces illegal instruction error ----------------------------------+--------------------------------- Reporter: Ansible | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.2 Resolution: | Keywords: Operating System: Linux | Architecture: arm Type of failure: Runtime crash | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: ----------------------------------+--------------------------------- Comment (by rwbarton): Ok so `main` is Thumb code (mixed 2- and 4-byte instructions) but it was called as ARM mode. The evidence is that the T bit (bit 5, `0x00000200`) in the CPSR is not set, and we are in the middle of a Thumb instruction `main+16`, presumably by managing to stumble through four 32-bit ARM instructions. I don't understand ''why'' `main` is Thumb code though. `main` is built from a C file with `gcc` when the executable is built. Could you attach the output of building your program with `ghc -v`? I assume `gcc` is not being invoked with `-mthumb`... Maybe a dumb question, but can you compile and run a simple C hello world program? If you run it in gdb and break on `main`, is it ARM code or Thumb code? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10863#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler