Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and -m64 flags I got as far as the following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o
COMPILE fpu.o
COMPILE framebuffer.o
COMPILE hw_emul.o
COMPILE ifx86emu.o
COMPILE main.o
COMPILE ops.o
COMPILE ops2.o
COMPILE prim_ops.o
COMPILE sys.o
LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned int)'
collect2: ld returned 1 exit status
make[2]: *** [vesa_drv] Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
Hello Daniel,
we didn't integrated 64 bit compilation in the build system for Genode/Fiasco.OC at this time, so we didn't test it. So far, the only base-platform for Genode supporting 64 bit was Linux. Because most code of Genode is generic and shared between the Linux and Fiasco.OC version, I do not expect a lot of pitfalls, after preparation of the build-system is done.
The vesa driver you've tried to compile isn't build for Genode/Linux, so it was never compiled as 64 bit binary before. Thereby you've probably triggered a 32/64 bit compatibility issue here.
We're attended to enable 64 bit for Genode/Fiasco.OC, and fix the problem in the vesa driver as soon as possible.
Thank you for your report!
Regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n > COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv] Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n > COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv] Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Stefan, Great, I will give it a try today hopefully.
Daniel
On 03/10/2011 05:37 AM, Stefan Kalkowski wrote:
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n> COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv] Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Stefan, Good news is that the x86_64 build seemed to work. Bad news is that it *may* have broken the linux_x86 build...see below. You might want to check this yourself.
Thanks Daniel
Library thread Library signal Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Thursday, March 10, 2011 5:38 AM To: genode-main@lists.sourceforge.net Subject: Re: 64bit Genode and Fiasco.OC
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and m64 flags I got as far as the
following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n > COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned
short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned
int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned
int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv]
Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Daniel,
On 03/11/2011 04:29 PM, Daniel Waddington wrote:
Hi Stefan, Good news is that the x86_64 build seemed to work. Bad news is that it *may* have broken the linux_x86 build...see below. You might want to check this yourself.
I don't think this has something to do with the 64-bit patch for Fiasco.OC.
I guess you tried to build Genode's Linux version on a 64-bit system with Gendode's 32-bit toolchain.
The Genode build system uses some heuristic to determine which Linux version to build for you, by analyzing the underlying system, so it tries to build a 64-bit version for you, while using a compiler targeting 32-bit. To circumvent this heuristic, you can explicitly state in the 'etc/specs.conf' to build the 32-bit version:
SPECS = genode linux_x86_32 sdl
or change the compiler to target 64bit.
I hope that helps.
Best regards. Stefan
Thanks Daniel
Library thread Library signal Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Thursday, March 10, 2011 5:38 AM To: genode-main@lists.sourceforge.net Subject: Re: 64bit Genode and Fiasco.OC
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the
following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n > COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned
short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned
int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned
int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv]
Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Stefan, I didn't realize that the linux_x86 would build with the 64bit compiler. This now works fine on a 64bit host. However, I couldn't get the 32bit compiler to work with your suggested SPECS flags though - it still trys to compile the 64bit version.
Daniel
On 03/11/2011 07:52 AM, Stefan Kalkowski wrote:
Hi Daniel,
On 03/11/2011 04:29 PM, Daniel Waddington wrote:
Hi Stefan, Good news is that the x86_64 build seemed to work. Bad news is that it *may* have broken the linux_x86 build...see below. You might want to check this yourself.
I don't think this has something to do with the 64-bit patch for Fiasco.OC.
I guess you tried to build Genode's Linux version on a 64-bit system with Gendode's 32-bit toolchain.
The Genode build system uses some heuristic to determine which Linux version to build for you, by analyzing the underlying system, so it tries to build a 64-bit version for you, while using a compiler targeting 32-bit. To circumvent this heuristic, you can explicitly state in the 'etc/specs.conf' to build the 32-bit version:
SPECS = genode linux_x86_32 sdl
or change the compiler to target 64bit.
I hope that helps.
Best regards. Stefan
Thanks Daniel
Library thread Library signal Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Thursday, March 10, 2011 5:38 AM To: genode-main@lists.sourceforge.net Subject: Re: 64bit Genode and Fiasco.OC
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the
following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n> COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned
short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned
int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned
int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv]
Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Daniel,
On 03/11/2011 05:39 PM, Daniel Waddington wrote:
Hi Stefan, I didn't realize that the linux_x86 would build with the 64bit compiler.
in fact, it doesn't chooses the compiler, but which include pathes and assembler-files to use. The build-system simply uses the compiler found at '/usr/local/genode-gcc/bin/genode-x86-...' by default, and uses its default target. So if you have installed a compiler, which targets only 32bit or 64bit, of course you can only build for that platform.
Unfortunately, our 'toolchain'-script produces a compiler, that only targets the underlying platform, and not both (the pre-compiled version targets 32bit only). We'll fix that issue, and thereby use -m<arch> switches for building Genode to circumvent such problems in the future.
By now, a preliminary solution for you might be to install both compiler variants, and tell Genode's build-system which compiler to use, by overriding the following variable in 'etc/tools.conf':
CROSS_DEV_PREFIX = /usr/local/genode-gcc/bin/genode-gcc-
By stating compiler and spec-variables explicitly, you should be able to build all platforms in the same environment.
Regards Stefan
This now works fine on a 64bit host. However, I couldn't get the 32bit compiler to work with your suggested SPECS flags though - it still trys to compile the 64bit version.
Daniel
On 03/11/2011 07:52 AM, Stefan Kalkowski wrote:
Hi Daniel,
On 03/11/2011 04:29 PM, Daniel Waddington wrote:
Hi Stefan, Good news is that the x86_64 build seemed to work. Bad news is that it *may* have broken the linux_x86 build...see below. You might want to check this yourself.
I don't think this has something to do with the 64-bit patch for Fiasco.OC.
I guess you tried to build Genode's Linux version on a 64-bit system with Gendode's 32-bit toolchain.
The Genode build system uses some heuristic to determine which Linux version to build for you, by analyzing the underlying system, so it tries to build a 64-bit version for you, while using a compiler targeting 32-bit. To circumvent this heuristic, you can explicitly state in the 'etc/specs.conf' to build the 32-bit version:
SPECS = genode linux_x86_32 sdl
or change the compiler to target 64bit.
I hope that helps.
Best regards. Stefan
Thanks Daniel
Library thread Library signal Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Thursday, March 10, 2011 5:38 AM To: genode-main@lists.sourceforge.net Subject: Re: 64bit Genode and Fiasco.OC
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the
following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n > COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned
short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned
int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned
int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv]
Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
--
*Daniel G. Waddington Ph.D. C.Sci. **| **Samsung Information Systems America (SISA)*
Principal Engineer/Research Manager, Systems Research Group, Computer Science Lab
t: 408-544-5675 f: 408-544-5540 c: 408-890-0479
d.waddington@...60... mailto:d.waddington@...60...
- ****P*lease consider the environment before printing this email.
This message is intended only for the named recipient(s) above and may contain confidential or privileged informat ion or protected attorney work product. If you are not the intended recipient, any review, dissemination, distribution or copying is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete this message and its attachments from your computer and dispose of all other copies or printouts. Thank you.
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan, Sorry, I should have clarified that I am using the tools.conf already to set the compiler prefix to the right compiler. Still didn't help ;-( Daniel
On 03/11/2011 09:07 AM, Stefan Kalkowski wrote:
Hi Daniel,
On 03/11/2011 05:39 PM, Daniel Waddington wrote:
Hi Stefan, I didn't realize that the linux_x86 would build with the 64bit compiler.
in fact, it doesn't chooses the compiler, but which include pathes and assembler-files to use. The build-system simply uses the compiler found at '/usr/local/genode-gcc/bin/genode-x86-...' by default, and uses its default target. So if you have installed a compiler, which targets only 32bit or 64bit, of course you can only build for that platform.
Unfortunately, our 'toolchain'-script produces a compiler, that only targets the underlying platform, and not both (the pre-compiled version targets 32bit only). We'll fix that issue, and thereby use -m<arch> switches for building Genode to circumvent such problems in the future.
By now, a preliminary solution for you might be to install both compiler variants, and tell Genode's build-system which compiler to use, by overriding the following variable in 'etc/tools.conf':
CROSS_DEV_PREFIX = /usr/local/genode-gcc/bin/genode-gcc-
By stating compiler and spec-variables explicitly, you should be able to build all platforms in the same environment.
Regards Stefan
This now works fine on a 64bit host. However, I couldn't get the 32bit compiler to work with your suggested SPECS flags though - it still trys to compile the 64bit version.
Daniel
On 03/11/2011 07:52 AM, Stefan Kalkowski wrote:
Hi Daniel,
On 03/11/2011 04:29 PM, Daniel Waddington wrote:
Hi Stefan, Good news is that the x86_64 build seemed to work. Bad news is that it *may* have broken the linux_x86 build...see below. You might want to check this yourself.
I don't think this has something to do with the 64-bit patch for Fiasco.OC.
I guess you tried to build Genode's Linux version on a 64-bit system with Gendode's 32-bit toolchain.
The Genode build system uses some heuristic to determine which Linux version to build for you, by analyzing the underlying system, so it tries to build a 64-bit version for you, while using a compiler targeting 32-bit. To circumvent this heuristic, you can explicitly state in the 'etc/specs.conf' to build the 32-bit version:
SPECS = genode linux_x86_32 sdl
or change the compiler to target 64bit.
I hope that helps.
Best regards. Stefan
Thanks Daniel
Library thread Library signal Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Thursday, March 10, 2011 5:38 AM To: genode-main@lists.sourceforge.net Subject: Re: 64bit Genode and Fiasco.OC
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the
following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n> COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned
short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned
int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned
int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv]
Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
--
*Daniel G. Waddington Ph.D. C.Sci. **| **Samsung Information Systems America (SISA)*
Principal Engineer/Research Manager, Systems Research Group, Computer Science Lab
t: 408-544-5675 f: 408-544-5540 c: 408-890-0479
d.waddington@...60...mailto:d.waddington@...60...
- ****P*lease consider the environment before printing this email.
This message is intended only for the named recipient(s) above and may contain confidential or privileged informat ion or protected attorney work product. If you are not the intended recipient, any review, dissemination, distribution or copying is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete this message and its attachments from your computer and dispose of all other copies or printouts. Thank you.
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan, I think the problem has something to do with base/mk/dep_lib.mk, particularly ...
# # Of all possible file locations, use the (first) one that actually exist. # LIB_MK = $(firstword $(wildcard $(addsuffix /$(LIB).mk,$(LIB_MK_DIRS))))
which will find the wrong syscall.mk
I tried to force LIB_MK to the right syscall.mk but it then followed with a load of redefinition errors. Below is the make VERBOSE_DIR= output.
Daniel
Library process make --no-print-directory -C /home/dwaddington/git/omnios/build/genode-linux_x86/var/libcache/syscall -f /home/dwaddington/git/omnios/genode/base/mk/lib.mk \ REP_DIR=/home/dwaddington/git/omnios/genode/base-linux \
LIB_MK=/home/dwaddington/git/omnios/genode/base-linux/lib/mk*/x86_64/*syscall.mk \ LIB=syscall \ DEPS="" \
BUILD_BASE_DIR=/home/dwaddington/git/omnios/build/genode-linux_x86 \ SHELL=/bin/bash \ SHARED_LIBS=""\
INSTALL_DIR=/home/dwaddington/git/omnios/build/genode-linux_x86/bin Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x86_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
On 03/11/2011 09:07 AM, Stefan Kalkowski wrote:
Hi Daniel,
On 03/11/2011 05:39 PM, Daniel Waddington wrote:
Hi Stefan, I didn't realize that the linux_x86 would build with the 64bit compiler.
in fact, it doesn't chooses the compiler, but which include pathes and assembler-files to use. The build-system simply uses the compiler found at '/usr/local/genode-gcc/bin/genode-x86-...' by default, and uses its default target. So if you have installed a compiler, which targets only 32bit or 64bit, of course you can only build for that platform.
Unfortunately, our 'toolchain'-script produces a compiler, that only targets the underlying platform, and not both (the pre-compiled version targets 32bit only). We'll fix that issue, and thereby use -m<arch> switches for building Genode to circumvent such problems in the future.
By now, a preliminary solution for you might be to install both compiler variants, and tell Genode's build-system which compiler to use, by overriding the following variable in 'etc/tools.conf':
CROSS_DEV_PREFIX = /usr/local/genode-gcc/bin/genode-gcc-
By stating compiler and spec-variables explicitly, you should be able to build all platforms in the same environment.
Regards Stefan
This now works fine on a 64bit host. However, I couldn't get the 32bit compiler to work with your suggested SPECS flags though - it still trys to compile the 64bit version.
Daniel
On 03/11/2011 07:52 AM, Stefan Kalkowski wrote:
Hi Daniel,
On 03/11/2011 04:29 PM, Daniel Waddington wrote:
Hi Stefan, Good news is that the x86_64 build seemed to work. Bad news is that it *may* have broken the linux_x86 build...see below. You might want to check this yourself.
I don't think this has something to do with the 64-bit patch for Fiasco.OC.
I guess you tried to build Genode's Linux version on a 64-bit system with Gendode's 32-bit toolchain.
The Genode build system uses some heuristic to determine which Linux version to build for you, by analyzing the underlying system, so it tries to build a 64-bit version for you, while using a compiler targeting 32-bit. To circumvent this heuristic, you can explicitly state in the 'etc/specs.conf' to build the 32-bit version:
SPECS = genode linux_x86_32 sdl
or change the compiler to target 64bit.
I hope that helps.
Best regards. Stefan
Thanks Daniel
Library thread Library signal Library syscall COMPILE lx_clone.o /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S: Assembler messages: /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:21: Error: bad register name `%rsi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:22: Error: bad register name `%rcx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:26: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:29: Error: bad register name `%rdx' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:30: Error: bad register name `%r8' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:31: Error: bad register name `%r9' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:32: Error: bad register name `%rsp)' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:40: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:50: Error: bad register expression /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:57: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:58: Error: bad register name `%rdi' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:59: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:61: Error: bad register name `%rax' /home/dwaddington/git/omnios/genode/base-linux/../base-linux/src/platform/x8 6_64/lx_clone.S:62: Error: bad register name `%rax' make[2]: *** [lx_clone.o] Error 1 make[1]: *** [syscall.lib] Error 2 make: *** [gen_deps_and_build_targets] Error 2
-----Original Message----- From: Stefan Kalkowski [mailto:stefan.kalkowski@...1...] Sent: Thursday, March 10, 2011 5:38 AM To: genode-main@lists.sourceforge.net Subject: Re: 64bit Genode and Fiasco.OC
Hello Daniel,
Now, the Fiasco.OC/Genode variant is 64-bit ready. Please, checkout the last revision from our subversion repository. You need to create a new build-directory with the 'create_builddir' tool. There are new platform-specifications available to it, namely: 'foc_x86_32' and 'foc_x86_64'.
Alternatively, you might place a 'specs.conf' file in the 'etc' directory of an existing Fiasco.OC/Genode build-directory, and put the following line into it:
SPECS = genode foc_x86_64
Moreover, you've to build a 64-bit version of a Genode-compliant gcc by yourself. This is simply done by executing, the 'toolchain' script in Genode's 'tool' directory:
toolchain all
This will build gcc for 64-Bit (when executed in 64-bit Linux). You have to install MPFR, GMP, MPC, PPL, and CLooG development libraries beforehand. The resulting tool-chain gets installed at '/usr/local/genode-gcc'.
I hope that helps.
Best regards Stefan
On 03/04/2011 01:33 AM, Daniel Waddington wrote:
Hi,
Is Genode+Fiasco.OC x86_64 known not to work? After various fiddling about with include files, and –m64 flags I got as far as the
following..
Thanks
Daniel
Program drivers/framebuffer/vesa/vesa_drv
COMPILE decode.o COMPILE fpu.o COMPILE framebuffer.o COMPILE hw_emul.o COMPILE ifx86emu.o COMPILE&n> COMPILE ops.o COMPILE ops2.o COMPILE prim_ops.o COMPILE sys.o LINK vesa_drv
ifx86emu.o: In function `unsigned int inx<unsigned int>(unsigned
short)':
ifx86emu.cc:(.text+0x4c8): undefined reference to `bool hw_emul_handle_port_read<unsigned int>(unsigned short, unsigned
int*)'
ifx86emu.o: In function `void outx<unsigned int>(unsigned short, unsigned int)':
ifx86emu.cc:(.text+0x649): undefined reference to `bool hw_emul_handle_port_write<unsigned int>(unsigned short, unsigned
int)'
collect2: ld returned 1 exit lass=MsoNormal>make[2]: *** [vesa_drv]
Error 1
make[1]: *** [vesa_drv.prg] Error 2
make: *** [gen_deps_and_build_targets] Error 2
What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
--
*Daniel G. Waddington Ph.D. C.Sci. **| **Samsung Information Systems America (SISA)*
Principal Engineer/Research Manager, Systems Research Group, Computer Science Lab
t: 408-544-5675 f: 408-544-5540 c: 408-890-0479
d.waddington@...60...mailto:d.waddington@...60...
- ****P*lease consider the environment before printing this email.
This message is intended only for the named recipient(s) above and may contain confidential or privileged informat ion or protected attorney work product. If you are not the intended recipient, any review, dissemination, distribution or copying is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete this message and its attachments from your computer and dispose of all other copies or printouts. Thank you.
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi David,
as outlined by Stefan, the 'linux_x86' platform looks for the host system and automatically decides whether to build for 32bit or 64bit. If the host system is 64bit, then Genode is built for 64bit. This is because our only current use case for the linux version is running Genode on the host. However, in your case, this causes trouble.
I'll try to briefly describe what is going on: You can find the detection-magic at 'base-linux/etc/specs.conf'. Depending on the host system, the 'spec.conf' file will set the 'linux_x86_64' or 'linux_x86_32' spec value, which triggers the inclusion of 'base-linux/mk/spec-linux_x86_32.mk' or 'base-linux/mk/spec-linux_x86_64.mk' respectively. In these files, the spec value 'x86_32' (or 'x86_64') get defined, which gets further broken up in 'base/mk/spec-x86_32.mk' (analogously for 64bit). This spec file adds the '32bit' spec value. If you like to peek onto the result of the successive spec decomposition, you might add the following line to '<build-dir>/Makefile' (right after the 'export SPECS' line:
$(warning SPECS=$(SPECS))
As Stefan already mentioned, you can override the default SPECS definition by a custom '<build-dir>/etc/specs.conf' file. Note the use of the assignment in contrast to the version found in 'base-linux/etc/specs.conf'.
I tried to force LIB_MK to the right syscall.mk but it then followed with a load of redefinition errors. Below is the make VERBOSE_DIR= output.
... /home/dwaddington/git/omnios/genode/base-linux/../base-linux/sr
/platform/x86_64/lx_clone.S:21:
Error: bad register name `%rsi'
It seems that the build system has not picked up your custom SPECS definition and still tries to use the SPECS as defined in 'base-linux/etc/specs.conf'. Hence, the build system keeps trying to build the 64bit code with the 32bit compiler. As a quick work-around, just to see if the code works, you may modify the 'base-linux/etc/specs.conf' file. But we should investigate why the build system ignores your '<build-dir>/etc/specs.conf' file. Could I have a look at your version of the file?
Best regards Norman
Hi Norman,
Fool I am! - I had "SPECS += .." instead of "SPEC = " in my specs.conf - it now builds with x86_32 - well most of it. The outstanding issue I have is making the linux-related dirs (e.g., os/src/drivers/audio_out/linux) link with /usr/lib32/crt1.o instead of the 64bit version in /usr/lib/crt1.o. Any ideas how?
Daniel
On 03/12/2011 04:11 AM, Norman Feske wrote:
Hi David,
as outlined by Stefan, the 'linux_x86' platform looks for the host system and automatically decides whether to build for 32bit or 64bit. If the host system is 64bit, then Genode is built for 64bit. This is because our only current use case for the linux version is running Genode on the host. However, in your case, this causes trouble.
I'll try to briefly describe what is going on: You can find the detection-magic at 'base-linux/etc/specs.conf'. Depending on the host system, the 'spec.conf' file will set the 'linux_x86_64' or 'linux_x86_32' spec value, which triggers the inclusion of 'base-linux/mk/spec-linux_x86_32.mk' or 'base-linux/mk/spec-linux_x86_64.mk' respectively. In these files, the spec value 'x86_32' (or 'x86_64') get defined, which gets further broken up in 'base/mk/spec-x86_32.mk' (analogously for 64bit). This spec file adds the '32bit' spec value. If you like to peek onto the result of the successive spec decomposition, you might add the following line to '<build-dir>/Makefile' (right after the 'export SPECS' line:
$(warning SPECS=$(SPECS))
As Stefan already mentioned, you can override the default SPECS definition by a custom '<build-dir>/etc/specs.conf' file. Note the use of the assignment in contrast to the version found in 'base-linux/etc/specs.conf'.
I tried to force LIB_MK to the right syscall.mk but it then followed with a load of redefinition errors. Below is the make VERBOSE_DIR= output.
... /home/dwaddington/git/omnios/genode/base-linux/../base-linux/sr
/platform/x86_64/lx_clone.S:21:
Error: bad register name `%rsi'
It seems that the build system has not picked up your custom SPECS definition and still tries to use the SPECS as defined in 'base-linux/etc/specs.conf'. Hence, the build system keeps trying to build the 64bit code with the 32bit compiler. As a quick work-around, just to see if the code works, you may modify the 'base-linux/etc/specs.conf' file. But we should investigate why the build system ignores your '<build-dir>/etc/specs.conf' file. Could I have a look at your version of the file?
Best regards Norman
thats "SPECS = ..."
On 03/14/2011 08:55 AM, Daniel Waddington wrote:
Hi Norman,
Fool I am! - I had "SPECS += .." instead of "SPEC = " in my specs.conf
- it now builds with x86_32 - well most of it. The outstanding issue
I have is making the linux-related dirs (e.g., os/src/drivers/audio_out/linux) link with /usr/lib32/crt1.o instead of the 64bit version in /usr/lib/crt1.o. Any ideas how?
Daniel
On 03/12/2011 04:11 AM, Norman Feske wrote:
Hi David,
as outlined by Stefan, the 'linux_x86' platform looks for the host system and automatically decides whether to build for 32bit or 64bit. If the host system is 64bit, then Genode is built for 64bit. This is because our only current use case for the linux version is running Genode on the host. However, in your case, this causes trouble.
I'll try to briefly describe what is going on: You can find the detection-magic at 'base-linux/etc/specs.conf'. Depending on the host system, the 'spec.conf' file will set the 'linux_x86_64' or 'linux_x86_32' spec value, which triggers the inclusion of 'base-linux/mk/spec-linux_x86_32.mk' or 'base-linux/mk/spec-linux_x86_64.mk' respectively. In these files, the spec value 'x86_32' (or 'x86_64') get defined, which gets further broken up in 'base/mk/spec-x86_32.mk' (analogously for 64bit). This spec file adds the '32bit' spec value. If you like to peek onto the result of the successive spec decomposition, you might add the following line to '<build-dir>/Makefile' (right after the 'export SPECS' line:
$(warning SPECS=$(SPECS))
As Stefan already mentioned, you can override the default SPECS definition by a custom '<build-dir>/etc/specs.conf' file. Note the use of the assignment in contrast to the version found in 'base-linux/etc/specs.conf'.
I tried to force LIB_MK to the right syscall.mk but it then followed with a load of redefinition errors. Below is the make VERBOSE_DIR= output.
... /home/dwaddington/git/omnios/genode/base-linux/../base-linux/sr
/platform/x86_64/lx_clone.S:21:
Error: bad register name `%rsi'
It seems that the build system has not picked up your custom SPECS definition and still tries to use the SPECS as defined in 'base-linux/etc/specs.conf'. Hence, the build system keeps trying to build the 64bit code with the 32bit compiler. As a quick work-around, just to see if the code works, you may modify the 'base-linux/etc/specs.conf' file. But we should investigate why the build system ignores your '<build-dir>/etc/specs.conf' file. Could I have a look at your version of the file?
Best regards Norman
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
It looks like I need to add -m32 -L/usr/lib32 to the linux-compiled build flags - not sure how to do this, CC_OPT doesn't seem to percolate through.
Daniel
On 03/12/2011 04:11 AM, Norman Feske wrote:
Hi David,
as outlined by Stefan, the 'linux_x86' platform looks for the host system and automatically decides whether to build for 32bit or 64bit. If the host system is 64bit, then Genode is built for 64bit. This is because our only current use case for the linux version is running Genode on the host. However, in your case, this causes trouble.
I'll try to briefly describe what is going on: You can find the detection-magic at 'base-linux/etc/specs.conf'. Depending on the host system, the 'spec.conf' file will set the 'linux_x86_64' or 'linux_x86_32' spec value, which triggers the inclusion of 'base-linux/mk/spec-linux_x86_32.mk' or 'base-linux/mk/spec-linux_x86_64.mk' respectively. In these files, the spec value 'x86_32' (or 'x86_64') get defined, which gets further broken up in 'base/mk/spec-x86_32.mk' (analogously for 64bit). This spec file adds the '32bit' spec value. If you like to peek onto the result of the successive spec decomposition, you might add the following line to '<build-dir>/Makefile' (right after the 'export SPECS' line:
$(warning SPECS=$(SPECS))
As Stefan already mentioned, you can override the default SPECS definition by a custom '<build-dir>/etc/specs.conf' file. Note the use of the assignment in contrast to the version found in 'base-linux/etc/specs.conf'.
I tried to force LIB_MK to the right syscall.mk but it then followed with a load of redefinition errors. Below is the make VERBOSE_DIR= output.
... /home/dwaddington/git/omnios/genode/base-linux/../base-linux/sr
/platform/x86_64/lx_clone.S:21:
Error: bad register name `%rsi'
It seems that the build system has not picked up your custom SPECS definition and still tries to use the SPECS as defined in 'base-linux/etc/specs.conf'. Hence, the build system keeps trying to build the 64bit code with the 32bit compiler. As a quick work-around, just to see if the code works, you may modify the 'base-linux/etc/specs.conf' file. But we should investigate why the build system ignores your '<build-dir>/etc/specs.conf' file. Could I have a look at your version of the file?
Best regards Norman
Looks like the problem is only specific to .. ./os/src/drivers/audio_out ./os/src/drivers/nic
everything else builds 32bit version on 64bit host platform.
Sorry for the excess traffic. I'll be getting black balled from this list.
Daniel
On 03/14/2011 09:46 AM, Daniel Waddington wrote:
It looks like I need to add -m32 -L/usr/lib32 to the linux-compiled build flags - not sure how to do this, CC_OPT doesn't seem to percolate through.
Daniel
On 03/12/2011 04:11 AM, Norman Feske wrote:
Hi David,
as outlined by Stefan, the 'linux_x86' platform looks for the host system and automatically decides whether to build for 32bit or 64bit. If the host system is 64bit, then Genode is built for 64bit. This is because our only current use case for the linux version is running Genode on the host. However, in your case, this causes trouble.
I'll try to briefly describe what is going on: You can find the detection-magic at 'base-linux/etc/specs.conf'. Depending on the host system, the 'spec.conf' file will set the 'linux_x86_64' or 'linux_x86_32' spec value, which triggers the inclusion of 'base-linux/mk/spec-linux_x86_32.mk' or 'base-linux/mk/spec-linux_x86_64.mk' respectively. In these files, the spec value 'x86_32' (or 'x86_64') get defined, which gets further broken up in 'base/mk/spec-x86_32.mk' (analogously for 64bit). This spec file adds the '32bit' spec value. If you like to peek onto the result of the successive spec decomposition, you might add the following line to '<build-dir>/Makefile' (right after the 'export SPECS' line:
$(warning SPECS=$(SPECS))
As Stefan already mentioned, you can override the default SPECS definition by a custom '<build-dir>/etc/specs.conf' file. Note the use of the assignment in contrast to the version found in 'base-linux/etc/specs.conf'.
I tried to force LIB_MK to the right syscall.mk but it then followed with a load of redefinition errors. Below is the make VERBOSE_DIR= output.
... /home/dwaddington/git/omnios/genode/base-linux/../base-linux/sr
/platform/x86_64/lx_clone.S:21:
Error: bad register name `%rsi'
It seems that the build system has not picked up your custom SPECS definition and still tries to use the SPECS as defined in 'base-linux/etc/specs.conf'. Hence, the build system keeps trying to build the 64bit code with the 32bit compiler. As a quick work-around, just to see if the code works, you may modify the 'base-linux/etc/specs.conf' file. But we should investigate why the build system ignores your '<build-dir>/etc/specs.conf' file. Could I have a look at your version of the file?
Best regards Norman
--
*Daniel G. Waddington Ph.D. C.Sci. **| **Samsung Information Systems America (SISA)*
Principal Engineer/Research Manager, Systems Research Group, Computer Science Lab
t: 408-544-5675 f: 408-544-5540 c: 408-890-0479
d.waddington@...60... mailto:d.waddington@...60...
*****P*lease consider the environment before printing this email.
This message is intended only for the named recipient(s) above and may contain confidential or privileged informat ion or protected attorney work product. If you are not the intended recipient, any review, dissemination, distribution or copying is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete this message and its attachments from your computer and dispose of all other copies or printouts. Thank you.
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi Daniel,
Looks like the problem is only specific to .. ./os/src/drivers/audio_out ./os/src/drivers/nic
everything else builds 32bit version on 64bit host platform.
These targets alongside 'os/src/drivers/framebuffer/sdl' are hybrid programs using both the Genode framework as well as native Linux libraries. The 'audio_out' "driver" translates Genode's 'Audio_out_session' to ALSA, 'nic' translates Genode's 'Nic_session' to a Linux tap device, and 'fb_sdl' translates Genode's 'Framebuffer_session' and 'Input_session' to libSDL. Because of their hybrid nature, those programs are built without the '-nostdlib' switch. This way, the libraries at '/usr/lib' end up in those binaries.
It looks like I need to add -m32 -L/usr/lib32 to the linux-compiled build flags - not sure how to do this, CC_OPT doesn't seem to percolate through.
Normally, 'CC_OPT' is the right variable to use. However, I would not specify those arguments globally (hence, a spec-file is the wrong place for them). They should exceptionally be used for hybrid targets only. Can you successfully build 'audio_out' by adding those arguments to 'CC_OPT' in its 'target.mk' file?
Best regards Norman
Norman,
CC_OPT seems to work on the compile stage, but not the link stage...
COMPILE new_delete.o /usr/local/genode-gcc-x86_32/bin/genode-x86-g++ -m32 -L/usr/lib32 -DFOOOOOOBARRR -ffunction-sections -fno-strict-aliasing -nostdinc -g -march=i686 -O2 -MMD -MP -MT 'new_delete.o new_delete.d' -Wall -I. -I/usr/include -I/home/dwaddington/git/omnios/genode/base-linux/src/platform/x86_32 -I/home/dwaddington/git/omnios/genode/base/include/x86 -I/home/dwaddington/git/omnios/genode/base/include/32bit -I/home/dwaddington/git/omnios/genode/base-linux/include -I/home/dwaddington/git/omnios/genode/base/include -I/home/dwaddington/git/omnios/genode/os/include -I/home/dwaddington/git/omnios/genode/demo/include -I/home/dwaddington/git/omnios/genode/libc/include -I/usr/local/genode-gcc-x86_32/bin/../lib/gcc/i686-pc-linux-gnu/4.4.5/include -c /home/dwaddington/git/omnios/genode/base/src/base/cxx/new_delete.cc -o new_delete.o LINK audio_out_drv libs=/home/dwaddington/git/omnios/build/genode-linux_x86/var/libcache; /usr/local/genode-gcc-x86_32/bin/genode-x86-g++ -Wl,-gc-sections -Wl,-Tldscripts/elf_i386.xc -Wl,-T/home/dwaddington/git/omnios/genode/base-linux/src/platform/context_area.stdlib.ld -Wl,--whole-archive -Wl,--start-group alsa.o main.o new_delete.o $libs/allocator_avl/allocator_avl.lib.a $libs/avl_tree/avl_tree.lib.a $libs/console/console.lib.a $libs/env/env.lib.a $libs/heap/heap.lib.a $libs/ipc/ipc.lib.a $libs/lock/lock.lib.a $libs/log_console/log_console.lib.a $libs/server/server.lib.a $libs/signal/signal.lib.a $libs/slab/slab.lib.a $libs/syscall/syscall.lib.a $libs/thread/thread.lib.a -Wl,--end-group -Wl,--no-whole-archive -lasound /usr/local/genode-gcc-x86_32/bin/../lib/gcc/i686-pc-linux-gnu/4.4.5/libgcc.a -o audio_out_drv
Daniel
On 03/14/2011 11:36 AM, Norman Feske wrote:
Hi Daniel,
Looks like the problem is only specific to .. ./os/src/drivers/audio_out ./os/src/drivers/nic
everything else builds 32bit version on 64bit host platform.
These targets alongside 'os/src/drivers/framebuffer/sdl' are hybrid programs using both the Genode framework as well as native Linux libraries. The 'audio_out' "driver" translates Genode's 'Audio_out_session' to ALSA, 'nic' translates Genode's 'Nic_session' to a Linux tap device, and 'fb_sdl' translates Genode's 'Framebuffer_session' and 'Input_session' to libSDL. Because of their hybrid nature, those programs are built without the '-nostdlib' switch. This way, the libraries at '/usr/lib' end up in those binaries.
It looks like I need to add -m32 -L/usr/lib32 to the linux-compiled build flags - not sure how to do this, CC_OPT doesn't seem to percolate through.
Normally, 'CC_OPT' is the right variable to use. However, I would not specify those arguments globally (hence, a spec-file is the wrong place for them). They should exceptionally be used for hybrid targets only. Can you successfully build 'audio_out' by adding those arguments to 'CC_OPT' in its 'target.mk' file?
Best regards Norman
I confirm that CXX_LINK_OPT works. I pass through something like
CXX_LINK_OPT += -nostdlib -m32 -L/usr/lib32/
but I now need libasound.so 32bit which I don't have - but this is not a genode problem.
Daniel
On 03/14/2011 01:00 PM, Norman Feske wrote:
Hi Daniel,
CC_OPT seems to work on the compile stage, but not the link stage...
ah, you're right. For the linking stage, use 'CXX_LINK_OPT'. Sorry for having mixed things up a bit.
Norman
Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main