Commit Graph

491 Commits

Author SHA1 Message Date
peter
34df933534 * remove chained overloades before releasing static symtable
git-svn-id: trunk@642 -
2005-07-18 07:06:10 +00:00
florian
83c6b3aca2 * from Yury Sidorov:
+ Added new target WinCE for i386 (to be able compile and run programs in WinCE emulator)

git-svn-id: trunk@596 -
2005-07-09 09:31:57 +00:00
florian
c2fe9e3814 + compiler part of WinCE patches from Yuri Sidorov
git-svn-id: trunk@573 -
2005-07-03 15:52:54 +00:00
florian
f5b9130b98 * deallocation of translated resourcestrings
* load heaptrc before objpas

git-svn-id: trunk@549 -
2005-06-30 19:07:45 +00:00
Jonas Maebe
9d9fd923d9 * the 'main' procedure for darwin is now placed in the main program instead
of in the system unit
+ ability to rename this 'main' symbol (-XM<x>, e.g. -XMSDL_main for SDL), for
  all OS'es
+ mention the -Xm parameter in the help

git-svn-id: trunk@503 -
2005-06-26 13:24:12 +00:00
peter
2720cbd25b * win32 dll smartlink patch from Pavel V. Ozerski
git-svn-id: trunk@182 -
2005-06-03 11:39:57 +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
a5c94ddccd * removed some unused variables 2005-03-25 21:55:43 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
c5488ea6b1 * -Fa option added, it'll load the units before the uses
line is parsed. Can be used to load cthreads from the commandline.
    Example '-g -Faheaptrc,lineinfo' is the same as '-ghl'
2005-02-06 21:33:28 +00:00
peter
ad9d04f104 * removed $threading 2005-02-06 11:15:31 +00:00
florian
b1c8bfc478 + x86_64 pic draft 2005-02-06 00:05:56 +00:00
peter
e820bc93f2 * interface wrapper generation moved to cgobj
* generate interface wrappers after the module is parsed
2005-01-24 22:08:32 +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
06cfe01791 * os2 fixes for import
* asmsymtype support for intel reader
2004-11-29 18:50:15 +00:00
michael
180966c0aa * Split po_public into po_public and po_global (Peter) 2004-11-19 08:17:01 +00:00
peter
87d2861f89 * fixes for win32 mangledname 2004-11-16 20:32:40 +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
florian
fa2f619598 * THREADVARLIST is now aligned 2004-11-05 20:04:49 +00:00
peter
088892de9b use filepos of main when generating the module stabs 2004-11-04 23:59:13 +00:00
peter
f4a7c3d444 fixed debuginfo for variables in staticsymtable 2004-11-04 17:09:54 +00:00
olle
f8c9ad629c + All sections get names in macos 2004-10-31 15:29:39 +00:00
peter
759c010f6a * -Ch for heapsize added again
* __heapsize contains the heapsize
2004-10-26 15:11:01 +00:00
peter
e7459f5466 * heap and heapsize removed
* checkpointer fixes
2004-10-25 15:38:41 +00:00
mazen
581b52422c - remove $IFDEF DELPHI and related code
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
ef7ae0eab1 * debuginfo fixes 2004-10-04 18:26:51 +00:00
peter
7f8844e74d * release localsymtables when module is compiled 2004-09-14 16:33:46 +00:00
armin
354004d803 * target netwlibc added (libc is preferred for newer netware versions) 2004-09-04 21:18:47 +00:00
armin
5f567e75f8 * dont create main for netware (only PASCALMAIN) 2004-09-03 16:12:32 +00:00
olle
189214f79b + Added automatic use of unit macpas under mode macpas 2004-08-16 22:52:35 +00:00
peter
9d7048d917 * remove unused and not loaded units before linking 2004-07-06 20:23:25 +00:00
peter
230105093d * only enable dwarf for supported platforms 2004-06-29 21:00:08 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
peter
2eecc76977 * fixed debuginfo symbol 2004-06-18 15:16:27 +00:00
florian
588e2c38bf * dwarf branch merged 2004-06-16 20:07:06 +00:00
peter
a3c4abf4a7 * initialize errorsym/errortype.def.owner to prevent crashes 2004-05-23 20:56:42 +00:00
peter
72365ec95b * implicit_finally flag must be set in pass1
* add check whether the implicit frame is generated when expected
2004-05-23 15:06:20 +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
peter
d4dcaeafaf * fix checking for forwards in static symtable 2004-05-16 13:29:21 +00:00
olle
6227590f61 * changed $mode mac to $mode macpas (macro defined should be FPC_MACPAS) 2004-05-11 18:22:16 +00:00
olle
90bf09aa35 + enable omitting of IMPLEMENTATION for mode mac
+ added macro FPC_MAC for mode mac
2004-05-03 09:55:27 +00:00
peter
2b1fee21f1 * fix stabs for globals 2004-05-02 17:26:19 +00:00
Tomas Hajny
9238319c2f * OS/2 heap management modified to be able to grow heap as needed 2004-03-24 20:24:25 +00:00
olle
a7f25327f6 * change AT_FUNCTION to AT_DATA where appropriate 2004-03-18 11:43:57 +00:00
peter
1ae8d3849b * fix stabs lineno for fpc_compiled 2004-03-14 20:10:14 +00:00
peter
37f3f95b59 * more stabs fixes
* special mode -gv for valgrind compatible stabs
2004-03-10 22:52:57 +00:00
peter
d8c68fdfe0 * more stabs updates 2004-03-09 20:45:04 +00:00
peter
abbd54f334 * stabs updates to write stabs for def for all implictly used
units
2004-03-08 22:07:46 +00:00
florian
61f15e4ec4 * make cycle fixed
+ pic support for darwin
  + support of importing vars from shared libs on darwin implemented
