Commit Graph

12206 Commits

Author SHA1 Message Date
pierre
0be6018ffc Allow compilation of win32 RTL with -gc option, by adding explicit heaptrc dependency to all units
git-svn-id: trunk@34263 -
2016-08-10 09:48:19 +00:00
pierre
5884fbc8b0 Move {$checkpointer off} before interface and relax windows data bss check to also accept sections in between like .rdata
git-svn-id: trunk@34262 -
2016-08-10 09:46:37 +00:00
pierre
0cb0bc3371 Use symbols instead of constants in code:
+ AllocateSig and ReleaseSig for theap_mem_info.sig field.
  + CheckSig for theap_extra_info.check field.
  + CRC32Seed and CRC32Pattern in CRC related functions.

  * if sig is equal ReleaseSig, always assume already released (even if usecrc ius true).

git-svn-id: trunk@34260 -
2016-08-10 08:36:38 +00:00
pierre
b2467eae3b * Pass exitcode correctly down to __libc_start_main in _haltproc
git-svn-id: trunk@34258 -
2016-08-09 06:50:54 +00:00
Jonas Maebe
de97285393 * fixed conformsToProtocol() declaration (the protocol is not a changeable
parameter, and it's already declared as a pointer type)

git-svn-id: trunk@34246 -
2016-08-03 14:35:32 +00:00
svenbarth
7f5352280d Fix si_g.inc for x86_64-linux:
* it's 'atexit' and not '__libc_atexit'
* initialstkptr is a global symbol so it needs to be loaded using GOTPCREL

git-svn-id: trunk@34235 -
2016-07-29 22:03:54 +00:00
svenbarth
61551cbb0f * move properties and functions of TVMT to the end of the record, so that one only needs to adjust the total entry count TVMTBuilder.generate_vmt_def()
git-svn-id: trunk@34223 -
2016-07-29 13:54:36 +00:00
yury
e3ebaa6e6a * Remove trailing #13#10 in the result of SysErrorMessage() on Windows and minor optimization. It is Delphi compatible.
git-svn-id: trunk@34220 -
2016-07-29 10:23:12 +00:00
yury
980c4741ac * Fixed conversion from PWideChar to ansistring.
+ test. 

git-svn-id: trunk@34219 -
2016-07-29 09:43:05 +00:00
olivier
49132b57dd - remove sysheap.inc override from the Haiku port. mmap is now fully supported under Haiku for a long time. sbrk is also under work and the current implementation limit the available memory.
git-svn-id: trunk@34200 -
2016-07-24 18:47:33 +00:00
pierre
b9e6938519 Correct behavior: if VMT becomes NIL, RTE 219 must be generated as this happens if EXPVMT is not an ancestor of starting VMT
git-svn-id: trunk@34197 -
2016-07-24 06:13:46 +00:00
svenbarth
59303c5113 Fix -CR after the recent VMT changes.
* tobjectvmt: parent needs to be ppointer for 3.1.1
* fpc_check_object_ext: correctly determine parent VMT

git-svn-id: trunk@34194 -
2016-07-23 16:42:15 +00:00
svenbarth
947c876ba3 * use the indirect start and end symbols for the resource string table (affects both the compiler and the RTL)
git-svn-id: trunk@34185 -
2016-07-22 16:01:39 +00:00
svenbarth
d9d2789375 * fix DynArrayDim() and DynArrayIndex() after the RTTI changes in r33944
git-svn-id: trunk@34180 -
2016-07-22 13:48:12 +00:00
svenbarth
685f820622 * switch class'/object's parent reference in the VMT to an indirect reference
(this also requires the adjustment of a test)

git-svn-id: trunk@34172 -
2016-07-22 12:53:51 +00:00
Jeppe Johansen
6a1c1e4f29 Added support for NRF52832 controllers.
git-svn-id: trunk@34170 -
2016-07-22 10:01:10 +00:00
pierre
7ff12e144f Fix IgnoreCase error in CompareUnicodeString function
git-svn-id: trunk@34167 -
2016-07-22 05:29:35 +00:00
pierre
e05d417183 Change rules to be able to cross-compile on win32, using old GNU make 3.82
git-svn-id: trunk@34166 -
2016-07-21 14:20:56 +00:00
pierre
a0bc21b072 Try to fix unicode support for go32v2 target.
rtl/go32v2/Makefile.fpc: Add character, fpwidestring, unicodedata nd unicodenumtable
                             to list of units.
                             Add rules for these four units.
    rtl/go32v2/Makefile: Regenerated
    packages/rtl-unicode/fpmake.pp: Add go32v2 to CollationOSes set, to also compile unicodeducet unit.

git-svn-id: trunk@34133 -
2016-07-15 10:39:24 +00:00
marco
bc9bcdf1f8 * patch to increase ino and time_t to 64-bit, mantis #30314
git-svn-id: trunk@34091 -
2016-07-09 19:57:22 +00:00
svenbarth
7a5bac9cd3 Rework the interface table of VMTs to get rid of FPC_EMPTYINTF.
Previously we had the following approach:
- classes that implemented interfaces had an interface table
- classes that didn't implement an interface, but inherited from a class that did had a Nil entry
- classes that didn't implement any interface (including their parents) had a reference to FPC_EMPTYINTF (this was to optimize lookups)

Now the approach is as follows:
- classes that implement an interface or have a parent that implements an interface have an interface table; if the class itself doesn't implement an interface then the count will be 0
- classes that don't implement an interface at all (neither them nor their parents) have a Nil interface table

This way FPC_EMPTYINTF can be removed without sacrificing at least the optimization for classes without any interface. For classes that have parents with interfaces there will be a small speed penalty due to an additional lookup for the counter.

git-svn-id: trunk@34087 -
2016-07-08 15:34:55 +00:00
pierre
47f01eaa52 Fix CRC calculation for i8086 compact memory model
git-svn-id: trunk@34070 -
2016-07-05 22:06:18 +00:00
Károly Balogh
0e54f616b5 merged i386 int64 mod helper fix by Max Nazhalov (Mantis 30240)
git-svn-id: trunk@34059 -
2016-07-03 21:20:07 +00:00
svenbarth
72be688a8c A unit's threadvar list needs to be indirectly referenced by the THREADVARLIST as well.
compiler/ngenutil.pas, tnodeutils:
  * InsertThreadvarTablesTable: reference a unit's (and the program's) threadvar table using a indirect symbol
  * InsertThreadvars: generate an indirect symbol for the threadvar table
