diff options
author | Tristan Gingold <gingold@adacore.com> | 2013-07-24 14:12:41 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2013-07-24 14:12:41 +0000 |
commit | 7fa9fcb6db636f393bcef5ed9f14559d3a8354f2 (patch) | |
tree | b7ebc01be50ace1ffa8d52c5b4fa389b9c94ab16 /gas | |
parent | a0607b84d2cbfb5c3a559cf5d3973bb32bebf44c (diff) | |
download | gdb-7fa9fcb6db636f393bcef5ed9f14559d3a8354f2.zip gdb-7fa9fcb6db636f393bcef5ed9f14559d3a8354f2.tar.gz gdb-7fa9fcb6db636f393bcef5ed9f14559d3a8354f2.tar.bz2 |
bfd/
2013-07-24 Tristan Gingold <gingold@adacore.com>
* coff-rs6000.c (xcoff_howto_table): Fix masks and pc_relative for
R_RBR. Add numbers in comments.
(_bfd_xcoff_reloc_type_lookup): Handle BFD_RELOC_PPC_B16.
* coff64-rs6000.c: Likewise.
gas/
2013-07-24 Tristan Gingold <gingold@adacore.com>
* config/tc-ppc.c (md_apply_fix): Adjust BFD_RELOC_PPC_B16 on
xcoff targets.
gas/testsuite/
2013-07-24 Tristan Gingold <gingold@adacore.com>
* gas/ppc/test2xcoff32.s, gas/ppc/test2xcoff32.d: New files
* gas/ppc/ppc.exp: Add new test.
* gas/ppc/xcoff-br16-1.s, gas/ppc/xcoff-br16-1.d,
gas/ppc/xcoff-br16-2.s, gas/ppc/xcoff-br16-2.d: New files
* gas/ppc/aix.exp: Add new tests.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-ppc.c | 11 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/aix.exp | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/ppc.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/test2xcoff32.d | 40 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/test2xcoff32.s | 42 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/xcoff-br16-1.d | 20 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/xcoff-br16-1.s | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/xcoff-br16-2.d | 20 | ||||
-rw-r--r-- | gas/testsuite/gas/ppc/xcoff-br16-2.s | 3 |
11 files changed, 154 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index ee3f87a..37cc8ce 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2013-07-24 Tristan Gingold <gingold@adacore.com> + + * config/tc-ppc.c (md_apply_fix): Adjust BFD_RELOC_PPC_B16 on + xcoff targets. + 2013-07-24 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * config/tc-s390.c (s390_machine): Don't force the .machine diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index 7aebda8..5c413d3 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -6417,9 +6417,9 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) char *where; unsigned long insn; -#ifdef OBJ_ELF switch (fixP->fx_r_type) { +#ifdef OBJ_ELF /* The following relocs can't be calculated by the assembler. Leave the field zero. */ case BFD_RELOC_PPC_TPREL16: @@ -6528,11 +6528,18 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) case BFD_RELOC_PPC_TLSLD: fieldval = 0; break; +#endif + +#ifdef OBJ_XCOFF + case BFD_RELOC_PPC_B16: + /* Adjust the offset to the instruction boundary. */ + fieldval += 2; + break; +#endif default: break; } -#endif #ifdef OBJ_ELF /* powerpc uses RELA style relocs, so if emitting a reloc the field diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index a4240a2..e8b2eb6 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2013-07-24 Tristan Gingold <gingold@adacore.com> + + * gas/ppc/test2xcoff32.s, gas/ppc/test2xcoff32.d: New files + * gas/ppc/ppc.exp: Add new test. + * gas/ppc/xcoff-br16-1.s, gas/ppc/xcoff-br16-1.d, + gas/ppc/xcoff-br16-2.s, gas/ppc/xcoff-br16-2.d: New files + * gas/ppc/aix.exp: Add new tests. + 2013-07-19 Yufeng Zhang <yufeng.zhang@arm.com> * gas/aarch64/ilp32-basic.d (#as): Update to use -mabi=ilp32 diff --git a/gas/testsuite/gas/ppc/aix.exp b/gas/testsuite/gas/ppc/aix.exp index 6dcfc4e..2789837 100644 --- a/gas/testsuite/gas/ppc/aix.exp +++ b/gas/testsuite/gas/ppc/aix.exp @@ -65,6 +65,8 @@ if [istarget powerpc-ibm-aix*] then { run_dump_test "textalign-xcoff-002" run_dump_test "xcoff-branch-1-32" run_dump_test "xcoff-branch-1-64" + run_dump_test "xcoff-br16-1" + run_dump_test "xcoff-br16-2" run_list_test "xcoff-ref-1" diff --git a/gas/testsuite/gas/ppc/ppc.exp b/gas/testsuite/gas/ppc/ppc.exp index fec714c..ba29261 100644 --- a/gas/testsuite/gas/ppc/ppc.exp +++ b/gas/testsuite/gas/ppc/ppc.exp @@ -31,6 +31,7 @@ if { [istarget powerpc64*-*-*] || [istarget *-*-elf64*]} then { run_list_test "range64" "-a64" } elseif { [istarget powerpc*-*aix*] } then { run_dump_test "test1xcoff32" + run_dump_test "test2xcoff32" } elseif { [istarget powerpc*-*-*bsd*] \ || [istarget powerpc*-*-elf*] \ || [istarget powerpc*-*-eabi*] \ diff --git a/gas/testsuite/gas/ppc/test2xcoff32.d b/gas/testsuite/gas/ppc/test2xcoff32.d new file mode 100644 index 0000000..125d34a --- /dev/null +++ b/gas/testsuite/gas/ppc/test2xcoff32.d @@ -0,0 +1,40 @@ +#objdump: -dr +#as: +#name: PowerPC Test 2, 32 bit XCOFF + +.*: +file format aixcoff-rs6000 + + +Disassembly of section .text: + +00000000 <.main>: + 0: 7c 08 02 a6 mflr r0 + 4: 90 01 00 08 st r0,8\(r1\) + 8: 93 c1 ff f8 st r30,-8\(r1\) + c: 93 e1 ff fc st r31,-4\(r1\) + 10: 94 21 ff c0 stu r1,-64\(r1\) + 14: 3b e0 00 00 lil r31,0 + 18: 83 c2 00 00 l r30,0\(r2\) + 1a: R_TOC LC\.\.0-0x70 + 1c: 7f c3 f3 78 mr r3,r30 + 20: 7f e4 fb 78 mr r4,r31 + 24: 4b ff ff dd bl 0 <.main> + 24: R_BR .printf + 28: 60 00 00 00 oril r0,r0,0 + 2c: 2f 9f 00 09 cmpi 7,r31,9 + 30: 3b ff 00 01 cal r31,1\(r31\) + 34: 40 9e ff e8 bne 7,1c <\.main\+0x1c> + 38: 38 60 00 00 lil r3,0 + 3c: 38 21 00 40 cal r1,64\(r1\) + 40: 80 01 00 08 l r0,8\(r1\) + 44: 7c 08 03 a6 mtlr r0 + 48: 83 c1 ff f8 l r30,-8\(r1\) + 4c: 83 e1 ff fc l r31,-4\(r1\) + 50: 4e 80 00 20 br + 54: 60 00 00 00 oril r0,r0,0 + 58: 60 00 00 00 oril r0,r0,0 + 5c: 60 00 00 00 oril r0,r0,0 + +00000060 <_t\.rw_>: + 60: 25 64 0a 00 dozi r11,r4,2560 + ... diff --git a/gas/testsuite/gas/ppc/test2xcoff32.s b/gas/testsuite/gas/ppc/test2xcoff32.s new file mode 100644 index 0000000..7ac2bff --- /dev/null +++ b/gas/testsuite/gas/ppc/test2xcoff32.s @@ -0,0 +1,42 @@ + .csect .text[PR] + .extern .printf + .toc +LC..1: + .tc LC..0[TC],LC..0 + .csect .text[PR] + .align 2 + .globl main + .globl .main + .csect main[DS] +main: + .long .main, TOC[tc0], 0 + .csect .text[PR] +.main: + mflr 0 + stw 0,8(1) + stw 30,-8(1) + stw 31,-4(1) + stwu 1,-64(1) + li 31,0 + lwz 30,LC..1(2) +L..2: + mr 3,30 + mr 4,31 + bl .printf + nop + cmpwi 7,31,9 + addi 31,31,1 + bne 7,L..2 + li 3,0 + addi 1,1,64 + lwz 0,8(1) + mtlr 0 + lwz 30,-8(1) + lwz 31,-4(1) + blr + + .csect _t.rw_[RO],4 + .align 2 +LC..0: + .byte "%d" + .byte 10, 0 diff --git a/gas/testsuite/gas/ppc/xcoff-br16-1.d b/gas/testsuite/gas/ppc/xcoff-br16-1.d new file mode 100644 index 0000000..5052279 --- /dev/null +++ b/gas/testsuite/gas/ppc/xcoff-br16-1.d @@ -0,0 +1,20 @@ +#as: -a32 +#source: xcoff-br16-1.s +#objdump: -P relocs -dr +#name: XCOFF R_RBR/16 reloc test 1 + +.* +Relocations for \.text .* +vaddr sgn mod sz type symndx symbol +00000002 S 16 RBR [0-9] c +00000006 S 16 RBR [0-9] c + + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: 40 82 00 00 bne 0x0 + 2: R_RBR_16 c + 4: 40 82 ff fd bnel 0x0 + 6: R_RBR_16 c diff --git a/gas/testsuite/gas/ppc/xcoff-br16-1.s b/gas/testsuite/gas/ppc/xcoff-br16-1.s new file mode 100644 index 0000000..f6b66e8 --- /dev/null +++ b/gas/testsuite/gas/ppc/xcoff-br16-1.s @@ -0,0 +1,4 @@ + .extern c + bne c + bnel c + diff --git a/gas/testsuite/gas/ppc/xcoff-br16-2.d b/gas/testsuite/gas/ppc/xcoff-br16-2.d new file mode 100644 index 0000000..173ed06 --- /dev/null +++ b/gas/testsuite/gas/ppc/xcoff-br16-2.d @@ -0,0 +1,20 @@ +#as: -a32 +#source: xcoff-br16-2.s +#objdump: -P relocs -dr +#name: XCOFF R_RBR/16 reloc test 2 + +.* +Relocations for \.text .* +vaddr sgn mod sz type symndx symbol +00000002 S 16 RBR [0-9] c +00000006 S 16 RBR [0-9] c + + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: 40 82 00 04 bne 0x4 + 2: R_RBR_16 c + 4: 40 82 00 01 bnel 0x4 + 6: R_RBR_16 c diff --git a/gas/testsuite/gas/ppc/xcoff-br16-2.s b/gas/testsuite/gas/ppc/xcoff-br16-2.s new file mode 100644 index 0000000..41bbc48 --- /dev/null +++ b/gas/testsuite/gas/ppc/xcoff-br16-2.s @@ -0,0 +1,3 @@ + .extern c + bne c + 4 + bnel c + 4 |