Error Messages

This section describes the error messages. An error does not terminate IAS execution. However, it does prevent object file production. These are the error messages IAS may display:


A2000 too long symbol name

The symbol name may not be longer than 4096 characters.


A2023 there should be a prologue region in the function

This directive requires a prologue code region in the function.


A2024 the personality routine is not defined for the language specific data

This directive requires defining a personality routine definition before the directive. Add a .personality directive before the .handlerdata directive. See the Intel® Itanium(TM) Architecture Assembly Language Reference Guide for more information on these directives.


A2025 directive ".proc" is not allowed within section ".xdata."

You cannot put a .proc directive in an .xdata section.


A2026 section switch is not allowed within handlerdata region

You cannot switch sections in a handlerdata region.


A2027 debug directive points outside the function

An operand of the debug directive points outside the current function.


A2028 directive is allowed only within an explicit bundle

This directive is legal only when specified within an explicit bundle. Place this directive in between the two curly brackets "{" and "}".


A2029 directive is not allowed within an explicit bundle

This directive is not legal when specified within an explicit bundle. Make sure this directive is not placed between the two curly brackets "{" and "}".


A2030 misplaced or missing '}'

There is a curly bracket mismatch. Check preceding bundle's curly bracket structure.


A2031 Unclosed parenthesis at start-of-statement

This statement starts with an open parenthesis token "(". However, the close parenthesis ")" is missing. This statement may have an unclosed qualifying predicate.


A2032 Unexpected element instead of predicate register

Something other than a predicate register is specified in the location reserved for the predicate register.

An example of correct usage:

(p62) add r2 = r3, r6

In this example P62 is the predicate register.

An example of code that generates this error message:

(p64) add r2 = r3, r6

The predicate registers range is P0 - P63.


A2033 Unexpected element instead of tag

Something other than a tag is specified in the location reserved for tags.

An example of correct usage:

.save pr, r3, T
[T:] mov r3=pr


A2034 Unexpected token at end-of-statement: token

The statement ends with an unexpected token. Delete or change the token.

An example of code that generates this error message: add r1=r2,r3,


A2035 invalid token: token

This token is invalid.

An example of code that generates this error message: add r1=r2,r3!


A2036 illegal usage of reserved register: register

This register is a reserved register. Use a different register.

An example of code that generates this error message: mov r5=ar8


A2037 Unexpected token at start-of-statement: token

This token is not valid at the start of the statement. Delete or move the token.

An example of code that generates this error message: add r1=r2,r3

This error message may also be the result of a misspelled mnemonic. An example of a misspelled mnemonic that generates this error message:

br.cal b5=L
L:


A2038 symbol/section already aliased as name

This symbol or section cannot be aliased at this stage, since it is already aliased as something else.


A2039 label already defined: label

This label cannot be defined at this stage, since it is already defined elsewhere. Use a new label for this definition.


A2040 Unexpected token token

The specified token is not expected in this location.


A2042 symbol symbol for definition type is already defined

This symbol is already defined elsewhere. Use a new name for this definition.

An example of code that generates this error message:

L:
L=8


A2047 unexpected character character in string hexa-escape-sequence

The hexa-escape sequence contains an unexpected character. Hexa-escape sequences can contain digits 0-9 and/or letters A-F.

Examples of correct hexa-escape sequences are: \xa, or \xD9.


A2048 illegal bundle brace in automatic mode

IAS encountered a curly bracket ({) or (}) while in automatic assembly mode. Automatic mode was specified with the .auto directive.


A2049 relocatable expressions based on symbols symbol and symbol from different sections cannot be subtracted

These relocatable expressions are from different sections. To subtract two relocatable expressions, they must originate in the same section.


A2050 cannot subtract relocatable expressions based on an external or common symbol

To subtract two relocatable expressions, they must be based on symbols defined in the same section. One or both of these relocatable expressions is probably based on an external or common symbol.


A2051 wrong operand parenthesis structure

The operand parenthesis structure is incorrect.

An example of code that generates this error message: nop ((5+3)


A2052 wrong operand bracket ’[‘’]’ structure

The operand bracket structure is incorrect.

An example of code that generates this error message: ld8 r6 = [r4]]


A2055 illegal argument [argument-type] for unary-operator operator, or misplaced/missing operator

This argument-type is not legal for the specified unary operator.

An example of code that generates this error message: and r3=r2,+r5


