]> granicus.if.org Git - strace/commitdiff
linux/ia64: remove IA-32 mode support
authorEugene Syromyatnikov <evgsyr@gmail.com>
Sun, 11 Feb 2018 21:50:38 +0000 (22:50 +0100)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 12 Feb 2018 11:42:04 +0000 (11:42 +0000)
There is no compat support in strace and there are no systems
within reach that would allow to test it.

* linux/ia64/arch_regs.c (IA64_PSR_IS, ia64_ia32mode): Remove.
* linux/ia64/get_error.c (get_error): Remove ia64_ia32mode branch.
* linux/ia64/get_scno.c (arch_get_scno): Likewise.
* linux/ia64/get_syscall_args.c (get_syscall_args): Likewise.
* linux/ia64/set_error.c (arch_set_error, arch_set_success): Likewise.
* linux/ia64/set_scno.c (arch_set_scno): Likewise.

NEWS
linux/ia64/arch_regs.c
linux/ia64/get_error.c
linux/ia64/get_scno.c
linux/ia64/get_syscall_args.c
linux/ia64/set_error.c
linux/ia64/set_scno.c

diff --git a/NEWS b/NEWS
index 615635f57fc679235cff25e57cf13f86a707d9a9..8225471198bd95bac4f427aeb20f036580b5fce7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -61,6 +61,8 @@ Noteworthy changes in release ?.?? (????-??-??)
     build now.  Use --enable-mpers=check to revert to the old behaviour.
   * Build-time requirement for the mpers support has been lowered from gawk 4
     to gawk 3.
+  * Removed incomplete and unused support for IA-32 mode on the IA-64
+    architecture.
 
 Noteworthy changes in release 4.20 (2017-11-13)
 ===============================================
index deec1769d18e6b2a3b5d650e6a2713ac97e912cc..b79918e3ec33ad346162e3e68d56c4fb0cdeb1c0 100644 (file)
@@ -1,8 +1,5 @@
 static struct pt_all_user_regs ia64_regs;
 unsigned long *const ia64_frame_ptr = &ia64_regs.gr[12];
 
-#define IA64_PSR_IS    (1UL << 34)
-#define ia64_ia32mode  (ia64_regs.cr_ipsr & IA64_PSR_IS)
-
 #define ARCH_REGS_FOR_GETREGS ia64_regs
 #define ARCH_PC_REG ia64_regs.br[0]
