浏览代码

* support long section names in executable

git-svn-id: trunk@7170 -
peter 18 年之前
父节点
当前提交
71a11fafe9
共有 1 个文件被更改,包括 12 次插入2 次删除
  1. 12 2
      compiler/ogcoff.pas

+ 12 - 2
compiler/ogcoff.pas

@@ -1939,12 +1939,22 @@ const pemagic : array[0..3] of byte = (
 
 
     procedure TCoffexeoutput.ExeSectionList_write_header(p:TObject;arg:pointer);
     procedure TCoffexeoutput.ExeSectionList_write_header(p:TObject;arg:pointer);
       var
       var
-        sechdr    : tcoffsechdr;
+        sechdr   : tcoffsechdr;
+        s        : string;
+        strpos   : Aint;
       begin
       begin
         with tExeSection(p) do
         with tExeSection(p) do
           begin
           begin
             fillchar(sechdr,sizeof(sechdr),0);
             fillchar(sechdr,sizeof(sechdr),0);
-            move(name[1],sechdr.name,length(name));
+            s:=name;
+            if length(s)>8 then
+             begin
+               strpos:=FCoffStrs.size+4;
+               FCoffStrs.writestr(s);
+               FCoffStrs.writestr(#0);
+               s:='/'+ToStr(strpos);
+             end;
+            move(s[1],sechdr.name,length(s));
             sechdr.rvaofs:=mempos;
             sechdr.rvaofs:=mempos;
             if win32 then
             if win32 then
               sechdr.vsize:=Size
               sechdr.vsize:=Size