rtl/inc/threadvr.inc:
  * TltvInitTablesTable: add an additional indirection for the tables field

git-svn-id: trunk@34043 -
2016-07-01 14:18:28 +00:00
marco
c335a3ea6e * change TDIR fields to longint. Should have been abandonned long ago.
git-svn-id: trunk@34041 -
2016-06-30 18:51:05 +00:00
marco
5038b944f1 * fix for bug #30331
git-svn-id: trunk@34039 -
2016-06-30 18:45:33 +00:00
pierre
7129de8a6e Fix compilation with -dSYSTEMDEBUG after heap changes (removal of 'tiny' in memory functions in tiny heap)
git-svn-id: trunk@34019 -
2016-06-25 08:16:52 +00:00
pierre
7efce7f121 Rewrite CommandLine creation in Dos.Exec function to avoid problems when ComLine is 255 characters long
git-svn-id: trunk@34015 -
2016-06-21 10:13:41 +00:00
nickysn
5306ee552b * regenerated makefiles with latest fpcmake
git-svn-id: trunk@34008 -
2016-06-18 01:00:45 +00:00
nickysn
c639bf3900 * fixed bug, caused by an incorrect order of ifdefs, which caused the system
unit of the embedded target to not compile on CPUs, not using the softfpu
  implementation

git-svn-id: trunk@34005 -
2016-06-18 00:22:20 +00:00
nickysn
73d0dae569 + added various things, needed for i8086 compilation to the system unit of the
embedded target

git-svn-id: trunk@34003 -
2016-06-17 22:31:38 +00:00
nickysn
a58dd988a4 * regenerate makefiles after the fpcmake update
git-svn-id: trunk@34002 -
2016-06-17 22:05:59 +00:00
svenbarth
dfe00a8ed1 Fix for Mantis #30279. Apply patch by Max Nazhalov to fix compilation of i386-wince and arm-wince (the only modification is that the no longer used AnsiString variants of ExecuteProcess are removed)
git-svn-id: trunk@33996 -
2016-06-16 17:03:17 +00:00
svenbarth
248490bbf1 * declare fpc_zeromem and fpc_fillmem as inline to avoid one call
git-svn-id: trunk@33994 -
2016-06-15 20:16:16 +00:00
Jonas Maebe
11c90a73b1 - removed "Set8087CW(Default8087CW)" call from SysEntry:
o it is already performed in fpc_cpucodeinit
   o in libraries, fpc_cpucodeinit first sets Default8087CW to the current x87
     control word to avoid them enabling fpu exceptions if the host platform
     had first disabled them

