Mercurial > hg > truffle
annotate agent/src/share/classes/sun/jvm/hotspot/debugger/win32/coff/ExportDirectoryTable.java @ 3962:cb315dc80374
7092278: "jmap -finalizerinfo" throws "sun.jvm.hotspot.utilities.AssertionFailure: invalid cp index 0 137"
Reviewed-by: kvn
author | never |
---|---|
date | Thu, 29 Sep 2011 09:53:56 -0700 |
parents | c18cbe5936b8 |
children |
rev | line source |
---|---|
0 | 1 /* |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
2 * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
25 package sun.jvm.hotspot.debugger.win32.coff; | |
26 | |
27 /** Models the information stored in the export directory table. | |
28 Ostensibly this is supposed to lie in the .edata section. | |
29 However, experience has shown that this data does not appear to be | |
30 present there, instead (likely -- not yet tested) showing up in | |
31 the Export Table portion of the OptionalHeaderDataDirectories. | |
32 (Some of the descriptions are taken directly from Microsoft's | |
33 documentation and are copyrighted by Microsoft.) */ | |
34 | |
35 public interface ExportDirectoryTable { | |
36 /** A reserved field, set to zero for now. */ | |
37 public int getExportFlags(); | |
38 | |
39 /** Time and date the export data was created. */ | |
40 public int getTimeDateStamp(); | |
41 | |
42 /** Major version number. The major/minor version number can be set | |
43 by the user. */ | |
44 public short getMajorVersion(); | |
45 | |
46 /** Minor version number. */ | |
47 public short getMinorVersion(); | |
48 | |
49 /** Address of the ASCII string containing the name of the | |
50 DLL. Relative to image base. See {@link #getDLLName}. */ | |
51 public int getNameRVA(); | |
52 | |
53 /** Convenience routine which returns the name of the DLL containing | |
54 this export directory. */ | |
55 public String getDLLName(); | |
56 | |
57 /** Starting ordinal number for exports in this image. This field | |
58 specifies the starting ordinal number for the Export Address | |
59 Table. Usually set to 1. */ | |
60 public int getOrdinalBase(); | |
61 | |
62 /** Number of entries in the Export Address Table. */ | |
63 public int getNumberOfAddressTableEntries(); | |
64 | |
65 /** Number of entries in the Name Pointer Table (also the number of | |
66 entries in the Ordinal Table). */ | |
67 public int getNumberOfNamePointers(); | |
68 | |
69 /** Address of the Export Address Table, relative to the image | |
70 base. */ | |
71 public int getExportAddressTableRVA(); | |
72 | |
73 /** Address of the Export Name Pointer Table, relative to the image | |
74 base. The table size is given by Number of Name Pointers. */ | |
75 public int getNamePointerTableRVA(); | |
76 | |
77 /** Address of the Ordinal Table, relative to the image base. */ | |
78 public int getOrdinalTableRVA(); | |
79 | |
80 /** Returns the <I>i</I>th exported symbol (from 0..{@link | |
81 #getNumberOfNamePointers} - 1). These are arranged in sorted | |
82 order to allow binary searches. */ | |
83 public String getExportName(int i); | |
84 | |
85 /** Returns the <I>i</I>th entry (0..{@link | |
86 #getNumberOfNamePointers} in the Export Ordinal Table. This is | |
87 used for looking up a given symbol's address in the Export | |
88 Address Table; see {@link #getExportAddress}. */ | |
89 public short getExportOrdinal(int i); | |
90 | |
91 /** Indicates whether the specified export address is really a | |
92 forwarder, in which case the value is not an address but a | |
93 string. */ | |
94 public boolean isExportAddressForwarder(short ordinal); | |
95 | |
96 /** Get the forwarder name for the given ordinal. Must be called | |
97 only if isExportAddressForwarder() returns true. */ | |
98 public String getExportAddressForwarder(short ordinal); | |
99 | |
100 /** <P> Takes in an ordinal from the Export Ordinal Table (see | |
101 {@link #getExportOrdinal}). This ordinal is biased by {@link | |
102 #getOrdinalBase}; however, the subtraction described in the | |
103 documentation is done internally for convenience. Returns an | |
104 address that is in one of two formats. If the address specified | |
105 is not within the export section (as defined by the address and | |
106 length indicated in the Optional Header), the field is an Export | |
107 RVA: an actual address in code or data. Otherwise, the field is | |
108 a Forwarder RVA, which names a symbol in another DLL. </P> | |
109 | |
110 <P> An Export RVA is the address of the exported symbol when | |
111 loaded into memory, relative to the image base. For example, the | |
112 address of an exported function. </P> | |
113 | |
114 <P> A Forwarder RVA is a pointer to a null-terminated ASCII | |
115 string in the export section, giving the DLL name and the name | |
116 of the export (for example, "MYDLL.expfunc") or the DLL | |
117 name and an export (for example, "MYDLL.#27"). </P> | |
118 | |
119 <P> NOTE: the value returned has been transformed from an RVA to | |
120 a file pointer which can be added to the image base to find an | |
121 absolute address for the symbol. </P> */ | |
122 public int getExportAddress(short ordinal); | |
123 } |