mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
gas/
* config/tc-mips.c (mips_frob_file): Don't match MIPS16 relocs with non-MIPS16 relocs. gas/testsuite/ * gas/mips/mips16-hilo-match.s: New test. * gas/mips/mip16-hilo-match.d: New test output.Index: config/tc-mips.c
This commit is contained in:
parent
7ae0e2a243
commit
35903be00c
@ -1,3 +1,8 @@
|
||||
2008-05-09 Catherine Moore <clm@codesourcery.com>
|
||||
|
||||
* config/tc-mips.c (mips_frob_file): Don't match MIPS16 relocs
|
||||
with non-MIPS16 relocs.
|
||||
|
||||
2008-05-09 Chao-ying Fu <fu@mips.com>
|
||||
|
||||
* config/tc-mips.c (md_begin): Use strncmp to compare TARGET_OS, in
|
||||
|
@ -11749,6 +11749,7 @@ void
|
||||
mips_frob_file (void)
|
||||
{
|
||||
struct mips_hi_fixup *l;
|
||||
bfd_reloc_code_real_type looking_for_rtype = BFD_RELOC_UNUSED;
|
||||
|
||||
for (l = mips_hi_fixup_list; l != NULL; l = l->next)
|
||||
{
|
||||
@ -11778,13 +11779,19 @@ mips_frob_file (void)
|
||||
hi_pos = NULL;
|
||||
lo_pos = NULL;
|
||||
matched_lo_p = FALSE;
|
||||
|
||||
if (l->fixp->fx_r_type == BFD_RELOC_MIPS16_HI16
|
||||
|| l->fixp->fx_r_type == BFD_RELOC_MIPS16_HI16_S)
|
||||
looking_for_rtype = BFD_RELOC_MIPS16_LO16;
|
||||
else
|
||||
looking_for_rtype = BFD_RELOC_LO16;
|
||||
|
||||
for (pos = &seginfo->fix_root; *pos != NULL; pos = &(*pos)->fx_next)
|
||||
{
|
||||
if (*pos == l->fixp)
|
||||
hi_pos = pos;
|
||||
|
||||
if (((*pos)->fx_r_type == BFD_RELOC_LO16
|
||||
|| (*pos)->fx_r_type == BFD_RELOC_MIPS16_LO16)
|
||||
if ((*pos)->fx_r_type == looking_for_rtype
|
||||
&& (*pos)->fx_addsy == l->fixp->fx_addsy
|
||||
&& (*pos)->fx_offset >= l->fixp->fx_offset
|
||||
&& (lo_pos == NULL
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-05-09 Catherine Moore <clm@codesourcery.com>
|
||||
|
||||
* gas/mips/mips16-hilo-match.s: New test.
|
||||
* gas/mips/mip16-hilo-match.d: New test output.
|
||||
|
||||
2008-05-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/i386.exp: Run movbe, movbe-intel, inval-movbe, ept,
|
||||
|
@ -528,6 +528,7 @@ if { [istarget mips*-*-vxworks*] } {
|
||||
if $has_newabi {
|
||||
run_dump_test "mips16-hilo-n32"
|
||||
}
|
||||
run_dump_test "mips16-hilo-match"
|
||||
}
|
||||
run_list_test "mips-no-jalx" "-32"
|
||||
run_dump_test "delay"
|
||||
|
40
gas/testsuite/gas/mips/mips16-hilo-match.d
Normal file
40
gas/testsuite/gas/mips/mips16-hilo-match.d
Normal file
@ -0,0 +1,40 @@
|
||||
#objdump: -r
|
||||
#name: MIPS16 mips16-hilo-match
|
||||
|
||||
.*: +file format .*mips.*
|
||||
|
||||
RELOCATION RECORDS FOR \[\.text\]:
|
||||
OFFSET TYPE VALUE
|
||||
00000010 R_MIPS_HI16 var4
|
||||
00000018 R_MIPS_LO16 var4
|
||||
00000008 R_MIPS_HI16 __var1
|
||||
00000020 R_MIPS_LO16 __var1
|
||||
0000001c R_MIPS_HI16 .sbss
|
||||
0000002c R_MIPS_LO16 .sbss
|
||||
00000030 R_MIPS_26 func4
|
||||
00000028 R_MIPS_HI16 __var3
|
||||
00000034 R_MIPS_LO16 __var3
|
||||
00000038 R_MIPS_LO16 hilo_match
|
||||
0000003c R_MIPS_HI16 .bss
|
||||
00000044 R_MIPS_LO16 .bss
|
||||
00000040 R_MIPS_HI16 .bss
|
||||
00000048 R_MIPS_LO16 .bss
|
||||
0000004c R_MIPS_26 func3
|
||||
00000024 R_MIPS_HI16 hilo_match
|
||||
00000050 R_MIPS_LO16 hilo_match
|
||||
0000005e R_MIPS16_HI16 .data
|
||||
00000068 R_MIPS16_LO16 .data
|
||||
0000006c R_MIPS16_26 func1
|
||||
00000072 R_MIPS16_26 func2
|
||||
00000078 R_MIPS16_HI16 hilo_match
|
||||
00000080 R_MIPS16_LO16 hilo_match
|
||||
00000086 R_MIPS16_LO16 hilo_match
|
||||
0000008a R_MIPS16_26 func1
|
||||
|
||||
|
||||
RELOCATION RECORDS FOR \[\.pdr\]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_32 _pinit
|
||||
00000020 R_MIPS_32 pdelt
|
||||
|
||||
|
148
gas/testsuite/gas/mips/mips16-hilo-match.s
Normal file
148
gas/testsuite/gas/mips/mips16-hilo-match.s
Normal file
@ -0,0 +1,148 @@
|
||||
.align 2
|
||||
.globl _pinit
|
||||
.LFB84:
|
||||
.set nomips16
|
||||
.ent _pinit
|
||||
_pinit:
|
||||
|
||||
lw $3,8($23)
|
||||
li $5,1
|
||||
lui $2,%hi(__var1)
|
||||
ori $3,$3,0x1
|
||||
lui $4,%hi(var4)
|
||||
sw $3,8($23)
|
||||
addiu $4,$4,%lo(var4)
|
||||
lui $3,%hi(var5)
|
||||
sw $5,%lo(__var1)($2)
|
||||
lui $19,%hi(hilo_match)
|
||||
.LVL100:
|
||||
lui $2,%hi(__var3)
|
||||
sw $5,%lo(var5)($3)
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
jal func4
|
||||
sw $5,%lo(__var3)($2)
|
||||
.set macro
|
||||
.set reorder
|
||||
|
||||
lw $17,%lo(hilo_match)($19)
|
||||
.LVL101:
|
||||
lui $2,%hi(var6)
|
||||
lui $3,%hi(var6+704)
|
||||
addiu $16,$2,%lo(var6)
|
||||
.LVL102:
|
||||
addiu $18,$3,%lo(var6+704)
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
jal func3
|
||||
sw $2,%lo(hilo_match)($19)
|
||||
|
||||
.end _pinit
|
||||
.LFE84:
|
||||
.size _pinit, .-_pinit
|
||||
.align 2
|
||||
.globl pdelt
|
||||
.LFB120:
|
||||
.set mips16
|
||||
.ent pdelt
|
||||
pdelt:
|
||||
.set macro
|
||||
.set reorder
|
||||
|
||||
li $2,16
|
||||
.L321:
|
||||
.LVL212:
|
||||
j $31
|
||||
.LVL213:
|
||||
.L322:
|
||||
lhu $2,36($17)
|
||||
move $4,$16
|
||||
li $16,%hi(var2)
|
||||
sll $16,$16,8
|
||||
addiu $2,1
|
||||
sll $16,$16,8
|
||||
addiu $16,%lo(var2)
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
jal func1
|
||||
sh $2,36($17)
|
||||
.set macro
|
||||
.set reorder
|
||||
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
jal func2
|
||||
move $4,$16
|
||||
.set macro
|
||||
.set reorder
|
||||
|
||||
li $3,%hi(hilo_match)
|
||||
sll $3,$3,8
|
||||
sll $3,$3,8
|
||||
lw $2,%lo(hilo_match)($3)
|
||||
sw $2,0($17)
|
||||
sw $17,%lo(hilo_match)($3)
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
jal func1
|
||||
move $4,$16
|
||||
.set macro
|
||||
.set reorder
|
||||
|
||||
.LVL214:
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
j $31
|
||||
li $2,0
|
||||
.set macro
|
||||
.set reorder
|
||||
|
||||
.end pdelt
|
||||
.align 2
|
||||
.weak __var3
|
||||
.section .sbss,"aw",@nobits
|
||||
.align 2
|
||||
.type __var3, @object
|
||||
.size __var3, 4
|
||||
__var3:
|
||||
.space 4
|
||||
.weak __var1
|
||||
.align 2
|
||||
.type __var1, @object
|
||||
.size __var1, 4
|
||||
__var1:
|
||||
.space 4
|
||||
.data
|
||||
.align 2
|
||||
.weak __hilo_match
|
||||
.align 2
|
||||
.type __hilo_match, @object
|
||||
.size __hilo_match, 4
|
||||
__hilo_match:
|
||||
.space 4
|
||||
.data
|
||||
.align 2
|
||||
.align 2
|
||||
.type var2, @object
|
||||
.size var2, 32
|
||||
var2:
|
||||
.word 0
|
||||
.word -1
|
||||
.word 0
|
||||
.byte 0
|
||||
.byte 0
|
||||
.byte 0
|
||||
.byte 0
|
||||
.word 0
|
||||
.word 0
|
||||
.half 0
|
||||
.space 6
|
||||
.align 2
|
||||
.rdata
|
||||
.align 2
|
||||
.space 8
|
||||
.local var5
|
||||
.comm var5,4,4
|
||||
.align 2
|
||||
.local var6
|
||||
.comm var6,704,4
|
Loading…
Reference in New Issue
Block a user