git-svn-id: trunk@33993 -
2016-06-15 18:32:07 +00:00
svenbarth
638339812e i386-win32 also has indirect entry information, so enable this in the compiler and disable the corresponding define in system.pp
git-svn-id: trunk@33985 -
2016-06-14 12:25:21 +00:00
svenbarth
25c4a5c986 Fix usage of external resources on systems besides Darwin by moving the variable referencing FPC_RESLOCATION fon non-indirect entry information systems from system.inc back into intres.inc
git-svn-id: trunk@33984 -
2016-06-14 12:18:36 +00:00
pierre
a72434e93a Trial to clarify heap for i8086 issues:
- MSDOS heap in tinyheap.inc modified to use usual
  SysGetMem and similar names.
  - Use HAS_MEMORYMANAGER (used previously in wince source code,
  to specify that a memory manager is defined elsewhere than inside
  heap.inc include file.
  - Use
  - Remove TinyHeapMemoryManager Structure variable completely

  heaptrc.pp: remove unneeded macro code after name changes of tinyheap.inc

  msdos/system.pp now only defines HAS_MEMORYMANAGER macro
  win16/system.pp defines HAS_MEMORYMANAGER and FPC_NO_DEFAULT_HEAP
  as it still uses a different memory manager.
  __stkbottom variable added for win16 system.pp as it is required
  by i8086 specific stack check code.

git-svn-id: trunk@33983 -
2016-06-13 22:26:03 +00:00
svenbarth
7f079ff58a Fix compilation of Win64 and WinCE as those don't have indirect entry information yet and thus they'd require FPC_RESLOCATION which is not available for those platforms... Fixes Mantis #30264.
git-svn-id: trunk@33982 -
2016-06-13 07:55:45 +00:00
svenbarth
266eccde9f Merge revision(s) 32484 from branches/svenbarth/packages
Move PascalMain external from the si_*.inc files to a new include file si_impl.inc that's included in the implementation sections of the si_*.pp units

git-svn-id: trunk@33970 -
2016-06-12 16:49:56 +00:00
svenbarth
f8ff8eca4d Fix non-Windows resources since me and merging without TortoiseSVN don't go along that well :/
rtl/inc/system.inc:
  + ResHeader variable that provides the public _FPC_ResLocation symbol used by intres.inc; this variable will always be available and without indirect entry information it will simply hook up to FPC_RESLOCATION itself
  * SetupEntryInformation: setup FPCResLocation
rtl/inc/intres.inc:
  * no need to cater for indirect entry or not anymore

git-svn-id: trunk@33964 -
2016-06-12 10:57:15 +00:00
Jonas Maebe
728efedcf3 * fixed sysinit unit dependencies
git-svn-id: trunk@33955 -
2016-06-12 09:20:46 +00:00
svenbarth
ca07a4f86f Merged revision(s) 32491-32492 from branches/svenbarth/packages:
Adjust non-Windows resources to work with indirect main information as well.

rtl/inc/systemh.inc, TEntryInformation:
  + new cross platform field ResLocation which stores the pointer to the resources
rtl/inc/intres.inc:
  * change the type of ResHeader from PResHdr to PPResHdr (and adjust code that uses it accordingly; Note: the first dereferencing is assumed to be always valid!)
  * adjust declaration of ResHeader depending on whether indirect main information is used or not
rtl/darwin/sysinit.pas & rtl/linux/si_impl.inc:
  * pass the location of the resources through SysInitEntryInformation
rtl/bsd/system.pp & rtl/linux/system.pp:
  + new public variable FPCResLocation which is setup by SysEntry
rtl/win32/sysinit.inc:
  * initialize ResLocation of SysInitEntryInformation as Nil
rtl/win32/system.pp:
  * initialize ResLocation of EntryInformation as Nil
........
For systems that support both internal and external resources (in this case only Darwin ones) we need to generate the FPC_RESLOCATION symbol always, because the SysInit unit is resource type agnostic.

ngenutil.pas, tnodeutils:
  * InsertResourceInfo: generate FPC_RESLOCATION symbol pointing to 0 in case the program is compiled on Darwin with resources set to external ones (-We)

git-svn-id: trunk@33952 -
2016-06-12 09:08:17 +00:00
svenbarth
3f45860cf9 Use constref instead of const when passing TEntryInformation along
git-svn-id: trunk@33951 -
2016-06-11 20:45:47 +00:00
svenbarth
535621faaa Rename FPC_HAS_INDIRECT_MAIN_INFORMATION to FPC_HAS_INDIRECT_ENTRY_INFORMATION which is more logical considering the record's name
git-svn-id: trunk@33950 -
2016-06-11 20:38:22 +00:00
svenbarth
f406867100 Merged revision(s) 31929-31931,32547 from branches/svenbarth/packages:
Switch Mac OS X to indirect entry information.

compiler/systems/t_bsd.pas, TLinkerBSD:
  + implement InitSysInitUnitName
compiler/system.pas:
  * systems_internal_sysinit: add Darwin systems
compiler/hlcgobj.pas, thlcgobj:
  * gen_proc_symbol_end: for Darwin systems don't directly call PascalMain for libraries, but FPC_LIBMAIN instead
rtl/darwin:
  + add sysinit.pas unit which contains the executable and library entry points for Darwin
rtl/darwin/Makefile.fpc:
  * add sysinit unit
rtl/bsd/sysosh.inc:
  + add a Darwin specific TPlatformEntryInformation (could probably be used for all Unix systems...)
rtl/bsd/system.pp:
  * define FPC_HAS_INDIRECT_MAIN_INFORMATION for Darwin systems once we're no longer bootstrapping with 2.6.x
  + add EntryInformation variable (this could maybe moved to system.inc...)
  + add new procedure SysEntry that is called from the entrypoint and which sets up necessary information required by other parts of the RTL
  * the old FPC_SYSTEMMAIN is still in place for bootstrapping
rtl/inc/systemh.inc, TEntryInformation:
  * PascalMain is cdecl on non-Windows systems (ToDo: really?)
rtl/inc/system.inc:
  * initialstklen is provided by the indirect entry information, so no external here
........
Fix bootstrapping.

rtl/darwin/sysinit.pas:
  * enable the code only when no longer bootstrapping with 2.6.x
........
Fix bootstrapping.

rtl/objpas/objpas.pp:
  * define FPC_HAS_INDIRECT_MAIN_INFORMATION for Darwin only while not bootstrapping with 2.6.x
........
rtl/darwin/sysinit.pas:
  * reference PASCALMAIN correctly (I wonder how this even worked previously :/ )

git-svn-id: trunk@33949 -
2016-06-11 20:29:51 +00:00
nickysn
c205cb03c8 * in SysUtils.DecodeDate(), cast the result of trunc() to longint (trunc
normally returns int64 in FPC), before performing any further calculations -
  the result always fits in a longint (the date is range checked against
  MaxDateTime and that is well within longint limits). This generates faster
  code on non 64-bit targets and also fixes i8086 compilation, which previously
  failed on register allocation on this function.

git-svn-id: trunk@33946 -
2016-06-10 19:39:44 +00:00
svenbarth
345d83c3e3 Merge RTTI changes from packages branch (including adjustments that were required due to changes in trunk since then). These changes favor source backwards compatibility in contrast to Delphi compatibility. Binary compatiblity is however drastically broken due to the indirect references that are platform independant!
Merged revision(s) 28239-28289 from branches/svenbarth/packages:
Provide the possiblity to switch between the direct and indirect RTTI symbols.

ncgrtti.pas, TRTTIWriter:
  + get_rtti_label, get_rtti_label_ord2str & get_rtti_label_str2ord: add new "indirect" parameter and pass that along to rtti_mangledname
hlcgobj.pas, thlcgobj:
  * g_incrrefcount, g_initialize, g_finalize, g_array_rtti_helper: for now pass along False to get_rtti_label()
ncgvmt.pas, TVMTWriter:
  * writevmt: for now pass along False to get_rtti_label()
ncgld.pas, tcgrttinode:
  * pass_generate_code: for now pass along False to the get_rtti_label*() methods
........
Provide possibility to select between using a direct and an indirect RTTI reference. This way the references can be changed for selected cases.

ncgrtti, TRTTIWriter:
  * ref_rtti: new "indirect" parameter that's relayed to rtti_mangledname()
  * write_rtti_reference: new "indirect" paramater that's relayed to ref_rtti()
........
Switch properties to use the indirect type information without breaking backwards compatiblity. :)

