Print this page
OS-5057 libproc file_info_t file_pname too short
Reviewed by: Cody Mello <cody.mello@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
OS-3780 libproc could know about .gnu_debuglink for remote symbol tables
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>

@@ -22,11 +22,11 @@
  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 /*
  * Copyright 2012 DEY Storage Systems, Inc.  All rights reserved.
- * Copyright (c) 2014, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2015, Joyent, Inc. All rights reserved.
  * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #ifndef _PCONTROL_H
 #define _PCONTROL_H

@@ -90,23 +90,25 @@
         size_t  sym_count;      /* number of symbols in each sorted list */
 } sym_tbl_t;
 
 typedef struct file_info {      /* symbol information for a mapped file */
         plist_t file_list;      /* linked list */
-        char    file_pname[PRMAPSZ];    /* name from prmap_t */
+        char    file_pname[PATH_MAX];   /* name from prmap_t */
         struct map_info *file_map;      /* primary (text) mapping */
         int     file_ref;       /* references from map_info_t structures */
         int     file_fd;        /* file descriptor for the mapped file */
+        int     file_dbgfile;   /* file descriptor for the debug file */
         int     file_init;      /* 0: initialization yet to be performed */
         GElf_Half file_etype;   /* ELF e_type from ehdr */
         GElf_Half file_class;   /* ELF e_ident[EI_CLASS] from ehdr */
         rd_loadobj_t *file_lo;  /* load object structure from rtld_db */
         char    *file_lname;    /* load object name from rtld_db */
         char    *file_lbase;    /* pointer to basename of file_lname */
         char    *file_rname;    /* resolved on-disk object pathname */
         char    *file_rbase;    /* pointer to basename of file_rname */
         Elf     *file_elf;      /* ELF handle so we can close */
+        Elf     *file_dbgelf;   /* Debug ELF handle so we can close */
         void    *file_elfmem;   /* data for faked-up ELF handle */
         sym_tbl_t file_symtab;  /* symbol table */
         sym_tbl_t file_dynsym;  /* dynamic symbol table */
         uintptr_t file_dyn_base;        /* load address for ET_DYN files */
         uintptr_t file_plt_base;        /* base address for PLT */