This section is intended to help you troubleshoot the errors that may occur after migrating to RealView Compilation Tools (RVCT) v3.1. It provides a list of common problems that you may face while building your component using RVCT v3.1, with possible causes and ways to troubleshoot the problems.
Problem | Possible cause | Possible solution |
---|---|---|
Error: L6410W: Symbol <symbol_name > with non STV_DEFAULT visibility STV_HIDDEN should be resolved statically, cannot use definition in <dso_file_name > |
The linker is aware that the symbol (function) is present in another DLL, but in at least one of the source files of your component the symbol (function) has been declared without the IMPORT_C modifier. |
Identify such source files and prefix the symbol declaration with the IMPORT_C modifier. |
elf2e32 : Error: E1036: Symbol <symbol_name > Missing from ELF file: <file_name > |
The symbol (function) is present in the generated ELF DLL, but it is not visible externally. This is because the symbol (function) definition is not annotated with EXPORT_C, or when callers within the DLL does not prefix the function declaration with the IMPORT_C modifier. |
Identify such symbol definitions and annotate them with the EXPORT_C modifier. Prefix the function declaration with the IMPORT_C modifier if you are trying to call a function in another DLL. |
If you are unable to troubleshoot the problems listed in this table, perform the following steps:
Browse to the directory where the object files of your component are stored.
Create a dump of the symbol table for each object file using the command, fromelf -s <object_filename> and locate the problematic function. If the function does not have the STV_DEFAULT visibility, then you have found the cause, or at least have identified the source file that is causing the problem.
If you are still unable to identify the cause of the problem, check the pre-processed source file to find out the cause. Perform the following steps to pre-process the source file:
Identify the armcc command (copy from the log file) that compiled the object.
Run the command after replacing -c with -E and specifying the output file as an argument to the -o option.
Check whether the function has been annotated with __declspec(dllimport), which is the expansion of IMPORT_C.
Note: If the function declaration is incorrect in more than one place, then repeat this whole procedure until all instances are identified.