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

Lukas HANEL lukas.hanel at st.com
Mon Apr 21 19:45:29 EST 2008


Hi Matthew,

thanks for the hint, I can compile okl4 with my derived platform now.

Lukas

Matthew Warton wrote:
> Hi Lukas,
>
> Elfadorn is somewhat sensitive to the version of the linker you are
> using.  Since the default system does not use the functionality of
> ElfAdorn, the following patch may alleviate your problem by turning
> some of elfadorn's functionality off by default.
>
> Let me know how it goes.
>
> Cheers,
> Matthew Warton
>
> --- a/tools/toolchains.py       Tue Apr 15 08:48:49 2008 +1000
> +++ b/tools/toolchains.py       Sat Apr 19 16:06:38 2008 +1000
> @@ -105,7 +105,7 @@ class toolchain:
>          # Setup linker
>          self.dict["_LINK_COM_FLAGS"] = []
>          self.dict["UNADORNED_LINKCOM"] = "$LINK $_LINK_COM_FLAGS
> $LINK_PLAT_FLAGS $_LINKADDRESS $_LINKSCRIPTS $LINKFLAGS $CRTOBJECT
> $SOURCES $_LIBFLAGS -o $TARGET"
> -        self.dict["LINKCOM"] = "$ELFADORN -s -o $TARGET
> $ELFADORN_FLAGS   -- $UNADORNED_LINKCOM"
> +        self.dict["LINKCOM"] = "$ELFADORN -o $TARGET
> $ELFADORN_FLAGS   -- $UNADORNED_LINKCOM"
>
>          self.dict["LINK_PLAT_FLAGS"] = "${_platform(TOOLTYPE,
> 'link_flags')}"
>
>
> On 18/04/2008, at 5:59 PM, Lukas HANEL wrote:
>
>> 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):
>>
>>
>> _______________________________________________
>> Developer mailing list
>> Developer at okl4.org
>> https://lists.okl4.org/mailman/listinfo/developer
>
>




More information about the Developer mailing list