Jump to page: 1 2 3
Thread overview
Minimal D Cross Compiler
Sep 12, 2007
Brian Madden
Sep 12, 2007
BCS
Sep 12, 2007
jcc7
Sep 12, 2007
Gregor Richards
Sep 12, 2007
Bruce Adams
Sep 12, 2007
Sean Kelly
Sep 13, 2007
untwisted
Sep 13, 2007
Alexander Panek
Sep 13, 2007
Alexander Panek
Sep 13, 2007
Brian Madden
Sep 13, 2007
Gregor Richards
Sep 14, 2007
Brian Madden
Sep 14, 2007
Gregor Richards
Sep 20, 2007
Brian Madden
Sep 20, 2007
Gregor Richards
Oct 15, 2007
Brian Madden
Oct 15, 2007
Alexander Panek
Oct 16, 2007
Alexander Panek
Oct 16, 2007
Bruce Adams
Oct 20, 2007
Brian Madden
Oct 21, 2007
Gregor Richards
September 12, 2007
Hi all,

I'd just like to preface this with saying that I'm sorry if this doesn't quite belong here, I wasn't sure where to post it, and it is a repost from the D group which looks like it hadn't received any activity for 2 months prior to my post.

A few students at the University of Pittsburgh have been gathering and coding up a new operating system.  We've played in C, gotten some bootable code, etc, but we'd really like to write this all in D (save the asm parts that need to be done at the low level).  We're trying to target the x86_64 architecture, but not everyone has 64bit machines (myself included).

We're working on building our cross compiler toolchains BUT we're running in to problems left and right.  Most of us are on non-windows boxen, (about half are on macs, the other are running linux).

I've read a few different instructions on how to compile a D cross compiler, however since we're writing an OS we don't need any of the standard libraries, just the basics.

Can anyone help walk through the steps of this.  I've been trying to combine two different methods (the method for just building gcc with an x86_64 target, and then trying to build D too), and when I finally got a build, just compiling the following code:

void main() {
  return 1;
}

The compiler barfed with the following error:

~/bin/x86_64-pc-elf-gdc test.d
<built-in>:0: internal compiler error: Bus error
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

I have tried to recompile my xcompiler since then and am having no luck (now I'm getting language glue errors hehe).  I figure rather than keep beating my head off of the wall I'd just ask if anyone else had done something similar, or could help out with this!

Thanks much in advance!

-Brian
September 12, 2007
Brian Madden wrote:
> Hi all,
> 
> I'd just like to preface this with saying that I'm sorry if this doesn't quite
> belong here, I wasn't sure where to post it, and it is a repost from the D
> group which looks like it hadn't received any activity for 2 months prior to
> my post.

I think that NG is depricated

digitalmars.d.learn might be a better choice

sorry can't help you on the rest.
September 12, 2007
== Quote from Brian Madden (untwisted@gmail.com)'s article
> Hi all,
> I'd just like to preface this with saying that I'm sorry if this
> doesn't quite belong here, I wasn't sure where to post it, and it is a
> repost from the D group which looks like it hadn't received any
> activity for 2 months prior to my post.


I think this is the right newsgroup. (It's the one I would've chosen.)

As to the answer to your actual question, I have no idea. I'm afraid you're trying to do things that are much fancier than I've ever done with D. I've never even used GDC at this point, since all of my development is on Windows (32-bit), I just use DMD.


About the old "D" newsgroup...

I guess you missed a post from April (only about the 7th post below yours). It's
called "[Helpful Information] This is the old D newsgroup. It's abandoned."
(http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=D&artnum=29460)

We've resisted deleting the old newsgroup (since it's nice to have the existing posts for the sake of reference of the "early days" of D), but we try to discourage people from posting new threads.

Occasionally, I've posted in that newsgroup advising people that it's old and no one's reading it anymore, but that newsgroup still seem to get 1 or 2 posts per months. (Maybe there's something that the server admin can do to prevent new posts, but just asking people not to post hasn't completely worked.)
September 12, 2007
"Brian Madden" <untwisted@gmail.com> wrote in message news:fc9hvt$24ga$1@digitalmars.com...

BRIAN MADDEN UR SO DUM.


September 12, 2007
Brian Madden wrote:
> Hi all,
> 
> I'd just like to preface this with saying that I'm sorry if this doesn't quite
> belong here, I wasn't sure where to post it, and it is a repost from the D
> group which looks like it hadn't received any activity for 2 months prior to
> my post.
> 
> A few students at the University of Pittsburgh have been gathering and coding
> up a new operating system.  We've played in C, gotten some bootable code, etc,
> but we'd really like to write this all in D (save the asm parts that need to
> be done at the low level).  We're trying to target the x86_64 architecture,
> but not everyone has 64bit machines (myself included).
> 
> We're working on building our cross compiler toolchains BUT we're running in
> to problems left and right.  Most of us are on non-windows boxen, (about half
> are on macs, the other are running linux).
> 
> I've read a few different instructions on how to compile a D cross compiler,
> however since we're writing an OS we don't need any of the standard libraries,
> just the basics.
> 
> Can anyone help walk through the steps of this.  I've been trying to combine
> two different methods (the method for just building gcc with an x86_64 target,
> and then trying to build D too), and when I finally got a build, just
> compiling the following code:
> 
> void main() {
>   return 1;
> }
> 
> The compiler barfed with the following error:
> 
> ~/bin/x86_64-pc-elf-gdc test.d
> <built-in>:0: internal compiler error: Bus error
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://gcc.gnu.org/bugs.html> for instructions.
> 
> I have tried to recompile my xcompiler since then and am having no luck (now
> I'm getting language glue errors hehe).  I figure rather than keep beating my
> head off of the wall I'd just ask if anyone else had done something similar,
> or could help out with this!
> 
> Thanks much in advance!
> 
> -Brian

The only complicated part in making a cross-compiler of GDC is Phobos. Since you don't WANT Phobos (and you certainly don't want Phobos with a non-OS target), you can actually disable that entirely. I believe the flag is just --disable-libphobos, but I'm not positive, I've never had to do it. Suffice to say it can be done :).

