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,32 **** * 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) 2013 by Delphix. All rights reserved. */ #ifndef _PCONTROL_H #define _PCONTROL_H --- 22,32 ---- * 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) 2015, Joyent, Inc. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _PCONTROL_H #define _PCONTROL_H
*** 90,112 **** 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 */ 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_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 */ 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 */ --- 90,114 ---- 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[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 */