To help your RPX load faster and the linker to run your code faster, the following two workarounds should be implemented. The goal for both workarounds is to export only the symbols that need to be exported.
gx2.rpland other system or middleware RPLs.
c.rpl. If only
c.rpl, we suggest moving the code for
c.rplinto only one RPL. (If separate development teams currently make the RPLs, have them make static libs instead.)
rplexportall, to create a
.deffile, the result of that output can be used as a place to start. Most of the symbols produced by the script are not good entry points into the RPL. The fewer symbols that you have, the faster they load. But, more importantly, you can avoid an out of memory error.
Import a RPL that needs its exports reduced into the RPX. For clarity, the
file created by
rplexportall is referred to as the "old"
.def file as opposed to the
.def file, which contains only the symbols that you need:
rplexportallto create a temporary "old"
.deffile for the RPL, remove the "old"
.deffile from the
makefilefor the RPL. That is,
preprpl[32|64]is called without the
-xoption uses the
.deffile as a parameter), which results in nothing being exported from the RPL.
makerpl[32|64]as you normally do.
makerpl[32|64], depending on your options.
rplexportallprints a normal looking function name in a comment (an unmangled name) on the same line as the mangled name to help you to understand which symbols are being exported.
.deffile. When you find it, copy the entire line with the mangled and unmangled names, and then paste it in the "new"
.deffile. After you find all of the unique, undefined symbols, the "new"
.deffile should contain only the symbols that are needed. If you use
preprpl[32|64]to create your import library, you need to also copy [CODE] and [DATA], and then put those directives above function names and variable names in your "new"
.deffile. You may have multiple instances of these directives in your "new"
-xoption, and then repeat the steps b and c. If you still have link errors, repeat steps d through g until you link the RPX successfully.
2013/05/08 Automated cleanup pass.
2012/07/23 Removed references to old SDKs.
2011/12/19 Initial version.