c9ea9e7af8
Change-Id: I5235984746178ee30b5db18e7def0016d9a0e36f
3257 lines
109 KiB
Diff
3257 lines
109 KiB
Diff
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. */
|