.S files have to be recoded to match the memory model! Yinghai Lu <yinghai at kernel.org> wrote: >On Sat, Nov 17, 2012 at 9:35 PM, Yinghai Lu <yinghai at kernel.org> wrote: >> On Sat, Nov 17, 2012 at 9:20 PM, Eric W. Biederman >> <ebiederm at xmission.com> wrote: >>> Yinghai Lu <yinghai at kernel.org> writes: >>>> >>>> there is lots of R_X86_64_32 and R_X86_64_32S for 64bit purgatory. >>>> >>>> those come from global variables...could kill some by converting >them static... >>>> >>>> but still have some global string or ro data.... >>>> >>>> build one big file include all .S ? >>> >>> For R_x86_64_32 and R_x86_64_32S the problem is that the >instructions >>> are using absolute 32bit addresses. >>> >>> It is probably overkill but we should be able to solve this with >>> by adding "-mcmodel=large" to the build of purgatory. >> >> it kill some... >> >> still have left.... looks they from .S >> >> yhlu at linux-siqj:~/xx/xx/utils/kexec-tools> readelf --relocs >> purgatory/purgatory.ro | grep R_X86_64_32 >> 0000000005e9 00020000000b R_X86_64_32S 0000000000000000 .rodata >+ c0 > >looks like .S did not get that -mcmodel=large applied.. -- Sent from my mobile phone. Please excuse brevity and lack of formatting.