Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

Compiler/AM3358: How to set _c_int00 to address 0x80000000 using TI compiler

Part Number: AM3358
Other Parts Discussed in Thread: SYSBIOS

Tool/software: TI C/C++ Compiler

Hi,

I've ported a program from GCC to the TI compiler and have been unable to set _c_int00 to address 0x80000000. How is this done?

I've consulted all the manuals for the compiler, for XDC, searched the forums and the FAQ here:

processors.wiki.ti.com/.../Accessing_c_int00

On GCC the address was set in the *.CFG with the following code:

Program.sectMap[".c_int00"] = new Program.SectionSpec();
Program.sectMap[".c_int00"].loadAddress = 0x80000000;
Program.sectMap[".c_int00"].runAddress = 0x80000000;

Under the TI compiler, it adds a line to the linker script:

.c_int00: load > 0x80000000, run > 0x80000000

The end result is the same though - the linker assigns the wrong address as shown below in this fragment of the map file:

ENTRY POINT SYMBOL: "_c_int00"  address: 8518c020

I would greatly appreciate any suggestions as to how to resolve this issue.

The tools I am using are:

CCS 6.1.1.00022

TI Compiler v5.2.5

XDC Tools 3.31.0.24_core

SYS/BIOS 6.42.3.35

CPU is AM335x

I've attached a copy of the linker script and map file.

Mapfile.txt

8662.linker.txt
/*
 * Do not modify this file; it is automatically generated from the template
 * linkcmd.xdt in the ti.targets.elf package and will be overwritten.
 */

/*
 * put '"'s around paths because, without this, the linker
 * considers '-' as minus operator, not a file name character.
 */


-l"C:\Users\astevenson\TIWorkspace\xDEV\Debug\configPkg\package\cfg\bigtime_pea8f.oea8f"
-l"C:\Users\astevenson\TIWorkspace\xDEV\src\sysbios\sysbios.aea8f"
-l"C:\ti\bios_6_42_03_35\packages\ti\targets\arm\rtsarm\lib\ti.targets.arm.rtsarm.aea8f"
-l"C:\ti\bios_6_42_03_35\packages\ti\targets\arm\rtsarm\lib\boot.aea8f"
-l"C:\ti\bios_6_42_03_35\packages\ti\targets\arm\rtsarm\lib\auto_init.aea8f"

--retain="*(xdc.meta)"

/* C6x Elf symbols */
--symbol_map __TI_STACK_SIZE=__STACK_SIZE
--symbol_map __TI_STACK_BASE=__stack
--symbol_map _stack=__stack



--args 0x0
-heap  0x0
-stack 0x100000

MEMORY
{
    SRAM_LO (RWX) : org = 0x402f0000, len = 0x400
    SRAM_HI (RWX) : org = 0x402f0400, len = 0xfc00
    OCMC_SRAM (RWX) : org = 0x40300000, len = 0x10000
    DDR3 (RWX) : org = 0x80000000, len = 0x40000000
}

/*
 * Linker command file contributions from all loaded packages:
 */

/* Content from xdc.services.global (null): */

/* Content from xdc (null): */

/* Content from xdc.corevers (null): */

/* Content from xdc.shelf (null): */

/* Content from xdc.services.spec (null): */

/* Content from xdc.services.intern.xsr (null): */

/* Content from xdc.services.intern.gen (null): */

/* Content from xdc.services.intern.cmd (null): */

/* Content from xdc.bld (null): */

/* Content from ti.targets (null): */

/* Content from ti.targets.arm.elf (null): */

/* Content from xdc.rov (null): */

/* Content from xdc.runtime (null): */

/* Content from ti.targets.arm.rtsarm (null): */

/* Content from ti.sysbios.interfaces (null): */

/* Content from ti.sysbios.family (null): */

/* Content from ti.sysbios.family.arm (ti/sysbios/family/arm/linkcmd.xdt): */
--retain "*(.vecs)"

/* Content from xdc.services.getset (null): */

/* Content from ti.sysbios.family.arm.a8 (null): */

/* Content from ti.sysbios.rts (ti/sysbios/rts/linkcmd.xdt): */

/* Content from xdc.runtime.knl (null): */

/* Content from ti.catalog.arm.cortexa8 (null): */

/* Content from ti.catalog.peripherals.hdvicp2 (null): */