compiler/ncgrtti.pas, TRTTIWriter:
  * published_properties_write_rtti_data: use the indirect reference, not the direct one
rtl/objpas/typinfo.pp:
  * to allow compilation with both 2.6.x and 2.7.1 and too avoid too many ifdefs at least in the declarations we define a macro TypeInfoPtr which is either PTypeInfo (2.6.x) or PPTypeInfo (2.7.1 and newer)
  * TPropInfo: rename PropType to PropTypeRef and change type to TypeInfoPtr
  + TPropInfo: add a new property PropType which returns a PTypeInfo out of the PropTypeRef depending on the compiler version
........
Switch further simple types (sets, enums, class references, pointers) to indirect type information (again without breaking backwards compatibility).

compiler/ncgrtti.pas, TRTTIWriter.write_rtti_data:
  * enumdef_rtti, setdef_rtti, classrefdef_rtti & pointerdef_rtti: write an indirect RTTI reference

rtl/objpas/typinfo.pp, TTypeData:
  * rename BaseType to BaseTypeRef, CompType to CompTypeRef, InstanceType to InstanceTypeRef and RefType to RefTypeRef and change their type to TypeInfoPtr
  + add properties BaseType, CompType, InstanceType & RefType which return a PTypeInfo out of the corresponding *Ref field depending on the compiler version
........
Switch class and interface parent as well as extended type to indirect type information

compiler/ncgrtti.pas, TRTTIWriter:
  * write_rtti_data.objectdef_rtti.objectdef_rtti_class_full: use indirect reference for class parent and extended type
  * write_rtti_data.objectdef_rtti.objectdef_rtti_interface_full: use indirect reference for interface parent

rtl/objpas/typinfo.pp, TTypeData:
  + add new method DerefTypeInfoPtr which returns Nil if the indirect reference is Nil and otherwise returns the dereferences indirect reference (for 2.6.x the direct reference is returned as is)
  * rename ParentInfo to ParentInfoRef, HelperParent to HelperParentRef, ExtendedInfo to ExtendedInfoRef, IntfParent ot IntfParentRef and RawIntfParent to RawIntfParentRef and change their type to TypeInfoPtr
  + introduce ParentInfo, HelperParent, ExtendedInfo, IntfParent and RawIntfParent properties that return a PTypeInfo and use the new DerefTypeInfoPtr to return the correct type info value
  * change the other newly introduced properties of TTypeData to use DerefTypeInfoPtr as well to be on the safe side
........
Switch record/object fields to indirect type information references.

compiler/ncgrtti.pas, TRTTIWriter.fields_write_rtti_data:
  * use the indirect reference for the object parent type
  * use the indirect reference for the field type

rtl/inc/rtti.inc:
  * TRecordElement: change TypeInfo to PPointer for 2.7.1 and newer
  * RecordRTTI: correctly dereference the element type for 2.7.1 and newer
  * fpc_copy: correctly reference the element type for 2.7.1 and newer
........
Switch static arrays to indirect RTTI reference.

compiler/ncgrtti.pas, TRTTIWriter.write_rtti_data:
  * arraydef_rtti: write the dimension types and the final field type as indirect references

rtl/inc/rtti.inc:
  * TArrayInfo: switch ElInfo to PPointer for 2.7.1+
  * ArrayRTTI & fpc_copy: correctly dereference ElInfo for 2.7.1+
rtl/objpas/typinfo.pp, TArrayTypeData:
  * switch ElType and Dims to PPTypeInfo; no backwards compatibility needed here as TArrayTypeData was added in 2.7.1 only

tests/test/trtti8.pp: fix test
........
Switch dynamic arrays to indirect RTTI references.

compiler/ncgrtti.pas, TRTTIWriter.write_rtti_data.arraydef_rtti:
  * write indirect references for the two element entries

rtl/inc/dynarr.inc:
  * tdynarraytypedata: change elType2 to PPointer for 2.7.1+
  * fpc_dynarray_clear, fpc_dynarray_setlength & fpc_dynarray_copy: correctly dereference elType2 for 2.7.1+
rtl/objpas/typinfo.pp, TTypeData:
  * rename elType and elType2 to elTypeRef and elType2Ref respectively and change type to TypeInfoPtr
  * add properties elType and elType2 which return PTypeInfo by dereferencing elTypeRef and elType2Ref respecively correctly
  * remove a few stray "inline" directives in the implementation
........
Switch procedure parameters and result type to indirect RTTI references.

compiler/ncgrtti.pas, TRTTIWriter.write_rtti_data.procvardef_rtti:
  * write_procedure_param: use indirect RTTI reference
  * write result info for both methods and procvars as indirect RTTI reference
  * write parameters for procvars as indirect RTTI reference

rtl/objpas/typinfo.pp:
  * TProcedureParam: change type of ParamType to PPTypeInfo (no backwards compatiblity needed here; was added for 2.7.1)
  * TProcedureSignature: change type of RseultType to PPTypeInfo (no backwards compatibility needed here; was added for 2.7.1)
  * TTypeData: remark in the comments of tkMethod that ResultTypeRef and ParamTypeRefs are of type PPTypeInfo and not PTypeInfo

tests/test/trtti9.pp: 
  * fix test
........
Remove no longer needed "indirect" parameter for TRTTIWriter methods.

ncgrtti.pas, TRTTIWriter:
  - ref_rtti & write_rtti_reference: remove "indirect" parameter
  * ref_rtti: call rtti_mangledname with "indirect" always set to "true"
  - remove "true" parameter on callsites of write_rtti_reference & ref_rtti
