aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@cygnus>1995-07-07 22:49:42 +0000
committerKen Raeburn <raeburn@cygnus>1995-07-07 22:49:42 +0000
commit943fbd5bd520934ca3a26abb2d5cfbdd2a7659ec (patch)
treeb240b5f343d4689d462e4b642626afbefc87c9f0
parentc71a604ae102994ad081cb57be24586126048ba6 (diff)
downloadgdb-943fbd5bd520934ca3a26abb2d5cfbdd2a7659ec.zip
gdb-943fbd5bd520934ca3a26abb2d5cfbdd2a7659ec.tar.gz
gdb-943fbd5bd520934ca3a26abb2d5cfbdd2a7659ec.tar.bz2
fsf address update, but not in COPYING files
-rw-r--r--bfd/Makefile.in2
-rw-r--r--bfd/aout-encap.c2
-rw-r--r--bfd/aout-rce.c2
-rw-r--r--bfd/aoutx.h62
-rw-r--r--bfd/cf-m68klynx.c2
-rw-r--r--bfd/coff-a29k.c2
-rw-r--r--bfd/coff-arm.c570
-rw-r--r--bfd/coff-i960.c73
-rw-r--r--bfd/cofflink.c2
-rw-r--r--bfd/core.c2
-rw-r--r--bfd/cpu-a29k.c2
-rw-r--r--bfd/cpu-rce.c2
-rw-r--r--bfd/ecoff.c2
-rw-r--r--bfd/elf32-i386.c2
-rw-r--r--bfd/elf32-m68k.c2
-rw-r--r--bfd/elf32-sparc.c2
-rw-r--r--bfd/elflink.h2
-rw-r--r--bfd/filemode.c2
-rw-r--r--bfd/i386linux.c4
-rw-r--r--bfd/libelf.h2
-rw-r--r--bfd/linker.c2
-rw-r--r--bfd/m68klynx.c2
-rw-r--r--bfd/mpw-make.in2
-rw-r--r--bfd/sunos.c10
-rw-r--r--binutils/gmalloc.c16
-rw-r--r--binutils/mpw-make.in2
-rw-r--r--binutils/srconv.c2
-rw-r--r--binutils/testsuite/binutils-all/hppa/objdump.exp11
-rw-r--r--binutils/testsuite/binutils-all/nm.exp101
-rw-r--r--binutils/testsuite/binutils-all/objcopy.exp2
-rw-r--r--binutils/testsuite/binutils-all/objdump.exp17
-rw-r--r--binutils/testsuite/binutils-all/size.exp70
-rw-r--r--binutils/testsuite/config/default.exp55
-rw-r--r--binutils/testsuite/lib/utils-lib.exp116
-rw-r--r--include/bfdlink.h2
-rw-r--r--include/opcode/a29k.h2
-rw-r--r--ld/Makefile.in14
-rw-r--r--ld/config.h2
-rw-r--r--ld/emultempl/armpe.em4
-rw-r--r--ld/emultempl/elf32.em2
-rw-r--r--ld/emultempl/i386pe.em2
-rw-r--r--ld/emultempl/m88kbcs.em2
-rw-r--r--ld/emultempl/sunos.em28
-rw-r--r--ld/ld.h16
-rw-r--r--ld/ldfile.c186
-rw-r--r--ld/ldlang.c5
-rw-r--r--ld/ldlang.h39
-rw-r--r--ld/ldmain.c2
-rw-r--r--ld/lexsup.c2
-rw-r--r--ld/mpw-emipsidt.c2
-rw-r--r--ld/mpw-esh.c2
-rw-r--r--ld/mpw-make.in2
-rw-r--r--ld/testsuite/config/default.exp6
-rw-r--r--ld/testsuite/ld-bootstrap/bootstrap.exp81
-rw-r--r--ld/testsuite/ld-cdtest/cdtest.exp94
-rw-r--r--ld/testsuite/ld-empic/empic.exp2
-rw-r--r--ld/testsuite/ld-shared/shared.exp165
-rw-r--r--ld/testsuite/ld-versados/versados.exp2
-rw-r--r--opcodes/a29k-dis.c2
-rw-r--r--opcodes/alpha-opc.h2
-rw-r--r--opcodes/arm-opc.h2
-rw-r--r--opcodes/mpw-make.in2
-rw-r--r--opcodes/rce-dis.c2
63 files changed, 1505 insertions, 318 deletions
diff --git a/bfd/Makefile.in b/bfd/Makefile.in
index a1027b6..9e3b234 100644
--- a/bfd/Makefile.in
+++ b/bfd/Makefile.in
@@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
VPATH = @srcdir@
srcdir = @srcdir@
diff --git a/bfd/aout-encap.c b/bfd/aout-encap.c
index f5e4fd7..eb74608 100644
--- a/bfd/aout-encap.c
+++ b/bfd/aout-encap.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* THIS MODULE IS NOT FINISHED. IT PROBABLY DOESN'T EVEN COMPILE. */
diff --git a/bfd/aout-rce.c b/bfd/aout-rce.c
index 6fa3f52..f83e5f9 100644
--- a/bfd/aout-rce.c
+++ b/bfd/aout-rce.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_BIG_ENDIAN_P
#define PAGE_SIZE 4096
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index b3c660e..8c6ebb1 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
SECTION
@@ -705,8 +705,10 @@ NAME(aout,machine_type) (arch, machine, unknown)
case 0:
case 2000:
case 3000: arch_flags = M_MIPS1; break;
- case 4000:
+ case 4000: /* mips3 */
case 4400:
+ case 8000: /* mips4 */
+ /* real mips2: */
case 6000: arch_flags = M_MIPS2; break;
default: arch_flags = M_UNKNOWN; break;
}
@@ -1542,37 +1544,43 @@ translate_to_native_sym_flags (abfd, cache_ptr, sym_pointer)
struct external_nlist *sym_pointer;
{
bfd_vma value = cache_ptr->value;
+ asection *sec;
+ bfd_vma off;
/* Mask out any existing type bits in case copying from one section
to another. */
sym_pointer->e_type[0] &= ~N_TYPE;
- if (bfd_is_abs_section (bfd_get_section (cache_ptr)))
- sym_pointer->e_type[0] |= N_ABS;
- else if (bfd_get_section (cache_ptr) == obj_textsec (abfd)
- || (bfd_get_section (cache_ptr)->output_section
- == obj_textsec (abfd)))
- sym_pointer->e_type[0] |= N_TEXT;
- else if (bfd_get_section (cache_ptr) == obj_datasec (abfd)
- || (bfd_get_section (cache_ptr)->output_section
- == obj_datasec (abfd)))
- sym_pointer->e_type[0] |= N_DATA;
- else if (bfd_get_section (cache_ptr) == obj_bsssec (abfd)
- || (bfd_get_section (cache_ptr)->output_section
- == obj_bsssec (abfd)))
- sym_pointer->e_type[0] |= N_BSS;
- else if (bfd_get_section (cache_ptr) == NULL)
+ sec = bfd_get_section (cache_ptr);
+ off = 0;
+
+ if (sec == NULL)
{
- /* Protect the bfd_is_com_section call. This case occurs, e.g.,
- for the *DEBUG* section of a COFF file. */
+ /* This case occurs, e.g., for the *DEBUG* section of a COFF
+ file. */
bfd_set_error (bfd_error_nonrepresentable_section);
return false;
}
- else if (bfd_is_und_section (bfd_get_section (cache_ptr)))
+
+ if (sec->output_section != NULL)
+ {
+ off = sec->output_offset;
+ sec = sec->output_section;
+ }
+
+ if (bfd_is_abs_section (sec))
+ sym_pointer->e_type[0] |= N_ABS;
+ else if (sec == obj_textsec (abfd))
+ sym_pointer->e_type[0] |= N_TEXT;
+ else if (sec == obj_datasec (abfd))
+ sym_pointer->e_type[0] |= N_DATA;
+ else if (sec == obj_bsssec (abfd))
+ sym_pointer->e_type[0] |= N_BSS;
+ else if (bfd_is_und_section (sec))
sym_pointer->e_type[0] = N_UNDF | N_EXT;
- else if (bfd_is_ind_section (bfd_get_section (cache_ptr)))
+ else if (bfd_is_ind_section (sec))
sym_pointer->e_type[0] = N_INDR;
- else if (bfd_is_com_section (bfd_get_section (cache_ptr)))
+ else if (bfd_is_com_section (sec))
sym_pointer->e_type[0] = N_UNDF | N_EXT;
else
{
@@ -1581,11 +1589,7 @@ translate_to_native_sym_flags (abfd, cache_ptr, sym_pointer)
}
/* Turn the symbol from section relative to absolute again */
- if (cache_ptr->section->output_section != NULL)
- value += (cache_ptr->section->output_section->vma
- + cache_ptr->section->output_offset);
- else
- value += cache_ptr->section->vma;
+ value += sec->vma + off;
if ((cache_ptr->flags & BSF_WARNING) != 0)
sym_pointer->e_type[0] = N_WARNING;
@@ -4465,6 +4469,10 @@ aout_link_input_section_std (finfo, input_bfd, input_section, relocs,
+ input_section->output_offset
- input_section->vma);
+#ifdef MY_relocatable_reloc
+ MY_relocatable_reloc (howto, output_bfd, rel, relocation, r_addr);
+#endif
+
if (relocation == 0)
r = bfd_reloc_ok;
else
diff --git a/bfd/cf-m68klynx.c b/bfd/cf-m68klynx.c
index bb12e22..94a6fb0 100644
--- a/bfd/cf-m68klynx.c
+++ b/bfd/cf-m68klynx.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_SYM m68klynx_coff_vec
#define TARGET_NAME "coff-m68k-lynx"
diff --git a/bfd/coff-a29k.c b/bfd/coff-a29k.c
index fdcb430..cac98ad 100644
--- a/bfd/coff-a29k.c
+++ b/bfd/coff-a29k.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define A29K 1
diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
new file mode 100644
index 0000000..8fa712d
--- /dev/null
+++ b/bfd/coff-arm.c
@@ -0,0 +1,570 @@
+/* BFD back-end for Intel arm COFF files.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+ Written by Cygnus Support.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "libbfd.h"
+#include "obstack.h"
+
+#include "coff/arm.h"
+
+#include "coff/internal.h"
+
+#ifdef COFF_WITH_PE
+#include "coff/pe.h"
+#endif
+
+#include "libcoff.h"
+
+static bfd_reloc_status_type
+aoutarm_fix_pcrel_26_done PARAMS ((bfd *, arelent *, asymbol *, PTR,
+ asection *, bfd *, char **));
+
+static bfd_reloc_status_type
+aoutarm_fix_pcrel_26 PARAMS ((bfd *, arelent *, asymbol *, PTR,
+ asection *, bfd *, char **));
+
+
+static bfd_reloc_status_type coff_arm_reloc
+ PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+
+static bfd_reloc_status_type
+coff_arm_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
+ error_message)
+ bfd *abfd;
+ arelent *reloc_entry;
+ asymbol *symbol;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message;
+{
+ symvalue diff;
+
+ if (output_bfd == (bfd *) NULL)
+ return bfd_reloc_continue;
+
+ if (bfd_is_com_section (symbol->section))
+ {
+ /* We are relocating a common symbol. The current value in the
+ object file is ORIG + OFFSET, where ORIG is the value of the
+ common symbol as seen by the object file when it was compiled
+ (this may be zero if the symbol was undefined) and OFFSET is
+ the offset into the common symbol (normally zero, but may be
+ non-zero when referring to a field in a common structure).
+ ORIG is the negative of reloc_entry->addend, which is set by
+ the CALC_ADDEND macro below. We want to replace the value in
+ the object file with NEW + OFFSET, where NEW is the value of
+ the common symbol which we are going to put in the final
+ object file. NEW is symbol->value. */
+ diff = symbol->value + reloc_entry->addend;
+ }
+ else
+ {
+ /* For some reason bfd_perform_relocation always effectively
+ ignores the addend for a COFF target when producing
+ relocateable output. This seems to be always wrong for 386
+ COFF, so we handle the addend here instead. */
+ diff = reloc_entry->addend;
+ }
+
+#define DOIT(x) \
+ x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
+
+ if (diff != 0)
+ {
+ reloc_howto_type *howto = reloc_entry->howto;
+ unsigned char *addr = (unsigned char *) data + reloc_entry->address;
+
+ switch (howto->size)
+ {
+ case 0:
+ {
+ char x = bfd_get_8 (abfd, addr);
+ DOIT (x);
+ bfd_put_8 (abfd, x, addr);
+ }
+ break;
+
+ case 1:
+ {
+ short x = bfd_get_16 (abfd, addr);
+ DOIT (x);
+ bfd_put_16 (abfd, x, addr);
+ }
+ break;
+
+ case 2:
+ {
+ long x = bfd_get_32 (abfd, addr);
+ DOIT (x);
+ bfd_put_32 (abfd, x, addr);
+ }
+ break;
+
+ default:
+ abort ();
+ }
+ }
+
+ /* Now let bfd_perform_relocation finish everything up. */
+ return bfd_reloc_continue;
+}
+
+static reloc_howto_type aoutarm_std_reloc_howto[] =
+{
+ /* type rs size bsz pcrel bitpos ovrf sf name part_inpl readmask setmask pcdone */
+ HOWTO(0, /* type */
+ 0, /* rs */
+ 0, /* size */
+ 8, /* bsz */
+ false, /* pcrel */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* ovf */
+ coff_arm_reloc, /* sf */
+ "8", /*name */
+ true, /* partial */
+ 0x000000ff, /*read mask */
+ 0x000000ff, /* setmask */
+ PCRELOFFSET /* pcdone */),
+ HOWTO(1,
+ 0,
+ 1,
+ 16,
+ false,
+ 0,
+ complain_overflow_bitfield,
+ coff_arm_reloc,
+ "16",
+ true,
+ 0x0000ffff,
+ 0x0000ffff,
+ PCRELOFFSET),
+ HOWTO( 2,
+ 0,
+ 2,
+ 32,
+ false,
+ 0,
+ complain_overflow_bitfield,
+ coff_arm_reloc,
+ "32",
+ true,
+ 0xffffffff,
+ 0xffffffff,
+ PCRELOFFSET),
+ HOWTO( 3,
+ 2,
+ 3,
+ 26,
+ true,
+ 0,
+ complain_overflow_signed,
+ aoutarm_fix_pcrel_26 ,
+ "ARM26",
+ true,
+ 0x00ffffff,
+ 0x00ffffff,
+ PCRELOFFSET),
+ HOWTO( 4,
+ 0,
+ 0,
+ 8,
+ true,
+ 0,
+ complain_overflow_signed,
+ coff_arm_reloc,
+ "DISP8",
+ true,
+ 0x000000ff,
+ 0x000000ff,
+ true),
+ HOWTO( 5,
+ 0,
+ 1,
+ 16,
+ true,
+ 0,
+ complain_overflow_signed,
+ coff_arm_reloc,
+ "DISP16",
+ true,
+ 0x0000ffff,
+ 0x0000ffff,
+ true),
+ HOWTO( 6,
+ 0,
+ 2,
+ 32,
+ true,
+ 0,
+ complain_overflow_signed,
+ coff_arm_reloc,
+ "DISP32",
+ true,
+ 0xffffffff,
+ 0xffffffff,
+ true),
+ HOWTO( 7,
+ 2,
+ 3,
+ 26,
+ false,
+ 0,
+ complain_overflow_signed,
+ aoutarm_fix_pcrel_26_done,
+ "ARM26D",
+ true,
+ 0x00ffffff,
+ 0x00ffffff,
+ false),
+ {-1},
+ HOWTO( 9,
+ 0,
+ -1,
+ 16,
+ false,
+ 0,
+ complain_overflow_bitfield,
+ coff_arm_reloc,
+ "NEG16",
+ true,
+ 0x0000ffff,
+ 0x0000ffff,
+ false),
+ HOWTO( 10,
+ 0,
+ -2,
+ 32,
+ false,
+ 0,
+ complain_overflow_bitfield,
+ coff_arm_reloc,
+ "NEG32",
+ true,
+ 0xffffffff,
+ 0xffffffff,
+ false)
+};
+
+
+
+#define RTYPE2HOWTO(cache_ptr, dst) \
+ (cache_ptr)->howto = aoutarm_std_reloc_howto + (dst)->r_type;
+
+static bfd_reloc_status_type
+aoutarm_fix_pcrel_26_done (abfd, reloc_entry, symbol, data, input_section,
+ output_bfd, error_message)
+ bfd *abfd;
+ arelent *reloc_entry;
+ asymbol *symbol;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message;
+{
+ /* This is dead simple at present. */
+ return bfd_reloc_ok;
+}
+
+static bfd_reloc_status_type
+aoutarm_fix_pcrel_26 (abfd, reloc_entry, symbol, data, input_section,
+ output_bfd, error_message)
+ bfd *abfd;
+ arelent *reloc_entry;
+ asymbol *symbol;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message;
+{
+ bfd_vma relocation;
+ bfd_size_type addr = reloc_entry->address;
+ long target = bfd_get_32 (abfd, (bfd_byte *) data + addr);
+ bfd_reloc_status_type flag = bfd_reloc_ok;
+
+ /* If this is an undefined symbol, return error */
+ if (symbol->section == &bfd_und_section
+ && (symbol->flags & BSF_WEAK) == 0)
+ return output_bfd ? bfd_reloc_continue : bfd_reloc_undefined;
+
+ /* If the sections are different, and we are doing a partial relocation,
+ just ignore it for now. */
+ if (symbol->section->name != input_section->name
+ && output_bfd != (bfd *)NULL)
+ return bfd_reloc_continue;
+
+ relocation = (target & 0x00ffffff) << 2;
+ relocation = (relocation ^ 0x02000000) - 0x02000000; /* Sign extend */
+ relocation += symbol->value;
+ relocation += symbol->section->output_section->vma;
+ relocation += symbol->section->output_offset;
+ relocation += reloc_entry->addend;
+ relocation -= input_section->output_section->vma;
+ relocation -= input_section->output_offset;
+ relocation -= addr;
+ if (relocation & 3)
+ return bfd_reloc_overflow;
+
+ /* Check for overflow */
+ if (relocation & 0x02000000)
+ {
+ if ((relocation & ~0x03ffffff) != ~0x03ffffff)
+ flag = bfd_reloc_overflow;
+ }
+ else if (relocation & ~0x03ffffff)
+ flag = bfd_reloc_overflow;
+
+ target &= ~0x00ffffff;
+ target |= (relocation >> 2) & 0x00ffffff;
+ bfd_put_32 (abfd, target, (bfd_byte *) data + addr);
+
+ /* Now the ARM magic... Change the reloc type so that it is marked as done.
+ Strictly this is only necessary if we are doing a partial relocation. */
+ reloc_entry->howto = &aoutarm_std_reloc_howto[7];
+
+ return flag;
+}
+
+static CONST struct reloc_howto_struct *
+arm_reloc_type_lookup(abfd,code)
+ bfd *abfd;
+ bfd_reloc_code_real_type code;
+{
+#define ASTD(i,j) case i: return &aoutarm_std_reloc_howto[j]
+ if (code == BFD_RELOC_CTOR)
+ switch (bfd_get_arch_info (abfd)->bits_per_address)
+ {
+ case 32:
+ code = BFD_RELOC_32;
+ break;
+ default: return (CONST struct reloc_howto_struct *) 0;
+ }
+
+ switch (code)
+ {
+ ASTD (BFD_RELOC_16, 1);
+ ASTD (BFD_RELOC_32, 2);
+ ASTD (BFD_RELOC_ARM_PCREL_BRANCH, 3);
+ ASTD (BFD_RELOC_8_PCREL, 4);
+ ASTD (BFD_RELOC_16_PCREL, 5);
+ ASTD (BFD_RELOC_32_PCREL, 6);
+ default: return (CONST struct reloc_howto_struct *) 0;
+ }
+}
+
+
+#define coff_bfd_reloc_type_lookup arm_reloc_type_lookup
+
+static reloc_howto_type *coff_arm_rtype_to_howto
+ PARAMS ((bfd *, asection *, struct internal_reloc *,
+ struct coff_link_hash_entry *, struct internal_syment *,
+
+ bfd_vma *));
+
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2)
+/* The page size is a guess based on ELF. */
+#define COFF_PAGE_SIZE 0x1000
+
+/* For some reason when using arm COFF the value stored in the .text
+ section for a reference to a common symbol is the value itself plus
+ any desired offset. Ian Taylor, Cygnus Support. */
+
+/* If we are producing relocateable output, we need to do some
+ adjustments to the object file that are not done by the
+ bfd_perform_relocation function. This function is called by every
+ reloc type to make any required adjustments. */
+
+static bfd_reloc_status_type
+aacoff_arm_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
+ error_message)
+ bfd *abfd;
+ arelent *reloc_entry;
+ asymbol *symbol;
+ PTR data;
+ asection *input_section;
+ bfd *output_bfd;
+ char **error_message;
+{
+ symvalue diff;
+
+ if (output_bfd == (bfd *) NULL)
+ return bfd_reloc_continue;
+
+ if (bfd_is_com_section (symbol->section))
+ {
+ /* We are relocating a common symbol. The current value in the
+ object file is ORIG + OFFSET, where ORIG is the value of the
+ common symbol as seen by the object file when it was compiled
+ (this may be zero if the symbol was undefined) and OFFSET is
+ the offset into the common symbol (normally zero, but may be
+ non-zero when referring to a field in a common structure).
+ ORIG is the negative of reloc_entry->addend, which is set by
+ the CALC_ADDEND macro below. We want to replace the value in
+ the object file with NEW + OFFSET, where NEW is the value of
+ the common symbol which we are going to put in the final
+ object file. NEW is symbol->value. */
+ diff = symbol->value + reloc_entry->addend;
+ }
+ else
+ {
+ /* For some reason bfd_perform_relocation always effectively
+ ignores the addend for a COFF target when producing
+ relocateable output. This seems to be always wrong for arm
+ COFF, so we handle the addend here instead. */
+ diff = reloc_entry->addend;
+ }
+
+#define DOIT(x) \
+ x = ((x & ~howto->dst_mask) | (((x & howto->src_mask) + diff) & howto->dst_mask))
+
+ if (diff != 0)
+ {
+ reloc_howto_type *howto = reloc_entry->howto;
+ unsigned char *addr = (unsigned char *) data + reloc_entry->address;
+
+ switch (howto->size)
+ {
+ case 0:
+ {
+ char x = bfd_get_8 (abfd, addr);
+ DOIT (x);
+ bfd_put_8 (abfd, x, addr);
+ }
+ break;
+
+ case 1:
+ {
+ short x = bfd_get_16 (abfd, addr);
+ DOIT (x);
+ bfd_put_16 (abfd, x, addr);
+ }
+ break;
+
+ case 2:
+ {
+ long x = bfd_get_32 (abfd, addr);
+ DOIT (x);
+ bfd_put_32 (abfd, x, addr);
+ }
+ break;
+
+ default:
+ abort ();
+ }
+ }
+
+ /* Now let bfd_perform_relocation finish everything up. */
+ return bfd_reloc_continue;
+}
+
+
+
+
+
+/* Turn a howto into a reloc nunmber */
+
+#define SELECT_RELOC(x,howto) { x.r_type = howto->type; }
+#define BADMAG(x) ARMBADMAG(x)
+#define ARM 1 /* Customize coffcode.h */
+
+
+/* On SCO Unix 3.2.2 the native assembler generates two .data
+ sections. We handle that by renaming the second one to .data2. It
+ does no harm to do this for any arm COFF target. */
+#define TWO_DATA_SECS
+
+/* For arm COFF a STYP_NOLOAD | STYP_BSS section is part of a shared
+ library. On some other COFF targets STYP_BSS is normally
+ STYP_NOLOAD. */
+#define BSS_NOLOAD_IS_SHARED_LIBRARY
+
+
+/* We use the special COFF backend linker. */
+#define coff_relocate_section _bfd_coff_generic_relocate_section
+
+
+
+#include "coffcode.h"
+
+static const bfd_target *
+i3coff_object_p(a)
+ bfd *a;
+{
+ return coff_object_p(a);
+}
+
+const bfd_target
+#ifdef TARGET_SYM
+ TARGET_SYM =
+#else
+ armcoff_vec =
+#endif
+{
+#ifdef TARGET_NAME
+ TARGET_NAME,
+#else
+ "coff-arm", /* name */
+#endif
+ bfd_target_coff_flavour,
+ false, /* data byte order is little */
+ false, /* header byte order is little */
+
+ (HAS_RELOC | EXEC_P | /* object flags */
+ HAS_LINENO | HAS_DEBUG |
+ HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+
+ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+#ifdef TARGET_UNDERSCORE
+ TARGET_UNDERSCORE, /* leading underscore */
+#else
+ 0, /* leading underscore */
+#endif
+ '/', /* ar_pad_char */
+ 15, /* ar_max_namelen */
+
+ 2, /* minimum alignment power */
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
+
+/* Note that we allow an object file to be treated as a core file as well. */
+ {_bfd_dummy_target, i3coff_object_p, /* bfd_check_format */
+ bfd_generic_archive_p, i3coff_object_p},
+ {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
+ bfd_false},
+ {bfd_false, coff_write_object_contents, /* bfd_write_contents */
+ _bfd_write_archive_contents, bfd_false},
+
+ BFD_JUMP_TABLE_GENERIC (coff),
+ BFD_JUMP_TABLE_COPY (coff),
+ BFD_JUMP_TABLE_CORE (_bfd_nocore),
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+ BFD_JUMP_TABLE_SYMBOLS (coff),
+ BFD_JUMP_TABLE_RELOCS (coff),
+ BFD_JUMP_TABLE_WRITE (coff),
+ BFD_JUMP_TABLE_LINK (coff),
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+ COFF_SWAP_TABLE,
+};
diff --git a/bfd/coff-i960.c b/bfd/coff-i960.c
index cfbe5fd..fcc8754 100644
--- a/bfd/coff-i960.c
+++ b/bfd/coff-i960.c
@@ -1,5 +1,5 @@
/* BFD back-end for Intel 960 COFF files.
- Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1990, 91, 92, 93, 94, 1995 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define I960 1
#define BADMAG(x) I960BADMAG(x)
@@ -34,6 +34,12 @@ static bfd_reloc_status_type optcall_callback
static bfd_reloc_status_type coff_i960_relocate
PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (3)
+
+/* The i960 does not support an MMU, so COFF_PAGE_SIZE can be
+ arbitrarily small. */
+#define COFF_PAGE_SIZE 1
+
#define COFF_LONG_FILENAMES
#define CALLS 0x66003800 /* Template for 'calls' instruction */
@@ -42,12 +48,12 @@ static bfd_reloc_status_type coff_i960_relocate
static bfd_reloc_status_type
optcall_callback (abfd, reloc_entry, symbol_in, data,
- ignore_input_section, ignore_bfd, error_message)
+ input_section, ignore_bfd, error_message)
bfd *abfd;
arelent *reloc_entry;
asymbol *symbol_in;
PTR data;
- asection *ignore_input_section;
+ asection *input_section;
bfd *ignore_bfd;
char **error_message;
{
@@ -57,6 +63,13 @@ optcall_callback (abfd, reloc_entry, symbol_in, data,
bfd_reloc_status_type result;
coff_symbol_type *cs = coffsymbol(symbol_in);
+ /* Don't do anything with symbols which aren't tied up yet,
+ except move the reloc. */
+ if (bfd_is_und_section (cs->symbol.section)) {
+ reloc_entry->address += input_section->output_offset;
+ return bfd_reloc_ok;
+ }
+
/* So the target symbol has to be of coff type, and the symbol
has to have the correct native information within it */
if ((bfd_asymbol_flavour(&cs->symbol) != bfd_target_coff_flavour)
@@ -126,8 +139,7 @@ coff_i960_relocate (abfd, reloc_entry, symbol, data, input_section,
bfd *output_bfd;
char **error_message;
{
- const char *sec_name;
- asymbol **syms, **sym_end;
+ asection *osec;
if (output_bfd == NULL)
{
@@ -141,25 +153,42 @@ coff_i960_relocate (abfd, reloc_entry, symbol, data, input_section,
return bfd_reloc_continue;
}
+ if (bfd_is_com_section (bfd_get_section (symbol)))
+ {
+ /* I don't really know what the right action is for a common
+ symbol. */
+ return bfd_reloc_continue;
+ }
+
/* Convert the reloc to use the section symbol. FIXME: This method
- is ridiculous. */
- sec_name = bfd_get_section_name (output_bfd,
- bfd_get_section (symbol)->output_section);
- syms = bfd_get_outsymbols (output_bfd);
- sym_end = syms + bfd_get_symcount (output_bfd);
- for (; syms < sym_end; syms++)
+ is ridiculous. Fortunately, we don't use the used_by_bfd field
+ in COFF. */
+ osec = bfd_get_section (symbol)->output_section;
+ if (osec->used_by_bfd != NULL)
+ reloc_entry->sym_ptr_ptr = (asymbol **) osec->used_by_bfd;
+ else
{
- if (bfd_asymbol_name (*syms) != NULL
- && strcmp (bfd_asymbol_name (*syms), sec_name) == 0
- && (*syms)->value == 0)
+ const char *sec_name;
+ asymbol **syms, **sym_end;
+
+ sec_name = bfd_get_section_name (output_bfd, osec);
+ syms = bfd_get_outsymbols (output_bfd);
+ sym_end = syms + bfd_get_symcount (output_bfd);
+ for (; syms < sym_end; syms++)
{
- reloc_entry->sym_ptr_ptr = syms;
- break;
+ if (bfd_asymbol_name (*syms) != NULL
+ && (*syms)->value == 0
+ && strcmp (!(*syms)->section->output_section->name, sec_name))
+ {
+ osec->used_by_bfd = (PTR) syms;
+ reloc_entry->sym_ptr_ptr = syms;
+ break;
+ }
}
- }
- if (syms >= sym_end)
- abort ();
+ if (syms >= sym_end)
+ abort ();
+ }
/* Let bfd_perform_relocation do its thing, which will include
stuffing the symbol addend into the object file. */
@@ -177,7 +206,7 @@ static reloc_howto_type howto_optcall =
HOWTO (R_OPTCALL, 0,2,24,true,0, complain_overflow_signed,
optcall_callback, "optcall", true, 0x00ffffff, 0x00ffffff, 0);
-static const reloc_howto_type *
+static reloc_howto_type *
coff_i960_reloc_type_lookup (abfd, code)
bfd *abfd;
bfd_reloc_code_real_type code;
@@ -207,7 +236,7 @@ coff_i960_reloc_type_lookup (abfd, code)
case 27: howto_ptr = &howto_optcall; break; \
default: howto_ptr = 0; break; \
} \
- cache_ptr->howto = howto_ptr; \
+ (cache_ptr)->howto = howto_ptr; \
}
#include "coffcode.h"
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index 4913b51..efc8305 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This file contains the COFF backend linker code. */
diff --git a/bfd/core.c b/bfd/core.c
index 5d88a49..212f519 100644
--- a/bfd/core.c
+++ b/bfd/core.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
SECTION
diff --git a/bfd/cpu-a29k.c b/bfd/cpu-a29k.c
index fa7f478..3601551 100644
--- a/bfd/cpu-a29k.c
+++ b/bfd/cpu-a29k.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/cpu-rce.c b/bfd/cpu-rce.c
index 12b752a..e597e87 100644
--- a/bfd/cpu-rce.c
+++ b/bfd/cpu-rce.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index b85bf41..a5ad16b 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -17,7 +17,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index ef1b42e..a362262 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index dae2dd2..2916c46 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c
index b0962cf..a3dca6a 100644
--- a/bfd/elf32-sparc.c
+++ b/bfd/elf32-sparc.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/elflink.h b/bfd/elflink.h
index 554e14c..9ba2bed 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* ELF linker code. */
static boolean elf_link_add_object_symbols
diff --git a/bfd/filemode.c b/bfd/filemode.c
index d53cef1..fd790b3 100644
--- a/bfd/filemode.c
+++ b/bfd/filemode.c
@@ -13,7 +13,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include <sys/stat.h>
diff --git a/bfd/i386linux.c b/bfd/i386linux.c
index e5162c4..a40b5c5 100644
--- a/bfd/i386linux.c
+++ b/bfd/i386linux.c
@@ -1,5 +1,5 @@
/* BFD back-end for linux flavored i386 a.out binaries.
- Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PAGE_SIZE 4096
#define ZMAGIC_DISK_BLOCK_SIZE 1024
diff --git a/bfd/libelf.h b/bfd/libelf.h
index f48bbdb..463619c 100644
--- a/bfd/libelf.h
+++ b/bfd/libelf.h
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _LIBELF_H_
#define _LIBELF_H_ 1
diff --git a/bfd/linker.c b/bfd/linker.c
index 4ce41e9..5aae545 100644
--- a/bfd/linker.c
+++ b/bfd/linker.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/bfd/m68klynx.c b/bfd/m68klynx.c
index d8d696f..15309c2 100644
--- a/bfd/m68klynx.c
+++ b/bfd/m68klynx.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define BYTES_IN_WORD 4
#define N_SHARED_LIB(x) 0
diff --git a/bfd/mpw-make.in b/bfd/mpw-make.in
index a0d2b7f..a9c6780 100644
--- a/bfd/mpw-make.in
+++ b/bfd/mpw-make.in
@@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
DebugOptions =
# -d DEBUG_BFD_SEND
diff --git a/bfd/sunos.c b/bfd/sunos.c
index 427beb4..807f5b1 100644
--- a/bfd/sunos.c
+++ b/bfd/sunos.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGETNAME "a.out-sunos-big"
#define MY(OP) CAT(sunos_big_,OP)
@@ -486,7 +486,8 @@ sunos_canonicalize_dynamic_reloc (abfd, storage, syms)
p = (struct reloc_ext_external *) info->dynrel;
pend = p + info->dynrel_count;
for (; p < pend; p++, to++)
- NAME(aout,swap_ext_reloc_in) (abfd, p, to, syms);
+ NAME(aout,swap_ext_reloc_in) (abfd, p, to, syms,
+ info->dynsym_count);
}
else
{
@@ -496,7 +497,8 @@ sunos_canonicalize_dynamic_reloc (abfd, storage, syms)
p = (struct reloc_std_external *) info->dynrel;
pend = p + info->dynrel_count;
for (; p < pend; p++, to++)
- NAME(aout,swap_std_reloc_in) (abfd, p, to, syms);
+ NAME(aout,swap_std_reloc_in) (abfd, p, to, syms,
+ info->dynsym_count);
}
}
@@ -876,7 +878,7 @@ sunos_add_one_symbol (info, abfd, name, flags, section, value, string,
&& h->root.root.u.def.section->owner != NULL
&& (h->root.root.u.def.section->owner->flags & DYNAMIC) != 0)
|| (h->root.root.type == bfd_link_hash_common
- && ((h->root.root.u.c.section->owner->flags & DYNAMIC)
+ && ((h->root.root.u.c.p->section->owner->flags & DYNAMIC)
!= 0)))
{
/* The existing definition is from a dynamic object. We
diff --git a/binutils/gmalloc.c b/binutils/gmalloc.c
index 0468551..c259a5f 100644
--- a/binutils/gmalloc.c
+++ b/binutils/gmalloc.c
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
@@ -40,7 +40,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the GNU C Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* ANSI and traditional C compatibility macros
@@ -238,7 +238,7 @@ extern PTR EXFUN(memset, (PTR, int, size_t));
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
@@ -401,7 +401,7 @@ extern struct mstats EXFUN(mstats, (NOARGS));
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
@@ -600,7 +600,7 @@ DEFUN(free, (ptr), PTR ptr)
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
@@ -900,7 +900,7 @@ DEFUN(malloc, (size), size_t size)
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
@@ -1039,7 +1039,7 @@ DEFUN(realloc, (ptr, size), PTR ptr AND size_t size)
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
@@ -1083,7 +1083,7 @@ DEFUN(__default_morecore, (size), ptrdiff_t size)
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
The author may be reached (Email) at the address mike@ai.mit.edu,
or (US mail) as Mike Haertel c/o Free Software Foundation. */
diff --git a/binutils/mpw-make.in b/binutils/mpw-make.in
index c47084b..d31d1c4 100644
--- a/binutils/mpw-make.in
+++ b/binutils/mpw-make.in
@@ -29,7 +29,7 @@ o = :
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# srcdir = :
diff --git a/binutils/srconv.c b/binutils/srconv.c
index 9066f11..365d018 100644
--- a/binutils/srconv.c
+++ b/binutils/srconv.c
@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Steve Chamberlain (sac@cygnus.com)
diff --git a/binutils/testsuite/binutils-all/hppa/objdump.exp b/binutils/testsuite/binutils-all/hppa/objdump.exp
index d4c5a06..bc119af 100644
--- a/binutils/testsuite/binutils-all/hppa/objdump.exp
+++ b/binutils/testsuite/binutils-all/hppa/objdump.exp
@@ -12,7 +12,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# Please email any bugs, comments, and/or additions to this file to:
# bug-dejagnu@prep.ai.mit.edu
@@ -20,7 +20,7 @@
# This file was written by Rob Savoye <rob@cygnus.com>
# and rewritten by Ian Lance Taylor <ian@cygnus.com>
-if [istarget hppa*-*-*] then {
+if ![istarget hppa*-*-*] then {
return
}
@@ -39,7 +39,12 @@ if {![binutils_assemble $AS $srcdir$subdir/addendbug.s tmpdir/addendbug.o]} then
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -r tmpdir/addendbug.o"]
-set want "00000000 R_DP_RELATIVE\[ \]+is_idchar\\+0xffffffe0.*"
+if [istarget hppa*-*-*elf*] then {
+ set want "00000000 R_PARISC_DPREL21L\[ \]+is_idchar\\+0xffffffe0.*"
+} else {
+ set want "00000000 R_DP_RELATIVE\[ \]+is_idchar\\+0xffffffe0.*"
+}
+
if [regexp $want $got] then {
pass "addendbug test"
diff --git a/binutils/testsuite/binutils-all/nm.exp b/binutils/testsuite/binutils-all/nm.exp
new file mode 100644
index 0000000..2abc9df
--- /dev/null
+++ b/binutils/testsuite/binutils-all/nm.exp
@@ -0,0 +1,101 @@
+# Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and rewritten by Ian Lance Taylor <ian@cygnus.com>
+
+if {[which $NM] == 0} then {
+ perror "$NM does not exist"
+ return
+}
+
+send_user "Version [binutil_version $NM]"
+
+
+if {![binutils_assemble $AS $srcdir$subdir/bintest.s tmpdir/bintest.o]} then {
+ return
+}
+
+# Test nm with no arguments.
+
+# This test does not work correctly on ECOFF targets, because ECOFF
+# stores most symbols twice, which messes up the nm output.
+setup_xfail "alpha*-*-osf*" "alpha*-*-netware*"
+setup_xfail "mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
+setup_xfail "mips*-*-riscos*" "mips*-*-sysv3*"
+
+set got [binutils_run $NM "$NMFLAGS tmpdir/bintest.o"]
+
+if [info exists vars] then { unset vars }
+while {[regexp "(\[a-zA-Z\]) (\[a-z\]*_symbol)(.*)" $got all type symbol rest]} {
+ set vars($symbol) $type
+ set got $rest
+}
+
+if {![info exists vars(text_symbol)] \
+ || $vars(text_symbol) != "t" \
+ || ![info exists vars(data_symbol)] \
+ || $vars(data_symbol) != "d" \
+ || ![info exists vars(common_symbol)] \
+ || $vars(common_symbol) != "C" \
+ || ![info exists vars(external_symbol)] \
+ || $vars(external_symbol) != "U"} then {
+ fail "nm (no arguments)"
+} else {
+ pass "nm (no arguments)"
+}
+
+# Test nm -g
+
+set got [binutils_run $NM "$NMFLAGS -g tmpdir/bintest.o"]
+
+if [info exists vars] then { unset vars }
+while {[regexp "(\[a-z\]*_symbol)(.*)" $got all symbol rest]} {
+ set vars($symbol) 1
+ set got $rest
+}
+
+if {[info exists vars(text_symbol)] \
+ || [info exists vars(data_symbol)] \
+ || ![info exists vars(common_symbol)] \
+ || ![info exists vars(external_symbol)]} then {
+ fail "nm -g"
+} else {
+ pass "nm -g"
+}
+
+# Test nm -P
+
+# This test does not work correctly on ECOFF targets, because ECOFF
+# stores most symbols twice, which messes up the nm output.
+setup_xfail "alpha*-*-osf*" "alpha*-*-netware*"
+setup_xfail "mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
+setup_xfail "mips*-*-riscos*" "mips*-*-sysv3*"
+
+set got [binutils_run $NM "$NMFLAGS -P tmpdir/bintest.o"]
+
+set want "common_symbol C \[0\]*4.*data_symbol d \[0-9a-fA-F\]*.*external_symbol U.*text_symbol t \[0-9a-fA-F\]*"
+
+if [regexp $want $got] then {
+ pass "nm -P"
+} else {
+ fail "nm -P"
+}
+
+# There are certainly other tests that could be run.
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index 039b24b..9a32672 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -12,7 +12,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# Please email any bugs, comments, and/or additions to this file to:
# bug-dejagnu@prep.ai.mit.edu
diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp
index acf5360..c039dad 100644
--- a/binutils/testsuite/binutils-all/objdump.exp
+++ b/binutils/testsuite/binutils-all/objdump.exp
@@ -12,7 +12,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# Please email any bugs, comments, and/or additions to this file to:
# bug-dejagnu@prep.ai.mit.edu
@@ -32,6 +32,9 @@ send_user "Version [binutil_version $OBJDUMP]"
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -i"]
set cpus_expected "(a29k|alliant|alpha|arm|convex|h8|hppa|i386|i860|i960|m68k|m88k|mips|ns32k|powerpc|pyramid|romp|rs6000|sh|sparc|tahoe|vax|we32k|z8k)"
+# start-sanitize-arc
+set cpus_expected "(a29k|alliant|alpha|arc|arm|convex|h8|hppa|i386|i860|i960|m68k|m88k|mips|ns32k|powerpc|pyramid|romp|rs6000|sh|sparc|tahoe|vax|we32k|z8k)"
+# end-sanitize-arc
set want "BFD header file version.*srec.*header .* endian, data .* endian.*$cpus_expected"
@@ -43,6 +46,7 @@ if [regexp $want $got] then {
# The remaining tests require a test file.
+
if {![binutils_assemble $AS $srcdir$subdir/bintest.s tmpdir/bintest.o]} then {
return
}
@@ -63,15 +67,16 @@ if ![regexp $want $got] then {
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h tmpdir/bintest.o"]
-set want "tmpdir/bintest.o:\[ \]*file format.*SECTION\[ ]*\[0-9\]+\[ \]*\\\[\[^\]\]*(text|TEXT)\[^\]\]*\\\]\[ :\]*size\[ \]*(\[0-9a-fA-F\]+)\[ \]*.*SECTION\[ \]*\[0-9\]+\[ \]*\\\[\[^\]\]*(data|DATA)\[^\]\]*\\\]\[ :\]*size\[ \]*(\[0-9a-fA-F\]+)\[ \]*"
+set want "tmpdir/bintest.o:\[ \]*file format.*SECTION\[ ]*\[0-9\]+\[ \]*\\\[\[^\]\]*(text|TEXT|CODE)\[^\]\]*\\\]\[ :\]*size\[ \]*(\[0-9a-fA-F\]+)\[ \]*.*SECTION\[ \]*\[0-9\]+\[ \]*\\\[\[^\]\]*(data|DATA)\[^\]\]*\\\]\[ :\]*size\[ \]*(\[0-9a-fA-F\]+)\[ \]*"
if ![regexp $want $got all text_name text_size data_name data_size] then {
fail "objdump -h"
} else {
verbose "text size is $text_size"
verbose "data size is $data_size"
- if {$text_size < 8 || $data_size < 4} then {
- fail "objdump -h (sizes too small)"
+ if {[expr "0x$text_size"] < 8 || [expr "0x$data_size"] < 4} then {
+ send_log "sizes too small\n"
+ fail "objdump -h"
} else {
pass "objdump -h"
}
@@ -100,7 +105,7 @@ if {![info exists vars(text_symbol)] \
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -r tmpdir/bintest.o"]
-set want "tmpdir/bintest.o:\[ \]*file format.*RELOCATION RECORDS FOR \\\[\[^\]\]*(text|TEXT)\[^\]\]*\\\].*external_symbol"
+set want "tmpdir/bintest.o:\[ \]*file format.*RELOCATION RECORDS FOR \\\[\[^\]\]*(text|TEXT|CODE)\[^\]\]*\\\].*external_symbol"
if [regexp $want $got] then {
pass "objdump -r"
@@ -112,7 +117,7 @@ if [regexp $want $got] then {
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -s tmpdir/bintest.o"]
-set want "tmpdir/bintest.o:\[ \]*file format.*Contents.*(text|TEXT)\[^0-9\]*\[ \]*\[0-9a-fA-F\]*\[ \]*(00000001|01000000).*Contents.*(data|DATA)\[^0-9\]*\[ \]*\[0-9a-fA-F\]*\[ \]*(00000002|02000000)"
+set want "tmpdir/bintest.o:\[ \]*file format.*Contents.*(text|TEXT|CODE)\[^0-9\]*\[ \]*\[0-9a-fA-F\]*\[ \]*(00000001|01000000).*Contents.*(data|DATA)\[^0-9\]*\[ \]*\[0-9a-fA-F\]*\[ \]*(00000002|02000000)"
if [regexp $want $got] then {
pass "objdump -s"
diff --git a/binutils/testsuite/binutils-all/size.exp b/binutils/testsuite/binutils-all/size.exp
new file mode 100644
index 0000000..1a07dd9
--- /dev/null
+++ b/binutils/testsuite/binutils-all/size.exp
@@ -0,0 +1,70 @@
+# Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and rewritten by Ian Lance Taylor <ian@cygnus.com>
+
+if {[which $SIZE] == 0} then {
+ perror "$SIZE does not exist"
+ return
+}
+
+send_user "Version [binutil_version $SIZE]"
+
+
+if {![binutils_assemble $AS $srcdir$subdir/bintest.s tmpdir/bintest.o]} then {
+ return
+}
+
+set dec "\[0-9\]+"
+set hex "\[0-9a-fA-F\]+"
+
+# Test size with no arguments
+
+set got [binutils_run $SIZE "$SIZEFLAGS tmpdir/bintest.o"]
+
+set want "($dec)\[ \]+($dec)\[ \]+($dec)\[ \]+($dec)\[ \]+($hex)\[ \]+tmpdir/bintest.o"
+
+if ![regexp $want $got all text data bss dtot hextot] then {
+ fail "size (no arguments)"
+} else {
+ if {$text < 8 || $data < 4} then {
+ fail "size (no arguments)"
+ } else {
+ pass "size (no arguments)"
+ }
+}
+
+# Test size -A
+
+set got [binutils_run $SIZE "$SIZEFLAGS -A tmpdir/bintest.o"]
+
+set want "tmpdir/bintest.o.*(text|TEXT)\[^\n\r\]*\[ \]($dec)\[ \]+$dec.*(data|DATA)\[^\n\r\]*\[ \]($dec)\[ \]+$dec"
+
+if ![regexp $want $got all textname textsize dataname datasize] then {
+ fail "size -A"
+} else {
+ verbose "text size: $textsize"
+ verbose "data size: $datasize"
+ if {$textsize < 8 || $datasize < 4} then {
+ fail "size -A"
+ } else {
+ pass "size -A"
+ }
+}
diff --git a/binutils/testsuite/config/default.exp b/binutils/testsuite/config/default.exp
index 4f4d7b3..6de8538 100644
--- a/binutils/testsuite/config/default.exp
+++ b/binutils/testsuite/config/default.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1988, 1990, 1991, 1992 Free Software Foundation, Inc.
+# Copyright (C) 1993, 1994 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -12,7 +12,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# Please email any bugs, comments, and/or additions to this file to:
# bug-dejagnu@prep.ai.mit.edu
@@ -20,32 +20,62 @@
# This file was written by Rob Savoye. (rob@cygnus.com)
load_lib util-defs.exp
+load_lib utils-lib.exp
+
+if ![info exists AS] then {
+ set AS [findfile $base_dir/../gas/as.new $base_dir/../gas/as.new [transform as]]
+}
+if ![info exists ASFLAGS] then {
+ set ASFLAGS ""
+}
-global NM
if ![info exists NM] then {
- set NM [findfile $base_dir/../nm]
+ set NM [findfile $base_dir/nm.new $base_dir/nm.new [transform nm]]
}
-global NMFLAGS
if ![info exists NMFLAGS] then {
set NMFLAGS ""
}
-global SIZE
+
if ![info exists SIZE] then {
- set SIZE [findfile $base_dir/../size]
+ set SIZE [findfile $base_dir/size]
}
-global SIZEFLAGS
if ![info exists SIZEFLAGS] then {
set SIZEFLAGS ""
}
-global OBJDUMP
+
if ![info exists OBJDUMP] then {
- set OBJDUMP [findfile $base_dir/../objdump]
+ set OBJDUMP [findfile $base_dir/objdump]
}
-global OBJDUMPFLAGS
if ![info exists OBJDUMPFLAGS] then {
set OBJDUMPFLAGS ""
}
+if ![info exists OBJCOPY] then {
+ set OBJCOPY [findfile $base_dir/objcopy]
+}
+if ![info exists OBJCOPYFLAGS] then {
+ set OBJCOPYFLAGS ""
+}
+
+if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
+
+#
+# binutils_run
+# run a program, returning the output
+# sets binutils_run_failed if the program does not exist
+#
+proc binutils_run { prog progargs } {
+ default_binutils_run $prog $progargs
+}
+
+#
+# binutils_assemble
+# assemble a file
+#
+proc binutils_assemble { as source object } {
+ default_binutils_assemble $as $source $object
+}
+
#
# add some basic error trapping. These mostly catch programming error's
# within the tests themselves
@@ -54,6 +84,3 @@ expect_before {
buffer_full { perror "internal buffer is full." }
"can't open '*'" { perror "Can't open test file." }
}
-
-
-
diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp
new file mode 100644
index 0000000..2eb6821
--- /dev/null
+++ b/binutils/testsuite/lib/utils-lib.exp
@@ -0,0 +1,116 @@
+# Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and extended by Ian Lance Taylor <ian@cygnus.com>
+
+proc binutil_version { prog } {
+ if {[which $prog] == 0} then {
+ perror "$prog can't be run, file not found."
+ return ""
+ }
+ catch "exec $prog --version" tmp
+ # Should find a way to discard constant parts, keep whatever's
+ # left, so the version string could be almost anything at all...
+ regexp "version (cygnus-|)\[-0-9.a-zA-Z-\]+" $tmp version
+ if ![info exists version] then {
+ return "[which $prog] (no version number)\n"
+ }
+ set tmp $version
+ return "[which $prog] $version\n"
+}
+
+#
+# default_binutils_run
+# run a program, returning the output
+# sets binutils_run_failed if the program does not exist
+#
+proc default_binutils_run { prog progargs } {
+ global binutils_run_failed
+
+ set binutils_run_failed 0
+
+ if {[which $prog] == 0} then {
+ perror "$prog does not exist"
+ set binutils_run_failed 1
+ return ""
+ }
+
+ send_log "$prog $progargs\n"
+ verbose "$prog $progargs"
+
+ # This used to be
+ # catch "exec $prog $progargs" exec_output
+ # but that would evaluate $progargs twice, which would fail if
+ # any arguments started with `$'. This is a dismal hack to avoid
+ # this problem. I tried using
+ # catch { exec $prog $progargs } exec_output
+ # but that failed because $progargs was not split into words by
+ # exec. I don't know if this operation can be done correctly. No
+ # matter how hard I try, I can not convince myself that TCL is a
+ # language.
+ regsub -all "\\$" $progargs "\\$" progq
+ catch "exec $prog $progq" exec_output
+ if {![string match "" $exec_output]} then {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ }
+ return $exec_output
+}
+
+#
+# default_binutils_assemble
+# assemble a file
+#
+proc default_binutils_assemble { as source object } {
+ global ASFLAGS
+ global srcdir
+
+ if {[which $as] == 0} then {
+ perror "$as does not exist"
+ return 0
+ }
+
+ if ![info exists ASFLAGS] { set ASFLAGS "" }
+
+ # The HPPA assembler syntax is a little different than most, to make
+ # the test source file assemble we need to run it through sed.
+ #
+ # This is a hack in that it won't scale well if other targets need
+ # similar transformations to assemble. We'll generalize the hack
+ # if/when other targets need similar handling.
+ if [istarget "hppa*-*-*" ] then {
+ send_log "sed -f $srcdir/config/hppa.sed < $source | $as $ASFLAGS -o $object\n"
+ verbose "sed -f $srcdir/config/hppa.sed < $source | $as $ASFLAGS -o $object"
+ catch "exec sed -f $srcdir/config/hppa.sed < $source | $as $ASFLAGS -o $object" exec_output
+ } else {
+ send_log "$as $ASFLAGS -o $object $source\n"
+ verbose "$as $ASFLAGS -o $object $source"
+ catch "exec $as $ASFLAGS -o $object $source" exec_output
+ }
+
+ if [string match "" $exec_output] then {
+ return 1
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ perror "$source: assembly failed"
+ return 0
+ }
+}
diff --git a/include/bfdlink.h b/include/bfdlink.h
index 193e828..4bcce0b 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef BFDLINK_H
#define BFDLINK_H
diff --git a/include/opcode/a29k.h b/include/opcode/a29k.h
index 0204fa2..002e127 100644
--- a/include/opcode/a29k.h
+++ b/include/opcode/a29k.h
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
struct a29k_opcode {
/* Name of the instruction. */
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 17fbf51..a3cb97d 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -15,7 +15,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
srcdir = .
@@ -196,7 +196,7 @@ LIBIBERTY = ../libiberty/libiberty.a
ALL_EMULATIONS = ea29k.o ealpha.o earmaoutl.o earmoutb.o \
ecoff_sparc.o eebmon29k.o \
- eelf32_sparc.o eelf32bmip.o eelf32lmip.o eelf32ppc.o eelf32ppcle.o \
+ eelf32_sparc.o eelf32bmip.o eelf32lmip.o eelf32ppc.o eelf32lppc.o \
eelf64_sparc.o eelf_i386.o egld960.o ego32.o eh8300.o \
eh8300h.o eh8500.o eh8500b.o eh8500c.o eh8500m.o eh8500s.o \
ehp300bsd.o ehp3hpux.o ehppaelf.o ei386aout.o ei386bsd.o \
@@ -319,6 +319,12 @@ ei386go32.c: $(srcdir)/emulparams/i386go32.sh \
ei386mach.c: $(srcdir)/emulparams/i386mach.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386mach
+ei386moss.c: $(srcdir)/emulparams/i386moss.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} i386moss
+ei386msdos.c: $(srcdir)/emulparams/i386msdos.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386msdos.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} i386msdos
eebmon29k.c: $(srcdir)/emulparams/ebmon29k.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/ebmon29k.sc ${GEN_DEPENDS}
${GENSCRIPTS} ebmon29k
@@ -427,9 +433,9 @@ esparclynx.c: $(srcdir)/emulparams/sparclynx.sh \
eelf32ppc.c: $(srcdir)/emulparams/elf32ppc.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppc
-eelf32ppcle.c: $(srcdir)/emulparams/elf32ppcle.sh \
+eelf32lppc.c: $(srcdir)/emulparams/elf32lppc.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
- ${GENSCRIPTS} elf32ppcle
+ ${GENSCRIPTS} elf32lppc
eriscix.c: $(srcdir)/emulparams/riscix.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} riscix
diff --git a/ld/config.h b/ld/config.h
index 4ca37dc..ae16e88 100644
--- a/ld/config.h
+++ b/ld/config.h
@@ -16,7 +16,7 @@
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Look in this environment name for the linker to pretend to be */
#define EMULATION_ENVIRON "LDEMULATION"
diff --git a/ld/emultempl/armpe.em b/ld/emultempl/armpe.em
index bd9dfaa..4e29a0b 100644
--- a/ld/emultempl/armpe.em
+++ b/ld/emultempl/armpe.em
@@ -31,7 +31,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_armpe
@@ -227,4 +227,4 @@ struct ld_emulation_xfer_struct ld_armpe_emulation =
"armpe",
"pei-arm"
};
-EOF \ No newline at end of file
+EOF
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index bc84a8f..b3cb74d 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -22,7 +22,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_${EMULATION_NAME}
diff --git a/ld/emultempl/i386pe.em b/ld/emultempl/i386pe.em
index 9095ca5..4b18cbd 100644
--- a/ld/emultempl/i386pe.em
+++ b/ld/emultempl/i386pe.em
@@ -31,7 +31,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_i386pe
diff --git a/ld/emultempl/m88kbcs.em b/ld/emultempl/m88kbcs.em
index 1d1f05a..9f04936 100644
--- a/ld/emultempl/m88kbcs.em
+++ b/ld/emultempl/m88kbcs.em
@@ -21,7 +21,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_${EMULATION_NAME}
diff --git a/ld/emultempl/sunos.em b/ld/emultempl/sunos.em
index d81279b..e18b2fc 100644
--- a/ld/emultempl/sunos.em
+++ b/ld/emultempl/sunos.em
@@ -22,7 +22,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_${EMULATION_NAME}
@@ -100,6 +100,7 @@ gld${EMULATION_NAME}_find_so (inp)
char *alc;
int max_maj, max_min;
char *found;
+ boolean found_static;
struct stat st;
if (! inp->search_dirs_flag
@@ -115,6 +116,7 @@ gld${EMULATION_NAME}_find_so (inp)
len = strlen (filename);
else
{
+ force_maj = atoi (dot + 1);
len = dot - filename;
alc = (char *) alloca (len + 1);
strncpy (alc, filename, len);
@@ -123,6 +125,7 @@ gld${EMULATION_NAME}_find_so (inp)
}
found = NULL;
+ found_static = false;
max_maj = max_min = 0;
for (search = search_head; search != NULL; search = search->next)
{
@@ -138,8 +141,17 @@ gld${EMULATION_NAME}_find_so (inp)
int found_maj, found_min;
if (strncmp (entry->d_name, "lib", 3) != 0
- || strncmp (entry->d_name + 3, inp->filename, len) != 0
- || strncmp (entry->d_name + 3 + len, ".so", 3) != 0)
+ || strncmp (entry->d_name + 3, inp->filename, len) != 0)
+ continue;
+
+ if (dot == NULL
+ && strncmp (entry->d_name + 3 + len, ".a", 2) == 0)
+ {
+ found_static = true;
+ continue;
+ }
+
+ if (strncmp (entry->d_name + 3 + len, ".so", 3) != 0)
continue;
/* We've found a .so file. Work out the major and minor
@@ -176,7 +188,7 @@ gld${EMULATION_NAME}_find_so (inp)
closedir (dir);
- if (found != NULL)
+ if (found != NULL || found_static)
break;
}
@@ -359,7 +371,7 @@ gld${EMULATION_NAME}_before_allocation ()
if (sdyn != NULL)
h->u.def.section = sdyn;
else
- h->u.def.section = &bfd_abs_section;
+ h->u.def.section = bfd_abs_section_ptr;
}
}
@@ -555,6 +567,7 @@ struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
syslib_default,
hll_default,
after_parse_default,
+ after_open_default,
after_allocation_default,
set_output_arch_default,
ldemul_default_target,
@@ -562,7 +575,8 @@ struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
gld${EMULATION_NAME}_get_script,
"${EMULATION_NAME}",
"${OUTPUT_FORMAT}",
- 0, /* finish */
- gld${EMULATION_NAME}_create_output_section_statements
+ NULL, /* finish */
+ gld${EMULATION_NAME}_create_output_section_statements,
+ NULL /* open_dynamic_library */
};
EOF
diff --git a/ld/ld.h b/ld/ld.h
index d23633e..048734c 100644
--- a/ld/ld.h
+++ b/ld/ld.h
@@ -16,7 +16,7 @@
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef LD_H
#define LD_H
@@ -58,6 +58,17 @@ typedef struct
/* Runtime library search path from the -rpath argument. */
char *rpath;
+
+ /* Big or little endian as set on command line. */
+ enum { ENDIAN_UNSET = 0, ENDIAN_BIG, ENDIAN_LITTLE } endian;
+
+ /* If true, export all symbols in the dynamic symbol table of an ELF
+ executable. */
+ boolean export_dynamic;
+
+ /* If true, build MIPS embedded PIC relocation tables in the output
+ file. */
+ boolean embedded_relocs;
} args_type;
extern args_type command_line;
@@ -92,6 +103,9 @@ typedef struct
FILE *map_file;
boolean stats;
+
+ int split_by_reloc;
+ boolean split_by_file;
} ld_config_type;
extern ld_config_type config;
diff --git a/ld/ldfile.c b/ld/ldfile.c
index f084d36..5fd83ee 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -14,7 +14,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*
ldfile.c
@@ -33,29 +33,27 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "ldmain.h"
#include "ldgram.h"
#include "ldlex.h"
+#include "ldemul.h"
#include <ctype.h>
-char *ldfile_input_filename;
+const char *ldfile_input_filename;
+boolean ldfile_assumed_script = false;
const char *ldfile_output_machine_name = "";
unsigned long ldfile_output_machine;
enum bfd_architecture ldfile_output_architecture;
search_dirs_type *search_head;
-/* start-sanitize-mpw */
#ifndef MPW
-/* end-sanitize-mpw */
#ifdef VMS
char *slash = "";
#else
char *slash = "/";
#endif
-/* start-sanitize-mpw */
#else /* MPW */
/* The MPW path char is a colon. */
char *slash = ":";
#endif /* MPW */
-/* end-sanitize-mpw */
/* LOCAL */
@@ -70,11 +68,9 @@ typedef struct search_arch
static search_arch_type *search_arch_head;
static search_arch_type **search_arch_tail_ptr = &search_arch_head;
-static bfd *cached_bfd_openr PARAMS ((const char *attempt,
- lang_input_statement_type *entry));
-static bfd *open_a PARAMS ((char *arch, lang_input_statement_type *entry,
- char *lib, char *suffix));
-static FILE *try_open PARAMS ((char *name, char *exten));
+static boolean try_open_bfd PARAMS ((const char *attempt,
+ lang_input_statement_type *entry));
+static FILE *try_open PARAMS ((const char *name, const char *exten));
void
ldfile_add_library_path (name, cmdline)
@@ -91,85 +87,93 @@ ldfile_add_library_path (name, cmdline)
search_tail_ptr = &new->next;
}
+/* Try to open a BFD for a lang_input_statement. */
-static bfd *
-cached_bfd_openr(attempt,entry)
+static boolean
+try_open_bfd (attempt, entry)
const char *attempt;
- lang_input_statement_type *entry;
+ lang_input_statement_type *entry;
{
- entry->the_bfd = bfd_openr(attempt, entry->target);
- if (trace_file_tries == true ) {
+ entry->the_bfd = bfd_openr (attempt, entry->target);
+
+ if (trace_file_tries)
info_msg ("attempt to open %s %s\n", attempt,
- (entry->the_bfd == (bfd *)NULL) ? "failed" : "succeeded" );
- }
- return entry->the_bfd;
+ entry->the_bfd == NULL ? "failed" : "succeeded");
+
+ if (entry->the_bfd != NULL)
+ return true;
+ else
+ return false;
}
-static bfd *
-open_a(arch, entry, lib, suffix)
- char *arch;
+/* Search for and open the file specified by ENTRY. If it is an
+ archive, use ARCH, LIB and SUFFIX to modify the file name. */
+
+boolean
+ldfile_open_file_search (arch, entry, lib, suffix)
+ const char *arch;
lang_input_statement_type *entry;
- char *lib;
- char *suffix;
+ const char *lib;
+ const char *suffix;
{
- bfd*desc;
- search_dirs_type *search ;
+ search_dirs_type *search;
/* If this is not an archive, try to open it in the current
directory first. */
if (! entry->is_archive)
{
- desc = cached_bfd_openr (entry->filename, entry);
- if (desc != NULL)
- return desc;
+ if (try_open_bfd (entry->filename, entry))
+ return true;
}
for (search = search_head;
search != (search_dirs_type *)NULL;
search = search->next)
{
- char buffer[1000];
char *string;
- if (entry->is_archive == true) {
- sprintf(buffer,
- "%s%s%s%s%s%s",
- search->name,
- slash,
- lib,
- entry->filename, arch, suffix);
- }
- else {
- if (entry->filename[0] == '/' || entry->filename[0] == '.') {
- strcpy(buffer, entry->filename);
- } else {
- sprintf(buffer,"%s%s%s",search->name, slash, entry->filename);
- }
- }
- string = buystring(buffer);
- desc = cached_bfd_openr (string, entry);
- if (desc)
+
+ string = (char *) xmalloc (strlen (search->name)
+ + strlen (slash)
+ + strlen (lib)
+ + strlen (entry->filename)
+ + strlen (arch)
+ + strlen (suffix)
+ + 1);
+
+ if (entry->is_archive)
+ sprintf (string, "%s%s%s%s%s%s", search->name, slash,
+ lib, entry->filename, arch, suffix);
+ else if (entry->filename[0] == '/' || entry->filename[0] == '.')
+ strcpy (string, entry->filename);
+ else
+ sprintf (string, "%s%s%s", search->name, slash, entry->filename);
+
+ if (try_open_bfd (string, entry))
{
entry->filename = string;
- entry->the_bfd = desc;
- return desc;
+ return true;
}
- free(string);
+
+ free (string);
}
- return (bfd *)NULL;
+
+ return false;
}
-/* Open the input file specified by 'entry', and return a descriptor.
- The open file is remembered; if the same file is opened twice in a row,
- a new open is not actually done. */
+/* Open the input file specified by ENTRY. */
void
ldfile_open_file (entry)
lang_input_statement_type *entry;
{
- ASSERT (entry->the_bfd == NULL);
+ if (entry->the_bfd != NULL)
+ return;
if (! entry->search_dirs_flag)
- entry->the_bfd = cached_bfd_openr (entry->filename, entry);
+ {
+ if (try_open_bfd (entry->filename, entry))
+ return;
+ }
else
{
search_arch_type *arch;
@@ -181,55 +185,58 @@ ldfile_open_file (entry)
{
if (config.dynamic_link)
{
- /* FIXME: Perhaps we will sometimes want something other
- than .so. */
- if (open_a (arch->name, entry, "lib", ".so") != (bfd *) NULL)
+ if (ldemul_open_dynamic_archive (arch->name, entry))
return;
}
- if (open_a (arch->name, entry, "lib", ".a") != (bfd *) NULL)
+ if (ldfile_open_file_search (arch->name, entry, "lib", ".a"))
return;
#ifdef VMS
- if (open_a (arch->name, entry, ":lib", ".a") != (bfd *) NULL)
+ if (ldfile_open_file_search (arch->name, entry, ":lib", ".a"))
return;
#endif
}
}
- if (entry->the_bfd == NULL)
- einfo("%F%P: cannot open %s: %E\n", entry->local_sym_name);
+ einfo("%F%P: cannot open %s: %E\n", entry->local_sym_name);
}
/* Try to open NAME; if that fails, try NAME with EXTEN appended to it. */
static FILE *
-try_open(name, exten)
- char *name;
- char *exten;
+try_open (name, exten)
+ const char *name;
+ const char *exten;
{
FILE *result;
char buff[1000];
- result = fopen(name, "r");
- if (trace_file_tries == true) {
- if (result == (FILE *)NULL) {
- info_msg ("cannot find ");
+ result = fopen (name, "r");
+ if (trace_file_tries)
+ {
+ if (result == NULL)
+ info_msg ("cannot find script file ");
+ else
+ info_msg ("opened script file ");
+ info_msg ("%s\n",name);
}
- info_msg ("%s\n",name);
- }
- if (result != (FILE *)NULL) {
+
+ if (result != NULL)
return result;
- }
- if (*exten) {
- sprintf(buff, "%s%s", name, exten);
- result = fopen(buff, "r");
- if (trace_file_tries == true) {
- if (result == (FILE *)NULL) {
- info_msg ("cannot find ");
- }
- info_msg ("%s\n", buff);
+ if (*exten)
+ {
+ sprintf (buff, "%s%s", name, exten);
+ result = fopen (buff, "r");
+ if (trace_file_tries)
+ {
+ if (result == NULL)
+ info_msg ("cannot find script file ");
+ else
+ info_msg ("opened script file ");
+ info_msg ("%s\n", buff);
+ }
}
- }
+
return result;
}
@@ -237,9 +244,9 @@ try_open(name, exten)
specified with -L, without and with EXTEND apppended. */
FILE *
-ldfile_find_command_file(name, extend)
-char *name;
-char *extend;
+ldfile_find_command_file (name, extend)
+ const char *name;
+ const char *extend;
{
search_dirs_type *search;
FILE *result;
@@ -261,8 +268,8 @@ char *extend;
}
void
-ldfile_open_command_file(name)
-char *name;
+ldfile_open_command_file (name)
+ const char *name;
{
FILE *ldlex_input_stack;
ldlex_input_stack = ldfile_find_command_file(name, "");
@@ -274,6 +281,7 @@ char *name;
lex_push_file(ldlex_input_stack, name);
ldfile_input_filename = name;
+ lineno = 1;
had_script = true;
}
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 3c9350d..352f0f1 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
@@ -1872,6 +1872,7 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
}
dot += size;
output_section_statement->bfd_section->_raw_size += size;
+ output_section_statement->bfd_section->flags |= SEC_HAS_CONTENTS;
}
break;
@@ -2781,7 +2782,7 @@ lang_add_entry (name, cmdline)
entry_symbol = name;
from_cmdline = cmdline;
}
-#ifdef 0 /* WINDOWS_NT */
+#if 0
/* don't do this yet. It seems to work (the executables run), but the
image created is very different from what I was getting before indicating
that something else is being pulled in. When everything else is working,
diff --git a/ld/ldlang.h b/ld/ldlang.h
index a4e3ca7..5e05017 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -1,5 +1,5 @@
/* ldlang.h - linker command language support
- Copyright 1991, 1992, 1993 Free Software Foundation, Inc.
+ Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -15,7 +15,7 @@
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
- the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef LDLANG_H
#define LDLANG_H
@@ -68,7 +68,8 @@ typedef struct lang_statement_header_struct
lang_target_statement_enum,
lang_output_statement_enum,
lang_padding_statement_enum,
-
+ lang_group_statement_enum,
+
lang_afile_asection_pair_statement_enum,
lang_constructors_statement_enum
} type;
@@ -159,7 +160,7 @@ typedef struct
bfd_reloc_code_real_type reloc;
/* Reloc howto structure. */
- const reloc_howto_type *howto;
+ reloc_howto_type *howto;
/* Section to generate reloc against. Exactly one of section and
name must be NULL. */
@@ -270,6 +271,17 @@ typedef struct
fill_type fill;
} lang_padding_statement_type;
+/* A group statement collects a set of libraries together. The
+ libraries are searched multiple times, until no new undefined
+ symbols are found. The effect is to search a group of libraries as
+ though they were a single library. */
+
+typedef struct
+{
+ lang_statement_header_type header;
+ lang_statement_list_type children;
+} lang_group_statement_type;
+
typedef union lang_statement_union
{
lang_statement_header_type header;
@@ -289,6 +301,7 @@ typedef union lang_statement_union
lang_object_symbols_statement_type object_symbols_statement;
lang_fill_statement_type fill_statement;
lang_padding_statement_type padding_statement;
+ lang_group_statement_type group_statement;
} lang_statement_union_type;
extern lang_output_section_statement_type *abs_output_section;
@@ -331,8 +344,15 @@ extern void lang_abs_symbol_at_beginning_of PARAMS ((const char *,
extern void lang_statement_append PARAMS ((struct statement_list *,
union lang_statement_union *,
union lang_statement_union **));
+extern void lang_for_each_input_file
+ PARAMS ((void (*dothis) (lang_input_statement_type *)));
extern void lang_for_each_file
PARAMS ((void (*dothis) (lang_input_statement_type *)));
+extern bfd_vma lang_do_assignments
+ PARAMS ((lang_statement_union_type * s,
+ lang_output_section_statement_type *output_section_statement,
+ fill_type fill,
+ bfd_vma dot));
#define LANG_FOR_EACH_INPUT_STATEMENT(statement) \
extern lang_statement_list_type file_chain; \
@@ -352,11 +372,12 @@ extern void lang_add_keepsyms_file PARAMS ((const char *filename));
extern lang_output_section_statement_type *
lang_output_section_statement_lookup PARAMS ((const char * const name));
extern void ldlang_add_undef PARAMS ((const char *const name));
-extern void lang_add_output_format PARAMS ((const char *, int from_script));
+extern void lang_add_output_format PARAMS ((const char *, const char *,
+ const char *, int from_script));
extern void lang_list_init PARAMS ((lang_statement_list_type*));
extern void lang_add_data PARAMS ((int type, union etree_union *));
extern void lang_add_reloc
- PARAMS ((bfd_reloc_code_real_type reloc, const reloc_howto_type *howto,
+ PARAMS ((bfd_reloc_code_real_type reloc, reloc_howto_type *howto,
asection *section, const char *name, union etree_union *addend));
extern void lang_for_each_statement
PARAMS ((void (*func) (lang_statement_union_type *)));
@@ -366,5 +387,11 @@ extern bfd_vma lang_size_sections
lang_output_section_statement_type *output_section_statement,
lang_statement_union_type **prev, fill_type fill,
bfd_vma dot, boolean relax));
+extern void lang_enter_group PARAMS ((void));
+extern void lang_leave_group PARAMS ((void));
+extern void wild_doit
+ PARAMS ((lang_statement_list_type *ptr, asection *section,
+ lang_output_section_statement_type *output,
+ lang_input_statement_type *file));
#endif
diff --git a/ld/ldmain.c b/ld/ldmain.c
index dd7c6ae..a0f5eb5 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
diff --git a/ld/lexsup.c b/ld/lexsup.c
index f361eae..6557f05 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GLD; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
diff --git a/ld/mpw-emipsidt.c b/ld/mpw-emipsidt.c
index 2a791bf..498f688 100644
--- a/ld/mpw-emipsidt.c
+++ b/ld/mpw-emipsidt.c
@@ -18,7 +18,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_mipsidt
diff --git a/ld/mpw-esh.c b/ld/mpw-esh.c
index 6aef853..dac5c79 100644
--- a/ld/mpw-esh.c
+++ b/ld/mpw-esh.c
@@ -18,7 +18,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_sh
diff --git a/ld/mpw-make.in b/ld/mpw-make.in
index 0e1361c..cb325e3 100644
--- a/ld/mpw-make.in
+++ b/ld/mpw-make.in
@@ -29,7 +29,7 @@ o = :
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# srcdir = :
diff --git a/ld/testsuite/config/default.exp b/ld/testsuite/config/default.exp
index 4558ebc..24c04b8 100644
--- a/ld/testsuite/config/default.exp
+++ b/ld/testsuite/config/default.exp
@@ -13,7 +13,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#
# Written by Jeffrey Wheat (cassidy@cygnus.com)
#
@@ -30,6 +30,10 @@ if ![info exists nm] then {
set nm [findfile $base_dir/../binutils/nm.new $base_dir/../binutils/nm.new [transform nm]]
}
+if ![info exists objdump] then {
+ set objdump [findfile $base_dir/../binutils/objdump]
+}
+
if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
# load the utility procedures
diff --git a/ld/testsuite/ld-bootstrap/bootstrap.exp b/ld/testsuite/ld-bootstrap/bootstrap.exp
new file mode 100644
index 0000000..c149744
--- /dev/null
+++ b/ld/testsuite/ld-bootstrap/bootstrap.exp
@@ -0,0 +1,81 @@
+# Expect script for LD Bootstrap Tests
+# Copyright (C) 1993,1994,1995 Free Software Foundation
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#
+# Written by Jeffrey Wheat (cassidy@cygnus.com)
+# Rewritten by Ian Lance Taylor (ian@cygnus.com)
+#
+
+# Make sure that ld can bootstrap itself.
+
+# This test can only be run if ld generates native executables.
+if ![isnative] {
+ return
+}
+
+# Bootstrap ld. First link the object files together using -r, in
+# order to test -r. Then link the result into an executable, ld1, to
+# really test -r. Use ld1 to link a fresh ld, ld2. Use ld2 to link a
+# new ld, ld3. ld2 and ld3 should be identical.
+
+foreach flags {"" "--static" "--traditional-format" "--no-keep-memory"} {
+ if {"$flags" != ""} {
+ set testname "bootstrap with $flags"
+ } else {
+ set testname "bootstrap"
+ }
+
+ # This test can only be run if we have the ld build directory,
+ # since we need the object files.
+ if {$ld != "$objdir/ld.new"} {
+ untested $testname
+ continue
+ }
+
+ if ![ld_relocate $ld tmpdir/ld-partial.o "$flags $OFILES"] {
+ fail $testname
+ continue
+ }
+
+ if ![ld_link $ld tmpdir/ld1 "$flags tmpdir/ld-partial.o $BFDLIB $LIBIBERTY"] {
+ fail $testname
+ continue
+ }
+
+ if ![ld_link tmpdir/ld1 tmpdir/ld2 "$flags $OFILES $BFDLIB $LIBIBERTY"] {
+ fail $testname
+ continue
+ }
+
+ if ![ld_link tmpdir/ld2 tmpdir/ld3 "$flags $OFILES $BFDLIB $LIBIBERTY"] {
+ fail $testname
+ continue
+ }
+
+ send_log "cmp tmpdir/ld2 tmpdir/ld3\n"
+ verbose "cmp tmpdir/ld2 tmpdir/ld3"
+ catch "exec cmp tmpdir/ld2 tmpdir/ld3" exec_output
+ set exec_output [prune_system_crud $host_triplet $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass $testname
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+
+ fail $testname
+ }
+}
diff --git a/ld/testsuite/ld-cdtest/cdtest.exp b/ld/testsuite/ld-cdtest/cdtest.exp
new file mode 100644
index 0000000..68be616
--- /dev/null
+++ b/ld/testsuite/ld-cdtest/cdtest.exp
@@ -0,0 +1,94 @@
+# Expect script for LD cdtest Tests
+# Copyright (C) 1993,1994,1995 Free Software Foundation
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+#
+# Written by Jeffrey Wheat (cassidy@cygnus.com)
+# Rewritten by Ian Lance Taylor (ian@cygnus.com)
+#
+
+# Make sure that constructors are handled correctly.
+
+set test1 "cdtest"
+set test2 "cdtest with -Ur"
+
+# This test requires running the executable generated by ld.
+if ![isnative] {
+ return
+}
+
+if { ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir$subdir/cdtest-foo.cc tmpdir/cdtest-foo.o]
+ || ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir$subdir/cdtest-bar.cc tmpdir/cdtest-bar.o]
+ || ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir$subdir/cdtest-main.cc tmpdir/cdtest-main.o] } {
+ unresolved $test1
+ unresolved $test2
+ return
+}
+
+if ![ld_link $ld tmpdir/cdtest {tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] {
+ fail $test1
+} else {
+ send_log "tmpdir/cdtest >tmpdir/cdtest.out\n"
+ verbose "tmpdir/cdtest >tmpdir/cdtest.out"
+ catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_output
+ if ![string match "" $exec_output] then {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail $test1
+ } else {
+ send_log "diff tmpdir/cdtest.out $srcdir$subdir/cdtest.dat\n"
+ verbose "diff tmpdir/cdtest.out $srcdir$subdir/cdtest.dat"
+ catch "exec diff tmpdir/cdtest.out $srcdir$subdir/cdtest.dat" exec_output
+ set exec_output [prune_system_crud $host_triplet $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass $test1
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail $test1
+ }
+ }
+}
+
+if ![ld_relocate $ld tmpdir/cdtest.o {-Ur tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] {
+ fail $test2
+} else {
+ if ![ld_link $ld tmpdir/cdtest tmpdir/cdtest.o] {
+ fail $test2
+ } else {
+ send_log "tmpdir/cdtest >tmpdir/cdtest.out\n"
+ verbose "tmpdir/cdtest >tmpdir/cdtest.out"
+ catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_output
+ if ![string match "" $exec_output] then {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail $test2
+ } else {
+ send_log "diff tmpdir/cdtest.out $srcdir$subdir/cdtest.dat\n"
+ verbose "diff tmpdir/cdtest.out $srcdir$subdir/cdtest.dat"
+ catch "exec diff tmpdir/cdtest.out $srcdir$subdir/cdtest.dat" exec_output
+ set exec_output [prune_system_crud $host_triplet $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass $test2
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail $test2
+ }
+ }
+ }
+}
diff --git a/ld/testsuite/ld-empic/empic.exp b/ld/testsuite/ld-empic/empic.exp
index 9cc1b07..8d91182 100644
--- a/ld/testsuite/ld-empic/empic.exp
+++ b/ld/testsuite/ld-empic/empic.exp
@@ -13,7 +13,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#
# Written by Ian Lance Taylor (ian@cygnus.com)
#
diff --git a/ld/testsuite/ld-shared/shared.exp b/ld/testsuite/ld-shared/shared.exp
index d836a2a..18bdaf9 100644
--- a/ld/testsuite/ld-shared/shared.exp
+++ b/ld/testsuite/ld-shared/shared.exp
@@ -1,5 +1,5 @@
# Expect script for ld-shared tests
-# Copyright (C) 1994 Free Software Foundation
+# Copyright (C) 1994,1995 Free Software Foundation
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -13,7 +13,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#
# Written by Ian Lance Taylor (ian@cygnus.com)
#
@@ -41,57 +41,55 @@ if { ![istarget i386-*-sysv4*] \
return
}
-# Compile the main program.
-if ![ld_compile "$CC $CFLAGS" $srcdir$subdir/main.c tmpdir/main.o] {
- return
-}
+# The test procedure.
+proc shared_test { progname testname main sh1 sh2 } {
+ global ld
+ global srcdir
+ global subdir
+ global exec_output
+ global host_triplet
-# The shared library is composed of two files. First compile them
-# without using -fpic. That should work on an ELF system, although it
-# will be less efficient because the dynamic linker will need to do
-# more relocation work. However, note that not using -fpic will cause
-# some of the tests to return different results.
-if ![ld_compile "$CC $CFLAGS" $srcdir$subdir/sh1.c tmpdir/sh1.o] {
- return
-}
-if ![ld_compile "$CC $CFLAGS" $srcdir$subdir/sh2.c tmpdir/sh2.o] {
- return
-}
+ # Build the shared library.
+ if {![ld_simple_link $ld tmpdir/$progname.so "-shared tmpdir/$sh1 tmpdir/$sh2"]} {
+ fail "$testname"
+ return
+ }
-# Build the shared library.
-if ![ld_simple_link $ld tmpdir/shnonpic.so {-shared tmpdir/sh1.o tmpdir/sh2.o}] {
- fail "shared (non PIC)"
-} else {
- # Link against the shared library. Use -rpath so that the dynamic
- # linker can locate the shared library at runtime.
- if ![ld_link $ld tmpdir/shnonpic {-rpath tmpdir tmpdir/main.o tmpdir/shnonpic.so}] {
- fail "shared (non PIC)"
- } else {
- # Run the resulting program
- send_log "tmpdir/shnonpic >tmpdir/shnonpic.out\n"
- verbose "tmpdir/shnonpic >tmpdir/shnonpic.out"
- catch "exec tmpdir/shnonpic >tmpdir/shnonpic.out" exec_output
- if ![string match "" $exec_output] then {
- send_log "$exec_output\n"
- verbose "$exec_output"
- fail "shared (non PIC)"
- } else {
- send_log "diff tmpdir/shnonpic.out $srcdir$subdir/shared.dat\n"
- verbose "diff tmpdir/shnonpic.out $srcdir$subdir/shared.dat"
- catch "exec diff tmpdir/shnonpic.out $srcdir$subdir/shared.dat" exec_output
- if [string match "" $exec_output] then {
- pass "shared (non PIC)"
- } else {
- send_log "$exec_output\n"
- verbose "$exec_output"
- fail "shared (non PIC)"
- }
- }
+ # Link against the shared library. Use -rpath so that the
+ # dynamic linker can locate the shared library at runtime.
+ if ![ld_link $ld tmpdir/$progname "-rpath tmpdir tmpdir/$main tmpdir/$progname.so"] {
+ fail "$testname"
+ return
+ }
+
+ # Run the resulting program
+ send_log "tmpdir/$progname >tmpdir/$progname.out\n"
+ verbose "tmpdir/$progname >tmpdir/$progname.out"
+ catch "exec tmpdir/$progname >tmpdir/$progname.out" exec_output
+ if ![string match "" $exec_output] then {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ fail "$testname"
+ return
+ }
+
+ send_log "diff tmpdir/$progname.out $srcdir$subdir/shared.dat\n"
+ verbose "diff tmpdir/$progname.out $srcdir$subdir/shared.dat"
+ catch "exec diff tmpdir/$progname.out $srcdir$subdir/shared.dat" exec_output
+ set exec_output [prune_system_crud $host_triplet $exec_output]
+
+ if {![string match "" $exec_output]} then {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ fail "$testname"
+ return
}
+
+ pass "$testname"
}
-# Now compile the code using -fpic. Unfortunately, the gcc argument
-# is -fpic and the cc argument is -KPIC. We have to try both.
+# Unfortunately, the gcc argument is -fpic and the cc argument is
+# -KPIC. We have to try both.
set picflag "-fpic"
send_log "$CC $picflag\n"
@@ -106,41 +104,48 @@ if { [string match "*illegal option*" $exec_output] \
}
verbose "Using $picflag to compile PIC code"
-if ![ld_compile "$CC $CFLAGS $picflag" $srcdir$subdir/sh1.c tmpdir/sh1.o] {
- return
-}
-if ![ld_compile "$CC $CFLAGS $picflag" $srcdir$subdir/sh2.c tmpdir/sh2.o] {
- return
+# Compile the main program.
+if ![ld_compile "$CC $CFLAGS" $srcdir$subdir/main.c tmpdir/mainnp.o] {
+ unresolved "shared (non PIC)"
+ unresolved "shared"
+} else {
+ # The shared library is composed of two files. First compile them
+ # without using -fpic. That should work on an ELF system,
+ # although it will be less efficient because the dynamic linker
+ # will need to do more relocation work. However, note that not
+ # using -fpic will cause some of the tests to return different
+ # results.
+ if { ![ld_compile "$CC $CFLAGS" $srcdir$subdir/sh1.c tmpdir/sh1np.o]
+ || ![ld_compile "$CC $CFLAGS" $srcdir$subdir/sh2.c tmpdir/sh2np.o] } {
+ unresolved "shared (non PIC)"
+ } else {
+ shared_test shnp "shared (non PIC)" mainnp.o sh1np.o sh2np.o
+ }
+
+ # Now compile the code using -fpic.
+
+ if { ![ld_compile "$CC $CFLAGS $picflag" $srcdir$subdir/sh1.c tmpdir/sh1p.o]
+ || ![ld_compile "$CC $CFLAGS $picflag" $srcdir$subdir/sh2.c tmpdir/sh2p.o] } {
+ unresolved "shared"
+ } else {
+ shared_test shp "shared" mainnp.o sh1p.o sh2p.o
+ }
}
-# Build the shared library.
-if ![ld_simple_link $ld tmpdir/shpic.so {-shared tmpdir/sh1.o tmpdir/sh2.o}] {
- fail "shared"
+# Now do the same tests again, but this time compile main.c PIC.
+if ![ld_compile "$CC $CFLAGS $picflag" $srcdir$subdir/main.c tmpdir/mainp.o] {
+ unresolved "shared (PIC main, non PIC so)"
+ unresolved "shared (PIC main)"
} else {
- # Link against the shared library. Use -rpath so that the dynamic
- # linker can locate the shared library at runtime.
- if ![ld_link $ld tmpdir/shpic {-rpath tmpdir tmpdir/main.o tmpdir/shpic.so}] {
- fail "shared"
+ if { [file exists tmpdir/sh1np.o ] && [ file exists tmpdir/sh2np.o ] } {
+ shared_test shmpnp "shared (PIC main, non PIC so)" mainp.o sh1np.o sh2np.o
+ } else {
+ unresolved "shared (PIC main, non PIC so)"
+ }
+
+ if { [file exists tmpdir/sh1p.o ] && [ file exists tmpdir/sh2p.o ] } {
+ shared_test shmpp "shared (PIC main)" mainp.o sh1p.o sh2p.o
} else {
- # Run the resulting program
- send_log "tmpdir/shpic >tmpdir/shpic.out\n"
- verbose "tmpdir/shpic >tmpdir/shpic.out"
- catch "exec tmpdir/shpic >tmpdir/shpic.out" exec_output
- if ![string match "" $exec_output] then {
- send_log "$exec_output\n"
- verbose "$exec_output"
- fail "shared"
- } else {
- send_log "diff tmpdir/shpic.out $srcdir$subdir/shared.dat\n"
- verbose "diff tmpdir/shpic.out $srcdir$subdir/shared.dat"
- catch "exec diff tmpdir/shpic.out $srcdir$subdir/shared.dat" exec_output
- if [string match "" $exec_output] then {
- pass "shared"
- } else {
- send_log "$exec_output\n"
- verbose "$exec_output"
- fail "shared"
- }
- }
+ unresolved "shared (PIC main)"
}
}
diff --git a/ld/testsuite/ld-versados/versados.exp b/ld/testsuite/ld-versados/versados.exp
index 4b33c0a..46a465f 100644
--- a/ld/testsuite/ld-versados/versados.exp
+++ b/ld/testsuite/ld-versados/versados.exp
@@ -13,7 +13,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#
# Written by Steve Chamberlain (sac@cygnus.com)
#
diff --git a/opcodes/a29k-dis.c b/opcodes/a29k-dis.c
index cfd2c07..74697c7 100644
--- a/opcodes/a29k-dis.c
+++ b/opcodes/a29k-dis.c
@@ -16,7 +16,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "dis-asm.h"
#include "opcode/a29k.h"
diff --git a/opcodes/alpha-opc.h b/opcodes/alpha-opc.h
index b928d22..473bcf4 100644
--- a/opcodes/alpha-opc.h
+++ b/opcodes/alpha-opc.h
@@ -14,7 +14,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Contributed by sac@cygnus.com. */
diff --git a/opcodes/arm-opc.h b/opcodes/arm-opc.h
index 9326a03..33f5daa 100644
--- a/opcodes/arm-opc.h
+++ b/opcodes/arm-opc.h
@@ -14,7 +14,7 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
struct arm_opcode {
diff --git a/opcodes/mpw-make.in b/opcodes/mpw-make.in
index 05eabca..c01c87e 100644
--- a/opcodes/mpw-make.in
+++ b/opcodes/mpw-make.in
@@ -14,7 +14,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
s = "{srcdir}"
o = :
diff --git a/opcodes/rce-dis.c b/opcodes/rce-dis.c
index 36d38e2..0967829 100644
--- a/opcodes/rce-dis.c
+++ b/opcodes/rce-dis.c
@@ -13,7 +13,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdio.h>
#define STATIC_TABLE