This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
gas/config/tc-ia64.c patch for ehopt gas testsuite failure
- To: binutils at gcc dot gnu dot org
- Subject: gas/config/tc-ia64.c patch for ehopt gas testsuite failure
- From: Jim Wilson <wilson at redhat dot com>
- Date: Wed, 4 Jul 2001 20:40:14 -0700
This fixes the gas/testsuite/gas/elf/ehopt testsuite failure for ia64-linux.
The IA-64 assembler reference guide says that data allocation pseudo-ops auto
align themselves. The IA-64 gas port was written to auto align all data
allocation pseudo-ops by default, except those known to be unaligned.
The ehopt.s testcase uses 4byte, which is not a valid IA-64 assembly pseudo-op
and so it gets auto aligned even though it should not be.
Long term, we should rewrite ia64 gas to that it doesn't auto-align by default
as that conflicts with normal gas semantics. It should instead only align
IA-64 specific assembly pseudo-ops that require alignment, and leave everything
else unaligned. Changing this seems likely to break stuff by accident though,
so for now I am adding the dwarf2 pseudo-ops 2byte/4byte/8byte to ia64 gas so
that they get handled correctly. ia64 gcc never emits these psuedo-ops by
the way. ia64 gcc uses the pseudo-ops documented in the IA-64 assembler
reference guide, data4.ua, etc.
2001-07-04 Jim Wilson <wilson@redhat.com>
* config/tc-ia64.c (md_pseudo_table): Add 2byte, 4byte, and 8byte.
Index: tc-ia64.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.c,v
retrieving revision 1.52
diff -p -r1.52 tc-ia64.c
*** tc-ia64.c 2001/07/05 02:30:21 1.52
--- tc-ia64.c 2001/07/05 03:19:39
*************** const pseudo_typeS md_pseudo_table[] =
*** 4701,4706 ****
--- 4701,4715 ----
{ "explicit", dot_dv_mode, 'e' },
{ "default", dot_dv_mode, 'd' },
+ /* ??? These are needed to make gas/testsuite/gas/elf/ehopt.s work.
+ IA-64 aligns data allocation pseudo-ops by default, so we have to
+ tell it that these ones are supposed to be unaligned. Long term,
+ should rewrite so that only IA-64 specific data allocation pseudo-ops
+ are aligned by default. */
+ {"2byte", stmt_cons_ua, 2},
+ {"4byte", stmt_cons_ua, 4},
+ {"8byte", stmt_cons_ua, 8},
+
{ NULL, 0, 0 }
};