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.

armlnk Internal Error

We are working on porting code from an existing product running on a PPC chip to a new product that runs on an OMAP. Our code is organized in various source directories which are each compiled using command line Make scripts. The object files from each individual directory are then linked together into a relocatable file.  Most of the source directories compile and link fine. There are a few that give me an internal error when the object files are linked together.

Here is an example of the output:

/proj/atsls/oel/dev_tools/com/ti/trial/ccsv5/tools/compiler/arm_5.0.1/bin/armcl -z -r ARM/cfg_add_offsets.obj ARM/cfg_addr_sequence.obj ARM/cfg_build.obj ARM/cfg_frame.obj ARM/cfg_map_definition.obj ARM/cfg_map_config.obj ARM/cfg_parse.obj ARM/cfg_user_convert.obj ARM/cfg_user_frame.obj ARM/cfg_user_get_array.obj ARM/cfg_user_get_next_addr.obj ARM/cfg_user_get_addr_range.obj ARM/cfg_user_get_cartesian.obj ARM/cfg_user_get_column_distance.obj ARM/cfg_user_get_dimension.obj ARM/cfg_user_get_handbot_map_size.obj ARM/cfg_user_get_handbot_side.obj ARM/cfg_user_get_location_addr.obj ARM/cfg_user_get_locations.obj ARM/cfg_user_get_locations_file.obj ARM/cfg_user_get_optimal_column_addr.obj ARM/cfg_user_get_target_cartesian.obj ARM/cfg_user_location_atts.obj ARM/cfg_user_rebuild_map.obj ARM/cfg_user_set_handbot_map_size.obj ARM/cfg_user_verde_caps.obj ARM/cfg_verde_module_labels.obj ARM/cfg_crimson_module_labels.obj ARM/cfg_elib_module_labels.obj ARM/cfg_user_validate_addr.obj ARM/cfg_user_config_change_check.obj ARM/cfg_user_config_change_check_file.obj  -o ARM/libcfg.a
<Linking>
ELFLNK/build.c:894:internal fatal error #10382:
   (".text:_ZN13cfgFrameClassC2Ev")

INTERNAL ERROR: /proj/atsls/oel/dev_tools/com/ti/trial/ccsv5/tools/compiler/arm_5.0.1/bin/armlnk aborted


This is a serious problem.  Please contact Customer
Support with this message and a copy of the input file
and help us to continue to make the tools more robust.


>> Compilation failure
Thanks in advance for any help.

  • That's strange; the error message should be the fatal internal error "could not find the collection item for linked-to section"; it's a separate bug that the error message didn't come out correctly.  Anyway, it refers to an EXIDX section, which is a compiler-generated special section for handling EABI C++ exceptions.  There have been some bugs related to exception handling.  You should try upgrading to the latest 5.0.X compiler.  If that doesn't help, we'll need to see a test case, which in this case means all of the object files, libraries, and the compete command-line options.

  • Of course, we should look into why you are getting this error message.  But I want to point a possible way to workaround the issue.

    It appears this is not the final link for the system.  Instead, you are linking together only part of the system.  The linker is not usually used in this manner.  It is more common to build an object file library with the archiver.  The final link can then refer to all these libraries built earlier.  The archiver is named armar.exe.  It is in the same directory as armcl.exe.  It is documented in the ARM assembly tools manual.  A typical invocation looks like ...

    % armar -r library_name.lib list of object files

    Thanks and regards,

    -George