Skip to content
  • H.J. Lu's avatar
    Add -mrelax-relocations= to x86 assembler · 0cb4071e
    H.J. Lu authored
    The x86 relax relocations introduced in binutils 2.26 aren't supported
    by linker on Solaris older than Solaris 12.  To use x86 assembler with
    older Solaris linker, this patch adds
    
    1. A command line option -mrelax-relocations= to x86 assembler to
    control whether to generate relax relocations.
    2. A configure option --enable-x86-relax-relocations to decide whether
    x86 assembler should generate relax relocations by default.  It is
    defaulted to yes, except for x86 Solaris targets older than Solaris 12.
    
    gas/
    
    	PR gas/19520
    	* NEWS: Mention new command line option -mrelax-relocations and
    	new configure option --enable-x86-relax-relocations for x86
    	target.
    	* config.in: Regenerated.
    	* configure.ac: Add --enable-x86-relax-relocations.
    	(ac_default_x86_relax_relocations): New.  Default to 1 except
    	for x86 Solaris targets older than Solaris 12.
    	(DEFAULT_GENERATE_X86_RELAX_RELOCATIONS): Define.
    	* configure: Likewise.
    	* config/tc-i386.c (generate_relax_relocations): New.
    	(OPTION_MRELAX_RELOCATIONS): Likewise.
    	(output_disp): Don't generate relax relocations if
    	generate_relax_relocations is 0.
    	(md_longopts): Add -mrelax-relocations.
    	(md_show_usage): Likewise.
    	(md_parse_option): Handle OPTION_MRELAX_RELOCATIONS.
    	* doc/c-i386.texi: Document -mrelax-relocations=.
    	* testsuite/gas/i386/got-no-relax.d: New file.
    	* testsuite/gas/i386/x86-64-gotpcrel-no-relax.d: Likewise.
    	* testsuite/gas/i386/got.d: Pass -mrelax-relocations=yes to as.
    	* testsuite/gas/i386/localpic.d: Likewise.
    	* testsuite/gas/i386/mixed-mode-reloc32.d: Likewise.
    	* testsuite/gas/i386/reloc32.d: Likewise.
    	* testsuite/gas/i386/x86-64-gotpcrel.d: Likewise.
    	* testsuite/gas/i386/x86-64-localpic.d: Likewise.
    	* testsuite/gas/i386/ilp32/x86-64-gotpcrel.d: Likewise.
    	* testsuite/gas/i386/ilp32/x86-64-localpic.d: Likewise.
    	* testsuite/gas/i386/i386.exp: Run got-no-relax and
    	x86-64-gotpcrel-no-relax.
    
    ld/
    
    	PR gas/19520
    	* testsuite/ld-i386/branch1.d: Pass -mrelax-relocations=yes to as.
    	* testsuite/ld-i386/call1.d: Likewise.
    	* testsuite/ld-i386/call2.d: Likewise.
    	* testsuite/ld-i386/call3a.d: Likewise.
    	* testsuite/ld-i386/call3b.d: Likewise.
    	* testsuite/ld-i386/call3c.d: Likewise.
    	* testsuite/ld-i386/call3d.d: Likewise.
    	* testsuite/ld-i386/call3e.d: Likewise.
    	* testsuite/ld-i386/call3f.d: Likewise.
    	* testsuite/ld-i386/call3g.d: Likewise.
    	* testsuite/ld-i386/call3h.d: Likewise.
    	* testsuite/ld-i386/jmp1.d: Likewise.
    	* testsuite/ld-i386/jmp2.d: Likewise.
    	* testsuite/ld-i386/lea1c.d: Likewise.
    	* testsuite/ld-i386/load1.d: Likewise.
    	* testsuite/ld-i386/load2.d: Likewise.
    	* testsuite/ld-i386/load3.d: Likewise.
    	* testsuite/ld-i386/load4a.d: Likewise.
    	* testsuite/ld-i386/load5a.d: Likewise.
    	* testsuite/ld-i386/mov2b.d: Likewise.
    	* testsuite/ld-i386/mov3.d: Likewise.
    	* testsuite/ld-ifunc/ifunc-21-x86-64.d: Likewise.
    	* testsuite/ld-ifunc/ifunc-22-x86-64.d: Likewise.
    	* testsuite/ld-ifunc/ifunc-5r-local-x86-64.d: Likewise.
    	* testsuite/ld-x86-64/call1a.d: Likewise.
    	* testsuite/ld-x86-64/call1b.d: Likewise.
    	* testsuite/ld-x86-64/call1c.d: Likewise.
    	* testsuite/ld-x86-64/call1d.d: Likewise.
    	* testsuite/ld-x86-64/call1e.d: Likewise.
    	* testsuite/ld-x86-64/call1f.d: Likewise.
    	* testsuite/ld-x86-64/call1h.d: Likewise.
    	* testsuite/ld-x86-64/call1i.d: Likewise.
    	* testsuite/ld-x86-64/load1a.d: Likewise.
    	* testsuite/ld-x86-64/load1b.d: Likewise.
    	* testsuite/ld-i386/got1a.S: Load GOT into %ecx and use it.
    	* testsuite/ld-i386/got1.dd: Updated.
    	* testsuite/ld-i386/got1d.S (1): Removed.
    	* testsuite/ld-i386/i386.exp: Add -Wa,-mrelax-relocations=yes.
    	* testsuite/ld-x86-64/x86-64.exp: Likewise.
    0cb4071e