#include <revolution/rso.h>
#include <revolution/RSOLink.h>
BOOL RSOLinkList(void* i_newRso, void* i_bss);
BOOL RSOLinkListFixed(void* i_newRso, void *i_bss, int i_fixed);
i_newRso |
Pointer to the dynamic module information to link |
i_bss |
Pointer to the available memory space used for the bss section. (Size is allocated by RSOObjectHeader.bssSize) |
i_fixed |
Release level:RSOFixedLevel |
Returns success or failure of the operation
Success: TRUE
Fail: FALSE
RSOLinkList() links the specified module. Once the module is unlinked, the memory copy of the module can be reused with RSOLinkList() if the module startup code initializes its data section explicitly.
RSOLinkListFixed()links the specified module and releases part of the memory occupied by the relocatable module.
Once the module is linked using RSOLinkListFixed, the remaining memory space that comes after (specified by RSOGetFixedSize) can be used for any purpose (for example, for the bss area).
If the release level is RSO_FL_INTERNAL, the internal reference information is released.
In this case, the module memory copy cannot be reused even after being unlinked.
If the deallocated stage is RSO_FL_EXTERNAL, the internal and external (import) reference information is deallocated.
In this case, in addition to the restrictions of RSO_FL_INTERNAL, the following restrictions are applied:
1. When a module referenced by this module is unlinked, the referenced functions will not show as unresolved.
2. The module will not be able to reference the functions on the dynamic module registered after the link.
Note: The location specified by RSOGetFixedSize is converted from the file offset to the virtual address when the module is linked.
RSO API Introduction
RSOListInit, RSOUnLinkList, RSOGetFixedSize,
06/14/2006 Initial version.
CONFIDENTIAL