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.

Memory conflicts when linking (CCs 4.2)

Other Parts Discussed in Thread: TMS320F2812

I am having problems linking a project that was converted from CCS v3.3 to CCS v4.2

Silicon is TMS320F2812

CCS v3.3 config ...

    - Code Generation Tools 4.1.4

    - BIOS 5.20.04

CCS V4.2 config ...

    - Code Generation Tools 5.2.10

    - BIOS 5.41.10.36

The project includes a tcf file that is apparently processed behind the scenes to a cfg.cmd file

This cfg.cmd file appears to be used by the linker in addition to whichever Linker Command File is specified in the Build Properties CCS Build section.

Selecting any of the stock Linker Command Files results in memory conflicts when attempting to link.

Selecting no Linker Command file produces the fewest link errors, but apparently results in some default linker configuration that produces the following error messages...

warning #10096-D: specified address lies outside memory map
error #10264: DEFAULT memory range overlaps existing memory range H0SARAM
error #10264: DEFAULT memory range overlaps existing memory range FLASHAPI
error #10264: DEFAULT memory range overlaps existing memory range BOOTROM
error #10264: DEFAULT memory range overlaps existing memory range VIRTUAL

Any help getting past this problem would be greatly appreciated.

The contents of my tcf file are below ...

 

utils.loadPlatform("ti.platforms.ezdsp2812");

var codeSegment = "SRAM";
var biosSegment = "H0SARAM";
var runFromFlash = environment["runFromFlash"] == "1";
if ( runFromFlash )
{
    codeSegment = "FLASH_CODE";
    biosSegment = "FLASH_CODE";
}
var bootFromFlash = environment["bootFromFlash"] == "1";
if ( bootFromFlash )
{
    codeSegment = "FLASH_BOOT";
    biosSegment = "FLASH_BOOT";
}
var configuration = environment["configuration"];

/* The following DSP/BIOS Features are enabled.  */
bios.enableMemoryHeaps(prog);
bios.enableTskManager(prog);

