summaryrefslogtreecommitdiffstats
path: root/contrib/binutils/gas
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-07-20 03:29:51 +0000
committerobrien <obrien@FreeBSD.org>2001-07-20 03:29:51 +0000
commite55b0aebbf54426e20afda566c99dbca2d20aa89 (patch)
tree415722f688fd7a16e38a20dc5d1c4477f42180d8 /contrib/binutils/gas
parente4de9fb2c006e11baefc9c92a5a4ed38408d5361 (diff)
downloadFreeBSD-src-e55b0aebbf54426e20afda566c99dbca2d20aa89.zip
FreeBSD-src-e55b0aebbf54426e20afda566c99dbca2d20aa89.tar.gz
Import of Binutils from the FSF 2.11 branch [checked out 19-July-2001].
This fixes an annoying `ld' bug.
Diffstat (limited to 'contrib/binutils/gas')
-rw-r--r--contrib/binutils/gas/ChangeLog19
-rw-r--r--contrib/binutils/gas/config/tc-arm.c62
-rw-r--r--contrib/binutils/gas/config/tc-ppc.c13
-rwxr-xr-xcontrib/binutils/gas/configure1
-rw-r--r--contrib/binutils/gas/configure.in1
-rw-r--r--contrib/binutils/gas/ecoff.c2
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
OpenPOWER on IntegriCloud