At the very least, you should be able to make only the compiler component and its dependencies (you don't need any of the other garbage GCC comes with) with something like:
$ make SUBDIRS="gcc"
$ make install-gcc

I believe that that will build GDC and not build libphobos. But the configuration --disable flag is probably the way to go.

If you can reliably produce cross-compilers that crashes on a simple test case like the one you provided, that's probably a compiler bug.

 - Gregor Richards
September 12, 2007
Brian Madden Wrote:

> Hi all,
> 
> I'd just like to preface this with saying that I'm sorry if this doesn't quite belong here, I wasn't sure where to post it, and it is a repost from the D group which looks like it hadn't received any activity for 2 months prior to my post.
> 
> A few students at the University of Pittsburgh have been gathering and coding up a new operating system.  We've played in C, gotten some bootable code, etc, but we'd really like to write this all in D (save the asm parts that need to be done at the low level).  We're trying to target the x86_64 architecture, but not everyone has 64bit machines (myself included).
> 
> We're working on building our cross compiler toolchains BUT we're running in to problems left and right.  Most of us are on non-windows boxen, (about half are on macs, the other are running linux).
> 
> I've read a few different instructions on how to compile a D cross compiler, however since we're writing an OS we don't need any of the standard libraries, just the basics.
> 
> Can anyone help walk through the steps of this.  I've been trying to combine two different methods (the method for just building gcc with an x86_64 target, and then trying to build D too), and when I finally got a build, just compiling the following code:
> 
> void main() {
>   return 1;
> }
> 
> The compiler barfed with the following error:
> 
> ~/bin/x86_64-pc-elf-gdc test.d
> <built-in>:0: internal compiler error: Bus error
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://gcc.gnu.org/bugs.html> for instructions.
> 
> I have tried to recompile my xcompiler since then and am having no luck (now I'm getting language glue errors hehe).  I figure rather than keep beating my head off of the wall I'd just ask if anyone else had done something similar, or could help out with this!
> 
> Thanks much in advance!
> 
> -Brian

This is nice meaty project idea. It will really test the mettle of both D
and hopefully demonstrate its worth to the wider world. I do hope it ends up being open source.
Getting cross gcc is quite a fraught process so if you've got that far you've already done well. I'm not sure if gdc is mature enough yet for use in a cross compiler so you will probably need to modify/fix it yourselves. Good luck.
 I'm sure many people here will be interested and willing to help but you might want to visit a cross gcc forum or two for the people with the right skills. It would be great to hear how you get on and any specific issues we might be able to help with.

Regards,

Bruce.


September 12, 2007
Brian Madden wrote:
> 
> We're working on building our cross compiler toolchains BUT we're running in
> to problems left and right.  Most of us are on non-windows boxen, (about half
> are on macs, the other are running linux).
> 
> I've read a few different instructions on how to compile a D cross compiler,
> however since we're writing an OS we don't need any of the standard libraries,
> just the basics.

Assuming you aren't averse to the idea, Tango may be your best bet here.  See:

http://www.dsource.org/projects/tango/wiki/TopicAdvancedConfiguration
http://www.dsource.org/projects/tango/wiki/LibraryIntegrationGuide

What I'd do is stub out the common library and do something very minimal for the garbage collector.  Perhaps use this as a starting point:

http://www.dsource.org/projects/tango/browser/trunk/lib/gc/stub/gc.d

That should free you from the need to define almost any OS-level routines.  If I recall, the compiler runtime portion uses memset and a few similar routines for convenience, but these should be easily replaceable.

All this should at least strip out all unnecessary code from your application to get it up and running as quickly as possible.  I'm afraid I can't help much for cross-compilation, though it sounds like you'll be using GDC if that's the case.


Sean
September 13, 2007
Thanks all for the support, I'll be working on this a lot over the weekend, and will be sure to keep everyone updated.  The eventual goal is to have an open source kernel, so everyone will get a chance to look and play if they want ;).
September 13, 2007
"untwisted" <untwisted@gmail.com> wrote in message news:fcbk8n$jc1$1@digitalmars.com...
> Thanks all for the support, I'll be working on this a lot over the weekend,

SO WILL I


September 13, 2007
Jarrett Billingsley wrote:
> "untwisted" <untwisted@gmail.com> wrote in message news:fcbk8n$jc1$1@digitalmars.com...
>> Thanks all for the support, I'll be working on this a lot over the weekend,
> 
> SO WILL I 

So that's why you're rarely online on IRC! Gotcha!
« First   ‹ Prev
1 2 3