Print this page
15254 %ymm registers not restored after signal handler
15367 x86 getfpregs() summons corrupting %xmm ghosts
15333 want x86 /proc xregs support (libc_db, libproc, mdb, etc.)
15336 want libc functions for extended ucontext_t
15334 want ps_lwphandle-specific reg routines
15328 FPU_CW_INIT mistreats reserved bit
15335 i86pc fpu_subr.c isn't really platform-specific
15332 setcontext(2) isn't actually noreturn
15331 need <sys/stdalign.h>
Change-Id: I7060aa86042dfb989f77fc3323c065ea2eafa9ad
Conflicts:
    usr/src/uts/common/fs/proc/prcontrol.c
    usr/src/uts/intel/os/archdep.c
    usr/src/uts/intel/sys/ucontext.h
    usr/src/uts/intel/syscall/getcontext.c

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libproc/common/Pcontrol.h
          +++ new/usr/src/lib/libproc/common/Pcontrol.h
↓ open down ↓ 19 lines elided ↑ open up ↑
  20   20   */
  21   21  /*
  22   22   * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   */
  25   25  /*
  26   26   * Copyright 2012 DEY Storage Systems, Inc.  All rights reserved.
  27   27   * Copyright (c) 2013 by Delphix. All rights reserved.
  28   28   * Copyright 2018 Joyent, Inc.
  29   29   * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
  30      - * Copyright 2021 Oxide Computer Company
       30 + * Copyright 2023 Oxide Computer Company
  31   31   */
  32   32  
  33   33  #ifndef _PCONTROL_H
  34   34  #define _PCONTROL_H
  35   35  
  36   36  /*
  37   37   * Implemention-specific include file for libproc process management.
  38   38   * This is not to be seen by the clients of libproc.
  39   39   */
  40   40  
↓ open down ↓ 96 lines elided ↑ open up ↑
 137  137          off64_t map_offset;     /* offset into core file (if core) */
 138  138          int map_relocate;       /* associated file_map needs to be relocated */
 139  139  } map_info_t;
 140  140  
 141  141  typedef struct lwp_info {       /* per-lwp information from core file */
 142  142          list_node_t lwp_list;   /* linked list */
 143  143          lwpid_t lwp_id;         /* lwp identifier */
 144  144          lwpsinfo_t lwp_psinfo;  /* /proc/<pid>/lwp/<lwpid>/lwpsinfo data */
 145  145          lwpstatus_t lwp_status; /* /proc/<pid>/lwp/<lwpid>/lwpstatus data */
 146  146          char lwp_name[THREAD_NAME_MAX];
      147 +        prxregset_t *lwp_xregs; /* /proc/<pid>/lwp/<lwpid>/xregs data */
      148 +        size_t lwp_xregsize;
 147  149  #if defined(sparc) || defined(__sparc)
 148  150          gwindows_t *lwp_gwins;  /* /proc/<pid>/lwp/<lwpid>/gwindows data */
 149      -        prxregset_t *lwp_xregs; /* /proc/<pid>/lwp/<lwpid>/xregs data */
 150  151          int64_t *lwp_asrs;      /* /proc/<pid>/lwp/<lwpid>/asrs data */
 151  152  #endif
 152  153  } lwp_info_t;
 153  154  
 154  155  typedef struct fd_info {
 155  156          list_node_t fd_list;    /* linked list */
 156  157          prfdinfo_t *fd_info;    /* fd info */
 157  158  } fd_info_t;
 158  159  
 159  160  typedef struct core_info {      /* information specific to core files */
↓ open down ↓ 131 lines elided ↑ open up ↑
 291  292  extern  char    *Pzonepath(struct ps_prochandle *, const char *, char *,
 292  293          size_t);
 293  294  extern  fd_info_t *Pfd2info(struct ps_prochandle *, int);
 294  295  
 295  296  extern  char    *Pfindmap(struct ps_prochandle *, map_info_t *, char *,
 296  297          size_t);
 297  298  
 298  299  extern  int     Padd_mapping(struct ps_prochandle *, off64_t, file_info_t *,
 299  300      prmap_t *);
 300  301  extern  void    Psort_mappings(struct ps_prochandle *);
      302 +extern  struct ps_lwphandle *Lfind(struct ps_prochandle *, lwpid_t);
      303 +extern  int     Lstopstatus(struct ps_lwphandle *, long, uint_t);
 301  304  
 302  305  extern char     procfs_path[PATH_MAX];
 303  306  
 304  307  /*
 305  308   * Architecture-dependent definition of the breakpoint instruction.
 306  309   */
 307  310  #if defined(sparc) || defined(__sparc)
 308  311  #define BPT     ((instr_t)0x91d02001)
 309  312  #elif defined(__i386) || defined(__amd64)
 310  313  #define BPT     ((instr_t)0xcc)
↓ open down ↓ 13 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX