<s> if ( IsPCRel ) { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : report_fatal_error ( <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_REL32 ; break ; case MCSymbolRefExpr :: VK_TLSGD : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_GOTPCREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_PLT : Type = ELF :: R_<ISA_LIT>_CALL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : report_fatal_error ( <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS8 ; break ; } break ; case FK_Data_2 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS16 ; break ; } break ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : Type = ELF :: R_<ISA_LIT>_NONE ; break ; case MCSymbolRefExpr :: VK_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_GOTPCREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ;


<s> break ; case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP19 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP11 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP8 ; break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : report_fatal_error ( <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS8 ; break ; } break ; case FK_Data_2 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS16 ; break ; } break ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : Type = ELF :: R_<ISA_LIT>_NONE ; break ; case MCSymbolRefExpr :: VK_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL :


<s> break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_SBREL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ; case MCSymbolRefExpr :: VK_TLSLDM : Type = ELF :: R_<ISA_LIT>_TLS_LDM32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ : Type = ELF :: R_<ISA_LIT>_TLS_DESCSEQ ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL :


<s> for ( auto & F : TextSection -> getFragmentList ( ) ) if ( auto * DF = dyn_cast < MCDataFragment > ( & F ) ) if ( ! DF -> getContents ( ) . empty ( ) ) return ; TextSection -> setFlags ( TextSection -> getFlags ( ) | ELF :: SHF_<ISA_LIT>_PURECODE ) ; }


<s> } case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF16 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF12 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF18 ; } } switch ( Kind ) { default : Ctx . reportFatalError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS8 ; } case FK_Data_2 : switch ( Modifier ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS16 ; } case FK_Data_4 : switch ( Modifier ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_GOT : return ELF :: R_<ISA_LIT>_GOT_BREL ; case MCSymbolRefExpr :: VK_TLSGD : return ELF :: R_<ISA_LIT>_TLS_GD32 ; case MCSymbolRefExpr :: VK_TPOFF : return ELF :: R_<ISA_LIT>_TLS_LE32 ; case MCSymbolRefExpr :: VK_GOTTPOFF : return ELF :: R_<ISA_LIT>_TLS_IE32 ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS32 ; case MCSymbolRefExpr :: VK_GOTOFF : return ELF :: R_<ISA_LIT>_GOTOFF32 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : return ELF :: R_<ISA_LIT>_GOT_PREL ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : return ELF :: R_<ISA_LIT>_TARGET1 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : return ELF :: R_<ISA_LIT>_TARGET2 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : return ELF :: R_<ISA_LIT>_PREL31 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : return ELF :: R_<ISA_LIT>_SBREL32 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : return ELF :: R_<ISA_LIT>_TLS_LDO32 ; case MCSymbolRefExpr :: VK_TLSCALL : return ELF :: R_<ISA_LIT>_TLS_CALL ; case MCSymbolRefExpr :: VK_TLSDESC : return ELF :: R_<ISA_LIT>_TLS_GOTDESC ; case MCSymbolRefExpr :: VK_TLSLDM : return ELF :: R_<ISA_LIT>_TLS_LDM32 ;

case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ :


<s> unsigned RelocType = <NUM_LIT> ; RelocType = GetRelocTypeInner ( Target , Fixup , IsPCRel ) ; DEBUG ( const MCSymbolRefExpr :: VariantKind Kind = Target . getSymA ( ) -> getKind ( ) ; MCSymbolRefExpr :: VariantKind Kind2 ; Kind2 = Target . getSymB ( ) ? Target . getSymB ( ) -> getKind ( ) : MCSymbolRefExpr :: VK_None ; dbgs ( ) << <STR_LIT> << Section . getSectionName ( ) << <STR_LIT> << Symbol . getName ( ) << <STR_LIT> << <STR_LIT> << ( unsigned ) RelocType << <STR_LIT> << ( int ) Kind << <STR_LIT> << ( int ) Kind2 << <STR_LIT> << Symbol . isAbsolute ( ) << <STR_LIT> << Symbol . isDefined ( ) << <STR_LIT> << Symbol . isVariable ( ) << <STR_LIT> << Symbol . isTemporary ( ) << <STR_LIT> << PCRelCount << <STR_LIT> << NonPCRelCount << <STR_LIT> ) ; if ( IsPCRel ) { ++ PCRelCount ; switch ( RelocType ) { default : InNormalSection = StringSwitch < bool > ( Section . getSectionName ( ) ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Default ( true ) ; EmitThisSym = true ; break ; case ELF :: R_<ISA_LIT>_ABS32 : InNormalSection = StringSwitch < bool > ( Section . getSectionName ( ) ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Default ( true ) ; EmitThisSym = false ; break ; } } else { NonPCRelCount ++ ; InNormalSection = StringSwitch < bool > ( Section . getSectionName ( ) ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Case ( <STR_LIT> , false ) . Default ( true ) ; switch ( RelocType ) { default : EmitThisSym = true ; break ; case ELF :: R_<ISA_LIT>_ABS32 : EmitThisSym = false ; break ; } } if ( EmitThisSym ) return & Symbol ; if ( ! Symbol . isTemporary ( ) && InNormalSection ) { return & Symbol ;


<s> unsigned <ISA_LIT>ELFObjectWriter :: getEFlags ( ) const {

return ELF :: EF_<ISA_LIT>_EABIMASK & DefaultEABIVersion ;


<s> unsigned <ISA_LIT>ELFObjectWriter :: getEFlags ( ) const { return ELF :: EF_<ISA_LIT>_EABIMASK & DefaultEABIVersion ;


<s> } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_ABS_NC ; break ;


<s> case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_REL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_PLT : Type = ELF :: R_<ISA_LIT>_PLT32 ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> :


<s> return GetRelocTypeInner ( Target , Fixup , IsPCRel ) ;


<s> break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : Type = ELF :: R_<ISA_LIT>_NONE ; break ; case MCSymbolRefExpr :: VK_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ;


<s> case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF12 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF18 ; } } switch ( Kind ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS8 ; } case FK_Data_2 : switch ( Modifier ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS16 ; } case FK_Data_4 : switch ( Modifier ) { default : Ctx . reportError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_GOT : return ELF :: R_<ISA_LIT>_GOT_BREL ; case MCSymbolRefExpr :: VK_TLSGD : return ELF :: R_<ISA_LIT>_TLS_GD32 ; case MCSymbolRefExpr :: VK_TPOFF : return ELF :: R_<ISA_LIT>_TLS_LE32 ; case MCSymbolRefExpr :: VK_GOTTPOFF : return ELF :: R_<ISA_LIT>_TLS_IE32 ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS32 ; case MCSymbolRefExpr :: VK_GOTOFF : return ELF :: R_<ISA_LIT>_GOTOFF32 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : return ELF :: R_<ISA_LIT>_GOT_PREL ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : return ELF :: R_<ISA_LIT>_TARGET1 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : return ELF :: R_<ISA_LIT>_TARGET2 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : return ELF :: R_<ISA_LIT>_PREL31 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : return ELF :: R_<ISA_LIT>_SBREL32 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : return ELF :: R_<ISA_LIT>_TLS_LDO32 ;


<s> return ELF :: R_<ISA_LIT>_PREL31 ; } case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_PLT : return ELF :: R_<ISA_LIT>_CALL ; case MCSymbolRefExpr :: VK_TLSCALL : return ELF :: R_<ISA_LIT>_TLS_CALL ; default : return ELF :: R_<ISA_LIT>_CALL ; } case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : return ELF :: R_<ISA_LIT>_JUMP24 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_JUMP19 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_JUMP24 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_MOVT_PREL ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_JUMP11 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_JUMP8 ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_TLSCALL : return ELF :: R_<ISA_LIT>_THM_TLS_CALL ; default : return ELF :: R_<ISA_LIT>_THM_CALL ; } case <STR_LIT> : case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_PC8 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_ALU_PREL_11_0 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_PC12 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF16 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF12 ; case <STR_LIT> : return ELF :: R_<ISA_LIT>_THM_BF18 ; } } switch ( Fixup . getTargetKind ( ) ) { default : Ctx . reportFatalError ( Fixup . getLoc ( ) , <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_NONE : return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS8 ; } case FK_Data_2 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS16 ; } case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : return ELF :: R_<ISA_LIT>_NONE ; case MCSymbolRefExpr :: VK_GOT : return ELF :: R_<ISA_LIT>_GOT_BREL ; case MCSymbolRefExpr :: VK_TLSGD : return ELF :: R_<ISA_LIT>_TLS_GD32 ; case MCSymbolRefExpr :: VK_TPOFF : return ELF :: R_<ISA_LIT>_TLS_LE32 ; case MCSymbolRefExpr :: VK_GOTTPOFF : return ELF :: R_<ISA_LIT>_TLS_IE32 ; case MCSymbolRefExpr :: VK_None : return ELF :: R_<ISA_LIT>_ABS32 ; case MCSymbolRefExpr :: VK_GOTOFF : return ELF :: R_<ISA_LIT>_GOTOFF32 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : return ELF :: R_<ISA_LIT>_GOT_PREL ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : return ELF :: R_<ISA_LIT>_TARGET1 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : return ELF :: R_<ISA_LIT>_TARGET2 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : return ELF :: R_<ISA_LIT>_PREL31 ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : return ELF :: R_<ISA_LIT>_SBREL32 ;

case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO :


<s> default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ;


<s> case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : report_fatal_error ( <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS8 ; break ; } break ; case FK_Data_2 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS16 ; break ; } break ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : Type = ELF :: R_<ISA_LIT>_NONE ; break ; case MCSymbolRefExpr :: VK_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_SBREL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ : Type = ELF :: R_<ISA_LIT>_TLS_DESCSEQ ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> :


