Hi, I wrote program which was linked with -relocatable has a .got2 and a .fixup section. I am loading this program to a different location in my memory and I adjust .got2 and the .fixup accordingly (at least what I could see in my hardware debugger). Everything seems to work fine, the C code is finding variables in .data and .bss using the global offset table which I fixed. Now there is one thing which is not working as expected:
If I declare a variable in .data like this: static void *ptr = my_func; and reference it later in my code which was already moved: void foo(void) { printf("ptr=%p my_func=%p\n", ptr, my_func); } I am getting a result like this: ptr = 0xfff00042 my_func=0x03100042 wich wonders me since I am sure that it uses the got to find ptr, but the value stored there, is not relocated but just the value it got in the obj code. Accessing the pointer my_func also seems to use the relocation tables since it print out the new location of my_func. So I wonder is that intentionally like this or did I forget to relocate some data. If so where can I find it .got2 and .fixup seem not to contain it? Why is there a destingtion between fixup and got2? Why does the compiler generate two different tables which seem to have the same (or only similar/if so what is the difference) meaning? Any ideas hints or documents to look at? Thanks, Frank -- Frank Haverkamp f.haverkamp at web.de ______________________________________________________________________________ Den Komfort von WEB.DE FreeMail nutzen, aber die alten E-Mail-Adressen nicht aufgeben? Kein Problem: http://freemail.web.de/features/?mc=021128 ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/