2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 2N/A * Since we don't want to use the old-school procfs interfaces, we use the 2N/A * new-style data structures we already have to construct the old-style 2N/A * data structures. We include these data structures in core files for 2N/A * backward compatibility. 2N/A * Note headers are the same regardless of the data model of the 2N/A * ELF file; we arbitrarily use Elf64_Nhdr here. 2N/A * Legacy core files don't contain information about zombie LWPs. 2N/A * We use Plwp_iter_all() so that we get the lwpsinfo_t structure 2N/A * If lsp is NULL this indicates that this is a zombie LWP in 2N/A * which case we dump only the lwpsinfo_t structure and none of 2N/A * the other ancillary LWP state data. 2N/A#
endif /* __sparcv9 */ 2N/A * Write the symtab out first so we can correctly 2N/A * set the sh_link field in the CTF section header. 2N/A * symindex will be 0 if there is no corresponding 2N/A * symbol table section. 2N/A * Write the CTF data that we've read out of the 2N/A * file itself into the core file. 2N/A * If we can't read out part of the victim's address 2N/A * space for some reason ignore that failure and try to 2N/A * emit a partial core file without that mapping's data. 2N/A * As in the kernel, we mark these failures with the 2N/A * PF_SUNW_FAILURE flag and store the errno where the 2N/A * mapping would have been. 2N/A * Preemptively stick the name of the shstrtab in the string table. 2N/A * Dump all the strings that we used being sure we include the 2N/A * terminating null character. 2N/A * Don't explicity stop the process; that's up to the consumer. 2N/A * Cache the mappings and other useful data. 2N/A * There are two PT_NOTE program headers for ancillary data, and 2N/A * one for each mapping. 2N/A * The core file contents may required zero section headers, but if we 2N/A * overflow the 16 bits allotted to the program header count in the ELF 2N/A * header, we'll need that program header at index zero. 2N/A * Set up the ELF header. 2N/A * Write the zero indexed section if it exists. 2N/A * Construct the old-style note header and section. 2N/A * Construct the new-style note header and section. 2N/A * Only dump out non-zero sized LDT notes. 2N/A#
endif /* __i386 || __amd64 */ 2N/A * Construct the headers for each mapping and write out its data 2N/A * if the content parameter indicates that it should be present 2N/A * Wipe out anything we may have written if there was an error. 2N/A "stack",
/* CC_CONTENT_STACK */ 2N/A "heap",
/* CC_CONTENT_HEAP */ 2N/A "shfile",
/* CC_CONTENT_SHFILE */ 2N/A "shanon",
/* CC_CONTENT_SHANON */ 2N/A "text",
/* CC_CONTENT_TEXT */ 2N/A "data",
/* CC_CONTENT_DATA */ 2N/A "rodata",
/* CC_CONTENT_RODATA */ 2N/A "anon",
/* CC_CONTENT_ANON */ 2N/A "shm",
/* CC_CONTENT_SHM */ 2N/A "ism",
/* CC_CONTENT_ISM */ 2N/A "dism",
/* CC_CONTENT_DISM */ 2N/A "ctf",
/* CC_CONTENT_CTF */ 2N/A "symtab",
/* CC_CONTENT_SYMTAB */ 2N/A for (i = 0; x != 0; i++)