2004-03-02 17:32:12 +00:00
olle
4fecc1a56f * big transformation of Tai_[const_]Symbol.Create[data]name* 2004-03-02 00:36:32 +00:00
peter
356b3378e8 * tai_const.create_ptr added 2004-02-26 16:16:38 +00:00
daniel
42f9b1b0e2 * Removed not very usefull nextglobal & previousglobal fields from
Tstoreddef, saving 78 kb of memory
2004-02-06 22:37:00 +00:00
daniel
d735071838 * Rtti generation moved to ncgutil
* Assmtai usage of symsym removed
  * operator overloading cleanup up
2004-02-04 22:15:15 +00:00
peter
a8b90d3014 use local string of 8 chars 2004-01-28 16:48:24 +00:00
Jonas Maebe
7f911c2f4a * Never generate a "main" symbol for PASCALMAIN for Darwin and classic
Mac OS, they use a C-main in their system unit
2004-01-04 21:08:09 +00:00
peter
83abfdc39d * check unit name when expected unitname > 8 chars 2003-12-12 19:42:21 +00:00
peter
fa52c0e3a0 * don't allow duplicate uses
* fix wrong circular dependency
2003-12-08 22:33:43 +00:00
florian
ea754b9a49 * fixed several pi_do_call problems 2003-11-29 20:13:25 +00:00
peter
cac39ccfd4 * renamed mangeldname_prefix to make_mangledname and made it more
generic
  * make_mangledname is now also used for internal threadvar/resstring
    lists
  * Add P$ in front of program modulename to prevent duplicated symbols
    at assembler level, because the main program can have the same name
    as a unit, see webtbs/tw1251b
2003-10-29 19:48:50 +00:00
peter
b327c20b12 * cleanup of the entry and exit code insertion 2003-10-24 17:40:23 +00:00
peter
fcabdbbf35 * fixed unitsym-globalsymtable relation so the uses of a unit
is counted correctly
2003-10-22 15:22:33 +00:00
peter
276688dbb4 * fixed memleak for initfinalcode
* exit from generatecode when there are already errors
2003-10-21 15:14:33 +00:00
peter
70fe77ca7c * procinfo unit contains tprocinfo
* cginfo renamed to cgbase
  * moved cgmessage to verbose
  * fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
