aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2012-06-13 21:41:07 +0000
committerH.J. Lu <hjl.tools@gmail.com>2012-06-13 21:41:07 +0000
commit357d1bd8fd0ba1a79f347f9d989058ea1615236a (patch)
tree35dd52fd9e352f2b1a2b161dcff0e1ca1f133081 /gas/config
parentf85e18ee6c9f6650c24532f1830057919e872664 (diff)
downloadgdb-357d1bd8fd0ba1a79f347f9d989058ea1615236a.zip
gdb-357d1bd8fd0ba1a79f347f9d989058ea1615236a.tar.gz
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.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-i386.c11
-rw-r--r--gas/config/tc-i386.h3
2 files changed, 14 insertions, 0 deletions
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