Commit Graph

123 Commits

Author SHA1 Message Date
Jonas Maebe
d0d07dc3bf * naturally align threadvar lists/tables
o required for (future) Darwin arm64e target, and a good idea elsewhere too
     (on constrained targets, it won't make a difference because the alignment
     of pointers won't be > sizeof(longint))

git-svn-id: trunk@47115 -
2020-10-15 20:29:32 +00:00
florian
637976e83f * patch by Marģers to unify internal error numbers, resolves #37888
git-svn-id: trunk@47103 -
2020-10-13 19:59:01 +00:00
florian
f8c1df0852 * ISO mode: handle typed files as text files regarding naming/program parameters, resolves #37415
git-svn-id: trunk@46865 -
2020-09-14 20:16:08 +00:00
Jonas Maebe
e7d1a77f9a * rename the ARM/AArch64-Darwin targets to ARM/AArch64-iOS
* rename the m68k/PowerPC-MacOS targets to m68k/PowerPC-MacOSClassic
  * repurpose the AArch64/Darwin target for AArch64/macOS
   o make AArch64-Darwin default target for a hosted AArch64-Darwin compiler

git-svn-id: trunk@45758 -
2020-07-10 21:52:24 +00:00
svenbarth
921e73ab0c + add compiler support for the Z80 MSX-DOS target
git-svn-id: trunk@45596 -
2020-06-06 17:16:20 +00:00
nickysn
3f95fa50ef * use const_align(sizeof(pint)) alignment instead of sizeof(pint) for various
compiler-generated structures, so they don't waste any extra alignment space
  on 8-bit CPUs like the Z80 and the AVR

git-svn-id: trunk@45524 -
2020-05-28 21:08:02 +00:00
nickysn
78c40a6d70 * allow setting the stack size from FPC
git-svn-id: branches/z80@45104 -
2020-04-26 16:04:29 +00:00
nickysn
caecdfd51d + allow setting the heap size for the ZX Spectrum target
git-svn-id: branches/z80@45102 -
2020-04-26 14:58:47 +00:00
florian
391512546e + initial FreeRTOS RTL support, largely based on the Embedded target, limited to Xtensa so far
git-svn-id: trunk@44400 -
2020-03-29 17:13:45 +00:00
Jonas Maebe
e775ecdc43 * cleaned up safecall support: use a hidden localvarsym instead of result
register hacking
   o this also allowed fixing/adding safecall support for LLVM

git-svn-id: trunk@43578 -
2019-11-24 20:23:22 +00:00
florian
3949be6989 * be able to set an AT_* for datablocks
* set AT_TLS if needed

git-svn-id: trunk@43076 -
2019-09-25 21:19:07 +00:00
Jonas Maebe
d8903ce6b3 - removed maxcrecordalign parameter/field from recordsymtables, as this value
cannot be modified in the settings (so we can directly use the one from
    current_settings)

git-svn-id: trunk@42447 -
2019-07-14 19:24:32 +00:00
svenbarth
e296b26e9e - remove unit info and related code again as that will be handled similar, but differently with dynamic packages
git-svn-id: trunk@42369 -
2019-07-12 22:05:47 +00:00
svenbarth
84848df18d Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 3/3]
Added FPC_REQUIRES_PROPER_ALIGNMENT to TUnitInfo definition. Added FPC_HAS_EXTENDED_RTTI define.

git-svn-id: trunk@42358 -
2019-07-12 22:04:56 +00:00
svenbarth
b2932393df Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 1/3]
Implemented attributes for class types and properties (based on work by Joost van der Sluis). Added TCustomAttribute - a base class for attributes. Added TUnitInfo record to RTTI. It contains the unit name and unit options (for now only a flag which specifies if the unit contains attributes). Added several tests for attributes.

