4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _ELF_ELF_IMPL_H
27 #define _ELF_ELF_IMPL_H
29 #pragma ident "%Z%%M% %I% %E% SMI"
35 #if !defined(_LP64) || defined(_ELF32_COMPAT)
38 * Definitions for ELF32, native 32-bit or 32-bit compatibility mode.
40 #define ELFCLASS ELFCLASS32
41 typedef unsigned int aux_val_t
;
42 typedef auxv32_t aux_entry_t
;
44 #define USR_LIB_RTLD "/usr/lib/ld.so.1"
46 #else /* !_LP64 || _ELF32_COMPAT */
49 * Definitions for native 64-bit ELF
51 #define ELFCLASS ELFCLASS64
52 typedef unsigned long aux_val_t
;
53 typedef auxv_t aux_entry_t
;
55 /* put defines for 64-bit architectures here */
56 #if defined(__sparcv9)
57 #define USR_LIB_RTLD "/usr/lib/sparcv9/ld.so.1"
61 #define USR_LIB_RTLD "/usr/lib/amd64/ld.so.1"
64 #endif /* !_LP64 || _ELF32_COMPAT */
67 * Start of an ELF Note.
76 * These are defined only for the 32-bit compatibility
77 * compilation mode of the 64-bit kernel.
79 #define elfexec elf32exec
80 #define elfnote elf32note
81 #define elfcore elf32core
82 #define mapexec_brand mapexec32_brand
83 #define setup_note_header setup_note_header32
84 #define write_elfnotes write_elfnotes32
85 #define setup_old_note_header setup_old_note_header32
86 #define write_old_elfnotes write_old_elfnotes32
89 #define gwindows_t gwindows32_t
90 #define rwindow rwindow32
93 #define psinfo_t psinfo32_t
94 #define pstatus_t pstatus32_t
95 #define lwpsinfo_t lwpsinfo32_t
96 #define lwpstatus_t lwpstatus32_t
98 #define prgetpsinfo prgetpsinfo32
99 #define prgetstatus prgetstatus32
100 #define prgetlwpsinfo prgetlwpsinfo32
101 #define prgetlwpstatus prgetlwpstatus32
102 #define prgetwindows prgetwindows32
104 #define prpsinfo_t prpsinfo32_t
105 #define prstatus_t prstatus32_t
106 #if defined(prfpregset_t)
109 #define prfpregset_t prfpregset32_t
111 #define oprgetstatus oprgetstatus32
112 #define oprgetpsinfo oprgetpsinfo32
113 #define prgetprfpregs prgetprfpregs32
115 #endif /* _ELF32_COMPAT */
117 extern int elfnote(vnode_t
*, offset_t
*, int, int, void *, rlim64_t
, cred_t
*);
118 extern void setup_old_note_header(Phdr
*, proc_t
*);
119 extern void setup_note_header(Phdr
*, proc_t
*);
121 extern int write_old_elfnotes(proc_t
*, int, vnode_t
*, offset_t
,
124 extern int write_elfnotes(proc_t
*, int, vnode_t
*, offset_t
,
125 rlim64_t
, cred_t
*, core_content_t
);
131 #endif /* _ELF_ELF_IMPL_H */