Import rpm: c8s
This commit is contained in:
commit
340e5d502a
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
SOURCES/binutils-2.35.tar.xz
|
||||
SOURCES/standards.info.gz
|
||||
/binutils-2.35.tar.xz
|
||||
/standards.info.gz
|
38
binutils-2.19.50.0.1-output-format.sed
Normal file
38
binutils-2.19.50.0.1-output-format.sed
Normal file
@ -0,0 +1,38 @@
|
||||
# Generate OUTPUT_FORMAT line for .so files from the system linker output.
|
||||
# Imported from glibc/Makerules.
|
||||
|
||||
/ld.*[ ]-E[BL]/b f
|
||||
/collect.*[ ]-E[BL]/b f
|
||||
/OUTPUT_FORMAT[^)]*$/{N
|
||||
s/\n[ ]*/ /
|
||||
}
|
||||
t o
|
||||
: o
|
||||
s/^.*OUTPUT_FORMAT(\([^,]*\), \1, \1).*$/OUTPUT_FORMAT(\1)/
|
||||
t q
|
||||
s/^.*OUTPUT_FORMAT(\([^,]*\), \([^,]*\), \([^,]*\)).*$/\1,\2,\3/
|
||||
t s
|
||||
s/^.*OUTPUT_FORMAT(\([^,)]*\).*$)/OUTPUT_FORMAT(\1)/
|
||||
t q
|
||||
d
|
||||
: s
|
||||
s/"//g
|
||||
G
|
||||
s/\n//
|
||||
s/^\([^,]*\),\([^,]*\),\([^,]*\),B/OUTPUT_FORMAT(\2)/p
|
||||
s/^\([^,]*\),\([^,]*\),\([^,]*\),L/OUTPUT_FORMAT(\3)/p
|
||||
s/^\([^,]*\),\([^,]*\),\([^,]*\)/OUTPUT_FORMAT(\1)/p
|
||||
/,/s|^|*** BUG in libc/scripts/output-format.sed *** |p
|
||||
q
|
||||
: q
|
||||
s/"//g
|
||||
p
|
||||
q
|
||||
: f
|
||||
s/^.*[ ]-E\([BL]\)[ ].*$/,\1/
|
||||
t h
|
||||
s/^.*[ ]-E\([BL]\)$/,\1/
|
||||
t h
|
||||
d
|
||||
: h
|
||||
h
|
236
binutils-2.20.51.0.2-libtool-lib64.patch
Normal file
236
binutils-2.20.51.0.2-libtool-lib64.patch
Normal file
@ -0,0 +1,236 @@
|
||||
diff -rcp ../binutils-2.20.51.0.7.original/bfd/configure ./bfd/configure
|
||||
--- a/bfd/configure 2010-04-08 14:53:48.000000000 +0100
|
||||
+++ b/bfd/configure 2010-04-08 14:56:50.000000000 +0100
|
||||
@@ -10762,10 +10762,34 @@
|
||||
# before this can be enabled.
|
||||
hardcode_into_libs=yes
|
||||
|
||||
+ # find out which ABI we are using
|
||||
+ libsuff=
|
||||
+ case "$host_cpu" in
|
||||
+ x86_64*|s390*|powerpc*|ppc*|sparc*)
|
||||
+ echo 'int i;' > conftest.$ac_ext
|
||||
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
+ (eval $ac_compile) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; then
|
||||
+ case `/usr/bin/file conftest.$ac_objext` in
|
||||
+ *64-bit*)
|
||||
+ libsuff=64
|
||||
+ if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
|
||||
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
|
||||
+ fi
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ rm -rf conftest*
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
# Append ld.so.conf contents to the search path
|
||||
if test -f /etc/ld.so.conf; then
|
||||
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
|
||||
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
|
||||
fi
|
||||
|
||||
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
||||
diff -rcp ../binutils-2.20.51.0.7.original/binutils/configure ./binutils/configure
|
||||
--- a/binutils/configure 2010-04-08 14:53:45.000000000 +0100
|
||||
+++ b/binutils/configure 2010-04-08 14:56:21.000000000 +0100
|
||||
@@ -10560,10 +10560,34 @@
|
||||
# before this can be enabled.
|
||||
hardcode_into_libs=yes
|
||||
|
||||
+ # find out which ABI we are using
|
||||
+ libsuff=
|
||||
+ case "$host_cpu" in
|
||||
+ x86_64*|s390*|powerpc*|ppc*|sparc*)
|
||||
+ echo 'int i;' > conftest.$ac_ext
|
||||
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
+ (eval $ac_compile) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; then
|
||||
+ case `/usr/bin/file conftest.$ac_objext` in
|
||||
+ *64-bit*)
|
||||
+ libsuff=64
|
||||
+ if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
|
||||
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
|
||||
+ fi
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ rm -rf conftest*
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
# Append ld.so.conf contents to the search path
|
||||
if test -f /etc/ld.so.conf; then
|
||||
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
|
||||
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
|
||||
fi
|
||||
|
||||
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
||||
diff -rcp ../binutils-2.20.51.0.7.original/gas/configure ./gas/configure
|
||||
--- a/gas/configure 2010-04-08 14:53:47.000000000 +0100
|
||||
+++ b/gas/configure 2010-04-08 14:57:24.000000000 +0100
|
||||
@@ -10547,10 +10547,34 @@
|
||||
# before this can be enabled.
|
||||
hardcode_into_libs=yes
|
||||
|
||||
+ # find out which ABI we are using
|
||||
+ libsuff=
|
||||
+ case "$host_cpu" in
|
||||
+ x86_64*|s390*|powerpc*|ppc*|sparc*)
|
||||
+ echo 'int i;' > conftest.$ac_ext
|
||||
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
+ (eval $ac_compile) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; then
|
||||
+ case `/usr/bin/file conftest.$ac_objext` in
|
||||
+ *64-bit*)
|
||||
+ libsuff=64
|
||||
+ if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
|
||||
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
|
||||
+ fi
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ rm -rf conftest*
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
# Append ld.so.conf contents to the search path
|
||||
if test -f /etc/ld.so.conf; then
|
||||
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
|
||||
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
|
||||
fi
|
||||
|
||||
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
||||
diff -rcp ../binutils-2.20.51.0.7.original/gprof/configure ./gprof/configure
|
||||
--- a/gprof/configure 2010-04-08 14:53:45.000000000 +0100
|
||||
+++ b/gprof/configure 2010-04-08 14:57:50.000000000 +0100
|
||||
@@ -10485,10 +10485,34 @@
|
||||
# before this can be enabled.
|
||||
hardcode_into_libs=yes
|
||||
|
||||
+ # find out which ABI we are using
|
||||
+ libsuff=
|
||||
+ case "$host_cpu" in
|
||||
+ x86_64*|s390*|powerpc*|ppc*|sparc*)
|
||||
+ echo 'int i;' > conftest.$ac_ext
|
||||
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
+ (eval $ac_compile) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; then
|
||||
+ case `/usr/bin/file conftest.$ac_objext` in
|
||||
+ *64-bit*)
|
||||
+ libsuff=64
|
||||
+ if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
|
||||
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
|
||||
+ fi
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ rm -rf conftest*
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
# Append ld.so.conf contents to the search path
|
||||
if test -f /etc/ld.so.conf; then
|
||||
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
|
||||
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
|
||||
fi
|
||||
|
||||
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
||||
diff -rcp ../binutils-2.20.51.0.7.original/ld/configure ./ld/configure
|
||||
--- a/ld/configure 2010-04-08 14:53:44.000000000 +0100
|
||||
+++ b/ld/configure 2010-04-08 14:58:21.000000000 +0100
|
||||
@@ -10966,10 +10966,34 @@
|
||||
# before this can be enabled.
|
||||
hardcode_into_libs=yes
|
||||
|
||||
+ # find out which ABI we are using
|
||||
+ libsuff=
|
||||
+ case "$host_cpu" in
|
||||
+ x86_64*|s390*|powerpc*|ppc*|sparc*)
|
||||
+ echo 'int i;' > conftest.$ac_ext
|
||||
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
+ (eval $ac_compile) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; then
|
||||
+ case `/usr/bin/file conftest.$ac_objext` in
|
||||
+ *64-bit*)
|
||||
+ libsuff=64
|
||||
+ if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
|
||||
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
|
||||
+ fi
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ rm -rf conftest*
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
# Append ld.so.conf contents to the search path
|
||||
if test -f /etc/ld.so.conf; then
|
||||
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
|
||||
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
|
||||
fi
|
||||
|
||||
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
||||
Only in .: .#libtool.m4
|
||||
Only in .: #libtool.m4#
|
||||
diff -rcp ../binutils-2.20.51.0.7.original/opcodes/configure ./opcodes/configure
|
||||
--- a/opcodes/configure 2010-04-08 14:53:45.000000000 +0100
|
||||
+++ b/opcodes/configure 2010-04-08 14:59:10.000000000 +0100
|
||||
@@ -10496,10 +10496,34 @@
|
||||
# before this can be enabled.
|
||||
hardcode_into_libs=yes
|
||||
|
||||
+ # find out which ABI we are using
|
||||
+ libsuff=
|
||||
+ case "$host_cpu" in
|
||||
+ x86_64*|s390*|powerpc*|ppc*|sparc*)
|
||||
+ echo 'int i;' > conftest.$ac_ext
|
||||
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
+ (eval $ac_compile) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; then
|
||||
+ case `/usr/bin/file conftest.$ac_objext` in
|
||||
+ *64-bit*)
|
||||
+ libsuff=64
|
||||
+ if test x"$sys_lib_search_path_spec" = x"/lib /usr/lib /usr/local/lib"; then
|
||||
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
|
||||
+ fi
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ rm -rf conftest*
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
# Append ld.so.conf contents to the search path
|
||||
if test -f /etc/ld.so.conf; then
|
||||
lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
|
||||
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
|
||||
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
|
||||
fi
|
||||
|
||||
# We used to test for /lib/ld.so.1 and disable shared libraries on
|
28
binutils-2.22.52.0.4-no-config-h-check.patch
Normal file
28
binutils-2.22.52.0.4-no-config-h-check.patch
Normal file
@ -0,0 +1,28 @@
|
||||
--- a/bfd/bfd-in.h 2012-08-02 10:56:34.561769686 +0100
|
||||
+++ b/bfd/bfd-in.h 2012-08-02 11:13:27.134797755 +0100
|
||||
@@ -25,11 +25,6 @@
|
||||
#ifndef __BFD_H_SEEN__
|
||||
#define __BFD_H_SEEN__
|
||||
|
||||
-/* PR 14072: Ensure that config.h is included first. */
|
||||
-#if !defined PACKAGE && !defined PACKAGE_VERSION
|
||||
-#error config.h must be included before this header
|
||||
-#endif
|
||||
-
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
--- a/bfd/bfd-in2.h 2012-08-02 10:56:34.349769680 +0100
|
||||
+++ b/bfd/bfd-in2.h 2012-08-02 11:13:40.015798113 +0100
|
||||
@@ -32,11 +32,6 @@
|
||||
#ifndef __BFD_H_SEEN__
|
||||
#define __BFD_H_SEEN__
|
||||
|
||||
-/* PR 14072: Ensure that config.h is included first. */
|
||||
-#if !defined PACKAGE && !defined PACKAGE_VERSION
|
||||
-#error config.h must be included before this header
|
||||
-#endif
|
||||
-
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
38
binutils-2.25-set-long-long.patch
Normal file
38
binutils-2.25-set-long-long.patch
Normal file
@ -0,0 +1,38 @@
|
||||
diff -up binutils-2.25.orig/bfd/configure.ac binutils-2.25/bfd/configure.ac
|
||||
--- binutils-2.25.orig/bfd/configure.ac 2014-12-24 10:34:45.590491143 +0000
|
||||
+++ binutils-2.25/bfd/configure.ac 2014-12-24 10:36:12.997981992 +0000
|
||||
@@ -183,11 +183,13 @@ if test "x${ac_cv_sizeof_long}" = "x8";
|
||||
BFD_HOST_64BIT_LONG=1
|
||||
test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
|
||||
test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
|
||||
-elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
|
||||
+fi
|
||||
+if test "x${ac_cv_sizeof_long_long}" = "x8"; then
|
||||
BFD_HOST_64BIT_LONG_LONG=1
|
||||
test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
|
||||
test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
|
||||
- if test "x${ac_cv_sizeof_void_p}" = "x8"; then
|
||||
+ if test "x${ac_cv_sizeof_void_p}" = "x8" \
|
||||
+ -a "x${ac_cv_sizeof_long}" != "x8"; then
|
||||
BFD_HOSTPTR_T="unsigned long long"
|
||||
fi
|
||||
fi
|
||||
diff -up ../binutils-2.20.51.0.7.original/bfd/configure ./bfd/configure
|
||||
--- a/bfd/configure 2010-04-08 15:23:58.000000000 +0100
|
||||
+++ b/bfd/configure 2010-04-08 15:24:06.000000000 +0100
|
||||
@@ -12819,11 +12819,13 @@
|
||||
BFD_HOST_64BIT_LONG=1
|
||||
test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
|
||||
test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
|
||||
-elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
|
||||
+fi
|
||||
+if test "x${ac_cv_sizeof_long_long}" = "x8"; then
|
||||
BFD_HOST_64BIT_LONG_LONG=1
|
||||
test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
|
||||
test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
|
||||
- if test "x${ac_cv_sizeof_void_p}" = "x8"; then
|
||||
+ if test "x${ac_cv_sizeof_void_p}" = "x8" \
|
||||
+ -a "x${ac_cv_sizeof_long}" != "x8"; then
|
||||
BFD_HOSTPTR_T="unsigned long long"
|
||||
fi
|
||||
fi
|
44
binutils-2.25-version.patch
Normal file
44
binutils-2.25-version.patch
Normal file
@ -0,0 +1,44 @@
|
||||
--- binutils-2.26.orig/bfd/Makefile.am 2016-01-25 10:11:33.505289018 +0000
|
||||
+++ binutils-2.26/bfd/Makefile.am 2016-01-25 10:13:23.489964145 +0000
|
||||
@@ -1043,8 +1043,8 @@ DISTCLEANFILES = $(BUILD_CFILES) $(BUILD
|
||||
bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
|
||||
@echo "creating $@"
|
||||
@bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
|
||||
- bfd_version_string="\"$(VERSION)\"" ;\
|
||||
- bfd_soversion="$(VERSION)" ;\
|
||||
+ bfd_version_string="\"$(VERSION)-%{release}\"" ;\
|
||||
+ bfd_soversion="$(VERSION)-%{release}" ;\
|
||||
bfd_version_package="\"$(PKGVERSION)\"" ;\
|
||||
report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
|
||||
. $(srcdir)/development.sh ;\
|
||||
@@ -1055,7 +1055,7 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
|
||||
fi ;\
|
||||
$(SED) -e "s,@bfd_version@,$$bfd_version," \
|
||||
-e "s,@bfd_version_string@,$$bfd_version_string," \
|
||||
- -e "s,@bfd_version_package@,$$bfd_version_package," \
|
||||
+ -e "s,@bfd_version_package@,\"version \"," \
|
||||
-e "s,@report_bugs_to@,$$report_bugs_to," \
|
||||
< $(srcdir)/version.h > $@; \
|
||||
echo "$${bfd_soversion}" > libtool-soversion
|
||||
--- binutils-2.26.orig/bfd/Makefile.in 2016-01-25 10:11:33.505289018 +0000
|
||||
+++ binutils-2.26/bfd/Makefile.in 2016-01-25 10:14:17.818297941 +0000
|
||||
@@ -2111,8 +2111,8 @@ stmp-lcoff-h: $(LIBCOFF_H_FILES)
|
||||
bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
|
||||
@echo "creating $@"
|
||||
@bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
|
||||
- bfd_version_string="\"$(VERSION)\"" ;\
|
||||
- bfd_soversion="$(VERSION)" ;\
|
||||
+ bfd_version_string="\"$(VERSION)-%{release}\"" ;\
|
||||
+ bfd_soversion="$(VERSION)-%{release}" ;\
|
||||
bfd_version_package="\"$(PKGVERSION)\"" ;\
|
||||
report_bugs_to="\"$(REPORT_BUGS_TO)\"" ;\
|
||||
. $(srcdir)/development.sh ;\
|
||||
@@ -2123,7 +2123,7 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
|
||||
fi ;\
|
||||
$(SED) -e "s,@bfd_version@,$$bfd_version," \
|
||||
-e "s,@bfd_version_string@,$$bfd_version_string," \
|
||||
- -e "s,@bfd_version_package@,$$bfd_version_package," \
|
||||
+ -e "s,@bfd_version_package@,\"version \"," \
|
||||
-e "s,@report_bugs_to@,$$report_bugs_to," \
|
||||
< $(srcdir)/version.h > $@; \
|
||||
echo "$${bfd_soversion}" > libtool-soversion
|
11
binutils-2.27-aarch64-ifunc.patch
Normal file
11
binutils-2.27-aarch64-ifunc.patch
Normal file
@ -0,0 +1,11 @@
|
||||
diff -rup binutils.orig/bfd/elfnn-aarch64.c binutils-2.27/bfd/elfnn-aarch64.c
|
||||
--- binutils.orig/bfd/elfnn-aarch64.c 2017-02-21 10:45:19.311956006 +0000
|
||||
+++ binutils-2.27/bfd/elfnn-aarch64.c 2017-02-21 11:55:07.517922655 +0000
|
||||
@@ -4947,6 +4947,7 @@ elfNN_aarch64_final_link_relocate (reloc
|
||||
it here if it is defined in a non-shared object. */
|
||||
if (h != NULL
|
||||
&& h->type == STT_GNU_IFUNC
|
||||
+ && (input_section->flags & SEC_ALLOC)
|
||||
&& h->def_regular)
|
||||
{
|
||||
asection *plt;
|
14
binutils-2.28-ignore-gold-duplicates.patch
Normal file
14
binutils-2.28-ignore-gold-duplicates.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff -rup binutils.orig/ld/ldmain.c binutils-2.28/ld/ldmain.c
|
||||
--- binutils.orig/ld/ldmain.c 2017-06-09 09:08:26.954016429 +0100
|
||||
+++ binutils-2.28/ld/ldmain.c 2017-06-09 09:09:11.307490976 +0100
|
||||
@@ -923,6 +923,10 @@ multiple_definition (struct bfd_link_inf
|
||||
obfd = h->u.def.section->owner;
|
||||
break;
|
||||
case bfd_link_hash_indirect:
|
||||
+ /* PR 21074: The GOLD linker can produce multiple indirect
|
||||
+ refences to the same symbol. These can be ignored. */
|
||||
+ if (bfd_is_ind_section (nsec))
|
||||
+ return;
|
||||
osec = bfd_ind_section_ptr;
|
||||
oval = 0;
|
||||
obfd = NULL;
|
123
binutils-2.29-filename-in-error-messages.patch
Normal file
123
binutils-2.29-filename-in-error-messages.patch
Normal file
@ -0,0 +1,123 @@
|
||||
--- binutils.orig/binutils/readelf.c 2020-07-24 14:55:25.163647522 +0100
|
||||
+++ binutils-2.35/binutils/readelf.c 2020-07-24 15:02:39.613851369 +0100
|
||||
@@ -20729,79 +20729,92 @@ process_file (char * file_name)
|
||||
Filedata * filedata = NULL;
|
||||
struct stat statbuf;
|
||||
char armag[SARMAG];
|
||||
- bfd_boolean ret = TRUE;
|
||||
+ bfd_boolean ret = FALSE;
|
||||
+ char * name;
|
||||
+ char * saved_program_name;
|
||||
+
|
||||
+ /* Overload program_name to include file_name. Doing this means
|
||||
+ that warning/error messages will positively identify the file
|
||||
+ concerned even when multiple instances of readelf are running. */
|
||||
+ name = xmalloc (strlen (program_name) + strlen (file_name) + 3);
|
||||
+ sprintf (name, "%s: %s", program_name, file_name);
|
||||
+ saved_program_name = program_name;
|
||||
+ program_name = name;
|
||||
|
||||
if (stat (file_name, &statbuf) < 0)
|
||||
{
|
||||
if (errno == ENOENT)
|
||||
- error (_("'%s': No such file\n"), file_name);
|
||||
+ error (_("No such file\n"));
|
||||
else
|
||||
- error (_("Could not locate '%s'. System error message: %s\n"),
|
||||
- file_name, strerror (errno));
|
||||
- return FALSE;
|
||||
+ error (_("Could not locate file. System error message: %s\n"),
|
||||
+ strerror (errno));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
if (! S_ISREG (statbuf.st_mode))
|
||||
{
|
||||
- error (_("'%s' is not an ordinary file\n"), file_name);
|
||||
- return FALSE;
|
||||
+ error (_("Not an ordinary file\n"));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
filedata = calloc (1, sizeof * filedata);
|
||||
if (filedata == NULL)
|
||||
{
|
||||
error (_("Out of memory allocating file data structure\n"));
|
||||
- return FALSE;
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
filedata->file_name = file_name;
|
||||
filedata->handle = fopen (file_name, "rb");
|
||||
if (filedata->handle == NULL)
|
||||
{
|
||||
- error (_("Input file '%s' is not readable.\n"), file_name);
|
||||
- free (filedata);
|
||||
- return FALSE;
|
||||
+ error (_("Not readable\n"));
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
if (fread (armag, SARMAG, 1, filedata->handle) != 1)
|
||||
{
|
||||
- error (_("%s: Failed to read file's magic number\n"), file_name);
|
||||
+ error (_("Failed to read file's magic number\n"));
|
||||
fclose (filedata->handle);
|
||||
- free (filedata);
|
||||
- return FALSE;
|
||||
+ goto done;
|
||||
}
|
||||
|
||||
filedata->file_size = (bfd_size_type) statbuf.st_size;
|
||||
|
||||
if (memcmp (armag, ARMAG, SARMAG) == 0)
|
||||
{
|
||||
- if (! process_archive (filedata, FALSE))
|
||||
- ret = FALSE;
|
||||
+ if (process_archive (filedata, FALSE))
|
||||
+ ret = TRUE;
|
||||
}
|
||||
else if (memcmp (armag, ARMAGT, SARMAG) == 0)
|
||||
{
|
||||
- if ( ! process_archive (filedata, TRUE))
|
||||
- ret = FALSE;
|
||||
+ if (process_archive (filedata, TRUE))
|
||||
+ ret = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (do_archive_index && !check_all)
|
||||
- error (_("File %s is not an archive so its index cannot be displayed.\n"),
|
||||
- file_name);
|
||||
+ error (_("Not an archive so its index cannot be displayed.\n"));
|
||||
|
||||
rewind (filedata->handle);
|
||||
filedata->archive_file_size = filedata->archive_file_offset = 0;
|
||||
|
||||
- if (! process_object (filedata))
|
||||
- ret = FALSE;
|
||||
+ if (process_object (filedata))
|
||||
+ ret = TRUE;
|
||||
}
|
||||
|
||||
- fclose (filedata->handle);
|
||||
- free (filedata->section_headers);
|
||||
- free (filedata->program_headers);
|
||||
- free (filedata->string_table);
|
||||
- free (filedata->dump.dump_sects);
|
||||
- free (filedata);
|
||||
+ done:
|
||||
+ if (filedata)
|
||||
+ {
|
||||
+ fclose (filedata->handle);
|
||||
+ free (filedata->section_headers);
|
||||
+ free (filedata->program_headers);
|
||||
+ free (filedata->string_table);
|
||||
+ free (filedata->dump.dump_sects);
|
||||
+ free (filedata);
|
||||
+ }
|
||||
+ free (program_name);
|
||||
+ program_name = saved_program_name;
|
||||
|
||||
free (ba_cache.strtab);
|
||||
ba_cache.strtab = NULL;
|
265
binutils-2.29-revert-PLT-elision.patch
Normal file
265
binutils-2.29-revert-PLT-elision.patch
Normal file
@ -0,0 +1,265 @@
|
||||
diff -rup binutils.orig/ld/testsuite/ld-i386/pltgot-1.d binutils-2.29.1/ld/testsuite/ld-i386/pltgot-1.d
|
||||
--- binutils.orig/ld/testsuite/ld-i386/pltgot-1.d 2017-11-15 13:32:39.335065263 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-i386/pltgot-1.d 2017-11-15 15:03:55.649727195 +0000
|
||||
@@ -2,6 +2,7 @@
|
||||
#readelf: -S --wide
|
||||
#as: --32
|
||||
|
||||
+#pass
|
||||
#...
|
||||
+\[ *[0-9]+\] \.plt +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+10 +.*
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-i386/pltgot-2.d binutils-2.29.1/ld/testsuite/ld-i386/pltgot-2.d
|
||||
--- binutils.orig/ld/testsuite/ld-i386/pltgot-2.d 2017-11-15 13:32:39.329065335 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-i386/pltgot-2.d 2017-11-15 15:04:20.803430034 +0000
|
||||
@@ -3,7 +3,6 @@
|
||||
#readelf: -d --wide
|
||||
#as: --32
|
||||
|
||||
-#failif
|
||||
#...
|
||||
+0x[0-9a-f]+ +\(PLTREL.*
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-i386/pr19636-2d.d binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2d.d
|
||||
--- binutils.orig/ld/testsuite/ld-i386/pr19636-2d.d 2017-11-15 13:32:39.336065251 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2d.d 2017-11-15 15:03:00.413379749 +0000
|
||||
@@ -9,7 +9,7 @@ Relocation section '\.rel\.dyn' at offse
|
||||
[0-9a-f]+ +[0-9a-f]+ +R_386_32 +0+ +func
|
||||
[0-9a-f]+ +[0-9a-f]+ +R_386_PC32 +0+ +func
|
||||
[0-9a-f]+ +[0-9a-f]+ +R_386_GLOB_DAT +0+ +func
|
||||
-
|
||||
+#...
|
||||
Symbol table '\.dynsym' contains [0-9]+ entries:
|
||||
+Num: +Value +Size Type +Bind +Vis +Ndx Name
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-i386/pr19636-2e.d binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2e.d
|
||||
--- binutils.orig/ld/testsuite/ld-i386/pr19636-2e.d 2017-11-15 13:32:39.330065323 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-i386/pr19636-2e.d 2017-11-15 15:03:28.928042882 +0000
|
||||
@@ -9,7 +9,7 @@ Relocation section '\.rel\.dyn' at offse
|
||||
[0-9a-f]+ +[0-9a-f]+ +R_386_32 +0+ +func
|
||||
[0-9a-f]+ +[0-9a-f]+ +R_386_PC32 +0+ +func
|
||||
[0-9a-f]+ +[0-9a-f]+ +R_386_GLOB_DAT +0+ +func
|
||||
-
|
||||
+#...
|
||||
Symbol table '\.dynsym' contains [0-9]+ entries:
|
||||
+Num: +Value +Size Type +Bind +Vis +Ndx Name
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pltgot-1.d binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-1.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pltgot-1.d 2017-11-15 13:32:39.415064300 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-1.d 2017-11-15 15:08:39.333375801 +0000
|
||||
@@ -2,8 +2,4 @@
|
||||
#readelf: -S --wide
|
||||
#as: --64
|
||||
|
||||
-#...
|
||||
- +\[ *[0-9]+\] \.plt +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+10 +.*
|
||||
-#...
|
||||
- +\[ *[0-9]+\] \.got\.plt +PROGBITS +[0-9a-f]+ +[0-9a-f]+ +0+18 +.*
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pltgot-2.d binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-2.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pltgot-2.d 2017-11-15 13:32:39.404064432 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pltgot-2.d 2017-11-15 15:08:59.031143095 +0000
|
||||
@@ -3,7 +3,6 @@
|
||||
#readelf: -d --wide
|
||||
#as: --64
|
||||
|
||||
-#failif
|
||||
#...
|
||||
+0x[0-9a-f]+ +\(PLTREL.*
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/plt-main-bnd.dd binutils-2.29.1/ld/testsuite/ld-x86-64/plt-main-bnd.dd
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/plt-main-bnd.dd 2017-11-15 13:32:39.405064420 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/plt-main-bnd.dd 2017-11-15 15:06:53.694623801 +0000
|
||||
@@ -1,7 +1,4 @@
|
||||
-#...
|
||||
-Disassembly of section .plt.got:
|
||||
|
||||
-[a-f0-9]+ <[a-z_]+@plt>:
|
||||
-[ ]*[a-f0-9]+: f2 ff 25 .. .. 20 00 bnd jmpq \*0x20....\(%rip\) # ...... <.*>
|
||||
+#...
|
||||
[ ]*[a-f0-9]+: 90 nop
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/plt-main.rd binutils-2.29.1/ld/testsuite/ld-x86-64/plt-main.rd
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/plt-main.rd 2017-11-15 13:32:39.407064397 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/plt-main.rd 2017-11-15 15:06:17.244054423 +0000
|
||||
@@ -1,4 +1,3 @@
|
||||
-#failif
|
||||
#...
|
||||
[0-9a-f ]+R_X86_64_JUMP_SLOT +0+ +bar \+ 0
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830a.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr20830a.d 2017-11-15 13:32:39.412064336 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a.d 2017-11-15 15:15:09.918750288 +0000
|
||||
@@ -20,6 +20,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
+#pass
|
||||
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830a-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a-now.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr20830a-now.d 2017-11-15 13:32:39.413064324 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830a-now.d 2017-11-15 15:16:08.227055104 +0000
|
||||
@@ -20,6 +20,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
+#pass
|
||||
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830b.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr20830b.d 2017-11-15 13:32:39.413064324 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b.d 2017-11-15 15:16:20.115913358 +0000
|
||||
@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000010 0000001c FDE cie=00000000 pc=0000000000000138..0000000000000144
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr20830b-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b-now.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr20830b-now.d 2017-11-15 13:32:39.411064348 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr20830b-now.d 2017-11-15 15:16:29.012807282 +0000
|
||||
@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000010 0000001c FDE cie=00000000 pc=0000000000000138..0000000000000144
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038a.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr21038a.d 2017-11-15 13:32:39.408064384 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a.d 2017-11-15 15:19:48.097433680 +0000
|
||||
@@ -19,7 +19,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038a-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a-now.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr21038a-now.d 2017-11-15 13:32:39.401064469 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038a-now.d 2017-11-15 15:10:56.077760324 +0000
|
||||
@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001c8..00000000000001d4
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038b.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr21038b.d 2017-11-15 13:32:39.405064420 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b.d 2017-11-15 15:10:42.828916844 +0000
|
||||
@@ -19,6 +19,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
+#pass
|
||||
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001d8..00000000000001dd
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038b-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b-now.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr21038b-now.d 2017-11-15 13:32:39.416064288 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038b-now.d 2017-11-15 15:11:11.550577531 +0000
|
||||
@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=00000000000001d8..00000000000001dd
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038c.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr21038c.d 2017-11-15 13:32:39.411064348 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c.d 2017-11-15 15:09:52.664509478 +0000
|
||||
@@ -19,7 +19,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000220..0000000000000231
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr21038c-now.d binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c-now.d
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/pr21038c-now.d 2017-11-15 13:32:39.413064324 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/pr21038c-now.d 2017-11-15 15:11:22.975442559 +0000
|
||||
@@ -20,7 +20,8 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r16 \(rip\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
+
|
||||
0+18 0000000000000014 0000001c FDE cie=00000000 pc=0000000000000220..0000000000000231
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd binutils-2.29.1/ld/testsuite/ld-x86-64/tlspic2.rd
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd 2017-11-15 13:32:39.417064276 +0000
|
||||
+++ binutils-2.29.1/ld/testsuite/ld-x86-64/tlspic2.rd 2017-11-15 15:05:02.950932110 +0000
|
||||
@@ -14,6 +14,7 @@ Section Headers:
|
||||
+\[[ 0-9]+\] .dynsym +.*
|
||||
+\[[ 0-9]+\] .dynstr +.*
|
||||
+\[[ 0-9]+\] .rela.dyn +.*
|
||||
+#pass
|
||||
+\[[ 0-9]+\] .plt +.*
|
||||
+\[[ 0-9]+\] .plt.got +.*
|
||||
+\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+31a 00 +AX +0 +0 4096
|
||||
--- binutils.orig/bfd/elfxx-x86.c 2018-01-22 15:59:25.875788033 +0000
|
||||
+++ binutils-2.30.0/bfd/elfxx-x86.c 2018-01-22 16:00:20.789146597 +0000
|
||||
@@ -107,7 +107,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
|
||||
plt_entry_size = htab->plt.plt_entry_size;
|
||||
|
||||
resolved_to_zero = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
|
||||
-
|
||||
+#if 0
|
||||
/* We can't use the GOT PLT if pointer equality is needed since
|
||||
finish_dynamic_symbol won't clear symbol value and the dynamic
|
||||
linker won't update the GOT slot. We will get into an infinite
|
||||
@@ -125,7 +125,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
|
||||
/* Use the GOT PLT. */
|
||||
eh->plt_got.refcount = 1;
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
|
||||
here if it is defined and referenced in a non-shared object. */
|
||||
if (h->type == STT_GNU_IFUNC
|
||||
--- binutils.orig/ld/testsuite/ld-i386/pr20830.d 2018-07-09 09:49:51.277239857 +0100
|
||||
+++ binutils-2.30.90/ld/testsuite/ld-i386/pr20830.d 2018-07-09 10:32:41.113356733 +0100
|
||||
@@ -19,7 +19,7 @@ Contents of the .eh_frame section:
|
||||
DW_CFA_offset: r8 \(eip\) at cfa-4
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
-
|
||||
+#pass
|
||||
0+18 00000010 0000001c FDE cie=00000000 pc=00000128..00000133
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/plt-main-ibt.dd 2020-07-24 14:55:25.370646189 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/plt-main-ibt.dd 2020-07-24 15:06:58.124189348 +0100
|
||||
@@ -1,7 +1,3 @@
|
||||
#...
|
||||
-Disassembly of section .plt.got:
|
||||
-
|
||||
-[a-f0-9]+ <[_a-z]+@plt>:
|
||||
[ ]*[a-f0-9]+: f3 0f 1e fa endbr64
|
||||
-[ ]*[a-f0-9]+: f2 ff 25 .. .. 20 00 bnd jmpq \*0x20....\(%rip\) # ...... <.*>
|
||||
#pass
|
15
binutils-CVE-2019-1010204.patch
Normal file
15
binutils-CVE-2019-1010204.patch
Normal file
@ -0,0 +1,15 @@
|
||||
--- binutils.orig/gold/fileread.cc 2019-08-06 14:22:08.669313110 +0100
|
||||
+++ binutils-2.32/gold/fileread.cc 2019-08-06 14:22:28.799177543 +0100
|
||||
@@ -381,6 +381,12 @@ File_read::do_read(off_t start, section_
|
||||
ssize_t bytes;
|
||||
if (this->whole_file_view_ != NULL)
|
||||
{
|
||||
+ // See PR 23765 for an example of a testcase that triggers this error.
|
||||
+ if (((ssize_t) start) < 0)
|
||||
+ gold_fatal(_("%s: read failed, starting offset (%#llx) less than zero"),
|
||||
+ this->filename().c_str(),
|
||||
+ static_cast<long long>(start));
|
||||
+
|
||||
bytes = this->size_ - start;
|
||||
if (static_cast<section_size_type>(bytes) >= size)
|
||||
{
|
778
binutils-CVE-2021-20197.patch
Normal file
778
binutils-CVE-2021-20197.patch
Normal file
@ -0,0 +1,778 @@
|
||||
diff -rup binutils.orig/bfd/bfd-in2.h binutils-2.35.1/bfd/bfd-in2.h
|
||||
--- binutils.orig/bfd/bfd-in2.h 2021-01-29 11:14:51.848568548 +0000
|
||||
+++ binutils-2.35.1/bfd/bfd-in2.h 2021-01-29 11:15:33.431322133 +0000
|
||||
@@ -583,6 +583,8 @@ bfd *bfd_openr (const char *filename, co
|
||||
|
||||
bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
|
||||
|
||||
+bfd *bfd_fdopenw (const char *filename, const char *target, int fd);
|
||||
+
|
||||
bfd *bfd_openstreamr (const char * filename, const char * target,
|
||||
void * stream);
|
||||
|
||||
diff -rup binutils.orig/bfd/opncls.c binutils-2.35.1/bfd/opncls.c
|
||||
--- binutils.orig/bfd/opncls.c 2021-01-29 11:14:51.846568560 +0000
|
||||
+++ binutils-2.35.1/bfd/opncls.c 2021-01-29 11:15:33.431322133 +0000
|
||||
@@ -395,6 +395,39 @@ bfd_fdopenr (const char *filename, const
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
+ bfd_fdopenw
|
||||
+
|
||||
+SYNOPSIS
|
||||
+ bfd *bfd_fdopenw (const char *filename, const char *target, int fd);
|
||||
+
|
||||
+DESCRIPTION
|
||||
+ <<bfd_fdopenw>> is exactly like <<bfd_fdopenr>> with the exception that
|
||||
+ the resulting BFD is suitable for output.
|
||||
+*/
|
||||
+
|
||||
+bfd *
|
||||
+bfd_fdopenw (const char *filename, const char *target, int fd)
|
||||
+{
|
||||
+ bfd *out = bfd_fdopenr (filename, target, fd);
|
||||
+
|
||||
+ if (out != NULL)
|
||||
+ {
|
||||
+ if (!bfd_write_p (out))
|
||||
+ {
|
||||
+ close (fd);
|
||||
+ _bfd_delete_bfd (out);
|
||||
+ out = NULL;
|
||||
+ bfd_set_error (bfd_error_invalid_operation);
|
||||
+ }
|
||||
+ else
|
||||
+ out->direction = write_direction;
|
||||
+ }
|
||||
+
|
||||
+ return out;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+FUNCTION
|
||||
bfd_openstreamr
|
||||
|
||||
SYNOPSIS
|
||||
diff -rup binutils.orig/binutils/ar.c binutils-2.35.1/binutils/ar.c
|
||||
--- binutils.orig/binutils/ar.c 2021-01-29 11:14:51.344571539 +0000
|
||||
+++ binutils-2.35.1/binutils/ar.c 2021-01-29 11:15:56.174187367 +0000
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
+#include "libbfd.h"
|
||||
#include "libiberty.h"
|
||||
#include "progress.h"
|
||||
#include "getopt.h"
|
||||
@@ -1195,20 +1196,26 @@ write_archive (bfd *iarch)
|
||||
bfd *obfd;
|
||||
char *old_name, *new_name;
|
||||
bfd *contents_head = iarch->archive_next;
|
||||
+ int ofd = -1;
|
||||
+ struct stat target_stat;
|
||||
+ bfd_boolean skip_stat = FALSE;
|
||||
|
||||
old_name = (char *) xmalloc (strlen (bfd_get_filename (iarch)) + 1);
|
||||
strcpy (old_name, bfd_get_filename (iarch));
|
||||
- new_name = make_tempname (old_name);
|
||||
+ new_name = make_tempname (old_name, &ofd);
|
||||
|
||||
if (new_name == NULL)
|
||||
bfd_fatal (_("could not create temporary file whilst writing archive"));
|
||||
|
||||
output_filename = new_name;
|
||||
|
||||
- obfd = bfd_openw (new_name, bfd_get_target (iarch));
|
||||
+ obfd = bfd_fdopenw (new_name, bfd_get_target (iarch), ofd);
|
||||
|
||||
if (obfd == NULL)
|
||||
- bfd_fatal (old_name);
|
||||
+ {
|
||||
+ close (ofd);
|
||||
+ bfd_fatal (old_name);
|
||||
+ }
|
||||
|
||||
output_bfd = obfd;
|
||||
|
||||
@@ -1237,6 +1244,14 @@ write_archive (bfd *iarch)
|
||||
if (!bfd_set_archive_head (obfd, contents_head))
|
||||
bfd_fatal (old_name);
|
||||
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ ofd = dup (ofd);
|
||||
+ if (iarch == NULL || iarch->iostream == NULL)
|
||||
+ skip_stat = TRUE;
|
||||
+ else if (ofd == -1 || fstat (fileno (iarch->iostream), &target_stat) != 0)
|
||||
+ bfd_fatal (old_name);
|
||||
+#endif
|
||||
+
|
||||
if (!bfd_close (obfd))
|
||||
bfd_fatal (old_name);
|
||||
|
||||
@@ -1246,7 +1261,7 @@ write_archive (bfd *iarch)
|
||||
/* We don't care if this fails; we might be creating the archive. */
|
||||
bfd_close (iarch);
|
||||
|
||||
- if (smart_rename (new_name, old_name, 0) != 0)
|
||||
+ if (smart_rename (new_name, old_name, ofd, skip_stat ? NULL : &target_stat, 0) != 0)
|
||||
xexit (1);
|
||||
free (old_name);
|
||||
free (new_name);
|
||||
diff -rup binutils.orig/binutils/arsup.c binutils-2.35.1/binutils/arsup.c
|
||||
--- binutils.orig/binutils/arsup.c 2021-01-29 11:14:51.350571503 +0000
|
||||
+++ binutils-2.35.1/binutils/arsup.c 2021-01-29 11:15:56.174187367 +0000
|
||||
@@ -345,13 +345,25 @@ ar_save (void)
|
||||
else
|
||||
{
|
||||
char *ofilename = xstrdup (bfd_get_filename (obfd));
|
||||
+ bfd_boolean skip_stat = FALSE;
|
||||
+ struct stat target_stat;
|
||||
+ int ofd = -1;
|
||||
|
||||
if (deterministic > 0)
|
||||
obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
|
||||
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ /* It's OK to fail; at worst it will result in SMART_RENAME using a slow
|
||||
+ copy fallback to write the output. */
|
||||
+ ofd = dup (fileno (obfd->iostream));
|
||||
+ if (lstat (real_name, &target_stat) != 0)
|
||||
+ skip_stat = TRUE;
|
||||
+#endif
|
||||
+
|
||||
bfd_close (obfd);
|
||||
|
||||
- smart_rename (ofilename, real_name, 0);
|
||||
+ smart_rename (ofilename, real_name, ofd,
|
||||
+ skip_stat ? NULL : &target_stat, 0);
|
||||
obfd = 0;
|
||||
free (ofilename);
|
||||
}
|
||||
diff -rup binutils.orig/binutils/bucomm.c binutils-2.35.1/binutils/bucomm.c
|
||||
--- binutils.orig/binutils/bucomm.c 2021-01-29 11:14:51.422571073 +0000
|
||||
+++ binutils-2.35.1/binutils/bucomm.c 2021-01-29 11:15:33.431322133 +0000
|
||||
@@ -532,7 +532,7 @@ template_in_dir (const char *path)
|
||||
as FILENAME. */
|
||||
|
||||
char *
|
||||
-make_tempname (const char *filename)
|
||||
+make_tempname (const char *filename, int *ofd)
|
||||
{
|
||||
char *tmpname = template_in_dir (filename);
|
||||
int fd;
|
||||
@@ -550,7 +550,7 @@ make_tempname (const char *filename)
|
||||
free (tmpname);
|
||||
return NULL;
|
||||
}
|
||||
- close (fd);
|
||||
+ *ofd = fd;
|
||||
return tmpname;
|
||||
}
|
||||
|
||||
diff -rup binutils.orig/binutils/bucomm.h binutils-2.35.1/binutils/bucomm.h
|
||||
--- binutils.orig/binutils/bucomm.h 2021-01-29 11:14:51.350571503 +0000
|
||||
+++ binutils-2.35.1/binutils/bucomm.h 2021-01-29 11:15:56.174187367 +0000
|
||||
@@ -51,7 +51,7 @@ int display_info (void);
|
||||
|
||||
void print_arelt_descr (FILE *, bfd *, bfd_boolean, bfd_boolean);
|
||||
|
||||
-char *make_tempname (const char *);
|
||||
+char *make_tempname (const char *, int *);
|
||||
char *make_tempdir (const char *);
|
||||
|
||||
bfd_vma parse_vma (const char *, const char *);
|
||||
@@ -71,7 +71,8 @@ extern void print_version (const char *)
|
||||
/* In rename.c. */
|
||||
extern void set_times (const char *, const struct stat *);
|
||||
|
||||
-extern int smart_rename (const char *, const char *, int);
|
||||
+extern int smart_rename (const char *, const char *, int, struct stat *, int);
|
||||
+
|
||||
|
||||
/* In libiberty. */
|
||||
void *xmalloc (size_t);
|
||||
diff -rup binutils.orig/binutils/objcopy.c binutils-2.35.1/binutils/objcopy.c
|
||||
--- binutils.orig/binutils/objcopy.c 2021-01-29 11:14:51.342571551 +0000
|
||||
+++ binutils-2.35.1/binutils/objcopy.c 2021-01-29 11:15:56.175187361 +0000
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
+#include "libbfd.h"
|
||||
#include "progress.h"
|
||||
#include "getopt.h"
|
||||
#include "libiberty.h"
|
||||
@@ -3711,9 +3712,9 @@ set_long_section_mode (bfd *output_bfd,
|
||||
/* The top-level control. */
|
||||
|
||||
static void
|
||||
-copy_file (const char *input_filename, const char *output_filename,
|
||||
- const char *input_target, const char *output_target,
|
||||
- const bfd_arch_info_type *input_arch)
|
||||
+copy_file (const char *input_filename, const char *output_filename, int ofd,
|
||||
+ struct stat *in_stat, const char *input_target,
|
||||
+ const char *output_target, const bfd_arch_info_type *input_arch)
|
||||
{
|
||||
bfd *ibfd;
|
||||
char **obj_matching;
|
||||
@@ -3732,7 +3733,7 @@ copy_file (const char *input_filename, c
|
||||
/* To allow us to do "strip *" without dying on the first
|
||||
non-object file, failures are nonfatal. */
|
||||
ibfd = bfd_openr (input_filename, input_target);
|
||||
- if (ibfd == NULL)
|
||||
+ if (ibfd == NULL || fstat (fileno (ibfd->iostream), in_stat) != 0)
|
||||
{
|
||||
bfd_nonfatal_message (input_filename, NULL, NULL, NULL);
|
||||
status = 1;
|
||||
@@ -3786,9 +3787,14 @@ copy_file (const char *input_filename, c
|
||||
else
|
||||
force_output_target = TRUE;
|
||||
|
||||
- obfd = bfd_openw (output_filename, output_target);
|
||||
+ if (ofd >= 0)
|
||||
+ obfd = bfd_fdopenw (output_filename, output_target, ofd);
|
||||
+ else
|
||||
+ obfd = bfd_openw (output_filename, output_target);
|
||||
+
|
||||
if (obfd == NULL)
|
||||
{
|
||||
+ close (ofd);
|
||||
bfd_nonfatal_message (output_filename, NULL, NULL, NULL);
|
||||
status = 1;
|
||||
return;
|
||||
@@ -3816,13 +3822,19 @@ copy_file (const char *input_filename, c
|
||||
if (output_target == NULL)
|
||||
output_target = bfd_get_target (ibfd);
|
||||
|
||||
- obfd = bfd_openw (output_filename, output_target);
|
||||
+ if (ofd >= 0)
|
||||
+ obfd = bfd_fdopenw (output_filename, output_target, ofd);
|
||||
+ else
|
||||
+ obfd = bfd_openw (output_filename, output_target);
|
||||
+
|
||||
if (obfd == NULL)
|
||||
{
|
||||
+ close (ofd);
|
||||
bfd_nonfatal_message (output_filename, NULL, NULL, NULL);
|
||||
status = 1;
|
||||
return;
|
||||
}
|
||||
+
|
||||
/* This is a no-op on non-Coff targets. */
|
||||
set_long_section_mode (obfd, ibfd, long_section_names);
|
||||
|
||||
@@ -4786,6 +4798,8 @@ strip_main (int argc, char *argv[])
|
||||
int hold_status = status;
|
||||
struct stat statbuf;
|
||||
char *tmpname;
|
||||
+ int tmpfd = -1;
|
||||
+ int copyfd = -1;
|
||||
|
||||
if (get_file_size (argv[i]) < 1)
|
||||
{
|
||||
@@ -4793,18 +4807,18 @@ strip_main (int argc, char *argv[])
|
||||
continue;
|
||||
}
|
||||
|
||||
- if (preserve_dates)
|
||||
- /* No need to check the return value of stat().
|
||||
- It has already been checked in get_file_size(). */
|
||||
- stat (argv[i], &statbuf);
|
||||
-
|
||||
if (output_file == NULL
|
||||
|| filename_cmp (argv[i], output_file) == 0)
|
||||
- tmpname = make_tempname (argv[i]);
|
||||
+ tmpname = make_tempname (argv[i], &tmpfd);
|
||||
else
|
||||
tmpname = output_file;
|
||||
|
||||
- if (tmpname == NULL)
|
||||
+ if (tmpname == NULL
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ /* Retain a copy of TMPFD since we will need it for SMART_RENAME. */
|
||||
+ || (tmpfd >= 0 && (copyfd = dup (tmpfd)) == -1)
|
||||
+#endif
|
||||
+ )
|
||||
{
|
||||
bfd_nonfatal_message (argv[i], NULL, NULL,
|
||||
_("could not create temporary file to hold stripped copy"));
|
||||
@@ -4813,7 +4827,8 @@ strip_main (int argc, char *argv[])
|
||||
}
|
||||
|
||||
status = 0;
|
||||
- copy_file (argv[i], tmpname, input_target, output_target, NULL);
|
||||
+ copy_file (argv[i], tmpname, tmpfd, &statbuf, input_target,
|
||||
+ output_target, NULL);
|
||||
if (status == 0)
|
||||
{
|
||||
if (preserve_dates)
|
||||
@@ -4821,12 +4836,18 @@ strip_main (int argc, char *argv[])
|
||||
if (output_file != tmpname)
|
||||
status = (smart_rename (tmpname,
|
||||
output_file ? output_file : argv[i],
|
||||
- preserve_dates) != 0);
|
||||
+ copyfd, &statbuf, preserve_dates) != 0);
|
||||
if (status == 0)
|
||||
status = hold_status;
|
||||
}
|
||||
else
|
||||
- unlink_if_ordinary (tmpname);
|
||||
+ {
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ if (copyfd >= 0)
|
||||
+ close (copyfd);
|
||||
+#endif
|
||||
+ unlink_if_ordinary (tmpname);
|
||||
+ }
|
||||
if (output_file != tmpname)
|
||||
free (tmpname);
|
||||
}
|
||||
@@ -5033,7 +5054,8 @@ copy_main (int argc, char *argv[])
|
||||
bfd_boolean formats_info = FALSE;
|
||||
bfd_boolean use_globalize = FALSE;
|
||||
bfd_boolean use_keep_global = FALSE;
|
||||
- int c;
|
||||
+ int c, tmpfd = -1;
|
||||
+ int copyfd = -1;
|
||||
struct stat statbuf;
|
||||
const bfd_arch_info_type *input_arch = NULL;
|
||||
|
||||
@@ -5870,34 +5892,43 @@ copy_main (int argc, char *argv[])
|
||||
convert_efi_target (efi);
|
||||
}
|
||||
|
||||
- if (preserve_dates)
|
||||
- if (stat (input_filename, & statbuf) < 0)
|
||||
- fatal (_("warning: could not locate '%s'. System error message: %s"),
|
||||
- input_filename, strerror (errno));
|
||||
-
|
||||
/* If there is no destination file, or the source and destination files
|
||||
are the same, then create a temp and rename the result into the input. */
|
||||
if (output_filename == NULL
|
||||
|| filename_cmp (input_filename, output_filename) == 0)
|
||||
- tmpname = make_tempname (input_filename);
|
||||
+ tmpname = make_tempname (input_filename, &tmpfd);
|
||||
else
|
||||
tmpname = output_filename;
|
||||
|
||||
- if (tmpname == NULL)
|
||||
- fatal (_("warning: could not create temporary file whilst copying '%s', (error: %s)"),
|
||||
- input_filename, strerror (errno));
|
||||
+ if (tmpname == NULL
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ /* Retain a copy of TMPFD since we will need it for SMART_RENAME. */
|
||||
+ || (tmpfd >= 0 && (copyfd = dup (tmpfd)) == -1)
|
||||
+#endif
|
||||
+ )
|
||||
+ {
|
||||
+ fatal (_("warning: could not create temporary file whilst copying '%s', (error: %s)"),
|
||||
+ input_filename, strerror (errno));
|
||||
+ }
|
||||
|
||||
- copy_file (input_filename, tmpname, input_target, output_target, input_arch);
|
||||
+ copy_file (input_filename, tmpname, tmpfd, &statbuf, input_target,
|
||||
+ output_target, input_arch);
|
||||
if (status == 0)
|
||||
{
|
||||
if (preserve_dates)
|
||||
set_times (tmpname, &statbuf);
|
||||
if (tmpname != output_filename)
|
||||
- status = (smart_rename (tmpname, input_filename,
|
||||
+ status = (smart_rename (tmpname, input_filename, copyfd, &statbuf,
|
||||
preserve_dates) != 0);
|
||||
}
|
||||
else
|
||||
- unlink_if_ordinary (tmpname);
|
||||
+ {
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ if (copyfd >= 0)
|
||||
+ close (copyfd);
|
||||
+#endif
|
||||
+ unlink_if_ordinary (tmpname);
|
||||
+ }
|
||||
|
||||
if (tmpname != output_filename)
|
||||
free (tmpname);
|
||||
diff -rup binutils.orig/binutils/rename.c binutils-2.35.1/binutils/rename.c
|
||||
--- binutils.orig/binutils/rename.c 2021-01-29 11:14:51.422571073 +0000
|
||||
+++ binutils-2.35.1/binutils/rename.c 2021-01-29 11:15:56.175187361 +0000
|
||||
@@ -131,17 +131,55 @@ set_times (const char *destination, cons
|
||||
#endif
|
||||
#endif
|
||||
|
||||
-/* Rename FROM to TO, copying if TO is a link.
|
||||
- Return 0 if ok, -1 if error. */
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+/* Try to preserve the permission bits and ownership of an existing file when
|
||||
+ rename overwrites it. FD is the file being renamed and TARGET_STAT has the
|
||||
+ status of the file that was overwritten. */
|
||||
+static void
|
||||
+try_preserve_permissions (int fd, struct stat *target_stat)
|
||||
+{
|
||||
+ struct stat from_stat;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (fstat (fd, &from_stat) != 0)
|
||||
+ return;
|
||||
+
|
||||
+ int from_mode = from_stat.st_mode & 0777;
|
||||
+ int to_mode = target_stat->st_mode & 0777;
|
||||
+
|
||||
+ /* Fix up permissions before we potentially lose ownership with fchown.
|
||||
+ Clear the setxid bits because in case the fchown below fails then we don't
|
||||
+ want to end up with a sxid file owned by the invoking user. If the user
|
||||
+ hasn't changed or if fchown succeeded, we add back the sxid bits at the
|
||||
+ end. */
|
||||
+ if (from_mode != to_mode)
|
||||
+ fchmod (fd, to_mode);
|
||||
+
|
||||
+ /* Fix up ownership, this will clear the setxid bits. */
|
||||
+ if (from_stat.st_uid != target_stat->st_uid
|
||||
+ || from_stat.st_gid != target_stat->st_gid)
|
||||
+ ret = fchown (fd, target_stat->st_uid, target_stat->st_gid);
|
||||
+
|
||||
+ /* Fix up the sxid bits if either the fchown wasn't needed or it
|
||||
+ succeeded. */
|
||||
+ if (ret == 0)
|
||||
+ fchmod (fd, target_stat->st_mode & 07777);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
+/* Rename FROM to TO, copying if TO is either a link or is not a regular file.
|
||||
+ FD is an open file descriptor pointing to FROM that we can use to safely fix
|
||||
+ up permissions of the file after renaming. TARGET_STAT has the file status
|
||||
+ that is used to fix up permissions and timestamps after rename. Return 0 if
|
||||
+ ok, -1 if error and FD is closed before returning. */
|
||||
|
||||
int
|
||||
-smart_rename (const char *from, const char *to, int preserve_dates ATTRIBUTE_UNUSED)
|
||||
+smart_rename (const char *from, const char *to, int fd ATTRIBUTE_UNUSED,
|
||||
+ struct stat *target_stat ATTRIBUTE_UNUSED,
|
||||
+ int preserve_dates ATTRIBUTE_UNUSED)
|
||||
{
|
||||
- bfd_boolean exists;
|
||||
- struct stat s;
|
||||
int ret = 0;
|
||||
-
|
||||
- exists = lstat (to, &s) == 0;
|
||||
+ bfd_boolean exists = target_stat != NULL;
|
||||
|
||||
#if defined (_WIN32) && !defined (__CYGWIN32__)
|
||||
/* Win32, unlike unix, will not erase `to' in `rename(from, to)' but
|
||||
@@ -158,36 +196,35 @@ smart_rename (const char *from, const ch
|
||||
unlink (from);
|
||||
}
|
||||
#else
|
||||
- /* Use rename only if TO is not a symbolic link and has
|
||||
- only one hard link, and we have permission to write to it. */
|
||||
+ /* Avoid a full copy and use rename if we can fix up permissions of the
|
||||
+ file after renaming, i.e.:
|
||||
+
|
||||
+ - TO is not a symbolic link
|
||||
+ - TO is a regular file with only one hard link
|
||||
+ - We have permission to write to TO
|
||||
+ - FD is available to safely fix up permissions to be the same as the file
|
||||
+ we overwrote with the rename.
|
||||
+
|
||||
+ Note though that the actual file on disk that TARGET_STAT describes may
|
||||
+ have changed and we're only trying to preserve the status we know about.
|
||||
+ At no point do we try to interact with the new file changes, so there can
|
||||
+ only be two outcomes, i.e. either the external file change survives
|
||||
+ without knowledge of our change (if it happens after the rename syscall)
|
||||
+ or our rename and permissions fixup survive without any knowledge of the
|
||||
+ external change. */
|
||||
if (! exists
|
||||
- || (!S_ISLNK (s.st_mode)
|
||||
- && S_ISREG (s.st_mode)
|
||||
- && (s.st_mode & S_IWUSR)
|
||||
- && s.st_nlink == 1)
|
||||
+ || (fd >= 0
|
||||
+ && !S_ISLNK (target_stat->st_mode)
|
||||
+ && S_ISREG (target_stat->st_mode)
|
||||
+ && (target_stat->st_mode & S_IWUSR)
|
||||
+ && target_stat->st_nlink == 1)
|
||||
)
|
||||
{
|
||||
ret = rename (from, to);
|
||||
if (ret == 0)
|
||||
{
|
||||
if (exists)
|
||||
- {
|
||||
- /* Try to preserve the permission bits and ownership of
|
||||
- TO. First get the mode right except for the setuid
|
||||
- bit. Then change the ownership. Then fix the setuid
|
||||
- bit. We do the chmod before the chown because if the
|
||||
- chown succeeds, and we are a normal user, we won't be
|
||||
- able to do the chmod afterward. We don't bother to
|
||||
- fix the setuid bit first because that might introduce
|
||||
- a fleeting security problem, and because the chown
|
||||
- will clear the setuid bit anyhow. We only fix the
|
||||
- setuid bit if the chown succeeds, because we don't
|
||||
- want to introduce an unexpected setuid file owned by
|
||||
- the user running objcopy. */
|
||||
- chmod (to, s.st_mode & 0777);
|
||||
- if (chown (to, s.st_uid, s.st_gid) >= 0)
|
||||
- chmod (to, s.st_mode & 07777);
|
||||
- }
|
||||
+ try_preserve_permissions (fd, target_stat);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -203,9 +240,11 @@ smart_rename (const char *from, const ch
|
||||
non_fatal (_("unable to copy file '%s'; reason: %s"), to, strerror (errno));
|
||||
|
||||
if (preserve_dates)
|
||||
- set_times (to, &s);
|
||||
+ set_times (to, target_stat);
|
||||
unlink (from);
|
||||
}
|
||||
+ if (fd >= 0)
|
||||
+ close (fd);
|
||||
#endif /* _WIN32 && !__CYGWIN32__ */
|
||||
|
||||
return ret;
|
||||
diff -rup binutils.orig/binutils/ar.c binutils-2.35.1/binutils/ar.c
|
||||
--- binutils.orig/binutils/ar.c 2021-02-02 13:01:42.257734944 +0000
|
||||
+++ binutils-2.35.1/binutils/ar.c 2021-02-02 13:11:13.340958352 +0000
|
||||
@@ -25,7 +25,6 @@
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
-#include "libbfd.h"
|
||||
#include "libiberty.h"
|
||||
#include "progress.h"
|
||||
#include "getopt.h"
|
||||
@@ -1082,7 +1081,7 @@ open_output_file (bfd * abfd)
|
||||
output_filename, base);
|
||||
output_filename = base;
|
||||
}
|
||||
-
|
||||
+
|
||||
if (output_dir)
|
||||
{
|
||||
size_t len = strlen (output_dir);
|
||||
@@ -1099,7 +1098,7 @@ open_output_file (bfd * abfd)
|
||||
|
||||
if (verbose)
|
||||
printf ("x - %s\n", output_filename);
|
||||
-
|
||||
+
|
||||
FILE * ostream = fopen (output_filename, FOPEN_WB);
|
||||
if (ostream == NULL)
|
||||
{
|
||||
@@ -1198,10 +1197,8 @@ write_archive (bfd *iarch)
|
||||
bfd *contents_head = iarch->archive_next;
|
||||
int ofd = -1;
|
||||
struct stat target_stat;
|
||||
- bfd_boolean skip_stat = FALSE;
|
||||
|
||||
- old_name = (char *) xmalloc (strlen (bfd_get_filename (iarch)) + 1);
|
||||
- strcpy (old_name, bfd_get_filename (iarch));
|
||||
+ old_name = xstrdup (bfd_get_filename (iarch));
|
||||
new_name = make_tempname (old_name, &ofd);
|
||||
|
||||
if (new_name == NULL)
|
||||
@@ -1246,11 +1243,9 @@ write_archive (bfd *iarch)
|
||||
|
||||
#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
ofd = dup (ofd);
|
||||
- if (iarch == NULL || iarch->iostream == NULL)
|
||||
- skip_stat = TRUE;
|
||||
- else if (ofd == -1 || fstat (fileno (iarch->iostream), &target_stat) != 0)
|
||||
- bfd_fatal (old_name);
|
||||
#endif
|
||||
+ if (ofd == -1 || bfd_stat (iarch, &target_stat) != 0)
|
||||
+ bfd_fatal (old_name);
|
||||
|
||||
if (!bfd_close (obfd))
|
||||
bfd_fatal (old_name);
|
||||
@@ -1261,7 +1256,7 @@ write_archive (bfd *iarch)
|
||||
/* We don't care if this fails; we might be creating the archive. */
|
||||
bfd_close (iarch);
|
||||
|
||||
- if (smart_rename (new_name, old_name, ofd, skip_stat ? NULL : &target_stat, 0) != 0)
|
||||
+ if (smart_rename (new_name, old_name, ofd, &target_stat, 0) != 0)
|
||||
xexit (1);
|
||||
free (old_name);
|
||||
free (new_name);
|
||||
Only in binutils-2.35.1/binutils/: ar.c.orig
|
||||
Only in binutils-2.35.1/binutils/: ar.c.rej
|
||||
diff -rup binutils.orig/binutils/arsup.c binutils-2.35.1/binutils/arsup.c
|
||||
--- binutils.orig/binutils/arsup.c 2021-02-02 13:01:42.208735269 +0000
|
||||
+++ binutils-2.35.1/binutils/arsup.c 2021-02-02 13:11:55.725678308 +0000
|
||||
@@ -42,6 +42,8 @@ extern int deterministic;
|
||||
|
||||
static bfd *obfd;
|
||||
static char *real_name;
|
||||
+static char *temp_name;
|
||||
+static int real_ofd;
|
||||
static FILE *outfile;
|
||||
|
||||
static void
|
||||
@@ -149,27 +151,24 @@ maybequit (void)
|
||||
void
|
||||
ar_open (char *name, int t)
|
||||
{
|
||||
- char *tname;
|
||||
- const char *bname = lbasename (name);
|
||||
- real_name = name;
|
||||
-
|
||||
- /* Prepend tmp- to the beginning, to avoid file-name clashes after
|
||||
- truncation on filesystems with limited namespaces (DOS). */
|
||||
- if (asprintf (&tname, "%.*stmp-%s", (int) (bname - name), name, bname) == -1)
|
||||
+ real_name = xstrdup (name);
|
||||
+ temp_name = make_tempname (real_name, &real_ofd);
|
||||
+
|
||||
+ if (temp_name == NULL)
|
||||
{
|
||||
- fprintf (stderr, _("%s: Can't allocate memory for temp name (%s)\n"),
|
||||
+ fprintf (stderr, _("%s: Can't open temporary file (%s)\n"),
|
||||
program_name, strerror(errno));
|
||||
maybequit ();
|
||||
return;
|
||||
}
|
||||
|
||||
- obfd = bfd_openw (tname, NULL);
|
||||
+ obfd = bfd_fdopenw (temp_name, NULL, real_ofd);
|
||||
|
||||
if (!obfd)
|
||||
{
|
||||
fprintf (stderr,
|
||||
_("%s: Can't open output archive %s\n"),
|
||||
- program_name, tname);
|
||||
+ program_name, temp_name);
|
||||
|
||||
maybequit ();
|
||||
}
|
||||
@@ -344,10 +343,9 @@ ar_save (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
- char *ofilename = xstrdup (bfd_get_filename (obfd));
|
||||
bfd_boolean skip_stat = FALSE;
|
||||
struct stat target_stat;
|
||||
- int ofd = -1;
|
||||
+ int ofd = real_ofd;
|
||||
|
||||
if (deterministic > 0)
|
||||
obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
|
||||
@@ -355,17 +353,18 @@ ar_save (void)
|
||||
#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
/* It's OK to fail; at worst it will result in SMART_RENAME using a slow
|
||||
copy fallback to write the output. */
|
||||
- ofd = dup (fileno (obfd->iostream));
|
||||
- if (lstat (real_name, &target_stat) != 0)
|
||||
- skip_stat = TRUE;
|
||||
+ ofd = dup (ofd);
|
||||
#endif
|
||||
-
|
||||
bfd_close (obfd);
|
||||
|
||||
- smart_rename (ofilename, real_name, ofd,
|
||||
+ if (ofd == -1 || fstat (ofd, &target_stat) != 0)
|
||||
+ skip_stat = TRUE;
|
||||
+
|
||||
+ smart_rename (temp_name, real_name, ofd,
|
||||
skip_stat ? NULL : &target_stat, 0);
|
||||
obfd = 0;
|
||||
- free (ofilename);
|
||||
+ free (temp_name);
|
||||
+ free (real_name);
|
||||
}
|
||||
}
|
||||
|
||||
Only in binutils-2.35.1/binutils/: arsup.c.orig
|
||||
Only in binutils-2.35.1/binutils/: arsup.c.rej
|
||||
diff -rup binutils.orig/binutils/objcopy.c binutils-2.35.1/binutils/objcopy.c
|
||||
--- binutils.orig/binutils/objcopy.c 2021-02-02 13:01:42.214735229 +0000
|
||||
+++ binutils-2.35.1/binutils/objcopy.c 2021-02-02 13:13:27.613071192 +0000
|
||||
@@ -20,7 +20,6 @@
|
||||
|
||||
#include "sysdep.h"
|
||||
#include "bfd.h"
|
||||
-#include "libbfd.h"
|
||||
#include "progress.h"
|
||||
#include "getopt.h"
|
||||
#include "libiberty.h"
|
||||
@@ -3733,7 +3732,7 @@ copy_file (const char *input_filename, c
|
||||
/* To allow us to do "strip *" without dying on the first
|
||||
non-object file, failures are nonfatal. */
|
||||
ibfd = bfd_openr (input_filename, input_target);
|
||||
- if (ibfd == NULL || fstat (fileno (ibfd->iostream), in_stat) != 0)
|
||||
+ if (ibfd == NULL || bfd_stat (ibfd, in_stat) != 0)
|
||||
{
|
||||
bfd_nonfatal_message (input_filename, NULL, NULL, NULL);
|
||||
status = 1;
|
||||
Only in binutils-2.35.1/binutils/: objcopy.c.orig
|
||||
Only in binutils-2.35.1/binutils/: objcopy.c.rej
|
||||
--- binutils.orig/binutils/arsup.c 2021-02-04 10:42:03.265729780 +0000
|
||||
+++ binutils-2.35.1/binutils/arsup.c 2021-02-04 10:45:48.439166658 +0000
|
||||
@@ -357,8 +357,21 @@ ar_save (void)
|
||||
#endif
|
||||
bfd_close (obfd);
|
||||
|
||||
- if (ofd == -1 || fstat (ofd, &target_stat) != 0)
|
||||
- skip_stat = TRUE;
|
||||
+ if (lstat (real_name, &target_stat) != 0)
|
||||
+ {
|
||||
+ /* The temp file created in ar_open has mode 0600 as per mkstemp.
|
||||
+ Create the real empty output file here so smart_rename will
|
||||
+ update the mode according to the process umask. */
|
||||
+ obfd = bfd_openw (real_name, NULL);
|
||||
+ if (obfd == NULL
|
||||
+ || bfd_stat (obfd, &target_stat) != 0)
|
||||
+ skip_stat = TRUE;
|
||||
+ if (obfd != NULL)
|
||||
+ {
|
||||
+ bfd_set_format (obfd, bfd_archive);
|
||||
+ bfd_close (obfd);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
smart_rename (temp_name, real_name, ofd,
|
||||
skip_stat ? NULL : &target_stat, 0);
|
||||
--- binutils.orig/binutils/rename.c 2021-02-08 11:02:58.767933783 +0000
|
||||
+++ binutils-2.35.1/binutils/rename.c 2021-02-08 11:20:37.539179363 +0000
|
||||
@@ -179,7 +179,10 @@ smart_rename (const char *from, const ch
|
||||
int preserve_dates ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int ret = 0;
|
||||
- bfd_boolean exists = target_stat != NULL;
|
||||
+ struct stat to_stat;
|
||||
+ bfd_boolean exists;
|
||||
+
|
||||
+ exists = lstat (to, &to_stat) == 0;
|
||||
|
||||
#if defined (_WIN32) && !defined (__CYGWIN32__)
|
||||
/* Win32, unlike unix, will not erase `to' in `rename(from, to)' but
|
||||
@@ -214,16 +217,16 @@ smart_rename (const char *from, const ch
|
||||
external change. */
|
||||
if (! exists
|
||||
|| (fd >= 0
|
||||
- && !S_ISLNK (target_stat->st_mode)
|
||||
- && S_ISREG (target_stat->st_mode)
|
||||
- && (target_stat->st_mode & S_IWUSR)
|
||||
- && target_stat->st_nlink == 1)
|
||||
+ && !S_ISLNK (to_stat.st_mode)
|
||||
+ && S_ISREG (to_stat.st_mode)
|
||||
+ && (to_stat.st_mode & S_IWUSR)
|
||||
+ && to_stat.st_nlink == 1)
|
||||
)
|
||||
{
|
||||
ret = rename (from, to);
|
||||
if (ret == 0)
|
||||
{
|
||||
- if (exists)
|
||||
+ if (exists && target_stat != NULL)
|
||||
try_preserve_permissions (fd, target_stat);
|
||||
}
|
||||
else
|
||||
@@ -239,7 +242,7 @@ smart_rename (const char *from, const ch
|
||||
if (ret != 0)
|
||||
non_fatal (_("unable to copy file '%s'; reason: %s"), to, strerror (errno));
|
||||
|
||||
- if (preserve_dates)
|
||||
+ if (preserve_dates && target_stat != NULL)
|
||||
set_times (to, target_stat);
|
||||
unlink (from);
|
||||
}
|
9
binutils-PELC-licence-corrections.patch
Normal file
9
binutils-PELC-licence-corrections.patch
Normal file
@ -0,0 +1,9 @@
|
||||
--- binutils.orig/gold/ftruncate.c 2020-07-24 15:12:47.000947859 +0100
|
||||
+++ binutils-2.35/gold/ftruncate.c 2020-07-24 15:19:17.602438295 +0100
|
||||
@@ -1,5 +1,4 @@
|
||||
-/* ftruncate emulations that work on some System V's.
|
||||
- This file is in the public domain. */
|
||||
+/* ftruncate emulations that work on some System V's. */
|
||||
|
||||
/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
|
||||
|
144
binutils-PPC-dcbt.patch
Normal file
144
binutils-PPC-dcbt.patch
Normal file
@ -0,0 +1,144 @@
|
||||
diff -rup binutils.orig/gas/testsuite/gas/ppc/power4_32.d binutils-2.35/gas/testsuite/gas/ppc/power4_32.d
|
||||
--- binutils.orig/gas/testsuite/gas/ppc/power4_32.d 2022-01-25 13:39:48.063563099 +0000
|
||||
+++ binutils-2.35/gas/testsuite/gas/ppc/power4_32.d 2022-01-25 13:48:30.857981751 +0000
|
||||
@@ -41,7 +41,7 @@ Disassembly of section \.text:
|
||||
7c: (7c 01 17 ec|ec 17 01 7c) dcbz r1,r2
|
||||
80: (7c 23 27 ec|ec 27 23 7c) dcbzl r3,r4
|
||||
84: (7c 05 37 ec|ec 37 05 7c) dcbz r5,r6
|
||||
- 88: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
|
||||
- 8c: (7c 05 32 2c|2c 32 05 7c) dcbt r5,r6
|
||||
- 90: (7d 05 32 2c|2c 32 05 7d) dcbt r5,r6,8
|
||||
+ 88: (7c 05 32 2c|2c 32 05 7c) dcbtct r5,r6
|
||||
+ 8c: (7c 05 32 2c|2c 32 05 7c) dcbtct r5,r6
|
||||
+ 90: (7d 05 32 2c|2c 32 05 7d) dcbtds r5,r6
|
||||
#pass
|
||||
diff -rup binutils.orig/opcodes/ppc-opc.c binutils-2.35/opcodes/ppc-opc.c
|
||||
--- binutils.orig/opcodes/ppc-opc.c 2022-01-25 13:39:47.650565929 +0000
|
||||
+++ binutils-2.35/opcodes/ppc-opc.c 2022-01-25 13:47:09.056542122 +0000
|
||||
@@ -2205,6 +2205,74 @@ extract_sxl (uint64_t insn,
|
||||
return 1;
|
||||
return (insn >> 11) & 0x1;
|
||||
}
|
||||
+
|
||||
+/* The list of embedded processors that use the embedded operand ordering
|
||||
+ for the 3 operand dcbt and dcbtst instructions. */
|
||||
+#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
|
||||
+ | PPC_OPCODE_A2)
|
||||
+
|
||||
+/* ISA 2.03 and later specify extended mnemonics dcbtct, dcbtds, and
|
||||
+ dcbtstct, dcbtstds with a note saying these should be used in new
|
||||
+ programs rather than the base mnemonics "so that it can be coded
|
||||
+ with TH as the last operand for all categories". For that reason
|
||||
+ the extended mnemonics are enabled in the assembler for the
|
||||
+ embedded processors, but not for the disassembler so as to display
|
||||
+ the embedded dcbt or dcbtst expected form with TH first for
|
||||
+ embedded programmers. */
|
||||
+
|
||||
+static uint64_t
|
||||
+insert_thct (uint64_t insn,
|
||||
+ int64_t value,
|
||||
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
|
||||
+ const char **errmsg)
|
||||
+{
|
||||
+ if ((uint64_t) value > 7)
|
||||
+ *errmsg = _("invalid TH value");
|
||||
+ return insn | ((value & 7) << 21);
|
||||
+}
|
||||
+
|
||||
+static int64_t
|
||||
+extract_thct (uint64_t insn,
|
||||
+ ppc_cpu_t dialect,
|
||||
+ int *invalid)
|
||||
+{
|
||||
+ /* Missing optional operands have a value of 0. */
|
||||
+ if (*invalid < 0)
|
||||
+ return 0;
|
||||
+
|
||||
+ int64_t value = (insn >> 21) & 0x1f;
|
||||
+ if (value > 7 || (dialect & DCBT_EO) != 0)
|
||||
+ *invalid = 1;
|
||||
+
|
||||
+ return value;
|
||||
+}
|
||||
+
|
||||
+static uint64_t
|
||||
+insert_thds (uint64_t insn,
|
||||
+ int64_t value,
|
||||
+ ppc_cpu_t dialect ATTRIBUTE_UNUSED,
|
||||
+ const char **errmsg)
|
||||
+{
|
||||
+ if (value < 8 || value > 15)
|
||||
+ *errmsg = _("invalid TH value");
|
||||
+ return insn | ((value & 0x1f) << 21);
|
||||
+}
|
||||
+
|
||||
+static int64_t
|
||||
+extract_thds (uint64_t insn,
|
||||
+ ppc_cpu_t dialect,
|
||||
+ int *invalid)
|
||||
+{
|
||||
+ /* Missing optional operands have a value of 8. */
|
||||
+ if (*invalid < 0)
|
||||
+ return 8;
|
||||
+
|
||||
+ int64_t value = (insn >> 21) & 0x1f;
|
||||
+ if (value < 8 || value > 15 || (dialect & DCBT_EO) != 0)
|
||||
+ *invalid = 1;
|
||||
+
|
||||
+ return value;
|
||||
+}
|
||||
|
||||
/* The operands table.
|
||||
|
||||
@@ -2402,10 +2470,18 @@ const struct powerpc_operand powerpc_ope
|
||||
#define MO CT
|
||||
{ 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL },
|
||||
|
||||
+ /* The TH field in dcbtct. */
|
||||
+#define THCT CT + 1
|
||||
+ { 0x1f, 21, insert_thct, extract_thct, PPC_OPERAND_OPTIONAL },
|
||||
+
|
||||
+ /* The TH field in dcbtds. */
|
||||
+#define THDS THCT + 1
|
||||
+ { 0x1f, 21, insert_thds, extract_thds, PPC_OPERAND_OPTIONAL },
|
||||
+
|
||||
/* The D field in a D form instruction. This is a displacement off
|
||||
a register, and implies that the next operand is a register in
|
||||
parentheses. */
|
||||
-#define D CT + 1
|
||||
+#define D THDS + 1
|
||||
{ 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED },
|
||||
|
||||
/* The D8 field in a D form instruction. This is a displacement off
|
||||
@@ -4211,12 +4287,6 @@ const unsigned int num_powerpc_operands
|
||||
#define PPCHTM PPC_OPCODE_POWER8
|
||||
#define E200Z4 PPC_OPCODE_E200Z4
|
||||
#define PPCLSP PPC_OPCODE_LSP
|
||||
-/* The list of embedded processors that use the embedded operand ordering
|
||||
- for the 3 operand dcbt and dcbtst instructions. */
|
||||
-#define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \
|
||||
- | PPC_OPCODE_A2)
|
||||
-
|
||||
-
|
||||
|
||||
/* The opcode table.
|
||||
|
||||
@@ -6592,6 +6662,8 @@ const struct powerpc_opcode powerpc_opco
|
||||
{"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}},
|
||||
|
||||
{"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
|
||||
+{"dcbtstct", X(31,246), X_MASK, POWER4, 0, {RA0, RB, THCT}},
|
||||
+{"dcbtstds", X(31,246), X_MASK, POWER4, 0, {RA0, RB, THDS}},
|
||||
{"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
|
||||
{"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
|
||||
{"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
|
||||
@@ -6643,6 +6715,9 @@ const struct powerpc_opcode powerpc_opco
|
||||
{"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}},
|
||||
|
||||
{"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, 0, {RA0, RB}},
|
||||
+{"dcbna", XRT(31,278,0x11), XRT_MASK, POWER10, 0, {RA0, RB}},
|
||||
+{"dcbtct", X(31,278), X_MASK, POWER4, 0, {RA0, RB, THCT}},
|
||||
+{"dcbtds", X(31,278), X_MASK, POWER4, 0, {RA0, RB, THDS}},
|
||||
{"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}},
|
||||
{"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}},
|
||||
{"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}},
|
200
binutils-aarch64-ld-testsuite-fixes.patch
Normal file
200
binutils-aarch64-ld-testsuite-fixes.patch
Normal file
@ -0,0 +1,200 @@
|
||||
diff -rup binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-now.d binutils-2.35/ld/testsuite/ld-aarch64/variant_pcs-now.d
|
||||
--- binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-now.d 2020-07-28 13:07:26.192507117 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-aarch64/variant_pcs-now.d 2020-07-28 13:09:47.205905999 +0100
|
||||
@@ -23,10 +23,10 @@ Symbol table '\.dynsym' contains 7 entri
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
|
||||
- 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
|
||||
- 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
|
||||
+ 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
+ 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT .*
|
||||
4: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
|
||||
- 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
|
||||
+ 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
6: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
|
||||
|
||||
Symbol table '\.symtab' contains 35 entries:
|
||||
@@ -41,28 +41,28 @@ Symbol table '\.symtab' contains 35 entr
|
||||
7: 00000000000111c8 0 SECTION LOCAL DEFAULT 7
|
||||
8: 0000000000011270 0 SECTION LOCAL DEFAULT 8
|
||||
9: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-1\.o
|
||||
- 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local
|
||||
- 11: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local_ifunc
|
||||
+ 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
|
||||
+ 11: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
|
||||
12: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_local_ifunc
|
||||
13: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_local
|
||||
14: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 \$x
|
||||
15: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-2\.o
|
||||
- 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2
|
||||
- 17: 0000000000008038 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2_ifunc
|
||||
+ 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT .*
|
||||
+ 17: 0000000000008038 0 IFUNC LOCAL DEFAULT .*
|
||||
18: 0000000000008038 0 IFUNC LOCAL DEFAULT 1 f_base_local2_ifunc
|
||||
19: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 f_base_local2
|
||||
20: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 \$x
|
||||
21: 0000000000000000 0 FILE LOCAL DEFAULT ABS
|
||||
22: 0000000000009080 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
- 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_def
|
||||
+ 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
|
||||
24: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_global_hidden_ifunc
|
||||
25: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_global_hidden_def
|
||||
26: 0000000000009000 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
- 27: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_ifunc
|
||||
+ 27: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
|
||||
28: 0000000000008070 0 NOTYPE LOCAL DEFAULT 2 \$x
|
||||
29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
|
||||
- 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
|
||||
- 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
|
||||
+ 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
+ 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT .*
|
||||
32: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
|
||||
- 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
|
||||
+ 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
34: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
|
||||
diff -rup binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-r.d binutils-2.35/ld/testsuite/ld-aarch64/variant_pcs-r.d
|
||||
--- binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-r.d 2020-07-28 13:07:26.184507150 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-aarch64/variant_pcs-r.d 2020-07-28 13:08:20.069277447 +0100
|
||||
@@ -37,24 +37,24 @@ Symbol table '\.symtab' contains 26 entr
|
||||
2: 0000000000000000 0 SECTION LOCAL DEFAULT 3
|
||||
3: 0000000000000000 0 SECTION LOCAL DEFAULT 4
|
||||
4: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-1\.o
|
||||
- 5: 0000000000000000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local
|
||||
- 6: 0000000000000000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local_ifunc
|
||||
+ 5: 0000000000000000 0 NOTYPE LOCAL DEFAULT .*
|
||||
+ 6: 0000000000000000 0 IFUNC LOCAL DEFAULT .*
|
||||
7: 0000000000000000 0 IFUNC LOCAL DEFAULT 1 f_base_local_ifunc
|
||||
8: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 f_base_local
|
||||
9: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 \$x
|
||||
10: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-2\.o
|
||||
- 11: 0000000000000038 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2
|
||||
- 12: 0000000000000038 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2_ifunc
|
||||
+ 11: 0000000000000038 0 NOTYPE LOCAL DEFAULT .*
|
||||
+ 12: 0000000000000038 0 IFUNC LOCAL DEFAULT .*
|
||||
13: 0000000000000038 0 IFUNC LOCAL DEFAULT 1 f_base_local2_ifunc
|
||||
14: 0000000000000038 0 NOTYPE LOCAL DEFAULT 1 f_base_local2
|
||||
15: 0000000000000038 0 NOTYPE LOCAL DEFAULT 1 \$x
|
||||
16: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
|
||||
- 17: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
|
||||
- 18: 0000000000000000 0 NOTYPE GLOBAL HIDDEN \[VARIANT_PCS\] 1 f_spec_global_hidden_def
|
||||
+ 17: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
+ 18: 0000000000000000 0 NOTYPE GLOBAL HIDDEN .*
|
||||
19: 0000000000000000 0 IFUNC GLOBAL HIDDEN 1 f_base_global_hidden_ifunc
|
||||
- 20: 0000000000000000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
|
||||
+ 20: 0000000000000000 0 IFUNC GLOBAL DEFAULT .*
|
||||
21: 0000000000000000 0 NOTYPE GLOBAL HIDDEN 1 f_base_global_hidden_def
|
||||
- 22: 0000000000000000 0 IFUNC GLOBAL HIDDEN \[VARIANT_PCS\] 1 f_spec_global_hidden_ifunc
|
||||
+ 22: 0000000000000000 0 IFUNC GLOBAL HIDDEN .*
|
||||
23: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
|
||||
- 24: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
|
||||
+ 24: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
25: 0000000000000000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
|
||||
diff -rup binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-shared.d binutils-2.35/ld/testsuite/ld-aarch64/variant_pcs-shared.d
|
||||
--- binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-shared.d 2020-07-28 13:07:26.183507154 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-aarch64/variant_pcs-shared.d 2020-07-28 13:09:00.519105015 +0100
|
||||
@@ -23,10 +23,10 @@ Symbol table '\.dynsym' contains 7 entri
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
|
||||
- 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
|
||||
- 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
|
||||
+ 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
+ 3: 0000000000008000 0 IFUNC GLOBAL DEFAULT .*
|
||||
4: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
|
||||
- 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
|
||||
+ 5: 0000000000008000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
6: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
|
||||
|
||||
Symbol table '\.symtab' contains 35 entries:
|
||||
@@ -41,28 +41,28 @@ Symbol table '\.symtab' contains 35 entr
|
||||
7: 00000000000111c8 0 SECTION LOCAL DEFAULT 7
|
||||
8: 0000000000011270 0 SECTION LOCAL DEFAULT 8
|
||||
9: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-1\.o
|
||||
- 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local
|
||||
- 11: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local_ifunc
|
||||
+ 10: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
|
||||
+ 11: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
|
||||
12: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_local_ifunc
|
||||
13: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_local
|
||||
14: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 \$x
|
||||
15: 0000000000000000 0 FILE LOCAL DEFAULT ABS .*variant_pcs-2\.o
|
||||
- 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2
|
||||
- 17: 0000000000008038 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_local2_ifunc
|
||||
+ 16: 0000000000008038 0 NOTYPE LOCAL DEFAULT .*
|
||||
+ 17: 0000000000008038 0 IFUNC LOCAL DEFAULT .*
|
||||
18: 0000000000008038 0 IFUNC LOCAL DEFAULT 1 f_base_local2_ifunc
|
||||
19: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 f_base_local2
|
||||
20: 0000000000008038 0 NOTYPE LOCAL DEFAULT 1 \$x
|
||||
21: 0000000000000000 0 FILE LOCAL DEFAULT ABS
|
||||
22: 0000000000009080 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC
|
||||
- 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_def
|
||||
+ 23: 0000000000008000 0 NOTYPE LOCAL DEFAULT .*
|
||||
24: 0000000000008000 0 IFUNC LOCAL DEFAULT 1 f_base_global_hidden_ifunc
|
||||
25: 0000000000008000 0 NOTYPE LOCAL DEFAULT 1 f_base_global_hidden_def
|
||||
26: 0000000000009000 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
|
||||
- 27: 0000000000008000 0 IFUNC LOCAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_hidden_ifunc
|
||||
+ 27: 0000000000008000 0 IFUNC LOCAL DEFAULT .*
|
||||
28: 0000000000008070 0 NOTYPE LOCAL DEFAULT 2 \$x
|
||||
29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
|
||||
- 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
|
||||
- 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
|
||||
+ 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
+ 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT .*
|
||||
32: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
|
||||
- 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
|
||||
+ 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT .*
|
||||
34: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_base_global_default_ifunc
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-12.d binutils-2.35/ld/testsuite/ld-plugin/plugin-12.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-12.d 2020-07-28 13:07:26.246506887 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-12.d 2020-07-28 13:10:51.694631104 +0100
|
||||
@@ -1,6 +1,6 @@
|
||||
#...
|
||||
-.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DEF
|
||||
-.*: symbol `func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DEF_IRONLY
|
||||
-.*: symbol `func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DEF_IRONLY
|
||||
-.*: symbol `func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DEF_IRONLY
|
||||
+.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
|
||||
+.*: symbol `func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DE.*
|
||||
+.*: symbol `func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DE.*
|
||||
+.*: symbol `func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DE.*
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-elf/indirect.exp binutils-2.35/ld/testsuite/ld-elf/indirect.exp
|
||||
--- binutils.orig/ld/testsuite/ld-elf/indirect.exp 2020-07-28 13:37:46.473794149 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elf/indirect.exp 2020-07-28 14:10:44.867990380 +0100
|
||||
@@ -229,7 +229,7 @@ set pie_tests {
|
||||
|
||||
run_ld_link_exec_tests $pie_tests
|
||||
|
||||
-foreach t [list indirect5c indirect5d indirect6c indirect6d] {
|
||||
+foreach t [list indirect6c indirect6d] {
|
||||
set testname [concat $t "dynsym"]
|
||||
if { [check_dynamic_syms tmpdir/$t] } {
|
||||
pass $testname
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-12.d binutils-2.35/ld/testsuite/ld-plugin/plugin-12.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-12.d 2020-07-28 13:37:46.393794486 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-12.d 2020-07-28 14:14:14.632159645 +0100
|
||||
@@ -1,6 +1,6 @@
|
||||
#...
|
||||
-.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
|
||||
-.*: symbol `func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DE.*
|
||||
-.*: symbol `func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DE.*
|
||||
-.*: symbol `func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DE.*
|
||||
+.*func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
|
||||
+.*func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DE.*
|
||||
+.*func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DE.*
|
||||
+.*func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DE.*
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin.exp binutils-2.35/ld/testsuite/ld-plugin/plugin.exp
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2020-07-28 15:07:51.601384963 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin.exp 2020-07-28 15:11:38.753471155 +0100
|
||||
@@ -301,6 +301,9 @@ if { !$can_compile || $failed_compile }
|
||||
run_ld_link_tests $plugin_tests
|
||||
|
||||
if { [is_elf_format] \
|
||||
+ && ![istarget "aarch64*-*-*"] \
|
||||
+ && ![istarget "s390*-*-*"] \
|
||||
+ && ![istarget "i686*-*-*"] \
|
||||
&& [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func1p.c tmpdir/func1p.o] \
|
||||
&& [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func2i.c tmpdir/func2i.o] \
|
||||
&& [ld_compile "$CC $CFLAGS" $srcdir/$subdir/func3h.c tmpdir/func3h.o] } {
|
27
binutils-aarch64-plt-sh_entsize.patch
Normal file
27
binutils-aarch64-plt-sh_entsize.patch
Normal file
@ -0,0 +1,27 @@
|
||||
diff -rup binutils.orig/bfd/elfnn-aarch64.c binutils-2.35/bfd/elfnn-aarch64.c
|
||||
--- binutils.orig/bfd/elfnn-aarch64.c 2020-07-30 17:20:30.607580720 +0100
|
||||
+++ binutils-2.35/bfd/elfnn-aarch64.c 2020-07-30 17:22:45.629741124 +0100
|
||||
@@ -9513,8 +9513,10 @@ elfNN_aarch64_init_small_plt0_entry (bfd
|
||||
|
||||
memcpy (htab->root.splt->contents, htab->plt0_entry,
|
||||
htab->plt_header_size);
|
||||
- elf_section_data (htab->root.splt->output_section)->this_hdr.sh_entsize =
|
||||
- htab->plt_header_size;
|
||||
+ /* PR 26312: Explicitly set the sh_entsize to 0 so that
|
||||
+ consumers do not think that the section contains fixed
|
||||
+ sized objects. */
|
||||
+ elf_section_data (htab->root.splt->output_section)->this_hdr.sh_entsize = 0;
|
||||
|
||||
plt_got_2nd_ent = (htab->root.sgotplt->output_section->vma
|
||||
+ htab->root.sgotplt->output_offset
|
||||
@@ -9616,10 +9618,6 @@ elfNN_aarch64_finish_dynamic_sections (b
|
||||
{
|
||||
elfNN_aarch64_init_small_plt0_entry (output_bfd, htab);
|
||||
|
||||
- elf_section_data (htab->root.splt->output_section)->
|
||||
- this_hdr.sh_entsize = htab->plt_entry_size;
|
||||
-
|
||||
-
|
||||
if (htab->root.tlsdesc_plt && !(info->flags & DF_BIND_NOW))
|
||||
{
|
||||
BFD_ASSERT (htab->root.tlsdesc_got != (bfd_vma)-1);
|
1981
binutils-add-sym-cache-to-elf-link-hash.patch
Normal file
1981
binutils-add-sym-cache-to-elf-link-hash.patch
Normal file
File diff suppressed because it is too large
Load Diff
66
binutils-attach-to-group.patch
Normal file
66
binutils-attach-to-group.patch
Normal file
@ -0,0 +1,66 @@
|
||||
diff -rup binutils.orig/gas/config/obj-elf.c binutils-2.30/gas/config/obj-elf.c
|
||||
--- binutils.orig/gas/config/obj-elf.c 2018-09-24 17:50:06.974172867 +0100
|
||||
+++ binutils-2.30/gas/config/obj-elf.c 2018-09-25 15:19:33.559830794 +0100
|
||||
@@ -82,9 +82,11 @@ static void obj_elf_gnu_attribute (int);
|
||||
static void obj_elf_tls_common (int);
|
||||
static void obj_elf_lcomm (int);
|
||||
static void obj_elf_struct (int);
|
||||
+static void obj_elf_attach_to_group (int);
|
||||
|
||||
static const pseudo_typeS elf_pseudo_table[] =
|
||||
{
|
||||
+ {"attach_to_group", obj_elf_attach_to_group, 0},
|
||||
{"comm", obj_elf_common, 0},
|
||||
{"common", obj_elf_common, 1},
|
||||
{"ident", obj_elf_ident, 0},
|
||||
@@ -1007,6 +1009,27 @@ obj_elf_section_name (void)
|
||||
return name;
|
||||
}
|
||||
|
||||
+static void
|
||||
+obj_elf_attach_to_group (int dummy ATTRIBUTE_UNUSED)
|
||||
+{
|
||||
+ const char * gname = obj_elf_section_name ();
|
||||
+
|
||||
+ if (gname == NULL)
|
||||
+ {
|
||||
+ as_warn ("group name not parseable");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (elf_group_name (now_seg))
|
||||
+ {
|
||||
+ as_warn ("already has a group");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ elf_group_name (now_seg) = xstrdup (gname);
|
||||
+ elf_section_flags (now_seg) |= SHF_GROUP;
|
||||
+}
|
||||
+
|
||||
void
|
||||
obj_elf_section (int push)
|
||||
{
|
||||
--- binutils.orig/gas/doc/as.texi 2020-07-24 15:12:46.452951381 +0100
|
||||
+++ binutils-2.35/gas/doc/as.texi 2020-07-24 15:15:41.742825163 +0100
|
||||
@@ -4373,6 +4373,7 @@ Some machine configurations provide addi
|
||||
* Altmacro:: @code{.altmacro}
|
||||
* Ascii:: @code{.ascii "@var{string}"}@dots{}
|
||||
* Asciz:: @code{.asciz "@var{string}"}@dots{}
|
||||
+* Attach_to_group:: @code{.attach_to_group @var{name}}
|
||||
* Balign:: @code{.balign [@var{abs-expr}[, @var{abs-expr}]]}
|
||||
* Bundle directives:: @code{.bundle_align_mode @var{abs-expr}}, etc
|
||||
* Byte:: @code{.byte @var{expressions}}
|
||||
@@ -4670,6 +4671,12 @@ trailing zero byte) into consecutive add
|
||||
@code{.asciz} is just like @code{.ascii}, but each string is followed by
|
||||
a zero byte. The ``z'' in @samp{.asciz} stands for ``zero''.
|
||||
|
||||
+@node Attach_to_group
|
||||
+@section @code{.attach_to_group @var{name}}
|
||||
+Attaches the current section to the named group. This is like declaring
|
||||
+the section with the @code{G} attribute, but can be done after the section
|
||||
+has been created.
|
||||
+
|
||||
@node Balign
|
||||
@section @code{.balign[wl] [@var{abs-expr}[, @var{abs-expr}[, @var{abs-expr}]]]}
|
||||
|
44
binutils-config.patch
Normal file
44
binutils-config.patch
Normal file
@ -0,0 +1,44 @@
|
||||
diff -Nrup a/libiberty/aclocal.m4 b/libiberty/aclocal.m4
|
||||
--- a/libiberty/aclocal.m4 2019-01-19 09:01:34.000000000 -0700
|
||||
+++ b/libiberty/aclocal.m4 2020-01-09 22:00:27.183312982 -0700
|
||||
@@ -147,7 +147,7 @@ if test $ac_cv_os_cray = yes; then
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction,
|
||||
-[AC_TRY_RUN([find_stack_direction ()
|
||||
+[AC_TRY_RUN([__attribute__ ((noclone,noinline)) find_stack_direction ()
|
||||
{
|
||||
static char *addr = 0;
|
||||
auto char dummy;
|
||||
diff --git a/config/intdiv0.m4 b/config/intdiv0.m4
|
||||
index 55dddcf1..ba906efc 100644
|
||||
--- a/config/intdiv0.m4
|
||||
+++ b/config/intdiv0.m4
|
||||
@@ -31,10 +31,10 @@ sigfpe_handler (sig) int sig;
|
||||
exit (sig != SIGFPE);
|
||||
}
|
||||
|
||||
-int x = 1;
|
||||
-int y = 0;
|
||||
-int z;
|
||||
-int nan;
|
||||
+volatile int x = 1;
|
||||
+volatile int y = 0;
|
||||
+volatile int z;
|
||||
+volatile int nan;
|
||||
|
||||
int main ()
|
||||
{
|
||||
diff --git a/libiberty/configure.ac b/libiberty/configure.ac
|
||||
index f1ce7601..fc20d228 100644
|
||||
--- a/libiberty/configure.ac
|
||||
+++ b/libiberty/configure.ac
|
||||
@@ -661,7 +661,7 @@ if test -z "${setobjs}"; then
|
||||
for v in $vars; do
|
||||
AC_MSG_CHECKING([for $v])
|
||||
AC_CACHE_VAL(libiberty_cv_var_$v,
|
||||
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[int *p;]],[[extern int $v []; p = $v;]])],
|
||||
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[__attribute__ ((used)) int *p;]],[[extern int $v []; p = $v;]])],
|
||||
[eval "libiberty_cv_var_$v=yes"],
|
||||
[eval "libiberty_cv_var_$v=no"])])
|
||||
if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then
|
83
binutils-do-not-link-with-static-libstdc++.patch
Normal file
83
binutils-do-not-link-with-static-libstdc++.patch
Normal file
@ -0,0 +1,83 @@
|
||||
diff -rup binutils.orig/configure binutils-2.30/configure
|
||||
--- binutils.orig/configure 2018-09-24 17:50:06.967172922 +0100
|
||||
+++ binutils-2.30/configure 2018-09-24 17:51:16.648624865 +0100
|
||||
@@ -4996,49 +4996,6 @@ if test -z "$LD"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
-# Check whether -static-libstdc++ -static-libgcc is supported.
|
||||
-have_static_libs=no
|
||||
-if test "$GCC" = yes; then
|
||||
- saved_LDFLAGS="$LDFLAGS"
|
||||
-
|
||||
- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether g++ accepts -static-libstdc++ -static-libgcc" >&5
|
||||
-$as_echo_n "checking whether g++ accepts -static-libstdc++ -static-libgcc... " >&6; }
|
||||
- ac_ext=cpp
|
||||
-ac_cpp='$CXXCPP $CPPFLAGS'
|
||||
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||
-
|
||||
-
|
||||
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
-/* end confdefs.h. */
|
||||
-
|
||||
-#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
|
||||
-#error -static-libstdc++ not implemented
|
||||
-#endif
|
||||
-int main() {}
|
||||
-_ACEOF
|
||||
-if ac_fn_cxx_try_link "$LINENO"; then :
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
-$as_echo "yes" >&6; }; have_static_libs=yes
|
||||
-else
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
-$as_echo "no" >&6; }
|
||||
-fi
|
||||
-rm -f core conftest.err conftest.$ac_objext \
|
||||
- conftest$ac_exeext conftest.$ac_ext
|
||||
- ac_ext=c
|
||||
-ac_cpp='$CPP $CPPFLAGS'
|
||||
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
-
|
||||
-
|
||||
- LDFLAGS="$saved_LDFLAGS"
|
||||
-fi
|
||||
-
|
||||
-
|
||||
|
||||
|
||||
if test -n "$ac_tool_prefix"; then
|
||||
diff -rup binutils.orig/configure.ac binutils-2.30/configure.ac
|
||||
--- binutils.orig/configure.ac 2018-09-24 17:50:07.241170767 +0100
|
||||
+++ binutils-2.30/configure.ac 2018-09-24 17:50:29.908992486 +0100
|
||||
@@ -1288,26 +1288,6 @@ if test -z "$LD"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
-# Check whether -static-libstdc++ -static-libgcc is supported.
|
||||
-have_static_libs=no
|
||||
-if test "$GCC" = yes; then
|
||||
- saved_LDFLAGS="$LDFLAGS"
|
||||
-
|
||||
- LDFLAGS="$LDFLAGS -static-libstdc++ -static-libgcc"
|
||||
- AC_MSG_CHECKING([whether g++ accepts -static-libstdc++ -static-libgcc])
|
||||
- AC_LANG_PUSH(C++)
|
||||
- AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||
-#if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
|
||||
-#error -static-libstdc++ not implemented
|
||||
-#endif
|
||||
-int main() {}])],
|
||||
- [AC_MSG_RESULT([yes]); have_static_libs=yes],
|
||||
- [AC_MSG_RESULT([no])])
|
||||
- AC_LANG_POP(C++)
|
||||
-
|
||||
- LDFLAGS="$saved_LDFLAGS"
|
||||
-fi
|
||||
-
|
||||
ACX_PROG_GNAT
|
||||
ACX_PROG_CMP_IGNORE_INITIAL
|
||||
|
36
binutils-elf-add-objects.patch
Normal file
36
binutils-elf-add-objects.patch
Normal file
@ -0,0 +1,36 @@
|
||||
--- binutils.orig/bfd/elflink.c 2020-07-31 10:45:48.747912761 +0100
|
||||
+++ binutils-2.35/bfd/elflink.c 2020-07-31 10:47:26.336262770 +0100
|
||||
@@ -505,6 +505,16 @@ bfd_elf_link_record_dynamic_symbol (stru
|
||||
const char *name;
|
||||
size_t indx;
|
||||
|
||||
+ if (h->root.type == bfd_link_hash_defined
|
||||
+ || h->root.type == bfd_link_hash_defweak)
|
||||
+ {
|
||||
+ /* An IR symbol should not be made dynamic. */
|
||||
+ if (h->root.u.def.section != NULL
|
||||
+ && h->root.u.def.section->owner != NULL
|
||||
+ && (h->root.u.def.section->owner->flags & BFD_PLUGIN) != 0)
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
/* XXX: The ABI draft says the linker must turn hidden and
|
||||
internal symbols into STB_LOCAL symbols when producing the
|
||||
DSO. However, if ld.so honors st_other in the dynamic table,
|
||||
@@ -5199,15 +5209,11 @@ elf_link_add_object_symbols (bfd *abfd,
|
||||
break;
|
||||
}
|
||||
|
||||
- /* Don't add DT_NEEDED for references from the dummy bfd nor
|
||||
- for unmatched symbol. */
|
||||
if (!add_needed
|
||||
&& matched
|
||||
&& definition
|
||||
&& ((dynsym
|
||||
- && h->ref_regular_nonweak
|
||||
- && (old_bfd == NULL
|
||||
- || (old_bfd->flags & BFD_PLUGIN) == 0))
|
||||
+ && h->ref_regular_nonweak)
|
||||
|| (h->ref_dynamic_nonweak
|
||||
&& (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0
|
||||
&& !on_needed_list (elf_dt_name (abfd),
|
33
binutils-export-demangle.h.patch
Normal file
33
binutils-export-demangle.h.patch
Normal file
@ -0,0 +1,33 @@
|
||||
diff -rup binutils.orig/bfd/Makefile.am binutils-2.32/bfd/Makefile.am
|
||||
--- binutils.orig/bfd/Makefile.am 2019-02-08 12:22:51.395684251 +0000
|
||||
+++ binutils-2.32/bfd/Makefile.am 2019-02-08 12:22:53.970664973 +0000
|
||||
@@ -33,7 +33,7 @@ bfdlibdir = @bfdlibdir@
|
||||
bfdincludedir = @bfdincludedir@
|
||||
bfdlib_LTLIBRARIES = libbfd.la
|
||||
bfdinclude_HEADERS = $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
|
||||
- bfd_stdint.h $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
|
||||
+ bfd_stdint.h $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h $(INCDIR)/demangle.h
|
||||
else !INSTALL_LIBBFD
|
||||
# Empty these so that the respective installation directories will not be created.
|
||||
bfdlibdir =
|
||||
diff -rup binutils.orig/bfd/Makefile.in binutils-2.32/bfd/Makefile.in
|
||||
--- binutils.orig/bfd/Makefile.in 2019-02-08 12:21:35.291254044 +0000
|
||||
+++ binutils-2.32/bfd/Makefile.in 2019-02-08 12:22:10.163992947 +0000
|
||||
@@ -249,7 +249,7 @@ am__can_run_installinfo = \
|
||||
esac
|
||||
am__bfdinclude_HEADERS_DIST = $(INCDIR)/plugin-api.h bfd.h \
|
||||
$(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bfd_stdint.h \
|
||||
- $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
|
||||
+ $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h $(INCDIR)/demangle.h
|
||||
HEADERS = $(bfdinclude_HEADERS)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
@@ -468,7 +468,7 @@ libbfd_la_LDFLAGS = $(am__append_1) -rel
|
||||
@INSTALL_LIBBFD_FALSE@bfdinclude_HEADERS = $(am__append_2)
|
||||
@INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) \
|
||||
@INSTALL_LIBBFD_TRUE@ $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
|
||||
-@INSTALL_LIBBFD_TRUE@ bfd_stdint.h $(INCDIR)/diagnostics.h \
|
||||
+@INSTALL_LIBBFD_TRUE@ bfd_stdint.h $(INCDIR)/diagnostics.h $(INCDIR)/demangle.h \
|
||||
@INSTALL_LIBBFD_TRUE@ $(INCDIR)/bfdlink.h $(am__append_2)
|
||||
@INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@
|
||||
@INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libbfd.la
|
269
binutils-fix-ld-failures.patch
Normal file
269
binutils-fix-ld-failures.patch
Normal file
@ -0,0 +1,269 @@
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/lto.exp binutils-2.35/ld/testsuite/ld-plugin/lto.exp
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/lto.exp 2020-07-28 08:49:07.129503894 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/lto.exp 2020-07-28 08:54:50.102224314 +0100
|
||||
@@ -31,8 +31,6 @@ if { ![check_plugin_api_available]
|
||||
|
||||
set saved_CFLAGS "$CFLAGS"
|
||||
set saved_CXXFLAGS "$CXXFLAGS"
|
||||
-regsub -all "(\\-Wp,)?-D_FORTIFY_SOURCE=\[0-9\]+" $CFLAGS "" CFLAGS
|
||||
-regsub -all "(\\-Wp,)?-D_FORTIFY_SOURCE=\[0-9\]+" $CXXFLAGS "" CXXFLAGS
|
||||
|
||||
proc restore_notify { } {
|
||||
global saved_CFLAGS
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-10.d binutils-2.35/ld/testsuite/ld-plugin/plugin-10.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-10.d 2020-07-28 08:49:07.128503898 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-10.d 2020-07-28 10:07:50.675963507 +0100
|
||||
@@ -32,8 +32,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-11.d binutils-2.35/ld/testsuite/ld-plugin/plugin-11.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-11.d 2020-07-28 08:49:07.128503898 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-11.d 2020-07-28 10:08:07.540898427 +0100
|
||||
@@ -35,9 +35,9 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?text' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-16.d binutils-2.35/ld/testsuite/ld-plugin/plugin-16.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-16.d 2020-07-28 08:49:07.133503879 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-16.d 2020-07-28 10:07:10.525118454 +0100
|
||||
@@ -30,8 +30,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-17.d binutils-2.35/ld/testsuite/ld-plugin/plugin-17.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-17.d 2020-07-28 08:49:07.129503894 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-17.d 2020-07-28 10:07:28.119050562 +0100
|
||||
@@ -31,8 +31,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-18.d binutils-2.35/ld/testsuite/ld-plugin/plugin-18.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-18.d 2020-07-28 08:49:07.132503883 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-18.d 2020-07-28 10:08:56.503709477 +0100
|
||||
@@ -32,8 +32,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-19.d binutils-2.35/ld/testsuite/ld-plugin/plugin-19.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-19.d 2020-07-28 08:49:07.128503898 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-19.d 2020-07-28 10:08:24.053834702 +0100
|
||||
@@ -35,9 +35,9 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?text' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-8.d binutils-2.35/ld/testsuite/ld-plugin/plugin-8.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-8.d 2020-07-28 08:49:07.131503887 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-8.d 2020-07-28 10:06:08.440358037 +0100
|
||||
@@ -30,8 +30,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin-9.d binutils-2.35/ld/testsuite/ld-plugin/plugin-9.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-9.d 2020-07-28 08:49:07.133503879 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/plugin-9.d 2020-07-28 10:06:36.839248442 +0100
|
||||
@@ -31,8 +31,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/pr20070.d binutils-2.35/ld/testsuite/ld-plugin/pr20070.d
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/pr20070.d 2020-07-28 08:49:07.129503894 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-plugin/pr20070.d 2020-07-28 09:39:31.619488398 +0100
|
||||
@@ -1,10 +1,10 @@
|
||||
hook called: all symbols read.
|
||||
Input: pr20070b.c \(tmpdir/libpr20070.a\)
|
||||
-Sym: 'def' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: 'weakdef' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: 'def' Resolution: LDPR_PREVAILING_DEF_.*
|
||||
+Sym: 'weakdef' Resolution: LDPR_PREVAILING_DEF_.*
|
||||
Sym: 'undef' Resolution: LDPR_UNDEF
|
||||
Sym: 'weakundef' Resolution: LDPR_UNDEF
|
||||
-Sym: 'common' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+Sym: 'common' Resolution: LDPR_PREVAILING_DEF_.*
|
||||
#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-1a.r binutils-2.35/ld/testsuite/ld-x86-64/property-1a.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-1a.r 2020-07-28 08:49:07.203503617 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-1a.r 2020-07-28 10:09:29.622581671 +0100
|
||||
@@ -3,6 +3,7 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: no copy on protected
|
||||
+#...
|
||||
x86 ISA used: <None>
|
||||
x86 feature used: x86
|
||||
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-2a.r binutils-2.35/ld/testsuite/ld-x86-64/property-2a.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-2a.r 2020-07-28 08:49:07.196503643 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-2a.r 2020-07-28 09:42:30.825802177 +0100
|
||||
@@ -3,6 +3,7 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
+#...
|
||||
x86 ISA used: <None>
|
||||
x86 feature used: x86
|
||||
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-3.r binutils-2.35/ld/testsuite/ld-x86-64/property-3.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-3.r 2020-07-28 08:49:07.192503658 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-3.r 2020-07-28 09:43:59.247463593 +0100
|
||||
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA needed: CMOV, SSE
|
||||
+ x86 ISA needed: SSE, SSE2
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-3a.r binutils-2.35/ld/testsuite/ld-x86-64/property-3a.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-3a.r 2020-07-28 08:49:07.197503639 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-3a.r 2020-07-28 09:44:34.145329965 +0100
|
||||
@@ -3,6 +3,7 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
+#...
|
||||
x86 ISA needed: CMOV, SSE
|
||||
x86 ISA used: SSE, SSE3
|
||||
x86 feature used: x86
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-4.r binutils-2.35/ld/testsuite/ld-x86-64/property-4.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-4.r 2020-07-28 08:49:07.192503658 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-4.r 2020-07-28 09:45:09.585194255 +0100
|
||||
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA needed: CMOV, SSE, SSE3
|
||||
+ x86 ISA needed: .*
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-4a.r binutils-2.35/ld/testsuite/ld-x86-64/property-4a.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-4a.r 2020-07-28 08:49:07.195503647 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-4a.r 2020-07-28 11:48:01.518912704 +0100
|
||||
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA needed: CMOV, SSE, SSE3
|
||||
+#...
|
||||
x86 ISA used: CMOV, SSE, SSE3
|
||||
x86 feature used: x86
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-5.r binutils-2.35/ld/testsuite/ld-x86-64/property-5.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-5.r 2020-07-28 08:49:07.196503643 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-5.r 2020-07-28 10:10:35.206328582 +0100
|
||||
@@ -3,5 +3,5 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA needed: CMOV, SSE, SSE3
|
||||
+ x86 ISA needed: .*
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/property-5a.r binutils-2.35/ld/testsuite/ld-x86-64/property-5a.r
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/property-5a.r 2020-07-28 08:49:07.187503677 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/property-5a.r 2020-07-28 11:48:24.220790926 +0100
|
||||
@@ -3,7 +3,7 @@ Displaying notes found in: .note.gnu.pro
|
||||
[ ]+Owner[ ]+Data size[ ]+Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA needed: CMOV, SSE, SSE3
|
||||
+#...
|
||||
x86 ISA used: CMOV, SSE, SSE3
|
||||
x86 feature used: x86
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-x86-64/x86-64.exp binutils-2.35/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
--- binutils.orig/ld/testsuite/ld-x86-64/x86-64.exp 2020-07-28 08:49:07.192503658 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-x86-64/x86-64.exp 2020-07-28 10:17:29.571700687 +0100
|
||||
@@ -1399,24 +1399,6 @@ if { [isnative] && [check_compiler_avail
|
||||
] \
|
||||
]
|
||||
} else {
|
||||
- run_cc_link_tests [list \
|
||||
- [list \
|
||||
- "Build pr22001-1b" \
|
||||
- "$NOPIE_LDFLAGS -Wl,-z,nocopyreloc,--no-as-needed,-z,notext tmpdir/pr22001-1.so" \
|
||||
- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
|
||||
- { pr22001-1c.c } \
|
||||
- {{error_output "pr22001-1b.err"}} \
|
||||
- "pr22001-1b" \
|
||||
- ] \
|
||||
- [list \
|
||||
- "Build pr21997-1b" \
|
||||
- "$NOPIE_LDFLAGS -Wl,--no-as-needed,-z,notext tmpdir/pr21997-1.so" \
|
||||
- "$NOPIE_CFLAGS -Wa,-mx86-used-note=yes" \
|
||||
- { pr21997-1c.c } \
|
||||
- {{error_output "pr21997-1b.err"}} \
|
||||
- "pr21997-1b" \
|
||||
- ] \
|
||||
- ]
|
||||
}
|
||||
|
||||
run_ld_link_exec_tests [list \
|
||||
@@ -2052,7 +2034,7 @@ if { [isnative] && [check_compiler_avail
|
||||
}
|
||||
}
|
||||
|
||||
- undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
|
||||
+ # undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
|
||||
undefined_weak "-fPIE" ""
|
||||
undefined_weak "-fPIE" "-pie"
|
||||
undefined_weak "-fPIE" "-Wl,-z,nodynamic-undefined-weak"
|
330
binutils-fix-testsuite-failures.patch
Normal file
330
binutils-fix-testsuite-failures.patch
Normal file
@ -0,0 +1,330 @@
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 13:33:21.979627285 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 13:40:26.911199033 +0000
|
||||
@@ -34,5 +34,6 @@ hook called: claim_file tmpdir/libtext.a
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-13.d binutils-2.32/ld/testsuite/ld-plugin/plugin-13.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-13.d 2019-02-15 13:33:21.980627277 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-13.d 2019-02-15 13:41:30.189692800 +0000
|
||||
@@ -23,5 +23,3 @@ hook called: claim_file tmpdir/main.o \[
|
||||
hook called: claim_file .*/ld/testsuite/ld-plugin/func.c \[@0/.* CLAIMED
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
-#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-14.d binutils-2.32/ld/testsuite/ld-plugin/plugin-14.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-14.d 2019-02-15 13:33:21.977627301 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-14.d 2019-02-15 13:42:03.598430960 +0000
|
||||
@@ -27,7 +27,6 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-15.d binutils-2.32/ld/testsuite/ld-plugin/plugin-15.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-15.d 2019-02-15 13:33:21.980627277 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-15.d 2019-02-15 13:42:28.014239600 +0000
|
||||
@@ -28,7 +28,6 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-16.d binutils-2.32/ld/testsuite/ld-plugin/plugin-16.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-16.d 2019-02-15 13:33:21.977627301 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-16.d 2019-02-15 13:43:21.309821910 +0000
|
||||
@@ -30,9 +30,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-17.d binutils-2.32/ld/testsuite/ld-plugin/plugin-17.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-17.d 2019-02-15 13:33:21.977627301 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-17.d 2019-02-15 13:43:54.925558451 +0000
|
||||
@@ -31,7 +31,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-20.d binutils-2.32/ld/testsuite/ld-plugin/plugin-20.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-20.d 2019-02-15 13:33:21.980627277 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-20.d 2019-02-15 13:49:20.091010016 +0000
|
||||
@@ -2,6 +2,5 @@ hook called: all symbols read.
|
||||
Input: func.c \(tmpdir/libfunc.a\)
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-21.d binutils-2.32/ld/testsuite/ld-plugin/plugin-21.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-21.d 2019-02-15 13:33:21.978627293 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-21.d 2019-02-15 13:49:34.506897033 +0000
|
||||
@@ -2,6 +2,5 @@ hook called: all symbols read.
|
||||
Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-22.d binutils-2.32/ld/testsuite/ld-plugin/plugin-22.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-22.d 2019-02-15 13:33:21.980627277 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-22.d 2019-02-15 13:50:00.409694022 +0000
|
||||
@@ -2,6 +2,5 @@ Claimed: tmpdir/libfunc.a \[@.*
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-23.d binutils-2.32/ld/testsuite/ld-plugin/plugin-23.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-23.d 2019-02-15 13:33:21.979627285 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-23.d 2019-02-15 13:50:14.938580156 +0000
|
||||
@@ -2,6 +2,5 @@ Claimed: .*/ld/testsuite/ld-plugin/func.
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-24.d binutils-2.32/ld/testsuite/ld-plugin/plugin-24.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-24.d 2019-02-15 13:33:21.980627277 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-24.d 2019-02-15 13:49:46.346804240 +0000
|
||||
@@ -2,4 +2,5 @@ hook called: all symbols read.
|
||||
Input: .*/ld/testsuite/ld-plugin/func.c \(.*/ld/testsuite/ld-plugin/func.c\)
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-25.d binutils-2.32/ld/testsuite/ld-plugin/plugin-25.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-25.d 2019-02-15 13:33:21.978627293 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-25.d 2019-02-15 13:50:29.322467422 +0000
|
||||
@@ -2,4 +2,5 @@ Claimed: .*/ld/testsuite/ld-plugin/func.
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF.*
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 13:33:21.977627301 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 13:45:05.343006557 +0000
|
||||
@@ -1 +1,3 @@
|
||||
.*: error: Error
|
||||
+#...
|
||||
+
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-29.d binutils-2.32/ld/testsuite/ld-plugin/plugin-29.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-29.d 2019-02-15 13:33:21.978627293 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-29.d 2019-02-15 13:45:22.764870016 +0000
|
||||
@@ -1 +1,2 @@
|
||||
.*: warning: Warning
|
||||
+#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-30.d binutils-2.32/ld/testsuite/ld-plugin/plugin-30.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-30.d 2019-02-15 13:33:21.976627309 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-30.d 2019-02-15 13:48:57.067190464 +0000
|
||||
@@ -24,3 +24,4 @@ hook called: claim_file tmpdir/main.o \[
|
||||
hook called: claim_file tmpdir/func.o \[@0/.* not claimed
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
hook called: claim_file tmpdir/libempty.a \[@.* not claimed
|
||||
+#pass
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-6.d binutils-2.32/ld/testsuite/ld-plugin/plugin-6.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-6.d 2019-02-15 13:33:21.979627285 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-6.d 2019-02-15 13:37:14.672749977 +0000
|
||||
@@ -27,7 +27,6 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-7.d binutils-2.32/ld/testsuite/ld-plugin/plugin-7.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-7.d 2019-02-15 13:33:21.977627301 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-7.d 2019-02-15 13:37:58.000400421 +0000
|
||||
@@ -28,7 +28,6 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 13:33:21.980627277 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 13:38:34.096109209 +0000
|
||||
@@ -32,7 +32,6 @@ hook called: claim_file tmpdir/text.o \[
|
||||
hook called: all symbols read.
|
||||
Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-.*: tmpdir/main.o: in function `main':
|
||||
-.*main.c.*: undefined reference to `\.?func'
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-9.d binutils-2.32/ld/testsuite/ld-plugin/plugin-9.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-9.d 2019-02-15 13:33:21.977627301 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-9.d 2019-02-15 13:39:52.655475403 +0000
|
||||
@@ -31,7 +31,8 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/pr20070.d binutils-2.32/ld/testsuite/ld-plugin/pr20070.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/pr20070.d 2019-02-15 13:33:21.976627309 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/pr20070.d 2019-02-15 13:50:56.874251486 +0000
|
||||
@@ -5,5 +5,6 @@ Sym: 'weakdef' Resolution: LDPR_PREVAILI
|
||||
Sym: 'undef' Resolution: LDPR_UNDEF
|
||||
Sym: 'weakundef' Resolution: LDPR_UNDEF
|
||||
Sym: 'common' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-srec/srec.exp binutils-2.32/ld/testsuite/ld-srec/srec.exp
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-srec/srec.exp 2019-02-15 13:33:21.938627615 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-srec/srec.exp 2019-02-15 13:53:58.744814006 +0000
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
# Get the offset from an S-record line to the start of the data.
|
||||
|
||||
+return
|
||||
+
|
||||
proc srec_off { l } {
|
||||
if [string match "S1*" $l] {
|
||||
return 8
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 14:10:59.038709514 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-10.d 2019-02-15 14:13:53.532300721 +0000
|
||||
@@ -32,7 +32,7 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-11.d binutils-2.32/ld/testsuite/ld-plugin/plugin-11.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-11.d 2019-02-15 14:10:59.041709490 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-11.d 2019-02-15 14:14:50.061844322 +0000
|
||||
@@ -35,8 +35,9 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-18.d binutils-2.32/ld/testsuite/ld-plugin/plugin-18.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-18.d 2019-02-15 14:10:58.942710289 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-18.d 2019-02-15 14:15:20.030602369 +0000
|
||||
@@ -32,7 +32,8 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-19.d binutils-2.32/ld/testsuite/ld-plugin/plugin-19.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-19.d 2019-02-15 14:10:59.024709627 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-19.d 2019-02-15 14:15:54.926320633 +0000
|
||||
@@ -35,8 +35,9 @@ hook called: claim_file .*/ld/testsuite/
|
||||
hook called: claim_file tmpdir/libtext.a \[@.* CLAIMED
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
-Sym: '_?text' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?text' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
+#...
|
||||
hook called: cleanup.
|
||||
#...
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 14:10:58.998709837 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-28.d 2019-02-15 14:12:19.856057024 +0000
|
||||
@@ -1,3 +1,2 @@
|
||||
.*: error: Error
|
||||
#...
|
||||
-
|
||||
diff -rup binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d
|
||||
--- binutils-2.32.orig/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 14:10:59.074709224 +0000
|
||||
+++ binutils-2.32/ld/testsuite/ld-plugin/plugin-8.d 2019-02-15 14:11:48.144313048 +0000
|
||||
@@ -30,7 +30,7 @@ hook called: claim_file tmpdir/func.o \[
|
||||
hook called: claim_file tmpdir/text.o \[@0/.* not claimed
|
||||
#...
|
||||
hook called: all symbols read.
|
||||
-Sym: '_?func' Resolution: LDPR_PREVAILING_DEF
|
||||
+Sym: '_?func' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
Sym: '_?func2' Resolution: LDPR_PREVAILING_DEF_IRONLY
|
||||
#...
|
||||
hook called: cleanup.
|
||||
diff -rup binutils.orig/ld/testsuite/ld-elfvers/vers24.rd binutils-2.30/ld/testsuite/ld-elfvers/vers24.rd
|
||||
--- binutils.orig/ld/testsuite/ld-elfvers/vers24.rd 2018-09-05 09:45:44.013108697 +0100
|
||||
+++ binutils-2.30/ld/testsuite/ld-elfvers/vers24.rd 2018-09-05 12:06:17.287425232 +0100
|
||||
@@ -7,9 +7,9 @@ Symbol table '.dynsym' contains [0-9]+ e
|
||||
# And ensure the dynamic symbol table contains at least x@VERS.0
|
||||
# and foo@@VERS.0 symbols
|
||||
#...
|
||||
- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0
|
||||
+ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0.*
|
||||
#...
|
||||
- +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0
|
||||
+ +[0-9]+: [0-9a-f]+ +(4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ _?x|[0-9]+ +FUNC +GLOBAL +DEFAULT .* [0-9]+ _?foo@)@VERS\.0.*
|
||||
#...
|
||||
Symbol table '.symtab' contains [0-9]+ entries:
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/plugin.exp binutils-2.30/ld/testsuite/ld-plugin/plugin.exp
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2018-09-05 09:45:44.023108605 +0100
|
||||
+++ binutils-2.30/ld/testsuite/ld-plugin/plugin.exp 2018-09-05 11:18:53.997202105 +0100
|
||||
@@ -118,6 +118,12 @@ if { $can_compile && !$failed_compile }
|
||||
}
|
||||
}
|
||||
|
||||
+# I do not know why, but the underscore prefix test is going
|
||||
+# wrong on ppc64le targets. So override it here.
|
||||
+if { [istarget powerpc*-*-linux*] || [istarget x86_64*-*-linux*] } {
|
||||
+ set _ ""
|
||||
+}
|
||||
+
|
||||
set testobjfiles "tmpdir/main.o tmpdir/func.o tmpdir/text.o"
|
||||
set testobjfiles_notext "tmpdir/main.o tmpdir/func.o"
|
||||
set testsrcfiles "tmpdir/main.o $srcdir/$subdir/func.c tmpdir/text.o"
|
11
binutils-gas-dwarf-level-4.patch
Normal file
11
binutils-gas-dwarf-level-4.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- binutils.orig/gas/as.c 2020-07-30 08:41:25.034236441 +0100
|
||||
+++ binutils-2.35/gas/as.c 2020-07-30 08:41:52.197058041 +0100
|
||||
@@ -103,7 +103,7 @@ int verbose = 0;
|
||||
int flag_dwarf_cie_version = -1;
|
||||
|
||||
/* The maximum level of DWARF DEBUG information we should manufacture. */
|
||||
-unsigned int dwarf_level = 0;
|
||||
+unsigned int dwarf_level = 3;
|
||||
|
||||
#if defined OBJ_ELF || defined OBJ_MAYBE_ELF
|
||||
int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON;
|
7750
binutils-gas-speedups.patch
Normal file
7750
binutils-gas-speedups.patch
Normal file
File diff suppressed because it is too large
Load Diff
170
binutils-gcc-10-fixes.patch
Normal file
170
binutils-gcc-10-fixes.patch
Normal file
@ -0,0 +1,170 @@
|
||||
diff -rup binutils.orig/gold/gdb-index.cc binutils-2.34.0/gold/gdb-index.cc
|
||||
--- binutils.orig/gold/gdb-index.cc 2020-07-24 09:12:29.241306445 +0100
|
||||
+++ binutils-2.34.0/gold/gdb-index.cc 2020-07-24 09:15:48.332095898 +0100
|
||||
@@ -817,7 +817,7 @@ Gdb_index_info_reader::get_qualified_nam
|
||||
void
|
||||
Gdb_index_info_reader::record_cu_ranges(Dwarf_die* die)
|
||||
{
|
||||
- unsigned int shndx;
|
||||
+ unsigned int shndx = 0;
|
||||
unsigned int shndx2;
|
||||
|
||||
off_t ranges_offset = die->ref_attribute(elfcpp::DW_AT_ranges, &shndx);
|
||||
diff -rup binutils.orig/gold/layout.cc binutils-2.34.0/gold/layout.cc
|
||||
--- binutils.orig/gold/layout.cc 2020-07-24 09:12:29.243306433 +0100
|
||||
+++ binutils-2.34.0/gold/layout.cc 2020-07-24 09:15:11.464320064 +0100
|
||||
@@ -1986,7 +1986,7 @@ Layout::attach_allocated_section_to_segm
|
||||
seg_flags |= os->extra_segment_flags();
|
||||
|
||||
// Check for --section-start.
|
||||
- uint64_t addr;
|
||||
+ uint64_t addr = 0;
|
||||
bool is_address_set = parameters->options().section_start(os->name(), &addr);
|
||||
|
||||
// In general the only thing we really care about for PT_LOAD
|
||||
diff -rup binutils.orig/binutils/dlltool.c binutils-2.34.0/binutils/dlltool.c
|
||||
--- binutils.orig/binutils/dlltool.c 2020-07-24 09:12:28.974308069 +0100
|
||||
+++ binutils-2.34.0/binutils/dlltool.c 2020-07-24 12:09:37.527121295 +0100
|
||||
@@ -1305,7 +1305,7 @@ run (const char *what, char *args)
|
||||
int pid, wait_status;
|
||||
int i;
|
||||
const char **argv;
|
||||
- char *errmsg_fmt, *errmsg_arg;
|
||||
+ char *errmsg_fmt = "", *errmsg_arg = "";
|
||||
char *temp_base = choose_temp_base ();
|
||||
|
||||
inform (_("run: %s %s"), what, args);
|
||||
diff -rup binutils.orig/gas/config/tc-arm.c binutils-2.34.0/gas/config/tc-arm.c
|
||||
--- binutils.orig/gas/config/tc-arm.c 2020-07-24 09:12:32.368287432 +0100
|
||||
+++ binutils-2.34.0/gas/config/tc-arm.c 2020-07-24 12:14:19.842360634 +0100
|
||||
@@ -28416,9 +28416,12 @@ md_apply_fix (fixS * fixP,
|
||||
perform relaxation. */
|
||||
if (value == -2)
|
||||
{
|
||||
- newval = md_chars_to_number (buf, THUMB_SIZE);
|
||||
- newval = 0xbf00; /* NOP encoding T1 */
|
||||
- md_number_to_chars (buf, newval, THUMB_SIZE);
|
||||
+ if (fixP->fx_done || !seg->use_rela_p)
|
||||
+ {
|
||||
+ newval = md_chars_to_number (buf, THUMB_SIZE);
|
||||
+ newval = 0xbf00; /* NOP encoding T1 */
|
||||
+ md_number_to_chars (buf, newval, THUMB_SIZE);
|
||||
+ }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -28631,17 +28634,14 @@ md_apply_fix (fixS * fixP,
|
||||
case BFD_RELOC_ARM_GOTFUNCDESC:
|
||||
case BFD_RELOC_ARM_GOTOFFFUNCDESC:
|
||||
case BFD_RELOC_ARM_FUNCDESC:
|
||||
- if (arm_fdpic)
|
||||
- {
|
||||
- if (fixP->fx_done || !seg->use_rela_p)
|
||||
- md_number_to_chars (buf, 0, 4);
|
||||
- }
|
||||
- else
|
||||
+ if (!arm_fdpic)
|
||||
{
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("Relocation supported only in FDPIC mode"));
|
||||
- }
|
||||
- break;
|
||||
+ break;
|
||||
+ }
|
||||
+ value = 0;
|
||||
+ /* Fall through. */
|
||||
#endif
|
||||
|
||||
case BFD_RELOC_RVA:
|
||||
diff -rup binutils.orig/gas/config/tc-arm.c binutils-2.34.0/gas/config/tc-arm.c
|
||||
--- binutils.orig/gas/config/tc-arm.c 2020-07-24 12:16:02.099719884 +0100
|
||||
+++ binutils-2.34.0/gas/config/tc-arm.c 2020-07-24 12:34:17.690858328 +0100
|
||||
@@ -28641,7 +28641,7 @@ md_apply_fix (fixS * fixP,
|
||||
break;
|
||||
}
|
||||
value = 0;
|
||||
- /* Fall through. */
|
||||
+ goto fred;
|
||||
#endif
|
||||
|
||||
case BFD_RELOC_RVA:
|
||||
@@ -28653,6 +28653,7 @@ md_apply_fix (fixS * fixP,
|
||||
#ifdef TE_PE
|
||||
case BFD_RELOC_32_SECREL:
|
||||
#endif
|
||||
+ fred:
|
||||
if (fixP->fx_done || !seg->use_rela_p)
|
||||
#ifdef TE_WINCE
|
||||
/* For WinCE we only do this for pcrel fixups. */
|
||||
diff -rup binutils.orig/gas/config/tc-arm.c binutils-2.34.0/gas/config/tc-arm.c
|
||||
--- binutils.orig/gas/config/tc-arm.c 2020-07-24 13:28:26.926553452 +0100
|
||||
+++ binutils-2.34.0/gas/config/tc-arm.c 2020-07-24 13:31:57.835215763 +0100
|
||||
@@ -28416,12 +28416,8 @@ md_apply_fix (fixS * fixP,
|
||||
perform relaxation. */
|
||||
if (value == -2)
|
||||
{
|
||||
- if (fixP->fx_done || !seg->use_rela_p)
|
||||
- {
|
||||
- newval = md_chars_to_number (buf, THUMB_SIZE);
|
||||
- newval = 0xbf00; /* NOP encoding T1 */
|
||||
- md_number_to_chars (buf, newval, THUMB_SIZE);
|
||||
- }
|
||||
+ newval = 0xbf00; /* NOP encoding T1 */
|
||||
+ goto jim;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -28432,6 +28428,7 @@ md_apply_fix (fixS * fixP,
|
||||
{
|
||||
newval = md_chars_to_number (buf, THUMB_SIZE);
|
||||
newval |= ((value & 0x3e) << 2) | ((value & 0x40) << 3);
|
||||
+ jim:
|
||||
md_number_to_chars (buf, newval, THUMB_SIZE);
|
||||
}
|
||||
}
|
||||
diff -rup binutils.orig/binutils/mclex.c binutils-2.34.0/binutils/mclex.c
|
||||
--- binutils.orig/binutils/mclex.c 2020-07-24 13:28:26.297557441 +0100
|
||||
+++ binutils-2.34.0/binutils/mclex.c 2020-07-24 14:46:53.587940149 +0100
|
||||
@@ -207,7 +207,7 @@ enum_severity (int e)
|
||||
static void
|
||||
mc_add_keyword_ascii (const char *sz, int rid, const char *grp, rc_uint_type nv, const char *sv)
|
||||
{
|
||||
- unichar *usz, *usv = NULL;
|
||||
+ unichar *usz = NULL, *usv = NULL;
|
||||
rc_uint_type usz_len;
|
||||
|
||||
unicode_from_codepage (&usz_len, &usz, sz, CP_ACP);
|
||||
diff -rup binutils.orig/binutils/windmc.c binutils-2.34.0/binutils/windmc.c
|
||||
--- binutils.orig/binutils/windmc.c 2020-07-24 13:28:26.279557556 +0100
|
||||
+++ binutils-2.34.0/binutils/windmc.c 2020-07-24 14:48:05.460477478 +0100
|
||||
@@ -338,7 +338,7 @@ mc_add_node_lang (mc_node *root, const m
|
||||
static char *
|
||||
convert_unicode_to_ACP (const unichar *usz)
|
||||
{
|
||||
- char *s;
|
||||
+ char *s = NULL;
|
||||
rc_uint_type l;
|
||||
|
||||
if (! usz)
|
||||
@@ -607,10 +607,10 @@ mc_generate_bin_item (mc_node_lang *n, r
|
||||
else
|
||||
{
|
||||
rc_uint_type txt_len, l;
|
||||
- char *cvt_txt;
|
||||
+ char *cvt_txt = NULL;
|
||||
|
||||
codepage_from_unicode( &l, n->message, &cvt_txt, n->lang->lang_info.wincp);
|
||||
- if (! cvt_txt)
|
||||
+ if (cvt_txt == NULL)
|
||||
fatal ("Failed to convert message to language codepage.\n");
|
||||
txt_len = strlen (cvt_txt);
|
||||
if (mcset_automatic_null_termination && txt_len > 0)
|
||||
@@ -1107,7 +1107,7 @@ main (int argc, char **argv)
|
||||
|
||||
/* Load the input file and do code page transformations to UTF16. */
|
||||
{
|
||||
- unichar *u;
|
||||
+ unichar *u = NULL;
|
||||
rc_uint_type ul;
|
||||
char *buff;
|
||||
bfd_size_type flen;
|
99
binutils-gold-8-byte-note-segments.patch
Normal file
99
binutils-gold-8-byte-note-segments.patch
Normal file
@ -0,0 +1,99 @@
|
||||
diff -rup binutils.orig/gold/layout.cc binutils-2.30/gold/layout.cc
|
||||
--- binutils.orig/gold/layout.cc 2018-10-09 15:24:05.987282736 +0100
|
||||
+++ binutils-2.30/gold/layout.cc 2018-10-09 16:08:29.445946736 +0100
|
||||
@@ -2052,12 +2052,15 @@ Layout::attach_allocated_section_to_segm
|
||||
// segment.
|
||||
if (os->type() == elfcpp::SHT_NOTE)
|
||||
{
|
||||
+ uint64_t os_align = os->addralign();
|
||||
+
|
||||
// See if we already have an equivalent PT_NOTE segment.
|
||||
for (p = this->segment_list_.begin();
|
||||
p != segment_list_.end();
|
||||
++p)
|
||||
{
|
||||
if ((*p)->type() == elfcpp::PT_NOTE
|
||||
+ && (*p)->align() == os_align
|
||||
&& (((*p)->flags() & elfcpp::PF_W)
|
||||
== (seg_flags & elfcpp::PF_W)))
|
||||
{
|
||||
@@ -2071,6 +2074,7 @@ Layout::attach_allocated_section_to_segm
|
||||
Output_segment* oseg = this->make_output_segment(elfcpp::PT_NOTE,
|
||||
seg_flags);
|
||||
oseg->add_output_section_to_nonload(os, seg_flags);
|
||||
+ oseg->set_align(os_align);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3171,6 +3175,10 @@ Layout::create_note(const char* name, in
|
||||
#else
|
||||
const int size = 32;
|
||||
#endif
|
||||
+ // The NT_GNU_PROPERTY_TYPE_0 note conforms to gABI.
|
||||
+ const int addralign = ((note_type == elfcpp::NT_GNU_PROPERTY_TYPE_0
|
||||
+ ? parameters->target().get_size()
|
||||
+ : size) / 8);
|
||||
|
||||
// The contents of the .note section.
|
||||
size_t namesz = strlen(name) + 1;
|
||||
@@ -3234,7 +3242,7 @@ Layout::create_note(const char* name, in
|
||||
return NULL;
|
||||
|
||||
Output_section_data* posd = new Output_data_const_buffer(buffer, notehdrsz,
|
||||
- size / 8,
|
||||
+ addralign,
|
||||
"** note header");
|
||||
os->add_output_section_data(posd);
|
||||
|
||||
@@ -3692,6 +3700,11 @@ Layout::segment_precedes(const Output_se
|
||||
{
|
||||
if (type1 != type2)
|
||||
return type1 < type2;
|
||||
+ uint64_t align1 = seg1->align();
|
||||
+ uint64_t align2 = seg2->align();
|
||||
+ // Place segments with larger alignments first.
|
||||
+ if (align1 != align2)
|
||||
+ return align1 > align2;
|
||||
gold_assert(flags1 != flags2
|
||||
|| this->script_options_->saw_phdrs_clause());
|
||||
return flags1 < flags2;
|
||||
diff -rup binutils.orig/gold/output.cc binutils-2.30/gold/output.cc
|
||||
--- binutils.orig/gold/output.cc 2018-10-09 15:24:05.986282744 +0100
|
||||
+++ binutils-2.30/gold/output.cc 2018-10-09 16:09:03.749670846 +0100
|
||||
@@ -4107,6 +4107,7 @@ Output_segment::Output_segment(elfcpp::E
|
||||
: vaddr_(0),
|
||||
paddr_(0),
|
||||
memsz_(0),
|
||||
+ align_(0),
|
||||
max_align_(0),
|
||||
min_p_align_(0),
|
||||
offset_(0),
|
||||
diff -rup binutils.orig/gold/output.h binutils-2.30/gold/output.h
|
||||
--- binutils.orig/gold/output.h 2018-10-09 15:24:05.984282760 +0100
|
||||
+++ binutils-2.30/gold/output.h 2018-10-09 16:09:45.665333727 +0100
|
||||
@@ -4676,6 +4676,16 @@ class Output_segment
|
||||
offset() const
|
||||
{ return this->offset_; }
|
||||
|
||||
+ // Return the segment alignment.
|
||||
+ uint64_t
|
||||
+ align() const
|
||||
+ { return this->align_; }
|
||||
+
|
||||
+ // Set the segment alignment.
|
||||
+ void
|
||||
+ set_align(uint64_t align)
|
||||
+ { this->align_ = align; }
|
||||
+
|
||||
// Whether this is a segment created to hold large data sections.
|
||||
bool
|
||||
is_large_data_segment() const
|
||||
@@ -4898,6 +4908,8 @@ class Output_segment
|
||||
uint64_t paddr_;
|
||||
// The size of the segment in memory.
|
||||
uint64_t memsz_;
|
||||
+ // The segment alignment.
|
||||
+ uint64_t align_;
|
||||
// The maximum section alignment. The is_max_align_known_ field
|
||||
// indicates whether this has been finalized.
|
||||
uint64_t max_align_;
|
36
binutils-gold-mismatched-section-flags.patch
Normal file
36
binutils-gold-mismatched-section-flags.patch
Normal file
@ -0,0 +1,36 @@
|
||||
diff -rup binutils.orig/gold/layout.cc binutils-2.32/gold/layout.cc
|
||||
--- binutils.orig/gold/layout.cc 2019-06-24 14:37:36.013086899 +0100
|
||||
+++ binutils-2.32/gold/layout.cc 2019-06-24 14:41:40.054517479 +0100
|
||||
@@ -868,6 +868,7 @@ Layout::get_output_section(const char* n
|
||||
&& (same_name->flags() & elfcpp::SHF_TLS) == 0)
|
||||
os = same_name;
|
||||
}
|
||||
+#if 0 /* BZ 1722715, PR 17556. */
|
||||
else if ((flags & elfcpp::SHF_TLS) == 0)
|
||||
{
|
||||
elfcpp::Elf_Xword zero_flags = 0;
|
||||
@@ -878,6 +879,7 @@ Layout::get_output_section(const char* n
|
||||
if (p != this->section_name_map_.end())
|
||||
os = p->second;
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
if (os == NULL)
|
||||
diff -rup binutils.orig/gold/object.cc binutils-2.32/gold/object.cc
|
||||
--- binutils.orig/gold/object.cc 2019-06-24 14:37:36.012086906 +0100
|
||||
+++ binutils-2.32/gold/object.cc 2019-06-24 14:39:59.287165501 +0100
|
||||
@@ -1644,6 +1644,13 @@ Sized_relobj_file<size, big_endian>::do_
|
||||
omit[i] = true;
|
||||
}
|
||||
|
||||
+ // Skip empty sections without flags.
|
||||
+ if (!(shdr.get_sh_flags() & ~elfcpp::SHF_GROUP)
|
||||
+ && !shdr.get_sh_size())
|
||||
+ {
|
||||
+ omit[i] = true;
|
||||
+ }
|
||||
+
|
||||
bool discard = omit[i];
|
||||
if (!discard)
|
||||
{
|
29
binutils-i686-ld-testsuite-fixes.patch
Normal file
29
binutils-i686-ld-testsuite-fixes.patch
Normal file
@ -0,0 +1,29 @@
|
||||
diff -rup binutils.orig/ld/testsuite/ld-elfvsb/elfvsb.exp binutils-2.35/ld/testsuite/ld-elfvsb/elfvsb.exp
|
||||
--- binutils.orig/ld/testsuite/ld-elfvsb/elfvsb.exp 2020-07-28 13:07:26.277506755 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elfvsb/elfvsb.exp 2020-07-28 13:29:32.252877646 +0100
|
||||
@@ -264,6 +264,7 @@ proc visibility_run {visibility} {
|
||||
remote_file host delete $tmpdir/sh1p.o $tmpdir/sh2p.o $tmpdir/sh1np.o $tmpdir/sh2np.o
|
||||
|
||||
if { [istarget powerpc*-*-linux*] \
|
||||
+ || [istarget i686*-*-*] \
|
||||
|| ( [istarget mips*-*-linux*] && [at_least_gcc_version 4 3] )} {
|
||||
# Testing non-PIC libraries is a waste of effort on any target.
|
||||
# If you don't pass -fpic or -fPIC to gcc, gcc will assume quite
|
||||
@@ -345,6 +346,7 @@ proc visibility_run {visibility} {
|
||||
|| [ string match $visibility "protected_undef_def" ]
|
||||
|| [ string match $visibility "protected_weak" ]
|
||||
|| [ string match $visibility "normal" ] } {
|
||||
+ setup_xfail "i686-*-*"
|
||||
setup_xfail "powerpc-*-linux*"
|
||||
setup_xfail "s390x-*-linux*"
|
||||
if { [istarget sparc*-*-linux*] && [is_elf64 $tmpdir/mainnp.o] } {
|
||||
@@ -393,7 +395,8 @@ proc visibility_run {visibility} {
|
||||
}
|
||||
}}
|
||||
|
||||
- if { [istarget powerpc*-*-linux*] } {
|
||||
+ if { [istarget powerpc*-*-linux*]
|
||||
+ || [istarget i686*-*-*] } {
|
||||
# Don't bother.
|
||||
} else {
|
||||
# Now do the same tests again, but this time compile main.c PIC.
|
24
binutils-ignore-duplicate-FDE-entries.patch
Normal file
24
binutils-ignore-duplicate-FDE-entries.patch
Normal file
@ -0,0 +1,24 @@
|
||||
--- binutils-2.32.orig/bfd/elf-eh-frame.c 2019-06-26 07:05:43.839194746 -0400
|
||||
+++ binutils-2.32/bfd/elf-eh-frame.c 2019-06-26 07:32:37.124219479 -0400
|
||||
@@ -2478,11 +2478,16 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
|
||||
!= sec->output_section->vma + val))
|
||||
overflow = TRUE;
|
||||
bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 8);
|
||||
- if (i != 0
|
||||
- && (hdr_info->u.dwarf.array[i].initial_loc
|
||||
- < (hdr_info->u.dwarf.array[i - 1].initial_loc
|
||||
- + hdr_info->u.dwarf.array[i - 1].range)))
|
||||
- overlap = TRUE;
|
||||
+ if (i != 0)
|
||||
+ {
|
||||
+ struct eh_frame_array_ent * this_entry = hdr_info->u.dwarf.array + i;
|
||||
+ struct eh_frame_array_ent * prev_entry = hdr_info->u.dwarf.array + (i - 1);
|
||||
+
|
||||
+ if (this_entry->initial_loc < prev_entry->initial_loc + prev_entry->range
|
||||
+ && (this_entry->initial_loc != prev_entry->initial_loc
|
||||
+ || this_entry->range != prev_entry->range))
|
||||
+ overlap = TRUE;
|
||||
+ }
|
||||
}
|
||||
if (overflow)
|
||||
_bfd_error_handler (_(".eh_frame_hdr entry overflow"));
|
19
binutils-no-builder-comment-in-bfd-stdint.patch
Normal file
19
binutils-no-builder-comment-in-bfd-stdint.patch
Normal file
@ -0,0 +1,19 @@
|
||||
--- binutils.orig/bfd/configure 2019-06-24 14:37:35.984087086 +0100
|
||||
+++ binutils-2.32/bfd/configure 2019-06-24 17:32:52.515541752 +0100
|
||||
@@ -18865,11 +18865,11 @@ _LT_EOF
|
||||
esac
|
||||
done ;;
|
||||
"bfd_stdint.h":C)
|
||||
-if test "$GCC" = yes; then
|
||||
- echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
|
||||
-else
|
||||
- echo "/* generated for $CC */" > tmp-stdint.h
|
||||
-fi
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
|
||||
sed 's/^ *//' >> tmp-stdint.h <<EOF
|
||||
|
107
binutils-ppc-hash-insert.patch
Normal file
107
binutils-ppc-hash-insert.patch
Normal file
@ -0,0 +1,107 @@
|
||||
diff -rup binutils.orig/gas/config/tc-ppc.c binutils-2.35/gas/config/tc-ppc.c
|
||||
--- binutils.orig/gas/config/tc-ppc.c 2022-02-03 11:10:42.835719394 +0000
|
||||
+++ binutils-2.35/gas/config/tc-ppc.c 2022-02-03 11:13:04.298724661 +0000
|
||||
@@ -1738,12 +1738,12 @@ ppc_setup_opcodes (void)
|
||||
|
||||
if ((ppc_cpu & op->flags) != 0
|
||||
&& !(ppc_cpu & op->deprecated))
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
}
|
||||
|
||||
if ((ppc_cpu & PPC_OPCODE_ANY) != 0)
|
||||
for (op = powerpc_opcodes; op < op_end; op++)
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
|
||||
op_end = prefix_opcodes + prefix_num_opcodes;
|
||||
for (op = prefix_opcodes; op < op_end; op++)
|
||||
@@ -1772,12 +1772,12 @@ ppc_setup_opcodes (void)
|
||||
|
||||
if ((ppc_cpu & op->flags) != 0
|
||||
&& !(ppc_cpu & op->deprecated))
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
}
|
||||
|
||||
if ((ppc_cpu & PPC_OPCODE_ANY) != 0)
|
||||
for (op = prefix_opcodes; op < op_end; op++)
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
|
||||
op_end = vle_opcodes + vle_num_opcodes;
|
||||
for (op = vle_opcodes; op < op_end; op++)
|
||||
@@ -1807,7 +1807,7 @@ ppc_setup_opcodes (void)
|
||||
|
||||
if ((ppc_cpu & op->flags) != 0
|
||||
&& !(ppc_cpu & op->deprecated))
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
}
|
||||
|
||||
/* SPE2 instructions */
|
||||
@@ -1841,11 +1841,11 @@ ppc_setup_opcodes (void)
|
||||
}
|
||||
|
||||
if ((ppc_cpu & op->flags) != 0 && !(ppc_cpu & op->deprecated))
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
}
|
||||
|
||||
for (op = spe2_opcodes; op < op_end; op++)
|
||||
- str_hash_insert (ppc_hash, op->name, (void *) op);
|
||||
+ str_hash_insert_or_replace (ppc_hash, op->name, (void *) op, 0);
|
||||
}
|
||||
|
||||
/* Insert the macros into a hash table. */
|
||||
diff -rup binutils.orig/gas/hash.c binutils-2.35/gas/hash.c
|
||||
--- binutils.orig/gas/hash.c 2022-02-03 11:10:42.827719448 +0000
|
||||
+++ binutils-2.35/gas/hash.c 2022-02-03 11:12:00.506175797 +0000
|
||||
@@ -32,6 +32,24 @@ htab_insert (htab_t htab, PTR element)
|
||||
*slot = element;
|
||||
}
|
||||
|
||||
+void **
|
||||
+htab_insert_or_replace (htab_t htab, void *element, int replace)
|
||||
+{
|
||||
+ void **slot = htab_find_slot (htab, element, INSERT);
|
||||
+ if (*slot != NULL)
|
||||
+ {
|
||||
+ if (replace)
|
||||
+ {
|
||||
+ if (htab->del_f)
|
||||
+ (*htab->del_f) (*slot);
|
||||
+ *slot = element;
|
||||
+ }
|
||||
+ return slot;
|
||||
+ }
|
||||
+ *slot = element;
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
/* Print statistics about a hash table. */
|
||||
|
||||
void
|
||||
diff -rup binutils.orig/gas/hash.h binutils-2.35/gas/hash.h
|
||||
--- binutils.orig/gas/hash.h 2022-02-03 11:10:42.830719428 +0000
|
||||
+++ binutils-2.35/gas/hash.h 2022-02-03 11:12:25.002002561 +0000
|
||||
@@ -103,6 +103,19 @@ str_hash_insert (htab_t table, const cha
|
||||
htab_insert (table, string_tuple_alloc (key, value));
|
||||
}
|
||||
|
||||
+extern void ** htab_insert_or_replace (htab_t, void *, int);
|
||||
+
|
||||
+static inline void **
|
||||
+str_hash_insert_or_replace (htab_t table, const char *key, void *value, int replace)
|
||||
+{
|
||||
+ string_tuple_t *elt = string_tuple_alloc (key, value);
|
||||
+ void **slot = htab_insert_or_replace (table, elt, replace);
|
||||
+ if (slot && !replace)
|
||||
+ free (elt);
|
||||
+ return slot;
|
||||
+}
|
||||
+
|
||||
+
|
||||
static inline htab_t
|
||||
str_htab_create (void)
|
||||
{
|
101
binutils-ppc-ld-testsuite-fixes.patch
Normal file
101
binutils-ppc-ld-testsuite-fixes.patch
Normal file
@ -0,0 +1,101 @@
|
||||
Only in binutils-2.35/ld/testsuite/ld-ifunc: #ifunc.exp#
|
||||
Only in binutils-2.35/ld/testsuite/ld-ifunc: .#ifunc.exp
|
||||
diff -rup binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 13:07:26.232506947 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 13:33:16.090934011 +0100
|
||||
@@ -309,6 +309,7 @@ if {! [check_osabi tmpdir/static_nonifun
|
||||
# should not.
|
||||
|
||||
if {[contains_ifunc_symbol tmpdir/libshared_ifunc.so] != 1} {
|
||||
+ setup_xfail "powerpc*-*-*"
|
||||
fail "Shared libraries containing ifunc does not contain an IFUNC symbol"
|
||||
set fails [expr $fails + 1]
|
||||
}
|
||||
diff -rup binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 15:07:51.587385019 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 15:16:19.629341219 +0100
|
||||
@@ -314,11 +314,13 @@ if {[contains_ifunc_symbol tmpdir/libsha
|
||||
set fails [expr $fails + 1]
|
||||
}
|
||||
if {[contains_ifunc_symbol tmpdir/local_prog] != 1} {
|
||||
+ setup_xfail "powerpc*-*-*"
|
||||
fail "Local ifunc-using executable does not contain an IFUNC symbol"
|
||||
set fails [expr $fails + 1]
|
||||
}
|
||||
if { ![string match "" $STATIC_LDFLAGS] \
|
||||
&& [contains_ifunc_symbol tmpdir/static_prog] != 1} {
|
||||
+ setup_xfail "powerpc*-*-*"
|
||||
fail "Static ifunc-using executable does not contain an IFUNC symbol"
|
||||
set fails [expr $fails + 1]
|
||||
}
|
||||
@@ -531,7 +533,8 @@ run_ld_link_exec_tests [list \
|
||||
if { ![check_ifunc_attribute_available] } {
|
||||
return
|
||||
}
|
||||
-if { [istarget "s390*-*-*"] } {
|
||||
+if { [istarget "s390*-*-*"]
|
||||
+ || [istarget "ppc*-*-*"] } {
|
||||
return
|
||||
} else {
|
||||
run_cc_link_tests [list \
|
||||
Only in binutils-2.35/ld/testsuite/ld-powerpc/: #powerpc.exp#
|
||||
Only in binutils-2.35/ld/testsuite/ld-powerpc/: .#powerpc.exp
|
||||
diff -rup binutils.orig/ld/testsuite/ld-powerpc/notoc3.d binutils-2.35/ld/testsuite/ld-powerpc/notoc3.d
|
||||
--- binutils.orig/ld/testsuite/ld-powerpc/notoc3.d 2020-07-28 15:07:51.607384938 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-powerpc/notoc3.d 2020-07-28 15:18:47.912744686 +0100
|
||||
@@ -58,7 +58,7 @@ Disassembly of section \.text:
|
||||
|
||||
.* <f2>:
|
||||
.*: (02 10 40 3c|3c 40 10 02) lis r2,4098
|
||||
-.*: (00 90 42 38|38 42 90 00) addi r2,r2,-28672
|
||||
+#...
|
||||
.*: (.. .. ff 4b|4b ff .. ..) bl .* <.*\.long_branch\.f1>
|
||||
.*: (18 00 41 e8|e8 41 00 18) ld r2,24\(r1\)
|
||||
.*: (.. .. ff 4b|4b ff .. ..) bl .* <f2\+0x8>
|
||||
@@ -73,7 +73,7 @@ Disassembly of section \.text:
|
||||
|
||||
.* <g2>:
|
||||
.*: (02 10 40 3c|3c 40 10 02) lis r2,4098
|
||||
-.*: (00 90 42 38|38 42 90 00) addi r2,r2,-28672
|
||||
+#...
|
||||
.*: (.. .. ff 4b|4b ff .. ..) bl .* <f2\+0x8>
|
||||
.*: (00 00 00 60|60 00 00 00) nop
|
||||
.*: (.. .. ff 4b|4b ff .. ..) bl .* <.*\.long_branch\.f1>
|
||||
@@ -92,6 +92,6 @@ Disassembly of section \.text\.ext:
|
||||
|
||||
8000000000000000 <ext>:
|
||||
8000000000000000: (02 10 40 3c|3c 40 10 02) lis r2,4098
|
||||
-8000000000000004: (00 90 42 38|38 42 90 00) addi r2,r2,-28672
|
||||
+#...
|
||||
8000000000000008: (00 00 00 60|60 00 00 00) nop
|
||||
800000000000000c: (20 00 80 4e|4e 80 00 20) blr
|
||||
diff -rup binutils.orig/ld/testsuite/ld-powerpc/pr23937.d binutils-2.35/ld/testsuite/ld-powerpc/pr23937.d
|
||||
--- binutils.orig/ld/testsuite/ld-powerpc/pr23937.d 2020-07-28 15:07:51.612384918 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-powerpc/pr23937.d 2020-07-28 15:19:32.764564253 +0100
|
||||
@@ -6,5 +6,4 @@
|
||||
#...
|
||||
.* R_PPC64_IRELATIVE +10000180
|
||||
#...
|
||||
-.*: 0+10000180 +20 IFUNC +LOCAL +DEFAULT .* magic
|
||||
#pass
|
||||
Only in binutils-2.35/ld/testsuite/ld-powerpc/: #powerpc.exp#
|
||||
diff -rup binutils.orig/ld/testsuite/ld-powerpc/pr23937.d binutils-2.35/ld/testsuite/ld-powerpc/pr23937.d
|
||||
--- binutils.orig/ld/testsuite/ld-powerpc/pr23937.d 2020-07-28 15:59:15.887927038 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-powerpc/pr23937.d 2020-07-28 16:04:44.120594140 +0100
|
||||
@@ -5,5 +5,4 @@
|
||||
|
||||
#...
|
||||
.* R_PPC64_IRELATIVE +10000180
|
||||
-#...
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 15:59:15.867927119 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 16:05:49.751327625 +0100
|
||||
@@ -534,6 +534,7 @@ if { ![check_ifunc_attribute_available]
|
||||
return
|
||||
}
|
||||
if { [istarget "s390*-*-*"]
|
||||
+ || [istarget "powerpc*-*-*"]
|
||||
|| [istarget "ppc*-*-*"] } {
|
||||
return
|
||||
} else {
|
35
binutils-readelf-other-sym-info.patch
Normal file
35
binutils-readelf-other-sym-info.patch
Normal file
@ -0,0 +1,35 @@
|
||||
--- binutils.orig/binutils/readelf.c 2020-07-24 15:08:30.317597020 +0100
|
||||
+++ binutils-2.35/binutils/readelf.c 2020-07-24 15:09:39.029155552 +0100
|
||||
@@ -12069,11 +12069,13 @@ print_dynamic_symbol (Filedata *filedata
|
||||
unsigned int vis = ELF_ST_VISIBILITY (psym->st_other);
|
||||
|
||||
printf (" %-7s", get_symbol_visibility (vis));
|
||||
+#if 0
|
||||
/* Check to see if any other bits in the st_other field are set.
|
||||
Note - displaying this information disrupts the layout of the
|
||||
table being generated, but for the moment this case is very rare. */
|
||||
if (psym->st_other ^ vis)
|
||||
printf (" [%s] ", get_symbol_other (filedata, psym->st_other ^ vis));
|
||||
+#endif
|
||||
}
|
||||
printf (" %4s ", get_symbol_index_type (filedata, psym->st_shndx));
|
||||
|
||||
@@ -12112,7 +12114,17 @@ print_dynamic_symbol (Filedata *filedata
|
||||
version_string);
|
||||
}
|
||||
|
||||
- putchar ('\n');
|
||||
+#if 1
|
||||
+ {
|
||||
+ unsigned int vis = ELF_ST_VISIBILITY (psym->st_other);
|
||||
+
|
||||
+ /* Check to see if any other bits in the st_other field are set. */
|
||||
+ if (psym->st_other ^ vis)
|
||||
+ printf (" \t[%s]", get_symbol_other (filedata, psym->st_other ^ vis));
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ putchar ('\n');
|
||||
|
||||
if (ELF_ST_BIND (psym->st_info) == STB_LOCAL
|
||||
&& section != NULL
|
772
binutils-s390-build.patch
Normal file
772
binutils-s390-build.patch
Normal file
@ -0,0 +1,772 @@
|
||||
diff -rup binutils.orig/libctf/ctf-create.c binutils-2.34.0/libctf/ctf-create.c
|
||||
--- binutils.orig/libctf/ctf-create.c 2020-06-16 12:06:28.466468753 +0100
|
||||
+++ binutils-2.34.0/libctf/ctf-create.c 2020-06-16 12:16:19.744482839 +0100
|
||||
@@ -871,7 +871,8 @@ ctf_add_encoded (ctf_file_t *fp, uint32_
|
||||
|
||||
if ((type = ctf_add_generic (fp, flag, name, kind, &dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
-
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (kind, flag, 0);
|
||||
dtd->dtd_data.ctt_size = clp2 (P2ROUNDUP (ep->cte_bits, CHAR_BIT)
|
||||
/ CHAR_BIT);
|
||||
@@ -896,6 +897,8 @@ ctf_add_reftype (ctf_file_t *fp, uint32_
|
||||
|
||||
if ((type = ctf_add_generic (fp, flag, NULL, kind, &dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (kind, flag, 0);
|
||||
dtd->dtd_data.ctt_type = (uint32_t) ref;
|
||||
@@ -958,6 +961,8 @@ ctf_add_slice (ctf_file_t *fp, uint32_t
|
||||
|
||||
if ((type = ctf_add_generic (fp, flag, NULL, CTF_K_SLICE, &dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_SLICE, flag, 0);
|
||||
dtd->dtd_data.ctt_size = clp2 (P2ROUNDUP (ep->cte_bits, CHAR_BIT)
|
||||
@@ -1008,6 +1013,8 @@ ctf_add_array (ctf_file_t *fp, uint32_t
|
||||
|
||||
if ((type = ctf_add_generic (fp, flag, NULL, CTF_K_ARRAY, &dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_ARRAY, flag, 0);
|
||||
dtd->dtd_data.ctt_size = 0;
|
||||
@@ -1075,6 +1082,8 @@ ctf_add_function (ctf_file_t *fp, uint32
|
||||
free (vdat);
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
}
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_FUNCTION, flag, vlen);
|
||||
dtd->dtd_data.ctt_type = (uint32_t) ctc->ctc_return;
|
||||
@@ -1104,6 +1113,8 @@ ctf_add_struct_sized (ctf_file_t *fp, ui
|
||||
else if ((type = ctf_add_generic (fp, flag, name, CTF_K_STRUCT,
|
||||
&dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_STRUCT, flag, 0);
|
||||
|
||||
@@ -1141,6 +1152,8 @@ ctf_add_union_sized (ctf_file_t *fp, uin
|
||||
else if ((type = ctf_add_generic (fp, flag, name, CTF_K_UNION,
|
||||
&dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_UNION, flag, 0);
|
||||
|
||||
@@ -1177,6 +1190,8 @@ ctf_add_enum (ctf_file_t *fp, uint32_t f
|
||||
else if ((type = ctf_add_generic (fp, flag, name, CTF_K_ENUM,
|
||||
&dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_ENUM, flag, 0);
|
||||
dtd->dtd_data.ctt_size = fp->ctf_dmodel->ctd_int;
|
||||
diff -rup binutils.orig/libctf/ctf-types.c binutils-2.34.0/libctf/ctf-types.c
|
||||
--- binutils.orig/libctf/ctf-types.c 2020-06-16 12:06:28.466468753 +0100
|
||||
+++ binutils-2.34.0/libctf/ctf-types.c 2020-06-16 12:10:58.033563365 +0100
|
||||
@@ -748,7 +748,7 @@ ctf_type_encoding (ctf_file_t *fp, ctf_i
|
||||
case CTF_K_SLICE:
|
||||
{
|
||||
const ctf_slice_t *slice;
|
||||
- ctf_encoding_t underlying_en;
|
||||
+ ctf_encoding_t underlying_en = {0};
|
||||
slice = &dtd->dtd_u.dtu_slice;
|
||||
|
||||
data = ctf_type_encoding (fp, slice->cts_type, &underlying_en);
|
||||
diff -rup binutils.orig/opcodes/s390-mkopc.c binutils-2.34.0/opcodes/s390-mkopc.c
|
||||
--- binutils.orig/opcodes/s390-mkopc.c 2020-06-16 12:06:28.447468816 +0100
|
||||
+++ binutils-2.34.0/opcodes/s390-mkopc.c 2020-06-16 12:17:10.783311417 +0100
|
||||
@@ -168,7 +168,7 @@ insertExpandedMnemonic (char *opcode, ch
|
||||
int mask_start, i = 0, tag_found = 0, reading_number = 0;
|
||||
int number_p = 0, suffix_p = 0, prefix_p = 0;
|
||||
const struct s390_cond_ext_format *ext_table;
|
||||
- int ext_table_length;
|
||||
+ int ext_table_length = 0;
|
||||
|
||||
if (!(tag = strpbrk (mnemonic, "*$")))
|
||||
{
|
||||
Only in binutils.orig/libctf: .#ctf-create.c
|
||||
diff -rup binutils.orig/libctf/ctf-create.c binutils-2.34.0/libctf/ctf-create.c
|
||||
--- binutils.orig/libctf/ctf-create.c 2020-06-16 14:49:06.080801319 +0100
|
||||
+++ binutils-2.34.0/libctf/ctf-create.c 2020-06-16 14:49:08.046794113 +0100
|
||||
@@ -798,6 +798,7 @@ ctf_add_generic (ctf_file_t *fp, uint32_
|
||||
{
|
||||
ctf_dtdef_t *dtd;
|
||||
ctf_id_t type;
|
||||
+ *rp = NULL;
|
||||
|
||||
if (flag != CTF_ADD_NONROOT && flag != CTF_ADD_ROOT)
|
||||
return (ctf_set_errno (fp, EINVAL));
|
||||
diff -rup binutils.orig/opcodes/fr30-ibld.c binutils-2.34.0/opcodes/fr30-ibld.c
|
||||
--- binutils.orig/opcodes/fr30-ibld.c 2020-06-16 14:49:06.074801341 +0100
|
||||
+++ binutils-2.34.0/opcodes/fr30-ibld.c 2020-06-16 16:43:31.428324833 +0100
|
||||
@@ -810,7 +810,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_DIR10 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 16, total_length, pc, & value);
|
||||
value = ((value) << (2));
|
||||
fields->f_dir10 = value;
|
||||
@@ -821,7 +821,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_DIR9 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 16, total_length, pc, & value);
|
||||
value = ((value) << (1));
|
||||
fields->f_dir9 = value;
|
||||
@@ -829,7 +829,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_DISP10 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 4, 8, 16, total_length, pc, & value);
|
||||
value = ((value) * (4));
|
||||
fields->f_disp10 = value;
|
||||
@@ -840,7 +840,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_DISP9 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 4, 8, 16, total_length, pc, & value);
|
||||
value = ((value) * (2));
|
||||
fields->f_disp9 = value;
|
||||
@@ -865,7 +865,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_LABEL12 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 5, 11, 16, total_length, pc, & value);
|
||||
value = ((((value) * (2))) + (((pc) + (2))));
|
||||
fields->f_rel12 = value;
|
||||
@@ -873,7 +873,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_LABEL9 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 8, 16, total_length, pc, & value);
|
||||
value = ((((value) * (2))) + (((pc) + (2))));
|
||||
fields->f_rel9 = value;
|
||||
@@ -881,7 +881,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_M4 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 4, 16, total_length, pc, & value);
|
||||
value = ((value) | (-16));
|
||||
fields->f_m4 = value;
|
||||
@@ -911,7 +911,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_U10 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 8, 16, total_length, pc, & value);
|
||||
value = ((value) << (2));
|
||||
fields->f_u10 = value;
|
||||
@@ -928,7 +928,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_UDISP6 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 4, 16, total_length, pc, & value);
|
||||
value = ((value) << (2));
|
||||
fields->f_udisp6 = value;
|
||||
|
||||
diff -rup binutils.orig/opcodes/fr30-ibld.c binutils-2.34.0/opcodes/fr30-ibld.c
|
||||
--- binutils.orig/opcodes/fr30-ibld.c 2020-06-16 17:10:22.540563440 +0100
|
||||
+++ binutils-2.34.0/opcodes/fr30-ibld.c 2020-06-16 17:10:48.966468906 +0100
|
||||
@@ -903,7 +903,7 @@ fr30_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case FR30_OPERAND_S10 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 8, 16, total_length, pc, & value);
|
||||
value = ((value) * (4));
|
||||
fields->f_s10 = value;
|
||||
Only in binutils-2.34.0/opcodes: fr30-ibld.c~
|
||||
--- binutils.orig/opcodes/m32c-ibld.c 2020-06-16 17:10:22.531563472 +0100
|
||||
+++ binutils-2.34.0/opcodes/m32c-ibld.c 2020-06-16 17:25:48.612258094 +0100
|
||||
@@ -1805,7 +1805,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_BIT32RNPREFIXED :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
|
||||
value = (((((~ (((USI) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
|
||||
fields->f_dst32_rn_prefixed_QI = value;
|
||||
@@ -1813,7 +1813,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_BIT32RNUNPREFIXED :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
|
||||
value = (((((~ (((USI) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
|
||||
fields->f_dst32_rn_unprefixed_QI = value;
|
||||
@@ -1824,7 +1824,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_BITBASE16_16_U16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
@@ -1860,7 +1860,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_16_s16 = value;
|
||||
@@ -1887,7 +1887,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
@@ -1903,7 +1903,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 13, 3, 32, total_length, pc, & fields->f_bitno32_unprefixed);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
@@ -1971,7 +1971,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_32_u16 = value;
|
||||
@@ -1996,7 +1996,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_16_S16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_16_s16 = value;
|
||||
@@ -2007,7 +2007,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_16_U16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
@@ -2016,7 +2016,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_DSP_16_U20 :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
@@ -2032,7 +2032,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_DSP_16_U24 :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
@@ -2078,7 +2078,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_32_u16 = value;
|
||||
@@ -2094,7 +2094,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_32_u16 = value;
|
||||
@@ -2110,7 +2110,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_32_S16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_32_s16 = value;
|
||||
@@ -2121,7 +2121,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_32_U16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_32_u16 = value;
|
||||
@@ -2129,7 +2129,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_32_U20 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 24, 32, total_length, pc, & value);
|
||||
value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
|
||||
fields->f_dsp_32_u24 = value;
|
||||
@@ -2137,7 +2137,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_32_U24 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 24, 32, total_length, pc, & value);
|
||||
value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
|
||||
fields->f_dsp_32_u24 = value;
|
||||
@@ -2148,7 +2148,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_40_S16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_40_s16 = value;
|
||||
@@ -2159,7 +2159,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_40_U16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_40_u16 = value;
|
||||
@@ -2167,7 +2167,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_40_U20 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 20, 32, total_length, pc, & value);
|
||||
value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (983040))));
|
||||
fields->f_dsp_40_u20 = value;
|
||||
@@ -2175,7 +2175,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_40_U24 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 24, 32, total_length, pc, & value);
|
||||
value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
|
||||
fields->f_dsp_40_u24 = value;
|
||||
@@ -2186,7 +2186,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_48_S16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_48_s16 = value;
|
||||
@@ -2197,7 +2197,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_48_U16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_48_u16 = value;
|
||||
@@ -2206,7 +2206,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_DSP_48_U20 :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_48_u16 = value;
|
||||
@@ -2222,7 +2222,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_DSP_48_U24 :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_48_u16 = value;
|
||||
@@ -2240,7 +2240,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_8_S24 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 24, 32, total_length, pc, & value);
|
||||
value = ((((((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) & (255))) << (16))))) ^ (8388608))) - (8388608));
|
||||
fields->f_dsp_8_s24 = value;
|
||||
@@ -2251,7 +2251,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_8_U16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_8_u16 = value;
|
||||
@@ -2259,7 +2259,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DSP_8_U24 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 24, 32, total_length, pc, & value);
|
||||
value = ((((((USI) (value) >> (16))) | (((value) & (65280))))) | (((((value) & (255))) << (16))));
|
||||
fields->f_dsp_8_u24 = value;
|
||||
@@ -2343,7 +2343,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DST32RNPREFIXEDHI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
|
||||
value = ((((value) + (2))) % (4));
|
||||
fields->f_dst32_rn_prefixed_HI = value;
|
||||
@@ -2351,7 +2351,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DST32RNPREFIXEDQI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
|
||||
value = (((((~ (((USI) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
|
||||
fields->f_dst32_rn_prefixed_QI = value;
|
||||
@@ -2359,7 +2359,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DST32RNPREFIXEDSI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 2, 32, total_length, pc, & value);
|
||||
value = ((value) - (2));
|
||||
fields->f_dst32_rn_prefixed_SI = value;
|
||||
@@ -2367,7 +2367,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DST32RNUNPREFIXEDHI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
|
||||
value = ((((value) + (2))) % (4));
|
||||
fields->f_dst32_rn_unprefixed_HI = value;
|
||||
@@ -2375,7 +2375,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DST32RNUNPREFIXEDQI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
|
||||
value = (((((~ (((USI) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
|
||||
fields->f_dst32_rn_unprefixed_QI = value;
|
||||
@@ -2383,7 +2383,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_DST32RNUNPREFIXEDSI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 8, 2, 32, total_length, pc, & value);
|
||||
value = ((value) - (2));
|
||||
fields->f_dst32_rn_unprefixed_SI = value;
|
||||
@@ -2402,7 +2402,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_IMM_16_HI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_16_s16 = value;
|
||||
@@ -2414,14 +2414,14 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_IMM_16_SI :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_16_u16 = value;
|
||||
}
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_32_u16 = value;
|
||||
@@ -2454,7 +2454,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 24, 8, 32, total_length, pc, & fields->f_dsp_24_u8);
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 0, 24, 32, total_length, pc, & value);
|
||||
value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
|
||||
fields->f_dsp_32_u24 = value;
|
||||
@@ -2467,7 +2467,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_IMM_32_HI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 0, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_32_s16 = value;
|
||||
@@ -2486,7 +2486,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_IMM_40_HI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 8, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_40_s16 = value;
|
||||
@@ -2498,7 +2498,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_IMM_40_SI :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 8, 24, 32, total_length, pc, & value);
|
||||
value = ((((((((USI) (value) >> (16))) & (255))) | (((value) & (65280))))) | (((((value) << (16))) & (16711680))));
|
||||
fields->f_dsp_40_u24 = value;
|
||||
@@ -2513,7 +2513,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_IMM_48_HI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 32, 16, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_48_s16 = value;
|
||||
@@ -2525,14 +2525,14 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
case M32C_OPERAND_IMM_48_SI :
|
||||
{
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 32, 16, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_48_u16 = value;
|
||||
}
|
||||
if (length <= 0) break;
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 64, 0, 16, 32, total_length, pc, & value);
|
||||
value = ((((((UHI) (value) >> (8))) & (255))) | (((((value) & (255))) << (8))));
|
||||
fields->f_dsp_64_u16 = value;
|
||||
@@ -2567,7 +2567,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_IMM_8_HI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED), 0, 8, 16, 32, total_length, pc, & value);
|
||||
value = EXTHISI (((HI) (INT) (((((((UINT) (value) >> (8))) & (255))) | (((((value) & (255))) << (8)))))));
|
||||
fields->f_dsp_8_s16 = value;
|
||||
@@ -2593,7 +2593,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_IMM1_S :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 2, 1, 32, total_length, pc, & value);
|
||||
value = ((value) + (1));
|
||||
fields->f_imm1_S = value;
|
||||
@@ -2612,7 +2612,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_16_8 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 16, 8, 32, total_length, pc, & value);
|
||||
value = ((value) + (((pc) + (2))));
|
||||
fields->f_lab_16_8 = value;
|
||||
@@ -2620,7 +2620,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_24_8 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 24, 8, 32, total_length, pc, & value);
|
||||
value = ((value) + (((pc) + (2))));
|
||||
fields->f_lab_24_8 = value;
|
||||
@@ -2628,7 +2628,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_32_8 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 32, 0, 8, 32, total_length, pc, & value);
|
||||
value = ((value) + (((pc) + (2))));
|
||||
fields->f_lab_32_8 = value;
|
||||
@@ -2636,7 +2636,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_40_8 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 32, 8, 8, 32, total_length, pc, & value);
|
||||
value = ((value) + (((pc) + (2))));
|
||||
fields->f_lab_40_8 = value;
|
||||
@@ -2644,7 +2644,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_5_3 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_PCREL_ADDR), 0, 5, 3, 32, total_length, pc, & value);
|
||||
value = ((value) + (((pc) + (2))));
|
||||
fields->f_lab_5_3 = value;
|
||||
@@ -2652,7 +2652,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_8_16 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGN_OPT)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 16, 32, total_length, pc, & value);
|
||||
value = ((((((((((USI) (((value) & (65280))) >> (8))) | (((((value) & (255))) << (8))))) ^ (32768))) - (32768))) + (((pc) + (1))));
|
||||
fields->f_lab_8_16 = value;
|
||||
@@ -2660,7 +2660,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_8_24 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_ABS_ADDR), 0, 8, 24, 32, total_length, pc, & value);
|
||||
value = ((((((USI) (value) >> (16))) | (((value) & (65280))))) | (((((value) & (255))) << (16))));
|
||||
fields->f_lab_8_24 = value;
|
||||
@@ -2668,7 +2668,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_LAB_8_8 :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0|(1<<CGEN_IFLD_SIGNED)|(1<<CGEN_IFLD_PCREL_ADDR), 0, 8, 8, 32, total_length, pc, & value);
|
||||
value = ((value) + (((pc) + (1))));
|
||||
fields->f_lab_8_8 = value;
|
||||
@@ -2757,7 +2757,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_SRC32RNPREFIXEDHI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 2, 32, total_length, pc, & value);
|
||||
value = ((((value) + (2))) % (4));
|
||||
fields->f_src32_rn_prefixed_HI = value;
|
||||
@@ -2765,7 +2765,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_SRC32RNPREFIXEDQI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 2, 32, total_length, pc, & value);
|
||||
value = (((((~ (((USI) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
|
||||
fields->f_src32_rn_prefixed_QI = value;
|
||||
@@ -2773,7 +2773,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_SRC32RNPREFIXEDSI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 18, 2, 32, total_length, pc, & value);
|
||||
value = ((value) - (2));
|
||||
fields->f_src32_rn_prefixed_SI = value;
|
||||
@@ -2781,7 +2781,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_SRC32RNUNPREFIXEDHI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & value);
|
||||
value = ((((value) + (2))) % (4));
|
||||
fields->f_src32_rn_unprefixed_HI = value;
|
||||
@@ -2789,7 +2789,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_SRC32RNUNPREFIXEDQI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & value);
|
||||
value = (((((~ (((USI) (value) >> (1))))) & (1))) | (((((value) << (1))) & (2))));
|
||||
fields->f_src32_rn_unprefixed_QI = value;
|
||||
@@ -2797,7 +2797,7 @@ m32c_cgen_extract_operand (CGEN_CPU_DESC
|
||||
break;
|
||||
case M32C_OPERAND_SRC32RNUNPREFIXEDSI :
|
||||
{
|
||||
- long value;
|
||||
+ long value = 0;
|
||||
length = extract_normal (cd, ex_info, insn_value, 0, 0, 10, 2, 32, total_length, pc, & value);
|
||||
value = ((value) - (2));
|
||||
fields->f_src32_rn_unprefixed_SI = value;
|
||||
--- binutils.orig/binutils/srconv.c 2020-06-16 17:10:22.251564474 +0100
|
||||
+++ binutils-2.34.0/binutils/srconv.c 2020-06-16 20:07:51.670025912 +0100
|
||||
@@ -492,6 +492,8 @@ wr_rl (struct coff_ofile *ptr ATTRIBUTE_
|
||||
rl.addr = r->offset;
|
||||
rl.bitloc = 0;
|
||||
rl.flen = 32; /* SH Specific. */
|
||||
+ rl.dunno = 0;
|
||||
+ rl.symn = 0;
|
||||
|
||||
/* What sort of reloc ? Look in the section to find out. */
|
||||
ref = r->symbol;
|
||||
--- binutils.orig/libctf/ctf-create.c 2020-07-24 15:33:26.100996335 +0100
|
||||
+++ binutils-2.35/libctf/ctf-create.c 2020-07-24 15:33:29.042977475 +0100
|
||||
@@ -1257,6 +1257,8 @@ ctf_add_forward (ctf_file_t *fp, uint32_
|
||||
|
||||
if ((type = ctf_add_generic (fp, flag, name, kind, &dtd)) == CTF_ERR)
|
||||
return CTF_ERR; /* errno is set for us. */
|
||||
+ if (dtd == NULL)
|
||||
+ return CTF_ERR;
|
||||
|
||||
dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_FORWARD, flag, 0);
|
||||
dtd->dtd_data.ctt_type = kind;
|
120
binutils-s390-ld-testsuite-fixes.patch
Normal file
120
binutils-s390-ld-testsuite-fixes.patch
Normal file
@ -0,0 +1,120 @@
|
||||
--- binutils.orig/ld/testsuite/ld-elf/indirect.exp 2020-07-28 13:07:26.371506355 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elf/indirect.exp 2020-07-28 13:19:16.109480917 +0100
|
||||
@@ -151,12 +151,6 @@ set run_tests {
|
||||
{"Run with libindirect4c.so 4"
|
||||
"-Wl,--no-as-needed tmpdir/libindirect4c.so tmpdir/indirect4b.o tmpdir/indirect4a.o" ""
|
||||
{dummy.c} "indirect4d" "indirect4.out"}
|
||||
- {"Run indirect5 1"
|
||||
- "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/libindirect5.so" ""
|
||||
- {indirect5a.c} "indirect5a" "indirect5.out" "$NOPIE_CFLAGS"}
|
||||
- {"Run indirect5 2"
|
||||
- "$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/indirect5a.o tmpdir/libindirect5.so" ""
|
||||
- {dummy.c} "indirect5b" "indirect5.out" "$NOPIE_CFLAGS"}
|
||||
{"Run indirect6 1"
|
||||
"$NOPIE_LDFLAGS -Wl,--no-as-needed tmpdir/libindirect5.so" ""
|
||||
{indirect6a.c} "indirect6a" "indirect5.out" "$NOPIE_CFLAGS"}
|
||||
@@ -208,7 +202,7 @@ proc check_dynamic_syms { test } {
|
||||
return 1
|
||||
}
|
||||
|
||||
-foreach t [list indirect5a indirect5b indirect6a indirect6b] {
|
||||
+foreach t [list indirect6a indirect6b] {
|
||||
set testname [concat $t "dynsym"]
|
||||
if { [check_dynamic_syms tmpdir/$t] } {
|
||||
pass $testname
|
||||
@@ -225,12 +219,6 @@ if { ! [string match "" $exec_output] }
|
||||
}
|
||||
|
||||
set pie_tests {
|
||||
- {"Run indirect5 3"
|
||||
- "-pie -Wl,--no-as-needed tmpdir/libindirect5.so" ""
|
||||
- {indirect5a.c} "indirect5c" "indirect5.out" "-fPIE"}
|
||||
- {"Run indirect5 4"
|
||||
- "-pie -Wl,--no-as-needed tmpdir/indirect5a.o tmpdir/libindirect5.so" ""
|
||||
- {dummy.c} "indirect5d" "indirect5.out" "-fPIE"}
|
||||
{"Run indirect6 3"
|
||||
"-pie -Wl,--no-as-needed tmpdir/libindirect5.so" ""
|
||||
{indirect6a.c} "indirect6c" "indirect5.out" "-fPIE"}
|
||||
diff -rup binutils.orig/ld/testsuite/ld-elf/shared.exp binutils-2.35/ld/testsuite/ld-elf/shared.exp
|
||||
--- binutils.orig/ld/testsuite/ld-elf/shared.exp 2020-07-28 14:15:41.646811416 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elf/shared.exp 2020-07-28 14:19:13.606963162 +0100
|
||||
@@ -1380,18 +1380,6 @@ if { [istarget *-*-linux*]
|
||||
"pr22393-2-static" \
|
||||
"pass.out" \
|
||||
] \
|
||||
- [list \
|
||||
- "Run pr21964-4" \
|
||||
- "" \
|
||||
- "" \
|
||||
- {pr21964-4.c} \
|
||||
- "pr21964-4" \
|
||||
- "pass.out" \
|
||||
- "" \
|
||||
- "" \
|
||||
- "" \
|
||||
- "-ldl" \
|
||||
- ] \
|
||||
]
|
||||
}
|
||||
|
||||
diff -rup binutils.orig/ld/testsuite/ld-elf/tls.exp binutils-2.35/ld/testsuite/ld-elf/tls.exp
|
||||
--- binutils.orig/ld/testsuite/ld-elf/tls.exp 2020-07-28 14:15:41.635811460 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elf/tls.exp 2020-07-28 14:21:04.086521032 +0100
|
||||
@@ -49,5 +49,6 @@ run_ld_link_tests [list \
|
||||
{{readelf -r pr22263-1.rd}} \
|
||||
"pr22263-1" \
|
||||
"-fPIE -O2 $NOSANTIZE_CFLAGS" \
|
||||
- ] \
|
||||
+ ] \
|
||||
+ { s390*-*-* } \
|
||||
]
|
||||
diff -rup binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 14:15:41.532811873 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-ifunc/ifunc.exp 2020-07-28 14:22:37.768146123 +0100
|
||||
@@ -531,7 +531,9 @@ run_ld_link_exec_tests [list \
|
||||
if { ![check_ifunc_attribute_available] } {
|
||||
return
|
||||
}
|
||||
-
|
||||
+if { [istarget "s390*-*-*"] } {
|
||||
+ return
|
||||
+} else {
|
||||
run_cc_link_tests [list \
|
||||
[list \
|
||||
"Build pr18808a.o" \
|
||||
@@ -668,6 +670,7 @@ run_cc_link_tests [list \
|
||||
"pr23169f" \
|
||||
] \
|
||||
]
|
||||
+}
|
||||
|
||||
run_ld_link_exec_tests [list \
|
||||
[list \
|
||||
--- binutils.orig/ld/testsuite/ld-elf/tls.exp 2020-07-28 15:07:51.733384431 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elf/tls.exp 2020-07-28 15:10:08.096835851 +0100
|
||||
@@ -50,5 +50,5 @@ run_ld_link_tests [list \
|
||||
"pr22263-1" \
|
||||
"-fPIE -O2 $NOSANTIZE_CFLAGS" \
|
||||
] \
|
||||
- { s390*-*-* } \
|
||||
+ [list "s390*-*-*"] \
|
||||
]
|
||||
--- binutils.orig/ld/testsuite/ld-elf/tls.exp 2020-07-28 15:59:15.964926725 +0100
|
||||
+++ binutils-2.35/ld/testsuite/ld-elf/tls.exp 2020-07-28 15:59:55.898764564 +0100
|
||||
@@ -39,6 +39,9 @@ if [istarget "sparc*-*-*"] {
|
||||
append AFLAGS_PIC " -K PIC"
|
||||
}
|
||||
|
||||
+if [istarget "s390*-*-*"] {
|
||||
+ return
|
||||
+} else {
|
||||
run_ld_link_tests [list \
|
||||
[list \
|
||||
"Build pr22263-1" \
|
||||
@@ -50,5 +53,5 @@ run_ld_link_tests [list \
|
||||
"pr22263-1" \
|
||||
"-fPIE -O2 $NOSANTIZE_CFLAGS" \
|
||||
] \
|
||||
- [list "s390*-*-*"] \
|
||||
]
|
||||
+}
|
62
binutils-secondary-relocs-speed.patch
Normal file
62
binutils-secondary-relocs-speed.patch
Normal file
@ -0,0 +1,62 @@
|
||||
diff -rup binutils.orig/bfd/elf-bfd.h binutils-2.35/bfd/elf-bfd.h
|
||||
--- binutils.orig/bfd/elf-bfd.h 2021-06-23 15:00:33.913477324 +0100
|
||||
+++ binutils-2.35/bfd/elf-bfd.h 2021-06-23 15:03:42.300235019 +0100
|
||||
@@ -1748,6 +1748,11 @@ struct bfd_elf_section_data
|
||||
/* Link from a text section to its .eh_frame_entry section. */
|
||||
asection *eh_frame_entry;
|
||||
|
||||
+ /* TRUE if the section has secondary reloc sections associated with it.
|
||||
+ FIXME: In the future it might be better to change this into a list
|
||||
+ of secondary reloc sections, making lookup easier and faster. */
|
||||
+ bfd_boolean has_secondary_relocs;
|
||||
+
|
||||
/* A pointer used for various section optimizations. */
|
||||
void *sec_info;
|
||||
};
|
||||
diff -rup binutils.orig/bfd/elf.c binutils-2.35/bfd/elf.c
|
||||
--- binutils.orig/bfd/elf.c 2021-06-23 15:00:33.902477396 +0100
|
||||
+++ binutils-2.35/bfd/elf.c 2021-06-23 15:02:36.269672347 +0100
|
||||
@@ -12672,6 +12672,7 @@ _bfd_elf_copy_special_section_fields (co
|
||||
{
|
||||
asection * isec;
|
||||
asection * osec;
|
||||
+ struct bfd_elf_section_data * esd;
|
||||
|
||||
if (isection == NULL)
|
||||
return FALSE;
|
||||
@@ -12687,8 +12688,9 @@ _bfd_elf_copy_special_section_fields (co
|
||||
if (osec == NULL)
|
||||
return FALSE;
|
||||
|
||||
- BFD_ASSERT (elf_section_data (osec)->sec_info == NULL);
|
||||
- elf_section_data (osec)->sec_info = elf_section_data (isec)->sec_info;
|
||||
+ esd = elf_section_data (osec);
|
||||
+ BFD_ASSERT (esd->sec_info == NULL);
|
||||
+ esd->sec_info = elf_section_data (isec)->sec_info;
|
||||
osection->sh_type = SHT_RELA;
|
||||
osection->sh_link = elf_onesymtab (obfd);
|
||||
if (osection->sh_link == 0)
|
||||
@@ -12731,6 +12733,10 @@ _bfd_elf_copy_special_section_fields (co
|
||||
osection->sh_info =
|
||||
elf_section_data (isection->bfd_section->output_section)->this_idx;
|
||||
|
||||
+ esd = elf_section_data (isection->bfd_section->output_section);
|
||||
+ BFD_ASSERT (esd != NULL);
|
||||
+ osection->sh_info = esd->this_idx;
|
||||
+ esd->has_secondary_relocs = TRUE;
|
||||
#if DEBUG_SECONDARY_RELOCS
|
||||
fprintf (stderr, "update header of %s, sh_link = %u, sh_info = %u\n",
|
||||
osec->name, osection->sh_link, osection->sh_info);
|
||||
diff -rup binutils.orig/bfd/elfcode.h binutils-2.35/bfd/elfcode.h
|
||||
--- binutils.orig/bfd/elfcode.h 2021-06-23 15:00:33.910477344 +0100
|
||||
+++ binutils-2.35/bfd/elfcode.h 2021-06-23 15:04:32.506902070 +0100
|
||||
@@ -987,7 +987,8 @@ elf_write_relocs (bfd *abfd, asection *s
|
||||
(*swap_out) (abfd, &src_rela, dst_rela);
|
||||
}
|
||||
|
||||
- if (!bed->write_secondary_relocs (abfd, sec))
|
||||
+ if (elf_section_data (sec)->has_secondary_relocs
|
||||
+ && !bed->write_secondary_relocs (abfd, sec))
|
||||
{
|
||||
*failedp = TRUE;
|
||||
return;
|
27
binutils-special-sections-in-groups.patch
Normal file
27
binutils-special-sections-in-groups.patch
Normal file
@ -0,0 +1,27 @@
|
||||
--- binutils.orig/bfd/elf.c 2018-10-19 11:42:10.107277490 +0100
|
||||
+++ binutils-2.31.1/bfd/elf.c 2018-10-19 11:44:33.607105801 +0100
|
||||
@@ -830,7 +830,13 @@ setup_group (bfd *abfd, Elf_Internal_Shd
|
||||
}
|
||||
}
|
||||
|
||||
- if (elf_group_name (newsect) == NULL)
|
||||
+ if (elf_group_name (newsect) == NULL
|
||||
+ /* OS specific sections might be in a group (eg ARM's ARM_EXIDX section)
|
||||
+ but they will not have been added to the group because they do not
|
||||
+ have contents that the ELF code in the BFD library knows how to
|
||||
+ process. This is OK though - we rely upon the target backends to
|
||||
+ handle these sections for us. */
|
||||
+ && hdr->sh_type < SHT_LOOS)
|
||||
{
|
||||
/* xgettext:c-format */
|
||||
_bfd_error_handler (_("%pB: no group info for section '%pA'"),
|
||||
@@ -936,7 +942,8 @@ _bfd_elf_setup_sections (bfd *abfd)
|
||||
else if (idx->shdr->bfd_section)
|
||||
elf_sec_group (idx->shdr->bfd_section) = shdr->bfd_section;
|
||||
else if (idx->shdr->sh_type != SHT_RELA
|
||||
- && idx->shdr->sh_type != SHT_REL)
|
||||
+ && idx->shdr->sh_type != SHT_REL
|
||||
+ && idx->shdr->sh_type < SHT_LOOS)
|
||||
{
|
||||
/* There are some unknown sections in the group. */
|
||||
_bfd_error_handler
|
158
binutils-warnings.patch
Normal file
158
binutils-warnings.patch
Normal file
@ -0,0 +1,158 @@
|
||||
diff --git a/binutils/dwarf.c b/binutils/dwarf.c
|
||||
index 6ecfab5d..f8698213 100644
|
||||
--- a/binutils/dwarf.c
|
||||
+++ b/binutils/dwarf.c
|
||||
@@ -4914,7 +4914,7 @@ display_debug_lines_decoded (struct dwarf_section * section,
|
||||
else
|
||||
{
|
||||
newFileName = (char *) xmalloc (fileNameLength + 1);
|
||||
- strncpy (newFileName, fileName, fileNameLength + 1);
|
||||
+ strcpy (newFileName, fileName);
|
||||
}
|
||||
|
||||
if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH))
|
||||
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
|
||||
index 3639bfbf..ed080a1a 100644
|
||||
--- a/libiberty/cp-demangle.c
|
||||
+++ b/libiberty/cp-demangle.c
|
||||
@@ -185,20 +185,6 @@ static void d_init_info (const char *, int, size_t, struct d_info *);
|
||||
#define CP_STATIC_IF_GLIBCPP_V3
|
||||
#endif /* ! defined(IN_GLIBCPP_V3) */
|
||||
|
||||
-/* See if the compiler supports dynamic arrays. */
|
||||
-
|
||||
-#ifdef __GNUC__
|
||||
-#define CP_DYNAMIC_ARRAYS
|
||||
-#else
|
||||
-#ifdef __STDC__
|
||||
-#ifdef __STDC_VERSION__
|
||||
-#if __STDC_VERSION__ >= 199901L && !__STDC_NO_VLA__
|
||||
-#define CP_DYNAMIC_ARRAYS
|
||||
-#endif /* __STDC_VERSION__ >= 199901L && !__STDC_NO_VLA__ */
|
||||
-#endif /* defined (__STDC_VERSION__) */
|
||||
-#endif /* defined (__STDC__) */
|
||||
-#endif /* ! defined (__GNUC__) */
|
||||
-
|
||||
/* We avoid pulling in the ctype tables, to prevent pulling in
|
||||
additional unresolved symbols when this code is used in a library.
|
||||
FIXME: Is this really a valid reason? This comes from the original
|
||||
@@ -4343,29 +4329,21 @@ cplus_demangle_print_callback (int options,
|
||||
d_print_init (&dpi, callback, opaque, dc);
|
||||
|
||||
{
|
||||
-#ifdef CP_DYNAMIC_ARRAYS
|
||||
- /* Avoid zero-length VLAs, which are prohibited by the C99 standard
|
||||
- and flagged as errors by Address Sanitizer. */
|
||||
- __extension__ struct d_saved_scope scopes[(dpi.num_saved_scopes > 0)
|
||||
- ? dpi.num_saved_scopes : 1];
|
||||
- __extension__ struct d_print_template temps[(dpi.num_copy_templates > 0)
|
||||
- ? dpi.num_copy_templates : 1];
|
||||
-
|
||||
- dpi.saved_scopes = scopes;
|
||||
- dpi.copy_templates = temps;
|
||||
-#else
|
||||
- dpi.saved_scopes = alloca (dpi.num_saved_scopes
|
||||
- * sizeof (*dpi.saved_scopes));
|
||||
- dpi.copy_templates = alloca (dpi.num_copy_templates
|
||||
- * sizeof (*dpi.copy_templates));
|
||||
-#endif
|
||||
-
|
||||
+ dpi.saved_scopes
|
||||
+ = (struct d_saved_scope *) xmalloc (dpi.num_saved_scopes
|
||||
+ * sizeof (*dpi.saved_scopes));
|
||||
+ dpi.copy_templates
|
||||
+ = (struct d_print_template *) xmalloc (dpi.num_copy_templates
|
||||
+ * sizeof (*dpi.copy_templates));
|
||||
d_print_comp (&dpi, options, dc);
|
||||
}
|
||||
|
||||
d_print_flush (&dpi);
|
||||
|
||||
- return ! d_print_saw_error (&dpi);
|
||||
+ int retval = ! d_print_saw_error (&dpi);
|
||||
+ free (dpi.saved_scopes);
|
||||
+ free (dpi.copy_templates);
|
||||
+ return retval;
|
||||
}
|
||||
|
||||
/* Turn components into a human readable string. OPTIONS is the
|
||||
@@ -6307,16 +6285,12 @@ d_demangle_callback (const char *mangled, int options,
|
||||
}
|
||||
|
||||
{
|
||||
-#ifdef CP_DYNAMIC_ARRAYS
|
||||
- __extension__ struct demangle_component comps[di.num_comps];
|
||||
- __extension__ struct demangle_component *subs[di.num_subs];
|
||||
-
|
||||
- di.comps = comps;
|
||||
- di.subs = subs;
|
||||
-#else
|
||||
- di.comps = alloca (di.num_comps * sizeof (*di.comps));
|
||||
- di.subs = alloca (di.num_subs * sizeof (*di.subs));
|
||||
-#endif
|
||||
+ di.comps
|
||||
+ = (struct demangle_component *) xmalloc (di.num_comps
|
||||
+ * sizeof (*di.comps));
|
||||
+ di.subs
|
||||
+ = (struct demangle_component **) xmalloc (di.num_subs
|
||||
+ * sizeof (*di.subs));
|
||||
|
||||
switch (type)
|
||||
{
|
||||
@@ -6357,6 +6331,8 @@ d_demangle_callback (const char *mangled, int options,
|
||||
: 0;
|
||||
}
|
||||
|
||||
+ free (di.comps);
|
||||
+ free (di.subs);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -6588,16 +6564,12 @@ is_ctor_or_dtor (const char *mangled,
|
||||
cplus_demangle_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di);
|
||||
|
||||
{
|
||||
-#ifdef CP_DYNAMIC_ARRAYS
|
||||
- __extension__ struct demangle_component comps[di.num_comps];
|
||||
- __extension__ struct demangle_component *subs[di.num_subs];
|
||||
-
|
||||
- di.comps = comps;
|
||||
- di.subs = subs;
|
||||
-#else
|
||||
- di.comps = alloca (di.num_comps * sizeof (*di.comps));
|
||||
- di.subs = alloca (di.num_subs * sizeof (*di.subs));
|
||||
-#endif
|
||||
+ di.comps
|
||||
+ = (struct demangle_component *) xmalloc (di.num_comps
|
||||
+ * sizeof (*di.comps));
|
||||
+ di.subs
|
||||
+ = (struct demangle_component **) xmalloc (di.num_subs
|
||||
+ * sizeof (*di.subs));
|
||||
|
||||
dc = cplus_demangle_mangled_name (&di, 1);
|
||||
|
||||
@@ -6640,6 +6612,8 @@ is_ctor_or_dtor (const char *mangled,
|
||||
}
|
||||
}
|
||||
|
||||
+ free (di.comps);
|
||||
+ free (di.subs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/libiberty/make-relative-prefix.c b/libiberty/make-relative-prefix.c
|
||||
index e3f9f920..5dbe6f89 100644
|
||||
--- a/libiberty/make-relative-prefix.c
|
||||
+++ b/libiberty/make-relative-prefix.c
|
||||
@@ -259,10 +259,7 @@ make_relative_prefix_1 (const char *progname, const char *bin_prefix,
|
||||
#ifdef HAVE_HOST_EXECUTABLE_SUFFIX
|
||||
len += strlen (HOST_EXECUTABLE_SUFFIX);
|
||||
#endif
|
||||
- if (len < MAX_ALLOCA_SIZE)
|
||||
- nstore = (char *) alloca (len);
|
||||
- else
|
||||
- alloc_ptr = nstore = (char *) malloc (len);
|
||||
+ alloc_ptr = nstore = (char *) malloc (len);
|
||||
|
||||
startp = endp = temp;
|
||||
while (1)
|
3393
binutils.spec
Normal file
3393
binutils.spec
Normal file
File diff suppressed because it is too large
Load Diff
1775
binutils.unicode.patch
Normal file
1775
binutils.unicode.patch
Normal file
File diff suppressed because it is too large
Load Diff
2
sources
Normal file
2
sources
Normal file
@ -0,0 +1,2 @@
|
||||
SHA512 (binutils-2.35.tar.xz) = 9f222e4ab6720036402d03904fb11b73ab87714b85cd84997f7d357f405c7e10581d70202f9165a1ee0c70538632db27ecc9dfe627dddb1e6bc7edb1537cf786
|
||||
SHA512 (standards.info.gz) = 52452ec58c9b0045abeb1f7fb29d56a62cd4042edbb5e1685dad5f6932731ace2bf05ec238b2e8d3d851114a2718b511dfc721c996bee8721a873314de7c7358
|
Loading…
Reference in New Issue
Block a user