binutils: Upgrade to 2.26

(From OE-Core rev: 86ade2cc2553c942d9526c5323a11ae151653505)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj 2016-01-30 06:28:38 +00:00 committed by Richard Purdie
parent ba2fdcddaf
commit c85c54f7f8
24 changed files with 2587 additions and 2182 deletions

View File

@ -24,7 +24,7 @@ PREFERRED_PROVIDER_virtual/gettext ??= "gettext"
GCCVERSION ?= "5.%"
SDKGCCVERSION ?= "${GCCVERSION}"
BINUVERSION ?= "2.25%"
BINUVERSION ?= "2.26%"
GDBVERSION ?= "7.10%"
GLIBCVERSION ?= "2.22"
UCLIBCVERSION ?= "1.0%"

View File

@ -18,7 +18,7 @@ BINUPV = "${@binutils_branch_version(d)}"
UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
SRCREV = "2bd25930221dea4bf33c13a89c111514491440e2"
SRCREV = "3c9d874373f2189cb704999b0ba39b9bbca91a61"
SRC_URI = "\
git://sourceware.org/git/binutils-gdb.git;branch=binutils-${BINUPV}-branch;protocol=git \
file://0002-configure-widen-the-regexp-for-SH-architectures.patch \
@ -28,16 +28,10 @@ SRC_URI = "\
file://0006-Use-libtool-2.4.patch \
file://0007-Add-the-armv5e-architecture-to-binutils.patch \
file://0008-don-t-let-the-distro-compiler-point-to-the-wrong-ins.patch \
file://0009-Upstream-Status-Inappropriate-distribution-codesourc.patch \
file://0009-warn-for-uses-of-system-directories-when-cross-linki.patch \
file://0010-Fix-rpath-in-libtool-when-sysroot-is-enabled.patch \
file://0011-Change-default-emulation-for-mips64-linux.patch \
file://0012-Add-XLP-instructions-support.patch \
file://0013-Fix-an-internal-error-in-do_print_to_mapfile-seen-wi.patch \
file://0014-gold-arm-Skip-pic-check-for-R_ARM_REL32.patch \
file://0015-Fix-dynamic-list-so-that-symbols-not-in-the-list-are.patch \
file://0016-This-patch-adds-IFUNC-support-for-arm-gold-backend.patch \
file://binutils-octeon3.patch \
file://add-thunderx-support-for-gas.patch \
"
S = "${WORKDIR}/git"

View File

@ -1,7 +1,7 @@
From f71ecf251f84b4bbc9b7a832d5cd4a8bae95d83b Mon Sep 17 00:00:00 2001
From c2263f6e910f43637fb514de5c48e9ce6a8d55f1 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:58:54 +0000
Subject: [PATCH 01/13] Generate relocatable SDKs
Subject: [PATCH 01/12] Generate relocatable SDKs
This patch will modify the ELF linker scripts so that the crosssdk
linker will generate binaries with a 4096 bytes PT_INTERP section. When the binaries
@ -18,7 +18,7 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/ld/genscripts.sh b/ld/genscripts.sh
index 499607a..075dd04 100755
index a84d233..d12c4e2 100755
--- a/ld/genscripts.sh
+++ b/ld/genscripts.sh
@@ -277,6 +277,7 @@ DATA_ALIGNMENT_u="${DATA_ALIGNMENT_u-${DATA_ALIGNMENT_r}}"
@ -43,10 +43,10 @@ index 499607a..075dd04 100755
LD_FLAG=
DATA_ALIGNMENT=${DATA_ALIGNMENT_}
diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc
index 4368fd9..9f01e8c 100644
index ec78c90..f9e7a31 100644
--- a/ld/scripttempl/elf.sc
+++ b/ld/scripttempl/elf.sc
@@ -131,8 +131,8 @@ if test -n "${COMMONPAGESIZE}"; then
@@ -136,8 +136,8 @@ if test -n "${COMMONPAGESIZE}"; then
DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);"
DATA_SEGMENT_RELRO_END=". = DATA_SEGMENT_RELRO_END (${SEPARATE_GOTPLT-0}, .);"
fi
@ -58,5 +58,5 @@ index 4368fd9..9f01e8c 100644
if test -z "$PLT"; then
IPLT=".iplt ${RELOCATING-0} : { *(.iplt) }"
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From dfbcfb0d71765b337e63562299a943043928d2d2 Mon Sep 17 00:00:00 2001
From 301ad846e3a3ea0b49243c6276aa7dcc3fa5cc59 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:07:33 +0000
Subject: [PATCH 02/13] configure: widen the regexp for SH architectures
Subject: [PATCH 02/12] configure: widen the regexp for SH architectures
gprof needs to know about uclibc
@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 87677bc..e9f2f13 100755
index 34b66f7..85414ab 100755
--- a/configure
+++ b/configure
@@ -3341,7 +3341,7 @@ case "${target}" in
@@ -3445,7 +3445,7 @@ case "${target}" in
;;
s390-*-* | s390x-*-*)
;;
@ -26,7 +26,7 @@ index 87677bc..e9f2f13 100755
;;
sh64-*-* | sh5*-*-*)
;;
@@ -3812,7 +3812,7 @@ case "${target}" in
@@ -3939,7 +3939,7 @@ case "${target}" in
or1k*-*-*)
noconfigdirs="$noconfigdirs gdb"
;;
@ -36,7 +36,7 @@ index 87677bc..e9f2f13 100755
sh*-*-elf)
;;
diff --git a/gprof/configure b/gprof/configure
index b09c8fb..79961c5 100755
index 2702da1..7dcd141 100755
--- a/gprof/configure
+++ b/gprof/configure
@@ -5869,6 +5869,11 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu)
@ -52,5 +52,5 @@ index b09c8fb..79961c5 100755
if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From dfb1412da67bbfe3e993d107d0b5e392f44141ab Mon Sep 17 00:00:00 2001
From 887db9238821b4f1f5f469f9c825ed9b2e2dc719 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:09:58 +0000
Subject: [PATCH 03/13] Point scripts location to libdir
Subject: [PATCH 03/12] Point scripts location to libdir
Upstream-Status: Inappropriate [debian patch]
@ -12,10 +12,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/ld/Makefile.am b/ld/Makefile.am
index 9575f1f..84df0bf 100644
index 0b3b049..3871c74 100644
--- a/ld/Makefile.am
+++ b/ld/Makefile.am
@@ -54,7 +54,7 @@ endif
@@ -57,7 +57,7 @@ endif
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
@ -25,10 +25,10 @@ index 9575f1f..84df0bf 100644
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff --git a/ld/Makefile.in b/ld/Makefile.in
index 9f56ca1..272860f 100644
index ed98f87..530e4c9 100644
--- a/ld/Makefile.in
+++ b/ld/Makefile.in
@@ -388,7 +388,7 @@ AM_CFLAGS = $(WARN_CFLAGS)
@@ -413,7 +413,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
@ -38,5 +38,5 @@ index 9f56ca1..272860f 100644
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From 3126608b8c95a792ade56cf62a531d935d391c50 Mon Sep 17 00:00:00 2001
From 0d76940b5507406719635ee154a29e80a8cb1234 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:27:17 +0000
Subject: [PATCH 04/13] Only generate an RPATH entry if LD_RUN_PATH is not
Subject: [PATCH 04/12] Only generate an RPATH entry if LD_RUN_PATH is not
empty
for cases where -rpath isn't specified. debian (#151024)
@ -15,10 +15,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 4 insertions(+)
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index 36dee8e..07bea52 100644
index 0405d4f..73c5447 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -1198,6 +1198,8 @@ fragment <<EOF
@@ -1242,6 +1242,8 @@ fragment <<EOF
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
@ -27,7 +27,7 @@ index 36dee8e..07bea52 100644
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -1461,6 +1463,8 @@ gld${EMULATION_NAME}_before_allocation (void)
@@ -1523,6 +1525,8 @@ gld${EMULATION_NAME}_before_allocation (void)
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
@ -37,5 +37,5 @@ index 36dee8e..07bea52 100644
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From f1703bcc7a5c507e471e2630b5a2de129100315a Mon Sep 17 00:00:00 2001
From 589cc10e54b95607d2728ee37e9387140bf5eb32 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:32:49 +0000
Subject: [PATCH 05/13] Explicitly link with libm on uclibc
Subject: [PATCH 05/12] Explicitly link with libm on uclibc
Description:
@ -31,10 +31,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 6 insertions(+)
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 9abc768..1d92f55 100644
index 0b490d4..086e0d2 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -477,6 +477,12 @@ case ${generic_target} in
@@ -487,6 +487,12 @@ case ${generic_target} in
*-*-netware) fmt=elf em=netware ;;
esac
@ -48,5 +48,5 @@ index 9abc768..1d92f55 100644
aarch64 | alpha | arm | i386 | ia64 | microblaze | mips | ns32k | or1k | or1knd | pdp11 | ppc | sparc | z80 | z8k)
bfd_gas=yes
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From 743f42aaecb1ab89eba0eaf5e88ed67bbf3ba304 Mon Sep 17 00:00:00 2001
From 61789a45c6193519b9da9dd0fa9a94532faaa4a9 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:37:10 +0000
Subject: [PATCH 07/13] Add the armv5e architecture to binutils
Subject: [PATCH 07/12] Add the armv5e architecture to binutils
Binutils has a comment that indicates it is supposed to match gcc for
all of the support "-march=" settings, but it was lacking the armv5e setting.
@ -19,10 +19,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 1 insertion(+)
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 2db6c2d..ab48168 100644
index 3bd4bc9..5d99921 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -24463,6 +24463,7 @@ static const struct arm_arch_option_table arm_archs[] =
@@ -24791,6 +24791,7 @@ static const struct arm_arch_option_table arm_archs[] =
ARM_ARCH_OPT ("armv4t", ARM_ARCH_V4T, FPU_ARCH_FPA),
ARM_ARCH_OPT ("armv4txm", ARM_ARCH_V4TxM, FPU_ARCH_FPA),
ARM_ARCH_OPT ("armv5", ARM_ARCH_V5, FPU_ARCH_VFP),
@ -31,5 +31,5 @@ index 2db6c2d..ab48168 100644
ARM_ARCH_OPT ("armv5txm", ARM_ARCH_V5TxM, FPU_ARCH_VFP),
ARM_ARCH_OPT ("armv5te", ARM_ARCH_V5TE, FPU_ARCH_VFP),
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From 4d3a9f6db604055348332b56889d466c058fa5f3 Mon Sep 17 00:00:00 2001
From 0ccefb615b5316e71c1ed9bab80aa4eafb26167a Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:39:01 +0000
Subject: [PATCH 08/13] don't let the distro compiler point to the wrong
Subject: [PATCH 08/12] don't let the distro compiler point to the wrong
installation location
Thanks to RP for helping find the source code causing the issue.
@ -17,10 +17,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
index 9b87720..ff43f53 100644
index 7d7e2f4..1aaaf0e 100644
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -361,7 +361,8 @@ install-strip: install
@@ -364,7 +364,8 @@ install-strip: install
# multilib-specific flags, it's overridden by FLAGS_TO_PASS from the
# default multilib, so we have to take CFLAGS into account as well,
# since it will be passed the multilib flags.
@ -31,5 +31,5 @@ index 9b87720..ff43f53 100644
if test -n "${target_header_dir}"; then \
${mkinstalldirs} $(DESTDIR)$(libdir)/$(MULTIOSDIR); \
--
2.1.4
2.7.0