........

git-svn-id: trunk@33944 -
2016-06-10 17:01:51 +00:00
florian
8c5fdc9dc2 * softfpu patch by Max Nazhalov: Small fixes to softfpu.pp complementing r27215
git-svn-id: trunk@33923 -
2016-06-05 21:16:01 +00:00
svenbarth
7523e97d83 Fix compilation of JVM platform after recent changes to Delete() and Insert()
git-svn-id: trunk@33904 -
2016-06-04 10:42:09 +00:00
svenbarth
fd66d70449 innr.inc:
+ add constants for the Delete and Insert intrinsics
compproc.inc:
  * use the new constants instead of magic values to denote the relationship of the compilerprocs to the intrinsics

git-svn-id: trunk@33901 -
2016-06-04 08:58:38 +00:00
Tomas Hajny
293d9be6b6 * fix compilation after UnicodeString ExecuteProcess related changes
git-svn-id: trunk@33899 -
2016-06-03 23:57:51 +00:00
svenbarth
a2c9c75e97 Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures.
Since overloading compilerprocs does not work each procedure got its own unique name, but they are using the new compilerproc extension to map them to the Insert and Delete symbol so that error messages can be shown with the respective name for the procedure declarations instead of fpc_shortstr_delete for example.

git-svn-id: trunk@33895 -
2016-06-03 21:25:49 +00:00
Tomas Hajny
c1afb4b63b * avoid FindFirst failing due to Attribute parameter bigger than $FF
git-svn-id: trunk@33894 -
2016-06-03 21:16:35 +00:00
marco
869d24f7d1 * spelling mistakes fpc repo part, mantis #30233
git-svn-id: trunk@33882 -
2016-06-02 20:01:09 +00:00
svenbarth
dc5d9c7001 rtl/objpas/classes/classes.inc, TThread:
* Synchronize: fill the syncentry using the correct size

git-svn-id: trunk@33879 -
2016-06-02 18:48:41 +00:00
svenbarth
d5cc59c22e Avoid the creation of a TExternalThread instance for Synchronize() and Queue() (Delphi does the same).
Note: the Sender parameter of WakeMainThread will be Nil for such threads. This is Delphi compatible.

rtl/objpas/classes/classesh.inc, TThread:
  + TThreadQueueEntry: new field ThreadID so that entries with Thread = Nil can be removed
rtl/objpas/classes/classes.inc, TThread:
  * InitSynchronizeEvent: setup ThreadID field
  * Synchronize: use a local TThreadQueueEntry if no TThread instance was passed in
  * Queue: setup ThreadID
  * RemoveQueueEvents: also check for ThreadID when trying to find the current thread

git-svn-id: trunk@33863 -
2016-05-31 20:01:52 +00:00
michael
9f9abd525a * Patch from Luiz Americo to add const to some string params (Bug ID 30197)
git-svn-id: trunk@33829 -
2016-05-27 19:11:48 +00:00
Károly Balogh
391a79aebf m68k: a bunch of tweaks and improvements to assembly functions. higher move() speed on coldfire, disabled fillword implementation on CPUs not supporting unaligned access
git-svn-id: trunk@33805 -
2016-05-25 22:44:18 +00:00
nickysn
c78f406d99 + implemented proper stack checking for the i8086
git-svn-id: trunk@33787 -
2016-05-24 23:57:47 +00:00
Károly Balogh
963c4aa1f8 * fixed the sign handling of i386 fpc_div_int64 helper (Mantis 30166)
git-svn-id: trunk@33753 -
2016-05-22 16:57:30 +00:00
nickysn
bffe9480f4 + added the winapi functions, structures and constants for raw keyboard and mouse input
git-svn-id: trunk@33746 -
2016-05-22 01:59:27 +00:00
Jonas Maebe
60d75fa97e * fixed (harmless) range error in 64 bit BSD-based RTLs
git-svn-id: trunk@33736 -
2016-05-21 14:48:32 +00:00
Jonas Maebe
9d2bba1917 * create a separate type and def for the LLVM "i1" type, because reusing
pasbool8type for this results in too much trouble (we mustn't use i1
    for parameters, because then LLVM will try to apply the ABI convention
    for passing "1 bit" values, or in records because then this may
    result in unwanted bitpacking). Downside: the new LLVMBool1 type is
    also exposed in the system unit, because we need it to define LLVM
    intrinsics...

git-svn-id: trunk@33726 -
2016-05-20 20:51:44 +00:00
svenbarth
e15816e35b Fix for Mantis #30110. Speed up finalization of array of primitive/simple records (aka records not containing managed types).
rtl/inc/dynarr.inc:
  + add elType field to tdynarraytypedata (this tells us whether a finalization is needed)
  * fpc_dynarray_clear: don't finalize the array elements if elType is Nil
  * fpc_dynarray_setlength: only call int_addref() and int_finalizearray() if elType is set
  * fpc_dynarray_copy: don't check for tkManagedTypes, but instead check whether elType is assigned

git-svn-id: trunk@33719 -
2016-05-20 16:04:14 +00:00
pierre
7fd805c5d8 * Fix compilation for win16 OS with -dSYSTEMDEBUG
git-svn-id: trunk@33718 -
2016-05-20 15:58:27 +00:00
pierre
e4a9e0ceea * Fix compilation for msdos OS with -dSYSTEMDEBUG
git-svn-id: trunk@33717 -
2016-05-20 15:46:46 +00:00
pierre
14359cffec Fix system compilation for win16 OS by setting FPC_NO_DEFAULT_MEMORYMANAGER and adding dummy FinalizeHeap
git-svn-id: trunk@33716 -
2016-05-20 15:20:46 +00:00
pierre
06b0bb56c1 Disable SysFreeMem call for argv for win16 OS, which does not use SysFreeMem
git-svn-id: trunk@33715 -
2016-05-20 15:19:18 +00:00
svenbarth
e522affbf6 Regenerate NativeNT Makefile after recent Makefile.fpc changes in r33711, r33712 and r33713
git-svn-id: trunk@33714 -
2016-05-20 13:22:39 +00:00
svenbarth
8a42ef764d Fix compilation of NativeNT target, patch by Karl-Michael Schindler. Fixes Mantis #30149.
rtl/nativent/Makefile.fpc:
  + add rule for ISO Extended Pascal unit