git-svn-id: trunk@42356 -
2019-07-12 22:04:48 +00:00
Jonas Maebe
3fee990218 * on Mach-O, PECOFF and ELF platforms, write local symbols as hidden/
private_extern (or plain global in case of PECOFF, as the effect is
    the same there): visible across object files, but they become local
    when linked into a binary/library. This enables cross-unit inlining
    of functions accessig implementation-only symbols.

git-svn-id: trunk@42340 -
2019-07-07 21:33:43 +00:00
Jonas Maebe
0cd0e1614b * synchronised with trunk till r42105
git-svn-id: branches/debug_eh@42106 -
2019-05-19 19:24:25 +00:00
Jonas Maebe
aad87820e6 * abstracted registration of library init/fini routines (to be able to add
LLVM support)

git-svn-id: trunk@42104 -
2019-05-19 19:20:47 +00:00
Jonas Maebe
1b6425176b * synchronised with trunk till r42049
git-svn-id: branches/debug_eh@42050 -
2019-05-12 18:44:05 +00:00
Jonas Maebe
281b3ad276 * fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit

git-svn-id: trunk@42046 -
2019-05-12 14:29:03 +00:00
Jonas Maebe
7dbbce157f * fixed Objective-C metadata generation for LLVM
git-svn-id: branches/debug_eh@41980 -
2019-05-02 19:45:34 +00:00
Jonas Maebe
a7bd37d17a * synchronised with trunk till r40776
git-svn-id: branches/debug_eh@41867 -
2019-04-13 15:16:09 +00:00
Jonas Maebe
0b61b5d4cf * added extra header to ppu inside a subsection, so we won't run into
trouble when the ppu version hits 255
  * also moved several ppu flags to a set inside that section

git-svn-id: trunk@41846 -
2019-04-06 21:28:43 +00:00
Jonas Maebe
c7d701d117 * synchronised with trunk till r40038
git-svn-id: branches/debug_eh@40643 -
2018-12-25 15:38:57 +00:00
Jonas Maebe
f754978540 * handle constructor function results that have been migrated to the
parentfpstruct the same as regular function results (see r32687)

git-svn-id: trunk@40641 -
2018-12-25 15:36:24 +00:00
Jonas Maebe
68ce5dc91f * register static symbols references from assembly code as "used" so that LLVM won't
remove them if there are no references from regular code

git-svn-id: branches/debug_eh@40432 -
2018-12-01 20:30:27 +00:00
Jonas Maebe
63847f1948 * disable explicitly calling class constructors on the JVM platform, as that
is forbidden there

git-svn-id: trunk@40386 -
2018-11-28 19:23:34 +00:00
Jonas Maebe
cb7730a423 * fixed execution order of implicit finalization and class destructors: first
the latter, then the former

