[patch] S/390: Optimize 64-bit local relocs -> section relocs [with the patch now]
Mon Apr 14 20:40:00 GMT 2008
in the patch
you disallowed non-pc-rel relocs to merge sections for both 31-bit and 64-bit
But the comment there references only unspecific 31-bit problems.
Is it safe to permit again the non-pc-rel relocs at least on 64-bit s/390?
Linux kernel built with this patch runs fine but not sure about other programs.
The patch reduces s390x Linux kernel rpms size base+debuginfo 25M+66M -> 6M+60M.
(Some of the info was found by Jakub Jelinek.)
-------------- next part --------------
2008-04-14 Jan Kratochvil <email@example.com>
* config/tc-s390.c (tc_s390_fix_adjustable): Permit an adjustment to
symbols in merge sections for 64-bit non pc-relative ones.
--- gas/config/tc-s390.c 19 Mar 2008 10:29:17 -0000 1.55
+++ gas/config/tc-s390.c 10 Apr 2008 20:06:59 -0000
@@ -1856,8 +1856,10 @@ int
- /* Don't adjust references to merge sections. */
- if ((S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0)
+ /* Don't adjust pc-relative references to merge sections but for the 32-bit
+ mode moreover disallow any relocations to the merge sections. */
+ if ((S_GET_SEGMENT (fixP->fx_addsy)->flags & SEC_MERGE) != 0
+ && (s390_arch_size == 32 || fixP->fx_pcrel))
/* adjust_reloc_syms doesn't know about the GOT. */
if ( fixP->fx_r_type == BFD_RELOC_16_GOTOFF
More information about the Binutils