bios.MEM.instance("LSARAM").createHeap = 1;
bios.MEM.instance("LSARAM").enableHeapLabel = 0;
bios.MEM.instance("LSARAM").heapSize = 0x1e00;
bios.MEM.instance("SRAM").createHeap = 1;
bios.MEM.instance("SRAM").len = 0x80000;
bios.MEM.instance("SRAM").heapSize = 0x60000;
bios.MEM.instance("MSARAM").createHeap = 1;
bios.MEM.instance("MSARAM").heapSize = 0x0500;
bios.MEM.instance("H0SARAM").len = 0x1a80;
bios.MEM.instance("OTP").space = "data";
bios.MEM.create("FLASHAPI");
bios.MEM.instance("FLASHAPI").comment = "On-Chip RAM Memory for Flash API";
bios.MEM.instance("FLASHAPI").base = 0x3f9a80;
bios.MEM.instance("FLASHAPI").len = 0x0580;
bios.MEM.instance("FLASHAPI").createHeap = 0;
bios.MEM.instance("FLASHAPI").space = "code";
bios.MEM.instance("FLASH").destroy();
bios.MEM.create("FLASH_SETTINGS");
bios.MEM.instance("FLASH_SETTINGS").comment = "8K Flash memory for settings";
bios.MEM.instance("FLASH_SETTINGS").base = 0x3d8000;
bios.MEM.instance("FLASH_SETTINGS").len = 0x2000;
bios.MEM.instance("FLASH_SETTINGS").createHeap = 0;
bios.MEM.create("FLASH_CODE");
bios.MEM.instance("FLASH_CODE").comment = "104K Flash for code";
bios.MEM.instance("FLASH_CODE").base = 0x3da000;
bios.MEM.instance("FLASH_CODE").len = 0x16000;
bios.MEM.instance("FLASH_CODE").createHeap = 0;
bios.MEM.create("FLASH_BOOT");
bios.MEM.instance("FLASH_BOOT").comment = "16K Flash for bootloader";
bios.MEM.instance("FLASH_BOOT").base = 0x3f0000;
bios.MEM.instance("FLASH_BOOT").len = 0x8000;
bios.MEM.instance("FLASH_BOOT").createHeap = 0;
bios.TSK.STACKSEG = prog.get("LSARAM");
bios.MEM.STACKSIZE = 0x0200;
bios.MEM.BIOSOBJSEG = prog.get("SRAM");
bios.MEM.MALLOCSEG = prog.get("SRAM");
bios.MEM.ARGSSEG = prog.get("LSARAM");
bios.MEM.STACKSEG = prog.get("MSARAM");
bios.MEM.GBLINITSEG = prog.get(codeSegment);
bios.MEM.TRCDATASEG = prog.get("H0SARAM");
bios.MEM.SYSDATASEG = prog.get("LSARAM");
bios.MEM.OBJSEG = prog.get("SRAM");
bios.MEM.BIOSSEG = prog.get(biosSegment);
bios.MEM.SYSINITSEG = prog.get(codeSegment);
bios.MEM.HWISEG = prog.get(codeSegment);
bios.MEM.HWIVECSEG = prog.get("PIEVECT");
bios.MEM.RTDXTEXTSEG = prog.get(codeSegment);
bios.MEM.TEXTSEG = prog.get(codeSegment);
bios.MEM.SWITCHSEG = prog.get(codeSegment);
bios.MEM.BSSSEG = prog.get("SRAM");
bios.MEM.EBSSSEG = prog.get("SRAM");
bios.MEM.CINITSEG = prog.get(codeSegment);
bios.MEM.PINITSEG = prog.get(codeSegment);
bios.MEM.ECONSTSEG = prog.get(codeSegment);
bios.MEM.CONSTSEG = prog.get(codeSegment);
bios.MEM.DATASEG = prog.get(codeSegment);
bios.MEM.CIOSEG = prog.get("SRAM");
bios.MEM.ENABLELOADADDR = 1;
bios.MEM.LOADBIOSSEG = prog.get(biosSegment);
bios.MEM.LOADSYSINITSEG = prog.get(codeSegment);
bios.MEM.LOADGBLINITSEG = prog.get(codeSegment);
bios.MEM.LOADTRCDATASEG = prog.get(codeSegment);
bios.MEM.LOADTEXTSEG = prog.get(codeSegment);
bios.MEM.LOADSWITCHSEG = prog.get(codeSegment);
bios.MEM.LOADCINITSEG = prog.get(codeSegment);
bios.MEM.LOADPINITSEG = prog.get(codeSegment);
bios.MEM.LOADECONSTSEG = prog.get(codeSegment);
bios.MEM.LOADCONSTSEG = prog.get(codeSegment);
bios.MEM.LOADDATASEG = prog.get(codeSegment);
bios.MEM.LOADHWIVECSEG = prog.get(codeSegment);
bios.MEM.LOADRTDXTEXTSEG = prog.get(codeSegment);
bios.MEM.LOADHWISEG = prog.get(codeSegment);
bios.MBX.OBJMEMSEG = prog.get("SRAM");
bios.SYS.TRACESEG = prog.get("SRAM");
bios.SYS.TRACESIZE = 256;
bios.LOG.OBJMEMSEG = prog.get("SRAM");
bios.LOG.instance("LOG_system").bufSeg = prog.get("SRAM");
bios.BUF.OBJMEMSEG = prog.get("SRAM");
bios.STS.OBJMEMSEG = prog.get("SRAM");
bios.IDL.OBJMEMSEG = prog.get("SRAM");
bios.QUE.OBJMEMSEG = prog.get("SRAM");
bios.DIO.OBJMEMSEG = prog.get("SRAM");
bios.DHL.OBJMEMSEG = prog.get("SRAM");
bios.RTDX.RTDXDATASEG = prog.get("SRAM");
bios.HST.OBJMEMSEG = prog.get("SRAM");
bios.HST.instance("RTA_fromHost").bufSeg = prog.get("SRAM");
bios.HST.instance("RTA_toHost").bufSeg = prog.get("SRAM");
bios.PIP.OBJMEMSEG = prog.get("SRAM");
bios.SIO.OBJMEMSEG = prog.get("SRAM");
bios.TSK.STACKSIZE = 256;
bios.TSK.instance("TSK_idle").stackSize = 256;
bios.GBL.ENABLEINST = 1;
bios.GBL.CLKIN = 30000;
bios.TSK.PRIORITY = 8;
bios.GBL.ENABLEINST = 0;
bios.GBL.ENABLEALLTRC = 0;
bios.GBL.CALLUSERINITFXN = 1;
bios.GBL.USERINITFXN = prog.extern("BeforeMain");
// !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

