12.07.2015 Views

RealView Compilation Tools Errors and Warnings Reference - ARM ...

RealView Compilation Tools Errors and Warnings Reference - ARM ...

RealView Compilation Tools Errors and Warnings Reference - ARM ...

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

®<strong>RealView</strong><strong>Compilation</strong> <strong>Tools</strong>Version 4.0<strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong> <strong>Reference</strong>Copyright © 2010 <strong>ARM</strong>. All rights reserved.<strong>ARM</strong> DUI 0495B (ID121310)


<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong><strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong> <strong>Reference</strong>Copyright © 2010 <strong>ARM</strong>. All rights reserved.Release InformationChange historyDescription Issue Confidentiality Change29 March 2010 A Non-Confidential Update 1 for <strong>RealView</strong> Development Suite v4.0, newdocument10 December 2010 B Non-Confidential Update 2 for <strong>RealView</strong> Development Suite v4.0Proprietary NoticeWords <strong>and</strong> logos marked with ® or are registered trademarks or trademarks owned by <strong>ARM</strong>, except asotherwise stated below in this proprietary notice. Other br<strong>and</strong>s <strong>and</strong> names mentioned herein may be thetrademarks of their respective owners.Neither the whole nor any part of the information contained in, or the product described in, this documentmay be adapted or reproduced in any material form except with the prior written permission of the copyrightholder.The product described in this document is subject to continuous developments <strong>and</strong> improvements. Allparticulars of the product <strong>and</strong> its use contained in this document are given by <strong>ARM</strong> in good faith. However,all warranties implied or expressed, including but not limited to implied warranties of merchantability, orfitness for purpose, are excluded.This document is intended only to assist the reader in the use of the product. <strong>ARM</strong> shall not be liable for anyloss or damage arising from the use of any information in this document, or any error or omission in suchinformation, or any incorrect use of the product.Where the term <strong>ARM</strong> is used it means “<strong>ARM</strong> or any of its subsidiaries as appropriate”.Confidentiality StatusThis document is Non-Confidential. The right to use, copy <strong>and</strong> disclose this document may be subject tolicense restrictions in accordance with the terms of the agreement entered into by <strong>ARM</strong> <strong>and</strong> the party that<strong>ARM</strong> delivered this document to.Unrestricted Access is an <strong>ARM</strong> internal classification.Product StatusThe information in this document is final, that is for a developed product.Web Addresshttp://www.arm.comii Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Contents<strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> <strong>Errors</strong> <strong>and</strong><strong>Warnings</strong> <strong>Reference</strong>PrefaceAbout this book .............................................................................................. viFeedback ....................................................................................................... ixChapter 1Chapter 2Chapter 3Chapter 4C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1.1 Internal errors <strong>and</strong> other unexpected failures ............................................. 1-21.2 Suppressing armcc error <strong>and</strong> warning messages ....................................... 1-31.3 List of the armcc error <strong>and</strong> warning messages ........................................... 1-41.4 List of the old-style armcc error <strong>and</strong> warning messages ........................... 1-84Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2.1 List of the armasm error <strong>and</strong> warning messages ........................................ 2-2Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>3.1 Suppressing armlink error <strong>and</strong> warning messages ..................................... 3-23.2 List of the armlink error <strong>and</strong> warning messages ......................................... 3-3ELF Format Converter <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>4.1 List of the fromelf error <strong>and</strong> warning messages .......................................... 4-2<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. iiiNon-Confidential


ContentsChapter 5Chapter 6Librarian <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>5.1 List of the armar error <strong>and</strong> warning messages ........................................... 5-2Via File H<strong>and</strong>ling <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>6.1 List of via file h<strong>and</strong>ling error <strong>and</strong> warning messages .................................. 6-2iv Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-Confidential


PrefaceThis preface introduces the <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> Error <strong>and</strong> Warning Messages<strong>Reference</strong>. It contains the following sections:• About this book on page vi• Feedback on page ix.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. vID121310Non-Confidential


PrefaceAbout this bookThis book lists the error <strong>and</strong> warning messages for <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong>.Intended audienceThis book is written for all developers who are producing applications using <strong>RealView</strong><strong>Compilation</strong> <strong>Tools</strong> (RVCT). It assumes that you are an experienced software developer.Using this bookThis book is organized into the following chapters:Chapter 1 C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Read this chapter for a list of all error <strong>and</strong> warning messages for the <strong>ARM</strong>Compiler (armcc). The error number format for these messages is anumber between 1 <strong>and</strong> 2999. This chapter also covers old-style armccmessages that have the form C3000T to C3500T where T is E or W.Chapter 2 Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Read this chapter for a list of all error <strong>and</strong> warning messages for the <strong>ARM</strong>Assembler (armasm). The error number format for these messages isA1000T to A1999T where T is U, E, or W.Chapter 3 Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Read this chapter for a list of all error <strong>and</strong> warning messages for the <strong>ARM</strong>Linker (armlink). The error number format for these messages is L6000Tto L6999T where T is U, E, or W.Chapter 4 ELF Format Converter <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Read this chapter for a list of all error <strong>and</strong> warning messages for the ELFformat converter (fromelf). The error number format for these messagesis Q0100T to Q0499T where T is U, E, or W.Chapter 5 Librarian <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Read this chapter for a list of all error <strong>and</strong> warning messages for the <strong>ARM</strong>Librarian (armar). The error number format for these messages is L6800Tto L6999T where T is U, E, or W.Chapter 6 Via File H<strong>and</strong>ling <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Read this chapter for a list of all error <strong>and</strong> warning messages relating tovia file h<strong>and</strong>ling. The error number format for these messages is X3900Tto X3999T where T is U, E, or W <strong>and</strong> X is A, C, L, or Q.vi Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


PrefaceConventionsThe following typographical conventions are used in this book:monospacemonospaceDenotes text that can be entered at the keyboard, such as comm<strong>and</strong>s, file<strong>and</strong> program names, <strong>and</strong> source code.Denotes a permitted abbreviation for a comm<strong>and</strong> or option. Theunderlined text can be entered instead of the full comm<strong>and</strong> or optionname.monospace italicDenotes arguments to comm<strong>and</strong>s <strong>and</strong> functions where the argument is tobe replaced by a specific value.monospace boldDenotes language keywords when used outside example code.italicboldHighlights important notes, introduces special terminology, denotesinternal cross-references, <strong>and</strong> citations.Highlights interface elements, such as menu names. Also used foremphasis in descriptive lists, where appropriate, <strong>and</strong> for <strong>ARM</strong> processorsignal names.Additional readingThis section lists publications by <strong>ARM</strong> <strong>and</strong> by third parties.See Infocenter, http://infocenter.arm.com, for access to <strong>ARM</strong> documentation.<strong>ARM</strong> publicationsThis book contains reference information that is specific to development tools suppliedwith RVCT. Other publications included in the suite are:• RVDS Getting Started Guide (<strong>ARM</strong> DUI 0255)• RVCT Essentials Guide (<strong>ARM</strong> DUI 0202)• RVCT Compiler User Guide (<strong>ARM</strong> DUI 0205)• RVCT Compiler <strong>Reference</strong> Guide (<strong>ARM</strong> DUI 0348)• RVCT Linker User Guide (<strong>ARM</strong> DUI 0206)• RVCT Linker <strong>Reference</strong> Guide (<strong>ARM</strong> DUI 0381)• RVCT Utilities Guide (<strong>ARM</strong> DUI 0382)• RVCT Assembler Guide (<strong>ARM</strong> DUI 0204)• RVCT Developer Guide (<strong>ARM</strong> DUI 0203)<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. viiID121310Non-Confidential


PrefaceA glossary is provided. See the RVDS Getting Started Guide.For full information about the base st<strong>and</strong>ard, software interfaces, <strong>and</strong> st<strong>and</strong>ardssupported by <strong>ARM</strong>, see install_directory\Documentation\Specifications\....In addition, see the following documentation for specific information relating to <strong>ARM</strong>products:• <strong>ARM</strong> Architecture <strong>Reference</strong> Manual, <strong>ARM</strong>v7-A <strong>and</strong> <strong>ARM</strong>v7-R edition (<strong>ARM</strong>DDI 0406)• <strong>ARM</strong>7-M Architecture <strong>Reference</strong> Manual (<strong>ARM</strong> DDI 0403)• <strong>ARM</strong>6-M Architecture <strong>Reference</strong> Manual (<strong>ARM</strong> DDI 0419)• <strong>ARM</strong> datasheets or technical reference manuals for your hardware device.Other publicationsThe following publication is referenced in the text:• IEEE 754 - 1985 IEEE St<strong>and</strong>ard for Binary Floating-Point Arithmetic.viii Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


PrefaceFeedback<strong>ARM</strong> welcomes feedback on this product <strong>and</strong> its documentation.Feedback on this productIf you have any comments or suggestions about this product, contact your supplier <strong>and</strong>give:• The product name.• The product revision or version.• An explanation with as much information as you can provide. Include symptoms<strong>and</strong> diagnostic procedures if appropriate.Feedback on contentIf you have any comments on content, send an e-mail to errata@arm.com. Give:• the title• the number, <strong>ARM</strong> DUI 0495B• the page numbers to which your comments apply• a concise explanation of your comments.<strong>ARM</strong> also welcomes general suggestions for additions <strong>and</strong> improvements.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. ixID121310Non-Confidential


