dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / uts / common / exec / elf / elf_impl.h
blob010d5e6256108c0b0d9fae402580725d9114154d
1 /*
2 * CDDL HEADER START
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]
19 * CDDL HEADER END
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"
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
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"
58 #endif
60 #if defined(__amd64)
61 #define USR_LIB_RTLD "/usr/lib/amd64/ld.so.1"
62 #endif
64 #endif /* !_LP64 || _ELF32_COMPAT */
67 * Start of an ELF Note.
69 typedef struct {
70 Nhdr nhdr;
71 char name[8];
72 } Note;
74 #ifdef _ELF32_COMPAT
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
88 #if defined(__sparc)
89 #define gwindows_t gwindows32_t
90 #define rwindow rwindow32
91 #endif
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)
107 #undef prfpregset_t
108 #endif
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,
122 rlim64_t, cred_t *);
124 extern int write_elfnotes(proc_t *, int, vnode_t *, offset_t,
125 rlim64_t, cred_t *, core_content_t);
127 #ifdef __cplusplus
129 #endif
131 #endif /* _ELF_ELF_IMPL_H */