diff --git a/.gitattributes b/.gitattributes
index 889e8ae514..282c40d1a7 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -16617,6 +16617,7 @@ tests/webtbf/tw37460.pp svneol=native#text/pascal
 tests/webtbf/tw37462.pp svneol=native#text/pascal
 tests/webtbf/tw37475.pp svneol=native#text/pascal
 tests/webtbf/tw37476.pp svneol=native#text/pascal
+tests/webtbf/tw37763.pp svneol=native#text/pascal
 tests/webtbf/tw3790.pp svneol=native#text/plain
 tests/webtbf/tw3812.pp svneol=native#text/plain
 tests/webtbf/tw3930a.pp svneol=native#text/plain
@@ -16758,6 +16759,7 @@ tests/webtbf/uw4541.pp svneol=native#text/pascal
 tests/webtbf/uw6922.pp svneol=native#text/plain
 tests/webtbf/uw8738a.pas svneol=native#text/plain
 tests/webtbf/uw8738b.pas svneol=native#text/plain
+tests/webtbs/DAT_TW37415 svneol=native#text/plain
 tests/webtbs/Integer.ns.pp svneol=native#text/pascal
 tests/webtbs/Integer.pp svneol=native#text/pascal
 tests/webtbs/tu2002.pp svneol=native#text/plain
@@ -18477,6 +18479,7 @@ tests/webtbs/tw37393.pp svneol=native#text/pascal
 tests/webtbs/tw37397.pp svneol=native#text/plain
 tests/webtbs/tw37398.pp svneol=native#text/pascal
 tests/webtbs/tw37400.pp svneol=native#text/pascal
+tests/webtbs/tw37415.pp svneol=native#text/plain
 tests/webtbs/tw3742.pp svneol=native#text/plain
 tests/webtbs/tw37423.pp svneol=native#text/plain
 tests/webtbs/tw37427.pp svneol=native#text/pascal
diff --git a/compiler/aarch64/cgcpu.pas b/compiler/aarch64/cgcpu.pas
index f3582e50df..a52e50b395 100644
--- a/compiler/aarch64/cgcpu.pas
+++ b/compiler/aarch64/cgcpu.pas
@@ -2507,7 +2507,7 @@ implementation
 
     procedure tcgaarch64.g_check_for_fpu_exception(list: TAsmList;force,clear : boolean);
       var
-        r : TRegister;
+        r, tmpreg: TRegister;
         ai: taicpu;
         l1,l2: TAsmLabel;
       begin
@@ -2516,18 +2516,17 @@ implementation
             (force or current_procinfo.FPUExceptionCheckNeeded)) then
           begin
             r:=getintregister(list,OS_INT);
+            tmpreg:=getintregister(list,OS_INT);
             list.concat(taicpu.op_reg_reg(A_MRS,r,NR_FPSR));
-            list.concat(taicpu.op_reg_const(A_TST,r,$1f));
+            list.concat(taicpu.op_reg_reg_const(A_AND,tmpreg,r,$1f));
             current_asmdata.getjumplabel(l1);
             current_asmdata.getjumplabel(l2);
-            ai:=taicpu.op_sym(A_B,l1);
+            ai:=taicpu.op_reg_sym_ofs(A_CBNZ,tmpreg,l1,0);
             ai.is_jmp:=true;
-            ai.condition:=C_NE;
             list.concat(ai);
-            list.concat(taicpu.op_reg_const(A_TST,r,$80));
-            ai:=taicpu.op_sym(A_B,l2);
+            list.concat(taicpu.op_reg_reg_const(A_AND,tmpreg,r,$80));
+            ai:=taicpu.op_reg_sym_ofs(A_CBZ,tmpreg,l2,0);
             ai.is_jmp:=true;
-            ai.condition:=C_EQ;
             list.concat(ai);
             a_label(list,l1);
             alloccpuregisters(list,R_INTREGISTER,paramanager.get_volatile_registers_int(pocall_default));
diff --git a/compiler/aoptobj.pas b/compiler/aoptobj.pas
index 6886f44631..d97ebb45d9 100644
--- a/compiler/aoptobj.pas
+++ b/compiler/aoptobj.pas
@@ -344,6 +344,9 @@ Unit AoptObj;
         { removes p from asml, updates registers and replaces p with hp1 (if the next instruction was known beforehand) }
         procedure RemoveCurrentP(var p: tai; const hp1: tai); inline;
 
+        { removes hp from asml then frees it }
+        procedure RemoveInstruction(const hp: tai); inline;
+
        { traces sucessive jumps to their final destination and sets it, e.g.
          je l1                je l3
          <code>               <code>
@@ -1510,6 +1513,13 @@ Unit AoptObj;
       end;
 
 
+    procedure TAOptObj.RemoveInstruction(const hp: tai); inline;
+      begin
+        AsmL.Remove(hp);
+        hp.Free;
+      end;
+
+
     function FindLiveLabel(hp: tai; var l: tasmlabel): Boolean;
       var
         next: tai;
diff --git a/compiler/m68k/n68kmem.pas b/compiler/m68k/n68kmem.pas
index 171c8496a8..2b4f86bbb8 100644
--- a/compiler/m68k/n68kmem.pas
+++ b/compiler/m68k/n68kmem.pas
@@ -99,7 +99,7 @@ implementation
 
         if (location.reference.base=NR_NO) and not (scaled) and not assigned(location.reference.symbol) then
           begin
-           { prefer an address reg, if we will be a base, for indexes any register works }
+            { prefer an address reg, if we will be a base, for indexes any register works }
             if isintregister(maybe_const_reg) then
               begin
                 //current_asmdata.CurrAsmList.concat(tai_comment.create(strpnew('updref: copytoa')));
@@ -109,26 +109,33 @@ implementation
               end;
             location.reference.base:=maybe_const_reg;
           end
-        else if location.reference.index=NR_NO then
-          begin
-            location.reference.index:=maybe_const_reg;
-            if (scaled) then
-              location.reference.scalefactor:=l;
-          end
         else
           begin
-            hreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
-            cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,location.reference,hreg);
-            reference_reset_base(location.reference,hreg,0,location.reference.temppos,location.reference.alignment,location.reference.volatility);
+            if location.reference.index<>NR_NO then
+              begin
+                { if we already have an index register, dereference the ref to a new base, to be able to insert an index }
+                hreg:=cg.getaddressregister(current_asmdata.CurrAsmList);
+                cg.a_loadaddr_ref_reg(current_asmdata.CurrAsmList,location.reference,hreg);
+                reference_reset_base(location.reference,hreg,0,location.reference.temppos,location.reference.alignment,location.reference.volatility);
+              end;
+            if def_cgsize(regsize) in [OS_8,OS_16] then
+              begin
+                { index registers are always sign extended on m68k, so we have to zero extend by hand,
+                  if the index variable is unsigned, and its width is less than the whole register }
+                //current_asmdata.CurrAsmList.concat(tai_comment.create(strpnew('updref: index zero extend')));
+                hreg:=cg.getintregister(current_asmdata.CurrAsmList,OS_ADDR);
+                cg.a_load_reg_reg(current_asmdata.CurrAsmList,def_cgsize(regsize),OS_ADDR,maybe_const_reg,hreg);
+                maybe_const_reg:=hreg;
+              end;
             { insert new index register }
             location.reference.index:=maybe_const_reg;
             if (scaled) then
               location.reference.scalefactor:=l;
           end;
-          { update alignment }
-          if (location.reference.alignment=0) then
-            internalerror(2009020704);
-          location.reference.alignment:=newalignment(location.reference.alignment,l);
+        { update alignment }
+        if (location.reference.alignment=0) then
+          internalerror(2009020704);
+        location.reference.alignment:=newalignment(location.reference.alignment,l);
       end;
 
      { see remarks for tcgvecnode.update_reference_reg_mul above }
diff --git a/compiler/msg/errore.msg b/compiler/msg/errore.msg
index 00f3e65a4b..3f9f8bb024 100644
--- a/compiler/msg/errore.msg
+++ b/compiler/msg/errore.msg
@@ -2064,6 +2064,9 @@ type_e_forward_interface_type_does_not_match=04127_E_The interface type of the f
 type_e_generic_const_type_not_allowed=04128_E_Type not allowed for generic constant parameter: $1
 % Only types that can also be used (indirectly) for untyped constants can be used as a
 % type for a generic constant parameter.
+type_e_cant_read_write_type_in_iso_mode=04129_E_Can't read or write variables of this type in iso mode
+% You are trying to \var{read} or \var{write} a variable from or to a
+% file of type text, which doesn't support that variable's type in the selected language mode (iso mode).
 % \end{description}
 #
 # Symtable
diff --git a/compiler/msgidx.inc b/compiler/msgidx.inc
index d194989e97..373883607f 100644
--- a/compiler/msgidx.inc
+++ b/compiler/msgidx.inc
@@ -585,6 +585,7 @@ const
   type_e_cblock_callconv=04126;
   type_e_forward_interface_type_does_not_match=04127;
   type_e_generic_const_type_not_allowed=04128;
+  type_e_cant_read_write_type_in_iso_mode=04129;
   sym_e_id_not_found=05000;
   sym_f_internal_error_in_symtablestack=05001;
   sym_e_duplicate_id=05002;
@@ -1126,9 +1127,9 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 85732;
+  MsgTxtSize = 85795;
 
   MsgIdxMax : array[1..20] of longint=(
-    28,106,356,129,99,63,143,36,223,68,
+    28,106,356,130,99,63,143,36,223,68,
     62,20,30,1,1,1,1,1,1,1
   );