A2056 missing arguments for binary-operator: operator

This binary-operator is missing arguments.

An example of code that generates this error message: mov rr[] = r6


A2057 illegal argument-pair [left: argument right: argument] for binary-operator operator, or misplaced/missing operator

These arguments cannot operate together. A typical mistake causing this error message is the use of a binary operator with at least one operand that is not valid for this operator.

An example of code that generates this error message: or r4 = dbr[f4], r6


A2061 a sequence of unary-operator operator and element is illegal

This unary-operator cannot follow the specified element.

An example of code that generates this error message: add r1 = ~, r2


A2063 a sequence of binary-operator operator and operands operand1 and operand2 is illegal

This binary-operator cannot follow the specified elements.

There may be a misplaced operator, for example: or r3 = 4 5+, r6 instead of the intended: or r3 = 4+5, r6


A2065 wrong operand syntax

The operand syntax of this code line is incorrect.

In some cases, you may receive this error message when the cause is illegal operand combination. See error messages A2069 and A2070 for more information.


A2066 missing operator [possibly intended binary +/- taken as unary]

An operator is missing. There may be a misplaced operator, for example: 2*-3 5 instead of the intended: 2*3-5

Another possibility is a missing comma between operands, for example:

add r1 = r2 r3 instead of the intended code: add r1 = r2, r3.


A2067 incorrect tag usage: tag [might need to use label instead]

This tag is incorrect. Try replacing the tag with a label.


A2068 value of operand operand number for element is not available when needed

This operand value is not available at the stage when it is needed. IAS cannot make forward references of this kind.

An example of code that generates this error message:

.skip L1-L2
L1: data8 1

L2:


A2069 illegal operand combination for element

There is a mismatch between the mnemonic and the operands of this instruction. Several causes for this error message are: a missing operand, an incorrect operand type, an invalid register name that is interpreted as a symbol, or an incorrect choice of mnemonic.


A2070 illegal operand operand for element

This operand is not suitable for the specified element.


A2072 invalid section attribute: attribute

This section attribute is not valid. Section attributes depend on the Object Module Format (OMF). Several valid attributes are: a, w, x and s.


A2073 more than one comdat section flag defined: flag

A comdat section can have only one comdat-flag defined. These are some of the possible flag definitions: D, S, E or Y. The flags are case-sensitive.


A2074 comdat flag is only applicable for comdat section

This comdat flag is defined for a non-comdat section.


A2075 comdat section flag not defined

A comdat section must have one comdat-flag defined. These are some of the possible flag definitions: D, S, E or Y. The flags are case-sensitive.


A2076 comdat section section associative symbol is not defined

The comdat section must have at least one label.


A2077 invalid section type: type

This section type is not valid. These are the possible section types: progbits, nobits, comdat and note.


A2078 absolute sections section [address to address] and section [starting at address] overlap

There is an overlap between the two specified absolute sections.


A2079 absolute section section [starting at address] exceeds the 64-bit limit by value

This absolute section exceeds the 64-bit address space limit. The specified value indicates how far the limit is exceeded.


A2080 relocatable expression for element requires -p32 or -M ilp32 command-line options

This relocatable expression conflicts with the current compilation model command-line option. See Compilation Model for more information.


A2081 nobits section section cannot be written to

There is an attempt to write to this nobits section. You cannot write to nobits sections. To correct this, do one of the following: delete the data in the nobits section, change the section type to progbits, or replace the data with a .skip directive.


A2082 nobits section section contains data

The nobits sections cannot contain data. To correct this, do one of the following: delete the data in the nobits section, change the section type to progbits, or replace the data with a .skip directive.


A2083 integer constant token does not fit in number bits: token

This input number token contains more bits than permitted in an integer constant.


A2084 integer number does not fit in number bits: number

This number is too big for this instruction. This number may be the result of an internal calculation.


A2086 alignment request is too big: alignment

Alignment requests are limited to 232-1.


A2087 alignment request is not a power of 2: alignment

An alignment request must be a power of 2.


A2088 symbol symbol is undefined

This symbol does not appear in the object file symbol table. A global or weak symbol must be either defined or declared. A local symbol must be defined.


A2089 illegal global declaration of assigned symbol: symbol

A declared symbol that appears in the object file symbol table cannot be assigned. You can use an equate (==) statement instead.

An example of code that generates this error message:

B = 8
.global B


A2090 assigned/equated symbol symbol cannot be used in statement

