From cc1bc22af7e433b5cfca0907e069ffbeb8a29660 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 21 Feb 2005 08:39:53 +0000 Subject: gas/ * read.c (address_bytes): New function. (TC_ADDRESS_BYTES): Default for BSD_ASSEMBLER to address_bytes. (potable): Add "dc.a". (cons_worker): Handle "dc.a". * doc/internals.texi (TC_ADDRESS_BYTES): Document. ld/testsuite/ * ld-elf/exclude1.s: Use ".dc.a". * ld-elfvsb/hidden2.s: Likewise. --- gas/read.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'gas/read.c') diff --git a/gas/read.c b/gas/read.c index 807f410..c86b7d7 100644 --- a/gas/read.c +++ b/gas/read.c @@ -243,6 +243,24 @@ read_begin (void) lex_type['?'] = 3; } +#ifndef TC_ADDRESS_BYTES +#ifdef BFD_ASSEMBLER +#define TC_ADDRESS_BYTES address_bytes + +static inline int +address_bytes (void) +{ + /* Choose smallest of 1, 2, 4, 8 bytes that is large enough to + contain an address. */ + int n = (stdoutput->arch_info->bits_per_address - 1) / 8; + n |= n >> 1; + n |= n >> 2; + n += 1; + return n; +} +#endif +#endif + /* Set up pseudo-op tables. */ static struct hash_control *po_hash; @@ -263,6 +281,9 @@ static const pseudo_typeS potable[] = { {"common.s", s_mri_common, 1}, {"data", s_data, 0}, {"dc", cons, 2}, +#ifdef TC_ADDRESS_BYTES + {"dc.a", cons, 0}, +#endif {"dc.b", cons, 1}, {"dc.d", float_cons, 'd'}, {"dc.l", cons, 4}, @@ -3335,6 +3356,11 @@ cons_worker (register int nbytes, /* 1=.byte, 2=.word, 4=.long. */ return; } +#ifdef TC_ADDRESS_BYTES + if (nbytes == 0) + nbytes = TC_ADDRESS_BYTES (); +#endif + #ifdef md_cons_align md_cons_align (nbytes); #endif -- cgit v1.1