Jonas Maebe
03302dc7c4
* fixed support for macpas & and | operators: they only work on booleans
...
now, and always perform short circuit boolean evaluation (also in {$b+})
git-svn-id: trunk@3745 -
2006-05-30 13:02:36 +00:00
florian
b98c2b4617
* made win64 ppus usable for win32 and win64 compilers
...
git-svn-id: trunk@3400 -
2006-05-01 16:18:48 +00:00
peter
ce58e15393
* fix coff section names to fix resourcestrings with
...
the external linker
* create import libraries for dll imports, this uses
the new objdata framework to generate the binary
object files directly without needing an assembler pass
* store import_dll and import_name in ppu
* external linker uses import libraries
* internal linker uses import info from symtables,
no dlls are needed anymore
git-svn-id: trunk@3255 -
2006-04-17 20:48:22 +00:00
peter
95be416b9d
* don't allow stringconst+integer
...
* change booleans in arraydef to set
* set option in arraydef to indicate a constant string so
a nicer type can be shown instead of array[0..x] of char
git-svn-id: trunk@3051 -
2006-03-27 07:22:02 +00:00
peter
37c81492ad
Merged revisions 2827,2831,2837,2932-2980 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
r2827 (peter)
* smartlinking of resourcestrings
r2831 (peter)
* process_ea 64bit fixes
r2837 (peter)
* linker script
git-svn-id: trunk@2981 -
2006-03-19 22:12:52 +00:00
Jonas Maebe
4db6e1ddb8
* moved type conversion of C varargs from tcallnode to
...
tarrayconstructornode.inset_typeconvs() and fixed them:
* integers < 32 bit are converted to 32 bit (this was previously
done in the code generator for some targets, and not for others)
* currency is also converted to double for targets where currency = int64
* single is converted to double, except for x86_64 (is at least
necessary on darwin/ppc, darwin/i386 and linux/i386)
* enums are converted to 32 bit ints
* procvars are converted to pointers
* proper errors are given for various unsupported types
NOTE: in C, floating point constants are by default double, while in
FPC they are of type extended. On platforms where extended <> double,
such constants when passed to C varargs are automatically converted
to double by default (gives warning). If you want to pass them as
single or extended or get rid of the warning, use an explicit typecast
* increased ppu version because of introduction of new node flag
(nf_cvarargs for tarrayconstructornode)
* fixed tests/test/cg/tprintf
* changed tests/test/cg/cdecl/taoc5 to use explicit typecasts for
floating point constants passed to C varargs functions.
git-svn-id: trunk@2949 -
2006-03-17 22:26:48 +00:00
peter
17bc033747
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: trunk@2902 -
2006-03-13 09:29:57 +00:00
peter
785550d7e3
Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines
* add compiler dir
........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines
* enabled more code
........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines
* pe stub and headers
........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines
* section options cleanup
........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines
* fixed typecasts
........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines
* simple linking works
........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines
* internal linker script
........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines
* make elf working again
........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines
* disable dwarf for smartlinking with .a
* fix section start in new .a file
........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines
* stab section fixes
........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines
* basic work to merge stabs sections
........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines
* unload tmodules before linking
........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines
* fixed stabs linking
........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines
* show code and data size
........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines
* unload .stabs from objdata after it is merged
........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines
* memsize/datasize cleanup
* check for exports/resources when adding module to linker
........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines
* new TObjSymbol splitted from TAsmSymbol
........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines
* coff fixes after recent objsymbol changes
........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines
* fixed coff writer
........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines
* fix read-only opening
........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines
* Read edata from DLLs, basic work
........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines
* deletedef added
* don't remove defs from index when we are already clearing everything
........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines
* moved TObj classes to ogbase
* ObjSection.SymbolRefs and SymbolDefines list
* DLL importing
........
git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
Jonas Maebe
69671a1a5c
* increased ppu version because the ppu files are different since the
...
previous commit
git-svn-id: trunk@2760 -
2006-03-05 13:37:10 +00:00
florian
b06643a1eb
* tai_const refactored
...
git-svn-id: trunk@2323 -
2006-01-22 12:58:38 +00:00
peter
66f8276445
* refactor booleans in systeminfo structure, they are now flags
...
* support for case aware filesystems (Windows), they do now only
one lookup if a file exists
* add -WI option to generate import section for DLL imports or
let the linker handle it. Default is still import section until
the Makefiles are fixed, then the generation can be left to the
linker
git-svn-id: trunk@2274 -
2006-01-13 15:13:26 +00:00
peter
95879fe8a7
* basic support for generic classes
...
git-svn-id: trunk@2020 -
2005-12-21 10:11:15 +00:00
florian
a1189a9d64
* exports info handling refactored, -E will be passed to ld if necessary
...
git-svn-id: trunk@1922 -
2005-12-10 22:00:33 +00:00
daniel
c0b4678873
* Rename unit crc to fpccrc to avoid name conflict in packages
...
git-svn-id: trunk@1856 -
2005-12-01 16:45:44 +00:00
peter
ec4d287fd8
* aktoutputformat removed, add new paraXX vars for target
...
assembler and debuginfo and use these vars to override
the defaults for the target after the parameters are read
* remove not-maintained and tested gdb code
git-svn-id: trunk@1201 -
2005-09-25 21:17:37 +00:00
michael
3392189fb0
+ Implemented resources for ELF
...
git-svn-id: trunk@956 -
2005-08-28 09:35:35 +00:00
peter
9cda65c4b0
* support for widestrings in tconstsym
...
* fix widestring writing for stringconstn
git-svn-id: trunk@646 -
2005-07-18 12:54:15 +00:00
fpc
790a4fe2d3
* log and id tags removed
...
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3
initial import
...
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
Jonas Maebe
bfa2301575
* const record parameters > 8 bytes are now passed by reference for non
...
cdecl/cppdecl procedures on Mac OS/Mac OS X to fix compatibility with
GPC (slightly more efficient than Metrowerks behaviour below, but
less efficient in most cases than our previous scheme)
+ "mwpascal" procedure directive to support the const record parameter
behaviour of Metrowerks Pascal, which passes all const records by
reference
2005-03-27 14:10:52 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
olle
469d1cc5cf
+ ppu files now has FPas as creator code on MacOS
2005-01-24 17:46:18 +00:00
peter
8d251e8506
* unit mapping rewrite
...
* new derefmap added
2005-01-19 22:19:41 +00:00
olle
7572f3a539
* rework of macro subsystem
...
+ exportable macros for mode macpas
2005-01-09 20:24:43 +00:00
peter
9c0be16488
implicit load of variants unit
2004-12-06 19:23:05 +00:00
peter
e740a66636
* tparaitem removed, use tparavarsym instead
...
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
peter
6458bd0ce1
* tvarsym splitted
2004-11-08 22:09:58 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
peter
d763f9e142
browser disabled
...
uf_local_symtable ppu flag when a localsymtable is stored
2004-08-27 21:59:26 +00:00
florian
4b3ed28d07
* morphos now takes any pointer var. as libbase
...
* alignment for sparc fixed
* int -> double conversion on sparc fixed
2004-08-22 20:11:38 +00:00
Jonas Maebe
c7544e69de
+ padalgingment field for recordsymtables (saved by recorddefs)
...
+ support for Macintosh PowerPC alignment (if the first field of a record
or union has an alignment > 4, then the record or union size must be
padded to a multiple of this size)
2004-08-17 16:29:21 +00:00
Jonas Maebe
1563d986c5
* inline procedures at the node tree level, but only under some very
...
limited circumstances for now (only procedures, and only if they have
no or only vs_out/vs_var parameters).
* fixed ppudump for inline procedures
* fixed ppudump for ppc
2004-07-12 09:14:04 +00:00
peter
077197e5c4
* new format
2004-07-09 23:11:05 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
c553f6b320
* add DEBUGINFO symbol to reference the .o file that includes the
...
stabs info for types and global/static variables
* debuginfo flag added to ppu to indicate whether debuginfo is
generated or not
2004-05-19 21:16:12 +00:00
daniel
b721e5872c
* Prepare compiler infrastructure for multiple ansistring types
2004-04-29 19:56:36 +00:00
peter
e46cdcea48
* constants ordinals now always have a type assigned
...
* integer constants have the smallest type, unsigned prefered over
signed
2004-03-23 22:34:49 +00:00
florian
fabb9c33ac
* top_symbol killed
...
+ refaddr to treference added
+ refsymbol to treference added
* top_local stuff moved to an extra record to save memory
+ aint introduced
* tppufile.get/putint64/aint implemented
2004-02-27 10:21:04 +00:00
florian
35b8e93073
* fixed more alignment issues
2004-01-30 13:42:03 +00:00
peter
f663d2488f
* cross unit inlining fixed
2003-11-10 22:02:52 +00:00
peter
6878c55c80
* write derefdata in a separate ppu entry
2003-10-22 20:39:59 +00:00
peter
8af51ea6d3
* locals and paras are allocated in the code generation
...
* tvarsym.localloc contains the location of para/local when
generating code for the current procedure
2003-09-23 17:56:05 +00:00
Jonas Maebe
024590b0fa
* fixed some range check errors that occurred on big endian systems
...
* slightly optimized the swap*() functions
2003-07-05 20:06:28 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
peter
e7975c7592
* re-resolving added instead of reloading from ppu
...
* tderef object added to store deref info for resolving
2003-06-07 20:26:32 +00:00
peter
7054a48b4d
* removed systems unit
2003-05-26 19:39:51 +00:00
Jonas Maebe
035ad566f9
* endian fix is now done using a define instead of with source_info
2003-05-26 15:49:54 +00:00
Jonas Maebe
f85bec0291
* endian fixes
2003-05-24 13:37:10 +00:00
peter
895e03b854
* write header for crc_only
2003-05-23 17:03:51 +00:00
peter
f4b818fc1d
* removed funcretn,funcretsym, function result is now in varsym
...
and aliases for result and function name are added using absolutesym
* vs_hidden parameter for funcret passed in parameter
* vs_hidden fixes
* writenode changed to printnode and released from extdebug
* -vp option added to generate a tree.log with the nodetree
* nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
florian
47a3437dba
* comp is now written with its bit pattern to the ppu instead as an extended
2003-04-24 13:03:01 +00:00
daniel
9e2084b8d5
* Further register allocator work. Compiler now smaller with new
...
allocator than without.
* Somebody forgot to adjust ppu version number
2003-04-23 14:42:07 +00:00
peter
8da3f59d32
* vs_hidden released
2003-04-10 17:57:52 +00:00
peter
ec66760702
* store symoptions also for procdef
...
* check symoptions (private,public) when calculating possible
overload candidates
2003-03-17 15:54:22 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
peter
bfd72ad5d5
* merged changes from 1.0.7 up to 04-11
...
- -V option for generating bug report tracing
- more tracing for option parsing
- errors for cdecl and high()
- win32 import stabs
- win32 records<=8 are returned in eax:edx (turned off by default)
- heaptrc update
- more info for temp management in .s file with EXTDEBUG
2002-11-15 01:58:45 +00:00
peter
798289b1f3
* only use init tables for threadvars
2002-10-14 19:42:33 +00:00
peter
98dd65b0f3
* inlining is now also allowed in interface
...
* renamed write/load to ppuwrite/ppuload
* tnode storing in ppu
* nld,ncon,nbas are already updated for storing in ppu
2002-08-18 20:06:23 +00:00
peter
8082f79ea6
* first things tai,tnode storing in ppu
2002-08-15 19:10:35 +00:00
carl
9d4f336f74
+ fpu emulation helpers (ppu checking also)
2002-08-15 15:09:41 +00:00
florian
af4302bc67
* more fixes for ppc calling conventions
2002-08-13 21:40:55 +00:00
peter
ac71268ce6
* saving of asmsymbols in ppu supported
...
* asmsymbollist global is removed and moved into a new class
tasmlibrarydata that will hold the info of a .a file which
corresponds with a single module. Added librarydata to tmodule
to keep the library info stored for the module. In the future the
objectfiles will also be stored to the tasmlibrarydata class
* all getlabel/newasmsymbol and friends are moved to the new class
2002-08-11 13:24:10 +00:00
florian
030eae46de
* a couple of interface related fixes
2002-08-09 07:33:01 +00:00
peter
06ebac4e27
* readded missing revisions
2002-05-18 13:34:04 +00:00
carl
21b3a10f02
+ defines.inc -> fpcdefs.inc to avoid conflicts if compiling by hand
...
+ try to fix temp allocation (still in ifdef)
+ generic constructor calls
+ start of tassembler / tmodulebase class cleanup
2002-05-16 19:46:34 +00:00
peter
2992e1819c
* removed old logs and updated copyright year
2002-05-14 19:34:38 +00:00
peter
5e7a1e3729
* removed unused units
...
* use tlocation.size in cg.a_*loc*() routines
2002-04-04 19:05:54 +00:00
Jonas Maebe
7fb55bf4e4
+ a_loadfpu_* and a_loadmm_* methods in tcg
...
* register allocation is now handled by a class and is mostly processor
independent (+rgobj.pas and i386/rgcpu.pas)
* temp allocation is now handled by a class (+tgobj.pas, -i386\tgcpu.pas)
* some small improvements and fixes to the optimizer
* some register allocation fixes
* some fpuvaroffset fixes in the unary minus node
* push/popusedregisters is now called rg.save/restoreusedregisters and
(for i386) uses temps instead of push/pop's when using -Op3 (that code is
also better optimizable)
* fixed and optimized register saving/restoring for new/dispose nodes
* LOC_FPU locations now also require their "register" field to be set to
R_ST, not R_ST0 (the latter is used for LOC_CFPUREGISTER locations only)
- list field removed of the tnode class because it's not used currently
and can cause hard-to-find bugs
2002-03-31 20:26:33 +00:00
armin
ed209a3961
+ initialize threadvars defined local in units
2002-03-28 16:07:52 +00:00
florian
b60666ae1f
+ parasym to tparaitem added
2001-12-06 17:57:33 +00:00
carl
8393b73e58
* updated record size
2001-09-22 04:51:58 +00:00
peter
f88f6eb571
* rtti/init table updates
...
* rttisym for reusable global rtti/init info
* support published for interfaces
2001-08-30 20:13:52 +00:00
peter
49481a0c63
* v10 merges
2001-06-27 21:37:36 +00:00
peter
e24474d9ac
* -Ur switch (merged)
...
* masm fixes (merged)
* quoted filenames for go32v2 and win32
2001-06-18 20:36:23 +00:00
peter
25e006b364
* endian define
2001-05-18 22:28:59 +00:00
peter
6c7708c1e0
* ppu object to class rewrite
...
* move ppu read and write stuff to fppu
2001-05-06 14:49:16 +00:00
florian
82a6a7ed95
+ basic variant type support in the compiler
2001-03-22 00:10:58 +00:00
Jonas Maebe
c91a23c27d
* new constant handling: from now on, hex constants >$7fffffff are
...
parsed as unsigned constants (otherwise, $80000000 got sign extended
and became $ffffffff80000000), all constants in the longint range
become longints, all constants >$7fffffff and <=cardinal($ffffffff)
are cardinals and the rest are int64's.
* added lots of longint typecast to prevent range check errors in the
compiler and rtl
* type casts of symbolic ordinal constants are now preserved
* fixed bug where the original resulttype wasn't restored correctly
after doing a 64bit rangecheck
2000-12-07 17:19:42 +00:00
peter
451723647e
* symtable splitted, no real code changes
2000-10-31 22:02:46 +00:00
peter
a71e44ac49
* use defines.inc
2000-09-24 15:06:10 +00:00
peter
0d881bb510
* new ppu version
2000-08-13 13:04:38 +00:00
michael
650fbb86aa
+ removed logs
2000-07-13 11:32:24 +00:00
michael
e7aca136a1
+ Initial import
2000-07-13 06:29:38 +00:00
pierre
f63815853e
CRC stuff moved to CRC unit
2000-05-15 13:19:04 +00:00
pierre
7c324b13b2
* adapted to Delphi 3
2000-05-12 08:58:51 +00:00
florian
889e43db8a
* fixed some vmt problems, especially related to overloaded methods
...
in objects/classes
2000-05-11 06:53:48 +00:00
pierre
97417dcf26
* ORDERSOURCES released
2000-02-29 21:58:31 +00:00
peter
4a4a24b6e8
* log truncated
2000-02-09 13:22:42 +00:00
peter
e525797c51
* updated copyright to 2000
2000-01-07 01:14:18 +00:00
peter
11b8f997c7
* INFTPPU define to write the ppu of the interface to .ppu.intf
1999-12-02 11:29:07 +00:00
peter
0512ba80fb
+ ttype, tsymlist
1999-11-30 10:40:42 +00:00
peter
312ca8700f
* makefile updates to work with new fpcmake
1999-11-23 09:42:38 +00:00
pierre
e4bfedf924
* Nextoverloading ordering fix
1999-11-21 01:42:37 +00:00
pierre
b528749138
* Notes/Hints for local syms changed to
...
Set_varstate function
1999-11-18 15:34:44 +00:00
pierre
62da9bd4c0
* Notes/hints changes
1999-11-17 17:04:58 +00:00
peter
0887060ff2
* truncated log to 20 revs
1999-11-06 14:34:16 +00:00
peter
5db2ac22e5
* ppu header writting now uses currentppuversion
1999-09-17 09:14:56 +00:00
pierre
fc0d67a752
+ error if PPU modulename is different from what is searched
...
(8+3 limitations!)
+ cond ORDERSOURCES to allow recompilation of FP
if symppu.inc is changed (need PPUversion change!)
1999-09-16 13:27:08 +00:00
pierre
910372616a
* typo correction
1999-09-16 11:34:44 +00:00