diff --git a/compiler/msgtxt.inc b/compiler/msgtxt.inc
index 93f8f144ae..8ba502a975 100644
--- a/compiler/msgtxt.inc
+++ b/compiler/msgtxt.inc
@@ -742,654 +742,649 @@ const msgtxt : array[0..000357,1..240] of char=(
   '04127_E_The interface type of the forward declaration and the declared'+
   ' interface type do not matc','h for interface $1'#000+
   '04128_E_Type not allowed for generic constant parameter: $1'#000+
+  '04129_E_Can'#039't read or write variables of this type in iso mode'#000+
   '05000_E_Identifier not found "$1"'#000+
   '05001_F_Internal Error in SymTableStack()'#000+
-  '05002_E_Duplicate identifier "$1"'#000+
-  '05003_H_Identifier already defined in $1 at line $2',#000+
+  '05002_E_Duplicate iden','tifier "$1"'#000+
+  '05003_H_Identifier already defined in $1 at line $2'#000+
   '05004_E_Unknown identifier "$1"'#000+
   '05005_E_Forward declaration not solved "$1"'#000+
   '05007_E_Error in type definition'#000+
   '05009_E_Forward type not resolved "$1"'#000+
-  '05010_E_Only static variables can be used in static methods or outside'+
-  ' methods'#000+
-  '05012_E_Reco','rd or object or class type expected'#000+
+  '05010_E_Only static variable','s can be used in static methods or outsi'+
+  'de methods'#000+
+  '05012_E_Record or object or class type expected'#000+
   '05013_E_Instances of classes or objects with an abstract method are no'+
   't allowed'#000+
   '05014_W_Label not defined "$1"'#000+
-  '05015_E_Label used but not defined "$1"'#000+
+  '05015_E_Label used but not def','ined "$1"'#000+
   '05016_E_Illegal label declaration'#000+
-  '05017_E_GOTO and LA','BEL are not supported (use switch -Sg)'#000+
+  '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
   '05018_E_Label not found'#000+
   '05019_E_Identifier isn'#039't a label'#000+
   '05020_E_Label already defined'#000+
   '05021_E_Illegal type declaration of set elements'#000+
-  '05022_E_Forward class definition not resolved "$1"'#000+
-  '05023_H_Unit "','$1" not used in $2'#000+
+  '05','022_E_Forward class definition not resolved "$1"'#000+
+  '05023_H_Unit "$1" not used in $2'#000+
   '05024_H_Parameter "$1" not used'#000+
   '05025_N_Local variable "$1" not used'#000+
   '05026_H_Value parameter "$1" is assigned but never used'#000+
-  '05027_N_Local variable "$1" is assigned but never used'#000+
+  '05027_N_Local variable "$1" is as','signed but never used'#000+
   '05028_H_Local $1 "$2" is not used'#000+
-  '05029_N','_Private field "$1.$2" is never used'#000+
+  '05029_N_Private field "$1.$2" is never used'#000+
   '05030_N_Private field "$1.$2" is assigned but never used'#000+
   '05031_N_Private method "$1.$2" never used'#000+
   '05032_E_Set type expected'#000+
-  '05033_W_Function result does not seem to be set'#000+
-  '05034_W_Type "$1" is not align','ed correctly in current record for C'#000+
+  '05033_W_Functio','n result does not seem to be set'#000+
+  '05034_W_Type "$1" is not aligned correctly in current record for C'#000+
   '05035_E_Unknown record field identifier "$1"'#000+
   '05036_W_Local variable "$1" does not seem to be initialized'#000+
-  '05037_W_Variable "$1" does not seem to be initialized'#000+
+  '05037_W_Variable "$1" does not seem',' to be initialized'#000+
   '05038_E_Identifier idents no member "$1"'#000+
-  '050','39_H_Found declaration: $1'#000+
+  '05039_H_Found declaration: $1'#000+
   '05040_E_Data element too large'#000+
   '05042_E_No matching implementation for interface method "$1" found'#000+
   '05043_W_Symbol "$1" is deprecated'#000+
-  '05044_W_Symbol "$1" is not portable'#000+
+  '05044_W_Symbol "$1','" is not portable'#000+
   '05055_W_Symbol "$1" is not implemented'#000+
-  '05056_','E_Can'#039't create unique type from this type'#000+
+  '05056_E_Can'#039't create unique type from this type'#000+
   '05057_H_Local variable "$1" does not seem to be initialized'#000+
   '05058_H_Variable "$1" does not seem to be initialized'#000+
-  '05059_W_Function result variable does not seem to be initialized'#000+
-  '05060_H_Function re','sult variable does not seem to be initialized'#000+
+  '05059_W_Function resu','lt variable does not seem to be initialized'#000+
+  '05060_H_Function result variable does not seem to be initialized'#000+
   '05061_W_Variable "$1" read but nowhere assigned'#000+
   '05062_H_Found abstract method: $1'#000+
   '05063_W_Symbol "$1" is experimental'#000+
-  '05064_W_Forward declaration "$1" not resolved, assumed external'#000+
-  '05065_W_Symb','ol "$1" is belongs to a library'#000+
+  '05064_W_Forwa','rd declaration "$1" not resolved, assumed external'#000+
+  '05065_W_Symbol "$1" is belongs to a library'#000+
   '05066_W_Symbol "$1" is deprecated: "$2"'#000+
   '05067_E_Cannot find an enumerator for the type "$1"'#000+
-  '05068_E_Cannot find a "MoveNext" method in enumerator "$1"'#000+
-  '05069_E_Cannot find a "Current" property in enumerator "$','1"'#000+
+  '05068_E_Cannot find a "MoveNext" method in enumerator',' "$1"'#000+
+  '05069_E_Cannot find a "Current" property in enumerator "$1"'#000+
   '05070_E_Mismatch between number of declared parameters and number of c'+
   'olons in message string.'#000+
   '05071_N_Private type "$1.$2" never used'#000+
-  '05072_N_Private const "$1.$2" never used'#000+
+  '05072_N_Private const "$1.$2" never use','d'#000+
   '05073_N_Private property "$1.$2" never used'#000+
-  '05074_W_Unit "$1"',' is deprecated'#000+
+  '05074_W_Unit "$1" is deprecated'#000+
   '05075_W_Unit "$1" is deprecated: "$2"'#000+
   '05076_W_Unit "$1" is not portable'#000+
   '05077_W_Unit "$1" is belongs to a library'#000+
   '05078_W_Unit "$1" is not implemented'#000+
-  '05079_W_Unit "$1" is experimental'#000+
-  '05080_E_No full definition of the formal','ly declared class "$1" is in'+
-  ' scope. Add the unit containing its full definition to the uses clause'+
-  '.'#000+
+  '05079_W_Uni','t "$1" is experimental'#000+
+  '05080_E_No full definition of the formally declared class "$1" is in s'+
+  'cope. Add the unit containing its full definition to the uses clause.'#000+
   '05081_E_Gotos into initialization or finalization blocks of units are '+
-  'not allowed'#000+
+  'not all','owed'#000+
   '05082_E_Invalid external name "$1" for formal class "$2"'#000+
-  '0','5083_E_Complete class definition with external name "$1" here'#000+
+  '05083_E_Complete class definition with external name "$1" here'#000+
   '05084_W_Possible library conflict: symbol "$1" from library "$2" also '+
   'found in library "$3"'#000+
-  '05085_E_Cannot add implicit constructor '#039'Create'#039' because ident'+
-  'ifier already used by "$','1"'#000+
+  '05085_E_Cannot add impl','icit constructor '#039'Create'#039' because ide'+
+  'ntifier already used by "$1"'#000+
   '05086_E_Cannot generate default constructor for class, because parent '+
   'has no parameterless constructor'#000+
   '05087_D_Adding helper for $1'#000+
   '05088_E_Found declaration: $1'#000+
-  '05089_W_Local variable "$1" of a managed type does not seem to be init'+
-  'ializ','ed'#000+
+  '05089_W_Loca','l variable "$1" of a managed type does not seem to be in'+
+  'itialized'#000+
   '05090_W_Variable "$1" of a managed type does not seem to be initialize'+
   'd'#000+
   '05091_H_Local variable "$1" of a managed type does not seem to be init'+
   'ialized'#000+
-  '05092_H_Variable "$1" of a managed type does not seem to be initialize'+
-  'd'#000+
-  '05093_W_Functio','n result variable of a managed type does not seem to '+
-  'be initialized'#000+
+  '05092_H_Variable "$1" of',' a managed type does not seem to be initiali'+
+  'zed'#000+
+  '05093_W_Function result variable of a managed type does not seem to be'+
+  ' initialized'#000+
   '05094_H_Function result variable of a managed type does not seem to be'+
   ' initialized'#000+
-  '05095_W_Duplicate identifier "$1"'#000+
-  '05096_E_Generic type parameter "$1" does not match with',' the one in t'+
-  'he declaration'#000+
+  '05095_W_Duplicate identifi','er "$1"'#000+
+  '05096_E_Generic type parameter "$1" does not match with the one in the'+
+  ' declaration'#000+
   '05097_E_Generic type parameter declared as "$1"'#000+
   '05098_E_Record or object type expected'#000+
   '06009_E_Parameter list size exceeds 65535 bytes'#000+
-  '06012_E_File types must be var parameters'#000+
-  '06013_E_The use of a far pointer is','n'#039't allowed there'#000+
+  '06012_E_File t','ypes must be var parameters'#000+
+  '06013_E_The use of a far pointer isn'#039't allowed there'#000+
   '06015_E_EXPORT declared functions cannot be called'#000+
   '06016_W_Possible illegal call of constructor or destructor'#000+
   '06017_N_Inefficient code'#000+
-  '06018_W_Unreachable code'#000+
+  '06018_W_Unreachable code',#000+
   '06020_E_Abstract methods cannot be called directly'#000+
-  '06027_DL_Re','gister $1 weight $2 $3'#000+
+  '06027_DL_Register $1 weight $2 $3'#000+
   '06029_DL_Stack frame is omitted'#000+
   '06031_E_Object or class methods cannot be inline.'#000+
   '06032_E_Procvar calls cannot be inline.'#000+
-  '06033_E_No code for inline procedure stored'#000+
-  '06035_E_Element zero of an ansi/wide- or longstring',' cannot be access'+
-  'ed, use (set)length instead'#000+
+  '06033_E_No code for inline proce','dure stored'#000+
+  '06035_E_Element zero of an ansi/wide- or longstring cannot be accessed'+
+  ', use (set)length instead'#000+
   '06037_E_Constructors or destructors cannot be called inside a '#039'wit'+
   'h'#039' clause'#000+
   '06038_E_Cannot call message handler methods directly'#000+
-  '06039_E_Jump in or outside of an exception block'#000+
-  '06040_E_Control f','low statements are not allowed in a finally block'#000+
+  '060','39_E_Jump in or outside of an exception block'#000+
+  '06040_E_Control flow statements are not allowed in a finally block'#000+
   '06041_W_Parameters size exceeds limit for certain cpu'#039's'#000+
   '06042_W_Local variable size exceed limit for certain cpu'#039's'#000+
-  '06043_E_Local variables size exceeds supported limit'#000+
-  '06044_E_BREAK not allo','wed'#000+
+  '06043_E_Loca','l variables size exceeds supported limit'#000+
+  '06044_E_BREAK not allowed'#000+
   '06045_E_CONTINUE not allowed'#000+
   '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti'+
   'me library.'#000+
-  '06047_F_Cannot find system type "$1". Check if you use the correct run'+
-  ' time library.'#000+
-  '06048_H_Inherited call to abstract metho','d ignored'#000+
+  '06047_F_Cannot find system type "$1". Check if you use the cor','rect r'+
+  'un time library.'#000+
+  '06048_H_Inherited call to abstract method ignored'#000+
   '06049_E_Goto label "$1" not defined or optimized away'#000+
   '06050_F_Cannot find type "$1" in unit "$2". Check if you use the corre'+
   'ct run time library.'#000+
-  '06051_E_Interprocedural gotos are allowed only to outer subroutines'#000+
-  '06052_E_Label mus','t be defined in the same scope as it is declared'#000+
+  '06051_E_Interprocedura','l gotos are allowed only to outer subroutines'#000+
+  '06052_E_Label must be defined in the same scope as it is declared'#000+
   '06053_E_Leaving procedures containing explicit or implicit exceptions '+
   'frames using goto is not allowed'#000+
-  '06054_E_In ISO mode, the mod operator is defined only for positive quo'+
-  'tient'#000+
-  '06055_DL_Aut','o inlining: $1'#000+
+  '06054_E_In ISO mode, the ','mod operator is defined only for positive q'+
+  'uotient'#000+
+  '06055_DL_Auto inlining: $1'#000+
   '06056_E_The function used, is not supported by the selected instructio'+
   'n set: $1'#000+
   '06057_F_Maximum number of units ($1) reached for the current target'#000+
-  '06058_N_Call to subroutine "$1" marked as inline is not inlined'#000+
-  '06059_E_Case ','statement does not handle ordinal value "$1", and no el'+
-  'se/otherwise statement is present.'#000+
+  '06058_N_Call t','o subroutine "$1" marked as inline is not inlined'#000+
+  '06059_E_Case statement does not handle ordinal value "$1", and no else'+
+  '/otherwise statement is present.'#000+
   '06060_W_Case statement does not handle all possible cases'#000+
-  '06061_W_The current subroutine "$1" cannot be compiled for the target '+
-  'CPU, creating dummy'#000+
-  '06','062_W_The target CPU does not support preserving the registers in '+
-  'subroutine "$1"'#000+
+  '06061_W_The current subroutin','e "$1" cannot be compiled for the targe'+
+  't CPU, creating dummy'#000+
+  '06062_W_The target CPU does not support preserving the registers in su'+
+  'broutine "$1"'#000+
   '07000_DL_Starting $1 styled assembler parsing'#000+
   '07001_DL_Finished $1 styled assembler parsing'#000+
-  '07002_E_Non-label pattern contains @'#000+
-  '07004_E_Error building record',' offset'#000+
+  '070','02_E_Non-label pattern contains @'#000+
+  '07004_E_Error building record offset'#000+
   '07005_E_OFFSET used without identifier'#000+
   '07006_E_TYPE used without identifier'#000+
   '07007_E_Cannot use local variable or parameters here'#000+
   '07008_E_Need to use OFFSET here'#000+
-  '07009_E_Need to use $ here'#000+
-  '07010_E_Cannot use multiple relocatable symb','ols'#000+
+  '07009_E_','Need to use $ here'#000+
+  '07010_E_Cannot use multiple relocatable symbols'#000+
   '07011_E_Relocatable symbol can only be added'#000+
   '07012_E_Invalid constant expression'#000+
   '07013_E_Relocatable symbol is not allowed'#000+
   '07014_E_Invalid reference syntax'#000+
-  '07015_E_You cannot reach $1 from that code'#000+
-  '07016_E_Local symbols/labels are not ','allowed as references'#000+
+  '07015_E_You canno','t reach $1 from that code'#000+
+  '07016_E_Local symbols/labels are not allowed as references'#000+
   '07017_E_Invalid base and index register usage'#000+
   '07018_W_Possible error in object field handling'#000+
   '07019_E_Wrong scale factor specified'#000+
-  '07020_E_Multiple index register usage'#000+
+  '07020_E_Multiple index r','egister usage'#000+
   '07021_E_Invalid operand type'#000+
-  '07022_E_Invalid stri','ng as opcode operand: $1'#000+
+  '07022_E_Invalid string as opcode operand: $1'#000+
   '07023_W_@CODE and @DATA not supported'#000+
   '07024_E_Null label references are not allowed'#000+
   '07025_E_Divide by zero in asm evaluator'#000+
   '07026_E_Illegal expression'#000+
-  '07027_E_Escape sequence ignored: $1'#000+
-  '07028_E_Invalid symbol refer','ence'#000+
+  '0','7027_E_Escape sequence ignored: $1'#000+
+  '07028_E_Invalid symbol reference'#000+
   '07029_W_Fwait can cause emulation problems with emu387'#000+
   '07030_W_$1 without operand translated into $1P'#000+
   '07031_W_ENTER instruction is not supported by Linux kernel'#000+
-  '07032_W_Calling an overload function in assembler'#000+
-  '07033_E_Unsupported symb','ol type for operand'#000+
+  '07032_W_Cal','ling an overload function in assembler'#000+
+  '07033_E_Unsupported symbol type for operand'#000+
   '07034_E_Constant value out of bounds'#000+
   '07035_E_Error converting decimal $1'#000+
   '07036_E_Error converting octal $1'#000+
   '07037_E_Error converting binary $1'#000+
-  '07038_E_Error converting hexadecimal $1'#000+
+  '07038_E_Error c','onverting hexadecimal $1'#000+
   '07039_H_$1 translated to $2'#000+
-  '07040_W_$1',' is associated to an overloaded function'#000+
+  '07040_W_$1 is associated to an overloaded function'#000+
   '07041_E_Cannot use SELF outside a method'#000+
   '07042_E_Cannot use OLDEBP outside a nested procedure'#000+
-  '07043_W_Procedures cannot return any value in asm code'#000+
+  '07043_W_Procedures cannot return any value',' in asm code'#000+
   '07044_E_SEG not supported'#000+
-  '07045_E_Size suffix and ','destination or source size do not match'#000+
+  '07045_E_Size suffix and destination or source size do not match'#000+
   '07046_W_Size suffix and destination or source size do not match'#000+
   '07047_E_Assembler syntax error'#000+
-  '07048_E_Invalid combination of opcode and operands'#000+
+  '07048_E_Invalid combination of opcode and ','operands'#000+
   '07049_E_Assembler syntax error in operand'#000+
-  '07050_E_Asse','mbler syntax error in constant'#000+
+  '07050_E_Assembler syntax error in constant'#000+
   '07051_E_Invalid String expression'#000+
   '07052_W_Constant with symbol $1 for address which is not on a pointer'#000+
   '07053_E_Unrecognized opcode $1'#000+
-  '07054_E_Invalid or missing opcode'#000+
-  '07055_E_Invalid combination of prefix an','d opcode: $1'#000+
+  '07054_E_Inv','alid or missing opcode'#000+
+  '07055_E_Invalid combination of prefix and opcode: $1'#000+
   '07056_E_Invalid combination of override and opcode: $1'#000+
   '07057_E_Too many operands on line'#000+
   '07058_W_NEAR ignored'#000+
   '07059_W_FAR ignored'#000+
-  '07060_E_Duplicate local symbol $1'#000+
+  '07060_E_Duplicate local symbol $1'#000,
   '07061_E_Undefined local symbol $1'#000+
-  '07062_E_Unknown label identif','ier $1'#000+
+  '07062_E_Unknown label identifier $1'#000+
   '07063_E_Invalid register name'#000+
   '07064_E_Invalid floating point register name'#000+
   '07066_W_Modulo not supported'#000+
   '07067_E_Invalid floating point constant $1'#000+
-  '07068_E_Invalid floating point expression'#000+
+  '07068_E_Invalid floatin','g point expression'#000+
   '07069_E_Wrong symbol type'#000+
-  '07070_E_Cannot ind','ex a local var or parameter with a register'#000+
+  '07070_E_Cannot index a local var or parameter with a register'#000+
   '07071_E_Invalid segment override expression'#000+
   '07072_W_Identifier $1 supposed external'#000+
   '07073_E_Strings not allowed as constants'#000+
-  '07074_E_No type of variable specified'#000+
-  '07075_E_Assembler code not return','ed to text section'#000+
+  '07074_E_','No type of variable specified'#000+
+  '07075_E_Assembler code not returned to text section'#000+
   '07076_E_Not a directive or local symbol $1'#000+
   '07077_E_Using a defined name as a local label'#000+
   '07078_E_Dollar token is used without an identifier'#000+
-  '07079_W_32bit constant created for address'#000+
-  '07080_N_.align is target specific, use',' .balign or .p2align'#000+
+  '07079_W_32bit cons','tant created for address'#000+
+  '07080_N_.align is target specific, use .balign or .p2align'#000+
   '07081_E_Cannot directly access fields of pointer-based parameters'#000+
   '07082_E_Can'#039't access fields of objects/classes directly'#000+
-  '07083_E_No size specified and unable to determine the size of the oper'+
-  'ands'#000+
-  '07084_E_Cannot use RES','ULT in this function'#000+
+  '07083_E_No size specified and unab','le to determine the size of the op'+
+  'erands'#000+
+  '07084_E_Cannot use RESULT in this function'#000+
   '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+
   '07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+
-  '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
+  '07088_W_"$1 %st(n)" translated into "$1 %st','(n),%st"'#000+
   '07089_E_Char < not allowed here'#000+
-  '07090_E_Char > not all','owed here'#000+
+  '07090_E_Char > not allowed here'#000+
   '07093_W_ALIGN not supported'#000+
   '07094_E_Inc and Dec cannot be together'#000+
   '07095_E_Invalid register list for MOVEM or FMOVEM'#000+
   '07096_E_Reglist invalid for opcode'#000+
-  '07097_E_Higher cpu mode required ($1)'#000+
-  '07098_W_No size specified and unable to ','determine the size of the op'+
-  'erands, using DWORD as default'#000+
+  '07097_E_Higher ','cpu mode required ($1)'#000+
+  '07098_W_No size specified and unable to determine the size of the oper'+
+  'ands, using DWORD as default'#000+
   '07099_E_Syntax error while trying to parse a shifter operand'#000+
-  '07100_E_Address of packed component is not at a byte boundary'#000+
-  '07101_W_No size specified and unable to determine the size',' of the op'+
-  'erands, using BYTE as default'#000+
+  '07100_E_Address of packed component is not at a byte boun','dary'#000+
+  '07101_W_No size specified and unable to determine the size of the oper'+
+  'ands, using BYTE as default'#000+
   '07102_W_Use of $1 for parameters invalid here'#000+
   '07103_W_Use of $1 is not compatible with regcall convention'#000+
-  '07104_W_Use of $1 is not recommended for local variable access'#000+
-  '07105_W_Use of $1, access may c','ause a crash or value may be lost'#000+
+  '07104_W_Use of $1 is not recomm','ended for local variable access'#000+
+  '07105_W_Use of $1, access may cause a crash or value may be lost'#000+
   '07106_E_VMTOffset must be used in combination with a virtual method, a'+
   'nd "$1" is not virtual'#000+
-  '07107_E_Generating PIC, but reference is not PIC-safe'#000+
-  '07108_E_All registers in a register set must be of the same',' kind and'+
-  ' width'#000+
+  '07107_E_Generating PIC, but reference is not PIC-s','afe'#000+
+  '07108_E_All registers in a register set must be of the same kind and w'+
+  'idth'#000+
   '07109_E_A register set cannot be empty'#000+
   '07110_W_@GOTPCREL is useless and potentially dangerous for local symbo'+
   'ls'#000+
-  '07111_W_Constant with general purpose segment register'#000+
+  '07111_W_Constant with general purpose segment reg','ister'#000+
   '07112_E_Invalid offset value for $1'#000+
-  '07113_E_Invalid regis','ter for $1'#000+
+  '07113_E_Invalid register for $1'#000+
   '07114_E_SEH directives are allowed only in pure assembler procedures'#000+
   '07115_E_Directive "$1" is not supported for the current target'#000+
-  '07116_E_This function'#039's result location cannot be encoded directly'+
-  ' in a single operand when "nost','ackframe" is used'#000+
+  '07116_E_This function'#039's result loc','ation cannot be encoded direct'+
+  'ly in a single operand when "nostackframe" is used'#000+
   '07117_E_GOTPCREL references in Intel assembler syntax cannot contain a'+
   ' base or index register, and their offset must 0.'#000+
-  '07118_E_The current target does not support GOTPCREL relocations'#000+
-  '07119_W_Exported/global symbols shoul','d be accessed via the GOT'#000+
+  '07118_E_The current target does not sup','port GOTPCREL relocations'#000+
+  '07119_W_Exported/global symbols should be accessed via the GOT'#000+
   '07120_W_Check size of memory operand "$1"'#000+
   '07121_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+
   'ts, but expected [$3 bits]"'#000+
-  '07122_W_Check size of memory operand "$1: memory-operand-size is $2 bi'+
-  'ts, ','but expected [$3 bits + $4 byte offset]"'#000+
+  '07122_W_Che','ck size of memory operand "$1: memory-operand-size is $2 '+
+  'bits, but expected [$3 bits + $4 byte offset]"'#000+
   '07123_W_Check "$1: offset of memory operand is negative "$2 byte"'#000+
-  '07124_W_Check "$1: size of memory operand is empty, but es exists diff'+
-  'erent definitions of the memory size =>> map to $2 (smallest op','tion)'+
-  '"'#000+
+  '07124_W_Check "$1: size of memory operand is empty, but es exists diff',
+  'erent definitions of the memory size =>> map to $2 (smallest option)"'#000+
   '07125_E_Invalid register used in memory reference expression: "$1"'#000+
   '07126_E_SEG used without identifier'#000+
   '07127_E_@CODE and @DATA can only be used with the SEG operator'#000+
-  '07128_E_Not enough space (16 bits required) for the segment constan','t'+
+  '0712','8_E_Not enough space (16 bits required) for the segment constant'+
   ' of symbol $1'#000+
   '07129_E_Invalid value of .code directive constant'#000+
   '07130_W_No size specified and unable to determine the size of the cons'+
   'tant, using BYTE as default'#000+
-  '07131_W_No size specified and unable to determine the size of the cons'+
-  'tant, u','sing WORD as default'#000+
+  '07131_W_No siz','e specified and unable to determine the size of the co'+
+  'nstant, using WORD as default'#000+
   '07132_E_Cannot override ES segment'#000+
   '07133_W_Reference is not valid here (expected "$1")'#000+
   '07134_E_Address sizes do not match'#000+
-  '07135_E_Instruction "POP CS" is not valid for the current target'#000+
-  '07136_W_Instruction "POP CS" is ','not portable (it only works on 8086 '+
-  'and 8088 CPUs)'#000+
+  '07135_E_Instruction "POP CS" is no','t valid for the current target'#000+
+  '07136_W_Instruction "POP CS" is not portable (it only works on 8086 an'+
+  'd 8088 CPUs)'#000+
   '07137_E_Label $1 can only be declared public before it'#039's defined'#000+
   '07138_E_Local label $1 cannot be declared public'#000+
-  '07139_E_Cannot use multiple segment overrides'#000+
-  '07140_W_Multiple segment over','rides (only the last one will take effe'+
-  'ct)'#000+
+  '07139_E_Cann','ot use multiple segment overrides'#000+
+  '07140_W_Multiple segment overrides (only the last one will take effect'+
+  ')'#000+
   '07141_W_Segment base $1 will be generated, but is ignored by the CPU i'+
   'n 64-bit mode'#000+
-  '07142_E_Mismatch broadcasting elements (expected: {$1} found: {$2})'#000+
+  '07142_E_Mismatch broadcasting elements (expected: ','{$1} found: {$2})'#000+
   '08000_F_Too many assembler files'#000+
-  '08001_F_Sele','cted assembler output not supported'#000+
+  '08001_F_Selected assembler output not supported'#000+
   '08002_F_Comp not supported'#000+
   '08003_F_Direct not support for binary writers'#000+
   '08004_E_Allocating of data is only allowed in bss section'#000+
-  '08005_F_No binary writer selected'#000+
+  '08005_F_No',' binary writer selected'#000+
   '08006_E_Asm: Opcode $1 not in table'#000+
-  '080','07_E_Asm: $1 invalid combination of opcode and operands'#000+
+  '08007_E_Asm: $1 invalid combination of opcode and operands'#000+
   '08008_E_Asm: 16 Bit references not supported'#000+
   '08009_E_Asm: Invalid effective address'#000+
-  '08010_E_Asm: Immediate or reference expected'#000+
+  '08010_E_Asm: Immediate or reference e','xpected'#000+
   '08011_E_Asm: $1 value exceeds bounds $2'#000+
-  '08012_E_Asm: Sh','ort jump is out of range $1'#000+
+  '08012_E_Asm: Short jump is out of range $1'#000+
   '08013_E_Asm: Undefined label $1'#000+
   '08014_E_Asm: Comp type not supported for this target'#000+
   '08015_E_Asm: Extended type not supported for this target'#000+
-  '08016_E_Asm: Duplicate label $1'#000+
+  '08016_E','_Asm: Duplicate label $1'#000+
   '08017_E_Asm: Redefined label $1'#000+
-  '08018_','E_Asm: First defined here'#000+
+  '08018_E_Asm: First defined here'#000+
   '08019_E_Asm: Invalid register $1'#000+
   '08020_E_Asm: 16 or 32 Bit references not supported'#000+
   '08021_E_Asm: 64 Bit operands not supported'#000+
-  '08022_E_Asm: AH,BH,CH or DH cannot be used in an instruction requiring'+
-  ' REX prefix'#000+
-  '08023','_E_Missing .seh_endprologue directive'#000+
+  '08022_E_Asm: AH,BH,CH or',' DH cannot be used in an instruction requiri'+
+  'ng REX prefix'#000+
+  '08023_E_Missing .seh_endprologue directive'#000+
   '08024_E_Function prologue exceeds 255 bytes'#000+
   '08025_E_.seh_handlerdata directive without preceding .seh_handler'#000+
-  '08026_F_Relocation count for section $1 exceeds 65535'#000+
-  '08027_N_Change of bind type of symbol ','$1 from $2 to $3 after use'#000+
+  '08026_F_Relocation count for ','section $1 exceeds 65535'#000+
+  '08027_N_Change of bind type of symbol $1 from $2 to $3 after use'#000+
   '08028_H_Change of bind type of symbol $1 from $2 to $3 after use'#000+
   '08029_E_Asm: 32 Bit references not supported'#000+
   '08030_F_Code segment too large'#000+
-  '08031_F_Data segment too large'#000+
-  '08032_E_Instruction not supported by the ','selected instruction set'#000+
+  '08031_F_D','ata segment too large'#000+
+  '08032_E_Instruction not supported by the selected instruction set'#000+
   '08033_E_Asm: conditional branch destination is out of range'#000+
   '08034_E_Asm: RIP cannot be used as index register or with another regi'+
   'ster in a reference'#000+
-  '08035_F_Illegal function size for SEH function'#000+
-  '09000_W_Source ope','rating system redefined'#000+
+  '08','035_F_Illegal function size for SEH function'#000+
+  '09000_W_Source operating system redefined'#000+
   '09001_I_Assembling (pipe) $1'#000+
   '09002_E_Can'#039't create assembler file: $1'#000+
   '09003_E_Can'#039't create object file: $1 (error code: $2)'#000+
-  '09004_E_Can'#039't create archive file: $1'#000+
-  '09005_E_Assembler $1 not found, switching to external a','ssembling'#000+
+  '09004_E_Can'#039't create archive f','ile: $1'#000+
+  '09005_E_Assembler $1 not found, switching to external assembling'#000+
   '09006_T_Using assembler: $1'#000+
   '09007_E_Error while assembling exitcode $1'#000+
   '09008_E_Can'#039't call the assembler, error $1 switching to external a'+
   'ssembling'#000+
-  '09009_I_Assembling $1'#000+
+  '09009_I_Assembling $','1'#000+
   '09010_I_Assembling with smartlinking $1'#000+
-  '09011_W_Object $1 not',' found, Linking may fail !'#000+
+  '09011_W_Object $1 not found, Linking may fail !'#000+
   '09012_W_Library $1 not found, Linking may fail !'#000+
   '09013_E_Error while linking'#000+
   '09014_E_Can'#039't call the linker, switching to external linking'#000+
-  '09015_I_Linking $1'#000+
-  '09016_E_Util $1 not found, switching to external linking',#000+
+  '09015_I_Link','ing $1'#000+
+  '09016_E_Util $1 not found, switching to external linking'#000+
   '09017_T_Using util $1'#000+
   '09018_E_Creation of Executables not supported'#000+
   '09019_E_Creation of Dynamic/Shared Libraries not supported'#000+
-  '09035_E_Creation of Static Libraries not supported'#000+
+  '09035_E_Creation of Static Libraries not supporte','d'#000+
   '09020_I_Closing script $1'#000+
-  '09021_E_Resource compiler "$1" not ','found, switching to external mode'+
-  #000+
+  '09021_E_Resource compiler "$1" not found, switching to external mode'#000+
   '09022_I_Compiling resource $1'#000+
   '09023_T_Unit $1 cannot be statically linked, switching to smart linkin'+
   'g'#000+
-  '09024_T_Unit $1 cannot be smart linked, switching to static linking'#000+
-  '09025_T_Unit $1 cannot be shared lin','ked, switching to static linking'+
-  #000+
+  '09024_T_Unit $1 cannot be smart linked, s','witching to static linking'#000+
+  '09025_T_Unit $1 cannot be shared linked, switching to static linking'#000+
   '09026_E_Unit $1 cannot be smart or static linked'#000+
   '09027_E_Unit $1 cannot be shared or static linked'#000+
-  '09028_D_Calling resource compiler "$1" with "$2" as command line'#000+
+  '09028_D_Calling resource compiler "$1" with "','$2" as command line'#000+
   '09029_E_Error while compiling resources'#000+
-  '090','30_E_Can'#039't call the resource compiler "$1", switching to exte'+
-  'rnal mode'#000+
+  '09030_E_Can'#039't call the resource compiler "$1", switching to extern'+
+  'al mode'#000+
   '09031_E_Can'#039't open resource file "$1"'#000+
   '09032_E_Can'#039't write resource file "$1"'#000+
-  '09033_N_File "$1" not found for backquoted cat command'#000+
-  '09034_W_"$1" not found, this will pro','bably cause a linking failure'#000+
+  '09033_N_File "$1" not found f','or backquoted cat command'#000+
+  '09034_W_"$1" not found, this will probably cause a linking failure'#000+
   '09128_F_Can'#039't post process executable $1'#000+
   '09129_F_Can'#039't open executable $1'#000+
   '09130_X_Size of Code: $1 bytes'#000+
-  '09131_X_Size of initialized data: $1 bytes'#000+
+  '09131_X_Size of initialized data: $1 bytes',#000+
   '09132_X_Size of uninitialized data: $1 bytes'#000+
-  '09133_X_Stack spa','ce reserved: $1 bytes'#000+
+  '09133_X_Stack space reserved: $1 bytes'#000+
   '09134_X_Stack space committed: $1 bytes'#000+
   '09200_F_Executable image size is too big for $1 target.'#000+
-  '09201_W_Object file "$1" contains 32-bit absolute relocation to symbol'+
-  ' "$2".'#000+
-  '09202_E_Program segment too large (exceeds 64','k by $1 bytes)'#000+
+  '09201_W_Object file "$1" contains 32-bit absolute relocatio','n to symb'+
+  'ol "$2".'#000+
+  '09202_E_Program segment too large (exceeds 64k by $1 bytes)'#000+
   '09203_E_Code segment "$1" too large (exceeds 64k by $2 bytes)'#000+
   '09204_E_Data segment "$1" too large (exceeds 64k by $2 bytes)'#000+
-  '09205_E_Segment "$1" too large (exceeds 64k by $2 bytes)'#000+
-  '09206_E_Group "$1" too large (exceeds 64k by',' $2 bytes)'#000+
+  '09205_E_Segment "$1" too large (exceed','s 64k by $2 bytes)'#000+
+  '09206_E_Group "$1" too large (exceeds 64k by $2 bytes)'#000+
   '09207_E_Cannot create a .COM file, because the program contains segmen'+
   't relocations'#000+
   '09208_W_Program "$1" uses experimental CheckPointer option'#000+
-  '09209_E_Multiple defined symbol "$1"'#000+
-  '09210_E_COMDAT selection mode $1 not supported (s','ection: "$1")'#000+
+  '09209_E_Multiple define','d symbol "$1"'#000+
+  '09210_E_COMDAT selection mode $1 not supported (section: "$1")'#000+
   '09211_E_Associative section expected for COMDAT section "$1"'#000+
   '09212_E_COMDAT section selection mode doesn'#039't match for section "$'+
   '1" and symbol "$2"'#000+
-  '09213_E_Associative COMDAT section for section "$1" not found'#000+
-  '09214_D_Discarding',' duplicate symbol "$1" due to COMDAT selection mod'+
-  'e'#000+
+  '09213_E_Associati','ve COMDAT section for section "$1" not found'#000+
+  '09214_D_Discarding duplicate symbol "$1" due to COMDAT selection mode'#000+
   '09215_D_Discarding duplicate symbol "$1" with same size due to COMDAT '+
   'selection mode'#000+
-  '09216_D_Discarding duplicate symbol "$1" with same content due to COMD'+
-  'AT selection mode'#000+
-  '09217_D_Replaci','ng duplicate symbol "$1" with smaller size due to COM'+
-  'DAT selection mode'#000+
+  '09216_D_Discarding duplicate symbol "$1"',' with same content due to CO'+
+  'MDAT selection mode'#000+
+  '09217_D_Replacing duplicate symbol "$1" with smaller size due to COMDA'+
+  'T selection mode'#000+
   '09218_E_Size of duplicate COMDAT symbol "$1" differs'#000+
-  '09219_E_Content of duplicate COMDAT symbol "$1" differs'#000+
+  '09219_E_Content of duplicate COMDAT symbol "$1" diff','ers'#000+
   '09220_E_COMDAT selection mode for symbol "$1" differs'#000+
-  '09221','_E_Undefined symbol: $1 (first seen in $2)'#000+
+  '09221_E_Undefined symbol: $1 (first seen in $2)'#000+
   '09222_E_Undefined symbol: $1'#000+
   '10000_T_Unitsearch: $1'#000+
   '10001_T_PPU Loading $1'#000+
   '10002_U_PPU Name: $1'#000+
   '10003_U_PPU Flags: $1'#000+
-  '10004_U_PPU Crc: $1'#000+
+  '10004_U_PPU Crc:',' $1'#000+
   '10005_U_PPU Time: $1'#000+
   '10006_U_PPU File too short'#000+
-  '10007_U_PPU',' Invalid Header (no PPU at the begin)'#000+
+  '10007_U_PPU Invalid Header (no PPU at the begin)'#000+
   '10008_U_PPU Invalid Version $1'#000+
   '10009_U_PPU is compiled for another processor'#000+
   '10010_U_PPU is compiled for another target'#000+
-  '10011_U_PPU Source: $1'#000+
+  '10011_U_PPU Source:',' $1'#000+
   '10012_U_Writing $1'#000+
   '10013_F_Can'#039't Write PPU-File'#000+
-  '10014_F_Err','or reading PPU-File'#000+
+  '10014_F_Error reading PPU-File'#000+
   '10015_F_Unexpected end of PPU-File'#000+
   '10016_F_Invalid PPU-File entry: $1'#000+
   '10017_F_PPU Dbx count problem'#000+
   '10018_E_Illegal unit name: $1 (expecting $2)'#000+
-  '10019_F_Too much units'#000+
+  '10019_F_Too ','much units'#000+
   '10020_F_Circular unit reference between $1 and $2'#000+
-  '10','021_F_Can'#039't compile unit $1, no sources available'#000+
+  '10021_F_Can'#039't compile unit $1, no sources available'#000+
   '10022_F_Can'#039't find unit $1 used by $2'#000+
   '10023_W_Unit $1 was not found but $2 exists'#000+
   '10024_F_Unit $1 searched but $2 found'#000+
-  '10025_W_Compiling the system unit requires the -Us switch'#000+
-  '10026_F_Ther','e were $1 errors compiling module, stopping'#000+
+  '10025_W','_Compiling the system unit requires the -Us switch'#000+
+  '10026_F_There were $1 errors compiling module, stopping'#000+
   '10027_U_Load from $1 ($2) unit $3'#000+
   '10028_U_Recompiling $1, checksum changed for $2'#000+
   '10029_U_Recompiling $1, source found only'#000+
-  '10030_U_Recompiling unit, static lib is older than ppufile'#000+
-  '10031_U_Recom','piling unit, shared lib is older than ppufile'#000+
+  '10030_U_R','ecompiling unit, static lib is older than ppufile'#000+
+  '10031_U_Recompiling unit, shared lib is older than ppufile'#000+
   '10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
   '10033_U_Recompiling unit, obj is older than asm'#000+
-  '10034_U_Parsing interface of $1'#000+
+  '10034_U_Parsing interf','ace of $1'#000+
   '10035_U_Parsing implementation of $1'#000+
-  '10036_U_Second l','oad for unit $1'#000+
+  '10036_U_Second load for unit $1'#000+
   '10037_U_PPU Check file $1 time $2'#000+
   '10040_W_Can'#039't recompile unit $1, but found modified include files'#000+
-  '10041_U_File $1 is newer than the one used for creating PPU file $2'#000+
-  '10042_U_Trying to use a unit which was compiled with a d','ifferent FPU'+
-  ' mode'#000+
+  '10041_U_File $1 is newer than the one used for creating PPU f','ile $2'#000+
+  '10042_U_Trying to use a unit which was compiled with a different FPU m'+
+  'ode'#000+
   '10043_U_Loading interface units from $1'#000+
   '10044_U_Loading implementation units from $1'#000+
   '10045_U_Interface CRC changed for unit $1'#000+
-  '10046_U_Implementation CRC changed for unit $1'#000+
+  '10046_U_Implementation CRC chang','ed for unit $1'#000+
   '10047_U_Finished compiling unit $1'#000+
-  '10048_U_Addin','g dependency: $1 depends on $2'#000+
+  '10048_U_Adding dependency: $1 depends on $2'#000+
   '10049_U_No reload, is caller: $1'#000+
   '10050_U_No reload, already in second compile: $1'#000+
   '10051_U_Flag for reload: $1'#000+
   '10052_U_Forced reloading'#000+
-  '10053_U_Previous state of $1: $2'#000+
-  '10054_U_Already compiling $1, setting sec','ond compile'#000+
+  '10053_U_Pre','vious state of $1: $2'#000+
+  '10054_U_Already compiling $1, setting second compile'#000+
   '10055_U_Loading unit $1'#000+
   '10056_U_Finished loading unit $1'#000+
   '10057_U_Registering new unit $1'#000+
   '10058_U_Re-resolving unit $1'#000+
-  '10059_U_Skipping re-resolving unit $1, still loading used units'#000+
-  '10060_U_Unloading resource unit $1 (not needed',')'#000+
+  '10059_U_Skipping re-resolving unit $1, still lo','ading used units'#000+
+  '10060_U_Unloading resource unit $1 (not needed)'#000+
   '10061_E_Unit $1 was compiled using a different whole program optimizat'+
   'ion feedback input ($2, $3); recompile it without wpo or use the same '+
-  'wpo feedback input file for this compilation invocation'#000+
-  '10062_U_Indirect interface (objects/classe','s) CRC changed for unit $1'+
-  #000+
+  'wpo feedback input file for this co','mpilation invocation'#000+
+  '10062_U_Indirect interface (objects/classes) CRC changed for unit $1'#000+
   '10063_U_PPU is compiled for another i8086 memory model'#000+
   '10064_U_Loading unit $1 from package $2'#000+
-  '10065_F_Internal type "$1" was not found. Check if you use the correct'+
-  ' run time library.'#000+
-  '10066_F_Internal type "$1" do','es not look as expected. Check if you u'+
-  'se the correct run time library.'#000+
+  '10065_F_Internal type "$1" was not found. Check if you ','use the corre'+
+  'ct run time library.'#000+
+  '10066_F_Internal type "$1" does not look as expected. Check if you use'+
+  ' the correct run time library.'#000+
   '10067_U_Skipping unit, PPU and compiler have to be both compiled with '+
   'or without LLVM support'#000+
-  '11000_O_$1 [options] <inputfile> [options]'#000+
-  '11001_W_Only one source file su','pported, changing source file to comp'+
-  'ile from "$1" into "$2"'#000+
+  '11000_O_$1 ','[options] <inputfile> [options]'#000+
+  '11001_W_Only one source file supported, changing source file to compil'+
+  'e from "$1" into "$2"'#000+
   '11002_W_DEF file can be created only for OS/2'#000+
   '11003_E_Nested response files are not supported'#000+
-  '11004_F_No source file name in command line'#000+
+  '11004_F_No source file',' name in command line'#000+
   '11005_N_No option inside $1 config file'#000+
-  '1','1006_E_Illegal parameter: $1'#000+
+  '11006_E_Illegal parameter: $1'#000+
   '11007_H_-? writes help pages'#000+
   '11008_F_Too many config files nested'#000+
   '11009_F_Unable to open file $1'#000+
   '11010_D_Reading further options from $1'#000+
-  '11011_W_Target is already set to: $1'#000+
-  '11012_W_Shared libs not supported on ','DOS platform, reverting to stat'+
-  'ic'#000+
+  '11011_W_Tar','get is already set to: $1'#000+
+  '11012_W_Shared libs not supported on DOS platform, reverting to static'+
+  #000+
   '11013_F_In options file $1 at line $2 too many #IF(N)DEFs encountered'#000+
   '11014_F_In options file $1 at line $2 unexpected #ENDIFs encountered'#000+
-  '11015_F_Open conditional at the end of the options file'#000+
-  '11016_W_Deb','ug information generation is not supported by this execut'+
-  'able'#000+
+  '1101','5_F_Open conditional at the end of the options file'#000+
+  '11016_W_Debug information generation is not supported by this executab'+
+  'le'#000+
   '11017_H_Try recompiling with -dGDB'#000+
   '11018_W_You are using the obsolete switch $1'#000+
-  '11019_W_You are using the obsolete switch $1, please use $2'#000+
-  '11020_N_Switching assembler to default',' source writing assembler'#000+
+  '11019_W_You are using the obsolete ','switch $1, please use $2'#000+
+  '11020_N_Switching assembler to default source writing assembler'#000+
   '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
   '11022_W_"$1" assembler use forced'#000+
   '11026_T_Reading options from file $1'#000+
-  '11027_T_Reading options from environment $1'#000+
+  '11027_T_Readi','ng options from environment $1'#000+
   '11028_D_Handling option "$1"'#000+
-  '110','29_O_*** press enter ***'#000+
+  '11029_O_*** press enter ***'#000+
   '11030_H_Start of reading config file $1'#000+
   '11031_H_End of reading config file $1'#000+
   '11032_D_Interpreting option "$1"'#000+
-  '11036_D_Interpreting firstpass option "$1"'#000+
+  '11036_D_Interpreting firstpass option "$1','"'#000+
   '11033_D_Interpreting file option "$1"'#000+
-  '11034_D_Reading config ','file "$1"'#000+
+  '11034_D_Reading config file "$1"'#000+
   '11035_D_Found source file name "$1"'#000+
   '11039_E_Unknown codepage "$1"'#000+
   '11040_F_Config file $1 is a directory'#000+
-  '11041_W_Assembler output selected "$1" cannot generate debug info, deb'+
-  'ugging disabled'#000+
-  '11042_W_Use of ppc386.cfg is deprecated,',' please use fpc.cfg instead'#000+
+  '11041_W_Assembler output selected "$1" cannot generate debug in','fo, d'+
+  'ebugging disabled'#000+
+  '11042_W_Use of ppc386.cfg is deprecated, please use fpc.cfg instead'#000+
   '11043_F_In options file $1 at line $2 #ELSE directive without #IF(N)DE'+
   'F found'#000+
   '11044_F_Option "$1" is not, or not yet, supported on the current targe'+
-  't platform'#000+
-  '11045_F_The feature "$1" is not, or not yet, supporte','d on the select'+
-  'ed target platform'#000+
+  't',' platform'#000+
+  '11045_F_The feature "$1" is not, or not yet, supported on the selected'+
+  ' target platform'#000+
   '11046_N_DWARF debug information cannot be used with smart linking on t'+
   'his target, switching to static linking'#000+
-  '11047_W_Option "$1" is ignored for the current target platform.'#000+
-  '11048_W_Disabling external debug',' information because it is unsupport'+
-  'ed for the selected target/debug format combination.'#000+
+  '11047_W_Option "$1" is ignored fo','r the current target platform.'#000+
+  '11048_W_Disabling external debug information because it is unsupported'+
+  ' for the selected target/debug format combination.'#000+
   '11049_N_DWARF debug information cannot be used with smart linking with'+
-  ' external assembler, disabling static library creation.'#000+
-  '11050_E_Invalid value for',' MACOSX_DEPLOYMENT_TARGET environment varia'+
-  'ble: $1'#000+
+  ' external assemble','r, disabling static library creation.'#000+
+  '11050_E_Invalid value for MACOSX_DEPLOYMENT_TARGET environment variabl'+
+  'e: $1'#000+
   '11051_E_Invalid value for IPHONEOS_DEPLOYMENT_TARGET environment varia'+
   'ble: $1'#000+
-  '11052_E_You must use a FPU type of VFPV2, VFPV3 or VFPV3_D16 when usin'+
-  'g the EABIHF ABI target'#000+
-  '11053_W_The selec','ted debug format is not supported on the current ta'+
-  'rget, not changing the current setting'#000+
+  '11052_E_You must use a FPU type of VFPV2, VFPV3 ','or VFPV3_D16 when us'+
+  'ing the EABIHF ABI target'#000+
+  '11053_W_The selected debug format is not supported on the current targ'+
+  'et, not changing the current setting'#000+
   '11054_E_Argument to "$1" is missing'#000+
   '11055_E_Malformed parameter: $1'#000+
-  '11056_W_Smart linking requires external linker'#000+
-  '11057_E_Creating .COM files is not ','supported in the current memory m'+
-  'odel. Only the tiny memory model supports making .COM files.'#000+
+  '11056_W_Smart linki','ng requires external linker'#000+
+  '11057_E_Creating .COM files is not supported in the current memory mod'+
+  'el. Only the tiny memory model supports making .COM files.'#000+
   '11058_W_Experimental CheckPointer option not enabled because it is inc'+
-  'omptatible with -Ur option.'#000+
-  '11059_E_Unsupported target architecture -P$1, in','voke the "fpc" compi'+
-  'ler driver instead.'#000+
+  'omptatible wi','th -Ur option.'#000+
+  '11059_E_Unsupported target architecture -P$1, invoke the "fpc" compile'+
+  'r driver instead.'#000+
   '11060_E_Feature switches are only supported while compiling the system'+
   ' unit.'#000+
-  '11061_N_The selected debug format is not supported by the internal lin'+
-  'ker, switching to external linking'#000+
-  '12000_F_Cannot ope','n whole program optimization feedback file "$1"'#000+
+  '11061_N_The selected debug format is not supported by the in','ternal l'+
+  'inker, switching to external linking'#000+
+  '12000_F_Cannot open whole program optimization feedback file "$1"'#000+
   '12001_D_Processing whole program optimization information in wpo feedb'+
   'ack file "$1"'#000+
-  '12002_D_Finished processing the whole program optimization information'+
-  ' in wpo feedback file "$1"'#000+
-  '12003_E_Exp','ected section header, but got "$2" at line $1 of wpo feed'+
-  'back file'#000+
+  '12002_D_Finished processing the whole program',' optimization informati'+
+  'on in wpo feedback file "$1"'#000+
+  '12003_E_Expected section header, but got "$2" at line $1 of wpo feedba'+
+  'ck file'#000+
   '12004_W_No handler registered for whole program optimization section "'+
-  '$2" at line $1 of wpo feedback file, ignoring'#000+
-  '12005_D_Found whole program optimization section "$1" wit','h informati'+
-  'on about "$2"'#000+
+  '$2" at line $1 of wpo feedback file, ign','oring'#000+
+  '12005_D_Found whole program optimization section "$1" with information'+
+  ' about "$2"'#000+
   '12006_F_The selected whole program optimizations require a previously '+
   'generated feedback file (use -Fw to specify)'#000+
-  '12007_E_No collected information necessary to perform "$1" whole progr'+
-  'am optimization found'#000+
-  '12008_F_','Specify a whole program optimization feedback file to store '+
-  'the generated info in (using -FW)'#000+
+  '12007_E_No collected information nece','ssary to perform "$1" whole pro'+
+  'gram optimization found'#000+
+  '12008_F_Specify a whole program optimization feedback file to store th'+
+  'e generated info in (using -FW)'#000+
   '12009_E_Not generating any whole program optimization information, yet'+
-  ' a feedback file was specified (using -FW)'#000+
-  '12010_E_Not performing any whole ','program optimizations, yet an input'+
-  ' feedback file was specified (using -Fw)'#000+
+  ' a feedback f','ile was specified (using -FW)'#000+
+  '12010_E_Not performing any whole program optimizations, yet an input f'+
+  'eedback file was specified (using -Fw)'#000+
   '12011_D_Skipping whole program optimization section "$1", because not '+
-  'needed by the requested optimizations'#000+
-  '12012_W_Overriding previously read information for "$1" ','from feedbac'+
-  'k input file using information in section "$2"'#000+
+  'needed by the requested optimiz','ations'#000+
+  '12012_W_Overriding previously read information for "$1" from feedback '+
+  'input file using information in section "$2"'#000+
   '12013_E_Cannot extract symbol liveness information from program when s'+
   'tripping symbols, use -Xs-'#000+
-  '12014_E_Cannot extract symbol liveness information from program when w'+
-  'hen not linkin','g'#000+
+  '12014_E_Cannot extrac','t symbol liveness information from program when'+
+  ' when not linking'#000+
   '12015_F_Cannot find "$1" or "$2" to extract symbol liveness informatio'+
   'n from linked program'#000+
   '12016_E_Error during reading symbol liveness information produced by "'+
   '$1"'#000+
-  '12017_F_Error executing "$1" (exitcode: $2) to extract symbol informat'+
-  'io','n from linked program'#000+
+  '12017_F_E','rror executing "$1" (exitcode: $2) to extract symbol inform'+
+  'ation from linked program'#000+
   '12018_E_Collection of symbol liveness information can only help when u'+
   'sing smart linking, use -CX -XX'#000+
-  '12019_E_Cannot create specified whole program optimisation feedback fi'+
-  'le "$1"'#000+
+  '12019_E_Cannot create specified whole program optimis','ation feedback '+
+  'file "$1"'#000+
   '13001_F_Can'#039't find package $1'#000+
-  '13002_U_','PCP file for package $1 found'#000+
+  '13002_U_PCP file for package $1 found'#000+
   '13003_E_Duplicate package $1'#000+
   '13004_E_Unit $1 can not be part of a package'#000+
   '13005_N_Unit $1 is implicitely imported into package $2'#000+
-  '13006_F_Failed to create PCP file $2 for package $1'#000+
-  '13007_F_Failed to read PCP f','ile for package $1'#000+
+  '13006_F_Failed to',' create PCP file $2 for package $1'#000+
+  '13007_F_Failed to read PCP file for package $1'#000+
   '13008_T_PCP loading $1'#000+
   '13009_U_PCP Name: $1'#000+
   '13010_U_PCP Flags: $1'#000+
   '13011_U_PCP Crc: $1'#000+
   '13012_U_PCP Time: $1'#000+
   '13013_U_PCP File too short'#000+
-  '13014_U_PCP Invalid Header (no PCP at the begin)'#000+
+  '13014_U_PCP Invalid Head','er (no PCP at the begin)'#000+
   '13015_U_PCP Invalid Version $1'#000+
-  '13016_U','_PCP is compiled for another processor'#000+
+  '13016_U_PCP is compiled for another processor'#000+
   '13017_U_PCP is compiled for another target'#000+
   '13018_U_Writing $1'#000+
   '13019_F_Can'#039't Write PCP-File'#000+
   '13020_F_Error reading PCP-File'#000+
-  '13021_F_Unexpected end of PCP-File'#000+
+  '13021_F_Unexpect','ed end of PCP-File'#000+
   '13022_F_Invalid PCP-File entry: $1'#000+
-  '13023_U_T','rying to use a unit which was compiled with a different FPU'+
-  ' mode'#000+
+  '13023_U_Trying to use a unit which was compiled with a different FPU m'+
+  'ode'#000+
   '13024_T_Packagesearch: $1'#000+
   '13025_U_Required package $1'#000+
   '13026_U_Contained unit $1'#000+
-  '13027_E_Unit $1 is already contained in package $2'#000+
-  '13028_W_Unit $1 is imported from indirectly ','required package $2'#000+
+  '13027_E_Unit $1 is already conta','ined in package $2'#000+
+  '13028_W_Unit $1 is imported from indirectly required package $2'#000+
   '13029_U_PPL filename $1'#000+
   '11023_Free Pascal Compiler version $FPCFULLVERSION [$FPCDATE] for $FPC'+
   'CPU'#010+
   'Copyright (c) 1993-2020 by Florian Klaempfl and others'#000+
-  '11024_Free Pascal Compiler version $FPCVERSION'#010+
+  '1102','4_Free Pascal Compiler version $FPCVERSION'#010+
   #010+
-  'Compiler date      ',': $FPCDATE'#010+
+  'Compiler date      : $FPCDATE'#010+
   'Compiler CPU target: $FPCCPU'#010+
   #010+
   'Supported targets (targets marked with '#039'{*}'#039' are under develop'+
@@ -1399,10 +1394,10 @@ const msgtxt : array[0..000357,1..240] of char=(
   'Supported CPU instruction sets:'#010+
   '  $INSTRUCTIONSETS'#010+
   #010+
-  'Supported FPU instruction sets:'#010+
+  'S','upported FPU instruction sets:'#010+
   '  $FPUINSTRUCTIONSETS'#010+
   #010+
-  'Supported',' inline assembler modes:'#010+
+  'Supported inline assembler modes:'#010+
   '  $ASMMODES'#010+
   #010+
   'Recognized compiler and RTL features:'#010+
@@ -1414,10 +1409,10 @@ const msgtxt : array[0..000357,1..240] of char=(
   'Supported ABI targets:'#010+
   '  $ABITARGETS'#010+
   #010+
-  'Supported Optimizations:'#010+
+  'Suppo','rted Optimizations:'#010+
   '  $OPTIMIZATIONS'#010+
   #010+
-  'Supported Whole Program O','ptimizations:'#010+
+  'Supported Whole Program Optimizations:'#010+
   '  All'#010+
   '  $WPOPTIMIZATIONS'#010+
   #010+
@@ -1425,350 +1420,351 @@ const msgtxt : array[0..000357,1..240] of char=(
   '  $CODEGENERATIONBACKEND'#010+
   #010+
   'Supported Microcontroller types:$\n  $CONTROLLERTYPES$\n'#010+
-  'This program comes under the GNU General Public Licence'#010+
-  'For more information read COPYING.v2'#010,
+  'This program comes under the G','NU General Public Licence'#010+
+  'For more information read COPYING.v2'#010+
   #010+
   'Please report bugs in our bug tracker on:'#010+
   '                 https://bugs.freepascal.org'#010+
   #010+
   'More information may be found on our WWW pages (including directions'#010+
-  'for mailing lists useful for asking questions or discussing potential'#010+
-  'new features',', etc.):'#010+
+  'for mailing lists u','seful for asking questions or discussing potentia'+
+  'l'#010+
+  'new features, etc.):'#010+
   '                 https://www.freepascal.org'#000+
   '11025_F*0*_Only options valid for the default or selected platform are'+
   ' listed.'#010+
-  '**0*_Put + after a boolean switch option to enable it, - to disable it'+
-  '.'#010+
-  '**1@<x>_Read compiler options from <','x> in addition to the default fp'+
-  'c.cfg'#010+
+  '**0*_Put + after a boolean switch option to e','nable it, - to disable '+
+  'it.'#010+
+  '**1@<x>_Read compiler options from <x> in addition to the default fpc.'+
+  'cfg'#010+
   '**1a_The compiler does not delete the generated assembler file'#010+
   '**2a5_Don'#039't generate Big Obj COFF files for GNU Binutils older tha'+
-  'n 2.25 (Windows, NativeNT)'#010+
-  '**2al_List sourcecode lines in assembler file'#010,
+  'n 2.25 (Wi','ndows, NativeNT)'#010+
+  '**2al_List sourcecode lines in assembler file'#010+
   '**2an_List node info in assembler file (-dEXTDEBUG compiler)'#010+
   '**2ao_Add an extra option to external assembler call (ignored for inte'+
   'rnal)'#010+
-  '*L2ap_Use pipes instead of creating temporary assembler files'#010+
-  '**2ar_List register allocation/release in','fo in assembler file'#010+
+  '*L2ap_Use pipes instead of creating temp','orary assembler files'#010+
+  '**2ar_List register allocation/release info in assembler file'#010+
   '**2at_List temp allocation/release info in assembler file'#010+
   '**1A<x>_Output format:'#010+
   '**2Adefault_Use default assembler'#010+
   '3*2Aas_Assemble using GNU AS'#010+
-  '3*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+
-  '3*2Amacho_Mach-O (Darwin',', Intel 32 bit) using internal writer'#010+
+  '3*2Aas-darwi','n_Assemble Darwin Mach-O using GNU GAS'#010+
+  '3*2Amacho_Mach-O (Darwin, Intel 32 bit) using internal writer'#010+
   '8*2Anasm_Assemble using Nasm'#010+
   '8*2Anasmobj_Assemble using Nasm'#010+
   '3*2Anasm_Assemble using Nasm'#010+
   '3*2Anasmcoff_COFF (Go32v2) file using Nasm'#010+
-  '3*2Anasmelf_ELF32 (Linux) file using Nasm'#010+
-  '3*2Anasmwin32_Win32 object ','file using Nasm'#010+
+  '3*2Ana','smelf_ELF32 (Linux) file using Nasm'#010+
+  '3*2Anasmwin32_Win32 object file using Nasm'#010+
   '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
   '3*2Anasmdarwin_macho32 object file using Nasm (experimental)'#010+
   '3*2Awasm_Obj file using Wasm (Watcom)'#010+
-  '3*2Anasmobj_Obj file using Nasm'#010+
+  '3*2Anasmobj_O','bj file using Nasm'#010+
   '3*2Amasm_Obj file using Masm (Microsoft)'#010+
-  '3*2','Atasm_Obj file using Tasm (Borland)'#010+
+  '3*2Atasm_Obj file using Tasm (Borland)'#010+
   '3*2Aelf_ELF (Linux) using internal writer'#010+
   '3*2Acoff_COFF (Go32v2) using internal writer'#010+
   '3*2Apecoff_PE-COFF (Win32) using internal writer'#010+
-  '3*2Ayasm_Assemble using Yasm (experimental)'#010+
-  '4*2Aas_Assemble using GN','U AS'#010+
+  '3*2Ay','asm_Assemble using Yasm (experimental)'#010+
+  '4*2Aas_Assemble using GNU AS'#010+
   '4*2Agas_Assemble using GNU GAS'#010+
   '4*2Aas-darwin_Assemble Darwin Mach-O using GNU GAS'#010+
   '4*2Amasm_Win64 object file using ml64 (Microsoft)'#010+
-  '4*2Apecoff_PE-COFF (Win64) using internal writer'#010+
+  '4*2Apecoff_PE-COFF (Win64) using interna','l writer'#010+
   '4*2Aelf_ELF (Linux-64bit) using internal writer'#010+
-  '4*2Aya','sm_Assemble using Yasm (experimental)'#010+
+  '4*2Ayasm_Assemble using Yasm (experimental)'#010+
   '4*2Anasm_Assemble using Nasm (experimental)'#010+
   '4*2Anasmwin64_Assemble Win64 object file using Nasm (experimental)'#010+
-  '4*2Anasmelf_Assemble Linux-64bit object file using Nasm (experimental)'+
-  #010+
-  '4*2Anasmdarwin_Assem','ble darwin macho64 object file using Nasm (exper'+
-  'imental)'#010+
+  '4*2Anasmelf_Assemble Linux-6','4bit object file using Nasm (experimenta'+
+  'l)'#010+
+  '4*2Anasmdarwin_Assemble darwin macho64 object file using Nasm (experim'+
+  'ental)'#010+
   '6*2Aas_Unix o-file using GNU AS'#010+
   '6*2Agas_GNU Motorola assembler'#010+
   '6*2Amit_MIT Syntax (old GAS)'#010+
-  '6*2Amot_Standard Motorola assembler'#010+
+  '6*2Amot_Standard Motorola as','sembler'#010+
   '6*2Avasm_Use vasm to assemble'#010+
-  'A*2Aas_Assemble using GNU',' AS'#010+
+  'A*2Aas_Assemble using GNU AS'#010+
   'P*2Aas_Assemble using GNU AS'#010+
   'S*2Aas_Assemble using GNU AS'#010+
   'Z*2Asdcc-sdasz80_Assemble using SDCC-SDASZ80'#010+
   'Z*2Az80asm_Assemble using z80asm'#010+
   '**1b_Generate browser info'#010+
-  '**2bl_Generate local symbol info'#010+
+  '**2bl_Gene','rate local symbol info'#010+
   '**1B_Build all modules'#010+
-  '**1C<x>_Code gene','ration options:'#010+
+  '**1C<x>_Code generation options:'#010+
   '**2C3_Turn on ieee error checking for constants'#010+
   '**2Ca<x>_Select ABI; see fpc -i or fpc -ia for possible values'#010+
-  '**2Cb_Generate code for a big-endian variant of the target architectur'+
-  'e'#010+
-  '**2Cc<x>_Set default calling convention t','o <x>'#010+
+  '**2Cb_Generate code for a big-endian variant of th','e target architect'+
+  'ure'#010+
+  '**2Cc<x>_Set default calling convention to <x>'#010+
   '**2CD_Create also dynamic library (not supported)'#010+
   '**2Ce_Compilation with emulated floating point opcodes'#010+
   '**2CE_Generate FPU code which can raise exceptions'#010+
-  '**2Cf<x>_Select fpu instruction set to use; see fpc -i or fpc -if for '+
-  'possible',' values'#010+
+  '**2Cf<x>_Select',' fpu instruction set to use; see fpc -i or fpc -if fo'+
+  'r possible values'#010+
   '**2CF<x>_Minimal floating point constant precision (default, 32, 64)'#010+
   '**2Cg_Generate PIC code'#010+
   '**2Ch<n>[,m]_<n> bytes min heap size (between 1023 and 67107840) and o'+
-  'ptionally [m] max heap size'#010+
+  'ptiona','lly [m] max heap size'#010+
   '**2Ci_IO-checking'#010+
-  'A*2CI<x>_Select instruc','tion set on ARM: ARM or THUMB'#010+
+  'A*2CI<x>_Select instruction set on ARM: ARM or THUMB'#010+
   'L*2Cl<x>_LLVM code generation options'#010+
   'L*3Clflto_Enable Link-time optimisation (needed both when compiling un'+
   'its and programs/libraries)'#010+
-  'L*3Clfltonosystem_Disable LTO for the system unit (needed with at leas'+
-  't Xc','ode 10.2 and earlier due to linker bugs)'#010+
+  'L*3Clfltono','system_Disable LTO for the system unit (needed with at le'+
+  'ast Xcode 10.2 and earlier due to linker bugs)'#010+
   'L*3Clv<x>_LLVM target version: Xcode-10.1, 7.0, 8.0, .., 10.0'#010+
   '**2Cn_Omit linking stage'#010+
   'P*2CN_Generate nil-pointer checks (AIX-only)'#010+
-  '**2Co_Check overflow of integer operations'#010+
-  '**2CO_Check for possible',' overflow of integer operations'#010+
+  '**2C','o_Check overflow of integer operations'#010+
+  '**2CO_Check for possible overflow of integer operations'#010+
   '**2Cp<x>_Select instruction set; see fpc -i or fpc -ic for possible va'+
   'lues'#010+
   '**2CP<x>=<y>_ packing settings'#010+
-  '**3CPPACKSET=<y>_ <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 '+
-  'and 8'#010+
-  '**3CPPACKENUM=<y>_ <y> enu','m packing: 0, 1, 2 and 4 or DEFAULT or NOR'+
-  'MAL'#010+
+  '**3CPPACKSET=<y>_ <y> set allocation: 0',', 1 or DEFAULT or NORMAL, 2, '+
+  '4 and 8'#010+
+  '**3CPPACKENUM=<y>_ <y> enum packing: 0, 1, 2 and 4 or DEFAULT or NORMA'+
+  'L'#010+
   '**3CPPACKRECORD=<y>_ <y> record packing: 0 or DEFAULT or NORMAL, 1, 2,'+
   ' 4, 8, 16 and 32'#010+
   '**2Cr_Range checking'#010+
-  '**2CR_Verify object method call validity'#010+
+  '**2CR_Verify object met','hod call validity'#010+
   '**2Cs<n>_Set stack checking size to <n>'#010+
-  '**2Ct','_Stack checking (for testing only, see manual)'#010+
+  '**2Ct_Stack checking (for testing only, see manual)'#010+
   '8*2CT<x>_Target-specific code generation options'#010+
   '3*2CT<x>_Target-specific code generation options'#010+
-  '4*2CT<x>_Target-specific code generation options'#010+
-  'p*2CT<x>_Target-specific code generation optio','ns'#010+
+  '4*2CT<x>_Target-specific code ge','neration options'#010+
+  'p*2CT<x>_Target-specific code generation options'#010+
   'P*2CT<x>_Target-specific code generation options'#010+
   'J*2CT<x>_Target-specific code generation options'#010+
   'A*2CT<x>_Target-specific code generation options'#010+
-  'p*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
-  ' (AIX)'#010+
-  'P*3CTsmalltoc','_ Generate smaller TOCs at the expense of execution spe'+
+  'p*3CTsmalltoc_ Generate sma','ller TOCs at the expense of execution spe'+
   'ed (AIX)'#010+
+  'P*3CTsmalltoc_ Generate smaller TOCs at the expense of execution speed'+
+  ' (AIX)'#010+
   'J*3CTautogetterprefix=X_  Automatically create getters for properties '+
   'with prefix X (empty string disables)'#010+
-  'J*3CTautosetterprefix=X_  Automatically create setters for propertie','s'+
-  ' with prefix X (empty string disables)'#010+
+  'J*3CT','autosetterprefix=X_  Automatically create setters for propertie'+
+  's with prefix X (empty string disables)'#010+
   '8*3CTcld_                 Emit a CLD instruction before using the x86 '+
   'string instructions'#010+
-  '3*3CTcld_                 Emit a CLD instruction before using the x86 '+
-  'string instructions'#010+
-  '4*3CTcld_           ','      Emit a CLD instruction before using the x8'+
+  '3*3CTcld_                 Emit a CLD instructio','n before using the x8'+
   '6 string instructions'#010+
+  '4*3CTcld_                 Emit a CLD instruction before using the x86 '+
+  'string instructions'#010+
   '8*3CTfarprocspushoddbp_       Increment BP before pushing it in the pr'+
   'ologue of far functions'#010+
-  'J*3CTcompactintarrayinit_ Generate smaller (but potentially slower) co'+
-  'de for',' initializing integer array constants'#010+
+  'J*3CTcompacti','ntarrayinit_ Generate smaller (but potentially slower) '+
+  'code for initializing integer array constants'#010+
   'J*3CTenumfieldinit_       Initialize enumeration fields in constructor'+
   's to enumtype(0), after calling inherited constructors'#010+
-  'J*3CTinitlocals_          Initialize local variables that trigger a JV'+
-  'M bytec','ode verification error if used uninitialized (slows down code'+
+  'J*3CTinitlocal','s_          Initialize local variables that trigger a '+
+  'JVM bytecode verification error if used uninitialized (slows down code'+
   ')'#010+
   'J*3CTlowercaseprocstart_  Lowercase the first character of procedure/f'+
   'unction/method names'#010+
-  'A*3CTthumbinterworking_ Generate Thumb interworking-safe code if possi'+
-  'ble'#010+
-  'J*2Cv_Var/ou','t parameter copy-out checking'#010+
+  'A*3CTthumbinterworking_',' Generate Thumb interworking-safe code if pos'+
+  'sible'#010+
+  'J*2Cv_Var/out parameter copy-out checking'#010+
   'A*2CV<x>_Set section threadvar model to <x>'#010+
   '**2CX_Create also smartlinked library'#010+
   '**1d<x>_Defines the symbol <x>'#010+
   '**1D_Generate a DEF file'#010+
-  '**2Dd<x>_Set description to <x>'#010+
+  '**2Dd<x>_','Set description to <x>'#010+
   '**2Dv<x>_Set DLL version to <x>'#010+
-  '*O2Dw_PM',' application'#010+
+  '*O2Dw_PM application'#010+
   '**1e<x>_Set path to executable'#010+
   '**1E_Same as -Cn'#010+
   '**1fPIC_Same as -Cg'#010+
   '**1F<x>_Set file names and paths:'#010+
-  '**2Fa<x>[,y]_(for a program) load units <x> and [y] before uses is par'+
-  'sed'#010+
+  '**2Fa<x>[,y]_(for a program) load units <x> and [y] before use','s is p'+
+  'arsed'#010+
   '**2Fc<x>_Set input codepage to <x>'#010+
-  '**2FC<x>_Set RC ','compiler binary name to <x>'#010+
+  '**2FC<x>_Set RC compiler binary name to <x>'#010+
   '**2Fd_Disable the compiler'#039's internal directory cache'#010+
   '**2FD<x>_Set the directory where to search for compiler utilities'#010+
-  '**2Fe<x>_Redirect error output to <x>'#010+
+  '**2Fe<x>_Redirect error outpu','t to <x>'#010+
   '**2FE<x>_Set exe/unit output path to <x>'#010+
-  '**2Ff<x>_Add ','<x> to framework path (Darwin only), or set IDF path to'+
-  ' <x> (Xtensa-FreeRTOS)'#010+
+  '**2Ff<x>_Add <x> to framework path (Darwin only), or set IDF path to <'+
+  'x> (Xtensa-FreeRTOS)'#010+
   '**2FF_Use fpcres as RC to RES compiler instead of windres or gorc'#010+
-  '**2Fi<x>_Add <x> to include path'#010+
+  '**2Fi<x>_Add <x> to include path'#010,
   '**2Fl<x>_Add <x> to library path'#010+
-  '**2FL<x>_Use <x> as dynamic li','nker'#010+
+  '**2FL<x>_Use <x> as dynamic linker'#010+
   '**2Fm<x>_Load unicode conversion table from <x>.txt in the compiler di'+
   'r'#010+
   '**2FM<x>_Set the directory where to search for unicode binary files'#010+
-  '**2FN<x>_Add <x> to list of default unit scopes (namespaces)'#010+
+  '**2FN<x>_Add <x> to list of defa','ult unit scopes (namespaces)'#010+
   '**2Fo<x>_Add <x> to object path'#010+
-  '**','2Fr<x>_Load error message file <x>'#010+
+  '**2Fr<x>_Load error message file <x>'#010+
   '**2FR<x>_Set resource (.res) linker to <x>'#010+
   '**2Fu<x>_Add <x> to unit path'#010+
   '**2FU<x>_Set unit output path to <x>, overrides -FE'#010+
-  '**2FW<x>_Store generated whole-program optimization feedback in <x>'#010+
-  '**2Fw<x>_Loa','d previously stored whole-program optimization feedback '+
-  'from <x>'#010+
+  '**2FW<x>_Store ge','nerated whole-program optimization feedback in <x>'#010+
+  '**2Fw<x>_Load previously stored whole-program optimization feedback fr'+
+  'om <x>'#010+
   '*g1g_Generate debug information (default format for target)'#010+
-  '*g2gc_Generate checks for pointers (experimental, only available on so'+
-  'me targets, might generate false positive)'#010+
-  '*g','2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+
+  '*g2gc_Generate checks for pointers (experimental, on','ly available on '+
+  'some targets, might generate false positive)'#010+
+  '*g2gh_Use heaptrace unit (for memory leak/corruption debugging)'#010+
   '*g2gl_Use line info unit (show more info with backtraces)'#010+
-  '*g2gm_Generate Microsoft CodeView debug information (experimental)'#010+
+  '*g2gm_Generate Microsoft CodeView debug information (expe','rimental)'#010+
   '*g2go<x>_Set debug information options'#010+
-  '*g3godwarfsets','_ Enable DWARF '#039'set'#039' type debug information (b'+
-  'reaks gdb < 6.5)'#010+
+  '*g3godwarfsets_ Enable DWARF '#039'set'#039' type debug information (bre'+
+  'aks gdb < 6.5)'#010+
   '*g3gostabsabsincludes_ Store absolute/full include file paths in Stabs'+
   #010+
-  '*g3godwarfmethodclassprefix_ Prefix method names in DWARF with class n'+
-  'ame'#010+
-  '*g3godwarfcpp_ Simulate C++ debu','g information in DWARF'#010+
+  '*g3godwarfmethodclassprefix_ Prefix method ','names in DWARF with class'+
+  ' name'#010+
+  '*g3godwarfcpp_ Simulate C++ debug information in DWARF'#010+
   '*g3godwarfomflinnum_ Generate line number information in OMF LINNUM re'+
   'cords in MS LINK format in addition to the DWARF debug information (Op'+
-  'en Watcom Debugger/Linker compatibility)'#010+
-  '*g2gp_Preserve case in stabs symbol ','names'#010+
+  'en Watcom Debu','gger/Linker compatibility)'#010+
+  '*g2gp_Preserve case in stabs symbol names'#010+
   '*g2gs_Generate Stabs debug information'#010+
   '*g2gt_Trash local variables (to detect uninitialized uses; multiple '#039+
   't'#039' changes the trashing value)'#010+
-  '*g2gv_Generates programs traceable with Valgrind'#010+
-  '*g2gw_Generate DWARFv2 debug information (same',' as -gw2)'#010+
+  '*g2gv_Generates programs traceab','le with Valgrind'#010+
+  '*g2gw_Generate DWARFv2 debug information (same as -gw2)'#010+
   '*g2gw2_Generate DWARFv2 debug information'#010+
   '*g2gw3_Generate DWARFv3 debug information'#010+
   '*g2gw4_Generate DWARFv4 debug information (experimental)'#010+
   '**1i_Information'#010+
-  '**2iD_Return compiler date'#010+
+  '**2iD_Ret','urn compiler date'#010+
   '**2iSO_Return compiler OS'#010+
-  '**2iSP_Return compi','ler host processor'#010+
+  '**2iSP_Return compiler host processor'#010+
   '**2iTO_Return target OS'#010+
   '**2iTP_Return target processor'#010+
   '**2iV_Return short compiler version'#010+
   '**2iW_Return full compiler version'#010+
-  '**2ia_Return list of supported ABI targets'#010+
+  '**2ia_Return list of supported A','BI targets'#010+
   '**2ib_Return the used code generation backend type'#010+
-  '*','*2ic_Return list of supported CPU instruction sets'#010+
+  '**2ic_Return list of supported CPU instruction sets'#010+
   '**2if_Return list of supported FPU instruction sets'#010+
   '**2ii_Return list of supported inline assembler modes'#010+
-  '**2im_Return list of supported modeswitches'#010+
-  '**2io_Return list of supported optimiza','tions'#010+
+  '**2im_Return list of',' supported modeswitches'#010+
+  '**2io_Return list of supported optimizations'#010+
   '**2ir_Return list of recognized compiler and RTL features'#010+
   '**2it_Return list of supported targets'#010+
   '**2iu_Return list of supported microcontroller types'#010+
-  '**2iw_Return list of supported whole program optimizations'#010+
-  '**1I<x>_Add <x> to includ','e path'#010+
+  '**2iw_Return list of ','supported whole program optimizations'#010+
+  '**1I<x>_Add <x> to include path'#010+
   '**1k<x>_Pass <x> to the linker'#010+
   '**1l_Write logo'#010+
   '**1M<x>_Set language mode to <x> / enable modeswitch <x> (see option -'+
   'im)'#010+
   '**2Mfpc_Free Pascal dialect (default)'#010+
-  '**2Mobjfpc_FPC mode with Object Pascal support'#010+
-  '**2Mdelphi_Delphi 7 compati','bility mode'#010+
+  '**2Mobjfpc_','FPC mode with Object Pascal support'#010+
+  '**2Mdelphi_Delphi 7 compatibility mode'#010+
   '**2Mtp_TP/BP 7.0 compatibility mode'#010+
   '**2Mmacpas_Macintosh Pascal dialects compatibility mode'#010+
   '**2Miso_ISO 7185 mode'#010+
   '**2Mextendedpascal_ISO 10206 mode'#010+
-  '**2Mdelphiunicode_Delphi 2009 and later compatibility mode'#010+
-  '**2*_Each mode (as li','sted above) enables its default set of modeswit'+
-  'ches.'#010+
+  '**2Mdelphiunicode','_Delphi 2009 and later compatibility mode'#010+
+  '**2*_Each mode (as listed above) enables its default set of modeswitch'+
+  'es.'#010+
   '**2*_Other modeswitches are disabled and need to be enabled one by ano'+
   'ther.'#010+
-  '**1M<x>-_Disable modeswitch <x> (see option -im)'#010+
+  '**1M<x>-_Disable modeswitch <x> (see option -im)',#010+
   '**1n_Do not read the default config files'#010+
-  '**1o<x>_Change the n','ame of the executable produced to <x>'#010+
+  '**1o<x>_Change the name of the executable produced to <x>'#010+
   '**1O<x>_Optimizations:'#010+
   '**2O-_Disable optimizations'#010+
   '**2O1_Level 1 optimizations (quick and debugger friendly)'#010+
-  '**2O2_Level 2 optimizations (-O1 + quick optimizations)'#010+
-  '**2O3_Level 3 optimizations (-O2 + sl','ow optimizations)'#010+
+  '**2O2_Level 2 optimizations (-','O1 + quick optimizations)'#010+
+  '**2O3_Level 3 optimizations (-O2 + slow optimizations)'#010+
   '**2O4_Level 4 optimizations (-O3 + optimizations which might have unex'+
   'pected side effects)'#010+
   '**2Oa<x>=<y>_Set alignment'#010+
-  '**2Oo[NO]<x>_Enable or disable optimizations; see fpc -i or fpc -io fo'+
-  'r possible values'#010+
-  '**2Op<x>_Set tar','get cpu for optimizing; see fpc -i or fpc -ic for po'+
-  'ssible values'#010+
+  '**2Oo[NO]<x>_Enable or disable optimizati','ons; see fpc -i or fpc -io '+
+  'for possible values'#010+
+  '**2Op<x>_Set target cpu for optimizing; see fpc -i or fpc -ic for poss'+
+  'ible values'#010+
   '**2OW<x>_Generate whole-program optimization feedback for optimization'+
-  ' <x>; see fpc -i or fpc -iw for possible values'#010+
-  '**2Ow<x>_Perform whole-program optimization <x>; see fpc',' -i or fpc -'+
-  'iw for possible values'#010+
+  ' <x>; see fpc -i or fpc -iw for possible ','values'#010+
+  '**2Ow<x>_Perform whole-program optimization <x>; see fpc -i or fpc -iw'+
+  ' for possible values'#010+
   '**2Os_Optimize for size rather than speed'#010+
   '**1pg_Generate profile code for gprof (defines FPC_PROFILE)'#010+
-  'F*1P<x>_Target CPU / compiler related options:'#010+
+  'F*1P<x>_Target CPU / compiler related op','tions:'#010+
   'F*2PB_Show default compiler binary'#010+
-  'F*2PP_Show default ta','rget cpu'#010+
+  'F*2PP_Show default target cpu'#010+
   'F*2P<x>_Set target CPU (aarch64,arm,avr,i386,i8086,jvm,m68k,mips,mipse'+
   'l,powerpc,powerpc64,sparc,x86_64)'#010+
   '**1R<x>_Assembler reading style:'#010+
-  '**2Rdefault_Use default assembler for target'#010+
+  '**2Rdefault_Use default assembl','er for target'#010+
   '3*2Ratt_Read AT&T style assembler'#010+
-  '3*2Rintel_Read ','Intel style assembler'#010+
+  '3*2Rintel_Read Intel style assembler'#010+
   '4*2Ratt_Read AT&T style assembler'#010+
   '4*2Rintel_Read Intel style assembler'#010+
   '8*2Ratt_Read AT&T style assembler'#010+
   '8*2Rintel_Read Intel style assembler'#010+
-  '6*2RMOT_Read Motorola style assembler'#010+
+  '6*2RMOT_Read ','Motorola style assembler'#010+
   '**1S<x>_Syntax options:'#010+
-  '**2S2_Same as ','-Mobjfpc'#010+
+  '**2S2_Same as -Mobjfpc'#010+
   '**2Sc_Support operators like C (*=,+=,/= and -=)'#010+
   '**2Sa_Turn on assertions'#010+
   '**2Sd_Same as -Mdelphi'#010+
   '**2Se<x>_Error options. <x> is a combination of the following:'#010+
-  '**3*_<n> : Compiler halts after the <n> errors (default is 1)'#010+
-  '**3*_w : ','Compiler also halts after warnings'#010+
+  '**3*_<n>',' : Compiler halts after the <n> errors (default is 1)'#010+
+  '**3*_w : Compiler also halts after warnings'#010+
   '**3*_n : Compiler also halts after notes'#010+
   '**3*_h : Compiler also halts after hints'#010+
-  '**2Sf_Enable certain features in compiler and RTL; see fpc -i or fpc -'+
-  'ir for possible values)'#010+
-  '**2Sg_Enable LABEL and GOTO (','default in -Mtp and -Mdelphi)'#010+
+  '**2Sf_Enable certain features in compiler and RTL; see fpc -','i or fpc'+
+  ' -ir for possible values)'#010+
+  '**2Sg_Enable LABEL and GOTO (default in -Mtp and -Mdelphi)'#010+
   '**2Sh_Use reference counted strings (ansistring by default) instead of'+
   ' shortstrings'#010+
-  '**2Si_Turn on inlining of procedures/functions declared as "inline"'#010+
-  '**2Sj_Allows typed constants to be writeable (default in a','ll modes)'#010+
+  '**2Si_Turn on inlining of procedures/functions declared as "inl','ine"'#010+
+  '**2Sj_Allows typed constants to be writeable (default in all modes)'#010+
   '**2Sk_Load fpcylix unit'#010+
   '**2SI<x>_Set interface style to <x>'#010+
   '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcorba_CORBA compatible interface'#010+
-  '**2Sm_Support macros like C (global)'#010+
+  '**2Sm_Support macros like',' C (global)'#010+
   '**2So_Same as -Mtp'#010+
-  '**2Sr_Transparent file names in ','ISO mode'#010+
+  '**2Sr_Transparent file names in ISO mode'#010+
   '**2Ss_Constructor name must be init (destructor must be done)'#010+
   '**2Sv_Support vector processing (use CPU vector extensions if availabl'+
   'e)'#010+
-  '**2Sx_Enable exception keywords (default in Delphi/ObjFPC modes)'#010+
-  '**2Sy_@<pointer> returns a type','d pointer, same as $T+'#010+
+  '**2Sx_Enable exception keywords (','default in Delphi/ObjFPC modes)'#010+
+  '**2Sy_@<pointer> returns a typed pointer, same as $T+'#010+
   '**1s_Do not call assembler and linker'#010+
   '**2sh_Generate script to link on host'#010+
   '**2st_Generate script to link on target'#010+
-  '**2sr_Skip register allocation phase (use with -alr)'#010+
+  '**2sr_Skip register allocation phase (','use with -alr)'#010+
   '**1T<x>_Target operating system:'#010+
-  '3*2Tandroid_And','roid'#010+
+  '3*2Tandroid_Android'#010+
   '3*2Taros_AROS'#010+
   '3*2Tbeos_BeOS'#010+
   '3*2Tdarwin_Darwin/Mac OS X'#010+
   '3*2Tembedded_Embedded'#010+
   '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
   '3*2Tfreebsd_FreeBSD'#010+
-  '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
+  '3*2Tgo32v2_Version 2 of D','J Delorie DOS extender'#010+
   '3*2Thaiku_Haiku'#010+
-  '3*2Tiphonesim_iPhoneSimu','lator from iOS SDK 3.2+ (older versions: -Td'+
-  'arwin)'#010+
+  '3*2Tiphonesim_iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tdar'+
+  'win)'#010+
   '3*2Tlinux_Linux'#010+
   '3*2Tnativent_Native NT API (experimental)'#010+
   '3*2Tnetbsd_NetBSD'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
-  '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
+  '3*2Tnetwl','ibc_Novell Netware Module (libc)'#010+
   '3*2Topenbsd_OpenBSD'#010+
-  '3*2Tos2_OS','/2 / eComStation'#010+
+  '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsymbian_Symbian OS'#010+
   '3*2Tsolaris_Solaris'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
   '3*2Twdosx_WDOSX DOS extender'#010+
   '3*2Twin32_Windows 32 Bit'#010+
-  '3*2Twince_Windows CE'#010+
+  '3*2Twince_Windows CE'#010,
   '4*2Tandroid_Android'#010+
   '4*2Taros_AROS'#010+
   '4*2Tdarwin_Darwin/Mac OS X'#010+
-  '4*','2Tdragonfly_DragonFly BSD'#010+
+  '4*2Tdragonfly_DragonFly BSD'#010+
   '4*2Tembedded_Embedded'#010+
   '4*2Tfreebsd_FreeBSD'#010+
   '4*2Thaiku_Haiku'#010+
@@ -1776,9 +1772,9 @@ const msgtxt : array[0..000357,1..240] of char=(
   '4*2Tlinux_Linux'#010+
   '4*2Tnetbsd_NetBSD'#010+
   '4*2Topenbsd_OpenBSD'#010+
-  '4*2Tsolaris_Solaris'#010+
+  '4*2Tsolar','is_Solaris'#010+
   '4*2Twin64_Win64 (64 bit Windows systems)'#010+
-  '6*2Tamiga_C','ommodore Amiga'#010+
+  '6*2Tamiga_Commodore Amiga'#010+
   '6*2Tatari_Atari ST/STe/TT'#010+
   '6*2Tembedded_Embedded'#010+
   '6*2Tlinux_Linux'#010+
@@ -1786,9 +1782,9 @@ const msgtxt : array[0..000357,1..240] of char=(
   '6*2Tmacosclassic_Classic Mac OS'#010+
   '6*2Tpalmos_PalmOS'#010+
   '8*2Tembedded_Embedded'#010+
-  '8*2Tmsdos_MS-DOS (and compatible)'#010+
+  '8*2Tmsdo','s_MS-DOS (and compatible)'#010+
   '8*2Twin16_Windows 16 Bit'#010+
-  'A*2Tandroid_','Android'#010+
+  'A*2Tandroid_Android'#010+
   'A*2Taros_AROS'#010+
   'A*2Tdarwin_Darwin/iPhoneOS/iOS'#010+
   'A*2Tembedded_Embedded'#010+
@@ -1797,10 +1793,10 @@ const msgtxt : array[0..000357,1..240] of char=(
   'A*2Tlinux_Linux'#010+
   'A*2Tnds_Nintendo DS'#010+
   'A*2Tnetbsd_NetBSD'#010+
-  'A*2Tpalmos_PalmOS'#010+
+  'A','*2Tpalmos_PalmOS'#010+
   'A*2Tsymbian_Symbian'#010+
   'A*2Twince_Windows CE'#010+
-  'a*2Ta','ndroid_Android'#010+
+  'a*2Tandroid_Android'#010+
   'a*2Tdarwin_Darwin/iOS'#010+
   'a*2Tlinux_Linux'#010+
   'a*2Twin64_Windows 64'#010+
@@ -1809,11 +1805,11 @@ const msgtxt : array[0..000357,1..240] of char=(
   'm*2Tandroid_Android'#010+
   'm*2Tembedded_Embedded'#010+
   'm*2Tlinux_Linux'#010+
-  'M*2Tembedded_Embedded'#010+
+  'M*2Tembedde','d_Embedded'#010+
   'M*2Tlinux_Linux'#010+
   'P*2Taix_AIX'#010+
   'P*2Tamiga_AmigaOS'#010+
-  'P*2Tda','rwin_Darwin/Mac OS X'#010+
+  'P*2Tdarwin_Darwin/Mac OS X'#010+
   'P*2Tembedded_Embedded'#010+
   'P*2Tlinux_Linux'#010+
   'P*2Tmacosclassic_Classic Mac OS'#010+
@@ -1821,11 +1817,11 @@ const msgtxt : array[0..000357,1..240] of char=(
   'P*2Tnetbsd_NetBSD'#010+
   'P*2Twii_Wii'#010+
   'p*2Taix_AIX'#010+
-  'p*2Tdarwin_Darwin/Mac OS X'#010+
+  'p*2Tdarwin_Darwin/Mac OS',' X'#010+
   'p*2Tembedded_Embedded'#010+
   'p*2Tlinux_Linux'#010+
   'R*2Tlinux_Linux'#010+
-  'R*2Tem','bedded_Embedded'#010+
+  'R*2Tembedded_Embedded'#010+
   'r*2Tlinux_Linux'#010+
   'r*2Tembedded_Embedded'#010+
   'S*2Tlinux_Linux'#010+
@@ -1834,155 +1830,158 @@ const msgtxt : array[0..000357,1..240] of char=(
   'V*2Tembedded_Embedded'#010+
   'x*2Tembedded_Embedded'#010+
   'x*2Tfreertos_FreeRTOS'#010+
-  'x*2Tlinux_Linux'#010+
+  'x*2Tl','inux_Linux'#010+
   'Z*2Tembedded_Embedded'#010+
   'Z*2Tzxspectrum_ZX Spectrum'#010+
-  'Z*2','Tmsxdos_MSX-DOS'#010+
+  'Z*2Tmsxdos_MSX-DOS'#010+
   '**1u<x>_Undefines the symbol <x>'#010+
   '**1U_Unit options:'#010+
   '**2Un_Do not check where the unit name matches the file name'#010+
-  '**2Ur_Generate release unit files (never automatically recompiled)'#010+
+  '**2Ur_Generate release unit files (never automat','ically recompiled)'#010+
   '**2Us_Compile a system unit'#010+
-  '**1v<x>_Be verbo','se. <x> is a combination of the following letters:'#010+
+  '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
   '**2*_e : Show errors (default)       0 : Show nothing (except errors)'#010+
-  '**2*_w : Show warnings               u : Show unit info'#010+
-  '**2*_n : Show notes                  t : Show tried/used files'#010,
+  '**2*_w : Show warnings               u : Show unit info'#010,
+  '**2*_n : Show notes                  t : Show tried/used files'#010+
   '**2*_h : Show hints                  c : Show conditionals'#010+
   '**2*_i : Show general info           d : Show debug info'#010+
-  '**2*_l : Show linenumbers            r : Rhide/GCC compatibility mode'#010+
-  '**2*_s : Show time stamps            q : Show message ','numbers'#010+
+  '**2*_l : Show linenumbers            r : Rhide/GCC compatibil','ity mod'+
+  'e'#010+
+  '**2*_s : Show time stamps            q : Show message numbers'#010+
   '**2*_a : Show everything             x : Show info about invoked tools'+
   #010+
   '**2*_b : Write file names messages   p : Write tree.log with parse tre'+
   'e'#010+
-  '**2*_    with full path              v : Write fpcdebug.txt with'#010+
-  '**2*_z : Write output to',' stderr          lots of debugging info'#010+
+  '**2*_    with full path   ','           v : Write fpcdebug.txt with'#010+
+  '**2*_z : Write output to stderr          lots of debugging info'#010+
   '**2*_m<x>,<y> : Do not show messages numbered <x> and <y>'#010+
   'F*1V<x>_Append '#039'-<x>'#039' to the used compiler binary name (e.g. f'+
   'or version)'#010+
-  '**1W<x>_Target-specific options (targets)'#010+
-  '3*2WA_Specify native type ','application (Windows)'#010+
+  '**1W<','x>_Target-specific options (targets)'#010+
+  '3*2WA_Specify native type application (Windows)'#010+
   '4*2WA_Specify native type application (Windows)'#010+
   'A*2WA_Specify native type application (Windows)'#010+
   '3*2Wb_Create a bundle instead of a library (Darwin)'#010+
-  'P*2Wb_Create a bundle instead of a library (Darwin)'#010+
-  'p*2Wb_Create a bun','dle instead of a library (Darwin)'#010+
+  'P*2Wb_C','reate a bundle instead of a library (Darwin)'#010+
+  'p*2Wb_Create a bundle instead of a library (Darwin)'#010+
   'a*2Wb_Create a bundle instead of a library (Darwin)'#010+
   'A*2Wb_Create a bundle instead of a library (Darwin)'#010+
-  '4*2Wb_Create a bundle instead of a library (Darwin)'#010+
-  '3*2WB_Create a relocatable image (Windows, Symbian',')'#010+
+  '4*2Wb_Create a bundle instead of a libr','ary (Darwin)'#010+
+  '3*2WB_Create a relocatable image (Windows, Symbian)'#010+
   '3*2WB<x>_Set image base to <x> (Windows, Symbian)'#010+
   '4*2WB_Create a relocatable image (Windows)'#010+
   '4*2WB<x>_Set image base to <x> (Windows)'#010+
-  'A*2WB_Create a relocatable image (Windows, Symbian)'#010+
+  'A*2WB_Create a relocatable image (Windows',', Symbian)'#010+
   'A*2WB<x>_Set image base to <x> (Windows, Symbian)'#010+
-  'Z*','2WB<x>_Set image base to <x> (ZX Spectrum)'#010+
+  'Z*2WB<x>_Set image base to <x> (ZX Spectrum)'#010+
   '3*2WC_Specify console type application (EMX, OS/2, Windows)'#010+
   '4*2WC_Specify console type application (Windows)'#010+
-  'A*2WC_Specify console type application (Windows)'#010+
-  'P*2WC_Specify console type application ','(Classic Mac OS)'#010+
+  'A*2WC_Specify console typ','e application (Windows)'#010+
+  'P*2WC_Specify console type application (Classic Mac OS)'#010+
   '3*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
   '4*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
-  'A*2WD_Use DEFFILE to export functions of DLL or EXE (Windows)'#010+
-  '3*2We_Use external resources (Darwin)',#010+
+  'A*2WD_Use DEFFILE to export function','s of DLL or EXE (Windows)'#010+
+  '3*2We_Use external resources (Darwin)'#010+
   '4*2We_Use external resources (Darwin)'#010+
   'a*2We_Use external resources (Darwin)'#010+
   'A*2We_Use external resources (Darwin)'#010+
   'P*2We_Use external resources (Darwin)'#010+
-  'p*2We_Use external resources (Darwin)'#010+
-  '3*2WF_Specify full-screen type application (EMX, ','OS/2)'#010+
+  'p*2We_Use external resou','rces (Darwin)'#010+
+  '3*2WF_Specify full-screen type application (EMX, OS/2)'#010+
   '3*2WG_Specify graphic type application (EMX, OS/2, Windows)'#010+
   '4*2WG_Specify graphic type application (Windows)'#010+
   'A*2WG_Specify graphic type application (Windows)'#010+
-  'P*2WG_Specify graphic type application (Classic Mac OS)'#010+
-  '3*2Wi_Use internal r','esources (Darwin)'#010+
+  'P*2WG_Specify',' graphic type application (Classic Mac OS)'#010+
+  '3*2Wi_Use internal resources (Darwin)'#010+
   '4*2Wi_Use internal resources (Darwin)'#010+
   'a*2Wi_Use internal resources (Darwin)'#010+
   'A*2Wi_Use internal resources (Darwin)'#010+
   'P*2Wi_Use internal resources (Darwin)'#010+
-  'p*2Wi_Use internal resources (Darwin)'#010+
-  '3*2WI_Turn on/off the usage of i','mport sections (Windows)'#010+
+  'p*2Wi_U','se internal resources (Darwin)'#010+
+  '3*2WI_Turn on/off the usage of import sections (Windows)'#010+
   '4*2WI_Turn on/off the usage of import sections (Windows)'#010+
   'A*2WI_Turn on/off the usage of import sections (Windows)'#010+
-  '8*2Wh_Use huge code for units (ignored for models with CODE in a uniqu'+
-  'e segment)'#010+
-  '8*2Wm<x>_Set memory ','model'#010+
+  '8*2Wh_Use huge code for units (ignored',' for models with CODE in a uni'+
+  'que segment)'#010+
+  '8*2Wm<x>_Set memory model'#010+
   '8*3WmTiny_Tiny memory model'#010+
   '8*3WmSmall_Small memory model (default)'#010+
   '8*3WmMedium_Medium memory model'#010+
   '8*3WmCompact_Compact memory model'#010+
   '8*3WmLarge_Large memory model'#010+
-  '8*3WmHuge_Huge memory model'#010+
-  '3*2WM<x>_Minimum Mac OS X deployment versi','on: 10.4, 10.5.1, ... (Dar'+
-  'win)'#010+
+  '8*3WmHu','ge_Huge memory model'#010+
+  '3*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
+  'n)'#010+
   '4*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
   'n)'#010+
   'p*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
+  'n)'#010,
+  'P*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwi'+
   'n)'#010+
-  'P*2WM<x>_Minimum Mac OS X deployment version: 10.4, 10.5.1, ...',' (Dar'+
-  'win)'#010+
   '3*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
   '4*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
-  'A*2WN_Do not generate relocation code, needed for debugging (Windows)'#010+
-  'A*2Wp<x>_Specify the',' controller type; see fpc -i or fpc -iu for poss'+
-  'ible values'#010+
+  'A*2WN_Do not generate reloc','ation code, needed for debugging (Windows'+
+  ')'#010+
+  'A*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
+  'le values'#010+
   'm*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
   'le values'#010+
-  'R*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
-  'le values'#010+
-  'V*2Wp<x>_Specify the',' controller type; see fpc -i or fpc -iu for poss'+
+  'R*2Wp<x>_Specify the controller type;',' see fpc -i or fpc -iu for poss'+
   'ible values'#010+
+  'V*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
+  'le values'#010+
   'x*2Wp<x>_Specify the controller type; see fpc -i or fpc -iu for possib'+
   'le values'#010+
-  '3*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)'#010+
-  '4*2WP<x>_Minimum iOS deployment',' version: 8.0, 8.0.2, ... (iphonesim)'+
+  '3*2WP<x>_Minimum iOS deployment versi','on: 3.0, 5.0.1, ... (iphonesim)'+
   #010+
+  '4*2WP<x>_Minimum iOS deployment version: 8.0, 8.0.2, ... (iphonesim)'#010+
   'a*2WP<x>_Minimum iOS deployment version: 7.0, 7.1.2, ... (Darwin)'#010+
   'A*2WP<x>_Minimum iOS deployment version: 3.0, 5.0.1, ... (Darwin)'#010+
-  '3*2WR_Generate relocation code (Windows)'#010+
-  '4*2WR_Generate relocation cod','e (Windows)'#010+
+  '3*2WR_G','enerate relocation code (Windows)'#010+
+  '4*2WR_Generate relocation code (Windows)'#010+
   'A*2WR_Generate relocation code (Windows)'#010+
   '8*2Wt<x>_Set the target executable format'#010+
   '8*3Wtexe_Create a DOS .EXE file (default)'#010+
-  '8*3Wtcom_Create a DOS .COM file (requires tiny memory model)'#010+
-  'P*2WT_Specify MPW tool type application (C','lassic Mac OS)'#010+
+  '8*3Wtcom_Create a DOS .COM file (require','s tiny memory model)'#010+
+  'P*2WT_Specify MPW tool type application (Classic Mac OS)'#010+
   '**2WX_Enable executable stack (Linux)'#010+
   '**1X_Executable options:'#010+
   '**2X9_Generate linkerscript for GNU Binutils ld older than version 2.1'+
   '9.1 (Linux)'#010+
-  '**2Xc_Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Lin'+
-  'ux)'#010+
-  '**2Xd_','Do not search default library path (sometimes required for cro'+
-  'ss-compiling when not using -XR)'#010+
+  '**2Xc_Pass --shar','ed/-dynamic to the linker (BeOS, Darwin, FreeBSD, L'+
+  'inux)'#010+
+  '**2Xd_Do not search default library path (sometimes required for cross'+
+  '-compiling when not using -XR)'#010+
   '**2Xe_Use external linker'#010+
-  '**2Xf_Substitute pthread library name for linking (BSD)'#010+
-  '**2Xg_Create debuginfo in a separate file and add a debuglink s','ectio'+
-  'n to executable'#010+
+  '**2Xf_Substitute pthread library name for linking (BSD)'#010,
+  '**2Xg_Create debuginfo in a separate file and add a debuglink section '+
+  'to executable'#010+
   '**2XD_Try to link units dynamically      (defines FPC_LINK_DYNAMIC)'#010+
   '**2Xi_Use internal linker'#010+
-  'L*2XlS<x>_LLVM utilties suffix (e.g. -7 in case clang is called clang-'+
-  '7)'#010+
+  'L*2XlS<x>_LLVM utilties suffix (e.g. -7 in case clang is calle','d clan'+
+  'g-7)'#010+
   '**2XLA_Define library substitutions for linking'#010+
-  '**2X','LO_Define order of library linking'#010+
+  '**2XLO_Define order of library linking'#010+
   '**2XLD_Exclude default order of standard libraries'#010+
   '**2Xm_Generate link map'#010+
   '**2XM<x>_Set the name of the '#039'main'#039' program routine (default i'+
-  's '#039'main'#039')'#010+
-  '**2Xn_Use target system native linker instead of GNU ld (S','olaris, AI'+
-  'X)'#010+
+  's '#039'ma','in'#039')'#010+
+  '**2Xn_Use target system native linker instead of GNU ld (Solaris, AIX)'+
+  #010+
   'F*2Xp<x>_First search for the compiler binary in the directory <x>'#010+
   '**2XP<x>_Prepend the binutils names with the prefix <x>'#010+
-  '**2Xr<x>_Set the linker'#039's rlink-path to <x> (needed for cross comp'+
-  'ile, see the ld manual for more inform','ation) (BeOS, Linux)'#010+
+  '**2Xr<x>_Set the linker'#039's rlink-path to <','x> (needed for cross co'+
+  'mpile, see the ld manual for more information) (BeOS, Linux)'#010+
   '**2XR<x>_Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD'+
   ', Linux, Mac OS, Solaris)'#010+
   '**2Xs_Strip all symbols from executable'#010+
-  '**2XS_Try to link units statically (default, defines FPC_LINK_STATIC)'#010+
-  '**2Xt_Link wi','th static libraries (-static is passed to linker)'#010+
+  '**2XS_Try to link un','its statically (default, defines FPC_LINK_STATIC'+
+  ')'#010+
+  '**2Xt_Link with static libraries (-static is passed to linker)'#010+
   '**2Xv_Generate table for Virtual Entry calls'#010+
   '**2XV_Use VLink as external linker       (default on Amiga, MorphOS)'#010+
-  '**2XX_Try to smartlink units             (defines FPC_LINK_SMART)'#010+
+  '**2XX_Try to ','smartlink units             (defines FPC_LINK_SMART)'#010+
   '**1*_'#010+
-  '**1?','_Show this help'#010+
+  '**1?_Show this help'#010+
   '**1h_Shows this help without waiting'
 );
diff --git a/compiler/ngenutil.pas b/compiler/ngenutil.pas
index de3b0eb03a..0c53dbfec0 100644
--- a/compiler/ngenutil.pas
+++ b/compiler/ngenutil.pas
@@ -105,9 +105,9 @@ interface
       class procedure insertbsssym(list: tasmlist; sym: tstaticvarsym; size: asizeint; varalign: shortint; _typ: Tasmsymtype); virtual;
 
       { initialization of iso styled program parameters }
-      class procedure initialize_textrec(p : TObject; statn : pointer);
+      class procedure initialize_filerecs(p : TObject; statn : pointer);
       { finalization of iso styled program parameters }
-      class procedure finalize_textrec(p : TObject; statn : pointer);
+      class procedure finalize_filerecs(p : TObject; statn : pointer);
      public
       class procedure insertbssdata(sym : tstaticvarsym); virtual;
 
@@ -546,49 +546,83 @@ implementation
     end;
 
 
-  class procedure tnodeutils.initialize_textrec(p:TObject;statn:pointer);
+  class procedure tnodeutils.initialize_filerecs(p:TObject;statn:pointer);
     var
       stat: ^tstatementnode absolute statn;
     begin
       if (tsym(p).typ=staticvarsym) and
-       (tstaticvarsym(p).vardef.typ=filedef) and
-       (tfiledef(tstaticvarsym(p).vardef).filetyp=ft_text) and
-       (tstaticvarsym(p).isoindex<>0) then
-       begin
-         if cs_transparent_file_names in current_settings.globalswitches then
-           addstatement(stat^,ccallnode.createintern('fpc_textinit_filename_iso',
-             ccallparanode.create(
-               cstringconstnode.createstr(tstaticvarsym(p).Name),
-             ccallparanode.create(
-               cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
-             ccallparanode.create(
-               cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
-             nil)))))
-         else
-           addstatement(stat^,ccallnode.createintern('fpc_textinit_iso',
-             ccallparanode.create(
-               cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
-             ccallparanode.create(
-               cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
-             nil))));
-       end;
+        (tstaticvarsym(p).vardef.typ=filedef) and
+        (tstaticvarsym(p).isoindex<>0) then
+        case tfiledef(tstaticvarsym(p).vardef).filetyp of
+          ft_text:
+            begin
+              if cs_transparent_file_names in current_settings.globalswitches then
+                addstatement(stat^,ccallnode.createintern('fpc_textinit_filename_iso',
+                  ccallparanode.create(
+                    cstringconstnode.createstr(tstaticvarsym(p).Name),
+                  ccallparanode.create(
+                    cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
+                  ccallparanode.create(
+                    cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
+                  nil)))))
+              else
+                addstatement(stat^,ccallnode.createintern('fpc_textinit_iso',
+                  ccallparanode.create(
+                    cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
+                  ccallparanode.create(
+                    cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
+                  nil))));
+            end;
+          ft_typed:
+            begin
+              if cs_transparent_file_names in current_settings.globalswitches then
+                addstatement(stat^,ccallnode.createintern('fpc_typedfile_init_filename_iso',
+                  ccallparanode.create(
+                    cstringconstnode.createstr(tstaticvarsym(p).Name),
+                  ccallparanode.create(
+                    cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
+                  ccallparanode.create(
+                    cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
+                  nil)))))
+              else
+                addstatement(stat^,ccallnode.createintern('fpc_typedfile_init_iso',
+                  ccallparanode.create(
+                    cordconstnode.create(tstaticvarsym(p).isoindex,uinttype,false),
+                  ccallparanode.create(
+                    cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
+                  nil))));
+            end;
+          else
+            ;
+        end;
     end;
 
 
-  class procedure tnodeutils.finalize_textrec(p:TObject;statn:pointer);
+  class procedure tnodeutils.finalize_filerecs(p:TObject;statn:pointer);
     var
       stat: ^tstatementnode absolute statn;
     begin
       if (tsym(p).typ=staticvarsym) and
-       (tstaticvarsym(p).vardef.typ=filedef) and
-       (tfiledef(tstaticvarsym(p).vardef).filetyp=ft_text) and
-       (tstaticvarsym(p).isoindex<>0) then
-       begin
-         addstatement(stat^,ccallnode.createintern('fpc_textclose_iso',
-           ccallparanode.create(
-             cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
-           nil)));
-       end;
+        (tstaticvarsym(p).vardef.typ=filedef) and
+        (tstaticvarsym(p).isoindex<>0) then
+        case tfiledef(tstaticvarsym(p).vardef).filetyp of
+          ft_text:
+            begin
+              addstatement(stat^,ccallnode.createintern('fpc_textclose_iso',
+                ccallparanode.create(
+                  cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
+                nil)));
+            end;
+          ft_typed:
+            begin
+              addstatement(stat^,ccallnode.createintern('fpc_typedfile_close_iso',
+                ccallparanode.create(
+                  cloadnode.create(tstaticvarsym(p),tstaticvarsym(p).Owner),
+                nil)));
+            end;
+          else
+            ;
+        end;
     end;
 
 
@@ -637,9 +671,9 @@ implementation
         (pd.proctypeoption=potype_proginit) then
         begin
           block:=internalstatements(stat);
-          pd.localst.SymList.ForEachCall(@initialize_textrec,@stat);
+          pd.localst.SymList.ForEachCall(@initialize_filerecs,@stat);
           addstatement(stat,result);
-          pd.localst.SymList.ForEachCall(@finalize_textrec,@stat);
+          pd.localst.SymList.ForEachCall(@finalize_filerecs,@stat);
           result:=block;
         end;
 
diff --git a/compiler/ninl.pas b/compiler/ninl.pas
index d6be47f9d0..5c70bed2c2 100644
--- a/compiler/ninl.pas
+++ b/compiler/ninl.pas
@@ -765,7 +765,14 @@ implementation
           else
             case para.left.resultdef.typ of
               stringdef :
-                name:=procprefixes[do_read]+tstringdef(para.left.resultdef).stringtypname;
+                begin
+                  name:=procprefixes[do_read]+tstringdef(para.left.resultdef).stringtypname;
+                  if (m_isolike_io in current_settings.modeswitches) and (tstringdef(para.left.resultdef).stringtype<>st_shortstring) then
+                    begin
+                      CGMessagePos(para.fileinfo,type_e_cant_read_write_type_in_iso_mode);
+                      error_para := true;
+                    end;
+                end;
               pointerdef :
                 begin
                   if (not is_pchar(para.left.resultdef)) or do_read then
diff --git a/compiler/ogcoff.pas b/compiler/ogcoff.pas
index 8c05b3792a..ce4256a803 100644
--- a/compiler/ogcoff.pas
+++ b/compiler/ogcoff.pas
@@ -914,6 +914,64 @@ const pemagic : array[0..3] of byte = (
       end;
 
 
+    function encodeBase64(p:aword):string;
+      const
+        alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
+                   'abcdefghijklmnopqrstuvwxyz' +
+                   '0123456789+/';
+      var
+        i,
+        idx,
+        rem : longint;
+      begin
+        setlength(result,6);
+
+        idx := 6;
+        for i:=0 to 5 do
+          begin
+            rem:=p mod 64;
+            p:=p div 64;
+            result[idx]:=alphabet[rem+1];
+            dec(idx);
+          end;
+
+        if p<>0 then
+          internalerror(2020091601);
+      end;
+
+
+    function decodeBase64(const s:string;out p:longint):boolean;
+      var
+        i : longint;
+        v : aword;
+      begin
+        if length(s)>6 then
+          exit(false);
+
+        p:=0;
+        for i:=1 to length(s) do
+          begin
+            v:=0;
+            if (s[i]>='A') and (s[i]<='Z') then // 0..25
+              v:=Ord(s[i])-Ord('A')
+            else if (s[i]>='a') and (s[i]<='z') then // 26..51
+              v:=Ord(s[i])-Ord('a')+26
+            else if (s[i]>='0') and (s[i]<='9') then // 52..61
+              v:=Ord(s[i])-Ord('0')+52
+            else if s[i]='+' then // 62
+              v:=62
+            else if s[i]='/' then // 63
+              v:=63
+            else
+              exit(false);
+
+            p:=(p*64)+v;
+          end;
+
+        result:=true;
+      end;
+
+
 {****************************************************************************
                                TCoffObjSection
 ****************************************************************************}
@@ -1652,7 +1710,12 @@ const pemagic : array[0..3] of byte = (
                strpos:=FCoffStrs.size+4;
                FCoffStrs.writestr(s);
                FCoffStrs.writestr(#0);
-               s:='/'+ToStr(strpos);
+               if strpos>=10000000 then
+                 s:='//'+encodeBase64(strpos)
+               else
+                 s:='/'+ToStr(strpos);
+               if length(s)>8 then
+                 internalerror(2020091501);
              end;
             move(s[1],sechdr.name,length(s));
             if not win32 then
@@ -2323,13 +2386,26 @@ const pemagic : array[0..3] of byte = (
                secname:=strpas(secnamebuf);
                if secname[1]='/' then
                  begin
-                   Val(Copy(secname,2,8),strpos,code);
-                   if code=0 then
-                     secname:=Read_str(strpos)
+                   if secname[2]='/' then
+                     begin
+                       if not decodeBase64(copy(secname,3,8),strpos) then
+                         begin
+                           InputError('Error reading COFF Section Headers');
+                           secname:='error';
+                         end
+                       else
+                         secname:=Read_str(strpos);
+                     end
                    else
                      begin
-                       InputError('Error reading COFF Section Headers');
-                       secname:='error';
+                       Val(Copy(secname,2,8),strpos,code);
+                       if code=0 then
+                         secname:=Read_str(strpos)
+                       else
+                         begin
+                           InputError('Error reading COFF Section Headers');
+                           secname:='error';
+                         end;
                      end;
                  end;
                if win32 then
diff --git a/compiler/x86/aoptx86.pas b/compiler/x86/aoptx86.pas
index 301379df75..e36e7b3e17 100644
--- a/compiler/x86/aoptx86.pas
+++ b/compiler/x86/aoptx86.pas
@@ -1090,8 +1090,7 @@ unit aoptx86;
                   else
                     Internalerror(2017050701)
                 end;
-                asml.remove(hp1);
-                hp1.free;
+                RemoveInstruction(hp1);
               end;
           end;
       end;
@@ -1383,8 +1382,7 @@ unit aoptx86;
                (getregtype(tai_regalloc(hp2).reg) = R_INTREGISTER) and
                (getsupreg(tai_regalloc(hp2).reg) = supreg) then
               begin
-                asml.remove(hp2);
-                hp2.free;
+                RemoveInstruction(hp2);
                 break;
               end;
           until not(assigned(hp2)) or regInInstruction(newreg(R_INTREGISTER,supreg,R_SUBWHOLE),hp2);
@@ -1444,8 +1442,7 @@ unit aoptx86;
                       begin
                         DebugMsg(SPeepholeOptimization + '(V)MOVA*(V)MOVA*2(V)MOVA* 1',p);
                         taicpu(p).loadoper(1,taicpu(hp1).oper[1]^);
-                        asml.Remove(hp1);
-                        hp1.Free;
+                        RemoveInstruction(hp1);
                         result:=true;
                         exit;
                       end
@@ -1457,8 +1454,7 @@ unit aoptx86;
                     else if MatchOperand(taicpu(p).oper[0]^,taicpu(hp1).oper[1]^) then
                       begin
                         DebugMsg(SPeepholeOptimization + '(V)MOVA*(V)MOVA*2(V)MOVA* 2',p);
-                        asml.Remove(hp1);
-                        hp1.Free;
+                        RemoveInstruction(hp1);
                         result:=true;
                         exit;
                       end
@@ -1482,8 +1478,7 @@ unit aoptx86;
                       DebugMsg(SPeepholeOptimization + '(V)MOVA*(V)MOVS*2(V)MOVS* 1',p);
                       taicpu(p).opcode:=taicpu(hp1).opcode;
                       taicpu(p).loadoper(1,taicpu(hp1).oper[1]^);
-                      asml.Remove(hp1);
-                      hp1.Free;
+                      RemoveInstruction(hp1);
                       result:=true;
                       exit;
                     end
@@ -1566,8 +1561,7 @@ unit aoptx86;
                       begin
                         taicpu(hp1).loadoper(2,taicpu(p).oper[0]^);
                         RemoveCurrentP(p, hp1); // <-- Is this actually safe? hp1 is not necessarily the next instruction. [Kit]
-                        asml.Remove(hp2);
-                        hp2.Free;
+                        RemoveInstruction(hp2);
                       end;
                   end
                 else if (hp1.typ = ait_instruction) and
@@ -1606,8 +1600,7 @@ unit aoptx86;
                           RemoveCurrentP(p, nil);
                         p:=hp1;
                         taicpu(hp1).loadoper(1, taicpu(hp2).oper[1]^);
-                        asml.remove(hp2);
-                        hp2.Free;
+                        RemoveInstruction(hp2);
                         result:=true;
                       end;
                   end;
@@ -1643,8 +1636,7 @@ unit aoptx86;
               begin
                 taicpu(p).loadoper(2,taicpu(hp1).oper[1]^);
                 DebugMsg(SPeepholeOptimization + 'VOpVmov2VOp done',p);
-                asml.Remove(hp1);
-                hp1.Free;
+                RemoveInstruction(hp1);
                 result:=true;
               end;
           end;
@@ -1972,9 +1964,7 @@ unit aoptx86;
                   begin
                     { We can remove the original MOV }
                     DebugMsg(SPeepholeOptimization + 'Mov2Nop 3 done',p);
-                    Asml.Remove(p);
-                    p.Free;
-                    p := hp1;
+                    RemoveCurrentp(p, hp1);
 
                     { TmpUsedRegs contains the results of "UpdateUsedRegs(tai(p.Next))" already,
                       so just restore it to UsedRegs instead of calculating it again }
@@ -2042,8 +2032,7 @@ unit aoptx86;
                       begin
                         GetNextInstruction_p := GetNextInstruction(hp1, hp2);
                         DebugMsg(SPeepholeOptimization + 'Mov2Nop 4 done',hp1);
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
 
                         { The instruction after what was hp1 is now the immediate next instruction,
                           so we can continue to make optimisations if it's present }
@@ -2130,8 +2119,7 @@ unit aoptx86;
                               InternalError(2020021001);
                           end;
                           DebugMsg(SPeepholeOptimization + 'MovMovXX2MovXX 2 done',p);
-                          asml.Remove(hp1);
-                          hp1.Free;
+                          RemoveInstruction(hp1);
                           Result := True;
                           Exit;
                         end;
@@ -2186,8 +2174,7 @@ unit aoptx86;
                             and ffffffffh, %reg
                         }
                         DebugMsg(SPeepholeOptimization + 'MovAnd2Mov 1 done',p);
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
                         Result:=true;
                         exit;
                       end;
@@ -2199,8 +2186,7 @@ unit aoptx86;
                             and ffffffffffffffffh, %reg
                         }
                         DebugMsg(SPeepholeOptimization + 'MovAnd2Mov 2 done',p);
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
                         Result:=true;
                         exit;
                       end;
@@ -2225,8 +2211,7 @@ unit aoptx86;
                         DebugMsg(SPeepholeOptimization + 'MovAndTest2Test done',p);
                         taicpu(hp1).loadoper(1,taicpu(p).oper[0]^);
                         taicpu(hp1).opcode:=A_TEST;
-                        asml.Remove(hp2);
-                        hp2.free;
+                        RemoveInstruction(hp2);
                         RemoveCurrentP(p, hp1);
                         Result:=true;
                         exit;
@@ -2325,8 +2310,7 @@ unit aoptx86;
                         DebugMsg(SPeepholeOptimization + PreMessage + '; and' + debug_opsize2str(taicpu(hp1).opsize) + ' $' + MaskNum + ',' + RegName2 +
                           ' -> movz' + debug_opsize2str(NewSize) + ' ' + InputVal + ',' + RegName2, p);
 
-                        asml.Remove(hp1);
-                        hp1.Free;
+                        RemoveInstruction(hp1);
                       end;
 
                     Result := True;
@@ -2375,8 +2359,7 @@ unit aoptx86;
                                 AllocRegBetween(taicpu(hp1).oper[1]^.reg,p,hp1,usedregs);
                               taicpu(p).loadOper(1,taicpu(hp1).oper[1]^);
                               DebugMsg(SPeepholeOptimization + 'MovMov2Mov 5 done',p);
-                              asml.remove(hp1);
-                              hp1.free;
+                              RemoveInstruction(hp1);
                               Result:=true;
                               Exit;
                             end;
@@ -2394,8 +2377,7 @@ unit aoptx86;
                             }
                             taicpu(p).loadreg(1, taicpu(hp1).oper[1]^.reg);
                             DebugMsg(SPeepholeOptimization + 'MovMov2Mov 3 done',p);
-                            asml.remove(hp1);
-                            hp1.free;
+                            RemoveInstruction(hp1);
                             Result:=true;
                             Exit;
                           end;
@@ -2438,8 +2420,7 @@ unit aoptx86;
                         if taicpu(p).oper[0]^.typ=top_reg then
                           AllocRegBetween(taicpu(p).oper[0]^.reg,p,hp1,usedregs);
                         DebugMsg(SPeepholeOptimization + 'MovMov2Mov 1',p);
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
                         Result:=true;
                         exit;
                       end
@@ -2462,8 +2443,7 @@ unit aoptx86;
                              cmp mem1, reg1
                            }
                           begin
-                            asml.remove(hp2);
-                            hp2.free;
+                            RemoveInstruction(hp2);
                             taicpu(hp1).opcode := A_CMP;
                             taicpu(hp1).loadref(1,taicpu(hp1).oper[0]^.ref^);
                             taicpu(hp1).loadreg(0,taicpu(p).oper[0]^.reg);
@@ -2502,8 +2482,7 @@ unit aoptx86;
                           DebugMsg(SPeepholeOptimization + 'MovMovMov2MovMov 1 done',p);
                           taicpu(p).loadoper(1,taicpu(hp2).oper[1]^);
                           taicpu(hp1).loadoper(0,taicpu(hp2).oper[1]^);
-                          asml.remove(hp2);
-                          hp2.free;
+                          RemoveInstruction(hp2);
                         end
 {$ifdef i386}
                       { this is enabled for i386 only, as the rules to create the reg sets below
@@ -2548,8 +2527,7 @@ unit aoptx86;
                         end
                       else
                         begin
-                          asml.remove(hp2);
-                          hp2.free;
+                          RemoveInstruction(hp2);
                         end
 {$endif i386}
                         ;
@@ -2663,13 +2641,11 @@ unit aoptx86;
                                 begin
                                   DebugMsg(SPeepholeOptimization + debug_regname(CurrentReg) + ' = ' + RegName1 + '; removed unnecessary instruction (MovMov2MovNop 6b}',hp2);
                                   AllocRegBetween(CurrentReg, p, hp2, UsedRegs);
-                                  asml.remove(hp2);
-                                  hp2.Free;
+                                  RemoveInstruction(hp2);
                                 end
                               else
                                 begin
-                                  asml.remove(hp2);
-                                  hp2.Free;
+                                  RemoveInstruction(hp2);
 
                                   { We can remove the original MOV too }
                                   DebugMsg(SPeepholeOptimization + 'MovMov2NopNop 6b done',p);
@@ -2769,8 +2745,7 @@ unit aoptx86;
 
                     DebugMsg(SPeepholeOptimization + 'Removed movs/z instruction and extended earlier write (MovMovs/z2Mov/s/z)', hp2);
                     AllocRegBetween(taicpu(hp2).oper[1]^.reg, p, hp2, UsedRegs);
-                    AsmL.Remove(hp2);
-                    hp2.Free;
+                    RemoveInstruction(hp2);
 
                     Result := True;
                     Exit;
@@ -2800,8 +2775,7 @@ unit aoptx86;
                         and ffffffffh, %reg
                     }
                     DebugMsg(SPeepholeOptimization + 'MovAnd2Mov 3 done',p);
-                    asml.remove(hp2);
-                    hp2.free;
+                    RemoveInstruction(hp2);
                     Result:=true;
                     exit;
                   end;
@@ -2833,9 +2807,7 @@ unit aoptx86;
             )
           ) then
           begin
-            asml.remove(p);
-            p.free;
-            p:=hp1;
+            RemoveCurrentp(p, hp1);
             DebugMsg(SPeepholeOptimization + 'removed deadstore before leave/ret',p);
             RemoveLastDeallocForFuncRes(p);
             Result:=true;
@@ -2975,8 +2947,7 @@ unit aoptx86;
                       ->
                         decw    %si             addw    %dx,%si       p
                     }
-                    asml.remove(hp2);
-                    hp2.Free;
+                    RemoveInstruction(hp2);
                     RemoveCurrentP(p, hp1);
                     Result:=True;
                     Exit;
@@ -3060,8 +3031,7 @@ unit aoptx86;
                       ->
                         decw    %si             addw    %dx,%si       p
                     }
-                    asml.remove(hp2);
-                    hp2.Free;
+                    RemoveInstruction(hp2);
                   end;
               end;
 
@@ -3080,9 +3050,7 @@ unit aoptx86;
             Taicpu(hp2).opcode:=A_MOV;
             asml.remove(hp1);
             insertllitem(hp2,hp2.next,hp1);
-            asml.remove(p);
-            p.free;
-            p:=hp1;
+            RemoveCurrentp(p, hp1);
             Result:=true;
             exit;
           end;
@@ -3124,15 +3092,15 @@ unit aoptx86;
                         if (taicpu(p).oper[1]^.typ=top_reg) and
                           not(RegUsedAfterInstruction(taicpu(p).oper[1]^.reg,hp1,UsedRegs)) then
                           begin
-                            asml.remove(p);
-                            p.free;
-                            GetNextInstruction(hp1,p);
                             DebugMsg(SPeepholeOptimization + 'MovXXMovXX2Nop 1 done',p);
+                            RemoveInstruction(hp1);
+                            RemoveCurrentp(p); { p will now be equal to the instruction that follows what was hp1 }
                           end
                         else
-                          DebugMsg(SPeepholeOptimization + 'MovXXMovXX2MoVXX 1 done',p);
-                        asml.remove(hp1);
-                        hp1.free;
+                          begin
+                            DebugMsg(SPeepholeOptimization + 'MovXXMovXX2MoVXX 1 done',p);
+                            RemoveInstruction(hp1);
+                          end;
                         Result:=true;
                         exit;
                       end
@@ -3171,8 +3139,7 @@ unit aoptx86;
                 taicpu(p).loadoper(0,taicpu(hp1).oper[0]^);
                 taicpu(p).loadoper(1,taicpu(hp1).oper[1]^);
                 DebugMsg(SPeepholeOptimization + 'OpMov2Op done',p);
-                asml.Remove(hp1);
-                hp1.Free;
+                RemoveInstruction(hp1);
                 result:=true;
               end;
           end;
@@ -3243,8 +3210,7 @@ unit aoptx86;
               begin
                 taicpu(p).loadoper(1,taicpu(hp1).oper[1]^);
                 DebugMsg(SPeepholeOptimization + 'LeaMov2Lea done',p);
-                asml.Remove(hp1);
-                hp1.Free;
+                RemoveInstruction(hp1);
                 result:=true;
               end;
           end;
@@ -3403,16 +3369,14 @@ unit aoptx86;
                 MatchOperand(taicpu(hp1).oper[0]^,taicpu(p).oper[1]^) then
                 begin
                   taicpu(p).loadConst(0,taicpu(p).oper[0]^.val+1);
-                  asml.remove(hp1);
-                  hp1.free;
+                  RemoveInstruction(hp1);
                 end;
              A_SUB:
                if MatchOpType(taicpu(hp1),top_const,top_reg) and
                  MatchOperand(taicpu(hp1).oper[1]^,taicpu(p).oper[1]^) then
                  begin
                    taicpu(p).loadConst(0,taicpu(p).oper[0]^.val+taicpu(hp1).oper[0]^.val);
-                   asml.remove(hp1);
-                   hp1.free;
+                   RemoveInstruction(hp1);
                  end;
              A_ADD:
                begin
@@ -3420,13 +3384,11 @@ unit aoptx86;
                    MatchOperand(taicpu(hp1).oper[1]^,taicpu(p).oper[1]^) then
                    begin
                      taicpu(p).loadConst(0,taicpu(p).oper[0]^.val-taicpu(hp1).oper[0]^.val);
-                     asml.remove(hp1);
-                     hp1.free;
+                     RemoveInstruction(hp1);
                      if (taicpu(p).oper[0]^.val = 0) then
                        begin
                          hp1 := tai(p.next);
-                         asml.remove(p);
-                         p.free;
+                         RemoveInstruction(p); { Note, the choice to not use RemoveCurrentp is deliberate }
                          if not GetLastInstruction(hp1, p) then
                            p := hp1;
                          DoSubAddOpt := True;
@@ -3474,9 +3436,7 @@ unit aoptx86;
                     if taicpu(hp1).oper[0]^.typ=top_reg then
                       setsubreg(taicpu(hp1).oper[0]^.reg,R_SUBWHOLE);
                     hp1 := tai(p.next);
-                    asml.remove(p);
-                    p.free;
-                    p := hp1;
+                    RemoveCurrentp(p, hp1);
                     Result:=true;
                     exit;
                   end;
@@ -3546,8 +3506,7 @@ unit aoptx86;
                         if taicpu(hp1).oper[0]^.ref^.scalefactor<>0 then
                           tmpref.scalefactor:=tmpref.scalefactor*taicpu(hp1).oper[0]^.ref^.scalefactor;
                         TmpRef.base := taicpu(hp1).oper[0]^.ref^.base;
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
                       end
                   end
                 else if (taicpu(hp1).oper[0]^.typ = Top_Const) then
@@ -3562,8 +3521,7 @@ unit aoptx86;
                       else
                         internalerror(2019050536);
                     end;
-                    asml.remove(hp1);
-                    hp1.free;
+                    RemoveInstruction(hp1);
                   end
                 else
                   if (taicpu(hp1).oper[0]^.typ = Top_Reg) and
@@ -3584,8 +3542,7 @@ unit aoptx86;
                         else
                           internalerror(2019050535);
                       end;
-                      asml.remove(hp1);
-                      hp1.free;
+                      RemoveInstruction(hp1);
                     end;
               end;
             if TmpBool2
@@ -3715,14 +3672,12 @@ unit aoptx86;
                         { Don't remove the 'mov' instruction if its register is used elsewhere }
                         if not(RegUsedAfterInstruction(taicpu(hp1).oper[1]^.reg, hp2, TmpUsedRegs)) then
                           begin
-                            asml.Remove(hp1);
-                            hp1.Free;
+                            RemoveInstruction(hp1);
                             Result := True;
                           end;
 
                         { Only set Result to True if the 'mov' instruction was removed }
-                        asml.Remove(hp2);
-                        hp2.Free;
+                        RemoveInstruction(hp2);
                       end;
                   end
                 else
@@ -3734,8 +3689,7 @@ unit aoptx86;
                     if not(RegUsedAfterInstruction(NR_DEFAULTFLAGS, hp1, TmpUsedRegs)) then
                       begin
                         DebugMsg(SPeepholeOptimization + 'ShlAnd2Shl', p);
-                        asml.Remove(hp1);
-                        hp1.Free;
+                        RemoveInstruction(hp1);
                         Result := True;
                       end;
                   end;
@@ -3825,8 +3779,7 @@ unit aoptx86;
                   Exit;
               end;
 
-            asml.Remove(hp1);
-            hp1.Free;
+            RemoveInstruction(hp1);
 
             if Unconditional then
               MakeUnconditional(taicpu(hp2))
@@ -3840,11 +3793,8 @@ unit aoptx86;
 
             if not RegUsedAfterInstruction(taicpu(p).oper[0]^.reg, hp2, TmpUsedRegs) then
               begin
-                asml.Remove(p);
-                UpdateUsedRegs(next);
-                p.Free;
+                RemoveCurrentp(p, hp2);
                 Result := True;
-                p := hp2;
               end;
 
             DebugMsg(SPeepholeOptimization + 'SETcc/TESTCmp/Jcc -> Jcc',p);
@@ -3879,11 +3829,8 @@ unit aoptx86;
                    (taicpu(p).oper[0]^.ref^.offset < tabstractnormalvarsym(current_procinfo.procdef.funcretsym).localloc.reference.offset)) and
                (taicpu(p).oper[0]^.ref^.index = NR_NO) then
               begin
-                asml.remove(p);
-                asml.remove(hp1);
-                p.free;
-                hp1.free;
-                p := hp2;
+                RemoveInstruction(hp1);
+                RemoveCurrentP(p, hp2);
                 RemoveLastDeallocForFuncRes(p);
                 Result := true;
               end
@@ -3896,8 +3843,7 @@ unit aoptx86;
                   if (taicpu(p).opcode = A_FSTP) then
                     taicpu(p).opcode := A_FST
                   else taicpu(p).opcode := A_FIST;
-                  asml.remove(hp1);
-                  hp1.free;
+                  RemoveInstruction(hp1);
                 end
             *)
           end;
@@ -3937,9 +3883,7 @@ unit aoptx86;
                     end;
                     taicpu(hp1).oper[0]^.reg := taicpu(p).oper[0]^.reg;
                     taicpu(hp1).oper[1]^.reg := NR_ST;
-                    asml.remove(p);
-                    p.free;
-                    p := hp1;
+                    RemoveCurrentP(p, hp1);
                     Result:=true;
                     exit;
                   end;
@@ -3967,9 +3911,7 @@ unit aoptx86;
                   faddp/                       fmul     st, st
                   fmulp  st, st1 (hp2) }
                 begin
-                  asml.remove(p);
-                  p.free;
-                  p := hp1;
+                  RemoveCurrentP(p, hp1);
                   if (taicpu(hp2).opcode = A_FADDP) then
                     taicpu(hp2).opcode := A_FADD
                   else
@@ -4004,8 +3946,7 @@ unit aoptx86;
                         else
                           internalerror(2019050533);
                       end;
-                      asml.remove(hp2);
-                      hp2.free;
+                      RemoveInstruction(hp2);
                     end
                   else
                     ;
@@ -4055,8 +3996,7 @@ unit aoptx86;
                              begin
                                DebugMsg(SPeepholeOptimization + 'Cmpcc2Testcc - condition B/C/NAE/O --> Never (jump removed)', hp1);
                                TAsmLabel(taicpu(hp1).oper[0]^.ref^.symbol).decrefs;
-                               AsmL.Remove(hp1);
-                               hp1.Free;
+                               RemoveInstruction(hp1);
                                { Since hp1 was deleted, hp2 must not be updated }
                                Continue;
                              end
@@ -4221,8 +4161,7 @@ unit aoptx86;
          MatchOperand(taicpu(hp1).oper[0]^,taicpu(hp1).oper[1]^) then
          begin
            DebugMsg(SPeepholeOptimization + 'PXorPXor2PXor done',hp1);
-           asml.Remove(hp1);
-           hp1.Free;
+           RemoveInstruction(hp1);
            Result:=true;
            Exit;
          end;
@@ -4249,8 +4188,7 @@ unit aoptx86;
          MatchOperand(taicpu(hp1).oper[0]^,taicpu(hp1).oper[1]^,taicpu(hp1).oper[2]^) then
          begin
            DebugMsg(SPeepholeOptimization + 'VPXorVPXor2PXor done',hp1);
-           asml.Remove(hp1);
-           hp1.Free;
+           RemoveInstruction(hp1);
            Result:=true;
            Exit;
          end;
@@ -4348,8 +4286,7 @@ unit aoptx86;
                 taicpu(p).opcode := A_LEA;
                 taicpu(p).loadref(0, NewRef);
 
-                Asml.Remove(hp1);
-                hp1.Free;
+                RemoveInstruction(hp1);
 
                 Result := True;
                 Exit;
@@ -4379,9 +4316,7 @@ unit aoptx86;
               not RegUsedAfterInstruction(taicpu(p).oper[1]^.reg, hp1, TmpUsedRegs)
             then
               begin
-                asml.remove(p);
-                p.free;
-                p := hp1;
+                RemoveCurrentP(p, hp1);
                 Result:=true;
               end;
 
@@ -4420,12 +4355,9 @@ unit aoptx86;
                 AllocRegBetween(taicpu(hp2).oper[1]^.reg, p, hp1, UsedRegs);
                 taicpu(hp1).opcode := A_XCHG;
 
-                asml.Remove(p);
-                asml.Remove(hp2);
-                p.Free;
-                hp2.Free;
+                RemoveCurrentP(p, hp1);
+                RemoveInstruction(hp2);
 
-                p := hp1;
                 Result := True;
                 Exit;
               end;
@@ -4449,8 +4381,7 @@ unit aoptx86;
                             cltd
                         }
                         DebugMsg(SPeepholeOptimization + 'MovSar2Cltd', p);
-                        Asml.Remove(hp1);
-                        hp1.Free;
+                        RemoveInstruction(hp1);
                         taicpu(p).opcode := A_CDQ;
                         taicpu(p).opsize := S_NO;
                         taicpu(p).clearop(1);
@@ -4531,8 +4462,7 @@ unit aoptx86;
                             taicpu(p).clearop(0);
                             taicpu(p).ops:=0;
 
-                            AsmL.Remove(hp1);
-                            hp1.Free;
+                            RemoveInstruction(hp1);
 
                             taicpu(hp2).loadreg(0, NR_EDX);
                             taicpu(hp2).loadreg(1, NR_EAX);
@@ -4578,8 +4508,7 @@ unit aoptx86;
                         cqto
                     }
                     DebugMsg(SPeepholeOptimization + 'MovSar2Cqto', p);
-                    Asml.Remove(hp1);
-                    hp1.Free;
+                    RemoveInstruction(hp1);
                     taicpu(p).opcode := A_CQO;
                     taicpu(p).opsize := S_NO;
                     taicpu(p).clearop(1);
@@ -4660,8 +4589,7 @@ unit aoptx86;
                     taicpu(hp1).clearop(0);
                     taicpu(hp1).ops:=0;
 
-                    AsmL.Remove(hp2);
-                    hp2.Free;
+                    RemoveInstruction(hp2);
 (*
 {$ifdef x86_64}
                   end
@@ -4708,8 +4636,7 @@ unit aoptx86;
                     taicpu(hp1).clearop(0);
                     taicpu(hp1).ops:=0;
 
-                    AsmL.Remove(hp2);
-                    hp2.Free;
+                    RemoveInstruction(hp2);
 {$endif x86_64}
 *)
                   end;
@@ -4799,8 +4726,7 @@ unit aoptx86;
             taicpu(hp1).opcode := A_ADD;
 
             { Delete old ADD/LEA instruction }
-            asml.remove(hp2);
-            hp2.free;
+            RemoveInstruction(hp2);
 
             { Convert "shrq $1, reg1q" to "rcr $1, reg1d" }
             taicpu(hp3).opcode := A_RCR;
@@ -4839,8 +4765,7 @@ unit aoptx86;
                 taicpu(p).loadreg(2,taicpu(p).oper[1]^.reg);
                 taicpu(p).loadreg(1,taicpu(hp1).oper[0]^.reg);
                 DebugMsg(SPeepholeOptimization + 'MovImul2Imul done',p);
-                asml.remove(hp1);
-                hp1.free;
+                RemoveInstruction(hp1);
                 result:=true;
               end;
           end;
@@ -5270,8 +5195,7 @@ unit aoptx86;
                           DebugMsg(SPeepholeOptimization+'JccMov2CMov',p);
 
                           { Remove the original jump }
-                          asml.Remove(p);
-                          p.Free;
+                          RemoveInstruction(p); { Note, the choice to not use RemoveCurrentp is deliberate }
 
                           GetNextInstruction(hp2, p); { Instruction after the label }
 
@@ -5369,8 +5293,7 @@ unit aoptx86;
                                 DebugMsg(SPeepholeOptimization+'JccMovJmpMov2CMovCMov',hp1);
 
                                 { remove jCC }
-                                asml.remove(hp1);
-                                hp1.free;
+                                RemoveInstruction(hp1);
 
                                 { Now we can safely decrement it }
                                 tasmlabel(symbol).decrefs;
@@ -5381,8 +5304,7 @@ unit aoptx86;
                                 { remove jmp }
                                 symbol := taicpu(hp2).oper[0]^.ref^.symbol;
 
-                                asml.remove(hp2);
-                                hp2.free;
+                                RemoveInstruction(hp2);
 
                                 { As before, now we can safely decrement it }
                                 tasmlabel(symbol).decrefs;
@@ -5483,11 +5405,8 @@ unit aoptx86;
                 decw    %si             addw    %dx,%si       p
             }
             DebugMsg(SPeepholeOptimization + 'var3',p);
-            asml.remove(p);
-            asml.remove(hp2);
-            p.free;
-            hp2.free;
-            p:=hp1;
+            RemoveCurrentP(p, hp1);
+            RemoveInstruction(hp2);
           end
         else if reg_and_hp1_is_instr and
           (taicpu(hp1).opcode = A_MOV) and
@@ -5525,8 +5444,7 @@ unit aoptx86;
                 else
 {$endif x86_64}
                   taicpu(p).loadreg(1,taicpu(hp1).oper[1]^.reg);
-                asml.remove(hp1);
-                hp1.Free;
+                RemoveInstruction(hp1);
               end;
           end
         else if reg_and_hp1_is_instr and
@@ -5571,15 +5489,13 @@ unit aoptx86;
                     if (taicpu(hp1).oper[0]^.val = $ff) then
                       begin
                         DebugMsg(SPeepholeOptimization + 'var4',p);
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
                       end;
                     S_WL{$ifdef x86_64}, S_WQ{$endif x86_64}:
                       if (taicpu(hp1).oper[0]^.val = $ffff) then
                         begin
                           DebugMsg(SPeepholeOptimization + 'var5',p);
-                          asml.remove(hp1);
-                          hp1.free;
+                          RemoveInstruction(hp1);
                         end;
 {$ifdef x86_64}
                     S_LQ:
@@ -5587,8 +5503,7 @@ unit aoptx86;
                         begin
                           if (cs_asm_source in current_settings.globalswitches) then
                             asml.insertbefore(tai_comment.create(strpnew(SPeepholeOptimization + 'var6')),p);
-                          asml.remove(hp1);
-                          hp1.Free;
+                          RemoveInstruction(hp1);
                         end;
 {$endif x86_64}
                   else
@@ -5781,9 +5696,7 @@ unit aoptx86;
               begin
                 taicpu(hp1).loadConst(0, taicpu(p).oper[0]^.val and taicpu(hp1).oper[0]^.val);
                 DebugMsg(SPeepholeOptimization + 'AndAnd2And done',hp1);
-                asml.remove(p);
-                p.Free;
-                p:=hp1;
+                RemoveCurrentP(p, hp1);
                 Result:=true;
                 exit;
               end
@@ -5819,8 +5732,7 @@ unit aoptx86;
                         }
                         DebugMsg(SPeepholeOptimization + 'AndMovzToAnd done',p);
 
