Segfault with std.container.Array but not regular dynamic array
Dan
dbdavidson at yahoo.com
Thu Nov 29 04:38:01 PST 2012
On Thursday, 29 November 2012 at 07:59:02 UTC, Maxim Fomin wrote:
> This doesn't look like assembly for previous source. Please
> provide the source for which you have assembly and tell which
> dmd options do you use.
Well, I'm using the latest dmd (from the trunk), phobos,
druntime, so I could build and step through.
rdmd -version=bug --force --build-only -g -w -property
-I/home/dbdavidson/stage/vibe.d/source
-I/home/dbdavidson/plusauri/dlang -L-levent_pthreads -L-levent
-L-lssl -L-lcrypto /home/dbdavidson/tmp/again.d
dmd -v
DMD v2.061 DEBUG
DMD64 D Compiler v2.061
-----------------------
import core.stdc.stdio : printf;
struct S {
long x = 42;
version(bug) {
void opAssign(S rhs)
{
printf("Assign %d\n", this.x);
}
}
}
//alias RefCounted!(int) Foo;
alias S Foo;
Foo[int] map;
void main() {
map[3] = Foo();
printf("%d\n", map[3].x);
}
------------------------
(gdb) disass
Dump of assembler code for function _Dmain:
0x000000000041a630 <+0>: push %rbp
0x000000000041a631 <+1>: mov %rsp,%rbp
0x000000000041a634 <+4>: sub $0x38,%rsp
0x000000000041a638 <+8>: push %rbx
=> 0x000000000041a639 <+9>: mov $0x3,%eax
0x000000000041a63e <+14>: mov %eax,-0x30(%rbp)
0x000000000041a641 <+17>: lea -0x30(%rbp),%rcx
0x000000000041a645 <+21>: movabs $0x8,%rdx
0x000000000041a64f <+31>: movabs $0x43cc10,%rsi
0x000000000041a659 <+41>: mov %fs:0x0,%rdi
0x000000000041a662 <+50>: add 0x229957(%rip),%rdi #
0x643fc0
0x000000000041a669 <+57>: callq 0x41ae84 <_aaGetX>
0x000000000041a66e <+62>: mov %rax,-0x28(%rbp)
0x000000000041a672 <+66>: test %rax,%rax
0x000000000041a675 <+69>: jne 0x41a681 <_Dmain+81>
0x000000000041a677 <+71>: mov $0x12,%edi
0x000000000041a67c <+76>: callq 0x41a710 <_D5again7__arrayZ>
0x000000000041a681 <+81>: movabs $0x2a,%rax
0x000000000041a68b <+91>: mov %rax,-0x18(%rbp)
0x000000000041a68f <+95>: mov %rax,%rsi
0x000000000041a692 <+98>: lea -0x20(%rbp),%rdi
0x000000000041a696 <+102>: callq 0x41a5c8
<_D5again1S8opAssignMFS5again1SZv>
0x000000000041a69b <+107>: mov -0x20(%rbp),%rcx
0x000000000041a69f <+111>: mov -0x28(%rbp),%rdx
0x000000000041a6a3 <+115>: mov %rcx,(%rdx)
More information about the Digitalmars-d-learn
mailing list