diff options
Diffstat (limited to 'contrib/binutils/gas')
-rw-r--r-- | contrib/binutils/gas/ChangeLog | 19 | ||||
-rw-r--r-- | contrib/binutils/gas/config/tc-arm.c | 62 | ||||
-rw-r--r-- | contrib/binutils/gas/config/tc-ppc.c | 13 | ||||
-rwxr-xr-x | contrib/binutils/gas/configure | 1 | ||||
-rw-r--r-- | contrib/binutils/gas/configure.in | 1 | ||||
-rw-r--r-- | contrib/binutils/gas/ecoff.c | 2 |
6 files changed, 65 insertions, 33 deletions
diff --git a/contrib/binutils/gas/ChangeLog b/contrib/binutils/gas/ChangeLog index 6d9ad98..e33b133 100644 --- a/contrib/binutils/gas/ChangeLog +++ b/contrib/binutils/gas/ChangeLog @@ -1,3 +1,22 @@ +2001-07-14 matthew green <mrg@eterna.com.au> + + * configure.in (i386-*-netbsdelf*): New target. + * configure: Regenerate. + +2001-07-07 Nick Clifton <nickc@cambridge.redhat.com> + + * ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is + DEBUG_UNSPECIFIED. + +2001-06-27 Nick Clifton <nickc@cambridge.redhat.com> + + * config/tc-arm.c (do_ldst): Use MVN to build simple inverted + constants. + +2000-06-20 Tom Rix <trix@redhat.com> + + * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes. + 2001-06-18 Philip Blundell <philb@gnu.org> * config/tc-arm.c (do_msr): Remove restriction on usage of diff --git a/contrib/binutils/gas/config/tc-arm.c b/contrib/binutils/gas/config/tc-arm.c index 99aff8e..a6e13a9 100644 --- a/contrib/binutils/gas/config/tc-arm.c +++ b/contrib/binutils/gas/config/tc-arm.c @@ -4431,38 +4431,52 @@ do_ldst (str, flags) return; } - if (inst.reloc.exp.X_op == O_constant - && (value = validate_immediate (inst.reloc.exp.X_add_number)) != FAIL) - { - /* This can be done with a mov instruction. */ - inst.instruction &= LITERAL_MASK; - inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT); - inst.instruction |= (flags & COND_MASK) | (value & 0xfff); - end_of_line (str); - return; - } - else + if (inst.reloc.exp.X_op == O_constant) { - /* Insert into literal pool. */ - if (add_to_lit_pool () == FAIL) + value = validate_immediate (inst.reloc.exp.X_add_number); + + if (value != FAIL) { - if (!inst.error) - inst.error = _("literal pool insertion failed"); + /* This can be done with a mov instruction. */ + inst.instruction &= LITERAL_MASK; + inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT); + inst.instruction |= (flags & COND_MASK) | (value & 0xfff); + end_of_line (str); return; } + + value = validate_immediate (~ inst.reloc.exp.X_add_number); - /* Change the instruction exp to point to the pool. */ - if (halfword) + if (value != FAIL) { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; + /* This can be done with a mvn instruction. */ + inst.instruction &= LITERAL_MASK; + inst.instruction |= INST_IMMEDIATE | (OPCODE_MVN << DATA_OP_SHIFT); + inst.instruction |= (flags & COND_MASK) | (value & 0xfff); + end_of_line (str); + return; } - else - inst.reloc.type = BFD_RELOC_ARM_LITERAL; - inst.reloc.pc_rel = 1; - inst.instruction |= (REG_PC << 16); - pre_inc = 1; } + + /* Insert into literal pool. */ + if (add_to_lit_pool () == FAIL) + { + if (!inst.error) + inst.error = _("literal pool insertion failed"); + return; + } + + /* Change the instruction exp to point to the pool. */ + if (halfword) + { + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; + } + else + inst.reloc.type = BFD_RELOC_ARM_LITERAL; + inst.reloc.pc_rel = 1; + inst.instruction |= (REG_PC << 16); + pre_inc = 1; } else { diff --git a/contrib/binutils/gas/config/tc-ppc.c b/contrib/binutils/gas/config/tc-ppc.c index a893209..ef70871 100644 --- a/contrib/binutils/gas/config/tc-ppc.c +++ b/contrib/binutils/gas/config/tc-ppc.c @@ -2340,7 +2340,8 @@ static boolean ppc_stab_symbol; /* The .comm and .lcomm pseudo-ops for XCOFF. XCOFF puts common symbols in the .bss segment as though they were local common - symbols, and uses a different smclas. */ + symbols, and uses a different smclas. The native Aix 4.3.3 assember + aligns .comm and .lcomm to 4 bytes. */ static void ppc_comm (lcomm) @@ -2382,7 +2383,7 @@ ppc_comm (lcomm) { /* The third argument to .comm is the alignment. */ if (*input_line_pointer != ',') - align = 3; + align = 2; else { ++input_line_pointer; @@ -2390,7 +2391,7 @@ ppc_comm (lcomm) if (align <= 0) { as_warn (_("ignoring bad alignment")); - align = 3; + align = 2; } } } @@ -2399,11 +2400,7 @@ ppc_comm (lcomm) char *lcomm_name; char lcomm_endc; - if (size <= 1) - align = 0; - else if (size <= 2) - align = 1; - else if (size <= 4) + if (size <= 4) align = 2; else align = 3; diff --git a/contrib/binutils/gas/configure b/contrib/binutils/gas/configure index b2904b0f..e8cb78b 100755 --- a/contrib/binutils/gas/configure +++ b/contrib/binutils/gas/configure @@ -2356,6 +2356,7 @@ for this_target in $target $canon_targets ; do i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; + i386-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes;; i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linux*oldld) fmt=aout em=linux ;; diff --git a/contrib/binutils/gas/configure.in b/contrib/binutils/gas/configure.in index 99a0edf..f0d0914 100644 --- a/contrib/binutils/gas/configure.in +++ b/contrib/binutils/gas/configure.in @@ -240,6 +240,7 @@ changequote([,])dnl i386-*-beoself* | i386-*-beos*) fmt=elf bfd_gas=yes ;; i386-*-bsd*) fmt=aout em=386bsd ;; i386-*-netbsd0.8) fmt=aout em=386bsd ;; + i386-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes;; i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linux*oldld) fmt=aout em=linux ;; diff --git a/contrib/binutils/gas/ecoff.c b/contrib/binutils/gas/ecoff.c index 57ddddc..cc94bf6 100644 --- a/contrib/binutils/gas/ecoff.c +++ b/contrib/binutils/gas/ecoff.c @@ -2220,7 +2220,7 @@ add_file (file_name, indx, fake) if (! symbol_table_frozen && debug_type == DEBUG_UNSPECIFIED) debug_type = DEBUG_ECOFF; } - else + else if (debug_type == DEBUG_UNSPECIFIED) debug_type = DEBUG_NONE; #ifndef NO_LISTING |