-                        asml.remove(hp1);
-                        hp1.free;
+                        RemoveInstruction(hp1);
                         Exit;
                       end;
                   end
@@ -5880,8 +5792,7 @@ unit aoptx86;
                        then
                        begin
                          DebugMsg(SPeepholeOptimization + 'AndMovsxToAnd',p);
-                         asml.remove(hp1);
-                         hp1.free;
+                         RemoveInstruction(hp1);
                          Exit;
                        end;
                   end
@@ -6074,10 +5985,8 @@ unit aoptx86;
             taicpu(hp1).is_jmp := true;
             DebugMsg(SPeepholeOptimization + 'LeaCallLeaRet2Jmp done',p);
             RemoveCurrentP(p, hp4);
-            AsmL.Remove(hp2);
-            hp2.free;
-            AsmL.Remove(hp3);
-            hp3.free;
+            RemoveInstruction(hp2);
+            RemoveInstruction(hp3);
             Result:=true;
           end;
       end;
@@ -6127,10 +6036,8 @@ unit aoptx86;
             taicpu(hp1).is_jmp := true;
             DebugMsg(SPeepholeOptimization + 'PushCallPushRet2Jmp done',p);
             RemoveCurrentP(p, hp4);
-            AsmL.Remove(hp2);
-            hp2.free;
-            AsmL.Remove(hp3);
-            hp3.free;
+            RemoveInstruction(hp2);
+            RemoveInstruction(hp3);
             Result:=true;
           end;
 {$endif x86_64}
