[okl4-developer] Elfweaver / Linker problem with arm926 on okl4_2.1

Lukas HANEL lukas.hanel at st.com
Fri Apr 18 17:59:01 EST 2008


Hi

When porting to the 2.1 release, after solving the above problem and
some missing includes(see end) I run into problems with Elfweaver /
Linker. I have no initial idea how to solve this problem and am glad to
get any idea. See the following output.

Command to build l4test
~/okl4_2.1$ ./tools/build.py machine=nhk15 project=l4test --debug=presub
[]
~/okl4_2.1$ rm build/pistachio/bin/kernel
~/okl4_2.1$ ./tools/build.py machine=nhk15 project=l4test --debug=presub
scons: Reading SConscript files ...
architecture arm is not yet supported by libcompat.
architecture arm is not yet supported by libcompat.
scons: done reading SConscript files.
scons: Building targets ...
[LINK] build/pistachio/bin/kernel
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.text' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.glue_7' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.glue_7t' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.rodata' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.kdebug' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.init' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.roinit' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.data' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.got' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.got.plt' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.kdebug-data' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.bss' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.kspace' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.traps' not in segment
arm-linux-ld: build/pistachio/bin/kernel: warning: allocated section
`.utcb_page' not in segment
Building build/images/image.elf with action:
  tools/pyelf/elfweaver --traceback merge -o$TARGET $SOURCE
[ELF ] build/images/image.elf
Could not find address f001f844 in Image
An error occurred: None
Now printing a traceback.

Traceback (most recent call last):
  File "tools/pyelf/elfweaver", line 74, in ?
    main(sys.argv)
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/main.py", line 94, in main
    commands[args[1]](args[2:])
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/merge.py", line 187, in
merge_cmd
    merge(spec_file, options)
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/merge.py", line 119, in
merge
    namespace, image, machine, pools, bootinfo)
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/merge.py", line 95, in
collect_image_objects
    collect_kernel_element(parsed, kernel_heap_size, namespace, image,
machine, pools)
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/kernel_xml.py", line
190, in collect_kernel_element
    dynamic_attrs.size = max_threads * get_tcb_size(elf, image)
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/kernel_xml.py", line
118, in get_tcb_size
    return image.get_value(addr, size, elf.endianess)
  File "/home/lukas/okl4_2.1/tools/pyelf/weaver/image.py", line 887, in
get_value
    raise "can't find symbol"
can't find symbol

Building build/images/image.sim with action:
  tools/pyelf/elfweaver modify -o$TARGET $SOURCE --physical_entry
[ELF ] build/images/image.sim
An error occurred: [Errno 2] No such file or directory:
'build/images/image.elf'
Building build/images/image.boot with action:
  tools/pyelf/elfweaver modify -o$TARGET $SOURCE --physical_entry --physical
[ELF ] build/images/image.boot
An error occurred: [Errno 2] No such file or directory:
'build/images/image.elf'
scons: done building targets.

------------------------------------------------------------------------
To know what the compiler is realy doing it is a big aid to change the
scons toolchain informational output from the [CPP ] $TARGET to [CPP ]
$COMMAND. However, I did not found a way to achieve the same thing for
the Linker. Can you give me a hint?

okl4_2.1/tools/toolchains.py
class toolchain:
        self.dict["CXXCOMSTR"] = "[CXX ] $CXXCOM"
#        self.dict["CXXCOMSTR"] = "[CXX ] $TARGET"

thanks,
Lukas

------------------------------------------------------------------------
Needed changes to arch/arm/pistachio/cpu/arm926ejs:

~/okl4_2.1$ diff -Naur arch/arm/pistachio/
../okl4_2.1original/arch/arm/pistachio/

diff -Naur arch/arm/pistachio/cpu/arm926ejs/include/cache.h
../okl4_2.1original/arch/arm/pistachio/cpu/arm926ejs/include/cache.h
--- arch/arm/pistachio/cpu/arm926ejs/include/cache.h    2008-04-17
17:10:46.000000000 +0200
+++
../okl4_2.1original/arch/arm/pistachio/cpu/arm926ejs/include/cache.h       
2008-04-15 03:24:28.000000000 +0200
@@ -65,11 +65,10 @@
 #ifndef __ARCH__ARM__ARM926EJ_CACHE_H_
 #define __ARCH__ARM__ARM926EJ_CACHE_H_
 
-#include <kernel/debug.h>
-#include <kernel/cpu/syscon.h>
-#include <kernel/cache.h>
-#include <kernel/plat/platform.h> /* Get cache size */
-#include <kernel/arch/asm.h>
+#include <debug.h>
+#include <cpu/syscon.h>
+#include <cache.h>
+#include <plat/platform.h> /* Get cache size */
 
 /* Write-through mode on arm926 */
 #define CPU_WRITETHROUGH        2
diff -Naur arch/arm/pistachio/cpu/arm926ejs/include/cpu.h
../okl4_2.1original/arch/arm/pistachio/cpu/arm926ejs/include/cpu.h
--- arch/arm/pistachio/cpu/arm926ejs/include/cpu.h      2008-04-17
17:13:03.000000000 +0200
+++ ../okl4_2.1original/arch/arm/pistachio/cpu/arm926ejs/include/cpu.h 
2008-04-15 03:24:28.000000000 +0200
@@ -65,8 +65,6 @@
 #ifndef __ARCH__ARM__ARM926EJ__CPU_H_
 #define __ARCH__ARM__ARM926EJ__CPU_H_
 
-#define IODEVICE_VADDR          IO_AREA0_VADDR
-
 #include <kernel/arch/asm.h>
 class arm_cpu
 {
@@ -97,7 +95,7 @@
 
     static inline void sleep(void)
     {
-        int zero = 0;
+        word_t zero = 0;
         /* Versatile cannot currently sleep as it's timers
          * will be turned off and it will never wake up
          * so busy wait for now
l

------------------------------------------------------------------------
Lukas Hänel wrote:
> Hi
> I am trying to port OKL4 to a platform based on the arm926ejs core.
> Therefore I copied the xscale platform folder and changed the
> tools/machines.py to be based on an other processor architecture.
> E.g.
> < class pxa(xscale):
> > class pxa(arm926ejs):




More information about the Developer mailing list