rtl/nativent/sysutils.pp: 
  * add dummy implementations of the RawByteString and UnicodeString variants of ExecuteProcess
packages/fcl-pdf/fpmake.pp:
  * don't compile fcl-pdf for NativeNT

git-svn-id: trunk@33713 -
2016-05-20 13:21:08 +00:00
svenbarth
d3b936073a + add rule for the ISO Pascal unit
git-svn-id: trunk@33712 -
2016-05-20 13:18:21 +00:00
svenbarth
8927b8f6b1 * use the dummy DOS unit from the Embedded target so that we can use it for the ExtPas unit
git-svn-id: trunk@33711 -
2016-05-20 13:17:46 +00:00
michael
253589b0b6 * Fix compilation for msdos
git-svn-id: trunk@33704 -
2016-05-17 18:41:33 +00:00
michael
a5d38c7ba6 * Added TStringBuilder
git-svn-id: trunk@33695 -
2016-05-16 15:23:40 +00:00
florian
6f9d74b83e + define FPC_NO_DEFAULT_HEAP for the embedded target as well
git-svn-id: trunk@33694 -
2016-05-16 13:26:39 +00:00
pierre
fe6feb741b Use macros for msdos OS to translate SysGetMem into SysTinyGetMem and similar, fixes several RTE 203 isssues for msdos target OS
git-svn-id: trunk@33682 -
2016-05-11 14:38:46 +00:00
pierre
91595447c6 Add SysTinyGetHeapStatus and SysTinyGetFPCHeapStatus functions
git-svn-id: trunk@33681 -
2016-05-11 14:37:38 +00:00
pierre
4af209ac50 Add SysTinyGetMem and similar to interface to allow use in heaptrc unit
git-svn-id: trunk@33680 -
2016-05-11 14:36:19 +00:00
pierre
cbb29a7e5d Use FPC_NO_DEFAULT_HEAP to turn out RelocateHeap or MemoryManager.InitThread functions, used for msdos OS
git-svn-id: trunk@33679 -
2016-05-11 14:34:55 +00:00
pierre
effa0154c5 Use FPC_NO_DEFAULT_MEMORYMANAGER define to guard SysGetmem/SysFreemem functions, also used for msdos OS
git-svn-id: trunk@33678 -
2016-05-11 14:33:00 +00:00
pierre
c8ad916710 Use FPC_NO_DEFAULT_MEMORYMANAGER define to guard SysGetmem/SysFreemem function definitions, also used for msdos OS
git-svn-id: trunk@33677 -
2016-05-11 14:32:02 +00:00
pierre
01ea38a627 Implement basic SysOSAlloc using MSDOS Interrrupt 0x21, AH=0x48 function
git-svn-id: trunk@33676 -
2016-05-11 14:29:11 +00:00
pierre
2a3b5bec86 Add new FPC_NO_DEFAULT_MEMORYMANAGER define for msdos OS
git-svn-id: trunk@33675 -
2016-05-11 14:27:26 +00:00
Károly Balogh
23cf551bf3 m68k-amiga: fixed wrong define to test against softfpu (oops...)
git-svn-id: trunk@33672 -
2016-05-11 07:09:53 +00:00
Károly Balogh
7fff76d936 m68k-amiga: only compile softfpu code into system unit, when FPU_SOFT is defined
git-svn-id: trunk@33670 -
2016-05-10 16:08:17 +00:00
marco
d4fd7520ef * wrap getfirst and getlast in fcount<>0 because otherwise it will dereference nil.
Mantis #30080

git-svn-id: trunk@33598 -
2016-05-01 14:43:12 +00:00
Károly Balogh
6d3b580f2f * enabled internal ELF resources for AmigaOS4
git-svn-id: trunk@33596 -
2016-05-01 12:59:54 +00:00
marcus
77e47d21bb os4units: added iffparse, keymap, clipboard, graphics, intuition, activated some packages
git-svn-id: trunk@33581 -
2016-04-30 13:39:08 +00:00
svenbarth
788393c298 Change WideString initialization to work correctly with indirect main information as well
rtl/inc/systemh.inc & rtl/java/jsystemh_types.inc:
  - TEntryInformation: remove WideInitTables
rtl/win/sysosh.inc:
  + TEntyrInformationOS: add WideInitTables
rtl/win/syswin.inc:
  * adjust WStrInitTablesTable, so that it is now a pointer and can be used both with direct and indirect main entry
  * InitWin32Widestrings: WStrInitTablesTable is now a pointer
rtl/win32/sysinit.inc:
  * WideInitTables has moved to the OS specific part of the entry information
rtl/win32/system.pp:
  * OsSetupEntryinformation: setup WStrInitTablesTable

git-svn-id: trunk@33571 -
2016-04-29 13:13:14 +00:00
Jonas Maebe
6e2523b199 * fixed version of fpc_pchar_length() for JVM (the generic one passes
p^ to indexbyte, and since indexbyte takes an open array parameter
    on the JVM platform rather than an untyped var, this was converted
    to a single element array rather than passing in p unmodified)