Prefacex Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Chapter 1C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This chapter contains the error <strong>and</strong> warning messages for the <strong>ARM</strong> C <strong>and</strong> C++ compiler(armcc). It contains the following sections:• Internal errors <strong>and</strong> other unexpected failures on page 1-2• Suppressing armcc error <strong>and</strong> warning messages on page 1-3• List of the armcc error <strong>and</strong> warning messages on page 1-4• List of the old-style armcc error <strong>and</strong> warning messages on page 1-84.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-1ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1.1 Internal errors <strong>and</strong> other unexpected failuresInternal errors in the compiler are typically errors that have occurred but have not yetbeen documented, or they might point to a potential issue in the compiler itself.For example:Internal fault: [0x87ecef:400591]contains:• the message description (Internal Fault)• a six hex digit fault code for the error that occurred (0x87ecef).In previous versions this was a 4 digit code.• the RVCT version number (40 = RVCT 4.0)• the RVCT build number (0591).If you see an internal fault, contact your supplier.To facilitate the investigation, try to send only the single source file or function that iscausing the error, plus the compiler options used when compiling the code.It might be necessary to preprocess the file (that is, to take account of files added with#include). To do this, pass the file through the preprocessor as follows:armcc –E sourcefile.c > PPsourcefile.cwhere are your normal compile switches, such as -O2, -g, -I, -D, but without-c.Check that the error is still reproducible with the preprocessed file by compiling it with:armcc -c PPsourcefile.c<strong>and</strong> then provide the PPsourcefile.c file <strong>and</strong> your compile to your supplier.1-2 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1.2 Suppressing armcc error <strong>and</strong> warning messagesThe compiler normally warns of potential portability problems <strong>and</strong> other hazards.When porting legacy code (for example, in old-style C) to the <strong>ARM</strong>, many warningsmight be reported. It might be tempting to disable all such warnings with –W. <strong>ARM</strong>recommends however that for portability reasons, you change the code to make it ANSIcompatible rather than suppressing the warnings.Some warnings are suppressed by default. To override this, use the --strict_warningsswitch to enable all suppressed warnings.By default optimization messages, that is most of the messages between 1593 <strong>and</strong> 2159,are not warnings. To treat optimization messages as warnings, use the--diag_warning=optimizations option.For more information on controlling error <strong>and</strong> warning messages, see the RVCTCompiler User Guide.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-3ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1.3 List of the armcc error <strong>and</strong> warning messagesThis section lists the error <strong>and</strong> warnings for armcc.0 unknown error1 last line of file ends without a new line2 last line of file ends with a backslash3 #include file includes itself4 out of memory5 cannot open input file : For example:#include results in the message:Error: #5: cannot open source input file "file.h": No such file ordirectorybecause file.h does not exist in the system include directory.6 comment unclosed at end of fileComment started with /* but no matching */ to close the comment.7 unrecognized token8 missing closing quoteFor example:char foo[] = {"\"};In this example, the backslash causes the following quote " to be treatedas a literal character rather than closing the string. To fix this, use:char foo[] = {"\\"};9 nested comment is not allowedFor example:/*nested/*comment*/10 "#" not expected here11 unrecognized preprocessing directiveFor example:#foo1-4 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>12 parsing restarts here after previous syntax error13 expected a file nameFor example:#include 14 extra text after expected end of preprocessing directiveFor example:#if EMBEDDED fooor:#include fooor:#ifdef SOMETHING:#endif SOMETHINGThe #endif does not expect or require any argument. Enclosing thetrailing part of the line in a comment fixes the problem:#endif /* SOMETHING */16 is not a valid source file name17 expected a "]"18 expected a ")"For example:int main(void{where there is a missing ).19 extra text after expected end of numberFor example:int a = 37r;20 identifier is undefinedFor example, when compiled for C++, the code:void foo( arg ) { }results in the message:Error: #20: identifier is undefinedAnother example of code that can cause this error is:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-5ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>int foo(void){int a = 4;a = i;}which results in the message:Error: #20: identifier "i" is undefinedbecause i has not been declared.21 type qualifiers are meaningless in this declaration22 invalid hexadecimal number23 integer constant is too large24 invalid octal digitFor example:int a = 0378;25 quoted string should contain at least one characterFor example:char a ='';26 too many characters in character constantFor example:char a =’abcd’;results in an error.NoteOnly one character is permitted in a single-quoted string. For more thanone character, double quotes must be used. Strings must be assigned to anappropriate variable such as a[].27 character value is out of rangeFor example:char foo[] = {"\xBBBB" };results in the message:Warning: #27-D: character value is out of range28 expression must have a constant value29 expected an expression1-6 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>30 floating constant is out of range31 expression must have integral type32 expression must have arithmetic type33 expected a line number34 invalid line number35 #error directive: 36 the #if for this directive is missing37 the #endif for this directive is missingAn open #if was still active, but was not closed with #endif before theEnd Of File.38 directive is not allowed -- an #else has already appeared39 division by zero40 expected an identifierThis error is raised if preprocessor statements are incorrectly formattedsuch as for example, if the identifier which must immediately follow apreprocessor comm<strong>and</strong> is missing. For example, a missing identifier after#define results in:Error: #40: expected an identifierThis error can also occur when C code containing C++ keywords iscompiled with the C++ compiler, for example:int *new(void *p) { return p; }causes an error because new is a keyword in C++.41 expression must have arithmetic or pointer type42 oper<strong>and</strong> types are incompatible ( <strong>and</strong> )44 expression must have pointer type45 #undef may not be used on this predefined name46 is predefined; attempted redefinition ignored47 incompatible redefinition of macro Macro has been defined twice (with different replacement strings).If it is necessary to do this, undefine the macro (#undef) before the seconddefinition.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-7ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>For example:#define TEST 0#define TEST 1causes the compiler to produce:Warning: #47-D: incompatible redefinition of macro "TEST"(declared at line 1)There is no way to control this error directly by a compiler option, but youcan use conditional preprocessing. For example:#ifdef TEST_EQUALS_ZERO#define TEST 0#else#define TEST 1#endifCompiling with armcc -c foo.c defines TEST to be 1 (the default).Compiling with armcc -c -DTEST_EQUALS_ZERO foo.c defines TEST to be 0.49 duplicate macro parameter name50 "##" may not be first in a macro definition51 "##" may not be last in a macro definition52 expected a macro parameter name53 expected a ":"54 too few arguments in macro invocation55 too many arguments in macro invocation56 oper<strong>and</strong> of sizeof may not be a function57 this operator is not allowed in a constant expression58 this operator is not allowed in a preprocessing expression59 function call is not allowed in a constant expression60 this operator is not allowed in an integral constant expression61 integer operation result is out of range62 shift count is negative63 shift count is too large64 declaration does not declare anythingFor example:1-8 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>int;65 expected a ";"66 enumeration value is out of "int" rangeThis diagnostic message is generated by the compiler when an enumconstant is outside the range of a signed int.For example:typedef enum{Bit31 = 0x80000000} Bits;when compiled in C mode by RVCT 4.0 generates the this message as awarning.NoteThe behavior of the compiler has changed between past versions <strong>and</strong> alsowhen using --enum_is_int <strong>and</strong> --strict switches:C Mode:• By default RVCT 2.1 treated all constants larger than INT_MAX assigned, without any error or warning.RVCT 2.2 <strong>and</strong> later promotes the constants to unsigned, howeverthis produces the warning.• With --enum_is_int, RVCT 2.1 treated the constant as signed <strong>and</strong>gives no message.RVCT 2.2 treated it as signed but gives a warning.In RVCT 2.2 SP1 <strong>and</strong> later the warning is still produced but theconstant is promoted to unsigned.• For RVCT 2.1, 2.2, <strong>and</strong> 2.2 SP1 <strong>and</strong> later the switch --strictalways produces this message as an error.C++ Mode:• By default the out-of-range constants are promoted to unsignedwithout a warning <strong>and</strong> also when --strict is used.• With --enum_is_int, RVCT 2.1 treats the constant as signedwithout any message unless --strict is also supplied in which casethe message becomes an error.For RVCT 2.2 with --enum_is_int the constant is treated as signed,however a warning is generated, even without --strict.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-9ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>In RVCT 2.2 SP1 <strong>and</strong> later the constant is promoted to unsignedwithout a warning or an error, even if --strict is specified.As a work around for cases where the message is an error use thefollowing code example:typedef enum{Bit31 = (int)0x80000000} Bits;An overflow no longer occurs, <strong>and</strong> so no error is reported.NoteThe value of Bit31 is now negative because it is a signed int.See Structures, unions, enumerations, <strong>and</strong> bitfields in the RVCTCompiler <strong>Reference</strong> Guide for more information.67 expected a "}"68 integer conversion resulted in a change of signThe constant is too large to be represented in a signed long, <strong>and</strong> thereforehas been given unsigned type.Example:long l = 2147483648;69 integer conversion resulted in truncation70 incomplete type is not allowedExample:typedef struct {unsigned char size;char string[];} FOO;By not declaring a size for the array in the structure, the compiler is notable to allocate a size of the structure. Incomplete types are allowed in--gnu <strong>and</strong> --c99 modes.71 oper<strong>and</strong> of sizeof may not be a bit field76 argument to macro is empty77 this declaration has no storage class or type specifier78 a parameter declaration may not have an initializer79 expected a type specifier1-10 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>The ellipses to denote variadic functions, such as, for example, printf(),must follow at least one parameter. Change:int foo( ... );to:int foo( int bar, ... );80 a storage class may not be specified here81 more than one storage class may not be specified82 storage class is not first83 type qualifier specified more than once84 invalid combination of type specifiersThe type name or type qualifier cannot be used in the same declaration asthe second type name or type qualifier. For example:typedef int int;85 invalid storage class for a parameter86 invalid storage class for a function87 a type specifier may not be used here88 array of functions is not allowed89 array of void is not allowed90 function returning function is not allowed91 function returning array is not allowed92 identifier-list parameters may only be used in a functiondefinition93 function type may not come from a typedef94 the size of an array must be greater than zeroZero-sized arrays are not allowed. For example:char name[0];95 array is too largeThere is a limit of 4GB on the maximum size of arrays or structures.96 a translation unit must contain at least one declaration97 a function may not return a value of this type<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-11ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>98 an array may not have elements of this type99 a declaration here must declare a parameter100 duplicate parameter name101 has already been declared in the current scope102 forward declaration of enum type is nonst<strong>and</strong>ard103 class is too large104 struct or union is too large105 invalid size for bit fieldBit fields must not be larger than the size of the type.For example, with --strict:struct X{int y:5000;};106 invalid type for a bit fieldBit fields must have integral type.Example:struct X{float x:5;float y:2;};107 zero-length bit field must be unnamed108 signed bit field of length 1109 expression must have (pointer-to-) function type110 expected either a definition or a tag name111 statement is unreachable112 expected "while"114 was referenced but not defined115 a continue statement may only be used within a loop116 a break statement may only be used within a loop or switchExample:1-12 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>void foo(void){int a=0;continue;}or:void bar(void){int a=0;break;}117 non-void should return a value118 a void function may not return a value119 cast to type is not allowed120 return value type does not match the function type121 a case label may only be used within a switch122 a default label may only be used within a switch123 case label value has already appeared in this switch124 default label has already appeared in this switch125 expected a "("126 expression must be an lvalue127 expected a statement128 loop is not reachable from preceding code129 a block-scope function may only have extern storage class130 expected a "{"131 expression must have pointer-to-class type132 expression must have pointer-to-struct-or-union type133 expected a member name134 expected a field name135 has no member 136 has no field 137 expression must be a modifiable lvalue<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-13ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>138 taking the address of a register variable is not allowed139 taking the address of a bit field is not allowed140 too many arguments in function callFunction declaration does not match the number of parameters in anearlier function prototype.Example:extern void foo(int x);void bar(void){foo(1,2);}141 unnamed prototyped parameters not allowed when body is present142 expression must have pointer-to-object type143 program too large or complicated to compile144 a value of type cannot be used to initialize an entity oftype The initializing string for a fixed size character array is exactly as long asthe array size, leaving no room for a terminating \0, for example:char name[5] = "Hello";The name array can hold up to 5 characters. "Hello" does not fit becauseC strings are always null-terminated (for example, "Hello\0"). Thecompiler reports:Error: #144: a value of type "const char [6]" cannot be used toinitialize an entity of type "char [5]"A similar error is also raised if there is an implicit cast of non-zero int topointer.For example:void foo_func( void ){char *foo=1;}results in the message:#144: a value of type "int" cannot be used to initialize an entityof type "char *"For the cast, this error can be suppressed with the use of the--loose_implicit_cast switch.1-14 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>145 may not be initialized146 too many initializer values147 declaration is incompatible with Between RVCT 2.2 builds 559 <strong>and</strong> 616, this incorrect C code:typedef enum { e } E;typedef enum { f } F;E g(void);F g(void); // Now a compatibility error in many C modes.changed from being silently accepted to being a non-downgradeableerror.In RVCT 3.1 builds 640 <strong>and</strong> later, this is now a discretionary error in allmodes, <strong>and</strong> can be downgraded from an Error to a Warning with--diag_warning 147, or suppressed completely with --diag_suppress 147.148 has already been initialized149 a global-scope declaration may not have this storage class150 a type name may not be redeclared as a parameter151 a typedef name may not be redeclared as a parameter152 conversion of nonzero integer to pointer153 expression must have class type154 expression must have struct or union type155 old-fashioned assignment operator156 old-fashioned initializer157 expression must be an integral constant expression158 expression must be an lvalue or a function designator159 declaration is incompatible with previous 160 external name conflicts with external name of 161 unrecognized #pragma163 could not open temporary file 164 name of directory for temporary files is too long ()165 too few arguments in function call<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-15ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Function prototype is defined with a number of parameters that does notmatch the number of parameters passed in the function call.For example:extern void foo(int x);void bar(void){foo();}166 invalid floating constant167 argument of type is incompatible with parameter of type168 a function type is not allowed here169 expected a declarationThis can occur when attempting to compile some C++ header files withthe C compiler instead of the C++ compiler. The message:Error: #169: expected a declarationis reported.170 pointer points outside of underlying object171 invalid type conversion172 external/internal linkage conflict with previous declaration<strong>Errors</strong> about linkage disagreements where functions are implicitlydeclared as extern <strong>and</strong> then later re-declared as static are suppressedunless compiled with --strict.Example:extern void foo(void);static void foo(void){}173 floating-point value does not fit in required integral type174 expression has no effect175 subscript out of range177 was declared but never referencedBy default, unused declaration warnings are given for:• local (within a function) declarations of variables, typedefs, <strong>and</strong>functions• labels (always within a function)1-16 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>• top-level static functions <strong>and</strong> static variables.The --diag_suppress 177 option suppresses these warnings.178 "&" applied to an array has no effect179 right oper<strong>and</strong> of "%" is zero180 argument is incompatible with formal parameter181 argument is incompatible with corresponding format stringconversionFor example when compiling with --strict, the code:unsigned long foo = 0x1234;printf("%0X", foo);results in the warning:Warning: #181-D: argument is incompatible with correspondingformat string conversionTo avoid the warning, the code could be rewritten as:unsigned long foo = 0x1234;printf("%0lX", foo);or perhaps:unsigned int foo = 0x1234;printf("%0X", foo);%0X can be used for char, short or int. Use lX for a long integer, eventhough both ints <strong>and</strong> longs are 32-bits wide on an <strong>ARM</strong>.182 could not open source file (no directories in searchlist)183 type of cast must be integral184 type of cast must be arithmetic or pointer185 dynamic initialization in unreachable code186 pointless comparison of unsigned integer with zeroFor example:unsigned short foo;if (foo


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>int main(void){int a;const int b =1;if (a=b)}188 enumerated type mixed with another type189 error while writing file190 invalid intermediate language file191 type qualifier is meaningless on cast typeThe C specification states that a cast does not yield an lvalue, so a cast toa qualified type has the same effect as a cast to the unqualified version ofthe type. This warning is just to inform the user that the type qualifier hasno effect, although the code is still legal. The warning is suppressiblewith --diag_suppress 191.Example:"val2 = (const float)val1;" is equivalent to "val2 = (float)val1;"192 unrecognized character escape sequenceThis error is commonly associated with the attempted use of non-ASCIIcharacter sets, such as 16-bit Unicode characters. The RVCT compilersupports multibyte character sets, such as Unicode. Source files arecompiled according to the selected locale of that machine. It is possibleto use Escape processing (as recommended by Kernighan <strong>and</strong> Richie,section A2.5.2) to encode specific values instead.For example:char *p = "\x12\x34\x56\x78"; // 12 34 56 78In character <strong>and</strong> string escapes, if the character following the \ has nospecial meaning, the value of the escape is the character itself, forexample, \s is the same as s <strong>and</strong> the warning is given.Example code is provided with the RVCT tools is in:"<strong>ARM</strong> tools directory"\RVDS\Examples\4.0\xx\windows\unicode.193 zero used for undefined preprocessing identifier 194 expected an asm string195 an asm function must be prototyped1-18 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>196 an asm function may not have an ellipsis219 error while deleting file 220 integral value does not fit in required floating-point type221 floating-point value does not fit in required floating-point type222 floating-point operation result is out of range223 function declared implicitlyThis is a common warning that occurs where there is no prototype for afunction.For example:void foo(void){printf("foo");}To fix this, add #include that includes the prototype for printf.For ANSI C, this warning can be suppressed with --diag_suppress 223.This is useful when compiling old-style C in ANSI C mode.224 the format string requires additional arguments225 the format string ends before this argument226 invalid format string conversion227 macro recursion228 trailing comma is nonst<strong>and</strong>ard229 bit field cannot contain all values of the enumerated type230 nonst<strong>and</strong>ard type for a bit fieldIn strict ANSI C, the only types allowed for a bit field are int, signed int<strong>and</strong> unsigned int.Example:struct X{char y:2;};231 declaration is not visible outside of function232 old-fashioned typedef of "void" ignored233 left oper<strong>and</strong> is not a struct or union containing this field<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-19ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>234 pointer does not point to struct or union containing this field235 variable was declared with a never-completed type236 controlling expression is constant237 selector expression is constant238 invalid specifier on a parameter239 invalid specifier outside a class declaration240 duplicate specifier in declaration241 a union is not allowed to have a base class242 multiple access control specifiers are not allowed243 class or struct definition is missing244 qualified name is not a member of class or its base classes245 a nonstatic member reference must be relative to a specific object246 a nonstatic data member may not be defined outside its class247 has already been definedA typical example of this is where a variable name has been used morethan once.This can sometimes occur when compiling legacy code that relies ontentative declarations. Tentative declarations allow a variable to bedeclared <strong>and</strong> initialized as separate statements such as:int a;int a = 1;In RVCT 3.1 tentative declarations are allowed by default for C code, butproduce an error with C++ code.248 pointer to reference is not allowed249 reference to reference is not allowed250 reference to void is not allowed251 array of reference is not allowed252 reference requires an initializer253 expected a ","254 type name is not allowed1-20 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This occurs when a typedef name is being used directly in an expression:typedef int footype;int x = footype; // reports Error: #254: type name is not allowedTo fix this, first create an instance of that type (for example, a variable ofthe new type):typedef int footype;footype bar = 1;int x = bar;255 type definition is not allowed256 invalid redeclaration of type name 257 const requires an initializer258 "this" may only be used inside a nonstatic member function259 constant value is not known260 explicit type is missing ("int" assumed)261 access control not specified ( by default)262 not a class or struct name263 duplicate base class name264 invalid base class265 is inaccessibleFor C++ only, the --diag_warning 265 option downgrades access controlerrors to warnings.For example:class A { void f() {}; }; // private memberA a;void g() { a.f(); } // erroneous accessresults in the message:Error: #265-D: function "A::f" is inaccessible266 is ambiguous267 old-style parameter list (anachronism)268 declaration may not appear after executable statement in block269 conversion to inaccessible base class is not allowed274 improperly terminated macro invocation<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-21ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>276 name followed by "::" must be a class or namespace name277 invalid friend declaration278 a constructor or destructor may not return a value279 invalid destructor declaration280 declaration of a member with the same name as its class281 global-scope qualifier (leading "::") is not allowed282 the global scope has no 283 qualified name is not allowed284 NULL reference is not allowed285 initialization with "" is not allowed for object of type286 base class is ambiguous287 derived class contains more than one instance of class288 cannot convert pointer to base class to pointer to derivedclass -- base class is virtual289 no instance of constructor matches the argument list290 copy constructor for class is ambiguous291 no default constructor exists for class 292 is not a nonstatic data member or base class of class293 indirect nonvirtual base class is not allowed294 invalid union member -- class has a disallowed memberfunction296 invalid use of non-lvalue array297 expected an operator298 inherited member is not allowed1-22 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>299 cannot determine which instance of is intended300 a pointer to a bound function may only be used to call thefunction301 typedef name has already been declared (with same type)302 has already been defined304 no instance of matches the argument list305 type definition is not allowed in function return type declaration306 default argument not at end of parameter list307 redefinition of default argument308 more than one instance of matches the argument list:309 more than one instance of constructor matches theargument list:310 default argument of type is incompatible with parameter oftype 311 cannot overload functions distinguished by return type alone312 no suitable user-defined conversion from to exists313 type qualifier is not allowed on this function314 only nonstatic member functions may be virtual315 the object has cv-qualifiers that are not compatible with themember function316 program too large to compile (too many virtual functions)317 return type is not identical to nor covariant with return type of overridden virtual function 318 override of virtual is ambiguous319 pure specifier ("= 0") allowed only on virtual functions320 badly-formed pure specifier (only "= 0" is allowed)321 data member initializer is not allowed322 object of abstract class type is not allowed:323 function returning abstract class is not allowed:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-23ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>324 duplicate friend declaration325 inline specifier allowed on function declarations only326 "inline" is not allowed327 invalid storage class for an inline function328 invalid storage class for a class member329 local class member requires a definition330 is inaccessible332 class has no copy constructor to copy a const object333 defining an implicitly declared member function is not allowed334 class has no suitable copy constructor335 linkage specification is not allowed336 unknown external linkage specification337 linkage specification is incompatible with previous If the linkage for a function is redeclared with an incompatiblespecification to a previous declaration this error is produced.For example:int foo(void);int bar(void){int x;x = foo();return x;}extern "C" int foo(void){return 0;}results in the message:Error: #337: linkage specification is incompatible with previous"foo" (declared at line 1)338 more than one instance of overloaded function has "C"linkage339 class has more than one default constructor340 value copied to temporary, reference to temporary used1-24 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>341 "operator" must be a member function342 operator may not be a static member function343 no arguments allowed on user-defined conversion344 too many parameters for this operator function345 too few parameters for this operator function346 nonmember operator requires a parameter with class type347 default argument is not allowed348 more than one user-defined conversion from to applies:349 no operator matches these oper<strong>and</strong>s350 more than one operator matches these oper<strong>and</strong>s:351 first parameter of allocation function must be of type "size_t"352 allocation function requires "void *" return type353 deallocation function requires "void" return type354 first parameter of deallocation function must be of type "void *"356 type must be an object type357 base class has already been initialized358 base class name required -- assumed (anachronism)359 has already been initialized360 name of member or base class is missing361 assignment to "this" (anachronism)362 "overload" keyword used (anachronism)363 invalid anonymous union -- nonpublic member is not allowed364 invalid anonymous union -- member function is not allowed365 anonymous union at global or namespace scope must be declaredstatic366 provides no initializer for:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-25ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>367 implicitly generated constructor for class cannotinitialize:368 defines no constructor to initialize the following:This indicates that you have a const structure or structure containing aconst. It is issued as a friendly warning to assist with error 369. This cansafely be ignored providing that the const members of structures areappropriately initialized.369 has an uninitialized const or reference memberThis indicates that you have a instance of a const structure or structurecontaining a const that has not been correctly initialized. You must eitherinitialise it correctly for every instance or provide a constructor toinitialise it.370 has an uninitialized const field371 class has no assignment operator to copy a const object372 class has no suitable assignment operator373 ambiguous assignment operator for class 375 declaration requires a typedef name377 "virtual" is not allowed378 "static" is not allowed379 cast of bound function to normal function pointer (anachronism)380 expression must have pointer-to-member type381 extra ";" ignoredIn C, this can be caused by an unexpected semicolon at the end of adeclaration line, for example:int x;;This might occur inadvertently when using macros.Similarly, in C++, this might be caused by constructions like:class X { ... } ; ;which probably resulted from some macro usage:#define M(c) class c { ... } ;M(X);The extra semicolon is illegal because empty declarations are illegal.1-26 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>382 nonst<strong>and</strong>ard member constant declaration (st<strong>and</strong>ard form is a staticconst integral member)384 no instance of overloaded matches the argument list386 no instance of matches the required type387 delete array size expression used (anachronism)389 a cast to abstract class is not allowed:390 function "main" may not be called or have its address taken391 a new-initializer may not be specified for an array392 member function may not be redeclared outside its class393 pointer to incomplete class type is not allowed394 reference to local variable of enclosing function is not allowed395 single-argument function used for postfix (anachronism)398 cast to array type is nonst<strong>and</strong>ard (treated as cast to )399 has an operator new() but no default operatordelete()400 has a default operator delete() but no operatornew()401 destructor for base class is not virtual403 invalid redeclaration of member 404 function "main" may not be declared inline405 member function with the same name as its class must be aconstructor406 using nested (anachronism)407 a destructor may not have parameters408 copy constructor for class may not have a parameter of type409 returns incomplete type 410 protected is not accessible through a pointer orobject<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-27ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>411 a parameter is not allowed412 an "asm" declaration is not allowed here413 no suitable conversion function from to exists414 delete of pointer to incomplete class415 no suitable constructor exists to convert from to 416 more than one constructor applies to convert from to:417 more than one conversion function from to applies:418 more than one conversion function from to a built-in typeapplies:424 a constructor or destructor may not have its address taken427 qualified name is not allowed in member declaration428 enumerated type mixed with another type (anachronism)429 the size of an array in "new" must be non-negative430 returning reference to local temporary433 qualifiers dropped in binding reference of type toinitializer of type 434 a reference of type (not const-qualified) cannot beinitialized with a value of type 435 a pointer to function may not be deleted436 conversion function must be a nonstatic member function437 template declaration is not allowed here438 expected a ""440 template parameter declaration is missing441 argument list for is missing442 too few arguments for 443 too many arguments for 450 the type "long long" is nonst<strong>and</strong>ard1-28 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>451 omission of is nonst<strong>and</strong>ard452 return type may not be specified on a conversion function456 excessive recursion at instantiation of 457 is not a function or static data member458 argument of type is incompatible with template parameter oftype 459 initialization requiring a temporary or conversion is not allowed460 declaration of hides function parameter461 initial value of reference to non-const must be an lvalue463 "template" is not allowed464 is not a class template467 invalid reference to (union/nonunion mismatch)468 a template argument may not reference a local type469 tag kind of is incompatible with declaration of 470 the global scope has no tag named 471 has no tag member named 473 may be used only in pointer-to-member declaration476 name followed by "::~" must be a class name or a type name477 destructor name does not match name of class 478 type used as destructor name does not match type 479 redeclared "inline" after being called485 is not an entity that can be instantiated486 compiler generated cannot be explicitly instantiated487 inline cannot be explicitly instantiated490 cannot be instantiated -- it has been explicitlyspecialized494 declaring a void parameter list with a typedef is nonst<strong>and</strong>ard<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-29ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>When the compiler is in ANSI C mode, this error might be produced bya function declaration f(V) where V is a void type.In the special syntax f() that indicates that f is a function taking noarguments, the keyword is required. The name of a void typecannot be used instead.496 template parameter may not be redeclared in this scope497 declaration of hides template parameter498 template argument list must match the parameter list501 an operator name must be declared as a function502 operator name is not allowed503 cannot be specialized in the current scope504 nonst<strong>and</strong>ard form for taking the address of a member functionThe C++ st<strong>and</strong>ard requires that a pointer to member be named using aqualified name <strong>and</strong> a & character such as for &A::f.The front end previously accepted nonst<strong>and</strong>ard forms like &f, or evensimply f, as a concession to existing practice. This usage now produces adiscretionary error.505 too few template parameters -- does not match previous declaration506 too many template parameters -- does not match previousdeclaration507 function template for operator delete(void *) is not allowed508 class template <strong>and</strong> template parameter may not have the same name511 enumerated type is not allowed512 type qualifier on a reference type is not allowed513 a value of type cannot be assigned to an entity of type514 pointless comparison of unsigned integer with a negative constant515 cannot convert to incomplete class 516 const object requires an initializer517 object has an uninitialized const or reference member518 nonst<strong>and</strong>ard preprocessing directive1-30 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>519 may not have a template argument list520 initialization with "" expected for aggregate object521 pointer-to-member selection class types are incompatible (<strong>and</strong> )522 pointless friend declaration524 non-const function called for const object (anachronism)525 a dependent statement may not be a declaration526 a parameter may not have void typeFor example:void foo(void a) { }529 this operator is not allowed in a template argument expression530 try block requires at least one h<strong>and</strong>ler531 h<strong>and</strong>ler requires an exception declaration532 h<strong>and</strong>ler is masked by default h<strong>and</strong>ler533 h<strong>and</strong>ler is potentially masked by previous h<strong>and</strong>ler for type 534 use of a local type to specify an exception535 redundant type in exception specification536 exception specification is incompatible with that of previous540 support for exception h<strong>and</strong>ling is disabled541 omission of exception specification is incompatible with previous542 could not create instantiation request file 543 non-arithmetic operation not allowed in nontype template argument544 use of a local type to declare a nonlocal variable545 use of a local type to declare a function546 transfer of control bypasses initialization of:Example:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-31ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>int main(void){int choice = 1;int z =1;switch(choice){case 1:int y = 1;z = y + z;break;case 2:break;}return 0;In the example, y is an initialized variable that is in scope (but unused) inthe other cases.The C++ St<strong>and</strong>ard says in section 6.7:"It is possible to transfer into a block, but not in a way that bypassesdeclarations with initialization. A program that jumps from a point wherea local variable with automatic storage duration is not in scope to a pointwhere it is in scope is ill-formed unless the variable has POD type (3.9)<strong>and</strong> is declared without an initializer (8.5)."NoteThe transfer from the condition of a switch statement to a case label isconsidered a jump in this respect.The usual way to fix this is to enclose the case that declares y in braces:case 1: {int y = 1;z = y + z;}break;Because y is a POD (Plain Old Data) type, so an alternative is to not useinitialization:case 1:int y;y = 1;z = y + z;break;548 transfer of control into an exception h<strong>and</strong>ler549 is used before its value is set550 was set but never used1-32 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>551 cannot be defined in the current scope552 exception specification is not allowed553 external/internal linkage conflict for 554 will not be called for implicit or explicit conversions555 tag kind of is incompatible with template parameter oftype 556 function template for operator new(size_t) is not allowed558 pointer to member of type is not allowed559 ellipsis is not allowed in operator function parameter list560 is reserved for future use as a keyword561 invalid macro definition:562 invalid macro undefinition:563 invalid output file 564 cannot open output file : 570 error in debug option argument571 invalid option:574 invalid number:576 invalid instantiation mode:578 invalid error limit:585 virtual function tables can only be suppressed when compiling C++586 anachronism option can be used only when compiling C++587 instantiation mode option can be used only when compiling C++588 automatic instantiation mode can be used only when compiling C++589 implicit template inclusion mode can be used only when compilingC++590 exception h<strong>and</strong>ling option can be used only when compiling C++593 missing source file name<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-33ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>594 output files may not be specified when compiling several inputfiles595 too many arguments on comm<strong>and</strong> line596 an output file was specified, but none is needed598 a template parameter may not have void type600 strict mode is incompatible with allowing anachronisms601 a throw expression may not have void type602 local instantiation mode is incompatible with automaticinstantiation603 parameter of abstract class type is not allowed:604 array of abstract class is not allowed:605 floating-point template parameter is nonst<strong>and</strong>ard606 this pragma must immediately precede a declaration607 this pragma must immediately precede a statement608 this pragma must immediately precede a declaration or statement609 this kind of pragma may not be used here611 overloaded virtual function is only partially overriddenin 612 specific definition of inline template function must precede itsfirst use613 invalid error tag in diagnostic control option:614 invalid error number in diagnostic control option:615 parameter type involves pointer to array of unknown bound616 parameter type involves reference to array of unknown bound617 pointer-to-member-function cast to pointer to function618 struct or union declares no named members619 nonst<strong>and</strong>ard unnamed field620 nonst<strong>and</strong>ard unnamed member624 is not a type name1-34 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>625 cannot open precompiled header input file : 626 precompiled header file is either invalid or notgenerated by this version of the compiler627 precompiled header file was not generated in thisdirectory628 header files used to generate precompiled header file have changed629 the comm<strong>and</strong> line options do not match those used when precompiledheader file was created630 the initial sequence of preprocessing directives is not compatiblewith those of precompiled header file 631 unable to obtain mapped memory for : This can occur if you are trying to use a large PreCompiled Header(PCH), <strong>and</strong> you have a size limitation on the TMP directory that the <strong>ARM</strong>Compiler toolchain uses. A possible workaround is to remove the TMPenvironment variable. This forces the tools to create temporary files inthe current working directory.632 "": using precompiled header file ""633 "": creating precompiled header file ""634 memory usage conflict with precompiled header file This can occur if a PCH file cannot be mapped back into the buildbecause the required parts of the address space of the compiler are notavailable.See also error 631.635 invalid PCH memory size636 PCH options must appear first in the comm<strong>and</strong> line637 insufficient memory for PCH memory allocation638 precompiled header files may not be used when compiling severalinput files639 insufficient preallocated memory for generation of precompiledheader file ( bytes required)640 very large entity in program prevents generation of precompiledheader file<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-35ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>641 is not a valid directory642 cannot build temporary file name643 "restrict" is not allowed644 a pointer or reference to function type may not be qualified by"restrict"645 is an unrecognized __declspec attribute646 a calling convention modifier may not be specified here647 conflicting calling convention modifiers650 calling convention specified here is ignored651 a calling convention may not be followed by a nested declarator652 calling convention is ignored for this type654 declaration modifiers are incompatible with previous declaration655 the modifier is not allowed on this declaration656 transfer of control into a try block657 inline specification is incompatible with previous 658 closing brace of template definition not found659 wchar_t keyword option can be used only when compiling C++660 invalid packing alignment value661 expected an integer constant662 call of pure virtual functionA pure virtual function pvfn is being called, for example:struct T { T(); virtual void pvfn() = 0; };// a pure virtual functionT::T() { pvfn(); } // warning given hereBy default, calling a pure virtual function results in:1. a call to the library function __pvfn()2. the function raises the signal SIGPVFN3. the signal is trapped by the default_signal_h<strong>and</strong>ler4. the h<strong>and</strong>ler displays Pure virtual fn called on the console usingsemihosting.1-36 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>See Signal functions in the RVCT Libraries <strong>and</strong> Floating Point Guide.663 invalid source file identifier string664 a class template cannot be defined in a friend declaration665 "asm" is not allowed666 "asm" must be used with a function definition667 "asm" function is nonst<strong>and</strong>ard668 ellipsis with no explicit parameters is nonst<strong>and</strong>ard669 "&..." is nonst<strong>and</strong>ard670 invalid use of "&..."672 temporary used for initial value of reference to const volatile(anachronism)673 a reference of type cannot be initialized with a value oftype 674 initial value of reference to const volatile must be an lvalue676 using out-of-scope declaration of 678 call of cannot be inlined679 cannot be inlined680 invalid PCH directory:688 not found on pack alignment stack689 empty pack alignment stack690 RTTI option can be used only when compiling C++691 , required for copy that was eliminated, is inaccessible692 , required for copy that was eliminated, is not callablebecause reference parameter cannot be bound to rvalue693 must be included before typeid is used694 cannot cast away const or other type qualifiers695 the type in a dynamic_cast must be a pointer or reference to acomplete class type, or void *<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-37ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>696 the oper<strong>and</strong> of a pointer dynamic_cast must be a pointer to acomplete class type697 the oper<strong>and</strong> of a reference dynamic_cast must be an lvalue of acomplete class type698 the oper<strong>and</strong> of a runtime dynamic_cast must have a polymorphicclass type699 bool option can be used only when compiling C++702 expected an "="703 expected a declarator in condition declaration704 , declared in condition, may not be redeclared in thisscope705 default template arguments are not allowed for function templates706 expected a "," or ">"707 expected a template parameter list708 incrementing a bool value is deprecated709 bool type is not allowed710 offset of base class within class is too large711 expression must have bool type (or be convertible to bool)712 array new <strong>and</strong> delete option can be used only when compiling C++713 is not a variable name717 the type in a const_cast must be a pointer, reference, or pointerto member to an object type718 a const_cast can only adjust type qualifiers; it cannot change theunderlying type719 mutable is not allowed720 redeclaration of is not allowed to alter its access722 use of alternative token "


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>725 name must be a namespace name726 namespace alias definition is not allowed727 namespace-qualified name is required728 a namespace name is not allowed730 is not a class template731 array with incomplete element type is nonst<strong>and</strong>ard732 allocation operator may not be declared in a namespace733 deallocation operator may not be declared in a namespace734 conflicts with using-declaration of 735 using-declaration of conflicts with 736 namespaces option can be used only when compiling C++737 using-declaration ignored -- it refers to the current namespace738 a class-qualified name is required744 incompatible memory attributes specified745 memory attribute ignored746 memory attribute may not be followed by a nested declarator747 memory attribute specified more than once748 calling convention specified more than once749 a type qualifier is not allowed750 was used before its template was declared751 static <strong>and</strong> nonstatic member functions with same parameter typescannot be overloaded752 no prior declaration of 753 a template-id is not allowed754 a class-qualified name is not allowed755 may not be redeclared in the current scope756 qualified name is not allowed in namespace member declaration<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-39ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>757 is not a type name758 explicit instantiation is not allowed in the current scope759 cannot be explicitly instantiated in the current scope760 explicitly instantiated more than once761 typename may only be used within a template763 typename option can be used only when compiling C++764 implicit typename option can be used only when compiling C++765 nonst<strong>and</strong>ard character at start of object-like macro definition766 exception specification for virtual is incompatible withthat of overridden 767 conversion from pointer to smaller integer768 exception specification for implicitly declared virtual is incompatible with that of overridden 769 , implicitly called from , is ambiguous770 option "explicit" can be used only when compiling C++771 "explicit" is not allowed772 declaration conflicts with (reserved class name)773 only "()" is allowed as initializer for array 774 "virtual" is not allowed in a function template declaration775 invalid anonymous union -- class member template is not allowed776 template nesting depth does not match the previous declaration of777 this declaration cannot have multiple "template " clauses778 option to control the for-init scope can be used only whencompiling C++779 , declared in for-loop initialization, may not beredeclared in this scope780 reference is to -- under old for-init scoping rules itwould have been 1-40 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>781 option to control warnings on for-init differences can be usedonly when compiling C++782 definition of virtual is required here783 empty comment interpreted as token-pasting operator "##"784 a storage class is not allowed in a friend declaration785 template parameter list for is not allowed in thisdeclaration786 is not a valid member class or function template787 not a valid member class or function template declaration788 a template declaration containing a template parameter list maynot be followed by an explicit specialization declaration789 explicit specialization of must precede the first use of790 explicit specialization is not allowed in the current scope791 partial specialization of is not allowed792 is not an entity that can be explicitly specialized793 explicit specialization of must precede its first use794 template parameter may not be used in an elaborated typespecifier795 specializing requires "template" syntax798 option old_specializations can be used only when compiling C++799 specializing without "template" syntax is nonst<strong>and</strong>ard800 this declaration may not have extern "C" linkage801 is not a class or function template name in the currentscope802 specifying a default argument when redeclaring an unreferencedfunction template is nonst<strong>and</strong>ard803 specifying a default argument when redeclaring an alreadyreferenced function template is not allowed804 cannot convert pointer to member of base class to pointerto member of derived class -- base class is virtual<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-41ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>805 exception specification is incompatible with that of806 omission of exception specification is incompatible with 807 unexpected end of default argument expression808 default-initialization of reference is not allowed809 uninitialized has a const member810 uninitialized base class has a const member811 const requires an initializer -- class has noexplicitly declared default constructor812 const object requires an initializer -- class has noexplicitly declared default constructor814 strict mode is incompatible with long preserving rules815 type qualifier on return type is meaninglessFor example:__packed void foo( void ) { }The __packed qualifier is ignored because the return type cannot be__packed.816 in a function definition a type qualifier on a "void" return typeis not allowed817 static data member declaration is not allowed in this class818 template instantiation resulted in an invalid function declaration819 "..." is not allowed821 extern inline was referenced but not defined822 invalid destructor name for type 824 destructor reference is ambiguous -- both <strong>and</strong> could be used825 could be used826 was never referenced827 only one member of a union may be specified in a constructorinitializer list1-42 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>828 support for "new[]" <strong>and</strong> "delete[]" is disabled829 "double" used for "long double" in generated C code830 has no corresponding operator delete (to becalled if an exception is thrown during initialization of anallocated object)831 support for placement delete is disabled832 no appropriate operator delete is visible833 pointer or reference to incomplete type is not allowed834 invalid partial specialization -- is already fullyspecialized835 incompatible exception specifications836 returning reference to local variable837 omission of explicit type is nonst<strong>and</strong>ard ("int" assumed)A function has been declared or defined with no return type.Example, with the code:foo(void){int a;}an int result is assumed.If you want it to return no result, use void as the return type. This iswidespread in old-style C.The --diag_suppress 837 option suppresses this warning.See also message number 938, that is a special case of this message formain().838 more than one partial specialization matches the template argumentlist of 840 a template argument list is not allowed in a declaration of aprimary template841 partial specializations may not have default template arguments842 is not used in template argument list of 844 the template argument list of the partial specialization includesa nontype argument whose type depends on a template parameter<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-43ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>845 this partial specialization would have been used to instantiate846 this partial specialization would have been made the instantiationof ambiguous847 expression must have integral or enum type848 expression must have arithmetic or enum type849 expression must have arithmetic, enum, or pointer type850 type of cast must be integral or enum851 type of cast must be arithmetic, enum, or pointer852 expression must be a pointer to a complete object type854 a partial specialization nontype argument must be the name of anontype parameter or a constant855 return type is not identical to return type of overriddenvirtual function 856 option "guiding_decls" can be used only when compiling C++857 a partial specialization of a class template must be declared inthe namespace of which it is a member858 is a pure virtual function859 pure virtual has no overrider860 __declspec attributes ignored861 invalid character in input line862 function returns incomplete type 863 effect of this "#pragma pack" directive is local to 864 is not a template865 a friend declaration may not declare a partial specialization866 exception specification ignored867 declaration of "size_t" does not match the expected type 868 space required between adjacent ">" delimiters of nested templateargument lists (">>" is the right shift operator)1-44 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>869 could not set locale to allow processing of multibytecharacters870 invalid multibyte character sequence871 template instantiation resulted in unexpected function type of (the meaning of a name may have changed since the templatedeclaration -- the type of the template is )872 ambiguous guiding declaration -- more than one function template matches type 873 non-integral operation not allowed in nontype template argument884 pointer-to-member representation has already been set for885 cannot be used to designate constructor for 886 invalid suffix on integral constant890 variable length array with unspecified bound is not allowed891 an explicit template argument list is not allowed on thisdeclaration892 an entity with linkage cannot have a type involving a variablelength array893 a variable length array cannot have static storage duration894 is not a template895 variable length array dimension (declared )896 expected a template argument902 type qualifier ignored912 ambiguous class member reference -- used in preference to915 a segment name has already been specified916 cannot convert pointer to member of derived class topointer to member of base class -- base class is virtual917 invalid directory for instantiation files:921 an instantiation information file name may not be specified whencompiling several input files<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-45ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>923 more than one comm<strong>and</strong> line option matches the abbreviation"--":925 type qualifiers on function types are ignored926 cannot open definition list file: 928 incorrect use of va_start929 incorrect use of va_arg930 incorrect use of va_end931 pending instantiations option can be used only when compiling C++932 invalid directory for #import files:934 a member with reference type is not allowed in a union935 "typedef" may not be specified here936 redeclaration of alters its access937 a class or namespace qualified name is required938 return type "int" omitted in declaration of function "main"main() has been declared or defined with no return type.For example:main(void){int a;}is reported as an error by the compiler if compiled with --strict.If you want it to return no result, use void as the return type. This iswidespread in old-style C.For ANSI C, the --diag_suppress 938 option suppresses this warning.For C++, this always results in an error.See also message number 837 for more general cases.939 pointer-to-member representation is too restrictive for940 missing return statement at end of non-void A return type has been defined for a function, but no value is returned.Example:1-46 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>int foo(int a){printf("Hello %d", a);}941 duplicate using-declaration of ignored942 enum bit-fields are always unsigned, but enum includesnegative enumerator943 option "class_name_injection" can be used only when compiling C++944 option "arg_dep_lookup" can be used only when compiling C++945 option "friend_injection" can be used only when compiling C++946 name following "template" must be a template949 specifying a default argument on this declaration is nonst<strong>and</strong>ard951 return type of function "main" must be "int"952 a nontype template parameter may not have class type953 a default template argument cannot be specified on the declarationof a member of a class template outside of its class954 a return statement is not allowed in a h<strong>and</strong>ler of a function tryblock of a constructor955 ordinary <strong>and</strong> extended designators cannot be combined in aninitializer designation956 the second subscript must not be smaller than the first959 declared size for bit field is larger than the size of the bitfield type; truncated to bits960 type used as constructor name does not match type 961 use of a type with no linkage to declare a variable with linkage962 use of a type with no linkage to declare a function963 return type may not be specified on a constructor964 return type may not be specified on a destructor965 incorrectly formed universal character name966 universal character name specifies an invalid character<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-47ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>967 a universal character name cannot designate a character in thebasic character set968 this universal character is not allowed in an identifier969 the identifier __VA_ARGS__ can only appear in the replacementlists of variadic macros970 the qualifier on this friend declaration is ignored971 array range designators cannot be applied to dynamic initializers972 property name cannot appear here975 a variable-length array type is not allowed976 a compound literal is not allowed in an integral constantexpression977 a compound literal of type is not allowed978 a template friend declaration cannot be declared in a local class979 ambiguous "?" operation: second oper<strong>and</strong> of type can beconverted to third oper<strong>and</strong> type , <strong>and</strong> vice versa980 call of an object of a class type without appropriate operator()or conversion functions to pointer-to-function type982 there is more than one way an object of type can be calledfor the argument list:983 typedef name has already been declared (with similar type)984 operator new <strong>and</strong> operator delete cannot be given internal linkage985 storage class "mutable" is not allowed for anonymous unions986 invalid precompiled header file987 abstract class type is not allowed as catch type:988 a qualified function type cannot be used to declare a nonmemberfunction or a static member function989 a qualified function type cannot be used to declare a parameter990 cannot create a pointer or reference to qualified function type991 extra braces are nonst<strong>and</strong>ard992 invalid macro definition:1-48 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Incorrect use of -D on the compile line, for example, "-D##"993 subtraction of pointer types <strong>and</strong> is nonst<strong>and</strong>ard994 an empty template parameter list is not allowed in a templatetemplate parameter declaration995 expected "class"996 the "class" keyword must be used when declaring a templatetemplate parameter997 is hidden by -- virtual function overrideintended?998 a qualified name is not allowed for a friend declaration that is afunction definition999 is not compatible with 1000 a storage class may not be specified here1001 class member designated by a using-declaration must be visible ina direct base class1006 a template template parameter cannot have the same name as one ofits template parameters1007 recursive instantiation of default argument1009 is not an entity that can be defined1010 destructor name must be qualified1011 friend class name may not be introduced with "typename"1012 a using-declaration may not name a constructor or destructor1013 a qualified friend template declaration must refer to a specificpreviously declared template1014 invalid specifier in class template declaration1015 argument is incompatible with formal parameter1016 prefix form of <strong>ARM</strong> function qualifier not permitted in thisposition1017 Duplicate <strong>ARM</strong> function qualifiers not permitted1018 <strong>ARM</strong> function qualifiers not permitted on thisdeclaration/definition<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-49ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong><strong>ARM</strong> function qualifiers include qualifiers such as __svc, __pure <strong>and</strong>__irq amongst others.For more information see the Compilers <strong>Reference</strong> Guide.1019 function qualifier not permitted on a non-static memberfunction1020 __irq functions must take no arguments1021 __irq functions must return no result1022 cannot have pointer nor reference to function1023 __global_reg not allowed on this declaration1024 invalid global register number; 1 to 8 allowedAn invalid register is being used in __global_reg.Example:__global_reg(786) int x;1025 __svc parameter is not within permitted range (0 to0xffffff) for <strong>ARM</strong> SVC instructionSVC numbers are limited to the range 0 to 0xffffff for the <strong>ARM</strong>compilers, <strong>and</strong> 0 to 0xFF for the Thumb compilers.For st<strong>and</strong>ard semihosting SVCs, 0x123456 is used for <strong>ARM</strong>, 0xAB is usedfor Thumb.1026 taking the address of a global register variable is not allowed1027 __svc_indirect function must have arguments1028 conflicting global register declaration with 1029 __packed ignored for non-pointer parameter1030 previously declared without __packed1031 Definition of in packed must be __packedThe RVCT Compiler <strong>Reference</strong> Guide says:"All substructures of a packed structure must be declared using__packed."This rule applies for all releases of RVCT.The compiler faults a non-packed child structure contained in a packedparent structure. This includes the case where the substructure is an array.For example:1-50 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>typedef struct ChildStruct {int a;} ChildStruct;typedef __packed struct ParentStruct {ChildStruct child[1];} ParentStruct;correctly results in the message:Error: #1031: Definition of "ChildStruct" in packed "ParentStruct"must be __packed1032 Definition of nested anonymous in packed must be__packed1033 incompatible with function definition1034 __irq functions must not be the target of a function call1038 invalid alignment specified; only integer powers of 2 allowed1039 conflicting alignment declaration with 1040 under-alignment not allowed1041 alignment for an auto object may not be larger than 8For example:int main(void){__align(16) int foo = 10;}__align is not allowed for a local variable foo, so the error is given.1042 cannot be dynamically initialized when compiled positionindependent1043 cannot be const because it contains a mutable member1044 option "dep_name" can be used only when compiling C++1045 loop in sequence of "operator->" functions starting at class1046 has no member class 1047 the global scope has no class named 1048 recursive instantiation of template default argument1049 access declarations <strong>and</strong> using-declarations cannot appear in unions1050 is not a class member<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-51ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1051 nonst<strong>and</strong>ard member constant declaration is not allowed1053 option "parse_templates" can be used only when compiling C++1054 option "dep_name" cannot be used with "no_parse_templates"1055 language modes specified are incompatible1056 invalid redeclaration of nested class1057 type containing an unknown-size array is not allowed1058 a variable with static storage duration cannot be defined withinan inline function1059 an entity with internal linkage cannot be referenced within aninline function with external linkage1060 argument type does not match this type-generic functionmacro1062 friend declaration cannot add default arguments to previousdeclaration1063 cannot be declared in this scope1064 the reserved identifier may only be used inside afunction1065 this universal character cannot begin an identifier1066 expected a string literal1070 incorrect use of va_copy1071 can only be used with floating-point types1072 complex type is not allowed1073 invalid designator kind1074 floating-point value cannot be represented exactly1075 complex floating-point operation result is out of range1077 an initializer cannot be specified for a flexible array member1079 st<strong>and</strong>ard requires that be given a type by a subsequentdeclaration ("int" assumed)1080 a definition is required for inline 1-52 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1081 conversion from integer to smaller pointer1082 a floating-point type must be included in the type specifier for a_Complex or _Imaginary type1083 Inline assembler syntax error1084 This instruction not permitted in inline assembler1085 Missing oper<strong>and</strong>1086 Oper<strong>and</strong> is wrong type1087 Oper<strong>and</strong> should be constant1088 Wrong number of oper<strong>and</strong>s1089 Invalid PSR oper<strong>and</strong>1090 Expected PSR oper<strong>and</strong>1091 Invalid shift specified1092 Should be acc01093 Must be a modifiable lvalue1094 Expected a register expression1095 Expected a label or function name1096 Instruction cannot be conditional1097 Expected a [ or ]1098 Expected a shift operation1099 Unexpected ]1100 Register specified shift not allowed1101 Pre-Indexed addressing not allowed1102 Post-Indexed addressing not allowed1103 Writeback not allowed in the addressing mode1104 Expected {1105 Expected }1106 Too many registers in register list<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-53ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1107 Only ^ valid here1108 Cannot mix virtual register <strong>and</strong> C/C++ expressions in register list1109 Only virtual registers can be specified in a register range1110 User mode register selection/CPSR update not supported in inlineassembler. Use embedded assembler or out-of-line assembler1111 Expected a coprocessor name1112 Expected a coprocessor register nameThese errors are given by the inline assembler if either:• the coprocessor number is accidentally omitted from an MCR orMRC instruction• an invalid coprocessor number/coprocessor register number hasbeen given.An example of correct use is shown below:void foo(){int reg0;__asm{MRC p15, 0, reg0, c1, c0, 0}}1113 Inline assembler not permitted when generating Thumb codeThe Thumb inline assembler was supported in ADS, but support waswithdrawn in RVCT 2.0. Use of the inline assembler is deprecated inRVCT 3.1 <strong>and</strong> later, when compiling for Arch v7 or later, that is, mostprocessors in the Cortex series.The inline assembler is no longer being actively maintained. It does notsupport Thumb(-1) or Thumb-2, or all the v6 instructions. However, theinline assembler does still support the (<strong>ARM</strong>-only) Arch v4T, v5TE, <strong>and</strong>a subset of the new v6 instructions (only the v6 media instructions), solegacy inline assembly code continues to build correctly with RVCT 2.2<strong>and</strong> later.This warning is intended as a reminder to consider using the embeddedassembler or built-in intrinsics instead of inline assembler. If you cannotchange your code but require elimination of the warning, suppress thewarning or compile the module for an earlier cpu such as v6.1114 this feature not supported on target architecture/processor1-54 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Example when compiled with armcc --cpu 4T:int main(void) {int a,b,c;__asm {QADD a,b,c}return(a);}results in an error message because the saturated add instruction is onlysupported in Architectures 5TE <strong>and</strong> above.1115 Cannot assign to const oper<strong>and</strong>1116 Register list cannot be empty1117 Unqualified virtual function not allowed1118 Expected a newline1119 <strong>Reference</strong> to static variable not allowed in __asm function1120 <strong>Reference</strong> to static function not allowed in __asm function1121 Pointer to data member not allowed in __asm function1122 __asm function cannot have static qualifier1123 base class is a virtual base class of 1124 base class is not virtual base class of 1125 has no member function 1126 "__asm" is not allowed in this declaration1127 Member initializer list not permitted for __asm constructors1128 try block not permitted for __asm constructors1129 Order of oper<strong>and</strong>s not compatible with previous compiler versions1130 __align not permitted in typedef1131 Non portable instruction (LDM with writeback <strong>and</strong> base in reg.list, final value of base unpredictable)1132 Non portable instruction (STM with writeback <strong>and</strong> base not first inreg. list, stored value of base unpredictable)1133 Expression oper<strong>and</strong>s not permitted with virtual base register<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-55ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1134 literal treated as "long long"The constant is too large to be represented in a signed long, <strong>and</strong> thereforehas been treated as a (signed) long longFor example:int foo(unsigned int bar){ return (bar == 2147483648);}gives a warning because 2147483648 is one greater than the maximumvalue allowed for a signed long. The ll suffix means that the constant istreated as a (64-bit) long long type rather than a signed long.To eliminate the warning, explicitly add the ll or LL suffix to yourconstants. For example:int foo(unsigned int bar){return (bar == 2147483648LL);}See the RVCT Compiler <strong>Reference</strong> Guide.1135 literal treated as "unsigned long long"The constant is too large to be represented in a signed long long, <strong>and</strong>therefore has been given type unsigned long long. See error number1134.1137 Expected a comma1138 Unexpected comma after this expression1139 MRRC operation opcode must lie in range 0-151140 MCRR operation opcode must lie in range 0-151141 CDP operation opcode must lie in range 0-151142 MRC operation opcode must lie in range 0-71143 MCR operation opcode must lie in range 0-71144 opcode_2 must lie in range 0-71145 LDC/STC extra opcode must lie in range 0-2551146 LDC/STC offset must lie in range -1020 to 1020 <strong>and</strong> be word aligned1147 Constant oper<strong>and</strong> out of range1148 floating-point operator is not permitted with --fpu=none1-56 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1149 floating-point return type in function definition is not permittedwith -fpu=none1150 floating-point parameter type in function definition is notpermitted with -fpu=none1151 floating-point variable definition with initialiser is notpermitted with -fpu=none1152 polymorphic base classes need to be exported as well1153 Cannot assign physical registers in this register list1154 Can only specify an even-numbered physical register here1155 Can only specify an assignment to a physical register here1156 Can only specify an assignment from a physical register here1157 Can only specify physical registers in a corrupted register list1158 PSR oper<strong>and</strong> not valid here1159 Expected an unambiguous label or function name1160 Calls to destructors for temporaries will overwrite the conditionflags updated by this instruction1161 Cannot directly modify the stack pointer SP (r13)1162 Cannot directly modify the link register LR (r14)1163 Cannot directly modify the program counter PC (r15)1164 Offset must be word-aligned1165 types cannot be declared in anonymous unions1166 returning pointer to local variable1167 returning pointer to local temporary1168 option "export" can be used only when compiling C++1169 option "export" cannot be used with "no_dep_name"1170 option "export" cannot be used with "implicit_include"1171 declaration of is incompatible with a declaration inanother translation unit1172 the other declaration is <strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-57ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1175 a field declaration cannot have a type involving a variable lengtharray1176 declaration of had a different meaning during compilationof 1177 expected "template"1178 "export" cannot be used on an explicit instantiation1179 "export" cannot be used on this declaration1180 a member of an unnamed namespace cannot be declared "export"1181 a template cannot be declared "export" after it has been defined1182 a declaration cannot have a label1183 support for exported templates is disabled1184 cannot open exported template file: 1185 already defined during compilation of 1186 already defined in another translation unit1188 the option to list makefile dependencies may not be specified whencompiling more than one translation unit1190 the option to generate preprocessed output may not be specifiedwhen compiling more than one translation unit1191 a field with the same name as its class cannot be declared in aclass with a user-declared constructor1192 "implicit_include" cannot be used when compiling more than onetranslation unit1193 exported template file is corrupted1194 cannot be instantiated -- it has been explicitlyspecialized in the translation unit containing the exporteddefinition1196 the object has cv-qualifiers that are not compatible with themember 1197 no instance of matches the argument list <strong>and</strong> object (theobject has cv-qualifiers that prevent a match)1198 an attribute specifies a mode incompatible with 1-58 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1199 there is no type with the width specified1200 invalid alignment value specified by attribute1201 invalid attribute for 1202 invalid attribute for 1203 invalid attribute for parameter1204 attribute does not take arguments1207 attribute ignored1208 attributes may not appear here1209 invalid argument to attribute 1210 the "packed" attribute is ignored in a typedef1211 in "goto *expr" expr must have type "void *"1212 "goto *expr" is nonst<strong>and</strong>ard1213 taking the address of a label is nonst<strong>and</strong>ard1214 file name specified more than once:1215 #warning directive: 1216 attribute is only allowed in a function definition1217 the "transparent_union" attribute only applies to unions, <strong>and</strong> is not a union1218 the "transparent_union" attribute is ignored on incomplete types1219 cannot be transparent because does not have thesame size as the union1220 cannot be transparent because it has a field of type which is not the same size as the union1221 only parameters can be transparent1222 the attribute does not apply to local variables1224 attributes are not permitted in a function definition1225 declarations of local labels should only appear at the start ofstatement expressions1226 the second constant in a case range must be larger than the first<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-59ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1227 an asm name is not permitted in a function definition1228 an asm name is ignored in a typedef1229 unknown register name ""1230 modifier letter '' ignored in asm oper<strong>and</strong>1231 unknown asm constraint modifier ''1232 unknown asm constraint letter ''1233 asm oper<strong>and</strong> has no constraint letter1234 an asm output oper<strong>and</strong> must have one of the '=' or '+' modifiers1235 an asm input oper<strong>and</strong> may not have the '=' or '+' modifiers1236 too many oper<strong>and</strong>s to asm statement (maximum is 30; '+' modifieradds an implicit oper<strong>and</strong>)1237 too many colons in asm statement1238 register "" used more than once1239 register "" is both used <strong>and</strong> clobbered1240 register "" clobbered more than once1241 register "" has a fixed purpose <strong>and</strong> may not be used in anasm statement1242 register "" has a fixed purpose <strong>and</strong> may not be clobberedin an asm statement1243 an empty clobbers list must be omitted entirely1244 expected an asm oper<strong>and</strong>1245 expected a register to clobber1246 "format" attribute applied to which does not havevariable arguments1247 first substitution argument is not the first variable argument1248 format argument index is greater than number of parameters1249 format argument does not have string type1250 the "template" keyword used for syntactic disambiguation may onlybe used within a template1-60 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1253 attribute does not apply to non-function type 1254 arithmetic on pointer to void or function type1255 storage class must be auto or register1256 would have been promoted to when passed through theellipsis parameter; use the latter type instead1257 is not a base class member1262 mangled name is too long1263 Offset must be half-word aligned1264 Offset must be double-word aligned1265 converting to <strong>and</strong> from floating-point type is not permitted with--fpu=none1266 Oper<strong>and</strong> should be a constant expression1267 Implicit physical register should be defined as avariable1268 declaration aliased to unknown entity 1269 declaration does not match its alias 1270 entity declared as alias cannot have definition1271 variable-length array field type will be treated as zero-lengtharray field type1272 nonst<strong>and</strong>ard cast on lvalue not supported1273 unrecognized flag name1274 void return type cannot be qualified1275 the auto specifier is ignored here (invalid in st<strong>and</strong>ard C/C++)1276 a reduction in alignment without the "packed" attribute is ignored1277 a member template corresponding to is declared as atemplate of a different kind in another translation unit1278 excess initializers are ignored1279 va_start should only appear in a function with an ellipsisparameter<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-61ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1282 variable cannot be used in a register range1283 A physical register name is required here1284 A register range cannot be specified here1285 Implicit physical register has not been defined1286 LDRD/STRD instruction will be exp<strong>and</strong>edWhen LDRD <strong>and</strong> STRD instructions are used in inline assembler the compilerexp<strong>and</strong>s these into two LDR or STR instructions before being passedthrough the compiler optimization stage.The optimization stage normally combines the two LDR or STR instructionback into a single LDRD or STRD instruction, however it is possible in somecases that a LDRD or STRD is not used.1287 LDM/STM instruction may be exp<strong>and</strong>edWhen LDM <strong>and</strong> STM instructions are used in inline assembler the compilerexp<strong>and</strong>s these into a number of LDR or STR instructions before beingpassed through the compiler optimization stage.The optimization stage normally combines the two LDR or STR instructionback into LDM or STM instructions, however it is possible that in some casesthat a single LDM or STM instruction is not used.1288 Implicit <strong>ARM</strong> register was not defined due to name clash1289 statement expressions are only allowed in block scope1291 an asm name is ignored on a non-register automatic variable1292 inline function also declared as an alias; definition ignored1293 assignment in conditionIn a context where a boolean value is required (the controlling expressionfor if, while, for or the first oper<strong>and</strong> of a conditional expression, anexpression contains one of:• a bitwise not operator (~). It is likely that a logical not operator (!)was intended.• an assignment operator (=). This could be a miss-typed equalityoperator (==).In either case if the operator is intended adding an explicit comparisonagainst 0 might suppress the warning.This warning can be suppressed with the --diag_suppress 1293 option.Example:1-62 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>int main(void){int a,b;if (a=b)}1294 Old-style function The compilers accept both old-style <strong>and</strong> new-style function declarations.The difference between an old-style <strong>and</strong> a new-style function declarationis as follows.// new styleint add2(int a, int b){return a+b;}// old styleint oldadd2(a,b)int a;int b;{return a+b;}When compiling old style functions in C mode the compiler reports:Warning: #1294-D: Old-style function oldadd21295 Deprecated declaration - give arg typesThis warning is normally given when a declaration without argumenttypes is encountered in ANSI C mode. In ANSI C, declarations like thisare deprecated. However, it is sometimes useful to suppress this warningwith the --diag_suppress 1295 option when porting old code.In C++:void foo();means:void foo(void);<strong>and</strong> no warning is generated.1296 extended constant initialiser usedThe expression used as a constant initialiser might not be portable.This warns that there is a constant that does not follow the strict rules ofANSI C even though there is a clause to allow it in the ANSI Cspecification.Example compiled with --c90 switch:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-63ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>const int foo_table[] = { (int)"foo", 0, 1, 2};This is not ANSI C st<strong>and</strong>ard compliant. Compiling with--diag_suppress 1296 suppresses the warning.1297 Header file not guarded against multiple inclusionThis warning is given when an unguarded header file is #included.An unguarded header file is a header file not wrapped in a declarationsuch as:#ifdef foo_h#define foo_h/* body of include file */#endifThis warning is off by default. It can be enabled with:--diag_warning 12971298 Header file is guarded by '', but does not #define itExample:#ifndef MYHEADER_H//#define MYHEADER_H#endifTo correct the code, remove the comment slashes (//). This warning is offby default. It can be enabled with:--diag_warning 12981299 members <strong>and</strong> base-classes will be initialized in declaration order,not in member initialisation list order1300 inherits implicit virtualThis warning is issued when a non-virtual member function of a derivedclass hides a virtual member of a parent class. For example:struct Base { virtual void f(); };struct Derived : Base { void f(); };results in the message:Warning: #1300-D: f inherits implicit virtualstruct Derived : Base { void f(); };^Adding the virtual keyword in the derived class prevents the warning.For C++, the --diag_suppress 1300 option suppresses the implicit virtualwarning.1301 padding inserted in struct 1-64 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>For the members of the structure to be correctly aligned, some paddinghas been inserted between members. This warning is off by default <strong>and</strong>can be enabled with --diag_warning 1301 or --remarks.For example:struct X{char x;int y;}results in the message:Warning: #1301-D: padding inserted in struct XThe compiler can also warn of padding added at the end of a struct orbetween structs, see 2530.1302 type too large to be returned in registers - __value_in_regsignored1303 using --force_new_nothrow: added "throw()"1304 operator new missing exception specification1305 using --force_new_nothrow: added "(::std::nothrow)"1307 floating point argument not permitted with -fpu=none1308 Base class of __packed class must be __packed1310 shared block size does not match one previously specified1311 bracketed expression is assumed to be a block size specificationrather than an array dimension1312 the block size of a shared array must be greater than zero1313 multiple block sizes not allowed1314 strict or relaxed requires shared1316 block size specified exceeds the maximum value of 1317 function returning shared is not allowed1320 shared type inside a struct or union is not allowed1321 parameters may not have shared types1323 shared variables must be static or extern1327 affinity expression must have a shared type or point to a sharedtype<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-65ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1328 affinity has shared type (not pointer to shared)1329 shared void* types can only be compared for equality1331 null (zero) character in input line ignored1332 null (zero) character in string or character constant1333 null (zero) character in header name1334 declaration in for-initializer hides a declaration in thesurrounding scope1335 the hidden declaration is 1336 the prototype declaration of is ignored after thisunprototyped redeclaration1338 must have external C linkage1339 variable declaration hides declaration in for-initializer1340 typedef may not be used in an elaborated type specifier1341 call of zero constant ignored1342 parameter may not be redeclared in a catch clause offunction try block1343 the initial explicit specialization of must be declaredin the namespace containing the template1345 "template" must be followed by an identifier1347 layout qualifier cannot qualify pointer to shared1348 layout qualifier cannot qualify an incomplete array1349 declaration of hides h<strong>and</strong>ler parameter1350 nonst<strong>and</strong>ard cast to array type ignored1351 this pragma cannot be used in a _Pragma operator (a #pragmadirective must be used)1352 field uses tail padding of a base class1353 GNU C++ compilers may use bit field padding1354 memory mapping conflict with precompiled header file 1-66 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1355 abstract class has a non-virtual destructor, calling deleteon a pointer to this class is undefined behaviour1356 an asm name is not allowed on a nonstatic member declaration1357 static initialisation of using address of maycause link failure See error number 1359.1358 static initialisation of extern const using address of cannot be lowered for ROPI1359 static initialisation of using address of maycause link failure <strong>Warnings</strong> 1357 <strong>and</strong> 1359 warn against the use of non-PI code constructs<strong>and</strong> that a subsequent link step might fail.For example, when compiled with --apcs /ropi:char *str = "test"; /* global pointer */results in the message:Warning: #1357-D: static initialisation of variable "str" usingaddress of string literal may cause link failure --ropibecause the global pointer str must be initialized to the address of thechar string test in the .constdata section, but absolute addresses cannotbe used in a PI system.For example, when compiled with --apcs /rwpi:int bar;int *foo = &bar; /* global pointer */results in the message:Warning: #1359-D: static initialisation of variable "foo" usingaddress of bar may cause link failure --rwpibecause the global pointer foo must be initialized to the address of bar inthe .data section, but absolute addresses cannot be used in a PI system.The following workarounds are possible:• Change your code to avoid use of a global pointer. You can, forexample, use a global array or local pointer instead.• Do the initialization at run-time, for example:int bar;int *foo;<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-67ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Then write code inside a function that sets foo = &bar;. This isbecause when generating code as opposed to statically initializingdata, the compiler has scope to work around the ROPI/RWPIconstraints.See also the FAQ What does Error: L6248E: cannot have address typerelocation mean?,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3554.html.1360 static initialisation of extern const using address of cannot be lowered for RWPIFor example, when compiled with --apcs /rwpi:extern int y;int* const x = &y;int* foo(){return(x);}produces a warning because prefixing y by extern prevents the compilerdefining a direct address offset between the variables x <strong>and</strong> y.1361 was declared "deprecated"1362 unrecognized format function type ignored1363 base class uses tail padding of base class 1366 this anonymous union/struct field is hidden by 1367 invalid error number1368 invalid error tag1369 expected an error number or error tag1370 size of class is affected by tail padding1371 labels can be referenced only in function definitions1372 transfer of control into a statement expression is not allowed1374 transfer of control out of a statement expression is not allowed1375 a non-POD class definition is not allowed inside of a statementexpression1376 destructible entities are not allowed inside of a statementexpression1-68 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1377 a dynamically-initialized local static variable is not allowedinside of a statement expression1378 a variable-length array is not allowed inside of a statementexpression1379 a statement expression is not allowed inside of a default argument1382 nonst<strong>and</strong>ard conversion between pointer to function <strong>and</strong> pointer todata1383 interface types cannot have virtual base classes1384 interface types cannot specify "private" or "protected"1385 interface types can only derive from other interface types1386 is an interface type1387 interface types cannot have typedef members1388 interface types cannot have user-declared constructors ordestructors1389 interface types cannot have user-declared member operators1390 interface types cannot be declared in functions1391 cannot declare interface templates1392 interface types cannot have data members1393 interface types cannot contain friend declarations1394 interface types cannot have nested classes1395 interface types cannot be nested class types1396 interface types cannot have member templates1397 interface types cannot have static member functions1398 this pragma cannot be used in a __pragma operator (a #pragmadirective must be used)1399 qualifier must be base class of 1400 declaration must correspond to a pure virtual member function inthe indicated base class1401 integer overflow in internal computation due to size or complexityof <strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-69ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1402 integer overflow in internal computation1404 potentially narrowing conversion when compiled in an environmentwhere int, long, or pointer types are 64 bits wide1405 current value of pragma pack is 1406 arguments for pragma pack(show) are ignored1407 invalid alignment specifier value1408 expected an integer literal1409 earlier __declspec(align(...)) ignored1410 expected an argument value for the attribute parameter1411 invalid argument value for the attribute parameter1412 expected a boolean value for the attribute parameter1413 a positional argument cannot follow a named argument in anattribute1414 attribute has no parameter named 1415 expected an argument list for the attribute1416 expected a "," or "]"1417 attribute argument has already been given a value1418 a value cannot be assigned to the attribute1419 a throw expression may not have pointer-to-incomplete type1420 alignment-of operator applied to incomplete type1421 may only be used as a st<strong>and</strong>alone attribute1422 attribute cannot be used here1423 unrecognized attribute 1424 attributes are not allowed here1425 invalid argument value for the attribute parameter1426 too many attribute arguments1427 conversion from inaccessible base class is not allowed1428 option "export" requires distinct template signatures1-70 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1429 string literals with different character kinds cannot beconcatenated1430 GNU layout bug not emulated because it places virtual base outside object boundaries1431 virtual base placed outside object boundaries1432 nonst<strong>and</strong>ard qualified name in namespace member declaration1433 reduction in alignment ignored1434 const qualifier ignored1436 __breakpoint argument must be an integral compile-time constant1437 __breakpoint argument must be within 0-65535 when compiling for<strong>ARM</strong>1438 __breakpoint argument must be within 0-255 when compiling forThumb1439 BKPT instruction is not supported on target architecture/processor1440 oversize bitfield layout will change -- consider preceeding with":0;"1441 nonst<strong>and</strong>ard cast on lvalueThe C specification states "An assignment operator shall have amodifiable lvalue as its left oper<strong>and</strong>" <strong>and</strong> "a cast does not yield anlvalue".1442 polymorphic base classes need to be exported if they are to beused for exported derivation1443 polymorphic base classes inherited via virtual derivation need tobe exported1444 polymorphic base classes inherited via virtual derivation need allvirtual functions to be exported1446 non-POD class type passed through ellipsis1447 a non-POD class type cannot be fetched by va_argThe C++ ISO Specification defines that the non-required arguments of avariadic function must be of type POD (plain-old-data), such as an int ora char, but not structs or classes.To avoid the error or warning the address of a class or struct could begiven instead.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-71ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1448 the 'u' or 'U' suffix must appear before the 'l' or 'L' suffix ina fixed-point literal1450 integer oper<strong>and</strong> may cause fixed-point overflow1451 fixed-point constant is out of range1452 fixed-point value cannot be represented exactly1453 constant is too large for long long; given unsigned long long type(nonst<strong>and</strong>ard)1454 layout qualifier cannot qualify pointer to shared void1456 a strong using-directive may only appear in a namespace scope1457 declares a non-template function -- add to refer to atemplate instance1458 operation may cause fixed-point overflow1459 expression must have integral, enum, or fixed-point type1460 expression must have integral or fixed-point type1461 function declared with "noreturn" does return1462 asm name ignored because it conflicts with a previous declaration1463 class member typedef may not be redeclared1464 taking the address of a temporary1465 attributes are ignored on a class declaration that is not also adefinition1466 fixed-point value implicitly converted to floating-point type1467 fixed-point types have no classification1468 a template parameter may not have fixed-point type1469 hexadecimal floating-point constants are not allowed1471 floating-point value does not fit in required fixed-point type1472 value cannot be converted to fixed-point value exactly1473 fixed-point conversion resulted in a change of sign1474 integer value does not fit in required fixed-point type1475 fixed-point operation result is out of range1-72 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1481 fixed-point value does not fit in required floating-point type1482 fixed-point value does not fit in required integer type1483 value does not fit in required fixed-point type1485 a named-register storage class is not allowed here1486 redeclared with incompatible named-register storage class1487 named-register storage class cannot be specified for aliasedvariable1488 named-register storage specifier is already in use1492 invalid predefined macro entry at line : 1493 invalid macro mode name 1494 incompatible redefinition of predefined macro 1495 redeclaration of is missing a named-register storageclass1496 named register is too small for the type of the variable1497 arrays cannot be declared with named-register storage class1498 const_cast to enum type is nonst<strong>and</strong>ard1500 __svc parameter is not within permitted range (0 to 0xff)for Thumb SVC instruction1501 too many arguments for __svc or __svc_indirect function1502 arguments for __svc or __svc_indirect function must have integraltype1503 __svc_indirect function must have arguments1504 first argument for __svc_indirect function must have integral type1505 result of __svc or __svc_indirect function must be returned ininteger registers1506 source file has bad format1507 error while writing file: 1508 cannot overload functions distinguished by function qualifieralone<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-73ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1509 function qualifier not permitted on a virtual memberfunction1510 function "__attribute__((____))" present on overriddenvirtual function must be present on overridding function1511 function qualifier is not identical on overridden virtualfunction 1512 function qualifier present on overridden virtual function must be present on overridding function1514 an empty initializer is invalid for an array with unspecifiedbound1515 function returns incomplete class type 1516 has already been initialized; the out-of-classinitializer will be ignored1517 declaration hides 1519 invalid suffix on fixed-point or floating-point constant1522 has no corresponding member operator delete (tobe called if an exception is thrown during initialization of anallocated object)1523 a thread-local variable cannot be declared with "dllimport" or"dllexport"1525 an initializer cannot be specified for a flexible array memberwhose elements have a nontrivial destructor1526 an initializer cannot be specified for an indirect flexible arraymember1528 variable attributes appearing after a parenthesized initializerare ignored1529 the result of this cast cannot be used as an lvalue1530 negation of an unsigned fixed-point value1531 this operator is not allowed at this point; use parentheses1532 flexible array member initializer must be constant1533 register names can only be used for register variables1534 named-register variables cannot have void type1-74 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1535 __declspec modifiers not valid for this declaration1536 parameters cannot have link scope specifiers1537 multiple link scope specifiers1538 link scope specifiers can only appear on functions <strong>and</strong> variableswith external linkage1539 a redeclaration cannot weaken a link scope1540 link scope specifier not allowed on this declaration1541 nonst<strong>and</strong>ard qualified name in global scope declaration1542 implicit conversion of a 64-bit integral type to a smallerintegral type (potential portability problem)1543 explicit conversion of a 64-bit integral type to a smallerintegral type (potential portability problem)1544 conversion from pointer to same-sized integral type (potentialportability problem)1547 only static <strong>and</strong> extern variables can use thread-local storage1548 multiple thread-local storage specifiers1549 virtual was not defined (<strong>and</strong> cannot be defined elsewherebecause it is a member of an unnamed namespace)1550 carriage return character in source line outside of comment orcharacter/string literal1551 expression must have fixed-point type1552 invalid use of access specifier is ignored1553 pointer converted to bool1554 pointer-to-member converted to bool1555 storage specifier ignored1556 dllexport <strong>and</strong> dllimport are ignored on class templates1557 base class dllexport/dllimport specification differs from that ofthe derived class1558 redeclaration cannot add dllexport/dllimport to 1559 dllexport/dllimport conflict with ; dllexport assumed<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-75ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1560 cannot define dllimport entity1561 dllexport/dllimport requires external linkage1562 a member of a class declared with dllexport/dllimport cannotitself be declared with such a specifier1563 field of class type without a DLL interface used in a class with aDLL interface1564 parenthesized member declaration is nonst<strong>and</strong>ard1565 white space between backslash <strong>and</strong> newline in line splice ignored1566 dllexport/dllimport conflict with ; dllimport/dllexportdropped1567 invalid member for anonymous member class -- class has adisallowed member function1568 nonst<strong>and</strong>ard reinterpret_cast1569 positional format specifier cannot be zero1570 a local class cannot reference a variable-length array type froman enclosing function1571 member already has an explicit dllexport/dllimportspecifier1572 a variable-length array is not allowed in a function return type1573 variable-length array type is not allowed in pointer to member oftype 1574 the result of a statement expression cannot have a type involvinga variable-length array1575 Load/Store with translation not supported in inline assembler. Useembedded assembler or out-of-line assembler1576 Flag-setting multiply instructions not supported in inlineassembler. Use embedded assembler or out-of-line assembler1577 Flag-setting MOV/MVN instructions with constant oper<strong>and</strong> notsupported in inline assembler. Use embedded assembler orout-of-line assembler1578 an asm name is ignored on an automatic variable1593 Could not optimize: Use of unsigned index prevents optimization1-76 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1594 Could not optimize: Loop parameters must be integer for fulloptimization1604 Could not optimize: <strong>Reference</strong> to this function inhibitsoptimization1613 Could not optimize: Multiple store conflict1617 Could not optimize: Loop too complex1621 Optimization: Dead code eliminated1624 Could not optimize: Too many overlapping conditions for efficienttranslation1629 Could not optimize: Iteration count too short for arrayoptimization1636 Could not optimize: Complicated use of variable1637 Unknown pragma - ignored1638 Unable to determine last value of scalar temporary1639 Use nolstval directive if possible1641 Could not optimize: Too many data dependency problems1656 Problem in pragma syntax1661 Could not optimize: Backward transfers cannot be optimized1662 Could not optimize: Last value of promoted scalar required1663 Could not optimize: Branches out of the loop prevent translation1670 Optimization: If loop converted to for loop1676 Could not optimize: This statement prevents loop optimization1679 Optimization: Loop vectorized1687 Could not optimize: Reduction function suppressed - needsassociative transformation1690 Could not optimize: Unsupported data type for explicit vectoroperations1691 Optimization: Loop fused with previous loop1714 Could not optimize: Outer loop conditionally executes inner loop<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-77ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1730 No indexing done along this loop1742 Could not optimize: Feedback of array elements (equivalencedarrays)1750 Optimization: Loop re-rolled1759 Could not optimize: Non-unit stride interferes with vectoroptimization1771 Could not optimize: Volatile items prevent analysis1801 Optimization: Function exp<strong>and</strong>ed1824 Could not optimize: Not enough vector operations to justifytranslation1885 Could not optimize: Loop bounds exceed array dimensions1861 Could not optimize: This store into array prevents optimization ofouter loop1866 Could not optimize: Non-integer subscript1894 Optimization: Iterations peeled from loop in order to avoiddependence1896 Optimization: Logical clause simplified1947 Could not optimize: Cannot transform this combination of datatypes <strong>and</strong> operations1978 Could not optimize: Unable to optimize user-selected loop1979 Could not optimize: This operation inhibits loop transformation1987 Optimization: Loop switched1988 Optimization: Alternate code generated1997 Optimization: Constant-length loop unrolled2091 Optimization: Loop unrolled2168 Optimization: Outer loop moved inside inner loop(s)2170 Optimization: Invariant expression moved outside of outer loop2189 Optimization: Loop unrolled <strong>and</strong> rotated2190 Optimization: Loop unrolled <strong>and</strong> optimized1-78 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2191 Optimization: Some loads lifted to top of loop2218 Idiom detected <strong>and</strong> optimized2300 Might not be able to optimize: Feedback of scalar value from oneloop pass to another. Conflict on line . Loop index is (,)"2301 Might not be able to optimize: Feedback of scalar value from oneloop pass to another. Conflict on line . Loop index is ()2302 Might not be able to optimizee: Feedback of scalar value from oneloop pass to another. Conflict on line .(,)2303 Might not be able to optimize: Feedback of scalar value from oneloop pass to another. Conflict on line . ()2304 Might not be able to optimize: Potential multiple store conflictbetween loop iterations. Conflict on line . Loop index is (,)2305 Might not be able to optimize: Potential multiple store conflictbetween loop iterations. Conflict on line . Loop index is ()2306 Might not be able to optimize: Potential multiple store conflictbetween loop iterations. Conflict on line .(,)2307 Might not be able to optimize: Potential multiple store conflictbetween loop iterations. Conflict on line . ()2308 Might not be able to optimize: Potential feedback between loopiterations. Conflict on line . Loop index is (,)2309 Might not be able to optimize: Potential feedback between loopiterations. Conflict on line . Loop index is ()2310 Might not be able to optimize: Potential feedback between loopiterations. Conflict on line . (,)2311 Might not be able to optimize: Potential feedback between loopiterations. Conflict on line . ()2312 Could not optimize: Potential pointer aliasing - use restrictqualifier if ok. Conflict on line . Loop index is (,)<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-79ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2313 Could not optimize: Potential pointer aliasing - use restrictqualifier if ok. Conflict on line . Loop index is ()2314 Could not optimize: Potential pointer aliasing - use restrictqualifier if ok. Conflict on line . (,)2315 Could not optimize: Potential pointer aliasing - use restrictqualifier if ok. Conflict on line . ()2351 Loop nest fused with following nest(s)2438 Could not inline: Void function used in expression2439 Could not inline: Identifier declaration2442 Could not inline: Cannot remove function from expression2516 High Level Optimization halted: assembly code in routine2519 Unable to determine constant iteration count for this loop2523 use of inline assembler is deprecatedUse of the inline assembler was deprecated in RVCT 3.1 when compilingfor Arch v7 or later, that is, most processors in the Cortex series.The inline assembler is no longer being actively maintained. It does notsupport Thumb(-1) or Thumb-2, or all the v6 instructions. However, theinline assembler does still support the (<strong>ARM</strong>-only) Arch v4T, v5TE, <strong>and</strong>a subset of the new v6 instructions (only the v6 media instructions), solegacy inline assembly code continues to build correctly with RVCT 3.1<strong>and</strong> later.This warning is intended as a reminder to consider using the embeddedassembler or built-in intrinsics instead of inline assembler. If you cannotchange your code but require elimination of the warning, suppress thewarning or compile the module for an earlier cpu such as v6.CautionAttempting to compile some inline assembler for Thumb (with tcc orarmcc --thumb) might result in <strong>ARM</strong> instructions being generated in somecases.2524 #pragma pop with no matching #pragma push2525 #pragma push with no matching #pragma pop2529 expression must be an integral constant in range to1-80 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2530 padding added to end of struct The compiler can warn of padding added at the end of a struct or betweenstructs. This warning is off by default <strong>and</strong> can be enabled with--diag_warning 2530 or --remarks.For example:typedef struct {int x;char y;} A;typedef struct {int p;int q;} B;results in the message:Warning: #2530-D: padding added to end of struct 'anonymous'The compiler can also warn of padding inserted within a structs, see1301.2531 dllimport/dllexport applied to a member of an unnamed namespace2533 the attribute can only appear on functions <strong>and</strong> variableswith external linkage2534 strict mode is incompatible with treating namespace std as analias for the global namespace2535 in expansion of macro "" ,2537 in expansion of macro "" 2540 invalid symbolic oper<strong>and</strong> name 2541 a symbolic match constraint must refer to one of the first tenoper<strong>and</strong>s2544 thread-local variable cannot be dynamically initialized2546 some enumerator values cannot be represented by the integral typeunderlying the enum type2547 default argument is not allowed on a friend class templatedeclaration2548 multicharacter character literal (potential portability problem)2549 expected a class, struct, or union type2550 second oper<strong>and</strong> of offsetof must be a field<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-81ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2551 second oper<strong>and</strong> of offsetof may not be a bit field2552 cannot apply offsetof to a member of a virtual base2553 offsetof applied to non-POD types is nonst<strong>and</strong>ard2554 default arguments are not allowed on a friend declaration of amember function2555 default arguments are not allowed on friend declarations that arenot definitions2556 redeclaration of previously declared as a friend withdefault arguments is not allowed2557 invalid qualifier for (a derived class is not allowed here)2558 invalid qualifier for definition of class 2560 wide string literal not allowed2565 template argument list of must match the parameter list2566 an incomplete class type is not allowed2567 complex integral types are not supported2570 was declared "deprecated ()"2571 invalid redefinition of 2574 explicit specialization of must precede its first use()2575 a sealed class type cannot be used as a base class2576 duplicate class modifier2577 a member function cannot have both the "abstract" <strong>and</strong> "sealed"modifiers2578 a sealed member cannot be pure virtual2579 nonvirtual function cannot be declared with "abstract" or "sealed"modifier2580 member function declared with "override" modifier does notoverride a base class member2581 cannot override sealed 1-82 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2582 was declared with the class modifier "abstract"2662 unrecognized calling convention , must be one of:2665 attribute not allowed on parameter declarations2666 underlying type of enum type must be an integral type other thanbool2667 some enumerator constants cannot be represented by 2668 not allowed in current mode2676 no #pragma start_map_region is currently active: pragma ignored2677 cannot be used to name a destructor (a type name isrequired)2678 nonst<strong>and</strong>ard empty wide character literal treated as L'\\0'2679 "typename" may not be specified here2680 a non-placement operator delete must be visible in a class with avirtual destructor2681 name linkage conflicts with previous declaration of 2682 alias creates cycle of aliased entities2683 subscript must be constant2684 a variable with static storage duration allocated in a specificregister cannot be declared with an initializer2685 a variable allocated in a specific register must have POD type2686 predefined meaning of discarded2687 declaration hides built-in 2688 declaration overloads built-in 2689 static member function not permitted here2690 the attribute can only appear on functions <strong>and</strong> variableswith internal linkage<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-83ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>1.4 List of the old-style armcc error <strong>and</strong> warning messagesThe following old-style error <strong>and</strong> warning messages can still be given:C3000EC3002WC3008WC3009EC3015EC3016WC3017WSWI number 0x too largeillegal unaligned load or store access - use __packed insteadsplitting LDM/STM has no benefitInappropriate use of the switch "--split_ldm". This option has nosignificant benefit for cached systems, or for processors with a writebuffer.unsupported CPU Unbalanced pragma pop, ignored#pragma push <strong>and</strong> #pragma pop save <strong>and</strong> restore the current pragma state.A pop must be paired with a push. An error is given for:#pragma push:#pragma pop:#pragma popunknown option '-': ignored may be used before being setThe data flow analysis feature in the compiler was on by default in RVCT2.1 <strong>and</strong> later. In RVCT 2.0.1 <strong>and</strong> earlier, it had to be enabled with the -faswitch.NoteBe aware that data flow analysis is always disabled at -O0 (even if -fa isspecified in RVCT 2.0.1 <strong>and</strong> earlier).The compiler performs data flow analysis as part of its optimizationprocess, <strong>and</strong> this information can be used to identify potential problemsin the code such as variables being used before being set. However, thisis really a by-product of optimization rather than a feature in its ownright. The data flow analysis that detects used before being set onlyanalyses hardware register use, that is, variables that are held in processorregisters. It does not analyze variables or structures that are allocated onthe stack, that is, stored in memory rather than in processor registers.1-84 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>As code (<strong>and</strong> also register memory usage) generated by the compilervaries with the level of optimization, the warning might appear for codecompiled at one level of optimization but not others. You might see it, forexample, at -O2, but not -O1.NoteThe data flow analysis is not intended to be a fully complete feature. Youmust only treat the warnings of the form CnnnnW given by the compiler asa guide, <strong>and</strong> not rely on these warnings to identify faulty code reliably.The compiler never provides as much information as a special purposetool such as Lint.C3018WC3038EC3041UC3047UC3048UC3049UC3050UC3051EC3052EC3053Wdivision by zero: Constant propagation shows that a divide or remainder operator has asecond oper<strong>and</strong> with value 0. It is an error if execution reaches thisexpression. The compiler returns a result of 0 for a divide by constant 0.Function too large or complicated to compile (0x)I/O error writing '': Too many errorsout of store while compiling with -g. Allocation size was, system size is out of store. Allocation size was , system size isA storage allocation request by the compiler failed. <strong>Compilation</strong> of thedebugging tables requested with the -g option might require a largeamount of memory. Recompiling without -g, or with the program splitinto smaller pieces, might help.<strong>Compilation</strong> aborted.couldn't write file '': couldn't read file '': couldn't read profile '': The compiler cannot access the file you specified when performingProfiler-guided optimizations. You might see this if you have specifiedthe profiler data directory instead of the data file. For example, youspecified image_001.apd instead of the data fileimage_001.apd\filename.apa.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-85ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>C3055UC3056EC3057EC3064EC3065EC3066EC3075EC3078EC3079Einternal fault in inferFileNamebad option ''bad option ' 'For example, the switches --apcs /softfp, --apcs /narrow, --apcs /widewhich were supported in SDT, are no longer supported in ADS or RVCT<strong>and</strong> so must be removed from the compiler comm<strong>and</strong>-line.Overlong filename: type of input file '' unknownThe code space needed for this object is too large for thisversion of the compilerSplit the source file into smaller pieces.Can't open for outputstdin ('-') combined with other files comm<strong>and</strong> with no effectC3301W configuration file appears to be from a newer version of thecompilerThe configuration file is one of the XML files supplied to the compilerwith the --arm_lunux_paths <strong>and</strong> --arm_linux_config_file switches. Forexample:armcc --arm_linux_paths --arm_linux_config_file=arm_linux_config.xmlThis warning indicates the file is from a newer compiler so might containunsupported features. To avoid incompatibilites, either use the newerversion of the compiler that was used to generate the configuration file,or re-generate the configuration file using your current compiler version.C3302EC3303Econfiguration file has an invalid version stringThis represents an error reading from or writing to an <strong>ARM</strong> Linuxconfiguration file.Do the following:1. Check that the file can be read from <strong>and</strong> written to <strong>and</strong> has validpermissions.2. Try re-generating the configuration file using--arm_linux_configure.configuration file was not specified1-86 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>See the description for error C3302E.C3304EC3305EC3306EC3307EC3308WC3309EC3310WC3311EC3312EC3313EI/O error reading configuration file See the description for error C3302E.I/O error writing configuration file See the description for error C3302E.could not parse configuration file See the description for error C3302E.unable to read configuration fileSee the description for error C3302E.cannot find system include directoryWhen using an <strong>ARM</strong> Linux mode, --arm_linux, --arm_linux_paths, orGCC comm<strong>and</strong>-line translation, the <strong>ARM</strong>CC41INC environment variablemust be set so the compiler can find the arm_linux header subdirectory.Check that this environment variable is set correctly.automatic configuration failed - cannot find GCCautomatic configuration is incomplete - cannot determine sysrootpath from GCCThe GCC that was used for the <strong>ARM</strong> Linux configuration process did notprovide a valid sysroot path. Use --configure_sysroot=sysroot_path toset the path.automatic configuration failed - cannot find GLDThis error is produced when you try to automatically configure the toolswith --arm_linux_configure, but the GNU linker (ld) could not be found.Use the --configure_gkd=path_to_gcc comm<strong>and</strong>-line option to specifythe path to the GNU ld executable, such as arm-none-linux-gnueabi-ld.automatic configuration failed - could not execute GCCThis error indicates that, when using automatic configuration for <strong>ARM</strong>Linux with --arm_linux_configure, the respective tools (GCC or GNU ld)could not be executed or failed when invoked. Check that they haveexecute permissions, <strong>and</strong> your GNU toolchain installation is workingcorrectly.automatic configuration failed - could not execute GLDSee the description of error C3312E.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-87ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>C3314WC3315WC3316WC3317WC3318WC3319WC3320WC3321Egcc comm<strong>and</strong> line translation - ignoring option with notranslation: gcc comm<strong>and</strong> line translation - translation for this comm<strong>and</strong> is notfully supported: option is not supported under arm linux: translated cpu or architecture option is not validunable to read file cannot recognise type of file - file will be ignoredcannot find file - file will be ignoredautomatic configuration failed - could not determine configurationfrom GCCWhen configuring automatically for <strong>ARM</strong> Linux with--arm_linux_configure, the compiler could not determine sufficientinformation from GCC to produce the configuration. Try a manualconfiguration by specifying a sysroot path with --configure_sysroot <strong>and</strong>a path to the GNU C++ header files with --configure_cpp_headers.C3322W could not accurately determine library configuration from GCC -configuration might be incompleteC3323EC3324WC3327WC3328WC3329WC3330EC3331WC3332EC3333Eautomatic configuration failed - GCC internal specs configurationreport error: could not determine libstdc++ header file path - specify thismanually to ensure that C++ code will compile correctlyThe path to the libstdc++ header files could not be determined from GCC.Specify this path with --configure_cpp_headers=pathcannot determine application entry point function - using as defaultcannot determine library paths from GNU linker - trying to usedefaultsoption is missing an argument : GCC configuration is invalidscript file will be treated as a scatter fileI/O error reading via file I/O error closing via file 1-88 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>C3334WC3335EC3336WC3337EC3338WC3339Winvalid GCC version in configuration file - using defaultcannot retry because configuration file does not provide path toGNU executablecompilation failed - retrying with GNU toolscompilation with GNU tools also failedcompilation with GNU tools succeededambiguous translation mode options specified - using Multiple translation mode options --translate_gcc, --translate_g++, <strong>and</strong>--translate_gld were specified. You must specify only one of theseoptions to select a particular translation mode.C3340W could not obtain license for vectorization (implied by -O3) -defaulting to -fno-tree-vectorizeWith GCC comm<strong>and</strong>-line translation, -O3 implies vectorization.However, this requires a license to use the NEON vectorization feature ofthe compiler. Where a NEON vectorization license is not available, thecompiler emits warning C3340W <strong>and</strong> disables vectorization.C3403EC3419WC3421WC3435EC3447E__alloca_state not defineddynamic stack alignment veneer inserted in This warning is given when compiling __irq functions for--cpu=Cortex-M3-rev0 to force the stack to be 8-byte aligned on entry intothe interrupt.write to string literalThere is a write through a pointer that has been assigned to point at aliteral string. The behavior is undefined by to the ANSI st<strong>and</strong>ard. Asubsequent read from the location written might not reflect the write.reference to not allowedoption '-E' <strong>and</strong> input file '' type conflictC3484E Minimum toplevel array alignment must be 1, 2, 4 or 8C3486WC3487Eoption '-' causes input file '' to beignoredread from variable '' with offset out of boundsFor example :<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 1-89ID121310Non-Confidential


C <strong>and</strong> C++ Compiler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>void foo(void) {unsigned int pntr;pntr = (unsigned int)&pntr;pntr -= 4;pntr = *(unsigned int*)pntr;}C3488EC3489EC3490Wwrite to variable '' with offset out of bounds__vfp_status() intrinsic not supported for targets without VFPinstruction set switching using file extension is deprecatedC3493E Function alignment must be a power of 2 <strong>and</strong> greater than 1C3494EC3497EC3498Einvalid global register number ; 1 to allowedinvalid syntax for retention constraint: option conflicts with an arm linux targeting option: Certain options are expected to be used when targeting <strong>ARM</strong> Linux, forexample to select the correct ABI variant options. This message is givento indicate when an incompatible option is specified.1-90 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Chapter 2Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This chapter contains the error <strong>and</strong> warning messages for the <strong>ARM</strong> Assembler (armasm).It contains the following section:• List of the armasm error <strong>and</strong> warning messages on page 2-2.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-1ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2.1 List of the armasm error <strong>and</strong> warning messagesThis section lists the error <strong>and</strong> warnings for armasm.A1017EA1020EA1021UA1023EA1024EA1042EA1143EA1144EA1051EA1055EA1056E:INDEX: cannot be used on a pc-relative expressionThe :INDEX: expression operator has been applied to a PC-relativeexpression, most likely a program label. :INDEX: returns the offset fromthe base register in a register-relative expression.If you require the offset of a label called within an area called, use - .See Unary operators in the RVCT Assembler Guide.Bad predefine: The oper<strong>and</strong> to the --predefine (-pd) comm<strong>and</strong> line option was notrecognized. The directive must be enclosed in quotes if it contains spaces,for example on Windows:--predefine "versionnum SETA 5"If the SETS directive is used, the argument to the directive must also beenclosed in quotes, which might require escaping depending uponoperating system <strong>and</strong> shell. For example:--predefine "versionstr SETS \"5A\""No input fileNo input file was specified on the comm<strong>and</strong> line. This might be becausethere was no terminating quote on a quoted argument.File "" could not be opened: File "" could not all be loaded: Unrecognized APCS qualifier ''There is an error in the argument given to the --apcs comm<strong>and</strong> lineoption. Check the spelling of .COMMON directive not supported for %s format outputDCDO directive not supported for %s format outputCannot open --depend file '': Cannot open --errors file '': Target cpu '' not recognized2-2 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>The name given in the --cpu comm<strong>and</strong> line option was not arecognized processor name. Check the spelling of the argument.Use --cpu=list to list the supported CPUs.A1067EA1071EOutput file specified as '', but it has already beenspecified as ''More than one output file, -o filename, has been specified on thecomm<strong>and</strong> line. Misspelling a comm<strong>and</strong> line option can cause this.Cannot open listing file '': The file given in the --list comm<strong>and</strong> line option could notbe opened. This could be because the given name is not valid, there is nospace, a read-only file with the same name already exists, or the file is inuse by another process. Check that the correct path for the file isspecified.A1072E The specified listing file '' must not be a .s or .ofileThe filename argument to the --list comm<strong>and</strong> line option has anextension that indicates it is a source or object file. This might be becausethe filename argument was accidentally omitted from the comm<strong>and</strong> line.Check that the correct argument is given to the --list comm<strong>and</strong> lineoption.A1073EA1074EA1075EA1085EThe specified output file '' must not be a source fileThe object file specified on the comm<strong>and</strong> line has a filename extensionthat indicates it is a source file. This might be because the object filenamewas accidentally omitted from the comm<strong>and</strong> line.The specified depend file '' must not be a source fileThe filename argument to the --depend or --errors comm<strong>and</strong> line optionhas an extension that indicates it is a source (.s) file. This might bebecause the filename argument was accidentally omitted from thecomm<strong>and</strong> line. Check that the correct arguments are given.The specified errors file '' must not be a source fileThe filename argument to the--depend or --errors comm<strong>and</strong> line optionhas an extension that indicates it is a source (.s) file. This might bebecause the filename argument was accidentally omitted from thecomm<strong>and</strong> line. Check that the correct arguments are given.Forced user-mode LDM/STM must not be followed by use of bankedR8-R14<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-3ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>The <strong>ARM</strong> architecture does not allow you to access the banked registerson the instruction following a USER registers LDM or STM. The <strong>ARM</strong>Architecture <strong>Reference</strong> Manual says this form of LDM must not befollowed by an instruction, which accesses banked registers (a followingNOP is a good way to ensure this)Example:stmib sp, {r0-r14}^ ; Return a pointer to the frame in a1.mov r0, spchange to:stmib sp, {r0-r14}^ ; Return a pointer to the frame in a1.nopmov r0, spA1088W Faking declaration of area AREA |$$$$$$$|This is given when no AREA is given (see A1105E).A1099EA1100EA1105EA1106EA1107EA1108EA1109EA1110EA1111EA1112EA1113EA1114EStructure stack overflow max stack size Structure stack underflowArea directive missingThis is given when no AREA is given (see also A1088W)Missing commaBad symbol type, expect labelMultiply defined symbol ''Bad expression typeExpected constant expressionA constant expression was expected after, for example, SETA.See Numeric expressions in the RVCT Assembler Guide.Expected constant or address expressionExpected address expressionExpected string expressionA string expression was expected after, for example, SETS. See Stringexpressions in the RVCT Assembler Guide.Expected register relative expressionFor example, the generic form:2-4 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>LDR r4,[r9,offset]must be rewritten as:LDR r4,[r9,#offset]A1116EA1117EA1118EA1119EA1120EA1121EA1122EA1123EA1125EString oper<strong>and</strong>s can only be specified for DCBRegister symbol '' already definedNo current macro expansionMEND not allowed within conditionalsMEND means END of Macro (not the English word mend).See Using macros in the RVCT Assembler Guide.Bad global nameGlobal name '' already existsLocals not allowed outside macrosBad local nameUnknown or wrong type of global/local symbol ''A1126E Bad alignment boundary, must be a multiple of 2A1127EA1128EA1129EA1130EA1131EA1132EA1133EA1134EA1135EBad IMPORT/EXTERN nameCommon name '' already existsImported name '' already existsBad exported nameBad symbol type for exported symbol ''REQUIRE directive not supported for format outputBad required symbol nameBad required symbol type, expect (symbol is either external orlabel) <strong>and</strong> (symbol is relocatable <strong>and</strong> absolute)Area name missingAREA names starting with any non-alphabetic character must beenclosed in bars, for example change:AREA 1_DataArea, CODE, READONLYto:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-5ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>AREA |1_DataArea|, CODE, READONLYA1136EA1137EEntry address already setUnexpected characters at end of lineThis is given when extra characters that are not part of an instruction arefound on an instruction line.For example:ADD r0, r0, r1 commentCan be changed to:ADD r0, r0, r1 ; commentA1138E String "" too short for operation, length must be >A1139EA1140EA1141EA1142EA1145EA1146EString overflow, string exceeds charactersBad oper<strong>and</strong> typeRelocated expressions may only be added or subtractedSubtractive relocations not supported for format outputThis can occur when trying to access data in another area. For example,using:LDR r0, [pc, #label - . - 8]or its equivalent:LDR r0, [pc, #label-{PC}-8]where label is defined in a different AREA.These subtractive relocations were allowed with SDT AOF, but not withELF, so this error message can sometimes appear when migrating an SDTproject to RVCT. To resolve this change your code to use the simpler,equivalent syntax:LDR r0, labelThis works if label is either in the same area or in a different area.Another example that shows the error is:IMPORT sym1IMPORT sym2DCD (sym2 - sym1)Undefined exported symbol ''Unable to open output file : 2-6 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1147EA1148EA1150EA1151EA1152EA1153EA1154EA1155EA1156EA1157EA1158EBad shift nameUnknown shift name , expected one of LSL, LSR, ASR, ROR, RRXBad symbol, not defined or externalThis typically occurs in the following cases:• when the current file requires an INCLUDE of another file to definesome symbols, for example:"init.s", line 2: Error: A1150E: Bad symbol2 00000000 DCD EBI_CSR_0typically requires a definitions file to be included, for example:INCLUDE targets/eb40.inc• when the current file requires IMPORT for some symbols, forexample:"init.s", line 4: Error: A1150E: Bad symbol4 00000000 LDR r0, =||Image$$RAM$$ZI$$Limit||typically requires the symbol to be imported, for example:IMPORT ||Image$$RAM$$ZI$$Limit||Bad register name symbolExample:MCR p14, 3, R0, Cr1, Cr2The coprocessor registers CR must be labelled as a lowercase c for thecode to build. The <strong>ARM</strong> register can be r or R:MCR p14, 3, r0, c1, c2orMCR p14, 3, R0, c1, c2Unexpected operatorUndefined symbolUnexpected oper<strong>and</strong>, operator expectedUnexpected unary operator equal to or equivalent to Missing open bracketSyntax error following directiveIllegal line start, should be blankSome directives, for example, ENTRY, IMPORT, EXPORT, <strong>and</strong> GET must be ona line without a label at the start of the line. This error is given if a labelis present.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-7ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1159EA1160EA1161EA1162EA1163EA1164EA1165EA1166EA1167ELabel missing from line startSome directives, for example, FUNCTION or SETS, require a label at the startof the line, for example:my_func FUNCTIONorlabel SETSThis error is given if the label is missing.Bad local label numberA local label is a number in the range 0-99, optionally followed by aname.See Local labels in the RVCT Assembler Guide.Syntax error following local label definitionIncorrect routine name ''Unknown opcode , expecting opcode or MacroThe most common reasons for this are:• Forgetting to put some white space on the left h<strong>and</strong> side margin,before the instruction, for example change:MOV PC,LRtoMOV PC,LR• Use of a hardware floating point instruction without using the--fpu switch, for example:FMXR FPEXC, r1 ;must be assembled with armasm --fpu vfp• Mis-typing the opcode:ADDDinstead ofADDOpcode not supported on selected processorThe processor selected on the armasm comm<strong>and</strong> line does not supportthis instruction. See the <strong>ARM</strong> Architecture <strong>Reference</strong> Manual.Too many actual parameters, expecting parametersSyntax error following labelInvalid line start2-8 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1168EA1169EA1170EA1171ETranslate not allowed in pre-indexed formMissing close square bracketImmediate 0x out of range for this operation, must be below(0x)This error is given if a MOV or MVN instruction is used with a constantthat cannot be assembled.See Direct loading with MOV <strong>and</strong> MVN in the RVCT Assembler Guide.Missing close bracketA1172E Bad rotator , must be even <strong>and</strong> between 0 <strong>and</strong> 30A1173EA1174EA1175EA1176EA1179EA1180EA1181EA1182EA1183EA1184EA1185EA1186EA1187EADR/L cannot be used on external symbolsThe ADR <strong>and</strong> ADRL pseudo-instructions can only be used with labelswithin the same code section. To load an out-of-area address into aregister, use LDR instead.Data transfer offset 0x out of range. Permitted values are0x to 0xBad register rangeBranch offset 0x out of range. Permitted values are 0xto 0xBranches are PC relative, <strong>and</strong> have a limited range. If you are using "locallabels", you can use the ROUT directive to limit the scope of local labels,to help avoid referring to a wrong label by accident.See Local labels in the RVCT Assembler Guide.Bad hexadecimal numberMissing close quoteBad operatorBad based numberNumeric overflowExternals not valid in expressionsSymbol missingCode generated in data areaError in macro parameters<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-9ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1188EA1189EA1190EA1191ERegister value out of range. Permitted values are toMissing '#'Unexpected ''Floating point register number out of range 0 to A1192E Coprocessor register number out of range 0 to 15A1193E Coprocessor number out of range 0 to 15A1194EBad floating-point numberA1195W Small floating point value converted to 0.0A1196EA1198EA1199EA1200EA1201EA1202EA1203EA1204EA1205EA1206EToo late to ban floating pointUnknown oper<strong>and</strong>This can occur when an oper<strong>and</strong> is accidentally miss-typed.For example:armasm init.s -g -PD "ROM_RAM_REMAP SETL {FALS}"must be:armasm init.s -g -PD "ROM_RAM_REMAP SETL {FALSE}"See Assembly time substitution of variables in the RVCT AssemblerGuide.Coprocessor operation out of range 0 to Structure mismatch expect While/WendSubstituted line too long, maximum length No pre-declaration of substituted symbol ''See Assembly time substitution of variables in the RVCT AssemblerGuide.Illegal label parameter start in macro prototypeBad macro parameter default valueRegister occurs multiply in listRegisters should be listed in increasing register number order2-10 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This warning is given if registers in, for example, LDM or STMinstructions are not specified in increasing order <strong>and</strong> the --checkreglistoption is used.A1207EA1209EA1210EA1211EA1212EA1213EA1214EA1215EA1216EA1217EA1219EA1220EA1221EA1223EA1224EA1225EA1226EBad or unknown attributeExample:AREA test,CODE,READONLY,HALFWORD,INTERWORKThe HALFWORD <strong>and</strong> INTERWORK attributes are obsolete. Remove them.ADRL cannot be used with PC as destinationNon-zero data within uninitialized area ''Missing open square bracketDivision by zeroAttribute cannot be used with attribute Too late to define symbol '' as register listBad register list symbolBad string escape sequenceError writing to code file : Bad APSR, CPSR or SPSR designatorFor example:MRS r0, PSRIt is necessary to specify which status register to use (CPSR or SPSR),such as, for example:MRS r0, CPSRBLX must be unconditionalArea attribute '' not supported for object fileformatComdat Symbol '' is not defined format does not allow PC-relative data transfers betweenareasASSOC attribute is not allowed in non-comdat areasSELECTION attribute is not allowed in non-comdat areas<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-11ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1227EA1228EA1229EA1230EA1234EA1237EA1238EA1240EA1241EA1242EA1243EA1244EA1245EA1247EA1248EA1249EA1250EA1253EA1254EComdat Associated area '' undefined at this point in thefileComdat Associated area '' is not an area nameMissing COMDAT symbolMissing '}' after COMDAT symbolUndefined or Unexported Weak Alias for symbol ''Invalid register or register combination for this operationImmediate value must be word aligned when used in this operationImmediate value cannot be used with this operationMust have immediate value with this operationOffset must be word aligned when used with this operationOffset must be halfword aligned with this operationMissing '!'B or BL from Thumb code to <strong>ARM</strong> codeBLX from <strong>ARM</strong> code to <strong>ARM</strong> code, use BLThis occurs when there is a BLX branch from <strong>ARM</strong> code to <strong>ARM</strong>code within this assembler file. This is not allowed because BLX always results in a state change. The usual solution is to use BL instead.BLX from Thumb code to Thumb code, use BLThis occurs when there is a BLX branch from Thumb code toThumb code within this assembler file. This is not allowed becauseBLX always results in a state change. The usual solution is to useBL instead.Post indexed addressing mode not availablePre indexed addressing mode not available for this instruction,use [Rn, Rm]Thumb branch to external symbol cannot be relocated: notrepresentable in Halfword literal values not supportedExample:LDRH R3, =constant2-12 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Change the LDRH into LDR, which is the st<strong>and</strong>ard way of loadingconstants into registers.A1256EA1259EA1260EA1261EA1262UA1265UA1267EA1268EA1269UA1270EA1271EA1272EA1273EA1274WA1283EA1284EA1285EA1286EDATA directive can only be used in CODE areasInvalid PSR field specifier, syntax is _ where iseither CPSR or SPSRPSR field '' specified more than onceMRS cannot select fields, use APSR, CPSR or SPSR directlyThis is caused by an attempt to use fields for CPSR or SPSR with an MRSinstruction, such as:MRS r0, CPSR_cExpression storage allocator failedStructure mismatch: IF or WHILE unmatched at end of INCLUDE fileBad GET or INCLUDE for file Unmatched conditional or macrounexpected GET on structure stackFile "" not foundLine too long, maximum line length is End of input file'\\' should not be used to split strings'\\' at end of commentLiteral pool too distant, use LTORG to assemble it within 1KBFor Thumb code, the literal pool must be within 1KB of the LDRinstruction to access it. See A1284E <strong>and</strong> A1471W.Literal pool too distant, use LTORG to assemble it within 4KBFor <strong>ARM</strong> code, the literal pool must be within 4KB of the LDRinstruction to access it. To solve this, add an LTORG directive into yourassembler source file at a convenient place.See Loading with LDR Rd, =const <strong>and</strong> LTORG in the RVCT AssemblerGuide.Bad macro nameMacro already exists<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-13ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1287EA1288EA1289EA1290EA1291EA1310WA1311UA1312EA1313WA1314WA1315EA1316EA1319EA1320EA1321EA1322EA1323EA1324EA1327WIllegal parameter start in macro prototypeIllegal parameter in macro prototypeInvalid parameter separator in macro prototypeMacro definition too big, maximum length Macro definitions cannot be nestedThe macro definition is invalid.Symbol attribute not recognizedmacro definition attempted within expansionAssertion failedMissing END directive at end of fileThe assembler requires an END directive to know when the code in the fileterminates. You can add comments or other such information in freeformat after this directive.Reserved instruction (using NV condition)NV condition not supported on targeted CPUShifted register oper<strong>and</strong> to MSR has undefined effectUndefined effect (using PC as Rs)Undefined effect (using PC as Rn or Rm in register specifiedshift)Undefined effect (using PC as offset register)Unaligned transfer of PC, destination address must be 4 bytealignedReserved instruction (Rm = Rn with post-indexing)Undefined effect (PC + writeback)Non portable instruction (LDM with writeback <strong>and</strong> base in registerlist, final value of base unpredictable)LDM Oper<strong>and</strong> restriction:• If the base register is specified in , <strong>and</strong> baseregister writeback is specified, the final value of isUNPREDICTABLE.2-14 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1328WA1329WA1331WA1332WA1334EA1335WA1337WA1338WA1339WA1341EA1342WA1344IA1355UNon portable instruction (STM with writeback <strong>and</strong> base not first inregister list, stored value of base unpredictable)STM Oper<strong>and</strong> restrictions if is specified as <strong>and</strong> baseregister writeback is specified:• If is the lowest-numbered register specified in, the original value of is stored.• Otherwise, the stored value of is UNPREDICTABLE.Unpredictable instruction (forced user mode transfer withwrite-back to base)This is caused by an instruction such as PUSH {r0}^ where the ^ indicatesaccess to user registers. The <strong>ARM</strong> Architecture <strong>Reference</strong> Manualspecifies that writeback to the base register is not available with thisinstruction.Instead, the base register must be updated separately. For example:SUB sp, sp,#4STMID sp, {r0}^Another example is replacing STMFD R0!, {r13, r14}^ with:SUB r0, r0,#8STM r0, {r13, r14}^See also A1085WUnpredictable instruction (PC as source or destination)Unpredictable effect (PC-relative SWP)Undefined effect (use of PC/PSR)Useless instruction (PC cannot be written back)Useless instruction (PC is destination)Dubious instruction (PC used as an oper<strong>and</strong>)Unpredictable if RdLo <strong>and</strong> RdHi are the same registerBranch to unaligned destination, expect destination to be byte aligned of symbol in another AREA will cause link-time failure ifsymbol is not close enough to this instructionhost error: out of memoryA Label was found which was in no AREA<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-15ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Example:This can occur where no white-space precedes an assembler directive.Assembler directives must be indented with white-space, for exampleuse:IF :DEF: FOO; codeENDIFinstead of:IF :DEF: FOO; codeENDIFSymbols in the left h<strong>and</strong> column one are assumed to be labels, hence theerror message.A1356WA1406EA1407EA1408EInstruction not supported on targeted CPUThis occurs if you try to use an instruction that is not supported by thedefault architecture or processor for armasm.For example:SMULBB r0,r0,r1 ;can be assembled with:armasm --cpu 5TEThe processor selected on the armasm comm<strong>and</strong> line does not supportthis instruction. See the <strong>ARM</strong> Architecture <strong>Reference</strong> Manual.Bad decimal numberOverlarge floating point valueOverlarge (single precision) floating point valueA1409W Small (single precision) floating value converted to 0.0A1411EA1412EA1413EA1414EA1415EA1416EClosing '>' missing from vector specifierBad vector length, should be between <strong>and</strong> Bad vector stride, should be between <strong>and</strong> Vector wraps round over itself, length * stride should not begreater than VFPASSERT must be followed by 'VECTOR' or 'SCALAR'Vector length does not match current vector length 2-16 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1417EA1418EA1419EA1420EA1421EA1422EA1423EA1424EA1425EA1426EA1427EA1428EA1429EA1430EA1431EA1432EA1433EA1435EVector stride does not match current vector strideRegister has incorrect type '' for instruction, expectfloating point/double register typeScalar oper<strong>and</strong> not in a scalar bankLengths of vector oper<strong>and</strong>s are differentStrides of vector oper<strong>and</strong>s are differentThis combination of vector <strong>and</strong> scalar oper<strong>and</strong>s is not allowedThis operation is not vectorizableVector specifiers not allowed in oper<strong>and</strong>s to this instructionDestination vector must not be in a scalar bankSource vector must not be in a scalar bankOper<strong>and</strong>s have a partial overlapRegister list contains registers of varying typesExpected register listThe VFP instructions are malformed.See NEON <strong>and</strong> VFP Programming in the RVCT Assembler Guide.Unknown frame directiveFrame directives are not accepted outside of PROCs/FUNCTIONsInvalid FRAME directive.See Frame directives in the RVCT Assembler Guide.Floating-point register type not consistent with selectedfloating-point architectureOnly the writeback form of this instruction existsThe addressing mode specified for the instruction did not include thewriteback specifier (that is, a '!' after the base register), but theinstruction set only supports the writeback form of the instruction. Eitheruse the writeback form, or replace with instructions that have the desiredbehavior. is not defined when assembling for an architecture{PCSTOREOFFSET} is only defined when assembling for a processor, not foran architecture.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-17ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1437EA1446E is undefined{ARCHITECTURE} is only defined when assembling for an architecture, notfor a processor.Bad or unknown attribute ''. Use --apcs /interwork insteadExample:AREA test1, CODE, READONLYAREA test, CODE, READONLY, INTERWORKThis code might have originally been intended to work with SDT. TheINTERWORK area attribute is now obsolete. To eliminate the warning:• remove the ", INTERWORK" from the AREA line.• assemble with 'armasm --apcs /interwork foo.s' insteadA1447WA1448WA1449WA1450WMissing END directive at end of file, but found a label named ENDThis is caused by the END statement not being correctly indented ormissing.Deprecated form of PSR field specifier used (use _f)Deprecated form of PSR field specifier used (use _c)Deprecated form of PSR field specifier used (use _cxsf for futurecompatibility)The <strong>ARM</strong> assembler (armasm) supports the full range of MRS <strong>and</strong> MSRinstructions, in the form:MRS(cond) Rd, CPSRMRS(cond) Rd, SPSRMSR(cond) CPSR_fields, RmMSR(cond) SPSR_fields, RmMSR(cond) CPSR_fields, #immediateMSR(cond) SPSR_fields, #immediatewhere fields can be any combination of cxsf.NoteMSR CPSR_c, #immediate is a legitimate instruction (despite what is writtenin early versions of the <strong>ARM</strong> Architecture <strong>Reference</strong> Manual), so asequence of two instructions like:MOV r0, #0x1FMSR CPSR_c, r0as commonly found in boot code, can be combined into one instruction,such as:MSR CPSR_c, #0x1F ; go to System mode, IRQ & FIQ enabled2-18 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Earlier releases of the assembler allowed other forms of the MSRinstruction to modify the control field <strong>and</strong> flags field:• cpsr or cpsr_all, control <strong>and</strong> flags field.• cpsr_flg, flags field only.• cpsr_ctl, control field only.Similar control <strong>and</strong> flag settings apply for SPSR.These forms are now deprecated <strong>and</strong> must not be used. If your legacycode contains them, the assembler reports:Deprecated form of PSR field specifier used (use _cxsf)To avoid the warning, in most cases you can simply modify your code touse _c, _f, _cf or _cxsf instead.For more information, see:• Instruction capabilities in the RVCT Assembler Guide.• the FAQ armasm: use of MRD <strong>and</strong> MSR instructions ('Deprecatedform of PSR field specifier'),http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3724.html.A1454EA1456WA1457EFRAME STATE RESTORE directive without a corresponding FRAME STATEREMEMBERInvalid FRAME directive.See Frame directives in the RVCT Assembler Guide.INTERWORK area directive is obsolete. Continuing as if --apcs/inter selectedExample:AREA test, CODE, READONLY, INTERWORKThis code might have originally been intended to work with SDT. TheINTERWORK area attribute is now obsolete. To eliminate the warning:1. remove the ", INTERWORK" from the AREA line.2. assemble with armasm --apcs /interwork foo.s insteadCannot mix INTERWORK <strong>and</strong> NOINTERWORK code areas in same fileINTERWORK <strong>and</strong> (default) NOINTERWORK code areas cannot be mixed in samefile. This code might have originally been intended to work with SDT.The INTERWORK area attribute is obsolete in RVCT.Example:<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-19ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>AREA test1, CODE, READONLY…AREA test2, CODE, READONLY, INTERWORKTo eliminate the error:1. move the two AREAs into separate assembler files such as, forexample, test1.s <strong>and</strong> test2.s2. remove the ", INTERWORK" from the AREA line in test2.s3. assemble test1.s with armasm --apcs /nointerwork4. assemble test2.s with armasm --apcs /interwork5. at link time, the linker adds any necessary interworking veneers.A1458EA1459EA1461EA1462EA1463EA1464WA1466WDCFD or DCFDU not allowed when fpu is NoneCannot B or BL to a registerThis form of the instruction is not allowed. See the <strong>ARM</strong> Architecture<strong>Reference</strong> Manual for the allowed forms.Specified processor or architecture does not support ThumbinstructionsIt is likely that you are specifying a specific architecture or cpu using the--cpu option <strong>and</strong> then incorporating some Thumb code in the AREA thatis generating this error.For example:armasm --cpu 4 code.sStrong<strong>ARM</strong> is an architecture 4 (not 4T) processor <strong>and</strong> does not supportThumb code.Specified memory attributes do not support this instructionSPACE directive too big to fit in area, area size limit 2^32ENDP/ENDFUNC without corresponding PROC/FUNCOperator precedence means that expression would evaluatedifferently in Carmasm has always evaluated certain expressions in a different order toC. This warning might help C programmers from being caught out whenwriting in assembler.To avoid the warning, either:• modify the code to make the evaluation order explicit (that is, addmore brackets)• suppress the warning with --unsafe switch.2-20 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>See Operator precedence in the RVCT Assembler Guide.A1467WA1468WA1469EA1471WA1475WA1476WA1477WA1479WFRAME ADDRESS with negative offset is not recommendedFRAME SAVE saving registers above the canonical frame address isnot recommendedFRAME STATE REMEMBER directive without a corresponding FRAME STATERESTOREInvalid FRAME directive.See Frame directives in the RVCT Assembler Guide.Directive may be in an executable positionThis can occur with, for example, the LTORG directive (see A1283E &A1284E). LTORG instructs the assembler to dump literal pool DCD dataat this position.To prevent this warning from occurring, the data must be placed wherethe processor cannot execute them as instructions. A good place for anLTORG is immediately after an unconditional branch, or after the returninstruction at the end of a subroutine.As a last resort, you could add a branch over the LTORG, to avoid the databeing executed, for example:B unique_labelLTORGunique_labelAt least one register must be transferred, otherwise result isUNPREDICTABLEBX r15 at non word-aligned address is UNPREDICTABLEThis register combination results in UNPREDICTABLE behaviorRequested alignment is greater than area alignment, which has been increasedThis is warning about an ALIGN directive which has a coarser alignmentboundary than its containing AREA, which is not allowed. To compensate,the assembler automatically increases the alignment of the containingAREA for you. A simple test case that gives the warning is:AREA test, CODE, ALIGN=3ALIGN 16mov pc, lrEND<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-21ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>In this example, the alignment of the AREA (ALIGN=3) is 2^3=8 byteboundary, but the mov pc,lr instruction is on a 16-byte boundary, hencethe error.NoteThe two alignment types are specified in different ways.See ALIGN <strong>and</strong> AREA in the RVCT Assembler Guide.A1480WA1481EA1482EA1484EA1485EA1486EA1487EA1488WMacro cannot have same name as a directive or instructionObject file format does not support this area alignmentThis can occur when using AREA ... ALIGN=0 to align a code section on abyte boundary, which is not possible. Code sections can only be alignedon four-byte boundary for <strong>ARM</strong> code, <strong>and</strong> two-byte boundary for Thumbcode. Use "ALIGN=2" instead for <strong>ARM</strong> code, or "ALIGN=1" for Thumbcode.Shift option out of range, allowable values are from toObsolete shift name 'ASL', use LSL insteadThe <strong>ARM</strong> architecture does not have an ASL shift operation. The <strong>ARM</strong>barrel shifter only has the following shift types: ROR, ASR, LSR, <strong>and</strong>LSL.An arithmetic (that is, signed) shift left is the same as a logical shift left,because the sign bit always gets shifted out.Earlier versions of the assembler would silently convert ASL to LSL.This error can be downgraded to a warning by using the --unsafe switch.LDM/STM instruction exceeds maximum register count allowedwith --split_ldmADR/ADRL of a symbol in another AREA is not supported in ELFThe ADR <strong>and</strong> ADRL pseudo-instructions can only be used with labelswithin the same code section. To load an out-of-area address into aregister, use LDR instead.Obsolete instruction name 'ASL', use LSL insteadThe Thumb instruction ASL is now faulted. See the corresponding <strong>ARM</strong>ASL message A1484E.PROC/FUNC at line in '' without matchingENDP/ENDFUNC2-22 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1489EA1490EA1491WA1492EA1493EA1495EA1496EA1497EA1498E is undefined is undefined{CPU} is only defined by assembling for a processor <strong>and</strong> not anarchitectureInternal error: Found relocation at offset with incorrectalignmentThis might indicate an assembler fault. Contact your supplier.Immediate 0x out of range for this operation. Permittedvalues are 0x to 0xREQUIRE must be in an AREATarget of branch is a data addressRVCT 2.2 <strong>and</strong> later are able to determine the type of a symbol <strong>and</strong> detectbranches to data. This warning can be suppressed with--diag-suppress 1495Absolute relocation of ROPI address with respect to symbol'' at offset may cause link failureFor example, when assembling with --apcs /ropi:AREA code, CODEcodeaddr DCD codeaddrENDbecause this generates an absolute relocation (R_<strong>ARM</strong>_ABS32) to a PI codesymbol.Absolute relocation of RWPI address with respect to symbol'' at offset may cause link failureFor example, when assembling with --apcs /rwpi:AREA data, DATAdataaddr DCD dataaddrENDbecause this generates an absolute relocation (R_<strong>ARM</strong>_ABS32) to a PI datasymbol.Unexpected characters following Thumb instructionFor example:ADD r0, r0, r1is accepted as a valid instruction, for both <strong>ARM</strong> <strong>and</strong> Thumb, but:ADD r0, r0, r1, ASR #1<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-23ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>is a valid instruction for <strong>ARM</strong>, but not for Thumb, so the unexpectedcharacters are ", ASR #1".A1499EA1500ERegister pair is not a valid contiguous pairUnexpected characters when expecting ''A1501E Shift option out of range, allowable values are 0, 8, 16 or 24A1502WA1505EA1506EA1507EA1508EA1509EA1510EA1511EA1512EA1513EA1514EA1515EA1516EA1517EA1539EA1540EA1541EA1542EA1543WRegister is a caller-save register, not valid for thisoperationBad expression type, expect logical expressionAccumulator should be in form accx where x ranges from 0 to Second parameter of register list must be greater than or equal tothe firstStructure mismatch expect ConditionalBad symbol type, expect label, or weak external symbolImmediate 0x cannot be represented by 0-255 <strong>and</strong> a rotationImmediate cannot be represented by combination of two dataprocessing instructionsImmediate 0x out of range for this operation. Permittedvalues are to Symbol not found or incompatible Symbol type for ''Bad global name ''Bad local name ''Bad symbol '', not defined or externalUnexpected operator equal to or equivalent to Link Order dependency '' not an areaCannot have a link order dependency on self is not a valid condition codeMacro names <strong>and</strong> [parameter] conflictEmpty macro parameter default value2-24 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1544WA1545EA1546WA1547WA1548WA1549WA1550EA1551EA1560EA1561EInvalid empty PSR field specifier, field must contain at least oneof c,x,s,fToo many sections for one fileStack pointer update potentially breaks 8 byte stack alignmentExample:PUSH {r0}The stack must be eight-byte aligned on an external boundary so pushingan odd number of registers causes this warning to be given. This warningis suppressed by default. To enable this warning use --diag_warning 1546.See the RVCT Assembler Guide for more information.PRESERVE8 directive has automatically been setExample:PUSH {r0,r1}This warning has been given because the PRESERVE8 directive has notbeen explicitly set by the user, but the assembler has set this itselfautomatically. This warning is suppressed by default. To enable thiswarning use --diag_warning 1547.See the RVCT Assembler Guide for more information.Code contains LDRD/STRD indexed/offset from SP but REQUIRE8 is notsetExample:PRESERVE8STRD r0,[sp,#8]This warning is given when the REQUIRE8 directive is not set whenrequired.Setting of REQUIRE8 but not PRESERVE8 is unusualExample:PRESERVE8 {FALSE}REQUIRE8STRD r0,[sp,#8]Input <strong>and</strong> output filenames are the sameCannot add Comdef area to non-comdat groupNon-constant byte literal values not supportedMERGE <strong>and</strong> STRING sections must be data sections<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-25ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1562E Entry size for Merge section must be greater than 0A1563WInstruction stalls CPU for cycle(s)The assembler can give information about possible interlocks in yourcode caused by the pipeline of the processor chosen by the --cpu option.This can be enabled with armasm --diag_warning 1563NoteIf the --cpu option specifies a multi-issue processor such as Cortex-A8,the interlock warnings are unreliable.A1572EA1573EA1574EA1575EA1576EA1577EA1578EA1581WOperator SB_OFFSET_11_0 only allowed on LDR/STR instructionsOperator SB_OFFSET_19_12 only allowed on Data ProcessinginstructionsExpected one or more flag characters from ""BLX with bit[0] equal to 1 is architecturally UNDEFINEDBad coprocessor register name symbolBad coprocessor name symbolBad floating point register name symbol ''Added bytes of padding at address The assembler warns by default when padding bytes are added to thegenerated code. This occurs whenever an instruction/directive is used atan address that requires a higher alignment, for example, to ensure <strong>ARM</strong>instructions start on a four-byte boundary after some Thumb instructions,or where there is a DCB followed by DCD.For example:AREA Test, CODE, READONLYTHUMBThumbCodeMOVS r0, #1ADR r1, <strong>ARM</strong>ProgBX r1; ALIGN ;


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>DCB 0xFFDCD 0x1234ENDResults in the warnings:A1581W: Added 2 bytes of padding at address 0x68 00000008 <strong>ARM</strong>A1581W: Added 3 bytes of padding at address 0x1113 00000014 DCD 0x1234The warning can also occur when using ADR in Thumb-only code. TheADR Thumb pseudo-instruction can only load addresses that are wordaligned, but a label within Thumb code might not be word aligned. UseALIGN to ensure four-byte alignment of an address within Thumb code.A1582EA1583EA1584WA1585EA1586EA1587EA1588EA1589EA1593ELink Order area '' undefinedGroup symbol '' undefinedMode not allowed for this instructionBad oper<strong>and</strong> type () for operator Bad oper<strong>and</strong> types (, ) for operator Too many registers in register list, maximum of Align only available on VLD <strong>and</strong> VST instructionsElement index must remain constant across all registersBad Alignment, must match transfer size UIMM * A1595E Bad Alignment, must match * , or 64 when is 4A1596EInvalid alignment for dt st combinationA1597E Register increment of 2 not allowed when dt is 8A1598EA1599EA1600EA1601EA1603WA1604WBad Register list lengthOut of range subscript, must be between 0 <strong>and</strong> Section type must be within range SHT_LOOS <strong>and</strong> SHT_HIUSERImmediate cannot be representedThis instruction inside IT block has UNPREDICTABLE resultsThumb Branch to destination without alignment to bytes<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-27ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1606EA1607EA1608WA1609WA1611EA1612EA1613ESymbol attribute cannot be used with attribute Thumb-2 wide branch instruction used, but offset could fit inThumb-1 narrow branch instructionMOV pc, instruction used, but BX is preferredMOV ,pc instruction does not set bit zero, so does not createa return addressThis warning is caused when the current value of the PC is copied into aregister while executing in Thumb state. An attempt to create a returnaddress in this fashion fails as bit0 is not set. Attempting to BX to thisinstruction causes a state change (to <strong>ARM</strong>).To create a return address, you can use:MOV r0, pcADDS r0, #1This warning can then be safely suppressed with:--diag-suppress 1609Register list increment of 2 not allowed for this instruction addressing not allowed for Invalid register or register combination for this operation,, expected one of A1614E Scalar access not allowed when dt is 64A1615EA1616EA1617EA1618EA1619EA1620EStore of a single element or structure to all lanes is UNDEFINEDInstruction, offset, immediate or register combination is notsupported by the current instruction setThis can be caused by attempting to use an invalid combination ofoper<strong>and</strong>s. For example, in Thumb:MOV r0, #1 ; /* Not permitted */MOVS r0, #1 ; /* Ok */See the RVCT Assembler Guide for more information about the oper<strong>and</strong>spermitted for specific instructions.Specified width is not supported by the current instruction setSpecified instruction is not supported by the current instructionsetSpecified condition is not consistent with previous ITError writing to file '': 2-28 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1621EA1622EA1623EA1624EA1625EA1626EA1627EA1630EA1631EA1632EA1633EA1634EA1635EA1636EA1637EA1638EA1639EA1640EA1641EA1642WCBZ or CBNZ from Thumb code to <strong>ARM</strong> codeNegative register offsets are not supported by the currentinstruction setOffset not supported by the current instruction setBranch from Thumb code to <strong>ARM</strong> codeBranch from <strong>ARM</strong> code to Thumb codeBL from Thumb code to <strong>ARM</strong> codeBL from <strong>ARM</strong> code to Thumb codeThis occurs when there is a branch from <strong>ARM</strong> code to Thumb code (orvice-versa) within this file. The usual solution is to move the Thumb codeinto a separate assembler file. Then, at link-time, the linker adds anynecessary interworking veneers.Specified processor or architecture does not support <strong>ARM</strong>instructionsCertain processors such as Cortex-M3 or Cortex-M1 implement only theThumb instruction set, not the <strong>ARM</strong> instruction set. It is likely that theassembly file contains some <strong>ARM</strong>-specific instructions <strong>and</strong> is being builtfor one of these processors.Only left shifts of 1, 2 <strong>and</strong> 3 are allowed on load/storesElse forbidden in IT AL blocksLDR rx,= pseudo instruction only allowed in load word formLDRD/STRD has no register offset addressing mode in ThumbCBZ/CBNZ can not be made conditionalFlag setting MLA is not supported in ThumbError reading line: Writeback not allowed on register offset loads or stores in ThumbConditional DCI only allowed in Thumb modeOffset must be a multiple of fourForced user-mode LDM/STM not supported in ThumbRelocated narrow branch is not recommended<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-29ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1643EA1644EA1645WA1646WA1647ECannot determine whether instruction is working on single ordouble precision values.Cannot use single precision registers with FLDMX/LSTMXSubstituted with armasm can warn when it substitutes an instruction when assembling.For example:• ADD negative_number is the same as SUB positive_number• MOV negative_number is the same as MVN positive_number• CMP negative_number is the same as CMN positive_number.For Thumb-2, unpredictable single register LDMs are transformed intoLDRs.This warning is suppressed by default, but can be enabled with--diag_warning 1645For example:AREA foo, CODEADD r0, #-1MOV r0, #-1CMP r0, #-1When assembled with:armasm --diag_warning 1645the assembler reports:Warning: A1645W: Substituted ADD with SUB3 00000000 ADD r0, #-1Warning: A1645W: Substituted MOV with MVN4 00000004 MOV r0, #-1Warning: A1645W: Substituted CMP with CMN5 00000008 CMP r0, #-1<strong>and</strong> the resulting code generated is:foo0x00000000: e2400001 ..@. SUB r0,r0,#10x00000004: e3e00000 .... MVN r0,#00x00000008: e3700001 ..p. CMN r0,#1VMOV pseudo-instruction for a register to register move isdeprecated. Please use a VORR instruction insteadThis message relates to Wireless MMX.Bad register name symbol, expected Integer registerThis message relates to Wireless MMX.2-30 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1648EA1649EA1650EA1651EA1652WA1653EA1654EA1655WA1656EA1657EA1658WA1659EA1660EA1661EA1662EA1663EA1664EBad register name symbol, expected Wireless MMX SIMD registerThis message relates to Wireless MMX.Bad register name symbol, expected Wireless MMX Status/Control orGeneral Purpose registerThis message relates to Wireless MMX.Bad register name symbol, expected any Wireless MMX registerThis message relates to Wireless MMX.TANDC, TEXTRC <strong>and</strong> TORC instructions with destination registerother than R15 is undefinedThis message relates to Wireless MMX.FLDMX/FSTMX instructions are deprecated in <strong>ARM</strong>v6. Please useFLDMD/FSTMD instructions to save <strong>and</strong> restore unknown precisionvalues.Shift instruction using a status or control register is undefinedCannot access external symbols when loading/storing bytes orhalfwordsInstruction is UNPREDICTABLE if halfword/word/doubleword isunalignedTarget must be at least word-aligned when used with thisinstructionCannot load a byte/halfword literal using WLDRB/WLDRH =constantSupport for is deprecatedThe option passed to armasm is now deprecated. Use armasm --help toview the currently available options, or refer to the RVCT AssemblerGuide.Cannot B/BL/BLX between <strong>ARM</strong>/Thumb <strong>and</strong> Thumb-2EECannot specify scalar index on this register typeCannot specify alignment on this registerCannot specify a data type on this register typeA data type has already been specified on this registerData type specifier not recognizedA1665E Data type size must be one of 8, 16, 32 or 64<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-31ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1666E Data type size for floating-point must be 32 or 64A1667E Data type size for polynomial must be 8 or 16A1668EA1669EA1670EA1671EA1672EA1673EA1674EA1675EA1676EA1677EA1678EA1679EA1680EA1681EA1682EA1683EA1684EA1685EA1686EA1687EToo many data types specified on instructionData type specifier not allowed on this instructionExpected 64-bit doubleword register expressionExpected 128-bit quadword register expressionExpected either 64-bit or 128-bit register expressionBoth source data types must be same type <strong>and</strong> sizeSource oper<strong>and</strong> 1 should have integer type <strong>and</strong> be double the sizeof source oper<strong>and</strong> 2Data types <strong>and</strong> sizes for destination must be same as sourceDestination type must be integer <strong>and</strong> be double the size of sourceDestination type must be same as source, but half the sizeDestination must be untyped <strong>and</strong> same size as sourceDestination type must be same as source, but double the sizeDestination must be unsigned <strong>and</strong> half the size of signed sourceDestination must be unsigned <strong>and</strong> have same size as signed sourceDestination must be un/signed <strong>and</strong> source floating, or destinationfloating <strong>and</strong> source un/signed, <strong>and</strong> size of both must be 32-bitsData type specifiers do not match a valid encoding of thisinstructionSource oper<strong>and</strong> type should be signed or unsigned with size between <strong>and</strong> Source oper<strong>and</strong> type should be signed, unsigned or floating pointwith size between <strong>and</strong> Source oper<strong>and</strong> type should be signed or floating point with sizebetween <strong>and</strong> Source oper<strong>and</strong> type should be integer or floating point with sizebetween <strong>and</strong> 2-32 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1688EA1689EA1690EA1691EA1692EA1693EA1694EA1695EA1696EA1697EA1698EA1699EA1700EA1701EA1702EA1704EA1705EA1706EA1708EA1709EA1710ESource oper<strong>and</strong> type should be untyped with size between <strong>and</strong>Source oper<strong>and</strong> type should be -bit floating pointSource oper<strong>and</strong> type should be signed with size between <strong>and</strong>Source oper<strong>and</strong> type should be integer, floating point orpolynomial with size between <strong>and</strong> Source oper<strong>and</strong> type should be signed, unsigned or polynomial withsize between <strong>and</strong> Source oper<strong>and</strong> type should be unsigned or floating point with sizebetween <strong>and</strong> Instruction cannot be conditional in the current instruction setConditional instructions are not allowed in the specified instruction set.The instruction moveq, for example, is only allowed in <strong>ARM</strong> <strong>and</strong>Thumb-2 assembler, but not Thumb-1.Scalar index not allowed on this instructionExpected either 32-bit, 64-bit or 128-bit register expressionExpected either 32-bit or 64-bit VFP register expressionExpected 32-bit VFP register expression64-bit data type cannot be used with these registersSource oper<strong>and</strong> type should be integer with size between <strong>and</strong>16-bit polynomial type cannot be used for source oper<strong>and</strong>Register Dm can not be scalar for this instructionRegister Dm must be in the range D0-D for this data typeAssembler converted Qm register to D[]Register Dm must be scalar3rd oper<strong>and</strong> to this instruction must be a constant expressionExpected <strong>ARM</strong> or scalar register expressionDifference between current <strong>and</strong> previous register should be <strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-33ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1711EA1712WA1713EA1714EA1715EA1716EA1717EA1718EA1719WA1720EA1721EA1722EA1723EA1724EA1725WA1726EA1727WA1728EA1729EA1730EA1731EScalar registers cannot be used in register list for thisinstructionThis combination of LSB <strong>and</strong> WIDTH results in UNPREDICTABLEbehaviorInvalid field specifiers for APSR: must be APSR_ followed by atleast one of n, z, c, v, q or gInvalid combination of field specifiers for APSRPSR not defined on target architectureDestination for VMOV instruction must be <strong>ARM</strong> integer, 32-bitsingle-precision, 64-bit doubleword register or 64-bit doublewordscalar registerSource register must be an <strong>ARM</strong> integer, 32-bit single-precision or64-bit doubleword scalar registerSource register must be an <strong>ARM</strong> integer register or same as thedestination registerThis PSR name is deprecated <strong>and</strong> may be removed in a future releaseSource register must be a 64-bit doubleword scalar registerDestination register may not have all-lanes specifierLabels not allowed inside IT blocks__RELOC is deprecated, please use the new RELOC directiveRELOC may only be used immediately after an instruction or datagenerating directive'armasm inputfile outputfile' form of comm<strong>and</strong>-line is deprecatedDecreasing --max_cache below 8MB is not recommendedImmediate could have been generated using the 16-bit Thumb MOVSinstructionSource register must be same type as destination registerRegister list may only contain 32-bit single-precision or 64-bitdoubleword registersOnly IA or DB addressing modes may be used with these instructionsRegister list increment of 2 or more is not allowed for quadwordregisters2-34 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1732EA1733EA1734EA1735EA1736EA1737EA1738EA1739WA1740EA1741EA1742EA1744EA1745WA1746WA1753EA1754EA1755EA1756ERegister list must contain between 1 <strong>and</strong> 4 contiguous doublewordregistersRegister list must contain 2 or 4 doubleword registers, <strong>and</strong>increment 2 is only allowed for 2 registersRegister list must contain doubleword registers with increment1 or 2Post-indexed offset must equal the number of bytes loaded/stored()Number of registers in list must equal number of elementsPC or SP can not be used as the offset registerImmediate too large for this operationConstant generated using single VMOV instruction; secondinstruction is a NOPNumber of bytes in FRAME PUSH or FRAME POP directive must not beless than zeroInstruction cannot be conditionalExpected LSL #ImmAlignment on register must be a multiple of 2 in the range 16 to256This register combination is DEPRECATEDInstruction stall diagnostics may be unreliable for this CPUThe assembler generates messages to help you optimize the code whenbuilding with, for example:--diag_warning 1563 --cpu=Cortex-A8However, these messages are not reliable because the assembler makesugggestions for modern processors such as the Cortex-A8 <strong>and</strong>Cortex-A9.See also warning A1563W.Unrecognized memory barrier optionCannot change the type of a scalar registerScalar index has already been specified on this registerData type must be specified on all registers<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-35ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1757WA1758WA1759EA1760WA1761WA1762EA1763WA1764WA1765EA1766WA1767EA1768EA1769EA1771EA1772ESymbol attributes must be within square brackets; Any other syntaxis deprecatedExporting multiple symbols with this directive is deprecatedSpecified processor or architecture does not support Thumb-2EEinstructionsBuild Attribute is ''Difference in build attribute from '' in Branch offset 0x out of range of 16-bit Thumb branch, butoffset encodable in 32-bit Thumb branchThis is caused when assembling for Thumb-2 if an offset to a branchinstruction is too large to fit in a 16-bit branch. The .W suffix can be addedto the instruction to instruct the assembler to generate a 32-bit branch.Inserted an IT block for this instructionThis indicates that the assembler has inserted a IT block to allow anumber of conditional instructions in Thumb-2. For example:MOVEQ r0,r1This warning is off by default. It can be enabled using--diag_warning A1763. instructions are deprecated in architecture <strong>and</strong>aboveSize of padding value on ALIGN must be 1, 2 or 4 bytesThis is caused when the optional padsize attribute is used with an ALIGNdirective, but has an incorrect size. It does not refer to the parameter toalign to. The parameter can be any power of 2 from 2^0 to 2^31Size of padding value for code must be a minimum of bytes;treating as dataUnexpected characters following attributeMissing '='Bad NEON or VFP system register name symbolBad floating-point bitpattern when expecting -bit bitpatternDestination type must be signed or unsigned integer, <strong>and</strong> sourcetype must be 32-bit or 64-bit floating-point2-36 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1773EA1774EA1775EA1776EA1777EA1778EA1779WA1780EA1781EA1782EA1783EA1784WA1785EA1786WA1787WA1788WA1789WA1790WFloating-point conversion only possible between 32-bitsingle-precision <strong>and</strong> 64-bit double-precision typesFixed-point conversion only possible for 16-bit or 32-bit signedor unsigned typesConversion between these types is not possibleThis operation is not available for 32-bit single-precisionfloating point types is out of range for symbol type; value must be between <strong>and</strong> is out of range for symbol binding; value must be between <strong>and</strong> DCDO cannot be used on READONLY symbol ''Unknown ATTR directiveTag # cannot be set by using ATTRTag # should be set with ATTR Attribute scope must be a label or section name<strong>Reference</strong> to weak definition '' not relocatedMacro '' not found, but '' existsThis instruction using SP is deprecated in <strong>ARM</strong>v7This is caused by statements like:ADD sp, r0, #immThis can be replaced with a sequence like:ADD r1,r0,#immMOV sp, r1For more information, see Diagnostic messages A1745W, A1477W <strong>and</strong>A1786W,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka4235.html.Use of VFP Vector Mode is deprecated in <strong>ARM</strong>v7Explicit use of PC in this instruction is deprecatedExplicit use of PC in this instruction is deprecated, except asdestination registerWriteback ignored in Thumb LDM loading the base register<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-37ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This is caused by incorrectly adding an exclamation mark to indicate baseregister writeback.For example:LDM r0!, {r0-r4}is not a legal instruction because r0 is the base register <strong>and</strong> is also in thedestination register list. In this case, the assembler ignores the writeback<strong>and</strong> generates:LDM r0, {r0-r4}A1791WA1792EA1793EA1794EA1795EA1796EA1797EA1798WA1799WA1800WA1801WA1803EA1804EA1805WA1806WA1807WA1808EA1809WA1810EPrevious value of tag # will be overriddenUndefined build attributes tagConversion only possible between 16-bit <strong>and</strong> 32-bit floating pointConversion operations require two data typesSource <strong>and</strong> destination vector must contain elementsRegister type not consistent with data typeSpecified FPU is not compatible with CPU architectureOutput is not WYSIWYG ()Output has not been checked for WYSIWYG propertyNo output for lineInstruction is UNPREDICTABLE in current instruction setBad system instruction nameBad CP14 or CP15 register name for instructionRegister is Read-OnlyRegister is Write-OnlyInstruction executes as NOP on target CPUGenerated object file may be corrupt ()Instruction aligns PC before using it; section ought to be atleast 4 byte alignedBase register writeback value unclear; use '[rn,#n]!' or '[rn],#n'syntax2-38 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A1811EA1812WA1813WA1814EA1815EA1816EA1817WA1818WA1819WA1993EA1994EA1995EA1996EA1997EA1998EA1999ESize of fill value must be 1, 2 or 4 bytes <strong>and</strong> a factor of fillsizeInstruction cannot be assembled in the opposite instruction set32-bit instruction used where 16-bit could have been usedNo output fileSHT_<strong>ARM</strong>_EXIDX sections require a link order dependency to be setUnknown opcode '' in CODE16, but exists in THUMBATTR tag # setting ignored in ATTR COMPAT flag <strong>and</strong> vendor '' setting ignored inATTR compatible with tag # setting ignored in This operator requires a relocation that is not supported inThis directive is not supported in Weak definitions are not supported in TYPE must only be used after WEAK on IMPORTExpected alias for weak extern symbolComdat Associated area must have Comdat Associative selection typeComdat Associated area cannot be another Comdat Associated area<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 2-39ID121310Non-Confidential


Assembler <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>2-40 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Chapter 3Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This chapter contains the error <strong>and</strong> warning messages for the <strong>ARM</strong> Linker (armlink). Itcontains the following section:• Suppressing armlink error <strong>and</strong> warning messages on page 3-2• List of the armlink error <strong>and</strong> warning messages on page 3-3.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-1ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>3.1 Suppressing armlink error <strong>and</strong> warning messagesAll linker warnings are suppressible with --diag_suppress in the same way as forcompiler warnings. For example:--diag_suppress 6306Some errors such as L6220E, L6238E <strong>and</strong> L6784E can be downgraded to a warning byusing:--diag_warning3-2 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>3.2 List of the armlink error <strong>and</strong> warning messagesThis section lists the error <strong>and</strong> warnings for armlink.L6000UL6001UL6002UL6003UL6004UOut of memory.Could not read from file .Could not open file : This indicates that the linker was unable to open a file specified on thelinker comm<strong>and</strong> line. This can indicate a problem accessing the file or afault with the comm<strong>and</strong> line specified. Some common occurrences of thismessage are:• L6002U: Could not open file /armlib/{libname}: No such fileor directoryThe RVCT40LIB environment variable has not been set up.• Error : armlink : L6002: Could not open file errors=ver.txtCaused by the double-dash (--) missing from in front oferrors=ver.txt. If you do not prefix options with -- or - the linkertreats them as input files <strong>and</strong> fails the link step as it is unable to loadall the specified files. The correct switch is --errors=ver.txt• Error: armlink : L6002 : Could not open file : No such fileor directory.Some old comm<strong>and</strong> line options, for example, -remove (dbg), arenot correctly converted when some ADS CodeWarrior projects areupdated for RVDS. Removing (dbg) from the "EquivalentComm<strong>and</strong> Line" window in this example resolves this.Could not write to file .An file I/O error occurred while reading, opening, or writing to thespecified file.Incomplete library member list for .This can occur where there is whitespace in the list of library objects.The example below fails:armlink x.lib(foo.o, bar.o)Fatal error: L6004U: Missing library member in member list forx.lib.The example below succeeds:armlink x.lib(foo.o,bar.o)Another less common occurrence is caused by a corrupt library, orpossibly a library in an unsupported format.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-3ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6005UL6007UL6008UL6009UL6010UL6011UL6015UL6016UExtra characters on end of member list for .Could not recognize the format of file .The linker can recognize object files in the ELF format, <strong>and</strong> library filesin AR formats. The specified file is either corrupt, or is in a file formatthat the linker cannot recognize. The file could be a AOF or ALF formatwhich was produced by SDT. These file formats became deprecated inRVCT 2.1 <strong>and</strong> obsolete in 2.2.Try rebuilding the source file.Could not recognize the format of member from .The linker can recognize library member objects in the ELF file format.The specified library member is either corrupt, or is in a file format thatthe linker cannot recognize. The file could be a AOF or ALF formatwhich was produced by SDT. These file formats became deprecated inRVCT 2.1 <strong>and</strong> obsolete in 2.2. Try rebuilding the source file.File : Endianness mismatch.The endianness of the specified file or object did not match theendianness of the other input files. The linker can h<strong>and</strong>le input of eitherbig endian or little endian objects in a single link step, but not a mixedinput of some big <strong>and</strong> some little endian objects.Could not reopen stderr to file : An file I/O error occurred while reading /opening/writing to the specifiedfile.Invalid integer constant : .Specifying an illegal integer constant causes this. An integer can beentered in hexadecimal format by prefixing &, 0x, or 0X. A suffix of k or mcan be used to specify a multiple of 1024 or 1024*1024.Could not find any input files to link.The linker must be provided with at least one object file to link.For example, If you try to link with:armlink lib.a -o foo.axfyou get the above error.You must instead use, for example:armlink foo_1.o foo_2.o lib.a -o foo.axfSymbol table missing/corrupt in object/library .This can occur when linking with libraries built with the GNU tools. Thisis because GNU ar can generate incompatible information.3-4 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>The workaround is to replace ar with armar <strong>and</strong> use the same comm<strong>and</strong>line arguments. Alternatively, the error is recoverable by using armar -sto rebuild the symbol table.L6017UL6018UL6019UL6020UL6022UL6024UL6025UL6026UL6027UL6028UL6029UL6031ULibrary symbol table contains an invalid entry.The library might be corrupted. Try rebuilding it. is not a valid ELF file. is not a valid 64 bit ELF file. is not a valid 32 bit ELF file.Object has multiple .The object file is faulty or corrupted. This might indicate a compiler fault.Contact your supplier.Library contains an invalid member name.The file specified is not a valid library file, is faulty or corrupted. Tryrebuilding it.Cannot extract members from a non-library file .The file specified is not a valid library file, is faulty or corrupted. Tryrebuilding it.ELF file has neither little or big endian encodingThe ELF file is invalid. Try rebuilding it.Relocation #: in () hasinvalid/unknown type.This might indicate a compiler fault. Contact your supplier.Relocation #: in () hasinvalid offset.This might indicate a compiler fault. Contact your supplier.Relocation #: in () iswrt invalid/missing symbol.The relocation is with respect to a symbol, which is either invalid ormissing from the object symbol table, or is a symbol that is not suited tobe used by a relocation. This might indicate a compiler fault. Contactyour supplier.Could not open scatter description file : <strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-5ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>An I/O error occurred while trying to open the specified file. This couldbe due to an invalid filename.L6032UL6033UL6035UL6036UL6037UL6038UL6041UL6042UL6043UInvalid (maximum ) found in Symbol in is defined relative to an invalidsection.When linking with GNU C libraries, the error might occur as:Symbol in crt1.o is defined relative to an invalid sectionIn the CodeSourcery 2006-Q1-3 release, the crt1.o object file has notbeen correctly stripped. This has been fixed in the 2006-Q1-6CodeSourcery release. Alternatively you can strip the crt1.o objectyourself. Otherwise, the object file is faulty or corrupted. This mightindicate a compiler fault. Contact your supplier.Relocation #: in ZI Section() has invalid type.ZI Sections cannot have relocations other than of type R_<strong>ARM</strong>_NONE.Could not close file : An I/O error occurred while closing the specified file.'' is not a valid argument for option ''.The argument is not valid for this option. This could be due to a spellingerror, or due to the use of an unsupported abbreviation of an argument.Could not create a temporary file to write updated SYMDEFS.An I/O error occurred while creating the temporary file required forstoring the SYMDEFS output.An internal error has occurred ().Contact your supplier.Relocation #: in () iswrt a mapping symbol(#, Last Map Symbol = #).Relocations with respect to mapping symbols are not allowed. This mightindicate a compiler fault. Contact your supplier.Relocation #: in () iswrt an out of range symbol(#, Range = 1-).Relocations can only be made wrt symbols in the range (1-n), where n isthe number of symbols.3-6 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6047UL6048UL6049UL6050UL6065EL6175EL6176EL6177EL6188EL6195EL6197EL6200EThe code in this image is bytes - this version ofthe linker will not create images that largeThe linker is unable to continue the link step (). Thisversion of the linker will not create this image.The linker is unable to continue the link step (). Thisversion of the linker will not link with one or more givenlibraries.The code size of this image ( bytes) exceeds themaximum allowed for this version of the linker.Load region (size ) is larger than maximum writablecontiguous block size of 0x80000000.The linker attempted to write a segment larger than 2GB. The size of asegment is limited to 2GB.EMPTY region cannot have any section selectors.A negative max_size cannot be used for region withoutthe EMPTY attribute.Only regions with the EMPTY attribute are allowed to have a negativemax-size.A negative max_size cannot be used for region which usesthe +offset form of base address.Regions using the +offset form of base address are not allowed to have anegative max-size.Special section multiply defined by <strong>and</strong> .A special section is one that can only be used once, such as"Veneer$$Code".Cannot specify both '' <strong>and</strong> '' for region Execution region has an invalid/unknown Executionregion () used with the AFTER address specifier.Symbol multiply defined (by <strong>and</strong> ).A common example where this occurs:Symbol __stdout multiply defined (by retarget.o <strong>and</strong> stdio.o).means that there are two conflicting definitions of __stdout present inretarget.o <strong>and</strong> stdio.o. The one in retarget.o is your own definition.The one in stdio.o is the default implementation, which was probablylinked-in inadvertently.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-7ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>stdio.o contains a number symbol definitions <strong>and</strong> implementations offile functions like fopen, fclose, <strong>and</strong> fflush.stdio.o is being linked-in because it satisfies some unresolvedreferences.To identify why stdio.o is being linked-in, you must use the verbose linkoption switch. For example:armlink [... your normal options...] --verbose --list err.txtThen study err.txt to see exactly what the linker is linking in, fromwhere, <strong>and</strong> why.You might have to either:• eliminate the calls like fopen, fclose, <strong>and</strong> fflush• re-implement the _sys_xxxx family of functions.See the section Tailoring the input/output functions in the RVCTLibraries <strong>and</strong> Floating Point Support Guide.L6201EL6202EObject contains multiple entry sections.() cannot be assigned to non-root region''A root region is a region that has an execution address the same as its loadaddress. The region does not therefore require moving or copying by thescatter load initialization code.Certain sections must be placed in root region in the image. __main.o <strong>and</strong>the linker-generated table (Region$$Table) must be in a root region. If not,the linker reports, for example:Region$$Table cannot be assigned to a non-root region.Scatterloading (__scatter*.o) <strong>and</strong> decompressor (__dc*.o) objects fromthe library must be placed in a root region. These can all be placedtogether using InRoot$$Sections:ROM_LOAD 0x0000 0x4000{ROM_EXEC 0x0000 0x4000 ; root region{vectors.o (Vect, +FIRST) ; Vector table* (InRoot$$Sections) ; All library sections; that must be in a root region; for example, __main.o, __scatter*.o,; dc*.o <strong>and</strong> * Region$$Table}RAM 0x10000 0x8000{* (+RO, +RW, +ZI) ; all other sections3-8 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>}}See also Placing root region library objects,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3946.html.L6203EL6204EL6205EL6206EL6208EL6209EL6210EL6211EEntry point () lies within non-root region .The image entry point must correspond to a valid instruction in aroot-region of the image.Entry point () does not point to an instruction.The image entry point must correspond to a valid instruction in theroot-region of the image.Entry point () must be word aligned for <strong>ARM</strong> instructions.This message is displayed because the image entry point you specifiedwith the --entry comm<strong>and</strong>-line option is not word aligned. For example,you specified --entry=0x8001 instead of --entry=0x8000.Entry point () lies outside the image.The image entry point you specified with the --entry comm<strong>and</strong>-lineoption is outside the image. For example, you might have specified anentry address of 0x80000 instead of 0x8000, as follows:armlink --entry=0x80000 test.o -o test.axfInvalid argument for --entry comm<strong>and</strong>: ''Invalid offset constant specified for --entry ()Image cannot have multiple entry points. (,)One or more input objects specifies more than one entry point for theimage. Use the --entry comm<strong>and</strong>-line option to select the entry point touse.Ambiguous section selection. Object contains more thanone section.This can occur when using the linker option --keep on an assemblerobject that contains more than one AREA. The linker must know whichAREA you want to keep.To solve this, use more than one --keep option to specify the names of theAREAs to keep, such as:--keep boot.o(vectors) --keep boot.o(reseth<strong>and</strong>ler) …<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-9ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>NoteUsing assembler files with more than one AREA might give other problemselsewhere, so this is best avoided.L6213EL6214EL6215EL6216EMultiple First section () not allowed.() already exists.Only one FIRST section is allowed.Multiple Last section () not allowed.() already exists.Only one LAST section is allowed.Ambiguous symbol selection for --First/--Last. Symbol hasmore than one definition.Cannot use base/limit symbols for non-contiguous section The exception-h<strong>and</strong>ling index tables generated by the compiler are giventhe section name .<strong>ARM</strong>.exidx. For more information, see ExceptionH<strong>and</strong>ling ABI for the <strong>ARM</strong> Architecture,http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038-/index.html.At link time these tables must be placed in the same execution region <strong>and</strong>be contiguous. If you explicitly place these sections non-contiguouslyusing specific selector patterns in your scatter-loading description file,then this error message is likely to occur. For example:LOAD_ROM 0x00000000{ER1 0x00000000{file1.o (+RO) ; from a C++ source* (+RO)}ER2 0x01000000{file2.o (+RO) ; from a C++ source}ER3 +0{* (+RW, +ZI)}}This might produce the following error if exception-h<strong>and</strong>ling indextables are in both file1.o <strong>and</strong> file2.o <strong>and</strong> cannot be placed into separateregions:3-10 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Error: L6216E: Cannot use base/limit symbols for non-contiguoussection .<strong>ARM</strong>.exidxAlso, the .init_array sections must be placed contiguously within thesame region for their base <strong>and</strong> limit symbols to be accessible.The corrected example is:LOAD_ROM 0x00000000{ER1 0x00000000{file1.o (+RO) ; from a C++ source* (.init_array)* (+RO)}ER2 0x01000000{file2.o (+RO) ; from a C++ source}ER3 +0{* (+RW, +ZI)}}In the corrected example, the base <strong>and</strong> limit symbols are contained in.init_array in a single region.L6217EL6218ESection () contains R_<strong>ARM</strong>_SBREL32 relocation(#:) wrt imported symbol Undefined symbol (referred from ).Some common examples where this can occur are:• Undefined symbol __<strong>ARM</strong>_switch8 or __<strong>ARM</strong>_ll_ functionsThe helper functions are automatically generated into the objectfile by the compiler.NoteAn undefined reference error can, however, still be generated iflinking objects from RVCT 3.1 or earlier where the helperfunctions are in the h_xxx libraries (h indicates that these arecompiler helper libraries, rather than st<strong>and</strong>ard C library code).Re-compile the object or ensure that these libraries can be found bythe linker.• When attempting to refer to a function/entity in C from afunction/entity in C++. This is caused by C++ name mangling, <strong>and</strong>can be avoided by marking C functions extern "C".<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-11ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>• Undefined symbol thunk{v:0,-44} to Foo_i::~Foo_i() (referredfrom Bar_i.o)The symbol thunk{v:0,-44} to Foo_i::~Foo_i() is a wrapperfunction round the regular Foo_i::~Foo_i().Foo_i is a derived class of some other base class, therefore:— it has a base-class vtable for when it is referred to by a pointerto that base class— the base-class vtable has an entry for the thunk— the destructor thunk is output when the actual (derived class)destructor is output.Therefore, to avoid the error, ensure this destructor is defined.L6219EL6220EL6221EL6222E section () attributes {}incompatible with neighboring section ().This error occurs when the default ordering rules used by the linker (ROfollowed by RW followed by ZI) are violated. This typically happenswhen one uses +FIRST or +LAST, for example in a scatter file, attempting toforce RW before RO. region size ( bytes) exceeds limit( bytes).Example:Execution region ROM_EXEC size (4208184 bytes) exceeds limit(4194304 bytes).This can occur where a region has been given an (optional) maximumlength in the scatter-file, but this size of the code/data being placed in thatregion has exceeded the given limit. This error is suppressible with--diag_suppress 6220. region with range[,) overlaps with region with range [,).This represents an incorrect scatter-file. A non-ZI section must have aunique load address <strong>and</strong> in most cases must have a unique executionaddress. This error might be because a load region LR2 with a relativebase address immediately follows a ZI execution region in a load regionLR1. From RVCT v3.1 onwards, the linker no longer assigns space to ZIexecution regions.Partial object cannot have multiple ENTRY sections,() <strong>and</strong> ().3-12 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Where objects are being linked together into a partially-linked object,only one of the sections in the objects can have an entry point.NoteIt is not possible in this case to use the linker option --entry to select oneof the entry points.L6223EL6224EL6225EL6226EL6227EL6228EL6229EL6230EL6231EL6232EL6233EL6234EAmbiguous selectors found for () from Execregions <strong>and</strong> .This occurs if the scatter-file specifies () to be placedin more than one execution region. This can occur accidentally whenusing wildcards (*). The solution is to make the selections more specificin the scatter-file.Could not place () in any Execution region.This occurs if the linker can not match an input section to any of theselectors in your scatterfile. You must correct your scatterfile by addingan appropriate selector.Number is too long.Missing base address for region .Using --reloc with --rw-base without --split is not allowed.Expected '', found ''.Scatter description is empty.Multiple execution regions (,) cannot select.Missing module selector.Missing section selector.Unknown section selector '+'. must follow a single selector.For example, in a scatter file::* (+FIRST, +RO):+FIRST means place this (single) section first. Selectors that can matchmultiple sections (for example, +RO or +ENTRY) are not allowed to be usedwith +FIRST (or +LAST). If used together, the error message is generated.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-13ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6235EL6236EL6237EL6238EMore than one section matches selector - cannot all be FIRST/LAST.No section matches selector - no section to be FIRST/LAST.The scatter-file specifies a section to be +FIRST or +LAST, but that sectiondoes not exist, or has been removed by the linker because it believes it tobe unused. Use the linker option --info unused to reveal which objectsare removed from your project. Example:ROM_LOAD 0x00000000 0x4000{ROM_EXEC 0x00000000{vectors.o (Vect, +First)


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Symbols such as ~PRES8 <strong>and</strong> REQ8 are Build Attributes of the objects:• PRES8 means the object PREServes 8-byte alignment of the stack.• ~PRES8 means the object does NOT preserve 8-byte alignment ofthe stack (~ meaning NOT).• REQ8 means the object REQuires 8-byte alignment of the stack.This link error typically occurs in two cases:• where assembler code (that does not preserve 8-byte stackalignment) calls compiled C/C++ code (that requires 8-byte stackalignment).• where attempting to link legacy objects that were compiled witholder tools with objects compiled with recent tools. Legacy objectsthat do not have these attributes are treated as ~PRES8, even if theydo actually happen to preserve 8-byte alignment.For example:Error: L6238E: foo.o(.text) contains invalid call from '~PRES8'function to 'REQ8' function foobarThis means that there is a function in the object foo.o (in the sectionnamed .text) that does not preserve eight-byte stack alignment, butwhich is trying to call function foobar that requires eight-byte stackalignment.A similar warning that might be encountered is:Warning: L6306W: '~PRES8' section foo.o(.text) should not use theaddress of 'REQ8' function foobarwhere the address of an external symbol is being referred to.There are two possible solutions to work-around this issue:• Rebuild all your objects/libraries using RVCT 4.0.If you have any assembler files, you must check that all instructionspreserve eight-byte stack alignment, <strong>and</strong> if necessary, correct them.For example, change:STMFD sp!, {r0-r3, lr} ; push an odd number of registerstoSTMFD sp!, {r0-r3, r12, lr} ; push even number of registersThe assembler automatically marks the object with the PRES8attribute if all instructions preserve 8-byte stack alignment, so it isno longer necessary to add the PRESERVE8 directive to the top of eachassembler file.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-15ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>• If you have any legacy objects/libraries that cannot be rebuilt,either because you do not have the source code, or because the oldobjects must not be rebuilt (for example, forqualification/certification reasons), then you must inspect thelegacy objects to check whether they preserve eight-byte alignmentor not.Use fromelf -c to disassemble the object code. C/C++ codecompiled with ADS 1.1 or later normally preserves 8-bytealignment, but assembled code does not.If your objects do indeed preserve eight-byte alignment, then thelinker error L6238E can be suppressed with the use of--diag_suppress 6238 on the linker comm<strong>and</strong> line.By using this, you are effectively guaranteeing that these objectsare PRES8.The linker warning L6306W is suppressible with--diag_suppress 6306.See also Linker Error: L6238E: foo.o(.text) contains invalid call from'~PRES8' function to 'REQ8' function foobar,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3556.html .L6239EL6241EL6242ECannot call non-interworking symbol '' in from code in ()Example:Cannot call non-interworking <strong>ARM</strong> symbol 'ArmFunc' in object foo.ofrom THUMB code in bar.o(.text)This problem can be caused by foo.c not being compiled with the option--apcs /interwork, to enable <strong>ARM</strong> code to call Thumb code (<strong>and</strong> Thumbto <strong>ARM</strong>) by linker-generated interworking veneers.() cannot use the address of '' function as the image contains '' functions.When linking with '--strict', the linker reports conditions that mightfail as errors, for example:Error: L6241E: foo.o(.text) cannot use the address of '~IW'function main as the image contains 'IW' functions.IW means interworking, <strong>and</strong> ~IW means non-interworking.Cannot link object as its attributes are incompatiblewith the image attributes.In most cases the error message you receive is similar to:3-16 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Error: L6242E: Cannot link object foo.o as its attributes areincompatible with the image attributes.require four-byte alignment of eight-byte datatypes clashes withrequire eight-byte alignment of eight-byte data types.This occurs when you try to link object files built for the ADS ABI (ADSobjects or compiled with --apcs=/adsabi) using RVCT 3.1 or later.Support for the old ADS ABI has been removed from RVCT 3.1 <strong>and</strong> later.To avoid this error message you must re-compile the offending objectfiles that use the ADS ABI.L6243EL6244EL6245EL6248EL6249EL6250EL6251EL6252EL6253EL6254EL6255ESelector only matches removed unused sections - no section to beFIRST/LAST.All sections matching this selector have been removed from the imagebecause they were unused. For more information, use --info unused. region address () not aligned on a byte boundary.Failed to create requested ZI section ''.() in region '' cannot have relocation to in region ''.Example: L6248E: foo.o(areaname) in ABSOLUTE region 'ER_RO' cannothave address/offset type relocation to symbol in PI region'ER_ZI'.See compiler error number 1359.See also What does "Error: L6248E: cannot have address typerelocation" mean?,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3554.html.Entry point () lies within multiple sections.Object contains illegal definition of special symbol.Object contains illegal reference to special symbol.Invalid argument for --xreffrom/--xrefto comm<strong>and</strong>: ''Invalid SYMDEF address: .Invalid SYMDEF type : .The content of the symdefs file is invalid.Could not delete file : <strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-17ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>An I/O error occurred while trying to delete the specified file. The filewas either read-only, or was not found.L6257EL6258EL6259EL6260EL6261EL6263EL6265E() cannot be assigned to overlaid Executionregion ''.This message indicates a problem with the scatter file.Entry point () lies in an overlaid Execution region.This message indicates a problem with the scatter file.Reserved Word '' cannot be used as a region name.This message indicates a problem with the scatter file.Multiple load regions with the same name () are notallowed.This message indicates a problem with the scatter file.Multiple execution regions with the same name () arenot allowed.This message indicates a problem with the scatter file. address of cannot be addressed from Region Table in where is a string. It can take the value of:Load, Relocatable Load, Execution, or Relocatable Execution.Non-RWPI Section () cannot be assigned to PI Exec region.This might be caused by explicitly specifying the (wrong) <strong>ARM</strong>-suppliedlibrary on the linker comm<strong>and</strong>-line. Remove the explicit specification ofthe <strong>ARM</strong> library or replace the library, for example, c_t.l, with thecorrect library.NoteThe library naming convention changed between RVCT 3.0 <strong>and</strong> 3.1.L6266EL6271ERWPI Section () cannot be assigned to non-PI Exec region.A file compiled with --apcs=/rwpi is placed in an Execution Region thatdoes not have the PI attribute.Two or more mutually exclusive attributes specified for Loadregion 3-18 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This message indicates a problem with the scatter file.L6272EL6273EL6275EL6276EL6277EL6278EL6279EL6280EL6281EL6282EL6283ETwo or more mutually exclusive attributes specified for Executionregion This message indicates a problem with the scatter file.Section () has mutually exclusive attributes(READONLY <strong>and</strong> ZI)This message indicates a problem with the scatter file.COMMON section () does not define (defined in())Given a set of COMMON sections with the same name, the linker selects oneof them to be added to the image <strong>and</strong> discards all others. The selectedCOMMON section must define all the symbols defined by any rejected COMMONsection, otherwise, a symbol which was defined by the rejected sectionnow becomes undefined again. The linker generates an error if theselected copy does not define a symbol that a rejected copy does. Thiserror is normally be caused by a compiler fault. Contact your supplier.Address marked both as (from () via )<strong>and</strong> (from () via ).The image cannot contain contradictory mapping symbols for a givenaddress, because the contents of each word in the image are uniquelytyped as <strong>ARM</strong> ($a) or THUMB ($t) code, DATA ($d), or NUMBER. It isnot possible for a word to be both <strong>ARM</strong> code <strong>and</strong> DATA. This mightindicate a compiler fault. Contact your supplier.Unknown comm<strong>and</strong> ''.Missing expected .Ambiguous selectors found for ('' <strong>and</strong> '').Cannot rename using the given patterns.The RENAME comm<strong>and</strong> in the steering file is invalid.Cannot rename both <strong>and</strong> to .The RENAME comm<strong>and</strong> in the steering file is invalid.Cannot rename to as a global symbol of that nameexists (defined) in ).The RENAME comm<strong>and</strong> in the steering file is invalid.Object contains illegal local reference to symbol.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-19ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>An object cannot contain a reference to a local symbol, since localsymbols are always defined within the object itself.L6285EL6286EL6287EL6291EL6292EL6294ENon-relocatable Load region contains R-Type dynamicrelocations. First R-Type dynamic relocation found in() at offset 0x.This error occurs where there is a PI reference between two separatesegments, if the two segments can be moved apart at runtime. When thelinker sees that the two sections can be moved apart at runtime itgenerates a relocation (an R-Type relocation) that can be resolved if thesections are moved from their statically linked address. However thelinker faults this relocation (giving error L6285E) because PI regionsmust not have relocations with respect to other sections as this invalidatesthe criteria for being position independent.Value() out of range() for relocation#: (, wrt symbol ) in()This can typically occur in h<strong>and</strong>written assembler code, where thelimited number of bits for a field within the instruction opcode is toosmall to refer to a symbol so far away. For example, for an LDR or STRwhere the offset is too large for the instruction (+/-4095 for <strong>ARM</strong> stateLDR/STR instruction). In other cases, please make sure you have thelatest patch installed from: http://www.arm.com/support/downloads.For more information see Value out of range for relocation,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3553.html.Illegal alignment constraint () specified for().An illegal alignment was specified for an ELF object.Base address lies in the previous exec region or before thestart of the load regionThe above error message relates to a problem with the scatter file.Ignoring unknown attribute '' specified for region.The above error message relates to a problem with the scatter file. region spans beyond 32 bit address space (base, size bytes).The above error message relates to a problem with the scatter file.3-20 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6295EL6296EL6300WL6301WL6302WL6304WL6305WL6306WL6307WL6308WSB Relative relocation (in section () at offset0x wrt to symbol ) requires image to be RWPIDefinition of special symbol is illegal as symbol isabsolute.See L6188E.Common section () is larger than its definition().This might indicate a compiler fault. Contact your supplier.Could not find file : The specified file was not found in the default directories.Ignoring multiple SHLNAME entry.There can be only one SHLNAME entry in an edit file. Only the first suchentry is accepted by the linker. All subsequent SHLNAME entries areignored.Duplicate input file ignored.The specified filename occurred more than once in the list of input files.Image does not have an entry point. (Not specified or not set dueto multiple choices.)The entry point for the ELF image was either not specified, or was not setbecause there was more than one section with an entry point linked-in.You must use linker option --entry to specify the single, unique entrysuch as, for example:--entry 0x0or--entry The label form is typical for an embedded system.'' section () should not use the addressof '' function .See L6238E.() contains branch to unaligned destination.Could not find any object matching in library.The name of an object in a library is specified on the link-line, but thelibrary does not contain an object with that name.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-21ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6309WL6310WL6311WL6312WL6313WL6314WL6315WLibrary does not contain any members.A library is specified on the link-line, but the library does not contain anymembers.Unable to find <strong>ARM</strong> libraries.This is most often caused by a missing or invalid value of theenvironment variable RVCT40LIB or by incorrect arguments to --libpath.For example RVCT40LIB must be set when RVCT 4.0 is installed. Ensurethis matches with the tools you are using.Alternatively, try specifying the path explicitly using --libpath switch.The default for a normal Windows installation is C:\ProgramFiles\<strong>ARM</strong>\RVCT\Data\4.0\build\lib. Ensure this path does not include:• \armlib• \cpplib• any trailing slashes (\) at the end. These are added by the linkerautomatically.Use --verbose or --info libraries to display where the linker isattempting to get the libraries from.Undefined symbol (referred from ).See L6218E.Empty region description for region Using as an section selector is obsolete. Please use instead.For example, use of IWV$$Code within the scatterfile is now obsolete <strong>and</strong>can be replaced with Veneer$$Code.No section matches pattern ().Example:No section matches pattern foo.*o(ZI).This can occur for two possible reasons:• The file foo.o is mentioned in your scatter-file, but it is not listedon the linker comm<strong>and</strong>-line. To resolve this, add foo.o to thelink-line.• You are trying to place the ZI data of foo.o using a scatter-file, butfoo.o does not contain any ZI data. To resolve this, remove the +ZIattribute from the foo.o line in your scatter-file.Ignoring multiple Build Attribute symbols in Object .3-22 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>An object can contain at most one absolute BuildAttribute$$... symbol.Only the first such symbol from the object symbol table is accepted bythe linker. All subsequent ones are ignored.L6316WL6317WL6318WL6319WIgnoring multiple Build Attribute symbols in Object forsection An object can contain at most one BuildAttribute$$... symbolapplicable to a given section. Only the first such symbol from the objectsymbol table is accepted by the linker. All subsequent ones are ignored.() should not use the address of ''function as the image contains '' functions.() contains branch to a non-code symbol .This warning means that in the (usually assembler) file, there is a branchto a non-code symbol (in another AREA) in the same file. This is mostlikely a branch to a label or address where there is data, not code.For example:AREA foo, CODEB barAREA bar, DATADCD 0ENDresults in the message:init.o(foo) contains branch to a non-code symbol bar.If the destination has no name:BL 0x200 ; Branch with link to 0x200 bytes ahead of PCthe following message is displayed:bootsys.o(BOOTSYS_IVT) contains branch to a non-code symbol.This warning can also appear when linking objects generated by GCC.GCC uses linker relocations for references internal to each object. Thetargets of these relocations might not have appropriate mapping symbolsthat allow the linker to determine whether the target is code or data, so awarning is generated. By contrast, armcc resolves all such references atcompile-time.Ignoring comm<strong>and</strong>. Cannot find section ().For example, when building a Linux application, you might have:--keep *(.init_array)<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-23ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>on the linker comm<strong>and</strong>-line in your makefile, but this section might notbe present when building with no C++, in which case this warning isreported:Ignoring --keep comm<strong>and</strong>. Cannot find section *(.init_array)You can often ignore this warning, or suppress it with--diag_suppress 6319L6320WL6322WL6323WL6324WL6325WL6326WL6329WL6330WIgnoring comm<strong>and</strong>. Cannot find argument ''. cyclic references found while sorting sections.Multiple variants of exist. Using the variant toresolve relocation #: in()Ignoring attribute specified for Load region .This attribute is applicable to execution regions only. If specified for aLoad region, the linker ignores it.Ignoring attribute for region which uses the+offset form of base address.This attribute is not applicable to regions using the +offset form of baseaddress. If specified for a region, which uses the +offset form, the linkerignores it.A region, which uses the +offset form of base address, inherits thePI/RELOC/OVERLAY attributes from the previous region in the description, orthe parent load region if it is the first execution region in the load region.Ignoring ZEROPAD attribute for non-root execution region .ZEROPAD only applies to root execution regions. A root region is a regionwhose execution address is the same as its load address, <strong>and</strong> so does notrequire moving or copying at run-time.Pattern () only matches removed unused sections.All sections matching this pattern have been removed from the imagebecause they were unused. For more information, use --info unused.See the section Unused section elimination in the RVCT Linker <strong>and</strong>Utilities Guide.Undefined symbol (referred from ). Unusedsection has been removed.See Placing root region library objects,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3946.html.3-24 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6331WL6332WL6334WL6335WL6337WL6339WL6340WL6348WL6349WNo eligible global symbol matches pattern .Undefined symbol (referred from ). Resolved to symbol.Illegal alignment constraint () for ()ignored. Using 4 byte alignment.<strong>ARM</strong> interworking code in () may contain invalidtailcalls to <strong>ARM</strong> non-interworking code.The compiler is able to perform tailcall optimization for improved codesize <strong>and</strong> performance. However, there is a problematic sequence forArchitecture 4T code where a Thumb IW function calls (by a veneer) an<strong>ARM</strong> IW function, which tailcalls an <strong>ARM</strong> not-IW function. The returnfrom the <strong>ARM</strong> not-IW function can pop the return address off the stackinto the PC instead of using the correct BX instruction. The linker canwarn of this situation <strong>and</strong> report the above warning.Thumb IW tailcalls to Thumb not-IW do not occur because Thumbtailcalls with B are so short ranged that they can only be generated tofunctions in the same ELF section which must also be Thumb.The warning is pessimistic in that an object might contain invalidtailcalls, but the linker cannot be sure because it only looks at theattributes of the objects, not at the contents of their sections.To avoid the warning, either recompile your entire code base, includingany user libraries, with --apcs /interwork, or manually inspect the <strong>ARM</strong>IW function to check for tailcalls (that is, where function calls are madeusing an ordinary branch B instruction), to check whether this is a realproblem. This warning can be suppressed with --diag_suppress L6335W.Common code sections () <strong>and</strong> () have incompatiblefloating-point linkageIgnoring RELOC attribute for execution region .Execution regions cannot explicitly be given RELOC attribute. They canonly gain this attribute by inheriting from the parent load region or theprevious execution region if using the +offset form of addressing.options first <strong>and</strong> last are ignored for link type of The --first <strong>and</strong> --last options are meaningless when creating apartially-linked objectMarking group section .Following relocation from to .<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-25ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6350WL6351WL6352WL6353WL6354WL6355WL6356WL6357WL6359WL6360WL6361WL6362WL6366EL6367EL6368EL6369EL6370EL6371EL6372EL6373EL6384EFollowing relocation from vtable to .Following non-RTTI relocation from vtable to.Marking . Call depth = .Following link-order dependency from to .Weak to strong: ().Weak section () refers to strong section().Entry section: .Kept section: .No-remove: .Begin unused section elimination.Running VFE again, to produce better error messages.Following virtual function ref from vtable to (offset ).Object attributes are not compatible with theprovided cpu <strong>and</strong> fpu attributesSection from object attributes are notcompatible with the provided cpu <strong>and</strong> fpu attributesSymbol from Section from object attributes are not compatible with the provided cpu <strong>and</strong> fpuattributesSymbol from object are not compatible withthe provided cpu <strong>and</strong> fpu Attributescpu is not compatible with fpu Adding attributes from cpu <strong>and</strong> fpu.Image needs at least one load region.libattrs.map file not found in System Library directory .Library selection may be impaired.No Load Execution Region of name seen yet at line .3-26 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This might be because you have used the current base address in a limitcalculation in a scatter-loading file. For example:ER_foo 0 ImageBase(ER_foo)L6385WL6386EL6387EL6388EL6389EL6390EL6404WL6405WL6406WL6407WAddition overflow on line Exec Region Expressions can only be used in base addresscalculations on line Load Region Expressions can only be used in ScatterAssertexpressions on line ScatterAssert expression failed on line Load Region on line not yet complete, cannot useoperations that depend on length of regionConditional operator (expr) ? (expr) : (expr) on line hasno : (expr).FILL value preferred to combination of EMPTY, ZEROPAD <strong>and</strong> PADVALUEfor Execution Region .No .ANY selector matches Section ().No space in execution regions with .ANY selector matching Section().This occurs if there is not sufficient space in the scatterfile regionscontaining .ANY to place the section listed. You must modify yourscatterfile to ensure there is sufficient space for the section.Sections of aggregate size 0x bytes could not fit into .ANYselector(s).This occurs with scatter-files when .ANY(+ZI) is placed in an executionregion which is too small for the amount of ZI data:ROM_LOAD 0x8000{ROM_EXEC 0x8000{.ANY(+RO,+RW)}RAM +0 0x{...}


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6408WL6409WL6410WL6411WL6412WL6413WL6414EL6415EL6416EL6417WL6418WL6419WL6420EL6422UL6422UL6423EOutput is --fpic yet section from has no FPICattribute.Output is --fpic yet object has no FPIC attribute.Symbol with non STV_DEFAULT visibility should beresolved statically, cannot use definition in .No compatible library exists with a definition of startup symbol.Disabling merging for section from object , nonR_<strong>ARM</strong>_ABS32 relocation from section from object Disabling merging for section from object , Sectioncontains misaligned string(s).--ropi used without --rwpi or --rw-base.Generic CPU 7 is compatible with multiple libraries. Use the --cpuoption to select a specific library.Relocation at : in Section from cannot be veneered as it has an offset from itstarget.Relocation #: in () iswith respect to a reserved tagging symbol(#).Tagging symbol from section in object is not recognized.Undefined symbol (referred from ) imported.Ignoring section # '' in as it is notof a recognized type.PLT generation requires an architecture with <strong>ARM</strong> instructionsupport.For the linker to generate PLT, you must be using a target that supports the<strong>ARM</strong> instruction set. Therefore the linker can not generate PLT for aCortex-M3 target.PLT generation requires an architecture with <strong>ARM</strong> instructionsupport.Within the same collection, section cannot havedifferent sort attributes.3-28 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6424EL6425EL6426EL6427EL6429UL6431WL6432WL6433WL6434WL6435WL6436WL6437WL6438EL6439WL6440EL6441UL6442UWithin the same collection, section <strong>and</strong> section cannot be separated into different execution regions.Within the same collection, section cannot have theirsection names with different length.Within the same collection, section cannot have its nameduplicated.Cannot rename to as it has already been renamed to).Attempt to set maximum number of open files to failed witherror code .An attempt to increase the number of file h<strong>and</strong>les armlink can keep openat any one time has failed.Ignoring incompatible enum size attribute on Symbol fromSection from object .Ignoring incompatible enum size attribute on Section from object .Ignoring incompatible enum size attribute on object .Ignoring incompatible wchar_t size attribute on Symbol from Section from object .Ignoring incompatible wchar_t size attribute on Section from object .Ignoring incompatible wchar_t size attribute on object .Branch Relocation : in section fromobject refers to Untyped symbol from object, target state unknown.__AT section from object with base address0x must be at least 4 byte aligned.Multiply defined Global Symbol from section fromobject rejected in favour of definition from fromobject .Unexpected failure in link-time code generationSystem call to get maximum number of open files failed .Linker requires a minimum of open files, current systemlimit is files.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-29ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6443WL6444IL6445IL6447EL6448WL6449EL6450UL6451EL6452EL6453EL6454EL6455EL6459UL6462EL6463UL6464EL6467WData Compression for region turned off. Region containsreference to symbol which depends on a compressedaddress.The linker requires the contents of a region to be fixed before it can becompressed <strong>and</strong> cannot modify it after it has been compressed. Thereforea compressible region cannot refer to a memory location that depends onthe compression process.symbol visibility : set to .symbol visibility : merged to from existing <strong>and</strong> new .SHT_PREINIT_ARRAY sections are not permitted in shared objects.While processing : While processing : Cannot find library .Object built permitting Thumb is forbidden in an <strong>ARM</strong>-onlylink.Section from object built permitting Thumb isforbidden in an <strong>ARM</strong>-only link.Symbol from Section from object builtpermitting Thumb is forbidden in an <strong>ARM</strong>-only link.Symbol from object built permitting Thumb isforbidden in an <strong>ARM</strong>-only link.Symbol has deprecated <strong>ARM</strong>/Thumb Synonym definitions(by <strong>and</strong> ).Could not create temporary file.<strong>Reference</strong> to from a shared library only matches a definitionwith Hidden or Protected Visibility in Object .Could not find valid target architecture based on objectattributes. Suggest using --cpu option select a specific cpu.Only one of --dynamic_debug, --emit-relocs <strong>and</strong>--emit-debug-overlay-relocs can be selected.Library reports remark: 3-30 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6468UL6469EL6470EL6471EL6602WL6616EL6629EL6630EL6631EL6632WL6634EL6635EL6636EL6637WOnly --pltgot=direct or --pltgot=none supported for--base_platform with multiple Load Regions containing code.--base_platform does not support RELOC Load Regions containing nonRELOC Execution Regions. Please use +0 for the Base Address ofExecution Region in Load Region .PLT section cannot be moved outside Load Region.Branch Relocation : in section fromobject refers to <strong>ARM</strong> Absolute symbol fromobject , Suppress error to treat as a Thumb address.Unmatched literal pool end symbol ignored in file.Cannot increase size of RegionTable from Unmatched parentheses expecting ) but found atposition on line This message indicates a problem with pre-processing the scatter file.Invalid token start expected number or ( but found atposition on line This message indicates a problem with pre-processing the scatter file.Division by zero on line This message indicates a problem with pre-processing the scatter file.Subtraction underflow on line This message indicates a problem with pre-processing the scatter file.Pre-processor comm<strong>and</strong> in ''too long, maximum length ofThis message indicates a problem with pre-processing the scatter file.Could not open intermediate file '' produced bypre-processor: This message indicates a problem with pre-processing the scatter file.Pre-processor step failed for ''This message indicates a problem with pre-processing the scatter file.No input objects specified. At least one input object orlibrary(object) must be specified.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-31ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>At least one input object or library(object) must be specified.L6638UL6640EL6642WL6643EL6644EL6645EL6646WObject has a link order dependency cycle, check sectionswith SHF_LINK_ORDERPDTTable section not least static data address, least static datasection is Systems that implement shared libraries with RWPI use a process datatable (PDT). It is created at static link time by the linker <strong>and</strong> must beplaced first in the data area of the image.This message indicates that the scatterfile does not permit placing thePDT Table first in the data area of the image.To avoid the message, adjust your scatterfile so that the PDT Table isplaced correctly. This message can also be trigger if you accidentallybuild object files with --apcs=/rwpi.Unused virtual function elimination might not work correctly,because has not been compiled with --vfeThe virtual function elimination information in section refers to the wrong section.The above message might indicate a compiler fault. Contact yoursupplier.Unexpectedly reached the end of the buffer when reading thevirtual function elimination information in section().The above message might indicate a compiler fault. Contact yoursupplier.The virtual function elimination information in section() is incorrect: there should be arelocation at offset .The above message might indicate a compiler fault. Contact yoursupplier.The virtual function elimination information in section() contains garbage from offset onwards.The above message might indicate a compiler fault. Contact yoursupplier.3-32 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6647EL6649EL6650EL6651EL6652EL6654EL6656EL6664WL6665WThe virtual function elimination information for section (object ) incorrectlyindicates that section (object), offset is a relocation (to a virtualfunction or RTTI), but there is no relocation at that offset.The above message might indicate a compiler fault. Contact yoursupplier.EMPTY region must have a maximum size.Object Group section contains invalidsymbol index .Section from object has SHF_GROUP flag but isnot member of any group.Cannot reverse Byte Order of Data Sections, input objects are requested data byte order is .Rejected Local symbol is referred to from a non groupsection in object If either L6651E, L6652E, or L6654E are reported, this might indicate acompiler fault. Contact your supplier.Internal error: the vfe section list contains a non-vfe sectioncalled ().This might indicate a compiler fault. Contact your supplier.Relocation #: in () iswrt a symbol(# before last Map Symbol #).Neither Lib$$Request$$armlib Lib$$Request$$cpplib defined, notsearching <strong>ARM</strong> libraries.This reproduces the warning:AREA Block, CODE, READONLYEXPORT func1;IMPORT || Lib$$Request$$armlib||IMPORT printffunc1LDR r0,=stringBL printfBX lrAREA BlockData, DATAstring DCB "mystring"ENDThe linker has not been told to look in the libraries <strong>and</strong> hence cannot findthe symbol printf.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-33ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This also causes an error:L6218E: Undefined symbol printf (referred from L6665W.o).To fix both the error <strong>and</strong> the warning uncomment the line:IMPORT || Lib$$Request$$armlib||L6679WL6682EL6683EL6684EL6685EL6688UL6689UL6690UL6703WL6707EL6708EL6709EL6713WL6714WL6720UL6721EData in output ELF section # '' was not suitable forcompression ( bytes to bytes).Merge Section from object is a code sectionMerge Section from object has an element sizeof zeroSection from object has SHF_STRINGS flag butnot SHF_MERGE flagSection from object has a branch reloc to a SHF_MERGE sectionSection from object has a relocation: that references a negative elementSection from object has a relocation: to the middle of a multibyte characterMerge Section from object has no symbolsSection implicitly marked as non-compressible.Padding value not specified with PADVALUE attribute for executionregion .Could not process debug frame from from object.Could not associate fde from from object .Function at offset in Section in Object has no symbol.Exception index table section .<strong>ARM</strong>.exidx from object hasno data.Exception table from object present in image,--noexceptions specified.Section # '' in is not recognized <strong>and</strong>cannot be processed generically.3-34 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6725WL6728UL6730WL6731WL6733WL6738EUnused virtual function elimination might not work correctly,because there are dynamic relocations.Link order dependency on invalid section number from sectionnumber .ABI type differs from legacy behaviour fortarget symbol of relocation : fromsection from object .A change in the linker behaviour gives warnings about strict compliancewith the ABI. Example:AREA foo, CODE, READONLYCODE32ENTRYfunc procnopendpdcd fookeependThe warning is related to how the assembler marks sections forinterworking. Previously, the section symbol foo would be marked as<strong>ARM</strong> or Thumb code in the ELF file. The dcd foo above would thereforealso be marked as subject to interworking.However, the ABI specifies that only functions are be subject tointerworking <strong>and</strong> marked as <strong>ARM</strong> or Thumb. The linker therefore warnsthat it is expecting dcd , which does not match the symbol type(<strong>ARM</strong>, or THUMB if you use CODE16) of the area section.The simplest solution is to move the data into a separate data area in theassembly source file.Alternatively, you can use --diag_suppress 6730 to suppress this warning.Unused virtual function elimination might not work correctly,because the section referred to from does not exist.() contains offset relocation from to, load regions must be rigidly relative._GLOBAL_OFFSET_TABLE_ is undefined. Object section'' relocation #: makes aGOT-relative relocation to symbol .Some GNU produced images can refer to the symbol named_GLOBAL_OFFSET_TABLE_. If there are no GOT Slot generating relocations<strong>and</strong> the linker is unable to pick a suitable address for the GOT base thelinker issues this error message.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-35ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6739EL6740WL6741EL6742EL6743EL6744EL6745EL6747WL6748UL6751EL6753EL6761EL6762EL6763WL6764EL6765WVersion '' has a dependency to undefined version''.Symbol '' versioned '' defined in ''but not found in any input object.Versioned symbol binding should be 'local:' or 'global:'.Symbol '' defined by ''. Cannot not match todefault version symbol ''Internal consistency check: Relocation from from index : to a symbol that hasan alternate defInternal consistency check: Relocation from from index : to undefined symbol Target CPU does not Support <strong>ARM</strong>, section fromobject contains <strong>ARM</strong> codeRaising target architecture from to .If the linker detects objects that specify <strong>ARM</strong>v3 (obsolete in RVCT 2.2<strong>and</strong> later), it upgrades these to <strong>ARM</strong>v4 to be usable with <strong>ARM</strong> libraries.Missing dynamic array, symbol table or string table in file.No such sorting algorithm available.CallTree sorting needs Entry Point to lie within a CallTree SortER.Cannot choose between from objects <strong>and</strong>Cannot build '' PLT entries when building a .'' cannot be used when building a shared object or DLL.Switching it offCannot create a PLT entry for target architecture 4T that callsThumb symbol Shared object entry points must be <strong>ARM</strong>-state when linkingarchitecture 4T objects.3-36 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This can occur when linking with GNU C libraries. The GNU startupcode crt1.o does not have any build attributes for the entry point, so thelinker cannot determine which execution state (<strong>ARM</strong> or Thumb) the coderuns in. Because the GNU C library startup code is <strong>ARM</strong> code, you cansafely ignore this warning, or suppress it with --diag_suppress 6765.L6766WL6769EL6770EL6771WPLT entries for architecture 4T do not support incrementallinking.Object section '' relocation#: tries to relocate w.r.t non-existantGOTSLOT for symbol .The size <strong>and</strong> content of the dynamic array changed too late to befixed.Object section '' contains one or moreaddress-type relocations in RO data. Making section RW to bedynamically relocated at run-time.L6772W IMPORT comm<strong>and</strong> ignored when building --sysv .L6774WL6775WL6776WL6777WL6778WL6780WL6781EL6782WL6783EThe section '' in '' has debug frame entries ofa bad length.The section '' in '' has FDEs which use CIEswhich are not in this section.The debug frame section '' in '' does notdescribe an executable section.The debug frame section '' in '' has relocations (expected )The debug frame section '' in '' uses 64-bitDWARF. visibility removed from symbol '' through.Value() Cannot be represented by partition number forrelocation #: (, wrt symbol) in ()Relocation #: '' in may notaccess data correctly alongside PLT entriesMapping symbol # '' in section # ''from defined at the end of, or beyond, the section size(symbol offset=0x, section size=0x)<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-37ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This indicates that the address for a section points to a location at the endof or outside of the ELF section. This can be caused by an empty inlineddata section <strong>and</strong> indicates there might be a problem with the object file.You can use --diag_warning 6783 to suppress this error.L6784EL6785UL6786WL6787UL6788ESymbol # '' in section # '' from with value 0x has size 0x that extends tooutside the section.The linker produces a downgradeable error (in RVCT 2.2 <strong>and</strong> earlier)whenever it sees a symbol with a size that extends outside of itscontaining section. Some earlier versions of RVCT can produce this errorin the C-libraries. This message is only a warning by default in RVCT2.2sp1 onwards. Use --diag_warning 6784 to suppress this error in earlierversions.Symbol '' marked for import from '' alreadydefined by ''Mapping symbol # '' in section # ''from defined at unaligned offset=0xRegion table h<strong>and</strong>ler '' needed by entry for was not found.Scatter-loading of execution region will cause thecontents of execution region to be corrupted atrun-time.This occurs when scatter-loading takes place <strong>and</strong> an execution region isput in a position where is overwrites partially or wholly anotherexecution region (which can be itself or another region).For example, this works:LOAD_ROM 0x0000 0x4000{EXEC1 0x0000 0x4000{* (+RO)}EXEC2 0x4000 0x4000{* (+RW,+ZI)}}This generates the error:LOAD_ROM 0x0000 0x4000{EXEC1 0x4000 0x40003-38 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>{* (+RW,+ZI)}EXEC2 0x0000 0x4000{* (+RO)}}<strong>and</strong> reportsError: L6788E: Scatter-loading of execution region EXEC2 willcause the contents of execution region EXEC2 to be corrupted atrun-time.See the section Using Scatter-loading Description Files in the RVCTLinker <strong>and</strong> Utilities Guide for more information on scatter-loading.L6789UL6790EL6791EL6792EL6793EL6794EL6795EL6796EL6797EL6798EL6799ELibrary member : Endianness mismatch.May not IMPORT weak reference '' through GOT-generatingrelocation #: in ()Unknown personality routine at 0x in section from .Descriptor at offset 0x in section from object has unknown type.Expecting L<strong>and</strong>ing pad reference at offset 0x in cleanupdescriptor in section from object .Expecting L<strong>and</strong>ing pad reference at offset 0x in catchdescriptor in section from object .Expecting RTTI reference at offset 0x in catch descriptorin section from object .Descriptor at offset 0x in section from object overruns end of section.Data at Offset 0x in exception table section from object overruns end of sectionExpecting RTTI reference at offset 0x in FunctionSpecification descriptor in section from object.Expecting L<strong>and</strong>ing Pad reference at offset 0x in FunctionSpecification descriptor in section from object.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-39ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A l<strong>and</strong>ing pad is code that cleans up after an exception has been raised.The exception table format was slightly different in RVCT 2.1. If a laterlinker detects old-format exception tables then it automatically convertsthem to the new format. This message does not appear unless there was afault in the compiler, in which case contact your supplier.L6800WL6801EL6802EL6803WL6804WCannot convert generic model personality routine at 0x insection from object .A personality routine is used to unwind the exception h<strong>and</strong>ling stack. Theexception table format was slightly different in RVCT 2.1. If a later linkerdetects old-format exception tables then it automatically converts them tothe new format. This message indicates a fault in the compiler. Contactyour supplier.() containing code cannot use theaddress of '~IW' function .The linker can diagnose where a non-interworking (~IW) function has itsaddress taken by code in the other state. This was added in RVCT 2.2.This error is disabled by default, but can be enabled by linking with--strict. The error can be downgraded to just a warning with--diag_warning 6801 <strong>and</strong> subsequently suppressed completely if requiredwith --diag_suppress 6801Where code, for example, in a.c uses the address of a non-interworkingfunction in t.c:armcc -c a.carmcc --thumb -c t.carmlink t.o a.o --strictreports:Error: L6801E: a.o(.text) containing <strong>ARM</strong> code cannot use theaddress of '~IW' Thumb function foo.Thumb Branch Relocation : in section from object refers to non-Thumb symbol insection from object .Thumb Branch Relocation : in section from object refers to which is in differentsection from object , branch is unlikelyto reach target.H<strong>and</strong>ling symbols of type STT_LOPROC as STT_TFUNC, please upgradeyour compiler to a more ABI compatible release3-40 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6805EL6806WL6807EL6809WL6810EL6812UL6813UL6898EL6899EL6900EL6901EL6902EL6903EL6904EL6905EBranch Relocation : in section fromobject refers to Untyped Absolute symbol fromobject , target state unknownBranch Relocation : in section fromobject to Untyped symbol which is indifferent section from object , ABIrequires external code symbols to be of type STT_FUNC.<strong>ARM</strong> Branch Relocation : in section fromobject refers to Untyped symbol in samesection. State change is requiredRelocation : in section from object is of deprecated type , please see <strong>ARM</strong>ELF for ABIcompliant alternativeRelocation : in section from object is of obsolete type Relocation errors <strong>and</strong> warnings are most likely to occur if you are linkingobject files built with previous versions of the <strong>ARM</strong> tools.To show relocation errors <strong>and</strong> warnings use the --strict_relocationsswitch. This option enables you to ensure ABI compliance of objects. Itis off by default, <strong>and</strong> deprecated <strong>and</strong> obsolete relocations are h<strong>and</strong>ledsilently by the linker.Unknown symbol action type, please contact your supplier.Could not find Symbol to rename to .<strong>ARM</strong> Branch Relocation : in section fromobject refers to non-<strong>ARM</strong>/Thumb symbol insection from object .Existing SYMDEFS file ' 'is read-only.Expected parentheses to specify priority between AND <strong>and</strong> ORoperators.Expected symbol name.Expected a string.Cannot execute '' in '' clause of script.Destination symbol of rename operation clashes with anotherrename.Source symbol of rename operation clashes with another rename.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-41ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6906EL6907EL6910EL6912WL6913EL6914WL6915E(This is the rename operation which it clashes with.)Expected an expression.Expected a phase name.Symbol at index in symbol table of Section of object , has ABI symbol type whichis inconsistent with mapping symbol type .Expected execution region name.option ignored when using --.Library reports error: The message is typically one of the following:• Error: L6915E: Library reports error: scatter-load filedeclares no heap or stack regions <strong>and</strong>__user_initial_stackheap is not defined.orError: L6915E: Library reports error: The semihosting__user_initial_stackheap cannot reliably set up a usable heapregion if scatter loading is in useIt is most likely that you have not re-implemented__user_initial_stackheap() or you have not defined <strong>ARM</strong>_LIB_STACKor <strong>ARM</strong>_LIB_HEAP regions in the respective scatter-loading file.See RVDS FAQ Re-implement __user_initial_stackheap() whenusing Scatterloading,http://infocenter.arm.com/help/topic/com.arm.doc.faqs/ka3560.html.See the section Placing the stack <strong>and</strong> heap in the RVCT DeveloperGuide <strong>and</strong> __user_initial_stackheap() in the RVCT LibrariesGuide.• Error: L6915E: Library reports error: __use_no_semihostingwas requested but was referenced.Where represents __user_initial_stackheap,_sys_exit, _sys_open, _sys_tmpnam, _ttywrch, system, remove,rename, _sys_comm<strong>and</strong>_string, time, or clockThis error can appear when retargeting semihosting-usingfunctions, in order to avoid any SVC/BKPT instructions beinglinked-in from the C libraries.Ensure that no semihosting-using functions are linked in from theC library by using:#pragma import(__use_no_semihosting)3-42 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>See the sections Avoiding C library semihosting in the RVCTDeveloper Guide <strong>and</strong> Building an application for a nonsemihostedenvironment in the RVCT Libraries Guide.If there are still semihosting-using functions being linked in, thelinker reports this error.To resolve this, you must provide your own implementations ofthese C library functions.The emb_sw_dev directory contains examples of how tore-implement some of the more common semihosting-usingfunctions. See the file retarget.c.See the RVCT Libraries Guide for more information on usingsemihosting-using C library functions.NoteThe linker does not report any semihosting-using functions such as,for example, __semihost(), in your own application code.To identify which semihosting-using functions are still beinglinked-in from the C libraries:— Link with armlink --verbose --list err.txt— Search err.txt for occurrences of __I_use_semihostingFor example:…Loading member sys_exit.o from c_4.l.reference : __I_use_semihostingdefinition: _sys_exit…This shows that the semihosting-using function _sys_exit islinked-in from the C library. To prevent this, you mustprovide your own implementation of this function.• Error: L6915E: Library reports error:__use_no_heap wasrequested, but was referencedIf represents malloc, free, __heapstats, or __heapvalid,the use of __use_no_heap conflicts with these functions.• Error: L6915E: Library reports error:__use_no_heap_region wasrequested, but was referencedIf represents malloc, free, __heapstats, __heapvalid, or__argv_alloc, the use of __use_no_heap_region conflicts with thesefunctions.L6916ER_<strong>ARM</strong>_CALL relocation for conditional BL at 0x in Section from object .<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-43ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6917EL6918WL6922EL6923EL6924EL6925EL6926EL6927EL6932WL6935EL6936EL6937EL6939EL6940EL6941WL6942EL6966EL6967EL6968ER_<strong>ARM</strong>_JUMP24 relocation for BLX at 0x in Section from object .Execution region placed at 0x needs padding toensure alignment of section from object.Section () has mutually exclusive attributes(READONLY <strong>and</strong> TLS)TLS Relocation at : in Section from targets non STT_TLS symbol from section from .Non-TLS Relocation at : in Section from targets STT_TLS symbol fromsection from .Ignoring attribute for region . MemAccess supporthas been removed.Incorrect relocation type at offset 0x instructionencoding 0x in Section from object .Incorrect relocation type at offset 0x instructionencoding 0x in Section from object .Library reports warning: Debug Group contents are not identical, with signature sym from objects () <strong>and</strong> ()Multiple RESOLVE clauses in library script for symbol ''.Multiple definitions of library script function ''.Missing alignment for region .Alignment for region must be at least 4 <strong>and</strong>a power of 2 or MAX.chmod system call failed for file error Execution Region contains multiple , sections:Alignment for region cannot be negative.Entry point () points to a THUMB instruction but is not avalid THUMB code pointer.Could not parse Linux Kernel version \"\".3-44 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>L6969WL6971EL6972EL6973EL6974EL6975EL6976EL6977EL6978WL6979EL6980WL6981EL6982EL6983EL6984EL6985EChanging AT Section type from RW to RO in .Section from object with type incompatiblewith Section from object with type in er .Section with required base 0x has been assignedbase address 0x.Error placing AT section at address 0x in overlay ER.AT section does not have a base address.Section from object cannot have a required base<strong>and</strong> SHF_MERGE.Section from object cannot have a required base<strong>and</strong> SHF_LINK_ORDER.Section from object cannot be part of acontiguous block of sectionsSection from object has a user defined sectiontype <strong>and</strong> a required base address.Section from object with required base addresscannot be placed in Position Independent ER .FIRST <strong>and</strong> LAST ignored for Section from object with required base address.__AT incompatible with BPABI <strong>and</strong> SystemV Image typesAT section from with base 0x limit0x overlaps address range with AT section from with base 0x limit 0x.AT section from with required base address0x out of range for ER with base 0x <strong>and</strong>limit 0x.AT section from has required base address0x which is not aligned to section alignment .Unable to automatically place AT section from with required base address 0x. Please manually place in thescatter file using the --no_autoat option.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 3-45ID121310Non-Confidential


Linker <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>3-46 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Chapter 4ELF Format Converter <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This chapter contains the error <strong>and</strong> warning messages for the ELF format converter(fromelf). It contains the following section:• List of the fromelf error <strong>and</strong> warning messages on page 4-2.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 4-1ID121310Non-Confidential


ELF Format Converter <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>4.1 List of the fromelf error <strong>and</strong> warning messagesQ0105EQ0106EQ0107EQ0108EQ0119EQ0120EQ0122EQ0128EQ0129EQ0130EQ0131EQ0132EQ0133EQ0134EQ0135EQ0136EQ0137EBase <strong>and</strong>/or size too big for this format, max = 0x.Out of Memory.Failed writing output file.Could not create output file '': No output file specified.No input file specified.Could not open file '': If is Invalid argument, this might be because you have invalidcharacters on the comm<strong>and</strong>-line. For example, on Windows you mighthave used the escape character \ when specifying a filter with an archivefile:fromelf --elf --strip=all t.a\(test*.o\) -o filtered/On Windows, use:fromelf --elf --strip=all t.a(test*.o) -o filtered/File i/o failure.This error can occur if you specify a directory for the --outputcomm<strong>and</strong>-line option, but you did not terminate the directory with a pathseparator. For example, --output=my_elf_files/.Not a 32 bit ELF file.Not a 64 bit ELF file.Invalid ELF identification number found.This error is given if you attempt to use fromelf on a file which is not inELF format, or which is corrupted. In RVCT, object (.o) files <strong>and</strong>executable (.axf) files are in ELF format.Invalid ELF section index found .Invalid ELF segment index found .Invalid ELF string table index found .Invalid ELF section entry size found.ELF Header contains invalid file type.ELF Header contains invalid machine name.4-2 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


ELF Format Converter <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>Q0138EQ0147EQ0171EQ0172EQ0186EQ0425WQ0426EQ0427EQ0433EQ0440EQ0447WQ0448WQ0449WELF Header contains invalid version number.See Q0131E.Failed to create Directory : If is File exists, this might be because you have specified adirectory that has the same name as a file that already exists. Forexample, if a file called filtered already exists, then the followingcomm<strong>and</strong> produces this error:fromelf --elf --strip=all t.a(test*.o) -o filtered/The path separator character / informs fromelf that filtered is adirectory.Invalid st_name index into string table .See Q0131E.Invalid index into symbol table .See Q0131E.This option requires debugging information to be presentThe --fieldoffsets option requires the image to be built with dwarfdebug tables.Incorrectly formed virtual function elimination header in fileThis might indicate a compiler fault, please contact your supplier.Error reading vtable information from fileThis might indicate a compiler fault, please contact your supplier.Error getting string for symbol in a vtableThis might indicate a compiler fault, please contact your supplier.Diagnostic style not recognisedNo relocation sections for Unknown Diagnostic number ()Read past the end of the compressed data while decompressingsection '' # in This might indicate an internal fault. Contact your supplier.Write past the end of the uncompressed data buffer of size while decompressing section '' # in<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 4-3ID121310Non-Confidential


ELF Format Converter <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This might indicate an internal fault. Contact your supplier.Q0450WQ0451WQ0452WQ0453WQ0454ESection '' # in file uses a mixture oflegacy <strong>and</strong> current ABI relocation types.Option '--strip symbols' used without '--strip debug' on an ELFfile that has debug information.Option '--strip filesymbols' used without '--strip debug' on anELF file that has debug information.Stripping path names from '' <strong>and</strong> '' produces aduplicate file name ''.The ELF file '' is corrupt4-4 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Chapter 5Librarian <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This chapter contains the error <strong>and</strong> warning messages for the <strong>ARM</strong> Librarian (armar).It contains the following section:• List of the armar error <strong>and</strong> warning messages on page 5-2.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 5-1ID121310Non-Confidential


Librarian <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>5.1 List of the armar error <strong>and</strong> warning messagesL6800UL6825EL6826EL6827EL6828EL6829EL6830EL6831EL6832EL6833EL6835EL6836EL6838EL6839EL6840EL6841EL6842EL6843EL6874WOut of memoryReading archive '' : '' not in archive format'': malformed symbol table'': malformed string table'': malformed archive (at offset )Writing archive '' : '' not present in archive ''Archive '' not found : File '' does not existReading file '' : '' already exists, so will not be extractedNo archive specifiedOne of the actions -[] must be specifiedOnly one action option may be specifiedPosition '' not foundFilename '' too long for file systemWriting file '' : Minor variants of archive member '' include no basevariantThere can be minor variants of the same function within a library.Compile each variant with different build options in separate(individually named) object files. If these objects are combined in alibrary, at link-time the linker selects the most appropriate version of thefunction according to the callers build attributes. Examples of minorvariants are versions compiled for different architectures orROPI/non-ROPI.Major variants must be placed in separate libraries. Examples areversions compiled for different instruction sets (<strong>ARM</strong>/Thumb) orendianness.5-2 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Librarian <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>A base variant is a library member that contains all the attributes incommon to all the variants. armar issues a warning because it is usuallya mistake to define a set of variants without a base variant. The linkermight not be able to find a default acceptable member in the library.For example, the warning:Warning: L6874W: Minor variants of archive member 'abc.o' includeno base variantmight be caused because abc.o (probably unintentionally) contains afunction which is also defined in another archived object that was builtwith different options.Use armar --zs variant to view the symbol table of an archive. Variantsymbols are appended with their build attributes. For example, if anarchive contained an architecture v3 function func <strong>and</strong> an architecture v4variant, the symbols table might show:func from v3_func.o at offset 120 func$$BuildAttributes$$<strong>ARM</strong>_ISAv4from v4_func.o at offset 1104Assuming that you intended to have different variants of the function,you must add an object containing a base variant to eliminate thewarning. Alternatively, you could safely ignore the warning, but atlink-time there is a risk that the linker might not be able to find a suitabledefault member.L6875WAdding non-ELF object '' to archive ''<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 5-3ID121310Non-Confidential


Librarian <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>5-4 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310


Chapter 6Via File H<strong>and</strong>ling <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>This chapter contains the error <strong>and</strong> warning messages associated with via file h<strong>and</strong>ling.It contains the following section:• List of via file h<strong>and</strong>ling error <strong>and</strong> warning messages on page 6-2.NoteThese error messages can be produced by any of the tools.When the message is displayed, the X prefixing the message number is replaced by theappropriate letter relating to the application. For example, the code X3900U, forunrecognized option, is displayed as L3900U if generated by the linker.<strong>ARM</strong> DUI 0495B Copyright © 2010 <strong>ARM</strong>. All rights reserved. 6-1ID121310Non-Confidential


Via File H<strong>and</strong>ling <strong>Errors</strong> <strong>and</strong> <strong>Warnings</strong>6.1 List of via file h<strong>and</strong>ling error <strong>and</strong> warning messagesX3900UX3901UX3902UX3903UX3904UX3905UX3906UX3907UX3908UX3910WX3912WX3913WX3915WX3916UX3917UUnrecognized option ''. is not recognized by the tool. This could be because of a spellingerror or the use of an unsupported abbreviation of an option.Missing argument for option ''.Recursive via file inclusion depth of reached in file''.Argument '' not permitted for option ''.Possible reasons include malformed integers or unknown arguments.Could not open via file ''.Error when reading from via file ''.Malformed via file ''.Via file '' comm<strong>and</strong> too long for buffer.Overflow: '' will not fit in an integer.Old syntax, please use ''.Option '' is deprecated.Could not close via file ''.Argument '' to option '' is deprecatedUnexpected argument for option ''Concatenated options cannot have arguments: - 6-2 Copyright © 2010 <strong>ARM</strong>. All rights reserved. <strong>ARM</strong> DUI 0495BNon-ConfidentialID121310

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!