michael
953269fcff + Patch from Wiktor Sywula for watcom support 2003-09-30 08:39:50 +00:00
peter
ddc50a91ca * add missing release of main_proc 2003-09-23 18:03:08 +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
daniel
49e539ac8d * Adding register allocation order 2003-09-09 20:59:27 +00:00
peter
05a15df3c2 * use register with least interferences in spillregister 2003-09-09 15:55:44 +00:00
peter
b9d09a4e5c * preparations for different default calling conventions
* various RA fixes
2003-09-07 22:09:34 +00:00
florian
22f1ff8da4 * merged Wiktor's Watcom patches in 1.1 2003-09-05 17:41:12 +00:00
peter
90782badfe * reload flagged units when interface is loaded 2003-08-23 22:29:24 +00:00
peter
8cf0c122f4 * remove convert_registers 2003-08-21 14:47:41 +00:00
peter
d113495cf1 * fixed stackalloc to not allocate localst.datasize twice
* order of stackalloc code fixed for implicit init/final
2003-08-20 17:48:49 +00:00
daniel
ebb1f3a361 * New register coding now mandatory, some more convert_registers calls
removed.
2003-08-20 09:07:00 +00:00
Jonas Maebe
177d57f22c * split en_exit_code into a part that may allocate a register and a part
that doesn't, so the former can be done before the register colouring
    has been performed
2003-07-23 11:04:15 +00:00
peter
32d076480b * framepointer fixes for sparc
* parent framepointer code more generic
2003-07-06 17:58:22 +00:00
peter
0dceec9a64 * current_procdef removed, use current_procinfo.procdef instead 2003-06-13 21:19:30 +00:00
peter
77d641fa2a * init/final of procedure data splitted from genentrycode
* use asmnode getposition to insert final at the correct position
    als for the implicit try...finally
2003-06-09 12:23:29 +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
mazen
af653c3dd7 - removed unneeded ifdefs
- removed unneeded cases for sparc and x86_64
2003-06-03 20:21:45 +00:00
daniel
41e0bc4cec * Register allocator finished 2003-06-03 13:01:59 +00:00
peter
047a066711 * procinlinenode removed
* aktexit2label removed, fast exit removed
  + tcallnode.inlined_pass_2 added
2003-05-26 21:17:17 +00:00
peter
aaf6114364 * moved Comment calls to messge file 2003-05-25 10:27:12 +00:00
peter
345228fd29 * defer codegeneration for nested procedures 2003-05-22 21:31:35 +00:00
peter
92ee1804b6 * removed selfpointer_offset, vmtpointer_offset
* tvarsym.adjusted_address
  * address in localsymtable is now in the real direction
  * removed some obsolete globals
2003-05-15 18:58:53 +00:00
florian
76f18e2fc9 * fixed implicit init/final code for units, stack frame was wrong for ppc 2003-05-11 19:31:28 +00:00
peter
dfd469b7a3 * fix stabs generation for implicit initfinal 2003-04-28 21:19:02 +00:00
peter
60978ba89c * aktprocdef renamed to current_procdef
* procinfo renamed to current_procinfo
  * procinfo will now be stored in current_module so it can be
    cleaned up properly
  * gen_main_procsym changed to create_main_proc and release_main_proc
    to also generate a tprocinfo structure
  * fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
7f14891d66 * aktprocdef cleanup, aktprocdef is now always nil when parsing
a new procdef declaration
  * aktprocsym removed
  * lexlevel removed, use symtable.symtablelevel instead
  * implicit init/final code uses the normal genentry/genexit
  * funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
florian
0284016ee9 * fixed several issues with powerpc
+ applied a patch from Jonas for nested function calls (PowerPC only)
  * ...