View File

@ -1,15 +1,7 @@
From e02e119b278c3f404e97669e7180cac944134c91 Mon Sep 17 00:00:00 2001
From e5d18410cb07da09f854b9568f51a873f1166d2a Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:41:04 +0000
Subject: [PATCH 09/13] Upstream-Status: Inappropriate [distribution:
codesourcery]
Patch originally created by Mark Hatle, forward-ported to
binutils 2.21 by Scott Garman.
purpose: warn for uses of system directories when cross linking
Code Merged from Sourcery G++ binutils 2.19 - 4.4-277
Date: Fri, 15 Jan 2016 06:31:09 +0000
Subject: [PATCH 09/12] warn for uses of system directories when cross linking
2008-07-02 Joseph Myers <joseph@codesourcery.com>
@ -57,8 +49,10 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Scott Garman <scott.a.garman@intel.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Pending
ld/config.in | 3 +++
ld/configure | 14 ++++++++++++++
ld/configure | 16 ++++++++++++++++
ld/configure.ac | 10 ++++++++++
ld/ld.h | 8 ++++++++
ld/ld.texinfo | 12 ++++++++++++
@ -66,13 +60,13 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
ld/ldlex.h | 2 ++
ld/ldmain.c | 2 ++
ld/lexsup.c | 16 ++++++++++++++++
9 files changed, 84 insertions(+)
9 files changed, 86 insertions(+)
diff --git a/ld/config.in b/ld/config.in
index 2ab4844..766d23c 100644
index 276fb77..35c58eb 100644
--- a/ld/config.in
+++ b/ld/config.in
@@ -11,6 +11,9 @@
@@ -14,6 +14,9 @@
language is requested. */
#undef ENABLE_NLS
@ -83,18 +77,18 @@ index 2ab4844..766d23c 100644
#undef EXTRA_SHLIB_EXTENSION
diff --git a/ld/configure b/ld/configure
index 2fbaebf..5726a08 100755
index 7a20e4e..7cff36c 100755
--- a/ld/configure
+++ b/ld/configure
@@ -787,6 +787,7 @@ with_lib_path
@@ -790,6 +790,7 @@ with_lib_path
enable_targets
enable_64_bit_bfd
with_sysroot
+enable_poison_system_directories
enable_gold
enable_got
enable_werror
@@ -1443,6 +1444,8 @@ Optional Features:
enable_compressed_debug_sections
@@ -1446,6 +1447,8 @@ Optional Features:
--disable-largefile omit support for large files
--enable-targets alternative target configurations
--enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)
@ -103,8 +97,8 @@ index 2fbaebf..5726a08 100755
--enable-gold[=ARG] build gold [ARG={default,yes,no}]
--enable-got=<type> GOT handling scheme (target, single, negative,
multigot)
@@ -16323,7 +16326,18 @@ else
fi
@@ -16306,6 +16309,19 @@ fi
+# Check whether --enable-poison-system-directories was given.
@ -115,18 +109,19 @@ index 2fbaebf..5726a08 100755
+fi
+
+if test "x${enable_poison_system_directories}" = "xyes"; then
+
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
+
+fi
# Check whether --enable-got was given.
if test "${enable_got+set}" = set; then :
+
# Check whether --enable-gold was given.
if test "${enable_gold+set}" = set; then :
enableval=$enable_gold; case "${enableval}" in
diff --git a/ld/configure.ac b/ld/configure.ac
index 1bddfc9..e9edb7f 100644
index 188172d..2cd8443 100644
--- a/ld/configure.ac
+++ b/ld/configure.ac
@@ -94,6 +94,16 @@ AC_SUBST(use_sysroot)
@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot)
AC_SUBST(TARGET_SYSTEM_ROOT)
AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
@ -144,12 +139,12 @@ index 1bddfc9..e9edb7f 100644
dnl "install_as_default" is set to false if gold is the default linker.
dnl "installed_linker" is the installed BFD linker name.
diff --git a/ld/ld.h b/ld/ld.h
index f773ce7..adba0f6 100644
index d84ec4e..3476b26 100644
--- a/ld/ld.h
+++ b/ld/ld.h
@@ -161,6 +161,14 @@ typedef struct {
/* If TRUE we'll just print the default output on stdout. */
bfd_boolean print_output_format;
@@ -164,6 +164,14 @@ typedef struct {
/* If set, display the target memory usage (per memory region). */
bfd_boolean print_memory_usage;
+ /* If TRUE (the default) warn for uses of system directories when
+ cross linking. */
@ -163,10 +158,10 @@ index f773ce7..adba0f6 100644
enum endian_enum endian;
diff --git a/ld/ld.texinfo b/ld/ld.texinfo
index 502582c..dae168a 100644
index 1dd7492..fb1438e 100644
--- a/ld/ld.texinfo
+++ b/ld/ld.texinfo
@@ -2212,6 +2212,18 @@ string identifying the original linked file does not change.
@@ -2332,6 +2332,18 @@ string identifying the original linked file does not change.
Passing @code{none} for @var{style} disables the setting from any
@code{--build-id} options earlier on the command line.
@ -186,7 +181,7 @@ index 502582c..dae168a 100644
@c man end
diff --git a/ld/ldfile.c b/ld/ldfile.c
index 782ed7f..19a9ab4 100644
index 96f9ecc..af231c0 100644
--- a/ld/ldfile.c
+++ b/ld/ldfile.c
@@ -114,6 +114,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline)
@ -214,23 +209,23 @@ index 782ed7f..19a9ab4 100644
/* Try to open a BFD for a lang_input_statement. */
diff --git a/ld/ldlex.h b/ld/ldlex.h
index e3e9b24..29487a3 100644
index 6f11e7b..0ca3110 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -140,6 +140,8 @@ enum option_values
OPTION_IGNORE_UNRESOLVED_SYMBOL,
OPTION_PUSH_STATE,
OPTION_POP_STATE,
@@ -144,6 +144,8 @@ enum option_values
OPTION_PRINT_MEMORY_USAGE,
OPTION_REQUIRE_DEFINED_SYMBOL,
OPTION_ORPHAN_HANDLING,
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES,
+ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES,
};
/* The initial parser states. */
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 818d108..54c49f2 100644
index bb0b9cc..a23c56c 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -266,6 +266,8 @@ main (int argc, char **argv)
@@ -257,6 +257,8 @@ main (int argc, char **argv)
command_line.warn_mismatch = TRUE;
command_line.warn_search_mismatch = TRUE;
command_line.check_section_addresses = -1;
@ -240,12 +235,12 @@ index 818d108..54c49f2 100644
/* We initialize DEMANGLING based on the environment variable
COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the
diff --git a/ld/lexsup.c b/ld/lexsup.c
index 4812c97..21b49df 100644
index 4cad209..173b17f 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -513,6 +513,14 @@ static const struct ld_option ld_options[] =
{ {"pop-state", no_argument, NULL, OPTION_POP_STATE},
'\0', NULL, N_("Pop state of flags governing input file handling"),
@@ -530,6 +530,14 @@ static const struct ld_option ld_options[] =
{ {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING},
'\0', N_("=MODE"), N_("Control how orphan sections are handled."),
TWO_DASHES },
+ { {"no-poison-system-directories", no_argument, NULL,
+ OPTION_NO_POISON_SYSTEM_DIRECTORIES},
@ -258,9 +253,9 @@ index 4812c97..21b49df 100644
};
#define OPTION_COUNT ARRAY_SIZE (ld_options)
@@ -1474,6 +1482,14 @@ parse_args (unsigned argc, char **argv)
free (oldp);
}
@@ -1550,6 +1558,14 @@ parse_args (unsigned argc, char **argv)
einfo (_("%P%F: invalid argument to option"
" \"--orphan-handling\"\n"));
break;
+
+ case OPTION_NO_POISON_SYSTEM_DIRECTORIES:
@ -274,5 +269,5 @@ index 4812c97..21b49df 100644
}
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From edbee9a68e1c2e11c059668aa1d13001d9f3de06 Mon Sep 17 00:00:00 2001
From eff00547a91cad0b8ee9bf5b6030dfa48a5ea6ae Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:42:38 +0000
Subject: [PATCH 10/13] Fix rpath in libtool when sysroot is enabled
Subject: [PATCH 10/12] Fix rpath in libtool when sysroot is enabled
Enabling sysroot support in libtool exposed a bug where the final
library had an RPATH encoded into it which still pointed to the
@ -48,5 +48,5 @@ index 70e856e..11ee684 100644
if test -z "$hardcode_libdirs"; then
hardcode_libdirs="$libdir"
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From 2a5e8813d3c5db3e2b7d9dfa2ab27cccd5111e53 Mon Sep 17 00:00:00 2001
From b0bcabc83ba02f984d8c87d612c115c9ab7a9fce Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:44:14 +0000
Subject: [PATCH 11/13] Change default emulation for mips64*-*-linux
Subject: [PATCH 11/12] Change default emulation for mips64*-*-linux
we change the default emulations to be N64 instead of N32
@ -14,10 +14,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 7bcb92a..03d2c6f 100644
index c5688cb..5c27b49 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -1062,12 +1062,12 @@ case "${targ}" in
@@ -1087,12 +1087,12 @@ case "${targ}" in
targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
;;
mips64*el-*-linux*)
@ -35,10 +35,10 @@ index 7bcb92a..03d2c6f 100644
mips*el-*-linux*)
targ_defvec=mips_elf32_trad_le_vec
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 24e36d1..740b2ea 100644
index 6b6bbf2..b45b1e5 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -476,11 +476,11 @@ mips*el-*-vxworks*) targ_emul=elf32elmipvxworks
@@ -509,11 +509,11 @@ mips*el-*-vxworks*) targ_emul=elf32elmipvxworks
mips*-*-vxworks*) targ_emul=elf32ebmipvxworks
targ_extra_emuls="elf32elmipvxworks" ;;
mips*-*-windiss) targ_emul=elf32mipswindiss ;;
@ -55,5 +55,5 @@ index 24e36d1..740b2ea 100644
mips*el-*-linux-*) targ_emul=elf32ltsmip
targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
--
2.1.4
2.7.0

View File

@ -1,7 +1,7 @@
From 448329ea097447aee73d050045295c5a0ae8519e Mon Sep 17 00:00:00 2001
From 10e0f42d258164a6a8c0c733518c79e114f5d702 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 2 Mar 2015 01:51:05 +0000
Subject: [PATCH 12/13] Add XLP instructions support
Date: Fri, 15 Jan 2016 06:37:20 +0000
Subject: [PATCH 12/12] Add XLP instructions support
From 26adb06ce515aadfec08ce13109b4b98287f677b Mon Sep 17 00:00:00 2001
From: Nebu Philips <nphilips@netlogicmicro.com>
@ -10,34 +10,16 @@ Subject: [PATCH] Add support for Netlogic XLP
Using the mipsisa64r2nlm target, add support for XLP from
Netlogic. Also, update vendor name to NLM wherever applicable.
---
bfd/aoutx.h | 1 +
bfd/archures.c | 1 +
bfd/bfd-in2.h | 1 +
bfd/config.bfd | 5 +++++
bfd/cpu-mips.c | 6 ++++--
bfd/elfxx-mips.c | 8 ++++++++
binutils/readelf.c | 1 +
gas/config/tc-mips.c | 4 +++-
gas/configure | 3 +++
gas/configure.tgt | 2 +-
include/elf/mips.h | 1 +
include/opcode/mips.h | 10 ++++++++--
ld/configure.tgt | 2 ++
opcodes/mips-dis.c | 12 +++++-------
opcodes/mips-opc.c | 33 +++++++++++++++++++++------------
15 files changed, 65 insertions(+), 25 deletions(-)
Upstream-Status: Pending
Use 0x00000080 for INSN_XLP, the value 0x00000040 has already been
assigned to INSN_OCTEON3
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Use 0x00000080 for INSN_XLP, the value 0x00000040 has already been assigned
to INSN_OCTEON3
Signed-off-by: Baoshan Pang <baoshan.pang@windriver.com>
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
Upstream-Status: Pending
bfd/aoutx.h | 1 +
bfd/archures.c | 1 +
bfd/bfd-in2.h | 1 +
@ -56,7 +38,7 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
15 files changed, 65 insertions(+), 25 deletions(-)
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index 9385a98..a88df99 100644
index f78b910..d0d8dd3 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -802,6 +802,7 @@ NAME (aout, machine_type) (enum bfd_architecture arch,
@ -68,34 +50,34 @@ index 9385a98..a88df99 100644
arch_flags = M_MIPS2;
break;
diff --git a/bfd/archures.c b/bfd/archures.c
index c9fd6c8..547bd09 100644
index 51068b9..727741f 100644
--- a/bfd/archures.c
+++ b/bfd/archures.c
@@ -180,6 +180,7 @@ DESCRIPTION
.#define bfd_mach_mips_octeonp 6601
@@ -181,6 +181,7 @@ DESCRIPTION
.#define bfd_mach_mips_octeon2 6502
.#define bfd_mach_mips_octeon3 6503
.#define bfd_mach_mips_xlr 887682 {* decimal 'XLR' *}
+.#define bfd_mach_mips_xlp 887680 {* decimal 'XLP' *}
.#define bfd_mach_mipsisa32 32
.#define bfd_mach_mipsisa32r2 33
.#define bfd_mach_mipsisa32r3 34
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index c7a2bb5..413b773 100644
index 779ffbf..bf5a565 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1967,6 +1967,7 @@ enum bfd_architecture
#define bfd_mach_mips_octeonp 6601
@@ -1993,6 +1993,7 @@ enum bfd_architecture
#define bfd_mach_mips_octeon2 6502
#define bfd_mach_mips_octeon3 6503
#define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */
+#define bfd_mach_mips_xlp 887680 /* decimal 'XLP' */
#define bfd_mach_mipsisa32 32
#define bfd_mach_mipsisa32r2 33
#define bfd_mach_mipsisa32r3 34
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 03d2c6f..27086db 100644
index 5c27b49..d553039 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -1041,6 +1041,11 @@ case "${targ}" in
@@ -1066,6 +1066,11 @@ case "${targ}" in
targ_defvec=mips_elf32_le_vec
targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec"
;;
@ -108,12 +90,12 @@ index 03d2c6f..27086db 100644
targ_defvec=mips_elf32_be_vec
targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
diff --git a/bfd/cpu-mips.c b/bfd/cpu-mips.c
index b617aaa..19a99d1 100644
index 8a9475d..de7e5a3 100644
--- a/bfd/cpu-mips.c
+++ b/bfd/cpu-mips.c
@@ -103,7 +103,8 @@ enum
I_mipsocteonp,
@@ -104,7 +104,8 @@ enum
I_mipsocteon2,
I_mipsocteon3,
I_xlr,
- I_micromips
+ I_micromips,
@ -121,9 +103,9 @@ index b617aaa..19a99d1 100644
};
#define NN(index) (&arch_info_struct[(index) + 1])
@@ -153,7 +154,8 @@ static const bfd_arch_info_type arch_info_struct[] =
N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", FALSE, NN(I_mipsocteonp)),
@@ -155,7 +156,8 @@ static const bfd_arch_info_type arch_info_struct[] =
N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", FALSE, NN(I_mipsocteon2)),
N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3", FALSE, NN(I_mipsocteon3)),
N (64, 64, bfd_mach_mips_xlr, "mips:xlr", FALSE, NN(I_xlr)),
- N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,0)
+ N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,NN(I_micromips)),
@ -132,10 +114,10 @@ index b617aaa..19a99d1 100644
/* The default architecture is mips:3000, but with a machine number of
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 0df7abf..d268e86 100644
index 1f2f4a3..700afd3 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -6608,6 +6608,9 @@ _bfd_elf_mips_mach (flagword flags)
@@ -6605,6 +6605,9 @@ _bfd_elf_mips_mach (flagword flags)
case E_MIPS_MACH_XLR:
return bfd_mach_mips_xlr;
@ -145,7 +127,7 @@ index 0df7abf..d268e86 100644
default:
switch (flags & EF_MIPS_ARCH)
{
@@ -11878,6 +11881,10 @@ mips_set_isa_flags (bfd *abfd)
@@ -11901,6 +11904,10 @@ mips_set_isa_flags (bfd *abfd)
val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON2;
break;
@ -156,7 +138,7 @@ index 0df7abf..d268e86 100644
case bfd_mach_mipsisa32:
val = E_MIPS_ARCH_32;
break;
@@ -14765,6 +14772,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
@@ -13931,6 +13938,7 @@ static const struct mips_mach_extension mips_mach_extensions[] =
{ bfd_mach_mips_octeonp, bfd_mach_mips_octeon },
{ bfd_mach_mips_octeon, bfd_mach_mipsisa64r2 },
{ bfd_mach_mips_loongson_3a, bfd_mach_mipsisa64r2 },
@ -165,10 +147,10 @@ index 0df7abf..d268e86 100644
/* MIPS64 extensions. */
{ bfd_mach_mipsisa64r2, bfd_mach_mipsisa64 },
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 0c00b2f..6e9d5e4 100644
index d5dd46f..66810cc 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -2898,6 +2898,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
@@ -3140,6 +3140,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
case E_MIPS_MACH_OCTEON2: strcat (buf, ", octeon2"); break;
case E_MIPS_MACH_OCTEON3: strcat (buf, ", octeon3"); break;
case E_MIPS_MACH_XLR: strcat (buf, ", xlr"); break;
@ -177,10 +159,10 @@ index 0c00b2f..6e9d5e4 100644
/* We simply ignore the field in this case to avoid confusion:
MIPS ELF does not specify EF_MIPS_MACH, it is a GNU
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index c3e3e2a..8d64344 100644
index a2d45a4..75902c0 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -551,6 +551,7 @@ static int mips_32bitmode = 0;
@@ -552,6 +552,7 @@ static int mips_32bitmode = 0;
|| mips_opts.arch == CPU_RM7000 \
|| mips_opts.arch == CPU_VR5500 \
|| mips_opts.micromips \
@ -188,7 +170,7 @@ index c3e3e2a..8d64344 100644
)
/* Whether the processor uses hardware interlocks to protect reads
@@ -580,6 +581,7 @@ static int mips_32bitmode = 0;
@@ -581,6 +582,7 @@ static int mips_32bitmode = 0;
&& mips_opts.isa != ISA_MIPS3) \
|| mips_opts.arch == CPU_R4300 \
|| mips_opts.micromips \
@ -196,20 +178,20 @@ index c3e3e2a..8d64344 100644
)
/* Whether the processor uses hardware interlocks to protect reads
@@ -18682,7 +18684,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
@@ -18702,7 +18704,7 @@ static const struct mips_cpu_info mips_cpu_info_table[] =
/* Broadcom XLP.
XLP is mostly like XLR, with the prominent exception that it is
MIPS64R2 rather than MIPS64. */
- { "xlp", 0, 0, ISA_MIPS64R2, CPU_XLR },
+ { "xlp", 0, 0, ISA_MIPS64R2, CPU_XLP },
/* End marker */
{ NULL, 0, 0, 0, 0 }
/* i6400. */
{ "i6400", 0, ASE_MSA, ISA_MIPS64R6, CPU_MIPS64R6},
diff --git a/gas/configure b/gas/configure
index 074886f..8091f2f 100755
index 1c2a665..c8010a8 100755
--- a/gas/configure
+++ b/gas/configure
@@ -12808,6 +12808,9 @@ _ACEOF
@@ -12826,6 +12826,9 @@ _ACEOF
mipsisa64r6 | mipsisa64r6el)
mips_cpu=mips64r6
;;
@ -220,10 +202,10 @@ index 074886f..8091f2f 100755
mips_cpu=r3900
;;
diff --git a/gas/configure.tgt b/gas/configure.tgt
index 1d92f55..06e8b4f 100644
index 086e0d2..2b71270 100644
--- a/gas/configure.tgt
+++ b/gas/configure.tgt
@@ -332,7 +332,7 @@ case ${generic_target} in
@@ -339,7 +339,7 @@ case ${generic_target} in
mips-*-sysv4*MP* | mips-*-gnu*) fmt=elf em=tmips ;;
mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
fmt=elf em=tmips ;;
@ -233,7 +215,7 @@ index 1d92f55..06e8b4f 100644
mips-*-openbsd*) fmt=elf em=tmips ;;
diff --git a/include/elf/mips.h b/include/elf/mips.h
index 2ed6acd..e541f50 100644
index 57de3bc..9ba141d 100644
--- a/include/elf/mips.h
+++ b/include/elf/mips.h
@@ -285,6 +285,7 @@ END_RELOC_NUMBERS (R_MIPS_maxext)
@ -245,10 +227,10 @@ index 2ed6acd..e541f50 100644
#define E_MIPS_MACH_OCTEON3 0x008e0000
#define E_MIPS_MACH_5400 0x00910000
diff --git a/include/opcode/mips.h b/include/opcode/mips.h
index ef26167..ef53ec6 100644
index 9318fcc..9be5645 100644
--- a/include/opcode/mips.h
+++ b/include/opcode/mips.h
@@ -1227,8 +1227,10 @@ static const unsigned int mips_isa_table[] = {
@@ -1228,8 +1228,10 @@ static const unsigned int mips_isa_table[] = {
#define INSN_LOONGSON_2F 0x80000000
/* Loongson 3A. */
#define INSN_LOONGSON_3A 0x00000400
@ -261,15 +243,15 @@ index ef26167..ef53ec6 100644
/* DSP ASE */
#define ASE_DSP 0x00000001
@@ -1324,6 +1326,7 @@ static const unsigned int mips_isa_table[] = {
#define CPU_OCTEONP 6601
@@ -1326,6 +1328,7 @@ static const unsigned int mips_isa_table[] = {
#define CPU_OCTEON2 6502
#define CPU_OCTEON3 6503
#define CPU_XLR 887682 /* decimal 'XLR' */
+#define CPU_XLP 887680 /* decimal 'XLP' */
/* Return true if the given CPU is included in INSN_* mask MASK. */
@@ -1398,6 +1401,9 @@ cpu_is_member (int cpu, unsigned int mask)
@@ -1403,6 +1406,9 @@ cpu_is_member (int cpu, unsigned int mask)
return ((mask & INSN_ISA_MASK) == INSN_ISA32R6)
|| ((mask & INSN_ISA_MASK) == INSN_ISA64R6);
@ -280,10 +262,10 @@ index ef26167..ef53ec6 100644
return FALSE;
}
diff --git a/ld/configure.tgt b/ld/configure.tgt
index 740b2ea..4df13a7 100644
index b45b1e5..fb2f36a 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -462,6 +462,8 @@ mips*el-sde-elf*) targ_emul=elf32ltsmip
@@ -495,6 +495,8 @@ mips*el-sde-elf*) targ_emul=elf32ltsmip
mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
targ_emul=elf32btsmip
targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip" ;;
@ -293,10 +275,10 @@ index 740b2ea..4df13a7 100644
targ_extra_emuls="elf32lr5900"
targ_extra_libpath=$targ_extra_emuls ;;
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
index 1eb1d45..d6881af 100644
index 8200920..40d9fe2 100644
--- a/opcodes/mips-dis.c
+++ b/opcodes/mips-dis.c
@@ -655,13 +655,11 @@ const struct mips_arch_choice mips_arch_choices[] =
@@ -648,13 +648,11 @@ const struct mips_arch_choice mips_arch_choices[] =
mips_cp0sel_names_xlr, ARRAY_SIZE (mips_cp0sel_names_xlr),
mips_cp1_names_mips3264, mips_hwr_names_numeric },
@ -311,25 +293,25 @@ index 1eb1d45..d6881af 100644
+ ISA_MIPS64R2 | INSN_XLP, 0,
+ mips_cp0_names_mips3264r2,
+ mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2),
+ mips_hwr_names_mips3264r2 },
+ mips_cp1_names_mips3264, mips_hwr_names_mips3264r2 },
/* This entry, mips16, is here only for ISA/processor selection; do
not print its name. */
diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c
index 2c3bbad..9785a7e 100644
index 402f887..3764836 100644
--- a/opcodes/mips-opc.c
+++ b/opcodes/mips-opc.c
@@ -319,7 +319,8 @@ decode_mips_operand (const char *p)
#define IOCT (INSN_OCTEON | INSN_OCTEONP | INSN_OCTEON2)
#define IOCTP (INSN_OCTEONP | INSN_OCTEON2)
#define IOCT2 INSN_OCTEON2
@@ -320,7 +320,8 @@ decode_mips_operand (const char *p)
#define IOCTP (INSN_OCTEONP | INSN_OCTEON2 | INSN_OCTEON3)
#define IOCT2 (INSN_OCTEON2 | INSN_OCTEON3)
#define IOCT3 INSN_OCTEON3
-#define XLR INSN_XLR
+#define XLR INSN_XLR
+#define XLP INSN_XLP
#define IVIRT ASE_VIRT
#define IVIRT64 ASE_VIRT64
@@ -956,6 +957,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -957,6 +958,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"clo", "U,s", 0x70000021, 0xfc0007ff, WR_1|RD_2, 0, I32|N55, 0, I37 },
{"clz", "d,s", 0x00000050, 0xfc1f07ff, WR_1|RD_2, 0, I37, 0, 0 },
{"clz", "U,s", 0x70000020, 0xfc0007ff, WR_1|RD_2, 0, I32|N55, 0, I37 },
@ -337,7 +319,7 @@ index 2c3bbad..9785a7e 100644
/* ctc0 is at the bottom of the table. */
{"ctc1", "t,G", 0x44c00000, 0xffe007ff, RD_1|WR_CC|CM, 0, I1, 0, 0 },
{"ctc1", "t,S", 0x44c00000, 0xffe007ff, RD_1|WR_CC|CM, 0, I1, 0, 0 },
@@ -988,12 +990,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -989,12 +991,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_1|RD_2, 0, I3, 0, 0 },
{"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_1|RD_2|RD_3, 0, I3, 0, 0 },
{"daddu", "t,r,I", 0, (int) M_DADDU_I, INSN_MACRO, 0, I3, 0, 0 },
@ -352,7 +334,7 @@ index 2c3bbad..9785a7e 100644
/* dctr and dctw are used on the r5000. */
{"dctr", "o(b)", 0xbc050000, 0xfc1f0000, RD_2, 0, I3, 0, 0 },
{"dctw", "o(b)", 0xbc090000, 0xfc1f0000, RD_2, 0, I3, 0, 0 },
@@ -1065,6 +1068,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1066,6 +1069,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"dmfc0", "t,G,H", 0x40200000, 0xffe007f8, WR_1|RD_C0|LC, 0, I64, 0, 0 },
{"dmfgc0", "t,G", 0x40600100, 0xffe007ff, WR_1|RD_C0|LC, 0, 0, IVIRT64, 0 },
{"dmfgc0", "t,G,H", 0x40600100, 0xffe007f8, WR_1|RD_C0|LC, 0, 0, IVIRT64, 0 },
@ -360,7 +342,7 @@ index 2c3bbad..9785a7e 100644
{"dmt", "", 0x41600bc1, 0xffffffff, TRAP, 0, 0, MT32, 0 },
{"dmt", "t", 0x41600bc1, 0xffe0ffff, WR_1|TRAP, 0, 0, MT32, 0 },
{"dmtc0", "t,G", 0x40a00000, 0xffe007ff, RD_1|WR_C0|WR_CC|CM, 0, I3, 0, EE },
@@ -1080,6 +1084,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1081,6 +1085,8 @@ const struct mips_opcode mips_builtin_opcodes[] =
/* dmfc3 is at the bottom of the table. */
/* dmtc3 is at the bottom of the table. */
{"dmuh", "d,s,t", 0x000000dc, 0xfc0007ff, WR_1|RD_2|RD_3, 0, I69, 0, 0 },
@ -369,7 +351,7 @@ index 2c3bbad..9785a7e 100644
{"dmul", "d,s,t", 0x0000009c, 0xfc0007ff, WR_1|RD_2|RD_3, 0, I69, 0, 0 },
{"dmul", "d,v,t", 0x70000003, 0xfc0007ff, WR_1|RD_2|RD_3|WR_HILO, 0, IOCT, 0, 0 },
{"dmul", "d,v,t", 0, (int) M_DMUL, INSN_MACRO, 0, I3, 0, M32|I69 },
@@ -1229,9 +1235,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1234,9 +1240,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"ld", "s,-b(+R)", 0xec180000, 0xfc1c0000, WR_1, RD_pc, I69, 0, 0 },
{"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO, 0, I1, 0, 0 },
{"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_1|RD_3|LM, 0, I3, 0, 0 },
@ -382,7 +364,7 @@ index 2c3bbad..9785a7e 100644
{"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D, 0, I2, 0, SF },
{"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D, 0, I2, 0, SF },
{"ldc1", "T,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, INSN2_M_FP_D, I2, 0, SF },
@@ -1396,7 +1402,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1401,7 +1407,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"mflo", "d,9", 0x00000012, 0xff9f07ff, WR_1|RD_LO, 0, 0, D32, 0 },
{"mflo1", "d", 0x70000012, 0xffff07ff, WR_1|RD_LO, 0, EE, 0, 0 },
{"mflhxu", "d", 0x00000052, 0xffff07ff, WR_1|MOD_HILO, 0, 0, SMT, 0 },
@ -391,7 +373,7 @@ index 2c3bbad..9785a7e 100644
{"mfsa", "d", 0x00000028, 0xffff07ff, WR_1, 0, EE, 0, 0 },
{"min.ob", "X,Y,Q", 0x78000006, 0xfc20003f, WR_1|RD_2|RD_3|FP_D, 0, SB1, MX, 0 },
{"min.ob", "D,S,Q", 0x48000006, 0xfc20003f, WR_1|RD_2|RD_3|FP_D, 0, N54, 0, 0 },
@@ -1441,10 +1447,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1446,10 +1452,13 @@ const struct mips_opcode mips_builtin_opcodes[] =
/* move is at the top of the table. */
{"msgn.qh", "X,Y,Q", 0x78200000, 0xfc20003f, WR_1|RD_2|RD_3|FP_D, 0, 0, MX, 0 },
{"msgsnd", "t", 0, (int) M_MSGSND, INSN_MACRO, 0, XLR, 0, 0 },
@ -407,16 +389,16 @@ index 2c3bbad..9785a7e 100644
{"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, WR_1|RD_2|RD_3|RD_4|FP_D, 0, I4_33, 0, I37 },
{"msub.d", "D,S,T", 0x46200019, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2E, 0, 0 },
{"msub.d", "D,S,T", 0x72200019, 0xffe0003f, WR_1|RD_2|RD_3|FP_D, 0, IL2F, 0, 0 },
@@ -1494,7 +1503,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1499,7 +1508,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"mtlo", "s,7", 0x00000013, 0xfc1fe7ff, RD_1|WR_LO, 0, 0, D32, 0 },
{"mtlo1", "s", 0x70000013, 0xfc1fffff, RD_1|WR_LO, 0, EE, 0, 0 },
{"mtlhx", "s", 0x00000053, 0xfc1fffff, RD_1|MOD_HILO, 0, 0, SMT, 0 },
-{"mtcr", "t,s", 0x70000019, 0xfc00ffff, RD_1|RD_2, 0, XLR, 0, 0 },
+{"mtcr", "t,s", 0x70000019, 0xfc00ffff, RD_1, 0, XLR|XLP, 0, 0 },
{"mtm0", "s", 0x70000008, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
{"mtm0", "s,t", 0x70000008, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtm1", "s", 0x7000000c, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
{"mtm2", "s", 0x7000000d, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
@@ -1924,9 +1933,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
@@ -1936,9 +1945,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
{"suxc1", "S,t(b)", 0x4c00000d, 0xfc0007ff, RD_1|RD_2|RD_3|SM|FP_D, 0, I5_33|N55, 0, I37},
{"sw", "t,o(b)", 0xac000000, 0xfc000000, RD_1|RD_3|SM, 0, I1, 0, 0 },
{"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO, 0, I1, 0, 0 },
@ -430,5 +412,5 @@ index 2c3bbad..9785a7e 100644
{"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO, 0, I1, 0, IOCT|IOCTP|IOCT2|I37 },
{"swc1", "T,o(b)", 0xe4000000, 0xfc000000, RD_1|RD_3|SM|FP_S, 0, I1, 0, 0 },
--
2.1.4
2.7.0

View File

@ -1,35 +0,0 @@
From 8e8f77ec2b6262e7d10af54700c340173d957267 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 27 Feb 2015 09:05:49 +0000
Subject: [PATCH 13/13] Fix an internal error in do_print_to_mapfile seen with
gold on arm
This is due to missing implementation of do_print_to_mapfile for
atrributea section (ARM.attributes), it started to show up after fix
for PR gold/16980 was installed
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Submitted
---
gold/attributes.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/gold/attributes.h b/gold/attributes.h
index 2aa7a78..3d126e6 100644
--- a/gold/attributes.h
+++ b/gold/attributes.h
@@ -387,6 +387,10 @@ class Output_attributes_section_data : public Output_section_data
{ }
protected:
+ // Write to a map file.
+ void
+ do_print_to_mapfile(Mapfile* mapfile) const
+ { mapfile->print_output_data(this, _("** attributes")); }
// Write the data to the output file.
void
do_write(Output_file*);
--
2.1.4

View File

@ -1,25 +0,0 @@
From ebe26d855452d07e0152bd78d4966475d2de1de8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 5 Mar 2015 07:30:31 +0000
Subject: [PATCH] gold/arm: Skip pic check for R_ARM_REL32
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
gold/arm.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/gold/arm.cc b/gold/arm.cc
index 6c472bb..fb80435 100644
--- a/gold/arm.cc
+++ b/gold/arm.cc
@@ -7829,6 +7829,7 @@ Target_arm<big_endian>::Scan::check_non_pic(Relobj* object,
case elfcpp::R_ARM_TLS_DTPMOD32:
case elfcpp::R_ARM_TLS_DTPOFF32:
case elfcpp::R_ARM_TLS_TPOFF32:
+ case elfcpp::R_ARM_REL32:
return;
default:
--
2.1.4

View File

@ -1,131 +0,0 @@
From e9c1bdad269c0c3352eebcc9481ed65144001b0b Mon Sep 17 00:00:00 2001
From: Cary Coutant <ccoutant@google.com>
Date: Mon, 16 Feb 2015 22:15:12 -0800
Subject: [PATCH] Fix --dynamic-list so that symbols not in the list are still
exported.
In PR 13577, the complaint was that -Bsymbolic was overriding the binding
behavior for symbols listed in the --dynamic-list by setting the DT_SYMBOLIC
tag in the dynamic table. In reading the Gnu ld manual, I decided that
--dynamic-list should be mutually exclusive of -Bsymbolic, and modified
gold so that --dynamic-list would treat symbols listed as preemptible,
and all other symbols as internally bound. I was wrong.
PR 16992 shows that with --dynamic-list (and not -Bsymbolic), a symbol
not listed in the dynamic list is being internally bound within the
shared library, but because it's still in the dynamic symbol table, we
expose it to a COPY relocation, and things go really bad from there.
(I can reproduce the same failure, simply by turning on -Bsymbolic-functions
with the Gnu linker. Even though the symbol is bound internally, it's
still exported to the dynamic symbol table, and is exposed to a COPY
relocation.)
I've backed out part of the fix for PR 13577, and -Bsymbolic (or
-Bsymbolic-functions) can now be used with --dynamic-list, but if the
two are used together, we do not set DT_SYMBOLIC or DF_SYMBOLIC
(this matches Gnu ld behavior). We now treat symbols listed in the
dynamic list as premptible, but we do not automatically treat symbols
not listed there as non-premptible.
gold/
PR gold/13577
PR gold/16992
* layout.cc (Layout::finish_dynamic_section): Don't set DT_SYMBOLIC or
DF_SYMBOLIC if --dynamic-list option is used.
* options.cc (General_options::finalize): --dynamic-list is not
mutually exclusive with -Bsymbolic.
* symtab.h (Symbol::is_preemptible): Don't exclude dynamic symbols not
listed in --dynamic-list.
* testsuite/Makefile.am (dynamic_list_lib2.so): Add
-Bsymbolic-functions.
* testsuite/Makefile.in: Regenerate.
---
Upstream-Status: Backport
gold/ChangeLog | 14 ++++++++++++++
gold/layout.cc | 3 ++-
gold/options.cc | 7 -------
gold/symtab.h | 6 ++----
gold/testsuite/Makefile.am | 2 +-
gold/testsuite/Makefile.in | 2 +-
6 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/gold/layout.cc b/gold/layout.cc
index bcdaac8..7836640 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -4873,7 +4873,8 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
flags |= elfcpp::DF_STATIC_TLS;
if (parameters->options().origin())
flags |= elfcpp::DF_ORIGIN;
- if (parameters->options().Bsymbolic())
+ if (parameters->options().Bsymbolic()
+ && !parameters->options().have_dynamic_list())
{
flags |= elfcpp::DF_SYMBOLIC;
// Add DT_SYMBOLIC for compatibility with older loaders.
diff --git a/gold/options.cc b/gold/options.cc
index 7eb8f27..7f1f69e 100644
--- a/gold/options.cc
+++ b/gold/options.cc
@@ -1200,13 +1200,6 @@ General_options::finalize()
// in the path, as appropriate.
this->add_sysroot();
- // --dynamic-list overrides -Bsymbolic and -Bsymbolic-functions.
- if (this->have_dynamic_list())
- {
- this->set_Bsymbolic(false);
- this->set_Bsymbolic_functions(false);
- }
-
// Now that we've normalized the options, check for contradictory ones.
if (this->shared() && this->is_static())
gold_fatal(_("-shared and -static are incompatible"));
diff --git a/gold/symtab.h b/gold/symtab.h
index aa0cb68..9413360 100644
--- a/gold/symtab.h
+++ b/gold/symtab.h
@@ -604,10 +604,8 @@ class Symbol
if (parameters->options().in_dynamic_list(this->name()))
return true;
- // If the user used -Bsymbolic or provided a --dynamic-list script,
- // then nothing (else) is preemptible.
- if (parameters->options().Bsymbolic()
- || parameters->options().have_dynamic_list())
+ // If the user used -Bsymbolic, then nothing (else) is preemptible.
+ if (parameters->options().Bsymbolic())
return false;
// If the user used -Bsymbolic-functions, then functions are not
diff --git a/gold/testsuite/Makefile.am b/gold/testsuite/Makefile.am
index f767c21..7b73f9d 100644
--- a/gold/testsuite/Makefile.am
+++ b/gold/testsuite/Makefile.am
@@ -1518,7 +1518,7 @@ dynamic_list_lib1.o: dynamic_list_lib1.cc
$(CXXCOMPILE) -c -fpic -o $@ $<
dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
- $(CXXLINK) -Bgcctestdir/ -shared -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
+ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
dynamic_list_lib2.o: dynamic_list_lib2.cc
$(CXXCOMPILE) -c -fpic -o $@ $<
diff --git a/gold/testsuite/Makefile.in b/gold/testsuite/Makefile.in
index 217e472..b4ae3fd 100644
--- a/gold/testsuite/Makefile.in
+++ b/gold/testsuite/Makefile.in
@@ -5319,7 +5319,7 @@ uninstall-am:
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
@GCC_TRUE@@NATIVE_LINKER_TRUE@dynamic_list_lib2.o: dynamic_list_lib2.cc
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
--
1.9.1

View File

@ -1,33 +0,0 @@
Add thunderx support to gas
Upstream-Status: Submitted [https://sourceware.org/ml/binutils/2014-10/msg00170.html]
Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
Author: Andrew Pinski <apinski@cavium.com>
Date: Mon, 20 Oct 2014 11:42:58 -0700
This patch adds -mcpu=thunderx support to gas.
diff -Naurp git_org/gas/config/tc-aarch64.c git/gas/config/tc-aarch64.c
--- git_org/gas/config/tc-aarch64.c 2015-09-07 02:13:51.988973523 -0700
+++ git/gas/config/tc-aarch64.c 2015-09-07 02:15:21.705981540 -0700
@@ -7206,6 +7206,7 @@ static const struct aarch64_cpu_option_t
AARCH64_FEATURE_CRC), "Cortex-A57"},
{"cortex-a72", AARCH64_FEATURE (AARCH64_ARCH_V8,
AARCH64_FEATURE_CRC), "Cortex-A72"},
+ {"thunderx", AARCH64_ARCH_V8, "Cavium ThunderX"},
{"exynos-m1", AARCH64_FEATURE (AARCH64_ARCH_V8,
AARCH64_FEATURE_CRC | AARCH64_FEATURE_CRYPTO),
"Samsung Exynos M1"},
diff -Naurp git_org/gas/doc/c-aarch64.texi git/gas/doc/c-aarch64.texi
--- git_org/gas/doc/c-aarch64.texi 2015-09-07 02:13:51.969973522 -0700
+++ git/gas/doc/c-aarch64.texi 2015-09-07 02:16:03.364985262 -0700
@@ -58,6 +58,7 @@ on the target processor. The following
@code{cortex-a53},
@code{cortex-a57},
@code{cortex-a72},
+@code{thunderx},
@code{exynos-m1},
@code{xgene1},
and

View File

@ -1,272 +0,0 @@
Upstream-Status: Backport
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=2c62985659da21a3fe16062d211a7158f79ad2e9
Signed-off-By: Armin Kuster <akuster@mvista.com>
Index: git/bfd/archures.c
===================================================================
--- git.orig/bfd/archures.c
+++ git/bfd/archures.c
@@ -179,6 +179,7 @@ DESCRIPTION
.#define bfd_mach_mips_octeon 6501
.#define bfd_mach_mips_octeonp 6601
.#define bfd_mach_mips_octeon2 6502
+.#define bfd_mach_mips_octeon3 6503
.#define bfd_mach_mips_xlr 887682 {* decimal 'XLR' *}
.#define bfd_mach_mips_xlp 887680 {* decimal 'XLP' *}
.#define bfd_mach_mipsisa32 32
Index: git/bfd/bfd-in2.h
===================================================================
--- git.orig/bfd/bfd-in2.h
+++ git/bfd/bfd-in2.h
@@ -1969,6 +1969,7 @@ enum bfd_architecture
#define bfd_mach_mips_octeon 6501
#define bfd_mach_mips_octeonp 6601
#define bfd_mach_mips_octeon2 6502
+#define bfd_mach_mips_octeon3 6503
#define bfd_mach_mips_xlr 887682 /* decimal 'XLR' */
#define bfd_mach_mips_xlp 887680 /* decimal 'XLP' */
#define bfd_mach_mipsisa32 32
Index: git/bfd/cpu-mips.c
===================================================================
--- git.orig/bfd/cpu-mips.c
+++ git/bfd/cpu-mips.c
@@ -102,6 +102,7 @@ enum
I_mipsocteon,
I_mipsocteonp,
I_mipsocteon2,
+ I_mipsocteon3,
I_xlr,
I_micromips,
I_xlp
@@ -153,6 +154,7 @@ static const bfd_arch_info_type arch_inf
N (64, 64, bfd_mach_mips_octeon,"mips:octeon", FALSE, NN(I_mipsocteon)),
N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", FALSE, NN(I_mipsocteonp)),
N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", FALSE, NN(I_mipsocteon2)),
+ N (64, 64, bfd_mach_mips_octeon3,"mips:octeon3", FALSE, NN(I_mipsocteon3)),
N (64, 64, bfd_mach_mips_xlr, "mips:xlr", FALSE, NN(I_xlr)),
N (64, 64, bfd_mach_mips_micromips,"mips:micromips",FALSE,NN(I_micromips)),
N (64, 64, bfd_mach_mips_xlp, "mips:xlp", FALSE, 0)
Index: git/bfd/elfxx-mips.c
===================================================================
--- git.orig/bfd/elfxx-mips.c
+++ git/bfd/elfxx-mips.c
@@ -6604,6 +6604,9 @@ _bfd_elf_mips_mach (flagword flags)
case E_MIPS_MACH_LS3A:
return bfd_mach_mips_loongson_3a;
+ case E_MIPS_MACH_OCTEON3:
+ return bfd_mach_mips_octeon3;
+
case E_MIPS_MACH_OCTEON2:
return bfd_mach_mips_octeon2;
@@ -11878,6 +11881,10 @@ mips_set_isa_flags (bfd *abfd)
val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON;
break;
+ case bfd_mach_mips_octeon3:
+ val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON3;
+ break;
+
case bfd_mach_mips_xlr:
val = E_MIPS_ARCH_64 | E_MIPS_MACH_XLR;
break;
@@ -14773,6 +14780,7 @@ struct mips_mach_extension
static const struct mips_mach_extension mips_mach_extensions[] =
{
/* MIPS64r2 extensions. */
+ { bfd_mach_mips_octeon3, bfd_mach_mips_octeon2 },
{ bfd_mach_mips_octeon2, bfd_mach_mips_octeonp },
{ bfd_mach_mips_octeonp, bfd_mach_mips_octeon },
{ bfd_mach_mips_octeon, bfd_mach_mipsisa64r2 },
Index: git/gas/config/tc-mips.c
===================================================================
--- git.orig/gas/config/tc-mips.c
+++ git/gas/config/tc-mips.c
@@ -306,7 +306,7 @@ static unsigned int file_ase_explicit;
unsigned long mips_gprmask;
unsigned long mips_cprmask[4];
-/* True if any MIPS16 code was produced. */
+/* 2True if any MIPS16 code was produced. */
static int file_ase_mips16;
#define ISA_SUPPORTS_MIPS16E (mips_opts.isa == ISA_MIPS32 \
@@ -510,7 +510,8 @@ static int mips_32bitmode = 0;
#define CPU_HAS_ROR(CPU) CPU_HAS_DROR (CPU)
/* True if CPU is in the Octeon family */
-#define CPU_IS_OCTEON(CPU) ((CPU) == CPU_OCTEON || (CPU) == CPU_OCTEONP || (CPU) == CPU_OCTEON2)
+#define CPU_IS_OCTEON(CPU) ((CPU) == CPU_OCTEON || (CPU) == CPU_OCTEONP \
+ || (CPU) == CPU_OCTEON2 || (CPU) == CPU_OCTEON3)
/* True if CPU has seq/sne and seqi/snei instructions. */
#define CPU_HAS_SEQ(CPU) (CPU_IS_OCTEON (CPU))
@@ -18677,6 +18678,7 @@ static const struct mips_cpu_info mips_c
{ "octeon", 0, 0, ISA_MIPS64R2, CPU_OCTEON },
{ "octeon+", 0, 0, ISA_MIPS64R2, CPU_OCTEONP },
{ "octeon2", 0, 0, ISA_MIPS64R2, CPU_OCTEON2 },
+ { "octeon3", 0, ASE_VIRT | ASE_VIRT64, ISA_MIPS64R2, CPU_OCTEON3 },
/* RMI Xlr */
{ "xlr", 0, 0, ISA_MIPS64, CPU_XLR },
Index: git/gas/doc/c-mips.texi
===================================================================
--- git.orig/gas/doc/c-mips.texi
+++ git/gas/doc/c-mips.texi
@@ -382,6 +382,7 @@ loongson3a,
octeon,
octeon+,
octeon2,
+octeon3,
xlr,
xlp
@end quotation
Index: git/gas/testsuite/gas/mips/mips.exp
===================================================================
--- git.orig/gas/testsuite/gas/mips/mips.exp
+++ git/gas/testsuite/gas/mips/mips.exp
@@ -1102,6 +1102,7 @@ if { [istarget mips*-*-vxworks*] } {
run_list_test_arches "octeon-ill" [mips_arch_list_matching octeon]
run_dump_test_arches "octeon-pref" [mips_arch_list_matching octeon]
run_dump_test_arches "octeon2" [mips_arch_list_matching octeon2]
+ run_dump_test_arches "octeon3" [mips_arch_list_matching octeon3]
run_dump_test "smartmips"
run_dump_test_arches "mips32-dsp" [mips_arch_list_matching mips32r2 \
Index: git/gas/testsuite/gas/mips/octeon3.d
===================================================================
--- /dev/null
+++ git/gas/testsuite/gas/mips/octeon3.d
@@ -0,0 +1,20 @@
+#objdump: -d -r --show-raw-insn
+#name: MIPS octeon3 instructions
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+
+[0-9a-f]+ <foo>:
+.*: 71ec0008 mtm0 t3,t0
+.*: 71a40008 mtm0 t1,a0
+.*: 7083000c mtm1 a0,v1
+.*: 70e1000c mtm1 a3,at
+.*: 7022000d mtm2 at,v0
+.*: 7083000c mtm1 a0,v1
+.*: 70a20009 mtp0 a1,v0
+.*: 70c40009 mtp0 a2,a0
+.*: 7083000a mtp1 a0,v1
+.*: 70e1000a mtp1 a3,at
+.*: 7022000b mtp2 at,v0
+.*: 7083000a mtp1 a0,v1
Index: git/gas/testsuite/gas/mips/octeon3.s
===================================================================
--- /dev/null
+++ git/gas/testsuite/gas/mips/octeon3.s
@@ -0,0 +1,22 @@
++ .text
+ .set noreorder
+ .set noat
+
+foo:
+ mtm0 $15,$12
+ mtm0 $13,$4
+
+ mtm1 $4,$3
+ mtm1 $7,$1
+
+ mtm2 $1,$2
+ mtm1 $4,$3
+
+ mtp0 $5,$2
+ mtp0 $6,$4
+
+ mtp1 $4,$3
+ mtp1 $7,$1
+
+ mtp2 $1,$2
+ mtp1 $4,$3
Index: git/include/opcode/mips.h
===================================================================
--- git.orig/include/opcode/mips.h
+++ git/include/opcode/mips.h
@@ -1196,6 +1196,7 @@ static const unsigned int mips_isa_table
#define INSN_OCTEON 0x00000800
#define INSN_OCTEONP 0x00000200
#define INSN_OCTEON2 0x00000100
+#define INSN_OCTEON3 0x00000040
/* MIPS R5900 instruction */
#define INSN_5900 0x00004000
@@ -1325,6 +1326,7 @@ static const unsigned int mips_isa_table
#define CPU_OCTEON 6501
#define CPU_OCTEONP 6601
#define CPU_OCTEON2 6502
+#define CPU_OCTEON3 6503
#define CPU_XLR 887682 /* decimal 'XLR' */
#define CPU_XLP 887680 /* decimal 'XLP' */
@@ -1391,6 +1393,9 @@ cpu_is_member (int cpu, unsigned int mas
case CPU_OCTEON2:
return (mask & INSN_OCTEON2) != 0;
+ case CPU_OCTEON3:
+ return (mask & INSN_OCTEON3) != 0;
+
case CPU_XLR:
return (mask & INSN_XLR) != 0;
Index: git/opcodes/mips-dis.c
===================================================================
--- git.orig/opcodes/mips-dis.c
+++ git/opcodes/mips-dis.c
@@ -649,6 +649,11 @@ const struct mips_arch_choice mips_arch_
ISA_MIPS64R2 | INSN_OCTEON2, 0, mips_cp0_names_numeric,
NULL, 0, mips_cp1_names_mips3264, mips_hwr_names_numeric },
+ { "octeon3", 1, bfd_mach_mips_octeon3, CPU_OCTEON3,
+ ISA_MIPS64R2 | INSN_OCTEON3, ASE_VIRT | ASE_VIRT64,
+ mips_cp0_names_numeric,
+ NULL, 0, mips_cp1_names_mips3264, mips_hwr_names_numeric },
+
{ "xlr", 1, bfd_mach_mips_xlr, CPU_XLR,
ISA_MIPS64 | INSN_XLR, 0,
mips_cp0_names_xlr,
Index: git/opcodes/mips-opc.c
===================================================================
--- git.orig/opcodes/mips-opc.c
+++ git/opcodes/mips-opc.c
@@ -316,9 +316,10 @@ decode_mips_operand (const char *p)
#define N5 (INSN_5400 | INSN_5500)
#define N54 INSN_5400
#define N55 INSN_5500
-#define IOCT (INSN_OCTEON | INSN_OCTEONP | INSN_OCTEON2)
-#define IOCTP (INSN_OCTEONP | INSN_OCTEON2)
-#define IOCT2 INSN_OCTEON2
+#define IOCT (INSN_OCTEON | INSN_OCTEONP | INSN_OCTEON2 | INSN_OCTEON3)
+#define IOCTP (INSN_OCTEONP | INSN_OCTEON2 | INSN_OCTEON3)
+#define IOCT2 (INSN_OCTEON2 | INSN_OCTEON3)
+#define IOCT3 INSN_OCTEON3
#define XLR INSN_XLR
#define XLP INSN_XLP
#define IVIRT ASE_VIRT
@@ -1505,11 +1506,17 @@ const struct mips_opcode mips_builtin_op
{"mtlhx", "s", 0x00000053, 0xfc1fffff, RD_1|MOD_HILO, 0, 0, SMT, 0 },
{"mtcr", "t,s", 0x70000019, 0xfc00ffff, RD_1, 0, XLR|XLP, 0, 0 },
{"mtm0", "s", 0x70000008, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
+{"mtm0", "s,t", 0x70000008, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtm1", "s", 0x7000000c, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
+{"mtm1", "s,t", 0x7000000c, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtm2", "s", 0x7000000d, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
+{"mtm2", "s,t", 0x7000000d, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtp0", "s", 0x70000009, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
+{"mtp0", "s,t", 0x70000009, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtp1", "s", 0x7000000a, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
+{"mtp1", "s,t", 0x7000000a, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtp2", "s", 0x7000000b, 0xfc1fffff, RD_1, 0, IOCT, 0, 0 },
+{"mtp2", "s,t", 0x7000000b, 0xfc00ffff, RD_1|RD_2, 0, IOCT3, 0, 0 },
{"mtsa", "s", 0x00000029, 0xfc1fffff, RD_1, 0, EE, 0, 0 },
{"mtsab", "s,j", 0x04180000, 0xfc1f0000, RD_1, 0, EE, 0, 0 },
{"mtsah", "s,j", 0x04190000, 0xfc1f0000, RD_1, 0, EE, 0, 0 },