May 02, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Johannes Pfau | Thank you!
I will check that today. What to do about static asserts in thread.d?
On Thursday, 2 May 2013 at 14:54:44 UTC, Johannes Pfau wrote:
> Am Tue, 30 Apr 2013 22:40:32 +0200
> schrieb "Timofei Bolshakoc" <tbolsh@gmail.com>:
>
>> I was able to compile DGC to the Hello, World status for ARM using crosstools-ng 1.18 eglibc. uclibc would not work, it lack some of the functions in the library, context switching. There are several places I cheat ( to get Hello, World! ). Please advise:
>>
>> ../gcc-4.7.2/libphobos/libdruntime/core/sys/posix/ucontext.d:274: Error: static assert "Not implemented"
>
> Add this to ucontext.d:
> https://gist.github.com/jpf91/5502741
>
> You probably also need this for core/sys/posix/sys/stat.d
> https://gist.github.com/jpf91/5502725
>
>>
>> I simply commented static asserts - and I do not think it will fly with any real multi threading program. All the places consider context switching and assembly-level register manipulation. Can somebody help me with that?
>
> The definition of ucontext_t should be enough. But this code is only
> for fibers real threads don't need this support code and should work
> fine without it. You probably also need the stat_t definition posted
> above to do any kind of IO.
|
May 02, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timofei Bolshakov | Am Thu, 02 May 2013 18:54:28 +0200
schrieb "Timofei Bolshakov" <tbolsh@gmail.com>:
> Thank you!
> I will check that today. What to do about static asserts in
> thread.d?
Those should be fixed by the ucontext changes. The
static if(__traits( compiles, ucontext_t )) code path
will be used if we make ucontext_t available.
|
May 11, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Johannes Pfau | On Thursday, 2 May 2013 at 17:28:47 UTC, Johannes Pfau wrote:
> Am Thu, 02 May 2013 18:54:28 +0200
> schrieb "Timofei Bolshakov" <tbolsh@gmail.com>:
>
>> Thank you!
>> I will check that today. What to do about static asserts in thread.d?
>
> Those should be fixed by the ucontext changes. The
> static if(__traits( compiles, ucontext_t )) code path
> will be used if we make ucontext_t available.
Many thanks for your answer!
I am using compiler for several weeks already - and today I've seen that I did not thank you.
So, all what you have said works and works fine!
|
June 13, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timofei Bolshakov | On Monday, 22 April 2013 at 17:22:50 UTC, Timofei Bolshakov wrote: > Hi, Dawid! > > On Thursday, 23 February 2012 at 15:25:59 UTC, Dawid Ciężarkiewicz wrote: >> Hi, >> >> # Introduction >> >> I've started some initial work to get a working GDC crosscompiler >> targeting ARM platforms. Currently I'm able to compile the >> toolchain and produce a working "Hello World!" binary that I'm >> able to execute on my BeagleBoard developement platform with >> ArchLinux installed. The generated assembly looks sane, >> unfortunately the program hangs, but I'm able to debug it in gdb >> and I see it loops somewhere at: >> >> 2261 in >> /home/dpc/lab/d-cross/test-tc-1/.build/src/gcc-4.6.2/libphobos/gc/gcx.d >> => 0x2f950 <_D2gc3gcx2GC6mallocMFkkPkZPv+648>: str r2, >> [r4, r9, lsl #2] >> >> I'm going to investigate this and possibly fix with time. Anyone >> interested in getting this to work seamlessly is kindly requested >> to join efforts and share the results. >> >> >> # How to compile >> >> There's a crosstool-ng tool that is a great way to assemble and >> build (cross-)toolchains. I've added some hacks to integrate the >> gdc repository and thus add a gdc support. >> >> I've pushed the forked crosstools-ng here: >> >> https://bitbucket.org/xdpcx/crosstool-ng-dlang/ >> >> (I prefer git, but original crosstools-ng is using hg, so I >> sticked with it). >> >> Grab that code and learn to how to use ct-ng. >> >> Basically installing crosstool-ng it's just a metter of >> downloading and doing: >> >> ./bootstrap >> ./configure >> make >> make install >> >> (I use `./configure --prefix="$HOME/opt"` for home-local >> configuration.) >> >> This will give you `ct-ng` command that you can use in any >> directory >> >> cd ~/my/toolchain/buildir >> mkdir src >> cp ~/config/that/i/prepared/for/you/config .config >> ct-ng menuconfig >> ct-ng build >> ls arm-none-linux-eabi >> >> I attach the mentioned config. >> >> Actually, as I don't know how to attach it I've put it here: >> http://pastebin.ca/2121043 > > I tried to do that and build failed: > > [DEBUG] ==> Executing: 'sh' './gcc/d/setup-gcc.sh' > [ALL ] This version of GCC (4.4) is not supported. > > do you have somewhere corrected code / config? > >> >> If anyone is interested I could upload the compiled binaries >> somewhere, as the toolchain is static. > > I will greatly appreciate that! > >> I have the same trouble. And I don't know how resolve it.. I tried to change config "/$HOME/opt/lib/ct-ng.hg+../config/cc/gcc.in" by added gcc 4.7.0 support, but this way compile has another errors: [INFO ] Installing C library [INFO ] Installing C library: done in 441.77s (at 17:52) [INFO ] ================================================================= [INFO ] Installing final compiler [WARN ] Building d language(s) is not yet supported. Will try... [ERROR] configure: error: [ERROR] [ERROR] >> [ERROR] >> Build failed in step 'Installing final compiler' [ERROR] >> called in step '(top-level)' [ERROR] >> [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@172] [ERROR] >> called from: do_cc_backend[scripts/build/cc/gcc.sh@753] [ERROR] >> called from: do_cc[scripts/build/cc/gcc.sh@525] [ERROR] >> called from: main[scripts/crosstool-NG.sh@597] [ERROR] >> |
June 13, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey | Am Thu, 13 Jun 2013 16:28:19 +0200 schrieb "Andrey" <vangelisforever@yandex.ru>: > > I have the same trouble. > And I don't know how resolve it.. If you want to build a cross compiler targeting ARM/Linux follow these instructions: http://gdcproject.org/wiki/Cross%20Compiler/crosstool-NG This way you don't need to patch crosstool-NG and you can use the latest crosstool-NG release. Make sure to use gcc-4.7 (gcc-4.8 will work as well as soon as crosstool-NG supports it). I don't have a ready to use config though. |
June 13, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Johannes Pfau | On Thursday, 13 June 2013 at 16:00:34 UTC, Johannes Pfau wrote:
> Am Thu, 13 Jun 2013 16:28:19 +0200
> schrieb "Andrey" <vangelisforever@yandex.ru>:
>
>>
>> I have the same trouble.
>> And I don't know how resolve it..
>
> If you want to build a cross compiler targeting ARM/Linux follow these
> instructions:
> http://gdcproject.org/wiki/Cross%20Compiler/crosstool-NG
>
> This way you don't need to patch crosstool-NG and you can use the
> latest crosstool-NG release. Make sure to use gcc-4.7 (gcc-4.8 will
> work as well as soon as crosstool-NG supports it).
>
> I don't have a ready to use config though.
Thank you for answer.
The compilation of GDC for ARMv5TE has been done without any errors, and now I can't find native ARM libphobos to make my small ARM test. What shall I do? Сould you help me?
Thanks.
|
June 15, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrey | Am Thu, 13 Jun 2013 22:19:10 +0200 schrieb "Andrey" <vangelisforever@yandex.ru>: > On Thursday, 13 June 2013 at 16:00:34 UTC, Johannes Pfau wrote: > > Am Thu, 13 Jun 2013 16:28:19 +0200 > > schrieb "Andrey" <vangelisforever@yandex.ru>: > > > >> > >> I have the same trouble. > >> And I don't know how resolve it.. > > > > If you want to build a cross compiler targeting ARM/Linux > > follow these > > instructions: > > http://gdcproject.org/wiki/Cross%20Compiler/crosstool-NG > > > > This way you don't need to patch crosstool-NG and you can use > > the > > latest crosstool-NG release. Make sure to use gcc-4.7 (gcc-4.8 > > will > > work as well as soon as crosstool-NG supports it). > > > > I don't have a ready to use config though. > Thank you for answer. > > The compilation of GDC for ARMv5TE has been done without any errors, and now I can't find native ARM libphobos to make my small ARM test. What shall I do? Сould you help me? > > Thanks. The linked howto explicitly disables phobos and druntime. To build phobos and druntime do not use the "--disable-libphobos" switch as said in the howto. However libphobos currently doesn't build for ARM, this patch is needed: https://github.com/D-Programming-Language/druntime/pull/521 Once it's accepted into upstream I'll backport it to gdc but this might take some time. You could of course apply these changes by yourself, then remove the --disable-libphobos switch and you should get a basically working phobos. |
June 15, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Johannes Pfau | On Saturday, 15 June 2013 at 19:15:51 UTC, Johannes Pfau wrote:
> However libphobos currently doesn't build for ARM, this patch is
> needed:
I independently did pretty much the same thing earlier today to build an arm cross compiler and got a working druntime (two more minor changes too, making a const object.toString and toHash was required to link, not sure why though)
working ...except for one thing: throwing exceptions just ends the program with "Aborted". It is possible I still did something wrong, since I built the druntime piece by piece after the fact instead of with crosstool-ng, but have you experienced this before?
|
June 16, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | nvm, I figured it out. I didn't pass the right ABI version when building runtime, so my fault. This is pretty exciting though, D is working and it wasn't really *that* much effort! |
June 16, 2013 Re: ARM targetting cross-toolchain with GDC | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On 16 June 2013 01:05, Adam D. Ruppe <destructionator@gmail.com> wrote:
> nvm, I figured it out. I didn't pass the right ABI version when building runtime, so my fault.
>
> This is pretty exciting though, D is working and it wasn't really *that* much effort!
It's been a few years in the making. And there are still one or two things that need to be pushed upstream to the D front end.
The last few months has been hugely beneficial for being architecture agnostic code generation. So every problem you encounter when targeting a new platform would hopefully be in relation to the druntime C interface, which if you have patches for please send my way. ;)
--
Iain Buclaw
*(p < e ? p++ : p) = (c & 0x0f) + '0';
|
Copyright © 1999-2021 by the D Language Foundation