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..