The use of this symbol in this statement conflicts with the symbol assignment or equation.

An example of code that generates this error message:

A == L
L:

.weak A = S

S:


A2091 symbol symbol is undefined

The symbol is not defined.


A2092 symbol size of symbol exceeds 32-bit word size

The size of the common symbol exceeds the 64-bit limit.


A2093 symbol symbol is already bound as binding

This symbol's binding is already declared. You cannot redefine a symbol's binding.


A2094 symbol size of symbol is already set to size

This symbol's size is already declared. You cannot redefine a symbol's size.


A2095 symbol type of symbol is already set to type

This symbol's type is already declared. You cannot redefine a symbol's type.


A2096 type is an illegal type for symbol symbol

This type is not one of the possible symbol types: @notype, @object and @function .


A2097 instruction cannot be predicated

This instruction cannot be predicated. See the Glossary for explanation.


A2098 there is no template for this combination of instructions in a bundle

You must rearrange the instructions so that they fit in templates, or use implicit bundling.


A2100 one and only one operand must follow an assignment/equation sign

Make sure assignment or equation signs are followed by one operand.


A2101 invalid section name: section

A section name can be any valid identifier. You may use the .secalias directive to produce section names in the object file section table.

This error message may be the result of missing attributes and/or flags when defining a new section.


A2103 symbol symbol is already defined as a section name

A section name conflicts with a symbol name. Do not choose identical names for a section and a symbol.


A2104 invalid operand immediate value: value

This immediate value is not valid for this instruction operand. See the Intel® Itanium(TM) Architecture Software Developer’s Manual for more information.

An example of code that generates this error message: fetchadd4.acq r3 = [r4], 7


A2105 this relocatable expression does not fit in number bits

This relocatable expression is too long for this instruction. See the Intel® Itanium(TM) Architecture Software Developer’s Manual for more information.


A2107 requested register stack frame size size exceeds register stack limit limit

The requested register stack frame size is larger than 96. The register stack frame size is the sum of input, local and output registers.


A2108 input stack register cannot exceed inxx

The requested input register is not within the current input register frame xx. The register frames are defined in a previous alloc instruction or .register directive.


A2109 local stack register cannot exceed locxx

The requested local register is not within the current local register frame xx. The register frames are defined in a previous alloc instruction or .register directive.


A2110 output stack register cannot exceed outxx

The requested output register is not within the current output register frame xx. The register frames are defined in a previous alloc instruction or .register directive.


A2111 The requested number of rotating-registers number is not a multiple of 8

The number of rotating registers must be a multiple of 8.


A2112 The requested number of rotating-registers number is larger than the register stack frame size number

The number of rotating registers cannot exceed the total register stack frame. The register stack frame is the sum of input, local and output registers.


A2113 Loop dependency is detected in equate expression for symbol symbol

The specified symbol’s equation expression has a loop dependency. Check for a backward or recursive reference.

An example of code that generates this error message as a result of a backward reference:

x==y
y==x


A2114 invalid operand type: symbol

This operand type is not valid for this statement.


A2115 stop (;;) for empty instruction group

This stop creates an instruction group without instructions. Delete the stop.

An example of code that generates this error message:

;;
add r1=r2,r3


A2116 bundle content contradicts template request

The bundle contents require a different template. Choose a different template, or omit the template directive.

An example of code that generates this error message:

{
.mii

nop.m '0'

nop.f '2'

nop.i '1'

}


A2117 same register type register [register] cannot be used for both destinations

This instruction cannot write to the same two destinations.


A2118 cannot use the same registers for base and destination in the post-increment form form of the load instruction

A post-increment load instruction requires different registers for the base and destination. An example of code that generates this error message: ld8 r9 = [r9], r4


A2121 alias name name[number] is not defined in .rotX directive

Define the rotating registers in a previous .rotr, .rotf, or .rotp instruction.


A2122 constant integer string does not conform to style/radix style

The format of this integer string does not conform to the current style, defined by a previous .radix directive.


A2124 previous procedure is not yet ended

A new procedure cannot start before the current procedure ends. Use the .endp directive to end the current procedure.


A2126 there is an open procedure in section: section

There is an open procedure in this section. Use the .endp directive to end the procedure.


A2128 line entry is valid only in type section

The current section type does not accept debug information directives.


A2129 offset operand for element must be greater or equal to current location counter

