diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2003-12-06 13:52:23 +0000 |
---|---|---|
committer | Richard Sandiford <rdsandiford@googlemail.com> | 2003-12-06 13:52:23 +0000 |
commit | 0a6ace1e0e838a2a1abb2989c4f449626dec479a (patch) | |
tree | b8760175fb16df52dbfa29b081cca64ff091f270 | |
parent | b76033d90479fc0835bd3c04b5384cb9c2c746ae (diff) | |
download | gdb-0a6ace1e0e838a2a1abb2989c4f449626dec479a.zip gdb-0a6ace1e0e838a2a1abb2989c4f449626dec479a.tar.gz gdb-0a6ace1e0e838a2a1abb2989c4f449626dec479a.tar.bz2 |
gas/
* config/tc-mips.c (macro): Switch misordered call to frag_grow()
and setting of tc_fr_offset.
gas/testsuite/
* gas/mips/elf-rel16.[sd]: New test.
* gas/mips/mips.exp: Run it.
* gas/mips/elf-rel-xgot-n32.d: Fix addends for "lw $5,dl1+34($5)".
* gas/mips/elf-rel-xgot-n64.d: Likewise.
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 2 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel-xgot-n32.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel-xgot-n64.d | 12 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel16.d | 14 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/elf-rel16.s | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips.exp | 1 |
8 files changed, 44 insertions, 9 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 679864c..ec4dcb3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2003-12-06 Richard Sandiford <rsandifo@redhat.com> + + * config/tc-mips.c (macro): Switch misordered call to frag_grow() + and setting of tc_fr_offset. + 2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com> Mark Mitchell <mark@codesourcery.com> Richard Earnshaw <rearnsha@arm.com> diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 1afd8bf..d60e75f 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -6348,13 +6348,13 @@ macro (struct mips_cl_insn *ip) lw $tempreg,<sym>($gp) (BFD_RELOC_MIPS_GOT_PAGE) <op> $treg,<sym>($tempreg) (BFD_RELOC_MIPS_GOT_OFST) */ assert (offset_expr.X_op == O_symbol); + frag_grow (36); frag_now->tc_frag_data.tc_fr_offset = expr1.X_add_number = offset_expr.X_add_number; offset_expr.X_add_number = 0; if (expr1.X_add_number < -0x8000 || expr1.X_add_number >= 0x8000) as_bad (_("PIC code offset overflow (max 16 signed bits)")); - frag_grow (36); macro_build (NULL, &icnt, &offset_expr, "lui", "t,u", tempreg, BFD_RELOC_MIPS_GOT_HI16); macro_build (NULL, &icnt, NULL, ADDRESS_ADD_INSN, "d,v,t", diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 274770d..41ee31b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2003-12-06 Richard Sandiford <rsandifo@redhat.com> + + * gas/mips/elf-rel16.[sd]: New test. + * gas/mips/mips.exp: Run it. + * gas/mips/elf-rel-xgot-n32.d: Fix addends for "lw $5,dl1+34($5)". + * gas/mips/elf-rel-xgot-n64.d: Likewise. + 2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com> Mark Mitchell <mark@codesourcery.com> Richard Earnshaw <rearnsha@arm.com> diff --git a/gas/testsuite/gas/mips/elf-rel-xgot-n32.d b/gas/testsuite/gas/mips/elf-rel-xgot-n32.d index 7221931..a3f5d0c 100644 --- a/gas/testsuite/gas/mips/elf-rel-xgot-n32.d +++ b/gas/testsuite/gas/mips/elf-rel-xgot-n32.d @@ -442,10 +442,10 @@ Disassembly of section \.text: 00000490 <fn\+0x490> 8ca50000 lw a1,0\(a1\) 490: R_MIPS_GOT_OFST \.data\+0xc0 00000494 <fn\+0x494> 8f810000 lw at,0\(gp\) - 494: R_MIPS_GOT_PAGE \.data\+0xb4 + 494: R_MIPS_GOT_PAGE \.data\+0xd6 00000498 <fn\+0x498> 00250821 addu at,at,a1 0000049c <fn\+0x49c> 8c250000 lw a1,0\(at\) - 49c: R_MIPS_GOT_OFST \.data\+0xb4 + 49c: R_MIPS_GOT_OFST \.data\+0xd6 000004a0 <fn\+0x4a0> 8f810000 lw at,0\(gp\) 4a0: R_MIPS_GOT_PAGE \.data\+0xec 000004a4 <fn\+0x4a4> 00250821 addu at,at,a1 diff --git a/gas/testsuite/gas/mips/elf-rel-xgot-n64.d b/gas/testsuite/gas/mips/elf-rel-xgot-n64.d index 167b47d..3d4c13d 100644 --- a/gas/testsuite/gas/mips/elf-rel-xgot-n64.d +++ b/gas/testsuite/gas/mips/elf-rel-xgot-n64.d @@ -726,14 +726,14 @@ Disassembly of section \.text: 490: R_MIPS_NONE \*ABS\*\+0xc0 490: R_MIPS_NONE \*ABS\*\+0xc0 0000000000000494 <fn\+0x494> df810000 ld at,0\(gp\) - 494: R_MIPS_GOT_PAGE \.data\+0xb4 - 494: R_MIPS_NONE \*ABS\*\+0xb4 - 494: R_MIPS_NONE \*ABS\*\+0xb4 + 494: R_MIPS_GOT_PAGE \.data\+0xd6 + 494: R_MIPS_NONE \*ABS\*\+0xd6 + 494: R_MIPS_NONE \*ABS\*\+0xd6 0000000000000498 <fn\+0x498> 0025082d daddu at,at,a1 000000000000049c <fn\+0x49c> dc250000 ld a1,0\(at\) - 49c: R_MIPS_GOT_OFST \.data\+0xb4 - 49c: R_MIPS_NONE \*ABS\*\+0xb4 - 49c: R_MIPS_NONE \*ABS\*\+0xb4 + 49c: R_MIPS_GOT_OFST \.data\+0xd6 + 49c: R_MIPS_NONE \*ABS\*\+0xd6 + 49c: R_MIPS_NONE \*ABS\*\+0xd6 00000000000004a0 <fn\+0x4a0> df810000 ld at,0\(gp\) 4a0: R_MIPS_GOT_PAGE \.data\+0xec 4a0: R_MIPS_NONE \*ABS\*\+0xec diff --git a/gas/testsuite/gas/mips/elf-rel16.d b/gas/testsuite/gas/mips/elf-rel16.d new file mode 100644 index 0000000..9b15077 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel16.d @@ -0,0 +1,14 @@ +#objdump: -dr +#as: -mabi=n32 -mips3 -xgot -KPIC + +.*: file format .* + +Disassembly of section \.text: + +00000000 <.*>: + \.\.\. +.*: 8f840000 lw a0,0\(gp\) + .*: R_MIPS_GOT_PAGE \.rodata\+0x8 +.*: dc840000 ld a0,0\(a0\) + .*: R_MIPS_GOT_OFST \.rodata\+0x8 + \.\.\. diff --git a/gas/testsuite/gas/mips/elf-rel16.s b/gas/testsuite/gas/mips/elf-rel16.s new file mode 100644 index 0000000..e7d5938 --- /dev/null +++ b/gas/testsuite/gas/mips/elf-rel16.s @@ -0,0 +1,8 @@ + .rept 0x3e0 + nop + .endr + ld $4,foo+8 + .space 16 + .section .rodata +foo: + .word 1,2,3,4 diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index c4fd0c7..fa8a9a9 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -663,6 +663,7 @@ if { [istarget mips*-*-*] } then { if $has_newabi { run_dump_test "elf-rel15" + run_dump_test "elf-rel16" run_dump_test "elf-rel-got-n32" run_dump_test "elf-rel-xgot-n32" |