فهرست منبع

* ogcoff.pas: when encountering symbol of unsupported type in input object file, give a meaningful error message instead of internal error. Mantis #27020.
- removed repeating check of section index.

git-svn-id: trunk@29062 -

sergei 10 سال پیش
والد
کامیت
8c61990078
1فایلهای تغییر یافته به همراه9 افزوده شده و 3 حذف شده
  1. 9 3
      compiler/ogcoff.pas

+ 9 - 3
compiler/ogcoff.pas

@@ -1665,6 +1665,13 @@ const pemagic : array[0..3] of byte = (
         strname   : string;
         strname   : string;
         auxrec    : array[0..17] of byte;
         auxrec    : array[0..17] of byte;
         objsec    : TObjSection;
         objsec    : TObjSection;
+
+        { keeps string manipulations out of main routine }
+        procedure UnsupportedSymbolType;
+          begin
+            Comment(V_Fatal,'Unsupported COFF symbol type '+tostr(sym.typ)+' at index '+tostr(symidx)+' while reading '+InputFileName);
+          end;
+
       begin
       begin
         with TCoffObjData(objdata) do
         with TCoffObjData(objdata) do
          begin
          begin
@@ -1738,8 +1745,7 @@ const pemagic : array[0..3] of byte = (
                   end;
                   end;
                 COFF_SYM_SECTION :
                 COFF_SYM_SECTION :
                   begin
                   begin
-                    if sym.section=0 then
-                      InputError('Failed reading coff file, illegal section');
+                    { GetSection checks that index is in range }
                     objsec:=GetSection(sym.section);
                     objsec:=GetSection(sym.section);
                     if assigned(objsec) then
                     if assigned(objsec) then
                       begin
                       begin
@@ -1757,7 +1763,7 @@ const pemagic : array[0..3] of byte = (
                 COFF_SYM_FILE :
                 COFF_SYM_FILE :
                   ;
                   ;
                 else
                 else
-                  internalerror(200602232);
+                  UnsupportedSymbolType;
               end;
               end;
               FSymTbl^[symidx]:=objsym;
               FSymTbl^[symidx]:=objsym;
               { read aux records }
               { read aux records }