Assert strings populated in xdc.runtime.Text dispite being disabled [message #1367687] |
Mon, 19 May 2014 18:22  |
Eclipse User |
|
|
|
It seems that the assert strings should not be added to the charTab in xdc.runtime.Text when they are disabled. However, the Assert.xs module$static$init cycles through all modules looking for $$assertDescCfgs in each module used and assigns the id returned by Text.defineRopeCord(desc.msg) without regard to whether or not asserts are enabled or not. This populates Text.charTab with the messages of the asserts which will never get used when asserts are disabled, and unnecessarily bloats the firmware image size.
|
|
|
Re: Assert strings populated in xdc.runtime.Text dispite being disabled [message #1372481 is a reply to message #1367687] |
Wed, 21 May 2014 17:15   |
Eclipse User |
|
|
|
James,
you are right that it does not make sense to keep Assert strings for unused asserts in the charTab. However, when we go through asserts in module$static$init, we don't really know who is using them. Your C code can freely use any Assert declared in xdc.runtime, and the code in module$static$init can't detect that. Diags masks are used to disable/enable asserts in the code for the module for that mask, not to disable/enable asserts declared in that module.
If you are thinking of the use case where all Asserts in all modules are disabled, that would be easier to figure out bu going through all modules' Diags masks and exit if all of them set ASSERT and INTERNAL bits to ALWAYS_OFF.
However, there is an undocumented feature that allows you to bypass any mask checks anyway and use all alerts independent of the Diags mask configuration. Look into Assert__epilogue.h and just define xdc_runtime_Assert_DISABLE_CONDITIONAL_ASSERT when compiling and you'll be able to see all alerts in the code compiled that way no matter how you configure the Diags mask for your module or for xdc_runtime_Main if asserts are in the app code.
The reason we did not document that feature is just an oversight. It's being used and I don't think we can take it out. But, what we could is to detect that same use case where all Asserts are permanently disabled, and Assert_raise wouldn't even try to read Assert strings from charTab.
Is the option of setting Text.isLoaded to 'false' too bulky? What's the device you are using? Is Text.isLoaded even working on it?
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04812 seconds