This offset operand must specify an address higher than the current location.

An example of code that generates this error message:

L:
.skip 5

.org L


A2130 somewhere, symbol symbol is equated to an incompatible type

This symbol is equated to an incompatible symbol type. IAS cannot determine the exact location of the equation, only the fact that the equation is invalid.

This error message may also be the result of an illegal cyclic definition. An example of code that generates this error message:

B == r5
.global B


A2131 equation of symbol symbol is based on undefined symbol symbol

IAS cannot resolve this equation since one of the symbols on the right hand side is not declared.


A2132 illegal register value number

The register number is invalid. The valid register numbers depend on the register type.


A2133 reference symbol symbol is not defined in the current section

This symbol must be defined in the current section.


A2134 element is supported for COFF32 object file format only

This element is not supported in file formats other than COFF32.


A2135 there is no open debug function

The .ef and .ln directives require opening a debug function, using the .bf directive. See Intel® Itanium(TM) Architecture Assembly Language Reference Guide for more information on this directive.


A2136 symbol symbol does not match the current debug function

A line entry must reference the current procedure symbol.


A2137 previous debug function is not yet ended

The current attempt to open a debug function with a .bf directive is unsuccessful because the previous .bf directive is still active. Use the .ef directive to end the previous debug function.


A2138 two debug directives pointing to the same instruction

A .ln directive points to the nearest following instruction. An instruction cannot be preceded by more than one .ln directive.


A2139 there is an open debug function in section section

This section contains an open .bf directive. Use the .ef directive to end the previous debug function.


A2140 source file is not defined

To use debug information directives, a source file must be defined. Use the .file directive to define a source file.


A2141 unwind directive cannot be placed in the location

This unwind directive cannot be placed in the specified location. See the Intel® Itanium(TM) Architecture Assembly Language Reference Guide for more information on this directive.


A2142 unwind directive directive is not within a function

This unwind directive is not within a procedure. Use the .proc directive to open a procedure.


A2143 tag operand tag in the unwind directive is not defined within the current region

This specified unwind directive operand tag refers to an instruction outside the current unwind region (prologue or body regions).


A2144 unwind directive points outside the current region

This unwind directive refers to an instruction outside the current unwind region (prologue or body regions).


A2145 the first unwind directive must point to the procedure procedure entry point

There is an instruction between the first unwind directive and the procedure entry point. Delete or move this instruction, so that the first unwind directive points to this procedure's entry point address.

An example of code that generates this error message:

.proc foo
.prologue 0x1, r1

nop 0

foo::

.endp

To correct the code, write the .prologue directive immediately before the foo:: entry point.


A2146 unwind directive interrupts uncompleted set of spill instructions

A set of contiguous spill instructions, defined by the previous .save directive is cut off by another unwind directive.


A2148 directive directive with no spill is invalid

You cannot define zero as the number of spill arguments in an unwind directive.


A2149 duplicate spill of the same register type register is invalid

An unwind region may contain only one spill area for a specified register type.


A2150 unwind directive directive is already specified in the current procedure

This directive is allowed only once in a procedure.


A2152 explicit empty bundle is illegal

An explicit bundle must contain at least one instruction.


A2153 no type registers are allowed within current register stack frame

This register stack frame has zero registers of the specified type.


A2154 vral directive dirname is not within a function

Virtual register allocation (Vral) directives are only meaningful when contained in a procedure.


A2173 both destination fp registers refer to the same register bank

The destination registers must specify one odd floating-point register and one even floating-point register.


A2180 register register dependency violation with line

The specified line contains a register dependency. Try to relocate one of the lines such that this dependency is avoided. Place a stop (;;) between the two dependent elements.


A2181 instruction must be position in an instruction group

This error message originates with the IAS dependency violation feature. Place this instruction according to its requirements; whether first or last in an instruction group.


A2186 statement element is not allowed after statement element statement

This combination of consecutive statement elements is not allowed.

An example of code that generates this error message: foo: .radix C


A2187 alias for symbol type "symbol name" is already defined

The specified symbol name is already used as the alias for another symbol.


A2192 symbol name used in @fptr operator must be a function

An operator following an @fprt operand must be a function.


A2194 the directive: directive is not supported in this configuration

The specified directive is not supported when running IAS with the current command-line options. See Command-line Options for more information.


A2197 Radix stack underflow

The radix stack is empty. A pop operation on an empty stack is not possible.