index 41cae92e708cdc44b46fdedfe4945630a180cff0..611107792667dd47e7b624f47b029828e3a50c07 100644 (file)
@@ -3,20 +3,10 @@
 static void
 get_error(struct tcb *tcp, const bool check_errno)
 {
-       if (ia64_ia32mode) {
-               int err = ia64_regs.gr[8];
-               if (check_errno && is_negated_errno(err)) {
-                       tcp->u_rval = -1;
-                       tcp->u_error = -err;
-               } else {
-                       tcp->u_rval = err;
-               }
+       if (ia64_regs.gr[10]) {
+               tcp->u_rval = -1;
+               tcp->u_error = ia64_regs.gr[8];
        } else {
-               if (ia64_regs.gr[10]) {
-                       tcp->u_rval = -1;
-                       tcp->u_error = ia64_regs.gr[8];
-               } else {
-                       tcp->u_rval = ia64_regs.gr[8];
-               }
+               tcp->u_rval = ia64_regs.gr[8];
        }
 }
index 0ddc17a930c8859d69540f3740505b2afbbe8981..88f2cad5c43022f2e68b38c5ec2a7a9d295e4b21 100644 (file)
@@ -2,6 +2,6 @@
 static int
 arch_get_scno(struct tcb *tcp)
 {
-       tcp->scno = ia64_ia32mode ? ia64_regs.gr[0] : ia64_regs.gr[15];
+       tcp->scno = ia64_regs.gr[15];
        return 1;
 }
index 80f7404e046e9bae13cbfa820b0dda6744a4c304..ad73c547c97e514299bb5ca85a9abbfcc31486a7 100644 (file)
@@ -4,32 +4,23 @@
 static int
 get_syscall_args(struct tcb *tcp)
 {
-       if (!ia64_ia32mode) {
-               unsigned long *rbs_end =
-                       (unsigned long *) ia64_regs.ar[PT_AUR_BSP];
-               unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
-               unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
-               unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
-               unsigned int i;
+       unsigned long *rbs_end =
+               (unsigned long *) ia64_regs.ar[PT_AUR_BSP];
+       unsigned long sof = (ia64_regs.cfm >> 0) & 0x7f;
+       unsigned long sol = (ia64_regs.cfm >> 7) & 0x7f;
+       unsigned long *out0 = ia64_rse_skip_regs(rbs_end, -sof + sol);
+       unsigned int i;
 
-               for (i = 0; i < tcp->s_ent->nargs; ++i) {
-                       if (umove(tcp,
-                                 (unsigned long) ia64_rse_skip_regs(out0, i),
-                                 &tcp->u_arg[i]) < 0) {
-                               if (errno == EPERM)
-                                       tcp->u_arg[i] = 0;
-                               else
-                                       return -1;
-                       }
+       for (i = 0; i < tcp->s_ent->nargs; ++i) {
+               if (umove(tcp,
+                         (unsigned long) ia64_rse_skip_regs(out0, i),
+                         &tcp->u_arg[i]) < 0) {
+                       if (errno == EPERM)
+                               tcp->u_arg[i] = 0;
+                       else
+                               return -1;
                }
-       } else {
-               /* truncate away IVE sign-extension */
-               tcp->u_arg[0] = 0xffffffff & ia64_regs.gr[11]; /* EBX */
-               tcp->u_arg[1] = 0xffffffff & ia64_regs.gr[ 9]; /* ECX */
-               tcp->u_arg[2] = 0xffffffff & ia64_regs.gr[10]; /* EDX */
-               tcp->u_arg[3] = 0xffffffff & ia64_regs.gr[14]; /* ESI */
-               tcp->u_arg[4] = 0xffffffff & ia64_regs.gr[15]; /* EDI */
-               tcp->u_arg[5] = 0xffffffff & ia64_regs.gr[13]; /* EBP */
        }
+
        return 1;
 }
index c566b63860ff66f25878fc25e11d11b54b05d0d7..693449973f39f87ef5a1b6bccca2197cd0808e7d 100644 (file)
@@ -1,12 +1,9 @@
 static int
 arch_set_error(struct tcb *tcp)
 {
-       if (ia64_ia32mode) {
-               ia64_regs.gr[8] = -tcp->u_error;
-       } else {
-               ia64_regs.gr[8] = tcp->u_error;
-               ia64_regs.gr[10] = -1;
-       }
+       ia64_regs.gr[8] = tcp->u_error;
+       ia64_regs.gr[10] = -1;
+
        return set_regs(tcp->pid);
 }
 
@@ -14,8 +11,7 @@ static int
 arch_set_success(struct tcb *tcp)
 {
        ia64_regs.gr[8] = tcp->u_rval;
-       if (!ia64_ia32mode) {
-               ia64_regs.gr[10] = 0;
-       }
+       ia64_regs.gr[10] = 0;
+
        return set_regs(tcp->pid);
 }
index 1af7b025ab64304276a8494d9e4249eb79349fe4..8e0f9c453b62a883d6c01301de2971530e2eef16 100644 (file)
@@ -1,10 +1,7 @@
 static int
 arch_set_scno(struct tcb *tcp, kernel_ulong_t scno)
 {
-       if (ia64_ia32mode)
-               ia64_regs.gr[0] = scno;
-       else
-               ia64_regs.gr[15] = scno;
+       ia64_regs.gr[15] = scno;
 
        return set_regs(tcp->pid);
 }