tooling quality and some random rant

Walter Bright newshound2 at digitalmars.com
Mon Feb 14 10:24:26 PST 2011


Steven Schveighoffer wrote:
> On Sun, 13 Feb 2011 14:12:02 -0500, Walter Bright 
> <newshound2 at digitalmars.com> wrote:
> 
>> Vladimir Panteleev wrote:
>>> On Sun, 13 Feb 2011 20:26:50 +0200, Walter Bright 
>>> <newshound2 at digitalmars.com> wrote:
>>>
>>>> golgeliyele wrote:
>>>>> I don't think C++ and gcc set a good bar here.
>>>>
>>>> Short of writing our own linker, we're a bit stuck with what ld does.
>>>  That's not true. The compiler has knowledge of what symbols will be 
>>> passed to the linker, and can display its own, much nicer error 
>>> messages. I've mentioned this in our previous discussion on this topic.
>>
>> Not without reading the .o files passed to the linker, and the 
>> libraries, and figuring out what would be pulled in from those 
>> libraries. In essence, the compiler would have to become a linker.
>>
>> It's not impossible, but is a tremendous amount of work in order to 
>> improve one error message, and one error message that generations of C 
>> and C++ programmers are comfortable dealing with.
> 
> I'm not saying that this should be done and is worth the tremendous effort.
> 
> However, when linking a c++ app without a main, here is what I get:
> 
> /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function 
> `_start':
> (.text+0x18): undefined reference to `main'
> 
> When linking a d app without a main, we get:
> 
> 
> /home/steves/dmd-2.051/linux/bin/../lib/libphobos2.a(dmain2_517_1a5.o): 
> In function `_D2rt6dmain24mainUiPPaZi7runMainMFZv':
> src/rt/dmain2.d:(.text._D2rt6dmain24mainUiPPaZi7runMainMFZv+0x16): 
> undefined reference to `_Dmain'
> /home/steves/dmd-2.051/linux/bin/../lib/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'
> /home/steves/dmd-2.051/linux/bin/../lib/libphobos2.a(thread_eb_258.o): 
> In function `_D4core6thread6Thread6__ctorMFZC4core6thread6Thread':
> src/core/thread.d:(.text._D4core6thread6Thread6__ctorMFZC4core6thread6Thread+0x1d): 
> undefined reference to `_tlsend'
> src/core/thread.d:(.text._D4core6thread6Thread6__ctorMFZC4core6thread6Thread+0x24): 
> undefined reference to `_tlsstart'
> /home/steves/dmd-2.051/linux/bin/../lib/libphobos2.a(thread_ee_6e4.o): 
> In function `thread_attachThis':
> src/core/thread.d:(.text.thread_attachThis+0x53): undefined reference to 
> `_tlsstart'
> src/core/thread.d:(.text.thread_attachThis+0x5c): undefined reference to 
> `_tlsend'
> /home/steves/dmd-2.051/linux/bin/../lib/libphobos2.a(thread_e8_713.o): 
> In function `thread_entryPoint':
> src/core/thread.d:(.text.thread_entryPoint+0x29): undefined reference to 
> `_tlsend'
> src/core/thread.d:(.text.thread_entryPoint+0x2f): undefined reference to 
> `_tlsstart'
> collect2: ld returned 1 exit status
> --- errorlevel 1
> 
> Let's not pretend that generations of c/C++ coders are going to 
> attribute this slew of errors to a missing main function.

I understand what you're saying, but experienced C/C++ programmers are used to 
paying attention only to the first error message :-)

> I personally think we need to get the linker to demangle symbols 
> better.  That would go a long way...

Not for the above messages.


More information about the Digitalmars-d mailing list