2003-04-23 12:35:34 +00:00
peter
aca9555704 * Use the original unitname when defining a unitsym 2003-04-12 15:13:03 +00:00
Tomas Hajny
8e7124f9f8 + emx target added 2003-03-23 23:11:17 +00:00
peter
bb15f5641e *** empty log message *** 2003-03-17 22:20:08 +00:00
peter
dab938e084 * fix import linking under linux 2003-03-17 13:36:39 +00:00
daniel
86bcea6ef5 * Code generator converted to new register notation
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
mazen
9ad1d0ffe2 * fixing bug related to errornous program main entry stack frame 2003-02-06 22:36:55 +00:00
peter
2b0e576cbe * tai_const_symbol.createdataname added 2003-01-30 21:46:20 +00:00
Tomas Hajny
23591531b8 * correction from rev. 1.88 put back 2003-01-11 11:19:54 +00:00
daniel
55a161bbbf * Tregister changed into a record 2003-01-08 18:43:56 +00:00
florian
b59b436130 * x86-64 compiles
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
peter
a77c4e01dd * insert unitsym with the name as specified in the uses list 2002-12-29 18:17:23 +00:00
peter
bbf8bddbb4 * unit loading changed to first register units and load them
afterwards. This is needed to support uses xxx in yyy correctly
  * unit dependency check fixed
2002-12-29 14:57:50 +00:00
Tomas Hajny
6fff1b96bd * another (hopefully final ;-) ) fix for not linked import libraries for units with no code 2002-12-27 19:09:33 +00:00
peter
abbbc7443d * Use FixFilename for specified unit sourcefile in uses 2002-12-24 23:32:56 +00:00
peter
cab4c8879f * only compile cs_fp_emulation support when cpufpuemu is defined
* define cpufpuemu for m68k only
2002-12-06 16:56:57 +00:00
carl
edb20100ac + Add loading of softfpu in emulation mode
+ Correct routine call for softfpu
  * Extended type must also be defined even with softfpu
2002-11-30 21:32:24 +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
carl
391b49d410 * major alignment updates 2002-11-09 15:33:26 +00:00
michael
39f16b03ef + Renamed thread unit to systhrds 2002-10-16 06:27:30 +00:00
peter
798289b1f3 * only use init tables for threadvars 2002-10-14 19:42:33 +00:00
peter
6d4fcce014 * Add finalization of typed consts
* Finalization of globals in the main program
2002-10-06 19:41:30 +00:00
peter
a540ff122c * tdicationary.replace added to replace and item in a dictionary. This
is only allowed for the same name
  * varsyms are inserted in symtable before the types are parsed. This
    fixes the long standing "var longint : longint" bug
  - consume_idlist and idstringlist removed. The loops are inserted
    at the callers place and uses the symtable for duplicate id checking
2002-09-09 17:34:14 +00:00
peter
dcd9e0107c * old logs removed and tabs fixed 2002-09-07 15:25:00 +00:00
daniel
b0364566d1 * Make Tprocdef.defs protected 2002-09-03 16:26:26 +00:00
peter
36481b72bb * insert PASCALMAIN in library for Win32 only 2002-09-02 18:46:26 +00:00
florian
5e60724d23 + HEAP* stuff must be generated for Linux/PPC as well
+ direct assembler reader searches now global and static symtables as well
2002-08-31 15:59:30 +00:00
peter
a28f75ed03 * sym.insert_in_data removed
* symtable.insertvardata/insertconstdata added
  * removed insert_in_data call from symtable.insert, it needs to be
    called separatly. This allows to deref the address calculation
  * procedures now calculate the parast addresses after the procedure
    directives are parsed. This fixes the cdecl parast problem
  * push_addr_param has an extra argument that specifies if cdecl is used
    or not
2002-08-25 19:25:18 +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
florian
e313bab4ff * first part of procinfo rewrite 2002-08-17 09:23:33 +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
carl
18b102ce95 + moved target_cpu_string to cpuinfo
* renamed asmmode enum.
  * assembler reader has now less ifdef's
  * move from nppcmem.pas -> ncgmem.pas vec. node.