<s> case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : assert ( <NUM_LIT> && <STR_LIT> ) ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_CALL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case <STR_LIT> :


<s> MCSymbolRefExpr :: VariantKind Modifier = Target . isAbsolute ( ) ? MCSymbolRefExpr :: VK_None : Target . getSymA ( ) -> getKind ( ) ; unsigned Type = <NUM_LIT> ; if ( IsPCRel ) { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : assert ( <NUM_LIT> && <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_REL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : assert ( <NUM_LIT> && <STR_LIT> ) ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_PLT : Type = ELF :: R_<ISA_LIT>_PLT32 ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ;


<s> Type = ELF :: R_<ISA_LIT>_THM_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : report_fatal_error ( <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS8 ; break ; } break ; case FK_Data_2 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS16 ; break ; } break ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : Type = ELF :: R_<ISA_LIT>_NONE ; break ; case MCSymbolRefExpr :: VK_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ;

case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 :


<s> Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_SBREL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ; case MCSymbolRefExpr :: VK_TLSLDM : Type = ELF :: R_<ISA_LIT>_TLS_LDM32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ : Type = ELF :: R_<ISA_LIT>_TLS_DESCSEQ ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_MOVT_BREL ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVW_ABS_NC ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_MOVW_BREL_NC ;


<s> case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_SBREL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ; case MCSymbolRefExpr :: VK_TLSLDM : Type = ELF :: R_<ISA_LIT>_TLS_LDM32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ : Type = ELF :: R_<ISA_LIT>_TLS_DESCSEQ ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_MOVT_BREL ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVW_ABS_NC ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_MOVW_BREL_NC ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_THM_MOVT_ABS ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_THM_MOVT_BREL ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_THM_MOVW_ABS_NC ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_THM_MOVW_BREL_NC ; break ; } break ; } }


<s> Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_SBREL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ; case MCSymbolRefExpr :: VK_TLSLDM : Type = ELF :: R_<ISA_LIT>_TLS_LDM32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ : Type = ELF :: R_<ISA_LIT>_TLS_DESCSEQ ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_MOVT_BREL ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_MOVW_ABS_NC ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_MOVW_BREL_NC ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_THM_MOVT_ABS ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_THM_MOVT_BREL ; break ; } break ; case <STR_LIT> : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_THM_MOVW_ABS_NC ;


<s> break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_PLT : Type = ELF :: R_<ISA_LIT>_PLT32 ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_CALL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_ABS_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_ABS ; break ;


<s> case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : llvm_unreachable ( <STR_LIT> ) ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_ABS ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_ABS_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_ABS ;


<s> default : report_fatal_error ( <STR_LIT> ) ; return ELF :: R_<ISA_LIT>_NONE ; case FK_Data_1 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS8 ; break ; } break ; case FK_Data_2 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS16 ; break ; } break ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE : Type = ELF :: R_<ISA_LIT>_NONE ; break ; case MCSymbolRefExpr :: VK_GOT : Type = ELF :: R_<ISA_LIT>_GOT_BREL ; break ; case MCSymbolRefExpr :: VK_TLSGD : Type = ELF :: R_<ISA_LIT>_TLS_GD32 ; break ; case MCSymbolRefExpr :: VK_TPOFF : Type = ELF :: R_<ISA_LIT>_TLS_LE32 ; break ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_ABS32 ; break ; case MCSymbolRefExpr :: VK_GOTOFF : Type = ELF :: R_<ISA_LIT>_GOTOFF32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_GOT_PREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET1 : Type = ELF :: R_<ISA_LIT>_TARGET1 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TARGET2 : Type = ELF :: R_<ISA_LIT>_TARGET2 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 : Type = ELF :: R_<ISA_LIT>_PREL31 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL : Type = ELF :: R_<ISA_LIT>_SBREL32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSLDO : Type = ELF :: R_<ISA_LIT>_TLS_LDO32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESC : Type = ELF :: R_<ISA_LIT>_TLS_GOTDESC ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSDESCSEQ : Type = ELF :: R_<ISA_LIT>_TLS_DESCSEQ ; break ; } break ; case <STR_LIT> :


