libproc_impl.c revision 4204
4204N/A * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 2796N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2796N/A * This code is free software; you can redistribute it and/or modify it 2796N/A * under the terms of the GNU General Public License version 2 only, as 2796N/A * published by the Free Software Foundation. 2796N/A * This code is distributed in the hope that it will be useful, but WITHOUT 2796N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 2796N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 2796N/A * version 2 for more details (a copy is included in the LICENSE file that 2796N/A * You should have received a copy of the GNU General Public License version 2796N/A * 2 along with this work; if not, write to the Free Software Foundation, 2796N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2796N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2796N/A // initialize the thread_db library 2796N/A // do the "derived class" clean-up first 2796N/A // check whether we have got an ELF file. /proc/<pid>/map 2796N/A // gives out all file mappings and not just shared objects 2796N/A // even if symbol table building fails, we add the lib_info. 2796N/A // This is because we may need to read from the ELF file for core file 2796N/A // address read functionality. lookup_symbol checks for NULL symtab. 2796N/A// lookup for a specific symbol 2796N/A // ignore object_name. search in all libraries 2796N/A // FIXME: what should we do with object_name?? The library names are obtained 2796N/A // by parsing /proc/<pid>/maps, which may not be the same as object_name. 2796N/A // What we need is a utility to map object_name to real file name, something 2796N/A // now, we just ignore object_name and do a global search for the symbol. 2796N/A// add a thread to ps_prochandle 2796N/A // add new thread to the list 2796N/A// struct used for client data from thread_db callback 2796N/A// callback function for libthread_db 2796N/A// read thread_info using libthread_db 2796N/A // we use libthread_db iterator to iterate thru list of threads. 2796N/A// get lwp_id of n'th thread 2796N/A// get number of shared objects 2796N/A// get base address of a lib 2796N/A//-------------------------------------------------------------------------- 2796N/A// ps_pglobal_lookup() looks up the symbol sym_name in the symbol table 2796N/A// of the load object object_name in the target process identified by ph. 2796N/A// It returns the symbol's value as an address in the target process in 2796N/A// read "size" bytes info "buf" from address "addr" 2796N/A// write "size" bytes of data to debuggee at address "addr" 2796N/A// fill in ptrace_lwpinfo for lid 2796N/A// needed for when libthread_db is compiled with TD_DEBUG defined 2796N/A// ------------------------------------------------------------------------ 2796N/A// Functions below this point are not yet implemented. They are here only 2796N/A// to make the linker happy.