Browse Source

Rename pvmt internal type to lower_pvmt for i386-watcom as watcom assembler is not case sensitive

git-svn-id: trunk@47014 -
pierre 4 years ago
parent
commit
fa12dfa7b5
1 changed files with 13 additions and 3 deletions
  1. 13 3
      compiler/psystem.pas

+ 13 - 3
compiler/psystem.pas

@@ -256,6 +256,7 @@ implementation
 
 
       var
       var
         hrecst : trecordsymtable;
         hrecst : trecordsymtable;
+	pvmt_name : shortstring;
       begin
       begin
         symtablestack.push(systemunit);
         symtablestack.push(systemunit);
         cundefinedtype:=cundefineddef.create(true);
         cundefinedtype:=cundefineddef.create(true);
@@ -310,7 +311,11 @@ implementation
         cunicodestringtype:=cstringdef.createunicode(true);
         cunicodestringtype:=cstringdef.createunicode(true);
         { length=0 for shortstring is open string (needed for readln(string) }
         { length=0 for shortstring is open string (needed for readln(string) }
         openshortstringtype:=cstringdef.createshort(0,true);
         openshortstringtype:=cstringdef.createshort(0,true);
-{$ifdef x86}
+        if target_info.system=system_i386_watcom then
+          pvmt_name:='lower__pvmt'
+        else
+          pvmt_name:='pvmt';
+ {$ifdef x86}
         create_fpu_types;
         create_fpu_types;
 {$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
 {$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
         if target_info.system=system_x86_64_win64 then
         if target_info.system=system_x86_64_win64 then
@@ -637,7 +642,7 @@ implementation
             { can't use addtype for pvmt because the rtti of the pointed
             { can't use addtype for pvmt because the rtti of the pointed
               type is not available. The rtti for pvmt will be written implicitly
               type is not available. The rtti for pvmt will be written implicitly
               by thev tblarray below }
               by thev tblarray below }
-            systemunit.insert(ctypesym.create('$pvmt',pvmttype));
+            systemunit.insert(ctypesym.create('$'+pvmt_name,pvmttype));
             addfield(hrecst,cfieldvarsym.create('$length',vs_value,sizesinttype,[]));
             addfield(hrecst,cfieldvarsym.create('$length',vs_value,sizesinttype,[]));
             addfield(hrecst,cfieldvarsym.create('$mlength',vs_value,sizesinttype,[]));
             addfield(hrecst,cfieldvarsym.create('$mlength',vs_value,sizesinttype,[]));
             addfield(hrecst,cfieldvarsym.create('$parent',vs_value,pvmttype,[]));
             addfield(hrecst,cfieldvarsym.create('$parent',vs_value,pvmttype,[]));
@@ -686,6 +691,7 @@ implementation
 
 
       var
       var
         oldcurrentmodule : tmodule;
         oldcurrentmodule : tmodule;
+        pvmt_name : shortstring;
       begin
       begin
 {$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
 {$ifndef FPC_SUPPORT_X87_TYPES_ON_WIN64}
         if target_info.system=system_x86_64_win64 then
         if target_info.system=system_x86_64_win64 then
@@ -777,9 +783,13 @@ implementation
         loadtype('metadata',llvm_metadatatype);
         loadtype('metadata',llvm_metadatatype);
 {$endif llvm}
 {$endif llvm}
         loadtype('file',cfiletype);
         loadtype('file',cfiletype);
+        if target_info.system=system_i386_watcom then
+          pvmt_name:='lower__pvmt'
+        else
+          pvmt_name:='pvmt';
         if not(target_info.system in systems_managed_vm) then
         if not(target_info.system in systems_managed_vm) then
           begin
           begin
-            loadtype('pvmt',pvmttype);
+            loadtype(pvmt_name,pvmttype);
             loadtype('vtblarray',vmtarraytype);
             loadtype('vtblarray',vmtarraytype);
             loadtype('__vtbl_ptr_type',vmttype);
             loadtype('__vtbl_ptr_type',vmttype);
           end;
           end;