binutils-gdb/gas/config
Maciej W. Rozycki c1f61bd2b0 MIPS/GAS: Relax branches to symbols resolved at link time
Where branch relaxation is enabled emit the long sequence for branches
whose distance cannot be determined, i.e. to symbols that are undefined
or in a different segment.  These symbols are only resolved at link time
and therefore the longer sequence ensures the branch target is in range,
which cannot be guaranteed with a direct branch.

This is the opposite to the current implementation, originally proposed
here: <https://sourceware.org/ml/binutils/2002-09/msg00218.html>.  The
proposal was then extensively discussed before the final version was
posted here: <https://sourceware.org/ml/binutils/2002-10/msg00191.html>
and eventually committed:

commit 4a6a3df43d
Author: Alexandre Oliva <aoliva@redhat.com>
Date:   Sat Oct 12 05:23:33 2002 +0000

The case considered here was not commented in the review however and the
original version remains.  With branch relaxation enabled it makes more
sense to do it consistently, so that all code impure with respect to
branch distances can be linked.  Direct branches are still produced for
the cases concerned where branch relaxation is disabled, which is the
default.

	gas/
	* config/tc-mips.c (relaxed_branch_length): Use the long
	sequence where the distance cannot be determined.
	(relaxed_micromips_32bit_branch_length): Likewise.
	* testsuite/gas/mips/branch-extern-1.d: New test.
	* testsuite/gas/mips/branch-extern-2.d: New test.
	* testsuite/gas/mips/branch-extern-3.d: New test.
	* testsuite/gas/mips/branch-extern-4.d: New test.
	* testsuite/gas/mips/branch-extern.l: New stderr output.
	* testsuite/gas/mips/branch-extern.s: New test source.
	* testsuite/gas/mips/branch-section-1.d: New test.
	* testsuite/gas/mips/branch-section-2.d: New test.
	* testsuite/gas/mips/branch-section-3.d: New test.
	* testsuite/gas/mips/branch-section-4.d: New test.
	* testsuite/gas/mips/branch-section.l: New stderr output.
	* testsuite/gas/mips/branch-section.s: New test source.
	* testsuite/gas/mips/mips.exp: Run the new tests.
