[okl4-developer] Hello World on arm926ejs (continued)

Hugues Balp hugues.balp at thalesgroup.com
Fri Nov 14 21:15:10 EST 2008


Thanks for your advices.

I have now downloaded from the OKL4 wiki the binary version of the
arm-unkown-linux-gnueabi crosstool chain and recompiled from scratch
the singlecell example within the binary SDK.

The images are well generated but they don't work better on my host
than the images I have built in parallel with my own crosstool chain...

In both cases a warning exception is raised because no DNS server is found,
which is a little surprising when the test is performed locally.

      "Warning: No DNS servers found"

This problem doesn't seem to be blocking and occurs also in other
qemu use cases contexts as I can when googling a little on the subject...
But perhaps this explain what happens after ? I don't know !

So when I run qemu with the following command:

   qemu-system-arm -s -M versatileab -start-addr 0x07900000 -nographic -kernel
build.micro-debug/images/image.elf

 the warning is printed on stdout and the process enter in an infinite loop
without printing any "Hello World" message...

I've tried to debug with gdb by starting qemu with the '-s' option
and running gdb,
    loading the symbol table of the "hello" program and
    opening a remote target connection to the default local port 1234.
After the connection to the qemu process I typed 'c' to continue the
execution and then stopped to see the stack...
No symbols are readable... Only some ?? and 0x0....
I don't have change the endian-ness ( little by default on PC and ARM ).

What is surprising is to see the entry point address settled to
0x7900000 only in the image.boot and image.sim files and not in the
image.elf nor in the image.elf.nobits files.

Another suprising thing is to see the following message on stderr
when viewing the full symbol list of the elf image thanks to "readelf -a"

...
  2247: 8000fba0     4 OBJECT  GLOBAL DEFAULT    6 hello-_kr_malloc_freep
  2248: 8000fec0     4 OBJECT  GLOBAL DEFAULT    6readelf: Warning: corrupt note
found at offset 0 into core notes
readelf: Warning:  type: 1, namesize: 00000011, descsize: 00000300
 hello-sys_siglist
  2249: 8000fba4     4 OBJECT  GLOBAL DEFAULT    6 hello-__malloc_bss
...

You can also find here attached the elf header so as the system traces
when I run qemu with the image.elf file....( I have splitted the end
because it is a periodic repetition of getimeofday and select calls... ).

Concerning the compilation of qemu, I have tried both with gcc-3.4.6
et gcc-4.2.4. No differences when loading the image....

The compilation process of qemu-system-arm seems to be ok because I
have tried it with another SDK ( namely for the kzm platform
supporting arm1136js processors ) and the hello elf image runs
well for this target. In that case, the readelf -a command doesn't
raise a warning as for the arm629ejs target !

To sum up the hello world is ok on my host for arm1136js but not
 for arm926ejs, and I think something goes wrong with the SDK for
arm926ejs...

Did you have tested the singlecell example after recompilation
from scratch of the crosstool chain and of the SDK-arm926ejs ?

Could you please try the image I have sent to you in the preceding
message to check if you encouter the same troubles with it ?

On the other hand I could try a 'reference' image.elf file the
singlecell example on arm926ejs that you can send to me in order to test if the
problem is due to my system environments or not ( ubuntu hardy and
 gentoo based-systems ).

Best regards,

     Hugues Balp.



------------------------------------------------------------------------

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            ARM
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0xf0000000
  Start of program headers:          52 (bytes into file)
  Start of section headers:          378520 (bytes into file)
  Flags:                             0x200, GNU EABI, software FP
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         7
  Size of section headers:           40 (bytes)
  Number of section headers:         24
  Section header string table index: 21

------------------------------------------------------------------------