@@ -6283,10 +6190,7 @@ unit aoptx86;
                     ((taicpu(hp1).opcode <> A_ADD) and
                      (taicpu(hp1).opcode <> A_SUB))) then
                   begin
-                    hp1 := tai(p.next);
-                    asml.remove(p);
-                    p.free;
-                    p := tai(hp1);
+                    RemoveCurrentP(p, hp2);
                     Result:=true;
                   end;
               end;
@@ -6302,10 +6206,7 @@ unit aoptx86;
                   { and in case of carry for A(E)/B(E)/C/NC                  }
                    (taicpu(hp2).condition in [C_Z,C_NZ,C_E,C_NE]) then
                   begin
-                    hp1 := tai(p.next);
-                    asml.remove(p);
-                    p.free;
-                    p := tai(hp1);
+                    RemoveCurrentP(p, hp2);
                     Result:=true;
                   end;
               end;
@@ -6333,10 +6234,7 @@ unit aoptx86;
                       else
                         ;
                     end;
-                    hp1 := tai(p.next);
-                    asml.remove(p);
-                    p.free;
-                    p := tai(hp1);
+                    RemoveCurrentP(p, hp2);
                     Result:=true;
                   end;
               end
@@ -6373,8 +6271,7 @@ unit aoptx86;
             InsertLLItem(p.previous, p, hp2);
             taicpu(p).opcode := A_JMP;
             taicpu(p).is_jmp := true;
