VirtualBox

source: vbox/trunk/src/VBox/ExtPacks/VBoxDTrace/onnv/common/dtrace/dtrace_data.c@ 98409

Last change on this file since 98409 was 53634, checked in by vboxsync, 10 years ago

VBoxDTrace: Imported dtrace bits from opensolaris onnv mercurial: id=b23a4dab3d50 num=13149 tag=tip

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.5 KB
Line 
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 (the "License").
6 * You may not use this file except in compliance with the License.
7 *
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.
12 *
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]
18 *
19 * CDDL HEADER END
20 */
21
22/*
23 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#pragma ident "%Z%%M% %I% %E% SMI"
28
29#include <sys/types.h>
30
31/*
32 * In order to let the DTrace fasttrap provider trace processes before libc
33 * is initialized, we place this structure in the thread pointer register.
34 * This is communicated to the kernel (in the elfexec() function) by
35 * placing the address of this structure in the PT_SUNWDTRACE program
36 * header with the -zdtrace_data=<object> option to ld(1).
37 *
38 * Besides DTrace use, the initialization sequence carried out for the
39 * PT_SUNWDTRACE data is an essential step required for the correct
40 * initialization of any process. Therefore, PT_SUNWDTRACE data must
41 * exist in any interpretor available on Solaris.
42 *
43 * ld.so.1 is the standard interpretor on all Solaris platforms. However,
44 * for ABI compliance, 32-bit executables are able to identify libc.so.1
45 * as their interpretor. Therefore, this data file is used to build all
46 * instances of ld.so.1, and the 32-bit versions of libc.so.1. Note,
47 * although libc.so.1 can act as an interpretor for 32-bit applications,
48 * libc.so.1 only provides a bootstrap mechanism to load and jump to
49 * ld.so.1.
50 *
51 * The fields of the program header are set as follows:
52 * p_type: PT_SUNWDTRACE
53 * p_vaddr: address of dtrace_data
54 * p_memsz: size of dtrace_data
55 * p_flags: flags of segment dtrace_data is assigned to
56 * p_paddr: <reserved>
57 * p_filesz: <reserved>
58 * p_offset: <reserved>
59 * p_align: <reserved>
60 *
61 * See the comment in fasttrap.h for information on how to safely change
62 * this data structure and the other places that need to be kept in sync.
63 */
64
65#if defined(__sparc)
66
67#pragma align 64(dtrace_data)
68uint32_t dtrace_data[32] = {
69 0, 0, 0, 0, 0, 0, 0, 0,
70 0, 0, 0, 0, 0, 0, 0, 0,
71 0x9de04000, /* save %g1, %g0, %sp */
72 0x81e80000, /* restore %g0, %g0, %g0 */
73 0x91d0203a, /* ta 0x3a */
74 0x81ca0000, /* return %o0 */
75 0, 0, /* self pointer (must be zero) */
76 0, 0,
77 0, 0, 0, 0, 0, 0, 0, 0
78};
79
80#elif defined(__amd64)
81
82#pragma align 64(dtrace_data)
83uint8_t dtrace_data[64] = {
84 0, 0, 0, 0, 0, 0, 0, 0, /* self pointer (must be zero) */
85 0, 0, 0, 0, 0, 0, 0, 0,
86 0, 0, 0, 0, 0, 0, 0, 0,
87 0, 0, 0, 0, 0, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 0, 0,
89 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0
92};
93
94#elif defined(__i386)
95
96#pragma align 64(dtrace_data)
97uint8_t dtrace_data[64] = {
98 0, 0, 0, 0, /* self pointer (must be zero) */
99 0, 0, 0, 0,
100 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0, 0, 0,
106 0, 0, 0, 0, 0, 0, 0, 0
107};
108
109#else
110
111#error "unknown ISA"
112
113#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette