I am attempting to manually place input sections to an external memory location. I have done this successfully with a related program, but am experiencing some behavior I can't get to the bottom of. Below is the syntax I am using. I have places this near the top of the SECTIONS area to make sure it happens before any $OBJECTS and $LIBRARIES have been placed.
INPUT_SECTIONS( $OBJECTS(seg_ext_code_sw) $LIBRARIES(seg_ext_code_sw))
INPUT_SECTIONS( $OBJECTS(seg_ext_code) $LIBRARIES(seg_ext_code))
INPUT_SECTIONS( MyLib.dlb [ MyDoj.doj (seg_swco) ])
} > seg_ext_code_sw
Issue #1: I am trying to place libio_lite.dlb code into external memory. When I do so, I get a slew of messages similar to:
[Error li1080] ".\Release\CThirdPartyWrapper.doj(seg_swco):0x952" address of '__printf32' (=0x25f8c37) is out of range
Referenced from 0x1301b1
Valid range is [0x0,0xffffff]
I am doing this exact thing in a separate program with success.
Issue #2: My other libraries are not being places where I tell them to be. If I comment out the libio_lite placement and build, the code in MyLib.dlb is put in the seg_init section instead of in external memory. Once again, I put these statements at the top, so they should take precedence. Also strange, the same libraries that are not being placed in this program are successfully placed in another program.
Any help you could provide would be appreciated.