commit
5da80e5751
@ -0,0 +1 @@
|
|||||||
|
2dd8d1ce34dc7b1cb2073123e30c4901221835b0 SOURCES/binutils-2.35.2.tar.xz
|
@ -0,0 +1 @@
|
|||||||
|
SOURCES/binutils-2.35.2.tar.xz
|
@ -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,928 @@
|
|||||||
|
diff -rup binutils.orig/bfd/.gitignore binutils-2.35.2/bfd/.gitignore
|
||||||
|
--- binutils.orig/bfd/.gitignore 2021-11-30 13:38:24.349744247 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/.gitignore 2021-11-30 13:38:37.236657064 +0000
|
||||||
|
@@ -11,6 +11,7 @@
|
||||||
|
/peigen.c
|
||||||
|
/pepigen.c
|
||||||
|
/pex64igen.c
|
||||||
|
+/pe-aarch64igen.c
|
||||||
|
/stmp-bfd-h
|
||||||
|
/targmatch.h
|
||||||
|
|
||||||
|
diff -rup binutils.orig/bfd/Makefile.am binutils-2.35.2/bfd/Makefile.am
|
||||||
|
--- binutils.orig/bfd/Makefile.am 2021-11-30 13:38:24.358744186 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/Makefile.am 2021-11-30 13:38:37.237657058 +0000
|
||||||
|
@@ -571,7 +571,9 @@ BFD64_BACKENDS = \
|
||||||
|
mach-o-aarch64.lo \
|
||||||
|
mach-o-x86-64.lo \
|
||||||
|
mmo.lo \
|
||||||
|
+ pe-aarch64igen.lo \
|
||||||
|
pe-x86_64.lo \
|
||||||
|
+ pei-aarch64lo \
|
||||||
|
pei-ia64.lo \
|
||||||
|
pei-x86_64.lo \
|
||||||
|
pepigen.lo \
|
||||||
|
@@ -611,6 +613,7 @@ BFD64_BACKENDS_CFILES = \
|
||||||
|
mach-o-x86-64.c \
|
||||||
|
mmo.c \
|
||||||
|
pe-x86_64.c \
|
||||||
|
+ pei-aarch64.c \
|
||||||
|
pei-ia64.c \
|
||||||
|
pei-x86_64.c \
|
||||||
|
vms-alpha.c
|
||||||
|
@@ -670,7 +673,7 @@ BUILD_CFILES = \
|
||||||
|
elf32-aarch64.c elf64-aarch64.c \
|
||||||
|
elf32-ia64.c elf64-ia64.c \
|
||||||
|
elf32-riscv.c elf64-riscv.c \
|
||||||
|
- peigen.c pepigen.c pex64igen.c
|
||||||
|
+ peigen.c pepigen.c pex64igen.c pe-aarch64igen.c
|
||||||
|
|
||||||
|
CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
|
||||||
|
|
||||||
|
@@ -866,6 +869,10 @@ pex64igen.c: peXXigen.c
|
||||||
|
echo "#line 1 \"peXXigen.c\"" > $@
|
||||||
|
$(SED) -e s/XX/pex64/g < $< >> $@
|
||||||
|
|
||||||
|
+pe-aarch64igen.c: peXXigen.c
|
||||||
|
+ echo "#line 1 \"peXXigen.c\"" > $@
|
||||||
|
+ $(SED) -e s/XX/peAArch64/g < $< >> $@
|
||||||
|
+
|
||||||
|
BFD_H_DEPS= $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
|
||||||
|
LOCAL_H_DEPS= libbfd.h sysdep.h config.h bfd_stdint.h
|
||||||
|
$(BFD32_LIBS) \
|
||||||
|
diff -rup binutils.orig/bfd/Makefile.in binutils-2.35.2/bfd/Makefile.in
|
||||||
|
--- binutils.orig/bfd/Makefile.in 2021-11-30 13:38:24.346744267 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/Makefile.in 2021-11-30 13:38:37.238657051 +0000
|
||||||
|
@@ -997,7 +997,9 @@ BFD64_BACKENDS = \
|
||||||
|
mach-o-aarch64.lo \
|
||||||
|
mach-o-x86-64.lo \
|
||||||
|
mmo.lo \
|
||||||
|
+ pe-aarch64igen.lo \
|
||||||
|
pe-x86_64.lo \
|
||||||
|
+ pei-aarch64.lo \
|
||||||
|
pei-ia64.lo \
|
||||||
|
pei-x86_64.lo \
|
||||||
|
pepigen.lo \
|
||||||
|
@@ -1037,6 +1039,7 @@ BFD64_BACKENDS_CFILES = \
|
||||||
|
mach-o-x86-64.c \
|
||||||
|
mmo.c \
|
||||||
|
pe-x86_64.c \
|
||||||
|
+ pei-aarch64.c \
|
||||||
|
pei-ia64.c \
|
||||||
|
pei-x86_64.c \
|
||||||
|
vms-alpha.c
|
||||||
|
@@ -1095,7 +1098,7 @@ BUILD_CFILES = \
|
||||||
|
elf32-aarch64.c elf64-aarch64.c \
|
||||||
|
elf32-ia64.c elf64-ia64.c \
|
||||||
|
elf32-riscv.c elf64-riscv.c \
|
||||||
|
- peigen.c pepigen.c pex64igen.c
|
||||||
|
+ peigen.c pepigen.c pex64igen.c pe-aarch64igen.c
|
||||||
|
|
||||||
|
CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
|
||||||
|
SOURCE_HFILES = \
|
||||||
|
@@ -1556,9 +1559,11 @@ distclean-compile:
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-ppc.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-sh.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-x86_64.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-aarch64.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peigen.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pepigen.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pex64igen.Plo@am__quote@
|
||||||
|
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-aarch64igen.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppcboot.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@
|
||||||
|
@@ -1996,6 +2001,11 @@ pepigen.c : peXXigen.c
|
||||||
|
pex64igen.c: peXXigen.c
|
||||||
|
echo "#line 1 \"peXXigen.c\"" > $@
|
||||||
|
$(SED) -e s/XX/pex64/g < $< >> $@
|
||||||
|
+
|
||||||
|
+pe-aarch64igen.c: peXXigen.c
|
||||||
|
+ echo "#line 1 \"peXXigen.c\"" > $@
|
||||||
|
+ $(SED) -e s/XX/peAArch64/g < $< >> $@
|
||||||
|
+
|
||||||
|
$(BFD32_LIBS) \
|
||||||
|
$(BFD64_LIBS) \
|
||||||
|
$(ALL_MACHINES) \
|
||||||
|
diff -rup binutils.orig/bfd/bfd.c binutils-2.35.2/bfd/bfd.c
|
||||||
|
--- binutils.orig/bfd/bfd.c 2021-11-30 13:38:24.344744281 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/bfd.c 2021-11-30 13:38:37.239657044 +0000
|
||||||
|
@@ -1747,6 +1747,7 @@ bfd_get_sign_extend_vma (bfd *abfd)
|
||||||
|
|| strcmp (name, "pei-i386") == 0
|
||||||
|
|| strcmp (name, "pe-x86-64") == 0
|
||||||
|
|| strcmp (name, "pei-x86-64") == 0
|
||||||
|
+ || strcmp (name, "pei-aarch64-little") == 0
|
||||||
|
|| strcmp (name, "pe-arm-wince-little") == 0
|
||||||
|
|| strcmp (name, "pei-arm-wince-little") == 0
|
||||||
|
|| strcmp (name, "aixcoff-rs6000") == 0
|
||||||
|
diff -rup binutils.orig/bfd/coffcode.h binutils-2.35.2/bfd/coffcode.h
|
||||||
|
--- binutils.orig/bfd/coffcode.h 2021-11-30 13:38:24.345744274 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/coffcode.h 2021-11-30 13:38:37.242657024 +0000
|
||||||
|
@@ -2195,6 +2195,12 @@ coff_set_arch_mach_hook (bfd *abfd, void
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
+#ifdef AARCH64MAGIC
|
||||||
|
+ case AARCH64MAGIC:
|
||||||
|
+ arch = bfd_arch_aarch64;
|
||||||
|
+ machine = internal_f->f_flags & F_AARCH64_ARCHITECTURE_MASK;
|
||||||
|
+ break;
|
||||||
|
+#endif
|
||||||
|
#ifdef Z80MAGIC
|
||||||
|
case Z80MAGIC:
|
||||||
|
arch = bfd_arch_z80;
|
||||||
|
@@ -2751,6 +2757,12 @@ coff_set_flags (bfd * abfd,
|
||||||
|
return TRUE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef AARCH64MAGIC
|
||||||
|
+ case bfd_arch_aarch64:
|
||||||
|
+ * magicp = AARCH64MAGIC;
|
||||||
|
+ return TRUE;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef ARMMAGIC
|
||||||
|
case bfd_arch_arm:
|
||||||
|
#ifdef ARM_WINCE
|
||||||
|
@@ -3841,7 +3853,7 @@ coff_write_object_contents (bfd * abfd)
|
||||||
|
internal_f.f_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifndef COFF_WITH_pex64
|
||||||
|
+#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
#ifdef COFF_WITH_PE
|
||||||
|
internal_f.f_flags |= IMAGE_FILE_32BIT_MACHINE;
|
||||||
|
#else
|
||||||
|
@@ -3895,6 +3907,11 @@ coff_write_object_contents (bfd * abfd)
|
||||||
|
internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if defined(AARCH64)
|
||||||
|
+#define __A_MAGIC_SET__
|
||||||
|
+ internal_a.magic = ZMAGIC;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#if defined MCORE_PE
|
||||||
|
#define __A_MAGIC_SET__
|
||||||
|
internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
|
||||||
|
diff -rup binutils.orig/bfd/config.bfd binutils-2.35.2/bfd/config.bfd
|
||||||
|
--- binutils.orig/bfd/config.bfd 2021-11-30 13:38:24.358744186 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/config.bfd 2021-11-30 13:41:24.512525484 +0000
|
||||||
|
@@ -256,12 +256,12 @@ case "${targ}" in
|
||||||
|
;;
|
||||||
|
aarch64-*-linux*)
|
||||||
|
targ_defvec=aarch64_elf64_le_vec
|
||||||
|
- targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
|
||||||
|
+ targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_vec"
|
||||||
|
want64=true
|
||||||
|
;;
|
||||||
|
aarch64_be-*-linux*)
|
||||||
|
targ_defvec=aarch64_elf64_be_vec
|
||||||
|
- targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
|
||||||
|
+ targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec aarch64_pei_vec"
|
||||||
|
want64=true
|
||||||
|
;;
|
||||||
|
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
||||||
|
diff -rup binutils.orig/bfd/configure binutils-2.35.2/bfd/configure
|
||||||
|
--- binutils.orig/bfd/configure 2021-11-30 13:38:24.358744186 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/configure 2021-11-30 13:38:37.250656970 +0000
|
||||||
|
@@ -14738,6 +14738,7 @@ do
|
||||||
|
aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
aarch64_mach_o_vec) tb="$tb mach-o-aarch64.lo"; target_size=64 ;;
|
||||||
|
+ aarch64_pei_vec) tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;;
|
||||||
|
alpha_ecoff_le_vec) tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;;
|
||||||
|
alpha_elf64_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
alpha_elf64_fbsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
diff -rup binutils.orig/bfd/configure.ac binutils-2.35.2/bfd/configure.ac
|
||||||
|
--- binutils.orig/bfd/configure.ac 2021-11-30 13:38:24.354744213 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/configure.ac 2021-11-30 13:38:37.251656963 +0000
|
||||||
|
@@ -450,6 +450,7 @@ do
|
||||||
|
aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
aarch64_mach_o_vec) tb="$tb mach-o-aarch64.lo"; target_size=64 ;;
|
||||||
|
+ aarch64_pei_vec) tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;;
|
||||||
|
alpha_ecoff_le_vec) tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;;
|
||||||
|
alpha_elf64_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
alpha_elf64_fbsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
|
||||||
|
diff -rup binutils.orig/bfd/libpei.h binutils-2.35.2/bfd/libpei.h
|
||||||
|
--- binutils.orig/bfd/libpei.h 2021-11-30 13:38:24.355744206 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/libpei.h 2021-11-30 13:41:57.744300692 +0000
|
||||||
|
@@ -275,6 +275,41 @@
|
||||||
|
#define _bfd_XXi_write_codeview_record _bfd_pepi_write_codeview_record
|
||||||
|
#define _bfd_XXi_slurp_codeview_record _bfd_pepi_slurp_codeview_record
|
||||||
|
|
||||||
|
+#elif defined COFF_WITH_peAArch64
|
||||||
|
+
|
||||||
|
+#define GET_OPTHDR_IMAGE_BASE H_GET_64
|
||||||
|
+#define PUT_OPTHDR_IMAGE_BASE H_PUT_64
|
||||||
|
+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
|
||||||
|
+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
|
||||||
|
+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT H_GET_64
|
||||||
|
+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT H_PUT_64
|
||||||
|
+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE H_GET_64
|
||||||
|
+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE H_PUT_64
|
||||||
|
+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT H_GET_64
|
||||||
|
+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT H_PUT_64
|
||||||
|
+#define GET_PDATA_ENTRY bfd_get_32
|
||||||
|
+
|
||||||
|
+#define _bfd_XX_bfd_copy_private_bfd_data_common _bfd_peAArch64_bfd_copy_private_bfd_data_common
|
||||||
|
+#define _bfd_XX_bfd_copy_private_section_data _bfd_peAArch64_bfd_copy_private_section_data
|
||||||
|
+#define _bfd_XX_get_symbol_info _bfd_peAArch64_get_symbol_info
|
||||||
|
+#define _bfd_XX_only_swap_filehdr_out _bfd_peAArch64_only_swap_filehdr_out
|
||||||
|
+#define _bfd_XX_print_private_bfd_data_common _bfd_peAArch64_print_private_bfd_data_common
|
||||||
|
+#define _bfd_XXi_final_link_postscript _bfd_peAArch64i_final_link_postscript
|
||||||
|
+#define _bfd_XXi_only_swap_filehdr_out _bfd_peAArch64i_only_swap_filehdr_out
|
||||||
|
+#define _bfd_XXi_swap_aouthdr_in _bfd_peAArch64i_swap_aouthdr_in
|
||||||
|
+#define _bfd_XXi_swap_aouthdr_out _bfd_peAArch64i_swap_aouthdr_out
|
||||||
|
+#define _bfd_XXi_swap_aux_in _bfd_peAArch64i_swap_aux_in
|
||||||
|
+#define _bfd_XXi_swap_aux_out _bfd_peAArch64i_swap_aux_out
|
||||||
|
+#define _bfd_XXi_swap_lineno_in _bfd_peAArch64i_swap_lineno_in
|
||||||
|
+#define _bfd_XXi_swap_lineno_out _bfd_peAArch64i_swap_lineno_out
|
||||||
|
+#define _bfd_XXi_swap_scnhdr_out _bfd_peAArch64i_swap_scnhdr_out
|
||||||
|
+#define _bfd_XXi_swap_sym_in _bfd_peAArch64i_swap_sym_in
|
||||||
|
+#define _bfd_XXi_swap_sym_out _bfd_peAArch64i_swap_sym_out
|
||||||
|
+#define _bfd_XXi_swap_debugdir_in _bfd_peAArch64i_swap_debugdir_in
|
||||||
|
+#define _bfd_XXi_swap_debugdir_out _bfd_peAArch64i_swap_debugdir_out
|
||||||
|
+#define _bfd_XXi_write_codeview_record _bfd_peAArch64i_write_codeview_record
|
||||||
|
+#define _bfd_XXi_slurp_codeview_record _bfd_peAArch64i_slurp_codeview_record
|
||||||
|
+
|
||||||
|
#else /* !COFF_WITH_pep */
|
||||||
|
|
||||||
|
#define GET_OPTHDR_IMAGE_BASE H_GET_32
|
||||||
|
@@ -368,4 +403,5 @@ bfd_boolean _bfd_pe_print_ce_compressed_
|
||||||
|
bfd_boolean _bfd_pe64_print_ce_compressed_pdata (bfd *, void *);
|
||||||
|
bfd_boolean _bfd_pex64_print_ce_compressed_pdata (bfd *, void *);
|
||||||
|
bfd_boolean _bfd_pep_print_ce_compressed_pdata (bfd *, void *);
|
||||||
|
+bfd_boolean _bfd_peAArch64_print_ce_compressed_pdata (bfd *, void *);
|
||||||
|
|
||||||
|
diff -rup binutils.orig/bfd/peXXigen.c binutils-2.35.2/bfd/peXXigen.c
|
||||||
|
--- binutils.orig/bfd/peXXigen.c 2021-11-30 13:38:24.352744227 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/peXXigen.c 2021-11-30 13:38:37.255656936 +0000
|
||||||
|
@@ -60,8 +60,9 @@
|
||||||
|
on this code has a chance of getting something accomplished without
|
||||||
|
wasting too much time. */
|
||||||
|
|
||||||
|
-/* This expands into COFF_WITH_pe, COFF_WITH_pep, or COFF_WITH_pex64
|
||||||
|
- depending on whether we're compiling for straight PE or PE+. */
|
||||||
|
+/* This expands into COFF_WITH_pe, COFF_WITH_pep, COFF_WITH_pex64 or
|
||||||
|
+ COFF_WITH_peAArch64 depending on whether we're compiling for straight
|
||||||
|
+ PE or PE+. */
|
||||||
|
#define COFF_WITH_XX
|
||||||
|
|
||||||
|
#include "sysdep.h"
|
||||||
|
@@ -87,6 +88,8 @@
|
||||||
|
# include "coff/x86_64.h"
|
||||||
|
#elif defined COFF_WITH_pep
|
||||||
|
# include "coff/ia64.h"
|
||||||
|
+#elif defined COFF_WITH_peAArch64
|
||||||
|
+# include "coff/aarch64.h"
|
||||||
|
#else
|
||||||
|
# include "coff/i386.h"
|
||||||
|
#endif
|
||||||
|
@@ -96,7 +99,7 @@
|
||||||
|
#include "libpei.h"
|
||||||
|
#include "safe-ctype.h"
|
||||||
|
|
||||||
|
-#if defined COFF_WITH_pep || defined COFF_WITH_pex64
|
||||||
|
+#if defined COFF_WITH_pep || defined COFF_WITH_pex64 || defined COFF_WITH_peAArch64
|
||||||
|
# undef AOUTSZ
|
||||||
|
# define AOUTSZ PEPAOUTSZ
|
||||||
|
# define PEAOUTHDR PEPAOUTHDR
|
||||||
|
@@ -485,7 +488,7 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
|
||||||
|
aouthdr_int->text_start =
|
||||||
|
GET_AOUTHDR_TEXT_START (abfd, aouthdr_ext->text_start);
|
||||||
|
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
/* PE32+ does not have data_start member! */
|
||||||
|
aouthdr_int->data_start =
|
||||||
|
GET_AOUTHDR_DATA_START (abfd, aouthdr_ext->data_start);
|
||||||
|
@@ -571,7 +574,7 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
|
||||||
|
if (aouthdr_int->entry)
|
||||||
|
{
|
||||||
|
aouthdr_int->entry += a->ImageBase;
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
aouthdr_int->entry &= 0xffffffff;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -579,12 +582,12 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
|
||||||
|
if (aouthdr_int->tsize)
|
||||||
|
{
|
||||||
|
aouthdr_int->text_start += a->ImageBase;
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
aouthdr_int->text_start &= 0xffffffff;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
/* PE32+ does not have data_start member! */
|
||||||
|
if (aouthdr_int->dsize)
|
||||||
|
{
|
||||||
|
@@ -653,7 +656,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
|
||||||
|
if (aouthdr_in->tsize)
|
||||||
|
{
|
||||||
|
aouthdr_in->text_start -= ib;
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
aouthdr_in->text_start &= 0xffffffff;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -661,7 +664,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
|
||||||
|
if (aouthdr_in->dsize)
|
||||||
|
{
|
||||||
|
aouthdr_in->data_start -= ib;
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
aouthdr_in->data_start &= 0xffffffff;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -669,7 +672,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
|
||||||
|
if (aouthdr_in->entry)
|
||||||
|
{
|
||||||
|
aouthdr_in->entry -= ib;
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
aouthdr_in->entry &= 0xffffffff;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -773,7 +776,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
|
||||||
|
PUT_AOUTHDR_TEXT_START (abfd, aouthdr_in->text_start,
|
||||||
|
aouthdr_out->standard.text_start);
|
||||||
|
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
/* PE32+ does not have data_start member! */
|
||||||
|
PUT_AOUTHDR_DATA_START (abfd, aouthdr_in->data_start,
|
||||||
|
aouthdr_out->standard.data_start);
|
||||||
|
@@ -1886,7 +1889,7 @@ pe_print_edata (bfd * abfd, void * vfile
|
||||||
|
static bfd_boolean
|
||||||
|
pe_print_pdata (bfd * abfd, void * vfile)
|
||||||
|
{
|
||||||
|
-#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
# define PDATA_ROW_SIZE (3 * 8)
|
||||||
|
#else
|
||||||
|
# define PDATA_ROW_SIZE (5 * 4)
|
||||||
|
@@ -1913,7 +1916,7 @@ pe_print_pdata (bfd * abfd, void * vfile
|
||||||
|
|
||||||
|
fprintf (file,
|
||||||
|
_("\nThe Function Table (interpreted .pdata section contents)\n"));
|
||||||
|
-#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
fprintf (file,
|
||||||
|
_(" vma:\t\t\tBegin Address End Address Unwind Info\n"));
|
||||||
|
#else
|
||||||
|
@@ -1950,7 +1953,7 @@ pe_print_pdata (bfd * abfd, void * vfile
|
||||||
|
bfd_vma eh_handler;
|
||||||
|
bfd_vma eh_data;
|
||||||
|
bfd_vma prolog_end_addr;
|
||||||
|
-#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64)
|
||||||
|
int em_data;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -1968,7 +1971,7 @@ pe_print_pdata (bfd * abfd, void * vfile
|
||||||
|
/* We are probably into the padding of the section now. */
|
||||||
|
break;
|
||||||
|
|
||||||
|
-#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64)
|
||||||
|
em_data = ((eh_handler & 0x1) << 2) | (prolog_end_addr & 0x3);
|
||||||
|
#endif
|
||||||
|
eh_handler &= ~(bfd_vma) 0x3;
|
||||||
|
@@ -1979,7 +1982,7 @@ pe_print_pdata (bfd * abfd, void * vfile
|
||||||
|
bfd_fprintf_vma (abfd, file, begin_addr); fputc (' ', file);
|
||||||
|
bfd_fprintf_vma (abfd, file, end_addr); fputc (' ', file);
|
||||||
|
bfd_fprintf_vma (abfd, file, eh_handler);
|
||||||
|
-#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64)
|
||||||
|
fputc (' ', file);
|
||||||
|
bfd_fprintf_vma (abfd, file, eh_data); fputc (' ', file);
|
||||||
|
bfd_fprintf_vma (abfd, file, prolog_end_addr);
|
||||||
|
@@ -2894,7 +2897,7 @@ _bfd_XX_print_private_bfd_data_common (b
|
||||||
|
bfd_fprintf_vma (abfd, file, i->AddressOfEntryPoint);
|
||||||
|
fprintf (file, "\nBaseOfCode\t\t");
|
||||||
|
bfd_fprintf_vma (abfd, file, i->BaseOfCode);
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
/* PE32+ does not have BaseOfData member! */
|
||||||
|
fprintf (file, "\nBaseOfData\t\t");
|
||||||
|
bfd_fprintf_vma (abfd, file, i->BaseOfData);
|
||||||
|
@@ -3163,7 +3166,7 @@ _bfd_XX_get_symbol_info (bfd * abfd, asy
|
||||||
|
coff_get_symbol_info (abfd, symbol, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) && defined(COFF_WITH_peAArch64)
|
||||||
|
static int
|
||||||
|
sort_x64_pdata (const void *l, const void *r)
|
||||||
|
{
|
||||||
|
@@ -4595,7 +4598,7 @@ _bfd_XXi_final_link_postscript (bfd * ab
|
||||||
|
the TLS data directory consists of 4 pointers, followed
|
||||||
|
by two 4-byte integer. This implies that the total size
|
||||||
|
is different for 32-bit and 64-bit executables. */
|
||||||
|
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x18;
|
||||||
|
#else
|
||||||
|
pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x28;
|
||||||
|
@@ -4604,7 +4607,7 @@ _bfd_XXi_final_link_postscript (bfd * ab
|
||||||
|
|
||||||
|
/* If there is a .pdata section and we have linked pdata finally, we
|
||||||
|
need to sort the entries ascending. */
|
||||||
|
-#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64)
|
||||||
|
+#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) && defined(COFF_WITH_peAArch64)
|
||||||
|
{
|
||||||
|
asection *sec = bfd_get_section_by_name (abfd, ".pdata");
|
||||||
|
|
||||||
|
Only in binutils-2.35.2/bfd: pei-aarch64.c
|
||||||
|
diff -rup binutils.orig/bfd/peicode.h binutils-2.35.2/bfd/peicode.h
|
||||||
|
--- binutils.orig/bfd/peicode.h 2021-11-30 13:38:24.354744213 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/peicode.h 2021-11-30 13:38:37.256656929 +0000
|
||||||
|
@@ -231,7 +231,7 @@ coff_swap_scnhdr_in (bfd * abfd, void *
|
||||||
|
{
|
||||||
|
scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase;
|
||||||
|
/* Do not cut upper 32-bits for 64-bit vma. */
|
||||||
|
-#ifndef COFF_WITH_pex64
|
||||||
|
+#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
|
||||||
|
scnhdr_int->s_vaddr &= 0xffffffff;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@@ -738,6 +738,16 @@ static jump_table jtab[] =
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef AARCH64MAGIC
|
||||||
|
+/* We don't currently support jumping to DLLs, so if
|
||||||
|
+ someone does try emit a runtime trap. Through UDF #0. */
|
||||||
|
+ { AARCH64MAGIC,
|
||||||
|
+ { 0x00, 0x00, 0x00, 0x00 },
|
||||||
|
+ 4, 0
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef ARMPEMAGIC
|
||||||
|
{ ARMPEMAGIC,
|
||||||
|
{ 0x00, 0xc0, 0x9f, 0xe5, 0x00, 0xf0,
|
||||||
|
@@ -910,7 +920,7 @@ pe_ILF_build_a_bfd (bfd * abfd,
|
||||||
|
/* See PR 20907 for a reproducer. */
|
||||||
|
goto error_return;
|
||||||
|
|
||||||
|
-#ifdef COFF_WITH_pex64
|
||||||
|
+#if defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64)
|
||||||
|
((unsigned int *) id4->contents)[0] = ordinal;
|
||||||
|
((unsigned int *) id4->contents)[1] = 0x80000000;
|
||||||
|
((unsigned int *) id5->contents)[0] = ordinal;
|
||||||
|
@@ -1206,6 +1216,12 @@ pe_ILF_object_p (bfd * abfd)
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
+ case IMAGE_FILE_MACHINE_ARM64:
|
||||||
|
+#ifdef AARCH64MAGIC
|
||||||
|
+ magic = AARCH64MAGIC;
|
||||||
|
+#endif
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case IMAGE_FILE_MACHINE_THUMB:
|
||||||
|
#ifdef THUMBPEMAGIC
|
||||||
|
{
|
||||||
|
diff -rup binutils.orig/bfd/targets.c binutils-2.35.2/bfd/targets.c
|
||||||
|
--- binutils.orig/bfd/targets.c 2021-11-30 13:38:24.354744213 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/targets.c 2021-11-30 13:38:37.257656922 +0000
|
||||||
|
@@ -668,6 +668,7 @@ extern const bfd_target aarch64_elf64_be
|
||||||
|
extern const bfd_target aarch64_elf64_le_vec;
|
||||||
|
extern const bfd_target aarch64_elf64_le_cloudabi_vec;
|
||||||
|
extern const bfd_target aarch64_mach_o_vec;
|
||||||
|
+extern const bfd_target aarch64_pei_vec;
|
||||||
|
extern const bfd_target alpha_ecoff_le_vec;
|
||||||
|
extern const bfd_target alpha_elf64_vec;
|
||||||
|
extern const bfd_target alpha_elf64_fbsd_vec;
|
||||||
|
@@ -983,6 +984,7 @@ static const bfd_target * const _bfd_tar
|
||||||
|
&aarch64_elf64_le_vec,
|
||||||
|
&aarch64_elf64_le_cloudabi_vec,
|
||||||
|
&aarch64_mach_o_vec,
|
||||||
|
+ &aarch64_pei_vec,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BFD64
|
||||||
|
diff -rup binutils.orig/binutils/NEWS binutils-2.35.2/binutils/NEWS
|
||||||
|
--- binutils.orig/binutils/NEWS 2021-11-30 13:38:23.874747460 +0000
|
||||||
|
+++ binutils-2.35.2/binutils/NEWS 2021-11-30 13:42:31.024075560 +0000
|
||||||
|
@@ -1,5 +1,8 @@
|
||||||
|
-*- text -*-
|
||||||
|
|
||||||
|
+* Support for efi-app-aarch64, efi-rtdrv-aarch64 and efi-bsdrv-aarch64 has been
|
||||||
|
+ added to objcopy in order to enable UEFI development using binutils.
|
||||||
|
+
|
||||||
|
Changes in 2.35:
|
||||||
|
|
||||||
|
* Changed readelf's display of symbol names when wide mode is not enabled.
|
||||||
|
diff -rup binutils.orig/binutils/objcopy.c binutils-2.35.2/binutils/objcopy.c
|
||||||
|
--- binutils.orig/binutils/objcopy.c 2021-11-30 13:38:23.874747460 +0000
|
||||||
|
+++ binutils-2.35.2/binutils/objcopy.c 2021-11-30 13:38:37.260656902 +0000
|
||||||
|
@@ -4950,6 +4950,13 @@ convert_efi_target (char *efi)
|
||||||
|
/* Change x86_64 to x86-64. */
|
||||||
|
efi[7] = '-';
|
||||||
|
}
|
||||||
|
+ else if (strcmp (efi + 4, "aarch64") == 0)
|
||||||
|
+ {
|
||||||
|
+ /* Change aarch64 to aarch64-little. */
|
||||||
|
+ efi = (char *) xrealloc (efi, strlen (efi) + 7);
|
||||||
|
+ char *t = "aarch64-little";
|
||||||
|
+ strcpy (efi + 4, t);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate and return a pointer to a struct section_add, initializing the
|
||||||
|
diff -rup binutils.orig/include/coff/pe.h binutils-2.35.2/include/coff/pe.h
|
||||||
|
--- binutils.orig/include/coff/pe.h 2021-11-30 13:38:23.827747778 +0000
|
||||||
|
+++ binutils-2.35.2/include/coff/pe.h 2021-11-30 13:38:37.261656895 +0000
|
||||||
|
@@ -132,6 +132,7 @@
|
||||||
|
#define IMAGE_FILE_MACHINE_AM33 0x01d3
|
||||||
|
#define IMAGE_FILE_MACHINE_AMD64 0x8664
|
||||||
|
#define IMAGE_FILE_MACHINE_ARM 0x01c0
|
||||||
|
+#define IMAGE_FILE_MACHINE_ARM64 0xaa64
|
||||||
|
#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
|
||||||
|
#define IMAGE_FILE_MACHINE_CEE 0xc0ee
|
||||||
|
#define IMAGE_FILE_MACHINE_CEF 0x0cef
|
||||||
|
--- /dev/null 2021-11-30 07:48:35.901044247 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/coff-aarch64.c 2021-11-30 13:43:11.774799879 +0000
|
||||||
|
@@ -0,0 +1,165 @@
|
||||||
|
+/* BFD back-end for AArch64 COFF files.
|
||||||
|
+ Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
+
|
||||||
|
+ This program is free software; you can redistribute it and/or modify
|
||||||
|
+ it under the terms of the GNU General Public License as published by
|
||||||
|
+ the Free Software Foundation; either version 3 of the License, or
|
||||||
|
+ (at your option) any later version.
|
||||||
|
+
|
||||||
|
+ This program is distributed in the hope that it will be useful,
|
||||||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU General Public License
|
||||||
|
+ along with this program; if not, write to the Free Software
|
||||||
|
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||||
|
+ MA 02110-1301, USA. */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#ifndef COFF_WITH_peAArch64
|
||||||
|
+#define COFF_WITH_peAArch64
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* Note we have to make sure not to include headers twice.
|
||||||
|
+ Not all headers are wrapped in #ifdef guards, so we define
|
||||||
|
+ PEI_HEADERS to prevent double including here. */
|
||||||
|
+#ifndef PEI_HEADERS
|
||||||
|
+#include "sysdep.h"
|
||||||
|
+#include "bfd.h"
|
||||||
|
+#include "libbfd.h"
|
||||||
|
+#include "coff/aarch64.h"
|
||||||
|
+#include "coff/internal.h"
|
||||||
|
+#include "coff/pe.h"
|
||||||
|
+#include "libcoff.h"
|
||||||
|
+#include "libiberty.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#include "libcoff.h"
|
||||||
|
+
|
||||||
|
+/* The page size is a guess based on ELF. */
|
||||||
|
+
|
||||||
|
+#define COFF_PAGE_SIZE 0x1000
|
||||||
|
+
|
||||||
|
+/* All users of this file have bfd_octets_per_byte (abfd, sec) == 1. */
|
||||||
|
+#define OCTETS_PER_BYTE(ABFD, SEC) 1
|
||||||
|
+
|
||||||
|
+#ifndef PCRELOFFSET
|
||||||
|
+#define PCRELOFFSET TRUE
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* Currently we don't handle any relocations. */
|
||||||
|
+static reloc_howto_type pe_aarch64_std_reloc_howto[] =
|
||||||
|
+ {
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER 2
|
||||||
|
+#define COFF_PAGE_SIZE 0x1000
|
||||||
|
+
|
||||||
|
+#ifndef NUM_ELEM
|
||||||
|
+#define NUM_ELEM(a) ((sizeof (a)) / sizeof ((a)[0]))
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#define NUM_RELOCS NUM_ELEM (pe_aarch64_std_reloc_howto)
|
||||||
|
+
|
||||||
|
+#define RTYPE2HOWTO(cache_ptr, dst) \
|
||||||
|
+ (cache_ptr)->howto = NULL
|
||||||
|
+
|
||||||
|
+#ifndef bfd_pe_print_pdata
|
||||||
|
+#define bfd_pe_print_pdata NULL
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/* Return TRUE if this relocation should
|
||||||
|
+ appear in the output .reloc section. */
|
||||||
|
+
|
||||||
|
+static bfd_boolean
|
||||||
|
+in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
|
||||||
|
+ reloc_howto_type * howto)
|
||||||
|
+{
|
||||||
|
+ return !howto->pc_relative;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#include "coffcode.h"
|
||||||
|
+
|
||||||
|
+/* Target vectors. */
|
||||||
|
+const bfd_target
|
||||||
|
+#ifdef TARGET_SYM
|
||||||
|
+ TARGET_SYM =
|
||||||
|
+#else
|
||||||
|
+ aarch64_pei_vec =
|
||||||
|
+#endif
|
||||||
|
+{
|
||||||
|
+#ifdef TARGET_NAME
|
||||||
|
+ TARGET_NAME,
|
||||||
|
+#else
|
||||||
|
+ "pei-aarch64-little", /* Name. */
|
||||||
|
+#endif
|
||||||
|
+ bfd_target_coff_flavour,
|
||||||
|
+ BFD_ENDIAN_LITTLE, /* Data byte order is little. */
|
||||||
|
+ BFD_ENDIAN_LITTLE, /* Header byte order is little. */
|
||||||
|
+
|
||||||
|
+ (HAS_RELOC | EXEC_P /* Object flags. */
|
||||||
|
+ | HAS_LINENO | HAS_DEBUG
|
||||||
|
+ | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
|
||||||
|
+
|
||||||
|
+ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* Section flags. */
|
||||||
|
+#if defined(COFF_WITH_PE)
|
||||||
|
+ | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
|
||||||
|
+#endif
|
||||||
|
+ | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
|
||||||
|
+
|
||||||
|
+#ifdef TARGET_UNDERSCORE
|
||||||
|
+ TARGET_UNDERSCORE, /* Leading underscore. */
|
||||||
|
+#else
|
||||||
|
+ 0, /* Leading underscore. */
|
||||||
|
+#endif
|
||||||
|
+ '/', /* Ar_pad_char. */
|
||||||
|
+ 15, /* Ar_max_namelen. */
|
||||||
|
+ 0, /* match priority. */
|
||||||
|
+
|
||||||
|
+ /* Data conversion functions. */
|
||||||
|
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
||||||
|
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
||||||
|
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data. */
|
||||||
|
+ /* Header conversion functions. */
|
||||||
|
+ bfd_getl64, bfd_getl_signed_64, bfd_putl64,
|
||||||
|
+ bfd_getl32, bfd_getl_signed_32, bfd_putl32,
|
||||||
|
+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs. */
|
||||||
|
+
|
||||||
|
+ /* Note that we allow an object file to be treated as a core file as well. */
|
||||||
|
+ { /* bfd_check_format. */
|
||||||
|
+ _bfd_dummy_target,
|
||||||
|
+ coff_object_p,
|
||||||
|
+ bfd_generic_archive_p,
|
||||||
|
+ coff_object_p
|
||||||
|
+ },
|
||||||
|
+ { /* bfd_set_format. */
|
||||||
|
+ _bfd_bool_bfd_false_error,
|
||||||
|
+ coff_mkobject,
|
||||||
|
+ _bfd_generic_mkarchive,
|
||||||
|
+ _bfd_bool_bfd_false_error
|
||||||
|
+ },
|
||||||
|
+ { /* bfd_write_contents. */
|
||||||
|
+ _bfd_bool_bfd_false_error,
|
||||||
|
+ coff_write_object_contents,
|
||||||
|
+ _bfd_write_archive_contents,
|
||||||
|
+ _bfd_bool_bfd_false_error
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
+ BFD_JUMP_TABLE_GENERIC (coff),
|
||||||
|
+ BFD_JUMP_TABLE_COPY (coff),
|
||||||
|
+ BFD_JUMP_TABLE_CORE (_bfd_nocore),
|
||||||
|
+ BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
|
||||||
|
+ BFD_JUMP_TABLE_SYMBOLS (coff),
|
||||||
|
+ BFD_JUMP_TABLE_RELOCS (coff),
|
||||||
|
+ BFD_JUMP_TABLE_WRITE (coff),
|
||||||
|
+ BFD_JUMP_TABLE_LINK (coff),
|
||||||
|
+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
|
||||||
|
+
|
||||||
|
+ NULL,
|
||||||
|
+
|
||||||
|
+ COFF_SWAP_TABLE
|
||||||
|
+};
|
||||||
|
--- /dev/null 2021-11-30 07:48:35.901044247 +0000
|
||||||
|
+++ binutils-2.35.2/include/coff/aarch64.h 2021-11-30 13:38:37.261656895 +0000
|
||||||
|
@@ -0,0 +1,63 @@
|
||||||
|
+/* AArch64 COFF support for BFD.
|
||||||
|
+ Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
+
|
||||||
|
+ This program is free software; you can redistribute it and/or modify
|
||||||
|
+ it under the terms of the GNU General Public License as published by
|
||||||
|
+ the Free Software Foundation; either version 3 of the License, or
|
||||||
|
+ (at your option) any later version.
|
||||||
|
+
|
||||||
|
+ This program is distributed in the hope that it will be useful,
|
||||||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU General Public License
|
||||||
|
+ along with this program; if not, write to the Free Software Foundation,
|
||||||
|
+ Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
+
|
||||||
|
+#define COFFAARCH64 1
|
||||||
|
+
|
||||||
|
+#define L_LNNO_SIZE 2
|
||||||
|
+#define INCLUDE_COMDAT_FIELDS_IN_AUXENT
|
||||||
|
+#include "coff/external.h"
|
||||||
|
+
|
||||||
|
+#define F_AARCH64_ARCHITECTURE_MASK (0x4000)
|
||||||
|
+
|
||||||
|
+#define AARCH64MAGIC 0xaa64 /* From Microsoft specification. */
|
||||||
|
+
|
||||||
|
+#undef BADMAG
|
||||||
|
+#define BADMAG(x) ((x).f_magic != AARCH64MAGIC)
|
||||||
|
+#define AARCH64 1 /* Customize coffcode.h. */
|
||||||
|
+
|
||||||
|
+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
|
||||||
|
+
|
||||||
|
+#define OMAGIC 0404 /* Object files, eg as output. */
|
||||||
|
+#define ZMAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC /* Demand load format, eg normal ld output 0x10b. */
|
||||||
|
+#define STMAGIC 0401 /* Target shlib. */
|
||||||
|
+#define SHMAGIC 0443 /* Host shlib. */
|
||||||
|
+
|
||||||
|
+/* define some NT default values */
|
||||||
|
+/* #define NT_IMAGE_BASE 0x400000 moved to internal.h */
|
||||||
|
+#define NT_SECTION_ALIGNMENT 0x1000
|
||||||
|
+#define NT_FILE_ALIGNMENT 0x200
|
||||||
|
+#define NT_DEF_RESERVE 0x100000
|
||||||
|
+#define NT_DEF_COMMIT 0x1000
|
||||||
|
+
|
||||||
|
+/* We use the .rdata section to hold read only data. */
|
||||||
|
+#define _LIT ".rdata"
|
||||||
|
+
|
||||||
|
+/********************** RELOCATION DIRECTIVES **********************/
|
||||||
|
+struct external_reloc
|
||||||
|
+{
|
||||||
|
+ char r_vaddr[4];
|
||||||
|
+ char r_symndx[4];
|
||||||
|
+ char r_type[2];
|
||||||
|
+ char r_offset[4];
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#define RELOC struct external_reloc
|
||||||
|
+#define RELSZ 14
|
||||||
|
+
|
||||||
|
+#define ARM_NOTE_SECTION ".note"
|
||||||
|
--- /dev/null 2021-11-30 07:48:35.901044247 +0000
|
||||||
|
+++ binutils-2.35.2/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.s 2021-11-30 13:38:37.260656902 +0000
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+ .arch armv8-a
|
||||||
|
+ .text
|
||||||
|
+ .align 2
|
||||||
|
+ .global foo
|
||||||
|
+ .type foo, %function
|
||||||
|
+foo:
|
||||||
|
+.LFB0:
|
||||||
|
+ .cfi_startproc
|
||||||
|
+ sub sp, sp, #16
|
||||||
|
+ .cfi_def_cfa_offset 16
|
||||||
|
+ str w0, [sp, 12]
|
||||||
|
+ ldr w0, [sp, 12]
|
||||||
|
+ mul w0, w0, w0
|
||||||
|
+ add sp, sp, 16
|
||||||
|
+ .cfi_def_cfa_offset 0
|
||||||
|
+ ret
|
||||||
|
+ .cfi_endproc
|
||||||
|
+.LFE0:
|
||||||
|
+ .size foo, .-foo
|
||||||
|
+ .align 2
|
||||||
|
+ .global main
|
||||||
|
+ .type main, %function
|
||||||
|
+main:
|
||||||
|
+.LFB1:
|
||||||
|
+ .cfi_startproc
|
||||||
|
+ stp x29, x30, [sp, -16]!
|
||||||
|
+ .cfi_def_cfa_offset 16
|
||||||
|
+ .cfi_offset 29, -16
|
||||||
|
+ .cfi_offset 30, -8
|
||||||
|
+ mov x29, sp
|
||||||
|
+ mov w0, 5
|
||||||
|
+ bl foo
|
||||||
|
+ ldp x29, x30, [sp], 16
|
||||||
|
+ .cfi_restore 30
|
||||||
|
+ .cfi_restore 29
|
||||||
|
+ .cfi_def_cfa_offset 0
|
||||||
|
+ ret
|
||||||
|
+ .cfi_endproc
|
||||||
|
+.LFE1:
|
||||||
|
+ .size main, .-main
|
||||||
|
+ .ident "GCC: (fsf-trunk.2870) 12.0.0 20210930 (experimental)"
|
||||||
|
+ .section .note.GNU-stack,"",@progbits
|
||||||
|
--- /dev/null 2021-11-30 07:48:35.901044247 +0000
|
||||||
|
+++ binutils-2.35.2/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.d 2021-11-30 13:38:37.260656902 +0000
|
||||||
|
@@ -0,0 +1,16 @@
|
||||||
|
+#skip: aarch64_be-*-*
|
||||||
|
+#ld: -e0
|
||||||
|
+#PROG: objcopy
|
||||||
|
+#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --target=efi-app-aarch64
|
||||||
|
+#objdump: -h -f
|
||||||
|
+#name: Check if efi app format is recognized
|
||||||
|
+
|
||||||
|
+.*: file format pei-aarch64-little
|
||||||
|
+architecture: aarch64, flags 0x00000132:
|
||||||
|
+EXEC_P, HAS_SYMS, HAS_LOCALS, D_PAGED
|
||||||
|
+start address 0x0000000000000000
|
||||||
|
+
|
||||||
|
+Sections:
|
||||||
|
+Idx Name Size VMA LMA File off Algn
|
||||||
|
+ 0 \.text 00000030 0[^ ]+ 0[^ ]+ 0[^ ]+ 2\*\*2
|
||||||
|
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
|
||||||
|
--- /dev/null 2021-11-30 07:48:35.901044247 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/pei-aarch64.c 2021-11-30 13:38:37.255656936 +0000
|
||||||
|
@@ -0,0 +1,75 @@
|
||||||
|
+/* BFD back-end for AArch64 PE IMAGE COFF files.
|
||||||
|
+ Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
|
+
|
||||||
|
+ This file is part of BFD, the Binary File Descriptor library.
|
||||||
|
+
|
||||||
|
+ This program is free software; you can redistribute it and/or modify
|
||||||
|
+ it under the terms of the GNU General Public License as published by
|
||||||
|
+ the Free Software Foundation; either version 3 of the License, or
|
||||||
|
+ (at your option) any later version.
|
||||||
|
+
|
||||||
|
+ This program is distributed in the hope that it will be useful,
|
||||||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ GNU General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU General Public License
|
||||||
|
+ along with this program; if not, write to the Free Software
|
||||||
|
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||||
|
+ MA 02110-1301, USA. */
|
||||||
|
+
|
||||||
|
+#include "sysdep.h"
|
||||||
|
+#include "bfd.h"
|
||||||
|
+
|
||||||
|
+#define TARGET_SYM aarch64_pei_vec
|
||||||
|
+#define TARGET_NAME "pei-aarch64-little"
|
||||||
|
+#define TARGET_ARCHITECTURE bfd_arch_aarch64
|
||||||
|
+#define TARGET_PAGESIZE 4096
|
||||||
|
+#define TARGET_BIG_ENDIAN 0
|
||||||
|
+#define TARGET_ARCHIVE 0
|
||||||
|
+#define TARGET_PRIORITY 0
|
||||||
|
+
|
||||||
|
+#define COFF_IMAGE_WITH_PE
|
||||||
|
+/* Rename the above into.. */
|
||||||
|
+#define COFF_WITH_peAArch64
|
||||||
|
+#define COFF_WITH_PE
|
||||||
|
+#define PCRELOFFSET TRUE
|
||||||
|
+
|
||||||
|
+/* Long section names not allowed in executable images, only object files. */
|
||||||
|
+#define COFF_LONG_SECTION_NAMES 0
|
||||||
|
+
|
||||||
|
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
|
||||||
|
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
|
||||||
|
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
|
||||||
|
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
|
||||||
|
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
|
||||||
|
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
|
||||||
|
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
|
||||||
|
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
|
||||||
|
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
|
||||||
|
+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
|
||||||
|
+
|
||||||
|
+#define PEI_HEADERS
|
||||||
|
+#include "sysdep.h"
|
||||||
|
+#include "bfd.h"
|
||||||
|
+#include "libbfd.h"
|
||||||
|
+#include "coff/aarch64.h"
|
||||||
|
+#include "coff/internal.h"
|
||||||
|
+#include "coff/pe.h"
|
||||||
|
+#include "libcoff.h"
|
||||||
|
+#include "libpei.h"
|
||||||
|
+#include "libiberty.h"
|
||||||
|
+
|
||||||
|
+/* Make sure we're setting a 64-bit format. */
|
||||||
|
+#undef AOUTSZ
|
||||||
|
+#define AOUTSZ PEPAOUTSZ
|
||||||
|
+#define PEAOUTHDR PEPAOUTHDR
|
||||||
|
+
|
||||||
|
+#include "coff-aarch64.c"
|
@ -0,0 +1,155 @@
|
|||||||
|
--- binutils.orig/gas/dw2gencfi.c 2022-09-08 13:54:05.539276706 +0100
|
||||||
|
+++ binutils-2.35.2/gas/dw2gencfi.c 2022-09-08 14:05:56.128016840 +0100
|
||||||
|
@@ -2054,6 +2054,64 @@ output_fde (struct fde_entry *fde, struc
|
||||||
|
symbol_set_value_now (end_address);
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Allow these insns to be put in the initial sequence of a CIE.
|
||||||
|
+ If J is non-NULL, then compare I and J insns for a match. */
|
||||||
|
+
|
||||||
|
+static inline bfd_boolean
|
||||||
|
+initial_cie_insn (const struct cfi_insn_data *i, const struct cfi_insn_data *j)
|
||||||
|
+{
|
||||||
|
+ if (j && i->insn != j->insn)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ switch (i->insn)
|
||||||
|
+ {
|
||||||
|
+ case DW_CFA_offset:
|
||||||
|
+ case DW_CFA_def_cfa:
|
||||||
|
+ case DW_CFA_val_offset:
|
||||||
|
+ if (j)
|
||||||
|
+ {
|
||||||
|
+ if (i->u.ri.reg != j->u.ri.reg)
|
||||||
|
+ return FALSE;
|
||||||
|
+ if (i->u.ri.offset != j->u.ri.offset)
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case DW_CFA_register:
|
||||||
|
+ if (j)
|
||||||
|
+ {
|
||||||
|
+ if (i->u.rr.reg1 != j->u.rr.reg1)
|
||||||
|
+ return FALSE;
|
||||||
|
+ if (i->u.rr.reg2 != j->u.rr.reg2)
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case DW_CFA_def_cfa_register:
|
||||||
|
+ case DW_CFA_restore:
|
||||||
|
+ case DW_CFA_undefined:
|
||||||
|
+ case DW_CFA_same_value:
|
||||||
|
+ if (j)
|
||||||
|
+ {
|
||||||
|
+ if (i->u.r != j->u.r)
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case DW_CFA_def_cfa_offset:
|
||||||
|
+ if (j)
|
||||||
|
+ {
|
||||||
|
+ if (i->u.i != j->u.i)
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ default:
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static struct cie_entry *
|
||||||
|
select_cie_for_fde (struct fde_entry *fde, bfd_boolean eh_frame,
|
||||||
|
struct cfi_insn_data **pfirst, int align)
|
||||||
|
@@ -2099,71 +2157,15 @@ select_cie_for_fde (struct fde_entry *fd
|
||||||
|
i != cie->last && j != NULL;
|
||||||
|
i = i->next, j = j->next)
|
||||||
|
{
|
||||||
|
- if (i->insn != j->insn)
|
||||||
|
- goto fail;
|
||||||
|
- switch (i->insn)
|
||||||
|
- {
|
||||||
|
- case DW_CFA_advance_loc:
|
||||||
|
- case DW_CFA_remember_state:
|
||||||
|
- /* We reached the first advance/remember in the FDE,
|
||||||
|
- but did not reach the end of the CIE list. */
|
||||||
|
- goto fail;
|
||||||
|
-
|
||||||
|
- case DW_CFA_offset:
|
||||||
|
- case DW_CFA_def_cfa:
|
||||||
|
- if (i->u.ri.reg != j->u.ri.reg)
|
||||||
|
- goto fail;
|
||||||
|
- if (i->u.ri.offset != j->u.ri.offset)
|
||||||
|
- goto fail;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case DW_CFA_register:
|
||||||
|
- if (i->u.rr.reg1 != j->u.rr.reg1)
|
||||||
|
- goto fail;
|
||||||
|
- if (i->u.rr.reg2 != j->u.rr.reg2)
|
||||||
|
- goto fail;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case DW_CFA_def_cfa_register:
|
||||||
|
- case DW_CFA_restore:
|
||||||
|
- case DW_CFA_undefined:
|
||||||
|
- case DW_CFA_same_value:
|
||||||
|
- if (i->u.r != j->u.r)
|
||||||
|
- goto fail;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case DW_CFA_def_cfa_offset:
|
||||||
|
- if (i->u.i != j->u.i)
|
||||||
|
- goto fail;
|
||||||
|
- break;
|
||||||
|
-
|
||||||
|
- case CFI_escape:
|
||||||
|
- case CFI_val_encoded_addr:
|
||||||
|
- case CFI_label:
|
||||||
|
- /* Don't bother matching these for now. */
|
||||||
|
- goto fail;
|
||||||
|
-
|
||||||
|
- default:
|
||||||
|
- abort ();
|
||||||
|
- }
|
||||||
|
+ if (!initial_cie_insn (i, j))
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Success if we reached the end of the CIE list, and we've either
|
||||||
|
- run out of FDE entries or we've encountered an advance,
|
||||||
|
- remember, or escape. */
|
||||||
|
- if (i == cie->last
|
||||||
|
- && (!j
|
||||||
|
- || j->insn == DW_CFA_advance_loc
|
||||||
|
- || j->insn == DW_CFA_remember_state
|
||||||
|
- || j->insn == CFI_escape
|
||||||
|
- || j->insn == CFI_val_encoded_addr
|
||||||
|
- || j->insn == CFI_label))
|
||||||
|
+ if (i == cie->last)
|
||||||
|
{
|
||||||
|
*pfirst = j;
|
||||||
|
return cie;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- fail:;
|
||||||
|
}
|
||||||
|
|
||||||
|
cie = XNEW (struct cie_entry);
|
||||||
|
@@ -2181,11 +2183,7 @@ select_cie_for_fde (struct fde_entry *fd
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (i = cie->first; i ; i = i->next)
|
||||||
|
- if (i->insn == DW_CFA_advance_loc
|
||||||
|
- || i->insn == DW_CFA_remember_state
|
||||||
|
- || i->insn == CFI_escape
|
||||||
|
- || i->insn == CFI_val_encoded_addr
|
||||||
|
- || i->insn == CFI_label)
|
||||||
|
+ if (!initial_cie_insn (i, NULL))
|
||||||
|
break;
|
||||||
|
|
||||||
|
cie->last = i;
|
@ -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,11 @@
|
|||||||
|
--- binutils.orig/bfd/dwarf2.c 2021-05-18 12:00:10.363028020 +0100
|
||||||
|
+++ binutils-2.35.2/bfd/dwarf2.c 2021-05-18 12:01:09.930831909 +0100
|
||||||
|
@@ -1194,7 +1194,7 @@ read_attribute_value (struct attribute *
|
||||||
|
case DW_FORM_ref_addr:
|
||||||
|
/* DW_FORM_ref_addr is an address in DWARF2, and an offset in
|
||||||
|
DWARF3. */
|
||||||
|
- if (unit->version == 3 || unit->version == 4)
|
||||||
|
+ if (unit->version >= 3)
|
||||||
|
{
|
||||||
|
if (unit->offset_size == 4)
|
||||||
|
attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end);
|
@ -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
|
@ -0,0 +1,53 @@
|
|||||||
|
Only in binutils-2.35.2/gas/testsuite/gas/aarch64: rng-1.d
|
||||||
|
Only in binutils-2.35.2/gas/testsuite/gas/aarch64: rng-1.s
|
||||||
|
diff -rup binutils.orig/opcodes/aarch64-opc.c binutils-2.35.2/opcodes/aarch64-opc.c
|
||||||
|
--- binutils.orig/opcodes/aarch64-opc.c 2022-04-05 11:50:10.131798329 +0100
|
||||||
|
+++ binutils-2.35.2/opcodes/aarch64-opc.c 2022-04-05 11:54:32.596827591 +0100
|
||||||
|
@@ -3810,9 +3810,6 @@ aarch64_print_operand (char *buf, size_t
|
||||||
|
#define SR_FEAT(n,e,f,feat) \
|
||||||
|
SYSREG ((n), (e), (f) | F_ARCHEXT, AARCH64_FEATURE_##feat)
|
||||||
|
|
||||||
|
-#define SR_RNG(n,e,f) \
|
||||||
|
- SYSREG ((n), (e), (f) | F_ARCHEXT, AARCH64_FEATURE_RNG | AARCH64_FEATURE_V8_5)
|
||||||
|
-
|
||||||
|
#define SR_V8_1(n,e,f) SR_FEAT (n,e,f,V8_1)
|
||||||
|
#define SR_V8_2(n,e,f) SR_FEAT (n,e,f,V8_2)
|
||||||
|
#define SR_V8_3(n,e,f) SR_FEAT (n,e,f,V8_3)
|
||||||
|
@@ -3820,6 +3817,7 @@ aarch64_print_operand (char *buf, size_t
|
||||||
|
#define SR_V8_4(n,e,f) SR_FEAT (n,e,f,V8_4)
|
||||||
|
#define SR_PAN(n,e,f) SR_FEAT (n,e,f,PAN)
|
||||||
|
#define SR_RAS(n,e,f) SR_FEAT (n,e,f,RAS)
|
||||||
|
+#define SR_RNG(n,e,f) SR_FEAT (n,e,f,RNG)
|
||||||
|
#define SR_SSBS(n,e,f) SR_FEAT (n,e,f,SSBS)
|
||||||
|
#define SR_SVE(n,e,f) SR_FEAT (n,e,f,SVE)
|
||||||
|
#define SR_ID_PFR2(n,e,f) SR_FEAT (n,e,f,ID_PFR2)
|
||||||
|
--- /dev/null 2022-04-05 09:32:54.900867346 +0100
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/aarch64/rng-1.s 2022-04-05 11:55:13.973674567 +0100
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+ .arch armv8.4-a+rng
|
||||||
|
+ mrs x5, rndr
|
||||||
|
+ mrs x6, rndrrs
|
||||||
|
--- /dev/null 2022-04-05 09:32:54.900867346 +0100
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/aarch64/rng-1.d 2022-04-05 11:55:45.338558554 +0100
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+#source: rng-1.s
|
||||||
|
+#objdump: -dr
|
||||||
|
+
|
||||||
|
+.*: file format .*
|
||||||
|
+
|
||||||
|
+Disassembly of section \.text:
|
||||||
|
+
|
||||||
|
+0+ <.*>:
|
||||||
|
+.*: d53b2405 mrs x5, rndr
|
||||||
|
+.*: d53b2426 mrs x6, rndrrs
|
||||||
|
--- binutils.orig/gas/config/tc-aarch64.c 2022-05-23 09:44:07.623234684 +0100
|
||||||
|
+++ binutils-2.35.2/gas/config/tc-aarch64.c 2022-05-23 09:47:09.147696001 +0100
|
||||||
|
@@ -9206,7 +9206,7 @@ aarch64_parse_features (const char *str,
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (opt->name == NULL)
|
||||||
|
+ if (opt->name == NULL && adding_value)
|
||||||
|
{
|
||||||
|
as_bad (_("unknown architectural extension `%s'"), str);
|
||||||
|
return 0;
|
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,11 @@
|
|||||||
|
--- binutils.orig/config/override.m4 2021-08-31 14:20:17.275574804 +0100
|
||||||
|
+++ binutils-2.37/config/override.m4 2021-08-31 14:36:37.793954247 +0100
|
||||||
|
@@ -41,7 +41,7 @@ dnl Or for updating the whole tree at on
|
||||||
|
AC_DEFUN([_GCC_AUTOCONF_VERSION_CHECK],
|
||||||
|
[m4_if(m4_defn([_GCC_AUTOCONF_VERSION]),
|
||||||
|
m4_defn([m4_PACKAGE_VERSION]), [],
|
||||||
|
- [m4_fatal([Please use exactly Autoconf ]_GCC_AUTOCONF_VERSION[ instead of ]m4_defn([m4_PACKAGE_VERSION])[.])])
|
||||||
|
+ [])
|
||||||
|
])
|
||||||
|
m4_define([AC_INIT], m4_defn([AC_INIT])[
|
||||||
|
_GCC_AUTOCONF_VERSION_CHECK
|
@ -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,292 @@
|
|||||||
|
diff --git a/gas/testsuite/gas/elf/dwarf-5-file0-2.d b/gas/testsuite/gas/elf/dwarf-5-file0-2.d
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..4b3ed29f4c9
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gas/testsuite/gas/elf/dwarf-5-file0-2.d
|
||||||
|
@@ -0,0 +1,15 @@
|
||||||
|
+#as: --gdwarf-5
|
||||||
|
+#name: DWARF5 .file 0 dir file
|
||||||
|
+#readelf: -wl
|
||||||
|
+
|
||||||
|
+#...
|
||||||
|
+ The Directory Table \(offset 0x.*, lines 1, columns 1\):
|
||||||
|
+ Entry Name
|
||||||
|
+#...
|
||||||
|
+ 0 \(indirect line string, offset: 0x.*\): /example
|
||||||
|
+
|
||||||
|
+ The File Name Table \(offset 0x.*, lines 2, columns 2\):
|
||||||
|
+ Entry Dir Name
|
||||||
|
+ 0 0 \(indirect line string, offset: 0x.*\): test.c
|
||||||
|
+ 1 0 \(indirect line string, offset: 0x.*\): test.c
|
||||||
|
+#pass
|
||||||
|
diff --git a/gas/testsuite/gas/elf/dwarf-5-file0-2.s b/gas/testsuite/gas/elf/dwarf-5-file0-2.s
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..135a03bf493
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gas/testsuite/gas/elf/dwarf-5-file0-2.s
|
||||||
|
@@ -0,0 +1,111 @@
|
||||||
|
+ .file "test.c"
|
||||||
|
+ .text
|
||||||
|
+.Ltext0:
|
||||||
|
+ .file 0 "/example" "test.c"
|
||||||
|
+ .globl x
|
||||||
|
+ .section .bss
|
||||||
|
+ .balign 4
|
||||||
|
+ .type x, @object
|
||||||
|
+ .size x, 4
|
||||||
|
+x:
|
||||||
|
+ .zero 4
|
||||||
|
+ .text
|
||||||
|
+.Letext0:
|
||||||
|
+ .file 1 "test.c"
|
||||||
|
+ .section .debug_info,"",%progbits
|
||||||
|
+.Ldebug_info0:
|
||||||
|
+ .long 0x32
|
||||||
|
+ .2byte 0x5
|
||||||
|
+ .byte 0x1
|
||||||
|
+ .byte 0x4
|
||||||
|
+ .long .Ldebug_abbrev0
|
||||||
|
+ .uleb128 0x1
|
||||||
|
+ .long .LASF2
|
||||||
|
+ .byte 0x1d
|
||||||
|
+ .long .LASF0
|
||||||
|
+ .long .LASF1
|
||||||
|
+ .long .Ldebug_line0
|
||||||
|
+ .uleb128 0x2
|
||||||
|
+ .string "x"
|
||||||
|
+ .byte 0x1
|
||||||
|
+ .byte 0x1
|
||||||
|
+ .byte 0x5
|
||||||
|
+ .long 0x2e
|
||||||
|
+ .uleb128 0x5
|
||||||
|
+ .byte 0x3
|
||||||
|
+ .long x
|
||||||
|
+ .uleb128 0x3
|
||||||
|
+ .byte 0x4
|
||||||
|
+ .byte 0x5
|
||||||
|
+ .string "int"
|
||||||
|
+ .byte 0
|
||||||
|
+ .section .debug_abbrev,"",%progbits
|
||||||
|
+.Ldebug_abbrev0:
|
||||||
|
+ .uleb128 0x1
|
||||||
|
+ .uleb128 0x11
|
||||||
|
+ .byte 0x1
|
||||||
|
+ .uleb128 0x25
|
||||||
|
+ .uleb128 0xe
|
||||||
|
+ .uleb128 0x13
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0x3
|
||||||
|
+ .uleb128 0x1f
|
||||||
|
+ .uleb128 0x1b
|
||||||
|
+ .uleb128 0x1f
|
||||||
|
+ .uleb128 0x10
|
||||||
|
+ .uleb128 0x17
|
||||||
|
+ .byte 0
|
||||||
|
+ .byte 0
|
||||||
|
+ .uleb128 0x2
|
||||||
|
+ .uleb128 0x34
|
||||||
|
+ .byte 0
|
||||||
|
+ .uleb128 0x3
|
||||||
|
+ .uleb128 0x8
|
||||||
|
+ .uleb128 0x3a
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0x3b
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0x39
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0x49
|
||||||
|
+ .uleb128 0x13
|
||||||
|
+ .uleb128 0x3f
|
||||||
|
+ .uleb128 0x19
|
||||||
|
+ .uleb128 0x2
|
||||||
|
+ .uleb128 0x18
|
||||||
|
+ .byte 0
|
||||||
|
+ .byte 0
|
||||||
|
+ .uleb128 0x3
|
||||||
|
+ .uleb128 0x24
|
||||||
|
+ .byte 0
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0x3e
|
||||||
|
+ .uleb128 0xb
|
||||||
|
+ .uleb128 0x3
|
||||||
|
+ .uleb128 0x8
|
||||||
|
+ .byte 0
|
||||||
|
+ .byte 0
|
||||||
|
+ .byte 0
|
||||||
|
+ .section .debug_aranges,"",%progbits
|
||||||
|
+ .long 0x14
|
||||||
|
+ .2byte 0x2
|
||||||
|
+ .long .Ldebug_info0
|
||||||
|
+ .byte 0x4
|
||||||
|
+ .byte 0
|
||||||
|
+ .2byte 0
|
||||||
|
+ .2byte 0
|
||||||
|
+ .long 0
|
||||||
|
+ .long 0
|
||||||
|
+ .section .debug_line,"",%progbits
|
||||||
|
+.Ldebug_line0:
|
||||||
|
+ .section .debug_str,"MS",%progbits,1
|
||||||
|
+.LASF2:
|
||||||
|
+ .string "GNU C17 11.2.1 -g"
|
||||||
|
+ .section .debug_line_str,"MS",%progbits,1
|
||||||
|
+.LASF1:
|
||||||
|
+ .string "/example"
|
||||||
|
+.LASF0:
|
||||||
|
+ .string "test.c"
|
||||||
|
+ .ident "GCC: (GNU) 11.2.1"
|
||||||
|
+ .section .note.GNU-stack,"",%progbits
|
||||||
|
diff --git a/gas/testsuite/gas/elf/dwarf-5-file0-2.s b/gas/testsuite/gas/elf/dwarf-5-file0-2.s
|
||||||
|
index 135a03bf493..bab4a16b56b 100644
|
||||||
|
--- a/gas/testsuite/gas/elf/dwarf-5-file0-2.s
|
||||||
|
+++ b/gas/testsuite/gas/elf/dwarf-5-file0-2.s
|
||||||
|
@@ -5,7 +5,7 @@
|
||||||
|
.globl x
|
||||||
|
.section .bss
|
||||||
|
.balign 4
|
||||||
|
- .type x, @object
|
||||||
|
+ .type x, %object
|
||||||
|
.size x, 4
|
||||||
|
x:
|
||||||
|
.zero 4
|
||||||
|
@@ -14,30 +14,30 @@ x:
|
||||||
|
.file 1 "test.c"
|
||||||
|
.section .debug_info,"",%progbits
|
||||||
|
.Ldebug_info0:
|
||||||
|
- .long 0x32
|
||||||
|
+ .4byte 0x32
|
||||||
|
.2byte 0x5
|
||||||
|
.byte 0x1
|
||||||
|
.byte 0x4
|
||||||
|
- .long .Ldebug_abbrev0
|
||||||
|
+ .4byte .Ldebug_abbrev0
|
||||||
|
.uleb128 0x1
|
||||||
|
- .long .LASF2
|
||||||
|
+ .4byte .LASF2
|
||||||
|
.byte 0x1d
|
||||||
|
- .long .LASF0
|
||||||
|
- .long .LASF1
|
||||||
|
- .long .Ldebug_line0
|
||||||
|
+ .4byte .LASF0
|
||||||
|
+ .4byte .LASF1
|
||||||
|
+ .4byte .Ldebug_line0
|
||||||
|
.uleb128 0x2
|
||||||
|
- .string "x"
|
||||||
|
+ .asciz "x"
|
||||||
|
.byte 0x1
|
||||||
|
.byte 0x1
|
||||||
|
.byte 0x5
|
||||||
|
- .long 0x2e
|
||||||
|
+ .4byte 0x2e
|
||||||
|
.uleb128 0x5
|
||||||
|
.byte 0x3
|
||||||
|
- .long x
|
||||||
|
+ .4byte x
|
||||||
|
.uleb128 0x3
|
||||||
|
.byte 0x4
|
||||||
|
.byte 0x5
|
||||||
|
- .string "int"
|
||||||
|
+ .asciz "int"
|
||||||
|
.byte 0
|
||||||
|
.section .debug_abbrev,"",%progbits
|
||||||
|
.Ldebug_abbrev0:
|
||||||
|
@@ -88,24 +88,24 @@ x:
|
||||||
|
.byte 0
|
||||||
|
.byte 0
|
||||||
|
.section .debug_aranges,"",%progbits
|
||||||
|
- .long 0x14
|
||||||
|
+ .4byte 0x14
|
||||||
|
.2byte 0x2
|
||||||
|
- .long .Ldebug_info0
|
||||||
|
+ .4byte .Ldebug_info0
|
||||||
|
.byte 0x4
|
||||||
|
.byte 0
|
||||||
|
.2byte 0
|
||||||
|
.2byte 0
|
||||||
|
- .long 0
|
||||||
|
- .long 0
|
||||||
|
+ .4byte 0
|
||||||
|
+ .4byte 0
|
||||||
|
.section .debug_line,"",%progbits
|
||||||
|
.Ldebug_line0:
|
||||||
|
.section .debug_str,"MS",%progbits,1
|
||||||
|
.LASF2:
|
||||||
|
- .string "GNU C17 11.2.1 -g"
|
||||||
|
+ .asciz "GNU C17 11.2.1 -g"
|
||||||
|
.section .debug_line_str,"MS",%progbits,1
|
||||||
|
.LASF1:
|
||||||
|
- .string "/example"
|
||||||
|
+ .asciz "/example"
|
||||||
|
.LASF0:
|
||||||
|
- .string "test.c"
|
||||||
|
+ .asciz "test.c"
|
||||||
|
.ident "GCC: (GNU) 11.2.1"
|
||||||
|
.section .note.GNU-stack,"",%progbits
|
||||||
|
diff -rup binutils.orig/gas/dwarf2dbg.c binutils-2.35.2/gas/dwarf2dbg.c
|
||||||
|
--- binutils.orig/gas/dwarf2dbg.c 2021-11-08 14:59:19.759524743 +0000
|
||||||
|
+++ binutils-2.35.2/gas/dwarf2dbg.c 2021-11-08 15:00:55.179909708 +0000
|
||||||
|
@@ -588,6 +588,7 @@ get_basename (const char * pathname)
|
||||||
|
|
||||||
|
static unsigned int
|
||||||
|
get_directory_table_entry (const char * dirname,
|
||||||
|
+ const char * file0_dirname,
|
||||||
|
size_t dirlen,
|
||||||
|
bfd_boolean can_use_zero)
|
||||||
|
{
|
||||||
|
@@ -617,7 +618,7 @@ get_directory_table_entry (const char *
|
||||||
|
{
|
||||||
|
if (dirs == NULL || dirs[0] == NULL)
|
||||||
|
{
|
||||||
|
- const char * pwd = getpwd ();
|
||||||
|
+ const char * pwd = file0_dirname ? file0_dirname : getpwd ();
|
||||||
|
|
||||||
|
if (dwarf_level >= 5 && strcmp (dirname, pwd) != 0)
|
||||||
|
{
|
||||||
|
@@ -626,7 +627,7 @@ get_directory_table_entry (const char *
|
||||||
|
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);
|
||||||
|
+ (void) get_directory_table_entry (pwd, NULL, strlen (pwd), TRUE);
|
||||||
|
d = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
@@ -722,7 +723,7 @@ allocate_filenum (const char * pathname)
|
||||||
|
file = get_basename (pathname);
|
||||||
|
dir_len = file - pathname;
|
||||||
|
|
||||||
|
- dir = get_directory_table_entry (pathname, dir_len, FALSE);
|
||||||
|
+ dir = get_directory_table_entry (pathname, NULL, dir_len, FALSE);
|
||||||
|
|
||||||
|
/* Do not use slot-0. That is specifically reserved for use by
|
||||||
|
the '.file 0 "name"' directive. */
|
||||||
|
@@ -762,6 +763,7 @@ allocate_filename_to_slot (const char *
|
||||||
|
const char *file;
|
||||||
|
size_t dirlen;
|
||||||
|
unsigned int i, d;
|
||||||
|
+ const char *file0_dirname = dirname;
|
||||||
|
|
||||||
|
/* Short circuit the common case of adding the same pathname
|
||||||
|
as last time. */
|
||||||
|
@@ -836,7 +838,8 @@ allocate_filename_to_slot (const char *
|
||||||
|
file = filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
- d = get_directory_table_entry (dirname, dirlen, num == 0);
|
||||||
|
+ d = get_directory_table_entry (dirname, file0_dirname, dirlen,
|
||||||
|
+ num == 0);
|
||||||
|
i = num;
|
||||||
|
|
||||||
|
if (! assign_file_to_slot (i, file, d))
|
||||||
|
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-11-08 14:59:19.856524118 +0000
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/elf/elf.exp 2021-11-08 14:59:36.225418609 +0000
|
||||||
|
@@ -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-file0-2" $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
|
||||||
|
|
@ -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,193 @@
|
|||||||
|
diff --git a/gold/i386.cc b/gold/i386.cc
|
||||||
|
index bf209fe9a86..31161ff091c 100644
|
||||||
|
--- a/gold/i386.cc
|
||||||
|
+++ b/gold/i386.cc
|
||||||
|
@@ -360,7 +360,11 @@ class Target_i386 : public Sized_target<32, false>
|
||||||
|
got_(NULL), plt_(NULL), got_plt_(NULL), got_irelative_(NULL),
|
||||||
|
got_tlsdesc_(NULL), global_offset_table_(NULL), rel_dyn_(NULL),
|
||||||
|
rel_irelative_(NULL), copy_relocs_(elfcpp::R_386_COPY),
|
||||||
|
- got_mod_index_offset_(-1U), tls_base_symbol_defined_(false)
|
||||||
|
+ got_mod_index_offset_(-1U), tls_base_symbol_defined_(false),
|
||||||
|
+ isa_1_used_(0), isa_1_needed_(0),
|
||||||
|
+ 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)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
// Process the relocations to determine unreferenced sections for
|
||||||
|
@@ -859,6 +863,21 @@ class Target_i386 : public Sized_target<32, false>
|
||||||
|
this->rel_dyn_section(layout));
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Record a target-specific program property in the .note.gnu.property
|
||||||
|
+ // section.
|
||||||
|
+ void
|
||||||
|
+ record_gnu_property(unsigned int, unsigned int, size_t,
|
||||||
|
+ const unsigned char*, const Object*);
|
||||||
|
+
|
||||||
|
+ // Merge the target-specific program properties from the current object.
|
||||||
|
+ void
|
||||||
|
+ merge_gnu_properties(const Object*);
|
||||||
|
+
|
||||||
|
+ // Finalize the target-specific program properties and add them back to
|
||||||
|
+ // the layout.
|
||||||
|
+ void
|
||||||
|
+ do_finalize_gnu_properties(Layout*) const;
|
||||||
|
+
|
||||||
|
// Information about this specific target which we pass to the
|
||||||
|
// general Target structure.
|
||||||
|
static const Target::Target_info i386_info;
|
||||||
|
@@ -898,6 +917,26 @@ class Target_i386 : public Sized_target<32, false>
|
||||||
|
unsigned int got_mod_index_offset_;
|
||||||
|
// True if the _TLS_MODULE_BASE_ symbol has been defined.
|
||||||
|
bool tls_base_symbol_defined_;
|
||||||
|
+
|
||||||
|
+ // Target-specific program properties, from .note.gnu.property section.
|
||||||
|
+ // Each bit represents a specific feature.
|
||||||
|
+ 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
|
||||||
|
+ // is absent from an object), the result should be all zeroes.
|
||||||
|
+ // (See PR ld/23486.)
|
||||||
|
+ uint32_t object_isa_1_used_;
|
||||||
|
+ // 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_;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Target::Target_info Target_i386::i386_info =
|
||||||
|
@@ -1042,6 +1081,126 @@ Target_i386::rel_irelative_section(Layout* layout)
|
||||||
|
return this->rel_irelative_;
|
||||||
|
}
|
||||||
|
|
||||||
|
+// Record a target-specific program property from the .note.gnu.property
|
||||||
|
+// section.
|
||||||
|
+void
|
||||||
|
+Target_i386::record_gnu_property(
|
||||||
|
+ unsigned int, unsigned int pr_type,
|
||||||
|
+ size_t pr_datasz, const unsigned char* pr_data,
|
||||||
|
+ const Object* object)
|
||||||
|
+{
|
||||||
|
+ uint32_t val = 0;
|
||||||
|
+
|
||||||
|
+ 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 "
|
||||||
|
+ "(pr_datasz for property %d is not 4)"),
|
||||||
|
+ object->name().c_str(), pr_type);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ val = elfcpp::Swap<32, false>::readval(pr_data);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ gold_warning(_("%s: unknown program property type 0x%x "
|
||||||
|
+ "in .note.gnu.property section"),
|
||||||
|
+ object->name().c_str(), pr_type);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ switch (pr_type)
|
||||||
|
+ {
|
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_ISA_1_USED:
|
||||||
|
+ this->object_isa_1_used_ |= val;
|
||||||
|
+ break;
|
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||||
|
+ this->isa_1_needed_ |= val;
|
||||||
|
+ break;
|
||||||
|
+ case elfcpp::GNU_PROPERTY_X86_FEATURE_1_AND:
|
||||||
|
+ // 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;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// Merge the target-specific program properties from the current object.
|
||||||
|
+void
|
||||||
|
+Target_i386::merge_gnu_properties(const Object*)
|
||||||
|
+{
|
||||||
|
+ if (this->seen_first_object_)
|
||||||
|
+ {
|
||||||
|
+ // If any object is missing the ISA_1_USED property, we must omit
|
||||||
|
+ // it from the output file.
|
||||||
|
+ if (this->object_isa_1_used_ == 0)
|
||||||
|
+ this->isa_1_used_ = 0;
|
||||||
|
+ 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
|
||||||
|
+add_property(Layout* layout, unsigned int pr_type, uint32_t val)
|
||||||
|
+{
|
||||||
|
+ unsigned char buf[4];
|
||||||
|
+ elfcpp::Swap<32, false>::writeval(buf, val);
|
||||||
|
+ layout->add_gnu_property(elfcpp::NT_GNU_PROPERTY_TYPE_0, pr_type, 4, buf);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+// Finalize the target-specific program properties and add them back to
|
||||||
|
+// the layout.
|
||||||
|
+void
|
||||||
|
+Target_i386::do_finalize_gnu_properties(Layout* layout) const
|
||||||
|
+{
|
||||||
|
+ if (this->isa_1_used_ != 0)
|
||||||
|
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_ISA_1_USED,
|
||||||
|
+ this->isa_1_used_);
|
||||||
|
+ if (this->isa_1_needed_ != 0)
|
||||||
|
+ add_property(layout, elfcpp::GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||||
|
+ this->isa_1_needed_);
|
||||||
|
+ 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.
|
||||||
|
// The remainder of the section is written while writing the PLT
|
||||||
|
// in Output_data_plt_i386::do_write.
|
@ -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,17 @@
|
|||||||
|
|
||||||
|
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
|
||||||
|
index 3c129760498..dbda6c4465d 100644
|
||||||
|
--- a/ld/testsuite/ld-plugin/lto.exp
|
||||||
|
+++ b/ld/testsuite/ld-plugin/lto.exp
|
||||||
|
@@ -721,7 +721,7 @@ if { [at_least_gcc_version 4 7] } {
|
||||||
|
] \
|
||||||
|
]
|
||||||
|
set exec_output [run_host_cmd "sh" \
|
||||||
|
- "-c \"ulimit -n 16; \
|
||||||
|
+ "-c \" \
|
||||||
|
$ar -rc $plug_opt \
|
||||||
|
tmpdir/libpr23460.a \
|
||||||
|
tmpdir/pr23460a.o \
|
||||||
|
--
|
||||||
|
2.38.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,59 @@
|
|||||||
|
diff -rup binutils.orig/bfd/elflink.c binutils-2.35.2/bfd/elflink.c
|
||||||
|
--- binutils.orig/bfd/elflink.c 2022-11-28 16:10:23.919422266 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/elflink.c 2022-11-28 16:14:24.308499080 +0000
|
||||||
|
@@ -1260,14 +1260,25 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||||
|
olddyn = (oldsec->symbol->flags & BSF_DYNAMIC) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* Handle a case where plugin_notice won't be called and thus won't
|
||||||
|
- set the non_ir_ref flags on the first pass over symbols. */
|
||||||
|
if (oldbfd != NULL
|
||||||
|
- && (oldbfd->flags & BFD_PLUGIN) != (abfd->flags & BFD_PLUGIN)
|
||||||
|
- && newdyn != olddyn)
|
||||||
|
+ && (oldbfd->flags & BFD_PLUGIN) != (abfd->flags & BFD_PLUGIN))
|
||||||
|
{
|
||||||
|
- h->root.non_ir_ref_dynamic = TRUE;
|
||||||
|
- hi->root.non_ir_ref_dynamic = TRUE;
|
||||||
|
+ if (newdyn != olddyn)
|
||||||
|
+ {
|
||||||
|
+ /* Handle a case where plugin_notice won't be called and thus
|
||||||
|
+ won't set the non_ir_ref flags on the first pass over
|
||||||
|
+ symbols. */
|
||||||
|
+ h->root.non_ir_ref_dynamic = TRUE;
|
||||||
|
+ hi->root.non_ir_ref_dynamic = TRUE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ((oldbfd->flags & BFD_PLUGIN) != 0
|
||||||
|
+ && hi->root.type == bfd_link_hash_indirect)
|
||||||
|
+ {
|
||||||
|
+ /* Change indirect symbol from IR to undefined. */
|
||||||
|
+ hi->root.type = bfd_link_hash_undefined;
|
||||||
|
+ hi->root.u.undef.abfd = oldbfd;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NEWDEF and OLDDEF indicate whether the new or old symbol,
|
||||||
|
diff -rup binutils.orig/bfd/linker.c binutils-2.35.2/bfd/linker.c
|
||||||
|
--- binutils.orig/bfd/linker.c 2022-11-28 16:10:23.822422639 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/linker.c 2022-11-28 16:13:28.709712603 +0000
|
||||||
|
@@ -1672,7 +1672,7 @@ _bfd_generic_link_add_one_symbol (struct
|
||||||
|
case MIND:
|
||||||
|
/* Multiple indirect symbols. This is OK if they both point
|
||||||
|
to the same symbol. */
|
||||||
|
- if (strcmp (h->u.i.link->root.string, string) == 0)
|
||||||
|
+ if (string != NULL && strcmp (h->u.i.link->root.string, string) == 0)
|
||||||
|
break;
|
||||||
|
/* Fall through. */
|
||||||
|
case MDEF:
|
||||||
|
--- binutils.orig/bfd/elflink.c 2023-01-10 15:47:50.062668055 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/elflink.c 2023-01-10 15:47:59.554659559 +0000
|
||||||
|
@@ -1271,8 +1271,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
|
||||||
|
h->root.non_ir_ref_dynamic = TRUE;
|
||||||
|
hi->root.non_ir_ref_dynamic = TRUE;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- if ((oldbfd->flags & BFD_PLUGIN) != 0
|
||||||
|
+ else if ((oldbfd->flags & BFD_PLUGIN) != 0
|
||||||
|
&& hi->root.type == bfd_link_hash_indirect)
|
||||||
|
{
|
||||||
|
/* Change indirect symbol from IR to undefined. */
|
@ -0,0 +1,11 @@
|
|||||||
|
--- binutils.orig/libiberty/sha1.c 2021-05-07 10:47:11.572773217 +0100
|
||||||
|
+++ binutils-2.35.2/libiberty/sha1.c 2021-05-07 10:47:16.014741009 +0100
|
||||||
|
@@ -258,7 +258,7 @@ sha1_process_bytes (const void *buffer,
|
||||||
|
{
|
||||||
|
sha1_process_block (ctx->buffer, 64, ctx);
|
||||||
|
left_over -= 64;
|
||||||
|
- memcpy (ctx->buffer, &ctx->buffer[16], left_over);
|
||||||
|
+ memmove (ctx->buffer, &ctx->buffer[16], left_over);
|
||||||
|
}
|
||||||
|
ctx->buflen = left_over;
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
--- binutils.orig/ld/pe-dll.c 2021-05-07 10:47:12.145769068 +0100
|
||||||
|
+++ binutils-2.35.2/ld/pe-dll.c 2021-05-07 11:01:43.000450119 +0100
|
||||||
|
@@ -3032,7 +3032,7 @@ pe_find_cdecl_alias_match (struct bfd_li
|
||||||
|
if (pe_details->underscored)
|
||||||
|
lname[0] = '_';
|
||||||
|
else
|
||||||
|
- strcpy (lname, lname + 1);
|
||||||
|
+ memmove (lname, lname + 1, strlen (lname));
|
||||||
|
key.key = lname;
|
||||||
|
kv = bsearch (&key, udef_table, undef_count,
|
||||||
|
sizeof (struct key_value), undef_sort_cmp);
|
@ -0,0 +1,30 @@
|
|||||||
|
diff -rup binutils.orig/bfd/configure binutils-2.35.2/bfd/configure
|
||||||
|
--- binutils.orig/bfd/configure 2023-01-19 12:17:21.293513059 +0000
|
||||||
|
+++ binutils-2.35.2/bfd/configure 2023-01-19 12:27:25.783974084 +0000
|
||||||
|
@@ -18921,11 +18921,6 @@ _LT_EOF
|
||||||
|
esac
|
||||||
|
done ;;
|
||||||
|
"bfd_stdint.h":C)
|
||||||
|
-if test "$GCC" = yes; then
|
||||||
|
- echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
|
||||||
|
-else
|
||||||
|
- echo "/* generated for $CC */" > tmp-stdint.h
|
||||||
|
-fi
|
||||||
|
|
||||||
|
sed 's/^ *//' >> tmp-stdint.h <<EOF
|
||||||
|
|
||||||
|
diff -rup binutils.orig/config/stdint.m4 binutils-2.35.2/config/stdint.m4
|
||||||
|
--- binutils.orig/config/stdint.m4 2023-01-19 12:17:20.169515897 +0000
|
||||||
|
+++ binutils-2.35.2/config/stdint.m4 2023-01-19 12:27:02.920032688 +0000
|
||||||
|
@@ -192,11 +192,6 @@ fi
|
||||||
|
|
||||||
|
# ----------------- done all checks, emit header -------------
|
||||||
|
AC_CONFIG_COMMANDS(_GCC_STDINT_H, [
|
||||||
|
-if test "$GCC" = yes; then
|
||||||
|
- echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
|
||||||
|
-else
|
||||||
|
- echo "/* generated for $CC */" > tmp-stdint.h
|
||||||
|
-fi
|
||||||
|
|
||||||
|
sed 's/^ *//' >> tmp-stdint.h <<EOF
|
||||||
|
|
@ -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,36 @@
|
|||||||
|
Only in binutils-2.36.1/bfd: ChangeLog.orig
|
||||||
|
Only in binutils-2.36.1/bfd: ChangeLog.rej
|
||||||
|
diff -rup binutils.orig/bfd/elf32-ppc.c binutils-2.36.1/bfd/elf32-ppc.c
|
||||||
|
--- binutils.orig/bfd/elf32-ppc.c 2021-05-18 11:38:27.644364623 +0100
|
||||||
|
+++ binutils-2.36.1/bfd/elf32-ppc.c 2021-05-18 11:44:19.809184838 +0100
|
||||||
|
@@ -5289,7 +5289,12 @@ allocate_dynrelocs (struct elf_link_hash
|
||||||
|
for (ent = h->plt.plist; ent != NULL; ent = ent->next)
|
||||||
|
if (ent->plt.refcount > 0)
|
||||||
|
{
|
||||||
|
- asection *s = htab->elf.splt;
|
||||||
|
+ asection *s;
|
||||||
|
+
|
||||||
|
+ if (!ensure_undef_dynamic (info, h))
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ s = htab->elf.splt;
|
||||||
|
|
||||||
|
if (!dyn)
|
||||||
|
{
|
||||||
|
Only in binutils-2.36.1/bfd: elf32-ppc.c.orig
|
||||||
|
Only in binutils-2.36.1/bfd: elf32-ppc.c.rej
|
||||||
|
diff -rup binutils.orig/bfd/elf64-ppc.c binutils-2.36.1/bfd/elf64-ppc.c
|
||||||
|
--- binutils.orig/bfd/elf64-ppc.c 2021-05-18 11:38:27.646364616 +0100
|
||||||
|
+++ binutils-2.36.1/bfd/elf64-ppc.c 2021-05-18 11:41:01.635847814 +0100
|
||||||
|
@@ -9819,6 +9819,9 @@ allocate_dynrelocs (struct elf_link_hash
|
||||||
|
for (pent = h->plt.plist; pent != NULL; pent = pent->next)
|
||||||
|
if (pent->plt.refcount > 0)
|
||||||
|
{
|
||||||
|
+ if (!ensure_undef_dynamic (info, h))
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
if (!htab->elf.dynamic_sections_created
|
||||||
|
|| h->dynindx == -1)
|
||||||
|
{
|
||||||
|
Only in binutils-2.36.1/bfd: elf64-ppc.c.orig
|
||||||
|
Only in binutils-2.36.1/bfd: elf64-ppc.c.rej
|
@ -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,223 @@
|
|||||||
|
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}"
|
||||||
|
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);
|
||||||
|
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
|
||||||
|
--- /dev/null 2021-06-16 09:27:04.980898674 +0100
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/s390/zarch-arch14.s 2021-06-16 12:05:43.382025025 +0100
|
||||||
|
@@ -0,0 +1,24 @@
|
||||||
|
+.text
|
||||||
|
+foo:
|
||||||
|
+ vschp %v15,%v17,%v20,13,12
|
||||||
|
+ vschsp %v15,%v17,%v20,13
|
||||||
|
+ vschdp %v15,%v17,%v20,13
|
||||||
|
+ vschxp %v15,%v17,%v20,13
|
||||||
|
+ vscshp %v15,%v17,%v20
|
||||||
|
+ vcsph %v15,%v17,%v20,13
|
||||||
|
+ vclzdp %v15,%v17,13
|
||||||
|
+ vpkzr %v15,%v17,%v20,253,12
|
||||||
|
+ vsrpr %v15,%v17,%v20,253,12
|
||||||
|
+ vupkzh %v15,%v17,13
|
||||||
|
+ vupkzl %v15,%v17,13
|
||||||
|
+ nnpa
|
||||||
|
+ vclfnh %v15,%v17,13,12
|
||||||
|
+ vclfnl %v15,%v17,13,12
|
||||||
|
+ vcrnf %v15,%v17,%v20,13,12
|
||||||
|
+ vcfn %v15,%v17,13,12
|
||||||
|
+ vcnf %v15,%v17,13,12
|
||||||
|
+ rdp %r6,%r9,%r11
|
||||||
|
+ rdp %r6,%r9,%r11,13
|
||||||
|
+ lpswey -10000(%r6),253
|
||||||
|
+ lbear 4000(%r6)
|
||||||
|
+ stbear 4000(%r6)
|
||||||
|
--- /dev/null 2021-06-16 09:27:04.980898674 +0100
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/s390/zarch-arch14.d 2021-06-16 12:05:43.367025112 +0100
|
||||||
|
@@ -0,0 +1,31 @@
|
||||||
|
+#name: s390x opcode
|
||||||
|
+#objdump: -dr
|
||||||
|
+
|
||||||
|
+.*: +file format .*
|
||||||
|
+
|
||||||
|
+Disassembly of section .text:
|
||||||
|
+
|
||||||
|
+.* <foo>:
|
||||||
|
+.*: e6 f1 40 c0 d6 74 [ ]*vschp %v15,%v17,%v20,13,12
|
||||||
|
+.*: e6 f1 40 d0 26 74 [ ]*vschsp %v15,%v17,%v20,13
|
||||||
|
+.*: e6 f1 40 d0 36 74 [ ]*vschdp %v15,%v17,%v20,13
|
||||||
|
+.*: e6 f1 40 d0 46 74 [ ]*vschxp %v15,%v17,%v20,13
|
||||||
|
+.*: e6 f1 40 00 06 7c [ ]*vscshp %v15,%v17,%v20
|
||||||
|
+.*: e6 f1 40 d0 06 7d [ ]*vcsph %v15,%v17,%v20,13
|
||||||
|
+.*: e6 f1 00 d0 04 51 [ ]*vclzdp %v15,%v17,13
|
||||||
|
+.*: e6 f1 40 cf d6 70 [ ]*vpkzr %v15,%v17,%v20,253,12
|
||||||
|
+.*: e6 f1 40 cf d6 72 [ ]*vsrpr %v15,%v17,%v20,253,12
|
||||||
|
+.*: e6 f1 00 d0 04 54 [ ]*vupkzh %v15,%v17,13
|
||||||
|
+.*: e6 f1 00 d0 04 5c [ ]*vupkzl %v15,%v17,13
|
||||||
|
+.*: b9 3b 00 00 [ ]*nnpa
|
||||||
|
+.*: e6 f1 00 0c d4 56 [ ]*vclfnh %v15,%v17,13,12
|
||||||
|
+.*: e6 f1 00 0c d4 5e [ ]*vclfnl %v15,%v17,13,12
|
||||||
|
+.*: e6 f1 40 0c d6 75 [ ]*vcrnf %v15,%v17,%v20,13,12
|
||||||
|
+.*: e6 f1 00 0c d4 5d [ ]*vcfn %v15,%v17,13,12
|
||||||
|
+.*: e6 f1 00 0c d4 55 [ ]*vcnf %v15,%v17,13,12
|
||||||
|
+.*: b9 8b 90 6b [ ]*rdp %r6,%r9,%r11
|
||||||
|
+.*: b9 8b 9d 6b [ ]*rdp %r6,%r9,%r11,13
|
||||||
|
+.*: eb fd 68 f0 fd 71 [ ]*lpswey -10000\(%r6\),253
|
||||||
|
+.*: b2 00 6f a0 [ ]*lbear 4000\(%r6\)
|
||||||
|
+.*: b2 01 6f a0 [ ]*stbear 4000\(%r6\)
|
||||||
|
+.*: 07 07 [ ]*nopr %r7
|
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-arch14.d binutils-2.35.2/gas/testsuite/gas/s390/zarch-arch14.d
|
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-arch14.d 2021-08-16 13:07:33.637204772 +0100
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/s390/zarch-arch14.d 2021-08-16 14:26:36.576187751 +0100
|
||||||
|
@@ -25,7 +25,8 @@ Disassembly of section .text:
|
||||||
|
.*: e6 f1 00 0c d4 55 [ ]*vcnf %v15,%v17,13,12
|
||||||
|
.*: b9 8b 90 6b [ ]*rdp %r6,%r9,%r11
|
||||||
|
.*: b9 8b 9d 6b [ ]*rdp %r6,%r9,%r11,13
|
||||||
|
-.*: eb fd 68 f0 fd 71 [ ]*lpswey -10000\(%r6\),253
|
||||||
|
+.*: eb 00 68 f0 fd 71 [ ]*lpswey -10000\(%r6\)
|
||||||
|
.*: b2 00 6f a0 [ ]*lbear 4000\(%r6\)
|
||||||
|
.*: b2 01 6f a0 [ ]*stbear 4000\(%r6\)
|
||||||
|
+.*: b2 8f 5f ff [ ]*qpaci 4095\(%r5\)
|
||||||
|
.*: 07 07 [ ]*nopr %r7
|
||||||
|
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-arch14.s binutils-2.35.2/gas/testsuite/gas/s390/zarch-arch14.s
|
||||||
|
--- binutils.orig/gas/testsuite/gas/s390/zarch-arch14.s 2021-08-16 13:07:33.636204779 +0100
|
||||||
|
+++ binutils-2.35.2/gas/testsuite/gas/s390/zarch-arch14.s 2021-08-16 14:26:36.576187751 +0100
|
||||||
|
@@ -19,6 +19,7 @@ foo:
|
||||||
|
vcnf %v15,%v17,13,12
|
||||||
|
rdp %r6,%r9,%r11
|
||||||
|
rdp %r6,%r9,%r11,13
|
||||||
|
- lpswey -10000(%r6),253
|
||||||
|
+ lpswey -10000(%r6)
|
||||||
|
lbear 4000(%r6)
|
||||||
|
stbear 4000(%r6)
|
||||||
|
+ qpaci 4095(%r5)
|
||||||
|
diff -rup binutils.orig/opcodes/s390-opc.c binutils-2.35.2/opcodes/s390-opc.c
|
||||||
|
--- binutils.orig/opcodes/s390-opc.c 2021-08-16 13:07:33.358206522 +0100
|
||||||
|
+++ binutils-2.35.2/opcodes/s390-opc.c 2021-08-16 14:26:36.600187594 +0100
|
||||||
|
@@ -442,6 +442,7 @@ const struct s390_operand s390_operands[
|
||||||
|
#define INSTR_RX_URRD 4, { U4_8,D_20,X_12,B_16,0,0 } /* e.g. bc */
|
||||||
|
#define INSTR_SI_RD 4, { D_20,B_16,0,0,0,0 } /* e.g. lpsw */
|
||||||
|
#define INSTR_SI_URD 4, { D_20,B_16,U8_8,0,0,0 } /* e.g. cli */
|
||||||
|
+#define INSTR_SIY_RD 6, { D20_20,B_16,0,0,0,0 } /* e.g. lpswey*/
|
||||||
|
#define INSTR_SIY_URD 6, { D20_20,B_16,U8_8,0,0,0 } /* e.g. tmy */
|
||||||
|
#define INSTR_SIY_IRD 6, { D20_20,B_16,I8_8,0,0,0 } /* e.g. asi */
|
||||||
|
#define INSTR_SIL_RDI 6, { D_20,B_16,I16_32,0,0,0 } /* e.g. chhsi */
|
||||||
|
@@ -664,6 +665,7 @@ const struct s390_operand s390_operands[
|
||||||
|
#define MASK_RX_URRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||||
|
#define MASK_SI_RD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||||
|
#define MASK_SI_URD { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||||
|
+#define MASK_SIY_RD { 0xff, 0xff, 0x00, 0x00, 0x00, 0xff }
|
||||||
|
#define MASK_SIY_URD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||||
|
#define MASK_SIY_IRD { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||||
|
#define MASK_SIL_RDI { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||||
|
diff -rup binutils.orig/opcodes/s390-opc.txt binutils-2.35.2/opcodes/s390-opc.txt
|
||||||
|
--- binutils.orig/opcodes/s390-opc.txt 2021-08-16 13:07:33.348206585 +0100
|
||||||
|
+++ binutils-2.35.2/opcodes/s390-opc.txt 2021-08-16 14:26:36.600187594 +0100
|
||||||
|
@@ -2041,6 +2041,8 @@ e60000000055 vcnf VRR_VV0UU2 " " arch14
|
||||||
|
|
||||||
|
b98B rdp RRF_RURR2 " " arch14 zarch optparm
|
||||||
|
|
||||||
|
-eb0000000071 lpswey SIY_URD " " arch14 zarch
|
||||||
|
+eb0000000071 lpswey SIY_RD " " arch14 zarch
|
||||||
|
b200 lbear S_RD " " arch14 zarch
|
||||||
|
b201 stbear S_RD " " arch14 zarch
|
||||||
|
+
|
||||||
|
+b28f qpaci S_RD " " arch14 zarch
|
@ -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,51 @@
|
|||||||
|
diff -rup binutils-2.35.2/gas/config/tc-s390.c fred/gas/config/tc-s390.c
|
||||||
|
--- binutils-2.35.2/gas/config/tc-s390.c 2022-04-11 08:54:46.529179603 +0100
|
||||||
|
+++ fred/gas/config/tc-s390.c 2022-04-11 08:51:08.030832065 +0100
|
||||||
|
@@ -293,7 +293,7 @@ s390_parse_cpu (const char * arg
|
||||||
|
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"),
|
||||||
|
+ { STRING_COMMA_LEN ("z16"), STRING_COMMA_LEN ("arch14"),
|
||||||
|
S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX }
|
||||||
|
};
|
||||||
|
static struct
|
||||||
|
diff -rup binutils-2.35.2/gas/doc/as.texi fred/gas/doc/as.texi
|
||||||
|
--- binutils-2.35.2/gas/doc/as.texi 2022-04-11 08:54:46.099182880 +0100
|
||||||
|
+++ fred/gas/doc/as.texi 2022-04-11 08:52:33.088196625 +0100
|
||||||
|
@@ -1872,8 +1872,8 @@ Specify which s390 processor variant is
|
||||||
|
@samp{arch3}), @samp{g6}, @samp{z900} (or @samp{arch5}), @samp{z990} (or
|
||||||
|
@samp{arch6}), @samp{z9-109}, @samp{z9-ec} (or @samp{arch7}), @samp{z10} (or
|
||||||
|
@samp{arch8}), @samp{z196} (or @samp{arch9}), @samp{zEC12} (or @samp{arch10}),
|
||||||
|
-@samp{z13} (or @samp{arch11}), @samp{z14} (or @samp{arch12}), or @samp{z15}
|
||||||
|
-(or @samp{arch13}).
|
||||||
|
+@samp{z13} (or @samp{arch11}), @samp{z14} (or @samp{arch12}), @samp{z15}
|
||||||
|
+(or @samp{arch13}), or @samp{z16} (or @samp{arch14}).
|
||||||
|
@item -mregnames
|
||||||
|
@itemx -mno-regnames
|
||||||
|
Allow or disallow symbolic names for registers.
|
||||||
|
diff -rup binutils-2.35.2/gas/doc/c-s390.texi fred/gas/doc/c-s390.texi
|
||||||
|
--- binutils-2.35.2/gas/doc/c-s390.texi 2022-04-11 08:54:46.551179435 +0100
|
||||||
|
+++ fred/gas/doc/c-s390.texi 2022-04-11 08:51:50.623520271 +0100
|
||||||
|
@@ -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), z15 (or arch13), or arch14.
|
||||||
|
+(or arch11), z14 (or arch12), z15 (or arch13), or z16 (or arch14).
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* s390 Options:: Command-line Options.
|
||||||
|
diff -rup binutils-2.35.2/opcodes/s390-mkopc.c fred/opcodes/s390-mkopc.c
|
||||||
|
--- binutils-2.35.2/opcodes/s390-mkopc.c 2022-04-11 08:54:46.530179595 +0100
|
||||||
|
+++ fred/opcodes/s390-mkopc.c 2022-04-11 08:53:04.701955680 +0100
|
||||||
|
@@ -380,7 +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)
|
||||||
|
+ else if (strcmp (cpu_string, "z16") == 0
|
||||||
|
+ || strcmp (cpu_string, "arch14") == 0)
|
||||||
|
min_cpu = S390_OPCODE_ARCH14;
|
||||||
|
else {
|
||||||
|
fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string);
|
@ -0,0 +1,143 @@
|
|||||||
|
diff -rup binutils.orig/bfd/elf64-s390.c binutils-2.35.2/bfd/elf64-s390.c
|
||||||
|
--- binutils.orig/bfd/elf64-s390.c 2022-05-03 12:03:39.004203905 +0100
|
||||||
|
+++ binutils-2.35.2/bfd/elf64-s390.c 2022-05-03 12:06:19.884715801 +0100
|
||||||
|
@@ -773,7 +773,7 @@ elf_s390_tls_transition (struct bfd_link
|
||||||
|
int r_type,
|
||||||
|
int is_local)
|
||||||
|
{
|
||||||
|
- if (bfd_link_pic (info))
|
||||||
|
+ if (bfd_link_dll (info))
|
||||||
|
return r_type;
|
||||||
|
|
||||||
|
switch (r_type)
|
||||||
|
@@ -1025,7 +1025,7 @@ elf_s390_check_relocs (bfd *abfd,
|
||||||
|
case R_390_TLS_GOTIE20:
|
||||||
|
case R_390_TLS_GOTIE64:
|
||||||
|
case R_390_TLS_IEENT:
|
||||||
|
- if (bfd_link_pic (info))
|
||||||
|
+ if (bfd_link_dll (info))
|
||||||
|
info->flags |= DF_STATIC_TLS;
|
||||||
|
/* Fall through */
|
||||||
|
|
||||||
|
@@ -1106,7 +1106,7 @@ elf_s390_check_relocs (bfd *abfd,
|
||||||
|
if (r_type == R_390_TLS_LE64 && bfd_link_pie (info))
|
||||||
|
break;
|
||||||
|
|
||||||
|
- if (!bfd_link_pic (info))
|
||||||
|
+ if (!bfd_link_dll (info))
|
||||||
|
break;
|
||||||
|
info->flags |= DF_STATIC_TLS;
|
||||||
|
/* Fall through */
|
||||||
|
@@ -1570,7 +1570,7 @@ allocate_dynrelocs (struct elf_link_hash
|
||||||
|
to R_390_TLS_LE64 requiring no TLS entry. For GOTIE12 and IEENT
|
||||||
|
we can save the dynamic TLS relocation. */
|
||||||
|
if (h->got.refcount > 0
|
||||||
|
- && !bfd_link_pic (info)
|
||||||
|
+ && !bfd_link_dll (info)
|
||||||
|
&& h->dynindx == -1
|
||||||
|
&& elf_s390_hash_entry(h)->tls_type >= GOT_TLS_IE)
|
||||||
|
{
|
||||||
|
@@ -1875,7 +1875,20 @@ elf_s390_size_dynamic_sections (bfd *out
|
||||||
|
else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
|
||||||
|
{
|
||||||
|
if (s->size != 0 && s != htab->elf.srelplt)
|
||||||
|
- relocs = TRUE;
|
||||||
|
+ {
|
||||||
|
+ relocs = TRUE;
|
||||||
|
+ if (s == htab->elf.irelplt)
|
||||||
|
+ {
|
||||||
|
+ /* In static-pie case, there are IRELATIVE-relocs in
|
||||||
|
+ .rela.iplt (htab->irelplt), which will later be grouped
|
||||||
|
+ to .rela.plt. On s390, the IRELATIVE relocations are
|
||||||
|
+ always located in .rela.iplt - even for non-static case.
|
||||||
|
+ Ensure that DT_JMPREL, DT_PLTRELA, DT_PLTRELASZ is added
|
||||||
|
+ to the dynamic section even if htab->srelplt->size == 0.
|
||||||
|
+ See _bfd_elf_add_dynamic_tags in bfd/elflink.c. */
|
||||||
|
+ htab->elf.dt_jmprel_required = TRUE;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* We use the reloc_count field as a counter if we need
|
||||||
|
to copy relocs into the output file. */
|
||||||
|
@@ -2661,7 +2674,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
|
||||||
|
/* Relocations for tls literal pool entries. */
|
||||||
|
case R_390_TLS_IE64:
|
||||||
|
- if (bfd_link_pic (info))
|
||||||
|
+ if (bfd_link_dll (info))
|
||||||
|
{
|
||||||
|
Elf_Internal_Rela outrel;
|
||||||
|
asection *sreloc;
|
||||||
|
@@ -2689,7 +2702,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
else if (h != NULL)
|
||||||
|
{
|
||||||
|
tls_type = elf_s390_hash_entry(h)->tls_type;
|
||||||
|
- if (!bfd_link_pic (info) && h->dynindx == -1 && tls_type >= GOT_TLS_IE)
|
||||||
|
+ if (!bfd_link_dll (info) && h->dynindx == -1 && tls_type >= GOT_TLS_IE)
|
||||||
|
r_type = R_390_TLS_LE64;
|
||||||
|
}
|
||||||
|
if (r_type == R_390_TLS_GD64 && tls_type >= GOT_TLS_IE)
|
||||||
|
@@ -2800,14 +2813,14 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
if (local_got_offsets == NULL)
|
||||||
|
abort();
|
||||||
|
off = local_got_offsets[r_symndx];
|
||||||
|
- if (bfd_link_pic (info))
|
||||||
|
+ if (bfd_link_dll (info))
|
||||||
|
goto emit_tls_relocs;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
off = h->got.offset;
|
||||||
|
tls_type = elf_s390_hash_entry(h)->tls_type;
|
||||||
|
- if (bfd_link_pic (info) || h->dynindx != -1 || tls_type < GOT_TLS_IE)
|
||||||
|
+ if (bfd_link_dll (info) || h->dynindx != -1 || tls_type < GOT_TLS_IE)
|
||||||
|
goto emit_tls_relocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2824,7 +2837,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
break;
|
||||||
|
|
||||||
|
case R_390_TLS_LDM64:
|
||||||
|
- if (! bfd_link_pic (info))
|
||||||
|
+ if (! bfd_link_dll (info))
|
||||||
|
/* The literal pool entry this relocation refers to gets ignored
|
||||||
|
by the optimized code of the local exec model. Do nothing
|
||||||
|
and the value will turn out zero. */
|
||||||
|
@@ -2899,7 +2912,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case R_390_TLS_LDO64:
|
||||||
|
- if (bfd_link_pic (info) || (input_section->flags & SEC_DEBUGGING))
|
||||||
|
+ if (bfd_link_dll (info) || (input_section->flags & SEC_DEBUGGING))
|
||||||
|
relocation -= dtpoff_base (info);
|
||||||
|
else
|
||||||
|
/* When converting LDO to LE, we must negate. */
|
||||||
|
@@ -2921,7 +2934,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
|
||||||
|
if (r_type == R_390_TLS_LOAD)
|
||||||
|
{
|
||||||
|
- if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1))
|
||||||
|
+ if (!bfd_link_dll (info) && (h == NULL || h->dynindx == -1))
|
||||||
|
{
|
||||||
|
/* IE->LE transition. Four valid cases:
|
||||||
|
lg %rx,(0,%ry) -> sllg %rx,%ry,0
|
||||||
|
@@ -2971,7 +2984,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
invalid_tls_insn (input_bfd, input_section, rel);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
- if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1))
|
||||||
|
+ if (!bfd_link_dll (info) && (h == NULL || h->dynindx == -1))
|
||||||
|
{
|
||||||
|
/* GD->LE transition.
|
||||||
|
brasl %r14,__tls_get_addr@plt -> brcl 0,. */
|
||||||
|
@@ -2990,7 +3003,7 @@ elf_s390_relocate_section (bfd *output_b
|
||||||
|
}
|
||||||
|
else if (r_type == R_390_TLS_LDCALL)
|
||||||
|
{
|
||||||
|
- if (!bfd_link_pic (info))
|
||||||
|
+ if (!bfd_link_dll (info))
|
||||||
|
{
|
||||||
|
unsigned int insn0, insn1;
|
||||||
|
|
||||||
|
Only in binutils-2.35.2/bfd: elf64-s390.c.orig
|
||||||
|
Only in binutils-2.35.2/bfd: elf64-s390.c.rej
|
@ -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,15 @@
|
|||||||
|
--- binutils.orig/bfd/elflink.c 2022-06-13 14:22:15.071831986 +0100
|
||||||
|
+++ binutils-2.35.2/bfd/elflink.c 2022-06-13 14:26:37.386163819 +0100
|
||||||
|
@@ -5226,10 +5226,12 @@ elf_link_add_object_symbols (bfd *abfd,
|
||||||
|
if (!add_needed
|
||||||
|
&& matched
|
||||||
|
&& definition
|
||||||
|
+ && h->root.type != bfd_link_hash_indirect
|
||||||
|
&& ((dynsym
|
||||||
|
&& h->ref_regular_nonweak)
|
||||||
|
|| (old_bfd != NULL
|
||||||
|
&& (old_bfd->flags & BFD_PLUGIN) != 0
|
||||||
|
+ && !info->lto_all_symbols_read
|
||||||
|
&& bind != STB_WEAK)
|
||||||
|
|| (h->ref_dynamic_nonweak
|
||||||
|
&& (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0
|
@ -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)
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,28 @@
|
|||||||
|
diff -rup binutils.orig/ltmain.sh binutils-2.37/ltmain.sh
|
||||||
|
--- binutils.orig/ltmain.sh 2022-01-27 16:23:09.304207432 +0000
|
||||||
|
+++ binutils-2.37/ltmain.sh 2022-01-27 16:23:18.380143759 +0000
|
||||||
|
@@ -7103,6 +7103,7 @@ EOF
|
||||||
|
rpath="$finalize_rpath"
|
||||||
|
test "$mode" != relink && rpath="$compile_rpath$rpath"
|
||||||
|
for libdir in $rpath; do
|
||||||
|
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||||
|
if test -n "$hardcode_libdir_flag_spec"; then
|
||||||
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
|
if test -z "$hardcode_libdirs"; then
|
||||||
|
@@ -7798,6 +7799,7 @@ EOF
|
||||||
|
rpath=
|
||||||
|
hardcode_libdirs=
|
||||||
|
for libdir in $compile_rpath $finalize_rpath; do
|
||||||
|
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||||
|
if test -n "$hardcode_libdir_flag_spec"; then
|
||||||
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
|
if test -z "$hardcode_libdirs"; then
|
||||||
|
@@ -7849,6 +7851,7 @@ EOF
|
||||||
|
rpath=
|
||||||
|
hardcode_libdirs=
|
||||||
|
for libdir in $finalize_rpath; do
|
||||||
|
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
|
||||||
|
if test -n "$hardcode_libdir_flag_spec"; then
|
||||||
|
if test -n "$hardcode_libdir_separator"; then
|
||||||
|
if test -z "$hardcode_libdirs"; then
|
||||||
|
Only in binutils-2.37: ltmain.sh.orig
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue