KertÃsz Csaba <csaba.kertesz@xxxxxxxxx> writes: > Hi, > >>> Now, I know what is going on, but I do not know why: the >>> __builtin_return_address() corresponds to a value in the text segment, >>> which has fde entry, but: >>> - __builtin_return_address() returns back the run-time address of the >>> text segment >>> - the fde entries contain the link-time address of the same text segment. >> >> I'm not sure I fully understand this. ÂAre you saying that the runtime >> and link time addresses are different? ÂHow is the runtime address >> determined? ÂIt is done using a linker script, or are the instructions >> moved around dynamically at runtime? > > I speak strictly from run-time: when the gcc tries to find the fde for > a text segment, the __builtin_return_address() corresponds to the > run-time (memory) address of a text segment, but the fdes contain the > link-time addresses of the text segments in run-time. I'm sorry, but you didn't answer my questions. When running on most GNU/Linux systems, the runtime address is the same as the link time address. The link time address is the address you can see from readelf -S or readelf -l. You haven't precisely said so, but you have implied that on your system the runtime addresses are different from the link time addresses. Do you mean the same thing that I just said: that the addresses are runtime are not the same as the addresses reported by readelf -S or readelf -l? How is the runtime address determined? Is the runtime address determined using a linker script, or are the instructions moved around dynamically at runtime? > Ok, so now the question is: why the fdes do not contain run-time > addresses of the text segments in run-time? I can't answer that question until you answer my questions. Ian