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

Reply via email to