diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-06-13 21:41:07 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-06-13 21:41:07 +0000 |
commit | 357d1bd8fd0ba1a79f347f9d989058ea1615236a (patch) | |
tree | 35dd52fd9e352f2b1a2b161dcff0e1ca1f133081 | |
parent | f85e18ee6c9f6650c24532f1830057919e872664 (diff) | |
download | fsf-binutils-gdb-357d1bd8fd0ba1a79f347f9d989058ea1615236a.zip fsf-binutils-gdb-357d1bd8fd0ba1a79f347f9d989058ea1615236a.tar.gz fsf-binutils-gdb-357d1bd8fd0ba1a79f347f9d989058ea1615236a.tar.bz2 |
Fix .dc.a for x32
gas/
* config/tc-i386.c (x86_address_bytes): New.
* config/tc-i386.h (TC_ADDRESS_BYTES): Likewise.
(x86_address_bytes): Likewise.
gas/testsuite/
* gas/i386/ilp32/x86-64-dc_a.d: New.
* gas/i386/ilp32/x86-64-dc_a.s: Likewise.
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 11 | ||||
-rw-r--r-- | gas/config/tc-i386.h | 3 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ilp32/x86-64-dc_a.d | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ilp32/x86-64-dc_a.s | 5 |
6 files changed, 35 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index a9fc59a..7860d0f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2012-06-13 H.J. Lu <hongjiu.lu@intel.com> + + * config/tc-i386.c (x86_address_bytes): New. + * config/tc-i386.h (TC_ADDRESS_BYTES): Likewise. + (x86_address_bytes): Likewise. + 2012-06-13 Zhenqiang Chen <zhenqiang.chen@linaro.org> PR gas/12698 diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index ccf54bc..d2b4927 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6619,6 +6619,17 @@ x86_cons_fix_new (fragS *frag, unsigned int off, unsigned int len, fix_new_exp (frag, off, len, exp, 0, r); } +/* Export the ABI address size for use by TC_ADDRESS_BYTES for the + purpose of the `.dc.a' internal pseudo-op. */ + +int +x86_address_bytes (void) +{ + if ((stdoutput->arch_info->mach & bfd_mach_x64_32)) + return 4; + return stdoutput->arch_info->bits_per_address / 8; +} + #if !(defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) || defined (OBJ_MACH_O)) \ || defined (LEX_AT) # define lex_got(reloc, adjust, types) NULL diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h index 51c6cb6..d4d7d96 100644 --- a/gas/config/tc-i386.h +++ b/gas/config/tc-i386.h @@ -140,6 +140,9 @@ extern void x86_cons (expressionS *, int); extern void x86_cons_fix_new (fragS *, unsigned int, unsigned int, expressionS *); +#define TC_ADDRESS_BYTES x86_address_bytes +extern int x86_address_bytes (void); + #define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ #define NO_RELOC BFD_RELOC_NONE diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index a729175..1129df0 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-06-13 H.J. Lu <hongjiu.lu@intel.com> + + * gas/i386/ilp32/x86-64-dc_a.d: New. + * gas/i386/ilp32/x86-64-dc_a.s: Likewise. + 2012-06-11 Andreas Schwab <schwab@linux-m68k.org> * gas/ppc/e500mc.d: Update. diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-dc_a.d b/gas/testsuite/gas/i386/ilp32/x86-64-dc_a.d new file mode 100644 index 0000000..8b2cdcd --- /dev/null +++ b/gas/testsuite/gas/i386/ilp32/x86-64-dc_a.d @@ -0,0 +1,5 @@ +#nm: -n +#name: x86-64 (ILP32) .dc.a + +0+ d foo +0+4 d bar diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-dc_a.s b/gas/testsuite/gas/i386/ilp32/x86-64-dc_a.s new file mode 100644 index 0000000..4674392 --- /dev/null +++ b/gas/testsuite/gas/i386/ilp32/x86-64-dc_a.s @@ -0,0 +1,5 @@ + .data +foo: + .dc.a 0 +bar: + .dc.a 0 |