git-svn-id: trunk@33568 -
2016-04-28 20:33:09 +00:00
Jonas Maebe
162c4ef6f3 * fixed potential range errors in indexbyte/indexword
git-svn-id: trunk@33567 -
2016-04-28 20:33:06 +00:00
pierre
57f2df1f62 * Remove sysutils in _USES clause, to avoid exception handling importation,
especially when exeinfo unit is implicitly loaded when -gl compilation option
  is used.
  + LocalError, new ExitProc procedure, used to catch any error that could happen
  inside GetExeInMemoryBaseAddr procedure.
  * Use SetJmp/LongJmp instead of Try/except in GetExeInMemoryBaseAddr function,
  together with local change and restoration of ExitProc.

git-svn-id: trunk@33561 -
2016-04-27 13:13:31 +00:00
Jonas Maebe
69ad962544 * fixed cross-assembling the Linux/ppc32 loader files on a 64 bit Linux host
git-svn-id: trunk@33538 -
2016-04-20 22:17:11 +00:00
Károly Balogh
1192978152 m68k: software mod/div and mul helper requirement has nothing to do with the softfpu, CF and plain 68k simply needs it
git-svn-id: trunk@33532 -
2016-04-18 02:20:08 +00:00
marcus
e38e051425 Amicommon: Unified parameterhandling for Amiga, AROS, MorphOS
git-svn-id: trunk@33528 -
2016-04-17 15:31:18 +00:00
marcus
9cb4091c42 Amiga: Enable character unit
git-svn-id: trunk@33505 -
2016-04-14 21:02:25 +00:00
florian
9b1e6e1976 - removed i386 specific fpc_pchar_length implementation as it is much slower than the generic one which takes advantage of IndexByte
git-svn-id: trunk@33491 -
2016-04-12 18:13:24 +00:00
florian
2b082d88a6 * generic implementation of fpc_pchar_length uses IndexByte instead of a simple while loop
git-svn-id: trunk@33490 -
2016-04-12 18:11:27 +00:00
florian
71b7cd7e1d * the size of DW_FORM_ref_addr entries depends on the DWARF version
git-svn-id: trunk@33477 -
2016-04-10 19:46:05 +00:00
florian
a7346b2f9d + make use of .debug_aranges section for faster name search when generating stack backtraces
git-svn-id: trunk@33470 -
2016-04-10 12:21:35 +00:00
Tomas Hajny
92d045c483 * GetStdHandle returns a THandle (use of longint was not 64-bit safe)
git-svn-id: trunk@33460 -
2016-04-10 01:26:30 +00:00
sergei
f73b3c6e4b * Also assign the ErrorCode variable, which is being checked by some tests like test/tstack.pp.
git-svn-id: trunk@33419 -
2016-04-03 22:26:10 +00:00
michael
ad34300873 * Patch from Denis Kozlov to fix buffer errors (bug ID 29942)
git-svn-id: trunk@33406 -
2016-04-02 09:13:56 +00:00
marco
2221e4e4bd * fix timespec=nil for -dgeneric_linux_syscalls (aarch64) case.
git-svn-id: trunk@33392 -
2016-03-30 19:21:05 +00:00
michael
3e96806f7e Renamed DisposeAndNil to FreeMemAndNil
git-svn-id: trunk@33378 -
2016-03-29 07:55:58 +00:00
michael
92b8bf97c0 * Added DisposeAndNil (bug ID 28895)
git-svn-id: trunk@33377 -
2016-03-29 07:33:28 +00:00
michael
e3aaeae2e7 * Fix bug ID #29913
git-svn-id: trunk@33363 -
2016-03-28 13:16:31 +00:00
michael
231ec77175 * Delphi compatibility classes (Patch by Silvio Clecio, bug ID #29917)
git-svn-id: trunk@33362 -
2016-03-28 12:57:42 +00:00
marco
7cda2d237f * improved prototypes for dos.
git-svn-id: trunk@33356 -
2016-03-27 21:13:24 +00:00
marco
e7eb7d7415 * dummy executeprocess routines fix, by Michael Ring, fpc-devel list.
git-svn-id: trunk@33355 -
2016-03-27 19:27:48 +00:00
michael
65c880a7f6 * Use STACK_SIZE_PARAM_IS_A_RESERVATION for stack sizes, should fix bug ID #17755
git-svn-id: trunk@33346 -
2016-03-27 11:12:47 +00:00
michael
12d7061212 * Define STACK_SIZE_PARAM_IS_A_RESERVATION
git-svn-id: trunk@33345 -
2016-03-27 11:11:54 +00:00
michael
f380aeb63d * Fix from Andrea Mauri to make formatfloat delphi-compatible in case of negative zero (bug ID 26465)
git-svn-id: trunk@33344 -
2016-03-27 10:40:09 +00:00
michael
bcdfe055a8 * Fix bug ID #26944 (thousandseparator, patch from wp)
git-svn-id: trunk@33343 -
2016-03-27 10:13:16 +00:00
michael
2ec2f1fc16 * Fix bug in WrapText (bug ID 26677)
git-svn-id: trunk@33342 -
2016-03-27 09:41:23 +00:00
michael
960963e74b * SearchAttr needs more bits (faSymlink=$400), bug ID #29870
git-svn-id: trunk@33340 -
2016-03-27 00:01:14 +00:00
michael
9d75d3aae8 * Fix by Laco for bug ID #29037
git-svn-id: trunk@33339 -
2016-03-26 23:54:13 +00:00
michael
73bf5dd3f0 * Extra error message for using find in unsorted list
git-svn-id: trunk@33330 -
2016-03-26 12:26:22 +00:00
michael
10bbfce412 * Allow Find to work with user-sorted stringlists.
git-svn-id: trunk@33328 -
2016-03-26 09:13:27 +00:00
michael
2b077f6af3 * Revert Integer -> SizeInt change where appropriate, capping result when needed
git-svn-id: trunk@33327 -
2016-03-26 07:41:34 +00:00
nickysn
6d4dfb5595 * fixed compilation of sysutils on i8086-msdos after r33290
git-svn-id: trunk@33312 -
2016-03-21 21:09:27 +00:00
michael
5085009410 * Added GetDriveIDFromLetter, bug ID #28318
git-svn-id: trunk@33300 -
2016-03-20 19:04:49 +00:00
marcus
b396d34364 Amicommon: Fixed compilation after r33290
git-svn-id: trunk@33292 -
2016-03-20 06:45:00 +00:00
marco
66608fec02 * unicode executeprocess from work during Lazarus convention in IJsselstein
git-svn-id: trunk@33290 -
2016-03-19 17:59:42 +00:00
nickysn
759a4f8258 * don't try to build lnfodwrf on i8086-msdos, because it causes internal error
200309041 and thus breaks building i8086-msdos snapshots entirely. Added test
  that reproduces the bug in a small program, so it can be fixed eventually.

git-svn-id: trunk@33276 -
2016-03-18 19:56:37 +00:00
Jonas Maebe
2b210335a1 * fixed pointer arithmetic errors in WideStrAlloc/StrBufSize/StrDispose
(patch by Iks, mantis #29710)

git-svn-id: trunk@33271 -
2016-03-18 13:12:11 +00:00
marco
2fe19d990b * map ebusy and enotdir to error 5, mantis #25931
git-svn-id: trunk@33263 -
2016-03-17 21:15:44 +00:00
marco
9c03d0d6ba * fix for mantis #25931 return error 5 on EBUSY and ENOTDIR
git-svn-id: trunk@33262 -
2016-03-17 21:14:07 +00:00
marcus
62c4ff0e21 AROS: BackTraceStrFunc for AROS via debug.library, enable with EnableBackTraceStr()
git-svn-id: trunk@33261 -
2016-03-17 19:12:56 +00:00
marcus
2fe3a342f2 AROS: SystemTags changed to PtrUInt for 64bit
git-svn-id: trunk@33260 -
2016-03-17 18:57:05 +00:00
michael
668f8eec91 * Patch from Silvio Clecio to declare EArgumentNilException (Bug ID 29850)
git-svn-id: trunk@33258 -
2016-03-16 19:10:10 +00:00
Károly Balogh
c5907d5f71 it's now possible to compile the RTL again for AmigaOS/PowerPC. entirely untested, but it builds at least
git-svn-id: trunk@33252 -
2016-03-14 02:14:43 +00:00
michael
1bdae1edc8 * Correct comments about sizes/offsets in invisible string header record
git-svn-id: trunk@33247 -
2016-03-13 19:03:40 +00:00
michael
416151a335 * Adapted string routines so they use sizeint instead of integer (bug ID 29814)
git-svn-id: trunk@33246 -
2016-03-13 18:59:21 +00:00
michael
671416959d * Added SameStr, for symmetry and consistency with SameText (bug ID 29821)
git-svn-id: trunk@33238 -
2016-03-13 16:31:41 +00:00
florian
bb1f2b8062 * make NativeInt and NativeUInt unique types, resolves #29444
git-svn-id: trunk@33234 -
2016-03-13 15:30:38 +00:00
florian
feb15f08b3 * abbrev section must be re-read for each chunk of debug info, should resolve #29825
git-svn-id: trunk@33233 -
2016-03-13 14:41:56 +00:00
florian
928027a7a4 * read Dwarf data blocks correctly
git-svn-id: trunk@33232 -
2016-03-13 12:52:25 +00:00
florian
8a2917639b * improved comments
* tried to make code more robust

git-svn-id: trunk@33231 -
2016-03-13 12:28:26 +00:00
florian
5109ad9c55 + write also the function name in stack backtraces when dwarf debugging info is used, resolves #17574
git-svn-id: trunk@33228 -
2016-03-12 22:35:29 +00:00
marco
3ca2c1553d * copyfileexw (mantis #29729)
git-svn-id: trunk@33227 -
2016-03-12 22:30:23 +00:00
florian
8b81ce7e25 * use PtrUInt instead of Cardinal in GenericAnsiStrLComp and GenericAnsiStrLIComp, resolves #29815
git-svn-id: trunk@33218 -
2016-03-11 20:38:48 +00:00
marco
0bfdfe20ea * second batch of mantis #29762 related -w function fixes..
git-svn-id: trunk@33217 -
2016-03-11 15:52:08 +00:00
marco
5e8bc3a631 * mantis #29762 unicode structure problems fixed up to and including MessageBoxIndirectW
git-svn-id: trunk@33216 -
2016-03-11 12:07:36 +00:00
michael
463c9f6e42 * Apply patch to improve pos() for widestring (mimicking unicodestring), bug ID #29790
git-svn-id: trunk@33210 -
2016-03-09 20:42:23 +00:00
michael
839a0445a4 Fixed bug in split when final word has length 1 (bug ID 29798)
git-svn-id: trunk@33209 -
2016-03-09 19:56:57 +00:00
sergei
cad30aaee9 * x86_64: Modified fpc_exp_real so it does not use 'sahf' assembler instruction, which may be not present on early 64-bit capable x86 processors. Mantis #29583.
git-svn-id: trunk@33205 -
2016-03-07 22:39:34 +00:00
Jonas Maebe
60632d0f18 * changed first parameter of gen_digits_32/64() from 'out' to 'var', as that
routine gets called multiple times with the same buffer as parameter and
    then updates it (fixes errors when compiled with -gt)

git-svn-id: trunk@33203 -
2016-03-07 19:59:02 +00:00
michael
805385791b * Change some types from integer to sizeint (bug ID 29789)
git-svn-id: trunk@33194 -
2016-03-06 15:01:07 +00:00