<s> MCObjectWriter * llvm :: create<ISA_LIT>ELFObjectWriter ( raw_ostream & OS , uint8_t OSABI , bool IsLittleEndian ) { MCELFObjectTargetWriter * MOTW = new <ISA_LIT>ELFObjectWriter ( OSABI ) ; return createELFObjectWriter ( MOTW , OS , IsLittleEndian ) ;


<s> unsigned <ISA_LIT>ELFObjectWriter :: GetRelocType ( const MCValue & Target , const MCFixup & Fixup , bool IsPCRel ) const { return GetRelocTypeInner ( Target , Fixup , IsPCRel ) ;


<s> default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_REL32 ; break ; case MCSymbolRefExpr :: VK_TLSGD : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_GOTPCREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_PLT : Type = ELF :: R_<ISA_LIT>_PLT32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL :

Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ;


<s> unsigned Type = <NUM_LIT> ; if ( IsPCRel ) { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_None : Type = ELF :: R_<ISA_LIT>_REL32 ; break ; case MCSymbolRefExpr :: VK_TLSGD : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_GOTTPOFF : Type = ELF :: R_<ISA_LIT>_TLS_IE32 ; break ; case MCSymbolRefExpr :: VK_GOTPCREL : Type = ELF :: R_<ISA_LIT>_GOT_PREL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_PLT : Type = ELF :: R_<ISA_LIT>_PLT32 ; break ; case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_CALL ; break ; } break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_JUMP24 ; break ; case <STR_LIT> : case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_JUMP24 ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_MOVW_PREL_NC ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVT_PREL ; break ; case <STR_LIT> : Type = ELF :: R_<ISA_LIT>_THM_MOVW_PREL_NC ; break ; case <STR_LIT> : case <STR_LIT> : switch ( Modifier ) { case MCSymbolRefExpr :: VK_<ISA_LIT>_TLSCALL : Type = ELF :: R_<ISA_LIT>_THM_TLS_CALL ; break ; default : Type = ELF :: R_<ISA_LIT>_THM_CALL ; break ; } break ; } } else { switch ( ( unsigned ) Fixup . getKind ( ) ) { default : llvm_unreachable ( <STR_LIT> ) ; case FK_Data_4 : switch ( Modifier ) { default : llvm_unreachable ( <STR_LIT> ) ; case MCSymbolRefExpr :: VK_<ISA_LIT>_NONE :


<s> default : return true ; case ELF :: R_<ISA_LIT>_PREL31 : case ELF :: R_<ISA_LIT>_ABS32 : return false ;


<s> bool <ISA_LIT>ELFObjectWriter :: needsRelocateWithSymbol ( unsigned Type ) const { switch ( Type ) { default : return true ;


<s> <ISA_LIT>ELFObjectWriter :: ~ <ISA_LIT>ELFObjectWriter ( ) {


<s> getStreamer ( ) . EmitFixup ( S , FK_Data_4 ) ;


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , MCAsmBackend & TAB , raw_pwrite_stream & OS , MCCodeEmitter * Emitter , bool IsThumb ) : MCELFStreamer ( Context , TAB , OS , Emitter ) , IsThumb ( IsThumb ) , MappingSymbolCounter ( <NUM_LIT> ) , LastEMS ( EMS_None ) {


<s> <ISA_LIT>TargetAsmStreamer :: <ISA_LIT>TargetAsmStreamer ( MCStreamer & S , formatted_raw_ostream & OS , MCInstPrinter & InstPrinter , bool VerboseAsm ) : <ISA_LIT>TargetStreamer ( S ) , OS ( OS ) , InstPrinter ( InstPrinter ) , IsVerboseAsm ( VerboseAsm ) {


<s> <ISA_LIT>TargetELFStreamer ( MCStreamer & S ) : <ISA_LIT>TargetStreamer ( S ) , CurrentVendor ( <STR_LIT> ) , FPU ( <STR_LIT> ) , Arch ( <STR_LIT> ) , EmittedArch ( <STR_LIT> ) , AttributeSection ( nullptr ) {


<s> size_t <ISA_LIT>TargetELFStreamer :: calculateContentSize ( ) const { size_t Result = <NUM_LIT> ; for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) { AttributeItem item = Contents [ i ] ; switch ( item . Type ) { case AttributeItem :: HiddenAttribute : break ; case AttributeItem :: NumericAttribute : Result += getULEB128Size ( item . Tag ) ; Result += getULEB128Size ( item . IntValue ) ; break ; case AttributeItem :: TextAttribute : Result += getULEB128Size ( item . Tag ) ; Result += item . StringValue . size ( ) + <NUM_LIT> ; break ; case AttributeItem :: NumericAndTextAttributes : Result += getULEB128Size ( item . Tag ) ; Result += getULEB128Size ( item . IntValue ) ;


<s> LastMappingSymbols [ getPreviousSection ( ) . first ] = LastEMS ; LastEMS = LastMappingSymbols . lookup ( Section ) ;

MCELFStreamer :: ChangeSection ( Section , Subsection ) ;


<s> <ISA_LIT>ELFStreamer * S = new <ISA_LIT>ELFStreamer ( Context , TAB , OS , Emitter , IsThumb ) ; S -> getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ; if ( RelaxAll ) S -> getAssembler ( ) . setRelaxAll ( true ) ;


<s> S -> getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ;

if ( RelaxAll ) S -> getAssembler ( ) . setRelaxAll ( true ) ;


<s> if ( TT . isOSBinFormatELF ( ) ) return new <ISA_LIT>TargetELFStreamer ( S ) ;

return new <ISA_LIT>TargetStreamer ( S ) ;


<s> return new <ISA_LIT>TargetAsmStreamer ( S , OS , * InstPrint , isVerboseAsm ) ;


<s> void <ISA_LIT>TargetELFStreamer :: emitArch ( unsigned Value ) {


<s> setAttributeItem ( Virtualization_use , AllowTZ , false ) ; break ; case <STR_LIT> : setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , RealTimeProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; setAttributeItem ( MPextension_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZVirtualization , false ) ; break ; case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( WMMX_arch , AllowWMMXv1 , false ) ; break ; case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( WMMX_arch , AllowWMMXv2 , false ) ; break ; default : report_fatal_error ( <STR_LIT> + Twine ( Arch ) ) ; break ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitArchExtension ( unsigned ArchExt ) {

OS << <STR_LIT> << <STR_LIT> ( ArchExt ) << <STR_LIT> ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitArchExtension ( unsigned ArchExt ) { OS << <STR_LIT> << <STR_LIT> ( ArchExt ) << <STR_LIT> ;


<s> void Emit<ISA_LIT>MappingSymbol ( ) {

if ( LastEMS == EMS_<ISA_LIT> ) return ;


<s> return ; case MCAF_Code16 : IsThumb = true ; return ; case MCAF_Code32 : IsThumb = false ; return ; case MCAF_Code64 : return ;


<s> void <ISA_LIT>TargetELFStreamer :: emitAttribute ( unsigned Attribute , unsigned Value ) {

setAttributeItem ( Attribute , Value , true ) ;


<s> MCELFStreamer :: EmitBytes ( Data ) ;


<s> EmitMappingSymbol ( <STR_LIT> ) ; LastEMS = EMS_Data ;


<s> MCDataFragment * Frag = getOrCreateDataFragment ( ) ;

Frag -> getFixups ( ) . push_back ( MCFixup :: create ( Frag -> getContents ( ) . size ( ) , Expr , Kind ) ) ;


<s> assert ( PersonalityIndex == <STR_LIT> :: AEABI_UNWIND_CPP_PR0 && <STR_LIT> ) ; assert ( Opcodes . size ( ) == <NUM_LIT> && <STR_LIT> ) ; uint64_t Intval = Opcodes [ <NUM_LIT> ] | Opcodes [ <NUM_LIT> ] << <NUM_LIT> | Opcodes [ <NUM_LIT> ] << <NUM_LIT> | Opcodes [ <NUM_LIT> ] << <NUM_LIT> ; EmitIntValue ( Intval , Opcodes . size ( ) ) ; }

SwitchSection ( & FnStart -> getSection ( ) ) ;


<s> void <ISA_LIT>ELFStreamer :: emitFnStart ( ) { assert ( FnStart == nullptr ) ;

FnStart = getContext ( ) . createTempSymbol ( ) ;


<s> void <ISA_LIT>TargetELFStreamer :: emitFPU ( unsigned Value ) { FPU = Value ;


<s> case <STR_LIT> : case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ;


<s> void <ISA_LIT>ELFStreamer :: emitHandlerData ( ) {


<s> void <ISA_LIT>TargetELFStreamer :: emitInst ( uint32_t Inst , char Suffix ) {

getStreamer ( ) . emitInst ( Inst , Suffix ) ;


<s> void EmitInstruction ( const MCInst & Inst , const MCSubtargetInfo & STI ) override {

if ( IsThumb ) EmitThumbMappingSymbol ( ) ;


<s> void <ISA_LIT>TargetELFStreamer :: emitIntTextAttribute ( unsigned Attribute , unsigned IntValue , StringRef StringValue ) { setAttributeItems ( Attribute , IntValue , StringValue , true ) ;


<s> if ( ! Streamer . IsThumb ) return ; Streamer . getAssembler ( ) . registerSymbol ( * Symbol ) ; unsigned Type = cast < MCSymbolELF > ( Symbol ) -> getType ( ) ;

if ( Type == ELF :: STT_FUNC || Type == ELF :: STT_GNU_IFUNC ) Streamer . EmitThumbFunc ( Symbol ) ;


<s> assert ( FPReg == <STR_LIT> && <STR_LIT> ) ; FlushPendingOffset ( ) ; FPReg = Reg ; FPOffset = SPOffset + Offset ; const MCRegisterInfo * MRI = getContext ( ) . getRegisterInfo ( ) ;

UnwindOpAsm . EmitSetSP ( MRI -> getEncodingValue ( FPReg ) ) ;


<s> void <ISA_LIT>ELFStreamer :: emitPad ( int64_t Offset ) { SPOffset -= Offset ;


<s> SPOffset -= Offset ; PendingOffset -= Offset ;


<s> Personality = Per ; UnwindOpAsm . setPersonality ( Per ) ;


<s> DF -> getFixups ( ) . push_back ( MCFixup :: create ( DF -> getContents ( ) . size ( ) , PersonalityRef , MCFixup :: getKindForSize ( <NUM_LIT> , false ) ) ) ;


<s> assert ( Index < <STR_LIT> :: NUM_PERSONALITY_INDEX && <STR_LIT> ) ; PersonalityIndex = Index ;


<s> assert ( Index < <STR_LIT> :: NUM_PERSONALITY_INDEX && <STR_LIT> ) ;


<s> const MCRegisterInfo * MRI = getContext ( ) . getRegisterInfo ( ) ; for ( size_t i = <NUM_LIT> ; i < RegList . size ( ) ; ++ i ) { unsigned Reg = MRI -> getEncodingValue ( RegList [ i ] ) ; assert ( Reg < ( IsVector ? <NUM_LIT> : <NUM_LIT> ) && <STR_LIT> ) ; unsigned Bit = ( <NUM_LIT> << Reg ) ; if ( ( Mask & Bit ) == <NUM_LIT> ) { Mask |= Bit ; ++ Count ; } }

SPOffset -= Count * ( IsVector ? <NUM_LIT> : <NUM_LIT> ) ;


<s> UsedFP = true ; FPReg = NewFPReg ; if ( NewSPReg == <STR_LIT> ) FPOffset = SPOffset + Offset ; else FPOffset += Offset ;


<s> setAttributeItem ( Attribute , Value , true ) ;


<s> void <ISA_LIT>TargetELFStreamer :: emitTextAttribute ( unsigned Attribute , StringRef Value ) {


<s> void EmitThumbFunc ( MCSymbol * Func ) override {

getAssembler ( ) . setIsThumbFunc ( Func ) ;


<s> getAssembler ( ) . setIsThumbFunc ( Func ) ; EmitSymbolAttribute ( Func , MCSA_ELF_TypeFunction ) ;


<s> if ( const MCSymbolRefExpr * SRE = dyn_cast < MCSymbolRefExpr > ( Value ) ) {

const MCSymbol & Sym = SRE -> getSymbol ( ) ;


<s> void <ISA_LIT>ELFStreamer :: emitUnwindRaw ( int64_t Offset , const SmallVectorImpl < uint8_t > & Opcodes ) { FlushPendingOffset ( ) ; SPOffset = SPOffset - Offset ;


<s> void EmitValueImpl ( const MCExpr * Value , unsigned Size , SMLoc Loc ) override { if ( const MCSymbolRefExpr * SRE = dyn_cast_or_null < MCSymbolRefExpr > ( Value ) ) if ( SRE -> getKind ( ) == MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL && ! ( Size == <NUM_LIT> ) ) { getContext ( ) . reportError ( Loc , <STR_LIT> ) ;


<s> if ( const MCSymbolRefExpr * SRE = dyn_cast_or_null < MCSymbolRefExpr > ( Value ) ) if ( SRE -> getKind ( ) == MCSymbolRefExpr :: VK_<ISA_LIT>_SBREL && ! ( Size == <NUM_LIT> ) ) { getContext ( ) . reportError ( Loc , <STR_LIT> ) ;


<s> std :: sort ( Contents . begin ( ) , Contents . end ( ) , AttributeItem :: LessTag ) ; <ISA_LIT>ELFStreamer & Streamer = getStreamer ( ) ; if ( AttributeSection ) { Streamer . SwitchSection ( AttributeSection ) ; } else { AttributeSection = Streamer . getContext ( ) . getELFSection ( <STR_LIT> , ELF :: SHT_<ISA_LIT>_ATTRIBUTES , <NUM_LIT> ) ; Streamer . SwitchSection ( AttributeSection ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; } const size_t VendorHeaderSize = <NUM_LIT> + CurrentVendor . size ( ) + <NUM_LIT> ; const size_t TagHeaderSize = <NUM_LIT> + <NUM_LIT> ; const size_t ContentsSize = calculateContentSize ( ) ; Streamer . EmitIntValue ( VendorHeaderSize + TagHeaderSize + ContentsSize , <NUM_LIT> ) ; Streamer . EmitBytes ( CurrentVendor ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( <STR_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( TagHeaderSize + ContentsSize , <NUM_LIT> ) ; for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) { AttributeItem item = Contents [ i ] ; Streamer . EmitULEB128IntValue ( item . Tag ) ; switch ( item . Type ) { default : llvm_unreachable ( <STR_LIT> ) ; case AttributeItem :: NumericAttribute : Streamer . EmitULEB128IntValue ( item . IntValue ) ; break ; case AttributeItem :: TextAttribute : Streamer . EmitBytes ( item . StringValue ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; break ; case AttributeItem :: NumericAndTextAttributes : Streamer . EmitULEB128IntValue ( item . IntValue ) ; Streamer . EmitBytes ( item . StringValue ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; break ;


<s> <ISA_LIT>TargetStreamer & ATS = static_cast < <ISA_LIT>TargetStreamer & > ( TS ) ; ATS . finishAttributeSection ( ) ;


<s> MCTargetStreamer & TS = * getTargetStreamer ( ) ; <ISA_LIT>TargetStreamer & ATS = static_cast < <ISA_LIT>TargetStreamer & > ( TS ) ; ATS . finishAttributeSection ( ) ; MCELFStreamer :: FinishImpl ( ) ;


<s> UnwindOpAsm . EmitSPOffset ( - PendingOffset ) ; PendingOffset = <NUM_LIT> ;


<s> EmitValue ( PersonalityRef , <NUM_LIT> ) ; } assert ( ( Opcodes . size ( ) % <NUM_LIT> ) == <NUM_LIT> && <STR_LIT> ) ; for ( unsigned I = <NUM_LIT> ; I != Opcodes . size ( ) ; I += <NUM_LIT> ) { uint64_t Intval = Opcodes [ I ] | Opcodes [ I + <NUM_LIT> ] << <NUM_LIT> | Opcodes [ I + <NUM_LIT> ] << <NUM_LIT> | Opcodes [ I + <NUM_LIT> ] << <NUM_LIT> ; EmitIntValue ( Intval , <NUM_LIT> ) ; }

if ( NoHandlerData && ! Personality ) EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ;


return ( Twine ( <STR_LIT> ) + Twine ( Index ) ) . str ( ) ;


<s> static std :: string GetAEABIUnwindPersonalityName ( unsigned Index ) {

assert ( Index < <STR_LIT> :: NUM_PERSONALITY_INDEX && <STR_LIT> ) ;


<s> for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) if ( Contents [ i ] . Tag == Attribute ) return & Contents [ i ] ;


<s> for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) if ( Contents [ i ] . Tag == Attribute ) return & Contents [ i ] ; return nullptr ;


<s> static bool LessTag ( const AttributeItem & LHS , const AttributeItem & RHS ) { return ( RHS . Tag != <STR_LIT> ) && ( ( LHS . Tag == <STR_LIT> ) || ( LHS . Tag < RHS . Tag ) ) ;


<s> void <ISA_LIT>ELFStreamer :: Reset ( ) { ExTab = nullptr ; FnStart = nullptr ; Personality = nullptr ; PersonalityIndex = <STR_LIT> :: NUM_PERSONALITY_INDEX ; FPReg = <STR_LIT> ; FPOffset = <NUM_LIT> ; SPOffset = <NUM_LIT> ; PendingOffset = <NUM_LIT> ;


<s> if ( ! OverwriteExisting ) return ; Item -> Type = AttributeItem :: TextAttribute ; Item -> StringValue = Value ; return ; }


<s> if ( ! OverwriteExisting ) return ; Item -> Type = AttributeItem :: NumericAndTextAttributes ; Item -> IntValue = IntValue ; Item -> StringValue = StringValue ; return ; } AttributeItem Item = { AttributeItem :: NumericAndTextAttributes , Attribute , IntValue , StringValue } ; Contents . push_back ( Item ) ;


<s> Item -> IntValue = IntValue ; Item -> StringValue = StringValue ; return ; } AttributeItem Item = { AttributeItem :: NumericAndTextAttributes , Attribute , IntValue , StringValue } ; Contents . push_back ( Item ) ;


<s> } const MCSymbolELF * Group = FnSection . getGroup ( ) ; if ( Group ) Flags |= ELF :: SHF_GROUP ; MCSectionELF * EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , <NUM_LIT> , Group , FnSection . getUniqueID ( ) , nullptr , & FnSection ) ; assert ( EHSection && <STR_LIT> ) ; SwitchSection ( EHSection ) ; EmitCodeAlignment ( <NUM_LIT> ) ;


<s> SwitchToEHSection ( <STR_LIT> , ELF :: SHT_<ISA_LIT>_EXIDX , ELF :: SHF_ALLOC | ELF :: SHF_LINK_ORDER , SectionKind :: getData ( ) , FnStart ) ;


<s> SwitchToEHSection ( <STR_LIT> , ELF :: SHT_PROGBITS , ELF :: SHF_ALLOC , SectionKind :: getData ( ) , FnStart ) ;


<s> void <ISA_LIT>TargetELFStreamer :: switchVendor ( StringRef Vendor ) {

assert ( ! Vendor . empty ( ) && <STR_LIT> ) ;


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , MCAsmBackend & TAB , raw_pwrite_stream & OS , MCCodeEmitter * Emitter , bool IsThumb ) : MCELFStreamer ( Context , TAB , OS , Emitter ) , IsThumb ( IsThumb ) {


<s> <ISA_LIT>TargetELFStreamer ( MCStreamer & S ) : <ISA_LIT>TargetStreamer ( S ) , CurrentVendor ( <STR_LIT> ) {


<s> auto LastMappingSymbol = LastMappingSymbols . find ( Section ) ; if ( LastMappingSymbol != LastMappingSymbols . end ( ) ) {

LastEMSInfo = std :: move ( LastMappingSymbol -> second ) ;


<s> void ChangeSection ( MCSection * Section , const MCExpr * Subsection ) override { LastMappingSymbols [ getCurrentSection ( ) . first ] = std :: move ( LastEMSInfo ) ; MCELFStreamer :: ChangeSection ( Section , Subsection ) ;

auto LastMappingSymbol = LastMappingSymbols . find ( Section ) ;


<s> explicit ElfMappingSymbolInfo ( SMLoc Loc , MCFragment * F , uint64_t O ) : Loc ( Loc ) , F ( F ) , Offset ( O ) , State ( EMS_None ) {


<s> EMS -> Loc = SMLoc ( ) ; EMS -> F = getCurrentFragment ( ) ; EMS -> Offset = DF -> getContents ( ) . size ( ) ; LastEMSInfo -> State = EMS_Data ; return ;


<s> if ( ! ExTab && ! CantUnwind ) FlushUnwindOpcodes ( true ) ; SwitchToExIdxSection ( * FnStart ) ; if ( PersonalityIndex < <STR_LIT> :: NUM_PERSONALITY_INDEX ) EmitPersonalityFixup ( GetAEABIUnwindPersonalityName ( PersonalityIndex ) ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( <STR_LIT> :: EXIDX_CANTUNWIND , <NUM_LIT> ) ; } else if ( ExTab ) { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( ExTabEntryRef , <NUM_LIT> ) ; } else {

assert ( PersonalityIndex == <STR_LIT> :: AEABI_UNWIND_CPP_PR0 && <STR_LIT> ) ;


<s> assert ( FnStart && <STR_LIT> ) ; if ( ! ExTab && ! CantUnwind ) FlushUnwindOpcodes ( true ) ; SwitchToExIdxSection ( * FnStart ) ; if ( PersonalityIndex < <STR_LIT> :: NUM_PERSONALITY_INDEX ) EmitPersonalityFixup ( GetAEABIUnwindPersonalityName ( PersonalityIndex ) ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( <STR_LIT> :: EXIDX_CANTUNWIND , <NUM_LIT> ) ; } else if ( ExTab ) { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( ExTabEntryRef , <NUM_LIT> ) ; } else { assert ( PersonalityIndex == <STR_LIT> :: AEABI_UNWIND_CPP_PR0 && <STR_LIT> ) ; assert ( Opcodes . size ( ) == <NUM_LIT> && <STR_LIT> ) ; uint64_t Intval = Opcodes [ <NUM_LIT> ] | Opcodes [ <NUM_LIT> ] << <NUM_LIT> | Opcodes [ <NUM_LIT> ] << <NUM_LIT> | Opcodes [ <NUM_LIT> ] << <NUM_LIT> ; EmitIntValue ( Intval , Opcodes . size ( ) ) ; } SwitchSection ( & FnStart -> getSection ( ) ) ;


<s> if ( IsThumb ) EmitThumbMappingSymbol ( ) ;


<s> else Emit<ISA_LIT>MappingSymbol ( ) ;

MCELFStreamer :: EmitInstruction ( Inst , STI ) ;


<s> auto * Symbol = cast < MCSymbolELF > ( getContext ( ) . getOrCreateSymbol ( Name + <STR_LIT> + Twine ( MappingSymbolCounter ++ ) ) ) ; EmitLabel ( Symbol , Loc , F ) ; Symbol -> setType ( ELF :: STT_NOTYPE ) ; Symbol -> setBinding ( ELF :: STB_LOCAL ) ; Symbol -> setExternal ( false ) ;


<s> EmitLabel ( Symbol , Loc , F ) ; Symbol -> setType ( ELF :: STT_NOTYPE ) ;

Symbol -> setBinding ( ELF :: STB_LOCAL ) ;


<s> if ( LastEMSInfo -> State == EMS_Thumb ) return ; FlushPendingMappingSymbol ( ) ; EmitMappingSymbol ( <STR_LIT> ) ;


<s> void <ISA_LIT>TargetAsmStreamer :: finishAttributeSection ( ) {


<s> EmitMappingSymbol ( <STR_LIT> , EMS -> Loc , EMS -> F , EMS -> Offset ) ; EMS -> resetInfo ( ) ;


<s> EmitMappingSymbol ( <STR_LIT> , EMS -> Loc , EMS -> F , EMS -> Offset ) ;


<s> MCTargetStreamer & TS = * getTargetStreamer ( ) ; <ISA_LIT>TargetStreamer & ATS = static_cast < <ISA_LIT>TargetStreamer & > ( TS ) ; ATS . reset ( ) ;


<s> if ( Group ) Flags |= ELF :: SHF_GROUP ;

MCSectionELF * EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , <NUM_LIT> , Group , FnSection . getUniqueID ( ) , static_cast < const MCSymbolELF * > ( & Fn ) ) ;


<s> void <ISA_LIT>TargetAsmStreamer :: switchVendor ( StringRef Vendor ) {


<s> setAttributeItem ( Virtualization_use , AllowTZ , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6M : setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7A : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7R : setAttributeItem ( CPU_arch_profile , RealTimeProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7M : setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V8A : case <STR_LIT> :: <ISA_LIT>V8_1A : case <STR_LIT> :: <ISA_LIT>V8_2A : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; setAttributeItem ( MPextension_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZVirtualization , false ) ; break ;


<s> void <ISA_LIT>TargetELFStreamer :: emitObjectArch ( <STR_LIT> Value ) {


<s> <ISA_LIT>ELFStreamer * S = new <ISA_LIT>ELFStreamer ( Context , std :: move ( TAB ) , std :: move ( OW ) , std :: move ( Emitter ) , IsThumb ) ; S -> getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ;

if ( RelaxAll ) S -> getAssembler ( ) . setRelaxAll ( true ) ;


<s> break ; case <STR_LIT> :: <ISA_LIT>V6M : setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7A : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7R : setAttributeItem ( CPU_arch_profile , RealTimeProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7EM : case <STR_LIT> :: <ISA_LIT>V7M : setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V8A : case <STR_LIT> :: <ISA_LIT>V8_1A : case <STR_LIT> :: <ISA_LIT>V8_2A : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; setAttributeItem ( MPextension_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZVirtualization , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V8MBaseline : case <STR_LIT> :: <ISA_LIT>V8MMainline : setAttributeItem ( THUMB_ISA_use , AllowThumbDerived , false ) ; setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; break ; case <STR_LIT> :: IWMMXT : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( WMMX_arch , AllowWMMXv1 , false ) ; break ; case <STR_LIT> :: IWMMXT2 : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( WMMX_arch , AllowWMMXv2 , false ) ; break ; default : report_fatal_error ( <STR_LIT> + Twine ( <STR_LIT> ( Arch ) ) ) ;


<s> Streamer . SwitchSection ( AttributeSection ) ; } else { AttributeSection = Streamer . getContext ( ) . getELFSection ( <STR_LIT> , ELF :: SHT_<ISA_LIT>_ATTRIBUTES , <NUM_LIT> ) ; Streamer . SwitchSection ( AttributeSection ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; } const size_t VendorHeaderSize = <NUM_LIT> + CurrentVendor . size ( ) + <NUM_LIT> ; const size_t TagHeaderSize = <NUM_LIT> + <NUM_LIT> ; const size_t ContentsSize = calculateContentSize ( ) ; Streamer . EmitIntValue ( VendorHeaderSize + TagHeaderSize + ContentsSize , <NUM_LIT> ) ; Streamer . EmitBytes ( CurrentVendor ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( <STR_LIT> , <NUM_LIT> ) ;

Streamer . EmitIntValue ( TagHeaderSize + ContentsSize , <NUM_LIT> ) ;


<s> MappingSymbolCounter = <NUM_LIT> ; MCELFStreamer :: reset ( ) ; LastMappingSymbols . clear ( ) ; LastEMSInfo . reset ( ) ; getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ;


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , MCAsmBackend & TAB , raw_ostream & OS , MCCodeEmitter * Emitter , bool IsThumb ) : MCELFStreamer ( Context , TAB , OS , Emitter ) , IsThumb ( IsThumb ) , MappingSymbolCounter ( <NUM_LIT> ) , LastEMS ( EMS_None ) {


<s> <ISA_LIT>TargetELFStreamer ( MCStreamer & S ) : <ISA_LIT>TargetStreamer ( S ) , CurrentVendor ( <STR_LIT> ) , FPU ( <STR_LIT> ) , Arch ( <STR_LIT> ) , EmittedArch ( <STR_LIT> ) , AttributeSection ( <NUM_LIT> ) {


<s> LastMappingSymbols [ getPreviousSection ( ) . first ] = LastEMS ;

LastEMS = LastMappingSymbols . lookup ( Section ) ;


<s> MCELFStreamer * create<ISA_LIT>ELFStreamer ( MCContext & Context , MCAsmBackend & TAB , raw_ostream & OS , MCCodeEmitter * Emitter , bool RelaxAll , bool NoExecStack , bool IsThumb ) { <ISA_LIT>ELFStreamer * S = new <ISA_LIT>ELFStreamer ( Context , TAB , OS , Emitter , IsThumb ) ; new <ISA_LIT>TargetELFStreamer ( * S ) ;

S -> getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ;


<s> new <ISA_LIT>TargetELFStreamer ( * S ) ; S -> getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ;


<s> MCStreamer * createMCAsmStreamer ( MCContext & Ctx , formatted_raw_ostream & OS , bool isVerboseAsm , bool useCFI , bool useDwarfDirectory , MCInstPrinter * InstPrint , MCCodeEmitter * CE , MCAsmBackend * TAB , bool ShowInst ) {

MCStreamer * S = llvm :: createAsmStreamer ( Ctx , OS , isVerboseAsm , useCFI , useDwarfDirectory , InstPrint , CE , TAB , ShowInst ) ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitArch ( unsigned Arch ) { OS << <STR_LIT> << GetArchName ( Arch ) << <STR_LIT> ;


<s> case <STR_LIT> : case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; break ; case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZ , false ) ; break ; case <STR_LIT> : setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> : setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , RealTimeProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; setAttributeItem ( MPextension_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZVirtualization , false ) ; break ; case <STR_LIT> : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( WMMX_arch , AllowWMMXv1 , false ) ; break ; case <STR_LIT> :


<s> void <ISA_LIT>ELFStreamer :: EmitFixup ( const MCExpr * Expr , MCFixupKind Kind ) { MCDataFragment * Frag = getOrCreateDataFragment ( ) ; Frag -> getFixups ( ) . push_back ( MCFixup :: Create ( Frag -> getContents ( ) . size ( ) , Expr , Kind ) ) ;


<s> MCDataFragment * Frag = getOrCreateDataFragment ( ) ;

Frag -> getFixups ( ) . push_back ( MCFixup :: Create ( Frag -> getContents ( ) . size ( ) , Expr , Kind ) ) ;


<s> if ( ! ExTab && ! CantUnwind ) FlushUnwindOpcodes ( true ) ; SwitchToExIdxSection ( * FnStart ) ; if ( PersonalityIndex < <STR_LIT> :: NUM_PERSONALITY_INDEX ) EmitPersonalityFixup ( GetAEABIUnwindPersonalityName ( PersonalityIndex ) ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: Create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( <STR_LIT> :: EXIDX_CANTUNWIND , <NUM_LIT> ) ; } else if ( ExTab ) { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: Create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( ExTabEntryRef , <NUM_LIT> ) ; } else { assert ( PersonalityIndex == <STR_LIT> :: AEABI_UNWIND_CPP_PR0 && <STR_LIT> ) ; assert ( Opcodes . size ( ) == <NUM_LIT> && <STR_LIT> ) ;

EmitBytes ( StringRef ( reinterpret_cast < const char * > ( Opcodes . data ( ) ) , Opcodes . size ( ) ) ) ;


<s> if ( PersonalityIndex < <STR_LIT> :: NUM_PERSONALITY_INDEX ) EmitPersonalityFixup ( GetAEABIUnwindPersonalityName ( PersonalityIndex ) ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: Create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( <STR_LIT> :: EXIDX_CANTUNWIND , <NUM_LIT> ) ; } else if ( ExTab ) { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: Create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ;

EmitValue ( ExTabEntryRef , <NUM_LIT> ) ;


<s> void <ISA_LIT>ELFStreamer :: emitFnStart ( ) { assert ( FnStart == <NUM_LIT> ) ; FnStart = getContext ( ) . CreateTempSymbol ( ) ;


<s> assert ( FnStart == <NUM_LIT> ) ; FnStart = getContext ( ) . CreateTempSymbol ( ) ; EmitLabel ( FnStart ) ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitFPU ( unsigned FPU ) { OS << <STR_LIT> << GetFPUName ( FPU ) << <STR_LIT> ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitFPU ( unsigned FPU ) {

OS << <STR_LIT> << GetFPUName ( FPU ) << <STR_LIT> ;


<s> setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> :


<s> void <ISA_LIT>TargetAsmStreamer :: emitInst ( uint32_t Inst , char Suffix ) { OS << <STR_LIT> ;

if ( Suffix ) OS << <STR_LIT> << Suffix ;


<s> MCSymbolData & SD = getAssembler ( ) . getOrCreateSymbolData ( * Symbol ) ; MCELF :: SetType ( SD , ELF :: STT_NOTYPE ) ; MCELF :: SetBinding ( SD , ELF :: STB_LOCAL ) ; SD . setExternal ( false ) ; AssignSection ( Symbol , getCurrentSection ( ) . first ) ;

const MCExpr * Value = MCSymbolRefExpr :: Create ( Start , getContext ( ) ) ;


<s> OS << <STR_LIT> << GetArchName ( Arch ) << '\n' ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitObjectArch ( unsigned Arch ) {

OS << <STR_LIT> << GetArchName ( Arch ) << '\n' ;


<s> const MCSymbolRefExpr * PersonalityRef = MCSymbolRefExpr :: Create ( PersonalitySym , MCSymbolRefExpr :: VK_<ISA_LIT>_NONE , getContext ( ) ) ; AddValueSymbols ( PersonalityRef ) ; MCDataFragment * DF = getOrCreateDataFragment ( ) ; DF -> getFixups ( ) . push_back ( MCFixup :: Create ( DF -> getContents ( ) . size ( ) , PersonalityRef , MCFixup :: getKindForSize ( <NUM_LIT> , false ) ) ) ;


<s> const MCSymbol * PersonalitySym = getContext ( ) . GetOrCreateSymbol ( Name ) ; const MCSymbolRefExpr * PersonalityRef = MCSymbolRefExpr :: Create ( PersonalitySym , MCSymbolRefExpr :: VK_<ISA_LIT>_NONE , getContext ( ) ) ;


<s> void EmitThumbFunc ( MCSymbol * Func ) override { getAssembler ( ) . setIsThumbFunc ( Func ) ; MCSymbolData & SD = getAssembler ( ) . getOrCreateSymbolData ( * Func ) ;

SD . setFlags ( SD . getFlags ( ) | ELF_Other_ThumbFunc ) ;


<s> getAssembler ( ) . setIsThumbFunc ( Func ) ; MCSymbolData & SD = getAssembler ( ) . getOrCreateSymbolData ( * Func ) ;


<s> void <ISA_LIT>TargetAsmStreamer :: emitUnwindRaw ( int64_t Offset , const SmallVectorImpl < uint8_t > & Opcodes ) { OS << <STR_LIT> << Offset ; for ( SmallVectorImpl < uint8_t > :: const_iterator OCI = Opcodes . begin ( ) , OCE = Opcodes . end ( ) ;

OCI != OCE ; ++ OCI ) OS << <STR_LIT> << utohexstr ( * OCI ) ;


<s> Streamer . EmitBytes ( CurrentVendor ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( <STR_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( TagHeaderSize + ContentsSize , <NUM_LIT> ) ; for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) { AttributeItem item = Contents [ i ] ; Streamer . EmitULEB128IntValue ( item . Tag ) ; switch ( item . Type ) { default : llvm_unreachable ( <STR_LIT> ) ; case AttributeItem :: NumericAttribute : Streamer . EmitULEB128IntValue ( item . IntValue ) ; break ; case AttributeItem :: TextAttribute :

Streamer . EmitBytes ( item . StringValue . upper ( ) ) ;


<s> void <ISA_LIT>TargetELFStreamer :: finishAttributeSection ( ) { if ( FPU != <STR_LIT> ) emitFPUDefaultAttributes ( ) ; if ( Arch != <STR_LIT> ) emitArchDefaultAttributes ( ) ; if ( Contents . empty ( ) ) return ; std :: sort ( Contents . begin ( ) , Contents . end ( ) , AttributeItem :: LessTag ) ; <ISA_LIT>ELFStreamer & Streamer = getStreamer ( ) ; if ( AttributeSection ) { Streamer . SwitchSection ( AttributeSection ) ; } else { AttributeSection = Streamer . getContext ( ) . getELFSection ( <STR_LIT> , ELF :: SHT_<ISA_LIT>_ATTRIBUTES , <NUM_LIT> , SectionKind :: getMetadata ( ) ) ; Streamer . SwitchSection ( AttributeSection ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; } const size_t VendorHeaderSize = <NUM_LIT> + CurrentVendor . size ( ) + <NUM_LIT> ; const size_t TagHeaderSize = <NUM_LIT> + <NUM_LIT> ; const size_t ContentsSize = calculateContentSize ( ) ; Streamer . EmitIntValue ( VendorHeaderSize + TagHeaderSize + ContentsSize , <NUM_LIT> ) ; Streamer . EmitBytes ( CurrentVendor ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( <STR_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( TagHeaderSize + ContentsSize , <NUM_LIT> ) ; for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) { AttributeItem item = Contents [ i ] ; Streamer . EmitULEB128IntValue ( item . Tag ) ; switch ( item . Type ) { default : llvm_unreachable ( <STR_LIT> ) ; case AttributeItem :: NumericAttribute : Streamer . EmitULEB128IntValue ( item . IntValue ) ; break ; case AttributeItem :: TextAttribute : Streamer . EmitBytes ( item . StringValue . upper ( ) ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; break ; case AttributeItem :: NumericAndTextAttributes : Streamer . EmitULEB128IntValue ( item . IntValue ) ;


<s> int64_t LastRegSaveSPOffset = SPOffset - PendingOffset ; UnwindOpAsm . EmitSPOffset ( LastRegSaveSPOffset - FPOffset ) ; UnwindOpAsm . EmitSetSP ( MRI -> getEncodingValue ( FPReg ) ) ; } else { FlushPendingOffset ( ) ; } UnwindOpAsm . Finalize ( PersonalityIndex , Opcodes ) ; if ( NoHandlerData && PersonalityIndex == <STR_LIT> :: AEABI_UNWIND_CPP_PR0 ) return ; SwitchToExTabSection ( * FnStart ) ; assert ( ! ExTab ) ; ExTab = getContext ( ) . CreateTempSymbol ( ) ; EmitLabel ( ExTab ) ; if ( Personality ) {

const MCSymbolRefExpr * PersonalityRef = MCSymbolRefExpr :: Create ( Personality , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ;


<s> switch ( ID ) { default : llvm_unreachable ( <STR_LIT> ) ; break ;


<s> llvm_unreachable ( <STR_LIT> ) ; break ; case <STR_LIT> : return DEFAULT_CPU_NAME ; }


<s> static const char * GetArchDefaultCPUName ( unsigned ID ) {


<s> llvm_unreachable ( <STR_LIT> ) ; break ;


<s> for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) if ( Contents [ i ] . Tag == Attribute ) return & Contents [ i ] ;


<s> static const char * GetFPUName ( unsigned ID ) { switch ( ID ) { default : llvm_unreachable ( <STR_LIT> ) ; break ; } return NULL ;


<s> static bool LessTag ( const AttributeItem & LHS , const AttributeItem & RHS ) { return ( LHS . Tag < RHS . Tag ) ;


<s> FnStart = NULL ; Personality = NULL ; PersonalityIndex = <STR_LIT> :: NUM_PERSONALITY_INDEX ; FPReg = <STR_LIT> ;


<s> EHSecName += FnSecName ; } const MCSectionELF * EHSection = NULL ; if ( const MCSymbol * Group = FnSection . getGroup ( ) ) {

EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags | ELF :: SHF_GROUP , Kind , FnSection . getEntrySize ( ) , Group -> getName ( ) ) ;


<s> setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V4T : case <STR_LIT> :: <ISA_LIT>V5T : case <STR_LIT> :: <ISA_LIT>V5TE : case <STR_LIT> :: <ISA_LIT>V6 : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6T2 : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6K : case <STR_LIT> :: <ISA_LIT>V6KZ : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZ , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6M : setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7A : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7R : setAttributeItem ( CPU_arch_profile , RealTimeProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7EM : case <STR_LIT> :: <ISA_LIT>V7M : setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V8A : case <STR_LIT> :: <ISA_LIT>V8_1A : case <STR_LIT> :: <ISA_LIT>V8_2A : case <STR_LIT> :: <ISA_LIT>V8_3A : case <STR_LIT> :: <ISA_LIT>V8_4A : case <STR_LIT> :: <ISA_LIT>V8_5A : setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; setAttributeItem ( MPextension_use , Allowed , false ) ; setAttributeItem ( Virtualization_use , AllowTZVirtualization , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V8MBaseline : case <STR_LIT> :: <ISA_LIT>V8MMainline : setAttributeItem ( THUMB_ISA_use , AllowThumbDerived , false ) ; setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ; break ; case <STR_LIT> :: IWMMXT : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; setAttributeItem ( WMMX_arch , AllowWMMXv1 , false ) ; break ; case <STR_LIT> :: IWMMXT2 : setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; setAttributeItem ( THUMB_ISA_use , Allowed , false ) ;

setAttributeItem ( WMMX_arch , AllowWMMXv2 , false ) ;


<s> EmitDataMappingSymbol ( ) ; MCObjectStreamer :: emitFill ( NumBytes , FillValue , Loc ) ;


<s> void emitFill ( const MCExpr & NumBytes , uint64_t FillValue , SMLoc Loc ) override { EmitDataMappingSymbol ( ) ;

MCObjectStreamer :: emitFill ( NumBytes , FillValue , Loc ) ;


<s> } const size_t VendorHeaderSize = <NUM_LIT> + CurrentVendor . size ( ) + <NUM_LIT> ; const size_t TagHeaderSize = <NUM_LIT> + <NUM_LIT> ; const size_t ContentsSize = calculateContentSize ( ) ; Streamer . EmitIntValue ( VendorHeaderSize + TagHeaderSize + ContentsSize , <NUM_LIT> ) ; Streamer . EmitBytes ( CurrentVendor ) ; Streamer . EmitIntValue ( <NUM_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( <STR_LIT> , <NUM_LIT> ) ; Streamer . EmitIntValue ( TagHeaderSize + ContentsSize , <NUM_LIT> ) ; for ( size_t i = <NUM_LIT> ; i < Contents . size ( ) ; ++ i ) { AttributeItem item = Contents [ i ] ;

Streamer . EmitULEB128IntValue ( item . Tag ) ;


<s> EHSecName += FnSecName ; } const MCSymbolELF * Group = FnSection . getGroup ( ) ; if ( Group ) Flags |= ELF :: SHF_GROUP ; MCSectionELF * EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , <NUM_LIT> , Group , FnSection . getUniqueID ( ) , nullptr , & FnSection ) ; assert ( EHSection && <STR_LIT> ) ;


<s> if ( FnSecName != <STR_LIT> ) { EHSecName += FnSecName ; } const MCSymbolELF * Group = FnSection . getGroup ( ) ; if ( Group ) Flags |= ELF :: SHF_GROUP ; MCSectionELF * EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , <NUM_LIT> , Group , FnSection . getUniqueID ( ) , nullptr , & FnSection ) ;


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , MCAsmBackend & TAB , raw_ostream & OS , MCCodeEmitter * Emitter , bool IsThumb ) : MCELFStreamer ( SK_<ISA_LIT>ELFStreamer , Context , TAB , OS , Emitter ) , IsThumb ( IsThumb ) , MappingSymbolCounter ( <NUM_LIT> ) , LastEMS ( EMS_None ) , ExTab ( <NUM_LIT> ) , FnStart ( <NUM_LIT> ) , Personality ( <NUM_LIT> ) , CantUnwind ( false ) {


<s> LastEMS = LastMappingSymbols . lookup ( Section ) ; MCELFStreamer :: ChangeSection ( Section ) ;


<s> return S -> getKind ( ) == SK_<ISA_LIT>ELFStreamer ;


<s> <ISA_LIT>ELFStreamer * S = new <ISA_LIT>ELFStreamer ( Context , TAB , OS , Emitter , IsThumb ) ; if ( RelaxAll ) S -> getAssembler ( ) . setRelaxAll ( true ) ; if ( NoExecStack ) S -> getAssembler ( ) . setNoExecStack ( true ) ;


<s> MCELFStreamer :: EmitAssemblerFlag ( Flag ) ; switch ( Flag ) { case MCAF_SyntaxUnified : return ; case MCAF_Code16 : IsThumb = true ; return ; case MCAF_Code32 : IsThumb = false ; return ; case MCAF_Code64 : return ; case MCAF_SubsectionsViaSymbols : return ; }


<s> IsThumb = false ; return ; case MCAF_Code64 : return ; case MCAF_SubsectionsViaSymbols : return ; }


<s> MCELFStreamer :: EmitBytes ( Data , AddrSpace ) ;


<s> void <ISA_LIT>ELFStreamer :: EmitCantUnwind ( ) { CantUnwind = true ;


<s> EmitIntValue ( Entry , <NUM_LIT> , <NUM_LIT> ) ; } SwitchToExIdxSection ( * FnStart ) ; if ( PersonalityIndex == <NUM_LIT> ) EmitPersonalityFixup ( <STR_LIT> ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: Create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( EXIDX_CANTUNWIND , <NUM_LIT> , <NUM_LIT> ) ; } else { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: Create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( ExTabEntryRef , <NUM_LIT> , <NUM_LIT> ) ;


<s> EmitLabel ( ExTab ) ; PersonalityIndex = <NUM_LIT> ; uint32_t Entry = <NUM_LIT> ; uint32_t NumExtraEntryWords = <NUM_LIT> ; Entry |= NumExtraEntryWords << <NUM_LIT> ; Entry |= ( EHT_COMPACT | PersonalityIndex ) << <NUM_LIT> ; Entry |= UNWIND_OPCODE_FINISH << <NUM_LIT> ; Entry |= UNWIND_OPCODE_FINISH ; EmitIntValue ( Entry , <NUM_LIT> , <NUM_LIT> ) ; } SwitchToExIdxSection ( * FnStart ) ; if ( PersonalityIndex == <NUM_LIT> ) EmitPersonalityFixup ( <STR_LIT> ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: Create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( EXIDX_CANTUNWIND , <NUM_LIT> , <NUM_LIT> ) ; } else { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: Create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( ExTabEntryRef , <NUM_LIT> , <NUM_LIT> ) ;


<s> void <ISA_LIT>ELFStreamer :: EmitFnStart ( ) { assert ( FnStart == <NUM_LIT> ) ;

FnStart = getContext ( ) . CreateTempSymbol ( ) ;


<s> assert ( FnStart == <NUM_LIT> ) ; FnStart = getContext ( ) . CreateTempSymbol ( ) ; EmitLabel ( FnStart ) ;


<s> const MCSymbolRefExpr * PersonalityRef = MCSymbolRefExpr :: Create ( Personality , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( PersonalityRef , <NUM_LIT> , <NUM_LIT> ) ; uint32_t Entry = <NUM_LIT> ; uint32_t NumExtraEntryWords = <NUM_LIT> ; Entry |= NumExtraEntryWords << <NUM_LIT> ; Entry |= UNWIND_OPCODE_FINISH << <NUM_LIT> ; Entry |= UNWIND_OPCODE_FINISH << <NUM_LIT> ;


<s> else Emit<ISA_LIT>MappingSymbol ( ) ;

MCELFStreamer :: EmitInstruction ( Inst ) ;


<s> else Emit<ISA_LIT>MappingSymbol ( ) ; MCELFStreamer :: EmitInstruction ( Inst ) ;


<s> MCELF :: SetBinding ( SD , ELF :: STB_LOCAL ) ; SD . setExternal ( false ) ; Symbol -> setSection ( * getCurrentSection ( ) ) ;


<s> MCELF :: SetBinding ( SD , ELF :: STB_LOCAL ) ; SD . setExternal ( false ) ; Symbol -> setSection ( * getCurrentSection ( ) ) ; const MCExpr * Value = MCSymbolRefExpr :: Create ( Start , getContext ( ) ) ; Symbol -> setVariableValue ( Value ) ;


<s> void <ISA_LIT>ELFStreamer :: EmitPad ( int64_t Offset ) {


<s> MCDataFragment * DF = getOrCreateDataFragment ( ) ;

DF -> getFixups ( ) . push_back ( MCFixup :: Create ( DF -> getContents ( ) . size ( ) , PersonalityRef , MCFixup :: getKindForSize ( <NUM_LIT> , false ) ) ) ;


<s> const MCSymbolRefExpr * PersonalityRef = MCSymbolRefExpr :: Create ( PersonalitySym , MCSymbolRefExpr :: VK_<ISA_LIT>_NONE , getContext ( ) ) ; AddValueSymbols ( PersonalityRef ) ; MCDataFragment * DF = getOrCreateDataFragment ( ) ; DF -> getFixups ( ) . push_back ( MCFixup :: Create ( DF -> getContents ( ) . size ( ) , PersonalityRef , MCFixup :: getKindForSize ( <NUM_LIT> , false ) ) ) ;


<s> void <ISA_LIT>ELFStreamer :: EmitRegSave ( const SmallVectorImpl < unsigned > & RegList , bool IsVector ) {


<s> void <ISA_LIT>ELFStreamer :: EmitSetFP ( unsigned NewFpReg , unsigned NewSpReg , int64_t Offset ) {


<s> MCSymbolData & SD = getAssembler ( ) . getOrCreateSymbolData ( * Func ) ; SD . setFlags ( SD . getFlags ( ) | ELF_Other_ThumbFunc ) ;


<s> void EmitThumbFunc ( MCSymbol * Func ) { getAssembler ( ) . setIsThumbFunc ( Func ) ; MCSymbolData & SD = getAssembler ( ) . getOrCreateSymbolData ( * Func ) ;


<s> virtual void EmitValueImpl ( const MCExpr * Value , unsigned Size , unsigned AddrSpace ) { EmitDataMappingSymbol ( ) ; MCELFStreamer :: EmitValueImpl ( Value , Size , AddrSpace ) ;


<s> MCELFStreamer :: EmitValueImpl ( Value , Size , AddrSpace ) ;


<s> ExTab = NULL ; FnStart = NULL ; Personality = NULL ; CantUnwind = false ;


<s> if ( const MCSymbol * Group = FnSection . getGroup ( ) ) { EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags | ELF :: SHF_GROUP , Kind , FnSection . getEntrySize ( ) , Group -> getName ( ) ) ; } else { EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , Kind ) ; }


<s> <ISA_LIT>TargetELFStreamer ( MCStreamer & S ) : <ISA_LIT>TargetStreamer ( S ) , CurrentVendor ( <STR_LIT> ) , FPU ( <STR_LIT> ) , Arch ( <STR_LIT> ) , EmittedArch ( <STR_LIT> ) , AttributeSection ( nullptr ) {


<s> MCStreamer * create<ISA_LIT>NullStreamer ( MCContext & Ctx ) { MCStreamer * S = llvm :: createNullStreamer ( Ctx ) ; new <ISA_LIT>TargetStreamer ( * S ) ; return S ;


<s> MCStreamer * S = llvm :: createNullStreamer ( Ctx ) ; new <ISA_LIT>TargetStreamer ( * S ) ;


<s> MCStreamer * createMCAsmStreamer ( MCContext & Ctx , formatted_raw_ostream & OS , bool isVerboseAsm , bool useDwarfDirectory , MCInstPrinter * InstPrint , MCCodeEmitter * CE , MCAsmBackend * TAB , bool ShowInst ) { MCStreamer * S = llvm :: createAsmStreamer ( Ctx , OS , isVerboseAsm , useDwarfDirectory , InstPrint , CE , TAB , ShowInst ) ; new <ISA_LIT>TargetAsmStreamer ( * S , OS , * InstPrint , isVerboseAsm ) ; return S ;


<s> void <ISA_LIT>ELFStreamer :: emitFnEnd ( ) { assert ( FnStart && <STR_LIT> ) ; if ( ! ExTab && ! CantUnwind ) FlushUnwindOpcodes ( true ) ; SwitchToExIdxSection ( * FnStart ) ; if ( PersonalityIndex < <STR_LIT> :: NUM_PERSONALITY_INDEX ) EmitPersonalityFixup ( GetAEABIUnwindPersonalityName ( PersonalityIndex ) ) ; const MCSymbolRefExpr * FnStartRef = MCSymbolRefExpr :: Create ( FnStart , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( FnStartRef , <NUM_LIT> ) ; if ( CantUnwind ) { EmitIntValue ( <STR_LIT> :: EXIDX_CANTUNWIND , <NUM_LIT> ) ; } else if ( ExTab ) { const MCSymbolRefExpr * ExTabEntryRef = MCSymbolRefExpr :: Create ( ExTab , MCSymbolRefExpr :: VK_<ISA_LIT>_PREL31 , getContext ( ) ) ; EmitValue ( ExTabEntryRef , <NUM_LIT> ) ;


<s> setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> : setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; setAttributeItem ( <STR_LIT> , <STR_LIT> , false ) ; break ; case <STR_LIT> :


<s> const MCSymbolData & SD = Streamer . getOrCreateSymbolData ( Symbol ) ; unsigned Type = MCELF :: GetType ( SD ) ; if ( Type == ELF_STT_Func || Type == ELF_STT_GnuIFunc ) Streamer . EmitThumbFunc ( Symbol ) ;


<s> OS << <STR_LIT> << * Symbol << <STR_LIT> << * Value << '\n' ;


<s> MCELFStreamer :: EmitValueImpl ( Value , Size ) ;


<s> void EmitValueImpl ( const MCExpr * Value , unsigned Size , const SMLoc & Loc ) override { EmitDataMappingSymbol ( ) ; MCELFStreamer :: EmitValueImpl ( Value , Size ) ;


<s> } assert ( ( Opcodes . size ( ) % <NUM_LIT> ) == <NUM_LIT> && <STR_LIT> ) ; for ( unsigned I = <NUM_LIT> ; I != Opcodes . size ( ) ; I += <NUM_LIT> ) {

uint64_t Intval = Opcodes [ I ] | Opcodes [ I + <NUM_LIT> ] << <NUM_LIT> | Opcodes [ I + <NUM_LIT> ] << <NUM_LIT> | Opcodes [ I + <NUM_LIT> ] << <NUM_LIT> ;


<s> UnwindOpAsm . EmitSPOffset ( LastRegSaveSPOffset - FPOffset ) ; UnwindOpAsm . EmitSetSP ( MRI -> getEncodingValue ( FPReg ) ) ; } else { FlushPendingOffset ( ) ; } UnwindOpAsm . Finalize ( PersonalityIndex , Opcodes ) ; if ( NoHandlerData && PersonalityIndex == <STR_LIT> :: AEABI_UNWIND_CPP_PR0 ) return ; SwitchToExTabSection ( * FnStart ) ; assert ( ! ExTab ) ; ExTab = getContext ( ) . CreateTempSymbol ( ) ;


<s> default : llvm_unreachable ( <STR_LIT> ) ; break ; case <STR_LIT> : return DEFAULT_CPU_NAME ; } return nullptr ;


<s> default : llvm_unreachable ( <STR_LIT> ) ; break ; case <STR_LIT> : return NAME ;


<s> static const char * GetFPUName ( unsigned ID ) { switch ( ID ) { default : llvm_unreachable ( <STR_LIT> ) ; break ; }


<s> EHSecName += FnSecName ; } const MCSectionELF * EHSection = nullptr ; if ( const MCSymbol * Group = FnSection . getGroup ( ) ) { EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags | ELF :: SHF_GROUP , Kind , FnSection . getEntrySize ( ) , Group -> getName ( ) ) ; } else { EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , Kind ) ;


<s> const MCSectionELF * EHSection = nullptr ; if ( const MCSymbol * Group = FnSection . getGroup ( ) ) { EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags | ELF :: SHF_GROUP , Kind , FnSection . getEntrySize ( ) , Group -> getName ( ) ) ; } else { EHSection = getContext ( ) . getELFSection ( EHSecName , Type , Flags , Kind ) ; } assert ( EHSection && <STR_LIT> ) ; SwitchSection ( EHSection ) ; EmitCodeAlignment ( <NUM_LIT> ) ;


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , MCAsmBackend & TAB , raw_ostream & OS , MCCodeEmitter * Emitter , bool IsThumb ) : MCELFStreamer ( Context , TAB , OS , Emitter ) , IsThumb ( IsThumb ) , MappingSymbolCounter ( <NUM_LIT> ) , LastEMS ( EMS_None ) {


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , std :: unique_ptr < MCAsmBackend > TAB , std :: unique_ptr < MCObjectWriter > OW , std :: unique_ptr < MCCodeEmitter > Emitter , bool IsThumb , bool IsAndroid ) : MCELFStreamer ( Context , std :: move ( TAB ) , std :: move ( OW ) , std :: move ( Emitter ) ) , IsThumb ( IsThumb ) , IsAndroid ( IsAndroid ) {


<s> <ISA_LIT>ELFStreamer ( MCContext & Context , std :: unique_ptr < MCAsmBackend > TAB , std :: unique_ptr < MCObjectWriter > OW , std :: unique_ptr < MCCodeEmitter > Emitter , bool IsThumb , bool IsAndroid ) : MCELFStreamer ( Context , std :: move ( TAB ) , std :: move ( OW ) , std :: move ( Emitter ) ) , IsThumb ( IsThumb ) , IsAndroid ( IsAndroid ) { EHReset ( ) ;


<s> auto LastMappingSymbol = LastMappingSymbols . find ( Section ) ; if ( LastMappingSymbol != LastMappingSymbols . end ( ) ) {

LastEMSInfo = std :: move ( LastMappingSymbol -> second ) ;


<s> Reg = MRI . getEncodingValue ( Reg ) ; assert ( Reg < ( IsVector ? <NUM_LIT> : <NUM_LIT> ) && <STR_LIT> ) ; unsigned Bit = ( <NUM_LIT> << Reg ) ; if ( ( Mask & Bit ) == <NUM_LIT> ) { Mask |= Bit ; ++ Count ; } -- Idx ; } Mask_ = Mask ;


<s> <ISA_LIT>ELFStreamer * S = new <ISA_LIT>ELFStreamer ( Context , std :: move ( TAB ) , std :: move ( OW ) , std :: move ( Emitter ) , IsThumb , IsAndroid ) ;

S -> getAssembler ( ) . setELFHeaderEFlags ( ELF :: EF_<ISA_LIT>_EABI_VER5 ) ;


<s> return new <ISA_LIT>TargetELFStreamer ( S ) ;


<s> void <ISA_LIT>TargetELFStreamer :: emitArchDefaultAttributes ( ) { using namespace <ISA_LIT>BuildAttrs ; <ISA_LIT>ELFStreamer & S = getStreamer ( ) ; S . setAttributeItem ( CPU_name , <STR_LIT> ( Arch ) , false ) ; if ( EmittedArch == <STR_LIT> :: INVALID ) S . setAttributeItem ( CPU_arch , <STR_LIT> ( Arch ) , false ) ; else S . setAttributeItem ( CPU_arch , <STR_LIT> ( EmittedArch ) , false ) ; switch ( Arch ) { case <STR_LIT> :: <ISA_LIT>V2 : case <STR_LIT> :: <ISA_LIT>V2A : case <STR_LIT> :: <ISA_LIT>V3 : case <STR_LIT> :: <ISA_LIT>V3M : case <STR_LIT> :: <ISA_LIT>V4 : S . setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V4T : case <STR_LIT> :: <ISA_LIT>V5T : case <STR_LIT> :: XSCALE : case <STR_LIT> :: <ISA_LIT>V5TE : case <STR_LIT> :: <ISA_LIT>V6 : S . setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; S . setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6T2 : S . setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; S . setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6K : case <STR_LIT> :: <ISA_LIT>V6KZ : S . setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; S . setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; S . setAttributeItem ( Virtualization_use , AllowTZ , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V6M : S . setAttributeItem ( THUMB_ISA_use , Allowed , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7A : S . setAttributeItem ( CPU_arch_profile , ApplicationProfile , false ) ; S . setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; S . setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7R : S . setAttributeItem ( CPU_arch_profile , RealTimeProfile , false ) ; S . setAttributeItem ( <ISA_LIT>_ISA_use , Allowed , false ) ; S . setAttributeItem ( THUMB_ISA_use , AllowThumb32 , false ) ; break ; case <STR_LIT> :: <ISA_LIT>V7EM : case <STR_LIT> :: <ISA_LIT>V7M : S . setAttributeItem ( CPU_arch_profile , MicroControllerProfile , false ) ;


<s> OS << <STR_LIT> << <STR_LIT> ( ArchExt ) << <STR_LIT> ;


<s> void <ISA_LIT>TargetAsmStreamer :: emit<ISA_LIT>WinCFIAllocStack ( unsigned Size , bool Wide ) { if ( Wide ) OS << <STR_LIT> << Size << <STR_LIT> ; else OS << <STR_LIT> << Size << <STR_LIT> ;


<s> void <ISA_LIT>TargetAsmStreamer :: emit<ISA_LIT>WinCFIEpilogEnd ( ) { OS << <STR_LIT> ;


<s> if ( Wide ) OS << <STR_LIT> ; else OS << <STR_LIT> ;


<s> void <ISA_LIT>TargetAsmStreamer :: emit<ISA_LIT>WinCFINop ( bool Wide ) { if ( Wide ) OS << <STR_LIT> ; else OS << <STR_LIT> ;


<s> if ( Fragment ) OS << <STR_LIT> ; else OS << <STR_LIT> ;


<s> if ( First != Last ) OS << <STR_LIT> << First << <STR_LIT> << Last << <STR_LIT> ;

else OS << <STR_LIT> << First << <STR_LIT> ;


<s> void <ISA_LIT>TargetAsmStreamer :: emit<ISA_LIT>WinCFISaveLR ( unsigned Offset ) { OS << <STR_LIT> << Offset << <STR_LIT> ;


<s> First = - <NUM_LIT> ; } } } if ( First >= <NUM_LIT> ) printRegs ( OS , LS , First , <NUM_LIT> ) ; if ( Mask & ( <NUM_LIT> << <NUM_LIT> ) ) OS << LS << <STR_LIT> ; OS << <STR_LIT> ;


<s> OS << <STR_LIT> << Reg << <STR_LIT> ;


<s> case MCAF_Code32 : IsThumb = false ; return ; case MCAF_Code64 : return ; case MCAF_SubsectionsViaSymbols : return ;