2002-08-10 14:46:29 +00:00
florian
eb2ca8d10f * rewrote the system handling 2002-07-26 21:15:37 +00:00
florian
479a745096 * first x86-64 patches 2002-07-04 20:43:00 +00:00
peter
4285e99853 * internal linker
* reorganized aasm layer
2002-07-01 18:46:20 +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
4dcd96747e * moved entry and exitcode to ncgutil and cgobj
* foreach gets extra argument for passing local data to the
    iterator function
  * -CR checks also class typecasts at runtime by changing them
    into as
  * fixed compiler to cycle with the -CR option
  * fixed stabs with elf writer, finally the global variables can
    be watched
  * removed a lot of routines from cga unit and replaced them by
    calls to cgobj
  * u32bit-s32bit updates for and,or,xor nodes. When one element is
    u32bit then the other is typecasted also to u32bit without giving
    a rangecheck warning/error.
  * fixed pascal calling method with reversing also the high tree in
    the parast, detected by tcalcst3 test
2002-05-12 16:53:04 +00:00
carl
682c2289fa + added more patches from Mazen for SPARC port 2002-05-06 19:54:50 +00:00
carl
87aa88e9b7 + generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants
+ move some cpu stuff to other units
- remove unused constents
* fix stacksize for some targets
* fix generic size problems which depend now on EXTEND_SIZE constant
2002-04-20 21:32:23 +00:00
peter
70ff711f73 * mangledname rewrite, tprocdef.mangledname is now created dynamicly
in most cases and not written to the ppu
  * add mangeledname_prefix() routine to generate the prefix of
    manglednames depending on the current procedure, object and module
  * removed static procprefix since the mangledname is now build only
    on demand from tprocdef.mangledname
2002-04-19 15:46:01 +00:00
carl
37091f14da + align code section and data section according to alignment rules 2002-04-14 16:53:10 +00:00
carl
c8b3a5b3db + generic stack checking 2002-04-07 17:58:38 +00:00
peter
5e7a1e3729 * removed unused units
* use tlocation.size in cg.a_*loc*() routines
2002-04-04 19:05:54 +00:00
carl
0ee2ac7451 + added wdosx support (patch from Pavel) 2002-04-04 18:30:22 +00:00
peter
5b242f7741 * tlocation,treference update
* LOC_CONSTANT added for better constant handling
  * secondadd splitted in multiple routines
  * location_force_reg added for loading a location to a register
    of a specified size
  * secondassignment parses now first the right and then the left node
    (this is compatible with Kylix). This saves a lot of push/pop especially
    with string operations
  * adapted some routines to use the new cg methods
2002-04-02 17:11:27 +00:00
armin
1179c13288 addToLocalThreadvarList used '_'+name instead of mangledname to find asm symbol 2002-04-01 13:43:32 +00:00
armin
6b6df5ee46 + allow exports for netware 2002-03-29 17:19:50 +00:00
armin
0de84898a3 + forgot to delete a debug writeln 2002-03-29 09:00:56 +00:00
armin
ed209a3961 + initialize threadvars defined local in units 2002-03-28 16:07:52 +00:00
peter
fd2ad837e2 * implicit result variable generation for assembler routines
* removed m_tp modeswitch, use m_tp7 or not(m_fpc) instead
2002-01-24 18:25:48 +00:00
carl
bc558402fb + Stack checking for solaris 2001-12-09 03:34:58 +00:00
peter
887f6ba34c * removed obsolete chainprocsym and test_procsym code 2001-11-02 23:16:50 +00:00
peter
d2e1952377 * procsym definition rewrite 2001-11-02 22:58:00 +00:00
michael
f959a590fe * Fixes win32 linking problems with import libraries
* LINKLIB Libraries are now looked for using C file extensions
* get_exepath fix
2001-09-18 11:30:47 +00:00
michael
6f56bc2312 + Committed patch from peter 2001-09-13 14:47:19 +00:00
florian
9746f4c2d6 * some cg reorganisation
* some PPC updates
2001-08-26 13:35:06 +00:00