ARM Technical Support Knowledge Articles

What does "Fatal error: L6815U: Out of memory" or "Error L6000U: out of memory"mean?

Applies to: ARM Developer Suite (ADS), RealView Compilation Tools (RVCT) for BREW, RealView Developer Kit (RVDK) for OKI, RealView Developer Kit (RVDK) for ST, RealView Developer Kit for XScale (RVXDK), RealView Development Suite (RVDS)

Answer

This error occurs because the linker does not have enough memory to link your target object. This is not common, but could be triggered for a number of reasons.  For example, this may occur when linking very large objects/libraries together, or if you are generating a large amount of debug information, or if you have very large regions defined in your scatter-file. In these cases, your workstation may run out of (virtual) memory.

This issue can also occur because of the use of the FIXED scatter-loading attribute.  The FIXED attribute ftorces an execution region to become a "root region" in ROM at a fixed address. The linker may need to add padding bytes between the end of the previous execution region and the FIXED one, to generate the ROM image. The linker may run out of memory if huge amounts of padding are added where the FIXED region's address is far away from the end of the execution region. The link step might succeed if the gap is reduced.

ARM Compiler toolchain 4.1 reports a different error code with more information about the amount of memory available and the amount of memory required to perform the link step, compared with RVCT 4.0 and earlier:

While the linker can generate images of almost any size, it will require a larger amount of memory in order to run and finish the link. There are several suggestions for improving link-time performance, to avoid the "out of memory" error:

  1. Shut down all non-essential applications and processes when you are linking

    For example, if you are running under CodeWarrior, try running your linker from the command line, or exiting and restarting CodeWarrior between builds. Minimizing the project window will also help.

  2. Use the ARM Compiler toolchain's 64-bit linker

    If you using a 64-bit operating system, it is possible to make use of a 64-bit version of armlink.  For more information, please see the article: How and when should I use the 64-bit version of the ARM linker?

  3. Use the --no_debug linker option

    This command will tell the linker to create the object without including any debug information. Note that it is not possible to perform source level debugging with this option.

  4. Reduce debug information

    If you do not want to use the --no_debug option (3), there are still other ways you can try and reduce debug information.  Please see the section Methods of reducing debug information in objects and libraries in the "ARM Compiler toolchain - Using the Compiler" documentation for further information.

    You can also use the fromelf utility to strip debug information from objects and libraries that you do not need to debug.  Please see the "Using the Fromelf Image Converter" documentation for details.

  5. Partial linking

    You could also use partial linking to split the link stage over a few smaller operations. Doing so will also stop duplication of the object files in memory in the final link.

  6. Increase memory support on Windows Operating Systems

    On some Windows operating systems it is possible to increase the virtual address space from 2GB (the default) to 3GB. For further information, please see the following Microsoft article:

    http://msdn.microsoft.com/en-us/windows/hardware/gg487508.aspx
  7. Use the --no_eager_load_debug linker option

    This option (available in RVCT 4.0 build 697 and later) causes the linker to remove debug section data from memory after object loading. This lowers the peak memory usage of the linker at the expense of some linker performance, because much of the debug data has to be loaded again when the final image is written.

If you are still experiencing the same problem, please raise a support case.

Article last edited on: 2011-03-17 15:24:06

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential