Newbie GDC issues

Iain Buclaw ibuclaw at ubuntu.com
Fri Sep 6 00:55:27 PDT 2013


On 6 September 2013 08:32, eles <eles at eles.com> wrote:
> On Thursday, 5 September 2013 at 23:49:18 UTC, Ramon wrote:
>>
>> On D's, and in particular GDC's, way to conquer the world there will
>> evidently be many newbies to notice D, look at it, be drawn to it (and be
>> happily trapped).
>>
>> I am such a newbie and the idea behind this thread is to collect all the
>> issues, quirks and nuisances a newbie might encounter.
>
>
> That being said, Iain, could you please update this example of yours:
>
> http://iainbuclaw.wordpress.com/2010/05/22/writing-a-linux-kernel-module-in-d/
>
> It is a very interesting concept, if it works...
>
> Using the git head gdc I have these errors:
>
> $make VERBOSE=1
> gdc -c dinterface.d -o dinterface.o
> make -C /lib/modules/3.11.0-5-generic/build M=/home/user/kernelmodule
> CONFIG_HELLO=m MAKE_KBUILD=1 modules
> make[1]: Entering directory `/usr/src/linux-headers-3.11.0-5-generic'
>   LD [M]  /home/user/kernelmodule/hello.o
>   Building modules, stage 2.
>   MODPOST 1 modules
> WARNING: could not find /home/user/kernelmodule/.dinterface.o.cmd for
> /home/user/kernelmodule/dinterface.o
> WARNING: "_D3std3utf12UTFException7__ClassZ"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING:
> "_D3std4conv21ConvOverflowException6__ctorMFAyaAyamZC3std4conv21ConvOverflowException"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING:
> "_D6object9Exception6__ctorMFNaNbNfAyaAyamC6object9ThrowableZC9Exception"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_assert_msg" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D3std5ascii7isDigitFNaNbNfwZb" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_d_arraycopy" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D9Exception7__ClassZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING:
> "_D3std3utf12UTFException6__ctorMFAyamAyamC6object9ThrowableZC3std3utf12UTFException"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_newclass" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D4core6memory2GC6qallocFNaNbmkZS4core6memory8BlkInfo_"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D3std4conv21ConvOverflowException7__ClassZ"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D12TypeInfo_Aya6__initZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D3std9exception7bailOutFNaNfAyamxAaZv"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D3std4conv13ConvException7__ClassZ"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_Dmodule_ref" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_newitemT" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D4core6memory2GC6extendFNaNbPvmmZm"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D14TypeInfo_Array6__vtblZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D3std6format15FormatException7__ClassZ"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D3std6string9toStringzFNaNbAyaZPya"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING:
> "_D3std4conv13ConvException6__ctorMFAyaAyamZC3std4conv13ConvException"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D15TypeInfo_Struct6__vtblZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_d_assert" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING:
> "_D3std6format15FormatException6__ctorMFAyaAyamC6object9ThrowableZC3std6format15FormatException"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_Unwind_Resume" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_arrayappendT" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D11TypeInfo_Aa6__initZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D3std4math7signbitFNaNbNeeZi" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D3std3utf6encodeFNaNfKG4awZm" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_d_arraycatnT" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_throw" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D3std3utf12isValidDcharFNaNbNfwZb"
> [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_array_bounds" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_D16TypeInfo_Pointer6__vtblZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D14TypeInfo_Const6__vtblZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D3std6string12__ModuleInfoZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_D10TypeInfo_a6__initZ" [/home/user/kernelmodule/hello.ko]
> undefined!
> WARNING: "_d_arraycatT" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_adDupT" [/home/user/kernelmodule/hello.ko] undefined!
> WARNING: "_d_arraysetcapacity" [/home/user/kernelmodule/hello.ko] undefined!
>   CC      /home/user/kernelmodule/hello.mod.o
>   LD [M]  /home/user/kernelmodule/hello.ko
> make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-5-generic'
>
> Should the Makefile be updated to not link in libraries?

That's interesting, as gdc is only used to compile dinterface.o
(which has no reference to libphobos/druntime and shouldn't be
emitting references to it).

In today's gdc implementation (back then I believe that was for D1) -
you'd have to use -fno-emit-moduleinfo  (maybe I should reverse the
logic of that switch to make it easier to use).


Regards
-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';


More information about the D.gnu mailing list