git-svn-id: trunk@38716 -
2018-04-08 15:41:00 +00:00
pierre
34c0898d97 Fix m68k-amiga linking failure for native compiler, due conflict between odd length string and .balignw directive
git-svn-id: trunk@38351 -
2018-02-26 13:06:37 +00:00
Jonas Maebe
c0b0fa9c0b * change the type of the -gt uninitialised result of ansistring functions to
rawbytestring so the compiler does not try to convert it to the declared
    string type of the function result, as this may not be available
    (mantis #32510)

git-svn-id: trunk@37889 -
2018-01-01 18:04:13 +00:00
svenbarth
a301bf75ea * ngenutil.tnodeutils.sym_maybe_initialize: don't use "is" operator, but corresponding is_* functions
git-svn-id: trunk@36617 -
2017-06-29 18:51:35 +00:00
Károly Balogh
dd01b7ca8b fix a typo to hopefully fix the build
git-svn-id: trunk@36312 -
2017-05-23 21:13:00 +00:00
svenbarth
7c9aeda656 * rework InsertInitFinalTable a bit more so that the list of init/fini entries does not need to be generated twice for AVR
git-svn-id: trunk@36310 -
2017-05-23 19:58:39 +00:00
svenbarth
d311881b34 * extract calculation of unit init/fini entries into separate method get_init_final_list() so that it can be used by the AVR code as well
git-svn-id: trunk@36257 -
2017-05-19 16:12:22 +00:00
nickysn
efc5e339d0 * use an enum instead of integer constants to represent inline numbers
* compinnr.inc include file converted to a unit
* inline number field size stored in ppu increased from byte to longint
* inlines in the parse tree (when written with the -vp option) now printed with
  their enum name, instead of number

git-svn-id: trunk@36174 -
2017-05-10 14:41:43 +00:00
florian
b1dff29cbf * removed unused units
git-svn-id: trunk@36165 -
2017-05-09 19:53:14 +00:00
Jonas Maebe
cadf177a93 * fixed bugs in r33737: that revision was supposed to only move
code from one unit to another, but in splitting some methods
    I made a couple of mistakes :/ (causing global variables to be
    initialised three times)

git-svn-id: trunk@35461 -
2017-02-20 22:15:34 +00:00
maciej-izak
9441fb3968 * ngenutil.pas, tnodeutils.sym_maybe_initialize: Ensure that management operator (Initialize) is used also for local variables.
git-svn-id: trunk@35443 -
2017-02-18 19:19:46 +00:00
svenbarth
1a6a8b7c9f + introduce a new potype for the main stub of a package library (which on Windows is simply a DLLMain returning True)
git-svn-id: trunk@35371 -
2017-01-29 22:37:40 +00:00
florian
29a2c433f7 * -Sr option for iso mode: in case no command line parameter is passed, the file name for program parameters is derived from their variable name
git-svn-id: trunk@35257 -
2017-01-07 14:50:58 +00:00
Jonas Maebe
472b5228fe * changed ncgutil.has_alias_name(pd,s) to a method of tprocdef
git-svn-id: trunk@35085 -
2016-12-09 13:39:28 +00:00
nickysn
d28963f434 * emit the heap and stack sizes via Tai_const.Create_int_dataptr, instead of
using create_pint

git-svn-id: trunk@34646 -
2016-10-07 20:58:50 +00:00
nickysn
bacea005fc * emit a sizeint, not a ptruint for TableCount in tnodeutils.InsertRuntimeInitsTablesTable as well
git-svn-id: trunk@34643 -
2016-10-07 17:21:52 +00:00
nickysn
16dfb839d8 * emit a sizeint, not a ptruint for TableCount in tnodeutils.InsertResourceTablesTable
git-svn-id: trunk@34638 -
2016-10-07 13:49:48 +00:00
nickysn
f6356e03e4 * use aluuinttype, instead of sinttype, when emitting TableCount and InitCount
for the InitFinalTable, because they are declared as ALUUInt in the RTL and
  sinttype doesn't always correspond to the ALU size (it differs on platforms
  with the combination of a 64-bit ALU and 32-bit address space)

git-svn-id: trunk@34629 -
2016-10-04 22:57:06 +00:00
Jonas Maebe
473cec9d85 * converted tnodeutils.InsertRuntimeInits() to the high level typed const
builder

git-svn-id: trunk@34443 -
2016-09-07 16:09:06 +00:00
yury
e3d9dbbeef * Removed unused vars.
git-svn-id: trunk@34404 -
2016-09-01 19:55:45 +00:00
Jonas Maebe
18d728eb72 * ensure that local variables and parameters moved to a parentfpstruct aren't
initialised and finalised twice (once at their original location, and once
    when the parentfpstruct is initialised/finalised)

git-svn-id: trunk@34374 -
2016-08-24 16:41:07 +00:00
Jonas Maebe
a31ca58593 * factored out the loading the function result from the parentfpstruct into
its original location so it can be reused elsewhere too

git-svn-id: trunk@34304 -
2016-08-13 14:47:47 +00:00
svenbarth
6b7f55cc77 * import the class con-/destructor symbol into the *current* unit not into the unit the symbol comes from
git-svn-id: trunk@34251 -
2016-08-05 13:48:27 +00:00