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 0000000005f0 00010000000b R_X86_64_32S 0000000000000000 .text + 5f6 00000000068e 00410000000b R_X86_64_32S 0000000000002008 jump_back_entry + 0 000000000695 00060000000b R_X86_64_32S 0000000000000000 .bss + 1000 000000000006 000b0000000a R_X86_64_32 0000000000000000 .debug_info + 0 000000000036 000b0000000a R_X86_64_32 0000000000000000 .debug_info + 24c 000000000066 000b0000000a R_X86_64_32 0000000000000000 .debug_info + 4c0 000000000096 000b0000000a R_X86_64_32 0000000000000000 .debug_info + 6d8 0000000000c6 000b0000000a R_X86_64_32 0000000000000000 .debug_info + 85b 000000000006 000c0000000a R_X86_64_32 0000000000000000 .debug_abbrev + 0 00000000000c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + c0 000000000011 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 88 000000000015 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 0 000000000029 000d0000000a R_X86_64_32 0000000000000000 .debug_line + 0 000000000030 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 176 000000000037 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 137 000000000045 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 16d 00000000004a 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5b 000000000057 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 7a 00000000005e 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 48 000000000063 000e0000000a R_X86_64_32 0000000000000000 .debug_str + b7 000000000070 000e0000000a R_X86_64_32 0000000000000000 .debug_str + eb 000000000075 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 63 000000000082 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 9e 000000000087 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 29 000000000094 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 132 000000000099 000e0000000a R_X86_64_32 0000000000000000 .debug_str + b0 0000000000a6 000e0000000a R_X86_64_32 0000000000000000 .debug_str + f8 0000000000ad 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 124 0000000000ba 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 11e 0000000000c8 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 23 0000000000d6 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 141 000000000115 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 10f 000000000120 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 148 00000000013b 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 158 000000000147 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 42 000000000165 000e0000000a R_X86_64_32 0000000000000000 .debug_str + d6 000000000180 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 0 000000000193 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + ed 0000000001a2 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 110 0000000001a7 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 166 0000000001be 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 14f 0000000001da 000e0000000a R_X86_64_32 0000000000000000 .debug_str + cc 0000000001f1 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 185 000000000206 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 33 000000000213 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 6c 000000000220 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 33 000000000236 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 6c 000000000252 000c0000000a R_X86_64_32 0000000000000000 .debug_abbrev + 109 000000000258 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 20c 00000000025d 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 222 000000000261 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 188 000000000275 000d0000000a R_X86_64_32 0000000000000000 .debug_line + 13f 00000000027a 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 1c2 000000000297 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 1df 00000000029c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2a9 0000000002a8 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 218 0000000002b6 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 1ab 0000000002c4 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 248 0000000002d2 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 235 0000000002e3 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 1b5 0000000002ea 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 204 0000000002f7 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 29d 0000000002fe 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 278 00000000030c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 294 000000000313 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 1d1 00000000031a 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 1f1 000000000320 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2bf 000000000337 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 1d1 000000000340 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 287 00000000034a 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 30e 000000000359 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 344 00000000035e 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 282 000000000368 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 3f2 000000000375 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 428 00000000037a 00100000000a R_X86_64_32 0000000000000000 .debug_ranges + 0 000000000396 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 4ae 00000000039b 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 182 0000000003a5 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 54c 0000000003aa 00100000000a R_X86_64_32 0000000000000000 .debug_ranges + 40 0000000003bb 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 60f 0000000003c8 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 632 0000000003e7 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 699 0000000003ec 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 28e 0000000003f6 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 6cf 000000000406 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 243 00000000042e 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 25a 000000000434 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2b7 00000000044b 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 6f2 000000000454 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 287 00000000045e 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 73f 00000000046d 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 762 000000000473 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 282 000000000484 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 271 00000000049b 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 785 0000000004aa 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 7d2 0000000004b0 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 282 0000000004c6 000c0000000a R_X86_64_32 0000000000000000 .debug_abbrev + 22b 0000000004cc 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 339 0000000004d1 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 351 0000000004d5 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2c8 0000000004e9 000d0000000a R_X86_64_32 0000000000000000 .debug_line + 2c7 0000000004f0 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 330 0000000004f5 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2f0 000000000502 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 303 00000000050f 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 315 00000000053a 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 808 000000000556 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 82b 000000000569 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 32b 00000000056f 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 364 00000000059a 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 862 0000000005bd 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 898 0000000005cb 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 8cf 0000000005da 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 34a 0000000005fd 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2eb 000000000607 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 905 00000000062e 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 93b 00000000063b 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 972 00000000065b 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 31d 00000000066c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2f7 00000000068b 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 2fe 000000000698 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 345 0000000006d2 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 9a8 0000000006de 000c0000000a R_X86_64_32 0000000000000000 .debug_abbrev + 308 0000000006e4 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 3f8 0000000006e9 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 404 0000000006ed 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 37b 000000000701 000d0000000a R_X86_64_32 0000000000000000 .debug_line + 387 000000000708 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 47c 00000000070f 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 469 00000000071d 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 473 000000000722 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 43f 00000000072f 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 3bb 000000000736 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 3db 00000000073d 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 42d 000000000744 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 3c9 00000000074a 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 453 000000000761 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + 9df 000000000767 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 488 000000000783 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 39e 00000000079a 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + a53 00000000079f 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 3ee 0000000007ac 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 45e 0000000007b9 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4a2 0000000007c6 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 36b 0000000007d3 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 447 0000000007e8 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 43a 0000000007ed 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 3ee 000000000803 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 45e 000000000819 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4a2 00000000082f 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 36b 000000000845 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 447 000000000861 000c0000000a R_X86_64_32 0000000000000000 .debug_abbrev + 394 000000000867 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 568 00000000086c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4ed 000000000870 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4c3 000000000884 000d0000000a R_X86_64_32 0000000000000000 .debug_line + 453 00000000088b 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 61f 000000000890 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4af 00000000089d 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 52c 0000000008ab 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 513 0000000008b2 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 53e 0000000008b9 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 58c 0000000008c0 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 628 0000000008c7 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 504 0000000008ce 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5f5 0000000008d5 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5a8 0000000008dc 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5e1 0000000008e1 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5bf 0000000008ec 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 55f 0000000008ff 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5db 00000000090d 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4b6 00000000091b 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4bc 00000000095a 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 609 000000000966 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 551 00000000097d 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + ac7 00000000099c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 599 0000000009b3 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + b27 0000000009cb 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 50e 0000000009da 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5d5 0000000009e8 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5ef 000000000a80 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5c7 000000000a97 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + b87 000000000aae 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 521 000000000abc 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 639 000000000aca 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4ff 000000000ad8 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 527 000000000ae8 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 574 000000000aff 000f0000000a R_X86_64_32 0000000000000000 .debug_loc + be7 000000000b16 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 618 000000000b24 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 634 000000000b32 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 582 000000000b40 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 587 000000000b5c 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 4e6 000000000b81 000e0000000a R_X86_64_32 0000000000000000 .debug_str + 5fa > > Hopefully there are not 32bit or 16bit assembly routines getting linked > in and using problemenatic instructions. i comment out 32bit/16bit related from Makfile...