if ( !bootFromFlash )
{
    bios.TSK.CALLSWITCHFXN = 1;
    bios.TSK.SWITCHFXN = prog.extern("OnSwitch__6ThreadSFPvT1");
}

prog.gen();

// This section changes the SECTION definition for .hwi_disp_sec.
var cmdFileName = environment["config.programName"];
if ( cmdFileName == null )
    cmdFileName = "UAC";
cmdFileName += "cfg.cmd";
var line;
var fileReader = new java.io.FileReader( cmdFileName );
var lineReader = new java.io.LineNumberReader( fileReader );
var output = "";

do
{
    line = lineReader.readLine();
    if ( line != null )
    {
        if ( line.indexOf( ".hwi_disp_sec:" ) >= 0 )
            output += "    .hwi_disp_sec: {} > H0SARAM PAGE 0\r\n";
        else if ( runFromFlash && ( line.indexOf( "FLASH_CODE:" ) >= 0 ) )
            output += line + ", fill=0xffff\r\n";                            // fill FLASH_CODE with 0xffff
        else if ( bootFromFlash && ( line.indexOf( "FLASH_BOOT:" ) >= 0 ) )
            output += line + ", fill=0xffff\r\n";                            // fill FLASH_BOOT with 0xffff
        else
            output += line + "\r\n";
    }
} while( line != null );

lineReader.close();
fileReader.close();

// This section adds some additional sections to the cmd file.
var loadCoffAddress    = 0x3f4000;
var flashVectorAddress = 0x3f3ffe;

output += "SECTIONS\r\n";
output += "{\r\n";
output += "    .template_CLS: {}    > SRAM                PAGE 1\r\n";
output += "    InternalRamCode:\r\n";
output += "    {\r\n";
output += "    }                LOAD = " + codeSegment + "    PAGE 1,\r\n";
output += "                    RUN  = H0SARAM        PAGE 0,\r\n";
output += "                    LOAD_START( _InternalRamCode_LoadStart ),\r\n";
output += "                    LOAD_END(   _InternalRamCode_LoadEnd ),\r\n";
output += "                    RUN_START(  _InternalRamCode_RunStart )\r\n";
output += "    Flash28_API:\r\n";
output += "    {\r\n";
output += "        -lc:\\svn\\UAC\\Firmware\\Platform\\TI\\Flash2812_API_V210.lib(.ebss)\r\n";
output += "        -lc:\\svn\\UAC\\Firmware\\Platform\\TI\\Flash2812_API_V210.lib(.econst)\r\n";
output += "        -lc:\\svn\\UAC\\Firmware\\Platform\\TI\\Flash2812_API_V210.lib(.text)\r\n";
output += "    }                LOAD = " + codeSegment + "    PAGE 1,\r\n";
output += "                    RUN  = FLASHAPI        PAGE 0,\r\n";
output += "                    LOAD_START( _Flash28_API_LoadStart ),\r\n";
output += "                    LOAD_END(   _Flash28_API_LoadEnd   ),\r\n";
output += "                    RUN_START(  _Flash28_API_RunStart  )\r\n";
output += "    FlashData: {}    > FLASH_SETTINGS    PAGE 1, type = NOLOAD\r\n";
output += "    RomData: {}        > OTP                PAGE 1, type = NOLOAD\r\n";
output += "    .bootStack:        LOAD = 0x700        PAGE 1, type = NOLOAD\r\n";
if ( bootFromFlash )
{
    output += "    .bootVector:    LOAD = 0x3f7ff6        PAGE 1\r\n";
    output += "    .coffLoader:\r\n";
    output += "    {\r\n";
    output += "        C:\\SVN\\UAC\\Firmware\\Bootloader\\Debug\\CoffLoader.obj(.coffLoader)\r\n";
    output += "        C:\\SVN\\UAC\\Firmware\\Bootloader\\Debug\\CoffLoader.obj(.text)\r\n";
    output += "        C:\\SVN\\UAC\\Firmware\\Bootloader\\Debug\\CoffLoader.obj(.econst)\r\n";
    output += "        C:\\SVN\\UAC\\Firmware\\Bootloader\\Debug\\C28Flash.obj(.text)\r\n";
    output += "        C:\\SVN\\UAC\\Firmware\\Bootloader\\Debug\\C28Flash.obj(.econst)\r\n";
    output += "    }                LOAD = " + utils.toHex( loadCoffAddress ) + "        PAGE 1,\r\n";
    output += "                    LOAD_START(_LoadCoff)\r\n";
}
else
{
    if ( runFromFlash )
        output += "    .flashVector:   LOAD = " + utils.toHex( flashVectorAddress ) + "        PAGE 1\r\n";
    else
        output += "    .flashVector:{} > " + codeSegment +    "              PAGE 1\r\n";
}
output += "    .adjust:     {} > " + codeSegment + "              PAGE 1\r\n";
output += "}\r\n";
output += "\r\n";
output += "_runFromFlash            = " + ( runFromFlash ? 1 : 0 ) + ";\r\n";
if ( bootFromFlash )
{
    output += "_FlashVector             = " + utils.toHex( flashVectorAddress ) + ";\r\n";
    output += "_startOfFlashCode        = " + utils.toHex( bios.MEM.instance("FLASH_CODE").base ) + ";\r\n";
    output += "_endOfFlashCode          = " + utils.toHex( bios.MEM.instance("FLASH_CODE").base + bios.MEM.instance("FLASH_CODE").len ) + ";\r\n";
}
else
{
    output += "_LoadCoff                = " + utils.toHex( loadCoffAddress ) + ";\r\n";
    output += "_loaderVersion           = " + utils.toHex( loadCoffAddress + 2 ) + ";\r\n";
}

