Author: jhb
Date: Wed Mar  9 18:38:30 2016
New Revision: 296570
URL: https://svnweb.freebsd.org/changeset/base/296570

Log:
  Fix reporting of the CloudABI ABI in kdump.
  
  - Advertise the word size for CloudABI ABIs via the SV_LP64 flag.  All of
    the other ABIs include either SV_ILP32 or SV_LP64.
  - Fix kdump to not assume a 32-bit ABI if the ABI flags field is non-zero
    but SV_LP64 isn't set.  Instead, only assume a 32-bit ABI if SV_ILP32 is
    set and fallback to the unknown value of "00" if neither SV_LP64 nor
    SV_ILP32 is set.
  
  Reviewed by:  kib, ed
  Differential Revision:        https://reviews.freebsd.org/D5560

Modified:
  head/sys/amd64/cloudabi64/cloudabi64_sysvec.c
  head/sys/arm64/cloudabi64/cloudabi64_sysvec.c
  head/usr.bin/kdump/kdump.c

Modified: head/sys/amd64/cloudabi64/cloudabi64_sysvec.c
==============================================================================
--- head/sys/amd64/cloudabi64/cloudabi64_sysvec.c       Wed Mar  9 18:38:03 
2016        (r296569)
+++ head/sys/amd64/cloudabi64/cloudabi64_sysvec.c       Wed Mar  9 18:38:30 
2016        (r296570)
@@ -143,7 +143,7 @@ static struct sysentvec cloudabi64_elf_s
        .sv_usrstack            = USRSTACK,
        .sv_stackprot           = VM_PROT_READ | VM_PROT_WRITE,
        .sv_copyout_strings     = cloudabi64_copyout_strings,
-       .sv_flags               = SV_ABI_CLOUDABI | SV_CAPSICUM,
+       .sv_flags               = SV_ABI_CLOUDABI | SV_CAPSICUM | SV_LP64,
        .sv_set_syscall_retval  = cloudabi64_set_syscall_retval,
        .sv_fetch_syscall_args  = cloudabi64_fetch_syscall_args,
        .sv_syscallnames        = cloudabi64_syscallnames,

Modified: head/sys/arm64/cloudabi64/cloudabi64_sysvec.c
==============================================================================
--- head/sys/arm64/cloudabi64/cloudabi64_sysvec.c       Wed Mar  9 18:38:03 
2016        (r296569)
+++ head/sys/arm64/cloudabi64/cloudabi64_sysvec.c       Wed Mar  9 18:38:30 
2016        (r296570)
@@ -144,7 +144,7 @@ static struct sysentvec cloudabi64_elf_s
        .sv_usrstack            = USRSTACK,
        .sv_stackprot           = VM_PROT_READ | VM_PROT_WRITE,
        .sv_copyout_strings     = cloudabi64_copyout_strings,
-       .sv_flags               = SV_ABI_CLOUDABI | SV_CAPSICUM,
+       .sv_flags               = SV_ABI_CLOUDABI | SV_CAPSICUM | SV_LP64,
        .sv_set_syscall_retval  = cloudabi64_set_syscall_retval,
        .sv_fetch_syscall_args  = cloudabi64_fetch_syscall_args,
        .sv_syscallnames        = cloudabi64_syscallnames,

Modified: head/usr.bin/kdump/kdump.c
==============================================================================
--- head/usr.bin/kdump/kdump.c  Wed Mar  9 18:38:03 2016        (r296569)
+++ head/usr.bin/kdump/kdump.c  Wed Mar  9 18:38:30 2016        (r296570)
@@ -529,12 +529,11 @@ abidump(struct ktr_header *kth)
                break;
        }
 
-       if (flags != 0) {
-               if (flags & SV_LP64)
-                       arch = "64";
-               else
-                       arch = "32";
-       } else
+       if (flags & SV_LP64)
+               arch = "64";
+       else if (flags & SV_ILP32)
+               arch = "32";
+       else
                arch = "00";
 
        printf("%s%s  ", abi, arch);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to