This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: Fix .dc.a for x32


Hi,

I checked in this patch to fix .dc.a for x32.


H.J.
---
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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]