×

Discussion Board

Page 1 of 2 12 LastLast
Results 1 to 15 of 17
  1. #1
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Question armlink: undefined symbols(which library to link? dso or lib in rvct2.2)

    Hi all,

    When I link my project with .lib (ex:HWRMVibraClient.lib), I have the errors -
    L6218E: Undefined symbol #<DLL>ESTLIB{000a0000}[10003b0b].DLL#<\DLL>73 (referred from ESTLIB{000a0000}-115.o)
    L6218E: Undefined symbol #<DLL>HWRMVibraClient{000a0000}[1020502a].dll#<\DLL>2 (referred from HWRMVibraClient{000a0000}-2.o)
    ...


    When I link my project with .dso (ex:HWRMVibraClient.dso), I have the errors -
    Error: L6218E: Undefined symbol CHWRMVibra::NewL() (referred from VibrationManagerImp.o)
    ...


    I wonder if the armlink requires an option to recognize the .dso as a library file. Or I miss something when I link with .lib file??

    Thanks you in advance.

  2. #2
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    28,750

    Re: armlink: undefined symbols(which library to link? dso or lib in rvct2.2)

    Which is sure that you should use the .lib extension: build tools automatically replace it with .dso when you are building for the GCCE target (other targets - WINSCW, ARMV5 - use .lib extension).

    Otherwise I do not really know. Are those L6218E messages coming from the linker?
    (I have no idea why would the linker bother with accessing .dll-s - especially since .dll-s of GCCE/ARMV5 targets are not present in the SDK -, and you are not referring .dll-s in your .mmp, are you?)

  3. #3
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Re: armlink: undefined symbols(which library to link? dso or lib in rvct2.2)

    Thank you for your reply.

    I'm not using .mmp (default symbain SDK tools) to build my project. I use command line and scripts to build the symbian project. Because I don't have idea what the build tools do, I'm not sure what options or operations missing in my scripts. I'm reading the code warrior make script. I believe I could find something there.

    For sure, I don't refer those symbols in my scripts, but the linker complains that the symbols are not found. I believe the strange symbols come from the .lib files.

  4. #4
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    28,750

    Re: armlink: undefined symbols(which library to link? dso or lib in rvct2.2)

    Even if you would like to use a totally own build-chain (which I do not really understand in fact), you can still try creating a bld.inf-xy.mmp pair, and do a verbose build (-v switch of abld.bat), which gives you the full command lines executed during the build. This way you may get some ideas for your own hacks.

  5. #5
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Re: armlink: undefined symbols(which library to link? dso or lib in rvct2.2)

    Thanks. I think I got the answers. :>

  6. #6
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Question armlink:L6239E: Cannot call non-interworking ARM symbol 'XXX::YYY()' in euser...

    Hi,

    I got stuck in armlink(RVCT 2.2) again...

    I used the same command & parameters to compile and link my project as abld.bat verbose output says. But I got the following link errors:

    PHP Code:
    ErrorL6239ECannot call non-interworking ARM symbol 'User::Invariant()' in euser{000a0000}-669.o from THUMB code in uc_exe_.o(.text)
    ErrorL6239ECannot call non-interworking ARM symbol 'User::HandleException(void*)' in euser{000a0000}-613.o from THUMB code in uc_exe_.o(.text)
    ErrorL6239ECannot call non-interworking ARM symbol '__aeabi_uidivmod' in drtaeabi{000a0000}-155.o from THUMB code in MyProj.in(.text)
    ErrorL6239ECannot call non-interworking ARM symbol '__aeabi_uidivmod' in drtaeabi{000a0000}-155.o from THUMB code in MyProj.in(.text)
    ErrorL6239ECannot call non-interworking ARM symbol '__ARM_switch8' in drtrvct2_2{000a0000}-28.o from THUMB code in MyProj.in(.text)
    ErrorL6239ECannot call non-interworking ARM symbol '__aeabi_uidivmod' in drtaeabi{000a0000}-155.o from THUMB code in MyProj.in(.text)
    ErrorL6239ECannot call non-interworking ARM symbol 'operator delete (void*)' in scppnwdl{000a0000}-3.o from THUMB code in MyProj.in(.text)
    ErrorL6239ECannot call non-interworking ARM symbol 'operator new(unsigned)' in scppnwdl{000a0000}-7.o from THUMB code in MyProj.in(.text
    As you see, the project is built in thumb and uses functions from libraries. I believe the libraries were built with interworking option, because we could use abld tools to build ARMI or Thunmb targets. Do I miss something in my compiler/linker setting?

    Compiler command:
    armcc -O2 --diag_suppress 66,161,611,654,997,1152,1300,1464,1488,6318,6331 --diag_error 1267 --thumb --fpu softvfp --exceptions --exceptions_unwind -D__MARM_THUMB__ -D__MARM_INTERWORK__ --cpu 6 --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter --memaccess -UL41 -c -DNDEBUG -D_UNICODE -D__SYMBIAN32__ -D__SERIES60_31__ -D__SERIES60_3X__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__ARMCC_2__ -D__ARMCC_2_2__ -D__ARMV6__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__ -D__PRODUCT_INCLUDE__=\"\Symbian\9.2\S60_3rd_FP1\epoc32\include\variant\Symbian_OS_v9.2.hrh\" --cpp --preinclude \Symbian\9.2\S60_3rd_FP1\EPOC32\INCLUDE\RVCT2_2\RVCT2_2.h -J \Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\src -J \Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\group -J \Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\inc -J \Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Utils -J \Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\group -J \Symbian\9.2\S60_3rd_FP1\EPOC32\include -J \Symbian\9.2\S60_3rd_FP1\epoc32\include\variant
    Linker commands:
    armlink --diag_suppress 6331,6780 --partial \
    -o \Symbian\9.2\S60_3rd_FP1\EPOC32\BUILD\Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\group\SNOW\ARMV6\UREL\snow.in \
    --via \Symbian\9.2\S60_3rd_FP1\EPOC32\BUILD\Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\group\SNOW\ARMV6\snow_UREL_objects.via
    Here, I replace the via file with my project object file list.

    armlink --diag_suppress 6331,6780 --shl --reloc --split --rw-base 0x400000 \
    --noscanlib \
    --entry _E32Startup \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\UREL\EEXE.LIB(UC_EXE_.o) \
    -o "\Symbian\9.2\S60_3rd_FP1\EPOC32\BUILD\Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\group\SNOW\ARMV6\UREL\snow.exe" \
    --symbols --list "\Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV6\UREL\snow.exe.map" \
    \Symbian\9.2\S60_3rd_FP1\EPOC32\BUILD\Symbian\9.2\S60_3rd_FP1\S60Ex\OpenGLEx\Snow\group\SNOW\ARMV6\UREL\snow.in \
    \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\euser.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\apparc.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\cone.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\eikcore.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\avkon.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\fbscli.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\efsrv.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\ImageConversion.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\ws32.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\libgles_cm.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\scdv.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\EcmtClient.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\UREL\usrt2_2.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\dfpaeabi.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\dfprvct2_2.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\drtaeabi.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\drtaeabi.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\scppnwdl.lib \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\drtrvct2_2.lib \
    \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\euser.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\apparc.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\cone.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\eikcore.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\avkon.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\fbscli.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\efsrv.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\ImageConversion.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\ws32.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\libgles_cm.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\scdv.lib(VtblExports.o) \Symbian\9.2\S60_3rd_FP1\EPOC32\RELEASE\ARMV5\LIB\EcmtClient.lib(VtblExports.o)

  7. #7
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    28,750

    Re: armlink:L6239E: Cannot call non-interworking ARM symbol 'XXX::YYY()' in euser...

    What does 'abld -v build armv5 urel' say?

    I have no RVCT, thus I could dump only an 'abld -v build gcce urel', however it uses rather different command-line. The defines are a different too:
    Quote Originally Posted by GCCE build
    arm-none-symbianelf-g++ -Wall -Wno-ctor-dtor-privacy -Wno-unknown-pragmas -fexceptions -march=armv5t -mapcs -pipe -nostdinc -c -msoft-float -DNDEBUG -D_UNICODE -D__GCCE__ -D__SYMBIAN32__ -D__SERIES60_30__ -D__SERIES60_3X__ -D__GCCE__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__ -D__MARM_ARMV5__
    Though the 't' in march=armv5t may mean thumb, 'thumb' or 'interwork' does not appear explicitly, so I am not really convinced by your implication of support for thumb/armi. But I have never built anything with RVCT, so I have not even seen such command line.

  8. #8
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Exclamation Re: armlink:L6239E: Cannot call non-interworking ARM symbol 'XXX::YYY()' in euser...

    RVCT 2.2 compiler command line from "abld build armv5 urel -v"

    armcc -O2 --diag_suppress 66,161,611,654,997,1152,1300,1464,1488,6318,6331 --diag_error 1267 --thumb --fpu softvfp --exceptions --exceptions_unwind -D__MARM_THUMB__ -D__MARM_INTERWORK__ --cpu 5T --enum_is_int -Ono_known_library --fpmode ieee_no_fenv --export_all_vtbl --no_vfe --apcs /inter --dllimport_runtime -c -DNDEBUG -D_UNICODE -D__SYMBIAN32__ -D__SERIES60_31__ -D__SERIES60_3X__ -D__ARMCC__ -D__EPOC32__ -D__MARM__ -D__EABI__ -D__ARMCC_2__ -D__ARMCC_2_2__ -D__MARM_ARMV5__ -D__EXE__ -D__SUPPORT_CPP_EXCEPTIONS__
    The link commands are the same as armv6's

  9. #9
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Re: armlink:L6239E: Cannot call non-interworking ARM symbol 'XXX::YYY()' in euser...

    I've found my bug. I used an arm library which doesn't support thumb/interworking. After I use the correct one, the link errors vanish!

    Thanks anyways. :>

  10. #10
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Question Elftran: undefined symbols??

    Hi,

    Now, I can pass my .exe file to elftran. But I got the following errors:
    ERROR: Unresolved symbol: _ZTI15XLeaveException
    ERROR: Unresolved symbol: _ZTI7CActive
    ERROR: Unresolved symbol: _ZTI15CEikApplication
    ERROR: Unresolved symbol: _ZTVN10__cxxabiv120__si_class_type_infoE
    ...
    I checked my map file. They are here:
    #<DLL>ws32{000a0000}[10003b21].dll#<\DLL>1f7 - Undefined Reference
    #<DLL>ws32{000a0000}[10003b21].dll#<\DLL>8c - Undefined Reference
    SHT$$INIT_ARRAY$$Base - Undefined Weak Reference
    SHT$$INIT_ARRAY$$Limit - Undefined Weak Reference
    typeinfo for CCoeControl - Undefined Reference
    typeinfo for CEikDocument - Undefined Reference
    typeinfo for CEikApplication - Undefined Reference
    typeinfo for XLeaveException - Undefined Reference
    typeinfo for CActiveScheduler - Undefined Reference
    typeinfo for MSdpAgentNotifier - Undefined Reference
    typeinfo for MSdpAttributeValueVisitor - Undefined Reference
    typeinfo for MRemConCoreApiTargetObserver - Undefined Reference
    typeinfo for CBase - Undefined Reference
    typeinfo for CTimer - Undefined Reference
    typeinfo for CActive - Undefined Reference
    typeinfo for CAknAppUi - Undefined Reference
    vtable for __cxxabiv1::__class_type_info - Undefined Reference
    vtable for __cxxabiv1::__si_class_type_info - Undefined Reference
    vtable for __cxxabiv1::__vmi_class_type_info - Undefined Reference

    _fp_init - Undefined Weak Reference
    Image$$ER_RO$$Base 0x00008000 Number 0 anon$$obj.o(linker$$defined$$symbols)
    _E32Startup 0x00008000 ARM Code 112 uc_exe_.o(.emb_text)
    I also checked the map file from the opengl example, snow. It has very similiar statements.
    #<DLL>scppnwdl{000a0000}.dll#<\DLL>5 - Undefined Reference
    #<DLL>ws32{000a0000}[10003b21].dll#<\DLL>52 - Undefined Reference
    SHT$$INIT_ARRAY$$Base - Undefined Weak Reference
    SHT$$INIT_ARRAY$$Limit - Undefined Weak Reference
    typeinfo for CCoeControl - Undefined Reference
    typeinfo for CAknDocument - Undefined Reference
    typeinfo for CAknApplication - Undefined Reference
    typeinfo for XLeaveException - Undefined Reference
    typeinfo for MCoeControlObserver - Undefined Reference
    typeinfo for CBase - Undefined Reference
    typeinfo for CActive - Undefined Reference
    typeinfo for CAknAppUi - Undefined Reference
    vtable for __cxxabiv1::__class_type_info - Undefined Reference
    vtable for __cxxabiv1::__si_class_type_info - Undefined Reference
    vtable for __cxxabiv1::__vmi_class_type_info - Undefined Reference
    _fp_init - Undefined Weak Reference
    Image$$ER_RO$$Base 0x00008000 Number 0 anon$$obj.o(linker$$defined$$symbols)
    _E32Startup 0x00008000 ARM Code 112 uc_exe_.o(.emb_text)
    But the example doesn't cause this error message. And, of course, I'm sure that the linker have correct libraries to link against. For example, use euser.lib for CActive and CTimer.

    Does anyone know how to solve this kind of bug?

    Thanks in advance.
    Last edited by aliothliu; 2008-07-31 at 22:06.

  11. #11
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Re: Elftran: undefined symbols??

    For this bug, it happens in armv5 abiv1 target. When I use abld tools to build, it has the same bug.

    But when I use abld tools for armv5 abiv2 target, I don't have this bug. However, the application doesn't start.

    In the project, I use alloca() which is linked against arm library. I feel very strange because when I build for armv5 abiv1 target, the linker could not find the library for alloca itself, but for armv 5 abiv2 target, the linker doesn't complain. I wonder if this is the reason that cause the game doesn't start??

  12. #12
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    28,750

    Re: Elftran: undefined symbols??

    If the application does not start, you may want to check for the panic code: http://wiki.forum.nokia.com/index.ph...ded_panic_code

  13. #13
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Re: Elftran: undefined symbols??

    The Panic is KERN-EXEC:3. Usually, this comes from dereference a null pointer. This happens after allocating and returning a CApaApplication object, and before calling AppDllUid().

    I run the program in the emulator. After returns a CApaApplication object, the program runs in dlls and calls AppDllUid several times. But in native device, the program crashes with the panic message.

  14. #14
    Nokia Developer Moderator
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    28,750

    Re: Elftran: undefined symbols??

    Try some logging then to locate where it fails. And/or you can experiment with on-device debugging - if you have the necessary Carbide variant.
    How sure are you about that AppDllUid is not invoked? That is very unlikely.

  15. #15
    Registered User
    Join Date
    Nov 2007
    Posts
    27

    Exclamation Is there anyone build and run application in armv5_abiv2 successfully?

    I try to build and run hellow world basic example with armv5 and armv5_abiv2 in S60v3FP1 and S60v3FP2. All examples were built and installed successfully. But only armv5 mode applications runs correctly. All applications in armv5_abiv2 crash with KERN-EXEC:3.

    I think this may be a SDK defect. Could anyone build your application in armv5 abiv2 and run it successfully?

    Note: If you have S60v3FP1 and S60v3FP2 installed in the same PC, you may have path problem when you run makesis. In my case, when I build for S60v3FP2 target, the compiler and linker ouput path points to S60v3FP1's build directory, limked to S60V3FP1 library, output to epoc\release, and default path in .pkg won't be able to find the output files. You must use "devices.exe" to change your default device target.
    Last edited by aliothliu; 2008-08-20 at 16:04.

Similar Threads

  1. need information about j2me polish
    By rathikathangaraj in forum Mobile Java General
    Replies: 4
    Last Post: 2007-12-19, 09:01
  2. [newbie here] Link error
    By xitpu in forum Symbian
    Replies: 3
    Last Post: 2007-01-24, 16:53
  3. Can’t launch application on 6630
    By kaffemannen in forum Symbian
    Replies: 8
    Last Post: 2005-06-29, 10:49
  4. "Not found" on target 9500
    By alex_makarov in forum Symbian
    Replies: 10
    Last Post: 2004-12-03, 14:05
  5. To link my library.
    By danie78 in forum Symbian
    Replies: 0
    Last Post: 2004-02-20, 01:46

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
×