1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22
23 /*
24 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
26 */
27
28 /* Copyright (c) 1988 AT&T */
29 /* All Rights Reserved */
30
31
32 #pragma ident "%Z%%M% %I% %E% SMI"
33
34 #include <stdlib.h>
35 #include <unistd.h>
36 #include "symint.h"
37 #include "debug.h"
38
39 /*
40 * symintFcns.c -- symbol information interface routines.
41 *
42 * these routines form a symbol information access
43 * interface, for the profilers to get at object file
44 * information. this interface was designed to aid
45 * in the COFF to ELF conversion of prof, lprof and friends.
46 *
47 */
48
49
50 /*
51 * _symintClose(profPtr)
52 * profPtr - structure allocated by _symintOpen(),
53 * indicating structures to free and
54 * object file to close.
55 *
56 * specifically, elf_end() and fclose() are called for the object file,
57 * and the PROF_SYMBOL and section hdr arrays are freed.
58 *
59 *
60 * No Returns.
61 */
62
63 void
_symintClose(PROF_FILE * profPtr)64 _symintClose(PROF_FILE *profPtr)
65 {
66 DEBUG_LOC("_symintClose: top");
67 if (profPtr) {
68 (void) elf_end(profPtr->pf_elf_p);
69 (void) close(profPtr->pf_fildes);
70
71 (void) free(profPtr->pf_shdarr_p);
72 (void) free(profPtr->pf_symarr_p);
73 }
74 DEBUG_LOC("_symintClose: bottom");
75 }
76