execve("/opt/okqemu/bin/qemu-system-arm", ["/opt/okqemu/bin/qemu-system-arm", "-M", "versatileab", "-start-addr", "0x07900000", "-nographic", "-kernel", "build.micro-debug/images/image.e"...], [/* 37 vars */]) = 0
uname({sys="Linux", node="TRTP8051", ...}) = 0
brk(0)                                  = 0x8482000
brk(0x8482cb0)                          = 0x8482cb0
set_thread_area({entry_number:-1 -> 6, base_addr:0x8482830, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
set_tid_address(0x8482878)              = 13376
set_robust_list(0x8482880, 0xc)         = 0
futex(0xbfef00c8, 0x81 /* FUTEX_??? */, 1) = 0
rt_sigaction(SIGRTMIN, {0x8199340, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x8199270, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="TRTP8051", ...}) = 0
brk(0x84a3cb0)                          = 0x84a3cb0
brk(0x84a4000)                          = 0x84a4000
rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 717921896}) = 0
rt_sigaction(SIGALRM, {0x8049100, ~[RTMIN RT_1], 0}, NULL, 8) = 0
timer_create(CLOCK_REALTIME, {(nil), SIGALRM, SIGEV_SIGNAL, {...}}, {(nil)}) = 0
rt_sigaction(SIGUSR2, {0x805a7b0, ~[RTMIN RT_1], 0}, NULL, 8) = 0
open("/etc/resolv.conf", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=151, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
read(3, "# Dynamic resolv.conf(5) file fo"..., 4096) = 151
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f9c000, 4096)                = 0
write(2, "Warning: No DNS servers found\n", 30Warning: No DNS servers found
) = 30
uname({sys="Linux", node="TRTP8051", ...}) = 0
open("/etc/resolv.conf", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=151, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
read(3, "# Dynamic resolv.conf(5) file fo"..., 4096) = 151
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f9c000, 4096)                = 0
uname({sys="Linux", node="TRTP8051", ...}) = 0
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=151, ...}) = 0
open("/etc/resolv.conf", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=151, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
read(3, "# Dynamic resolv.conf(5) file fo"..., 4096) = 151
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f9c000, 4096)                = 0
uname({sys="Linux", node="TRTP8051", ...}) = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
open("/etc/nsswitch.conf", O_RDONLY)    = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=513, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 513
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f9c000, 4096)                = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=101035, ...}) = 0
mmap2(NULL, 101035, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f84000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libnss_files.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\30"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=38408, ...}) = 0
mmap2(NULL, 41624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f79000
mmap2(0xb7f82000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0xb7f82000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1294572, ...}) = 0
mmap2(NULL, 1300080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e3b000
mmap2(0xb7f73000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138) = 0xb7f73000
mmap2(0xb7f76000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f76000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/ld-linux.so.2", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\10\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=113248, ...}) = 0
mmap2(NULL, 112232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e1f000
mmap2(0xb7e39000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a) = 0xb7e39000
close(3)                                = 0
mprotect(0xb7f73000, 4096, PROT_READ)   = 0
munmap(0xb7f84000, 101035)              = 0
open("/etc/host.conf", O_RDONLY)        = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
read(3, "# The \"order\" line is only used "..., 4096) = 92
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f9c000, 4096)                = 0
futex(0x828c440, 0x81 /* FUTEX_??? */, 2147483647) = 0
mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d1f000
open("/etc/hosts", O_RDONLY|0x80000 /* O_??? */) = 3
fcntl64(3, F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
fstat64(3, {st_mode=S_IFREG|0644, st_size=334, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f9c000
read(3, "127.0.0.1\tlocalhost\n#192.168.1.1"..., 4096) = 334
close(3)                                = 0
munmap(0xb7f9c000, 4096)                = 0
mmap2(NULL, 134225920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xafd1d000
mmap2(NULL, 33554432, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xadd1d000
mprotect(0x8475000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mmap2(NULL, 18878464, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xacb1c000
mmap2(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xacafa000
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
fcntl64(0, F_GETFL)                     = 0x2 (flags O_RDWR)
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost -isig -icanon -echo ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost -isig -icanon -echo ...}) = 0
fcntl64(0, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
brk(0)                                  = 0x84a4000
brk(0x84c5000)                          = 0x84c5000
brk(0)                                  = 0x84c5000
brk(0x84e7000)                          = 0x84e7000
brk(0)                                  = 0x84e7000
brk(0x8509000)                          = 0x8509000
brk(0)                                  = 0x8509000
brk(0x852b000)                          = 0x852b000
brk(0)                                  = 0x852b000
brk(0x854d000)                          = 0x854d000
brk(0)                                  = 0x854d000
brk(0x856f000)                          = 0x856f000
brk(0)                                  = 0x856f000
brk(0x8591000)                          = 0x8591000
brk(0)                                  = 0x8591000
brk(0x85b3000)                          = 0x85b3000
brk(0)                                  = 0x85b3000
brk(0x85d5000)                          = 0x85d5000
brk(0)                                  = 0x85d5000
brk(0x85f7000)                          = 0x85f7000
time(NULL)                              = 1226572445
open("/etc/localtime", O_RDONLY)        = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xacaf9000
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\f\0\0"..., 4096) = 2945
_llseek(3, -28, [2917], SEEK_CUR)       = 0
read(3, "\nCET-1CEST,M3.5.0,M10.5.0/3\n", 4096) = 28
close(3)                                = 0
munmap(0xacaf9000, 4096)                = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2945, ...}) = 0
open("build.micro-debug/images/image.elf", O_RDONLY|O_LARGEFILE) = 3
read(3, "\177ELF\1\1\1a\0\0\0\0\0\0\0\0", 16) = 16
_llseek(3, 0, [0], SEEK_SET)            = 0
read(3, "\177ELF\1\1\1a\0\0\0\0\0\0\0\0\2\0(\0\1\0\0\0\0\0\0\360"..., 52) = 52
_llseek(3, 378520, [378520], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 342405, [342405], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0\0\360\0\0\0"..., 36112) = 36112
_llseek(3, 303104, [303104], SEEK_SET)  = 0
brk(0)                                  = 0x85f7000
brk(0x861d000)                          = 0x861d000
read(3, "\0$a\0$d\0_Z19finish_sys_schedulev\0"..., 38197) = 38197
_llseek(3, 52, [52], SEEK_SET)          = 0
read(3, "\1\0\0\0\0\200\0\0\0\0\0\360\0\0\220\7,w\2\0,w\2\0\5\0"..., 224) = 224
mmap2(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xacad2000
_llseek(3, 32768, [32768], SEEK_SET)    = 0
read(3, "\323\360)\343x\0\240\343\20\17\1\356~\377\27\356\375\377"..., 161580) = 161580
munmap(0xacad2000, 163840)              = 0
_llseek(3, 196608, [196608], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 7120) = 7120
_llseek(3, 229376, [229376], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 24576) = 24576
_llseek(3, 262144, [262144], SEEK_SET)  = 0
read(3, "\34\0\237\345\0\0\220\345D\0\220\345\26\0\0\352\4\0\235"..., 31276) = 31276
_llseek(3, 293436, [293436], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0,y\0\200\\\373\0\200\0\0\0\0\360"..., 344) = 344
_llseek(3, 294912, [294912], SEEK_SET)  = 0
read(3, "\33\0\244\262\204\10\1\200\334\0\1\200\214\10\1\200\340"..., 2592) = 2592
_llseek(3, 299008, [299008], SEEK_SET)  = 0
read(3, "(\1\25\6\1\0\0\0\2\0\1\0\0\4 \4\3\0\2\0\0\1\0\1\0\1\0\0"..., 4096) = 4096
close(3)                                = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 758189225}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 758255228}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 250000}}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, xd{8268, 758471539}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 758534260}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 65330}}) = 0
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
select(1, [0], [], [], {0, 0})          = 0 (Timeout)
gettimeofday({1226572445, 40366}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 759678186}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 759815013}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 759925997}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 760070646}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 29000000}}, NULL) = 0
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
select(1, [0], [], [], {0, 0})          = 0 (Timeout)
gettimeofday({1226572445, 70676}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 789870126}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 789934454}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 790031608}) = 0
clock_gettime(CLOCK_MONOTONIC, {8268, 790099288}) = 0
timer_gettime(0, {it_interval={0, 0}, it_value={0, 0}}) = 0
timer_settime(0, 0, {it_interval={0, 0}, it_value={0, 30000000}}, NULL) = 0
--- SIGALRM (Alarm clock) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
etc...
--- SIGTERM (Terminated) @ 0 (0) ---
+++ killed by SIGTERM +++

Process 13376 detached




More information about the Developer mailing list