Hi, IIRC, the LM32_16_GOT relocation is an offset in to the global offset table (GOT). The GOT actually contains the pointer. The idea behind using the GOT is that the loader only modifies the GOT, not the text section, allowing the text section to be shared between multiple executables.
Regards, Jon -----Original Message----- From: Sébastien Bourdeauducq [mailto:[email protected]] On Behalf Of Sébastien Bourdeauducq Sent: 22 January 2010 12:27 To: Jon Beniston Cc: [email protected] Subject: new R_LM32_16_GOT relocation Hi Jon, The new binutils for LM32 emits undocumented R_LM32_16_GOT relocations that are not implemented in Linux. From what I understood according to the lm32_elf_howto_table array, I needed to patch the 16 least significant bits of the instruction to be relocated: http://github.com/lekernel/milkymist- linux/commit/73de207d007baeb981c2ae70e20c5557834f2a9f But when running the binary under the new kernel, the machine just freezed. I can't tell you much more now, but we should have QEMU support soon which will be a lot of help to debug such problems. Can you tell us what R_LM32_16_GOT is supposed to do? How to handle it if not by patching the 16 LSBs? Thank you, Sébastien _______________________________________________ http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org IRC: #milkym...@freenode Webchat: www.milkymist.org/irc.html Wiki: www.milkymist.org/wiki
