mirror of
				https://github.com/espressif/binutils-gdb.git
				synced 2025-11-04 06:37:06 +08:00 
			
		
		
		
	gas/
* config/tc-mips.c (mips_fix_adjustable): On REL targets also reject PC-relative relocations. gas/testsuite/ * gas/mips/branch-misc-2.d: Adjust for relocation change. * gas/mips/branch-misc-2pic.d: Likewise. * gas/mips/branch-misc-4.d: New test for PC-relative relocation overflow. * gas/mips/branch-misc-4-64.d: Likewise. * gas/mips/branch-misc-4.s: Source for the new tests. * testsuite/gas/mips/mips.exp: Run the new tests.
This commit is contained in:
		@ -1,3 +1,8 @@
 | 
			
		||||
2011-02-28  Maciej W. Rozycki  <macro@codesourcery.com>
 | 
			
		||||
 | 
			
		||||
	* config/tc-mips.c (mips_fix_adjustable): On REL targets also
 | 
			
		||||
	reject PC-relative relocations.
 | 
			
		||||
 | 
			
		||||
2011-02-28  Maciej W. Rozycki  <macro@codesourcery.com>
 | 
			
		||||
 | 
			
		||||
	* config/tc-mips.c (md_convert_frag): Correct message
 | 
			
		||||
 | 
			
		||||
@ -14248,8 +14248,12 @@ mips_fix_adjustable (fixS *fixp)
 | 
			
		||||
      && (S_GET_SEGMENT (fixp->fx_addsy)->flags & SEC_MERGE) != 0)
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
  /* There is no place to store an in-place offset for JALR relocations.  */
 | 
			
		||||
  if (fixp->fx_r_type == BFD_RELOC_MIPS_JALR && HAVE_IN_PLACE_ADDENDS)
 | 
			
		||||
  /* There is no place to store an in-place offset for JALR relocations.
 | 
			
		||||
     Likewise an in-range offset of PC-relative relocations may overflow
 | 
			
		||||
     the in-place relocatable field if recalculated against the start
 | 
			
		||||
     address of the symbol's containing section.  */
 | 
			
		||||
  if (HAVE_IN_PLACE_ADDENDS
 | 
			
		||||
      && (fixp->fx_pcrel || fixp->fx_r_type == BFD_RELOC_MIPS_JALR))
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
#ifdef OBJ_ELF
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,13 @@
 | 
			
		||||
2011-02-28  Maciej W. Rozycki  <macro@codesourcery.com>
 | 
			
		||||
 | 
			
		||||
	* gas/mips/branch-misc-2.d: Adjust for relocation change.
 | 
			
		||||
	* gas/mips/branch-misc-2pic.d: Likewise.
 | 
			
		||||
	* gas/mips/branch-misc-4.d: New test for PC-relative relocation
 | 
			
		||||
	overflow.
 | 
			
		||||
	* gas/mips/branch-misc-4-64.d: Likewise.
 | 
			
		||||
	* gas/mips/branch-misc-4.s: Source for the new tests.
 | 
			
		||||
	* testsuite/gas/mips/mips.exp: Run the new tests.
 | 
			
		||||
 | 
			
		||||
2011-02-28  Maciej W. Rozycki  <macro@codesourcery.com>
 | 
			
		||||
 | 
			
		||||
	* gas/mips/relax-swap1.l: Adjust for message capitalization
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,6 @@ Disassembly of section .text:
 | 
			
		||||
[ 	]*b0: R_MIPS_PC16	x2
 | 
			
		||||
0+00b4 <[^>]*> 00000000 	nop
 | 
			
		||||
0+00b8 <[^>]*> 1000ffff 	b	000000b8 <g6\+0x10>
 | 
			
		||||
[ 	]*b8: R_MIPS_PC16	\.data
 | 
			
		||||
[ 	]*b8: R_MIPS_PC16	\.Ldata
 | 
			
		||||
0+00bc <[^>]*> 00000000 	nop
 | 
			
		||||
	\.\.\.
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,6 @@ Disassembly of section .text:
 | 
			
		||||
[ 	]*b0: R_MIPS_PC16	x2
 | 
			
		||||
0+00b4 <[^>]*> 00000000 	nop
 | 
			
		||||
0+00b8 <[^>]*> 1000ffff 	b	000000b8 <g6\+0x10>
 | 
			
		||||
[ 	]*b8: R_MIPS_PC16	\.data
 | 
			
		||||
[ 	]*b8: R_MIPS_PC16	\.Ldata
 | 
			
		||||
0+00bc <[^>]*> 00000000 	nop
 | 
			
		||||
	\.\.\.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										35
									
								
								gas/testsuite/gas/mips/branch-misc-4-64.d
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										35
									
								
								gas/testsuite/gas/mips/branch-misc-4-64.d
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
#objdump: -dr --prefix-addresses --show-raw-insn
 | 
			
		||||
#name: MIPS branch-misc-4-64
 | 
			
		||||
