From 2a86604a47a233873a7fbff317a3bfcea10bb207 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 24 Sep 2009 03:23:52 +0000 Subject: [PATCH] gas/ 2009-09-23 H.J. Lu * config/tc-i386.h (TC_FORCE_RELOCATION_LOCAL): Don't check BFD_RELOC_386_GOT32. gas/testsuite/ 2009-09-23 H.J. Lu * gas/i386/i386.exp: Run localpic. * gas/i386/localpic.d: New. * gas/i386/localpic.s: Likewise. --- gas/ChangeLog | 5 +++++ gas/config/tc-i386.h | 6 ++---- gas/testsuite/ChangeLog | 7 +++++++ gas/testsuite/gas/i386/i386.exp | 1 + gas/testsuite/gas/i386/localpic.d | 6 ++++++ gas/testsuite/gas/i386/localpic.s | 5 +++++ 6 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 gas/testsuite/gas/i386/localpic.d create mode 100644 gas/testsuite/gas/i386/localpic.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 35bda3d..b0f8b85 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2009-09-23 H.J. Lu + + * config/tc-i386.h (TC_FORCE_RELOCATION_LOCAL): Don't check + BFD_RELOC_386_GOT32. + 2009-09-23 Sterling Augustine * config/tc-xtensa.c (md_apply_fix): Remove check for constant with diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h index 9b9bc61..ab7cbf2 100644 --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -149,14 +149,12 @@ extern int tc_i386_fix_adjustable (struct fix *); /* This expression evaluates to true if the relocation is for a local object for which we still want to do the relocation at runtime. False if we are willing to perform this relocation while building - the .o file. GOTOFF does not need to be checked here because it is - not pcrel. I am not sure if some of the others are ever used with - pcrel, but it is easier to be safe than sorry. */ + the .o file. GOTOFF and GOT32 do not need to be checked here because + they are not pcrel. .*/ #define TC_FORCE_RELOCATION_LOCAL(FIX) \ (!(FIX)->fx_pcrel \ || (FIX)->fx_r_type == BFD_RELOC_386_PLT32 \ - || (FIX)->fx_r_type == BFD_RELOC_386_GOT32 \ || (FIX)->fx_r_type == BFD_RELOC_386_GOTPC \ || TC_FORCE_RELOCATION (FIX)) diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 16036ff..cd0dd74 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-09-23 H.J. Lu + + * gas/i386/i386.exp: Run localpic. + + * gas/i386/localpic.d: New. + * gas/i386/localpic.s: Likewise. + 2009-09-23 Alan Modra * gas/arm/thumbver.d: Tolerate some whitespace differences. diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 58e31da..2196575 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -192,6 +192,7 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]] run_list_test "inval-equ-2" "-al" run_dump_test "ifunc" run_list_test "l1om-inval" "-march=l1om --32" + run_dump_test "localpic" } # This is a PE specific test. diff --git a/gas/testsuite/gas/i386/localpic.d b/gas/testsuite/gas/i386/localpic.d new file mode 100644 index 0000000..bda8665 --- /dev/null +++ b/gas/testsuite/gas/i386/localpic.d @@ -0,0 +1,6 @@ +#readelf: -r +#name: i386 local PIC + +Relocation section '.rel.text' at offset 0x[0-9a-f]+ contains 1 entries: + Offset Info Type Sym.Value Sym. Name +[0-9a-f]+ +[0-9a-f]+ R_386_GOT32 +[0-9a-f]+ +foo diff --git a/gas/testsuite/gas/i386/localpic.s b/gas/testsuite/gas/i386/localpic.s new file mode 100644 index 0000000..e633944 --- /dev/null +++ b/gas/testsuite/gas/i386/localpic.s @@ -0,0 +1,5 @@ + .data +foo: + .long 0 + .text +movl foo@GOT(%ecx), %eax -- 2.7.4