Druntime undefined references

drug drug2004 at bk.ru
Mon Nov 2 11:07:34 UTC 2020


On 11/2/20 1:50 PM, Severin Teona wrote:
> Hi guys!
> 
> I build the druntime for an ARM Cortex-M based microcontroller and I 
> trying to create an application and link it with the druntime. I am also 
> using TockOS[1], which does not implement POSIX thread calls and other 
> OS-dependent implementations. As I was looking through the errors I got, 
> I found some functions and I don’t know what they do, or how should I 
> solve the errors.
> 
> The first one is:
> libdruntime-ldc.a(dwarfeh.o): in function `_d_eh_personality_common': 
> dwarfeh.d:(.text._d_eh_personality_common[_d_eh_personality_common]+0x2c): 
> undefined reference to `_d_eh_GetIPInfo'
> 
> and the second one is:
> dl.d:(.text._D4core8internal3elf2dl12SharedObject14thisExecutableFNbNiZSQCgQCeQByQBxQBx[_D4core8internal3elf2dl12SharedObject14thisExecutableFNbNiZSQCgQCeQByQBxQBx]+0x1a): 
> undefined reference to `dl_iterate_phdr'
> (the druntime was build as a static library, because I can’t use dynamic 
> libraries on a microcontroller)
> 
> Does anyone know what these exactly do and how important/essential are 
> they? Is there any way I could solve them?
> 
> Thank a lot.
> 
> [1]: https://www.tockos.org
> 

cant' help much but just in case - see 
https://github.com/ldc-developers/ldc/pull/2405#issuecomment-346187456, 
may be it helps

also you can define this symbol yourself with assert(0) to check if it 
is called at all

what about  - quick glance at 
https://linux.die.net/man/3/dl_iterate_phdr says us that this symbol is 
used only with shared objects so you can try to define it yourself with 
assert(0) like this (not tested!!!):
```D
extern(C):
alias Callback = int function (void*, size_t, void*);
int dl_iterate_phdr(Callback callback, void* data)
{
	assert(0);
}
```
this lets you to link druntime at least and if those symbols were called 
abort the execution


More information about the Digitalmars-d-learn mailing list