#as: -64
 | 
			
		||||
#source: branch-misc-4.s
 | 
			
		||||
 | 
			
		||||
# Verify PC-relative relocations do not overflow.
 | 
			
		||||
 | 
			
		||||
.*: +file format .*mips.*
 | 
			
		||||
 | 
			
		||||
Disassembly of section \.text:
 | 
			
		||||
	\.\.\.
 | 
			
		||||
[0-9a-f]+ <[^>]*> 10000000 	b	[0-9a-f]+ <foo\+0x[0-9a-f]+>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	bar\+0xf+fffc
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0xf+fffc
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0xf+fffc
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
[0-9a-f]+ <[^>]*> 10000000 	b	[0-9a-f]+ <foo\+0x[0-9a-f]+>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	\.init\+0x4
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0x4
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0x4
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
	\.\.\.
 | 
			
		||||
 | 
			
		||||
Disassembly of section \.init:
 | 
			
		||||
[0-9a-f]+ <[^>]*> 10000000 	b	[0-9a-f]+ <bar\+0x[0-9a-f]+>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	foo\+0xf+fffc
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0xf+fffc
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0xf+fffc
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
[0-9a-f]+ <[^>]*> 10000000 	b	[0-9a-f]+ <bar\+0x[0-9a-f]+>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	\.text\+0x40004
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0x40004
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_NONE	\*ABS\*\+0x40004
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
	\.\.\.
 | 
			
		||||
							
								
								
									
										26
									
								
								gas/testsuite/gas/mips/branch-misc-4.d
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										26
									
								
								gas/testsuite/gas/mips/branch-misc-4.d
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#objdump: -dr --prefix-addresses --show-raw-insn
 | 
			
		||||
#name: MIPS branch-misc-4
 | 
			
		||||
#as: -32
 | 
			
		||||
 | 
			
		||||
# Verify PC-relative relocations do not overflow.
 | 
			
		||||
 | 
			
		||||
.*: +file format .*mips.*
 | 
			
		||||
 | 
			
		||||
Disassembly of section \.text:
 | 
			
		||||
	\.\.\.
 | 
			
		||||
([0-9a-f]+) <[^>]*> 1000ffff 	b	\1 <foo>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	bar
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
([0-9a-f]+) <[^>]*> 1000ffff 	b	\1 <\.Lfoo>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	\.Lbar
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
	\.\.\.
 | 
			
		||||
 | 
			
		||||
Disassembly of section \.init:
 | 
			
		||||
([0-9a-f]+) <[^>]*> 1000ffff 	b	\1 <bar>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	foo
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
([0-9a-f]+) <[^>]*> 1000ffff 	b	\1 <\.Lbar>
 | 
			
		||||
[ 	]*[0-9a-f]+: R_MIPS_PC16	\.Lfoo
 | 
			
		||||
[0-9a-f]+ <[^>]*> 00000000 	nop
 | 
			
		||||
	\.\.\.
 | 
			
		||||
							
								
								
									
										28
									
								
								gas/testsuite/gas/mips/branch-misc-4.s
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										28
									
								
								gas/testsuite/gas/mips/branch-misc-4.s
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
# Source file to verify PC-relative relocations do not overflow.
 | 
			
		||||
 | 
			
		||||
	.text
 | 
			
		||||
	.space	0x40000
 | 
			
		||||
	.globl	foo
 | 
			
		||||
	.ent	foo
 | 
			
		||||
foo:
 | 
			
		||||
	b	bar
 | 
			
		||||
.Lfoo:
 | 
			
		||||
	b	.Lbar
 | 
			
		||||
	.end	foo
 | 
			
		||||
 | 
			
		||||
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
 | 
			
		||||
	.align	2
 | 
			
		||||
	.space	8
 | 
			
		||||
 | 
			
		||||
	.section .init, "ax", @progbits
 | 
			
		||||
	.globl	bar
 | 
			
		||||
	.ent	bar
 | 
			
		||||
bar:
 | 
			
		||||
	b	foo
 | 
			
		||||
.Lbar:
 | 
			
		||||
	b	.Lfoo
 | 
			
		||||
	.end	bar
 | 
			
		||||
 | 
			
		||||
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
 | 
			
		||||
	.align	2
 | 
			
		||||
	.space	8
 | 
			
		||||
@ -830,6 +830,11 @@ if { [istarget mips*-*-vxworks*] } {
 | 
			
		||||
	run_dump_test "jalr2"
 | 
			
		||||
 | 
			
		||||
	run_dump_test_arches "aent"	[mips_arch_list_matching mips1]
 | 
			
		||||
 | 
			
		||||
	run_dump_test_arches "branch-misc-4" \
 | 
			
		||||
					[mips_arch_list_matching mips1]
 | 
			
		||||
	run_dump_test_arches "branch-misc-4-64" \
 | 
			
		||||
					[mips_arch_list_matching mips3]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if $has_newabi {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user