-            asml.remove(hp1);
-            hp1.free;
+            RemoveInstruction(hp1);
             Result:=true;
           end
         else
@@ -6405,8 +6302,7 @@ unit aoptx86;
               end
             else
               DebugMsg(SPeepholeOptimization + 'CallRet2Call done',p);
-            asml.remove(hp1);
-            hp1.free;
+            RemoveInstruction(hp1);
             Result:=true;
           end;
       end;
diff --git a/packages/fcl-passrc/src/pastree.pp b/packages/fcl-passrc/src/pastree.pp
index 7abdd74939..ae10ffc38b 100644
--- a/packages/fcl-passrc/src/pastree.pp
+++ b/packages/fcl-passrc/src/pastree.pp
@@ -5724,7 +5724,7 @@ begin
       Result:=Result+', ';
     Result:=Result+Params[I].GetDeclaration(Full);  
     end;
-  if Kind = pekSet then
+  if Kind in [pekSet,pekArrayParams] then
     Result := '[' + Result + ']'
   else
     Result := '(' + Result + ')';
diff --git a/packages/fcl-passrc/src/paswrite.pp b/packages/fcl-passrc/src/paswrite.pp
index 8079455bcb..2705ba2df8 100644
--- a/packages/fcl-passrc/src/paswrite.pp
+++ b/packages/fcl-passrc/src/paswrite.pp
@@ -1241,31 +1241,38 @@ begin
 end;
 
 procedure TPasWriter.WriteImplIfElse(AIfElse: TPasImplIfElse);
+
+Var
+  DoBeginEnd : Boolean;
+
 begin
   Add('if ' + AIfElse.Condition + ' then');
   if Assigned(AIfElse.IfBranch) then
-  begin
+    begin
     AddLn;
-    if (AIfElse.IfBranch.ClassType = TPasImplCommands) or
-      (AIfElse.IfBranch.ClassType = TPasImplBlock) then
+    DoBeginEnd:=(AIfElse.IfBranch.ClassType = TPasImplCommands) or
+                (AIfElse.IfBranch.ClassType = TPasImplBlock) or
+                Assigned(aIfElse.ElseBranch);
+    if DoBeginEnd then
       AddLn('begin');
     IncIndent;
     WriteImplElement(AIfElse.IfBranch, False);
     DecIndent;
-    if (AIfElse.IfBranch.ClassType = TPasImplCommands) or
-      (AIfElse.IfBranch.ClassType = TPasImplBlock) then
+    if DoBeginEnd then
+      begin
       if Assigned(AIfElse.ElseBranch) then
         Add('end ')
       else
         AddLn('end;')
+      end
     else
       if Assigned(AIfElse.ElseBranch) then
         AddLn;
-  end else
-    if not Assigned(AIfElse.ElseBranch) then
-      AddLn(';')
-    else
-      AddLn;
+    end
+  else if not Assigned(AIfElse.ElseBranch) then
+    AddLn(';')
+  else
+    AddLn;
 
   if Assigned(AIfElse.ElseBranch) then
     if AIfElse.ElseBranch.ClassType = TPasImplIfElse then
@@ -1277,10 +1284,10 @@ begin
       AddLn('else');
       IncIndent;
       WriteImplElement(AIfElse.ElseBranch, True);
-      if (not Assigned(AIfElse.Parent)) or
+{      if (not Assigned(AIfElse.Parent)) or
         (AIfElse.Parent.ClassType <> TPasImplIfElse) or
         (TPasImplIfElse(AIfElse.Parent).IfBranch <> AIfElse) then
-        AddLn(';');
+        AddLn(';');}
       DecIndent;
     end;
 end;
diff --git a/rtl/aarch64/mathu.inc b/rtl/aarch64/mathu.inc
index 7481703372..469bb49eca 100644
--- a/rtl/aarch64/mathu.inc
+++ b/rtl/aarch64/mathu.inc
@@ -103,21 +103,23 @@ function GetExceptionMask: TFPUExceptionMask;
     if ((fpcr and fpu_ide)=0) then
       result := result+[exDenormalized];
     }
+    { as the fpcr flags might be RAZ, the softfloat exception mask
+      is considered as the authoritative mask }
     result:=softfloat_exception_mask;
   end;
 
 
 function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
-  {
   var
     newfpcr: dword;
-  }
   begin
-    { as I am not aware of any hardware exception supporting AArch64 implementation,
-      and else the trapping enable flags are RAZ, work solely with softfloat_exception_mask (FK)
-    }
+    { clear "exception happened" flags }
+    ClearExceptions(false);
     softfloat_exception_mask:=mask;
-    {
+
+    { at least the ThunderX AArch64 support apperently hardware exceptions,
+      so set fpcr correctly, thought it might be WI on most implementations it does not hurt
+    }
     newfpcr:=fpu_exception_mask;
     if exInvalidOp in Mask then
       newfpcr:=newfpcr and not(fpu_ioe);
@@ -131,14 +133,10 @@ function SetExceptionMask(const Mask: TFPUExceptionMask): TFPUExceptionMask;
       newfpcr:=newfpcr and not(fpu_ixe);
     if exDenormalized in Mask then
       newfpcr:=newfpcr and not(fpu_ide);
-    }
-    { clear "exception happened" flags }
-    ClearExceptions(false);
-    { set new exception mask }
-//    setfpcr((getfpcr and not(fpu_exception_mask)) or newfpcr);
-    { unsupported mask bits will remain 0 -> read exception mask again }
-//    result:=GetExceptionMask;
-//    softfloat_exception_mask:=result;
+    setfpcr((getfpcr and not(fpu_exception_mask)) or newfpcr);
+
+    { as the fpcr flags might be RAZ, the softfloat exception mask
+      is considered as the authoritative mask }
     result:=softfloat_exception_mask;
   end;
 
diff --git a/rtl/aix/sysos.inc b/rtl/aix/sysos.inc
index 5c40166db6..2923cee4b1 100644
--- a/rtl/aix/sysos.inc
+++ b/rtl/aix/sysos.inc
@@ -96,10 +96,15 @@ end;
 *****************************************************************************}
 
 function do_isdevice(handle:longint):boolean;
+var
+  StatRec: Stat;
 begin
-  do_isdevice:= (handle=StdInputHandle) or
-                (handle=StdOutputHandle) or
-                (handle=StdErrorHandle);
+  fpFStat (Handle, StatRec);
+  case StatRec.st_Mode and S_IFMT of
+   S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
 
 
diff --git a/rtl/beos/sysos.inc b/rtl/beos/sysos.inc
index 98deb00f8b..01b5d4e470 100644
--- a/rtl/beos/sysos.inc
+++ b/rtl/beos/sysos.inc
@@ -132,17 +132,14 @@ end;
 *****************************************************************************}
 
 Function Do_IsDevice(Handle:Longint):boolean;
-{
-  Interface to Unix ioctl call.
-  Performs various operations on the filedescriptor Handle.
-  Ndx describes the operation to perform.
-  Data points to data needed for the Ndx function. The structure of this
-  data is function-dependent.
-}
-CONST
-  IOCtl_TCGETS=$5401;
 var
-  Data : array[0..255] of byte; {Large enough for termios info}
+  StatRec: Stat;
 begin
-  Do_IsDevice:=(Fpioctl(handle,IOCTL_TCGETS,@data)<>-1);
+  fpFStat (Handle, StatRec);
+  case StatRec.st_Mode and S_IFMT of
+(* S_IFSOCK supposedly not available under BeOS, thus omitted *)
+   S_IFCHR, S_IFIFO: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
diff --git a/rtl/bsd/sysos.inc b/rtl/bsd/sysos.inc
index 1deb137aa1..2e095102a2 100644
--- a/rtl/bsd/sysos.inc
+++ b/rtl/bsd/sysos.inc
@@ -156,19 +156,15 @@ end;
 *****************************************************************************}
 
 Function Do_IsDevice(Handle:Longint):boolean;
-{
-  Interface to Unix ioctl call.
-  Performs various operations on the filedescriptor Handle.
-  Ndx describes the operation to perform.
-  Data points to data needed for the Ndx function. The structure of this
-  data is function-dependent.
-}
-CONST
-  IOCtl_TCGETS=$40000000+$2C7400+ 19;
 var
-  Data : array[0..255] of byte; {Large enough for termios info}
+  StatRec: Stat;
 begin
-  Do_IsDevice:=(Fpioctl(handle,IOCTL_TCGETS,@data)<>-1);
+  fpFStat (Handle, StatRec);
+  case StatRec.st_Mode and S_IFMT of
+   S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
 
 
diff --git a/rtl/emx/sysfile.inc b/rtl/emx/sysfile.inc
index 3f86765a80..e47023fbb7 100644
--- a/rtl/emx/sysfile.inc
+++ b/rtl/emx/sysfile.inc
@@ -397,7 +397,7 @@ asm
     call syscall
     mov eax, 1
     jc @IsDevEnd
-    test edx, 80h           { verify if it is a file  }
+    test edx, 80h           { bit 7 is set if it is a device or a pipe }
     jnz @IsDevEnd
     dec eax                 { nope, so result is zero }
 @IsDevEnd:
diff --git a/rtl/gba/sysfile.inc b/rtl/gba/sysfile.inc
index 192aed7ba9..683056c896 100644
--- a/rtl/gba/sysfile.inc
+++ b/rtl/gba/sysfile.inc
@@ -74,7 +74,14 @@ begin
 end;
 
 function do_isdevice(handle: longint): boolean;
+var
+  StatRec: TStat;
 begin
-  result := false;
+  FStat (Handle, StatRec);
+  case StatRec.st_Mode and _IFMT of
+   _IFCHR, _IFIFO, _IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
 
diff --git a/rtl/haiku/sysos.inc b/rtl/haiku/sysos.inc
index e185d7dc7b..78337cf9e1 100644
--- a/rtl/haiku/sysos.inc
+++ b/rtl/haiku/sysos.inc
@@ -108,15 +108,13 @@ end;
 *****************************************************************************}
 
 Function Do_IsDevice(Handle:Longint):boolean;
-{
-  Interface to Unix ioctl call.
-  Performs various operations on the filedescriptor Handle.
-  Ndx describes the operation to perform.
-  Data points to data needed for the Ndx function. The structure of this
-  data is function-dependent.
-}
+var
+  StatRec: Stat;
 begin
