Uploaded image for project: 'Embedded Software & Tools'
  1. Embedded Software & Tools
  2. EXT_EP-8874

PRU assembler failure INTERNAL ERROR!: <symbol name> defined differently in each pass

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Medium Medium
    • Code Generation Tools
    • CODEGEN-4645
    • Hide
      PRU_2.2.1
       PRU_2.3.0
      Show
      PRU_2.2.1  PRU_2.3.0
    • Hide
      Do not use .set to define a symbol with another symbol; use .asg.
      Thus:
           FOO .set BAR
           BAR .set 1
      should be
          .asg BAR, FOO
           BAR .set 1
      Show
      Do not use .set to define a symbol with another symbol; use .asg. Thus:      FOO .set BAR      BAR .set 1 should be     .asg BAR, FOO      BAR .set 1
    • Hide
      The Assembler issued an error about a branch label being "defined differently in each pass." Prior to the label definition, a symbol was used that was defined to another symbol using .set; the latter symbol was defined with a .set to a constant value in a different file.

      In the PRU Assembly Language User's Guide, it specifies in 5.12 Directive Reference, under ".asg":
      The .asg directive can be used in many of the same ways as the .set directive, but while .set assigns a constant value (which cannot be redefined) to a symbol, .asg assigns a character string (which can be redefined) to a substitution symbol.

      The problem is eliminated when the symbol is defined to the other symbol using .asg. This is because .asg works like a macro replacement, which is what the user intended, while .set is for assigning a constant value to a symbol.
      Show
      The Assembler issued an error about a branch label being "defined differently in each pass." Prior to the label definition, a symbol was used that was defined to another symbol using .set; the latter symbol was defined with a .set to a constant value in a different file. In the PRU Assembly Language User's Guide, it specifies in 5.12 Directive Reference, under ".asg": The .asg directive can be used in many of the same ways as the .set directive, but while .set assigns a constant value (which cannot be redefined) to a symbol, .asg assigns a character string (which can be redefined) to a substitution symbol. The problem is eliminated when the symbol is defined to the other symbol using .asg. This is because .asg works like a macro replacement, which is what the user intended, while .set is for assigning a constant value to a symbol.
    • User error, see Release Notes. Making enhancment request for better diagnostics on misuses of .set.

      PRU assembler failure INTERNAL ERROR!: <symbol name> defined differently in each pass

            syncuser TI User
            syncuser TI User
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: