Thread overview
[dmd-beta] dmd 1.067 alpha
Jan 15, 2011
Robert
Jan 15, 2011
Robert
Jan 15, 2011
Walter Bright
Jan 15, 2011
Robert Clipsham
Jan 15, 2011
Walter Bright
January 15, 2011
On 15/01/11 09:39, Walter Bright wrote:
> This is the 64 bit Linux version! Hopefully, the D2 64 bit alpha isn't too far behind.
>
> http://ftp.digitalmars.com/dmd1beta.zip
>
> The 64 bit support is ALPHA, so expect problems! Please post bugs here, not in bugzilla, until we do a real release.
>
>
> Known Problems
> --------------
>
> Code gen is not tuned for 64 bits. It's inefficient, especially with floating point.
>
> C ABI for struct and complex number pass/return is not followed.
>
> Dwarf symbolic debug info is generated, but not recognized by gdb. I have no idea what the problem is.
>
> std.zip is not working.
>
> std.boxer is not working.
>
>
>
> _______________________________________________
> dmd-beta mailing list
> dmd-beta at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-beta

It seems the following doesn't work yet? (First issue I hit while trying to
run tango unittests - it compiles fine with the exception of the 64bit
vararg support for dmd which I'm working on).
test.d:
----
void foo(int, ...)
{
}
----
dmd -c -m64 test.d gives:

test.d(1): Error: '__va_argsave_t' is not defined, perhaps you need to
import std.c.stdarg; ?
test.d(1): Error: __va_argsave_t is used as a type
test.d(1): Error: variable test.foo.__va_argsave voids have no value

-- 
Robert
http://octarineparrot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-beta/attachments/20110115/85fa783d/attachment.html>
January 15, 2011
Having hacked around that, it seems not all x86_64 opcodes are supported? Not looked extensively, the first issue tango hits is the lack of pushq, no doubt there'll be others.

On 15 January 2011 12:19, Robert <robert at octarineparrot.com> wrote:

> On 15/01/11 09:39, Walter Bright wrote:
> > This is the 64 bit Linux version! Hopefully, the D2 64 bit alpha isn't too far behind.
> >
> > http://ftp.digitalmars.com/dmd1beta.zip
> >
> > The 64 bit support is ALPHA, so expect problems! Please post bugs here, not in bugzilla, until we do a real release.
> >
> >
> > Known Problems
> > --------------
> >
> > Code gen is not tuned for 64 bits. It's inefficient, especially with floating point.
> >
> > C ABI for struct and complex number pass/return is not followed.
> >
> > Dwarf symbolic debug info is generated, but not recognized by gdb. I have no idea what the problem is.
> >
> > std.zip is not working.
> >
> > std.boxer is not working.
> >
> >
> >
> > _______________________________________________
> > dmd-beta mailing list
> > dmd-beta at puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/dmd-beta
>
> It seems the following doesn't work yet? (First issue I hit while trying to
> run tango unittests - it compiles fine with the exception of the 64bit
> vararg support for dmd which I'm working on).
> test.d:
> ----
> void foo(int, ...)
> {
> }
> ----
> dmd -c -m64 test.d gives:
>
> test.d(1): Error: '__va_argsave_t' is not defined, perhaps you need to
> import std.c.stdarg; ?
> test.d(1): Error: __va_argsave_t is used as a type
> test.d(1): Error: variable test.foo.__va_argsave voids have no value
>
> --
> Robert
> http://octarineparrot.com/
>



-- 
Robert
http://octarineparrot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/dmd-beta/attachments/20110115/b2b34583/attachment.html>
January 15, 2011

Robert wrote:
> Having hacked around that, it seems not all x86_64 opcodes are supported? Not looked extensively, the first issue tango hits is the lack of pushq, no doubt there'll be others.
>

According to my (AMD) instruction set reference, there is no pushq instruction. Just use push; they all push 8 bytes regardless of overrides.
January 15, 2011
On 15/01/11 19:48, Walter Bright wrote:
>
>
> Robert wrote:
>> Having hacked around that, it seems not all x86_64 opcodes are supported? Not looked extensively, the first issue tango hits is the lack of pushq, no doubt there'll be others.
>>
>
> According to my (AMD) instruction set reference, there is no pushq instruction. Just use push; they all push 8 bytes regardless of overrides.

Yes, I realised this shortly after I posted it, didn't get chance to reply though - ldc and gdc both accept it, just needed replacing to work with dmd.

-- 
Robert
http://octarineparrot.com/

January 15, 2011

Robert Clipsham wrote:
>
> Yes, I realised this shortly after I posted it, didn't get chance to reply though - ldc and gdc both accept it, just needed replacing to work with dmd.
>

I should add that dmd's 64 bit inline assembler has been tested only with Phobos' inline assembler usage.

obj2asm should work correctly with 64 bit elf files. As usual, I find obj2asm to be an invaluable tool in tracking down bad code gen.