Thread overview | ||||||
---|---|---|---|---|---|---|
|
January 07, 2008 DMD win32 static library link errors | ||||
---|---|---|---|---|
| ||||
link.exe (Assertion failure: 'len <= IDMAX' on line 129 in file 'libin.cpp') I saw on the C++ newsgroup it happens when identifiers are too long in an object file. The question is whats the best way igure out which ID is causing it? All the symbols in the source code are nowhere near the 512 limit. I tried playing with the dmd/objdump tool but diddnt diddnt see anything glancing over the output. |
January 08, 2008 Re: DMD win32 static library link errors | ||||
---|---|---|---|---|
| ||||
Posted in reply to Neal Alexander | Neal Alexander wrote:
> link.exe (Assertion failure: 'len <= IDMAX' on line 129 in file
> 'libin.cpp')
>
> I saw on the C++ newsgroup it happens when identifiers are too long in an object file. The question is whats the best way igure out which ID is causing it? All the symbols in the source code are nowhere near the 512 limit.
>
> I tried playing with the dmd/objdump tool but diddnt diddnt see anything
> glancing over the output.
Do you have any templates, they tend to have long mangled names. It could also be a deeply nested identifier.
|
January 08, 2008 Re: DMD win32 static library link errors | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert DaSilva | Robert DaSilva wrote: > Neal Alexander wrote: >> link.exe (Assertion failure: 'len <= IDMAX' on line 129 in file >> 'libin.cpp') >> >> I saw on the C++ newsgroup it happens when identifiers are too long in >> an object file. The question is whats the best way igure out which ID is >> causing it? All the symbols in the source code are nowhere near the 512 >> limit. >> >> I tried playing with the dmd/objdump tool but diddnt diddnt see anything >> glancing over the output. > > Do you have any templates, they tend to have long mangled names. > It could also be a deeply nested identifier. Yea its a mixin template causing it im pretty sure. I tried making identifiers 1-2 chars long but it doesnt help. http://paste.dprogramming.com/dpfxrbb1 If youre interested. The point of the code is to transparently wrap 32/64bit structs and endian conversion. It uses a proxy struct with enum indexing and offset/size tables. |
January 08, 2008 Re: DMD win32 static library link errors | ||||
---|---|---|---|---|
| ||||
Posted in reply to Neal Alexander | Neal Alexander wrote: > Robert DaSilva wrote: >> Neal Alexander wrote: >>> link.exe (Assertion failure: 'len <= IDMAX' on line 129 in file >>> 'libin.cpp') >>> >>> I saw on the C++ newsgroup it happens when identifiers are too long in >>> an object file. The question is whats the best way igure out which ID is >>> causing it? All the symbols in the source code are nowhere near the 512 >>> limit. >>> >>> I tried playing with the dmd/objdump tool but diddnt diddnt see anything >>> glancing over the output. >> >> Do you have any templates, they tend to have long mangled names. >> It could also be a deeply nested identifier. > > Yea its a mixin template causing it im pretty sure. I tried making identifiers 1-2 chars long but it doesnt help. > > http://paste.dprogramming.com/dpfxrbb1 If youre interested. > > The point of the code is to transparently wrap 32/64bit structs and endian conversion. It uses a proxy struct with enum indexing and offset/size tables. Ok so, obj2asm.exe gave much more useful output. It turns out the length of a mixin string affects the symbol names generated. __body__ generated a 750 byte identifier: extrn _D14reflect_txtgen3635__T8ÙbodyéVG4yaa4_45686472VA€„8€„c6633325f€ˆœ2a2078€”š3b€‡–É4€—°€š3b€…è1746_656e7Ùd€ƒ¬bÙ655f74797€ƒŠ2c€„Ž6d61€ƒ¿8696e€ˆ”76é7273€ƒ”f6e€‡¨€„È€ƒÜ79€‡¤0€ƒ´f66É€‡€„Ä€‹€ƒ‰ù16773€‰À8€„Ò7a€‰æ€„€†Ö€’˜†´€ŠÚ€”¨€„˜€¨Ù„¤ƒÊé82c7d3b€„’6‚„Š963‚ƒ€3„Ò€„”‚ƒ5†´ƒÔ45b5‚„¢‚ƒÄ€‰ä03€ƒ’5‚ˆúƒŽª€ƒÂ€†¦„ò2cƒ•ž€¤5Œ†‚†Ð€ƒš5€„¤†š”ƒÜe€Œ¼¦€“¶„„€¼„¬€®ø„ŠÔ€®ô„Šü€®¸…Š¤®¨…ŠÌ°à…Šô²â…Žô€²À††œ‚²¢€¼ø‡Š”€±¸‡¼€“¾†ƒ’Ù…ˆü†ì…§ü€“¶…©ü€”ò…¨ü€”ø…¤ü€”ô…¤ü€”¸…¤ü”¨…¤ü–à…¤ü˜â…¨„€˜À… „‚˜¢€¼ø…¤ü€—¸…¥üd3b€„¨61Ú96320€ƒÏ„ƒø€„”2075ƒ†â„ƒÒ45b5dÛ€ƒ–ˆÊ03€ƒŽ5bÛ‡›††‰Â€ˆ¸‡ ¸†¾€¨¸†º€©ð†‹¶€©ì†‹²€©´†‹®©œ†‹ª«Ð†‹¦Ò…ª€¼…‡¦‚Ž€¸ð†‹–€¬´†Ž’€Žº†…Ž…ˆÈ†”Ò…žÈ€“²…¥È€”ꅤȀ”ð… È€”ì… È€”´… È”œ… È–Ð… Ș҄¤Ø€˜¼„œØ‚˜Ž€¸ð… È€—´…¡Èd3bZ8__bodyéxAya Splitting up the struct definition into smaller const char[] variables and concatenating them in __body__ fixed it (making each their own template crashes DMD). |
Copyright © 1999-2021 by the D Language Foundation