/* Content from ti.catalog (null): */

/* Content from xdc.platform (null): */

/* Content from xdc.cfg (null): */

/* Content from ti.platforms.generic (null): */

/* Content from ADK_14P0062C (null): */

/* Content from ti.sysbios (null): */

/* Content from ti.sysbios.hal (null): */

/* Content from ti.sysbios.knl (null): */

/* Content from ti.sysbios.gates (null): */

/* Content from ti.sysbios.heaps (null): */

/* Content from ti.sysbios.family.arm.exc (null): */

/* Content from ti.sysbios.family.arm.a8.intcps (ti/sysbios/family/arm/a8/intcps/linkcmd.xdt): */
ti_sysbios_family_arm_a8_intcps_Hwi_intc = 0x48200000;

/* Content from ti.sysbios.xdcruntime (null): */

/* Content from ti.sysbios.utils (null): */

/* Content from configPkg (null): */

/* Content from xdc.services.io (null): */


/*
 * symbolic aliases for static instance objects
 */
xdc_runtime_Startup__EXECFXN__C = 1;
xdc_runtime_Startup__RESETFXN__C = 1;
TSK_idle = ti_sysbios_knl_Task_Object__table__V + 0;

SECTIONS
{
    .text: load >> DDR3
    .stack: load > DDR3
    GROUP: load > DDR3
    {
        .bss:
        .neardata:
        .rodata:
    }
    .binit: load > DDR3
    .cinit: load > DDR3
    .init_array: load > DDR3
    .const: load >> DDR3
    .data: load >> DDR3
    .fardata: load >> DDR3
    .switch: load >> DDR3
    .sysmem: load > DDR3
    .far: load >> DDR3
    .args: load > DDR3 align = 0x4, fill = 0 {_argsize = 0x0; }
    .cio: load >> DDR3
    .ARM.exidx: load > DDR3
    .ARM.extab: load >> DDR3
    .c_int00: load > 0x80000000, run > 0x80000000
    .vecs: load > DDR3
    ti.sysbios.family.arm.a8.mmuTableSection: load > DDR3, type = NOINIT
    xdc.meta: load > DDR3, type = COPY

}

  • The symbol "_c_int00" and the section ".c_int00" are not necessarily related. You need to make sure that _c_int00 is the first address in section ".c_int00". Otherwise, you'll need to change the linker command file so that it refers to the section _c_int00 is actually in.
  • Thanks for your reply.

    It would appear that _c_int00 is inside .text - the linker lists it as:

    8518C020 boot.aea8f : boot.oea8f (.text)

    What would I need in the linker script or *.cfg to move this function to 0x80000000?
  • Try this:

    .c_int00 { boot.oea8f(.text) } : load > 0x80000000, run > 0x80000000

    This assumes that _c_int00 is at the first address of .text in boot.oea8f.

  • Thank you for your reply. I added the line you suggested and got the following errors:

    "configPkg/linker.cmd", line 135: error #10008-D: cannot find file "boot.oea8f"

    "configPkg/linker.cmd", line 135: error #10026-D: expecting output section, GROUP, or UNION instead of ":"

    "configPkg/linker.cmd", line 135: warning #10068-D: no matching section

    SECTIONS

    {

    .c_int00 { boot.oea8f(.text) } : load > 0x80000000, run > 0x80000000 <-- line 135

       .text: load >> DDR3

       .stack: load > DDR3

       GROUP: load > DDR3

       {

           .bss:

           .neardata:

           .rodata:

       }

       .binit: load > DDR3

       .cinit: load > DDR3

       .init_array: load > DDR3

       .const: load >> DDR3

       .data: load >> DDR3

       .fardata: load >> DDR3

       .switch: load >> DDR3

       .sysmem: load > DDR3

       .far: load >> DDR3

       .args: load > DDR3 align = 0x4, fill = 0 {_argsize = 0x0; }

       .cio: load >> DDR3

       .ARM.exidx: load > DDR3

       .ARM.extab: load >> DDR3

       .vecs: load > DDR3

       ti.sysbios.family.arm.a8.mmuTableSection: load > DDR3, type = NOINIT

       xdc.meta: load > DDR3, type = COPY

    }

    I noticed in the map file that '_c_int00' is listed under GLOBAL SYMBOLS. It isn't listed under ".text" in the SECTION ALLOCATION MAP even though the address falls within the range assigned to .text. Would this have a bearing on the issue?

    I've attached the map file, command file and boot.asm files:

    boot.txt
    ;******************************************************************************
    ;* BOOT  v15.4.0I15142                                                        *
    ;*                                                                            *
    ;* Copyright (c) 1996-2015 Texas Instruments Incorporated                     *
    ;* http://www.ti.com/                                                         *
    ;*                                                                            *
    ;*  Redistribution and  use in source  and binary forms, with  or without     *
    ;*  modification,  are permitted provided  that the  following conditions     *
    ;*  are met:                                                                  *
    ;*                                                                            *
    ;*     Redistributions  of source  code must  retain the  above copyright     *
    ;*     notice, this list of conditions and the following disclaimer.          *
    ;*                                                                            *
    ;*     Redistributions in binary form  must reproduce the above copyright     *
    ;*     notice, this  list of conditions  and the following  disclaimer in     *
    ;*     the  documentation  and/or   other  materials  provided  with  the     *
    ;*     distribution.                                                          *
    ;*                                                                            *
    ;*     Neither the  name of Texas Instruments Incorporated  nor the names     *
    ;*     of its  contributors may  be used to  endorse or  promote products     *
    ;*     derived  from   this  software  without   specific  prior  written     *
    ;*     permission.                                                            *
    ;*                                                                            *
    ;*  THIS SOFTWARE  IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS     *
    ;*  "AS IS"  AND ANY  EXPRESS OR IMPLIED  WARRANTIES, INCLUDING,  BUT NOT     *
    ;*  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR     *
    ;*  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT     *
    ;*  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     *
    ;*  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL  DAMAGES  (INCLUDING, BUT  NOT     *
    ;*  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     *
    ;*  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     *
    ;*  THEORY OF  LIABILITY, WHETHER IN CONTRACT, STRICT  LIABILITY, OR TORT     *
    ;*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE     *
    ;*  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.      *
    ;*                                                                            *
    ;******************************************************************************
    
    ;****************************************************************************
    ;* BOOT.ASM
    ;*
    ;* THIS IS THE INITAL BOOT ROUTINE FOR TMS470 C++ PROGRAMS.
    ;* IT MUST BE LINKED AND LOADED WITH ALL C++ PROGRAMS.
    ;*
    ;* THIS MODULE PERFORMS THE FOLLOWING ACTIONS:
    ;*   1) ALLOCATES THE STACK AND INITIALIZES THE STACK POINTER
    ;*   2) CALLS AUTO-INITIALIZATION ROUTINE
    ;*   3) CALLS THE FUNCTION MAIN TO START THE C++ PROGRAM
    ;*   4) CALLS THE STANDARD EXIT ROUTINE
    ;*
    ;* THIS MODULE DEFINES THE FOLLOWING GLOBAL SYMBOLS:
    ;*   1) __stack     STACK MEMORY AREA
    ;*   2) _c_int00    BOOT ROUTINE
    ;*
    ;****************************************************************************
       .if  __TI_ARM_V7M__ | __TI_ARM_V6M0__
    	.thumbfunc _c_int00
       .else
    	.armfunc _c_int00
       .endif
    
    ;****************************************************************************
    ; Accomodate different lowerd names in different ABIs
    ;****************************************************************************
       .if   __TI_EABI_ASSEMBLER
            .asg	_system_pre_init, PRE_INIT_RTN
            .asg	__TI_auto_init, AUTO_INIT_RTN
            .asg	_args_main,   ARGS_MAIN_RTN
            .asg	exit,         EXIT_RTN
            .asg    main_func_sp, MAIN_FUNC_SP
       .else ; COFF TI ARM9 ABI
            .asg	__system_pre_init, PRE_INIT_RTN
            .asg	__TI_auto_init, AUTO_INIT_RTN ; NOTE does not use COFF prefix
            .asg	__args_main,   ARGS_MAIN_RTN
            .asg	_exit,         EXIT_RTN
            .asg    _main_func_sp, MAIN_FUNC_SP
       .endif
    
       .if .TMS470_16BIS
    
    ;****************************************************************************
    ;*  16 BIT STATE BOOT ROUTINE                                               *
    ;****************************************************************************
    
       .if __TI_ARM_V7M__ | __TI_ARM_V6M0__
    	.thumb
       .else
    	.arm
       .endif
    
    	.global	__stack
    ;***************************************************************
    ;* DEFINE THE USER MODE STACK (DEFAULT SIZE IS 512)
    ;***************************************************************
    __stack:.usect	".stack", 0, 4
    
    	.global	_c_int00
    
    ;***************************************************************
    ;* FUNCTION DEF: _c_int00
    ;***************************************************************
    _c_int00: .asmfunc
    
    	.if !__TI_ARM_V7M__ & !__TI_ARM_V6M0__
    	.if __TI_NEON_SUPPORT__ | __TI_VFP_SUPPORT__
            ;*------------------------------------------------------
    	;* SETUP PRIVILEGED AND USER MODE ACCESS TO COPROCESSORS
    	;* 10 AND 11, REQUIRED TO ENABLE NEON/VFP
    	;* COPROCESSOR ACCESS CONTROL REG
    	;* BITS [23:22] - CP11, [21:20] - CP10
    	;* SET TO 0b11 TO ENABLE USER AND PRIV MODE ACCESS
            ;*------------------------------------------------------
    		MRC      p15,#0x0,r0,c1,c0,#2
            MOV      r3,#0xf00000
    		ORR      r0,r0,r3
            MCR      p15,#0x0,r0,c1,c0,#2
    
            ;*------------------------------------------------------
    	; SET THE EN BIT, FPEXC[30] TO ENABLE NEON AND VFP
            ;*------------------------------------------------------
          	MOV      r0,#0x40000000
            FMXR     FPEXC,r0
            .endif ; __TI_NEON_SUPPORT__ | __TI_VFP_SUPPORT__
    
            ;------------------------------------------------------
    	;* SET TO USER MODE
            ;*------------------------------------------------------
            MRS     r0, cpsr
            BIC     r0, r0, #0x1F  ; CLEAR MODES
            ORR     r0, r0, #0x10  ; SET USER MODE
            MSR     cpsr_cf, r0
    
            ;*------------------------------------------------------
    	;* CHANGE TO 16 BIT STATE
            ;*------------------------------------------------------
    	ADD	r0, pc, #1
    	BX	r0
    
    		.thumb
            .else ; !__TI_ARM_V7M & !__TI_ARM_V6M0
    	.if __TI_TMS470_V7M4__ & __TI_VFP_SUPPORT__
    	.thumb
    	;*------------------------------------------------------
    	;* SETUP FULL ACCESS TO COPROCESSORS 10 AND 11,
    	;* REQUIRED FOR FP. COPROCESSOR ACCESS CONTROL REG
    	;* BITS [23:22] - CP11, [21:20] - CP10
    	;* SET TO 0b11 TO ENABLE FULL ACCESS
            ;*------------------------------------------------------
    cpacr   .set     0xE000ED88			; CAPCR address
    	MOVW     r1, #cpacr & 0xFFFF
    	MOVT     r1, #cpacr >> 16
    	LDR      r0, [ r1 ]
           	MOV      r3, #0xf0
    	ORR      r0,r0,r3, LSL #16
    	STR      r0, [ r1 ]
    	.thumb
    	.endif ; __TI_TMS470_V7M4__ & __TI_VFP_SUPPORT__
    	.endif ; !__TI_ARM_V7M & !__TI_ARM_V6M0__
    
    	;*------------------------------------------------------
            ;* INITIALIZE THE USER MODE STACK
            ;*------------------------------------------------------
    	.if __TI_AVOID_EMBEDDED_CONSTANTS
    	.thumb
    	MOVW	r0, __stack
    	MOVT	r0, __stack
    	MOV	sp, r0
    	MOVW	r0, __STACK_SIZE
    	MOVT	r0, __STACK_SIZE
    	.thumb
    	.else ; __TI_AVOID_EMBEDDED_CONSTANTS
    	LDR     r0, c_stack
    	MOV	sp, r0
            LDR     r0, c_STACK_SIZE
    	.endif ; __TI_AVOID_EMBEDDED_CONSTANTS
    	ADD	sp, r0
    
    	;*-----------------------------------------------------
    	;* ALIGN THE STACK TO 64-BITS IF EABI.
    	;*-----------------------------------------------------
    	.if __TI_EABI_ASSEMBLER
    	MOV	r7, sp
    	MOVS	r0, #0x07
    	BICS    r7, r0         ; Clear upper 3 bits for 64-bit alignment.
    	MOV	sp, r7
    	.endif
    
    	;*-----------------------------------------------------
    	;* SAVE CURRENT STACK POINTER FOR SDP ANALYSIS
    	;*-----------------------------------------------------
    	.if __TI_AVOID_EMBEDDED_CONSTANTS
    	.thumb
    	MOVW	r0, MAIN_FUNC_SP
    	MOVT	r0, MAIN_FUNC_SP
    	.thumb
    	.else
    	LDR	r0, c_mf_sp
    	.endif
    	MOV	r7, sp
    	STR	r7, [r0]
    
            ;*------------------------------------------------------
            ;* Perform all the required initializations when
            ;* _system_pre_init() returns non-zero:
            ;*   - Process BINIT Table
            ;*   - Perform C auto initialization
            ;*   - Call global constructors
            ;*------------------------------------------------------
            BL      PRE_INIT_RTN
            CMP     R0, #0
            BEQ     bypass_auto_init
            BL      AUTO_INIT_RTN
    bypass_auto_init:
    
            ;*------------------------------------------------------
    	;* CALL APPLICATION
            ;*------------------------------------------------------
            BL      ARGS_MAIN_RTN
    
            ;*------------------------------------------------------
    	;* IF APPLICATION DIDN'T CALL EXIT, CALL EXIT(1)
            ;*------------------------------------------------------
            MOVS    r0, #1
            BL      EXIT_RTN
    
            ;*------------------------------------------------------
    	;* DONE, LOOP FOREVER
            ;*------------------------------------------------------
    L1:     B	L1
    	.endasmfunc
    
       .else           ; !.TMS470_16BIS
    
    ;****************************************************************************
    ;*  32 BIT STATE BOOT ROUTINE                                               *
    ;****************************************************************************
    
            .global __stack
    ;***************************************************************
    ;* DEFINE THE USER MODE STACK (DEFAULT SIZE IS 512)
    ;***************************************************************
    __stack:.usect  ".stack", 0, 4
    
            .global _c_int00
    ;***************************************************************
    ;* FUNCTION DEF: _c_int00
    ;***************************************************************
    _c_int00: .asmfunc
    
            .if __TI_NEON_SUPPORT__ | __TI_VFP_SUPPORT__
            ;*------------------------------------------------------
            ;* SETUP PRIVILEGED AND USER MODE ACCESS TO COPROCESSORS
            ;* 10 AND 11, REQUIRED TO ENABLE NEON/VFP
            ;* COPROCESSOR ACCESS CONTROL REG
            ;* BITS [23:22] - CP11, [21:20] - CP10
            ;* SET TO 0b11 TO ENABLE USER AND PRIV MODE ACCESS
            ;*------------------------------------------------------
            MRC      p15,#0x0,r0,c1,c0,#2
            MOV      r3,#0xf00000
            ORR      r0,r0,r3
            MCR      p15,#0x0,r0,c1,c0,#2
    
            ;*------------------------------------------------------
            ; SET THE EN BIT, FPEXC[30] TO ENABLE NEON AND VFP
            ;*------------------------------------------------------
            MOV      r0,#0x40000000
            FMXR     FPEXC,r0
            .endif
    
            ;*------------------------------------------------------
            ;* SET TO USER MODE
            ;*------------------------------------------------------
            MRS     r0, cpsr
            BIC     r0, r0, #0x1F  ; CLEAR MODES
            ORR     r0, r0, #0x10  ; SET USER MODE
            MSR     cpsr_cf, r0
    
            ;*------------------------------------------------------
            ;* INITIALIZE THE USER MODE STACK
            ;*------------------------------------------------------
            .if __TI_AVOID_EMBEDDED_CONSTANTS
            MOVW    sp, __stack
            MOVT    sp, __stack
            MOVW    r0, __STACK_SIZE
            MOVT    r0, __STACK_SIZE
            .else
            LDR     sp, c_stack
            LDR     r0, c_STACK_SIZE
            .endif
            ADD     sp, sp, r0
    
            ;*-----------------------------------------------------
            ;* ALIGN THE STACK TO 64-BITS IF EABI.
            ;*-----------------------------------------------------
            .if __TI_EABI_ASSEMBLER
            BIC     sp, sp, #0x07  ; Clear upper 3 bits for 64-bit alignment.
            .endif
    
            ;*-----------------------------------------------------
            ;* SAVE CURRENT STACK POINTER FOR SDP ANALYSIS
            ;*-----------------------------------------------------
            .if __TI_AVOID_EMBEDDED_CONSTANTS
            MOVW    r0, MAIN_FUNC_SP
            MOVT    r0, MAIN_FUNC_SP
            .else
            LDR     r0, c_mf_sp
            .endif
            STR     sp, [r0]
    
            ;*------------------------------------------------------
            ;* Perform all the required initializations when
            ;* _system_pre_init() returns non-zero:
            ;*   - Process BINIT Table
            ;*   - Perform C auto initialization
            ;*   - Call global constructors
            ;*------------------------------------------------------
            BL      PRE_INIT_RTN
            CMP     R0, #0
            BEQ     bypass_auto_init
            BL      AUTO_INIT_RTN
    bypass_auto_init:
    
            ;*------------------------------------------------------
            ;* CALL APPLICATION
            ;*------------------------------------------------------
            BL      ARGS_MAIN_RTN
    
            ;*------------------------------------------------------
            ;* IF APPLICATION DIDN'T CALL EXIT, CALL EXIT(1)
            ;*------------------------------------------------------
            MOV     R0, #1
            BL      EXIT_RTN
    
            ;*------------------------------------------------------
            ;* DONE, LOOP FOREVER
            ;*------------------------------------------------------
    L1:     B       L1
            .endasmfunc
    
       .endif    ; !.TMS470_16BIS
    
    ;***************************************************************
    ;* CONSTANTS USED BY THIS MODULE
    ;***************************************************************
            .if !__TI_AVOID_EMBEDDED_CONSTANTS
    c_stack         .long    __stack
    c_STACK_SIZE    .long    __STACK_SIZE
    c_mf_sp         .long    MAIN_FUNC_SP
            .endif
    
            .if __TI_EABI_ASSEMBLER
            .data
            .align 4
    _stkchk_called:
            .field          0,32
            .else
            .sect   ".cinit"
            .align  4
            .field          4,32
            .field          _stkchk_called+0,32
            .field          0,32
    
            .bss    _stkchk_called,4,4
            .symdepend ".cinit", ".bss"
            .symdepend ".cinit", ".text"
            .symdepend ".bss", ".text"
            .endif
    
    ;******************************************************
    ;* UNDEFINED REFERENCES                               *
    ;******************************************************
    	.global _stkchk_called
    	.global	__STACK_SIZE
            .global PRE_INIT_RTN
            .global AUTO_INIT_RTN
    	.global ARGS_MAIN_RTN
    	.global MAIN_FUNC_SP
    	.global	EXIT_RTN
    
    	.end
    
    5165.linker.txt
    /*
     * Do not modify this file; it is automatically generated from the template
     * linkcmd.xdt in the ti.targets.elf package and will be overwritten.
     */
    
    /*
     * put '"'s around paths because, without this, the linker
     * considers '-' as minus operator, not a file name character.
     */
    
    
    -l"C:\Users\astevenson\TIWorkspace\xDEV\Debug\configPkg\package\cfg\bigtime_pea8f.oea8f"
    -l"C:\Users\astevenson\TIWorkspace\xDEV\src\sysbios\sysbios.aea8f"
    -l"C:\ti\bios_6_42_03_35\packages\ti\targets\arm\rtsarm\lib\ti.targets.arm.rtsarm.aea8f"
    -l"C:\ti\bios_6_42_03_35\packages\ti\targets\arm\rtsarm\lib\boot.aea8f"
    -l"C:\ti\bios_6_42_03_35\packages\ti\targets\arm\rtsarm\lib\auto_init.aea8f"
    
    --retain="*(xdc.meta)"
    
    /* C6x Elf symbols */
    --symbol_map __TI_STACK_SIZE=__STACK_SIZE
    --symbol_map __TI_STACK_BASE=__stack
    --symbol_map _stack=__stack
    
    
    
    --args 0x0
    -heap  0x0
    -stack 0x100000
    
    MEMORY
    {
        SRAM_LO (RWX) : org = 0x402f0000, len = 0x400
        SRAM_HI (RWX) : org = 0x402f0400, len = 0xfc00
        OCMC_SRAM (RWX) : org = 0x40300000, len = 0x10000
        DDR3 (RWX) : org = 0x80000000, len = 0x40000000
    }
    
    /*
     * Linker command file contributions from all loaded packages:
     */
    
    /* Content from xdc.services.global (null): */
    
    /* Content from xdc (null): */
    
    /* Content from xdc.corevers (null): */
    
    /* Content from xdc.shelf (null): */
    
    /* Content from xdc.services.spec (null): */
    
    /* Content from xdc.services.intern.xsr (null): */
    
    /* Content from xdc.services.intern.gen (null): */
    
    /* Content from xdc.services.intern.cmd (null): */
    
    /* Content from xdc.bld (null): */
    
    /* Content from ti.targets (null): */
    
    /* Content from ti.targets.arm.elf (null): */
    
    /* Content from xdc.rov (null): */
    
    /* Content from xdc.runtime (null): */
    
    /* Content from ti.targets.arm.rtsarm (null): */
    
    /* Content from ti.sysbios.interfaces (null): */
    
    /* Content from ti.sysbios.family (null): */
    
    /* Content from ti.sysbios.family.arm (ti/sysbios/family/arm/linkcmd.xdt): */
    --retain "*(.vecs)"
    
    /* Content from xdc.services.getset (null): */
    
    /* Content from ti.sysbios.family.arm.a8 (null): */
    
    /* Content from ti.sysbios.rts (ti/sysbios/rts/linkcmd.xdt): */
    
    /* Content from xdc.runtime.knl (null): */
    
    /* Content from ti.catalog.arm.cortexa8 (null): */
    
    /* Content from ti.catalog.peripherals.hdvicp2 (null): */
    
    /* Content from ti.catalog (null): */
    
    /* Content from xdc.platform (null): */
    
    /* Content from xdc.cfg (null): */
    
    /* Content from ti.platforms.generic (null): */
    
    /* Content from ADK_14P0062C (null): */
    
    /* Content from ti.sysbios (null): */
    
    /* Content from ti.sysbios.hal (null): */
    
    /* Content from ti.sysbios.knl (null): */
    
    /* Content from ti.sysbios.gates (null): */
    
    /* Content from ti.sysbios.heaps (null): */
    
    /* Content from ti.sysbios.family.arm.exc (null): */
    
    /* Content from ti.sysbios.family.arm.a8.intcps (ti/sysbios/family/arm/a8/intcps/linkcmd.xdt): */
    ti_sysbios_family_arm_a8_intcps_Hwi_intc = 0x48200000;
    
    /* Content from ti.sysbios.xdcruntime (null): */
    
    /* Content from ti.sysbios.utils (null): */
    
    /* Content from configPkg (null): */
    
    /* Content from xdc.services.io (null): */
    
    
    /*
     * symbolic aliases for static instance objects
     */
    xdc_runtime_Startup__EXECFXN__C = 1;
    xdc_runtime_Startup__RESETFXN__C = 1;
    TSK_idle = ti_sysbios_knl_Task_Object__table__V + 0;
    
    
    
    SECTIONS
    {
    	.c_int00 { boot.oea8f(.text) } : load > 0x80000000, run > 0x80000000
        .text: load >> DDR3
        .stack: load > DDR3
        GROUP: load > DDR3
        {
            .bss:
            .neardata:
            .rodata:
        }
        .binit: load > DDR3
        .cinit: load > DDR3
        .init_array: load > DDR3
        .const: load >> DDR3
        .data: load >> DDR3
        .fardata: load >> DDR3
        .switch: load >> DDR3
        .sysmem: load > DDR3
        .far: load >> DDR3
        .args: load > DDR3 align = 0x4, fill = 0 {_argsize = 0x0; }
        .cio: load >> DDR3
        .ARM.exidx: load > DDR3
        .ARM.extab: load >> DDR3
        .vecs: load > DDR3
        ti.sysbios.family.arm.a8.mmuTableSection: load > DDR3, type = NOINIT
        xdc.meta: load > DDR3, type = COPY
    
    }
    
    xDEV.txt

  • It turns out that boot.oea8f is in an archive, so you need to specify it like so:

    .c_int00 { boot.aea8f<boot.oea8f>(.text) } : load > 0x80000000, run > 0x80000000

    Please carefully note the difference between the name of the archive and the name of the object file in the archive ('a' vs 'o')