diff options
author | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2006-03-13 09:29:57 +0000 |
---|---|---|
committer | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2006-03-13 09:29:57 +0000 |
commit | c637d77976ff476d100e30bbd879423b0757b09d (patch) | |
tree | f909fcca3ad2bb24e27aaad8c46488e8560d880e /compiler/owbase.pas | |
parent | bd78f0bfdef807fe2c23e638778ec0ce8e2d3009 (diff) | |
download | fpc-c637d77976ff476d100e30bbd879423b0757b09d.tar.gz |
Merged revisions 2791-2793,2798-2800,2806-2825,2829-2830,2833,2839,2898 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2791 | peter | 2006-03-06 14:57:20 +0100 (Mon, 06 Mar 2006) | 3 lines
* disable internal linker if -s is used
* enable section smartlink by default for internal linker
........
r2792 | peter | 2006-03-06 14:58:23 +0100 (Mon, 06 Mar 2006) | 2 lines
* support long sectionnames
........
r2793 | peter | 2006-03-06 15:04:12 +0100 (Mon, 06 Mar 2006) | 2 lines
* register symbols in section also when reading .o files
........
r2798 | peter | 2006-03-07 10:08:07 +0100 (Tue, 07 Mar 2006) | 2 lines
* symbolrefs need to be loaded from relocations when loading a .o
........
r2799 | peter | 2006-03-07 16:17:52 +0100 (Tue, 07 Mar 2006) | 3 lines
* remove unreferenced sections
* set stacksize in peopthaeder
........
r2800 | peter | 2006-03-07 17:02:46 +0100 (Tue, 07 Mar 2006) | 2 lines
* objsection.fullname added
........
........
r2807 | peter | 2006-03-08 08:18:04 +0100 (Wed, 08 Mar 2006) | 2 lines
* powerpc64 fixes
........
r2808 | peter | 2006-03-08 08:35:53 +0100 (Wed, 08 Mar 2006) | 2 lines
* register x86_64_pecoff
........
r2809 | peter | 2006-03-08 11:26:38 +0100 (Wed, 08 Mar 2006) | 2 lines
* optimize and cleanup matches()
........
r2810 | peter | 2006-03-08 12:25:28 +0100 (Wed, 08 Mar 2006) | 2 lines
* small tweak to readdata to copy values direct without calling move()
........
r2811 | peter | 2006-03-08 15:55:21 +0100 (Wed, 08 Mar 2006) | 2 lines
* compile fix
........
........
........
........
........
........
r2817 | peter | 2006-03-09 14:20:52 +0100 (Thu, 09 Mar 2006) | 2 lines
* more readable with long secnames
........
........
........
........
........
........
........
........
r2825 | peter | 2006-03-10 09:52:05 +0100 (Fri, 10 Mar 2006) | 2 lines
* don't initialize/finalize external variables
........
r2829 | peter | 2006-03-10 10:58:08 +0100 (Fri, 10 Mar 2006) | 2 lines
* merge 64bit assembler
........
r2830 | peter | 2006-03-10 12:25:08 +0100 (Fri, 10 Mar 2006) | 2 lines
* TElfAssembler rename
........
r2833 | peter | 2006-03-10 15:22:27 +0100 (Fri, 10 Mar 2006) | 3 lines
* support & prefix to force identifier parsing, used to access fields that
have the names of a register
........
r2839 | peter | 2006-03-10 19:37:11 +0100 (Fri, 10 Mar 2006) | 2 lines
* merge stabs section flags
........
r2898 | peter | 2006-03-12 23:18:18 +0100 (Sun, 12 Mar 2006) | 2 lines
* reorder instructions for better first match
........
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@2902 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/owbase.pas')
-rw-r--r-- | compiler/owbase.pas | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/compiler/owbase.pas b/compiler/owbase.pas index 35efa81ce8..ce6f0548a6 100644 --- a/compiler/owbase.pas +++ b/compiler/owbase.pas @@ -149,7 +149,7 @@ end; procedure tobjectwriter.write(const b;len:longint); var p : pchar; - left, + bufleft, idx : longint; begin inc(fsize,len); @@ -158,13 +158,13 @@ begin idx:=0; while len>0 do begin - left:=bufsize-bufidx; - if len>left then + bufleft:=bufsize-bufidx; + if len>bufleft then begin - move(p[idx],buf[bufidx],left); - dec(len,left); - inc(idx,left); - inc(bufidx,left); + move(p[idx],buf[bufidx],bufleft); + dec(len,bufleft); + inc(idx,bufleft); + inc(bufidx,bufleft); writebuf; end else @@ -269,43 +269,45 @@ end; function tobjectreader.read(out b;len:longint):boolean; var p : pchar; - left, + lenleft, + bufleft, idx : longint; begin - read:=false; + result:=false; if bufmax=0 then if not readbuf then exit; p:=pchar(@b); idx:=0; - while len>0 do + lenleft:=len; + while lenleft>0 do begin - left:=bufmax-bufidx; - if len>left then + bufleft:=bufmax-bufidx; + if lenleft>bufleft then begin - move(buf[bufidx],p[idx],left); - dec(len,left); - inc(idx,left); - inc(bufidx,left); + move(buf[bufidx],p[idx],bufleft); + dec(lenleft,bufleft); + inc(idx,bufleft); + inc(bufidx,bufleft); if not readbuf then exit; end else begin - move(buf[bufidx],p[idx],len); - inc(bufidx,len); - inc(idx,len); + move(buf[bufidx],p[idx],lenleft); + inc(bufidx,lenleft); + inc(idx,lenleft); break; end; end; - read:=(idx=len); + result:=(idx=len); end; function tobjectreader.readarray(a:TDynamicArray;len:longint):boolean; var orglen, - left, + bufleft, idx : longint; begin readarray:=false; @@ -316,13 +318,13 @@ begin idx:=0; while len>0 do begin - left:=bufmax-bufidx; - if len>left then + bufleft:=bufmax-bufidx; + if len>bufleft then begin - a.Write(buf[bufidx],left); - dec(len,left); - inc(idx,left); - inc(bufidx,left); + a.Write(buf[bufidx],bufleft); + dec(len,bufleft); + inc(idx,bufleft); + inc(bufidx,bufleft); if not readbuf then exit; end |