(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SCRIPT_NAME)
          op: assign_op.Equal
          rhs: {<elf>}
          spids: [0]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEMPLATE_NAME)
          op: assign_op.Equal
          rhs: {<elf32>}
          spids: [3]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EXTRA_EM_FILE)
          op: assign_op.Equal
          rhs: {<spuelf>}
          spids: [6]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OUTPUT_FORMAT)
          op: assign_op.Equal
          rhs: {(DQ <elf32-spu>)}
          spids: [9]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NO_REL_RELOCS)
          op: assign_op.Equal
          rhs: {<yes>}
          spids: [14]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCH)
          op: assign_op.Equal
          rhs: {<spu>}
          spids: [17]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MACHINE)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [20]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ALIGNMENT)
          op: assign_op.Equal
          rhs: {<16>}
          spids: [22]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEXT_START_ADDR)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [25]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:INITIAL_READONLY_SECTIONS)
          op: assign_op.Equal
          rhs: {(SQ <'.interrupt : { KEEP(*(.interrupt)) }'>)}
          spids: [28]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-z>} {(DQ (${ Id.VSub_Name CREATE_SHLIB))})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INITIAL_READONLY_SECTIONS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (${ Id.VSub_Name INITIAL_READONLY_SECTIONS) <'\n'> <'  .interp       '> 
                        (braced_var_sub
                          token: <Id.VSub_Name RELOCATING>
                          suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<0>})
                        ) <' : { *(.interp) }'>
                      )
                    }
                  spids: [49]
                )
              ]
            )
          ]
          spids: [33 46]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OTHER_END_SYMBOLS)
          op: assign_op.Equal
          rhs: {(SQ <'PROVIDE (__stack = 0x3fff0);'>)}
          spids: [66]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NO_SMALL_DATA)
          op: assign_op.Equal
          rhs: {<true>}
          spids: [71]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:EMBEDDED)
          op: assign_op.Equal
          rhs: {<true>}
          spids: [74]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MAXPAGESIZE)
          op: assign_op.Equal
          rhs: {<0x80>}
          spids: [77]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DATA_ADDR)
          op: assign_op.Equal
          rhs: {(DQ <'ALIGN('> (${ Id.VSub_Name MAXPAGESIZE) <')'>)}
          spids: [80]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OTHER_BSS_SECTIONS)
          op: assign_op.Equal
          rhs: {(DQ <'.toe ALIGN(128) : { *(.toe) } = 0'>)}
          spids: [89]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OTHER_SECTIONS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'.note.spu_name 0 : { KEEP(*(.note.spu_name)) }\n'> 
                <'  ._ea 0 : { KEEP(*(._ea)) KEEP(*(._ea.*)) }'>
              )
            }
          spids: [94]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OTHER_READONLY_SECTIONS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'\n'> <'  .fixup '> 
                (braced_var_sub
                  token: <Id.VSub_Name RELOCATING>
                  suffix_op: (suffix_op.Unary tok:<Id.VTest_Hyphen -> arg_word:{<0>})
                ) <' : {\n'> <'    PROVIDE (__fixup_start = .);\n'> <'    KEEP(*(.fixup))\n'> <'  }'>
              )
            }
          spids: [100]
        )
      ]
    )
  ]
)