Data processing: software development – installation – and managem – Software program development tool – Linking
Reexamination Certificate
2000-02-17
2003-12-02
Das, Chameli C. (Department: 2122)
Data processing: software development, installation, and managem
Software program development tool
Linking
C717S163000, C717S153000, C717S166000, C717S178000, C709S241000, C709S241000
Reexamination Certificate
active
06658658
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates in general to the loading of importing modules during load time, and in particular to forwarding and resolving a reference made by an importing module to an exporting module for a specified export wherein the resolution of the reference is made during the load time of the importing module. Still particularly, the present invention relates to implicit forwarding and resolving of a reference made by an importing module to an exporting module for a specified export wherein the resolution of the reference is made during the load time by a loader of the importing module.
2. Description of the Related Art
“Executable files” (EXEs) or “dynamic link libraries” (DLLs) may be importing modules that import exports from other modules or may be exporting modules that provide exports that are referenced by other modules. The loading of an importing module that references a specified export in an exporting module requires that the location of the specified export be known in order for the loading process to be completed by the loader. These specified exports may contain functions, data, or any other suitable information that an importing module would need to reference during loading and execution of the importing module. If the importing module is directly referencing an exporting module that has the specified export(s), then the location(s) of the specified export(s) is/are known by the loader during the time of loading the importing module, and the loading of the importing module is able to be completed by the loader. Prior art
FIG. 1
shows a configuration
100
with an original importing module
102
(i.e. original executable file or dynamic link library (EXE/DLL)) referencing an original exporting module (i.e. dynamic link library (DLL))
104
. The importing module
102
makes the references
12
for importing the specified exports
14
(i.e. exports
1
,
2
,
3
,
4
,
5
, and
6
), and the original exporting module (i.e. the original DLL)
104
has the respective specified exports
14
(i.e. exports
1
,
2
,
3
,
4
,
5
, and
6
) that are referenced by the importing module
102
. Thus, the locations of all of the specified exports
14
referenced by the importing module
102
are able to be directly provided to and known by the loader, and the loading of the importing module
102
is able to be completed by the loader.
However, an export can either be an ordinary export of the module (code or data) or a re-export of an import, that is, an explicit forwarder entrypoint which does not refer to anything contained within the module but tells the loader to “forward” references to that export elsewhere. Import references to an explicit forwarder entrypoint are resolved by the loader operating as if the import referring to the explicit forwarder entrypoint actually refers to the module and export from which the explicit forwarder entrypoint imports. The explicit entrypoints are used by the loader to find and determine the location(s) of the specified export so that the loading of the importing module is able to be completed by the loader. An explicit entrypoint is located in the exporting module and may be an explicit forwarder entrypoint that forwards the reference of the specified export to a next exporting module or may export contents of the module. If the location(s) of the specified export(s) is/are found at a particular exporting module(s), then a correlation(s) between the importing module and that particular exporting module(s) is/are made. The “fix up” process of a reference(s) is performed by the loader to resolve all reference(s) to a specified export(s) through explicit entrypoint(s), and resolution for all reference(s) must be resolved before the loader is able to complete the loading of the importing module at load time, or otherwise, the loading of the importing module is unable to be completed by the loader. Thus, any reference(s) made to an explicit entrypoint(s) must be fixed up or resolved during the load time of the importing module.
Therefore, these exporting modules with explicit forwarder entrypoints that are used to forward references for specified exports have various limitations and problems. Prior art
FIG. 2
shows a configuration
200
between the original importing module (i.e. original EXE/DLL)
102
making references
12
for specific exports
15
(i.e. specific exports
1
,
2
,
3
,
4
,
5
, and
6
) of the exporting module (forwarder DLL
203
) having an ordinary export of code or data
206
and explicit forwarder entrypoints
205
(i.e. explicit forwarder entrypoints
1
,
2
,
4
,
5
, and
6
), which when imported are resolved by the loader to exports
14
of the original DLL
104
. Since the importing module
102
is making references
12
to the exporting module
203
that is a forwarder exporting module or DLL with explicit forwarder entrypoints
205
(i.e. forwarder entrypoints
1
,
2
,
4
,
5
, and
6
), the loader resolves the references and finds and determines the locations of the specified exports
14
and export
206
by resolving the explicit forwarder entrypoints
205
and export
206
by correlating the importing module
102
to exporting module
104
for finding and locating the exports
14
and export
206
. In
FIG. 2
, the locations of the specified exports
14
(i.e. exports
1
,
2
,
4
,
5
, and
6
) are found in the exporting module or original DLL
104
, and the correlation between the importing module or original EXE/DLL
102
and the exporting module or original DLL
104
is made. This correlation is made by the loader to perform the “fix up” process to resolve the references and obtain the specific locations of the specified exports
14
. Since all of the imports have been resolved via the explicit forwarder entrypoints
205
(i.e. forwarder entrypoints
1
,
2
,
4
,
5
, and
6
) and export
206
, the loader is able to load the importing module
102
at load time.
For the purposes of illustration in the present description, the term “older” connotes or correlates to less entrypoints while the term “newer” connotes or correlates to more entrypoints. Prior art
FIG. 3
illustrates an example block configuration
300
of a problem when a newer importing module or newer EXE/DLL
302
and a newer exporting module or newer DLL
304
are used with the same forwarder exporting module or forwarder DLL
203
as in FIG.
2
.
FIG. 3
shows that some of the references
12
made by the newer importing module
302
for specified exports
14
(i.e. exports
1
,
2
,
4
,
5
, and
6
) are able to be resolved by the loader in finding the locations of these specified exports
14
in the newer DLL
304
by being able to correlate the importing module
302
to the exporting module
304
by the loader resolving the explicit forwarder entrypoints
205
. The export
206
(i.e. export
3
) is also able to be resolved by the loader in the same manner that was discussed earlier for export
206
in FIG.
2
.
However, the references made by the newer importing module
302
to the forwarder exporting module or forwarder DLL
203
for the newer specified exports
34
(i.e. exports
7
and
8
) cannot at all be resolved since explicit forwarder entrypoints
205
or direct exports or any other explicit entrypoints do not exist in the forwarder exporting module or forwarder DLL
203
for these specified exports
7
and
8
. Thus, the loader is unable to load the newer importing module
302
during the load time since all references for exports made by the importing module
302
are unable to be resolved. While older importing modules
102
such as shown in
FIGS. 1 and 2
that reference the forwarder DLL
203
and that do not reference and require specified exports
7
or
8
are able to load, any importing module that references the forwarder DLL
203
and that does reference new specified exports, such as new specified exports
7
and
8
, which are unable to be resolved will not be able to load by the loader.
Prior art
FIG. 4
illustrates an example block configuration
Jones Jeffrey Allen
Kobal Jeffrey
Bracewell & Patterson L.L.P.
Das Chameli C.
International Business Machines - Corporation
LandOfFree
Implicit forwarding and resolving of a reference made by an... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Implicit forwarding and resolving of a reference made by an..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Implicit forwarding and resolving of a reference made by an... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3174023