Hi Ian, Since finishing the very beginning setup assembly, I was turning to adding necessary headers and empty functions to build the binary. After introducing those bit operations, spinlocks etc., I thought I have a basic framework to pass the first build. However, when comming to the final linking stage, there are errors: arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds /home/cbz/src/xen/extras/mini-os/mini-os.o -o //home/cbz/src/xen/extras/mini-os/mini-os /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 I googled that error message. Some has mentioned that add "-fno-exceptions -fno-unwind tables" could sovle the problem. I tried, but got the same errors. Any ideas? BTW, after pass my first build, I would consider implementing support in the toolstack for generating a DTB for guest on ARM platform. Baozi
On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote:> Since finishing the very beginning setup assembly, I was turning to adding > necessary headers and empty functions to build the binary. After introducing > those bit operations, spinlocks etc., I thought I have a basic framework to > pass the first build. However, when comming to the final linking stage, > there are errors: > > arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds > /home/cbz/src/xen/extras/mini-os/mini-os.o -o > //home/cbz/src/xen/extras/mini-os/mini-os > /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' > make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 > > I googled that error message. Some has mentioned that add "-fno-exceptions > -fno-unwind tables" could sovle the problem. I tried, but got the same > errors. > > Any ideas?You need to provide an implementation for __aeabi_uldivmod. For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.S -- Grall Julien
At 14:48 +0100 on 09 Jun (1370789322), Julien Grall wrote:> On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote: > > Since finishing the very beginning setup assembly, I was turning to adding > > necessary headers and empty functions to build the binary. After introducing > > those bit operations, spinlocks etc., I thought I have a basic framework to > > pass the first build. However, when comming to the final linking stage, > > there are errors: > > > > arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds > > /home/cbz/src/xen/extras/mini-os/mini-os.o -o > > //home/cbz/src/xen/extras/mini-os/mini-os > > /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' > > make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 > > > > I googled that error message. Some has mentioned that add "-fno-exceptions > > -fno-unwind tables" could sovle the problem. I tried, but got the same > > errors. > > > > Any ideas? > > You need to provide an implementation for __aeabi_uldivmod. > For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.SPlease be careful of licensing if you take Xen code into MiniOS. Tim.
On Sun, Jun 09, 2013 at 02:48:42PM +0100, Julien Grall wrote:> On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote: > > Since finishing the very beginning setup assembly, I was turning to adding > > necessary headers and empty functions to build the binary. After introducing > > those bit operations, spinlocks etc., I thought I have a basic framework to > > pass the first build. However, when comming to the final linking stage, > > there are errors: > > > > arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds > > /home/cbz/src/xen/extras/mini-os/mini-os.o -o > > //home/cbz/src/xen/extras/mini-os/mini-os > > /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' > > make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 > > > > I googled that error message. Some has mentioned that add "-fno-exceptions > > -fno-unwind tables" could sovle the problem. I tried, but got the same > > errors. > > > > Any ideas? > > You need to provide an implementation for __aeabi_uldivmod. > For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.SThanks a lot. A further question. I''m a litte curious that whether __aeabi_uldivmod is missing because of a toolchain bug or some other reasons? Cheers, Baozi
On Sun, Jun 09, 2013 at 03:19:42PM +0100, Tim Deegan wrote:> At 14:48 +0100 on 09 Jun (1370789322), Julien Grall wrote: > > On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote: > > > Since finishing the very beginning setup assembly, I was turning to adding > > > necessary headers and empty functions to build the binary. After introducing > > > those bit operations, spinlocks etc., I thought I have a basic framework to > > > pass the first build. However, when comming to the final linking stage, > > > there are errors: > > > > > > arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds > > > /home/cbz/src/xen/extras/mini-os/mini-os.o -o > > > //home/cbz/src/xen/extras/mini-os/mini-os > > > /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow > > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' > > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' > > > make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 > > > > > > I googled that error message. Some has mentioned that add "-fno-exceptions > > > -fno-unwind tables" could sovle the problem. I tried, but got the same > > > errors. > > > > > > Any ideas? > > > > You need to provide an implementation for __aeabi_uldivmod. > > For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.S > > Please be careful of licensing if you take Xen code into MiniOS.Thanks for reminding. Cheers, Baozi
On 06/10/2013 01:13 AM, Chen Baozi wrote:> On Sun, Jun 09, 2013 at 02:48:42PM +0100, Julien Grall wrote: >> On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote: >>> Since finishing the very beginning setup assembly, I was turning to adding >>> necessary headers and empty functions to build the binary. After introducing >>> those bit operations, spinlocks etc., I thought I have a basic framework to >>> pass the first build. However, when comming to the final linking stage, >>> there are errors: >>> >>> arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds >>> /home/cbz/src/xen/extras/mini-os/mini-os.o -o >>> //home/cbz/src/xen/extras/mini-os/mini-os >>> /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' >>> /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow >>> /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' >>> /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' >>> make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 >>> >>> I googled that error message. Some has mentioned that add "-fno-exceptions >>> -fno-unwind tables" could sovle the problem. I tried, but got the same >>> errors. >>> >>> Any ideas? >> >> You need to provide an implementation for __aeabi_uldivmod. >> For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.S > > Thanks a lot. > > A further question. I''m a litte curious that whether __aeabi_uldivmod is missing > because of a toolchain bug or some other reasons?__aeabi_uldivmod and co. are provided by libgcc.{so,a}. Mini-OS is not linked against this library. -- Julien
On Sun, 9 Jun 2013, Tim Deegan wrote:> At 14:48 +0100 on 09 Jun (1370789322), Julien Grall wrote: > > On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote: > > > Since finishing the very beginning setup assembly, I was turning to adding > > > necessary headers and empty functions to build the binary. After introducing > > > those bit operations, spinlocks etc., I thought I have a basic framework to > > > pass the first build. However, when comming to the final linking stage, > > > there are errors: > > > > > > arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds > > > /home/cbz/src/xen/extras/mini-os/mini-os.o -o > > > //home/cbz/src/xen/extras/mini-os/mini-os > > > /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > > > /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow > > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' > > > /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' > > > make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 > > > > > > I googled that error message. Some has mentioned that add "-fno-exceptions > > > -fno-unwind tables" could sovle the problem. I tried, but got the same > > > errors. > > > > > > Any ideas? > > > > You need to provide an implementation for __aeabi_uldivmod. > > For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.S > > Please be careful of licensing if you take Xen code into MiniOS.That''s right, in fact Xen code is GPLv2 while MiniOS is BSD. So you need to find a BSD licensed implementation of __aeabi_uldivmod. Maybe NetBSD?
On Mon, 10 Jun 2013, Julien Grall wrote:> On 06/10/2013 01:13 AM, Chen Baozi wrote: > > > On Sun, Jun 09, 2013 at 02:48:42PM +0100, Julien Grall wrote: > >> On Sun, Jun 9, 2013 at 1:42 PM, Chen Baozi <baozich@gmail.com> wrote: > >>> Since finishing the very beginning setup assembly, I was turning to adding > >>> necessary headers and empty functions to build the binary. After introducing > >>> those bit operations, spinlocks etc., I thought I have a basic framework to > >>> pass the first build. However, when comming to the final linking stage, > >>> there are errors: > >>> > >>> arm-linux-gnueabihf-ld -T arch/arm/minios-arm32.lds > >>> /home/cbz/src/xen/extras/mini-os/mini-os.o -o > >>> //home/cbz/src/xen/extras/mini-os/mini-os > >>> /home/cbz/src/xen/extras/mini-os/mini-os.o: In function `init_blkfront'': > >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > >>> /home/cbz/src/xen/extras/mini-os/blkfront.c:122: undefined reference to `__aeabi_uldivmod'' > >>> /home/cbz/src/xen/extras/mini-os/mini-os.o:/home/cbz/src/xen/extras/mini-os/blkfront.c:122: more undefined references to `__aeabi_uldivmod'' follow > >>> /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'' > >>> /home/cbz/src/xen/extras/mini-os/mini-os.o:(.ARM.exidx+0x50): undefined reference to `__aeabi_unwind_cpp_pr0'' > >>> make: *** [/home/cbz/src/xen/extras/mini-os/mini-os] Error 1 > >>> > >>> I googled that error message. Some has mentioned that add "-fno-exceptions > >>> -fno-unwind tables" could sovle the problem. I tried, but got the same > >>> errors. > >>> > >>> Any ideas? > >> > >> You need to provide an implementation for __aeabi_uldivmod. > >> For this purpose, you can re-use xen/arch/arm/arm32/lib/lib1func.S > > > > Thanks a lot. > > > > A further question. I''m a litte curious that whether __aeabi_uldivmod is missing > > because of a toolchain bug or some other reasons? > > __aeabi_uldivmod and co. are provided by libgcc.{so,a}. Mini-OS is not > linked against this library.Actually the implementation of __aeabi_uldivmod in xen/arch/arm/arm32/lib/lib1funcs.S is GPLv2. You cannot use it in Mini-OS that is BSD licensed. You need to find a BSD implementation of that function.