2362N/A * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. 0N/A * Redistribution and use in source and binary forms, with or without 0N/A * modification, are permitted provided that the following conditions 0N/A * - Redistributions of source code must retain the above copyright 0N/A * notice, this list of conditions and the following disclaimer. 0N/A * - Redistributions in binary form must reproduce the above copyright 0N/A * notice, this list of conditions and the following disclaimer in the 0N/A * documentation and/or other materials provided with the distribution. 2362N/A * - Neither the name of Oracle nor the names of its 0N/A * contributors may be used to endorse or promote products derived 0N/A * from this software without specific prior written permission. 0N/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 0N/A * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 0N/A * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 0N/A * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 0N/A * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 0N/A * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 0N/A * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 0N/A * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 0N/A * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 0N/A * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 0N/A * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4378N/A * This source code is provided to illustrate the usage of a given feature 4378N/A * or technique and has been deliberately simplified. Additional steps 4378N/A * required for a production-quality application, such as security checks, 4378N/A * input validation and proper error handling, might not be present in 0N/A/* Functionality for checking hprof format=b output. */ 0N/A/* ONLY used with logflags=4. */ 0N/A/* Verifies and write a verbose textual version of a format=b file. 0N/A * Textual output file is gdata->checkfilename, fd is gdata->check_fd. 0N/A * Buffer is in gdata too, see gdata->check* variables. 0N/A * Could probably be isolated to a separate library or utility. 0N/A/* For map from HPROF_UTF8 to a string */ 0N/A/* Field information */ 0N/A/* Class information map from class ID (ClassIndex) to class information */ 0N/A/* Read raw bytes from the file image, update the pointer */ 0N/A/* Read various sized elements, properly converted from big to right endian. 0N/A * File will contain big endian format. 0N/A/* System error routine */ 0N/A/* Flush check buffer */ 0N/A/* Read out a given typed element */ 0N/A/* Move arbitrary byte stream into gdata->check_fd */ 0N/A/* Printf for gdata->check_fd */ 0N/A/* Printf of an element for gdata->check_fd */ 0N/A/* Printf of a string for gdata->check_fd */ 0N/A/* Printf of a utf8 id for gdata->check_fd */ 0N/A/* Add a instance field information to this cmap. */ 0N/A/* LookupTable callback for cmap entry cleanup */ 0N/A/* Case label for a switch on hprof heap dump elements */ 0N/A/* Given the heap dump data and the utf8 map, check/write the heap dump. */ 0N/A /* First pass over heap records just fills in the CmapInfo table */ 0N/A /* Scan again once we have our cmap */ 0N/A " trace_serial_num=%u\n",
0N/A " pr=0x%x, re1=0x%x, re2=0x%x\n",
0N/A " cid=0x%x, nbytes=%d\n",
0N/A /* This is a packed set of bytes for the instance fields */ 0N/A check_printf(
"H#%d@%d %s: id=0x%x, trace_serial_num=%u, nelems=%d, eid=0x%x\n",
0N/A "nelems=%d, ty=%d\n",
0N/A/* LookupTable cleanup callback for utab */ 0N/A/* Check all the heap tags in a heap dump */ 0N/A /* Walk the tags, assumes UTF8 tags are defined before used */ 0N/A /* Create entry in umap */ 0N/A " id=0x%x, trace_serial_num=%u, name_id=0x%x\n",
0N/A " class_serial_num=%u, lineno=%d\n",
0N/A " thread_serial_num=%u, nelems=%d [",
0N/A " nblive=%d, nilive=%d, tbytes=(%d,%d)," 0N/A " tinsts=(%d,%d), num_elements=%d\n",
0N/A " trace_serial_num=%u, nblive=%d, nilive=%d," 0N/A " tbytes=%d, tinsts=%d\n",
0N/A " nblive=%d, nilive=%d, tbytes=(%d,%d)," 0N/A " tinsts=(%d,%d)\n",
0N/A " id=0x%x, trace_serial_num=%u, ",
0N/A " gr=0x%x, gn=0x%x\n",
0N/A " trace_count=%d\n",
0N/A/* Read the entire file into memory */ 0N/A /* Read the entire file image into memory */ 0N/A/* ------------------------------------------------------------------ */