// This section writes the modified cmd file.
var fileWriter = new java.io.FileWriter( cmdFileName );
fileWriter.write( output );
fileWriter.flush();
fileWriter.close();

  • nzelmanm said:
    error #10264: DEFAULT memory range overlaps existing memory range H0SARAM
    error #10264: DEFAULT memory range overlaps existing memory range FLASHAPI
    error #10264: DEFAULT memory range overlaps existing memory range BOOTROM
    error #10264: DEFAULT memory range overlaps existing memory range VIRTUAL

    The error indicates that a memory range called DEFAULT overlaps the memory ranges listed above. Do you have a custom linker command file added to the project in addition to the BIOS generated linker command file? If so, check the memory specifications closely for any overlap. Looking at the MEMORY directive within the BIOS generated .cmd file and the custom .cmd file in the project should give some clues.

  • As mentioned in my original posting, I am using a tcf file that specifies memory locations. This was the way we configured FLASH memory for CCS 3.3.

    I believe this file is parsed to create  the  [applicationName]cfg.cmd file used for the linker.

    I do not know how/where the BIOS generated linker command file is created, where it can be found, or what the memory range is for DEFAULT. This makes it somewhat difficult to compare the DEFAULT range with our ranges.

    Is there any way to override the default behavior so the system uses our custom linker command file and does not use the auto-generated one?

    I am guessing that I am not the only one that has run into this while converting from CCS 3 to CCS 4.

  • nzelmanm said:
    I do not know how/where the BIOS generated linker command file is created, where it can be found, or what the memory range is for DEFAULT

    The BIOS generated linker command file is the [applicationName]cfg.cmd file that you refer to. Open this file and any other .cmd files that are part of the project and compare the MEMORY specifications. To avoid the errors, you should make sure there are no overlaps in the MEMORY regions specified in the 2 files. In general, it is best to use the custom linker command file only to describe application specific segments that are not described in the file generated by the BIOS tcf configuration.

    nzelmanm said:

    Is there any way to override the default behavior so the system uses our custom linker command file and does not use the auto-generated one?

    You can force the build to link your custom linker command file before the BIOS generated cfg.cmd (available in Project Properties->CCS Build->Link Order tab).  This will allow the section allocations from your custom file to be picked up first. However, any overlaps in MEMORY regions would still have to be fixed as MEMORY specifications in both files are processed no matter what the order of processing is.

  • Thank you.

    I did find an older cmd file hiding in the directory structure.  It was not apparent that it was there, as it did not show as a file in the Project pane.  After deleting the older file, the linker did as directed in the BIOS generated file.

  • My response of yesterday indicated that eliminating the hidden cmd files corrected the situation.  It did, but only when I was using the older CG tools and BIOS.

    Today, I changed the project to use Code Generation Tools 5.2.10 and BIOS 5.41.10.36.  After much massaging of code due to changes in the header files supplied with the new Code Generation tools, it does compile, but I am now again getting the same memory conflicts when it links.  I have looked through the Project's directories to see if there are any other cmd linker files, but cannot find any.

  • nzelmanm said:
    I have looked through the Project's directories to see if there are any other cmd linker files, but cannot find any.

    Even if a file does not exist in the project folders, it might still be "linked" to the project (ie it does not physically reside in the project folder or sub-folders but is linked to project from a different location).

    I would suggest looking at the build console specifically the link step (after it says "Invoking: Linker"), and checking which linker command files are listed there.

  • Further information ...

    If I compile with Code-generation tools 4.1.4, all works well regardless of which version of BIOS I use.

    Simply modifying the build properties to point to a later version of Code-generation tools ( either 5.2.6 or 5.2.10) results in the memory conflict when linking.

    I do not have a Linker Command file specified in the CCS Build properties. Where else might a linker command file be specified?

    The Linker text from the command console does not appear to be using any but the expected cmd file.

    ----------------------------------------------------------------------------------------------

    'Building target: Bootloader.out'
    'Invoking: Linker'
    "C:/Texas Instruments/ccsv4/tools/compiler/C2000 Code Generation Tools 5.2.10/bin/cl2000" --silicon_version=28 -g -O0 --cpp_default --define="_DEBUG" --define="__CGTOOLS_1_4__" --define="LARGE_MODEL" --define="__TIBIOS__" --define="__NORTTI__" --define="BOOTLOADER" --diag_warning=225 --display_error_number --issue_remarks --large_memory_model --unified_memory -z -m"Bootloader.map" --warn_sections -i"C:/Texas Instruments/ccsv4/tools/compiler/C2000 Code Generation Tools 5.2.10/lib" -i"C:/Texas Instruments/ccsv4/tools/compiler/C2000 Code Generation Tools 5.2.10/include" -i"C:/Texas Instruments/bios_5_41_10_36/packages/ti/rtdx/lib/c2000" -i"C:/Texas Instruments/bios_5_41_10_36/packages/ti/bios/lib" -i"C:/SVN/UAC/Firmware/Bootloader" -i".." --reread_libs --xml_link_info="c:/svn/uac/firmware/bootloader/LinkInfo.txt" --rom_model -o "Bootloader.out" -l"./bootloadercfg.cmd"  "./bootloadercfg_c.obj" "./bootloadercfg.obj" "./Thread.obj" "./Sx2Usb.obj" "./Supervisor.obj" "./RtosDisabler.obj" "./Object.obj" "./Heap.obj" "./CoffLoader.obj" "./CaliperProductId.obj" "./CaliperBufferRouter.obj" "./C28PieInterrupt.obj" "./C28PeripheralIO.obj" "./C28Interrupt.obj" "./C28GpioDigitalOutput.obj" "./C28Flash.obj" "./C28ExternalInterrupt.obj" "./BufferRouter.obj" "./BootloaderSupervisor.obj" "./Bootloader.obj" "./BootloadHandler.obj" "./BeforeMain.obj" "C:/SVN/UAC/Firmware/Platform/TI/Flash2812_API_V210.lib"
    <Linking>
    "C:/SVN/UAC/Firmware/Foundation/Object.h", line 8: remark #403-D: destructor for base class "ListItem<Object>" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Thread.h", line 8: remark #403-D: destructor for base class "ListItem<Thread>" is not virtual
    "C:\SVN\UAC\Firmware\BaseObjects\Supervisor.h", line 9: remark #403-D: destructor for base class "Object" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Object.h", line 8: remark #403-D: destructor for base class "ListItem<Object>" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Buffer.h", line 8: remark #403-D: destructor for base class "ListItem<Buffer<T>>" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Queue.h", line 8: remark #403-D: destructor for base class "List<T>" is not virtual
    "C:\SVN\UAC\Firmware\BaseObjects\BufferHandler.h", line 7: remark #403-D: destructor for base class "Object" is not virtual
    "C:\SVN\UAC\Firmware\BaseObjects\BufferPool.h", line 7: remark #403-D: destructor for base class "Object" is not virtual
    "C:/SVN/UAC/Firmware/BaseObjects/BufferRouter.h", line 24: remark #403-D: destructor for base class "ListItem<BufferRouter::Target>" is not virtual
    "C:/SVN/UAC/Firmware/BaseObjects/BufferRouter.h", line 8: remark #403-D: destructor for base class "BufferHandler" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Thread.h", line 8: remark #403-D: destructor for base class "ListItem<Thread>" is not virtual
    "C:/SVN/UAC/Firmware/BaseObjects/Comm.h", line 5: remark #403-D: destructor for base class "Object" is not virtual
    "C:/SVN/UAC/Firmware/BaseObjects/Debug.h", line 9: remark #403-D: destructor for base class "Object" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Object.h", line 8: remark #403-D: destructor for base class "ListItem<Object>" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Buffer.h", line 8: remark #403-D: destructor for base class "ListItem<Buffer<T>>" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Queue.h", line 8: remark #403-D: destructor for base class "List<T>" is not virtual
    "C:/SVN/UAC/Firmware/BaseObjects/BufferHandler.h", line 7: remark #403-D: destructor for base class "Object" is not virtual
    "C:/SVN/UAC/Firmware/Foundation/Thread.h", line 8: remark #403-D: destructor for base class "ListItem<Thread>" is not virtual
    "C:\SVN\UAC\Firmware\DerivedObjects\BootloadHandler.h", line 10: remark #403-D: destructor for base class "BufferHandler" is not virtual
    "C:/SVN/UAC/Firmware/BaseObjects/Comm.h", line 5: remark #403-D: destructor for base class "Object" is not virtual
    "./bootloadercfg.cmd", line 324: remark #10191-D: object ".printf" is not
       allocated, but is being placed as part of allocated object "GROUP_1"
    warning #10096-D: specified address lies outside memory map
    error #10264: DEFAULT memory range overlaps existing memory range H0SARAM
    error #10264: DEFAULT memory range overlaps existing memory range FLASHAPI
    error #10264: DEFAULT memory range overlaps existing memory range BOOTROM
    error #10264: DEFAULT memory range overlaps existing memory range VIRTUAL
    error #10010: errors encountered during linking; "Bootloader.out" not built

    >> Compilation failure
    gmake: *** [Bootloader.out] Error 1
    gmake: Target `main-build' not remade because of errors.
    Build complete for project Bootloader

     

  • I don't see any other command files listed in the build output so I'm not quite sure where why the memory range overlap errors are occuring. We may need your project to reproduce the issue in order to analyze this further. Are you able to export your project and attach it here? Or if you do not wish to post it here, you could send it to me via a private conversation.

  • Aarti:

    Thank you for your willingness to help.

    I believe I should not post our project for the whole world to see.

    I am willing to send it to you as a private conversation but not sure on the procedure from within the forum.  Maybe I can simply e-mail it to you?

    If you can contact me using the e-mail or phone number from my profile I can respond to send you the archive.

     

    Tom

  • nzelmanm said:
    I am willing to send it to you as a private conversation but not sure on the procedure from within the forum

    I just sent you a friend request on the forum. When you accept it we can start a private conversation and you can attach the project in your message to me.

  • For the benefit of others following this thread, the following linker errors were reproducible and seemed to be related to a having a fill value specification for certain memory ranges.

    nzelmanm said:
    error #10264: DEFAULT memory range overlaps existing memory range H0SARAM
    error #10264: DEFAULT memory range overlaps existing memory range FLASHAPI
    error #10264: DEFAULT memory range overlaps existing memory range BOOTROM
    error #10264: DEFAULT memory range overlaps existing memory range VIRTUAL

    It has been submitted as bug # SDSCM00040571.