-  do_isdevice:= (handle=StdInputHandle) or
-                (handle=StdOutputHandle) or
-                (handle=StdErrorHandle);
+  fpFStat (Handle, StatRec);
+  case StatRec.st_Mode and S_IFMT of
+   S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
diff --git a/rtl/inc/compproc.inc b/rtl/inc/compproc.inc
index df9ba0161f..02e521c5e9 100644
--- a/rtl/inc/compproc.inc
+++ b/rtl/inc/compproc.inc
@@ -806,6 +806,11 @@ Procedure fpc_rewrite_typed_name_iso(var f : TypedFile;const FileName : String;S
 Procedure fpc_typed_write(TypeSize : Longint;var f : TypedFile;const Buf); compilerproc;
 Procedure fpc_typed_read(TypeSize : Longint;var f : TypedFile;out Buf); compilerproc;
 Procedure fpc_typed_read_iso(TypeSize : Longint;var f : TypedFile;out Buf); compilerproc;
+
+Procedure fpc_typedfile_init_iso(var t : TypedFile;nr : DWord);compilerproc;
+Procedure fpc_typedfile_init_filename_iso(var t : TypedFile;nr : DWord;const filename : string); compilerproc;
+Procedure fpc_typedfile_close_iso(var t : TypedFile); compilerproc;
+
 {$endif FPC_HAS_FEATURE_FILEIO}
 
 {$ifdef FPC_INCLUDE_SOFTWARE_INT64_TO_DOUBLE}
diff --git a/rtl/inc/text.inc b/rtl/inc/text.inc
index bab955efee..c78e6fa6db 100644
--- a/rtl/inc/text.inc
+++ b/rtl/inc/text.inc
@@ -96,12 +96,6 @@ end;
 Procedure Assign(out t:Text;const s : UnicodeString);
 begin
   InitText(t);
-  if Length (S) >= Length (TextRec.Name) then
-{ The last character of TextRec.Name needs to be #0 }
-   begin
-     InOutRes:=3;
-     Exit;
-   end;
 {$ifdef FPC_ANSI_TEXTFILEREC}
   TextRec(t).Name:=ToSingleByteFileSystemEncodedFileName(S);
 {$else FPC_ANSI_TEXTFILEREC}
@@ -115,29 +109,12 @@ end;
 
 {$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
 Procedure Assign(out t:Text;const s: RawByteString);
-{$ifdef FPC_ANSI_TEXTFILEREC}
-var
-  R: RawByteString;
-{$endif FPC_ANSI_TEXTFILEREC}
 Begin
   InitText(t);
 {$ifdef FPC_ANSI_TEXTFILEREC}
   { ensure the characters in the record's filename are encoded correctly }
-  R:=ToSingleByteFileSystemEncodedFileName(S);
-  if Length (R) >= Length (TextRec.Name) then
-{ The last character of TextRec.Name needs to be #0 }
-   begin
-     InOutRes:=3;
-     Exit;
-   end;
-  TextRec(t).Name:=R;
+  TextRec(t).Name:=ToSingleByteFileSystemEncodedFileName(S);
 {$else FPC_ANSI_TEXTFILEREC}
-  if Length (S) >= Length (TextRec.Name) then
-{ The last character of TextRec.Name needs to be #0 }
-   begin
-     InOutRes:=3;
-     Exit;
-   end;
   TextRec(t).Name:=S;
 {$endif FPC_ANSI_TEXTFILEREC}
   { null terminate, since the name array is regularly used as p(wide)char }
@@ -161,61 +138,27 @@ End;
 
 
 Procedure Assign(out t:Text;const p: PAnsiChar);
-var
-{$IFDEF FPC_HAS_FEATURE_ANSISTRINGS}
-  S: ansistring;
-{$ELSE FPC_HAS_FEATURE_ANSISTRINGS}
-  Counter: SizeInt;
-{$ENDIF FPC_HAS_FEATURE_ANSISTRINGS}
 Begin
 {$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
-  S := AnsiString (P);
-  if Length (S) >= Length (TextRec.Name) then
-{ The last character of TextRec.Name needs to be #0 }
-   begin
-     InOutRes:=3;
-     Exit;
-   end;
-  Assign(t,S);
+  Assign(t,AnsiString(p));
 {$else FPC_HAS_FEATURE_ANSISTRINGS}
   { no use in making this the one that does the work, since the name field is
     limited to 255 characters anyway }
-{  Assign(t,strpas(p));}
-  { TH: The length of name field may be extended sooner or later, let's play
-    safely }
-  Counter := IndexByte(P^,-1,0);
-  if Counter >= Length (TextRec.Name) then
-{ The last character of TextRec.Name needs to be #0 }
-   begin
-     InOutRes:=3;
-     Exit;
-   end;
-  Move(P^,TextRec(t).Name,counter+1);
+  Assign(t,strpas(p));
 {$endif FPC_HAS_FEATURE_ANSISTRINGS}
 End;
 
 
 Procedure Assign(out t:Text;const c: AnsiChar);
-{$IFNDEF FPC_HAS_FEATURE_ANSISTRINGS}
-var
-  Counter: SizeInt;
-{$ENDIF FPC_HAS_FEATURE_ANSISTRINGS}
 Begin
 {$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
   Assign(t,AnsiString(c));
 {$else FPC_HAS_FEATURE_ANSISTRINGS}
-  Counter := IndexByte(c,-1,0);
-  if Counter >= Length (TextRec.Name) then
-{ The last character of TextRec.Name needs to be #0 }
-   begin
-     InOutRes:=3;
-     Exit;
-   end;
-  Move(c,TextRec(F).Name,counter+1);
-{  Assign(t,ShortString(c));}
+  Assign(t,ShortString(c));
 {$endif FPC_HAS_FEATURE_ANSISTRINGS}
 End;
 
+
 Procedure Close(var t : Text);[IOCheck];
 Begin
   if InOutRes<>0 then
@@ -565,7 +508,7 @@ Begin
   if not isdevice then
     { if we didn't modify the buffer, simply restore the BufPos and BufEnd  }
     { (the latter because it's now probably set to zero because nothing was }
-    { read anymore)                                                         }
+    {  was read anymore)                                                    }
     if (reads = 0) then
       begin
         TextRec(t).BufPos:=oldbufpos;
diff --git a/rtl/inc/typefile.inc b/rtl/inc/typefile.inc
index 28279b7699..81b07eda5a 100644
--- a/rtl/inc/typefile.inc
+++ b/rtl/inc/typefile.inc
@@ -199,3 +199,44 @@ Begin
   Result:=pbyte(@f)+sizeof(TypedFile);
 end;
 
+
+Procedure fpc_typedfile_init_iso(var t : TypedFile;nr : DWord);compilerproc;
+begin
+{$ifdef FPC_HAS_FEATURE_COMMANDARGS}
+  assign(t,paramstr(nr));
+{$else FPC_HAS_FEATURE_COMMANDARGS}
+  { primitive workaround for targets supporting no command line arguments,
+    invent some file name, try to avoid complex procedures like concating strings which might
+    pull-in bigger parts of the rtl }
+  assign(t,chr((nr mod 16)+65));
+{$endif FPC_HAS_FEATURE_COMMANDARGS}
+end;
+
+
+Procedure fpc_typedfile_init_filename_iso(var t : TypedFile;nr : DWord;const filename : string);compilerproc;
+begin
+{$ifdef FPC_HAS_FEATURE_COMMANDARGS}
+  if paramstr(nr)='' then
+    assign(t,filename)
+  else
+    assign(t,paramstr(nr));
+{$else FPC_HAS_FEATURE_COMMANDARGS}
+  { primitive workaround for targets supporting no command line arguments,
+    invent some file name, try to avoid complex procedures like concating strings which might
+    pull-in bigger parts of the rtl }
+  assign(t,chr((nr mod 16)+65));
+{$endif FPC_HAS_FEATURE_COMMANDARGS}
+end;
+
+
+
+Procedure fpc_typedfile_close_iso(var t : TypedFile);compilerproc;
+begin
+  { reset inout result as this procedure is only called by the compiler and no I/O checking is carried out,
+    so further I/O does not fail }
+  inoutres:=0;
+  close(t);
+  inoutres:=0;
+end;
+
+
diff --git a/rtl/linux/aarch64/sighnd.inc b/rtl/linux/aarch64/sighnd.inc
index 011b63a960..06b72341e5 100644
--- a/rtl/linux/aarch64/sighnd.inc
+++ b/rtl/linux/aarch64/sighnd.inc
@@ -15,6 +15,8 @@
 
  **********************************************************************}
 
+{ $define SYSTEM_DEBUG}
+
 procedure SignalToRunerror(Sig: longint; SigInfo: PSigInfo; UContext: PUContext); public name '_FPC_DEFAULTSIGHANDLER'; cdecl;
 
 var
@@ -23,7 +25,19 @@ begin
   res:=0;
   case sig of
     SIGFPE:
+      begin
         res:=207;
+{$ifdef SYSTEM_DEBUG}
+        writeln('magic of FPSIMD_Context: $',hexstr(uContext^.uc_mcontext.FPSIMD_Context.head.magic,8));
+        writeln('size of FPSIMD_Context: $',hexstr(uContext^.uc_mcontext.FPSIMD_Context.head.size,8));
+{$endif SYSTEM_DEBUG}
+        if (uContext^.uc_mcontext.FPSIMD_Context.head.magic=$46508001) and
+           (uContext^.uc_mcontext.FPSIMD_Context.head.size=$210) then
+           begin
+             with uContext^.uc_mcontext.FPSIMD_Context do
+               fpsr:=fpsr and not(fpu_exception_mask shr fpu_exception_mask_to_status_mask_shift);
+           end;
+      end;
     SIGILL:
         res:=216;
     SIGSEGV :
@@ -38,7 +52,10 @@ begin
   reenable_signal(sig);
   { give runtime error at the position where the signal was raised }
   if res<>0 then
-    HandleErrorAddrFrame(res,
-      pointer(uContext^.uc_mcontext.pc),
-      pointer(uContext^.uc_mcontext.regs[29]));
+    begin
+      uContext^.uc_mcontext.regs[0]:=res;
+      uContext^.uc_mcontext.regs[1]:=uContext^.uc_mcontext.pc;
+      uContext^.uc_mcontext.regs[2]:=uContext^.uc_mcontext.regs[29];
+      pointer(uContext^.uc_mcontext.pc):=@HandleErrorAddrFrame;
+    end;
 end;
diff --git a/rtl/linux/aarch64/sighndh.inc b/rtl/linux/aarch64/sighndh.inc
index 937b8a4203..0ee6f31123 100644
--- a/rtl/linux/aarch64/sighndh.inc
+++ b/rtl/linux/aarch64/sighndh.inc
@@ -17,6 +17,18 @@
 {$packrecords C}
 
 type
+  TAarch64_ctx = record
+    magic,
+    size : DWord
+  end;
+
+  TFPSIMD_Context = record
+    head : TAarch64_ctx;
+    fpsr,
+    fpcr : DWord;
+    vregs : array[0..31] of array[0..7] of Byte;
+  end;
+
   PSigContext = ^TSigContext;
   TSigContext = record
     fault_address : cULong;
@@ -25,10 +37,12 @@ type
     pc : cULong;
     pstate : cULong;
     __pad : cULong;
-    { The following field should be 16-byte-aligned. Currently the
+    { The following fields should be 16-byte-aligned. Currently the
       directive for specifying alignment is buggy, so the preceding
       field was added so that the record has the right size. }
-    __reserved : array[0..4095] of cUChar;
+    case Byte of
+      1: (__reserved : array[0..4095] of cUChar);
+      2: (FPSIMD_Context : TFPSIMD_Context);
   end;
 
   stack_t = record
diff --git a/rtl/linux/ptypes.inc b/rtl/linux/ptypes.inc
index a69d625f06..79e21ea1c8 100644
--- a/rtl/linux/ptypes.inc
+++ b/rtl/linux/ptypes.inc
@@ -30,7 +30,7 @@ and all three 32-bit systems returned completely identical types too
 introduction)
 }
 {$ifdef CPUSPARC}
-  {$define __USE_LARGEFILE64}
+  { define __USE_LARGEFILE64}
 {$endif}
 
 {$if defined(CPUMIPS) or defined(cpuaarch64) or defined(cpusparc64)}
diff --git a/rtl/linux/sysos.inc b/rtl/linux/sysos.inc
index ddd6be2a54..46669a0177 100644
--- a/rtl/linux/sysos.inc
+++ b/rtl/linux/sysos.inc
@@ -137,27 +137,15 @@ end;
 *****************************************************************************}
 
 Function Do_IsDevice(Handle:THandle):boolean;
-{
-  Interface to Unix ioctl call.
-  Performs various operations on the filedescriptor Handle.
-  Ndx describes the operation to perform.
-  Data points to data needed for the Ndx function. The structure of this
-  data is function-dependent.
-}
-const
-{$if defined(cpupowerpc) or defined(cpupowerpc64)}
-  IOCtl_TCGETS=$402c7413;
-{$else}
-{$if defined(cpusparc) or defined(cpusparc64)}
-  IOCtl_TCGETS=$40245408;
-{$else}
-  IOCtl_TCGETS=$5401; // TCGETS is also in termios.inc, but the sysunix needs only this
-{$endif}
-{$endif}
 var
-  Data : array[0..255] of byte; {Large enough for termios info}
+  StatRec: Stat;
 begin
-  Do_IsDevice:=(Fpioctl(handle,IOCTL_TCGETS,@data)<>-1);
+  fpFStat (Handle, StatRec);
+  case StatRec.st_Mode and S_IFMT of
+   S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
 
 
diff --git a/rtl/nds/sysfile.inc b/rtl/nds/sysfile.inc
index 2b79599227..23674f0fa3 100644
--- a/rtl/nds/sysfile.inc
+++ b/rtl/nds/sysfile.inc
@@ -296,9 +296,15 @@ end;
 
 
 function do_isdevice(handle: THandle): boolean;
+var
+  StatRec: TStat;
 begin
-  //result :=  (isatty(fileno(P_FILE(handle))) > 0);
-  do_isdevice := (_isatty(handle) > 0);
+  FStat (Handle, StatRec);
+  case StatRec.st_Mode and _IFMT of
+   _IFCHR, _IFIFO, _IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
 
 
diff --git a/rtl/os2/sysfile.inc b/rtl/os2/sysfile.inc
index bf000960a1..1233333d14 100644
--- a/rtl/os2/sysfile.inc
+++ b/rtl/os2/sysfile.inc
@@ -343,6 +343,9 @@ function do_isdevice (Handle: THandle): boolean;
 var
   HT, Attr: cardinal;
   RC: cardinal;
+const
+  dhDevice = 1;
+  dhPipe = 2;
 begin
   do_isdevice:=false;
   RC := DosQueryHType(Handle, HT, Attr);
@@ -351,7 +354,7 @@ begin
     OSErrorWatch (RC);
     Exit;
    end;
-  if ht=1 then
+  if (HT = dhDevice) or (HT = dhPipe) then
    do_isdevice:=true;
 end;
 {$ASMMODE ATT}
diff --git a/rtl/solaris/sysos.inc b/rtl/solaris/sysos.inc
index 4b48bd4a11..11cdece344 100644
--- a/rtl/solaris/sysos.inc
+++ b/rtl/solaris/sysos.inc
@@ -97,10 +97,15 @@ end;
 *****************************************************************************}
 
 function do_isdevice(handle:longint):boolean;
+var
+  StatRec: Stat;
 begin
-  do_isdevice:= (handle=StdInputHandle) or
-                (handle=StdOutputHandle) or
-                (handle=StdErrorHandle);
+  fpFStat (Handle, StatRec);
+  case StatRec.st_Mode and S_IFMT of
+   S_IFCHR, S_IFIFO, S_IFSOCK: Do_IsDevice := true
+  else
+   Do_IsDevice := false;
+  end;
 end;
 
 
diff --git a/rtl/unix/scripts/check_rtl_types.sh b/rtl/unix/scripts/check_rtl_types.sh
index ec49efa689..c6056dc4d3 100755
--- a/rtl/unix/scripts/check_rtl_types.sh
+++ b/rtl/unix/scripts/check_rtl_types.sh
@@ -1,7 +1,23 @@
 #!/usr/bin/env bash
 filename="$1"
 shift
-FPC_OPTS="$*"
+
+verbose=0
+i=1
+while [ $i -le $# ] ; do
+  arg="${!i}"
+  echo "Handling arg $i, \"$arg\""
+  if [ "${arg//=}" != "$arg" ] ; then
+    echo "Evaluating \"$arg\""
+    arg2="${arg/=*/}=\"${arg/*=/}\""
+    eval "$arg2"
+  elif [ "$arg" == "-v" ] ; then
+    verbose=1
+  else
+    FPC_OPTS="$FPC_OPTS $arg"
+  fi
+  let i++
+done
 
 if [ ! -f "$filename" ] ; then
   echo "Usage: $0 file.h2paschk"
@@ -58,8 +74,16 @@ if [ $res -ne 0 ] ; then
   exit
 fi
 
-echo "Calling $CC $CC_OPT -o ${filebase}_c ${filebase}.c"
-$CC $CC_OPT -o ${filebase}_c${VERSION} ${filebase}.c > ${filebase}${VERSION}_c.comp.log 2>&1
+TMP_DIR=tmp_$VERSION
+if [ -d $TMP_DIR ] ; then
+  rm -Rf $TMP_DIR
+fi
+mkdir $TMP_DIR
+
+mv ${filebase}.c ${filebase}.pas $TMP_DIR
+cd $TMP_DIR
+echo "Calling $CC $CC_OPT -o ${filebase}_${VERSION}_c ${filebase}.c"
+$CC $CC_OPT -o ${filebase}_${VERSION}_c ${filebase}.c > ${filebase}_${VERSION}_c.comp.log 2>&1
 res=$?
 if [ $res -ne 0 ] ; then
   echo "$CC call failed in $VERSION, res=$res"
@@ -67,15 +91,15 @@ if [ $res -ne 0 ] ; then
   exit
 fi
 
-./${filebase}_c${VERSION} > ${filebase}_c${VERSION}.out
+./${filebase}_${VERSION}_c > ${filebase}_${VERSION}_c.out
 res=$?
 if [ $res -ne 0 ] ; then
-  echo "./${filebase}_c${VERSION} failed in $VERSION, res=$res"
+  echo "./${filebase}_${VERSION}_c failed in $VERSION, res=$res"
   exit
 fi
 
-echo "Calling $MAKE all OPT=\"-n -gwl $FPC_OPTS\" FPC=$FPC"
-$MAKE all OPT="-n -gwl $FPC_OPTS" FPC=$FPC > ${filebase}${VERSION}_make_all.log 2>&1
+echo "Calling $MAKE -C .. all OPT=\"-n -gwl $FPC_OPTS\" FPC=$FPC"
+$MAKE -C .. all OPT="-n -gwl $FPC_OPTS" FPC=$FPC > ${filebase}${VERSION}_make_all.log 2>&1
 res=$?
 if [ $res -ne 0 ] ; then
   echo "$MAKE call failed in $VERSION, res=$res"
@@ -85,24 +109,24 @@ fi
 
 OS_TARGET=`$FPC $FPC_OPTS  -iTO`
 CPU_TARGET=`$FPC $FPC_OPTS -iTP`
-echo "Calling $MAKE -C ${filedir} ${filebaseonly} FPC=$FPC OPT=\"-n -gwl $FPC_OPTS\" -Fu../units/$CPU_TARGET-$OS_TARGET"
-$MAKE -C ${filedir} ${filebaseonly} FPC=$FPC OPT="-n -gwl $FPC_OPTS -Fu../units/$CPU_TARGET-$OS_TARGET" > ${filebase}${VERSION}_pas.comp.log 2>&1
+echo "Calling $MAKE -C .. ${TMP_DIR}/${filebaseonly} FPC=$FPC OPT=\"-n -gwl $FPC_OPTS\" -Fu../units/$CPU_TARGET-$OS_TARGET"
+$MAKE -C .. ${TMP_DIR}/${filebaseonly} FPC=$FPC OPT="-n -gwl $FPC_OPTS -Fu../units/$CPU_TARGET-$OS_TARGET" > ${filebase}_${VERSION}_pas.comp.log 2>&1
 res=$?
 if [ $res -ne 0 ] ; then
   echo "$FPC call failed in $VERSION, res=$res"
-  cat ${filebase}${VERSION}_pas.comp.log
+  cat ${filebase}_${VERSION}_pas.comp.log
   exit
 fi
-mv -f ${filebase} ${filebase}${VERSION}
+mv -f ../${filebase} ./${filebase}_${VERSION}_pas
 
-./${filebase}${VERSION} > ${filebase}_pas${VERSION}.out
+./${filebase}_${VERSION}_pas > ${filebase}_${VERSION}_pas.out
 res=$?
 if [ $res -ne 0 ] ; then
   echo "./${filebase}${VERSION} call failed in $VERSION, res=$res"
   exit
 fi
 
-diff ${filebase}_c${VERSION}.out ${filebase}_pas${VERSION}.out > ${filebase}${VERSION}.diffs
+diff ${filebase}_${VERSION}_c.out ${filebase}_${VERSION}_pas.out > ${filebase}_${VERSION}.diffs
 res=$?
 if [ $res -eq 0 ] ; then
   echo "No difference found!"
@@ -110,19 +134,21 @@ else
   echo "Diffs for ${VERSION} are:"
   echo "< C      results"
   echo "> Pascal results"
-  cat ${filebase}${VERSION}.diffs
+  cat ${filebase}_${VERSION}.diffs
 fi
 # Clean up
-rm -f ${filebase}_c${VERSION}
-rm -f ${filebase}${VERSION}
-rm -f ${filebase}_c${VERSION}.out
-rm -f ${filebase}_pas${VERSION}.out
-rm -f ${filebase}${VERSION}_c.comp.log
-rm -f ${filebase}${VERSION}_pas.comp.log
-rm -f ${filebase}${VERSION}_make_all.log
-rm -f ${filebase}.c
-rm -f ${filebase}.pas
-
+if [ $verbose -eq 0 ] ; then
+  rm -f ${filebase}_${VERSION}_c
+  rm -f ${filebase}_${VERSION}_pas
+  rm -f ${filebase}_${VERSION}_c.out
+  rm -f ${filebase}_pas${VERSION}.out
+  rm -f ${filebase}_${VERSION}_c.comp.log
+  rm -f ${filebase}_${VERSION}_pas.comp.log
+  rm -f ${filebase}_${VERSION}_make_all.log
+  rm -f ${filebase}.c
+  rm -f ${filebase}.pas
+fi
+cd ..
 }
 
 function check_64 ()
@@ -207,10 +233,10 @@ if [ $default_fpc -eq 1 ] ; then
 else
   if [ "${FPC}" == "$FPC64" ] ; then
     check_64
-  fi
-
-  if [ "${FPC}" == "$FPC32" ] ; then
+  elif [ "${FPC}" == "$FPC32" ] ; then
     check_32
+  else
+    echo "Unrecognized FPC=\"$FPC\""
   fi
 fi
 
diff --git a/rtl/win/sysfile.inc b/rtl/win/sysfile.inc
index e4a12eb0c0..2431f4b3c8 100644
--- a/rtl/win/sysfile.inc
+++ b/rtl/win/sysfile.inc
@@ -2,7 +2,7 @@
     This file is part of the Free Pascal run time library.
     Copyright (c) 2001 by Free Pascal development team
 
-    Low leve file functions
+    Low level file functions
 
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
@@ -19,8 +19,17 @@
 *****************************************************************************}
 
 function do_isdevice(handle:thandle):boolean;
+{$IFNDEF WINCE}
+var
+  HT: dword;
+{$ENDIF WINCE}
 begin
-  do_isdevice:=(handle = StdInputHandle) or (handle = StdOutputHandle) or (handle = StdErrorHandle);
+{$IFDEF WINCE}
+  Do_IsDevice := false;
+{$ELSE WINCE}
+  HT := GetFileType (Handle);
+  Do_IsDevice := (HT = FILE_TYPE_CHAR) or (HT = FILE_TYPE_PIPE);
+{$ENDIF WINCE}
 end;
 
 
diff --git a/rtl/win16/sysfile.inc b/rtl/win16/sysfile.inc
index 332cfc706e..dcda98f60f 100644
--- a/rtl/win16/sysfile.inc
+++ b/rtl/win16/sysfile.inc
@@ -404,6 +404,7 @@ function do_isdevice(handle:THandle):boolean;
 var
   regs: Registers;
 begin
+(* Is this explicit check for the first three handles appropriate here??? *)
   if (handle=StdInputHandle) or (handle=StdOutputHandle) or (handle=StdErrorHandle) then
     begin
       do_isdevice:=true;
diff --git a/tests/webtbf/tw37763.pp b/tests/webtbf/tw37763.pp
new file mode 100644
index 0000000000..e2d8b2a7c2
--- /dev/null
+++ b/tests/webtbf/tw37763.pp
@@ -0,0 +1,7 @@
+{ %fail }
+{$MODE ISO}
+program forum(output);
+var f:rawbytestring;
+begin
+writeln(f)
+end.
diff --git a/tests/webtbs/DAT_TW37415 b/tests/webtbs/DAT_TW37415
new file mode 100644
index 0000000000..81c545efeb
--- /dev/null
+++ b/tests/webtbs/DAT_TW37415
@@ -0,0 +1 @@
+1234
diff --git a/tests/webtbs/tw37415.pp b/tests/webtbs/tw37415.pp
new file mode 100644
index 0000000000..8b1e6247aa
--- /dev/null
+++ b/tests/webtbs/tw37415.pp
@@ -0,0 +1,9 @@
+{ %OPT=-Miso -Sr }
+{ %FILES=DAT_TW37415 }
+program fileTest(dat_tw37415);
+
+var
+  dat_tw37415: file of integer;
+begin
+  reset(dat_tw37415);
+end.
diff --git a/utils/fpcm/fpcmake.inc b/utils/fpcm/fpcmake.inc
index a9e155e0e9..b3c71d9fcd 100644
--- a/utils/fpcm/fpcmake.inc
+++ b/utils/fpcm/fpcmake.inc
@@ -1,7 +1,7 @@
 {$ifdef Delphi}
-const fpcmakeini : array[0..253] of string[240]=(
+const fpcmakeini : array[0..255] of string[240]=(
 {$else Delphi}
-const fpcmakeini : array[0..253,1..240] of char=(
+const fpcmakeini : array[0..255,1..240] of char=(
 {$endif Delphi}
   ';'#010+
   '; Templates used by fpcmake to create a Makefile from Makefile.fpc'#010+
@@ -923,32 +923,54 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifeq ($(BINUTILSPREFIX),)'#010+
   'GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)',#010+
   'else'#010+
+  '# gcc mips seems not to recognize -m32/-m64'#010+
+  'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)'#010+
+  'CROSSGCCOPT=-mabi=32'#010+
+  'else'#010+
   'CROSSGCCOPT=-m32'#010+
   'endif'#010+
   'endif'#010+
   'endif'#010+
   'endif'#010+
+  'endif'#010+
   #010+
   '# Check if FPCFPMAKE compiler is same target as FPC'#010+
-  'ifdef FPCFPMAKE'#010+
+  'ifdef FP','CFPMAKE'#010+
   'FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP)'#010+
   'ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET))'#010+
-  '# In that case use GCCLIBDIR va','lue for FPCMAKEGCCLIBDIR'#010+
+  '# In that case use GCCLIBDIR value for FPCMAKEGCCLIBDIR'#010+
   'FPCMAKEGCCLIBDIR:=$(GCCLIBDIR)'#010+
+  'else'#010+
+  'ifneq ($(findstring $(FPCFPMAKE_CPU_TARGET),aar','ch64 powerpc64 riscv6'+
+  '4 sparc64 x86_64),)'#010+
+  'FPCMAKE_CROSSGCCOPT=-m64'#010+
+  'else'#010+
+  'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips64 mips64el),)'#010+
+  'FPCMAKE_CROSSGCCOPT=-mabi=64'#010+
+  'else'#010+
+  'ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)'#010+
+  'FPCMAKE_CROSSGCCOPT','=-mabi=32'#010+
+  'else'#010+
+  'FPCMAKE_CROSSGCCOPT=-m32'#010+
+  'endif'#010+
+  'endif'#010+
+  'endif'#010+
+  'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-l'+
+  'ibgcc-file-name`)'#010+
   'endif'#010+
   'endif'#010+
   #010+
   'ifndef FPCMAKEGCCLIBDIR'#010+
-  'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file-name`)'#010+
+  'FPCMAKEGCCLIBDIR:=$(shell dirname `gcc -print-libgcc-file','-name`)'#010+
   'endif'#010+
   #010+
   '# Try cross gcc'#010+
   'ifndef GCCLIBDIR'#010+
-  'CROSSGCC=$(strip $(wildcard $(addsuffix /$','(BINUTILSPREFIX)gcc$(SRCEX'+
-  'EEXT),$(SEARCHPATH))))'#010+
+  'CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEE'+
+  'XT),$(SEARCHPATH))))'#010+
   'ifneq ($(CROSSGCC),)'#010+
   'GCCLIBDIR:=$(shell dirname `$(CROSSGCC) $(CROSSGCCOPT) -print-libgcc-f'+
-  'ile-name`)'#010+
+  'ile-name`)',#010+
   'endif'#010+
   'endif'#010+
   'endif'#010+
@@ -956,17 +978,17 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   'ifdef inUnix'#010+
   'ifeq ($(OS_SOURCE),netbsd)'#010+
-  'OTHE','RLIBDIR:=/usr/pkg/lib'#010+
+  'OTHERLIBDIR:=/usr/pkg/lib'#010+
   'endif'#010+
   'export GCCLIBDIR FPCMAKEGCCLIBDIR OTHERLIBDIR'#010+
   'endif'#010+
   #010+
   #010+
   '[extensions]'#010+
-  '#####################################################################'#010+
-  '# Default extensions'#010+
-  '######################################################','##############'+
+  '#######################################################','#############'+
   '#'#010+
+  '# Default extensions'#010+
+  '#####################################################################'#010+
   #010+
   '# Default needed extensions (Go32v2,Linux)'#010+
   'BATCHEXT=.bat'#010+
@@ -976,24 +998,24 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'PPUEXT=.ppu'#010+
   'OEXT=.o'#010+
   'LTOEXT=.bc'#010+
-  'ASMEXT=.s'#010+
+  'ASMEXT=','.s'#010+
   'SMARTEXT=.sl'#010+
   'STATICLIBEXT=.a'#010+
   'SHAREDLIBEXT=.so'#010+
   'SHAREDLIBPREFIX=libfp'#010+
-  'STATICLIBPREFIX=lib','p'#010+
+  'STATICLIBPREFIX=libp'#010+
   'IMPORTLIBPREFIX=libimp'#010+
   'RSTEXT=.rst'#010+
   '# external debug info for executable'#010+
   'EXEDBGEXT=.dbg'#010+
-  '#DEBUGSYMEXT #for debugger symbol files, define only for targets which'+
-  ' has this'#010+
+  '#DEBUGSYMEXT #for debugger symbol files, define only for targ','ets whi'+
+  'ch has this'#010+
   #010+
   '# Go32v1'#010+
   'ifeq ($(OS_TARGET),go32v1)'#010+
   'STATICLIBPREFIX='#010+
   'SHORTSUFFIX=v1'#010+
-  'en','dif'#010+
+  'endif'#010+
   #010+
   '# Go32v2'#010+
   'ifeq ($(OS_TARGET),go32v2)'#010+
@@ -1004,7 +1026,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '# watcom'#010+
   'ifeq ($(OS_TARGET),watcom)'#010+
-  'STATICLIBPREFIX='#010+
+  'STATICLIBPREFIX=',#010+
   'OEXT=.obj'#010+
   'ASMEXT=.asm'#010+
   'SHAREDLIBEXT=.dll'#010+
@@ -1012,7 +1034,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'IMPORTLIBPREFIX='#010+
   'endif'#010+
   #010+
-  '# Android',' native'#010+
+  '# Android native'#010+
   'ifneq ($(CPU_TARGET),jvm)'#010+
   'ifeq ($(OS_TARGET),android)'#010+
   'BATCHEXT=.sh'#010+
@@ -1023,7 +1045,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# Linux'#010+
-  'ifeq ($(OS_TARGET),linux)'#010+
+  'ifeq ($(OS_TARG','ET),linux)'#010+
   'BATCHEXT=.sh'#010+
   'EXEEXT='#010+
   'HASSHAREDLIB=1'#010+
@@ -1031,7 +1053,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# DragonFly BSD'#010+
-  'ifeq',' ($(OS_TARGET),dragonfly)'#010+
+  'ifeq ($(OS_TARGET),dragonfly)'#010+
   'BATCHEXT=.sh'#010+
   'EXEEXT='#010+
   'HASSHAREDLIB=1'#010+
@@ -1042,7 +1064,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifeq ($(OS_TARGET),freebsd)'#010+
   'BATCHEXT=.sh'#010+
   'EXEEXT='#010+
-  'HASSHAREDLIB=1'#010+
+  'HASSHAR','EDLIB=1'#010+
   'SHORTSUFFIX=fbs'#010+
   'endif'#010+
   #010+
@@ -1050,7 +1072,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifeq ($(OS_TARGET),netbsd)'#010+
   'BATCHEXT=.sh'#010+
   'EXEEXT='#010+
-  'HA','SSHAREDLIB=1'#010+
+  'HASSHAREDLIB=1'#010+
   'SHORTSUFFIX=nbs'#010+
   'endif'#010+
   #010+
@@ -1063,14 +1085,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# Win32'#010+
-  'ifeq ($(OS_TARGET),win32)'#010+
+  'ifeq ($(O','S_TARGET),win32)'#010+
   'SHAREDLIBEXT=.dll'#010+
   'SHORTSUFFIX=w32'#010+
   'endif'#010+
   #010+
   '# OS/2'#010+
   'ifeq ($(OS_TARGET),os2)'#010+
-  'B','ATCHEXT=.cmd'#010+
+  'BATCHEXT=.cmd'#010+
   'AOUTEXT=.out'#010+
   'STATICLIBPREFIX='#010+
   'SHAREDLIBEXT=.dll'#010+
@@ -1081,13 +1103,13 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '# EMX'#010+
   'ifeq ($(OS_TARGET),emx)'#010+
-  'BATCHEXT=.cmd'#010+
+  'BATCHEXT=','.cmd'#010+
   'AOUTEXT=.out'#010+
   'STATICLIBPREFIX='#010+
   'SHAREDLIBEXT=.dll'#010+
   'SHORTSUFFIX=emx'#010+
   'ECHO=echo'#010+
-  'IMPORTLIBPR','EFIX='#010+
+  'IMPORTLIBPREFIX='#010+
   'endif'#010+
   #010+
   '# Amiga'#010+
@@ -1100,14 +1122,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '# AROS'#010+
   'ifeq ($(OS_TARGET),aros)'#010+
   'EXEEXT='#010+
-  'SHAREDLIBEXT=.library'#010+
+  'SHAREDLIBE','XT=.library'#010+
   'SHORTSUFFIX=aros'#010+
   'endif'#010+
   #010+
   '# MorphOS'#010+
   'ifeq ($(OS_TARGET),morphos)'#010+
   'EXEEXT='#010+
-  'SHAREDLI','BEXT=.library'#010+
+  'SHAREDLIBEXT=.library'#010+
   'SHORTSUFFIX=mos'#010+
   'endif'#010+
   #010+
@@ -1119,7 +1141,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '# BeOS'#010+
   'ifeq ($(OS_TARGET),beos)'#010+
-  'BATCHEXT=.sh'#010+
+  'BATCHEXT=.sh',#010+
   'EXEEXT='#010+
   'SHORTSUFFIX=be'#010+
   'endif'#010+
@@ -1128,7 +1150,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifeq ($(OS_TARGET),haiku)'#010+
   'BATCHEXT=.sh'#010+
   'EXEEXT='#010+
-  'SHOR','TSUFFIX=hai'#010+
+  'SHORTSUFFIX=hai'#010+
   'endif'#010+
   #010+
   '# Solaris'#010+
@@ -1141,14 +1163,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '# QNX'#010+
   'ifeq ($(OS_TARGET),qnx)'#010+
   'BATCHEXT=.sh'#010+
-  'EXEEXT='#010+
+  'EXEEXT','='#010+
   'SHORTSUFFIX=qnx'#010+
   'endif'#010+
   #010+
   '# Netware clib'#010+
   'ifeq ($(OS_TARGET),netware)'#010+
   'EXEEXT=.nlm'#010+
-  'STATICLIBP','REFIX='#010+
+  'STATICLIBPREFIX='#010+
   'SHORTSUFFIX=nw'#010+
   'IMPORTLIBPREFIX=imp'#010+
   'endif'#010+
@@ -1158,14 +1180,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'EXEEXT=.nlm'#010+
   'STATICLIBPREFIX='#010+
   'SHORTSUFFIX=nwl'#010+
-  'IMPORTLIBPREFIX=imp'#010+
+  'IMPORTLIBPRE','FIX=imp'#010+
   'endif'#010+
   #010+
   '# Mac OS Classic'#010+
   'ifeq ($(OS_TARGET),macosclassic)'#010+
   'BATCHEXT='#010+
   'EXEEXT='#010+
-  'DEBUGSY','MEXT=.xcoff'#010+
+  'DEBUGSYMEXT=.xcoff'#010+
   'SHORTSUFFIX=mac'#010+
   'IMPORTLIBPREFIX=imp'#010+
   'endif'#010+
@@ -1174,7 +1196,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifneq ($(findstring $(OS_TARGET),darwin iphonesim ios),)'#010+
   'BATCHEXT=.sh'#010+
   'EXEEXT='#010+
-  'HASSHAREDLIB=1'#010+
+  'HASSHARE','DLIB=1'#010+
   'SHORTSUFFIX=dwn'#010+
   'EXEDBGEXT=.dSYM'#010+
   'endif'#010+
@@ -1182,7 +1204,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '# gba'#010+
   'ifeq ($(OS_TARGET),gba)'#010+
   'EXEEXT=.gba'#010+
-  'SH','AREDLIBEXT=.so'#010+
+  'SHAREDLIBEXT=.so'#010+
   'SHORTSUFFIX=gba'#010+
   'endif'#010+
   #010+
@@ -1193,13 +1215,13 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# NativeNT'#010+
-  'ifeq ($(OS_TARGET),NativeNT)'#010+
+  'ifeq ($(OS_TARG','ET),NativeNT)'#010+
   'SHAREDLIBEXT=.dll'#010+
   'SHORTSUFFIX=nativent'#010+
   'endif'#010+
   #010+
   '# wii'#010+
-  'ifeq ($(OS_TARGET),wii)'#010,
+  'ifeq ($(OS_TARGET),wii)'#010+
   'EXEEXT=.dol'#010+
   'SHAREDLIBEXT=.so'#010+
   'SHORTSUFFIX=wii'#010+
@@ -1214,14 +1236,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# Java'#010+
-  'ifeq ($(OS_TARGET),java)'#010+
+  'i','feq ($(OS_TARGET),java)'#010+
   'OEXT=.class'#010+
   'ASMEXT=.j'#010+
   'SHAREDLIBEXT=.jar'#010+
   'SHORTSUFFIX=java'#010+
   'endif'#010+
   #010+
-  '# ','Android java'#010+
+  '# Android java'#010+
   'ifeq ($(CPU_TARGET),jvm)'#010+
   'ifeq ($(OS_TARGET),android)'#010+
   'OEXT=.class'#010+
@@ -1232,13 +1254,13 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# MS-DOS'#010+
-  'ifeq ($(OS_TARGET),msdos)'#010+
+  'if','eq ($(OS_TARGET),msdos)'#010+
   'STATICLIBPREFIX='#010+
   'STATICLIBEXT=.a'#010+
   'SHORTSUFFIX=d16'#010+
   'endif'#010+
   #010+
-  '# MSX-DOS'#010,
+  '# MSX-DOS'#010+
   'ifeq ($(OS_TARGET),msxdos)'#010+
   'STATICLIBPREFIX='#010+
   'STATICLIBEXT=.a'#010+
@@ -1247,14 +1269,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '# Embedded'#010+
   'ifeq ($(OS_TARGET),embedded)'#010+
-  'ifeq ($(CPU_TARGET),i8086)'#010+
+  'ifeq ($(CPU_TARGET),i8086)'#010,
   'STATICLIBPREFIX='#010+
   'STATICLIBEXT=.a'#010+
   'else'#010+
   'EXEEXT=.bin'#010+
   'endif'#010+
   'ifeq ($(CPU_TARGET),z80)'#010+
-  'OEXT=.rel',#010+
+  'OEXT=.rel'#010+
   'endif'#010+
   'SHORTSUFFIX=emb'#010+
   'endif'#010+
@@ -1267,56 +1289,55 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'SHORTSUFFIX=w16'#010+
   'endif'#010+
   #010+
-  '# ZX Spectrum'#010+
+  '# ZX Spectru','m'#010+
   'ifeq ($(OS_TARGET),zxspectrum)'#010+
   'OEXT=.rel'#010+
   'endif'#010+
   #010+
   #010+
-  '# For 8.3 limited OS'#039's the short suffix','es'#010+
+  '# For 8.3 limited OS'#039's the short suffixes'#010+
   '# Otherwise use the full source/target names'#010+
   'ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)'#010+
   'FPCMADE=fpcmade.$(SHORTSUFFIX)'#010+
-  'ZIPSUFFIX=$(SHORTSUFFIX)'#010+
+  'ZIPSUFFIX=$(SHORTSUFFI','X)'#010+
   'ZIPCROSSPREFIX='#010+
   'ZIPSOURCESUFFIX=src'#010+
   'ZIPEXAMPLESUFFIX=exm'#010+
   'else'#010+
-  'FPCMADE=fpcmade.$(TARGETS','UFFIX)'#010+
+  'FPCMADE=fpcmade.$(TARGETSUFFIX)'#010+
   'ZIPSOURCESUFFIX=.source'#010+
   'ZIPEXAMPLESUFFIX=.examples'#010+
   'ifdef CROSSCOMPILE'#010+
   'ZIPSUFFIX=.$(SOURCESUFFIX)'#010+
   'ZIPCROSSPREFIX=$(TARGETSUFFIX)-'#010+
   'else'#010+
-  'ZIPSUFFIX=.$(TARGETSUFFIX)'#010+
+  'ZIPSUFFIX','=.$(TARGETSUFFIX)'#010+
   'ZIPCROSSPREFIX='#010+
   'endif'#010+
   'endif'#010+
   #010+
   '[defaulttools]'#010+
-  '############################','########################################'+
-  '#'#010+
+  '#####################################################################'#010+
   '# Default Tools'#010+
   '#####################################################################'#010+
   #010+
-  '# Names of the binutils tools'#010+
+  '# Names of the binuti','ls tools'#010+
   'ASNAME=$(BINUTILSPREFIX)as'#010+
   'LDNAME=$(BINUTILSPREFIX)ld'#010+
-  'ARNAME=$(BINUTILSPREFIX)ar'#010,
+  'ARNAME=$(BINUTILSPREFIX)ar'#010+
   'RCNAME=$(BINUTILSPREFIX)rc'#010+
   'NASMNAME=$(BINUTILSPREFIX)nasm'#010+
   #010+
   '# assembler, redefine it if cross compiling'#010+
   'ifndef ASPROG'#010+
   'ifdef CROSSBINDIR'#010+
-  'ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)'#010+
+  'ASPROG=$(CROSSB','INDIR)/$(ASNAME)$(SRCEXEEXT)'#010+
   'else'#010+
   'ASPROG=$(ASNAME)'#010+
   'endif'#010+
   'endif'#010+
   #010+
-  '# linker, but probably not',' used'#010+
+  '# linker, but probably not used'#010+
   'ifndef LDPROG'#010+
   'ifdef CROSSBINDIR'#010+
   'LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)'#010+
@@ -1326,12 +1347,12 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# Resource compiler'#010+
-  'ifndef RCPROG'#010+
+  'ifndef RCPROG',#010+
   'ifdef CROSSBINDIR'#010+
   'RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)'#010+
   'else'#010+
   'RCPROG=$(RCNAME)'#010+
-  'endif',#010+
+  'endif'#010+
   'endif'#010+
   #010+
   '# Archiver'#010+
@@ -1343,10 +1364,10 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   'endif'#010+
   #010+
-  '# NASM assembler, redefine it if cross compiling'#010+
+  '# NASM assembler, re','define it if cross compiling'#010+
   'ifndef NASMPROG'#010+
   'ifdef CROSSBINDIR'#010+
-  'NASMPROG=$(CROSSBINDIR)/$(N','ASMNAME)$(SRCEXEEXT)'#010+
+  'NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)'#010+
   'else'#010+
   'NASMPROG=$(NASMNAME)'#010+
   'endif'#010+
@@ -1358,13 +1379,13 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'RC=$(RCPROG)'#010+
   'AR=$(ARPROG)'#010+
   'NASM=$(NASMPROG)'#010+
-  #010+
+  #010,
   '# ppas.bat / ppas.sh'#010+
   'ifdef inUnix'#010+
   'PPAS=./ppas$(SRCBATCHEXT)'#010+
   'else'#010+
   'PPAS=ppas$(SRCBATCHEXT)'#010+
-  'e','ndif'#010+
+  'endif'#010+
   #010+
   '# ldconfig to rebuild .so cache'#010+
   'ifdef inUnix'#010+
@@ -1376,7 +1397,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifdef DATE'#010+
   'DATESTR:=$(shell $(DATE) +%Y%m%d)'#010+
   'else'#010+
-  'DATESTR='#010+
+  'DATESTR='#010,
   'endif'#010+
   #010+
   '# Zip options'#010+
@@ -1386,7 +1407,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '# Tar options'#010+
   'ifeq ($(USETAR),bz2)'#010+
   'TAROPT=vj'#010+
-  'T','AREXT=.tar.bz2'#010+
+  'TAREXT=.tar.bz2'#010+
   'else'#010+
   'TAROPT=vz'#010+
   'TAREXT=.tar.gz'#010+
@@ -1395,18 +1416,18 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '[command_begin]'#010+
   '#####################################################################'#010+
-  '# Compiler Command Line'#010+
+  '# Compiler ','Command Line'#010+
   '#####################################################################'#010+
   #010+
-  '# Load',' commandline OPTDEF and add FPC_CPU define, for compiling the'#010+
+  '# Load commandline OPTDEF and add FPC_CPU define, for compiling the'#010+
   '# compiler this needs to be turned off'#010+
   'ifndef NOCPUDEF'#010+
   'override FPCOPTDEF=$(ARCH)'#010+
-  'endif'#010+
+  'endif'#010,
   #010+
   #010+
   '# Load commandline OPT and add target and unit dir to be sure'#010+
-  'ifneq ($(OS_TARGET),$(OS_S','OURCE))'#010+
+  'ifneq ($(OS_TARGET),$(OS_SOURCE))'#010+
   'override FPCOPT+=-T$(OS_TARGET)'#010+
   'endif'#010+
   #010+
@@ -1415,39 +1436,39 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   'ifeq ($(OS_SOURCE),openbsd)'#010+
-  'override FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
+  'overr','ide FPCOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
   'override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)'#010+
-  'override ','FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)'#010+
+  'override FPMAKE_BUILD_OPT+=-FD$(NEW_BINUTILS_PATH)'#010+
   'endif'#010+
   #010+
   'ifndef CROSSBOOTSTRAP'#010+
   'ifneq ($(BINUTILSPREFIX),)'#010+
   'override FPCOPT+=-XP$(BINUTILSPREFIX)'#010+
   'endif'#010+
-  'ifneq ($(BINUTILSPREFIX),)'#010+
+  'ifneq ($','(BINUTILSPREFIX),)'#010+
   'override FPCOPT+=-Xr$(RLINKPATH)'#010+
   'endif'#010+
   'endif'#010+
   #010+
-  '# When BINUTILSPREFIX is ','given and we are not cross-compiling then u'+
-  'se'#010+
+  '# When BINUTILSPREFIX is given and we are not cross-compiling then use'+
+  #010+
   '# it while compiling the fpmake file. (For example to build i386-freeb'+
   'sd'#010+
   '# with BINUTILSPREFIX=i386-)'#010+
-  'ifndef CROSSCOMPILE'#010+
+  'if','ndef CROSSCOMPILE'#010+
   'ifneq ($(BINUTILSPREFIX),)'#010+
   'override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)'#010+
-  'ove','rride FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)'#010+
+  'override FPMAKE_BUILD_OPT+=-XP$(BINUTILSPREFIX)'#010+
   'endif'#010+
   'endif'#010+
   #010+
   '# User dirs should be first, so they are looked at first'#010+
   'ifdef UNITDIR'#010+
-  'override FPCOPT+=$(addprefix -Fu,$(UNITDIR))'#010+
+  'override FPCOPT+=$(ad','dprefix -Fu,$(UNITDIR))'#010+
   'endif'#010+
   'ifdef LIBDIR'#010+
   'override FPCOPT+=$(addprefix -Fl,$(LIBDIR))'#010+
-  'end','if'#010+
+  'endif'#010+
   'ifdef OBJDIR'#010+
   'override FPCOPT+=$(addprefix -Fo,$(OBJDIR))'#010+
   'endif'#010+
@@ -1456,13 +1477,13 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# Smartlinking'#010+
-  'ifdef LINKSMART'#010+
+  'ifdef',' LINKSMART'#010+
   'override FPCOPT+=-XX'#010+
   'endif'#010+
   #010+
   '# Smartlinking creation'#010+
   'ifdef CREATESMART'#010+
-  'override ','FPCOPT+=-CX'#010+
+  'override FPCOPT+=-CX'#010+
   'endif'#010+
   #010+
   '# Debug'#010+
@@ -1472,11 +1493,11 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# Release mode'#010+
-  '# (strip, optimize and don'#039't load fpc.cfg)'#010+
+  '# (strip, optimize and don'#039't load fpc.cfg)',#010+
   'ifdef RELEASE'#010+
   'FPCCPUOPT:=-O2'#010+
   'override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n'#010+
-  'override FPCOPTDEF+','=RELEASE'#010+
+  'override FPCOPTDEF+=RELEASE'#010+
   'endif'#010+
   #010+
   '# Strip'#010+
@@ -1489,55 +1510,55 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'override FPCOPT+=-O2'#010+
   'endif'#010+
   #010+
-  '# Verbose settings (warning,note,info)'#010+
+  '# Verbose settings (warning,not','e,info)'#010+
   'ifdef VERBOSE'#010+
   'override FPCOPT+=-vwni'#010+
   'endif'#010+
   #010+
   '# Needed compiler options'#010+
-  'ifdef COMPIL','ER_OPTIONS'#010+
+  'ifdef COMPILER_OPTIONS'#010+
   'override FPCOPT+=$(COMPILER_OPTIONS)'#010+
   'endif'#010+
   'ifdef COMPILER_UNITDIR'#010+
   'override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))'#010+
   'endif'#010+
-  'ifdef COMPILER_LIBRARYDIR'#010+
+  'ifdef COMPILE','R_LIBRARYDIR'#010+
   'override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))'#010+
   'endif'#010+
-  'ifdef COMPILER','_OBJECTDIR'#010+
+  'ifdef COMPILER_OBJECTDIR'#010+
   'override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))'#010+
   'endif'#010+
   'ifdef COMPILER_INCLUDEDIR'#010+
-  'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))'#010+
+  'override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDE','DIR))'#010+
   'endif'#010+
   #010+
   '# Cross compiler utils'#010+
   'ifdef CROSSBINDIR'#010+
   'override FPCOPT+=-FD$(CROSSBINDIR)'#010+
-  'e','ndif'#010+
+  'endif'#010+
   #010+
   '# Target dirs and the prefix to use for clean/install'#010+
   'ifdef COMPILER_TARGETDIR'#010+
   'override FPCOPT+=-FE$(COMPILER_TARGETDIR)'#010+
-  'ifeq ($(COMPILER_TARGETDIR),.)'#010+
+  'ifeq ($(COMPILER_TARGET','DIR),.)'#010+
   'override TARGETDIRPREFIX='#010+
   'else'#010+
   'override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/'#010+
-  'end','if'#010+
+  'endif'#010+
   'endif'#010+
   #010+
   '# Unit target dir (default is units/<cpu>-<os>/'#010+
   'ifdef COMPILER_UNITTARGETDIR'#010+
   'override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)'#010+
-  'ifeq ($(COMPILER_UNITTARGETDIR),.)'#010+
+  'ifeq ($(COMPILER_','UNITTARGETDIR),.)'#010+
   'override UNITTARGETDIRPREFIX='#010+
   'else'#010+
-  'override UNITTARGETDIRPREFIX=$(COMPIL','ER_UNITTARGETDIR)/'#010+
+  'override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/'#010+
   'endif'#010+
   'else'#010+
   'ifdef COMPILER_TARGETDIR'#010+
   'override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)'#010+
-  'override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)'#010+
+  'override UNITTARGETDIRPREFIX=$(TARGETDIRP','REFIX)'#010+
   'endif'#010+
   'endif'#010+
   #010+
@@ -1545,16 +1566,16 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'override FPCOPT+=-Cg'#010+
   'endif'#010+
   #010+
-  '# create always pic'#039'ed ','code on x86_64, mips and mipsel'#010+
+  '# create always pic'#039'ed code on x86_64, mips and mipsel'#010+
   '# on unix-like systems'#010+
   'ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linu'+
   'x solaris),)'#010+
-  'ifneq ($(findstring $(CPU_TARGET),x86_64 mips mipsel),)'#010+
+  'ifneq ($(fin','dstring $(CPU_TARGET),x86_64 mips mipsel),)'#010+
   'override FPCOPT+=-Cg'#010+
   'endif'#010+
   'endif'#010+
   #010+
-  'ifdef LINKSH','ARED'#010+
+  'ifdef LINKSHARED'#010+
   '#!!! deactived for testing override FPCOPT+=-XD'#010+
   'endif'#010+
   #010+
@@ -1562,11 +1583,11 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '[command_libc]'#010+
   '# Add GCC lib path if asked'#010+
   'ifdef GCCLIBDIR'#010+
-  'override FPCOPT+=-Fl$(GCCLIBDIR)'#010+
+  'override FPCOPT+=-Fl$(GCCLIBDI','R)'#010+
   'ifdef FPCMAKEGCCLIBDIR'#010+
   'override FPCMAKEOPT+=-Fl$(FPCMAKEGCCLIBDIR)'#010+
   'else'#010+
-  'override FPCMAK','EOPT+=-Fl$(GCCLIBDIR)'#010+
+  'override FPCMAKEOPT+=-Fl$(GCCLIBDIR)'#010+
   'endif'#010+
   'endif'#010+
   'ifdef OTHERLIBDIR'#010+
@@ -1575,20 +1596,20 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   #010+
   '[command_end]'#010+
-  '# Add commandline options last so they can override'#010+
+  '# Add commandline options l','ast so they can override'#010+
   'ifdef OPT'#010+
   'override FPCOPT+=$(OPT)'#010+
   'endif'#010+
   #010+
-  '# Override options to co','mpile the fpmake-binary with command-line op'+
-  'tions provided in FPMAKEBUILDOPT'#010+
+  '# Override options to compile the fpmake-binary with command-line opti'+
+  'ons provided in FPMAKEBUILDOPT'#010+
   'ifdef FPMAKEBUILDOPT'#010+
   'override FPMAKE_BUILD_OPT+=$(FPMAKEBUILDOPT)'#010+
   'endif'#010+
-  #010+
+  #010,
   '# Add defines from FPCOPTDEF to FPCOPT'#010+
   'ifdef FPCOPTDEF'#010+
-  'override FPCOPT+=$(addprefix -d,$(F','PCOPTDEF))'#010+
+  'override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))'#010+
   'endif'#010+
   #010+
   '# Was a config file specified ?'#010+
@@ -1596,33 +1617,33 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'override FPCOPT+=@$(CFGFILE)'#010+
   'endif'#010+
   #010+
-  '# Use the environment to pass commandline options?'#010+
+  '# Use the environment to pass commandline options?',#010+
   'ifdef USEENV'#010+
   'override FPCEXTCMD:=$(FPCOPT)'#010+
   'override FPCOPT:=!FPCEXTCMD'#010+
   'export FPCEXTCMD'#010+
-  'e','ndif'#010+
+  'endif'#010+
   #010+
   'override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)'#010+
   'override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)'#010+
   #010+
   'ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))'#010+
-  'override ACROSSCOMPILE=1'#010+
+  'overr','ide ACROSSCOMPILE=1'#010+
   'endif'#010+
   #010+
   'ifdef ACROSSCOMPILE'#010+
   'override FPCOPT+=$(CROSSOPT)'#010+
   'endif'#010+
   #010+
-  '# Compi','ler commandline'#010+
+  '# Compiler commandline'#010+
   'override COMPILER:=$(strip $(FPC) $(FPCOPT))'#010+
   #010+
   '# also call ppas if with command option -s'#010+
-  '# but only if the FULL_SOURCE and FULL_TARGET are equal'#010+
+  '# but only if the FULL_SOURCE and FULL_TARGET',' are equal'#010+
   '# or if -sh is used'#010+
   'ifneq (,$(findstring -sh ,$(COMPILER)))'#010+
   'UseEXECPPAS=1'#010+
-  'endif',#010+
+  'endif'#010+
   'ifneq (,$(findstring -s ,$(COMPILER)))'#010+
   'ifeq ($(FULL_SOURCE),$(FULL_TARGET))'#010+
   'UseEXECPPAS=1'#010+
@@ -1631,7 +1652,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'ifneq ($(UseEXECPPAS),1)'#010+
   'EXECPPAS='#010+
   'else'#010+
-  'ifdef RUNBATCH'#010+
+  'ifdef R','UNBATCH'#010+
   'EXECPPAS:=@$(RUNBATCH) $(PPAS)'#010+
   'else'#010+
   'EXECPPAS:=@$(PPAS)'#010+
@@ -1639,24 +1660,25 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   #010+
-  '[loaderrules]',#010+
+  '[loaderrules]'#010+
   '#####################################################################'#010+
   '# Loaders'#010+
-  '#####################################################################'#010+
+  '#####################################################################',
+  #010+
   #010+
   '.PHONY: fpc_loaders'#010+
   #010+
   'ifneq ($(TARGET_LOADERS),)'#010+
   'override ALLTARGET+=fpc_loaders'#010+
-  'override',' CLEANTARGET+=fpc_loaders_clean'#010+
+  'override CLEANTARGET+=fpc_loaders_clean'#010+
   'override INSTALLTARGET+=fpc_loaders_install'#010+
   #010+
   'override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS))'#010+
   'endif'#010+
   #010+
-  '%$(OEXT): %$(LOADEREXT)'#010+
+  '%$(O','EXT): %$(LOADEREXT)'#010+
   'ifdef COMPILER_UNITTARGETDIR'#010+
-  '        $(AS) -o $(COMPILER_UNITTARGETDIR',')/$*$(OEXT) $<'#010+
+  '        $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $<'#010+
   'else'#010+
   '        $(AS) -o $*$(OEXT) $<'#010+
   'endif'#010+
@@ -1664,83 +1686,83 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES)'#010+
   #010+
   'fpc_loaders_clean:'#010+
-  'ifdef COMPILER_UNITTARGETDIR'#010+
+  'ifdef COMPILER_UNI','TTARGETDIR'#010+
   '        -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)'+
   ')'#010+
   'else'#010+
-  '  ','      -$(DEL) $(LOADEROFILES)'#010+
+  '        -$(DEL) $(LOADEROFILES)'#010+
   'endif'#010+
   #010+
   'fpc_loaders_install:'#010+
   '        $(MKDIR) $(INSTALL_UNITDIR)'#010+
   'ifdef COMPILER_UNITTARGETDIR'#010+
-  '        $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFIL'+
-  'ES)) $(INSTALL_UNITDIR)'#010+
+  '        $(INSTALL) $(addpre','fix $(COMPILER_UNITTARGETDIR)/,$(LOADEROF'+
+  'ILES)) $(INSTALL_UNITDIR)'#010+
   'else'#010+
-  '        $(INSTALL)',' $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+
+  '        $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR)'#010+
   'endif'#010+
   #010+
   #010+
   '[unitrules]'#010+
   '#####################################################################'#010+
   '# Units'#010+
-  '#####################################################################'#010+
+  '################','####################################################'+
+  '#'#010+
   #010+
   '.PHONY: fpc_units'#010+
   #010+
-  'ifneq ($(TARGET_','UNITS)$(TARGET_IMPLICITUNITS),)'#010+
+  'ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)'#010+
   'override ALLTARGET+=fpc_units'#010+
   #010+
   'override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))'#010+
-  'override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITU'+
-  'NITS))'#010+
-  'override INSTALLPPUFILES+=$(UNITPPUFILE','S) $(IMPLICITUNITPPUFILES)'#010+
+  'override IMPLICITUNITPPUFI','LES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICI'+
+  'TUNITS))'#010+
+  'override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+
   'override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)'#010+
   'endif'#010+
   #010+
-  'fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)'#010+
+  'fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)',#010+
   #010+
   #010+
   '[exerules]'#010+
   '#####################################################################'#010+
-  '# Exes',#010+
+  '# Exes'#010+
   '#####################################################################'#010+
   #010+
   '.PHONY: fpc_exes'#010+
   #010+
   '# Programs are not needed for a cross installation'#010+
-  'ifndef CROSSINSTALL'#010+
+  'ifndef CR','OSSINSTALL'#010+
   'ifneq ($(TARGET_PROGRAMS),)'#010+
-  'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PR','OGRAMS))'#010+
+  'override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))'#010+
   'override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addsuffi'+
   'x $(LTOEXT),$(TARGET_PROGRAMS))$(addprefix $(STATICLIBPREFIX),$(addsuf'+
-  'fix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX'+
-  '),$(addsuffix $(STATI','CLIBEXT),$(TARGET_PROGRAMS)))'#010+
+  'f','ix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREF'+
+  'IX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))'#010+
   'override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))'#010+
   #010+
   'override ALLTARGET+=fpc_exes'#010+
-  'override INSTALLEXEFILES+=$(EXEFILES)'#010+
+  'override INSTALLEXEFILE','S+=$(EXEFILES)'#010+
   'override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)'#010+
-  'override CLEANEXEDBGFILES+','=$(EXEDBGFILES)'#010+
+  'override CLEANEXEDBGFILES+=$(EXEDBGFILES)'#010+
   'ifeq ($(OS_TARGET),os2)'#010+
   'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+
   'endif'#010+
   'ifeq ($(OS_TARGET),emx)'#010+
-  'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+
+  'override CLEA','NEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))'#010+
   'endif'#010+
   'endif'#010+
   'endif'#010+
   #010+
-  'fpc_exes: $(COMPI','LER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES'+
-  ')'#010+
+  'fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)'#010+
   #010+
   #010+
   '[rstrules]'#010+
   '#####################################################################'#010+
-  '# Resource strings'#010+
+  '# Resource str','ings'#010+
   '#####################################################################'#010+
   #010+
-  'ifdef TARGET_R','STS'#010+
+  'ifdef TARGET_RSTS'#010+
   'override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))'#010+
   #010+
   'override CLEANRSTFILES+=$(RSTFILES)'#010+
@@ -1748,53 +1770,52 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   #010+
   '[examplerules]'#010+
-  '#####################################################################'#010+
-  '# Examples'#010+
-  '#######################################','#############################'+
+  '##############################','######################################'+
   '#'#010+
+  '# Examples'#010+
+  '#####################################################################'#010+
   #010+
   '.PHONY: fpc_examples'#010+
   #010+
   'ifneq ($(TARGET_EXAMPLES),)'#010+
   'HASEXAMPLES=1'#010+
-  'override EXAMPLESOURCEFILES=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPL'+
-  'ES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EX'+
-  'AMPL','ES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#010+
+  'override EXAMPLESOURCEFILES=$(wildcard $(addsuffix .pp',',$(TARGET_EXAM'+
+  'PLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_'+
+  'EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES)))'#010+
   'override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES))'#010+
-  'override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(adds'+
-  'uffix $(LTOEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPRE','FIX),$'+
+  'override EXAMPLEOFILES:=$(addsuffix $(OEXT','),$(TARGET_EXAMPLES)) $(ad'+
+  'dsuffix $(LTOEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$'+
   '(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLI'+
   'BPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES)))'#010+
-  'override EXAMPLEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES))'+
+  'override EXAMPLE','DBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_EXAMPLES'+
+  '))'#010+
   #010+
-  #010+
-  'override CLEANEXEFILES+=$(EXAMPLEF','ILES) $(EXAMPLEOFILES)'#010+
+  'override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES)'#010+
   'override CLEANEXEDBGFILES+=$(EXAMPLEDBGFILES)'#010+
   'ifeq ($(OS_TARGET),os2)'#010+
-  'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
+  'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_E','XAMPLES))'#010+
   'endif'#010+
   'ifeq ($(OS_TARGET),emx)'#010+
-  'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(T','ARGET_EXAMPLES))'#010+
+  'override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES))'#010+
   'endif'#010+
   'endif'#010+
   'ifneq ($(TARGET_EXAMPLEDIRS),)'#010+
   'HASEXAMPLES=1'#010+
   'endif'#010+
   #010+
-  'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIR'+
-  'S))'#010+
+  'fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDI',
+  'RS))'#010+
   #010+
   #010+
   '[compilerules]'#010+
-  '####################################################################','#'+
-  #010+
+  '#####################################################################'#010+
   '# General compile rules'#010+
   '#####################################################################'#010+
   #010+
-  '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared'#010+
+  '.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_s','hared'#010+
   #010+
   '$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)'#010+
-  '        @$(ECHOREDIR) Compiled > $(FPCM','ADE)'#010+
+  '        @$(ECHOREDIR) Compiled > $(FPCMADE)'#010+
   #010+
   'fpc_all: $(FPCMADE)'#010+
   #010+
@@ -1805,21 +1826,21 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '        $(MAKE) all DEBUG=1'#010+
   #010+
   'fpc_release:'#010+
-  '        $(MAKE) all RELEASE=1'#010+
+  '        $(MA','KE) all RELEASE=1'#010+
   #010+
   '# General compile rules, available for both possible .pp and .pas exte'+
-  'n','sions'#010+
+  'nsions'#010+
   #010+
   '.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) $(LTOEXT) .pas .lpr .dpr .pp .r'+
   'c .res'#010+
   #010+
   '$(COMPILER_UNITTARGETDIR):'#010+
-  '        $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)'#010+
+  '        $(MKDIRTREE) $(COMPILER_UNITTA','RGETDIR)'#010+
   #010+
   '$(COMPILER_TARGETDIR):'#010+
   '        $(MKDIRTREE) $(COMPILER_TARGETDIR)'#010+
   #010+
-  '%$(PPUEXT): %','.pp'#010+
+  '%$(PPUEXT): %.pp'#010+
   '        $(COMPILER) $<'#010+
   '        $(EXECPPAS)'#010+
   #010+
@@ -1828,14 +1849,14 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '        $(EXECPPAS)'#010+
   #010+
   '%$(EXEEXT): %.pp'#010+
-  '        $(COMPILER) $<'#010+
+  '        $(COMPILER) $<'#010,
   '        $(EXECPPAS)'#010+
   #010+
   '%$(EXEEXT): %.pas'#010+
   '        $(COMPILER) $<'#010+
   '        $(EXECPPAS)'#010+
   #010+
-  '%$(EXEE','XT): %.lpr'#010+
+  '%$(EXEEXT): %.lpr'#010+
   '        $(COMPILER) $<'#010+
   '        $(EXECPPAS)'#010+
   #010+
@@ -1844,79 +1865,78 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '        $(EXECPPAS)'#010+
   #010+
   '%.res: %.rc'#010+
-  '        windres -i $< -o $@'#010+
+  '        windres -i $<',' -o $@'#010+
   #010+
   '# Search paths for .ppu, .pp, .pas, .lpr, .dpr'#010+
-  'vpath %.pp $(COMPILER_SOURCEDIR) $(','COMPILER_INCLUDEDIR)'#010+
+  'vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
   'vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
   'vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
-  'vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
+  'vpath %.dpr $(C','OMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)'#010+
   'vpath %.inc $(COMPILER_INCLUDEDIR)'#010+
-  'vpath %$(OEXT',') $(COMPILER_UNITTARGETDIR)'#010+
+  'vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)'#010+
   'vpath %$(LTOEXT) $(COMPILER_UNITTARGETDIR)'#010+
   'vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)'#010+
   #010+
   '[sharedrules]'#010+
-  '#####################################################################'#010+
-  '# Library'#010+
-  '###############################','#####################################'+
+  '#####################','###############################################'+
   '#'#010+
+  '# Library'#010+
+  '#####################################################################'#010+
   #010+
   '.PHONY: fpc_shared'#010+
   #010+
   'override INSTALLTARGET+=fpc_shared_install'#010+
   #010+
   'ifndef SHARED_LIBVERSION'#010+
-  'SHARED_LIBVERSION=$(FPC_VERSION)'#010+
+  'SHARED_LIBVERSION=$(F','PC_VERSION)'#010+
   'endif'#010+
   #010+
   'ifndef SHARED_LIBNAME'#010+
   'SHARED_LIBNAME=$(PACKAGE_NAME)'#010+
   'endif'#010+
   #010+
-  'ifndef SHAR','ED_FULLNAME'#010+
+  'ifndef SHARED_FULLNAME'#010+
   'SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSIO'+
   'N)$(SHAREDLIBEXT)'#010+
   'endif'#010+
   #010+
-  '# Default sharedlib units are all unit objects'#010+
+  '# Default sharedlib units are all unit obje','cts'#010+
   'ifndef SHARED_LIBUNITS'#010+
   'SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)'#010+
-  'overri','de SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED'+
-  '_LIBUNITS))'#010+
+  'override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_L'+
+  'IBUNITS))'#010+
   'endif'#010+
   #010+
   'fpc_shared:'#010+
   'ifdef HASSHAREDLIB'#010+
-  '        $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1'#010+
+  '        $(MAKE) all CREATESHARED=1 LIN','KSHARED=1 CREATESMART=1'#010+
   'ifneq ($(SHARED_BUILD),n)'#010+
-  '        $(PPUMOVE) -q $(SHARED_LIBUNITS)',' -i$(COMPILER_UNITTARGETDIR)'+
-  ' -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX)'#010+
+  '        $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -'+
+  'o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR) -P$(BINUTILSPREFIX)'#010+
   'endif'#010+
   'else'#010+
-  '        @$(ECHO) Shared Libraries not supported'#010+
+  '        @$(ECHO) Shared Libraries not sup','ported'#010+
   'endif'#010+
   #010+
   'fpc_shared_install:'#010+
   'ifneq ($(SHARED_BUILD),n)'#010+
   'ifneq ($(SHARED_LIBUNITS),)'#010+
-  'if','neq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)'#010+
+  'ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)'#010+
   '        $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INST'+
   'ALL_SHAREDDIR)'#010+
-  'endif'#010+
+  'e','ndif'#010+
   'endif'#010+
   'endif'#010+
   #010+
   '[installrules]'#010+
-  '#########################################################','###########'+
-  '#'#010+
+  '#####################################################################'#010+
   '# Install rules'#010+
   '#####################################################################'#010+
   #010+
-  '.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall'#010+
+  '.PHONY: fpc_install fpc_sourceinstall fpc_examplei','nstall'#010+
   #010+
   'ifdef INSTALL_UNITS'#010+
-  'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNIT','S))'#010+
+  'override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))'#010+
   'endif'#010+
   #010+
   'ifdef INSTALL_BUILDUNIT'#010+
@@ -1924,30 +1944,29 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '(INSTALLPPUFILES))'#010+
   'endif'#010+
   #010+
-  'ifdef INSTALLPPUFILES'#010+
+  'ifdef INSTALLPPUFIL','ES'#010+
   '# Avoid getting the same name twice as some install EXE fail'#010+
-  '# in this case, happends f','or instance for OS/2 target'#010+
+  '# in this case, happends for instance for OS/2 target'#010+
   'ifneq ($(IMPORTLIBPREFIX)-$(STATICLIBEXT),$(STATICLIBPREFIX)-$(STATICL'+
   'IBEXT))'#010+
-  'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+
-  'LES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefi','x $('+
+  'override INSTALLPPULINKFILES:=$(subst $(PPUE','XT),$(OEXT),$(INSTALLPPU'+
+  'FILES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+
   'STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))'+
   ') $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(I'+
-  'NSTALLPPUFILES)))'#010+
+  'NSTALL','PPUFILES)))'#010+
   'else'#010+
   'override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFI'+
-  'LES',')) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $('+
-  'STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))'+
-  ')'#010+
+  'LES)) $(subst $(PPUEXT),$(LTOEXT),$(INSTALLPPUFILES)) $(addprefix $(ST'+
+  'ATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))'#010+
   'endif'#010+
   #010+
-  'ifneq ($(UNITTARGETDIRPREFIX),)'#010+
+  'ifneq ','($(UNITTARGETDIRPREFIX),)'#010+
   'override INSTALLPPUFILENAMES:=$(notdir $(INSTALLPPUFILES))'#010+
-  'overr','ide INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES))'#010+
+  'override INSTALLPPULINKFILENAMES:=$(notdir $(INSTALLPPULINKFILES))'#010+
   'override INSTALLPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(INSTALLP'+
   'PUFILENAMES))'#010+
-  'override INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPRE'+
-  'FIX),$(INSTALLPPULINKFIL','ENAMES)))'#010+
+  'over','ride INSTALLPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRP'+
+  'REFIX),$(INSTALLPPULINKFILENAMES)))'#010+
   'endif'#010+
   '# Implicitly install Package.fpc'#010+
   'override INSTALL_CREATEPACKAGEFPC=1'#010+
@@ -1955,25 +1974,25 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   'ifdef INSTALLEXEFILES'#010+
   'ifneq ($(TARGETDIRPREFIX),)'#010+
-  'override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(IN'+
-  'STALLEXEFILES)))'#010+
+  'override',' INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $('+
+  'INSTALLEXEFILES)))'#010+
+  'endif'#010+
   'endif'#010+
-  'endif',#010+
   #010+
   'fpc_install: all $(INSTALLTARGET)'#010+
   'ifdef INSTALLEXEFILES'#010+
   '        $(MKDIR) $(INSTALL_BINDIR)'#010+
-  '        $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)'#010+
+  '        $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR',')'#010+
   'endif'#010+
   'ifdef INSTALL_CREATEPACKAGEFPC'#010+
   'ifdef FPCMAKE'#010+
-  '# If the fpcpackage variable is set t','hen create and install Package.'+
-  'fpc,'#010+
+  '# If the fpcpackage variable is set then create and install Package.fp'+
+  'c,'#010+
   '# a safety check is done if Makefile.fpc is available'#010+
   'ifdef PACKAGE_VERSION'#010+
   'ifneq ($(wildcard Makefile.fpc),)'#010+
-  '        $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#010+
-  '        $(MKDIR) $(INSTALL_UNI','TDIR)'#010+
+  '    ','    $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc'#010+
+  '        $(MKDIR) $(INSTALL_UNITDIR)'#010+
   '        $(INSTALL) Package.fpc $(INSTALL_UNITDIR)'#010+
   'endif'#010+
   'endif'#010+
@@ -1981,15 +2000,15 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   'ifdef INSTALLPPUFILES'#010+
   '        $(MKDIR) $(INSTALL_UNITDIR)'#010+
-  '        $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+
+  '        $(IN','STALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)'#010+
   'ifneq ($(INSTALLPPULINKFILES),)'#010+
-  '        $(INS','TALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+
+  '        $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)'#010+
   'endif'#010+
   'ifneq ($(wildcard $(LIB_FULLNAME)),)'#010+
   '        $(MKDIR) $(INSTALL_LIBDIR)'#010+
-  '        $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)'#010+
+  '        $(INSTALL) $(LIB','_FULLNAME) $(INSTALL_LIBDIR)'#010+
   'ifdef inUnix'#010+
-  '        ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)','/$(LIB_NAME)'#010+
+  '        ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)'#010+
   'endif'#010+
   'endif'#010+
   'endif'#010+
@@ -1998,26 +2017,26 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '        $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)'#010+
   'endif'#010+
   #010+
-  'fpc_sourceinstall: distclean'#010+
+  'f','pc_sourceinstall: distclean'#010+
   '        $(MKDIR) $(INSTALL_SOURCEDIR)'#010+
-  '        $(COPYTREE) $(BA','SEDIR)/* $(INSTALL_SOURCEDIR)'#010+
+  '        $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)'#010+
   #010+
   'fpc_exampleinstall: $(EXAMPLEINSTALLTARGET) $(addsuffix _distclean,$(T'+
   'ARGET_EXAMPLEDIRS))'#010+
   'ifdef HASEXAMPLES'#010+
-  '        $(MKDIR) $(INSTALL_EXAMPLEDIR)'#010+
+  '        $(M','KDIR) $(INSTALL_EXAMPLEDIR)'#010+
   'endif'#010+
   'ifdef EXAMPLESOURCEFILES'#010+
-  '        $(COPY) $(EXAMPLESOURCE','FILES) $(INSTALL_EXAMPLEDIR)'#010+
+  '        $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)'#010+
   'endif'#010+
   'ifdef TARGET_EXAMPLEDIRS'#010+
   '        $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EX'+
   'AMPLEDIR)'#010+
   'endif'#010+
   #010+
-  '[distinstallrules]'#010+
+  '[di','stinstallrules]'#010+
   '#####################################################################'#010+
-  '# Di','st Install'#010+
+  '# Dist Install'#010+
   '#####################################################################'#010+
   #010+
   '.PHONY: fpc_distinstall'#010+
@@ -2025,16 +2044,15 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'fpc_distinstall: install exampleinstall'#010+
   #010+
   #010+
-  '[zipinstallrules]'#010+
+  '[','zipinstallrules]'#010+
   '#####################################################################'#010+
-  '# Z','ip'#010+
+  '# Zip'#010+
   '#####################################################################'#010+
   #010+
   '.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall'#010+
   #010+
-  '# Temporary path to pack a file, can only use a single deep'#010+
-  '# subdir, because the deltree can'#039't see',' the whole tree to remove'+
-  #010+
+  '# Tempora','ry path to pack a file, can only use a single deep'#010+
+  '# subdir, because the deltree can'#039't see the whole tree to remove'#010+
   'ifndef PACKDIR'#010+
   'ifndef inUnix'#010+
   'PACKDIR=$(BASEDIR)/../fpc-pack'#010+
@@ -2043,12 +2061,12 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   'endif'#010+
   #010+
-  '# Maybe create default zipname from packagename'#010+
+  '# Maybe create default z','ipname from packagename'#010+
   'ifndef ZIPNAME'#010+
   'ifdef DIST_ZIPNAME'#010+
   'ZIPNAME=$(DIST_ZIPNAME)'#010+
   'else'#010+
-  'ZIP','NAME=$(PACKAGE_NAME)'#010+
+  'ZIPNAME=$(PACKAGE_NAME)'#010+
   'endif'#010+
   'endif'#010+
   #010+
@@ -2057,7 +2075,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   #010+
   '# ZipTarget'#010+
-  'ifndef ZIPTARGET'#010+
+  'ifndef ZIPTARG','ET'#010+
   'ifdef DIST_ZIPTARGET'#010+
   'ZIPTARGET=DIST_ZIPTARGET'#010+
   'else'#010+
@@ -2065,7 +2083,7 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   'endif'#010+
   #010+
-  '# Use',' tar by default under linux'#010+
+  '# Use tar by default under linux'#010+
   'ifndef USEZIP'#010+
   'ifdef inUnix'#010+
   'USETAR=1'#010+
@@ -2074,50 +2092,50 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '# Use a wrapper script by default for Os/2'#010+
   'ifndef inUnix'#010+
-  'USEZIPWRAPPER=1'#010+
+  'USEZIPWRAPPER=1'#010,
   'endif'#010+
   #010+
   '# We need to be able to run in the current OS so fix'#010+
   '# the path separator'#010+
-  'ifdef USE','ZIPWRAPPER'#010+
+  'ifdef USEZIPWRAPPER'#010+
   'ZIPPATHSEP=$(PATHSEP)'#010+
   'ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))'#010+
   'else'#010+
   'ZIPPATHSEP=/'#010+
   'endif'#010+
   #010+
-  '# Create commands to create the zip/tar file'#010+
+  '# Create commands to c','reate the zip/tar file'#010+
   'ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))'#010+
-  'ZIPCMD_CDBASE',':=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#010+
+  'ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))'#010+
   'ifdef USETAR'#010+
   'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)'#010+
-  'ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDESTFILE) *'#010+
+  'ZIPCMD_ZIP:=$(TARPROG) c$(TAROPT)f $(ZIPDES','TFILE) *'#010+
   'else'#010+
   'ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)'#010+
-  'ZIPCMD_ZIP:=$(subst /,$','(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPD'+
-  'ESTFILE) *'#010+
+  'ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDES'+
+  'TFILE) *'#010+
   'endif'#010+
   #010+
   'fpc_zipinstall:'#010+
   '        $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1'#010+
-  '        $(MKDIR) $(DIST_DESTDIR)'#010+
+  '   ','     $(MKDIR) $(DIST_DESTDIR)'#010+
   '        $(DEL) $(ZIPDESTFILE)'#010+
   'ifdef USEZIPWRAPPER'#010+
-  '# Handle g','echo separate as we need to espace \ with \\'#010+
+  '# Handle gecho separate as we need to espace \ with \\'#010+
   'ifneq ($(ECHOREDIR),echo)'#010+
   '        $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPE'+
   'R)'#010+
-  '        $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)'+
-  #010+
-  '        $(ECHOREDIR) -e "','$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRA'+
-  'PPER)'#010+
+  '      ','  $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPE'+
+  'R)'#010+
+  '        $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPP'+
+  'ER)'#010+
   'else'#010+
   '        echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)'#010+
   '        echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)'#010+
-  '        echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+
+  '      ','  echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)'#010+
   'endif'#010+
   'ifdef inUnix'#010+
-  '        /bin/sh $(ZIPWRAPPER)'#010,
+  '        /bin/sh $(ZIPWRAPPER)'#010+
   'else'#010+
   'ifdef RUNBATCH'#010+
   '        $(RUNBATCH) $(ZIPWRAPPER)'#010+
@@ -2127,75 +2145,102 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   '        $(DEL) $(ZIPWRAPPER)'#010+
   'else'#010+
-  '        $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+
+  '        $(ZIPCMD_CDPACK',') ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)'#010+
   'endif'#010+
   '        $(DELTREE) $(PACKDIR)'#010+
   #010+
-  'fpc_zipsourceins','tall:'#010+
+  'fpc_zipsourceinstall:'#010+
   '        $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIP'+
   'SOURCESUFFIX)'#010+
   #010+
   'fpc_zipexampleinstall:'#010+
   'ifdef HASEXAMPLES'#010+
-  '        $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZI'+
-  'PEXAMPLESUFFIX)'#010+
+  '        $(MAKE) fp','c_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$('+
+  'ZIPEXAMPLESUFFIX)'#010+
   'endif'#010+
   #010+
-  'fpc_zipdistinst','all:'#010+
+  'fpc_zipdistinstall:'#010+
   '        $(MAKE) fpc_zipinstall ZIPTARGET=distinstall'#010+
   #010+
   #010+
   '[cleanrules]'#010+
   '#####################################################################'#010+
-  '# Clean rules'#010+
+  '# Clean',' rules'#010+
   '#####################################################################'#010+
   #010+
-  '.PHONY: fpc_','clean fpc_cleanall fpc_distclean'#010+
+  '.PHONY: fpc_clean fpc_cleanall fpc_distclean'#010+
   #010+
   'ifdef EXEFILES'#010+
   'override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES'+
   '))'#010+
-  'override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDB'+
-  'GFILES))'#010+
+  'override CLEANEXEDBGFILES:=$','(addprefix $(TARGETDIRPREFIX),$(CLEANEXE'+
+  'DBGFILES))'#010+
   'endif'#010+
   #010+
   'ifdef CLEAN_PROGRAMS'#010+
-  'override CL','EANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $'+
-  '(EXEEXT), $(CLEAN_PROGRAMS)))'#010+
-  'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix '+
-  '$(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+
+  'override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(E'+
+  'XEEXT), $(CLEAN_PROGRAMS)))'#010+
+  'override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(add','suffi'+
+  'x $(EXEDBGEXT), $(CLEAN_PROGRAMS)))'#010+
   'endif'#010+
   #010+
   'ifdef CLEAN_UNITS'#010+
-  'override CLEANPPUFILES+=','$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#010+
+  'override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))'#010+
   'endif'#010+
   #010+
   'ifdef CLEANPPUFILES'#010+
   'override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)'+
-  ') $(subst $(PPUEXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLI'+
-  'BPREFIX),$(subst $(PPUEXT),$(STATIC','LIBEXT),$(CLEANPPUFILES))) $(addp'+
+  ') $(subst $(PPU','EXT),$(LTOEXT),$(CLEANPPUFILES)) $(addprefix $(STATIC'+
+  'LIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addp'+
   'refix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUF'+
   'ILES)))'#010+
   'ifdef DEBUGSYMEXT'#010+
-  'override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPP'+
-  'UFILES))'#010+
+  'override CLEANPPULINK','FILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEAN'+
+  'PPUFILES))'#010+
   'endif'#010+
-  'override CLEANPPUFILENAMES',':=$(CLEANPPUFILES)'#010+
+  'override CLEANPPUFILENAMES:=$(CLEANPPUFILES)'#010+
   'override CLEANPPUFILES=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFI'+
   'LENAMES))'#010+
-  'override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES)'#010+
+  'override CLEANPPULINKFILENAMES:=$(CLEANPPULINKFILES',')'#010+
   'override CLEANPPULINKFILES=$(wildcard $(addprefix $(UNITTARGETDIRPREFI'+
-  'X),$(CLEANPPULINKF','ILENAMES)))'#010+
+  'X),$(CLEANPPULINKFILENAMES)))'#010+
   'endif'#010+
   #010+
   'fpc_clean: $(CLEANTARGET)'#010+
   'ifdef CLEANEXEFILES'#010+
   '        -$(DEL) $(CLEANEXEFILES)'#010+
   'endif'#010+
-  '# DELTREE instead of DEL because on Mac OS X these are directories'#010+
+  '# DELTREE instead of DEL because on Mac OS X t','hese are directories'#010+
   'ifdef CLEANEXEDBGFILES'#010+
   '        -$(DELTREE) $(CLEANEXEDBGFILES)'#010+
-  'endif'#010,
+  'endif'#010+
+  'ifdef CLEANPPUFILES'#010+
+  '        -$(DEL) $(CLEANPPUFILES)'#010+
+  'endif'#010+
+  'ifneq ($(CLEANPPULINKFILES),)'#010+
+  '        -$(DEL) $(CLEANPPULINKFILES)'#010+
+  'endif'#010+
+  'ifdef CLEANRSTFILE','S'#010+
+  '        -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+
+  'endif'#010+
+  'ifdef CLEAN_FILES'#010+
+  '        -$(DEL) $(CLEAN_FILES)'#010+
+  'endif'#010+
+  'ifdef LIB_NAME'#010+
+  '        -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+
+  'endif'#010+
+  '        -$(DEL) $(FPCMADE) *$(FULL_TARGET).','fpm Package.fpc *$(ASMEXT'+
+  ')'#010+
+  '        -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_scr'+
+  'ipt.res *_link.res'#010+
+  '        -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+
+  'TCHEXT)'#010+
+  #010+
+  'fpc_cleanall: $(CLEANTARGET)'#010+
+  'ifdef CLEANEXEFI','LES'#010+
+  '        -$(DEL) $(CLEANEXEFILES)'#010+
+  'endif'#010+
+  'ifdef COMPILER_UNITTARGETDIR'#010+
   'ifdef CLEANPPUFILES'#010+
   '        -$(DEL) $(CLEANPPUFILES)'#010+
   'endif'#010+
@@ -2203,51 +2248,26 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '        -$(DEL) $(CLEANPPULINKFILES)'#010+
   'endif'#010+
   'ifdef CLEANRSTFILES'#010+
-  '        -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+
-  'endif'#010+
-  'ifdef CLEAN_F','ILES'#010+
-  '        -$(DEL) $(CLEAN_FILES)'#010+
-  'endif'#010+
-  'ifdef LIB_NAME'#010+
-  '        -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)'#010+
-  'endif'#010+
-  '        -$(DEL) $(FPCMADE) *$(FULL_TARGET).fpm Package.fpc *$(ASMEXT)'#010+
-  '        -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.re','s *_s'+
-  'cript.res *_link.res'#010+
-  '        -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+
-  'TCHEXT)'#010+
+  '        -$(DEL) ','$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'+
   #010+
-  'fpc_cleanall: $(CLEANTARGET)'#010+
-  'ifdef CLEANEXEFILES'#010+
-  '        -$(DEL) $(CLEANEXEFILES)'#010+
-  'endif'#010+
-  'ifdef COMPILER_UNITTARGETDIR'#010+
-  'ifdef CLEANPPUFILE','S'#010+
-  '        -$(DEL) $(CLEANPPUFILES)'#010+
-  'endif'#010+
-  'ifneq ($(CLEANPPULINKFILES),)'#010+
-  '        -$(DEL) $(CLEANPPULINKFILES)'#010+
-  'endif'#010+
-  'ifdef CLEANRSTFILES'#010+
-  '        -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))'#010+
   'endif'#010+
   'endif'#010+
   'ifdef CLEAN_FILES'#010+
-  '       ',' -$(DEL) $(CLEAN_FILES)'#010+
+  '        -$(DEL) $(CLEAN_FILES)'#010+
   'endif'#010+
   '        -$(DELTREE) units'#010+
   '        -$(DELTREE) bin'#010+
-  '        -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *'+
+  '        -$(DEL) *$(OEXT) *$(LTOEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *',
   '$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)'#010+
   'ifneq ($(PPUEXT),.ppu)'#010+
-  '        -$(DEL) *.o *.p','pu *.a'#010+
+  '        -$(DEL) *.o *.ppu *.a'#010+
   'endif'#010+
   '        -$(DELTREE) *$(SMARTEXT)'#010+
   '        -$(DEL) fpcmade.* Package.fpc *.fpm'#010+
-  '        -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*.res *_scr'+
-  'ipt.res *_link.res'#010+
-  '        -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppa','slink$('+
-  'BATCHEXT)'#010+
+  '        -$(DEL) $(FPCEXTFILE) $(REDIRFILE) script*.res link*','.res *_s'+
+  'cript.res *_link.res'#010+
+  '        -$(DEL) $(PPAS) *_ppas$(BATCHEXT) ppas$(BATCHEXT) ppaslink$(BA'+
+  'TCHEXT)'#010+
   'ifdef AOUTEXT'#010+
   '        -$(DEL) *$(AOUTEXT)'#010+
   'endif'#010+
@@ -2255,156 +2275,158 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '        -$(DEL) *$(DEBUGSYMEXT)'#010+
   'endif'#010+
   'ifdef LOCALFPMAKEBIN'#010+
-  '        -$(DEL) $(LOCALFPMAKEBIN)'#010+
+  '        ','-$(DEL) $(LOCALFPMAKEBIN)'#010+
   '        -$(DEL) $(FPMAKEBINOBJ)'#010+
   'endif'#010+
   #010+
   'fpc_distclean: cleanall'#010+
-  #010,
+  #010+
   #010+
   '[baseinforules]'#010+
   '#####################################################################'#010+
   '# Base info rules'#010+
-  '#####################################################################'#010+
+  '#############################################','#######################'+
+  '#'#010+
   #010+
   '.PHONY: fpc_baseinfo'#010+
   #010+
   'override INFORULES+=fpc_baseinfo'#010+
   #010+
-  'fpc_base','info:'#010+
+  'fpc_baseinfo:'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  == Package info =='#010+
   '        @$(ECHO)  Package Name..... $(PACKAGE_NAME)'#010+
-  '        @$(ECHO)  Package Version.. $(PACKAGE_VERSION)'#010+
+  '        @$(ECHO)  Package Version.. $(','PACKAGE_VERSION)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  == Configuration info =='#010+
-  '        @$(EC','HO)'#010+
+  '        @$(ECHO)'#010+
   '        @$(ECHO)  FPC.......... $(FPC)'#010+
   '        @$(ECHO)  FPC Version.. $(FPC_VERSION)'#010+
   '        @$(ECHO)  Source CPU... $(CPU_SOURCE)'#010+
-  '        @$(ECHO)  Target CPU... $(CPU_TARGET)'#010+
+  '        @$(ECH','O)  Target CPU... $(CPU_TARGET)'#010+
   '        @$(ECHO)  Source OS.... $(OS_SOURCE)'#010+
-  '        @$(EC','HO)  Target OS.... $(OS_TARGET)'#010+
+  '        @$(ECHO)  Target OS.... $(OS_TARGET)'#010+
   '        @$(ECHO)  Full Source.. $(FULL_SOURCE)'#010+
   '        @$(ECHO)  Full Target.. $(FULL_TARGET)'#010+
-  '        @$(ECHO)  SourceSuffix. $(SOURCESUFFIX)'#010+
+  '        @$(ECHO)  Source','Suffix. $(SOURCESUFFIX)'#010+
   '        @$(ECHO)  TargetSuffix. $(TARGETSUFFIX)'#010+
-  '        @$(ECHO)  ','FPC fpmake... $(FPCFPMAKE)'#010+
+  '        @$(ECHO)  FPC fpmake... $(FPCFPMAKE)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  == Directory info =='#010+
   '        @$(ECHO)'#010+
-  '        @$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)'#010+
+  '        @$(ECHO)  Required pkgs... $(REQUIRE_PACKA','GES)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  Basedir......... $(BASEDIR)'#010+
-  '        @$(ECHO)  FPCD','ir.......... $(FPCDIR)'#010+
+  '        @$(ECHO)  FPCDir.......... $(FPCDIR)'#010+
   '        @$(ECHO)  CrossBinDir..... $(CROSSBINDIR)'#010+
   '        @$(ECHO)  UnitsDir........ $(UNITSDIR)'#010+
-  '        @$(ECHO)  PackagesDir..... $(PACKAGESDIR)'#010+
+  '        @$(ECHO)  PackagesDir.','.... $(PACKAGESDIR)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  GCC library..... $(GCCLIBDIR)'#010+
-  '     ','   @$(ECHO)  Other library... $(OTHERLIBDIR)'#010+
+  '        @$(ECHO)  Other library... $(OTHERLIBDIR)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  == Tools info =='#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  As........ $(AS)'#010+
-  '        @$(ECHO)  Ld........ $(LD)'#010+
+  ' ','       @$(ECHO)  Ld........ $(LD)'#010+
   '        @$(ECHO)  Ar........ $(AR)'#010+
-  '        @$(ECHO)  Rc.','....... $(RC)'#010+
+  '        @$(ECHO)  Rc........ $(RC)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  Mv........ $(MVPROG)'#010+
   '        @$(ECHO)  Cp........ $(CPPROG)'#010+
   '        @$(ECHO)  Rm........ $(RMPROG)'#010+
-  '        @$(ECHO)  GInstall.. $(GINSTALL)'#010+
+  '  ','      @$(ECHO)  GInstall.. $(GINSTALL)'#010+
   '        @$(ECHO)  Echo...... $(ECHO)'#010+
-  '        @$(ECH','O)  Shell..... $(SHELL)'#010+
+  '        @$(ECHO)  Shell..... $(SHELL)'#010+
   '        @$(ECHO)  Date...... $(DATE)'#010+
   '        @$(ECHO)  FPCMake... $(FPCMAKE)'#010+
   '        @$(ECHO)  PPUMove... $(PPUMOVE)'#010+
-  '        @$(ECHO)  Zip....... $(ZIPPROG)'#010+
+  '        @','$(ECHO)  Zip....... $(ZIPPROG)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  == Object info =='#010+
-  '      ','  @$(ECHO)'#010+
+  '        @$(ECHO)'#010+
   '        @$(ECHO)  Target Loaders........ $(TARGET_LOADERS)'#010+
   '        @$(ECHO)  Target Units.......... $(TARGET_UNITS)'#010+
-  '        @$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)'#010+
-  '        @$(ECHO)  Target Programs....... $(TARGE','T_PROGRAMS)'#010+
+  '        @$(ECHO)  Targe','t Implicit Units. $(TARGET_IMPLICITUNITS)'#010+
+  '        @$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)'#010+
   '        @$(ECHO)  Target Dirs........... $(TARGET_DIRS)'#010+
   '        @$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)'#010+
-  '        @$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)'#010+
+  '        @$(ECHO)  Targ','et ExampleDirs.... $(TARGET_EXAMPLEDIRS)'#010+
   '        @$(ECHO)'#010+
-  '        @$(ECHO)  Clean Units...','...... $(CLEAN_UNITS)'#010+
+  '        @$(ECHO)  Clean Units......... $(CLEAN_UNITS)'#010+
   '        @$(ECHO)  Clean Files......... $(CLEAN_FILES)'#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  Install Units....... $(INSTALL_UNITS)'#010+
-  '        @$(ECHO)  Install Files....... $(INSTALL_FILES)'#010+
+  ' ','       @$(ECHO)  Install Files....... $(INSTALL_FILES)'#010+
   '        @$(ECHO)'#010+
-  '        @$(ECHO)  ','== Install info =='#010+
+  '        @$(ECHO)  == Install info =='#010+
   '        @$(ECHO)'#010+
   '        @$(ECHO)  DateStr.............. $(DATESTR)'#010+
   '        @$(ECHO)  ZipName.............. $(ZIPNAME)'#010+
-  '        @$(ECHO)  ZipPrefix............ $(ZIPPREFIX)'#010+
-  '        @$(ECHO)  ZipCrossPrefix....... $(ZIPCROS','SPREFIX)'#010+
+  '        @$(E','CHO)  ZipPrefix............ $(ZIPPREFIX)'#010+
+  '        @$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)'#010+
   '        @$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)'#010+
   '        @$(ECHO)  FullZipName.......... $(FULLZIPNAME)'#010+
-  '        @$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)'#010+
+  '        @$(ECHO)  Install FPC Pac','kage.. $(INSTALL_FPCPACKAGE)'#010+
   '        @$(ECHO)'#010+
-  '        @$(ECHO)  Install base dir..... $(IN','STALL_BASEDIR)'#010+
+  '        @$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)'#010+
   '        @$(ECHO)  Install binary dir... $(INSTALL_BINDIR)'#010+
   '        @$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)'#010+
-  '        @$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)'#010+
-  '        @$(ECHO)  Install source dir... $(INSTALL_','SOURCEDIR)'#010+
+  '        @$(ECHO)  I','nstall units dir.... $(INSTALL_UNITDIR)'#010+
+  '        @$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)'#010+
   '        @$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)'#010+
   '        @$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)'#010+
-  '        @$(ECHO)  Install data dir..... $(INSTALL_DATADIR)'#010+
+  '        @$(ECHO)  I','nstall data dir..... $(INSTALL_DATADIR)'#010+
   '        @$(ECHO)'#010+
-  '        @$(ECHO)  Dist destinatio','n dir. $(DIST_DESTDIR)'#010+
+  '        @$(ECHO)  Dist destination dir. $(DIST_DESTDIR)'#010+
   '        @$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)'#010+
   '        @$(ECHO)'#010+
   #010+
   '[inforules]'#010+
-  '#####################################################################'#010+
-  '# Info rules'#010+
-  '################################################','####################'+
+  '#########################################','###########################'+
   '#'#010+
+  '# Info rules'#010+
+  '#####################################################################'#010+
   #010+
   '.PHONY: fpc_info'#010+
   #010+
   'fpc_info: $(INFORULES)'#010+
   #010+
   '[makefilerules]'#010+
-  '#####################################################################'#010+
+  '#####################################################################',
+  #010+
   '# Rebuild Makefile'#010+
-  '#####################################################################'#010,
+  '#####################################################################'#010+
   #010+
   '.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2'+
   ' \'#010+
   '        fpc_makefile_dirs'#010+
   #010+
   'fpc_makefile:'#010+
-  '        $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc'#010+
+  '        $(FPCMAKE) -w -T$(OS_TARGET',') Makefile.fpc'#010+
   #010+
   'fpc_makefile_sub1:'#010+
   'ifdef TARGET_DIRS'#010+
-  '        $(FPCMAKE) -w -T$(OS_TARGET) ','$(addsuffix /Makefile.fpc,$(TAR'+
-  'GET_DIRS))'#010+
+  '        $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+
+  'T_DIRS))'#010+
   'endif'#010+
   'ifdef TARGET_EXAMPLEDIRS'#010+
   '        $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGE'+
-  'T_EXAMPLEDIRS))'#010+
+  'T_EXAMP','LEDIRS))'#010+
   'endif'#010+
   #010+
   'fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_'+
-  'EXAM','PLEDIRS))'#010+
+  'EXAMPLEDIRS))'#010+
   #010+
   'fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2'#010+
   #010+
   'fpc_makefiles: fpc_makefile fpc_makefile_dirs'#010+
   #010+
   '[localmakefile]'#010+
-  '#####################################################################'#010+
-  '# Local Makefile'#010+
-  '#######################','#############################################'+
+  '####################','################################################'+
   '#'#010+
+  '# Local Makefile'#010+
+  '#####################################################################'#010+
   #010+
   'ifneq ($(wildcard fpcmake.loc),)'#010+
   'include fpcmake.loc'#010+
@@ -2412,19 +2434,20 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   #010+
   '[userrules]'#010+
-  '#####################################################################'#010+
-  '# Users rules'#010+
-  '###################################','#################################'+
+  '#############################','#######################################'+
   '#'#010+
+  '# Users rules'#010+
+  '#####################################################################'#010+
   #010+
   '[lclrules]'#010+
   '#####################################################################'#010+
   '# LCL Rules'#010+
-  '#####################################################################'#010+
+  '#####################','###############################################'+
+  '#'#010+
   #010+
   '# LCL Platform'#010+
   'ifndef LCL_PLATFORM'#010+
-  'ifneq',' ($(findstring $(OS_TARGET),win32 win64),)'#010+
+  'ifneq ($(findstring $(OS_TARGET),win32 win64),)'#010+
   'LCL_PLATFORM=win32'#010+
   'else'#010+
   'LCL_PLATFORM=gtk'#010+
@@ -2432,10 +2455,10 @@ const fpcmakeini : array[0..253,1..240] of char=(
   'endif'#010+
   'export LCL_PLATFORM'#010+
   #010+
-  '# Check if the specified LCLDIR is correct'#010+
+  '# Check if the specified LCLDIR i','s correct'#010+
   'ifdef LCLDIR'#010+
   'override LCLDIR:=$(subst \,/,$(LCLDIR))'#010+
-  'ifeq ($(wildcard $(LCLDIR)/','units/$(LCL_PLATFORM)),)'#010+
+  'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+
   'override LCLDIR=wrong'#010+
   'endif'#010+
   'else'#010+
@@ -2444,26 +2467,26 @@ const fpcmakeini : array[0..253,1..240] of char=(
   #010+
   '# Check if the default LCLDIR is correct'#010+
   'ifdef DEFAULT_LCLDIR'#010+
-  'override LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+
-  'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLAT','FORM)),)'#010+
+  'o','verride LCLDIR:=$(subst \,/,$(DEFAULT_LCLDIR))'#010+
+  'ifeq ($(wildcard $(LCLDIR)/units/$(LCL_PLATFORM)),)'#010+
   'override LCLDIR=wrong'#010+
   'endif'#010+
   'endif'#010+
   #010+
   '# Check for development version'#010+
   'ifeq ($(LCLDIR),wrong)'#010+
-  'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+
-  ' $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+
-  'ifeq ','($(LCLDIR),)'#010+
+  'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(f','irstword $(wildca'+
+  'rd $(addsuffix /units/$(LCL_PLATFORM),$(BASEDIR)/lcl $(BASEDIR)))))'#010+
+  'ifeq ($(LCLDIR),)'#010+
   'override LCLDIR=wrong'#010+
   'endif'#010+
   'endif'#010+
   #010+
   '# Check for release version'#010+
   'ifeq ($(LCLDIR),wrong)'#010+
-  'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(firstword $(wildcard'+
-  ' $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#010+
-  'ife','q ($(LCLDIR),)'#010+
+  'override LCLDIR=$(subst /units/$(LCL_PLATFORM),,$(f','irstword $(wildca'+
+  'rd $(addsuffix /lib/lazarus/units/$(LCL_PLATFORM),/usr/local /usr))))'#010+
+  'ifeq ($(LCLDIR),)'#010+
   'override LCLDIR=wrong'#010+
   'endif'#010+
   'endif'#010+
@@ -2471,17 +2494,16 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '# Generate dirs'#010+
   'override LCLUNITDIR=$(wildcard $(LCLDIR)/units/$(LCL_PLATFORM) $(LCLDI'+
   'R)/units)'#010+
-  'override LCLCOMPONENTDIR=$(wildcard $(LCLDIR)/.. $(LCLDIR)/../componen'+
-  'ts $(LCLDIR)/components)',#010+
+  'over','ride LCLCOMPONENTDIR=$(wildcard $(LCLDIR)/.. $(LCLDIR)/../compon'+
+  'ents $(LCLDIR)/components)'#010+
   'export LCLDIR LCLUNITDIR LCLCOMPONENTDIR'#010+
   #010+
   '# Add LCL dirs to paths'#010+
   'override REQUIRE_PACKAGESDIR+=$(LCLCOMPONENTDIR)'#010+
-  'override COMPILER_UNITDIR+=$(LCLUNITDIR)'#010+
+  'override COMPILER_UNITDIR+=$(LCLUN','ITDIR)'#010+
   #010+
   '[lclinforules]'#010+
-  '###################################################################','#'+
-  '#'#010+
+  '#####################################################################'#010+
   '# LCL Info rules'#010+
   '#####################################################################'#010+
   'override INFORULES+=lclinfo'#010+
@@ -2489,113 +2511,113 @@ const fpcmakeini : array[0..253,1..240] of char=(
   '.PHONY: lclinfo'#010+
   #010+
   'lclinfo:'#010+
-  '        @$(ECHO)  == LCL info =='#010+
+  '     ','   @$(ECHO)  == LCL info =='#010+
   '        @$(ECHO)'#010+
-  '        @$(ECHO)  Platform............. $(LCL','_PLATFORM)'#010+
+  '        @$(ECHO)  Platform............. $(LCL_PLATFORM)'#010+
   '        @$(ECHO)  LCLDIR............... $(LCLDIR)'#010+
   '        @$(ECHO)  LCL Unit dir......... $(LCLUNITDIR)'#010+
-  '        @$(ECHO)  LCL Component dir.... $(LCLCOMPONENTDIR)'#010+
+  '        @$(ECHO)  LCL Component dir','.... $(LCLCOMPONENTDIR)'#010+
   '        @$(ECHO)'#010+
   #010+
   '[fpmakeprerules]'#010+
-  '###############################','#####################################'+
-  '#'#010+
+  '#####################################################################'#010+
   '# fpmake prerules'#010+
   '#####################################################################'#010+
-  'FPMAKEBIN=fpmake$(SRCEXEEXT)'#010+
+  'FPMAKEBIN=fpmake$(SRCEX','EEXT)'#010+
   'FPMAKEBINOBJ=fpmake$(OEXT) fpmake$(LTOEXT)'#010+
   'LOCALFPMAKEBIN=.$(PATHSEP)$(FPMAKEBIN)'#010+
   #010+
-  '#',' Convert the OS_TARGET and CPU_TARGET options to fpmake'#039's --os '+
-  'and --cpu parameters'#010+
+  '# Convert the OS_TARGET and CPU_TARGET options to fpmake'#039's --os an'+
+  'd --cpu parameters'#010+
   'ifdef OS_TARGET'#010+
   'FPC_TARGETOPT+=--os=$(OS_TARGET)'#010+
   'endif'#010+
-  'ifdef CPU_TARGET'#010+
+  'ifdef CPU_T','ARGET'#010+
   'FPC_TARGETOPT+=--cpu=$(CPU_TARGET)'#010+
   'endif'#010+
   #010+
-  '# Get the location of the bootstrap-fpmkun','it units'#010+
+  '# Get the location of the bootstrap-fpmkunit units'#010+
   'PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wild'+
   'card $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))'#010+
-  'ifneq ($(PACKAGEDIR_FPMKUNIT),)'#010+
-  'UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFI',
-  'X)'#010+
+  'ifneq ($(PA','CKAGEDIR_FPMKUNIT),)'#010+
+  'UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX'+
+  ')'#010+
   'override COMPILER_FPMAKE_UNITDIR=$(UNITDIR_FPMAKE_FPMKUNIT)'#010+
   'FPMKUNIT_SRC=$(PACKAGEDIR_FPMKUNIT)/src/fpmkunit.pp'#010+
-  'FPMKUNIT_PPU=$(UNITDIR_FPMAKE_FPMKUNIT)/fpmkunit.ppu'#010+
+  'FPMKUNIT_PPU=$(UNITDIR_FPMAKE_FPMKU','NIT)/fpmkunit.ppu'#010+
   'endif'#010+
   #010+
   'ifdef FPMAKE_SKIP_CONFIG'#010+
-  'override FPMAKE_BUILD_OPT+=$(FPMAKE_SKIP','_CONFIG)'#010+
+  'override FPMAKE_BUILD_OPT+=$(FPMAKE_SKIP_CONFIG)'#010+
   'endif'#010+
   #010+
   '[fpmakerules]'#010+
   '#####################################################################'#010+
   '# fpmake rules'#010+
-  '#####################################################################'#010+
-  '.PHONY: fpc_fpmake fpc_fpmake_clean fpc_fpmake_install ','fpc_fpmake_ex'+
-  'ampleinstall'#010+
+  '###################################','#################################'+
+  '#'#010+
+  '.PHONY: fpc_fpmake fpc_fpmake_clean fpc_fpmake_install fpc_fpmake_exam'+
+  'pleinstall'#010+
   #010+
   '# Do not pass the Makefile'#039's unit and binary target locations. fpm'+
   'ake uses it'#039's own.'#010+
-  'override FPCOPT:=$(filter-out -FU%,$(FPCOPT))'#010+
+  'override FPCOPT:=$(filter-out -FU%,$(F','PCOPT))'#010+
   'override FPCOPT:=$(filter-out -FE%,$(FPCOPT))'#010+
-  '# Compose general fpmake-parameters'#010,
+  '# Compose general fpmake-parameters'#010+
   'ifdef FPMAKEOPT'#010+
   'FPMAKE_OPT+=$(FPMAKEOPT)'#010+
   'endif'#010+
   'FPMAKE_OPT+=--localunitdir=$(FPCDIR)'#010+
   'FPMAKE_OPT+=--globalunitdir=$(FPCDIR)/packages'#010+
-  'FPMAKE_OPT+=$(FPC_TARGETOPT)'#010+
+  'FPMAKE_OPT+=$(FPC_T','ARGETOPT)'#010+
   'FPMAKE_OPT+=$(addprefix -o ,$(FPCOPT))'#010+
   'FPMAKE_OPT+=--compiler=$(FPC)'#010+
-  'FPMAKE_OPT+','=-bu'#010+
+  'FPMAKE_OPT+=-bu'#010+
   #010+
   'FPMAKE_INSTALL_OPT+=--unitinstalldir=$(INSTALL_UNITDIR)'#010+
   'ifdef UNIXHier'#010+
   'FPMAKE_INSTALL_OPT+=--prefix=$(INSTALL_PREFIX)'#010+
-  'FPMAKE_INSTALL_OPT+=--baseinstalldir=$(INSTALL_LIBDIR)/fpc/$(FPC_VERSI'+
-  'ON)'#010+
+  'FPMAKE_INSTALL_OPT+=--base','installdir=$(INSTALL_LIBDIR)/fpc/$(FPC_VER'+
+  'SION)'#010+
   'else'#010+
-  'FPMAKE_INSTALL_OPT+=--prefix=$(INSTAL','L_BASEDIR)'#010+
+  'FPMAKE_INSTALL_OPT+=--prefix=$(INSTALL_BASEDIR)'#010+
   'endif'#010+
   #010+
   'override ALLTARGET+=fpc_fpmake'#010+
   'override INSTALLTARGET+=fpc_fpmake_install'#010+
   'override EXAMPLEINSTALLTARGET+=fpc_fpmake_exampleinstall'#010+
-  '# If no fpmake exists and (dist)clean is called, do not try to build f'+
-  'pmake, it will'#010+
-  '# most',' often fail because the dependencies are cleared.'#010+
+  '#',' If no fpmake exists and (dist)clean is called, do not try to build'+
+  ' fpmake, it will'#010+
+  '# most often fail because the dependencies are cleared.'#010+
   '# In case of a clean, simply do nothing'#010+
   'ifneq ($(wildcard $(LOCALFPMAKEBIN)),)'#010+
-  'override CLEANTARGET+=fpc_fpmake_clean'#010+
+  'override CLEANTARGET+','=fpc_fpmake_clean'#010+
   'endif'#010+
   #010+
   '$(FPMKUNIT_PPU): $(FPMKUNIT_SRC)'#010+
-  '            $(MAKE) -C $(PACKAGE','DIR_FPMKUNIT) bootstrap $(addprefix '+
-  'OPT=,$(FPMAKE_BUILD_OPT))'#010+
+  '            $(MAKE) -C $(PACKAGEDIR_FPMKUNIT) bootstrap $(addprefix OP'+
+  'T=,$(FPMAKE_BUILD_OPT))'#010+
   #010+
   '$(FPMAKEBIN): fpmake.pp $(FPMKUNIT_PPU)'#010+
-  '        $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,$(COMPILER_FPMAKE_UNITD'+
-  'IR)) $(FPMAKE_BUILD_OPT)'#010+
+  '        $(FPCFPMAKE) fpmake.pp $(addprefix -Fu,','$(COMPILER_FPMAKE_UNI'+
+  'TDIR)) $(FPMAKE_BUILD_OPT)'#010+
   #010+
   'fpc_fpmake: $(FPMAKEBIN)'#010+
-  '            $(LO','CALFPMAKEBIN) compile $(FPMAKE_OPT)'#010+
+  '            $(LOCALFPMAKEBIN) compile $(FPMAKE_OPT)'#010+
   #010+
   'fpc_fpmake_clean: $(FPMAKEBIN)'#010+
   '            $(LOCALFPMAKEBIN) clean $(FPMAKE_OPT)'#010+
   #010+
-  'fpc_fpmake_install: $(FPMAKEBIN)'#010+
+  'fpc_fpmake_install: $(FPMAKEBIN',')'#010+
   '            $(LOCALFPMAKEBIN) install $(FPMAKE_OPT) $(FPMAKE_INSTALL_O'+
   'PT)'#010+
   #010+
-  '# This is not',' completely valid. Exampleinstall should only install t'+
-  'he examples, while'#010+
+  '# This is not completely valid. Exampleinstall should only install the'+
+  ' examples, while'#010+
   '# fpmake -ie installs everything, including the examples. This also me'+
-  'ans that on'#010+
+  'ans th','at on'#010+
   '# a distinstall fpmake install wil be called twice.'#010+
-  'fpc_fpmake_exampleinstall: $(FPM','AKEBIN)'#010+
+  'fpc_fpmake_exampleinstall: $(FPMAKEBIN)'#010+
   '            $(LOCALFPMAKEBIN) install -ie $(FPMAKE_OPT) $(FPMAKE_INSTA'+
   'LL_OPT)'#010
 );
diff --git a/utils/fpcm/fpcmake.ini b/utils/fpcm/fpcmake.ini
index b88a2ca947..74cff38bb0 100644
--- a/utils/fpcm/fpcmake.ini
+++ b/utils/fpcm/fpcmake.ini
@@ -871,11 +871,16 @@ ifneq ($(findstring sparc64,$(shell uname -a)),)
 ifeq ($(BINUTILSPREFIX),)
 GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
 else
+# gcc mips seems not to recognize -m32/-m64
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
+CROSSGCCOPT=-mabi=32
+else
 CROSSGCCOPT=-m32
 endif
 endif
 endif
 endif
+endif
 
 # Check if FPCFPMAKE compiler is same target as FPC
 ifdef FPCFPMAKE
@@ -883,6 +888,21 @@ FPCFPMAKE_CPU_TARGET=$(shell $(FPCFPMAKE) -iTP)
 ifeq ($(CPU_TARGET),$(FPCFPMAKE_CPU_TARGET))
 # In that case use GCCLIBDIR value for FPCMAKEGCCLIBDIR
 FPCMAKEGCCLIBDIR:=$(GCCLIBDIR)
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_TARGET),aarch64 powerpc64 riscv64 sparc64 x86_64),)
+FPCMAKE_CROSSGCCOPT=-m64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips64 mips64el),)
+FPCMAKE_CROSSGCCOPT=-mabi=64
+else
+ifneq ($(findstring $(FPCFPMAKE_CPU_OPT),mips mipsel),)
+FPCMAKE_CROSSGCCOPT=-mabi=32
+else
+FPCMAKE_CROSSGCCOPT=-m32
+endif
+endif
+endif
+FPCMAKEGCCLIBDIR:=$(shell dirname `gcc $(FPCMAKE_CROSSGCCOPT) -print-libgcc-file-name`)
 endif
 endif
 
diff --git a/utils/fpcm/revision.inc b/utils/fpcm/revision.inc
index 70d80a4261..657b6679ad 100644
--- a/utils/fpcm/revision.inc
+++ b/utils/fpcm/revision.inc
@@ -1 +1 @@
-'2020-08-06 rev 46290'
+'2020-09-16 rev 46877'