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.

Simple Linker Issues - Undefined Symbols & vtable Issue - Not seeing it.

Other Parts Discussed in Thread: CODECOMPOSER, SYSBIOS, LM3S6965

Hi TI:

I am still trying to get up to speed on SYS/BIOS and StellarisWare.

I am running into "simple"; but, perplexing issues. (2 Issues, 1 Question)

I tried to boil the program down to bare essentials. Any help would be greatly appreciated.

SYS/BIOS - 6.34.2.18 / CodeComposer: 5.3.0.00090

 

The Issues and Question are at the bottom.

The program...  (10 lines!)

 

#include <ti/sysbios/BIOS.h>

#include "inc/lm3s6965.h"       // I2C0SCL_PORT, I2C0SDA_PORT

#include "inc/hw_ints.h"          // INT_I2C0

#include "inc/hw_types.h"       // false & tBoolean

#include "driverlib/interrupt.h" // IntEnable

Void main()

{

  IntEnable(INT_I2C0);

  BIOS_start();                            /* enable interrupts and start SYS/BIOS */

}

 

The project files…  As you can see, I have interrupt.c, cpu.c and lm3s6965.h are imported via link.  The files are all untouched.


Contents of the lm3s6965.cmd file….  *some comments were removed.

/* Default Linker Command file for the Texas Instruments LM3S6965

* This is part of revision 9385 of the Stellaris Peripheral Driver Library. */

--retain=g_pfnVectors

MEMORY

{

    FLASH (RX) : origin = 0x00000000, length = 0x00040000

    SRAM (RWX) : origin = 0x20000000, length = 0x00010000

}

/* --heap_size=0                                                             */

/* --stack_size=256                                                          */

/* --library=rtsv7M3_T_le_eabi.lib                                           */

 

SECTIONS

{

    .intvecs:   > 0x00000000

    .text   :   > FLASH

    .const  :   > FLASH

    .cinit  :   > FLASH

    .pinit  :   > FLASH

 

    .vtable :   > 0x20000000

    .data   :   > SRAM

    .bss    :   > SRAM

    .sysmem :   > SRAM

    .stack  :   > SRAM

}

 

__STACK_TOP = __stack + 256;

 

**** Build of configuration Debug for project Test8 ****

 

"C:\\ti\\ccsv5\\utils\\bin\\gmake" -k all

making ../src/sysbios.aem3 ...

gmake[1]: Nothing to be done for `all'.

'Building file: ../main.c'

'Invoking: ARM Compiler'

"C:/ti/ccsv5/tools/compiler/arm_5.0.4/bin/armcl" -mv7M3 --code_state=16 --abi=eabi -me -g --include_path="C:/ti/ccsv5/tools/compiler/arm_5.0.4/include" --include_path="C:/StellarisWare/" --gcc --diag_warning=225 --display_error_number --diag_wrap=off --preproc_with_compile --preproc_dependency="main.pp" --cmd_file="./configPkg/compiler.opt"  "../main.c"

'Finished building: ../main.c'

' '

'Building target: Test8.out'

'Invoking: ARM Linker'

"C:/ti/ccsv5/tools/compiler/arm_5.0.4/bin/armcl" -mv7M3 --code_state=16 --abi=eabi -me -g --gcc --diag_warning=225 --display_error_number --diag_wrap=off -z --stack_size=256 -m"Test8.map" --heap_size=0 -i"C:/ti/ccsv5/tools/compiler/arm_5.0.4/lib" -i"C:/ti/ccsv5/tools/compiler/arm_5.0.4/include" --reread_libs --warn_sections --display_error_number --diag_wrap=off --rom_model -o "Test8.out"

-l"./configPkg/linker.cmd"  "./main.obj" "./interrupt.obj" "./cpu.obj" -l"libc.a" "../lm3s6965.cmd"

<Linking>

 

Issue #1

warning #10247-D: creating output section "vtable" without a SECTIONS specification

 

 

Issue #2

 undefined     first referenced

  symbol           in file    

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

 CPUbasepriGet ./interrupt.obj

 CPUbasepriSet ./interrupt.obj

 CPUcpsid      ./interrupt.obj

 CPUcpsie      ./interrupt.obj

 

error #10234-D: unresolved symbols remain

error #10010: errors encountered during linking; "Test8.out" not built

 

 

 

Issue #1… Very perplexing since I see this in the lm3s6965.cmd file.

 

Issue #2….  I think I’m seeing all of the object files being created; but, I can’t understand why the linker is complaining about this. 

I’ve tried to go through the forums and add what I can see to add; but, this is not adding up for me.  Any help would be greatly appreciated.

 

Question…. The contents of the program bother me.  These are examples that I picked off from the forum.

     IntEnable(INT_I2C0);  // I am enabling an interrupt due to all of the samples that I see.

     BIOS_start();                   // enable interrupts and start SYS/BIOS

So… I’m struggling with this….  Do I need to use IntEnable or does SYS/BIOS do this for me?

Yes or No will not be helpful… A little background or a good link would be most appreciated.

 

Thank you for your consideration.

Rick