This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to fix this warning: ".c6xabi.exidx without a SECTIONS specification" ?

Within this thread that issue already had been discussed, but for another platform than mine. I work on dm8148. When building a codec server for the C674 I get:

lnke674 bin/ti_platforms_evmDM8148/all_DSP.xe674 ...
warning: creating output section ".c6xabi.exidx" without a SECTIONS specification
warning: creating output section ".c6xabi.extab" without a SECTIONS specification

Unfortunately the hint, given there by , didn't work for me. He suggested to add

 ".c6xabi.exidx": 1

to the 'nonsplitable' map entry within the file packages/ti/targets/elf/linkUtils.xs of the XDC sources. I did (it wasn't there before in the xdctools_3_23_01_43 of ti-ezsdk_dm814x-evm_5_04_00_11), but it did not change the warning, it still is there.

Any suggestions?

Thanks in advance,
kind regards,
Joern.

  • Joern,
    the thread that you referenced describes a two step solution. The initial problem that Itay Chamiel had is the same problem you have, which is that two output sections do not have allocations in the SECTIONS directive. He solved that by adding the following statements in his config script:
    Program.sectMap[".c6xabi.exidx"] = "DDR3";
    Program.sectMap[".c6xabi.extab"] = "DDR3";

    These two statements cause allocation directives for the sections .c6xabi.exidx and .c6xabi.extab to appear in the SECTIONS directive. Have you done the same or similar? Since you are building for evmDM8148, you'll have to replace "DD3" with "DD3_RAM" because that's the name for external memory on evmDM8148. Once you do that, you'll see the warning about split placement, and my proposed workaround deals with that warning.

    BTW, the bug that tracks the problem was fixed in the code stream planned for the next major XDCtools release that should be out in January (this is just my guess, I don't know if the exact date is set yet) .  

  • Sasha,

    thanks a lot for your further hints, that solved my problem.

    First of all I had overlooked, that the thread I referenced already within the first question containt a part of the solution, these Program.sectMap settings.

    Also thanks for your hint concerning "DDR3_RAM" - although that delivered the same errors like with setting "DDR3":

    lnke674 bin/ti_platforms_evmDM8148/all_DSP.xe674 ...
    warning: creating output section ".plt" without a SECTIONS specification
    "package/cfg/bin/ti_platforms_evmDM8148/all_DSP_pe674.xdl", line 271: warning:
       memory range not found: DDR3_RAM on page 0
    "package/cfg/bin/ti_platforms_evmDM8148/all_DSP_pe674.xdl", line 271: error: no
       valid memory range(null) available for placement of ".c6xabi.extab"
    "package/cfg/bin/ti_platforms_evmDM8148/all_DSP_pe674.xdl", line 271: error:
       placement fails for object ".c6xabi.extab", size 0x47c8 (page 0)
    "package/cfg/bin/ti_platforms_evmDM8148/all_DSP_pe674.xdl", line 270: warning:
       memory range not found: DDR3_RAM on page 0
    error: no valid memory range(null) available for placement of ".c6xabi.exidx"
    error: placement fails for object ".c6xabi.exidx", size 0x4990 (page 0)

    But your hint encouraged me to change this setting into "DDR3_DSP", because looking into the generated all_DSP_pe674.xdl I found this setting around the place warned for "DDR3_RAM" - and this way it seems to work.

    Remains the question, if that my assumption actually is right - and how to get this knowlegde about those memory settings directly.

    Also still I have this above warning about section ".plt" - but that is another question...

    Kind regards, and thanks again,
    Joern.

  • Joern said:
    Remains the question, if that my assumption actually is right - and how to get this knowlegde about those memory settings directly.

    I am not sure I understand this, but it seems you are asking how would you know what's the name of the external memory segment? Usually, you would look in the platform's documentation in Platform.xdc, and find out the name. However, any product that uses RTSC platforms (EZDSK in your case) can reconfigure platforms, change memory names, etc., and then it's up to that product to provide some kind of documentation that lists such changes. There could be a file config.bld where platform changes are commonly made, and you may be able to see how is the platform that you are using reconfigured. 

    About .plt, here is another thread that does not really get to the bottom of it, but there is some explanation. Only the first four or five posts are relevant, the rest is about some different topic.

  • Sasha Slijepcevic said:
    However, any product that uses RTSC platforms (EZDSK in your case) can reconfigure platforms, change memory names, etc., and then it's up to that product to provide some kind of documentation that lists such changes. There could be a file config.bld where platform changes are commonly made, and you may be able to see how is the platform that you are using reconfigured.

    That's my problem - I always have to use grep to find places where some name might come from, and which settings (and expectations) are connected to it. So for example for me the DDR3_DSP comes from serverplatform.xs, gotten from the CE's allcodecs sample. Within evmDM8148/Platform.xdc nothing concerning that is predefined (but I find this name for several other platforms near to mine, like evmTI814X - mabe I've overlooked an inheritance from there).

    You encouraged me to digg around concerning those settings, thanks. But I'd be happier if I would know about a strategy where actually what should be set (the location and the file type - f.e. I found DDR3_DSP within .xdc, .cfg and .xs files).

    Concerning .plt thanks for your thread hint. Me too got rid of that warning by adding Program.sectMap[".plt"] = "DDR3_DSP"; to my all_codecs .cfg file - not too surprisingly. Also me too, like in that thread, have not found from where this .plt section is caused. Within my XDC-generated makefiles very often .dll targets occure, no idea from where that is driven, but maybe that is a clue.

    And concerning this .plt warning in the meanwhile I found yet another thread, where Ramsey states that it was safe to ignore this warning, and that in future releases probably this will be eliminated. Besides, the other warning mentioned there (entry-point symbol other than "_c_int00" specified) I get, too, and now for the next time will try to ignore as Ramsey suggested.