A2198 operand no. number: relocation's addend doesn't fit in size bits

The specified relocation addend is too large. Make sure the addend is not larger than the specified size.


A2199 privileged instruction instruction rejected

The current IAS setting specifies that privileged instructions be rejected. This instruction is privileged, and therefore rejected.


A2200 line group size value exceeds 32 bits word size or less than actual size

The third parameter of the .EF directive (the code size) is illegal.


A2201 Global label cannot begin with dot

A global label cannot begin with a dot "." character. You can correct this problem by ensuring a label is indicated, changing the label, or replacing the global definition with a symbol name definition.


A2202 Division by zero

The denominator of an expression is zero. The result is undefined.


A2203 invalid register type for register range operand

Registers range operand can be constructed only by integer, float, branch, or predicate register pair.


A2205 virtual register has already been defined

Within a procedure, the directive .vreg.var has already been specified for this register, without an .vreg.undef directive.


A2207 inconsistent request for allocation of even/odd floating point registers

The floating-point virtual register received contradictory requirements for evenness on the same life range.

An example of code that generates this error message:

.vreg.var @float, vfp
fand vfp = f8,f9

(p2) ldfps vfp, f4 = [r3] // vfp should be odd

;;

(p2) ldfps vfp, f5 = [r4] // vfp should be even

for f12 = vfp, f12


A2208 an ambiguity in register bank setting

Two .bank annotations conflict for some instructions, usually because of a branch instruction.


A2209 temporary label can not be aliased

The directive .alias should not be written to a temporary label.


A2210 More than one template selection directive for current bundle

The current bundle has more than one template assigned. Choose the most suitable, and delete the rest.


A2211 Template selection directive allowed only as first statement in explicit bundle

Place the template selection directive right after the curly bracket that opens a bundle “{“.


A2212 Symbol symbol name was not defined location

The specified symbol was not defined in this procedure.


A2213 feature has different syntax in COFF32 object file format

The specified feature uses the syntax for an incorrect file format. See the Intel® Itanium(TM) Architecture Assembly Language Reference Guide for more information.


A2214 The right-hand expression of the assignment contains forward reference

The right-hand expression of the assignment cannot contain a forward reference.


A2215 Somewhere, symbol assignment symbol is assigned to expression that contains forward reference to symbol undefined symbol

An assignment symbol may not contain a forward reference to an undefined symbol.


A2216 Missing the right-hand operand of the assignment

The line of code is not complete. Add the right-hand operand of the assignment.


A2217 Symbol symbol name was not defined within procedure

The specified symbol name must be defined in the procedure. An example of code that generates this warning:

.proc A
mov r1=r2

.endp

A:


A2219 Invalid usage of an undefined symbol with addend

An undefined symbol with addend can not be used here. The relocation cannot be resolved.


A2221 somewhere, symbol symbol is equated to a value/offset offset out of positive size bit range

A directive puts the specified symbol in a symbol table. This symbol is assigned a value larger than permitted. Make sure that the assigned value is within the permitted range.


A2222 symbol sym_name is unknown, add alias is ambiguous in vral mode

Using the add alias with an unknown immediate as the second operand, and a virtual register as the third operand may confuse the assembler and cause allocation failure.

To fix, equate an immediate before the add instruction, or explicitly write adds or addl instead of add.

In the following example of code that generates this warning, the assembler cannot determine if A is small enough to choose adds. If so, there are no restrictions on Vr1 allocation. Otherwise, addl is chosen and Vr1 is restricted to the range R0 - R3.

add r6 = A, Vr1
...

A == 5

To fix:

adds r6 = A, Vrl

or

A == 5
add r6 = A, Vr1

...


A2223 invalid syntax of Register File operand

The syntax of the register file operand is incorrect.

An example of code that generates this warning:

mov dbr=r5

An example of correct syntax:

mov dbr[r6]=r5


A2225 illegal instruction

The indicated instruction is illegal in Itanium(TM) architecture syntax.


A2226 illegal usage of register in RFP model

When the command-line option -M rfp is invoked, the available set of floating-point registers is reduced to the range F6 - F11. Attempts to access other floating-point registers cause this error. (ELF64 only).


A2227 Associative comdat section sec_name must have an associated section

You must indicate an associated section for a comdat section of type A (associative).


A2228 symbol name sym name contains period, not allowed in the COFF32 format

The COFF32 format table does not allow symbols to contain a period.