minix/external/gpl3/binutils/patches/0000-binutils_nbsd.patch

3258 lines
109 KiB
Diff
Raw Normal View History

diff -rNU3 dist.orig/bfd/aoutx.h dist.nbsd/bfd/aoutx.h
--- dist.orig/bfd/aoutx.h Tue May 1 16:07:33 2012
+++ dist.nbsd/bfd/aoutx.h Wed Feb 19 16:39:32 2014
@@ -762,7 +762,7 @@
break;
case bfd_arch_arm:
- if (machine == 0)
+ if (machine == 0 || machine == 5)
arch_flags = M_ARM;
break;
diff -rNU3 dist.orig/bfd/archive.c dist.nbsd/bfd/archive.c
--- dist.orig/bfd/archive.c Mon Mar 25 08:06:19 2013
+++ dist.nbsd/bfd/archive.c Wed Feb 19 16:39:32 2014
@@ -157,6 +157,9 @@
#define ar_maxnamelen(abfd) ((abfd)->xvec->ar_max_namelen)
#define arch_eltdata(bfd) ((struct areltdata *) ((bfd)->arelt_data))
+
+static const char * normalize (bfd *, const char *);
+
#define arch_hdr(bfd) ((struct ar_hdr *) arch_eltdata (bfd)->arch_header)
/* True iff NAME designated a BSD 4.4 extended name. */
@@ -760,7 +763,9 @@
/* Pad to an even boundary...
Note that last_file->origin can be odd in the case of
BSD-4.4-style element with a long odd size. */
- filestart += filestart % 2;
+ if (!strncmp(arch_hdr (last_file)->ar_name, "#1/", 3))
+ size += strlen(normalize(last_file, last_file->filename));
+ filestart += size % 2;
}
return _bfd_get_elt_at_filepos (archive, filestart);
@@ -2180,11 +2185,22 @@
current = current->archive_next)
{
char buffer[DEFAULT_BUFFERSIZE];
- bfd_size_type remaining = arelt_size (current);
+ bfd_size_type saved_size = arelt_size (current);
+ bfd_size_type remaining = saved_size;
+ struct ar_hdr *hdr = arch_hdr (current);
/* Write ar header. */
if (!_bfd_write_ar_hdr (arch, current))
- return FALSE;
+ return FALSE;
+ /* Write filename if it is a 4.4BSD extended file, and add to size. */
+ if (!strncmp (hdr->ar_name, "#1/", 3))
+ {
+ const char *normal = normalize (current, current->filename);
+ unsigned int thislen = strlen (normal);
+ if (bfd_write (normal, 1, thislen, arch) != thislen)
+ return FALSE;
+ saved_size += thislen;
+ }
if (bfd_is_thin_archive (arch))
continue;
if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0)
@@ -2457,11 +2473,19 @@
{
do
{
+#if 1
+ bfd_size_type size = arelt_size (current);
+ if (!strncmp(arch_hdr (current)->ar_name, "#1/", 3))
+ size += strlen(normalize(current, current->filename));
+ firstreal += size + sizeof (struct ar_hdr);
+ firstreal += size % 2;
+#else
struct areltdata *ared = arch_eltdata (current);
firstreal += (ared->parsed_size + ared->extra_size
+ sizeof (struct ar_hdr));
firstreal += firstreal % 2;
+#endif
current = current->archive_next;
}
while (current != map[count].u.abfd);
diff -rNU3 dist.orig/bfd/bfd-in2.h dist.nbsd/bfd/bfd-in2.h
--- dist.orig/bfd/bfd-in2.h Tue Sep 4 12:53:41 2012
+++ dist.nbsd/bfd/bfd-in2.h Wed Feb 19 16:39:32 2014
@@ -5788,6 +5788,11 @@
/* This BFD has been created by the linker and doesn't correspond
to any input file. */
#define BFD_LINKER_CREATED 0x2000
+ /* This may be set before writing out a BFD to request that it
+ be written using values for UIDs, GIDs, timestamps, etc. that
+ will be consistent from run to run. */
+#define BFD_DETERMINISTIC_OUTPUT 0x4000
+
/* This may be set before writing out a BFD to request that it
be written using values for UIDs, GIDs, timestamps, etc. that
diff -rNU3 dist.orig/bfd/coff-alpha.c dist.nbsd/bfd/coff-alpha.c
--- dist.orig/bfd/coff-alpha.c Fri Jul 13 14:22:42 2012
+++ dist.nbsd/bfd/coff-alpha.c Wed Feb 19 16:39:32 2014
@@ -642,7 +642,9 @@
case ALPHA_R_OP_STORE:
/* The STORE reloc needs the size and offset fields. We store
them in the addend. */
+#if 0
BFD_ASSERT (intern->r_offset <= 256);
+#endif
rptr->addend = (intern->r_offset << 8) + intern->r_size;
break;
diff -rNU3 dist.orig/bfd/config.bfd dist.nbsd/bfd/config.bfd
--- dist.orig/bfd/config.bfd Tue Sep 4 14:14:59 2012
+++ dist.nbsd/bfd/config.bfd Wed Feb 19 16:39:32 2014
@@ -86,6 +86,7 @@
i[3-7]86) targ_archs=bfd_i386_arch ;;
i370) targ_archs=bfd_i370_arch ;;
lm32) targ_archs=bfd_lm32_arch ;;
+m5200|m5407) targ_archs=bfd_m68k_arch ;;
m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
m68*) targ_archs=bfd_m68k_arch ;;
@@ -250,17 +251,17 @@
targ64_selvecs="bfd_elf32_x86_64_nacl_vec bfd_elf64_x86_64_nacl_vec"
targ_archs="$targ_archs bfd_i386_arch"
;;
- armeb-*-netbsdelf*)
+ arm*eb-*-netbsdelf*)
targ_defvec=bfd_elf32_bigarm_vec
- targ_selvecs="bfd_elf32_littlearm_vec armnetbsd_vec"
+ targ_selvecs="bfd_elf32_littlearm_vec armnetbsd_vec armcoff_little_vec armcoff_big_vec"
;;
- arm-*-netbsdelf*)
+ arm*-*-netbsdelf*)
targ_defvec=bfd_elf32_littlearm_vec
- targ_selvecs="bfd_elf32_bigarm_vec armnetbsd_vec"
+ targ_selvecs="bfd_elf32_bigarm_vec armnetbsd_vec armcoff_little_vec armcoff_big_vec"
;;
arm-*-netbsd* | arm-*-openbsd*)
targ_defvec=armnetbsd_vec
- targ_selvecs="bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec"
+ targ_selvecs="bfd_elf32_littlearm_vec bfd_elf32_bigarm_vec armcoff_little_vec armcoff_big_vec"
targ_underscore=yes
targ_cflags=-D__QNXTARGET__
;;
@@ -845,12 +846,12 @@
# targ_selvecs=m68kmach3_vec
# targ_cflags=-DSTAT_FOR_EXEC
;;
- m68*-hp*-netbsd*)
+ m68k4k*-*-netbsd*)
targ_defvec=m68k4knetbsd_vec
- targ_selvecs="m68knetbsd_vec hp300bsd_vec sunos_big_vec"
+ targ_selvecs="m68knetbsd_vec hp300bsd_vec sunos_big_vec bfd_elf32_m68k_vec"
targ_underscore=yes
;;
- m68*-*-netbsdelf*)
+ m68*-*-netbsdelf* | m5407-*-netbsdelf*)
targ_defvec=bfd_elf32_m68k_vec
targ_selvecs="m68knetbsd_vec m68k4knetbsd_vec hp300bsd_vec sunos_big_vec"
;;
@@ -923,6 +924,16 @@
targ_defvec=ecoff_big_vec
targ_selvecs=ecoff_little_vec
;;
+#ifdef BFD64
+ mips64*el-*-netbsd*)
+ targ_defvec=bfd_elf32_ntradlittlemips_vec
+ targ_selvecs="bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec"
+ ;;
+ mips64*-*-netbsd*)
+ targ_defvec=bfd_elf32_ntradbigmips_vec
+ targ_selvecs="bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradlittlemips_vec bfd_elf32_tradlittlemips_vec bfd_elf32_tradbigmips_vec"
+ ;;
+#endif
mips*el-*-netbsd*)
targ_defvec=bfd_elf32_tradlittlemips_vec
targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_little_vec ecoff_big_vec"
@@ -1347,6 +1358,8 @@
want64=true
;;
+#endif
+
sh*l*-*-netbsdelf*)
targ_defvec=bfd_elf32_shlnbsd_vec
targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec"
@@ -1357,8 +1370,6 @@
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec bfd_elf32_sh64lnbsd_vec bfd_elf32_sh64nbsd_vec bfd_elf64_sh64lnbsd_vec bfd_elf64_sh64nbsd_vec"
want64=true
;;
-#endif
-
sh*-*-netbsdelf*)
targ_defvec=bfd_elf32_shnbsd_vec
targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec"
@@ -1448,11 +1459,11 @@
;;
sparc-*-netbsdelf*)
targ_defvec=bfd_elf32_sparc_vec
- targ_selvecs=sparcnetbsd_vec
+ targ_selvecs="sparcnetbsd_vec sunos_big_vec"
;;
- sparc-*-netbsdaout* | sparc-*-netbsd*)
+ sparc-*-netbsd*)
targ_defvec=sparcnetbsd_vec
- targ_selvecs=bfd_elf32_sparc_vec
+ targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
targ_underscore=yes
;;
sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1])
@@ -1499,6 +1510,10 @@
targ_defvec=bfd_elf64_sparc_vec
targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
want64=true
+ ;;
+ sparc64-*-netbsd*)
+ targ_defvec=bfd_elf64_sparc_vec
+ targ_selvecs="bfd_elf32_sparc_vec sparcnetbsd_vec sunos_big_vec"
;;
sparc64-*-elf* | sparc64-*-rtems* )
targ_defvec=bfd_elf64_sparc_vec
diff -rNU3 dist.orig/bfd/configure dist.nbsd/bfd/configure
--- dist.orig/bfd/configure Mon Mar 25 09:08:07 2013
+++ dist.nbsd/bfd/configure Wed Feb 19 16:39:32 2014
@@ -12101,10 +12101,10 @@
withval=$with_pkgversion; case "$withval" in
yes) as_fn_error "package version not specified" "$LINENO" 5 ;;
no) PKGVERSION= ;;
- *) PKGVERSION="($withval) " ;;
+ *) PKGVERSION="($withval)\ " ;;
esac
else
- PKGVERSION="(GNU Binutils) "
+ PKGVERSION="(GNU Binutils)\ "
fi
@@ -13861,6 +13861,7 @@
COREFILE=netbsd-core.lo
;;
arm-*-riscix) COREFILE=trad-core.lo ;;
+ arm*-*-netbsd*) COREFILE=netbsd-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
hppa*-*-hiux*) COREFILE=hpux-core.lo ;;
hppa*-*-mpeix*) COREFILE=hpux-core.lo ;;
@@ -13923,7 +13924,7 @@
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/i860mach3.h"'
;;
- mips-*-netbsd* | mips*-*-openbsd*)
+ mips*-*-netbsd* | mips*-*-openbsd*)
COREFILE=netbsd-core.lo
;;
mips-dec-*)
diff -rNU3 dist.orig/bfd/configure.host dist.nbsd/bfd/configure.host
--- dist.orig/bfd/configure.host Fri Dec 31 11:00:52 2010
+++ dist.nbsd/bfd/configure.host Wed Feb 19 16:39:32 2014
@@ -57,6 +57,18 @@
m68*-hp-hpux*) HDEFINES=-DHOST_HP300HPUX ;;
+sparc64*-*-netbsd*) host64=true; HOST_64BIT_TYPE=long ;;
+
+x86_64*-*-netbsd*) host64=true; HOST_64BIT_TYPE=long ;;
+
+*-*-aix*) HOST_64BIT_TYPE="long long"
+ HOST_U_64BIT_TYPE="unsigned long long"
+ ;;
+
+*-*-solaris*) HOST_64BIT_TYPE="long long"
+ HOST_U_64BIT_TYPE="unsigned long long"
+ ;;
+
# Some Solaris systems (osol0906 at least) have a libc that doesn't recognise
# the "MS-ANSI" code page name, so we define an override for CP_ACP (sets the
# default code page used by windres/windmc when not specified by a commandline
diff -rNU3 dist.orig/bfd/configure.in dist.nbsd/bfd/configure.in
--- dist.orig/bfd/configure.in Mon Mar 25 09:08:05 2013
+++ dist.nbsd/bfd/configure.in Wed Feb 19 16:39:32 2014
@@ -254,6 +254,7 @@
COREFILE=netbsd-core.lo
;;
arm-*-riscix) COREFILE=trad-core.lo ;;
+ arm*-*-netbsd*) COREFILE=netbsd-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
hppa*-*-hiux*) COREFILE=hpux-core.lo ;;
hppa*-*-mpeix*) COREFILE=hpux-core.lo ;;
@@ -340,7 +341,7 @@
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/i860mach3.h"'
;;
- mips-*-netbsd* | mips*-*-openbsd*)
+ mips*-*-netbsd* | mips*-*-openbsd*)
COREFILE=netbsd-core.lo
;;
mips-dec-*)
diff -rNU3 dist.orig/bfd/doc/Makefile.in dist.nbsd/bfd/doc/Makefile.in
--- dist.orig/bfd/doc/Makefile.in Mon Mar 25 09:08:08 2013
+++ dist.nbsd/bfd/doc/Makefile.in Wed Feb 19 16:39:32 2014
@@ -417,7 +417,9 @@
clean-libtool:
-rm -rf .libs _libs
-bfd.info: bfd.texinfo $(bfd_TEXINFOS)
+bfd.info:
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_bfd.info: bfd.texinfo $(bfd_TEXINFOS)
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
diff -rNU3 dist.orig/bfd/doc/reloc.texi dist.nbsd/bfd/doc/reloc.texi
--- dist.orig/bfd/doc/reloc.texi Tue Nov 13 14:19:29 2012
+++ dist.nbsd/bfd/doc/reloc.texi Wed Feb 19 16:39:32 2014
@@ -570,6 +570,12 @@
@deffnx {} BFD_RELOC_68K_TLS_LE8
Relocations used by 68K ELF.
@end deffn
+@deffn {} BFD_RELOC_VAX_GLOB_DAT
+@deffnx {} BFD_RELOC_VAX_GLOB_REF
+@deffnx {} BFD_RELOC_VAX_JMP_SLOT
+@deffnx {} BFD_RELOC_VAX_RELATIVE
+Relocations used by VAX ELF.
+@end deffn
@deffn {} BFD_RELOC_32_BASEREL
@deffnx {} BFD_RELOC_16_BASEREL
@deffnx {} BFD_RELOC_LO16_BASEREL
diff -rNU3 dist.orig/bfd/elf.c dist.nbsd/bfd/elf.c
--- dist.orig/bfd/elf.c Mon Mar 25 08:06:19 2013
+++ dist.nbsd/bfd/elf.c Wed Feb 19 16:39:32 2014
@@ -8756,6 +8756,23 @@
return TRUE;
}
+ /* On SuperH, PT_GETREGS == mach+3 and PT_GETFPREGS == mach+5.
+ There's also old PT___GETREGS40 == mach + 1 for old reg
+ structure which lacks GBR. */
+
+ case bfd_arch_sh:
+ switch (note->type)
+ {
+ case NT_NETBSDCORE_FIRSTMACH+3:
+ return elfcore_make_note_pseudosection (abfd, ".reg", note);
+
+ case NT_NETBSDCORE_FIRSTMACH+5:
+ return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+
+ default:
+ return TRUE;
+ }
+
/* On all other arch's, PT_GETREGS == mach+1 and
PT_GETFPREGS == mach+3. */
diff -rNU3 dist.orig/bfd/elf32-arm.c dist.nbsd/bfd/elf32-arm.c
--- dist.orig/bfd/elf32-arm.c Mon Mar 25 08:06:19 2013
+++ dist.nbsd/bfd/elf32-arm.c Wed Feb 19 16:39:32 2014
@@ -13475,6 +13475,10 @@
{
struct bfd_link_info *info = (struct bfd_link_info *) inf;
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ h->root.root.string);
info->flags |= DF_TEXTREL;
/* Not an error, just cut short the traversal. */
diff -rNU3 dist.orig/bfd/elf32-hppa.c dist.nbsd/bfd/elf32-hppa.c
--- dist.orig/bfd/elf32-hppa.c Fri Jun 29 14:45:58 2012
+++ dist.nbsd/bfd/elf32-hppa.c Wed Feb 19 16:39:32 2014
@@ -2191,6 +2191,10 @@
{
struct bfd_link_info *info = inf;
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ eh->root.root.string);
info->flags |= DF_TEXTREL;
/* Not an error, just cut short the traversal. */
diff -rNU3 dist.orig/bfd/elf32-i386.c dist.nbsd/bfd/elf32-i386.c
--- dist.orig/bfd/elf32-i386.c Mon Mar 25 08:06:19 2013
+++ dist.nbsd/bfd/elf32-i386.c Wed Feb 19 16:39:32 2014
@@ -518,7 +518,7 @@
/* The name of the dynamic interpreter. This is put in the .interp
section. */
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/libc.so.1"
+#define ELF_DYNAMIC_INTERPRETER "/libexec/ld.elf_so"
/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
copying dynamic variables from a shared lib into an app's dynbss
@@ -2552,7 +2552,10 @@
if (s != NULL && (s->flags & SEC_READONLY) != 0)
{
struct bfd_link_info *info = (struct bfd_link_info *) inf;
-
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ h->root.root.string);
info->flags |= DF_TEXTREL;
if (info->warn_shared_textrel && info->shared)
diff -rNU3 dist.orig/bfd/elf32-m68k.c dist.nbsd/bfd/elf32-m68k.c
--- dist.orig/bfd/elf32-m68k.c Fri Jul 13 14:22:47 2012
+++ dist.nbsd/bfd/elf32-m68k.c Wed Feb 19 16:39:33 2014
@@ -2532,7 +2532,7 @@
if (ind->got_entry_key != 0)
{
BFD_ASSERT (dir->got_entry_key == 0);
- /* Assert that GOTs aren't partioned yet. */
+ /* Assert that GOTs aren't partitioned yet. */
BFD_ASSERT (ind->glist == NULL);
dir->got_entry_key = ind->got_entry_key;
diff -rNU3 dist.orig/bfd/elf32-ppc.c dist.nbsd/bfd/elf32-ppc.c
--- dist.orig/bfd/elf32-ppc.c Mon Mar 25 08:06:19 2013
+++ dist.nbsd/bfd/elf32-ppc.c Wed Feb 19 16:39:32 2014
@@ -3898,7 +3898,7 @@
sec->has_tls_get_addr_call = 1;
}
- switch (r_type)
+ switch ((int)r_type)
{
case R_PPC_TLSGD:
case R_PPC_TLSLD:
@@ -7766,7 +7766,7 @@
howto = NULL;
if (r_type < R_PPC_max)
howto = ppc_elf_howto_table[r_type];
- switch (r_type)
+ switch ((int)r_type)
{
default:
info->callbacks->einfo
diff -rNU3 dist.orig/bfd/elf32-sh.c dist.nbsd/bfd/elf32-sh.c
--- dist.orig/bfd/elf32-sh.c Mon Mar 25 08:06:20 2013
+++ dist.nbsd/bfd/elf32-sh.c Wed Feb 19 16:39:32 2014
@@ -3285,6 +3285,10 @@
{
struct bfd_link_info *info = (struct bfd_link_info *) inf;
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ h->root.root.string);
info->flags |= DF_TEXTREL;
/* Not an error, just cut short the traversal. */
diff -rNU3 dist.orig/bfd/elf32-vax.c dist.nbsd/bfd/elf32-vax.c
--- dist.orig/bfd/elf32-vax.c Tue Sep 4 13:32:53 2012
+++ dist.nbsd/bfd/elf32-vax.c Wed Feb 19 16:39:32 2014
@@ -490,6 +490,24 @@
return TRUE;
}
+/* Copy vax-specific data from one module to another */
+static bfd_boolean
+elf32_vax_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
+{
+ flagword in_flags;
+
+ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ return TRUE;
+
+ in_flags = elf_elfheader (ibfd)->e_flags;
+
+ elf_elfheader (obfd)->e_flags = in_flags;
+ elf_flags_init (obfd) = TRUE;
+
+ return TRUE;
+}
+
/* Merge backend specific data from an object file to the output
object file when linking. */
static bfd_boolean
@@ -752,7 +770,13 @@
return FALSE;
if (sec->flags & SEC_READONLY)
- info->flags |= DF_TEXTREL;
+ {
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ sec->name);
+ info->flags |= DF_TEXTREL;
+ }
}
sreloc->size += sizeof (Elf32_External_Rela);
@@ -1186,7 +1210,12 @@
continue;
/* Allocate memory for the section contents. */
- s->contents = (bfd_byte *) bfd_alloc (dynobj, s->size);
+ /* FIXME: This should be a call to bfd_alloc not bfd_zalloc.
+ Unused entries should be reclaimed before the section's contents
+ are written out, but at the moment this does not happen. Thus in
+ order to prevent writing out garbage, we initialise the section's
+ contents to zero. */
+ s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
if (s->contents == NULL)
return FALSE;
}
@@ -1285,6 +1314,7 @@
if (!elf_hash_table (info)->dynamic_sections_created
|| (info->shared && info->symbolic)
+ || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
|| h->forced_local)
{
h->got.refcount = 0;
@@ -1305,9 +1335,7 @@
dyn = elf_hash_table (info)->dynamic_sections_created;
/* Allocate space in the .got and .rela.got sections. */
- if (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- && (info->shared
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+ if (info->shared || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
{
sgot->size += 4;
srelgot->size += sizeof (Elf32_External_Rela);
@@ -1631,9 +1659,9 @@
{
relocate = TRUE;
outrel.r_info = ELF32_R_INFO (0, R_VAX_RELATIVE);
- BFD_ASSERT (bfd_get_signed_32 (input_bfd,
- &contents[rel->r_offset]) == 0);
- outrel.r_addend = relocation + rel->r_addend;
+ outrel.r_addend = bfd_get_signed_32(input_bfd,
+ &contents[rel->r_offset])
+ + relocation + rel->r_addend;
}
else
{
@@ -1672,6 +1700,9 @@
}
}
+ if (input_section->flags & SEC_CODE)
+ info->flags |= DF_TEXTREL;
+
if ((input_section->flags & SEC_CODE) != 0
|| (ELF32_R_TYPE (outrel.r_info) != R_VAX_32
&& ELF32_R_TYPE (outrel.r_info) != R_VAX_RELATIVE
@@ -2051,12 +2082,15 @@
#define TARGET_LITTLE_SYM bfd_elf32_vax_vec
#define TARGET_LITTLE_NAME "elf32-vax"
#define ELF_MACHINE_CODE EM_VAX
-#define ELF_MAXPAGESIZE 0x1000
+#define ELF_MAXPAGESIZE 0x10000
#define elf_backend_create_dynamic_sections \
_bfd_elf_create_dynamic_sections
#define bfd_elf32_bfd_link_hash_table_create \
elf_vax_link_hash_table_create
+#define bfd_elf32_bfd_copy_private_bfd_data \
+ elf32_vax_copy_private_bfd_data
+
#define bfd_elf32_bfd_final_link bfd_elf_gc_common_final_link
#define elf_backend_check_relocs elf_vax_check_relocs
diff -rNU3 dist.orig/bfd/elf64-alpha.c dist.nbsd/bfd/elf64-alpha.c
--- dist.orig/bfd/elf64-alpha.c Tue Jul 24 21:06:58 2012
+++ dist.nbsd/bfd/elf64-alpha.c Wed Feb 19 16:39:32 2014
@@ -100,6 +100,11 @@
#define PLT_ENTRY_SIZE \
(elf64_alpha_use_secureplt ? NEW_PLT_ENTRY_SIZE : OLD_PLT_ENTRY_SIZE)
+/* ld --traditional-format uses this older format instead. */
+#define OLD_PLT_ENTRY_WORD1 0x279f0000 /* ldah $28, 0($31) */
+#define OLD_PLT_ENTRY_WORD2 0x239c0000 /* lda $28, 0($28) */
+#define OLD_PLT_ENTRY_WORD3 0xc3e00000 /* br $31, plt0 */
+
#define MAX_GOT_SIZE (64*1024)
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so"
@@ -4820,6 +4825,32 @@
plt_index = ((gotent->plt_offset - NEW_PLT_HEADER_SIZE)
/ NEW_PLT_ENTRY_SIZE);
+ }
+ else if ((output_bfd->flags & BFD_TRADITIONAL_FORMAT) != 0)
+ {
+ long hi, lo;
+
+ /* decompose the reloc offset for the plt for ldah+lda */
+ hi = plt_index * sizeof(Elf64_External_Rela);
+ lo = ((hi & 0xffff) ^ 0x8000) - 0x8000;
+ hi = (hi - lo) >> 16;
+
+ insn = INSN_ABO (INSN_LDAH, 28, 31, hi);
+ bfd_put_32 (output_bfd, insn,
+ splt->contents + gotent->plt_offset);
+
+ insn = INSN_ABO (INSN_LDA, 28, 28, lo);
+ bfd_put_32 (output_bfd, insn,
+ splt->contents + gotent->plt_offset + 4);
+
+ disp = -(gotent->plt_offset + 12);
+ insn = INSN_AD (INSN_BR, 31, disp);
+
+ bfd_put_32 (output_bfd, insn,
+ splt->contents + gotent->plt_offset + 8);
+
+ plt_index = ((gotent->plt_offset - OLD_PLT_HEADER_SIZE)
+ / OLD_PLT_ENTRY_SIZE);
}
else
{
diff -rNU3 dist.orig/bfd/elf64-mips.c dist.nbsd/bfd/elf64-mips.c
--- dist.orig/bfd/elf64-mips.c Tue Sep 4 14:13:07 2012
+++ dist.nbsd/bfd/elf64-mips.c Wed Feb 19 16:39:32 2014
@@ -123,6 +123,8 @@
(bfd *, asymbol *, bfd_boolean, char **, bfd_vma *);
static bfd_boolean mips_elf64_object_p
(bfd *);
+static bfd_boolean mips_elf64_is_local_label_name
+ (bfd *, const char *);
static irix_compat_t elf64_mips_irix_compat
(bfd *);
static bfd_boolean elf64_mips_grok_prstatus
@@ -3917,7 +3919,18 @@
bfd_default_set_arch_mach (abfd, bfd_arch_mips, mach);
return TRUE;
}
+
+/* MIPS ELF local labels start with "$L". */
+static bfd_boolean
+mips_elf64_is_local_label_name (bfd *abfd, const char *name)
+{
+ if (name[0] == '$' && name[1] == 'L')
+ return TRUE;
+ /* We accept the generic ELF local label syntax as well. */
+ return _bfd_elf_is_local_label_name (abfd, name);
+}
+
/* Depending on the target vector we generate some version of Irix
executables or "normal" MIPS ELF ABI executables. */
static irix_compat_t
diff -rNU3 dist.orig/bfd/elf64-ppc.c dist.nbsd/bfd/elf64-ppc.c
--- dist.orig/bfd/elf64-ppc.c Mon Mar 25 08:06:20 2013
+++ dist.nbsd/bfd/elf64-ppc.c Wed Feb 19 16:39:33 2014
@@ -9112,6 +9112,10 @@
{
struct bfd_link_info *info = inf;
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ h->root.root.string);
info->flags |= DF_TEXTREL;
/* Not an error, just cut short the traversal. */
diff -rNU3 dist.orig/bfd/elf64-x86-64.c dist.nbsd/bfd/elf64-x86-64.c
--- dist.orig/bfd/elf64-x86-64.c Mon Mar 25 08:06:20 2013
+++ dist.nbsd/bfd/elf64-x86-64.c Wed Feb 19 16:39:32 2014
@@ -2589,6 +2589,10 @@
{
struct bfd_link_info *info = (struct bfd_link_info *) inf;
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ h->root.root.string);
info->flags |= DF_TEXTREL;
if (info->warn_shared_textrel && info->shared)
diff -rNU3 dist.orig/bfd/elflink.c dist.nbsd/bfd/elflink.c
--- dist.orig/bfd/elflink.c Mon Mar 25 08:06:20 2013
+++ dist.nbsd/bfd/elflink.c Wed Feb 19 16:39:32 2014
@@ -10183,7 +10183,14 @@
if (bed->s->arch_size == 32)
irel[0].r_info = ELF32_R_INFO (indx, howto->type);
else
- irel[0].r_info = ELF64_R_INFO (indx, howto->type);
+#ifdef BFD64
+ {
+ bfd_uint64_t indx64 = indx;
+ irel[0].r_info = ELF64_R_INFO (indx64, howto->type);
+ }
+#else
+ BFD_FAIL();
+#endif
rel_hdr = reldata->hdr;
erel = rel_hdr->contents;
diff -rNU3 dist.orig/bfd/elfn32-mips.c dist.nbsd/bfd/elfn32-mips.c
--- dist.orig/bfd/elfn32-mips.c Tue Sep 4 14:13:08 2012
+++ dist.nbsd/bfd/elfn32-mips.c Wed Feb 19 16:39:32 2014
@@ -81,6 +81,8 @@
(bfd *, Elf_Internal_Note *);
static bfd_boolean elf32_mips_grok_psinfo
(bfd *, Elf_Internal_Note *);
+static bfd_boolean mips_elf_n32_is_local_label_name
+ (bfd *, const char *);
static irix_compat_t elf_n32_mips_irix_compat
(bfd *);
@@ -3239,6 +3241,17 @@
}
return TRUE;
+}
+
+/* MIPS ELF local labels start with "$L". */
+static bfd_boolean
+mips_elf_n32_is_local_label_name (bfd *abfd, const char *name)
+{
+ if (name[0] == '$' && name[1] == 'L')
+ return TRUE;
+
+ /* We accept the generic ELF local label syntax as well. */
+ return _bfd_elf_is_local_label_name (abfd, name);
}
/* Depending on the target vector we generate some version of Irix
diff -rNU3 dist.orig/bfd/elfxx-mips.c dist.nbsd/bfd/elfxx-mips.c
--- dist.orig/bfd/elfxx-mips.c Mon Mar 25 08:06:20 2013
+++ dist.nbsd/bfd/elfxx-mips.c Wed Feb 19 16:39:32 2014
@@ -8191,10 +8191,24 @@
reloc types into the output file as R_MIPS_REL32
relocs. Make room for this reloc in .rel(a).dyn. */
mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
- if (MIPS_ELF_READONLY_SECTION (sec))
- /* We tell the dynamic linker that there are
- relocations against the text segment. */
- info->flags |= DF_TEXTREL;
+ /* In the N32 and 64-bit ABIs there may be multiple
+ consecutive relocations for the same offset. If we have
+ a R_MIPS_GPREL32 followed by a R_MIPS_64 then that
+ relocation is complete and needs no futher adjustment. */
+ if ((rel == relocs
+ || rel[-1].r_offset != rel->r_offset
+ || r_type != R_MIPS_64
+ || ELF_R_TYPE(abfd, rel[-1].r_info) != R_MIPS_GPREL32)
+ && MIPS_ELF_READONLY_SECTION (sec))
+ {
+ /* We tell the dynamic linker that there are
+ relocations against the text segment. */
+ info->flags |= DF_TEXTREL;
+ info->callbacks->warning
+ (info,
+ _("relocation emitted against readonly section"),
+ NULL, abfd, sec, rel->r_offset);
+ }
}
else
{
diff -rNU3 dist.orig/bfd/elfxx-sparc.c dist.nbsd/bfd/elfxx-sparc.c
--- dist.orig/bfd/elfxx-sparc.c Mon Mar 25 08:06:20 2013
+++ dist.nbsd/bfd/elfxx-sparc.c Wed Feb 19 16:39:32 2014
@@ -2508,6 +2508,10 @@
{
struct bfd_link_info *info = (struct bfd_link_info *) inf;
+ if (info->warn_shared_textrel)
+ (*_bfd_error_handler)
+ (_("warning: dynamic relocation in readonly section `%s'"),
+ h->root.root.string);
info->flags |= DF_TEXTREL;
/* Not an error, just cut short the traversal. */
@@ -3460,10 +3464,8 @@
memset (&outrel, 0, sizeof outrel);
/* h->dynindx may be -1 if the symbol was marked to
become local. */
- else if (h != NULL &&
- h->dynindx != -1
- && (! is_plt
- || !info->shared
+ else if (h != NULL && h->dynindx != -1 && ! is_plt
+ && (!info->shared
|| !SYMBOLIC_BIND (info, h)
|| !h->def_regular))
{
diff -rNU3 dist.orig/bfd/libbfd.h dist.nbsd/bfd/libbfd.h
--- dist.orig/bfd/libbfd.h Tue Sep 4 12:53:42 2012
+++ dist.nbsd/bfd/libbfd.h Wed Feb 19 16:39:32 2014
@@ -2313,6 +2313,7 @@
"BFD_RELOC_XC16X_SEG",
"BFD_RELOC_XC16X_SOF",
"BFD_RELOC_VAX_GLOB_DAT",
+ "BFD_RELOC_VAX_GLOB_REF",
"BFD_RELOC_VAX_JMP_SLOT",
"BFD_RELOC_VAX_RELATIVE",
"BFD_RELOC_MT_PC16",
diff -rNU3 dist.orig/bfd/reloc.c dist.nbsd/bfd/reloc.c
--- dist.orig/bfd/reloc.c Tue Sep 4 12:53:42 2012
+++ dist.nbsd/bfd/reloc.c Wed Feb 19 16:39:32 2014
@@ -1776,6 +1776,17 @@
Relocations used by 68K ELF.
ENUM
+ BFD_RELOC_VAX_GLOB_DAT
+ENUMX
+ BFD_RELOC_VAX_GLOB_REF
+ENUMX
+ BFD_RELOC_VAX_JMP_SLOT
+ENUMX
+ BFD_RELOC_VAX_RELATIVE
+ENUMDOC
+ Relocations used by VAX ELF.
+
+ENUM
BFD_RELOC_32_BASEREL
ENUMX
BFD_RELOC_16_BASEREL
diff -rNU3 dist.orig/binutils/Makefile.in dist.nbsd/binutils/Makefile.in
--- dist.orig/binutils/Makefile.in Thu May 17 22:23:39 2012
+++ dist.nbsd/binutils/Makefile.in Wed Feb 19 16:39:33 2014
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -49,10 +49,12 @@
DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(srcdir)/config.in \
- $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in arparse.h \
- arparse.c arlex.c defparse.h defparse.c deflex.c nlmheader.h \
- nlmheader.c arparse.h arparse.c arlex.c mcparse.h mcparse.c \
- rcparse.h rcparse.c $(srcdir)/../depcomp $(srcdir)/../ylwrap
+ $(srcdir)/../mkinstalldirs $(srcdir)/../mkinstalldirs \
+ $(top_srcdir)/po/Make-in arparse.h arparse.c arlex.c \
+ defparse.h defparse.c deflex.c nlmheader.h nlmheader.c \
+ arparse.h arparse.c arlex.c mcparse.h mcparse.c rcparse.h \
+ rcparse.c $(srcdir)/../depcomp $(srcdir)/../depcomp \
+ $(srcdir)/../ylwrap $(srcdir)/../ylwrap
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
$(top_srcdir)/../config/zlib.m4 \
@@ -385,6 +387,7 @@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -931,7 +934,7 @@
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @fail= failcom='exit 1'; \
+ @failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@@ -956,7 +959,7 @@
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
- @fail= failcom='exit 1'; \
+ @failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
diff -rNU3 dist.orig/binutils/aclocal.m4 dist.nbsd/binutils/aclocal.m4
--- dist.orig/binutils/aclocal.m4 Thu May 17 22:23:39 2012
+++ dist.nbsd/binutils/aclocal.m4 Wed Feb 19 16:39:33 2014
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
@@ -19,6 +19,31 @@
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
+# isc-posix.m4 serial 2 (gettext-0.11.2)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
+
+# This test replaces the one in autoconf.
+# Currently this macro should have the same name as the autoconf macro
+# because gettext's gettext.m4 (distributed in the automake package)
+# still uses it. Otherwise, the use in gettext.m4 makes autoheader
+# give these diagnostics:
+# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
+# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
+
+undefine([AC_ISC_POSIX])
+
+AC_DEFUN([AC_ISC_POSIX],
+ [
+ dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
+ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
+ ]
+)
+
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
@@ -34,7 +59,7 @@
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.11], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -50,7 +75,7 @@
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.11])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff -rNU3 dist.orig/binutils/bucomm.c dist.nbsd/binutils/bucomm.c
--- dist.orig/binutils/bucomm.c Fri Jun 29 12:59:49 2012
+++ dist.nbsd/binutils/bucomm.c Wed Feb 19 16:39:33 2014
@@ -580,7 +580,14 @@
file_name, strerror (errno));
}
else if (! S_ISREG (statbuf.st_mode))
- non_fatal (_("Warning: '%s' is not an ordinary file"), file_name);
+ {
+ if (!S_ISCHR(statbuf.st_mode))
+ {
+ non_fatal (_("Warning: '%s' is not an ordinary file"), file_name);
+ return 0;
+ }
+ return statbuf.st_size ? statbuf.st_size : 1;
+ }
else if (statbuf.st_size < 0)
non_fatal (_("Warning: '%s' has negative size, probably it is too large"),
file_name);
diff -rNU3 dist.orig/binutils/doc/Makefile.am dist.nbsd/binutils/doc/Makefile.am
--- dist.orig/binutils/doc/Makefile.am Wed Jan 6 16:52:14 2010
+++ dist.nbsd/binutils/doc/Makefile.am Wed Feb 19 16:39:33 2014
@@ -42,6 +42,8 @@
# Man page generation from texinfo
addr2line.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_addr2line.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
-($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -49,6 +51,8 @@
rm -f addr2line.pod
ar.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ar.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
-($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -56,6 +60,8 @@
rm -f ar.pod
dlltool.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_dlltool.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
-($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -63,6 +69,8 @@
rm -f dlltool.pod
nlmconv.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_nlmconv.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
-($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -70,6 +78,8 @@
rm -f nlmconv.pod
nm.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_nm.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
-($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -77,6 +87,8 @@
rm -f nm.pod
objcopy.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_objcopy.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
-($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -84,6 +96,8 @@
rm -f objcopy.pod
objdump.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_objdump.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
-($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -91,6 +105,8 @@
rm -f objdump.pod
ranlib.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ranlib.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
-($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -98,6 +114,8 @@
rm -f ranlib.pod
readelf.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_readelf.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
-($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -105,6 +123,8 @@
rm -f readelf.pod
size.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_size.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
-($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -112,6 +132,8 @@
rm -f size.pod
strings.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_strings.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
-($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -119,6 +141,8 @@
rm -f strings.pod
strip.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_strip.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
-($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -133,6 +157,8 @@
rm -f elfedit.pod
windres.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_windres.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
-($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -140,6 +166,8 @@
rm -f windres.pod
windmc.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_windmc.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dwindmc < $(binutils_TEXI) > windmc.pod
-($(POD2MAN) windmc.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -147,6 +175,8 @@
rm -f windmc.pod
cxxfilt.man: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_cxxfilt.man:
touch $@
-$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
-($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
diff -rNU3 dist.orig/binutils/doc/Makefile.in dist.nbsd/binutils/doc/Makefile.in
--- dist.orig/binutils/doc/Makefile.in Tue Sep 4 12:53:44 2012
+++ dist.nbsd/binutils/doc/Makefile.in Wed Feb 19 16:39:33 2014
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -242,6 +242,7 @@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -349,6 +350,8 @@
-rm -rf .libs _libs
binutils.info: binutils.texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_binutils.info: binutils.texi
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
@@ -735,6 +738,8 @@
# Man page generation from texinfo
addr2line.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_addr2line.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Daddr2line < $(binutils_TEXI) > addr2line.pod
-($(POD2MAN) addr2line.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -742,6 +747,8 @@
rm -f addr2line.pod
ar.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ar.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dar < $(binutils_TEXI) > ar.pod
-($(POD2MAN) ar.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -749,6 +756,8 @@
rm -f ar.pod
dlltool.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_dlltool.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Ddlltool < $(binutils_TEXI) > dlltool.pod
-($(POD2MAN) dlltool.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -756,6 +765,8 @@
rm -f dlltool.pod
nlmconv.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_nlmconv.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dnlmconv < $(binutils_TEXI) > nlmconv.pod
-($(POD2MAN) nlmconv.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -763,6 +774,8 @@
rm -f nlmconv.pod
nm.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_nm.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dnm < $(binutils_TEXI) > nm.pod
-($(POD2MAN) nm.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -770,6 +783,8 @@
rm -f nm.pod
objcopy.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_objcopy.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjcopy < $(binutils_TEXI) > objcopy.pod
-($(POD2MAN) objcopy.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -777,6 +792,8 @@
rm -f objcopy.pod
objdump.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_objdump.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dobjdump < $(binutils_TEXI) > objdump.pod
-($(POD2MAN) objdump.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -784,6 +801,8 @@
rm -f objdump.pod
ranlib.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ranlib.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dranlib < $(binutils_TEXI) > ranlib.pod
-($(POD2MAN) ranlib.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -791,6 +810,8 @@
rm -f ranlib.pod
readelf.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_readelf.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dreadelf < $(binutils_TEXI) > readelf.pod
-($(POD2MAN) readelf.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -798,6 +819,8 @@
rm -f readelf.pod
size.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_size.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dsize < $(binutils_TEXI) > size.pod
-($(POD2MAN) size.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -805,6 +828,8 @@
rm -f size.pod
strings.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_strings.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrings < $(binutils_TEXI) > strings.pod
-($(POD2MAN) strings.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -812,6 +837,8 @@
rm -f strings.pod
strip.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_strip.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dstrip < $(binutils_TEXI) > strip.pod
-($(POD2MAN) strip.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -819,6 +846,8 @@
rm -f strip.pod
elfedit.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_elfedit.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Delfedit < $(binutils_TEXI) > elfedit.pod
-($(POD2MAN) elfedit.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -826,6 +855,8 @@
rm -f elfedit.pod
windres.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_windres.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dwindres < $(binutils_TEXI) > windres.pod
-($(POD2MAN) windres.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -833,6 +864,8 @@
rm -f windres.pod
windmc.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_windmc.1:
touch $@
-$(TEXI2POD) $(MANCONF) -Dwindmc < $(binutils_TEXI) > windmc.pod
-($(POD2MAN) windmc.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
@@ -840,6 +873,8 @@
rm -f windmc.pod
cxxfilt.man: $(binutils_TEXI) $(binutils_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_cxxfilt.man:
touch $@
-$(TEXI2POD) $(MANCONF) -Dcxxfilt < $(binutils_TEXI) > $(DEMANGLER_NAME).pod
-($(POD2MAN) $(DEMANGLER_NAME).pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
diff -rNU3 dist.orig/binutils/doc/strings.1 dist.nbsd/binutils/doc/strings.1
--- dist.orig/binutils/doc/strings.1 Mon Mar 25 09:10:26 2013
+++ dist.nbsd/binutils/doc/strings.1 Wed Feb 19 16:39:33 2014
@@ -208,7 +208,7 @@
characters (\s-1ASCII\s0, \s-1ISO\s0 8859, etc., default), \fBS\fR =
single\-8\-bit\-byte characters, \fBb\fR = 16\-bit bigendian, \fBl\fR =
16\-bit littleendian, \fBB\fR = 32\-bit bigendian, \fBL\fR = 32\-bit
-littleendian. Useful for finding wide character strings. (\fBl\fR
+littleendian. Useful for finding wide-character strings. (\fBl\fR
and \fBb\fR apply to, for example, Unicode \s-1UTF\-16/UCS\-2\s0 encodings).
.IP "\fB\-T\fR \fIbfdname\fR" 4
.IX Item "-T bfdname"
diff -rNU3 dist.orig/binutils/objcopy.c dist.nbsd/binutils/objcopy.c
--- dist.orig/binutils/objcopy.c Mon Mar 25 08:06:21 2013
+++ dist.nbsd/binutils/objcopy.c Wed Feb 19 16:39:33 2014
@@ -30,6 +30,8 @@
#include "filenames.h"
#include "fnmatch.h"
#include "elf-bfd.h"
+#include <sys/stat.h>
+#include <ctype.h>
#include "libbfd.h"
#include "coff/internal.h"
#include "libcoff.h"
diff -rNU3 dist.orig/binutils/readelf.c dist.nbsd/binutils/readelf.c
--- dist.orig/binutils/readelf.c Mon Mar 25 08:06:21 2013
+++ dist.nbsd/binutils/readelf.c Wed Feb 19 16:39:33 2014
@@ -3801,7 +3801,7 @@
if (elf_header.e_phnum > 1)
printf (_("\nProgram Headers:\n"));
else
- printf (_("\nProgram Headers:\n"));
+ printf (_("\nProgram Header:\n"));
if (is_32bit_elf)
printf
@@ -6974,6 +6974,11 @@
remaining = 4;
}
+ else
+ {
+ addr.section = SHN_UNDEF;
+ addr.offset = 0;
+ }
if ((word & 0x80000000) == 0)
{
@@ -12665,6 +12670,38 @@
return buff;
}
+static int
+process_netbsd_elf_note (Elf_Internal_Note * pnote)
+{
+ unsigned int version;
+
+ switch (pnote->type)
+ {
+ case NT_NETBSD_IDENT:
+ version = byte_get((unsigned char *)pnote->descdata, sizeof(version));
+ if ((version / 10000) % 100)
+ printf (" NetBSD\t0x%08lx\tIDENT %u (%u.%u%s%c)\n", pnote->descsz,
+ version, version / 100000000, (version / 1000000) % 100,
+ (version / 10000) % 100 > 26 ? "Z" : "",
+ 'A' + (version / 10000) % 26);
+ else
+ printf (" NetBSD\t0x%08lx\tIDENT %u (%u.%u.%u)\n", pnote->descsz,
+ version, version / 100000000, (version / 1000000) % 100,
+ (version / 100) % 100);
+ return 1;
+ case NT_NETBSD_MARCH:
+ printf (" NetBSD\t0x%08lx\tMARCH <%s>\n", pnote->descsz,
+ pnote->descdata);
+ return 1;
+ default:
+ break;
+ }
+
+ printf (" NetBSD\t0x%08lx\tUnknown note type: (0x%08lx)\n", pnote->descsz,
+ pnote->type);
+ return 1;
+}
+
static int
print_gnu_note (Elf_Internal_Note *pnote)
{
@@ -12765,6 +12802,23 @@
}
break;
+ /* On SuperH, PT_GETREGS == mach+3 and PT_GETFPREGS == mach+5.
+ There's also old PT___GETREGS40 == mach + 1 for old reg
+ structure which lacks GBR. */
+ case EM_SH:
+ switch (e_type)
+ {
+ case NT_NETBSDCORE_FIRSTMACH + 1:
+ return _("PT___GETREGS40 (old reg structure)");
+ case NT_NETBSDCORE_FIRSTMACH + 3:
+ return _("PT_GETREGS (reg structure)");
+ case NT_NETBSDCORE_FIRSTMACH + 5:
+ return _("PT_GETFPREGS (fpreg structure)");
+ default:
+ break;
+ }
+ break;
+
/* On all other arch's, PT_GETREGS == mach+1 and
PT_GETFPREGS == mach+3. */
default:
@@ -12970,6 +13024,10 @@
else if (const_strneq (pnote->namedata, "GNU"))
/* GNU-specific object file notes. */
nt = get_gnu_elf_note_type (pnote->type);
+
+ else if (const_strneq (pnote->namedata, "NetBSD"))
+ /* NetBSD-specific core file notes. */
+ return process_netbsd_elf_note (pnote);
else if (const_strneq (pnote->namedata, "NetBSD-CORE"))
/* NetBSD-specific core file notes. */
diff -rNU3 dist.orig/binutils/strings.c dist.nbsd/binutils/strings.c
--- dist.orig/binutils/strings.c Thu Feb 9 04:51:44 2012
+++ dist.nbsd/binutils/strings.c Wed Feb 19 16:39:33 2014
@@ -598,7 +598,7 @@
else
#elif !BFD_HOST_64BIT_LONG
if (start != (unsigned long) start)
- printf ("++%7ld ", (unsigned long) start);
+ printf ("++%7llu ", (unsigned long) start);
else
#endif
printf ("%7ld ", (long) start);
diff -rNU3 dist.orig/config.guess dist.nbsd/config.guess
--- dist.orig/config.guess Mon Jun 6 10:36:06 2011
+++ dist.nbsd/config.guess Wed Feb 19 16:39:33 2014
@@ -160,14 +160,28 @@
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
+ coldfire) machine=m5407-unknown ;;
+ earm*eb*) machine=armeb-unknown ;;
+ earm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
- # to ELF recently, or will in the future.
+ # to ELF recently, or will in the future and ABI.
case "${UNAME_MACHINE_ARCH}" in
+ coldfire) os=netbsdelf ;;
+ earm*)
+ eval $set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ os=netbsdelf-eabi
+ else
+ os=netbsdelf-eabihf
+ fi
+ ;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
diff -rNU3 dist.orig/config.sub dist.nbsd/config.sub
--- dist.orig/config.sub Wed Apr 25 15:53:25 2012
+++ dist.nbsd/config.sub Wed Feb 19 16:39:33 2014
@@ -122,9 +122,9 @@
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | \
+ netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
@@ -332,7 +332,8 @@
basic_machine=$basic_machine-unknown
os=-none
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | m5407 \
+ | v70 | w65 | z8k)
;;
ms1)
basic_machine=mt-unknown
@@ -375,7 +376,7 @@
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
@@ -388,6 +389,7 @@
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
+ | m5200-* | m5407-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
@@ -528,15 +530,6 @@
basic_machine=powerpc-ibm
os=-cnk
;;
- c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
c90)
basic_machine=c90-cray
os=-unicos
@@ -1541,15 +1534,6 @@
os=-aout
;;
c4x-* | tic4x-*)
- os=-coff
- ;;
- tic54x-*)
- os=-coff
- ;;
- tic55x-*)
- os=-coff
- ;;
- tic6x-*)
os=-coff
;;
# This must come before the *-dec entry.
diff -rNU3 dist.orig/gas/atof-generic.c dist.nbsd/gas/atof-generic.c
--- dist.orig/gas/atof-generic.c Wed Sep 2 07:24:19 2009
+++ dist.nbsd/gas/atof-generic.c Wed Feb 19 16:39:28 2014
@@ -121,6 +121,32 @@
switch (first_digit[0])
{
+ case 's':
+ case 'S':
+ if (!strncasecmp ("snan", first_digit, 4))
+ {
+ address_of_generic_floating_point_number->sign = 0;
+ address_of_generic_floating_point_number->exponent = 0;
+ address_of_generic_floating_point_number->leader =
+ address_of_generic_floating_point_number->low;
+ *address_of_string_pointer = first_digit + 4;
+ return 0;
+ }
+ break;
+
+ case 'q':
+ case 'Q':
+ if (!strncasecmp ("qnan", first_digit, 4))
+ {
+ address_of_generic_floating_point_number->sign = 0;
+ address_of_generic_floating_point_number->exponent = 0;
+ address_of_generic_floating_point_number->leader =
+ address_of_generic_floating_point_number->low;
+ *address_of_string_pointer = first_digit + 4;
+ return 0;
+ }
+ break;
+
case 'n':
case 'N':
if (!strncasecmp ("nan", first_digit, 3))
diff -rNU3 dist.orig/gas/config/atof-vax.c dist.nbsd/gas/config/atof-vax.c
--- dist.orig/gas/config/atof-vax.c Wed Oct 17 16:45:54 2007
+++ dist.nbsd/gas/config/atof-vax.c Wed Feb 19 16:39:28 2014
@@ -268,10 +268,27 @@
int exponent_skippage;
LITTLENUM_TYPE word1;
- /* JF: Deal with new Nan, +Inf and -Inf codes. */
if (f->sign != '-' && f->sign != '+')
{
- make_invalid_floating_point_number (words);
+ if (f->sign == 0)
+ {
+ /* All NaNs are 0. */
+ memset (words, 0x00, sizeof (LITTLENUM_TYPE) * precision);
+ }
+ else if (f->sign == 'P')
+ {
+ /* Positive Infinity. */
+ memset (words, 0xff, sizeof (LITTLENUM_TYPE) * precision);
+ words[0] &= 0x7fff;
+ }
+ else if (f->sign == 'N')
+ {
+ /* Negative Infinity. */
+ memset (words, 0x00, sizeof (LITTLENUM_TYPE) * precision);
+ words[0] = 0x0080;
+ }
+ else
+ make_invalid_floating_point_number (words);
return return_value;
}
diff -rNU3 dist.orig/gas/config/tc-arm.c dist.nbsd/gas/config/tc-arm.c
--- dist.orig/gas/config/tc-arm.c Mon Mar 25 08:06:21 2013
+++ dist.nbsd/gas/config/tc-arm.c Wed Feb 19 16:39:28 2014
@@ -17290,12 +17290,16 @@
asection *sect;
for (sect = stdoutput->sections; sect != NULL; sect = sect->next)
- if (seg_info (sect)->tc_segment_info_data.current_it.state
- == MANUAL_IT_BLOCK)
- {
- as_warn (_("section '%s' finished with an open IT block."),
- sect->name);
- }
+ {
+ segment_info_type *seginfo = seg_info (sect);
+
+ if (seginfo && seginfo->tc_segment_info_data.current_it.state
+ == MANUAL_IT_BLOCK)
+ {
+ as_warn (_("section '%s' finished with an open IT block."),
+ sect->name);
+ }
+ }
#else
if (now_it.state == MANUAL_IT_BLOCK)
as_warn (_("file finished with an open IT block."));
diff -rNU3 dist.orig/gas/config/tc-m68k.c dist.nbsd/gas/config/tc-m68k.c
--- dist.orig/gas/config/tc-m68k.c Wed May 16 10:26:47 2012
+++ dist.nbsd/gas/config/tc-m68k.c Wed Feb 19 16:39:28 2014
@@ -7426,12 +7426,12 @@
}
}
- /* Remove 'm' or 'mc' prefix from 68k variants. */
+ /* Remove 'm' or 'mc' prefix from 68k or coldfire variants. */
if (allow_m)
{
if (arg[0] == 'm')
{
- if (arg[1] == '6')
+ if (arg[1] == '6' || arg[1] == '5')
arg += 1;
else if (arg[1] == 'c' && arg[2] == '6')
arg += 2;
diff -rNU3 dist.orig/gas/config/tc-mips.c dist.nbsd/gas/config/tc-mips.c
--- dist.orig/gas/config/tc-mips.c Tue Sep 4 14:21:03 2012
+++ dist.nbsd/gas/config/tc-mips.c Wed Feb 19 16:39:28 2014
@@ -909,6 +909,9 @@
NUM_FIX_VR4120_CLASSES
};
+/* ...likewise -mtrap-zero-jump. */
+static bfd_boolean mips_trap_zero_jump;
+
/* ...likewise -mfix-loongson2f-jump. */
static bfd_boolean mips_fix_loongson2f_jump;
@@ -941,6 +944,8 @@
efficient expansion. */
static int mips_relax_branch;
+
+static int mips_fix_loongson2f_btb;
/* The expansion of many macros depends on the type of symbol that
they refer to. For example, when generating position-dependent code,
@@ -1316,6 +1321,7 @@
static void mips16_macro_build
(expressionS *, const char *, const char *, va_list *);
static void load_register (int, expressionS *, int);
+static void macro_build (expressionS *, const char *, const char *, ...);
static void macro_start (void);
static void macro_end (void);
static void macro (struct mips_cl_insn * ip);
@@ -3626,6 +3632,35 @@
return nops;
}
+static void
+trap_zero_jump (struct mips_cl_insn * ip)
+{
+ if (strcmp (ip->insn_mo->name, "j") == 0
+ || strcmp (ip->insn_mo->name, "jr") == 0
+ || strcmp (ip->insn_mo->name, "jalr") == 0)
+ {
+ int sreg;
+
+ if (mips_opts.warn_about_macros)
+ return;
+
+ sreg = EXTRACT_OPERAND (0, RS, *ip);
+ if (mips_opts.isa == ISA_MIPS32
+ || mips_opts.isa == ISA_MIPS32R2
+ || mips_opts.isa == ISA_MIPS64
+ || mips_opts.isa == ISA_MIPS64R2)
+ {
+ expressionS ep;
+ ep.X_op = O_constant;
+ ep.X_add_number = 4096;
+ macro_build (&ep, "tltiu", "s,j", sreg, BFD_RELOC_LO16);
+ }
+ else if (mips_opts.isa != ISA_UNKNOWN
+ && mips_opts.isa != ISA_MIPS1)
+ macro_build (NULL, "teq", "s,t", sreg, 0);
+ }
+}
+
/* Fix NOP issue: Replace nops by "or at,at,zero". */
static void
@@ -3663,6 +3698,16 @@
ep.X_add_number = 0xffff;
macro_build (&ep, "ori", "t,r,i", ATREG, ATREG, BFD_RELOC_LO16);
macro_build (NULL, "and", "d,v,t", sreg, sreg, ATREG);
+ /* Hide these three instructions to avoid getting a ``macro expanded into
+ multiple instructions'' warning. */
+ if (mips_relax.sequence != 2) {
+ mips_macro_warning.sizes[0] -= 3 * 4;
+ mips_macro_warning.insns[0] -= 3;
+ }
+ if (mips_relax.sequence != 1) {
+ mips_macro_warning.sizes[1] -= 3 * 4;
+ mips_macro_warning.insns[1] -= 3;
+ }
}
}
@@ -3718,6 +3763,11 @@
if (mips_opts.mips16 && history[0].fixp[0])
return FALSE;
+ if (mips_fix_loongson2f)
+ fix_loongson2f (ip);
+ if (mips_trap_zero_jump)
+ trap_zero_jump (ip);
+
/* If the branch is itself the target of a branch, we can not swap.
We cheat on this; all we check for is whether there is a label on
this instruction. If there are any branches to anything other than
@@ -4764,6 +4814,45 @@
r[i] = (bfd_reloc_code_real_type) va_arg (*args, int);
}
+/* Fix jump through register issue on loongson2f processor for kernel code:
+ force a BTB clear before the jump to prevent it from being incorrectly
+ prefetched by the branch prediction engine. */
+
+static void
+macro_build_jrpatch (expressionS *ep, unsigned int sreg)
+{
+ if (!mips_fix_loongson2f_btb)
+ return;
+
+ if (sreg == ZERO || sreg == KT0 || sreg == KT1 || sreg == AT)
+ return;
+
+ if (!mips_opts.at)
+ {
+ as_warn (_("unable to apply loongson2f BTB workaround when .set noat"));
+ return;
+ }
+
+ /* li $at, COP_0_BTB_CLEAR | COP_0_RAS_DISABLE */
+ ep->X_op = O_constant;
+ ep->X_add_number = 3;
+ macro_build (ep, "ori", "t,r,i", AT, ZERO, BFD_RELOC_LO16);
+
+ /* dmtc0 $at, COP_0_DIAG */
+ macro_build (NULL, "dmtc0", "t,G", AT, 22);
+
+ /* Hide these two instructions to avoid getting a ``macro expanded into
+ multiple instructions'' warning. */
+ if (mips_relax.sequence != 2) {
+ mips_macro_warning.sizes[0] -= 2 * 4;
+ mips_macro_warning.insns[0] -= 2;
+ }
+ if (mips_relax.sequence != 1) {
+ mips_macro_warning.sizes[1] -= 2 * 4;
+ mips_macro_warning.insns[0] -= 2;
+ }
+}
+
/* Build an instruction created by a macro expansion. This is passed
a pointer to the count of instructions created so far, an
expression, the name of the instruction to build, an operand format
@@ -7637,6 +7726,26 @@
macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t", treg, tempreg, breg);
break;
+ case M_JR_S:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jr", "s", sreg);
+ return; /* didn't modify $at */
+
+ case M_J_S:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "j", "s", sreg);
+ return; /* didn't modify $at */
+
+ case M_JALR_S:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jalr", "s", sreg);
+ return; /* didn't modify $at */
+
+ case M_JALR_DS:
+ macro_build_jrpatch (&expr1, sreg);
+ macro_build (NULL, "jalr", "d,s", dreg, sreg);
+ return; /* didn't modify $at */
+
case M_MSGSND:
gas_assert (!mips_opts.micromips);
{
@@ -14350,6 +14459,8 @@
OPTION_SINGLE_FLOAT,
OPTION_DOUBLE_FLOAT,
OPTION_32,
+ OPTION_TRAP_ZERO_JUMP,
+ OPTION_NO_TRAP_ZERO_JUMP,
#ifdef OBJ_ELF
OPTION_CALL_SHARED,
OPTION_CALL_NONPIC,
@@ -14364,6 +14475,8 @@
OPTION_NO_PDR,
OPTION_MVXWORKS_PIC,
#endif /* OBJ_ELF */
+ OPTION_FIX_LOONGSON2F_BTB,
+ OPTION_NO_FIX_LOONGSON2F_BTB,
OPTION_END_OF_ENUM
};
@@ -14421,6 +14534,8 @@
{"mno-fix-loongson2f-jump", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_JUMP},
{"mfix-loongson2f-nop", no_argument, NULL, OPTION_FIX_LOONGSON2F_NOP},
{"mno-fix-loongson2f-nop", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_NOP},
+ {"mfix-loongson2f-btb", no_argument, NULL, OPTION_FIX_LOONGSON2F_BTB},
+ {"mno-fix-loongson2f-btb", no_argument, NULL, OPTION_NO_FIX_LOONGSON2F_BTB},
{"mfix-vr4120", no_argument, NULL, OPTION_FIX_VR4120},
{"mno-fix-vr4120", no_argument, NULL, OPTION_NO_FIX_VR4120},
{"mfix-vr4130", no_argument, NULL, OPTION_FIX_VR4130},
@@ -14459,6 +14574,9 @@
make testing easier. */
{"32", no_argument, NULL, OPTION_32},
+ {"mtrap-zero-jump", no_argument, NULL, OPTION_TRAP_ZERO_JUMP},
+ {"mno-trap-zero-jump", no_argument, NULL, OPTION_NO_TRAP_ZERO_JUMP},
+
/* ELF-specific options. */
#ifdef OBJ_ELF
{"KPIC", no_argument, NULL, OPTION_CALL_SHARED},
@@ -14750,6 +14868,14 @@
mips_fix_vr4130 = 0;
break;
+ case OPTION_FIX_LOONGSON2F_BTB:
+ mips_fix_loongson2f_btb = 1;
+ break;
+
+ case OPTION_NO_FIX_LOONGSON2F_BTB:
+ mips_fix_loongson2f_btb = 0;
+ break;
+
case OPTION_FIX_CN63XXP1:
mips_fix_cn63xxp1 = TRUE;
break;
@@ -14782,6 +14908,14 @@
mips_opts.sym32 = FALSE;
break;
+ case OPTION_TRAP_ZERO_JUMP:
+ mips_trap_zero_jump = TRUE;
+ break;
+
+ case OPTION_NO_TRAP_ZERO_JUMP:
+ mips_trap_zero_jump = FALSE;
+ break;
+
#ifdef OBJ_ELF
/* When generating ELF code, we permit -KPIC and -call_shared to
select SVR4_PIC, and -non_shared to select no PIC. This is
@@ -19411,6 +19545,7 @@
fprintf (stream, _("\
-mfix-loongson2f-jump work around Loongson2F JUMP instructions\n\
-mfix-loongson2f-nop work around Loongson2F NOP errata\n\
+-mfix-loongson2f-btb work around Loongson2F BTB errata\n\
-mfix-vr4120 work around certain VR4120 errata\n\
-mfix-vr4130 work around VR4130 mflo/mfhi errata\n\
-mfix-24k insert a nop after ERET and DERET instructions\n\
diff -rNU3 dist.orig/gas/config/tc-vax.c dist.nbsd/gas/config/tc-vax.c
--- dist.orig/gas/config/tc-vax.c Mon Jun 28 14:06:57 2010
+++ dist.nbsd/gas/config/tc-vax.c Wed Feb 19 16:39:28 2014
@@ -392,6 +392,9 @@
&& (PLT_symbol == NULL || fragP->fr_symbol != PLT_symbol)
&& fragP->fr_symbol != NULL
&& flag_want_pic
+#ifdef OBJ_ELF
+ && ELF_ST_VISIBILITY (S_GET_OTHER (fragP->fr_symbol)) != STV_HIDDEN
+#endif
&& (!S_IS_DEFINED (fragP->fr_symbol)
|| S_IS_WEAK (fragP->fr_symbol)
|| S_IS_EXTERNAL (fragP->fr_symbol)))
@@ -1073,6 +1076,154 @@
return retval;
}
+#ifdef OBJ_AOUT
+#ifndef BFD_ASSEMBLER
+void
+tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
+ char *where;
+ fixS *fixP;
+ relax_addressT segment_address_in_file;
+{
+ /*
+ * In: length of relocation (or of address) in chars: 1, 2 or 4.
+ * Out: GNU LD relocation length code: 0, 1, or 2.
+ */
+
+ static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2};
+ int r_symbolnum;
+ int r_flags;
+
+ know (fixP->fx_addsy != NULL);
+
+ md_number_to_chars (where,
+ fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file,
+ 4);
+
+ r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy)
+ ? S_GET_TYPE (fixP->fx_addsy)
+ : fixP->fx_addsy->sy_number);
+ r_flags = (fixP->fx_pcrel ? 1 : 0)
+ | (!S_IS_DEFINED (fixP->fx_addsy) ? 8 : 0) /* extern */
+ | ((nbytes_r_length[fixP->fx_size] & 3) << 1);
+
+#if 0
+ r_flags |= ((!S_IS_DEFINED(fixP->fx_addsy)
+ && fixP->fx_pcrel
+ && fixP->fx_addsy != GOT_symbol
+ && fixP->fx_addsy != PLT_symbol
+ && flags_want_pic) ? 0x10 : 0);
+#endif
+
+ switch (fixP->fx_r_type) {
+ case NO_RELOC:
+ break;
+ case NO_RELOC2:
+ if (r_flags & 8)
+ r_flags |= 0x80; /* setting the copy bit */
+ /* says we can convert */
+ /* to gotslot if needed */
+ break;
+ case RELOC_32:
+ if (flag_want_pic && S_IS_EXTERNAL(fixP->fx_addsy)) {
+ r_symbolnum = fixP->fx_addsy->sy_number;
+ r_flags |= 8; /* set extern bit */
+ }
+ break;
+ case RELOC_JMP_SLOT:
+ if (flag_want_pic) {
+ r_flags |= 0x20; /* set jmptable */
+ r_flags &= ~0x08; /* clear extern bit */
+ }
+ break;
+ case RELOC_JMP_TBL:
+ if (flag_want_pic) {
+ r_flags |= 0x20; /* set jmptable */
+ r_flags |= 0x08; /* set extern bit */
+ }
+ break;
+ case RELOC_GLOB_DAT:
+ if (flag_want_pic) {
+ r_flags |= 0x10; /* set baserel bit */
+ r_symbolnum = fixP->fx_addsy->sy_number;
+ if (S_IS_EXTERNAL(fixP->fx_addsy))
+ r_flags |= 8; /* set extern bit */
+ }
+ break;
+ }
+
+ where[4] = (r_symbolnum >> 0) & 0xff;
+ where[5] = (r_symbolnum >> 8) & 0xff;
+ where[6] = (r_symbolnum >> 16) & 0xff;
+ where[7] = r_flags;
+}
+#endif /* !BFD_ASSEMBLER */
+#endif /* OBJ_AOUT */
+
+/*
+ * BUGS, GRIPES, APOLOGIA, etc.
+ *
+ * The opcode table 'votstrs' needs to be sorted on opcode frequency.
+ * That is, AFTER we hash it with hash_...(), we want most-used opcodes
+ * to come out of the hash table faster.
+ *
+ * I am sorry to inflict yet another VAX assembler on the world, but
+ * RMS says we must do everything from scratch, to prevent pin-heads
+ * restricting this software.
+ */
+
+/*
+ * This is a vaguely modular set of routines in C to parse VAX
+ * assembly code using DEC mnemonics. It is NOT un*x specific.
+ *
+ * The idea here is that the assembler has taken care of all:
+ * labels
+ * macros
+ * listing
+ * pseudo-ops
+ * line continuation
+ * comments
+ * condensing any whitespace down to exactly one space
+ * and all we have to do is parse 1 line into a vax instruction
+ * partially formed. We will accept a line, and deliver:
+ * an error message (hopefully empty)
+ * a skeleton VAX instruction (tree structure)
+ * textual pointers to all the operand expressions
+ * a warning message that notes a silly operand (hopefully empty)
+ */
+
+/*
+ * E D I T H I S T O R Y
+ *
+ * 17may86 Dean Elsner. Bug if line ends immediately after opcode.
+ * 30apr86 Dean Elsner. New vip_op() uses arg block so change call.
+ * 6jan86 Dean Elsner. Crock vip_begin() to call vip_op_defaults().
+ * 2jan86 Dean Elsner. Invent synthetic opcodes.
+ * Widen vax_opcodeT to 32 bits. Use a bit for VIT_OPCODE_SYNTHETIC,
+ * which means this is not a real opcode, it is like a macro; it will
+ * be relax()ed into 1 or more instructions.
+ * Use another bit for VIT_OPCODE_SPECIAL if the op-code is not optimised
+ * like a regular branch instruction. Option added to vip_begin():
+ * exclude synthetic opcodes. Invent synthetic_votstrs[].
+ * 31dec85 Dean Elsner. Invent vit_opcode_nbytes.
+ * Also make vit_opcode into a char[]. We now have n-byte vax opcodes,
+ * so caller's don't have to know the difference between a 1-byte & a
+ * 2-byte op-code. Still need vax_opcodeT concept, so we know how
+ * big an object must be to hold an op.code.
+ * 30dec85 Dean Elsner. Widen typedef vax_opcodeT in "vax-inst.h"
+ * because vax opcodes may be 16 bits. Our crufty C compiler was
+ * happily initialising 8-bit vot_codes with 16-bit numbers!
+ * (Wouldn't the 'phone company like to compress data so easily!)
+ * 29dec85 Dean Elsner. New static table vax_operand_width_size[].
+ * Invented so we know hw many bytes a "I^#42" needs in its immediate
+ * operand. Revised struct vop in "vax-inst.h": explicitly include
+ * byte length of each operand, and it's letter-code datum type.
+ * 17nov85 Dean Elsner. Name Change.
+ * Due to ar(1) truncating names, we learned the hard way that
+ * "vax-inst-parse.c" -> "vax-inst-parse." dropping the "o" off
+ * the archived object name. SO... we shortened the name of this
+ * source file, and changed the makefile.
+ */
+
/* Parse a vax operand in DEC assembler notation.
For speed, expect a string of whitespace to be reduced to a single ' '.
This is the case for GNU AS, and is easy for other DEC-compatible
@@ -3150,7 +3301,7 @@
if (flag_want_pic && operandP->vop_mode == 8
&& this_add_symbol != NULL)
{
- as_warn (_("Symbol %s used as immediate operand in PIC mode."),
+ as_warn (_("Symbol '%s' used as immediate operand in PIC mode."),
S_GET_NAME (this_add_symbol));
}
#endif
@@ -3226,7 +3377,15 @@
length = 4;
}
}
+#ifdef OBJ_ELF
+ if (flag_want_pic && this_add_symbol != NULL)
+ {
+ as_warn (_("Symbol '%s' used as displacement in PIC mode."),
+ S_GET_NAME (this_add_symbol));
+ }
+#endif
p = frag_more (1 + length);
+ know (operandP->vop_reg != 0xf);
know (operandP->vop_reg >= 0);
p[0] = operandP->vop_reg
| ((at | "?\12\14?\16"[length]) << 4);
diff -rNU3 dist.orig/gas/config/te-armnbsd.h dist.nbsd/gas/config/te-armnbsd.h
--- dist.orig/gas/config/te-armnbsd.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gas/config/te-armnbsd.h Wed Feb 19 16:39:28 2014
@@ -0,0 +1,22 @@
+/* Copyright 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+
+ This file is part of GAS, the GNU Assembler.
+
+ GAS 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 3,
+ or (at your option) any later version.
+
+ GAS 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 GAS; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#include "te-nbsd.h"
+
+#define CPU_DEFAULT ARM_ARCH_V4
diff -rNU3 dist.orig/gas/config/te-armnbsdeabi.h dist.nbsd/gas/config/te-armnbsdeabi.h
--- dist.orig/gas/config/te-armnbsdeabi.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gas/config/te-armnbsdeabi.h Wed Feb 19 16:39:28 2014
@@ -0,0 +1,25 @@
+/* Copyright 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+
+ This file is part of GAS, the GNU Assembler.
+
+ GAS 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 3,
+ or (at your option) any later version.
+
+ GAS 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 GAS; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#include "te-nbsd.h"
+
+/* The EABI requires the use of VFP. */
+#define CPU_DEFAULT ARM_ARCH_V5TEJ
+#define FPU_DEFAULT FPU_ARCH_VFP
+#define EABI_DEFAULT EF_ARM_EABI_VER5
diff -rNU3 dist.orig/gas/config/te-armnbsdeabihf.h dist.nbsd/gas/config/te-armnbsdeabihf.h
--- dist.orig/gas/config/te-armnbsdeabihf.h Thu Jan 1 00:00:00 1970
+++ dist.nbsd/gas/config/te-armnbsdeabihf.h Wed Feb 19 16:39:28 2014
@@ -0,0 +1,25 @@
+/* Copyright 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+
+ This file is part of GAS, the GNU Assembler.
+
+ GAS 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 3,
+ or (at your option) any later version.
+
+ GAS 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 GAS; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#include "te-nbsd.h"
+
+/* The EABI requires the use of VFP. */
+#define CPU_DEFAULT ARM_ARCH_V5TEJ
+#define FPU_DEFAULT FPU_ARCH_VFP_V2
+#define EABI_DEFAULT EF_ARM_EABI_VER5
diff -rNU3 dist.orig/gas/config/vax-inst.h dist.nbsd/gas/config/vax-inst.h
--- dist.orig/gas/config/vax-inst.h Wed Sep 2 07:24:21 2009
+++ dist.nbsd/gas/config/vax-inst.h Wed Feb 19 16:39:28 2014
@@ -66,6 +66,8 @@
#define VAX_WIDEN_WORD (0x20) /* Add this to byte branch to get word br. */
#define VAX_WIDEN_LONG (0x6) /* Add this to byte branch to get long jmp.*/
/* Needs VAX_PC_RELATIVE_MODE byte after it*/
+#define VAX_CALLS (0xFB) /* Call with arg list on stack */
+#define VAX_CALLG (0xFA) /* Call with arg list in memory */
struct vit /* vax instruction tree */
{
diff -rNU3 dist.orig/gas/configure.tgt dist.nbsd/gas/configure.tgt
--- dist.orig/gas/configure.tgt Tue Sep 4 12:53:45 2012
+++ dist.nbsd/gas/configure.tgt Wed Feb 19 16:39:28 2014
@@ -51,7 +51,7 @@
m32c) cpu_type=m32c endian=little ;;
m32r) cpu_type=m32r endian=big ;;
m32rle) cpu_type=m32r endian=little ;;
- m5200) cpu_type=m68k ;;
+ m5200|m5407) cpu_type=m68k ;;
m68008) cpu_type=m68k ;;
m680[012346]0) cpu_type=m68k ;;
m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
@@ -111,9 +111,11 @@
arc-*-elf*) fmt=elf ;;
arm-*-aout) fmt=aout ;;
- arm-*-coff) fmt=coff ;;
- arm-*-rtems*) fmt=elf ;;
- arm-*-elf) fmt=elf ;;
+ arm-*-coff | thumb-*-coff) fmt=coff ;;
+ arm-*-rtems* | thumb-*-rtems*) fmt=elf ;;
+ arm-*-elf | thumb-*-elf) fmt=elf ;;
+ arm-*-netbsdelf*-*eabihf*) fmt=elf em=armnbsdeabihf ;;
+ arm-*-netbsdelf*-*eabi*) fmt=elf em=armnbsdeabi ;;
arm-*-eabi*) fmt=elf em=armeabi ;;
arm-*-symbianelf*) fmt=elf em=symbian ;;
arm-*-kaos*) fmt=elf ;;
@@ -124,8 +126,8 @@
arm-*-uclinux*eabi*) fmt=elf em=armlinuxeabi ;;
arm-*-uclinux*) fmt=elf em=linux ;;
arm-*-nacl*) fmt=elf em=nacl ;;
- arm-*-netbsdelf*) fmt=elf em=nbsd ;;
- arm-*-*n*bsd*) fmt=aout em=nbsd ;;
+ arm-*-netbsdelf*) fmt=elf em=armnbsd ;;
+ arm-*-*n*bsd*) fmt=aout em=armnbsd ;;
arm-*-nto*) fmt=elf ;;
arm-epoc-pe) fmt=coff em=epoc-pe ;;
arm-wince-pe | arm-*-wince | arm*-*-mingw32ce* | arm*-*-cegcc*)
diff -rNU3 dist.orig/gas/doc/Makefile.am dist.nbsd/gas/doc/Makefile.am
--- dist.orig/gas/doc/Makefile.am Tue Sep 4 12:53:45 2012
+++ dist.nbsd/gas/doc/Makefile.am Wed Feb 19 16:39:28 2014
@@ -24,6 +24,8 @@
-I "$(top_srcdir)/../bfd/doc" -I ../../bfd/doc
asconfig.texi: $(CONFIG).texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_asconfig.text:
rm -f asconfig.texi
cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
chmod u+w ./asconfig.texi
@@ -103,6 +105,8 @@
# The sed command removes the no-adjust Nroff command so that
# the man output looks standard.
as.1: $(srcdir)/as.texinfo asconfig.texi $(CPU_DOCS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_as.1:
touch $@
-$(TEXI2POD) $(MANCONF) < $(srcdir)/as.texinfo > as.pod
-($(POD2MAN) as.pod | \
diff -rNU3 dist.orig/gas/doc/Makefile.in dist.nbsd/gas/doc/Makefile.in
--- dist.orig/gas/doc/Makefile.in Tue Sep 4 12:53:45 2012
+++ dist.nbsd/gas/doc/Makefile.in Wed Feb 19 16:39:28 2014
@@ -374,6 +374,8 @@
-rm -rf .libs _libs
as.info: as.texinfo $(as_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_as.info: as.texinfo $(as_TEXINFOS)
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
@@ -756,6 +758,8 @@
asconfig.texi: $(CONFIG).texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_asconfig.texi:
rm -f asconfig.texi
cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
chmod u+w ./asconfig.texi
@@ -773,6 +777,8 @@
# The sed command removes the no-adjust Nroff command so that
# the man output looks standard.
as.1: $(srcdir)/as.texinfo asconfig.texi $(CPU_DOCS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_as.1:
touch $@
-$(TEXI2POD) $(MANCONF) < $(srcdir)/as.texinfo > as.pod
-($(POD2MAN) as.pod | \
Binary files dist.orig/gas/doc/as.info and dist.nbsd/gas/doc/as.info differ
diff -rNU3 dist.orig/gas/doc/c-mips.texi dist.nbsd/gas/doc/c-mips.texi
--- dist.orig/gas/doc/c-mips.texi Tue Sep 4 14:16:07 2012
+++ dist.nbsd/gas/doc/c-mips.texi Wed Feb 19 16:39:28 2014
@@ -210,6 +210,14 @@
@itemx -mno-fix-vr4130
Insert nops to work around the VR4130 @samp{mflo}/@samp{mfhi} errata.
+@item -mfix-loongson2f-btb
+@itemx -mno-fix-loongson2f-btb
+Clear the Branch Target Buffer before any jump through a register. This
+option is intended to be used on kernel code for the Loongson 2F processor
+only; userland code compiled with this option will fault, and kernel code
+compiled with this option run on another processor than Loongson 2F will
+yield unpredictable results.
+
@item -mfix-24k
@itemx -mno-fix-24k
Insert nops to work around the 24K @samp{eret}/@samp{deret} errata.
diff -rNU3 dist.orig/gas/remap.c dist.nbsd/gas/remap.c
--- dist.orig/gas/remap.c Fri Mar 11 14:18:24 2011
+++ dist.nbsd/gas/remap.c Wed Feb 19 16:39:30 2014
@@ -84,8 +84,8 @@
return xstrdup (filename);
name = filename + map->old_len;
name_len = strlen (name) + 1;
- s = (char *) alloca (name_len + map->new_len);
+ s = (char *) xmalloc (name_len + map->new_len);
memcpy (s, map->new_prefix, map->new_len);
memcpy (s + map->new_len, name, name_len);
- return xstrdup (s);
+ return s;
}
diff -rNU3 dist.orig/gprof/corefile.c dist.nbsd/gprof/corefile.c
--- dist.orig/gprof/corefile.c Tue Mar 6 13:54:59 2012
+++ dist.nbsd/gprof/corefile.c Wed Feb 19 16:39:31 2014
@@ -30,6 +30,8 @@
#include "corefile.h"
#include "safe-ctype.h"
+#include <stdlib.h>
+
bfd *core_bfd;
static int core_num_syms;
static asymbol **core_syms;
diff -rNU3 dist.orig/gprof/gprof.c dist.nbsd/gprof/gprof.c
--- dist.orig/gprof/gprof.c Fri Jun 12 15:33:30 2009
+++ dist.nbsd/gprof/gprof.c Wed Feb 19 16:39:31 2014
@@ -47,6 +47,8 @@
static void usage (FILE *, int) ATTRIBUTE_NORETURN;
+#include <stdlib.h>
+
const char * whoami;
const char * function_mapping_file;
static const char * external_symbol_table;
Binary files dist.orig/gprof/gprof.info and dist.nbsd/gprof/gprof.info differ
diff -rNU3 dist.orig/include/bfdlink.h dist.nbsd/include/bfdlink.h
--- dist.orig/include/bfdlink.h Mon Apr 9 16:27:18 2012
+++ dist.nbsd/include/bfdlink.h Wed Feb 19 16:39:28 2014
@@ -435,6 +435,10 @@
option). If this is NULL, no symbols are being wrapped. */
struct bfd_hash_table *wrap_hash;
+ /* Hash table of symbols which may be left unresolved during
+ a link. If this is NULL, no symbols can be left unresolved. */
+ struct bfd_hash_table *ignore_hash;
+
/* The output BFD. */
bfd *output_bfd;
diff -rNU3 dist.orig/include/elf/common.h dist.nbsd/include/elf/common.h
--- dist.orig/include/elf/common.h Tue Sep 4 12:53:47 2012
+++ dist.nbsd/include/elf/common.h Wed Feb 19 16:39:28 2014
@@ -607,6 +607,7 @@
/* Values for NetBSD .note.netbsd.ident notes. Note name is "NetBSD". */
#define NT_NETBSD_IDENT 1
+#define NT_NETBSD_MARCH 5
/* Values for OpenBSD .note.openbsd.ident notes. Note name is "OpenBSD". */
diff -rNU3 dist.orig/include/objalloc.h dist.nbsd/include/objalloc.h
--- dist.orig/include/objalloc.h Tue May 10 10:21:08 2005
+++ dist.nbsd/include/objalloc.h Wed Feb 19 16:39:28 2014
@@ -1,5 +1,5 @@
/* objalloc.h -- routines to allocate memory for objects
- Copyright 1997, 2001 Free Software Foundation, Inc.
+ Copyright 1997-2012 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Solutions.
This program is free software; you can redistribute it and/or modify it
@@ -91,7 +91,7 @@
if (__len == 0) \
__len = 1; \
__len = (__len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1); \
- (__len <= __o->current_space \
+ (__len != 0 && __len <= __o->current_space \
? (__o->current_ptr += __len, \
__o->current_space -= __len, \
(void *) (__o->current_ptr - __len)) \
diff -rNU3 dist.orig/include/opcode/mips.h dist.nbsd/include/opcode/mips.h
--- dist.orig/include/opcode/mips.h Tue Sep 4 14:21:05 2012
+++ dist.nbsd/include/opcode/mips.h Wed Feb 19 16:39:28 2014
@@ -1035,7 +1035,11 @@
M_DSUB_I,
M_DSUBU_I,
M_DSUBU_I_2,
+ M_JR_S,
+ M_J_S,
M_J_A,
+ M_JALR_S,
+ M_JALR_DS,
M_JAL_1,
M_JAL_2,
M_JAL_A,
diff -rNU3 dist.orig/ld/Makefile.am dist.nbsd/ld/Makefile.am
--- dist.orig/ld/Makefile.am Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/Makefile.am Wed Feb 19 16:39:31 2014
@@ -145,12 +145,14 @@
earmelf_linux_eabi.c \
earmelf_nacl.c \
earmelf_nbsd.c \
+ earmelf_nbsd_eabi.c \
earmelf_vxworks.c \
earmelfb.c \
earmelfb_linux.c \
earmelfb_linux_eabi.c \
earmelfb_nacl.c \
earmelfb_nbsd.c \
+ earmelfb_nbsd_eabi.c \
earmnbsd.c \
earmnto.c \
earmpe.c \
@@ -731,6 +733,11 @@
$(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf_nbsd "$(tdir_armelf_nbsd)"
+earmelf_nbsd_abi.c: $(srcdir)/emulparams/armelf_nbsd_abi.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelf_nbsd_abi "$(tdir_armelf_nbsd_abi)"
earmelf_vxworks.c: $(srcdir)/emulparams/armelf_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/armelf.sh \
$(ELF_DEPS) $(srcdir)/emultempl/vxworks.em \
@@ -766,6 +773,12 @@
$(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelfb_nbsd "$(tdir_armelfb_nbsd)"
+earmelfb_nbsd_abi.c: $(srcdir)/emulparams/armelfb_nbsd_abi.sh \
+ $(srcdir)/emulparams/armelf_nbsd_abi.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelfb_nbsd_abi "$(tdir_armelfb_nbsd_abi)"
earmnbsd.c: $(srcdir)/emulparams/armnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} armnbsd "$(tdir_armnbsd)"
@@ -2219,6 +2232,8 @@
# because almost all configs use "gen" version of manual.
# Set DOCVER above to change.
configdoc.texi: ${DOCVER}-doc.texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_configdoc.texi:
cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi
chmod u+w ./configdoc.texi
@@ -2226,6 +2241,8 @@
# The sed command removes the no-adjust Nroff command so that
# the man output looks standard.
ld.1: $(srcdir)/ld.texinfo configdoc.texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ld.1:
touch $@
-$(TEXI2POD) $(MANCONF) < $(srcdir)/ld.texinfo > ld.pod
-($(POD2MAN) ld.pod | \
diff -rNU3 dist.orig/ld/Makefile.in dist.nbsd/ld/Makefile.in
--- dist.orig/ld/Makefile.in Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/Makefile.in Wed Feb 19 16:39:31 2014
@@ -452,12 +452,14 @@
earmelf_linux_eabi.c \
earmelf_nacl.c \
earmelf_nbsd.c \
+ earmelf_nbsd_eabi.c \
earmelf_vxworks.c \
earmelfb.c \
earmelfb_linux.c \
earmelfb_linux_eabi.c \
earmelfb_nacl.c \
earmelfb_nbsd.c \
+ earmelfb_nbsd_eabi.c \
earmnbsd.c \
earmnto.c \
earmpe.c \
@@ -1078,12 +1080,14 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_linux_eabi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_nacl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_nbsd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_nbsd_abi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelf_vxworks.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_linux_eabi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nacl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nbsd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmelfb_nbsd_eabi.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmnbsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmnto.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earmpe.Po@am__quote@
@@ -1490,6 +1494,8 @@
-rm -f libtool config.lt
ld.info: ld.texinfo $(ld_TEXINFOS)
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ld.info: ld.texinfo $(ld_TEXINFOS)
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
@@ -2201,6 +2207,11 @@
$(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf_nbsd "$(tdir_armelf_nbsd)"
+earmelf_nbsd_eabi.c: $(srcdir)/emulparams/armelf_nbsd_eabi.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelf_nbsd_eabi "$(tdir_armelf_nbsd_eabi)"
earmelf_vxworks.c: $(srcdir)/emulparams/armelf_vxworks.sh \
$(srcdir)/emulparams/vxworks.sh $(srcdir)/emulparams/armelf.sh \
$(ELF_DEPS) $(srcdir)/emultempl/vxworks.em \
@@ -2236,6 +2247,12 @@
$(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelfb_nbsd "$(tdir_armelfb_nbsd)"
+earmelfb_nbsd_eabi.c: $(srcdir)/emulparams/armelfb_nbsd_eabi.sh \
+ $(srcdir)/emulparams/armelf_nbsd_eabi.sh \
+ $(srcdir)/emulparams/armelf.sh \
+ $(ELF_DEPS) $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} armelfb_nbsd_eabi "$(tdir_armelfb_nbsd_eabi)"
earmnbsd.c: $(srcdir)/emulparams/armnbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} armnbsd "$(tdir_armnbsd)"
@@ -3632,6 +3649,8 @@
# because almost all configs use "gen" version of manual.
# Set DOCVER above to change.
configdoc.texi: ${DOCVER}-doc.texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_configdoc.texi:
cp ${srcdir}/${DOCVER}-doc.texi ./configdoc.texi
chmod u+w ./configdoc.texi
@@ -3639,6 +3658,8 @@
# The sed command removes the no-adjust Nroff command so that
# the man output looks standard.
ld.1: $(srcdir)/ld.texinfo configdoc.texi
+ @echo "NOT REBUILDING $@"
+NetBSD_DISABLED_ld.1:
touch $@
-$(TEXI2POD) $(MANCONF) < $(srcdir)/ld.texinfo > ld.pod
-($(POD2MAN) ld.pod | \
diff -rNU3 dist.orig/ld/configdoc.texi dist.nbsd/ld/configdoc.texi
--- dist.orig/ld/configdoc.texi Tue Nov 13 14:19:33 2012
+++ dist.nbsd/ld/configdoc.texi Thu Jan 1 00:00:00 1970
@@ -1,27 +0,0 @@
-@c ------------------------------ CONFIGURATION VARS:
-@c 1. Inclusiveness of this manual
-@set GENERIC
-
-@c 2. Specific target machines
-@set ARM
-@set C6X
-@set H8300
-@set HPPA
-@set I960
-@set M68HC11
-@set M68K
-@set MMIX
-@set MSP430
-@set POWERPC
-@set POWERPC64
-@set Renesas
-@set SPU
-@set TICOFF
-@set WIN32
-@set XTENSA
-
-@c 3. Properties of this configuration
-@clear SingleFormat
-@set UsesEnvVars
-@c ------------------------------ end CONFIGURATION VARS
-
diff -rNU3 dist.orig/ld/configure.tgt dist.nbsd/ld/configure.tgt
--- dist.orig/ld/configure.tgt Tue Sep 4 12:53:47 2012
+++ dist.nbsd/ld/configure.tgt Wed Feb 19 16:39:31 2014
@@ -64,7 +64,13 @@
arm-*-freebsd* | arm-*-kfreebsd*-gnu)
targ_emul=armelf_fbsd
targ_extra_emuls="armelf" ;;
-armeb-*-netbsdelf*) targ_emul=armelfb_nbsd;
+arm*eb-*-netbsdelf*-*eabi*)
+ targ_emul=armelfb_nbsd_eabi;
+ targ_extra_emuls="armelf_nbsd_eabi armelf armnbsd" ;;
+arm*-*-netbsdelf*-*eabi*)
+ targ_emul=armelf_nbsd_eabi;
+ targ_extra_emuls="armelfb_nbsd_eabi armelf armnbsd" ;;
+arm*eb-*-netbsdelf*) targ_emul=armelfb_nbsd;
targ_extra_emuls="armelf_nbsd armelf armnbsd" ;;
arm-*-netbsdelf*) targ_emul=armelf_nbsd;
targ_extra_emuls="armelfb_nbsd armelf armnbsd" ;;
@@ -379,7 +385,8 @@
m68*-*-gnu*) targ_emul=m68kelf ;;
m68*-*-netbsd*4k*) targ_emul=m68k4knbsd
targ_extra_emuls="m68knbsd m68kelfnbsd" ;;
-m68*-*-netbsdelf*) targ_emul=m68kelfnbsd
+m68*-*-netbsdelf* | m5407*-*-netbsdelf*)
+ targ_emul=m68kelfnbsd
targ_extra_emuls="m68knbsd m68k4knbsd" ;;
m68*-*-netbsdaout* | m68*-*-netbsd*)
targ_emul=m68knbsd
@@ -409,12 +416,18 @@
mips*-sgi-irix*) targ_emul=mipsbig ;;
mips*el-*-ecoff*) targ_emul=mipsidtl ;;
mips*-*-ecoff*) targ_emul=mipsidt ;;
+mips64*el-*-netbsd*) targ_emul=elf32ltsmipn32
+ targ_extra_emuls="elf64btsmip elf64ltsmip elf32ltsmip elf32btsmipn32 elf32btsmip"
+ ;;
+mips64*-*-netbsd*) targ_emul=elf32btsmipn32
+ targ_extra_emuls="elf64ltsmip elf64btsmip elf32btsmip elf32ltsmipn32 elf32ltsmip"
+ ;;
mips*el-*-netbsd*) targ_emul=elf32ltsmip
targ_extra_emuls="elf32btsmip elf64ltsmip elf64btsmip"
;;
mips*-*-netbsd*) targ_emul=elf32btsmip
targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip"
- ;;
+ ;;
mips*-*-bsd*) targ_emul=mipsbig ;;
mips*vr4300el-*-elf*) targ_emul=elf32l4300 ;;
mips*vr4300-*-elf*) targ_emul=elf32b4300 ;;
@@ -654,10 +667,15 @@
tdir_sparclinux=${targ_alias}aout
tdir_elf64_sparc=`echo ${targ_alias} | sed -e 's/32//'`
tdir_sun4=sparc-sun-sunos4 ;;
-sparc64-*-netbsd* | sparc64-*-openbsd*)
- targ_emul=elf64_sparc
- targ_extra_emuls="elf32_sparc" ;;
-sparc*-*-netbsd*elf*) targ_emul=elf32_sparc ;;
+sparc64-*-netbsd*) targ_emul=elf64_sparc
+ targ_extra_emuls="elf32_sparc sparcnbsd"
+ ;;
+sparc64-*-openbsd*) targ_emul=elf64_sparc
+ targ_extra_emuls="elf32_sparc"
+ ;;
+sparc*-*-netbsd*elf*) targ_emul=elf32_sparc
+ targ_extra_emuls=sparcnbsd
+ ;;
sparc*-*-netbsd*) targ_emul=sparcnbsd ;;
sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
targ_emul=elf32_sparc_sol2
diff -rNU3 dist.orig/ld/emulparams/armelf_nbsd.sh dist.nbsd/ld/emulparams/armelf_nbsd.sh
--- dist.orig/ld/emulparams/armelf_nbsd.sh Tue May 30 16:45:32 2006
+++ dist.nbsd/ld/emulparams/armelf_nbsd.sh Wed Feb 19 16:39:31 2014
@@ -3,5 +3,12 @@
TEXT_START_ADDR=0x00008000
TARGET2_TYPE=got-rel
+unset DATA_START_SYMBOLS
unset STACK_ADDR
unset EMBEDDED
+
+case "$target" in
+ arm*-*-netbsdelf*-*eabi*)
+ LIB_PATH='=/usr/lib/oabi'
+ ;;
+esac
diff -rNU3 dist.orig/ld/emulparams/armelf_nbsd_eabi.sh dist.nbsd/ld/emulparams/armelf_nbsd_eabi.sh
--- dist.orig/ld/emulparams/armelf_nbsd_eabi.sh Thu Jan 1 00:00:00 1970
+++ dist.nbsd/ld/emulparams/armelf_nbsd_eabi.sh Wed Feb 19 16:39:31 2014
@@ -0,0 +1,18 @@
+. ${srcdir}/emulparams/armelf_nbsd.sh
+
+# Use the ARM ABI-compliant exception-handling sections.
+OTHER_READONLY_SECTIONS="
+ .ARM.extab ${RELOCATING-0} : { *(.ARM.extab${RELOCATING+* .gnu.linkonce.armextab.*}) }
+ ${RELOCATING+ PROVIDE_HIDDEN (__exidx_start = .); }
+ .ARM.exidx ${RELOCATING-0} : { *(.ARM.exidx${RELOCATING+* .gnu.linkonce.armexidx.*}) }
+ ${RELOCATING+ PROVIDE_HIDDEN (__exidx_end = .); }"
+
+unset LIB_PATH
+
+case "$target" in
+ arm*-*-netbsdelf*-*eabi*)
+ ;;
+ arm*-*-netbsdelf*)
+ LIB_PATH='=/usr/lib/eabi'
+ ;;
+esac
diff -rNU3 dist.orig/ld/emulparams/armelfb_nbsd_eabi.sh dist.nbsd/ld/emulparams/armelfb_nbsd_eabi.sh
--- dist.orig/ld/emulparams/armelfb_nbsd_eabi.sh Thu Jan 1 00:00:00 1970
+++ dist.nbsd/ld/emulparams/armelfb_nbsd_eabi.sh Wed Feb 19 16:39:31 2014
@@ -0,0 +1,2 @@
+. ${srcdir}/emulparams/armelf_nbsd_eabi.sh
+OUTPUT_FORMAT="elf32-bigarm"
diff -rNU3 dist.orig/ld/emulparams/elf32_sparc.sh dist.nbsd/ld/emulparams/elf32_sparc.sh
--- dist.orig/ld/emulparams/elf32_sparc.sh Mon Sep 20 18:41:15 2010
+++ dist.nbsd/ld/emulparams/elf32_sparc.sh Wed Feb 19 16:39:31 2014
@@ -13,6 +13,7 @@
TEMPLATE_NAME=elf32
DATA_PLT=
GENERATE_SHLIB_SCRIPT=yes
+#ELFSIZE=32
GENERATE_PIE_SCRIPT=yes
NOP=0x01000000
NO_SMALL_DATA=yes
diff -rNU3 dist.orig/ld/emulparams/elf32bmipn32-defs.sh dist.nbsd/ld/emulparams/elf32bmipn32-defs.sh
--- dist.orig/ld/emulparams/elf32bmipn32-defs.sh Tue Sep 4 14:14:28 2012
+++ dist.nbsd/ld/emulparams/elf32bmipn32-defs.sh Wed Feb 19 16:39:31 2014
@@ -6,6 +6,7 @@
# Handle both big- and little-ended 32-bit MIPS objects.
ARCH=mips
+MACHINE=
OUTPUT_FORMAT="elf32-bigmips"
BIG_OUTPUT_FORMAT="elf32-bigmips"
LITTLE_OUTPUT_FORMAT="elf32-littlemips"
diff -rNU3 dist.orig/ld/emulparams/elf64alpha_nbsd.sh dist.nbsd/ld/emulparams/elf64alpha_nbsd.sh
--- dist.orig/ld/emulparams/elf64alpha_nbsd.sh Mon Dec 17 23:54:58 2001
+++ dist.nbsd/ld/emulparams/elf64alpha_nbsd.sh Wed Feb 19 16:39:31 2014
@@ -1,2 +1,8 @@
. ${srcdir}/emulparams/elf64alpha.sh
ENTRY=__start
+
+NOP=0x47ff041f
+# XXX binutils 2.13
+# Note that the number is always big-endian, thus we have to
+# reverse the digit string.
+#NOP=0x0000fe2f1f04ff47 # unop; nop
diff -rNU3 dist.orig/ld/emulparams/elf_i386.sh dist.nbsd/ld/emulparams/elf_i386.sh
--- dist.orig/ld/emulparams/elf_i386.sh Mon Jun 11 13:23:50 2012
+++ dist.nbsd/ld/emulparams/elf_i386.sh Wed Feb 19 16:39:31 2014
@@ -9,7 +9,14 @@
MACHINE=
TEMPLATE_NAME=elf32
GENERATE_SHLIB_SCRIPT=yes
+#ELFSIZE=32
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0"
IREL_IN_PLT=
+
+case "$target" in
+ x86_64-*-netbsd*)
+ LIB_PATH='=/usr/lib/i386'
+ ;;
+esac
diff -rNU3 dist.orig/ld/emulparams/hppalinux.sh dist.nbsd/ld/emulparams/hppalinux.sh
--- dist.orig/ld/emulparams/hppalinux.sh Fri Feb 18 18:20:29 2011
+++ dist.nbsd/ld/emulparams/hppalinux.sh Wed Feb 19 16:39:31 2014
@@ -1,5 +1,5 @@
# If you change this file, please also look at files which source this one:
-# hppanbsd.sh
+# hppanbsd.sh hppaobsd.sh
SCRIPT_NAME=elf
ELFSIZE=32
diff -rNU3 dist.orig/ld/emulparams/hppaobsd.sh dist.nbsd/ld/emulparams/hppaobsd.sh
--- dist.orig/ld/emulparams/hppaobsd.sh Tue May 30 16:45:32 2006
+++ dist.nbsd/ld/emulparams/hppaobsd.sh Wed Feb 19 16:39:31 2014
@@ -1,4 +1,4 @@
-. ${srcdir}/emulparams/hppanbsd.sh
+. ${srcdir}/emulparams/hppalinux.sh
OUTPUT_FORMAT="elf32-hppa"
TEXT_START_ADDR=0x1000
diff -rNU3 dist.orig/ld/emulparams/m68kelf.sh dist.nbsd/ld/emulparams/m68kelf.sh
--- dist.orig/ld/emulparams/m68kelf.sh Tue Sep 29 16:28:52 2009
+++ dist.nbsd/ld/emulparams/m68kelf.sh Wed Feb 19 16:39:31 2014
@@ -10,5 +10,6 @@
TEMPLATE_NAME=elf32
EXTRA_EM_FILE=m68kelf
GENERATE_SHLIB_SCRIPT=yes
+ELFSIZE=32
GENERATE_PIE_SCRIPT=yes
NO_SMALL_DATA=yes
diff -rNU3 dist.orig/ld/emulparams/m68kelfnbsd.sh dist.nbsd/ld/emulparams/m68kelfnbsd.sh
--- dist.orig/ld/emulparams/m68kelfnbsd.sh Tue Dec 18 13:26:26 2001
+++ dist.nbsd/ld/emulparams/m68kelfnbsd.sh Wed Feb 19 16:39:31 2014
@@ -1,4 +1,4 @@
. ${srcdir}/emulparams/m68kelf.sh
TEXT_START_ADDR=0x2000
TARGET_PAGE_SIZE=0x2000
-MACHINE=
+NONPAGED_TEXT_START_ADDR=${TEXT_START_ADDR}
diff -rNU3 dist.orig/ld/emulparams/sh.sh dist.nbsd/ld/emulparams/sh.sh
--- dist.orig/ld/emulparams/sh.sh Thu Nov 22 09:08:04 2001
+++ dist.nbsd/ld/emulparams/sh.sh Wed Feb 19 16:39:31 2014
@@ -3,6 +3,6 @@
SCRIPT_NAME=sh
OUTPUT_FORMAT="coff-sh"
-TEXT_START_ADDR=0x8000
-TARGET_PAGE_SIZE=128
+TEXT_START_ADDR=0x1000
+TARGET_PAGE_SIZE=0x1000
ARCH=sh
diff -rNU3 dist.orig/ld/emulparams/shelf_nbsd.sh dist.nbsd/ld/emulparams/shelf_nbsd.sh
--- dist.orig/ld/emulparams/shelf_nbsd.sh Tue Jan 15 23:05:46 2008
+++ dist.nbsd/ld/emulparams/shelf_nbsd.sh Wed Feb 19 16:39:31 2014
@@ -9,7 +9,11 @@
DATA_START_SYMBOLS='PROVIDE (__data_start = .);';
-ENTRY=_start
+ENTRY=__start
unset EMBEDDED
unset OTHER_SECTIONS
+
+OTHER_READWRITE_SECTIONS='
+ .note.ABI-tag : { *(.note.ABI-tag) }
+'
diff -rNU3 dist.orig/ld/emultempl/elf32.em dist.nbsd/ld/emultempl/elf32.em
--- dist.orig/ld/emultempl/elf32.em Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/emultempl/elf32.em Wed Feb 19 16:39:31 2014
@@ -72,6 +72,9 @@
if [ "x${USE_LIBPATH}" = xyes ] ; then
case ${target} in
+ *-*-netbsd*)
+ ;;
+
*-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
fragment <<EOF
#ifdef HAVE_GLOB
@@ -103,6 +106,7 @@
{
ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
input_flags.dynamic = ${DYNAMIC_LINK-TRUE};
+ input_flags.add_DT_NEEDED_for_dynamic = TRUE;
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo TRUE ; else echo FALSE ; fi`;
config.separate_code = `if test "x${SEPARATE_CODE}" = xyes ; then echo TRUE ; else echo FALSE ; fi`;
}
@@ -375,6 +379,9 @@
EOF
case ${target} in
+ *-*-netbsd*)
+ ;;
+
*-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
fragment <<EOF
{
@@ -454,15 +461,25 @@
static bfd_boolean
gld${EMULATION_NAME}_search_needed (const char *path,
- struct dt_needed *n, int force)
+ struct dt_needed *n, int force, int prepend_sysroot)
{
const char *s;
const char *name = n->name;
size_t len;
struct dt_needed needed;
- if (name[0] == '/')
+ if (name[0] == '/') {
+ if (prepend_sysroot && ld_sysroot) {
+ bfd_boolean rv;
+ needed.by = n->by;
+ char *filename= concat(ld_sysroot, n->name, (const char *)NULL);
+ needed.name = filename;
+ rv = gld${EMULATION_NAME}_try_needed (&needed, force);
+ free(filename);
+ return rv;
+ }
return gld${EMULATION_NAME}_try_needed (n, force);
+ }
if (path == NULL || *path == '\0')
return FALSE;
@@ -501,6 +518,13 @@
}
strcpy (sset, name);
+ if (prepend_sysroot && filename[0] == '=')
+ abort();
+ if (filename[0] == '/' && prepend_sysroot && ld_sysroot) {
+ char *filename2 = concat(ld_sysroot, filename, (const char *)NULL);
+ free(filename);
+ filename = filename2;
+ }
needed.name = filename;
if (gld${EMULATION_NAME}_try_needed (&needed, force))
return TRUE;
@@ -621,6 +645,9 @@
# FreeBSD
;;
+ *-*-netbsd*)
+ ;;
+
*-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
fragment <<EOF
/* For a native linker, check the file /etc/ld.so.conf for directories
@@ -1262,13 +1289,13 @@
fragment <<EOF
if (gld${EMULATION_NAME}_search_needed (command_line.rpath_link,
- &n, force))
+ &n, force, 0))
break;
EOF
if [ "x${USE_LIBPATH}" = xyes ] ; then
fragment <<EOF
if (gld${EMULATION_NAME}_search_needed (command_line.rpath,
- &n, force))
+ &n, force, 1))
break;
EOF
fi
@@ -1279,11 +1306,11 @@
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- force))
+ force, 0))
break;
}
lib_path = (const char *) getenv ("LD_LIBRARY_PATH");
- if (gld${EMULATION_NAME}_search_needed (lib_path, &n, force))
+ if (gld${EMULATION_NAME}_search_needed (lib_path, &n, force, 0))
break;
EOF
fi
@@ -1293,12 +1320,10 @@
rp = bfd_elf_get_runpath_list (link_info.output_bfd, &link_info);
for (; !found && rp != NULL; rp = rp->next)
{
- char *tmpname = gld${EMULATION_NAME}_add_sysroot (rp->name);
found = (rp->by == l->by
- && gld${EMULATION_NAME}_search_needed (tmpname,
+ && gld${EMULATION_NAME}_search_needed (rp->name,
&n,
- force));
- free (tmpname);
+ force, 1));
}
if (found)
break;
@@ -1315,6 +1340,9 @@
# FreeBSD
;;
+ *-*-netbsd*)
+ ;;
+
*-*-linux-* | *-*-k*bsd*-* | *-*-gnu*)
# Linux
fragment <<EOF
@@ -1515,7 +1543,8 @@
a dep audit entry. */
if (audit_libs && *audit_libs != '\0')
{
- char *cp = xstrdup (audit_libs);
+ char *cp, *fcp;
+ fcp = cp = xstrdup (audit_libs);
do
{
int more = 0;
@@ -1533,6 +1562,7 @@
cp = more ? ++cp2 : NULL;
}
while (cp != NULL);
+ free (fcp);
}
}
diff -rNU3 dist.orig/ld/ldlex.h dist.nbsd/ld/ldlex.h
--- dist.orig/ld/ldlex.h Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/ldlex.h Wed Feb 19 16:39:31 2014
@@ -136,6 +136,7 @@
#endif /* ENABLE_PLUGINS */
OPTION_DEFAULT_SCRIPT,
OPTION_PRINT_OUTPUT_FORMAT,
+ OPTION_IGNORE_UNRESOLVED_SYMBOL
};
/* The initial parser states. */
diff -rNU3 dist.orig/ld/ldlex.l dist.nbsd/ld/ldlex.l
--- dist.orig/ld/ldlex.l Tue Sep 4 14:14:15 2012
+++ dist.nbsd/ld/ldlex.l Wed Feb 19 16:39:31 2014
@@ -60,10 +60,6 @@
#undef YY_INPUT
#define YY_INPUT(buf,result,max_size) result = yy_input (buf, max_size)
-#ifndef YY_NO_UNPUT
-#define YY_NO_UNPUT
-#endif
-
#define MAX_INCLUDE_DEPTH 10
static YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH];
static const char *file_name_stack[MAX_INCLUDE_DEPTH];
@@ -93,6 +89,8 @@
int yywrap (void) { return 1; }
#endif
%}
+
+%option nounput
%a 4000
%o 5000
diff -rNU3 dist.orig/ld/ldmain.c dist.nbsd/ld/ldmain.c
--- dist.orig/ld/ldmain.c Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/ldmain.c Wed Feb 19 16:39:31 2014
@@ -642,6 +642,23 @@
einfo (_("%P%F: bfd_hash_lookup failed: %E\n"));
}
+void
+add_ignoresym (const char *name)
+{
+ if (link_info.ignore_hash == NULL)
+ {
+ link_info.ignore_hash = xmalloc (sizeof (struct bfd_hash_table));
+ if (! bfd_hash_table_init_n (link_info.ignore_hash,
+ bfd_hash_newfunc,
+ sizeof (struct bfd_hash_entry),
+ 61))
+ einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
+ }
+
+ if (bfd_hash_lookup (link_info.ignore_hash, name, TRUE, TRUE) == NULL)
+ einfo (_("%P%F: bfd_hash_lookup failed: %E\n"));
+}
+
/* Record a symbol to be wrapped, from the --wrap option. */
void
@@ -1239,24 +1256,25 @@
#define MAX_ERRORS_IN_A_ROW 5
+ if (info->ignore_hash != NULL
+ && bfd_hash_lookup (info->ignore_hash, name, FALSE, FALSE) != NULL)
+ return TRUE;
+
if (config.warn_once)
{
- static struct bfd_hash_table *hash;
-
/* Only warn once about a particular undefined symbol. */
- if (hash == NULL)
+ if (info->ignore_hash == NULL)
{
- hash = (struct bfd_hash_table *)
- xmalloc (sizeof (struct bfd_hash_table));
- if (!bfd_hash_table_init (hash, bfd_hash_newfunc,
+ info->ignore_hash = xmalloc (sizeof (struct bfd_hash_table));
+ if (!bfd_hash_table_init (info->ignore_hash, bfd_hash_newfunc,
sizeof (struct bfd_hash_entry)))
einfo (_("%F%P: bfd_hash_table_init failed: %E\n"));
}
- if (bfd_hash_lookup (hash, name, FALSE, FALSE) != NULL)
+ if (bfd_hash_lookup (info->ignore_hash, name, FALSE, FALSE) != NULL)
return TRUE;
- if (bfd_hash_lookup (hash, name, TRUE, TRUE) == NULL)
+ if (bfd_hash_lookup (info->ignore_hash, name, TRUE, TRUE) == NULL)
einfo (_("%F%P: bfd_hash_lookup failed: %E\n"));
}
diff -rNU3 dist.orig/ld/ldmain.h dist.nbsd/ld/ldmain.h
--- dist.orig/ld/ldmain.h Fri Jul 13 13:20:26 2012
+++ dist.nbsd/ld/ldmain.h Wed Feb 19 16:39:31 2014
@@ -41,6 +41,7 @@
extern void add_ysym (const char *);
extern void add_wrap (const char *);
+extern void add_ignoresym (const char *);
extern void add_keepsyms_file (const char *);
#endif
diff -rNU3 dist.orig/ld/lexsup.c dist.nbsd/ld/lexsup.c
--- dist.orig/ld/lexsup.c Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/lexsup.c Wed Feb 19 16:39:31 2014
@@ -398,7 +398,7 @@
ONE_DASH },
{ {"shared", no_argument, NULL, OPTION_SHARED},
'\0', NULL, N_("Create a shared library"), ONE_DASH },
- { {"Bshareable", no_argument, NULL, OPTION_SHARED }, /* FreeBSD. */
+ { {"Bshareable", no_argument, NULL, OPTION_SHARED }, /* FreeBSD, NetBSD. */
'\0', NULL, NULL, ONE_DASH },
{ {"pie", no_argument, NULL, OPTION_PIE},
'\0', NULL, N_("Create a position independent executable"), ONE_DASH },
@@ -496,8 +496,14 @@
{ {"whole-archive", no_argument, NULL, OPTION_WHOLE_ARCHIVE},
'\0', NULL, N_("Include all objects from following archives"),
TWO_DASHES },
+ { {"Bforcearchive", no_argument, NULL, OPTION_WHOLE_ARCHIVE},
+ '\0', NULL, NULL, TWO_DASHES }, /* NetBSD. */
{ {"wrap", required_argument, NULL, OPTION_WRAP},
'\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES },
+ { {"ignore-unresolved-symbol", required_argument, NULL,
+ OPTION_IGNORE_UNRESOLVED_SYMBOL},
+ '\0', N_("SYMBOL"),
+ N_("Unresolved SYMBOL will not cause an error or warning"), TWO_DASHES },
};
#define OPTION_COUNT ARRAY_SIZE (ld_options)
@@ -1343,6 +1349,9 @@
break;
case OPTION_WRAP:
add_wrap (optarg);
+ break;
+ case OPTION_IGNORE_UNRESOLVED_SYMBOL:
+ add_ignoresym (optarg);
break;
case OPTION_DISCARD_NONE:
link_info.discard = discard_none;
diff -rNU3 dist.orig/ld/scripttempl/elf.sc dist.nbsd/ld/scripttempl/elf.sc
--- dist.orig/ld/scripttempl/elf.sc Mon Mar 25 08:06:23 2013
+++ dist.nbsd/ld/scripttempl/elf.sc Wed Feb 19 16:39:31 2014
@@ -94,6 +94,8 @@
#
# Each of these can also have corresponding .rel.* and .rela.* sections.
+test -z "$TEXT_START_SYMBOLS" && TEXT_START_SYMBOLS="PROVIDE_HIDDEN (__eprol = .);"
+test -z "$ENTRY" && ENTRY=_start
if test -n "$NOP"; then
FILL="=$NOP"
else
diff -rNU3 dist.orig/ld/scripttempl/sh.sc dist.nbsd/ld/scripttempl/sh.sc
--- dist.orig/ld/scripttempl/sh.sc Wed Sep 25 17:06:09 2002
+++ dist.nbsd/ld/scripttempl/sh.sc Wed Feb 19 16:39:31 2014
@@ -6,17 +6,14 @@
___dtors = . ;
*(.dtors)
___dtors_end = . ;
- } > ram"
+ }"
+
cat <<EOF
OUTPUT_FORMAT("${OUTPUT_FORMAT}")
OUTPUT_ARCH(${ARCH})
+${LIB_SEARCH_DIRS}
-MEMORY
-{
- ram : o = 0x1000, l = 512k
-}
-
SECTIONS
{
.text :
@@ -24,9 +21,9 @@
*(.text)
*(.strings)
${RELOCATING+ _etext = . ; }
- } ${RELOCATING+ > ram}
+ }
${CONSTRUCTING+${TORS}}
- .data :
+ .data ${RELOCATING+ ALIGN(${TARGET_PAGE_SIZE})} :
{
*(.data)
${RELOCATING+*(.gcc_exc*)}
@@ -35,19 +32,19 @@
${RELOCATING+___EH_FRAME_END__ = . ;}
${RELOCATING+LONG(0);}
${RELOCATING+ _edata = . ; }
- } ${RELOCATING+ > ram}
- .bss :
+ }
+ .bss ${RELOCATING+ ALIGN(${TARGET_PAGE_SIZE})} :
{
${RELOCATING+ _bss_start = . ; }
*(.bss)
*(COMMON)
${RELOCATING+ _end = . ; }
- } ${RELOCATING+ > ram}
- .stack ${RELOCATING+ 0x30000 } :
+ }
+ .stack :
{
${RELOCATING+ _stack = . ; }
*(.stack)
- } ${RELOCATING+ > ram}
+ }
.stab 0 ${RELOCATING+(NOLOAD)} :
{
*(.stab)
diff -rNU3 dist.orig/libiberty/floatformat.c dist.nbsd/libiberty/floatformat.c
--- dist.orig/libiberty/floatformat.c Mon Jan 3 21:05:58 2011
+++ dist.nbsd/libiberty/floatformat.c Wed Feb 19 16:39:33 2014
@@ -489,7 +489,11 @@
if (nan)
dto = NAN;
else
+#ifdef __vax__
+ dto = HUGE_VAL;
+#else
dto = INFINITY;
+#endif
if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1))
dto = -dto;
diff -rNU3 dist.orig/libiberty/objalloc.c dist.nbsd/libiberty/objalloc.c
--- dist.orig/libiberty/objalloc.c Fri Jul 22 03:26:05 2005
+++ dist.nbsd/libiberty/objalloc.c Wed Feb 19 16:39:33 2014
@@ -1,5 +1,5 @@
/* objalloc.c -- routines to allocate memory for objects
- Copyright 1997 Free Software Foundation, Inc.
+ Copyright 1997-2012 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Solutions.
This program is free software; you can redistribute it and/or modify it
@@ -112,14 +112,21 @@
/* Allocate space from an objalloc structure. */
PTR
-_objalloc_alloc (struct objalloc *o, unsigned long len)
+_objalloc_alloc (struct objalloc *o, unsigned long original_len)
{
+ unsigned long len = original_len;
+
/* We avoid confusion from zero sized objects by always allocating
at least 1 byte. */
if (len == 0)
len = 1;
len = (len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1);
+
+ /* Check for overflow in the alignment operation above and the
+ malloc argument below. */
+ if (len + CHUNK_HEADER_SIZE < original_len)
+ return NULL;
if (len <= o->current_space)
{
diff -rNU3 dist.orig/libiberty/strerror.c dist.nbsd/libiberty/strerror.c
--- dist.orig/libiberty/strerror.c Mon Mar 28 02:09:01 2005
+++ dist.nbsd/libiberty/strerror.c Wed Feb 19 16:39:33 2014
@@ -347,7 +347,7 @@
ENTRY(EPROTOTYPE, "EPROTOTYPE", "Protocol wrong type for socket"),
#endif
#if defined (ENOPROTOOPT)
- ENTRY(ENOPROTOOPT, "ENOPROTOOPT", "Protocol not available"),
+ ENTRY(ENOPROTOOPT, "ENOPROTOOPT", "Protocol option not available"),
#endif
#if defined (EPROTONOSUPPORT)
ENTRY(EPROTONOSUPPORT, "EPROTONOSUPPORT", "Protocol not supported"),
diff -rNU3 dist.orig/opcodes/cgen.sh dist.nbsd/opcodes/cgen.sh
--- dist.orig/opcodes/cgen.sh Sun Jun 14 16:36:56 2009
+++ dist.nbsd/opcodes/cgen.sh Wed Feb 19 16:39:30 2014
@@ -61,6 +61,7 @@
shift ; extrafiles=$9
rootdir=${srcdir}/..
+move_if_change="${CONFIG_SHELL:-/bin/sh} ${rootdir}/move-if-change"
# $arch is $6, as passed on the command line.
# $ARCH is the same argument but in all uppercase.
diff -rNU3 dist.orig/opcodes/configure dist.nbsd/opcodes/configure
--- dist.orig/opcodes/configure Tue Sep 4 14:21:07 2012
+++ dist.nbsd/opcodes/configure Wed Feb 19 16:39:30 2014
@@ -12551,6 +12551,14 @@
# specified, as in sh3-elf, sh3b-linux-gnu, etc.
# Include it just for ELF targets, since the SH5 bfd:s are ELF only.
for t in $target $canon_targets; do
+ # For NetBSD we do NOT want SH5 support unless sh5 or sh64
+ # is specified
+ case $t in
+ sh5*-* | sh64*-*) # let the case below handle it
+ ;;
+ sh*-*-netbsd* | sh*l*-*-netbsd*)
+ continue ;;
+ esac
case $t in
all | sh5*-* | sh64*-* | sh-*-*elf* | shl*-*-*elf* | \
sh-*-linux* | shl-*-linux*)
diff -rNU3 dist.orig/opcodes/configure.in dist.nbsd/opcodes/configure.in
--- dist.orig/opcodes/configure.in Mon Nov 5 16:29:08 2012
+++ dist.nbsd/opcodes/configure.in Wed Feb 19 16:39:30 2014
@@ -296,6 +296,14 @@
# specified, as in sh3-elf, sh3b-linux-gnu, etc.
# Include it just for ELF targets, since the SH5 bfd:s are ELF only.
for t in $target $canon_targets; do
+ # For NetBSD we do NOT want SH5 support unless sh5 or sh64
+ # is specified
+ case $t in
+ sh5*-* | sh64*-*) # let the case below handle it
+ ;;
+ sh*-*-netbsd* | sh*l*-*-netbsd*)
+ continue ;;
+ esac
case $t in
all | sh5*-* | sh64*-* | sh-*-*elf* | shl*-*-*elf* | \
sh-*-linux* | shl-*-linux*)
diff -rNU3 dist.orig/opcodes/mips-opc.c dist.nbsd/opcodes/mips-opc.c
--- dist.orig/opcodes/mips-opc.c Tue Sep 4 14:21:10 2012
+++ dist.nbsd/opcodes/mips-opc.c Wed Feb 19 16:39:30 2014
@@ -791,10 +791,12 @@
{"hibernate","", 0x42000023, 0xffffffff, 0, 0, V1 },
{"ins", "t,r,+A,+B", 0x7c000004, 0xfc00003f, WR_t|RD_s, 0, I33 },
{"iret", "", 0x42000038, 0xffffffff, NODS, 0, MC },
+{"jr", "s", 0, (int) M_JR_S, INSN_MACRO, 0, I1 },
{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 },
/* jr.hb is officially MIPS{32,64}R2, but it works on R1 as jr with
the same hazard barrier effect. */
{"jr.hb", "s", 0x00000408, 0xfc1fffff, UBD|RD_s, 0, I32 },
+{"j", "s", 0, (int) M_J_S, INSN_MACRO, 0, I1 },
{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, 0, I1 }, /* jr */
/* SVR4 PIC code requires special handling for j, so it must be a
macro. */
@@ -803,7 +805,9 @@
assembler, but will never match user input (because the line above
will match first). */
{"j", "a", 0x08000000, 0xfc000000, UBD, 0, I1 },
+{"jalr", "s", 0, (int) M_JALR_S, INSN_MACRO, 0, I1 },
{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d, 0, I1 },
+{"jalr", "d,s", 0, (int) M_JALR_DS, INSN_MACRO, 0, I1 },
{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d, 0, I1 },
/* jalr.hb is officially MIPS{32,64}R2, but it works on R1 as jalr
with the same hazard barrier effect. */