2016-04-13 13:32:41 +01:00
..
aout_gnu.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
atof-ieee.c cleanup FLT_CHARS and EXP_CHARS 2016-04-03 19:50:02 -04:00
atof-vax.c Constify more 2016-04-01 23:10:50 +10:30
bfin-aux.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfin-defs.h Convert more variables to a constant form. 2016-02-25 16:55:21 +00:00
bfin-lex-wrapper.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfin-lex.l Copyright update for binutils 2016-01-01 23:00:01 +10:30
bfin-parse.y bfin: simplify current_inputline 2016-04-03 19:13:42 -04:00
e-crisaout.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
e-criself.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
e-i386aout.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
e-i386coff.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
e-i386elf.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
e-mipself.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
itbl-mips.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68k-parse.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
m68k-parse.y Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-aout.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-aout.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-coff-seh.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-coff-seh.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-coff.c Add more const type qualifiers to GAS sources. 2016-02-22 14:11:27 +00:00
obj-coff.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-ecoff.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-ecoff.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-elf.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
obj-elf.h add more const qualifiers 2016-03-28 20:38:24 -04:00
obj-evax.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-evax.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-fdpicelf.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-fdpicelf.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-macho.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-macho.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-multi.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-multi.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
obj-som.c Add more const type qualifiers to GAS sources. 2016-02-22 14:11:27 +00:00
obj-som.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
rl78-defs.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
rl78-parse.y Copyright update for binutils 2016-01-01 23:00:01 +10:30
rx-defs.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
rx-parse.y Fix checking bignum values that are being inserted into byte sized containers. 2016-03-16 11:33:55 +00:00
tc-aarch64.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-aarch64.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-alpha.c cleanup FLT_CHARS and EXP_CHARS 2016-04-03 19:50:02 -04:00
tc-alpha.h Constify more 2016-04-01 23:10:50 +10:30
tc-arc.c Add support for .extCondCode, .extCoreRegister and .extAuxRegister. 2016-04-12 10:21:06 +02:00
tc-arc.h Add support for .extCondCode, .extCoreRegister and .extAuxRegister. 2016-04-12 10:21:06 +02:00
tc-arm.c [ARM] Add ARMv8.2 FP16 vmul/vmla/vmls (by scalar) 2016-04-05 15:54:00 +01:00
tc-arm.h Remove support for creating ARM NOREAD sections. 2016-02-04 11:57:57 +00:00
tc-avr.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-avr.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-bfin.c bfin: simplify current_inputline 2016-04-03 19:13:42 -04:00
tc-bfin.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-cr16.c Constify more 2016-04-01 23:10:50 +10:30
tc-cr16.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-cris.c Constify more 2016-04-01 23:10:50 +10:30
tc-cris.h cleanup FLT_CHARS and EXP_CHARS 2016-04-03 19:50:02 -04:00
tc-crx.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-crx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-d10v.c Constify more 2016-04-01 23:10:50 +10:30
tc-d10v.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-d30v.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-d30v.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-dlx.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-dlx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-epiphany.c Constify more 2016-04-01 23:10:50 +10:30
tc-epiphany.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-fr30.c Constify more 2016-04-01 23:10:50 +10:30
tc-fr30.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-frv.c Constify more 2016-04-01 23:10:50 +10:30
tc-frv.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-ft32.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-ft32.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-generic.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-generic.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-h8300.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-h8300.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-hppa.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-hppa.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-i370.c Constify more 2016-04-01 23:10:50 +10:30
tc-i370.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-i386-intel.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-i386.c Don't use vec_disp8 encoding with the .d32 suffix 2016-04-04 21:19:27 -07:00
tc-i386.h Constify more 2016-04-01 23:10:50 +10:30
tc-i860.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-i860.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-i960.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-i960.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-ia64.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-ia64.h Constify more 2016-04-01 23:10:50 +10:30
tc-ip2k.c Constify more 2016-04-01 23:10:50 +10:30
tc-ip2k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-iq2000.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-iq2000.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-lm32.c Constify more 2016-04-01 23:10:50 +10:30
tc-lm32.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-m32c.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-m32c.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-m32r.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-m32r.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-m68hc11.c Constify more 2016-04-01 23:10:50 +10:30
tc-m68hc11.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-m68k.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-m68k.h Convert more variables to a constant form. 2016-02-25 16:55:21 +00:00
tc-m68851.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-mcore.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-mcore.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-mep.c Constify more 2016-04-01 23:10:50 +10:30
tc-mep.h Constify more 2016-04-01 23:10:50 +10:30
tc-metag.c Constify more 2016-04-01 23:10:50 +10:30
tc-metag.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-microblaze.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-microblaze.h Constify more 2016-04-01 23:10:50 +10:30
tc-mips.c MIPS/GAS: Relax branches to symbols resolved at link time 2016-04-13 13:32:41 +01:00
tc-mips.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-mmix.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-mmix.h cleanup FLT_CHARS and EXP_CHARS 2016-04-03 19:50:02 -04:00
tc-mn10200.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-mn10200.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-mn10300.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-mn10300.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-moxie.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-moxie.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-msp430.c Fix MSP430 assembler's detection of NOP and EINT. 2016-04-06 15:58:30 +01:00
tc-msp430.h msp430: Set DWARF2_ADDR_SIZE to 4. 2016-02-03 09:21:51 -07:00
tc-mt.c Constify more 2016-04-01 23:10:50 +10:30
tc-mt.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-nds32.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-nds32.h make md_parse_option () take a const char * 2016-03-29 07:43:25 -04:00
tc-nios2.c Constify more 2016-04-01 23:10:50 +10:30
tc-nios2.h Constify more 2016-04-01 23:10:50 +10:30
tc-ns32k.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-ns32k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-or1k.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-or1k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-pdp11.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-pdp11.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-pj.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-pj.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-ppc.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-ppc.h Convert more variables to a constant form. 2016-02-25 16:55:21 +00:00
tc-rl78.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-rl78.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-rx.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-rx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-s390.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-s390.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-score7.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-score.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-score.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-sh64.c Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-sh64.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-sh.c Constify more 2016-04-01 23:10:50 +10:30
tc-sh.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-sparc.c Allow integer contants to have a U suffix. Improve error reporting for missing closing parentheses. 2016-04-07 12:34:06 +01:00
tc-sparc.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-spu.c Constify more 2016-04-01 23:10:50 +10:30
tc-spu.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-tic4x.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-tic4x.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-tic6x.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-tic6x.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-tic30.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-tic30.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-tic54x.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-tic54x.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-tilegx.c Constify more 2016-04-01 23:10:50 +10:30
tc-tilegx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-tilepro.c Constify more 2016-04-01 23:10:50 +10:30
tc-tilepro.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-v850.c Constify more 2016-04-01 23:10:50 +10:30
tc-v850.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-vax.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-vax.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-visium.c Constify more 2016-04-01 23:10:50 +10:30
tc-visium.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-xc16x.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-xc16x.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-xgate.c Constify more 2016-04-01 23:10:50 +10:30
tc-xgate.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-xstormy16.c Constify more 2016-04-01 23:10:50 +10:30
tc-xstormy16.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-xtensa.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-xtensa.h make xtensa_section_rename () take const char * 2016-03-31 07:30:41 -04:00
tc-z8k.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-z8k.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
tc-z80.c use XNEW and related macros more 2016-04-03 20:43:23 -04:00
tc-z80.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-386bsd.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-aix5.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-aix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-armeabi.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-armfbsdeabi.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-armfbsdvfp.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-armlinuxeabi.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-dragonfly.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-dynix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-epoc-pe.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-freebsd.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-generic.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-gnu.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-go32.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-hppa64.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-hppa.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-hppalinux64.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-hpux.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-i386aix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-ia64aix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-interix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-irix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-linux.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-lynx.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-mach.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-macos.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-nacl.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-nbsd532.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-nbsd.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-netware.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-pc532mach.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-pe.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-pep.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-psos.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-riscix.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-solaris.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-sparcaout.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-sun3.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-svr4.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-symbian.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-tmips.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-uclinux.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-vms.c Remove use of alloca. 2016-03-21 16:31:46 +00:00
te-vms.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-vxworks.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
te-wince-pe.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
vax-inst.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
xtensa-istack.h Copyright update for binutils 2016-01-01 23:00:01 +10:30
xtensa-relax.c add more const qualifiers 2016-03-28 20:38:24 -04:00
xtensa-relax.h Copyright update for binutils 2016-01-01 23:00:01 +10:30