On 2011-02-07 20:07, Steven Schveighoffer wrote:
On Mon, 07 Feb 2011 13:53:14 -0500, spir <denis.s...@gmail.com> wrote:

On 02/07/2011 04:32 PM, Steven Schveighoffer wrote:
On Mon, 07 Feb 2011 06:42:46 -0500, spir <denis.s...@gmail.com> wrote:

On 02/07/2011 07:53 AM, GreatEmerald wrote:
Hmm, no, it won't work right on Linux for some reason. This is the
output:

/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../libphobos2.a(deh2_4e7_525.o):
In
function `_D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable':
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x4):


undefined reference to `_deh_beg'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0xc):


undefined reference to `_deh_beg'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x13):


undefined reference to `_deh_end'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x37):


undefined reference to `_deh_end'
collect2: ld returned 1 exit status
--- errorlevel 1

The shell script I'm using to compile it is:

#!/bin/sh
dmd -m32 -c -lib dpart.d
gcc -m32 -c cpart.c
dmd -m32 cpart.o dpart.a /usr/lib/libphobos2.a

(Although it appears that you don't need to explicitly link with
libphobos2, it
does it automatically... and fails with the above error.) Any ideas
about
what the
error means?

Take my words with much doubt, I've few exp in that.
Are you sure you did use same source under both OSes?
"undefined reference to `_deh_end' / `_deh_beg'"

deh == d exception handling (or handler, not sure) ;)

Looks like the module that's failing to link is rt.deh

Are you sure of that? I get exactly the same kind of linker error when
forgetting a fake main(){} (whatver the number of modules). Eg:
...
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0xc):
undefined reference to `_deh_beg'
src/rt/deh2.d:(.text._D2rt4deh213__eh_finddataFPvZPS2rt4deh213DHandlerTable+0x13):
undefined reference to `_deh_end'
...
repeted n times.

Hm... it looks like _deh_beg and _deh_end is something defined by the
compiler? It's used in deh2.d but not defined anywhere in druntime.

I'm pretty sure deh stands for d exception handler.

-Steve

The compiler puts this in the binary.

--
/Jacob Carlborg

Reply via email to