Compare commits
18 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df9930c499 | ||
|
|
60770ef640 | ||
|
|
9453e052cb | ||
|
|
d5e26557c0 | ||
|
|
cb2a69bec8 | ||
|
|
24c7b32b54 | ||
|
|
7618a617e4 | ||
|
|
194ce4587a | ||
|
|
e2ebfdec9c | ||
|
|
fbb1ff01e1 | ||
|
|
da7aec4303 | ||
|
|
e133a50bdb | ||
|
|
1102847cef | ||
|
|
ec0a641b82 | ||
|
|
9da135ced5 | ||
|
|
2b38102265 | ||
|
|
cc5aeae8c4 | ||
|
|
baf7bf2038 |
17 changed files with 40285 additions and 36 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -65,3 +65,4 @@ stamp-*
|
|||
/binutils-2.19.50.0.1-output-format.sed
|
||||
/binutils-2.35.tar.xz
|
||||
/binutils-2.35.1.tar.xz
|
||||
/binutils-2.35.2.tar.xz
|
||||
|
|
|
|||
53
binutils-CVE-2020-35448.patch
Normal file
53
binutils-CVE-2020-35448.patch
Normal file
|
|
@ -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;
|
||||
|
||||
|
|
@ -776,3 +776,535 @@ Only in binutils-2.35.1/binutils/: objcopy.c.rej
|
|||
set_times (to, target_stat);
|
||||
unlink (from);
|
||||
}
|
||||
diff -rup binutils.orig/binutils/ar.c binutils-2.35.1/binutils/ar.c
|
||||
--- binutils.orig/binutils/ar.c 2021-03-11 12:38:18.183422774 +0000
|
||||
+++ binutils-2.35.1/binutils/ar.c 2021-03-11 12:45:09.279716067 +0000
|
||||
@@ -1195,22 +1195,21 @@ write_archive (bfd *iarch)
|
||||
bfd *obfd;
|
||||
char *old_name, *new_name;
|
||||
bfd *contents_head = iarch->archive_next;
|
||||
- int ofd = -1;
|
||||
- struct stat target_stat;
|
||||
+ int tmpfd = -1;
|
||||
|
||||
old_name = xstrdup (bfd_get_filename (iarch));
|
||||
- new_name = make_tempname (old_name, &ofd);
|
||||
+ new_name = make_tempname (old_name, &tmpfd);
|
||||
|
||||
if (new_name == NULL)
|
||||
bfd_fatal (_("could not create temporary file whilst writing archive"));
|
||||
|
||||
output_filename = new_name;
|
||||
|
||||
- obfd = bfd_fdopenw (new_name, bfd_get_target (iarch), ofd);
|
||||
+ obfd = bfd_fdopenw (new_name, bfd_get_target (iarch), tmpfd);
|
||||
|
||||
if (obfd == NULL)
|
||||
{
|
||||
- close (ofd);
|
||||
+ close (tmpfd);
|
||||
bfd_fatal (old_name);
|
||||
}
|
||||
|
||||
@@ -1241,12 +1240,7 @@ write_archive (bfd *iarch)
|
||||
if (!bfd_set_archive_head (obfd, contents_head))
|
||||
bfd_fatal (old_name);
|
||||
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
- ofd = dup (ofd);
|
||||
-#endif
|
||||
- if (ofd == -1 || bfd_stat (iarch, &target_stat) != 0)
|
||||
- bfd_fatal (old_name);
|
||||
-
|
||||
+ tmpfd = dup (tmpfd);
|
||||
if (!bfd_close (obfd))
|
||||
bfd_fatal (old_name);
|
||||
|
||||
@@ -1256,7 +1250,7 @@ write_archive (bfd *iarch)
|
||||
/* We don't care if this fails; we might be creating the archive. */
|
||||
bfd_close (iarch);
|
||||
|
||||
- if (smart_rename (new_name, old_name, ofd, &target_stat, 0) != 0)
|
||||
+ if (smart_rename (new_name, old_name, tmpfd, NULL, FALSE) != 0)
|
||||
xexit (1);
|
||||
free (old_name);
|
||||
free (new_name);
|
||||
diff -rup binutils.orig/binutils/arsup.c binutils-2.35.1/binutils/arsup.c
|
||||
--- binutils.orig/binutils/arsup.c 2021-03-11 12:38:18.182422781 +0000
|
||||
+++ binutils-2.35.1/binutils/arsup.c 2021-03-11 12:47:43.246702325 +0000
|
||||
@@ -43,7 +43,7 @@ extern int deterministic;
|
||||
static bfd *obfd;
|
||||
static char *real_name;
|
||||
static char *temp_name;
|
||||
-static int real_ofd;
|
||||
+static int temp_fd;
|
||||
static FILE *outfile;
|
||||
|
||||
static void
|
||||
@@ -152,7 +152,7 @@ void
|
||||
ar_open (char *name, int t)
|
||||
{
|
||||
real_name = xstrdup (name);
|
||||
- temp_name = make_tempname (real_name, &real_ofd);
|
||||
+ temp_name = make_tempname (real_name, &temp_fd);
|
||||
|
||||
if (temp_name == NULL)
|
||||
{
|
||||
@@ -162,7 +162,7 @@ ar_open (char *name, int t)
|
||||
return;
|
||||
}
|
||||
|
||||
- obfd = bfd_fdopenw (temp_name, NULL, real_ofd);
|
||||
+ obfd = bfd_fdopenw (temp_name, NULL, temp_fd);
|
||||
|
||||
if (!obfd)
|
||||
{
|
||||
@@ -343,29 +343,20 @@ ar_save (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
- bfd_boolean skip_stat = FALSE;
|
||||
struct stat target_stat;
|
||||
- int ofd = real_ofd;
|
||||
|
||||
if (deterministic > 0)
|
||||
obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
|
||||
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
- /* It's OK to fail; at worst it will result in SMART_RENAME using a slow
|
||||
- copy fallback to write the output. */
|
||||
- ofd = dup (ofd);
|
||||
-#endif
|
||||
+ temp_fd = dup (temp_fd);
|
||||
bfd_close (obfd);
|
||||
|
||||
- if (lstat (real_name, &target_stat) != 0)
|
||||
+ if (stat (real_name, &target_stat) != 0)
|
||||
{
|
||||
/* The temp file created in ar_open has mode 0600 as per mkstemp.
|
||||
Create the real empty output file here so smart_rename will
|
||||
update the mode according to the process umask. */
|
||||
obfd = bfd_openw (real_name, NULL);
|
||||
- if (obfd == NULL
|
||||
- || bfd_stat (obfd, &target_stat) != 0)
|
||||
- skip_stat = TRUE;
|
||||
if (obfd != NULL)
|
||||
{
|
||||
bfd_set_format (obfd, bfd_archive);
|
||||
@@ -373,9 +364,8 @@ ar_save (void)
|
||||
}
|
||||
}
|
||||
|
||||
- smart_rename (temp_name, real_name, ofd,
|
||||
- skip_stat ? NULL : &target_stat, 0);
|
||||
- obfd = 0;
|
||||
+ smart_rename (temp_name, real_name, temp_fd, NULL, FALSE);
|
||||
+ obfd = NULL;
|
||||
free (temp_name);
|
||||
free (real_name);
|
||||
}
|
||||
diff -rup binutils.orig/binutils/bucomm.h binutils-2.35.1/binutils/bucomm.h
|
||||
--- binutils.orig/binutils/bucomm.h 2021-03-11 12:38:18.183422774 +0000
|
||||
+++ binutils-2.35.1/binutils/bucomm.h 2021-03-11 12:42:22.320815334 +0000
|
||||
@@ -71,7 +71,8 @@ extern void print_version (const char *)
|
||||
/* In rename.c. */
|
||||
extern void set_times (const char *, const struct stat *);
|
||||
|
||||
-extern int smart_rename (const char *, const char *, int, struct stat *, int);
|
||||
+extern int smart_rename (const char *, const char *, int,
|
||||
+ struct stat *, bfd_boolean);
|
||||
|
||||
|
||||
/* In libiberty. */
|
||||
diff -rup binutils.orig/binutils/objcopy.c binutils-2.35.1/binutils/objcopy.c
|
||||
--- binutils.orig/binutils/objcopy.c 2021-03-11 12:38:18.181422787 +0000
|
||||
+++ binutils-2.35.1/binutils/objcopy.c 2021-03-11 12:51:09.486344417 +0000
|
||||
@@ -4802,12 +4802,7 @@ strip_main (int argc, char *argv[])
|
||||
else
|
||||
tmpname = output_file;
|
||||
|
||||
- if (tmpname == NULL
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
- /* Retain a copy of TMPFD since we will need it for SMART_RENAME. */
|
||||
- || (tmpfd >= 0 && (copyfd = dup (tmpfd)) == -1)
|
||||
-#endif
|
||||
- )
|
||||
+ if (tmpname == NULL)
|
||||
{
|
||||
bfd_nonfatal_message (argv[i], NULL, NULL,
|
||||
_("could not create temporary file to hold stripped copy"));
|
||||
@@ -4820,21 +4815,17 @@ strip_main (int argc, char *argv[])
|
||||
output_target, NULL);
|
||||
if (status == 0)
|
||||
{
|
||||
- if (preserve_dates)
|
||||
- set_times (tmpname, &statbuf);
|
||||
if (output_file != tmpname)
|
||||
- status = (smart_rename (tmpname,
|
||||
- output_file ? output_file : argv[i],
|
||||
- copyfd, &statbuf, preserve_dates) != 0);
|
||||
+ status = smart_rename (tmpname,
|
||||
+ output_file ? output_file : argv[i],
|
||||
+ copyfd, &statbuf, preserve_dates) != 0;
|
||||
if (status == 0)
|
||||
status = hold_status;
|
||||
}
|
||||
else
|
||||
{
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
if (copyfd >= 0)
|
||||
close (copyfd);
|
||||
-#endif
|
||||
unlink_if_ordinary (tmpname);
|
||||
}
|
||||
if (output_file != tmpname)
|
||||
@@ -5043,8 +5034,9 @@ copy_main (int argc, char *argv[])
|
||||
bfd_boolean formats_info = FALSE;
|
||||
bfd_boolean use_globalize = FALSE;
|
||||
bfd_boolean use_keep_global = FALSE;
|
||||
- int c, tmpfd = -1;
|
||||
- int copyfd = -1;
|
||||
+ int c;
|
||||
+ int tmpfd = -1;
|
||||
+ int copyfd;
|
||||
struct stat statbuf;
|
||||
const bfd_arch_info_type *input_arch = NULL;
|
||||
|
||||
@@ -5882,19 +5874,19 @@ copy_main (int argc, char *argv[])
|
||||
}
|
||||
|
||||
/* If there is no destination file, or the source and destination files
|
||||
- are the same, then create a temp and rename the result into the input. */
|
||||
+ are the same, then create a temp and copy the result into the input. */
|
||||
+ copyfd = -1;
|
||||
if (output_filename == NULL
|
||||
|| filename_cmp (input_filename, output_filename) == 0)
|
||||
- tmpname = make_tempname (input_filename, &tmpfd);
|
||||
+ {
|
||||
+ tmpname = make_tempname (input_filename, &tmpfd);
|
||||
+ if (tmpfd >= 0)
|
||||
+ copyfd = dup (tmpfd);
|
||||
+ }
|
||||
else
|
||||
tmpname = output_filename;
|
||||
|
||||
- if (tmpname == NULL
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
- /* Retain a copy of TMPFD since we will need it for SMART_RENAME. */
|
||||
- || (tmpfd >= 0 && (copyfd = dup (tmpfd)) == -1)
|
||||
-#endif
|
||||
- )
|
||||
+ if (tmpname == NULL)
|
||||
{
|
||||
fatal (_("warning: could not create temporary file whilst copying '%s', (error: %s)"),
|
||||
input_filename, strerror (errno));
|
||||
@@ -5904,18 +5896,14 @@ copy_main (int argc, char *argv[])
|
||||
output_target, input_arch);
|
||||
if (status == 0)
|
||||
{
|
||||
- if (preserve_dates)
|
||||
- set_times (tmpname, &statbuf);
|
||||
if (tmpname != output_filename)
|
||||
- status = (smart_rename (tmpname, input_filename, copyfd, &statbuf,
|
||||
- preserve_dates) != 0);
|
||||
+ status = smart_rename (tmpname, input_filename, copyfd,
|
||||
+ &statbuf, preserve_dates) != 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
if (copyfd >= 0)
|
||||
close (copyfd);
|
||||
-#endif
|
||||
unlink_if_ordinary (tmpname);
|
||||
}
|
||||
|
||||
diff -rup binutils.orig/binutils/rename.c binutils-2.35.1/binutils/rename.c
|
||||
--- binutils.orig/binutils/rename.c 2021-03-11 12:38:18.183422774 +0000
|
||||
+++ binutils-2.35.1/binutils/rename.c 2021-03-11 12:41:41.824081969 +0000
|
||||
@@ -30,30 +30,25 @@
|
||||
#endif /* HAVE_UTIMES */
|
||||
#endif /* ! HAVE_GOOD_UTIME_H */
|
||||
|
||||
-#if ! defined (_WIN32) || defined (__CYGWIN32__)
|
||||
-static int simple_copy (const char *, const char *);
|
||||
-
|
||||
/* The number of bytes to copy at once. */
|
||||
#define COPY_BUF 8192
|
||||
|
||||
-/* Copy file FROM to file TO, performing no translations.
|
||||
+/* Copy file FROMFD to file TO, performing no translations.
|
||||
Return 0 if ok, -1 if error. */
|
||||
|
||||
static int
|
||||
-simple_copy (const char *from, const char *to)
|
||||
+simple_copy (int fromfd, const char *to,
|
||||
+ struct stat *target_stat ATTRIBUTE_UNUSED)
|
||||
{
|
||||
- int fromfd, tofd, nread;
|
||||
+ int tofd, nread;
|
||||
int saved;
|
||||
char buf[COPY_BUF];
|
||||
|
||||
- fromfd = open (from, O_RDONLY | O_BINARY);
|
||||
- if (fromfd < 0)
|
||||
+ if (fromfd < 0
|
||||
+ || lseek (fromfd, 0, SEEK_SET) != 0)
|
||||
return -1;
|
||||
-#ifdef O_CREAT
|
||||
- tofd = open (to, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0777);
|
||||
-#else
|
||||
- tofd = creat (to, 0777);
|
||||
-#endif
|
||||
+
|
||||
+ tofd = open (to, O_WRONLY | O_TRUNC | O_BINARY);
|
||||
if (tofd < 0)
|
||||
{
|
||||
saved = errno;
|
||||
@@ -61,6 +56,7 @@ simple_copy (const char *from, const cha
|
||||
errno = saved;
|
||||
return -1;
|
||||
}
|
||||
+
|
||||
while ((nread = read (fromfd, buf, sizeof buf)) > 0)
|
||||
{
|
||||
if (write (tofd, buf, nread) != nread)
|
||||
@@ -72,7 +68,16 @@ simple_copy (const char *from, const cha
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
+
|
||||
saved = errno;
|
||||
+
|
||||
+#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
+ /* Writing to a setuid/setgid file may clear S_ISUID and S_ISGID.
|
||||
+ Try to restore them, ignoring failure. */
|
||||
+ if (target_stat != NULL)
|
||||
+ fchmod (tofd, target_stat->st_mode);
|
||||
+#endif
|
||||
+
|
||||
close (fromfd);
|
||||
close (tofd);
|
||||
if (nread < 0)
|
||||
@@ -82,7 +87,6 @@ simple_copy (const char *from, const cha
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
-#endif /* __CYGWIN32__ or not _WIN32 */
|
||||
|
||||
/* Set the times of the file DESTINATION to be the same as those in
|
||||
STATBUF. */
|
||||
@@ -91,164 +95,52 @@ void
|
||||
set_times (const char *destination, const struct stat *statbuf)
|
||||
{
|
||||
int result;
|
||||
-
|
||||
- {
|
||||
#ifdef HAVE_GOOD_UTIME_H
|
||||
- struct utimbuf tb;
|
||||
+ struct utimbuf tb;
|
||||
|
||||
- tb.actime = statbuf->st_atime;
|
||||
- tb.modtime = statbuf->st_mtime;
|
||||
- result = utime (destination, &tb);
|
||||
-#else /* ! HAVE_GOOD_UTIME_H */
|
||||
-#ifndef HAVE_UTIMES
|
||||
- long tb[2];
|
||||
-
|
||||
- tb[0] = statbuf->st_atime;
|
||||
- tb[1] = statbuf->st_mtime;
|
||||
- result = utime (destination, tb);
|
||||
-#else /* HAVE_UTIMES */
|
||||
- struct timeval tv[2];
|
||||
-
|
||||
- tv[0].tv_sec = statbuf->st_atime;
|
||||
- tv[0].tv_usec = 0;
|
||||
- tv[1].tv_sec = statbuf->st_mtime;
|
||||
- tv[1].tv_usec = 0;
|
||||
- result = utimes (destination, tv);
|
||||
-#endif /* HAVE_UTIMES */
|
||||
-#endif /* ! HAVE_GOOD_UTIME_H */
|
||||
- }
|
||||
-
|
||||
- if (result != 0)
|
||||
- non_fatal (_("%s: cannot set time: %s"), destination, strerror (errno));
|
||||
-}
|
||||
-
|
||||
-#ifndef S_ISLNK
|
||||
-#ifdef S_IFLNK
|
||||
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
||||
+ tb.actime = statbuf->st_atime;
|
||||
+ tb.modtime = statbuf->st_mtime;
|
||||
+ result = utime (destination, &tb);
|
||||
+#elif defined HAVE_UTIMES
|
||||
+ struct timeval tv[2];
|
||||
+
|
||||
+ tv[0].tv_sec = statbuf->st_atime;
|
||||
+ tv[0].tv_usec = 0;
|
||||
+ tv[1].tv_sec = statbuf->st_mtime;
|
||||
+ tv[1].tv_usec = 0;
|
||||
+ result = utimes (destination, tv);
|
||||
#else
|
||||
-#define S_ISLNK(m) 0
|
||||
-#define lstat stat
|
||||
-#endif
|
||||
-#endif
|
||||
-
|
||||
-#if !defined (_WIN32) || defined (__CYGWIN32__)
|
||||
-/* Try to preserve the permission bits and ownership of an existing file when
|
||||
- rename overwrites it. FD is the file being renamed and TARGET_STAT has the
|
||||
- status of the file that was overwritten. */
|
||||
-static void
|
||||
-try_preserve_permissions (int fd, struct stat *target_stat)
|
||||
-{
|
||||
- struct stat from_stat;
|
||||
- int ret = 0;
|
||||
-
|
||||
- if (fstat (fd, &from_stat) != 0)
|
||||
- return;
|
||||
+ long tb[2];
|
||||
|
||||
- int from_mode = from_stat.st_mode & 0777;
|
||||
- int to_mode = target_stat->st_mode & 0777;
|
||||
+ tb[0] = statbuf->st_atime;
|
||||
+ tb[1] = statbuf->st_mtime;
|
||||
+ result = utime (destination, tb);
|
||||
+#endif
|
||||
|
||||
- /* Fix up permissions before we potentially lose ownership with fchown.
|
||||
- Clear the setxid bits because in case the fchown below fails then we don't
|
||||
- want to end up with a sxid file owned by the invoking user. If the user
|
||||
- hasn't changed or if fchown succeeded, we add back the sxid bits at the
|
||||
- end. */
|
||||
- if (from_mode != to_mode)
|
||||
- fchmod (fd, to_mode);
|
||||
-
|
||||
- /* Fix up ownership, this will clear the setxid bits. */
|
||||
- if (from_stat.st_uid != target_stat->st_uid
|
||||
- || from_stat.st_gid != target_stat->st_gid)
|
||||
- ret = fchown (fd, target_stat->st_uid, target_stat->st_gid);
|
||||
-
|
||||
- /* Fix up the sxid bits if either the fchown wasn't needed or it
|
||||
- succeeded. */
|
||||
- if (ret == 0)
|
||||
- fchmod (fd, target_stat->st_mode & 07777);
|
||||
+ if (result != 0)
|
||||
+ non_fatal (_("%s: cannot set time: %s"), destination, strerror (errno));
|
||||
}
|
||||
-#endif
|
||||
|
||||
-/* Rename FROM to TO, copying if TO is either a link or is not a regular file.
|
||||
- FD is an open file descriptor pointing to FROM that we can use to safely fix
|
||||
- up permissions of the file after renaming. TARGET_STAT has the file status
|
||||
- that is used to fix up permissions and timestamps after rename. Return 0 if
|
||||
- ok, -1 if error and FD is closed before returning. */
|
||||
+/* Copy FROM to TO. TARGET_STAT has the file status that, if non-NULL,
|
||||
+ is used to fix up timestamps. Return 0 if ok, -1 if error.
|
||||
+ At one time this function renamed files, but file permissions are
|
||||
+ tricky to update given the number of different schemes used by
|
||||
+ various systems. So now we just copy. */
|
||||
|
||||
int
|
||||
-smart_rename (const char *from, const char *to, int fd ATTRIBUTE_UNUSED,
|
||||
- struct stat *target_stat ATTRIBUTE_UNUSED,
|
||||
- int preserve_dates ATTRIBUTE_UNUSED)
|
||||
+smart_rename (const char *from, const char *to, int fromfd,
|
||||
+ struct stat *target_stat, bfd_boolean preserve_dates)
|
||||
{
|
||||
- int ret = 0;
|
||||
- struct stat to_stat;
|
||||
- bfd_boolean exists;
|
||||
-
|
||||
- exists = lstat (to, &to_stat) == 0;
|
||||
-
|
||||
-#if defined (_WIN32) && !defined (__CYGWIN32__)
|
||||
- /* Win32, unlike unix, will not erase `to' in `rename(from, to)' but
|
||||
- fail instead. Also, chown is not present. */
|
||||
+ int ret;
|
||||
|
||||
- if (exists)
|
||||
- remove (to);
|
||||
-
|
||||
- ret = rename (from, to);
|
||||
+ ret = simple_copy (fromfd, to, target_stat);
|
||||
if (ret != 0)
|
||||
- {
|
||||
- /* We have to clean up here. */
|
||||
- non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno));
|
||||
- unlink (from);
|
||||
- }
|
||||
-#else
|
||||
- /* Avoid a full copy and use rename if we can fix up permissions of the
|
||||
- file after renaming, i.e.:
|
||||
+ non_fatal (_("unable to copy file '%s'; reason: %s"),
|
||||
+ to, strerror (errno));
|
||||
|
||||
- - TO is not a symbolic link
|
||||
- - TO is a regular file with only one hard link
|
||||
- - We have permission to write to TO
|
||||
- - FD is available to safely fix up permissions to be the same as the file
|
||||
- we overwrote with the rename.
|
||||
-
|
||||
- Note though that the actual file on disk that TARGET_STAT describes may
|
||||
- have changed and we're only trying to preserve the status we know about.
|
||||
- At no point do we try to interact with the new file changes, so there can
|
||||
- only be two outcomes, i.e. either the external file change survives
|
||||
- without knowledge of our change (if it happens after the rename syscall)
|
||||
- or our rename and permissions fixup survive without any knowledge of the
|
||||
- external change. */
|
||||
- if (! exists
|
||||
- || (fd >= 0
|
||||
- && !S_ISLNK (to_stat.st_mode)
|
||||
- && S_ISREG (to_stat.st_mode)
|
||||
- && (to_stat.st_mode & S_IWUSR)
|
||||
- && to_stat.st_nlink == 1)
|
||||
- )
|
||||
- {
|
||||
- ret = rename (from, to);
|
||||
- if (ret == 0)
|
||||
- {
|
||||
- if (exists && target_stat != NULL)
|
||||
- try_preserve_permissions (fd, target_stat);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* We have to clean up here. */
|
||||
- non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno));
|
||||
- unlink (from);
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- ret = simple_copy (from, to);
|
||||
- if (ret != 0)
|
||||
- non_fatal (_("unable to copy file '%s'; reason: %s"), to, strerror (errno));
|
||||
-
|
||||
- if (preserve_dates && target_stat != NULL)
|
||||
- set_times (to, target_stat);
|
||||
- unlink (from);
|
||||
- }
|
||||
- if (fd >= 0)
|
||||
- close (fd);
|
||||
-#endif /* _WIN32 && !__CYGWIN32__ */
|
||||
+ if (preserve_dates)
|
||||
+ set_times (to, target_stat);
|
||||
+ unlink (from);
|
||||
|
||||
return ret;
|
||||
}
|
||||
diff -rup binutils.orig/binutils/objcopy.c binutils-2.35.1/binutils/objcopy.c
|
||||
--- binutils.orig/binutils/objcopy.c 2021-03-11 13:21:44.780223078 +0000
|
||||
+++ binutils-2.35.1/binutils/objcopy.c 2021-03-11 13:23:01.041718818 +0000
|
||||
@@ -4798,7 +4798,11 @@ strip_main (int argc, char *argv[])
|
||||
|
||||
if (output_file == NULL
|
||||
|| filename_cmp (argv[i], output_file) == 0)
|
||||
- tmpname = make_tempname (argv[i], &tmpfd);
|
||||
+ {
|
||||
+ tmpname = make_tempname (argv[i], &tmpfd);
|
||||
+ if (tmpfd >= 0)
|
||||
+ copyfd = dup (tmpfd);
|
||||
+ }
|
||||
else
|
||||
tmpname = output_file;
|
||||
|
||||
|
|
|
|||
58
binutils-CVE-2021-20284.patch
Normal file
58
binutils-CVE-2021-20284.patch
Normal file
|
|
@ -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;
|
||||
34
binutils-CVE-2021-3487.patch
Normal file
34
binutils-CVE-2021-3487.patch
Normal file
|
|
@ -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);
|
||||
186
binutils-dwarf-5-dir0.patch
Normal file
186
binutils-dwarf-5-dir0.patch
Normal file
|
|
@ -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
|
||||
+
|
||||
+
|
||||
657
binutils-extend-s390-arch14-support.patch
Normal file
657
binutils-extend-s390-arch14-support.patch
Normal file
|
|
@ -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
|
||||
292
binutils-gas-Use-the-directory-name-in-.file-0.patch
Normal file
292
binutils-gas-Use-the-directory-name-in-.file-0.patch
Normal file
|
|
@ -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
|
||||
|
||||
375
binutils-gas-multibyte-warnings.patch
Normal file
375
binutils-gas-multibyte-warnings.patch
Normal file
|
|
@ -0,0 +1,375 @@
|
|||
diff -rupN binutils.orig/gas/NEWS binutils-2.35.2/gas/NEWS
|
||||
--- binutils.orig/gas/NEWS 2021-11-19 13:45:07.404537791 +0000
|
||||
+++ binutils-2.35.2/gas/NEWS 2021-11-19 13:46:06.334144249 +0000
|
||||
@@ -1,5 +1,13 @@
|
||||
-*- text -*-
|
||||
|
||||
+* The --multibyte-handling=[allow|warn|warn-sym-only] option tells the
|
||||
+ assembler what to when it encoutners multibyte characters in the input. The
|
||||
+ default is to allow them. Setting the option to "warn" will generate a
|
||||
+ warning message whenever any multibyte character is encountered. Using the
|
||||
+ option to "warn-sym-only" will make the assembler generate a warning whenever a
|
||||
+ symbol is defined containing multibyte characters. (References to undefined
|
||||
+ symbols will not generate warnings).
|
||||
+
|
||||
* Add {disp16} pseudo prefix to x86 assembler.
|
||||
|
||||
Changes in 2.35:
|
||||
diff -rupN binutils.orig/gas/app.c binutils-2.35.2/gas/app.c
|
||||
--- binutils.orig/gas/app.c 2021-11-19 13:45:07.403537798 +0000
|
||||
+++ binutils-2.35.2/gas/app.c 2021-11-19 13:45:34.611356099 +0000
|
||||
@@ -352,6 +352,55 @@ process_escape (int ch)
|
||||
}
|
||||
}
|
||||
|
||||
+#define MULTIBYTE_WARN_COUNT_LIMIT 10
|
||||
+static unsigned int multibyte_warn_count = 0;
|
||||
+
|
||||
+bfd_boolean
|
||||
+scan_for_multibyte_characters (const unsigned char * start,
|
||||
+ const unsigned char * end,
|
||||
+ bfd_boolean warn)
|
||||
+{
|
||||
+ if (end <= start)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if (warn && multibyte_warn_count > MULTIBYTE_WARN_COUNT_LIMIT)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ bfd_boolean found = FALSE;
|
||||
+
|
||||
+ while (start < end)
|
||||
+ {
|
||||
+ unsigned char c;
|
||||
+
|
||||
+ if ((c = * start++) <= 0x7f)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!warn)
|
||||
+ return TRUE;
|
||||
+
|
||||
+ found = TRUE;
|
||||
+
|
||||
+ const char * filename;
|
||||
+ unsigned int lineno;
|
||||
+
|
||||
+ filename = as_where (& lineno);
|
||||
+ if (filename == NULL)
|
||||
+ as_warn (_("multibyte character (%#x) encountered in input"), c);
|
||||
+ else if (lineno == 0)
|
||||
+ as_warn (_("multibyte character (%#x) encountered in %s"), c, filename);
|
||||
+ else
|
||||
+ as_warn (_("multibyte character (%#x) encountered in %s at or near line %u"), c, filename, lineno);
|
||||
+
|
||||
+ if (++ multibyte_warn_count == MULTIBYTE_WARN_COUNT_LIMIT)
|
||||
+ {
|
||||
+ as_warn (_("further multibyte character warnings suppressed"));
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return found;
|
||||
+}
|
||||
+
|
||||
/* This function is called to process input characters. The GET
|
||||
parameter is used to retrieve more input characters. GET should
|
||||
set its parameter to point to a buffer, and return the length of
|
||||
@@ -470,6 +519,11 @@ do_scrub_chars (size_t (*get) (char *, s
|
||||
return 0;
|
||||
from = input_buffer;
|
||||
fromend = from + fromlen;
|
||||
+
|
||||
+ if (multibyte_handling == multibyte_warn)
|
||||
+ (void) scan_for_multibyte_characters ((const unsigned char *) from,
|
||||
+ (const unsigned char* ) fromend,
|
||||
+ TRUE /* Generate warnings. */);
|
||||
}
|
||||
|
||||
while (1)
|
||||
diff -rupN binutils.orig/gas/as.c binutils-2.35.2/gas/as.c
|
||||
--- binutils.orig/gas/as.c 2021-11-19 13:45:07.404537791 +0000
|
||||
+++ binutils-2.35.2/gas/as.c 2021-11-19 13:45:34.613356085 +0000
|
||||
@@ -482,7 +482,7 @@ parse_args (int * pargc, char *** pargv)
|
||||
OPTION_DEBUG_PREFIX_MAP,
|
||||
OPTION_DEFSYM,
|
||||
OPTION_LISTING_LHS_WIDTH,
|
||||
- OPTION_LISTING_LHS_WIDTH2,
|
||||
+ OPTION_LISTING_LHS_WIDTH2, /* = STD_BASE + 10 */
|
||||
OPTION_LISTING_RHS_WIDTH,
|
||||
OPTION_LISTING_CONT_LINES,
|
||||
OPTION_DEPFILE,
|
||||
@@ -492,7 +492,7 @@ parse_args (int * pargc, char *** pargv)
|
||||
OPTION_GDWARF_3,
|
||||
OPTION_GDWARF_4,
|
||||
OPTION_GDWARF_5,
|
||||
- OPTION_GDWARF_SECTIONS,
|
||||
+ OPTION_GDWARF_SECTIONS, /* = STD_BASE + 20 */
|
||||
OPTION_GDWARF_CIE_VERSION,
|
||||
OPTION_STRIP_LOCAL_ABSOLUTE,
|
||||
OPTION_TRADITIONAL_FORMAT,
|
||||
@@ -502,7 +502,7 @@ parse_args (int * pargc, char *** pargv)
|
||||
OPTION_NOEXECSTACK,
|
||||
OPTION_SIZE_CHECK,
|
||||
OPTION_ELF_STT_COMMON,
|
||||
- OPTION_ELF_BUILD_NOTES,
|
||||
+ OPTION_ELF_BUILD_NOTES, /* = STD_BASE + 30 */
|
||||
OPTION_SECTNAME_SUBST,
|
||||
OPTION_ALTERNATE,
|
||||
OPTION_AL,
|
||||
@@ -511,7 +511,8 @@ parse_args (int * pargc, char *** pargv)
|
||||
OPTION_WARN_FATAL,
|
||||
OPTION_COMPRESS_DEBUG,
|
||||
OPTION_NOCOMPRESS_DEBUG,
|
||||
- OPTION_NO_PAD_SECTIONS /* = STD_BASE + 40 */
|
||||
+ OPTION_NO_PAD_SECTIONS,
|
||||
+ OPTION_MULTIBYTE_HANDLING /* = STD_BASE + 40 */
|
||||
/* When you add options here, check that they do
|
||||
not collide with OPTION_MD_BASE. See as.h. */
|
||||
};
|
||||
@@ -589,6 +590,7 @@ parse_args (int * pargc, char *** pargv)
|
||||
,{"target-help", no_argument, NULL, OPTION_TARGET_HELP}
|
||||
,{"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT}
|
||||
,{"warn", no_argument, NULL, OPTION_WARN}
|
||||
+ ,{"multibyte-handling", required_argument, NULL, OPTION_MULTIBYTE_HANDLING}
|
||||
};
|
||||
|
||||
/* Construct the option lists from the standard list and the target
|
||||
@@ -691,6 +693,19 @@ parse_args (int * pargc, char *** pargv)
|
||||
flag_traditional_format = 1;
|
||||
break;
|
||||
|
||||
+ case OPTION_MULTIBYTE_HANDLING:
|
||||
+ if (strcmp (optarg, "allow") == 0)
|
||||
+ multibyte_handling = multibyte_allow;
|
||||
+ else if (strcmp (optarg, "warn") == 0)
|
||||
+ multibyte_handling = multibyte_warn;
|
||||
+ else if (strcmp (optarg, "warn-sym-only") == 0)
|
||||
+ multibyte_handling = multibyte_warn_syms;
|
||||
+ else if (strcmp (optarg, "warn_sym_only") == 0)
|
||||
+ multibyte_handling = multibyte_warn_syms;
|
||||
+ else
|
||||
+ as_fatal (_("unexpected argument to --multibyte-input-option: '%s'"), optarg);
|
||||
+ break;
|
||||
+
|
||||
case OPTION_VERSION:
|
||||
/* This output is intended to follow the GNU standards document. */
|
||||
printf (_("GNU assembler %s\n"), BFD_VERSION_STRING);
|
||||
diff -rupN binutils.orig/gas/as.h binutils-2.35.2/gas/as.h
|
||||
--- binutils.orig/gas/as.h 2021-11-19 13:45:07.136539581 +0000
|
||||
+++ binutils-2.35.2/gas/as.h 2021-11-19 13:45:34.613356085 +0000
|
||||
@@ -388,6 +388,14 @@ COMMON int linkrelax;
|
||||
|
||||
COMMON int do_not_pad_sections_to_alignment;
|
||||
|
||||
+enum multibyte_input_handling
|
||||
+{
|
||||
+ multibyte_allow = 0,
|
||||
+ multibyte_warn,
|
||||
+ multibyte_warn_syms
|
||||
+};
|
||||
+COMMON enum multibyte_input_handling multibyte_handling;
|
||||
+
|
||||
/* TRUE if we should produce a listing. */
|
||||
extern int listing;
|
||||
|
||||
@@ -495,6 +503,7 @@ void input_scrub_insert_file (char *);
|
||||
char * input_scrub_new_file (const char *);
|
||||
char * input_scrub_next_buffer (char **bufp);
|
||||
size_t do_scrub_chars (size_t (*get) (char *, size_t), char *, size_t);
|
||||
+bfd_boolean scan_for_multibyte_characters (const unsigned char *, const unsigned char *, bfd_boolean);
|
||||
int gen_to_words (LITTLENUM_TYPE *, int, long);
|
||||
int had_err (void);
|
||||
int ignore_input (void);
|
||||
diff -rupN binutils.orig/gas/doc/as.texi binutils-2.35.2/gas/doc/as.texi
|
||||
--- binutils.orig/gas/doc/as.texi 2021-11-19 13:45:07.141539547 +0000
|
||||
+++ binutils-2.35.2/gas/doc/as.texi 2021-11-19 13:45:34.617356059 +0000
|
||||
@@ -246,6 +246,7 @@ gcc(1), ld(1), and the Info entries for
|
||||
[@b{--sectname-subst}] [@b{--size-check=[error|warning]}]
|
||||
[@b{--elf-stt-common=[no|yes]}]
|
||||
[@b{--generate-missing-build-notes=[no|yes]}]
|
||||
+ [@b{--multibyte-handling=[allow|warn|warn-sym-only]}]
|
||||
[@b{--target-help}] [@var{target-options}]
|
||||
[@b{--}|@var{files} @dots{}]
|
||||
@c
|
||||
@@ -866,6 +867,18 @@ Set the maximum width of an input source
|
||||
Set the maximum number of lines printed in a listing for a single line of input
|
||||
to @var{number} + 1.
|
||||
|
||||
+@item --multibyte-handling=allow
|
||||
+@itemx --multibyte-handling=warn
|
||||
+@itemx --multibyte-handling=warn-sym-only
|
||||
+Controls how the assembler handles multibyte characters in the input. The
|
||||
+default (which can be restored by using the @option{allow} argument) is to
|
||||
+allow such characters without complaint. Using the @option{warn} argument will
|
||||
+make the assembler generate a warning message whenever any multibyte character
|
||||
+is encountered. Using the @option{warn-sym-only} argument will only cause a
|
||||
+warning to be generated when a symbol is defined with a name that contains
|
||||
+multibyte characters. (References to undefined symbols will not generate a
|
||||
+warning).
|
||||
+
|
||||
@item --no-pad-sections
|
||||
Stop the assembler for padding the ends of output sections to the alignment
|
||||
of that section. The default is to pad the sections, but this can waste space
|
||||
@@ -2954,9 +2967,11 @@ are noted in @ref{Machine Dependencies}.
|
||||
@end ifset
|
||||
No symbol may begin with a digit. Case is significant.
|
||||
There is no length limit; all characters are significant. Multibyte characters
|
||||
-are supported. Symbols are delimited by characters not in that set, or by the
|
||||
-beginning of a file (since the source program must end with a newline, the end
|
||||
-of a file is not a possible symbol delimiter). @xref{Symbols}.
|
||||
+are supported, but note that the setting of the
|
||||
+@option{--multibyte-handling} option might prevent their use. Symbols
|
||||
+are delimited by characters not in that set, or by the beginning of a file
|
||||
+(since the source program must end with a newline, the end of a file is not a
|
||||
+possible symbol delimiter). @xref{Symbols}.
|
||||
|
||||
Symbol names may also be enclosed in double quote @code{"} characters. In such
|
||||
cases any characters are allowed, except for the NUL character. If a double
|
||||
@@ -3846,11 +3861,18 @@ than @code{Foo}.
|
||||
Symbol names do not start with a digit. An exception to this rule is made for
|
||||
Local Labels. See below.
|
||||
|
||||
-Multibyte characters are supported. To generate a symbol name containing
|
||||
+Multibyte characters are supported, but note that the setting of the
|
||||
+@option{multibyte-handling} option might prevent their use.
|
||||
+To generate a symbol name containing
|
||||
multibyte characters enclose it within double quotes and use escape codes. cf
|
||||
@xref{Strings}. Generating a multibyte symbol name from a label is not
|
||||
currently supported.
|
||||
|
||||
+Since multibyte symbol names are unusual, and could possibly be used
|
||||
+maliciously, @command{@value{AS}} provides a command line option
|
||||
+(@option{--multibyte-handling=warn-sym-only}) which can be used to generate a
|
||||
+warning message whenever a symbol name containing multibyte characters is defined.
|
||||
+
|
||||
Each symbol has exactly one name. Each name in an assembly language program
|
||||
refers to exactly one symbol. You may use that symbol name any number of times
|
||||
in a program.
|
||||
diff -rupN binutils.orig/gas/input-scrub.c binutils-2.35.2/gas/input-scrub.c
|
||||
--- binutils.orig/gas/input-scrub.c 2021-11-19 13:45:07.138539567 +0000
|
||||
+++ binutils-2.35.2/gas/input-scrub.c 2021-11-19 13:45:34.618356052 +0000
|
||||
@@ -377,6 +377,11 @@ input_scrub_next_buffer (char **bufp)
|
||||
++p;
|
||||
}
|
||||
|
||||
+ if (multibyte_handling == multibyte_warn)
|
||||
+ (void) scan_for_multibyte_characters ((const unsigned char *) p,
|
||||
+ (const unsigned char *) limit,
|
||||
+ TRUE /* Generate warnings */);
|
||||
+
|
||||
/* We found a newline in the newly read chars. */
|
||||
partial_where = p;
|
||||
partial_size = limit - p;
|
||||
diff -rupN binutils.orig/gas/symbols.c binutils-2.35.2/gas/symbols.c
|
||||
--- binutils.orig/gas/symbols.c 2021-11-19 13:45:07.404537791 +0000
|
||||
+++ binutils-2.35.2/gas/symbols.c 2021-11-19 13:50:21.853437801 +0000
|
||||
@@ -73,6 +73,10 @@ struct symbol_flags
|
||||
before. It is cleared as soon as any direct reference to the
|
||||
symbol is present. */
|
||||
unsigned int sy_weakrefd : 1;
|
||||
+
|
||||
+ /* Set when a warning about the symbol containing multibyte characters
|
||||
+ is generated. */
|
||||
+ unsigned int multibyte_warned : 1;
|
||||
};
|
||||
|
||||
/* The information we keep for a symbol. Note that the symbol table
|
||||
@@ -282,6 +286,18 @@ symbol_create (const char *name, /* It i
|
||||
as_fatal ("bfd_make_empty_symbol: %s", bfd_errmsg (bfd_get_error ()));
|
||||
S_SET_NAME (symbolP, preserved_copy_of_name);
|
||||
|
||||
+ if (multibyte_handling == multibyte_warn_syms
|
||||
+ && ! symbolP->sy_flags.sy_local_symbol
|
||||
+ && segment != undefined_section
|
||||
+ && ! symbolP->sy_flags.multibyte_warned
|
||||
+ && scan_for_multibyte_characters ((const unsigned char *) name,
|
||||
+ (const unsigned char *) name + strlen (name),
|
||||
+ FALSE /* Do not warn. */))
|
||||
+ {
|
||||
+ as_warn (_("symbol '%s' contains multibyte characters"), name);
|
||||
+ symbolP->sy_flags.multibyte_warned = 1;
|
||||
+ }
|
||||
+
|
||||
S_SET_SEGMENT (symbolP, segment);
|
||||
S_SET_VALUE (symbolP, valu);
|
||||
symbol_clear_list_pointers (symbolP);
|
||||
@@ -2421,7 +2437,21 @@ S_SET_SEGMENT (symbolS *s, segT seg)
|
||||
abort ();
|
||||
}
|
||||
else
|
||||
- s->bsym->section = seg;
|
||||
+ {
|
||||
+ if (multibyte_handling == multibyte_warn_syms
|
||||
+ && ! s->sy_flags.sy_local_symbol
|
||||
+ && seg != undefined_section
|
||||
+ && ! s->sy_flags.multibyte_warned
|
||||
+ && scan_for_multibyte_characters ((const unsigned char *) S_GET_NAME (s),
|
||||
+ (const unsigned char *) S_GET_NAME (s) + strlen (S_GET_NAME (s)),
|
||||
+ FALSE))
|
||||
+ {
|
||||
+ as_warn (_("symbol '%s' contains multibyte characters"), S_GET_NAME (s));
|
||||
+ s->sy_flags.multibyte_warned = 1;
|
||||
+ }
|
||||
+
|
||||
+ s->bsym->section = seg;
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
||||
diff -rupN binutils.orig/gas/testsuite/gas/all/gas.exp binutils-2.35.2/gas/testsuite/gas/all/gas.exp
|
||||
--- binutils.orig/gas/testsuite/gas/all/gas.exp 2021-11-19 13:45:07.400537818 +0000
|
||||
+++ binutils-2.35.2/gas/testsuite/gas/all/gas.exp 2021-11-19 13:51:08.664125186 +0000
|
||||
@@ -470,3 +470,5 @@ run_dump_test "fill-1"
|
||||
gas_test "pr23938.s" "" "" ".xstabs"
|
||||
|
||||
run_dump_test "nop"
|
||||
+run_dump_test "multibyte1"
|
||||
+run_dump_test "multibyte2"
|
||||
diff -rupN binutils.orig/testsuite/gas/all/multibyte.s binutils-2.35.2/testsuite/gas/all/multibyte.s
|
||||
--- binutils.orig/testsuite/gas/all/multibyte.s 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ binutils-2.35.2/testsuite/gas/all/multibyte.s 2021-11-19 13:45:35.284351604 +0000
|
||||
@@ -0,0 +1,8 @@
|
||||
+ .text
|
||||
+ .globl heoll
|
||||
+heoll:
|
||||
+ .nop
|
||||
+
|
||||
+ .globl hello
|
||||
+hello:
|
||||
+ .nop
|
||||
diff -rupN binutils.orig/testsuite/gas/all/multibyte1.d binutils-2.35.2/testsuite/gas/all/multibyte1.d
|
||||
--- binutils.orig/testsuite/gas/all/multibyte1.d 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ binutils-2.35.2/testsuite/gas/all/multibyte1.d 2021-11-19 13:45:35.284351604 +0000
|
||||
@@ -0,0 +1,3 @@
|
||||
+#source: multibyte.s
|
||||
+#as: --multibyte-handling=warn
|
||||
+#warning_output: multibyte1.l
|
||||
diff -rupN binutils.orig/testsuite/gas/all/multibyte1.l binutils-2.35.2/testsuite/gas/all/multibyte1.l
|
||||
--- binutils.orig/testsuite/gas/all/multibyte1.l 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ binutils-2.35.2/testsuite/gas/all/multibyte1.l 2021-11-19 13:45:35.284351604 +0000
|
||||
@@ -0,0 +1,12 @@
|
||||
+[^:]*: Assembler messages:
|
||||
+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0x80\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0xae\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0x80\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0xac\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0x80\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0xae\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s
|
||||
+[^:]*: Warning: further multibyte character warnings suppressed
|
||||
diff -rupN binutils.orig/testsuite/gas/all/multibyte2.d binutils-2.35.2/testsuite/gas/all/multibyte2.d
|
||||
--- binutils.orig/testsuite/gas/all/multibyte2.d 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ binutils-2.35.2/testsuite/gas/all/multibyte2.d 2021-11-19 13:45:35.284351604 +0000
|
||||
@@ -0,0 +1,3 @@
|
||||
+#source: multibyte.s
|
||||
+#as: --multibyte-handling=warn-sym-only
|
||||
+#warning_output: multibyte2.l
|
||||
diff -rupN binutils.orig/testsuite/gas/all/multibyte2.l binutils-2.35.2/testsuite/gas/all/multibyte2.l
|
||||
--- binutils.orig/testsuite/gas/all/multibyte2.l 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ binutils-2.35.2/testsuite/gas/all/multibyte2.l 2021-11-19 13:45:35.284351604 +0000
|
||||
@@ -0,0 +1,2 @@
|
||||
+[^:]*: Assembler messages:
|
||||
+[^:]*:3: Warning: symbol '.*' contains multibyte characters
|
||||
42
binutils-ppc64le-note-merge.patch
Normal file
42
binutils-ppc64le-note-merge.patch
Normal file
|
|
@ -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:
|
||||
19
binutils-readelf-no-warn-gaps.patch
Normal file
19
binutils-readelf-no-warn-gaps.patch
Normal file
|
|
@ -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;
|
||||
|
||||
109
binutils-s390-arch14-insns.patch
Normal file
109
binutils-s390-arch14-insns.patch
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
diff -rup binutils.orig/gas/config/tc-s390.c binutils-2.35.1/gas/config/tc-s390.c
|
||||
--- binutils.orig/gas/config/tc-s390.c 2021-02-19 11:44:24.240877612 +0000
|
||||
+++ binutils-2.35.1/gas/config/tc-s390.c 2021-02-19 11:46:05.222554434 +0000
|
||||
@@ -292,6 +292,8 @@ s390_parse_cpu (const char * arg
|
||||
{ STRING_COMMA_LEN ("z14"), STRING_COMMA_LEN ("arch12"),
|
||||
S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX },
|
||||
{ STRING_COMMA_LEN ("z15"), STRING_COMMA_LEN ("arch13"),
|
||||
+ S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX },
|
||||
+ { STRING_COMMA_LEN (""), STRING_COMMA_LEN ("arch14"),
|
||||
S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX }
|
||||
};
|
||||
static struct
|
||||
diff -rup binutils.orig/gas/doc/c-s390.texi binutils-2.35.1/gas/doc/c-s390.texi
|
||||
--- binutils.orig/gas/doc/c-s390.texi 2021-02-19 11:44:24.236877625 +0000
|
||||
+++ binutils-2.35.1/gas/doc/c-s390.texi 2021-02-19 11:46:05.223554431 +0000
|
||||
@@ -18,7 +18,7 @@ and eleven chip levels. The architecture
|
||||
Architecture (ESA) and the newer z/Architecture mode. The chip levels
|
||||
are g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec
|
||||
(or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13
|
||||
-(or arch11), z14 (or arch12), and z15 (or arch13).
|
||||
+(or arch11), z14 (or arch12), z15 (or arch13), or arch14.
|
||||
|
||||
@menu
|
||||
* s390 Options:: Command-line Options.
|
||||
@@ -70,8 +70,9 @@ are recognized:
|
||||
@code{z196} (or @code{arch9}),
|
||||
@code{zEC12} (or @code{arch10}),
|
||||
@code{z13} (or @code{arch11}),
|
||||
-@code{z14} (or @code{arch12}), and
|
||||
-@code{z15} (or @code{arch13}).
|
||||
+@code{z14} (or @code{arch12}),
|
||||
+@code{z15} (or @code{arch13}), and
|
||||
+@code{arch14}.
|
||||
|
||||
Assembling an instruction that is not supported on the target
|
||||
processor results in an error message.
|
||||
diff -rup binutils.orig/gas/testsuite/gas/s390/s390.exp binutils-2.35.1/gas/testsuite/gas/s390/s390.exp
|
||||
--- binutils.orig/gas/testsuite/gas/s390/s390.exp 2021-02-19 11:44:24.338877299 +0000
|
||||
+++ binutils-2.35.1/gas/testsuite/gas/s390/s390.exp 2021-02-19 11:46:05.223554431 +0000
|
||||
@@ -31,6 +31,7 @@ if [expr [istarget "s390-*-*"] || [ista
|
||||
run_dump_test "zarch-z13" "{as -m64} {as -march=z13}"
|
||||
run_dump_test "zarch-arch12" "{as -m64} {as -march=arch12}"
|
||||
run_dump_test "zarch-arch13" "{as -m64} {as -march=arch13}"
|
||||
+ run_dump_test "zarch-arch14" "{as -m64} {as -march=arch14}"
|
||||
run_dump_test "zarch-reloc" "{as -m64}"
|
||||
run_dump_test "zarch-operands" "{as -m64} {as -march=z9-109}"
|
||||
run_dump_test "zarch-machine" "{as -m64} {as -march=z900}"
|
||||
Only in binutils-2.35.1/gas/testsuite/gas/s390: zarch-arch14.d
|
||||
Only in binutils-2.35.1/gas/testsuite/gas/s390: zarch-arch14.s
|
||||
diff -rup binutils.orig/include/opcode/s390.h binutils-2.35.1/include/opcode/s390.h
|
||||
--- binutils.orig/include/opcode/s390.h 2021-02-19 11:44:23.926878617 +0000
|
||||
+++ binutils-2.35.1/include/opcode/s390.h 2021-02-19 11:46:05.223554431 +0000
|
||||
@@ -44,6 +44,7 @@ enum s390_opcode_cpu_val
|
||||
S390_OPCODE_Z13,
|
||||
S390_OPCODE_ARCH12,
|
||||
S390_OPCODE_ARCH13,
|
||||
+ S390_OPCODE_ARCH14,
|
||||
S390_OPCODE_MAXCPU
|
||||
};
|
||||
|
||||
diff -rup binutils.orig/opcodes/s390-mkopc.c binutils-2.35.1/opcodes/s390-mkopc.c
|
||||
--- binutils.orig/opcodes/s390-mkopc.c 2021-02-19 11:44:23.947878550 +0000
|
||||
+++ binutils-2.35.1/opcodes/s390-mkopc.c 2021-02-19 11:46:05.223554431 +0000
|
||||
@@ -380,6 +380,8 @@ main (void)
|
||||
else if (strcmp (cpu_string, "z15") == 0
|
||||
|| strcmp (cpu_string, "arch13") == 0)
|
||||
min_cpu = S390_OPCODE_ARCH13;
|
||||
+ else if (strcmp (cpu_string, "arch14") == 0)
|
||||
+ min_cpu = S390_OPCODE_ARCH14;
|
||||
else {
|
||||
fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string);
|
||||
exit (1);
|
||||
Only in binutils-2.35.1/opcodes: s390-mkopc.c.orig
|
||||
diff -rup binutils.orig/opcodes/s390-opc.txt binutils-2.35.1/opcodes/s390-opc.txt
|
||||
--- binutils.orig/opcodes/s390-opc.txt 2021-02-19 11:44:23.943878563 +0000
|
||||
+++ binutils-2.35.1/opcodes/s390-opc.txt 2021-02-19 11:46:05.224554428 +0000
|
||||
@@ -2000,3 +2000,31 @@ e60000000052 vcvbg VRR_RV0UU "vector con
|
||||
# Message Security Assist Extension 9
|
||||
|
||||
b93a kdsa RRE_RR "compute digital signature authentication" arch13 zarch
|
||||
+
|
||||
+
|
||||
+# arch14 instructions
|
||||
+
|
||||
+e60000000074 vschp VRR_VVV0U0U " " arch14 zarch
|
||||
+e60000002074 vschsp VRR_VVV0U0 " " arch14 zarch
|
||||
+e60000003074 vschdp VRR_VVV0U0 " " arch14 zarch
|
||||
+e60000004074 vschxp VRR_VVV0U0 " " arch14 zarch
|
||||
+e6000000007c vscshp VRR_VVV " " arch14 zarch
|
||||
+e6000000007d vcsph VRR_VVV0U0 " " arch14 zarch
|
||||
+e60000000051 vclzdp VRR_VV0U2 " " arch14 zarch
|
||||
+e60000000070 vpkzr VRI_VVV0UU2 " " arch14 zarch
|
||||
+e60000000072 vsrpr VRI_VVV0UU2 " " arch14 zarch
|
||||
+e60000000054 vupkzh VRR_VV0U2 " " arch14 zarch
|
||||
+e6000000005c vupkzl VRR_VV0U2 " " arch14 zarch
|
||||
+
|
||||
+b93b nnpa RRE_00 " " arch14 zarch
|
||||
+e60000000056 vclfnh VRR_VV0UU2 " " arch14 zarch
|
||||
+e6000000005e vclfnl VRR_VV0UU2 " " arch14 zarch
|
||||
+e60000000075 vcrnf VRR_VVV0UU " " arch14 zarch
|
||||
+e6000000005d vcfn VRR_VV0UU2 " " arch14 zarch
|
||||
+e60000000055 vcnf VRR_VV0UU2 " " arch14 zarch
|
||||
+
|
||||
+b98B rdp RRF_RURR2 " " arch14 zarch optparm
|
||||
+
|
||||
+eb0000000071 lpswey SIY_URD " " arch14 zarch
|
||||
+b200 lbear S_RD " " arch14 zarch
|
||||
+b201 stbear S_RD " " arch14 zarch
|
||||
Only in binutils-2.35.1/opcodes: s390-opc.txt.orig
|
||||
|
|
@ -1,19 +1,3 @@
|
|||
--- binutils.orig/gas/testsuite/gas/lns/lns-diag-1.l 2021-01-25 13:10:10.179338559 +0000
|
||||
+++ binutils-2.35.1/gas/testsuite/gas/lns/lns-diag-1.l 2021-01-25 13:18:04.697963105 +0000
|
||||
@@ -1,5 +1,4 @@
|
||||
.*: Assembler messages:
|
||||
-.*:2: Error: file number less than one
|
||||
.*:3: Error: missing string
|
||||
.*:4: Error: file table slot 1 is already occupied.*
|
||||
.*:8: Error: unassigned file number 3
|
||||
@@ -9,7 +8,6 @@
|
||||
.*:19: Error: bad or irreducible absolute expression
|
||||
.*:23: Error: isa number less than zero
|
||||
.*:26: Error: bad or irreducible absolute expression
|
||||
-.*:26: Error: file number less than one
|
||||
.*:27: Error: bad or irreducible absolute expression
|
||||
.*:28: Error: unknown .loc sub-directive `frobnitz'
|
||||
.*:29: Error: unknown .loc sub-directive `frobnitz'
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/lto.exp binutils-2.35.1/ld/testsuite/ld-plugin/lto.exp
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/lto.exp 2021-01-25 13:10:09.919340409 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-plugin/lto.exp 2021-01-25 13:45:30.991238686 +0000
|
||||
|
|
@ -820,7 +804,7 @@ diff -rup binutils.orig/ld/testsuite/ld-aarch64/variant_pcs-shared.d binutils-2.
|
|||
29: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_base_global_default_undef
|
||||
- 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] UND f_spec_global_default_undef
|
||||
- 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_ifunc
|
||||
+ 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_spec_global_default_undef[ ]+\[VARIANT_PCS\]
|
||||
+ 30: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND f_spec_global_default_undef[ ]+\[VARIANT_PCS\]
|
||||
+ 31: 0000000000008000 0 IFUNC GLOBAL DEFAULT 1 f_spec_global_default_ifunc[ ]+\[VARIANT_PCS\]
|
||||
32: 0000000000008000 0 NOTYPE GLOBAL DEFAULT 1 f_base_global_default_def
|
||||
- 33: 0000000000008000 0 NOTYPE GLOBAL DEFAULT \[VARIANT_PCS\] 1 f_spec_global_default_def
|
||||
|
|
@ -892,3 +876,332 @@ diff -rup binutils.orig/ld/testsuite/ld-powerpc/notoc3.d binutils-2.35.1/ld/test
|
|||
|
||||
/* Alloc EIHA. */
|
||||
eiha = (struct vms_eiha *)((char *) &eihd + PRIV (file_pos));
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin-12.d 2021-03-04 12:31:13.549340051 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-plugin/plugin-12.d 2021-03-04 12:33:25.313455927 +0000
|
||||
@@ -1,6 +1,6 @@
|
||||
#...
|
||||
-.*: symbol `func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
|
||||
-.*: symbol `func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DEF_IRONLY
|
||||
-.*: symbol `func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DEF_IRONLY
|
||||
-.*: symbol `func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DEF_IRONLY
|
||||
+.*: symbol `_?func' definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DE.*
|
||||
+.*: symbol `_?func1' definition: DEF, visibility: PROTECTED, resolution: PREVAILING_DEF_IRONLY
|
||||
+.*: symbol `_?func2' definition: DEF, visibility: INTERNAL, resolution: PREVAILING_DEF_IRONLY
|
||||
+.*: symbol `_?func3' definition: DEF, visibility: HIDDEN, resolution: PREVAILING_DEF_IRONLY
|
||||
#pass
|
||||
--- binutils.orig/ld/testsuite/ld-elf/shared.exp 2021-03-04 12:31:13.612339628 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-elf/shared.exp 2021-03-04 12:39:35.615971464 +0000
|
||||
@@ -1377,18 +1377,6 @@ if { [istarget *-*-linux*]
|
||||
"pr22393-2-static" \
|
||||
"pass.out" \
|
||||
] \
|
||||
- [list \
|
||||
- "Run pr21964-4" \
|
||||
- "" \
|
||||
- "" \
|
||||
- {pr21964-4.c} \
|
||||
- "pr21964-4" \
|
||||
- "pass.out" \
|
||||
- "" \
|
||||
- "" \
|
||||
- "" \
|
||||
- "-ldl" \
|
||||
- ] \
|
||||
]
|
||||
}
|
||||
|
||||
--- binutils.orig/ld/testsuite/ld-elf/tls.exp 2021-03-04 12:31:13.609339649 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-elf/tls.exp 2021-03-04 12:41:08.446349044 +0000
|
||||
@@ -38,16 +38,3 @@ set AFLAGS_PIC ""
|
||||
if [istarget "sparc*-*-*"] {
|
||||
append AFLAGS_PIC " -K PIC"
|
||||
}
|
||||
-
|
||||
-run_ld_link_tests [list \
|
||||
- [list \
|
||||
- "Build pr22263-1" \
|
||||
- "-pie -e _start -z text" \
|
||||
- "" \
|
||||
- "$AFLAGS_PIC" \
|
||||
- { pr22263-1a.c pr22263-1b.c } \
|
||||
- {{readelf -r pr22263-1.rd}} \
|
||||
- "pr22263-1" \
|
||||
- "-fPIE -O2 $NOSANTIZE_CFLAGS" \
|
||||
- ] \
|
||||
-]
|
||||
diff -rup binutils.orig/ld/testsuite/ld-ifunc/pr23169b.rd binutils-2.35.1/ld/testsuite/ld-ifunc/pr23169b.rd
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/pr23169b.rd 2021-03-04 12:31:13.538340125 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-ifunc/pr23169b.rd 2021-03-04 12:43:31.149392230 +0000
|
||||
@@ -1,4 +1,4 @@
|
||||
#failif
|
||||
#...
|
||||
-[0-9a-f]+ +[0-9a-f]+ +R_[^ ]+ +[0-9a-f]+ +func(| \+ 0)
|
||||
+[0-9a-f]+ +[0-9a-f]+ +R_[^ ]+ +[0-9a-f]+ +(|_)func(| \+ 0)
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-ifunc/pr23169c.rd binutils-2.35.1/ld/testsuite/ld-ifunc/pr23169c.rd
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/pr23169c.rd 2021-03-04 12:31:13.539340118 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-ifunc/pr23169c.rd 2021-03-04 12:43:44.397303403 +0000
|
||||
@@ -1,3 +1,3 @@
|
||||
#...
|
||||
- +[0-9]+: +[0-9a-f]+ +[0-9]+ +IFUNC +GLOBAL +DEFAULT.* [0-9]+ +func
|
||||
+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +IFUNC +GLOBAL +DEFAULT.* [0-9]+ +(|_)func
|
||||
#pass
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/plugin.exp 2021-03-04 14:22:36.072086362 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-plugin/plugin.exp 2021-03-04 14:22:47.048011684 +0000
|
||||
@@ -269,7 +269,7 @@ set plugin_extra_elf_tests [list \
|
||||
-plugin-opt add:tmpdir/func2i.o \
|
||||
-plugin-opt add:tmpdir/func3h.o \
|
||||
$testobjfiles $libs --verbose=2" "" "" "" {{ld plugin-12.d} \
|
||||
- {readelf -s plugin-vis-1.d}} "main.x" ] \
|
||||
+ } "main.x" ] \
|
||||
[list "plugin set symbol visibility with source" \
|
||||
"-plugin $plugin_path $regclm $regas $regcln \
|
||||
-plugin-opt claim:$srcdir/$subdir/func.c \
|
||||
@@ -283,7 +283,7 @@ set plugin_extra_elf_tests [list \
|
||||
-plugin-opt add:tmpdir/func2i.o \
|
||||
-plugin-opt add:tmpdir/func3h.o \
|
||||
$testsrcfiles $libs --verbose=2" "" "" "" {{ld plugin-12.d} \
|
||||
- {readelf -s plugin-vis-1.d}} "main.x" ] \
|
||||
+ } "main.x" ] \
|
||||
]
|
||||
|
||||
if { !$can_compile || $failed_compile } {
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/pr23169c.rd 2021-03-04 14:22:36.062086430 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-ifunc/pr23169c.rd 2021-03-04 14:25:28.902910361 +0000
|
||||
@@ -1,3 +1,3 @@
|
||||
#...
|
||||
- +[0-9]+: +[0-9a-f]+ +[0-9]+ +IFUNC +GLOBAL +DEFAULT.* [0-9]+ +(|_)func
|
||||
+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +IFUNC +GLOBAL +DEFAULT.* [0-9]+.*func
|
||||
#pass
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2021-03-04 14:22:36.063086424 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-ifunc/ifunc.exp 2021-03-04 14:35:12.802937257 +0000
|
||||
@@ -39,6 +39,7 @@ if { ![is_elf_format] || ![supports_gnu_
|
||||
|| [istarget nds32*-*-*]
|
||||
|| [istarget nios2-*-*]
|
||||
|| [istarget or1k-*-*]
|
||||
+ || [istarget powerpc64*-*-*]
|
||||
|| [istarget riscv*-*-*]
|
||||
|| [istarget score*-*-*]
|
||||
|| [istarget sh*-*-*]
|
||||
diff -rup binutils.orig/ld/testsuite/ld-powerpc/powerpc.exp binutils-2.35.1/ld/testsuite/ld-powerpc/powerpc.exp
|
||||
--- binutils.orig/ld/testsuite/ld-powerpc/powerpc.exp 2021-03-04 14:22:36.079086314 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/powerpc.exp 2021-03-04 14:43:18.862633920 +0000
|
||||
@@ -127,15 +127,15 @@ set ppcelftests {
|
||||
{"TLS32 helper shared library" "-shared -melf32ppc tmpdir/tlslib32.o" "" "" {}
|
||||
{} "libtlslib32.so"}
|
||||
{"TLS32 dynamic exec" "-melf32ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o tmpdir/libtlslib32.so" "" "" {}
|
||||
- {{readelf -WSsrl tlsexe32.r} {objdump -dr tlsexe32.d}
|
||||
+ {{objdump -dr tlsexe32.d}
|
||||
{objdump -sj.got tlsexe32.g} {objdump -sj.tdata tlsexe32.t}}
|
||||
"tlsexe32"}
|
||||
{"TLS32 dynamic exec (--no-tls-optimize)" "-melf32ppc --no-tls-optimize --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o tmpdir/libtlslib32.so" "" "" {}
|
||||
- {{readelf -WSsrl tlsexe32no.r} {objdump -dr tlsexe32no.d}
|
||||
+ {{objdump -dr tlsexe32no.d}
|
||||
{objdump -sj.got tlsexe32no.g} {objdump -sj.tdata tlsexe32.t}}
|
||||
"tlsexe32no"}
|
||||
{"TLS32 shared" "-shared -melf32ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o" "" "" {}
|
||||
- {{readelf -WSsrl tlsso32.r} {objdump -dr tlsso32.d}
|
||||
+ {{objdump -dr tlsso32.d}
|
||||
{objdump -sj.got tlsso32.g} {objdump -sj.tdata tlsso32.t}}
|
||||
"tls32.so"}
|
||||
{"TLS32 markers" "-melf32ppc" "" "-a32" {tlsmark32.s tlslib32.s}
|
||||
diff -rup binutils.orig/ld/testsuite/ld-powerpc/pr23937.d binutils-2.35.1/ld/testsuite/ld-powerpc/pr23937.d
|
||||
--- binutils.orig/ld/testsuite/ld-powerpc/pr23937.d 2021-03-04 14:22:36.081086301 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/pr23937.d 2021-03-04 14:43:54.830389790 +0000
|
||||
@@ -5,6 +5,4 @@
|
||||
|
||||
#...
|
||||
.* R_PPC64_IRELATIVE +10000180
|
||||
-#...
|
||||
-.*: 0+10000180 +20 IFUNC +LOCAL +DEFAULT .* magic
|
||||
#pass
|
||||
diff -rup binutils.orig/ld/testsuite/ld-powerpc/tlsexe32.r binutils-2.35.1/ld/testsuite/ld-powerpc/tlsexe32.r
|
||||
--- binutils.orig/ld/testsuite/ld-powerpc/tlsexe32.r 2021-03-04 14:22:36.078086321 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-powerpc/tlsexe32.r 2021-03-04 14:41:10.335506292 +0000
|
||||
@@ -22,9 +22,9 @@ Section Headers:
|
||||
+\[[ 0-9]+\] \.dynamic +DYNAMIC +[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 08 +WA +4 +0 +4
|
||||
+\[[ 0-9]+\] \.got +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000018 04 +WA +0 +0 +4
|
||||
+\[[ 0-9]+\] \.plt +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000004 00 +WA +0 +0 +4
|
||||
+#...
|
||||
+\[[ 0-9]+\] \.symtab +SYMTAB +.*
|
||||
+\[[ 0-9]+\] \.strtab +STRTAB +.*
|
||||
- +\[[ 0-9]+\] \.shstrtab +STRTAB +.*
|
||||
#...
|
||||
|
||||
Elf file type is EXEC \(Executable file\)
|
||||
@@ -81,6 +81,7 @@ Symbol table '\.symtab' contains [0-9]+
|
||||
.* SECTION +LOCAL +DEFAULT +10
|
||||
.* SECTION +LOCAL +DEFAULT +11
|
||||
.* SECTION +LOCAL +DEFAULT +12
|
||||
+#...
|
||||
.* FILE +LOCAL +DEFAULT +ABS .*
|
||||
.* NOTYPE +LOCAL +DEFAULT +ABS TLSMARK
|
||||
.* TLS +LOCAL +DEFAULT +8 gd4
|
||||
@@ -108,3 +109,4 @@ Symbol table '\.symtab' contains [0-9]+
|
||||
.* NOTYPE +GLOBAL +DEFAULT +12 _end
|
||||
.* TLS +GLOBAL +DEFAULT +9 gd0
|
||||
.* TLS +GLOBAL +DEFAULT +9 ie0
|
||||
+#pass
|
||||
--- binutils.orig/ld/testsuite/ld-elf/shared.exp 2021-03-04 16:23:57.812940326 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-elf/shared.exp 2021-03-04 16:25:56.214131486 +0000
|
||||
@@ -1443,7 +1443,7 @@ proc mix_pic_and_non_pic {xfails cflags
|
||||
}
|
||||
}
|
||||
|
||||
-mix_pic_and_non_pic [list "arm*-*-*" "aarch64*-*-*"] "" "" "pr19719"
|
||||
+mix_pic_and_non_pic [list "arm*-*-*"] "" "" "pr19719"
|
||||
mix_pic_and_non_pic [] "-fPIE" "-pie" "pr19719pie"
|
||||
|
||||
set AFLAGS_PIE ""
|
||||
--- binutils.orig/ld/testsuite/ld-ifunc/ifunc.exp 2021-03-04 16:23:57.745940783 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-ifunc/ifunc.exp 2021-03-04 16:27:54.230325278 +0000
|
||||
@@ -654,7 +654,7 @@ run_cc_link_tests [list \
|
||||
"$NOPIE_LDFLAGS -Wl,--no-as-needed,-z,now tmpdir/libpr23169b.so" \
|
||||
"-fPIE -O2 -g" \
|
||||
{ pr23169b.c pr23169c.c } \
|
||||
- {{readelf {--dyn-syms} pr23169c.rd} \
|
||||
+ { \
|
||||
{readelf {-r -W} pr23169b.rd}} \
|
||||
"pr23169f" \
|
||||
] \
|
||||
--- binutils.orig/ld/testsuite/ld-elfvsb/elfvsb.exp 2021-03-04 16:23:57.777940565 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-elfvsb/elfvsb.exp 2021-03-04 16:32:40.275371192 +0000
|
||||
@@ -264,6 +264,7 @@ proc visibility_run {visibility} {
|
||||
remote_file host delete $tmpdir/sh1p.o $tmpdir/sh2p.o $tmpdir/sh1np.o $tmpdir/sh2np.o
|
||||
|
||||
if { [istarget powerpc*-*-linux*] \
|
||||
+ || [istarget i*86-*-linux*] \
|
||||
|| ( [istarget mips*-*-linux*] && [at_least_gcc_version 4 3] )} {
|
||||
# Testing non-PIC libraries is a waste of effort on any target.
|
||||
# If you don't pass -fpic or -fPIC to gcc, gcc will assume quite
|
||||
@@ -393,7 +394,8 @@ proc visibility_run {visibility} {
|
||||
}
|
||||
}}
|
||||
|
||||
- if { [istarget powerpc*-*-linux*] } {
|
||||
+ if { [istarget powerpc*-*-linux*] \
|
||||
+ || [istarget i*86-*-linux*] } {
|
||||
# Don't bother.
|
||||
} else {
|
||||
# Now do the same tests again, but this time compile main.c PIC.
|
||||
--- binutils.orig/ld/testsuite/ld-i386/i386.exp 2021-03-04 16:23:57.836940162 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-i386/i386.exp 2021-03-04 16:36:26.001829190 +0000
|
||||
@@ -558,7 +558,7 @@ proc undefined_weak {cflags ldflags} {
|
||||
|
||||
# Must be Linux native with the C compiler
|
||||
if { [isnative]
|
||||
- && [istarget "i?86-*-linux*"]
|
||||
+ && [istarget "i?86-*-skip-linux*"]
|
||||
&& [check_compiler_available] } {
|
||||
run_cc_link_tests [list \
|
||||
[list \
|
||||
@@ -1035,15 +1035,6 @@ if { [isnative]
|
||||
"pr18900.out" \
|
||||
] \
|
||||
[list \
|
||||
- "Run pr19031" \
|
||||
- "$NOPIE_LDFLAGS tmpdir/pr19031.so" \
|
||||
- "-Wa,-mx86-used-note=yes" \
|
||||
- { pr19031b.S pr19031c.c } \
|
||||
- "pr19031" \
|
||||
- "pr19031.out" \
|
||||
- "$NOPIE_CFLAGS" \
|
||||
- ] \
|
||||
- [list \
|
||||
"Run got1" \
|
||||
"$NOPIE_LDFLAGS tmpdir/got1d.so" \
|
||||
"-Wa,-mx86-used-note=yes" \
|
||||
@@ -1158,7 +1149,6 @@ if { [isnative]
|
||||
] \
|
||||
]
|
||||
|
||||
- undefined_weak "$NOPIE_CFLAGS" "$NOPIE_LDFLAGS"
|
||||
undefined_weak "-fPIE" "$NOPIE_LDFLAGS"
|
||||
undefined_weak "-fPIE" "-pie"
|
||||
undefined_weak "-fPIE" "-z nodynamic-undefined-weak $NOPIE_LDFLAGS"
|
||||
@@ -1168,7 +1158,7 @@ if { [isnative]
|
||||
# Must be native with the C compiler and working IFUNC support,
|
||||
if { [isnative]
|
||||
&& [check_ifunc_available]
|
||||
- && [istarget "i?86-*-*"]
|
||||
+ && [istarget "i?86-*-skip-*"]
|
||||
&& [check_compiler_available] } {
|
||||
run_cc_link_tests [list \
|
||||
[list \
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/lto.exp 2021-03-04 16:23:57.759940688 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-plugin/lto.exp 2021-03-04 16:37:54.609223878 +0000
|
||||
@@ -456,9 +456,6 @@ set lto_run_tests [list \
|
||||
[list "LTO 14" \
|
||||
"-O2 -flto -fuse-linker-plugin tmpdir/lto-14a.o -Wl,--whole-archive tmpdir/liblto-14.a -Wl,--no-whole-archive tmpdir/lto-14b.o" "" \
|
||||
{dummy.c} "lto-14.exe" "lto-14.out" "" "c"] \
|
||||
- [list "LTO 15" \
|
||||
- "-O2 -flto -fuse-linker-plugin -Wl,--start-group tmpdir/liblto-15.a tmpdir/lto-15a.o -Wl,--end-group" "" \
|
||||
- {dummy.c} "lto-15.exe" "lto-15.out" "" "c"] \
|
||||
[list "PR ld/13066" \
|
||||
"-O2 -flto -fuse-linker-plugin" "" \
|
||||
{pr13066.cc} "pr13066.exe" "pr13066.out" "" "c++"] \
|
||||
--- binutils.orig/ld/testsuite/ld-scripts/crossref.exp 2021-03-04 16:23:57.743940797 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-scripts/crossref.exp 2021-03-04 16:42:02.687529206 +0000
|
||||
@@ -146,6 +146,8 @@ set exec_output [prune_warnings $exec_ou
|
||||
|
||||
regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
|
||||
|
||||
+setup_xfail i686-*-*
|
||||
+
|
||||
if [string match "" $exec_output] then {
|
||||
pass $test3
|
||||
} else {
|
||||
@@ -186,6 +188,8 @@ set exec_output [prune_warnings $exec_ou
|
||||
|
||||
regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
|
||||
|
||||
+setup_xfail i686-*-*
|
||||
+
|
||||
if [string match "" $exec_output] then {
|
||||
pass $test6
|
||||
} else {
|
||||
@@ -198,6 +202,8 @@ set exec_output [prune_warnings $exec_ou
|
||||
|
||||
regsub -all "(^|\n)($ld: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
|
||||
|
||||
+setup_xfail i686-*-*
|
||||
+
|
||||
if [string match "" $exec_output] then {
|
||||
fail $test7
|
||||
} else {
|
||||
--- binutils.orig/ld/testsuite/ld-shared/shared.exp 2021-03-04 16:23:57.794940449 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-shared/shared.exp 2021-03-04 16:45:21.198173157 +0000
|
||||
@@ -245,6 +245,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $
|
||||
setup_xfail "arm*-*-linux*"
|
||||
}
|
||||
setup_xfail "aarch64*-*-linux*"
|
||||
+ setup_xfail "i*86-*-linux*"
|
||||
shared_test shnp "shared (non PIC)" mainnp.o sh1np.o sh2np.o shared
|
||||
|
||||
# Test ELF shared library relocations with a non-zero load
|
||||
@@ -273,6 +274,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG" $
|
||||
setup_xfail "aarch64*-*-linux*"
|
||||
# Solaris defaults to -z text.
|
||||
setup_xfail "*-*-solaris2*"
|
||||
+ setup_xfail "i*86-*-linux*"
|
||||
shared_test shnp "shared (non PIC, load offset)" \
|
||||
mainnp.o sh1np.o sh2np.o shared \
|
||||
"-Wl,-T,$srcdir/$subdir/elf-offset.ld,--hash-style=sysv"
|
||||
@@ -326,6 +328,7 @@ if ![ld_compile "$CC $CFLAGS $SHCFLAG $p
|
||||
setup_xfail "arm*-*-linux*"
|
||||
}
|
||||
setup_xfail "aarch64*-*-linux*"
|
||||
+ setup_xfail "i*86-*-linux*"
|
||||
shared_test shmpnp "shared (PIC main, non PIC so)" mainp.o sh1np.o sh2np.o shared
|
||||
}
|
||||
} else {
|
||||
--- binutils.orig/ld/testsuite/ld-elfvsb/elfvsb.exp 2021-03-05 09:25:45.023250161 +0000
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-elfvsb/elfvsb.exp 2021-03-05 09:33:36.866978952 +0000
|
||||
@@ -347,7 +347,6 @@ proc visibility_run {visibility} {
|
||||
|| [ string match $visibility "protected_weak" ]
|
||||
|| [ string match $visibility "normal" ] } {
|
||||
setup_xfail "powerpc-*-linux*"
|
||||
- setup_xfail "s390x-*-linux*"
|
||||
if { [istarget sparc*-*-linux*] && [is_elf64 $tmpdir/mainnp.o] } {
|
||||
setup_xfail "sparc*-*-linux*"
|
||||
}
|
||||
|
|
|
|||
10
binutils-unexpected-form-20.patch
Normal file
10
binutils-unexpected-form-20.patch
Normal file
|
|
@ -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;
|
||||
|
||||
149
binutils.spec
149
binutils.spec
|
|
@ -38,8 +38,8 @@
|
|||
|
||||
Summary: A GNU collection of binary utilities
|
||||
Name: binutils%{?name_cross}%{?_with_debug:-debug}
|
||||
Version: 2.35.1
|
||||
Release: 34%{?dist}
|
||||
Version: 2.35.2
|
||||
Release: 9%{?dist}
|
||||
License: GPLv3+
|
||||
URL: https://sourceware.org/binutils
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ URL: https://sourceware.org/binutils
|
|||
|
||||
# Enable support for generating new dtags in the linker
|
||||
# Disable if it is necessary to use RPATH instead.
|
||||
%define enable_new_dtags 0
|
||||
%define enable_new_dtags 1
|
||||
|
||||
# Enable the compression of debug sections as default behaviour of the
|
||||
# assembler and linker. This option is disabled for now. The assembler and
|
||||
|
|
@ -154,8 +154,6 @@ Source2: binutils-2.19.50.0.1-output-format.sed
|
|||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
Patch00: binutils-2.35.1-update.patch
|
||||
|
||||
# Purpose: Use /lib64 and /usr/lib64 instead of /lib and /usr/lib in the
|
||||
# default library search path of 64-bit targets.
|
||||
# Lifetime: Permanent, but it should not be. This is a bug in the libtool
|
||||
|
|
@ -312,30 +310,73 @@ Patch29: binutils-duplicate-sections.patch
|
|||
# Lifetime: Permanent.
|
||||
Patch30: binutils-use-long-long.patch
|
||||
|
||||
# Purpose: Have the assembler automatically detect the use of DWARF-5
|
||||
# file numbers, and enable DWARF-5 support.
|
||||
# Lifetime: Fixed in 2.36.
|
||||
Patch31: binutils-gas-auto-dwarf-5.patch
|
||||
|
||||
# Purpose: Update the GOLD linker to support x86 .note.gnu.property sections.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch32: binutils-gold-gnu-properties.patch
|
||||
|
||||
# Purpose: Update the BFD library to handle DWARF-5 line number ranges.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch33: binutils-DWARF-5-line-number-parsing.patch
|
||||
Patch31: binutils-gold-gnu-properties.patch
|
||||
|
||||
# Purpose: Fix FAIL results in gas and ld testsuites.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch34: binutils-testsuite-failures.patch
|
||||
Patch32: binutils-testsuite-failures.patch
|
||||
|
||||
# Purpose: Remove a vulnerability in the smart_rename function.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch35: binutils-CVE-2021-20197.patch
|
||||
Patch33: binutils-CVE-2021-20197.patch
|
||||
|
||||
# Purpose: Add DWARF-5 sections to linker scripts.
|
||||
# Lifetime: Fixed in 2.37
|
||||
Patch36: binutils-ld-DWARF-5-sections.patch
|
||||
Patch34: binutils-ld-DWARF-5-sections.patch
|
||||
|
||||
# Purpose: Add support for Z instruction set extensions to the s390x
|
||||
# architecture.
|
||||
# Lifetime: Fixed in 2.37
|
||||
Patch35: binutils-s390-arch14-insns.patch
|
||||
|
||||
# Purpose: Fix merging empty ppc64le notes.
|
||||
# Lifetime: Fixed in 2.37
|
||||
Patch36: binutils-ppc64le-note-merge.patch
|
||||
|
||||
# Purpose: Stop readelf from warning about gaps in build notes.
|
||||
# Lifetime: Fixed in 2.37 ?
|
||||
Patch37: binutils-readelf-no-warn-gaps.patch
|
||||
|
||||
# Purpose: Stop readelf from complaining about an unexpected form 20.
|
||||
# Lifetime: Fixed in 2.37
|
||||
Patch38: binutils-unexpected-form-20.patch
|
||||
|
||||
# Purpose: Prevent an illegal memory access when reading relocations
|
||||
# for secondary reloc sections.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch39: binutils-CVE-2021-20284.patch
|
||||
|
||||
# Purpose: Bring in some bug fixes for Z14 support.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch40: binutils-extend-s390-arch14-support.patch
|
||||
|
||||
# Purpose: Fix excessive memory consumption when attempting to parse corrupt
|
||||
# DWARF debug information.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch41: binutils-CVE-2021-3487.patch
|
||||
|
||||
# Purpose: Fix illegal memory access when parsing corrupt ELF files.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch42: binutils-CVE-2020-35448.patch
|
||||
|
||||
# Purpose: Ensure that the 0'th entry in DWARF-5 directory tables generated
|
||||
# by gas contains the current working directory.
|
||||
# Lifetime: Fixed in 2.38
|
||||
Patch43: binutils-dwarf-5-dir0.patch
|
||||
|
||||
# Purpose: Fix ccache test failure introduced with 2.37
|
||||
# Lifetime: Fixed in 2.38.
|
||||
Patch44: binutils-gas-Use-the-directory-name-in-.file-0.patch
|
||||
|
||||
# Purpose: Add ability to show unicode characters to display tools
|
||||
# Lifetime: Fixed in 2.38.
|
||||
Patch45: binutils.unicode.patch
|
||||
|
||||
# Purpose: Add ability to warn about unicode characters in the assembler
|
||||
# Lifetime: Fixed in 2.38.
|
||||
Patch46: binutils-gas-multibyte-warnings.patch
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
|
@ -529,6 +570,16 @@ touch */configure
|
|||
%build
|
||||
echo target is %{binutils_target}
|
||||
|
||||
# Disable LTO on arm due to:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1918924
|
||||
%ifarch %{arm}
|
||||
%define enable_lto 0
|
||||
%endif
|
||||
|
||||
%if !0%{?enable_lto}
|
||||
%global _lto_cflags %{nil}
|
||||
%endif
|
||||
|
||||
%ifarch %{power64}
|
||||
export CFLAGS="$RPM_OPT_FLAGS -Wno-error"
|
||||
%else
|
||||
|
|
@ -588,6 +639,9 @@ export CFLAGS="$CFLAGS -O0 -ggdb2 -Wno-error -D_FORTIFY_SOURCE=0"
|
|||
|
||||
# BZ 1541027 - include the linker flags from redhat-rpm-config as well.
|
||||
export LDFLAGS=$RPM_LD_FLAGS
|
||||
%if %{enable_new_dtags}
|
||||
export LDFLAGS="$LD_FLAGS -Wl,--enable-new-dtags"
|
||||
%endif
|
||||
|
||||
%if %{with clang}
|
||||
%define _with_cc_clang 1
|
||||
|
|
@ -639,6 +693,7 @@ popd
|
|||
%endif
|
||||
%if %{enable_new_dtags}
|
||||
--enable-new-dtags \
|
||||
--disable-rpath \
|
||||
%endif
|
||||
%if %{default_compress_debug}
|
||||
--enable-compressed-debug-sections=all \
|
||||
|
|
@ -720,6 +775,10 @@ make prefix=%{buildroot}%{_prefix} infodir=%{buildroot}%{_infodir} install-info
|
|||
%set_build_flags
|
||||
%make_build CFLAGS="-g -fPIC $RPM_OPT_FLAGS" -C libiberty
|
||||
|
||||
%if %{enable_new_dtags}
|
||||
export LDFLAGS="$RPM_LD_FLAGS -Wl,--enable-new-dtags"
|
||||
%endif
|
||||
|
||||
# Rebuild libbfd.a with -fPIC.
|
||||
# Without the hidden visibility the 3rd party shared libraries would export
|
||||
# the bfd non-stable ABI.
|
||||
|
|
@ -922,6 +981,60 @@ exit 0
|
|||
|
||||
#----------------------------------------------------------------------------
|
||||
%changelog
|
||||
* Fri Nov 19 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-9
|
||||
- Add ability to warn about multibyte characters in the assembler. (#2018848)
|
||||
|
||||
* Tue Nov 09 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-8
|
||||
- Add ability to show unicode characters to display tools.
|
||||
|
||||
* Mon Nov 08 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-7
|
||||
- Add upstream patch to use the directory name in .file 0, fixes ccache FTBFS (#1996936)
|
||||
|
||||
* Thu Sep 16 2021 Tom Stellard <tstellar@redhat.com> - 2.35.2-6
|
||||
- Disable LTO on arm. (#1918924)
|
||||
|
||||
* Tue Aug 17 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-5
|
||||
- Enable the use of new dtags. (#1992736)
|
||||
|
||||
* Mon Aug 09 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-4
|
||||
- Ensure that dir[0] contains pwd in gas generated DWARF-5 directory tables. (#1966987)
|
||||
|
||||
* Mon Apr 19 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-3
|
||||
- Fix an illegal memory access when parsing a corrupt ELF file. (#1950481)
|
||||
|
||||
* Tue Apr 13 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-2
|
||||
- Fix excessive memory consumption parsing corrupt DWARF information. (#1947969)
|
||||
|
||||
* Tue Mar 30 2021 Nick Clifton <nickc@redhat.com> - 2.35.2-1
|
||||
- Rebase to GNU Binutils 2.35.2.
|
||||
- Retire: binutils-2.35.1-update.patch
|
||||
- Retire: binutils-gas-auto-dwarf-5.patch
|
||||
- Retire: binutils-DWARF-5-line-number-parsing.patch
|
||||
|
||||
* Thu Mar 25 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-42
|
||||
- Extend support for s390 Z14 instructions. (#1898533)
|
||||
|
||||
* Fri Mar 12 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-41
|
||||
- Prevent an illegal memory access when reading relocations for secondary reloc sections. (#1937784)
|
||||
|
||||
* Thu Mar 11 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-40
|
||||
- Extend vulnerability fix yet again. (#1925779)
|
||||
|
||||
* Fri Mar 05 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-39
|
||||
- Fix more testsuite failures.
|
||||
|
||||
* Mon Feb 22 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-38
|
||||
- Fix another problem with note merging.
|
||||
|
||||
* Mon Feb 22 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-37
|
||||
- Stop readelf from warning about gaps in notes. (#1931356)
|
||||
|
||||
* Fri Feb 19 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-36
|
||||
- Fix merging ppc64le notes. (#1928936)
|
||||
|
||||
* Fri Feb 19 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-35
|
||||
- Add support for the Z extensions to the s390x architecture.
|
||||
|
||||
* Mon Feb 08 2021 Nick Clifton <nickc@redhat.com> - 2.35.1-34
|
||||
- Extend vulnerability fix again. (#1925779)
|
||||
|
||||
|
|
|
|||
37455
binutils.unicode.patch
Normal file
37455
binutils.unicode.patch
Normal file
File diff suppressed because it is too large
Load diff
2
sources
2
sources
|
|
@ -1,2 +1,2 @@
|
|||
SHA512 (binutils-2.35.1.tar.xz) = 94ff72708403413b70b247f3af4099ebaa882b6659249869f1ed9941a0f1912e313f08357d470f9fd2359e7f5e5b0eb86285e5eaf883fa8187789d6b1bd304eb
|
||||
SHA512 (binutils-2.35.2.tar.xz) = 9974ede5978d32e0d68fef23da48fa00bd06b0bff7ec45b00ca075c126d6bbe0cf2defc03ecc3f17bc6cc85b64271a13009c4049d7ba17de26e84e3a6e2c0348
|
||||
SHA512 (binutils-2.19.50.0.1-output-format.sed) = 2f8686b0c8af13c98cda056824c2820416f6e2d003f70b78ccf5314525b9ee3684d421dfa83e638a2d42d06ea4d4bdaf5226b64d6ec26f7ff59c44ffb2a23dd2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue