Toshaan Bharvani
3 years ago
commit
991bb2200d
44 changed files with 10458 additions and 0 deletions
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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; |
@ -0,0 +1,145 @@ |
|||||||
|
--- 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; |
||||||
|
--- binutils.orig/binutils/readelf.c 2021-01-07 12:59:35.802994842 +0000 |
||||||
|
+++ binutils-2.35.1/binutils/readelf.c 2021-01-07 13:02:36.591754005 +0000 |
||||||
|
@@ -20818,7 +20818,8 @@ process_file (char * file_name) |
||||||
|
done: |
||||||
|
if (filedata) |
||||||
|
{ |
||||||
|
- fclose (filedata->handle); |
||||||
|
+ if (filedata->handle != NULL) |
||||||
|
+ fclose (filedata->handle); |
||||||
|
free (filedata->section_headers); |
||||||
|
free (filedata->program_headers); |
||||||
|
free (filedata->string_table); |
||||||
|
--- binutils.orig/binutils/readelf.c 2021-01-08 17:01:23.573093204 +0000 |
||||||
|
+++ binutils-2.35.1/binutils/readelf.c 2021-01-08 17:02:23.095677242 +0000 |
||||||
|
@@ -20787,7 +20787,6 @@ process_file (char * file_name) |
||||||
|
if (fread (armag, SARMAG, 1, filedata->handle) != 1) |
||||||
|
{ |
||||||
|
error (_("Failed to read file's magic number\n")); |
||||||
|
- fclose (filedata->handle); |
||||||
|
goto done; |
||||||
|
} |
||||||
|
|
@ -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 |
@ -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) |
||||||
|
{ |
@ -0,0 +1,53 @@ |
|||||||
|
diff -rup binutils.orig/bfd/elf.c binutils-2.35/bfd/elf.c |
||||||
|
--- binutils.orig/bfd/elf.c 2021-04-19 10:49:21.757290990 +0100 |
||||||
|
+++ binutils-2.35/bfd/elf.c 2021-04-19 10:50:28.309839285 +0100 |
||||||
|
@@ -12534,7 +12534,9 @@ _bfd_elf_slurp_secondary_reloc_section ( |
||||||
|
Elf_Internal_Shdr * hdr = & elf_section_data (relsec)->this_hdr; |
||||||
|
|
||||||
|
if (hdr->sh_type == SHT_SECONDARY_RELOC |
||||||
|
- && hdr->sh_info == (unsigned) elf_section_data (sec)->this_idx) |
||||||
|
+ && hdr->sh_info == (unsigned) elf_section_data (sec)->this_idx |
||||||
|
+ && (hdr->sh_entsize == ebd->s->sizeof_rel |
||||||
|
+ || hdr->sh_entsize == ebd->s->sizeof_rela)) |
||||||
|
{ |
||||||
|
bfd_byte * native_relocs; |
||||||
|
bfd_byte * native_reloc; |
||||||
|
diff -rup binutils.orig/bfd/elfcode.h binutils-2.35/bfd/elfcode.h |
||||||
|
--- binutils.orig/bfd/elfcode.h 2021-04-19 10:49:21.767290922 +0100 |
||||||
|
+++ binutils-2.35/bfd/elfcode.h 2021-04-19 10:52:22.196066303 +0100 |
||||||
|
@@ -568,7 +568,7 @@ elf_object_p (bfd *abfd) |
||||||
|
|
||||||
|
/* If this is a relocatable file and there is no section header |
||||||
|
table, then we're hosed. */ |
||||||
|
- if (i_ehdrp->e_shoff == 0 && i_ehdrp->e_type == ET_REL) |
||||||
|
+ if (i_ehdrp->e_shoff < sizeof (x_ehdr) && i_ehdrp->e_type == ET_REL) |
||||||
|
goto got_wrong_format_error; |
||||||
|
|
||||||
|
/* As a simple sanity check, verify that what BFD thinks is the |
||||||
|
@@ -578,7 +578,7 @@ elf_object_p (bfd *abfd) |
||||||
|
goto got_wrong_format_error; |
||||||
|
|
||||||
|
/* Further sanity check. */ |
||||||
|
- if (i_ehdrp->e_shoff == 0 && i_ehdrp->e_shnum != 0) |
||||||
|
+ if (i_ehdrp->e_shoff < sizeof (x_ehdr) && i_ehdrp->e_shnum != 0) |
||||||
|
goto got_wrong_format_error; |
||||||
|
|
||||||
|
ebd = get_elf_backend_data (abfd); |
||||||
|
@@ -615,7 +615,7 @@ elf_object_p (bfd *abfd) |
||||||
|
&& ebd->elf_osabi != ELFOSABI_NONE) |
||||||
|
goto got_wrong_format_error; |
||||||
|
|
||||||
|
- if (i_ehdrp->e_shoff != 0) |
||||||
|
+ if (i_ehdrp->e_shoff >= sizeof (x_ehdr)) |
||||||
|
{ |
||||||
|
file_ptr where = (file_ptr) i_ehdrp->e_shoff; |
||||||
|
|
||||||
|
@@ -807,7 +807,7 @@ elf_object_p (bfd *abfd) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
- if (i_ehdrp->e_shstrndx != 0 && i_ehdrp->e_shoff != 0) |
||||||
|
+ if (i_ehdrp->e_shstrndx != 0 && i_ehdrp->e_shoff >= sizeof (x_ehdr)) |
||||||
|
{ |
||||||
|
unsigned int num_sec; |
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,58 @@ |
|||||||
|
diff -rup binutils.orig/bfd/elf-bfd.h binutils-2.35.1/bfd/elf-bfd.h |
||||||
|
--- binutils.orig/bfd/elf-bfd.h 2021-03-12 12:20:04.495125388 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/elf-bfd.h 2021-03-12 12:21:25.696583280 +0000 |
||||||
|
@@ -1562,7 +1562,7 @@ struct elf_backend_data |
||||||
|
const char *, unsigned int); |
||||||
|
|
||||||
|
/* Called when after loading the normal relocs for a section. */ |
||||||
|
- bfd_boolean (*slurp_secondary_relocs) (bfd *, asection *, asymbol **); |
||||||
|
+ bfd_boolean (*slurp_secondary_relocs) (bfd *, asection *, asymbol **, bfd_boolean); |
||||||
|
|
||||||
|
/* Called after writing the normal relocs for a section. */ |
||||||
|
bfd_boolean (*write_secondary_relocs) (bfd *, asection *); |
||||||
|
@@ -2909,7 +2909,7 @@ extern bfd_boolean is_debuginfo_file (bf |
||||||
|
extern bfd_boolean _bfd_elf_init_secondary_reloc_section |
||||||
|
(bfd *, Elf_Internal_Shdr *, const char *, unsigned int); |
||||||
|
extern bfd_boolean _bfd_elf_slurp_secondary_reloc_section |
||||||
|
- (bfd *, asection *, asymbol **); |
||||||
|
+(bfd *, asection *, asymbol **, bfd_boolean); |
||||||
|
extern bfd_boolean _bfd_elf_copy_special_section_fields |
||||||
|
(const bfd *, bfd *, const Elf_Internal_Shdr *, Elf_Internal_Shdr *); |
||||||
|
extern bfd_boolean _bfd_elf_write_secondary_reloc_section |
||||||
|
diff -rup binutils.orig/bfd/elf.c binutils-2.35.1/bfd/elf.c |
||||||
|
--- binutils.orig/bfd/elf.c 2021-03-12 12:20:04.496125381 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/elf.c 2021-03-12 12:20:46.032848074 +0000 |
||||||
|
@@ -12513,7 +12513,8 @@ _bfd_elf_init_secondary_reloc_section (b |
||||||
|
bfd_boolean |
||||||
|
_bfd_elf_slurp_secondary_reloc_section (bfd * abfd, |
||||||
|
asection * sec, |
||||||
|
- asymbol ** symbols) |
||||||
|
+ asymbol ** symbols, |
||||||
|
+ bfd_boolean dynamic) |
||||||
|
{ |
||||||
|
const struct elf_backend_data * const ebd = get_elf_backend_data (abfd); |
||||||
|
asection * relsec; |
||||||
|
@@ -12590,7 +12591,10 @@ _bfd_elf_slurp_secondary_reloc_section ( |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
- symcount = bfd_get_symcount (abfd); |
||||||
|
+ if (dynamic) |
||||||
|
+ symcount = bfd_get_dynamic_symcount (abfd); |
||||||
|
+ else |
||||||
|
+ symcount = bfd_get_symcount (abfd); |
||||||
|
|
||||||
|
for (i = 0, internal_reloc = internal_relocs, |
||||||
|
native_reloc = native_relocs; |
||||||
|
diff -rup binutils.orig/bfd/elfcode.h binutils-2.35.1/bfd/elfcode.h |
||||||
|
--- binutils.orig/bfd/elfcode.h 2021-03-12 12:20:04.533125134 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/elfcode.h 2021-03-12 12:21:59.568357132 +0000 |
||||||
|
@@ -1591,7 +1591,7 @@ elf_slurp_reloc_table (bfd *abfd, |
||||||
|
symbols, dynamic)) |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
- if (!bed->slurp_secondary_relocs (abfd, asect, symbols)) |
||||||
|
+ if (!bed->slurp_secondary_relocs (abfd, asect, symbols, dynamic)) |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
asect->relocation = relents; |
@ -0,0 +1,34 @@ |
|||||||
|
--- binutils.orig/bfd/dwarf2.c 2021-04-09 16:59:18.345187116 +0100 |
||||||
|
+++ binutils-2.35/bfd/dwarf2.c 2021-04-09 17:02:03.614064723 +0100 |
||||||
|
@@ -539,6 +539,8 @@ read_section (bfd * abfd, |
||||||
|
/* The section may have already been read. */ |
||||||
|
if (contents == NULL) |
||||||
|
{ |
||||||
|
+ ufile_ptr filesize; |
||||||
|
+ |
||||||
|
msec = bfd_get_section_by_name (abfd, section_name); |
||||||
|
if (! msec) |
||||||
|
{ |
||||||
|
@@ -554,10 +556,20 @@ read_section (bfd * abfd, |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
- *section_size = msec->rawsize ? msec->rawsize : msec->size; |
||||||
|
+ amt = bfd_get_section_limit_octets (abfd, msec); |
||||||
|
+ filesize = bfd_get_file_size (abfd); |
||||||
|
+ if (amt >= filesize) |
||||||
|
+ { |
||||||
|
+ /* PR 26946 */ |
||||||
|
+ _bfd_error_handler (_("DWARF error: section %s is larger than its filesize! (0x%lx vs 0x%lx)"), |
||||||
|
+ section_name, (long) amt, (long) filesize); |
||||||
|
+ bfd_set_error (bfd_error_bad_value); |
||||||
|
+ return FALSE; |
||||||
|
+ } |
||||||
|
+ *section_size = amt; |
||||||
|
/* Paranoia - alloc one extra so that we can make sure a string |
||||||
|
section is NUL terminated. */ |
||||||
|
- amt = *section_size + 1; |
||||||
|
+ amt += 1; |
||||||
|
if (amt == 0) |
||||||
|
{ |
||||||
|
bfd_set_error (bfd_error_no_memory); |
@ -0,0 +1,223 @@ |
|||||||
|
diff -rup binutils.orig/bfd/bfd-in2.h binutils-2.35.1/bfd/bfd-in2.h |
||||||
|
--- binutils.orig/bfd/bfd-in2.h 2021-01-04 13:18:10.234368481 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/bfd-in2.h 2021-01-04 13:18:20.596301287 +0000 |
||||||
|
@@ -1177,6 +1177,9 @@ typedef struct bfd_section |
||||||
|
struct bfd_symbol *symbol; |
||||||
|
struct bfd_symbol **symbol_ptr_ptr; |
||||||
|
|
||||||
|
+ /* The matching section name pattern in linker script. */ |
||||||
|
+ const char *pattern; |
||||||
|
+ |
||||||
|
/* Early in the link process, map_head and map_tail are used to build |
||||||
|
a list of input sections attached to an output section. Later, |
||||||
|
output sections use these fields for a list of bfd_link_order |
||||||
|
@@ -1370,8 +1373,8 @@ discarded_section (const asection *sec) |
||||||
|
/* target_index, used_by_bfd, constructor_chain, owner, */ \ |
||||||
|
0, NULL, NULL, NULL, \ |
||||||
|
\ |
||||||
|
- /* symbol, symbol_ptr_ptr, */ \ |
||||||
|
- (struct bfd_symbol *) SYM, &SEC.symbol, \ |
||||||
|
+ /* symbol, symbol_ptr_ptr, pattern, */ \ |
||||||
|
+ (struct bfd_symbol *) SYM, &SEC.symbol, NULL, \ |
||||||
|
\ |
||||||
|
/* map_head, map_tail, already_assigned */ \ |
||||||
|
{ NULL }, { NULL }, NULL \ |
||||||
|
diff -rup binutils.orig/bfd/elflink.c binutils-2.35.1/bfd/elflink.c |
||||||
|
--- binutils.orig/bfd/elflink.c 2021-01-04 13:18:10.223368552 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/elflink.c 2021-01-04 13:18:20.599301268 +0000 |
||||||
|
@@ -11662,8 +11662,21 @@ compare_link_order (const void *a, const |
||||||
|
const struct bfd_link_order *blo = *(const struct bfd_link_order **) b; |
||||||
|
asection *asec = elf_linked_to_section (alo->u.indirect.section); |
||||||
|
asection *bsec = elf_linked_to_section (blo->u.indirect.section); |
||||||
|
- bfd_vma apos = asec->output_section->lma + asec->output_offset; |
||||||
|
- bfd_vma bpos = bsec->output_section->lma + bsec->output_offset; |
||||||
|
+ bfd_vma apos, bpos; |
||||||
|
+ |
||||||
|
+ /* Check if any sections are unordered. */ |
||||||
|
+ if (asec == NULL || bsec == NULL) |
||||||
|
+ { |
||||||
|
+ /* Place ordered sections before unordered sections. */ |
||||||
|
+ if (bsec != NULL) |
||||||
|
+ return 1; |
||||||
|
+ else if (asec != NULL) |
||||||
|
+ return -1; |
||||||
|
+ return 0; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ apos = asec->output_section->lma + asec->output_offset; |
||||||
|
+ bpos = bsec->output_section->lma + bsec->output_offset; |
||||||
|
|
||||||
|
if (apos < bpos) |
||||||
|
return -1; |
||||||
|
@@ -11698,14 +11711,14 @@ compare_link_order (const void *a, const |
||||||
|
sections. Ideally we'd do this in the linker proper. */ |
||||||
|
|
||||||
|
static bfd_boolean |
||||||
|
-elf_fixup_link_order (bfd *abfd, asection *o) |
||||||
|
+elf_fixup_link_order (struct bfd_link_info *info, bfd *abfd, asection *o) |
||||||
|
{ |
||||||
|
size_t seen_linkorder; |
||||||
|
size_t seen_other; |
||||||
|
size_t n; |
||||||
|
struct bfd_link_order *p; |
||||||
|
bfd *sub; |
||||||
|
- struct bfd_link_order **sections; |
||||||
|
+ struct bfd_link_order **sections, **indirect_sections; |
||||||
|
asection *other_sec, *linkorder_sec; |
||||||
|
bfd_vma offset; /* Octets. */ |
||||||
|
|
||||||
|
@@ -11736,7 +11749,9 @@ elf_fixup_link_order (bfd *abfd, asectio |
||||||
|
else |
||||||
|
seen_other++; |
||||||
|
|
||||||
|
- if (seen_other && seen_linkorder) |
||||||
|
+ /* Allow mixed ordered and unordered input sections for |
||||||
|
+ non-relocatable link. */ |
||||||
|
+ if (bfd_link_relocatable (info) && seen_other && seen_linkorder) |
||||||
|
{ |
||||||
|
if (other_sec && linkorder_sec) |
||||||
|
_bfd_error_handler |
||||||
|
@@ -11756,6 +11771,10 @@ elf_fixup_link_order (bfd *abfd, asectio |
||||||
|
if (!seen_linkorder) |
||||||
|
return TRUE; |
||||||
|
|
||||||
|
+ /* Non-relocatable output can have both ordered and unordered input |
||||||
|
+ sections. */ |
||||||
|
+ seen_linkorder += seen_other; |
||||||
|
+ |
||||||
|
sections = bfd_malloc (seen_linkorder * sizeof (*sections)); |
||||||
|
if (sections == NULL) |
||||||
|
return FALSE; |
||||||
|
@@ -11764,22 +11783,51 @@ elf_fixup_link_order (bfd *abfd, asectio |
||||||
|
for (p = o->map_head.link_order; p != NULL; p = p->next) |
||||||
|
sections[seen_linkorder++] = p; |
||||||
|
|
||||||
|
- /* Sort the input sections in the order of their linked section. */ |
||||||
|
- qsort (sections, seen_linkorder, sizeof (*sections), compare_link_order); |
||||||
|
+ for (indirect_sections = sections, n = 0; n < seen_linkorder;) |
||||||
|
+ { |
||||||
|
+ /* Find the first bfd_indirect_link_order section. */ |
||||||
|
+ if (indirect_sections[0]->type == bfd_indirect_link_order) |
||||||
|
+ { |
||||||
|
+ /* Count the consecutive bfd_indirect_link_order sections |
||||||
|
+ with the same pattern. */ |
||||||
|
+ size_t i, n_indirect; |
||||||
|
+ const char *pattern |
||||||
|
+ = indirect_sections[0]->u.indirect.section->pattern; |
||||||
|
+ for (i = n + 1; i < seen_linkorder; i++) |
||||||
|
+ if (sections[i]->type != bfd_indirect_link_order |
||||||
|
+ || sections[i]->u.indirect.section->pattern != pattern) |
||||||
|
+ break; |
||||||
|
+ n_indirect = i - n; |
||||||
|
+ /* Sort the bfd_indirect_link_order sections in the order of |
||||||
|
+ their linked section. */ |
||||||
|
+ qsort (indirect_sections, n_indirect, sizeof (*sections), |
||||||
|
+ compare_link_order); |
||||||
|
+ indirect_sections += n_indirect; |
||||||
|
+ n += n_indirect; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ indirect_sections++; |
||||||
|
+ n++; |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
|
||||||
|
- /* Change the offsets of the sections. */ |
||||||
|
+ /* Change the offsets of the bfd_indirect_link_order sections. */ |
||||||
|
offset = 0; |
||||||
|
for (n = 0; n < seen_linkorder; n++) |
||||||
|
- { |
||||||
|
- bfd_vma mask; |
||||||
|
- asection *s = sections[n]->u.indirect.section; |
||||||
|
- unsigned int opb = bfd_octets_per_byte (abfd, s); |
||||||
|
- |
||||||
|
- mask = ~(bfd_vma) 0 << s->alignment_power * opb; |
||||||
|
- offset = (offset + ~mask) & mask; |
||||||
|
- sections[n]->offset = s->output_offset = offset / opb; |
||||||
|
- offset += sections[n]->size; |
||||||
|
- } |
||||||
|
+ if (sections[n]->type == bfd_indirect_link_order) |
||||||
|
+ { |
||||||
|
+ bfd_vma mask; |
||||||
|
+ asection *s = sections[n]->u.indirect.section; |
||||||
|
+ unsigned int opb = bfd_octets_per_byte (abfd, s); |
||||||
|
+ |
||||||
|
+ mask = ~(bfd_vma) 0 << s->alignment_power * opb; |
||||||
|
+ offset = (offset + ~mask) & mask; |
||||||
|
+ sections[n]->offset = s->output_offset = offset / opb; |
||||||
|
+ offset += sections[n]->size; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ offset = sections[n]->offset + sections[n]->size; |
||||||
|
|
||||||
|
free (sections); |
||||||
|
return TRUE; |
||||||
|
@@ -12408,7 +12456,7 @@ bfd_elf_final_link (bfd *abfd, struct bf |
||||||
|
/* Reorder SHF_LINK_ORDER sections. */ |
||||||
|
for (o = abfd->sections; o != NULL; o = o->next) |
||||||
|
{ |
||||||
|
- if (!elf_fixup_link_order (abfd, o)) |
||||||
|
+ if (!elf_fixup_link_order (info, abfd, o)) |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
diff -rup binutils.orig/bfd/section.c binutils-2.35.1/bfd/section.c |
||||||
|
--- binutils.orig/bfd/section.c 2021-01-04 13:18:10.233368487 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/section.c 2021-01-04 13:18:20.599301268 +0000 |
||||||
|
@@ -541,6 +541,9 @@ CODE_FRAGMENT |
||||||
|
. struct bfd_symbol *symbol; |
||||||
|
. struct bfd_symbol **symbol_ptr_ptr; |
||||||
|
. |
||||||
|
+. {* The matching section name pattern in linker script. *} |
||||||
|
+. const char *pattern; |
||||||
|
+. |
||||||
|
. {* Early in the link process, map_head and map_tail are used to build |
||||||
|
. a list of input sections attached to an output section. Later, |
||||||
|
. output sections use these fields for a list of bfd_link_order |
||||||
|
@@ -734,8 +737,8 @@ CODE_FRAGMENT |
||||||
|
. {* target_index, used_by_bfd, constructor_chain, owner, *} \ |
||||||
|
. 0, NULL, NULL, NULL, \ |
||||||
|
. \ |
||||||
|
-. {* symbol, symbol_ptr_ptr, *} \ |
||||||
|
-. (struct bfd_symbol *) SYM, &SEC.symbol, \ |
||||||
|
+. {* symbol, symbol_ptr_ptr, pattern, *} \ |
||||||
|
+. (struct bfd_symbol *) SYM, &SEC.symbol, NULL, \ |
||||||
|
. \ |
||||||
|
. {* map_head, map_tail, already_assigned *} \ |
||||||
|
. { NULL }, { NULL }, NULL \ |
||||||
|
diff -rup binutils.orig/gas/config/obj-elf.c binutils-2.35.1/gas/config/obj-elf.c |
||||||
|
--- binutils.orig/gas/config/obj-elf.c 2021-01-04 13:18:09.942370375 +0000 |
||||||
|
+++ binutils-2.35.1/gas/config/obj-elf.c 2021-01-04 13:18:20.599301268 +0000 |
||||||
|
@@ -659,7 +659,9 @@ obj_elf_change_section (const char *name |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
- if (old_sec == NULL && ((attr & ~(SHF_MASKOS | SHF_MASKPROC)) |
||||||
|
+ if (old_sec == NULL && ((attr & ~(SHF_LINK_ORDER |
||||||
|
+ | SHF_MASKOS |
||||||
|
+ | SHF_MASKPROC)) |
||||||
|
& ~ssect->attr) != 0) |
||||||
|
{ |
||||||
|
/* As a GNU extension, we permit a .note section to be |
||||||
|
diff -rup binutils.orig/ld/ldlang.c binutils-2.35.1/ld/ldlang.c |
||||||
|
--- binutils.orig/ld/ldlang.c 2021-01-04 13:18:09.691372002 +0000 |
||||||
|
+++ binutils-2.35.1/ld/ldlang.c 2021-01-04 13:18:20.600301261 +0000 |
||||||
|
@@ -7421,7 +7421,7 @@ lang_reset_memory_regions (void) |
||||||
|
|
||||||
|
static void |
||||||
|
gc_section_callback (lang_wild_statement_type *ptr, |
||||||
|
- struct wildcard_list *sec ATTRIBUTE_UNUSED, |
||||||
|
+ struct wildcard_list *sec, |
||||||
|
asection *section, |
||||||
|
struct flag_info *sflag_info ATTRIBUTE_UNUSED, |
||||||
|
lang_input_statement_type *file ATTRIBUTE_UNUSED, |
||||||
|
@@ -7431,6 +7431,8 @@ gc_section_callback (lang_wild_statement |
||||||
|
should be as well. */ |
||||||
|
if (ptr->keep_sections) |
||||||
|
section->flags |= SEC_KEEP; |
||||||
|
+ if (sec) |
||||||
|
+ section->pattern = sec->spec.name; |
||||||
|
} |
||||||
|
|
||||||
|
/* Iterate over sections marking them against GC. */ |
@ -0,0 +1,93 @@ |
|||||||
|
diff -rup binutils.orig/bfd/elfnn-aarch64.c binutils-2.35/bfd/elfnn-aarch64.c |
||||||
|
--- binutils.orig/bfd/elfnn-aarch64.c 2020-09-10 17:03:31.738458044 +0100 |
||||||
|
+++ binutils-2.35/bfd/elfnn-aarch64.c 2020-09-10 17:04:03.643344898 +0100 |
||||||
|
@@ -5445,7 +5445,6 @@ elfNN_aarch64_final_link_relocate (reloc |
||||||
|
bfd_vma orig_value = value; |
||||||
|
bfd_boolean resolved_to_zero; |
||||||
|
bfd_boolean abs_symbol_p; |
||||||
|
- bfd_boolean via_plt_p; |
||||||
|
|
||||||
|
globals = elf_aarch64_hash_table (info); |
||||||
|
|
||||||
|
@@ -5467,8 +5466,6 @@ elfNN_aarch64_final_link_relocate (reloc |
||||||
|
: bfd_is_und_section (sym_sec)); |
||||||
|
abs_symbol_p = h != NULL && bfd_is_abs_symbol (&h->root); |
||||||
|
|
||||||
|
- via_plt_p = (globals->root.splt != NULL && h != NULL |
||||||
|
- && h->plt.offset != (bfd_vma) - 1); |
||||||
|
|
||||||
|
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle |
||||||
|
it here if it is defined in a non-shared object. */ |
||||||
|
@@ -5805,23 +5802,12 @@ elfNN_aarch64_final_link_relocate (reloc |
||||||
|
value += signed_addend; |
||||||
|
break; |
||||||
|
|
||||||
|
- case BFD_RELOC_AARCH64_BRANCH19: |
||||||
|
- case BFD_RELOC_AARCH64_TSTBR14: |
||||||
|
- /* A conditional branch to an undefined weak symbol is converted to a |
||||||
|
- branch to itself. */ |
||||||
|
- if (weak_undef_p && !via_plt_p) |
||||||
|
- { |
||||||
|
- value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type, |
||||||
|
- place, value, |
||||||
|
- signed_addend, |
||||||
|
- weak_undef_p); |
||||||
|
- break; |
||||||
|
- } |
||||||
|
- /* Fall through. */ |
||||||
|
case BFD_RELOC_AARCH64_CALL26: |
||||||
|
case BFD_RELOC_AARCH64_JUMP26: |
||||||
|
{ |
||||||
|
asection *splt = globals->root.splt; |
||||||
|
+ bfd_boolean via_plt_p = |
||||||
|
+ splt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1; |
||||||
|
|
||||||
|
/* A call to an undefined weak symbol is converted to a jump to |
||||||
|
the next instruction unless a PLT entry will be created. |
||||||
|
@@ -5902,6 +5888,23 @@ elfNN_aarch64_final_link_relocate (reloc |
||||||
|
bfd_set_error (bfd_error_bad_value); |
||||||
|
return bfd_reloc_notsupported; |
||||||
|
} |
||||||
|
+ value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type, |
||||||
|
+ place, value, |
||||||
|
+ signed_addend, |
||||||
|
+ weak_undef_p); |
||||||
|
+ break; |
||||||
|
+ |
||||||
|
+ case BFD_RELOC_AARCH64_BRANCH19: |
||||||
|
+ case BFD_RELOC_AARCH64_TSTBR14: |
||||||
|
+ if (h && h->root.type == bfd_link_hash_undefined) |
||||||
|
+ { |
||||||
|
+ _bfd_error_handler |
||||||
|
+ /* xgettext:c-format */ |
||||||
|
+ (_("%pB: conditional branch to undefined symbol `%s' " |
||||||
|
+ "not allowed"), input_bfd, h->root.root.string); |
||||||
|
+ bfd_set_error (bfd_error_bad_value); |
||||||
|
+ return bfd_reloc_notsupported; |
||||||
|
+ } |
||||||
|
/* Fall through. */ |
||||||
|
|
||||||
|
case BFD_RELOC_AARCH64_16: |
||||||
|
@@ -7967,8 +7970,6 @@ elfNN_aarch64_check_relocs (bfd *abfd, s |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
- case BFD_RELOC_AARCH64_BRANCH19: |
||||||
|
- case BFD_RELOC_AARCH64_TSTBR14: |
||||||
|
case BFD_RELOC_AARCH64_CALL26: |
||||||
|
case BFD_RELOC_AARCH64_JUMP26: |
||||||
|
/* If this is a local symbol then we resolve it |
||||||
|
Only in binutils-2.35/bfd: elfnn-aarch64.c.orig |
||||||
|
diff -rup binutils.orig/ld/testsuite/ld-aarch64/emit-relocs-560.d binutils-2.35/ld/testsuite/ld-aarch64/emit-relocs-560.d |
||||||
|
--- binutils.orig/ld/testsuite/ld-aarch64/emit-relocs-560.d 2020-09-10 17:03:31.067460424 +0100 |
||||||
|
+++ binutils-2.35/ld/testsuite/ld-aarch64/emit-relocs-560.d 2020-09-10 17:04:03.644344895 +0100 |
||||||
|
@@ -1,8 +1,3 @@ |
||||||
|
#source: emit-relocs-560.s |
||||||
|
#ld: -shared |
||||||
|
-#readelf: -r |
||||||
|
- |
||||||
|
-Relocation section '.rela.plt' at offset 0x[0-9a-f]+ contains 2 entries: |
||||||
|
- Offset Info Type Sym. Value Sym. Name \+ Addend |
||||||
|
-[0-9a-f]+ 000100000402 R_AARCH64_JUMP_SL 0000000000000000 baz \+ 0 |
||||||
|
-[0-9a-f]+ 000200000402 R_AARCH64_JUMP_SL 0000000000000000 bar \+ 0 |
||||||
|
+#error: .*: conditional branch to undefined symbol `bar' not allowed |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,70 @@ |
|||||||
|
diff -rup binutils.orig/gas/config/obj-elf.c binutils-2.34/gas/config/obj-elf.c |
||||||
|
--- binutils.orig/gas/config/obj-elf.c 2020-02-02 11:34:11.858321477 +0000 |
||||||
|
+++ binutils-2.34/gas/config/obj-elf.c 2020-02-02 11:34:30.099247619 +0000 |
||||||
|
@@ -78,9 +78,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}, |
||||||
|
@@ -1003,6 +1005,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) |
||||||
|
{ |
||||||
|
Only in binutils-2.34/gas/config: obj-elf.c.orig |
||||||
|
diff -rup binutils.orig/gas/doc/as.texi binutils-2.34/gas/doc/as.texi |
||||||
|
--- binutils.orig/gas/doc/as.texi 2020-02-02 11:34:11.850321509 +0000 |
||||||
|
+++ binutils-2.34/gas/doc/as.texi 2020-02-02 11:35:11.359080560 +0000 |
||||||
|
@@ -4359,6 +4359,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}} |
||||||
|
@@ -4656,6 +4657,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}]]]} |
||||||
|
|
||||||
|
Only in binutils-2.34/gas/doc: as.texi.orig |
||||||
|
Only in binutils-2.34/gas/doc: as.texi.rej |
@ -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 |
@ -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 |
||||||
|
|
@ -0,0 +1,34 @@ |
|||||||
|
diff -rup binutils.orig/ld/ldlang.c binutils-2.35.1/ld/ldlang.c |
||||||
|
--- binutils.orig/ld/ldlang.c 2021-01-04 15:20:32.901498036 +0000 |
||||||
|
+++ binutils-2.35.1/ld/ldlang.c 2021-01-04 15:22:03.151916333 +0000 |
||||||
|
@@ -1529,6 +1529,8 @@ lang_output_section_statement_lookup (co |
||||||
|
|
||||||
|
entry->s.output_section_statement.name = name; |
||||||
|
entry->s.output_section_statement.constraint = constraint; |
||||||
|
+ entry->s.output_section_statement.dup_output = (create == 2 |
||||||
|
+ || constraint == SPECIAL); |
||||||
|
return &entry->s.output_section_statement; |
||||||
|
} |
||||||
|
|
||||||
|
@@ -2390,7 +2392,7 @@ init_os (lang_output_section_statement_t |
||||||
|
if (strcmp (s->name, DISCARD_SECTION_NAME) == 0) |
||||||
|
einfo (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME); |
||||||
|
|
||||||
|
- if (s->constraint != SPECIAL) |
||||||
|
+ if (!s->dup_output) |
||||||
|
s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name); |
||||||
|
if (s->bfd_section == NULL) |
||||||
|
s->bfd_section = bfd_make_section_anyway_with_flags (link_info.output_bfd, |
||||||
|
diff -rup binutils.orig/ld/ldlang.h binutils-2.35.1/ld/ldlang.h |
||||||
|
--- binutils.orig/ld/ldlang.h 2021-01-04 15:20:32.627499830 +0000 |
||||||
|
+++ binutils-2.35.1/ld/ldlang.h 2021-01-04 15:21:06.688277003 +0000 |
||||||
|
@@ -173,6 +173,9 @@ typedef struct lang_output_section_state |
||||||
|
unsigned int after_end : 1; |
||||||
|
/* If this section uses the alignment of its input sections. */ |
||||||
|
unsigned int align_lma_with_input : 1; |
||||||
|
+ /* If script has duplicate output section statements of the same name |
||||||
|
+ create duplicate output sections. */ |
||||||
|
+ unsigned int dup_output : 1; |
||||||
|
} lang_output_section_statement_type; |
||||||
|
|
||||||
|
typedef struct |
@ -0,0 +1,186 @@ |
|||||||
|
diff -rup binutils.orig/gas/dwarf2dbg.c binutils-2.35.2/gas/dwarf2dbg.c |
||||||
|
--- binutils.orig/gas/dwarf2dbg.c 2021-08-09 17:50:48.324447191 +0100 |
||||||
|
+++ binutils-2.35.2/gas/dwarf2dbg.c 2021-08-09 17:51:03.308359865 +0100 |
||||||
|
@@ -616,7 +616,22 @@ get_directory_table_entry (const char * |
||||||
|
if (can_use_zero) |
||||||
|
{ |
||||||
|
if (dirs == NULL || dirs[0] == NULL) |
||||||
|
- d = 0; |
||||||
|
+ { |
||||||
|
+ const char * pwd = getpwd (); |
||||||
|
+ |
||||||
|
+ if (dwarf_level >= 5 && strcmp (dirname, pwd) != 0) |
||||||
|
+ { |
||||||
|
+ /* In DWARF-5 the 0 entry in the directory table is expected to be |
||||||
|
+ the same as the DW_AT_comp_dir (which is set to the current build |
||||||
|
+ directory). Since we are about to create a directory entry that |
||||||
|
+ is not the same, allocate the current directory first. |
||||||
|
+ FIXME: Alternatively we could generate an error message here. */ |
||||||
|
+ (void) get_directory_table_entry (pwd, strlen (pwd), TRUE); |
||||||
|
+ d = 1; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ d = 0; |
||||||
|
+ } |
||||||
|
} |
||||||
|
else if (d == 0) |
||||||
|
d = 1; |
||||||
|
@@ -624,8 +639,8 @@ get_directory_table_entry (const char * |
||||||
|
if (d >= dirs_allocated) |
||||||
|
{ |
||||||
|
unsigned int old = dirs_allocated; |
||||||
|
- |
||||||
|
- dirs_allocated = d + 32; |
||||||
|
+#define DIR_TABLE_INCREMENT 32 |
||||||
|
+ dirs_allocated = d + DIR_TABLE_INCREMENT; |
||||||
|
dirs = XRESIZEVEC (char *, dirs, dirs_allocated); |
||||||
|
memset (dirs + old, 0, (dirs_allocated - old) * sizeof (char *)); |
||||||
|
} |
||||||
|
@@ -820,7 +835,7 @@ allocate_filename_to_slot (const char * |
||||||
|
dirlen = strlen (dirname); |
||||||
|
file = filename; |
||||||
|
} |
||||||
|
- |
||||||
|
+ |
||||||
|
d = get_directory_table_entry (dirname, dirlen, num == 0); |
||||||
|
i = num; |
||||||
|
|
||||||
|
@@ -2062,7 +2077,12 @@ out_dir_and_file_list (segT line_seg, in |
||||||
|
Otherwise use pwd as main file directory. */ |
||||||
|
if (dirs_in_use > 0 && dirs != NULL && dirs[0] != NULL) |
||||||
|
dir = remap_debug_filename (dirs[0]); |
||||||
|
- else if (dirs_in_use > 1 && dirs != NULL && dirs[1] != NULL) |
||||||
|
+ else if (dirs_in_use > 1 |
||||||
|
+ && dirs != NULL |
||||||
|
+ && dirs[1] != NULL |
||||||
|
+ /* DWARF-5 directory tables expect dir[0] to be the same as |
||||||
|
+ DW_AT_comp_dir, which is the same as pwd. */ |
||||||
|
+ && dwarf_level < 5) |
||||||
|
dir = remap_debug_filename (dirs[1]); |
||||||
|
else |
||||||
|
dir = remap_debug_filename (getpwd ()); |
||||||
|
@@ -2165,8 +2185,8 @@ out_dir_and_file_list (segT line_seg, in |
||||||
|
uses slot zero, but that is only set explicitly using a |
||||||
|
.file 0 directive. If that isn't used, but file 1 is, |
||||||
|
then use that as main file name. */ |
||||||
|
- if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1) |
||||||
|
- files[0].filename = files[1].filename; |
||||||
|
+ if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1 && files[0].filename == NULL) |
||||||
|
+ files[0].filename = files[1].filename; |
||||||
|
else |
||||||
|
files[i].filename = ""; |
||||||
|
if (DWARF2_LINE_VERSION < 5 || i != 0) |
||||||
|
Only in binutils-2.35.2/gas/: dwarf2dbg.c.orig |
||||||
|
Only in binutils-2.35.2/gas/: dwarf2dbg.c.rej |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/elf/dwarf-5-file0.d binutils-2.35.2/gas/testsuite/gas/elf/dwarf-5-file0.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/elf/dwarf-5-file0.d 2021-08-09 17:50:48.394446783 +0100 |
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/elf/dwarf-5-file0.d 2021-08-09 17:53:36.567466668 +0100 |
||||||
|
@@ -3,17 +3,18 @@ |
||||||
|
#readelf: -wl |
||||||
|
|
||||||
|
#... |
||||||
|
- The Directory Table \(offset 0x.*, lines 3, columns 1\): |
||||||
|
+ The Directory Table \(offset 0x.*, lines 4, columns 1\): |
||||||
|
Entry Name |
||||||
|
- 0 \(indirect line string, offset: 0x.*\): master directory |
||||||
|
- 1 \(indirect line string, offset: 0x.*\): secondary directory |
||||||
|
- 2 \(indirect line string, offset: 0x.*\): /tmp |
||||||
|
+#... |
||||||
|
+ 1 \(indirect line string, offset: 0x.*\): master directory |
||||||
|
+ 2 \(indirect line string, offset: 0x.*\): secondary directory |
||||||
|
+ 3 \(indirect line string, offset: 0x.*\): /tmp |
||||||
|
|
||||||
|
The File Name Table \(offset 0x.*, lines 3, columns 3\): |
||||||
|
Entry Dir MD5 Name |
||||||
|
- 0 0 0x00000000000000000000000000000000 \(indirect line string, offset: 0x.*\): master source file |
||||||
|
- 1 1 0x00000000000000000000000000000000 \(indirect line string, offset: 0x.*\): secondary source file |
||||||
|
- 2 2 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c |
||||||
|
+ 0 1 0x00000000000000000000000000000000 \(indirect line string, offset: 0x.*\): master source file |
||||||
|
+ 1 2 0x00000000000000000000000000000000 \(indirect line string, offset: 0x.*\): secondary source file |
||||||
|
+ 2 3 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c |
||||||
|
#pass |
||||||
|
|
||||||
|
|
||||||
|
Only in binutils-2.35.2/gas/testsuite/gas/elf: dwarf-5-file0.d.orig |
||||||
|
Only in binutils-2.35.2/gas/testsuite/gas/elf: dwarf-5-file0.d.rej |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/elf/elf.exp binutils-2.35.2/gas/testsuite/gas/elf/elf.exp |
||||||
|
--- binutils.orig/gas/testsuite/gas/elf/elf.exp 2021-08-09 17:50:48.395446778 +0100 |
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/elf/elf.exp 2021-08-09 17:51:03.308359865 +0100 |
||||||
|
@@ -274,6 +274,7 @@ if { [is_elf_format] } then { |
||||||
|
run_dump_test "dwarf2-18" $dump_opts |
||||||
|
run_dump_test "dwarf2-19" $dump_opts |
||||||
|
run_dump_test "dwarf-5-file0" $dump_opts |
||||||
|
+ run_dump_test "dwarf-5-dir0" $dump_opts |
||||||
|
run_dump_test "dwarf-4-cu" $dump_opts |
||||||
|
run_dump_test "dwarf-5-cu" $dump_opts |
||||||
|
run_dump_test "dwarf-5-nop-for-line-table" $dump_opts |
||||||
|
Only in binutils-2.35.2/gas/testsuite/gas/elf: elf.exp.orig |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/i386/dwarf5-line-1.d binutils-2.35.2/gas/testsuite/gas/i386/dwarf5-line-1.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/i386/dwarf5-line-1.d 2021-08-09 17:50:48.363446964 +0100 |
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/i386/dwarf5-line-1.d 2021-08-09 17:51:03.308359865 +0100 |
||||||
|
@@ -33,7 +33,7 @@ Raw dump of debug contents of section \. |
||||||
|
|
||||||
|
The Directory Table \(offset 0x.*, lines 2, columns 1\): |
||||||
|
Entry Name |
||||||
|
- 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 |
||||||
|
+ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite |
||||||
|
1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 |
||||||
|
|
||||||
|
The File Name Table \(offset 0x.*, lines 2, columns 3\): |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/i386/dwarf5-line-2.d binutils-2.35.2/gas/testsuite/gas/i386/dwarf5-line-2.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/i386/dwarf5-line-2.d 2021-08-09 17:50:48.365446953 +0100 |
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/i386/dwarf5-line-2.d 2021-08-09 17:51:03.308359865 +0100 |
||||||
|
@@ -33,7 +33,7 @@ Raw dump of debug contents of section \. |
||||||
|
|
||||||
|
The Directory Table \(offset 0x.*, lines 2, columns 1\): |
||||||
|
Entry Name |
||||||
|
- 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 |
||||||
|
+ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite |
||||||
|
1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 |
||||||
|
|
||||||
|
The File Name Table \(offset 0x.*, lines 1, columns 3\): |
||||||
|
--- /dev/null 2021-08-09 07:51:33.817495606 +0100 |
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/elf/dwarf-5-dir0.s 2021-08-09 17:55:06.745941103 +0100 |
||||||
|
@@ -0,0 +1,19 @@ |
||||||
|
+ .section .debug_info,"",%progbits |
||||||
|
+ .4byte 0x8a |
||||||
|
+ .2byte 0x2 |
||||||
|
+ .4byte .Ldebug_abbrev0 |
||||||
|
+ .byte 0x4 |
||||||
|
+ .uleb128 0x1 |
||||||
|
+ |
||||||
|
+ .file 0 "../not-the-build-directory/master-source-file.c" |
||||||
|
+ .line 1 |
||||||
|
+ .text |
||||||
|
+ .octa 0x12345678901234567890123456789012 |
||||||
|
+ |
||||||
|
+ .file 1 "secondary directory/secondary source file" |
||||||
|
+ .line 2 |
||||||
|
+ .word 2 |
||||||
|
+ |
||||||
|
+ .file 2 "/tmp" "foo.c" md5 0x95828e8bc4f7404dbf7526fb7bd0f192 |
||||||
|
+ .line 5 |
||||||
|
+ .word 6 |
||||||
|
--- /dev/null 2021-08-09 07:51:33.817495606 +0100 |
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/elf/dwarf-5-dir0.d 2021-08-09 17:55:06.745941103 +0100 |
||||||
|
@@ -0,0 +1,20 @@ |
||||||
|
+#as: --gdwarf-5 |
||||||
|
+#name: DWARF5 dir[0] |
||||||
|
+#readelf: -wl |
||||||
|
+ |
||||||
|
+#... |
||||||
|
+ The Directory Table \(offset 0x.*, lines 4, columns 1\): |
||||||
|
+ Entry Name |
||||||
|
+ 0 \(indirect line string, offset: 0x0\): .*/gas/testsuite |
||||||
|
+ 1 \(indirect line string, offset: 0x.*\): ../not-the-build-directory |
||||||
|
+ 2 \(indirect line string, offset: 0x.*\): secondary directory |
||||||
|
+ 3 \(indirect line string, offset: 0x.*\): /tmp |
||||||
|
+ |
||||||
|
+ The File Name Table \(offset 0x.*, lines 3, columns 3\): |
||||||
|
+ Entry Dir MD5 Name |
||||||
|
+ 0 1 0x0 \(indirect line string, offset: 0x.*\): master-source-file.c |
||||||
|
+ 1 2 0x0 \(indirect line string, offset: 0x.*\): secondary source file |
||||||
|
+ 2 3 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c |
||||||
|
+#pass |
||||||
|
+ |
||||||
|
+ |
@ -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), |
@ -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 |
@ -0,0 +1,657 @@ |
|||||||
|
Only in binutils-2.35.1/gas: ChangeLog.orig |
||||||
|
Only in binutils-2.35.1/gas: ChangeLog.rej |
||||||
|
Only in binutils-2.35.1/gas/config: tc-s390.c.rej |
||||||
|
diff -rup binutils.orig/gas/doc/c-s390.texi binutils-2.35.1/gas/doc/c-s390.texi |
||||||
|
--- binutils.orig/gas/doc/c-s390.texi 2021-03-25 14:35:40.951633346 +0000 |
||||||
|
+++ binutils-2.35.1/gas/doc/c-s390.texi 2021-03-25 14:39:39.910468584 +0000 |
||||||
|
@@ -313,7 +313,7 @@ field. The notation changes as follows: |
||||||
|
@cindex instruction formats, s390 |
||||||
|
@cindex s390 instruction formats |
||||||
|
|
||||||
|
-The Principles of Operation manuals lists 26 instruction formats where |
||||||
|
+The Principles of Operation manuals lists 35 instruction formats where |
||||||
|
some of the formats have multiple variants. For the @samp{.insn} |
||||||
|
pseudo directive the assembler recognizes some of the formats. |
||||||
|
Typically, the most general variant of the instruction format is used |
||||||
|
@@ -545,6 +545,54 @@ with the @samp{.insn} pseudo directive: |
||||||
|
0 8 12 16 20 32 36 47 |
||||||
|
@end verbatim |
||||||
|
|
||||||
|
+@item VRV format: <insn> V1,D2(V2,B2),M3 |
||||||
|
+@verbatim |
||||||
|
++--------+----+----+----+-------------+----+------------+ |
||||||
|
+| OpCode | V1 | V2 | B2 | D2 | M3 | Opcode | |
||||||
|
++--------+----+----+----+-------------+----+------------+ |
||||||
|
+0 8 12 16 20 32 36 47 |
||||||
|
+@end verbatim |
||||||
|
+ |
||||||
|
+@item VRI format: <insn> V1,V2,I3,M4,M5 |
||||||
|
+@verbatim |
||||||
|
++--------+----+----+-------------+----+----+------------+ |
||||||
|
+| OpCode | V1 | V2 | I3 | M5 | M4 | Opcode | |
||||||
|
++--------+----+----+-------------+----+----+------------+ |
||||||
|
+0 8 12 16 28 32 36 47 |
||||||
|
+@end verbatim |
||||||
|
+ |
||||||
|
+@item VRX format: <insn> V1,D2(R2,B2),M3 |
||||||
|
+@verbatim |
||||||
|
++--------+----+----+----+-------------+----+------------+ |
||||||
|
+| OpCode | V1 | R2 | B2 | D2 | M3 | Opcode | |
||||||
|
++--------+----+----+----+-------------+----+------------+ |
||||||
|
+0 8 12 16 20 32 36 47 |
||||||
|
+@end verbatim |
||||||
|
+ |
||||||
|
+@item VRS format: <insn> R1,V3,D2(B2),M4 |
||||||
|
+@verbatim |
||||||
|
++--------+----+----+----+-------------+----+------------+ |
||||||
|
+| OpCode | R1 | V3 | B2 | D2 | M4 | Opcode | |
||||||
|
++--------+----+----+----+-------------+----+------------+ |
||||||
|
+0 8 12 16 20 32 36 47 |
||||||
|
+@end verbatim |
||||||
|
+ |
||||||
|
+@item VRR format: <insn> V1,V2,V3,M4,M5,M6 |
||||||
|
+@verbatim |
||||||
|
++--------+----+----+----+---+----+----+----+------------+ |
||||||
|
+| OpCode | V1 | V2 | V3 |///| M6 | M5 | M4 | Opcode | |
||||||
|
++--------+----+----+----+---+----+----+----+------------+ |
||||||
|
+0 8 12 16 24 28 32 36 47 |
||||||
|
+@end verbatim |
||||||
|
+ |
||||||
|
+@item VSI format: <insn> V1,D2(B2),I3 |
||||||
|
+@verbatim |
||||||
|
++--------+---------+----+-------------+----+------------+ |
||||||
|
+| OpCode | I3 | B2 | D2 | V1 | Opcode | |
||||||
|
++--------+---------+----+-------------+----+------------+ |
||||||
|
+0 8 16 20 32 36 47 |
||||||
|
+@end verbatim |
||||||
|
+ |
||||||
|
@end table |
||||||
|
|
||||||
|
For the complete list of all instruction format variants see the |
||||||
|
Only in binutils-2.35.1/gas/doc: c-s390.texi.orig |
||||||
|
Only in binutils-2.35.1/gas/doc: c-s390.texi.rej |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-g5.d binutils-2.35.1/gas/testsuite/gas/s390/esa-g5.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/esa-g5.d 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/esa-g5.d 2021-03-25 14:39:56.533387550 +0000 |
||||||
|
@@ -78,10 +78,14 @@ Disassembly of section .text: |
||||||
|
.*: 07 29 [ ]*bhr %r9 |
||||||
|
.*: 07 f9 [ ]*br %r9 |
||||||
|
.*: a7 95 00 00 [ ]*bras %r9,e2 <foo\+0xe2> |
||||||
|
-.*: a7 64 00 00 [ ]*jlh e6 <foo\+0xe6> |
||||||
|
-.*: a7 66 00 00 [ ]*brct %r6,ea <foo\+0xea> |
||||||
|
-.*: 84 69 00 00 [ ]*brxh %r6,%r9,ee <foo\+0xee> |
||||||
|
-.*: 85 69 00 00 [ ]*brxle %r6,%r9,f2 <foo\+0xf2> |
||||||
|
+.*: a7 65 00 00 [ ]*bras %r6,e6 <foo\+0xe6> |
||||||
|
+.*: a7 64 00 00 [ ]*jlh ea <foo\+0xea> |
||||||
|
+.*: a7 66 00 00 [ ]*brct %r6,ee <foo\+0xee> |
||||||
|
+.*: a7 66 00 00 [ ]*brct %r6,f2 <foo\+0xf2> |
||||||
|
+.*: 84 69 00 00 [ ]*brxh %r6,%r9,f6 <foo\+0xf6> |
||||||
|
+.*: 84 69 00 00 [ ]*brxh %r6,%r9,fa <foo\+0xfa> |
||||||
|
+.*: 85 69 00 00 [ ]*brxle %r6,%r9,fe <foo\+0xfe> |
||||||
|
+.*: 85 69 00 00 [ ]*brxle %r6,%r9,102 <foo\+0x102> |
||||||
|
.*: b2 5a 00 69 [ ]*bsa %r6,%r9 |
||||||
|
.*: b2 58 00 69 [ ]*bsg %r6,%r9 |
||||||
|
.*: 0b 69 [ ]*bsm %r6,%r9 |
||||||
|
@@ -180,27 +184,49 @@ Disassembly of section .text: |
||||||
|
.*: b2 21 00 69 [ ]*ipte %r6,%r9 |
||||||
|
.*: b2 29 00 69 [ ]*iske %r6,%r9 |
||||||
|
.*: b2 23 00 69 [ ]*ivsk %r6,%r9 |
||||||
|
-.*: a7 f4 00 00 [ ]*j 278 <foo\+0x278> |
||||||
|
-.*: a7 84 00 00 [ ]*je 27c <foo\+0x27c> |
||||||
|
-.*: a7 24 00 00 [ ]*jh 280 <foo\+0x280> |
||||||
|
-.*: a7 a4 00 00 [ ]*jhe 284 <foo\+0x284> |
||||||
|
-.*: a7 44 00 00 [ ]*jl 288 <foo\+0x288> |
||||||
|
-.*: a7 c4 00 00 [ ]*jle 28c <foo\+0x28c> |
||||||
|
-.*: a7 64 00 00 [ ]*jlh 290 <foo\+0x290> |
||||||
|
-.*: a7 44 00 00 [ ]*jl 294 <foo\+0x294> |
||||||
|
-.*: a7 74 00 00 [ ]*jne 298 <foo\+0x298> |
||||||
|
-.*: a7 d4 00 00 [ ]*jnh 29c <foo\+0x29c> |
||||||
|
-.*: a7 54 00 00 [ ]*jnhe 2a0 <foo\+0x2a0> |
||||||
|
-.*: a7 b4 00 00 [ ]*jnl 2a4 <foo\+0x2a4> |
||||||
|
-.*: a7 34 00 00 [ ]*jnle 2a8 <foo\+0x2a8> |
||||||
|
-.*: a7 94 00 00 [ ]*jnlh 2ac <foo\+0x2ac> |
||||||
|
-.*: a7 b4 00 00 [ ]*jnl 2b0 <foo\+0x2b0> |
||||||
|
-.*: a7 e4 00 00 [ ]*jno 2b4 <foo\+0x2b4> |
||||||
|
-.*: a7 d4 00 00 [ ]*jnh 2b8 <foo\+0x2b8> |
||||||
|
-.*: a7 74 00 00 [ ]*jne 2bc <foo\+0x2bc> |
||||||
|
-.*: a7 14 00 00 [ ]*jo 2c0 <foo\+0x2c0> |
||||||
|
-.*: a7 24 00 00 [ ]*jh 2c4 <foo\+0x2c4> |
||||||
|
-.*: a7 84 00 00 [ ]*je 2c8 <foo\+0x2c8> |
||||||
|
+.*: a7 f4 00 00 [ ]*j 288 <foo\+0x288> |
||||||
|
+.*: a7 84 00 00 [ ]*je 28c <foo\+0x28c> |
||||||
|
+.*: a7 24 00 00 [ ]*jh 290 <foo\+0x290> |
||||||
|
+.*: a7 a4 00 00 [ ]*jhe 294 <foo\+0x294> |
||||||
|
+.*: a7 44 00 00 [ ]*jl 298 <foo\+0x298> |
||||||
|
+.*: a7 c4 00 00 [ ]*jle 29c <foo\+0x29c> |
||||||
|
+.*: a7 64 00 00 [ ]*jlh 2a0 <foo\+0x2a0> |
||||||
|
+.*: a7 44 00 00 [ ]*jl 2a4 <foo\+0x2a4> |
||||||
|
+.*: a7 74 00 00 [ ]*jne 2a8 <foo\+0x2a8> |
||||||
|
+.*: a7 d4 00 00 [ ]*jnh 2ac <foo\+0x2ac> |
||||||
|
+.*: a7 54 00 00 [ ]*jnhe 2b0 <foo\+0x2b0> |
||||||
|
+.*: a7 b4 00 00 [ ]*jnl 2b4 <foo\+0x2b4> |
||||||
|
+.*: a7 34 00 00 [ ]*jnle 2b8 <foo\+0x2b8> |
||||||
|
+.*: a7 94 00 00 [ ]*jnlh 2bc <foo\+0x2bc> |
||||||
|
+.*: a7 b4 00 00 [ ]*jnl 2c0 <foo\+0x2c0> |
||||||
|
+.*: a7 e4 00 00 [ ]*jno 2c4 <foo\+0x2c4> |
||||||
|
+.*: a7 d4 00 00 [ ]*jnh 2c8 <foo\+0x2c8> |
||||||
|
+.*: a7 74 00 00 [ ]*jne 2cc <foo\+0x2cc> |
||||||
|
+.*: a7 14 00 00 [ ]*jo 2d0 <foo\+0x2d0> |
||||||
|
+.*: a7 24 00 00 [ ]*jh 2d4 <foo\+0x2d4> |
||||||
|
+.*: a7 84 00 00 [ ]*je 2d8 <foo\+0x2d8> |
||||||
|
+.*: a7 04 00 00 [ ]*jnop 2dc <foo\+0x2dc> |
||||||
|
+.*: a7 14 00 00 [ ]*jo 2e0 <foo\+0x2e0> |
||||||
|
+.*: a7 24 00 00 [ ]*jh 2e4 <foo\+0x2e4> |
||||||
|
+.*: a7 24 00 00 [ ]*jh 2e8 <foo\+0x2e8> |
||||||
|
+.*: a7 34 00 00 [ ]*jnle 2ec <foo\+0x2ec> |
||||||
|
+.*: a7 44 00 00 [ ]*jl 2f0 <foo\+0x2f0> |
||||||
|
+.*: a7 44 00 00 [ ]*jl 2f4 <foo\+0x2f4> |
||||||
|
+.*: a7 54 00 00 [ ]*jnhe 2f8 <foo\+0x2f8> |
||||||
|
+.*: a7 64 00 00 [ ]*jlh 2fc <foo\+0x2fc> |
||||||
|
+.*: a7 74 00 00 [ ]*jne 300 <foo\+0x300> |
||||||
|
+.*: a7 74 00 00 [ ]*jne 304 <foo\+0x304> |
||||||
|
+.*: a7 84 00 00 [ ]*je 308 <foo\+0x308> |
||||||
|
+.*: a7 84 00 00 [ ]*je 30c <foo\+0x30c> |
||||||
|
+.*: a7 94 00 00 [ ]*jnlh 310 <foo\+0x310> |
||||||
|
+.*: a7 a4 00 00 [ ]*jhe 314 <foo\+0x314> |
||||||
|
+.*: a7 b4 00 00 [ ]*jnl 318 <foo\+0x318> |
||||||
|
+.*: a7 b4 00 00 [ ]*jnl 31c <foo\+0x31c> |
||||||
|
+.*: a7 c4 00 00 [ ]*jle 320 <foo\+0x320> |
||||||
|
+.*: a7 d4 00 00 [ ]*jnh 324 <foo\+0x324> |
||||||
|
+.*: a7 d4 00 00 [ ]*jnh 328 <foo\+0x328> |
||||||
|
+.*: a7 e4 00 00 [ ]*jno 32c <foo\+0x32c> |
||||||
|
+.*: a7 f4 00 00 [ ]*j 330 <foo\+0x330> |
||||||
|
.*: ed 65 af ff 00 18 [ ]*kdb %f6,4095\(%r5,%r10\) |
||||||
|
.*: b3 18 00 69 [ ]*kdbr %f6,%f9 |
||||||
|
.*: ed 65 af ff 00 08 [ ]*keb %f6,4095\(%r5,%r10\) |
||||||
|
@@ -483,4 +509,4 @@ Disassembly of section .text: |
||||||
|
.*: f8 58 5f ff af ff [ ]*zap 4095\(6,%r5\),4095\(9,%r10\) |
||||||
|
.*: b2 21 b0 69 [ ]*ipte %r6,%r9,%r11 |
||||||
|
.*: b2 21 bd 69 [ ]*ipte %r6,%r9,%r11,13 |
||||||
|
-.*: 07 07 [ ]*nopr %r7 |
||||||
|
+.*: 07 07 [ ]*nopr %r7 |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-g5.s binutils-2.35.1/gas/testsuite/gas/s390/esa-g5.s |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/esa-g5.s 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/esa-g5.s 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -72,10 +72,14 @@ foo: |
||||||
|
bpr %r9 |
||||||
|
br %r9 |
||||||
|
bras %r9,. |
||||||
|
+ jas %r6,. |
||||||
|
brc 6,. |
||||||
|
brct 6,. |
||||||
|
+ jct %r6,. |
||||||
|
brxh %r6,%r9,. |
||||||
|
+ jxh %r6,%r9,. |
||||||
|
brxle %r6,%r9,. |
||||||
|
+ jxle %r6,%r9,. |
||||||
|
bsa %r6,%r9 |
||||||
|
bsg %r6,%r9 |
||||||
|
bsm %r6,%r9 |
||||||
|
@@ -195,6 +199,28 @@ foo: |
||||||
|
jo . |
||||||
|
jp . |
||||||
|
jz . |
||||||
|
+ jnop . |
||||||
|
+ bro . |
||||||
|
+ brh . |
||||||
|
+ brp . |
||||||
|
+ brnle . |
||||||
|
+ brl . |
||||||
|
+ brm . |
||||||
|
+ brnhe . |
||||||
|
+ brlh . |
||||||
|
+ brne . |
||||||
|
+ brnz . |
||||||
|
+ bre . |
||||||
|
+ brz . |
||||||
|
+ brnlh . |
||||||
|
+ brhe . |
||||||
|
+ brnl . |
||||||
|
+ brnm . |
||||||
|
+ brle . |
||||||
|
+ brnh . |
||||||
|
+ brnp . |
||||||
|
+ brno . |
||||||
|
+ bru . |
||||||
|
kdb %f6,4095(%r5,%r10) |
||||||
|
kdbr %f6,%f9 |
||||||
|
keb %f6,4095(%r5,%r10) |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-z900.d binutils-2.35.1/gas/testsuite/gas/s390/esa-z900.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/esa-z900.d 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/esa-z900.d 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -6,29 +6,52 @@ |
||||||
|
Disassembly of section .text: |
||||||
|
|
||||||
|
.* <foo>: |
||||||
|
-.*: c0 f4 00 00 00 00 [ ]*jg 0 \<foo\> |
||||||
|
-.*: c0 14 00 00 00 00 [ ]*jgo 6 \<foo\+0x6> |
||||||
|
-.*: c0 24 00 00 00 00 [ ]*jgh c \<foo\+0xc> |
||||||
|
-.*: c0 24 00 00 00 00 [ ]*jgh 12 \<foo\+0x12> |
||||||
|
-.*: c0 34 00 00 00 00 [ ]*jgnle 18 \<foo\+0x18> |
||||||
|
-.*: c0 44 00 00 00 00 [ ]*jgl 1e \<foo\+0x1e> |
||||||
|
-.*: c0 44 00 00 00 00 [ ]*jgl 24 \<foo\+0x24> |
||||||
|
-.*: c0 54 00 00 00 00 [ ]*jgnhe 2a \<foo\+0x2a> |
||||||
|
-.*: c0 64 00 00 00 00 [ ]*jglh 30 \<foo\+0x30> |
||||||
|
-.*: c0 74 00 00 00 00 [ ]*jgne 36 \<foo\+0x36> |
||||||
|
-.*: c0 74 00 00 00 00 [ ]*jgne 3c \<foo\+0x3c> |
||||||
|
-.*: c0 84 00 00 00 00 [ ]*jge 42 \<foo\+0x42> |
||||||
|
-.*: c0 84 00 00 00 00 [ ]*jge 48 \<foo\+0x48> |
||||||
|
-.*: c0 94 00 00 00 00 [ ]*jgnlh 4e \<foo\+0x4e> |
||||||
|
-.*: c0 a4 00 00 00 00 [ ]*jghe 54 \<foo\+0x54> |
||||||
|
-.*: c0 b4 00 00 00 00 [ ]*jgnl 5a \<foo\+0x5a> |
||||||
|
-.*: c0 b4 00 00 00 00 [ ]*jgnl 60 \<foo\+0x60> |
||||||
|
-.*: c0 c4 00 00 00 00 [ ]*jgle 66 \<foo\+0x66> |
||||||
|
-.*: c0 d4 00 00 00 00 [ ]*jgnh 6c \<foo\+0x6c> |
||||||
|
-.*: c0 d4 00 00 00 00 [ ]*jgnh 72 \<foo\+0x72> |
||||||
|
-.*: c0 e4 00 00 00 00 [ ]*jgno 78 \<foo\+0x78> |
||||||
|
-.*: c0 f4 00 00 00 00 [ ]*jg 7e \<foo\+0x7e> |
||||||
|
-.*: c0 65 00 00 00 00 [ ]*brasl %r6,84 \<foo\+0x84> |
||||||
|
+.*: c0 f4 00 00 00 00 [ ]*jg 0 <foo> |
||||||
|
+.*: c0 04 00 00 00 00 [ ]*jgnop 6 <foo\+0x6> |
||||||
|
+.*: c0 14 00 00 00 00 [ ]*jgo c <foo\+0xc> |
||||||
|
+.*: c0 24 00 00 00 00 [ ]*jgh 12 <foo\+0x12> |
||||||
|
+.*: c0 24 00 00 00 00 [ ]*jgh 18 <foo\+0x18> |
||||||
|
+.*: c0 34 00 00 00 00 [ ]*jgnle 1e <foo\+0x1e> |
||||||
|
+.*: c0 44 00 00 00 00 [ ]*jgl 24 <foo\+0x24> |
||||||
|
+.*: c0 44 00 00 00 00 [ ]*jgl 2a <foo\+0x2a> |
||||||
|
+.*: c0 54 00 00 00 00 [ ]*jgnhe 30 <foo\+0x30> |
||||||
|
+.*: c0 64 00 00 00 00 [ ]*jglh 36 <foo\+0x36> |
||||||
|
+.*: c0 74 00 00 00 00 [ ]*jgne 3c <foo\+0x3c> |
||||||
|
+.*: c0 74 00 00 00 00 [ ]*jgne 42 <foo\+0x42> |
||||||
|
+.*: c0 84 00 00 00 00 [ ]*jge 48 <foo\+0x48> |
||||||
|
+.*: c0 84 00 00 00 00 [ ]*jge 4e <foo\+0x4e> |
||||||
|
+.*: c0 94 00 00 00 00 [ ]*jgnlh 54 <foo\+0x54> |
||||||
|
+.*: c0 a4 00 00 00 00 [ ]*jghe 5a <foo\+0x5a> |
||||||
|
+.*: c0 b4 00 00 00 00 [ ]*jgnl 60 <foo\+0x60> |
||||||
|
+.*: c0 b4 00 00 00 00 [ ]*jgnl 66 <foo\+0x66> |
||||||
|
+.*: c0 c4 00 00 00 00 [ ]*jgle 6c <foo\+0x6c> |
||||||
|
+.*: c0 d4 00 00 00 00 [ ]*jgnh 72 <foo\+0x72> |
||||||
|
+.*: c0 d4 00 00 00 00 [ ]*jgnh 78 <foo\+0x78> |
||||||
|
+.*: c0 e4 00 00 00 00 [ ]*jgno 7e <foo\+0x7e> |
||||||
|
+.*: c0 f4 00 00 00 00 [ ]*jg 84 <foo\+0x84> |
||||||
|
+.*: c0 14 00 00 00 00 [ ]*jgo 8a <foo\+0x8a> |
||||||
|
+.*: c0 24 00 00 00 00 [ ]*jgh 90 <foo\+0x90> |
||||||
|
+.*: c0 24 00 00 00 00 [ ]*jgh 96 <foo\+0x96> |
||||||
|
+.*: c0 34 00 00 00 00 [ ]*jgnle 9c <foo\+0x9c> |
||||||
|
+.*: c0 44 00 00 00 00 [ ]*jgl a2 <foo\+0xa2> |
||||||
|
+.*: c0 44 00 00 00 00 [ ]*jgl a8 <foo\+0xa8> |
||||||
|
+.*: c0 54 00 00 00 00 [ ]*jgnhe ae <foo\+0xae> |
||||||
|
+.*: c0 64 00 00 00 00 [ ]*jglh b4 <foo\+0xb4> |
||||||
|
+.*: c0 74 00 00 00 00 [ ]*jgne ba <foo\+0xba> |
||||||
|
+.*: c0 74 00 00 00 00 [ ]*jgne c0 <foo\+0xc0> |
||||||
|
+.*: c0 84 00 00 00 00 [ ]*jge c6 <foo\+0xc6> |
||||||
|
+.*: c0 84 00 00 00 00 [ ]*jge cc <foo\+0xcc> |
||||||
|
+.*: c0 94 00 00 00 00 [ ]*jgnlh d2 <foo\+0xd2> |
||||||
|
+.*: c0 a4 00 00 00 00 [ ]*jghe d8 <foo\+0xd8> |
||||||
|
+.*: c0 b4 00 00 00 00 [ ]*jgnl de <foo\+0xde> |
||||||
|
+.*: c0 b4 00 00 00 00 [ ]*jgnl e4 <foo\+0xe4> |
||||||
|
+.*: c0 c4 00 00 00 00 [ ]*jgle ea <foo\+0xea> |
||||||
|
+.*: c0 d4 00 00 00 00 [ ]*jgnh f0 <foo\+0xf0> |
||||||
|
+.*: c0 d4 00 00 00 00 [ ]*jgnh f6 <foo\+0xf6> |
||||||
|
+.*: c0 e4 00 00 00 00 [ ]*jgno fc <foo\+0xfc> |
||||||
|
+.*: c0 f4 00 00 00 00 [ ]*jg 102 <foo\+0x102> |
||||||
|
+.*: c0 65 00 00 00 00 [ ]*brasl %r6,108 <foo\+0x108> |
||||||
|
+.*: c0 65 00 00 00 00 [ ]*brasl %r6,10e <foo\+0x10e> |
||||||
|
.*: 01 0b [ ]*tam |
||||||
|
.*: 01 0c [ ]*sam24 |
||||||
|
.*: 01 0d [ ]*sam31 |
||||||
|
@@ -39,7 +62,7 @@ Disassembly of section .text: |
||||||
|
.*: b9 97 00 69 [ ]*dlr %r6,%r9 |
||||||
|
.*: b9 98 00 69 [ ]*alcr %r6,%r9 |
||||||
|
.*: b9 99 00 69 [ ]*slbr %r6,%r9 |
||||||
|
-.*: c0 60 00 00 00 00 [ ]*larl %r6,ac \<foo\+0xac\> |
||||||
|
+.*: c0 60 00 00 00 00 [ ]*larl %r6,136 <foo\+0x136> |
||||||
|
.*: e3 65 af ff 00 1e [ ]*lrv %r6,4095\(%r5,%r10\) |
||||||
|
.*: e3 65 af ff 00 1f [ ]*lrvh %r6,4095\(%r5,%r10\) |
||||||
|
.*: e3 65 af ff 00 3e [ ]*strv %r6,4095\(%r5,%r10\) |
||||||
|
@@ -49,3 +72,4 @@ Disassembly of section .text: |
||||||
|
.*: e3 65 af ff 00 98 [ ]*alc %r6,4095\(%r5,%r10\) |
||||||
|
.*: e3 65 af ff 00 99 [ ]*slb %r6,4095\(%r5,%r10\) |
||||||
|
.*: eb 69 5f ff 00 1d [ ]*rll %r6,%r9,4095\(%r5\) |
||||||
|
+.*: 07 07 [ ]*nopr %r7 |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-z900.s binutils-2.35.1/gas/testsuite/gas/s390/esa-z900.s |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/esa-z900.s 2021-03-25 14:35:41.037632927 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/esa-z900.s 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -1,6 +1,7 @@ |
||||||
|
.text |
||||||
|
foo: |
||||||
|
brcl 15,. |
||||||
|
+ jgnop . |
||||||
|
jgo . |
||||||
|
jgh . |
||||||
|
jgp . |
||||||
|
@@ -22,7 +23,29 @@ foo: |
||||||
|
jgnp . |
||||||
|
jgno . |
||||||
|
jg . |
||||||
|
+ brol . |
||||||
|
+ brhl . |
||||||
|
+ brpl . |
||||||
|
+ brnlel . |
||||||
|
+ brll . |
||||||
|
+ brml . |
||||||
|
+ brnhel . |
||||||
|
+ brlhl . |
||||||
|
+ brnel . |
||||||
|
+ brnzl . |
||||||
|
+ brel . |
||||||
|
+ brzl . |
||||||
|
+ brnlhl . |
||||||
|
+ brhel . |
||||||
|
+ brnll . |
||||||
|
+ brnml . |
||||||
|
+ brlel . |
||||||
|
+ brnhl . |
||||||
|
+ brnpl . |
||||||
|
+ brnol . |
||||||
|
+ brul . |
||||||
|
brasl %r6,. |
||||||
|
+ jasl %r6,. |
||||||
|
tam |
||||||
|
sam24 |
||||||
|
sam31 |
||||||
|
Only in binutils-2.35.1/gas/testsuite/gas/s390: s390.exp.rej |
||||||
|
Only in binutils-2.35.1/gas/testsuite/gas/s390: zarch-arch14.d |
||||||
|
Only in binutils-2.35.1/gas/testsuite/gas/s390: zarch-arch14.s |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z10.d binutils-2.35.1/gas/testsuite/gas/s390/zarch-z10.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-z10.d 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/zarch-z10.d 2021-03-25 14:39:49.766420543 +0000 |
||||||
|
@@ -362,11 +362,13 @@ Disassembly of section .text: |
||||||
|
.*: ec 67 d2 dc e6 54 [ ]*rnsbg %r6,%r7,210,220,230 |
||||||
|
.*: ec 67 d2 dc e6 57 [ ]*rxsbg %r6,%r7,210,220,230 |
||||||
|
.*: ec 67 d2 dc e6 56 [ ]*rosbg %r6,%r7,210,220,230 |
||||||
|
-.*: ec 67 d2 dc e6 55 [ ]*risbg %r6,%r7,210,220,230 |
||||||
|
-.*: c4 6f 00 00 00 00 [ ]*strl %r6,7f6 <foo\+0x7f6> |
||||||
|
-.*: c4 6b 00 00 00 00 [ ]*stgrl %r6,7fc <foo\+0x7fc> |
||||||
|
-.*: c4 67 00 00 00 00 [ ]*sthrl %r6,802 <foo\+0x802> |
||||||
|
-.*: c6 60 00 00 00 00 [ ]*exrl %r6,808 <foo\+0x808> |
||||||
|
+.*: ec 67 d2 14 e6 55 [ ]*risbg %r6,%r7,210,20,230 |
||||||
|
+.*: ec 67 d2 bc e6 55 [ ]*risbgz %r6,%r7,210,60,230 |
||||||
|
+.*: ec 67 d2 94 e6 55 [ ]*risbgz %r6,%r7,210,20,230 |
||||||
|
+.*: c4 6f 00 00 00 00 [ ]*strl %r6,802 <foo\+0x802> |
||||||
|
+.*: c4 6b 00 00 00 00 [ ]*stgrl %r6,808 <foo\+0x808> |
||||||
|
+.*: c4 67 00 00 00 00 [ ]*sthrl %r6,80e <foo\+0x80e> |
||||||
|
+.*: c6 60 00 00 00 00 [ ]*exrl %r6,814 <foo\+0x814> |
||||||
|
.*: af ee 6d 05 [ ]*mc 3333\(%r6\),238 |
||||||
|
.*: b9 a2 00 60 [ ]*ptf %r6 |
||||||
|
.*: b9 af 00 67 [ ]*pfmf %r6,%r7 |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z10.s binutils-2.35.1/gas/testsuite/gas/s390/zarch-z10.s |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-z10.s 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/zarch-z10.s 2021-03-25 14:39:49.766420543 +0000 |
||||||
|
@@ -356,7 +356,9 @@ foo: |
||||||
|
rnsbg %r6,%r7,210,220,230 |
||||||
|
rxsbg %r6,%r7,210,220,230 |
||||||
|
rosbg %r6,%r7,210,220,230 |
||||||
|
- risbg %r6,%r7,210,220,230 |
||||||
|
+ risbg %r6,%r7,210,20,230 |
||||||
|
+ risbg %r6,%r7,210,188,230 |
||||||
|
+ risbgz %r6,%r7,210,20,230 |
||||||
|
strl %r6,. |
||||||
|
stgrl %r6,. |
||||||
|
sthrl %r6,. |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z900.d binutils-2.35.1/gas/testsuite/gas/s390/zarch-z900.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-z900.d 2021-03-25 14:35:41.037632927 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/zarch-z900.d 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -20,8 +20,11 @@ Disassembly of section .text: |
||||||
|
.*: e3 95 af ff 00 46 [ ]*bctg %r9,4095\(%r5,%r10\) |
||||||
|
.*: b9 46 00 96 [ ]*bctgr %r9,%r6 |
||||||
|
.*: a7 97 00 00 [ ]*brctg %r9,40 \<foo\+0x40\> |
||||||
|
-.*: ec 96 00 00 00 44 [ ]*brxhg %r9,%r6,44 <foo\+0x44> |
||||||
|
-.*: ec 96 00 00 00 45 [ ]*brxlg %r9,%r6,4a <foo\+0x4a> |
||||||
|
+.*: a7 67 00 00 [ ]*brctg %r6,44 <foo\+0x44> |
||||||
|
+.*: ec 96 00 00 00 44 [ ]*brxhg %r9,%r6,48 <foo\+0x48> |
||||||
|
+.*: ec 69 00 00 00 44 [ ]*brxhg %r6,%r9,4e <foo\+0x4e> |
||||||
|
+.*: ec 96 00 00 00 45 [ ]*brxlg %r9,%r6,54 <foo\+0x54> |
||||||
|
+.*: ec 69 00 00 00 45 [ ]*brxlg %r6,%r9,5a <foo\+0x5a> |
||||||
|
.*: eb 96 5f ff 00 44 [ ]*bxhg %r9,%r6,4095\(%r5\) |
||||||
|
.*: eb 96 5f ff 00 45 [ ]*bxleg %r9,%r6,4095\(%r5\) |
||||||
|
.*: b3 a5 00 96 [ ]*cdgbr %f9,%r6 |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z900.s binutils-2.35.1/gas/testsuite/gas/s390/zarch-z900.s |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-z900.s 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/zarch-z900.s 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -14,8 +14,11 @@ foo: |
||||||
|
bctg %r9,4095(%r5,%r10) |
||||||
|
bctgr %r9,%r6 |
||||||
|
brctg %r9,. |
||||||
|
+ jctg %r6,. |
||||||
|
brxhg %r9,%r6,. |
||||||
|
+ jxhg %r6,%r9,. |
||||||
|
brxlg %r9,%r6,. |
||||||
|
+ jxleg %r6,%r9,. |
||||||
|
bxhg %r9,%r6,4095(%r5) |
||||||
|
bxleg %r9,%r6,4095(%r5) |
||||||
|
cdgbr %f9,%r6 |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.d binutils-2.35.1/gas/testsuite/gas/s390/zarch-zEC12.d |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.d 2021-03-25 14:35:41.037632927 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/zarch-zEC12.d 2021-03-25 14:39:49.766420543 +0000 |
||||||
|
@@ -47,6 +47,8 @@ Disassembly of section .text: |
||||||
|
.*: eb 6c 7a 4d fe 2b [ ]*clgtnh %r6,-5555\(%r7\) |
||||||
|
.*: eb 6c 7a 4d fe 2b [ ]*clgtnh %r6,-5555\(%r7\) |
||||||
|
.*: ec 67 0c 0d 0e 59 [ ]*risbgn %r6,%r7,12,13,14 |
||||||
|
+.*: ec 67 0c bc 0e 59 [ ]*risbgnz %r6,%r7,12,60,14 |
||||||
|
+.*: ec 67 0c 94 0e 59 [ ]*risbgnz %r6,%r7,12,20,14 |
||||||
|
.*: ed 0f 8f a0 6d aa [ ]*cdzt %f6,4000\(16,%r8\),13 |
||||||
|
.*: ed 21 8f a0 4d ab [ ]*cxzt %f4,4000\(34,%r8\),13 |
||||||
|
.*: ed 0f 8f a0 6d a8 [ ]*czdt %f6,4000\(16,%r8\),13 |
||||||
|
@@ -54,16 +56,16 @@ Disassembly of section .text: |
||||||
|
.*: b2 e8 c0 56 [ ]*ppa %r5,%r6,12 |
||||||
|
.*: b9 8f 60 59 [ ]*crdte %r5,%r6,%r9 |
||||||
|
.*: b9 8f 61 59 [ ]*crdte %r5,%r6,%r9,1 |
||||||
|
-.*: c5 a0 0c 00 00 0c [ ]*bprp 10,12a <bar>,12a <bar> |
||||||
|
-.*: c5 a0 00 00 00 00 [ ]*bprp 10,118 <foo\+0x118>,118 <foo\+0x118> |
||||||
|
-[ ]*119: R_390_PLT12DBL bar\+0x1 |
||||||
|
-[ ]*11b: R_390_PLT24DBL bar\+0x3 |
||||||
|
-.*: c7 a0 00 00 00 00 [ ]*bpp 10,11e <foo\+0x11e>,0 |
||||||
|
-[ ]*122: R_390_PLT16DBL bar\+0x4 |
||||||
|
-.*: c7 a0 00 00 00 00 [ ]*bpp 10,124 <foo\+0x124>,0 |
||||||
|
-[ ]*128: R_390_PC16DBL baz\+0x4 |
||||||
|
+.*: c5 a0 0c 00 00 0c [ ]*bprp 10,136 <bar>,136 <bar> |
||||||
|
+.*: c5 a0 00 00 00 00 [ ]*bprp 10,124 <foo\+0x124>,124 <foo\+0x124> |
||||||
|
+[ ]*125: R_390_PLT12DBL bar\+0x1 |
||||||
|
+[ ]*127: R_390_PLT24DBL bar\+0x3 |
||||||
|
+.*: c7 a0 00 00 00 00 [ ]*bpp 10,12a <foo\+0x12a>,0 |
||||||
|
+[ ]*12e: R_390_PLT16DBL bar\+0x4 |
||||||
|
+.*: c7 a0 00 00 00 00 [ ]*bpp 10,130 <foo\+0x130>,0 |
||||||
|
+[ ]*134: R_390_PC16DBL baz\+0x4 |
||||||
|
|
||||||
|
|
||||||
|
-000000000000012a <bar>: |
||||||
|
+0000000000000136 <bar>: |
||||||
|
|
||||||
|
.*: 07 07 [ ]*nopr %r7 |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.s binutils-2.35.1/gas/testsuite/gas/s390/zarch-zEC12.s |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.s 2021-03-25 14:35:41.038632922 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/zarch-zEC12.s 2021-03-25 14:39:49.766420543 +0000 |
||||||
|
@@ -44,6 +44,9 @@ foo: |
||||||
|
clgtnh %r6,-5555(%r7) |
||||||
|
|
||||||
|
risbgn %r6,%r7,12,13,14 |
||||||
|
+ risbgn %r6,%r7,12,188,14 |
||||||
|
+ risbgnz %r6,%r7,12,20,14 |
||||||
|
+ |
||||||
|
cdzt %f6,4000(16,%r8),13 |
||||||
|
cxzt %f4,4000(34,%r8),13 |
||||||
|
czdt %f6,4000(16,%r8),13 |
||||||
|
Only in binutils-2.35.1/include: ChangeLog.orig |
||||||
|
Only in binutils-2.35.1/include: ChangeLog.rej |
||||||
|
Only in binutils-2.35.1/include/opcode: s390.h.rej |
||||||
|
Only in binutils-2.35.1/ld: ChangeLog.orig |
||||||
|
Only in binutils-2.35.1/ld: ChangeLog.rej |
||||||
|
diff -rup binutils.orig/ld/testsuite/ld-s390/tlsbin_64.dd binutils-2.35.1/ld/testsuite/ld-s390/tlsbin_64.dd |
||||||
|
--- binutils.orig/ld/testsuite/ld-s390/tlsbin_64.dd 2021-03-25 14:35:40.826633955 +0000 |
||||||
|
+++ binutils-2.35.1/ld/testsuite/ld-s390/tlsbin_64.dd 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -87,26 +87,26 @@ Disassembly of section .text: |
||||||
|
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) |
||||||
|
# GD -> LE with global variable defined in executable |
||||||
|
+[0-9a-f]+: e3 20 d0 10 00 04 lg %r2,16\(%r13\) |
||||||
|
- +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xca> |
||||||
|
+ +[0-9a-f]+: c0 04 00 00 00 00 jgnop [0-9a-f]+ <fn2\+0xca> |
||||||
|
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) |
||||||
|
# GD -> LE with local variable defined in executable |
||||||
|
+[0-9a-f]+: e3 20 d0 18 00 04 lg %r2,24\(%r13\) |
||||||
|
- +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xda> |
||||||
|
+ +[0-9a-f]+: c0 04 00 00 00 00 jgnop [0-9a-f]+ <fn2\+0xda> |
||||||
|
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) |
||||||
|
# GD -> LE with hidden variable defined in executable |
||||||
|
+[0-9a-f]+: e3 20 d0 20 00 04 lg %r2,32\(%r13\) |
||||||
|
- +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xea> |
||||||
|
+ +[0-9a-f]+: c0 04 00 00 00 00 jgnop [0-9a-f]+ <fn2\+0xea> |
||||||
|
+[0-9a-f]+: 41 22 90 00 la %r2,0\(%r2,%r9\) |
||||||
|
# LD -> LE |
||||||
|
+[0-9a-f]+: e3 20 d0 28 00 04 lg %r2,40\(%r13\) |
||||||
|
- +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0xfa> |
||||||
|
+ +[0-9a-f]+: c0 04 00 00 00 00 jgnop [0-9a-f]+ <fn2\+0xfa> |
||||||
|
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\) |
||||||
|
+[0-9a-f]+: e3 40 d0 30 00 04 lg %r4,48\(%r13\) |
||||||
|
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\) |
||||||
|
+[0-9a-f]+: e3 40 d0 38 00 04 lg %r4,56\(%r13\) |
||||||
|
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\) |
||||||
|
+[0-9a-f]+: e3 20 d0 40 00 04 lg %r2,64\(%r13\) |
||||||
|
- +[0-9a-f]+: c0 04 00 00 00 00 brcl 0,[0-9a-f]+ <fn2\+0x11e> |
||||||
|
+ +[0-9a-f]+: c0 04 00 00 00 00 jgnop [0-9a-f]+ <fn2\+0x11e> |
||||||
|
+[0-9a-f]+: 41 32 90 00 la %r3,0\(%r2,%r9\) |
||||||
|
+[0-9a-f]+: e3 40 d0 48 00 04 lg %r4,72\(%r13\) |
||||||
|
+[0-9a-f]+: 41 54 30 00 la %r5,0\(%r4,%r3\) |
||||||
|
Only in binutils-2.35.1/opcodes: ChangeLog.orig |
||||||
|
Only in binutils-2.35.1/opcodes: ChangeLog.rej |
||||||
|
Only in binutils-2.35.1/opcodes: s390-mkopc.c.rej |
||||||
|
diff -rup binutils.orig/opcodes/s390-opc.c binutils-2.35.1/opcodes/s390-opc.c |
||||||
|
--- binutils.orig/opcodes/s390-opc.c 2021-03-25 14:35:40.719634477 +0000 |
||||||
|
+++ binutils-2.35.1/opcodes/s390-opc.c 2021-03-25 14:39:49.766420543 +0000 |
||||||
|
@@ -218,32 +218,34 @@ const struct s390_operand s390_operands[ |
||||||
|
{ 8, 8, 0 }, |
||||||
|
#define U8_16 68 /* 8 bit unsigned value starting at 16 */ |
||||||
|
{ 8, 16, 0 }, |
||||||
|
-#define U8_24 69 /* 8 bit unsigned value starting at 24 */ |
||||||
|
+#define U6_26 69 /* 6 bit unsigned value starting at 26 */ |
||||||
|
+ { 6, 26, 0 }, |
||||||
|
+#define U8_24 70 /* 8 bit unsigned value starting at 24 */ |
||||||
|
{ 8, 24, 0 }, |
||||||
|
-#define U8_28 70 /* 8 bit unsigned value starting at 28 */ |
||||||
|
+#define U8_28 71 /* 8 bit unsigned value starting at 28 */ |
||||||
|
{ 8, 28, 0 }, |
||||||
|
-#define U8_32 71 /* 8 bit unsigned value starting at 32 */ |
||||||
|
+#define U8_32 72 /* 8 bit unsigned value starting at 32 */ |
||||||
|
{ 8, 32, 0 }, |
||||||
|
-#define U12_16 72 /* 12 bit unsigned value starting at 16 */ |
||||||
|
+#define U12_16 73 /* 12 bit unsigned value starting at 16 */ |
||||||
|
{ 12, 16, 0 }, |
||||||
|
-#define U16_16 73 /* 16 bit unsigned value starting at 16 */ |
||||||
|
+#define U16_16 74 /* 16 bit unsigned value starting at 16 */ |
||||||
|
{ 16, 16, 0 }, |
||||||
|
-#define U16_32 74 /* 16 bit unsigned value starting at 32 */ |
||||||
|
+#define U16_32 75 /* 16 bit unsigned value starting at 32 */ |
||||||
|
{ 16, 32, 0 }, |
||||||
|
-#define U32_16 75 /* 32 bit unsigned value starting at 16 */ |
||||||
|
+#define U32_16 76 /* 32 bit unsigned value starting at 16 */ |
||||||
|
{ 32, 16, 0 }, |
||||||
|
|
||||||
|
/* PC-relative address operands. */ |
||||||
|
|
||||||
|
-#define J12_12 76 /* 12 bit PC relative offset at 12 */ |
||||||
|
+#define J12_12 77 /* 12 bit PC relative offset at 12 */ |
||||||
|
{ 12, 12, S390_OPERAND_PCREL }, |
||||||
|
-#define J16_16 77 /* 16 bit PC relative offset at 16 */ |
||||||
|
+#define J16_16 78 /* 16 bit PC relative offset at 16 */ |
||||||
|
{ 16, 16, S390_OPERAND_PCREL }, |
||||||
|
-#define J16_32 78 /* 16 bit PC relative offset at 32 */ |
||||||
|
+#define J16_32 79 /* 16 bit PC relative offset at 32 */ |
||||||
|
{ 16, 32, S390_OPERAND_PCREL }, |
||||||
|
-#define J24_24 79 /* 24 bit PC relative offset at 24 */ |
||||||
|
+#define J24_24 80 /* 24 bit PC relative offset at 24 */ |
||||||
|
{ 24, 24, S390_OPERAND_PCREL }, |
||||||
|
-#define J32_16 80 /* 32 bit PC relative offset at 16 */ |
||||||
|
+#define J32_16 81 /* 32 bit PC relative offset at 16 */ |
||||||
|
{ 32, 16, S390_OPERAND_PCREL }, |
||||||
|
|
||||||
|
}; |
||||||
|
@@ -313,6 +315,7 @@ const struct s390_operand s390_operands[ |
||||||
|
#define INSTR_RIE_R0U0 6, { R_8,U16_16,0,0,0,0 } /* e.g. clfitne */ |
||||||
|
#define INSTR_RIE_RUI0 6, { R_8,I16_16,U4_12,0,0,0 } /* e.g. lochi */ |
||||||
|
#define INSTR_RIE_RRUUU 6, { R_8,R_12,U8_16,U8_24,U8_32,0 } /* e.g. rnsbg */ |
||||||
|
+#define INSTR_RIE_RRUUU2 6, { R_8,R_12,U8_16,U6_26,U8_32,0 } /* e.g. rnsbg */ |
||||||
|
#define INSTR_RIL_0P 6, { J32_16,0,0,0,0 } /* e.g. jg */ |
||||||
|
#define INSTR_RIL_RP 6, { R_8,J32_16,0,0,0,0 } /* e.g. brasl */ |
||||||
|
#define INSTR_RIL_UP 6, { U4_8,J32_16,0,0,0,0 } /* e.g. brcl */ |
||||||
|
@@ -534,6 +537,7 @@ const struct s390_operand s390_operands[ |
||||||
|
#define MASK_RIE_R0U0 { 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff } |
||||||
|
#define MASK_RIE_RUI0 { 0xff, 0x00, 0x00, 0x00, 0xff, 0xff } |
||||||
|
#define MASK_RIE_RRUUU { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff } |
||||||
|
+#define MASK_RIE_RRUUU2 { 0xff, 0x00, 0x00, 0xc0, 0x00, 0xff } |
||||||
|
#define MASK_RIL_0P { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 } |
||||||
|
#define MASK_RIL_RP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } |
||||||
|
#define MASK_RIL_UP { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 } |
||||||
|
diff -rup binutils.orig/opcodes/s390-opc.txt binutils-2.35.1/opcodes/s390-opc.txt |
||||||
|
--- binutils.orig/opcodes/s390-opc.txt 2021-03-25 14:35:40.728634433 +0000 |
||||||
|
+++ binutils-2.35.1/opcodes/s390-opc.txt 2021-03-25 14:39:56.534387545 +0000 |
||||||
|
@@ -246,10 +246,14 @@ d7 xc SS_L0RDRD "exclusive OR" g5 esa,za |
||||||
|
f8 zap SS_LLRDRD "zero and add" g5 esa,zarch |
||||||
|
a70a ahi RI_RI "add halfword immediate" g5 esa,zarch |
||||||
|
84 brxh RSI_RRP "branch relative on index high" g5 esa,zarch |
||||||
|
+84 jxh RSI_RRP "branch relative on index high" g5 esa,zarch |
||||||
|
85 brxle RSI_RRP "branch relative on index low or equal" g5 esa,zarch |
||||||
|
+85 jxle RSI_RRP "branch relative on index low or equal" g5 esa,zarch |
||||||
|
a705 bras RI_RP "branch relative and save" g5 esa,zarch |
||||||
|
+a705 jas RI_RP "branch relative and save" g5 esa,zarch |
||||||
|
a704 brc RI_UP "branch relative on condition" g5 esa,zarch |
||||||
|
a706 brct RI_RP "branch relative on count" g5 esa,zarch |
||||||
|
+a706 jct RI_RP "branch relative on count" g5 esa,zarch |
||||||
|
b241 cksm RRE_RR "checksum" g5 esa,zarch |
||||||
|
a70e chi RI_RI "compare halfword immediate" g5 esa,zarch |
||||||
|
a9 clcle RS_RRRD "compare logical long extended" g5 esa,zarch |
||||||
|
@@ -268,8 +272,11 @@ a701 tml RI_RU "test under mask low" g5 |
||||||
|
4700 nop RX_0RRD "no operation" g5 esa,zarch optparm |
||||||
|
4700 b*8 RX_0RRD "conditional branch" g5 esa,zarch |
||||||
|
47f0 b RX_0RRD "unconditional branch" g5 esa,zarch |
||||||
|
+a704 jnop RI_0P "nop jump" g5 esa,zarch |
||||||
|
a704 j*8 RI_0P "conditional jump" g5 esa,zarch |
||||||
|
+a704 br*8 RI_0P "conditional jump" g5 esa,zarch |
||||||
|
a7f4 j RI_0P "unconditional jump" g5 esa,zarch |
||||||
|
+a7f4 bru RI_0P "unconditional jump" g5 esa,zarch |
||||||
|
b34a axbr RRE_FEFE "add extended bfp" g5 esa,zarch |
||||||
|
b31a adbr RRE_FF "add long bfp" g5 esa,zarch |
||||||
|
ed000000001a adb RXE_FRRD "add long bfp" g5 esa,zarch |
||||||
|
@@ -437,7 +444,9 @@ e3000000001b slgf RXE_RRRD "subtract log |
||||||
|
e3000000000c msg RXE_RRRD "multiply single 64" z900 zarch |
||||||
|
e3000000001c msgf RXE_RRRD "multiply single 64<32" z900 zarch |
||||||
|
ec0000000044 brxhg RIE_RRP "branch relative on index high 64" z900 zarch |
||||||
|
+ec0000000044 jxhg RIE_RRP "branch relative on index high 64" z900 zarch |
||||||
|
ec0000000045 brxlg RIE_RRP "branch relative on index low or equal 64" z900 zarch |
||||||
|
+ec0000000045 jxleg RIE_RRP "branch relative on index low or equal 64" z900 zarch |
||||||
|
eb0000000044 bxhg RSE_RRRD "branch on index high 64" z900 zarch |
||||||
|
eb0000000045 bxleg RSE_RRRD "branch on index low or equal 64" z900 zarch |
||||||
|
eb000000000c srlg RSE_RRRD "shift right single logical 64" z900 zarch |
||||||
|
@@ -462,10 +471,15 @@ eb0000000080 icmh RSE_RURD "insert chara |
||||||
|
a702 tmhh RI_RU "test under mask high high" z900 zarch |
||||||
|
a703 tmhl RI_RU "test under mask high low" z900 zarch |
||||||
|
c004 brcl RIL_UP "branch relative on condition long" z900 esa,zarch |
||||||
|
+c004 jgnop RIL_0P "nop jump long" z900 esa,zarch |
||||||
|
c004 jg*8 RIL_0P "conditional jump long" z900 esa,zarch |
||||||
|
+c004 br*8l RIL_0P "conditional jump long" z900 esa,zarch |
||||||
|
c0f4 jg RIL_0P "unconditional jump long" z900 esa,zarch |
||||||
|
+c0f4 brul RIL_0P "unconditional jump long" z900 esa,zarch |
||||||
|
c005 brasl RIL_RP "branch relative and save long" z900 esa,zarch |
||||||
|
+c005 jasl RIL_RP "branch relative and save long" z900 esa,zarch |
||||||
|
a707 brctg RI_RP "branch relative on count 64" z900 zarch |
||||||
|
+a707 jctg RI_RP "branch relative on count 64" z900 zarch |
||||||
|
a709 lghi RI_RI "load halfword immediate 64" z900 zarch |
||||||
|
a70b aghi RI_RI "add halfword immediate 64" z900 zarch |
||||||
|
a70d mghi RI_RI "multiply halfword immediate 64" z900 zarch |
||||||
|
@@ -956,6 +970,7 @@ ec0000000054 rnsbg RIE_RRUUU "rotate the |
||||||
|
ec0000000057 rxsbg RIE_RRUUU "rotate then exclusive or selected bits" z10 zarch |
||||||
|
ec0000000056 rosbg RIE_RRUUU "rotate then or selected bits" z10 zarch |
||||||
|
ec0000000055 risbg RIE_RRUUU "rotate then insert selected bits" z10 zarch |
||||||
|
+ec0000800055 risbgz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits" z10 zarch |
||||||
|
c40f strl RIL_RP "store relative long (32)" z10 zarch |
||||||
|
c40b stgrl RIL_RP "store relative long (64)" z10 zarch |
||||||
|
c407 sthrl RIL_RP "store halfword relative long" z10 zarch |
||||||
|
@@ -1139,6 +1154,7 @@ eb0000000023 clt$12 RSY_R0RD "compare lo |
||||||
|
eb000000002b clgt RSY_RURD "compare logical and trap 64 bit reg-mem" zEC12 zarch |
||||||
|
eb000000002b clgt$12 RSY_R0RD "compare logical and trap 64 bit reg-mem" zEC12 zarch |
||||||
|
ec0000000059 risbgn RIE_RRUUU "rotate then insert selected bits nocc" zEC12 zarch |
||||||
|
+ec0000800059 risbgnz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits nocc" zEC12 zarch |
||||||
|
ed00000000aa cdzt RSL_LRDFU "convert from zoned long" zEC12 zarch |
||||||
|
ed00000000ab cxzt RSL_LRDFEU "convert from zoned extended" zEC12 zarch |
||||||
|
ed00000000a8 czdt RSL_LRDFU "convert to zoned long" zEC12 zarch |
||||||
|
Only in binutils-2.35.1/opcodes: s390-opc.txt.orig |
||||||
|
Only in binutils-2.35.1/opcodes: s390-opc.txt.rej |
@ -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" |
@ -0,0 +1,180 @@ |
|||||||
|
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; |
||||||
|
--- binutils.orig/binutils/srconv.c 2020-07-24 15:37:25.847459208 +0100 |
||||||
|
+++ binutils-2.34.0/binutils/srconv.c 2020-07-24 15:39:12.853773423 +0100 |
||||||
|
@@ -316,6 +316,7 @@ wr_hd (struct coff_ofile *p) |
||||||
|
struct IT_hd hd; |
||||||
|
|
||||||
|
hd.spare1 = 0; |
||||||
|
+ hd.spare2 = 0; |
||||||
|
if (bfd_get_file_flags (abfd) & EXEC_P) |
||||||
|
hd.mt = MTYPE_ABS_LM; |
||||||
|
else |
@ -0,0 +1,181 @@ |
|||||||
|
diff -rup binutils.orig/gold/testsuite/gnu_property_a.S binutils-2.35/gold/testsuite/gnu_property_a.S |
||||||
|
--- binutils.orig/gold/testsuite/gnu_property_a.S 2021-01-18 14:01:41.228809868 +0000 |
||||||
|
+++ binutils-2.35/gold/testsuite/gnu_property_a.S 2021-01-18 14:01:52.542736705 +0000 |
||||||
|
@@ -1,8 +1,8 @@ |
||||||
|
#define NT_GNU_PROPERTY_TYPE_0 5 |
||||||
|
|
||||||
|
#define GNU_PROPERTY_STACK_SIZE 1 |
||||||
|
-#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000 |
||||||
|
-#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001 |
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002 |
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002 |
||||||
|
#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 |
||||||
|
|
||||||
|
#if __SIZEOF_PTRDIFF_T__ == 8 |
||||||
|
diff -rup binutils.orig/gold/testsuite/gnu_property_b.S binutils-2.35/gold/testsuite/gnu_property_b.S |
||||||
|
--- binutils.orig/gold/testsuite/gnu_property_b.S 2021-01-18 14:01:41.233809836 +0000 |
||||||
|
+++ binutils-2.35/gold/testsuite/gnu_property_b.S 2021-01-18 14:01:52.542736705 +0000 |
||||||
|
@@ -2,8 +2,8 @@ |
||||||
|
|
||||||
|
#define GNU_PROPERTY_STACK_SIZE 1 |
||||||
|
#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 |
||||||
|
-#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000 |
||||||
|
-#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001 |
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002 |
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002 |
||||||
|
#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 |
||||||
|
|
||||||
|
#if __SIZEOF_PTRDIFF_T__ == 8 |
||||||
|
diff -rup binutils.orig/gold/testsuite/gnu_property_c.S binutils-2.35/gold/testsuite/gnu_property_c.S |
||||||
|
--- binutils.orig/gold/testsuite/gnu_property_c.S 2021-01-18 14:01:41.232809843 +0000 |
||||||
|
+++ binutils-2.35/gold/testsuite/gnu_property_c.S 2021-01-18 14:01:52.542736705 +0000 |
||||||
|
@@ -2,8 +2,8 @@ |
||||||
|
|
||||||
|
#define GNU_PROPERTY_STACK_SIZE 1 |
||||||
|
#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 |
||||||
|
-#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000 |
||||||
|
-#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001 |
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002 |
||||||
|
+#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002 |
||||||
|
#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 |
||||||
|
|
||||||
|
#if __SIZEOF_PTRDIFF_T__ == 8 |
||||||
|
diff -rup binutils.orig/gold/testsuite/gnu_property_test.sh binutils-2.35/gold/testsuite/gnu_property_test.sh |
||||||
|
--- binutils.orig/gold/testsuite/gnu_property_test.sh 2021-01-18 14:01:41.236809817 +0000 |
||||||
|
+++ binutils-2.35/gold/testsuite/gnu_property_test.sh 2021-01-18 14:01:52.543736699 +0000 |
||||||
|
@@ -57,8 +57,8 @@ check_count gnu_property_test.stdout "GN |
||||||
|
|
||||||
|
check gnu_property_test.stdout "stack size: 0x111100" |
||||||
|
check gnu_property_test.stdout "no copy on protected" |
||||||
|
-check gnu_property_test.stdout "x86 ISA used: i486, SSE2, SSE4_2, AVX512CD" |
||||||
|
-check gnu_property_test.stdout "x86 ISA needed: i486, SSE2, SSE4_2, AVX512CD" |
||||||
|
+check gnu_property_test.stdout "x86 ISA used: x86-64-v2, <unknown: 10>, <unknown: 100>, <unknown: 1000>" |
||||||
|
+check gnu_property_test.stdout "x86 ISA needed: x86-64-v2, <unknown: 10>, <unknown: 100>, <unknown: 1000>" |
||||||
|
check gnu_property_test.stdout "x86 feature: IBT" |
||||||
|
|
||||||
|
exit 0 |
||||||
|
diff -rup binutils.orig/gold/x86_64.cc binutils-2.35/gold/x86_64.cc |
||||||
|
--- binutils.orig/gold/x86_64.cc 2021-01-18 14:01:41.225809888 +0000 |
||||||
|
+++ binutils-2.35/gold/x86_64.cc 2021-01-18 14:01:52.543736699 +0000 |
||||||
|
@@ -706,8 +706,9 @@ class Target_x86_64 : public Sized_targe |
||||||
|
rela_irelative_(NULL), copy_relocs_(elfcpp::R_X86_64_COPY), |
||||||
|
got_mod_index_offset_(-1U), tlsdesc_reloc_info_(), |
||||||
|
tls_base_symbol_defined_(false), isa_1_used_(0), isa_1_needed_(0), |
||||||
|
- feature_1_(0), object_isa_1_used_(0), object_feature_1_(0), |
||||||
|
- seen_first_object_(false) |
||||||
|
+ feature_1_(0), feature_2_used_(0), feature_2_needed_(0), |
||||||
|
+ object_isa_1_used_(0), object_feature_1_(0), |
||||||
|
+ object_feature_2_used_(0), seen_first_object_(false) |
||||||
|
{ } |
||||||
|
|
||||||
|
// Hook for a new output section. |
||||||
|
@@ -1382,6 +1383,8 @@ class Target_x86_64 : public Sized_targe |
||||||
|
uint32_t isa_1_used_; |
||||||
|
uint32_t isa_1_needed_; |
||||||
|
uint32_t feature_1_; |
||||||
|
+ uint32_t feature_2_used_; |
||||||
|
+ uint32_t feature_2_needed_; |
||||||
|
// Target-specific properties from the current object. |
||||||
|
// These bits get ORed into ISA_1_USED_ after all properties for the object |
||||||
|
// have been processed. But if either is all zeroes (as when the property |
||||||
|
@@ -1391,6 +1394,7 @@ class Target_x86_64 : public Sized_targe |
||||||
|
// These bits get ANDed into FEATURE_1_ after all properties for the object |
||||||
|
// have been processed. |
||||||
|
uint32_t object_feature_1_; |
||||||
|
+ uint32_t object_feature_2_used_; |
||||||
|
// Whether we have seen our first object, for use in initializing FEATURE_1_. |
||||||
|
bool seen_first_object_; |
||||||
|
}; |
||||||
|
@@ -1594,9 +1598,15 @@ Target_x86_64<size>::record_gnu_property |
||||||
|
|
||||||
|
switch (pr_type) |
||||||
|
{ |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_ISA_1_USED: |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED: |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED: |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED: |
||||||
|
case elfcpp::GNU_PROPERTY_X86_ISA_1_USED: |
||||||
|
case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED: |
||||||
|
case elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND: |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED: |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED: |
||||||
|
if (pr_datasz != 4) |
||||||
|
{ |
||||||
|
gold_warning(_("%s: corrupt .note.gnu.property section " |
||||||
|
@@ -1625,6 +1635,12 @@ Target_x86_64<size>::record_gnu_property |
||||||
|
// If we see multiple feature props in one object, OR them together. |
||||||
|
this->object_feature_1_ |= val; |
||||||
|
break; |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED: |
||||||
|
+ this->object_feature_2_used_ |= val; |
||||||
|
+ break; |
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED: |
||||||
|
+ this->feature_2_needed_ |= val; |
||||||
|
+ break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@@ -1642,15 +1658,23 @@ Target_x86_64<size>::merge_gnu_propertie |
||||||
|
else if (this->isa_1_used_ != 0) |
||||||
|
this->isa_1_used_ |= this->object_isa_1_used_; |
||||||
|
this->feature_1_ &= this->object_feature_1_; |
||||||
|
+ // If any object is missing the FEATURE_2_USED property, we must |
||||||
|
+ // omit it from the output file. |
||||||
|
+ if (this->object_feature_2_used_ == 0) |
||||||
|
+ this->feature_2_used_ = 0; |
||||||
|
+ else if (this->feature_2_used_ != 0) |
||||||
|
+ this->feature_2_used_ |= this->object_feature_2_used_; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
this->isa_1_used_ = this->object_isa_1_used_; |
||||||
|
this->feature_1_ = this->object_feature_1_; |
||||||
|
+ this->feature_2_used_ = this->object_feature_2_used_; |
||||||
|
this->seen_first_object_ = true; |
||||||
|
} |
||||||
|
this->object_isa_1_used_ = 0; |
||||||
|
this->object_feature_1_ = 0; |
||||||
|
+ this->object_feature_2_used_ = 0; |
||||||
|
} |
||||||
|
|
||||||
|
static inline void |
||||||
|
@@ -1676,6 +1700,12 @@ Target_x86_64<size>::do_finalize_gnu_pro |
||||||
|
if (this->feature_1_ != 0) |
||||||
|
add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND, |
||||||
|
this->feature_1_); |
||||||
|
+ if (this->feature_2_used_ != 0) |
||||||
|
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_2_USED, |
||||||
|
+ this->feature_2_used_); |
||||||
|
+ if (this->feature_2_needed_ != 0) |
||||||
|
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_FEATURE_2_NEEDED, |
||||||
|
+ this->feature_2_needed_); |
||||||
|
} |
||||||
|
|
||||||
|
// Write the first three reserved words of the .got.plt section. |
||||||
|
--- binutils.orig/elfcpp/elfcpp.h 2021-01-18 14:01:40.778812778 +0000 |
||||||
|
+++ binutils-2.35/elfcpp/elfcpp.h 2021-01-18 14:50:05.144035077 +0000 |
||||||
|
@@ -1009,9 +1009,21 @@ enum |
||||||
|
GNU_PROPERTY_STACK_SIZE = 1, |
||||||
|
GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2, |
||||||
|
GNU_PROPERTY_LOPROC = 0xc0000000, |
||||||
|
- GNU_PROPERTY_X86_ISA_1_USED = 0xc0000000, |
||||||
|
- GNU_PROPERTY_X86_ISA_1_NEEDED = 0xc0000001, |
||||||
|
- GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002, |
||||||
|
+ GNU_PROPERTY_X86_COMPAT_ISA_1_USED = 0xc0000000, |
||||||
|
+ GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED = 0xc0000001, |
||||||
|
+ GNU_PROPERTY_X86_UINT32_AND_LO = 0xc0000002, |
||||||
|
+ GNU_PROPERTY_X86_UINT32_AND_HI = 0xc0007fff, |
||||||
|
+ GNU_PROPERTY_X86_UINT32_OR_LO = 0xc0008000, |
||||||
|
+ GNU_PROPERTY_X86_UINT32_OR_HI = 0xc000ffff, |
||||||
|
+ GNU_PROPERTY_X86_UINT32_OR_AND_LO = 0xc0010000, |
||||||
|
+ GNU_PROPERTY_X86_UINT32_OR_AND_HI = 0xc0017fff, |
||||||
|
+ GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED = GNU_PROPERTY_X86_UINT32_OR_LO + 0, |
||||||
|
+ GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED = GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0, |
||||||
|
+ GNU_PROPERTY_X86_FEATURE_1_AND = GNU_PROPERTY_X86_UINT32_AND_LO + 0, |
||||||
|
+ GNU_PROPERTY_X86_ISA_1_NEEDED = GNU_PROPERTY_X86_UINT32_OR_LO + 2, |
||||||
|
+ GNU_PROPERTY_X86_FEATURE_2_NEEDED = GNU_PROPERTY_X86_UINT32_OR_LO + 1, |
||||||
|
+ GNU_PROPERTY_X86_ISA_1_USED = GNU_PROPERTY_X86_UINT32_OR_AND_LO + 2, |
||||||
|
+ GNU_PROPERTY_X86_FEATURE_2_USED = GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1, |
||||||
|
GNU_PROPERTY_HIPROC = 0xdfffffff, |
||||||
|
GNU_PROPERTY_LOUSER = 0xe0000000, |
||||||
|
GNU_PROPERTY_HIUSER = 0xffffffff |
@ -0,0 +1,19 @@ |
|||||||
|
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) |
@ -0,0 +1,66 @@ |
|||||||
|
Only in binutils-2.34/gold: autom4te.cache |
||||||
|
diff -rup binutils.orig/gold/configure binutils-2.34/gold/configure |
||||||
|
--- binutils.orig/gold/configure 2020-04-20 12:35:13.048297305 +0100 |
||||||
|
+++ binutils-2.34/gold/configure 2020-04-20 14:02:06.743725696 +0100 |
||||||
|
@@ -5180,7 +5180,8 @@ for targ in $target $canon_targets; do |
||||||
|
. ${srcdir}/configure.tgt |
||||||
|
|
||||||
|
if test "$targ_obj" = "UNKNOWN"; then |
||||||
|
- as_fn_error $? "\"unsupported target $targ\"" "$LINENO" 5 |
||||||
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"unsupported target $targ\"" >&5 |
||||||
|
+$as_echo "$as_me: WARNING: \"unsupported target $targ\"" >&2;} |
||||||
|
else |
||||||
|
targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)" |
||||||
|
if test "$targ_extra_obj" != ""; then |
||||||
|
diff -rup binutils.orig/gold/configure.ac binutils-2.34/gold/configure.ac |
||||||
|
--- binutils.orig/gold/configure.ac 2020-04-20 12:35:13.050297291 +0100 |
||||||
|
+++ binutils-2.34/gold/configure.ac 2020-04-20 14:01:46.435868770 +0100 |
||||||
|
@@ -181,7 +181,7 @@ for targ in $target $canon_targets; do |
||||||
|
. ${srcdir}/configure.tgt |
||||||
|
|
||||||
|
if test "$targ_obj" = "UNKNOWN"; then |
||||||
|
- AC_MSG_ERROR("unsupported target $targ") |
||||||
|
+ AC_MSG_WARN("unsupported target $targ") |
||||||
|
else |
||||||
|
targetobjs="$targetobjs ${targ_obj}.\$(OBJEXT)" |
||||||
|
if test "$targ_extra_obj" != ""; then |
||||||
|
--- binutils.orig/ld/configure.tgt 2020-04-20 12:35:12.465301359 +0100 |
||||||
|
+++ binutils-2.34/ld/configure.tgt 2020-04-20 14:17:52.123066333 +0100 |
||||||
|
@@ -220,7 +220,7 @@ bfin-*-linux-uclibc*) targ_emul=elf32bfi |
||||||
|
targ_extra_emuls="elf32bfin" |
||||||
|
targ_extra_libpath=$targ_extra_emuls |
||||||
|
;; |
||||||
|
-bpf-*-*) targ_emul=elf64bpf |
||||||
|
+bpf-* | bpf-*-*) targ_emul=elf64bpf |
||||||
|
;; |
||||||
|
cr16-*-elf*) targ_emul=elf32cr16 |
||||||
|
;; |
||||||
|
@@ -1026,7 +1026,7 @@ z8k-*-coff) targ_emul=z8002 |
||||||
|
targ_extra_ofiles= |
||||||
|
;; |
||||||
|
*) |
||||||
|
- echo 2>&1 "*** ld does not support target ${targ}" |
||||||
|
+ echo 2>&1 "*** ld does not support target '${targ}' NO REALLY" |
||||||
|
echo 2>&1 "*** see ld/configure.tgt for supported targets" |
||||||
|
exit 1 |
||||||
|
|
||||||
|
--- binutils.orig/bfd/config.bfd 2020-04-20 12:35:13.038297375 +0100 |
||||||
|
+++ binutils-2.34/bfd/config.bfd 2020-04-20 14:25:26.452869193 +0100 |
||||||
|
@@ -473,7 +473,7 @@ case "${targ}" in |
||||||
|
;; |
||||||
|
|
||||||
|
#ifdef BFD64 |
||||||
|
- bpf-*-none) |
||||||
|
+ bpf-*-none | bpf-*) |
||||||
|
targ_defvec=bpf_elf64_le_vec |
||||||
|
targ_selvecs=bpf_elf64_be_vec |
||||||
|
targ_underscore=yes |
||||||
|
@@ -1427,7 +1427,7 @@ case "${targ}" in |
||||||
|
;; |
||||||
|
|
||||||
|
*) |
||||||
|
- echo 1>&2 "*** BFD does not support target ${targ}." |
||||||
|
+ echo 1>&2 "*** BFD does not support target '${targ}'. Honest." |
||||||
|
echo 1>&2 "*** Look in bfd/config.bfd for supported targets." |
||||||
|
exit 1 |
||||||
|
;; |
@ -0,0 +1,60 @@ |
|||||||
|
--- binutils.orig/ld/scripttempl/DWARF.sc 2021-02-01 10:29:33.596729908 +0000 |
||||||
|
+++ binutils-2.35.1/ld/scripttempl/DWARF.sc 2021-02-01 10:30:00.454552083 +0000 |
||||||
|
@@ -1,4 +1,4 @@ |
||||||
|
-# Copyright (C) 2014-2020 Free Software Foundation, Inc. |
||||||
|
+# Copyright (C) 2014-2021 Free Software Foundation, Inc. |
||||||
|
# |
||||||
|
# Copying and distribution of this file, with or without modification, |
||||||
|
# are permitted in any medium without royalty provided the copyright |
||||||
|
@@ -9,19 +9,19 @@ cat <<EOF |
||||||
|
Symbols in the DWARF debugging sections are relative to the beginning |
||||||
|
of the section so we begin them at 0. */ |
||||||
|
|
||||||
|
- /* DWARF 1 */ |
||||||
|
+ /* DWARF 1. */ |
||||||
|
.debug 0 : { *(.debug) } |
||||||
|
.line 0 : { *(.line) } |
||||||
|
|
||||||
|
- /* GNU DWARF 1 extensions */ |
||||||
|
+ /* GNU DWARF 1 extensions. */ |
||||||
|
.debug_srcinfo 0 : { *(.debug_srcinfo) } |
||||||
|
.debug_sfnames 0 : { *(.debug_sfnames) } |
||||||
|
|
||||||
|
- /* DWARF 1.1 and DWARF 2 */ |
||||||
|
+ /* DWARF 1.1 and DWARF 2. */ |
||||||
|
.debug_aranges 0 : { *(.debug_aranges) } |
||||||
|
.debug_pubnames 0 : { *(.debug_pubnames) } |
||||||
|
|
||||||
|
- /* DWARF 2 */ |
||||||
|
+ /* DWARF 2. */ |
||||||
|
.debug_info 0 : { *(.debug_info${RELOCATING+ .gnu.linkonce.wi.*}) } |
||||||
|
.debug_abbrev 0 : { *(.debug_abbrev) } |
||||||
|
.debug_line 0 : { *(.debug_line${RELOCATING+ .debug_line.* .debug_line_end}) } |
||||||
|
@@ -30,17 +30,23 @@ cat <<EOF |
||||||
|
.debug_loc 0 : { *(.debug_loc) } |
||||||
|
.debug_macinfo 0 : { *(.debug_macinfo) } |
||||||
|
|
||||||
|
- /* SGI/MIPS DWARF 2 extensions */ |
||||||
|
+ /* SGI/MIPS DWARF 2 extensions. */ |
||||||
|
.debug_weaknames 0 : { *(.debug_weaknames) } |
||||||
|
.debug_funcnames 0 : { *(.debug_funcnames) } |
||||||
|
.debug_typenames 0 : { *(.debug_typenames) } |
||||||
|
.debug_varnames 0 : { *(.debug_varnames) } |
||||||
|
|
||||||
|
- /* DWARF 3 */ |
||||||
|
+ /* DWARF 3. */ |
||||||
|
.debug_pubtypes 0 : { *(.debug_pubtypes) } |
||||||
|
.debug_ranges 0 : { *(.debug_ranges) } |
||||||
|
|
||||||
|
- /* DWARF Extension. */ |
||||||
|
- .debug_macro 0 : { *(.debug_macro) } |
||||||
|
+ /* DWARF 5. */ |
||||||
|
.debug_addr 0 : { *(.debug_addr) } |
||||||
|
+ .debug_line_str 0 : { *(.debug_line_str) } |
||||||
|
+ .debug_loclists 0 : { *(.debug_loclists) } |
||||||
|
+ .debug_macro 0 : { *(.debug_macro) } |
||||||
|
+ .debug_names 0 : { *(.debug_names) } |
||||||
|
+ .debug_rnglists 0 : { *(.debug_rnglists) } |
||||||
|
+ .debug_str_offsets 0 : { *(.debug_str_offsets) } |
||||||
|
+ .debug_sup 0 : { *(.debug_sup) } |
||||||
|
EOF |
@ -0,0 +1,182 @@ |
|||||||
|
--- binutils.orig/bfd/elflink.c 2020-11-03 11:59:59.966565009 +0000 |
||||||
|
+++ binutils-2.35.1/bfd/elflink.c 2020-11-03 12:07:34.691991602 +0000 |
||||||
|
@@ -4477,7 +4477,12 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
h = (struct elf_link_hash_entry *) p; |
||||||
|
entsize += htab->root.table.entsize; |
||||||
|
if (h->root.type == bfd_link_hash_warning) |
||||||
|
- entsize += htab->root.table.entsize; |
||||||
|
+ { |
||||||
|
+ entsize += htab->root.table.entsize; |
||||||
|
+ h = (struct elf_link_hash_entry *) h->root.u.i.link; |
||||||
|
+ } |
||||||
|
+ if (h->root.type == bfd_link_hash_common) |
||||||
|
+ entsize += sizeof (*h->root.u.c.p); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@@ -4521,14 +4526,20 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
|
||||||
|
for (p = htab->root.table.table[i]; p != NULL; p = p->next) |
||||||
|
{ |
||||||
|
- memcpy (old_ent, p, htab->root.table.entsize); |
||||||
|
- old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
h = (struct elf_link_hash_entry *) p; |
||||||
|
+ memcpy (old_ent, h, htab->root.table.entsize); |
||||||
|
+ old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
if (h->root.type == bfd_link_hash_warning) |
||||||
|
{ |
||||||
|
- memcpy (old_ent, h->root.u.i.link, htab->root.table.entsize); |
||||||
|
+ h = (struct elf_link_hash_entry *) h->root.u.i.link; |
||||||
|
+ memcpy (old_ent, h, htab->root.table.entsize); |
||||||
|
old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
} |
||||||
|
+ if (h->root.type == bfd_link_hash_common) |
||||||
|
+ { |
||||||
|
+ memcpy (old_ent, h->root.u.c.p, sizeof (*h->root.u.c.p)); |
||||||
|
+ old_ent = (char *) old_ent + sizeof (*h->root.u.c.p); |
||||||
|
+ } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
@@ -4899,7 +4910,8 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
} |
||||||
|
|
||||||
|
if (! (_bfd_generic_link_add_one_symbol |
||||||
|
- (info, abfd, name, flags, sec, value, NULL, FALSE, bed->collect, |
||||||
|
+ (info, abfd, name, flags, sec, value, |
||||||
|
+ NULL, FALSE, bed->collect, |
||||||
|
(struct bfd_link_hash_entry **) sym_hash))) |
||||||
|
goto error_free_vers; |
||||||
|
|
||||||
|
@@ -4970,11 +4982,10 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
object and a shared object. */ |
||||||
|
bfd_boolean dynsym = FALSE; |
||||||
|
|
||||||
|
- /* Plugin symbols aren't normal. Don't set def_regular or |
||||||
|
- ref_regular for them, or make them dynamic. */ |
||||||
|
+ /* Plugin symbols aren't normal. Don't set def/ref flags. */ |
||||||
|
if ((abfd->flags & BFD_PLUGIN) != 0) |
||||||
|
; |
||||||
|
- else if (! dynamic) |
||||||
|
+ else if (!dynamic) |
||||||
|
{ |
||||||
|
if (! definition) |
||||||
|
{ |
||||||
|
@@ -4991,14 +5002,6 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
h->ref_dynamic = 1; |
||||||
|
} |
||||||
|
} |
||||||
|
- |
||||||
|
- /* If the indirect symbol has been forced local, don't |
||||||
|
- make the real symbol dynamic. */ |
||||||
|
- if ((h == hi || !hi->forced_local) |
||||||
|
- && (bfd_link_dll (info) |
||||||
|
- || h->def_dynamic |
||||||
|
- || h->ref_dynamic)) |
||||||
|
- dynsym = TRUE; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
@@ -5012,14 +5015,25 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
h->def_dynamic = 1; |
||||||
|
hi->def_dynamic = 1; |
||||||
|
} |
||||||
|
+ } |
||||||
|
|
||||||
|
- /* If the indirect symbol has been forced local, don't |
||||||
|
- make the real symbol dynamic. */ |
||||||
|
- if ((h == hi || !hi->forced_local) |
||||||
|
- && (h->def_regular |
||||||
|
- || h->ref_regular |
||||||
|
- || (h->is_weakalias |
||||||
|
- && weakdef (h)->dynindx != -1))) |
||||||
|
+ /* If an indirect symbol has been forced local, don't |
||||||
|
+ make the real symbol dynamic. */ |
||||||
|
+ if (h != hi && hi->forced_local) |
||||||
|
+ ; |
||||||
|
+ else if (!dynamic) |
||||||
|
+ { |
||||||
|
+ if (bfd_link_dll (info) |
||||||
|
+ || h->def_dynamic |
||||||
|
+ || h->ref_dynamic) |
||||||
|
+ dynsym = TRUE; |
||||||
|
+ } |
||||||
|
+ else |
||||||
|
+ { |
||||||
|
+ if (h->def_regular |
||||||
|
+ || h->ref_regular |
||||||
|
+ || (h->is_weakalias |
||||||
|
+ && weakdef (h)->dynindx != -1)) |
||||||
|
dynsym = TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
@@ -5214,6 +5228,9 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
&& definition |
||||||
|
&& ((dynsym |
||||||
|
&& h->ref_regular_nonweak) |
||||||
|
+ || (old_bfd != NULL |
||||||
|
+ && (old_bfd->flags & BFD_PLUGIN) != 0 |
||||||
|
+ && bind != STB_WEAK) |
||||||
|
|| (h->ref_dynamic_nonweak |
||||||
|
&& (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0 |
||||||
|
&& !on_needed_list (elf_dt_name (abfd), |
||||||
|
@@ -5338,49 +5355,31 @@ elf_link_add_object_symbols (bfd *abfd, |
||||||
|
{ |
||||||
|
struct bfd_hash_entry *p; |
||||||
|
struct elf_link_hash_entry *h; |
||||||
|
- bfd_size_type size; |
||||||
|
- unsigned int alignment_power; |
||||||
|
unsigned int non_ir_ref_dynamic; |
||||||
|
|
||||||
|
for (p = htab->root.table.table[i]; p != NULL; p = p->next) |
||||||
|
{ |
||||||
|
- h = (struct elf_link_hash_entry *) p; |
||||||
|
- if (h->root.type == bfd_link_hash_warning) |
||||||
|
- h = (struct elf_link_hash_entry *) h->root.u.i.link; |
||||||
|
- |
||||||
|
- /* Preserve the maximum alignment and size for common |
||||||
|
- symbols even if this dynamic lib isn't on DT_NEEDED |
||||||
|
- since it can still be loaded at run time by another |
||||||
|
- dynamic lib. */ |
||||||
|
- if (h->root.type == bfd_link_hash_common) |
||||||
|
- { |
||||||
|
- size = h->root.u.c.size; |
||||||
|
- alignment_power = h->root.u.c.p->alignment_power; |
||||||
|
- } |
||||||
|
- else |
||||||
|
- { |
||||||
|
- size = 0; |
||||||
|
- alignment_power = 0; |
||||||
|
- } |
||||||
|
/* Preserve non_ir_ref_dynamic so that this symbol |
||||||
|
will be exported when the dynamic lib becomes needed |
||||||
|
in the second pass. */ |
||||||
|
+ h = (struct elf_link_hash_entry *) p; |
||||||
|
+ if (h->root.type == bfd_link_hash_warning) |
||||||
|
+ h = (struct elf_link_hash_entry *) h->root.u.i.link; |
||||||
|
non_ir_ref_dynamic = h->root.non_ir_ref_dynamic; |
||||||
|
- memcpy (p, old_ent, htab->root.table.entsize); |
||||||
|
- old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
+ |
||||||
|
h = (struct elf_link_hash_entry *) p; |
||||||
|
+ memcpy (h, old_ent, htab->root.table.entsize); |
||||||
|
+ old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
if (h->root.type == bfd_link_hash_warning) |
||||||
|
{ |
||||||
|
- memcpy (h->root.u.i.link, old_ent, htab->root.table.entsize); |
||||||
|
- old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
h = (struct elf_link_hash_entry *) h->root.u.i.link; |
||||||
|
+ memcpy (h, old_ent, htab->root.table.entsize); |
||||||
|
+ old_ent = (char *) old_ent + htab->root.table.entsize; |
||||||
|
} |
||||||
|
if (h->root.type == bfd_link_hash_common) |
||||||
|
{ |
||||||
|
- if (size > h->root.u.c.size) |
||||||
|
- h->root.u.c.size = size; |
||||||
|
- if (alignment_power > h->root.u.c.p->alignment_power) |
||||||
|
- h->root.u.c.p->alignment_power = alignment_power; |
||||||
|
+ memcpy (h->root.u.c.p, old_ent, sizeof (*h->root.u.c.p)); |
||||||
|
+ old_ent = (char *) old_ent + sizeof (*h->root.u.c.p); |
||||||
|
} |
||||||
|
h->root.non_ir_ref_dynamic = non_ir_ref_dynamic; |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
--- binutils.orig/opcodes/ppc-dis.c 2020-09-11 10:55:56.243724026 +0100 |
||||||
|
+++ binutils-2.35/opcodes/ppc-dis.c 2020-09-11 10:57:51.363934217 +0100 |
||||||
|
@@ -399,12 +399,36 @@ static unsigned short vle_opcd_indices[V |
||||||
|
#define SPE2_OPCD_SEGS (1 + SPE2_XOP_TO_SEG (SPE2_XOP (-1))) |
||||||
|
static unsigned short spe2_opcd_indices[SPE2_OPCD_SEGS + 1]; |
||||||
|
|
||||||
|
+static bfd_boolean |
||||||
|
+ppc_symbol_is_valid (asymbol *sym, |
||||||
|
+ struct disassemble_info *info ATTRIBUTE_UNUSED) |
||||||
|
+{ |
||||||
|
+ elf_symbol_type * est; |
||||||
|
+ |
||||||
|
+ if (sym == NULL) |
||||||
|
+ return FALSE; |
||||||
|
+ |
||||||
|
+ est = elf_symbol_from (NULL, sym); |
||||||
|
+ |
||||||
|
+ /* Ignore ELF hidden, local, no-type symbols. |
||||||
|
+ These are generated by annobin. */ |
||||||
|
+ if (est != NULL |
||||||
|
+ && ELF_ST_VISIBILITY (est->internal_elf_sym.st_other) == STV_HIDDEN |
||||||
|
+ && ELF_ST_BIND (est->internal_elf_sym.st_info) == STB_LOCAL |
||||||
|
+ && ELF_ST_TYPE (est->internal_elf_sym.st_info) == STT_NOTYPE) |
||||||
|
+ return FALSE; |
||||||
|
+ |
||||||
|
+ return TRUE; |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* Calculate opcode table indices to speed up disassembly, |
||||||
|
and init dialect. */ |
||||||
|
|
||||||
|
void |
||||||
|
disassemble_init_powerpc (struct disassemble_info *info) |
||||||
|
{ |
||||||
|
+ info->symbol_is_valid = ppc_symbol_is_valid; |
||||||
|
+ |
||||||
|
if (powerpc_opcd_indices[PPC_OPCD_SEGS] == 0) |
||||||
|
{ |
||||||
|
unsigned seg, idx, op; |
@ -0,0 +1,42 @@ |
|||||||
|
--- binutils.orig/binutils/objcopy.c 2021-02-18 11:35:48.062479490 +0000 |
||||||
|
+++ binutils-2.30/binutils/objcopy.c 2021-02-18 11:36:52.207071148 +0000 |
||||||
|
@@ -2224,6 +2224,11 @@ merge_gnu_build_notes (bfd * ab |
||||||
|
goto done; |
||||||
|
} |
||||||
|
|
||||||
|
+ if (start > end) |
||||||
|
+ /* This can happen with PPC64LE binaries where empty notes are |
||||||
|
+ encoded as start = end + 4. */ |
||||||
|
+ start = end; |
||||||
|
+ |
||||||
|
if (is_open_note (pnote)) |
||||||
|
{ |
||||||
|
if (start) |
||||||
|
--- binutils.orig/binutils/objcopy.c 2021-02-22 10:44:20.107263089 +0000 |
||||||
|
+++ binutils-2.35.1/binutils/objcopy.c 2021-02-22 16:07:12.134344229 +0000 |
||||||
|
@@ -2243,23 +2243,8 @@ merge_gnu_build_notes (bfd * ab |
||||||
|
break; |
||||||
|
|
||||||
|
case 8: |
||||||
|
- if (! is_64bit (abfd)) |
||||||
|
- { |
||||||
|
- start = bfd_get_32 (abfd, pnote->note.descdata); |
||||||
|
- end = bfd_get_32 (abfd, pnote->note.descdata + 4); |
||||||
|
- } |
||||||
|
- else |
||||||
|
- { |
||||||
|
- start = bfd_get_64 (abfd, pnote->note.descdata); |
||||||
|
- /* FIXME: For version 1 and 2 notes we should try to |
||||||
|
- calculate the end address by finding a symbol whose |
||||||
|
- value is START, and then adding in its size. |
||||||
|
- |
||||||
|
- For now though, since v1 and v2 was not intended to |
||||||
|
- handle gaps, we chose an artificially large end |
||||||
|
- address. */ |
||||||
|
- end = (bfd_vma) -1; |
||||||
|
- } |
||||||
|
+ start = bfd_get_32 (abfd, pnote->note.descdata); |
||||||
|
+ end = bfd_get_32 (abfd, pnote->note.descdata + 4); |
||||||
|
break; |
||||||
|
|
||||||
|
case 16: |
@ -0,0 +1,19 @@ |
|||||||
|
--- binutils.orig/binutils/readelf.c 2021-02-22 10:44:20.142262864 +0000 |
||||||
|
+++ binutils-2.35.1/binutils/readelf.c 2021-02-22 10:45:25.646842120 +0000 |
||||||
|
@@ -19285,6 +19285,7 @@ print_gnu_build_attribute_description (E |
||||||
|
|
||||||
|
if (is_open_attr) |
||||||
|
{ |
||||||
|
+#if 0 /* Suppressed because these gaps are no longer significant. */ |
||||||
|
/* FIXME: Need to properly allow for section alignment. |
||||||
|
16 is just the alignment used on x86_64. */ |
||||||
|
if (global_end > 0 |
||||||
|
@@ -19295,7 +19296,7 @@ print_gnu_build_attribute_description (E |
||||||
|
&& same_section (filedata, start, global_end)) |
||||||
|
warn (_("Gap in build notes detected from %#lx to %#lx\n"), |
||||||
|
global_end + 1, start - 1); |
||||||
|
- |
||||||
|
+#endif |
||||||
|
printf (_(" Applies to region from %#lx"), start); |
||||||
|
global_offset = start; |
||||||
|
|
@ -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 |
@ -0,0 +1,109 @@ |
|||||||
|
--- binutils.orig/binutils/dwarf.c 2020-10-15 12:13:21.960799738 +0100 |
||||||
|
+++ binutils-2.35.1/binutils/dwarf.c 2020-10-15 13:02:39.454692627 +0100 |
||||||
|
@@ -10427,7 +10427,7 @@ load_separate_debug_info (const char * |
||||||
|
{ |
||||||
|
warn (_("Corrupt debuglink section: %s\n"), |
||||||
|
xlink->name ? xlink->name : xlink->uncompressed_name); |
||||||
|
- return FALSE; |
||||||
|
+ return NULL; |
||||||
|
} |
||||||
|
|
||||||
|
/* Attempt to locate the separate file. |
||||||
|
@@ -10587,7 +10587,7 @@ load_separate_debug_info (const char * |
||||||
|
{ |
||||||
|
warn (_("failed to open separate debug file: %s\n"), debug_filename); |
||||||
|
free (debug_filename); |
||||||
|
- return FALSE; |
||||||
|
+ return NULL; |
||||||
|
} |
||||||
|
|
||||||
|
/* FIXME: We do not check to see if there are any other separate debug info |
||||||
|
@@ -10632,6 +10632,52 @@ load_dwo_file (const char * main_filenam |
||||||
|
return separate_handle; |
||||||
|
} |
||||||
|
|
||||||
|
+/* Load a debuglink section and/or a debugaltlink section, if either are present. |
||||||
|
+ Recursively check the loaded files for more of these sections. |
||||||
|
+ FIXME: Should also check for DWO_* entries in the newlu loaded files. */ |
||||||
|
+ |
||||||
|
+static void |
||||||
|
+check_for_and_load_links (void * file, const char * filename) |
||||||
|
+{ |
||||||
|
+ void * handle = NULL; |
||||||
|
+ |
||||||
|
+ if (load_debug_section (gnu_debugaltlink, file)) |
||||||
|
+ { |
||||||
|
+ Build_id_data build_id_data; |
||||||
|
+ |
||||||
|
+ handle = load_separate_debug_info (filename, |
||||||
|
+ & debug_displays[gnu_debugaltlink].section, |
||||||
|
+ parse_gnu_debugaltlink, |
||||||
|
+ check_gnu_debugaltlink, |
||||||
|
+ & build_id_data, |
||||||
|
+ file); |
||||||
|
+ if (handle) |
||||||
|
+ { |
||||||
|
+ assert (handle == first_separate_info->handle); |
||||||
|
+ check_for_and_load_links (first_separate_info->handle, |
||||||
|
+ first_separate_info->filename); |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (load_debug_section (gnu_debuglink, file)) |
||||||
|
+ { |
||||||
|
+ unsigned long crc32; |
||||||
|
+ |
||||||
|
+ handle = load_separate_debug_info (filename, |
||||||
|
+ & debug_displays[gnu_debuglink].section, |
||||||
|
+ parse_gnu_debuglink, |
||||||
|
+ check_gnu_debuglink, |
||||||
|
+ & crc32, |
||||||
|
+ file); |
||||||
|
+ if (handle) |
||||||
|
+ { |
||||||
|
+ assert (handle == first_separate_info->handle); |
||||||
|
+ check_for_and_load_links (first_separate_info->handle, |
||||||
|
+ first_separate_info->filename); |
||||||
|
+ } |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
/* Load the separate debug info file(s) attached to FILE, if any exist. |
||||||
|
Returns TRUE if any were found, FALSE otherwise. |
||||||
|
If TRUE is returned then the linked list starting at first_separate_info |
||||||
|
@@ -10707,34 +10753,10 @@ load_separate_debug_files (void * file, |
||||||
|
return FALSE; |
||||||
|
|
||||||
|
/* FIXME: We do not check for the presence of both link sections in the same file. */ |
||||||
|
- /* FIXME: We do not check the separate debug info file to see if it too contains debuglinks. */ |
||||||
|
/* FIXME: We do not check for the presence of multiple, same-name debuglink sections. */ |
||||||
|
/* FIXME: We do not check for the presence of a dwo link as well as a debuglink. */ |
||||||
|
|
||||||
|
- if (load_debug_section (gnu_debugaltlink, file)) |
||||||
|
- { |
||||||
|
- Build_id_data * build_id_data; |
||||||
|
- |
||||||
|
- load_separate_debug_info (filename, |
||||||
|
- & debug_displays[gnu_debugaltlink].section, |
||||||
|
- parse_gnu_debugaltlink, |
||||||
|
- check_gnu_debugaltlink, |
||||||
|
- & build_id_data, |
||||||
|
- file); |
||||||
|
- } |
||||||
|
- |
||||||
|
- if (load_debug_section (gnu_debuglink, file)) |
||||||
|
- { |
||||||
|
- unsigned long crc32; |
||||||
|
- |
||||||
|
- load_separate_debug_info (filename, |
||||||
|
- & debug_displays[gnu_debuglink].section, |
||||||
|
- parse_gnu_debuglink, |
||||||
|
- check_gnu_debuglink, |
||||||
|
- & crc32, |
||||||
|
- file); |
||||||
|
- } |
||||||
|
- |
||||||
|
+ check_for_and_load_links (file, filename); |
||||||
|
if (first_separate_info != NULL) |
||||||
|
return TRUE; |
||||||
|
|
@ -0,0 +1,109 @@ |
|||||||
|
diff -rup binutils.orig/gas/config/tc-s390.c binutils-2.35.1/gas/config/tc-s390.c |
||||||
|
--- binutils.orig/gas/config/tc-s390.c 2021-02-19 11:44:24.240877612 +0000 |
||||||
|
+++ binutils-2.35.1/gas/config/tc-s390.c 2021-02-19 11:46:05.222554434 +0000 |
||||||
|
@@ -292,6 +292,8 @@ s390_parse_cpu (const char * arg |
||||||
|
{ STRING_COMMA_LEN ("z14"), STRING_COMMA_LEN ("arch12"), |
||||||
|
S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX }, |
||||||
|
{ STRING_COMMA_LEN ("z15"), STRING_COMMA_LEN ("arch13"), |
||||||
|
+ S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX }, |
||||||
|
+ { STRING_COMMA_LEN (""), STRING_COMMA_LEN ("arch14"), |
||||||
|
S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX } |
||||||
|
}; |
||||||
|
static struct |
||||||
|
diff -rup binutils.orig/gas/doc/c-s390.texi binutils-2.35.1/gas/doc/c-s390.texi |
||||||
|
--- binutils.orig/gas/doc/c-s390.texi 2021-02-19 11:44:24.236877625 +0000 |
||||||
|
+++ binutils-2.35.1/gas/doc/c-s390.texi 2021-02-19 11:46:05.223554431 +0000 |
||||||
|
@@ -18,7 +18,7 @@ and eleven chip levels. The architecture |
||||||
|
Architecture (ESA) and the newer z/Architecture mode. The chip levels |
||||||
|
are g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec |
||||||
|
(or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13 |
||||||
|
-(or arch11), z14 (or arch12), and z15 (or arch13). |
||||||
|
+(or arch11), z14 (or arch12), z15 (or arch13), or arch14. |
||||||
|
|
||||||
|
@menu |
||||||
|
* s390 Options:: Command-line Options. |
||||||
|
@@ -70,8 +70,9 @@ are recognized: |
||||||
|
@code{z196} (or @code{arch9}), |
||||||
|
@code{zEC12} (or @code{arch10}), |
||||||
|
@code{z13} (or @code{arch11}), |
||||||
|
-@code{z14} (or @code{arch12}), and |
||||||
|
-@code{z15} (or @code{arch13}). |
||||||
|
+@code{z14} (or @code{arch12}), |
||||||
|
+@code{z15} (or @code{arch13}), and |
||||||
|
+@code{arch14}. |
||||||
|
|
||||||
|
Assembling an instruction that is not supported on the target |
||||||
|
processor results in an error message. |
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/s390.exp binutils-2.35.1/gas/testsuite/gas/s390/s390.exp |
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/s390.exp 2021-02-19 11:44:24.338877299 +0000 |
||||||
|
+++ binutils-2.35.1/gas/testsuite/gas/s390/s390.exp 2021-02-19 11:46:05.223554431 +0000 |
||||||
|
@@ -31,6 +31,7 @@ if [expr [istarget "s390-*-*"] || [ista |
||||||
|
run_dump_test "zarch-z13" "{as -m64} {as -march=z13}" |
||||||
|
run_dump_test "zarch-arch12" "{as -m64} {as -march=arch12}" |
||||||
|
run_dump_test "zarch-arch13" "{as -m64} {as -march=arch13}" |
||||||
|
+ run_dump_test "zarch-arch14" "{as -m64} {as -march=arch14}" |
||||||
|
run_dump_test "zarch-reloc" "{as -m64}" |
||||||
|
run_dump_test "zarch-operands" "{as -m64} {as -march=z9-109}" |
||||||
|
run_dump_test "zarch-machine" "{as -m64} {as -march=z900}" |
||||||
|
Only in binutils-2.35.1/gas/testsuite/gas/s390: zarch-arch14.d |
||||||
|
Only in binutils-2.35.1/gas/testsuite/gas/s390: zarch-arch14.s |
||||||
|
diff -rup binutils.orig/include/opcode/s390.h binutils-2.35.1/include/opcode/s390.h |
||||||
|
--- binutils.orig/include/opcode/s390.h 2021-02-19 11:44:23.926878617 +0000 |
||||||
|
+++ binutils-2.35.1/include/opcode/s390.h 2021-02-19 11:46:05.223554431 +0000 |
||||||
|
@@ -44,6 +44,7 @@ enum s390_opcode_cpu_val |
||||||
|
S390_OPCODE_Z13, |
||||||
|
S390_OPCODE_ARCH12, |
||||||
|
S390_OPCODE_ARCH13, |
||||||
|
+ S390_OPCODE_ARCH14, |
||||||
|
S390_OPCODE_MAXCPU |
||||||
|
}; |
||||||
|
|
||||||
|
diff -rup binutils.orig/opcodes/s390-mkopc.c binutils-2.35.1/opcodes/s390-mkopc.c |
||||||
|
--- binutils.orig/opcodes/s390-mkopc.c 2021-02-19 11:44:23.947878550 +0000 |
||||||
|
+++ binutils-2.35.1/opcodes/s390-mkopc.c 2021-02-19 11:46:05.223554431 +0000 |
||||||
|
@@ -380,6 +380,8 @@ main (void) |
||||||
|
else if (strcmp (cpu_string, "z15") == 0 |
||||||
|
|| strcmp (cpu_string, "arch13") == 0) |
||||||
|
min_cpu = S390_OPCODE_ARCH13; |
||||||
|
+ else if (strcmp (cpu_string, "arch14") == 0) |
||||||
|
+ min_cpu = S390_OPCODE_ARCH14; |
||||||
|
else { |
||||||
|
fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string); |
||||||
|
exit (1); |
||||||
|
Only in binutils-2.35.1/opcodes: s390-mkopc.c.orig |
||||||
|
diff -rup binutils.orig/opcodes/s390-opc.txt binutils-2.35.1/opcodes/s390-opc.txt |
||||||
|
--- binutils.orig/opcodes/s390-opc.txt 2021-02-19 11:44:23.943878563 +0000 |
||||||
|
+++ binutils-2.35.1/opcodes/s390-opc.txt 2021-02-19 11:46:05.224554428 +0000 |
||||||
|
@@ -2000,3 +2000,31 @@ e60000000052 vcvbg VRR_RV0UU "vector con |
||||||
|
# Message Security Assist Extension 9 |
||||||
|
|
||||||
|
b93a kdsa RRE_RR "compute digital signature authentication" arch13 zarch |
||||||
|
+ |
||||||
|
+ |
||||||
|
+# arch14 instructions |
||||||
|
+ |
||||||
|
+e60000000074 vschp VRR_VVV0U0U " " arch14 zarch |
||||||
|
+e60000002074 vschsp VRR_VVV0U0 " " arch14 zarch |
||||||
|
+e60000003074 vschdp VRR_VVV0U0 " " arch14 zarch |
||||||
|
+e60000004074 vschxp VRR_VVV0U0 " " arch14 zarch |
||||||
|
+e6000000007c vscshp VRR_VVV " " arch14 zarch |
||||||
|
+e6000000007d vcsph VRR_VVV0U0 " " arch14 zarch |
||||||
|
+e60000000051 vclzdp VRR_VV0U2 " " arch14 zarch |
||||||
|
+e60000000070 vpkzr VRI_VVV0UU2 " " arch14 zarch |
||||||
|
+e60000000072 vsrpr VRI_VVV0UU2 " " arch14 zarch |
||||||
|
+e60000000054 vupkzh VRR_VV0U2 " " arch14 zarch |
||||||
|
+e6000000005c vupkzl VRR_VV0U2 " " arch14 zarch |
||||||
|
+ |
||||||
|
+b93b nnpa RRE_00 " " arch14 zarch |
||||||
|
+e60000000056 vclfnh VRR_VV0UU2 " " arch14 zarch |
||||||
|
+e6000000005e vclfnl VRR_VV0UU2 " " arch14 zarch |
||||||
|
+e60000000075 vcrnf VRR_VVV0UU " " arch14 zarch |
||||||
|
+e6000000005d vcfn VRR_VV0UU2 " " arch14 zarch |
||||||
|
+e60000000055 vcnf VRR_VV0UU2 " " arch14 zarch |
||||||
|
+ |
||||||
|
+b98B rdp RRF_RURR2 " " arch14 zarch optparm |
||||||
|
+ |
||||||
|
+eb0000000071 lpswey SIY_URD " " arch14 zarch |
||||||
|
+b200 lbear S_RD " " arch14 zarch |
||||||
|
+b201 stbear S_RD " " arch14 zarch |
||||||
|
Only in binutils-2.35.1/opcodes: s390-opc.txt.orig |
@ -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; |
@ -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 |
@ -0,0 +1,19 @@ |
|||||||
|
--- binutils.orig/binutils/objcopy.c 2020-10-06 14:53:19.264943750 +0100 |
||||||
|
+++ binutils-2.35.1/binutils/objcopy.c 2020-10-06 14:53:47.002761889 +0100 |
||||||
|
@@ -3313,14 +3313,12 @@ copy_object (bfd *ibfd, bfd *obfd, const |
||||||
|
/* It is likely that output sections are in the same order |
||||||
|
as the input sections, but do not assume that this is |
||||||
|
the case. */ |
||||||
|
- if (strcmp (bfd_section_name (merged->sec), |
||||||
|
- bfd_section_name (osec)) != 0) |
||||||
|
+ if (merged->sec->output_section != osec) |
||||||
|
{ |
||||||
|
for (merged = merged_note_sections; |
||||||
|
merged != NULL; |
||||||
|
merged = merged->next) |
||||||
|
- if (strcmp (bfd_section_name (merged->sec), |
||||||
|
- bfd_section_name (osec)) == 0) |
||||||
|
+ if (merged->sec->output_section == osec) |
||||||
|
break; |
||||||
|
|
||||||
|
if (merged == NULL) |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,10 @@ |
|||||||
|
--- binutils.orig/binutils/dwarf.c 2021-03-05 09:25:43.850258361 +0000 |
||||||
|
+++ binutils-2.35.1/binutils/dwarf.c 2021-03-05 09:26:35.861895776 +0000 |
||||||
|
@@ -2115,6 +2115,7 @@ get_type_abbrev_from_form (unsigned long |
||||||
|
switch (form) |
||||||
|
{ |
||||||
|
case DW_FORM_GNU_ref_alt: |
||||||
|
+ case DW_FORM_ref_sig8: |
||||||
|
/* FIXME: We are unable to handle this form at the moment. */ |
||||||
|
return NULL; |
||||||
|
|
@ -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 |
@ -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) |
Loading…
Reference in new issue