Commit Graph

575 Commits

Author SHA1 Message Date
sergei
689d4b3ecc + Mantis #19651: Generate table of typed string constants which are initialized with resourcestrings, so they are updated when SetResourceStrings or SetUnitResourceStrings is called.
git-svn-id: trunk@18968 -
2011-09-04 16:01:26 +00:00
pierre
637a4671d9 Fix messages to tokenbuufer writing to zvoid problems with PPU
git-svn-id: trunk@18957 -
2011-09-03 17:38:53 +00:00
paul
de21de2024 compiler: implement delphi like namespaces
git-svn-id: branches/paul/namespaces@18859 -
2011-08-27 03:52:07 +00:00
Jonas Maebe
8a7982fe9e * fixed wrong notes about declaring two destructors after r18427:
oo_has_destructor is inherited from the parent class (because it
    influences whether a VMT is required for TP-style objects),
    so use separate oo_has_new_destructor flag instead

git-svn-id: branches/jvmbackend@18797 -
2011-08-21 09:11:50 +00:00
Jonas Maebe
0b7b6361fe * ignore methods that are added for the purpose of the JVM (inherited
constructors, inherited virtual class methods) when deciding which
    overloaded version of a routine to call. Otherwise they can change
    which variant is called compared to code on platforms where such
    implicit methods are not added

git-svn-id: branches/jvmbackend@18752 -
2011-08-20 08:32:47 +00:00
Jonas Maebe
ee75bfaaf4 * change non-virtual instance methods to "virtual; final;" methods on the
JVM target, because that's the only way to guarantee their semantics on
    that platform (see comments in pdecobj)
  * allow starting new inheritance trees (which is the same as adding a new
    non-virtual method as of this revision) on the JVM target in case the
    parameters of the new routine match the old one, but the complete mangled
    name does not (because then the JVM won't consider them to be the same
    either -> Pascal semantics are matched)

git-svn-id: branches/jvmbackend@18695 -
2011-08-20 08:25:24 +00:00
Jonas Maebe
4074bf412b - removed po_java procoption, since it wasn't really used for anything
git-svn-id: branches/jvmbackend@18694 -
2011-08-20 08:25:19 +00:00
Jonas Maebe
6154f1b0d9 * keep track of the number of abstract methods per class via a counter
* use this counter to mark classes containing abstract methods as
    "abstract" in the bytecode per the JVM spec
  * also use the counter to short-circuit printing of all abstract
    methods in a class when creating a new instance (we build the list
    of abstract methods every time a new instance is created, which is
    a waste of time if there are none in the first place)

git-svn-id: branches/jvmbackend@18635 -
2011-08-20 08:17:12 +00:00
Jonas Maebe
f59a2b38bf + string conversion for oo_is_enum_class
git-svn-id: branches/jvmbackend@18626 -
2011-08-20 08:16:24 +00:00
Jonas Maebe
94a4e1e069 + string version of vis_none
git-svn-id: branches/jvmbackend@18625 -
2011-08-20 08:16:19 +00:00
Jonas Maebe
622ac7184c * fixed string length for varspez strings
git-svn-id: branches/jvmbackend@18624 -
2011-08-20 08:16:14 +00:00
Jonas Maebe
13b0ac91d9 + generate java.lang.Enum descendant classes for Pascal enum types
o these classes get an "enum" flag in the class files
   o these classes get a class field (whose type is that same enum
     class) per enum in the type, which also gets the "enum" flag
   o those class fields are initialised in the class constructor
     with the name of the enum and their order in the declaration
   o if the enum has jumps in FPC (lowest value is not 0, or not
     all values are contiguous), then we add an extra field
     to hold the FPC ordinal value of the enum
   o these classes get a class field valled $VALUES that contains
     a reference to the aforementioned class fields in order of
     declaration (= ordinal->instance mapping, JDK-mandated)
   o apart from the JDK-mandated instance methods (values, valueOf),
     also add FPCOrdinal (returns FPC ordinal value; same as order
     of declaration in case of no jumps) instance method and FPCValueOf
     (returns enum corresponding to FPC ordinal value) static class
     method
   o the mapping between FPC ordinals and enum instances in case of
     jumps is stored in a hashmap whose size is the next prime number
     greater or equal than the number of enum elements
   o moved several extra JDK types to the system unit for the enum
     support, and for future boxing and Java set support
   o several new synthetic method identifiers to generate the enum class
     methods/constructor/class constructor
   o enums with jumps are ordered by FPC ordinal value in the JVM
     $VALUES array so that the java.lang.Enum.doCompare() method
     will properly compare them

git-svn-id: branches/jvmbackend@18616 -
2011-08-20 08:15:28 +00:00
Jonas Maebe
ce88df680b + symansistr conditional define that, when activated, makes the symbol/
mangled name handling ansistring rather than pshortstring based (required
    for JVM target; little effect on speed, some extra memory usage)

git-svn-id: branches/jvmbackend@18597 -
2011-08-20 08:13:50 +00:00
Jonas Maebe
54f96997b9 + support for JVM additions and some other fixes
git-svn-id: branches/jvmbackend@18596 -
2011-08-20 08:13:44 +00:00
Jonas Maebe
f17936e598 * moved import_lib (for JVM package name) and jvm_full_typename()
from tobjectdef to tabstractrecorddef, since records are implemented
    via Java classes on the JVM target (and hence have an associated
    package name, and we have to be able to generate their JVM-style
    mangled name)
  * adapted ppudump to this change

git-svn-id: branches/jvmbackend@18449 -
2011-08-20 08:00:37 +00:00
Jonas Maebe
85e866a121 + (mostly fake) register definitions for the JVM
git-svn-id: branches/jvmbackend@18289 -
2011-08-20 07:35:17 +00:00
pierre
1c2a5f9819 + Update all Makefile's modified by
change in utils/fpcm/fpcmake.ini in prevous commit.

  Adapt also other files to that change:

  * compiler/globals.pas: Replace $FPCTARGET by os_string if
  tf_use_8_3 flag is set for target_info also.

  * tests/Makefile.fpc: Modify TEST_TARGETSUFFIX in the same way
  as TARGETSUFFIX was modified in previous commit.

  * tests/utils/dotest.pp:
    + New variable UseOSOnly, set to true if only target OS name
    should be used for subdirectories.

git-svn-id: trunk@18228 -
2011-08-16 20:10:19 +00:00
florian
8308b46a94 + support for assembler instructions with four operands
+ support for insertq, resolves #19910

git-svn-id: trunk@18206 -
2011-08-14 16:46:35 +00:00
sergei
fec5dde5b6 * Fix handling of Windows WideString typed constants, resolves #15842 and completes the related #14308:
* Do not initialize unused symbols, because finalization code is not generated for them either.
  * Always initialize/finalize such constants, even if they are declared in {$J-} state and cannot be modified by user code.

git-svn-id: trunk@18121 -
2011-08-06 18:11:39 +00:00
Jonas Maebe
0398ff6bf5 * also save/restore the size of the padding of record/objectsymtables
* when creating a child class, ignore the padding added to the parent
    in case of objcclasses (gcc/clang also do that; maybe the same
    has to be done for cppclass as well)
  -> objcclass layouts seem to finally completely match the gcc ones

git-svn-id: trunk@18119 -
2011-08-06 18:01:39 +00:00
Jonas Maebe
13598f1b5f * update of ppudump for r18114
git-svn-id: trunk@18117 -
2011-08-06 17:14:22 +00:00
marco
39d7bb511d * Regenned all makefiles before 2.6.x branching.
git-svn-id: trunk@18073 -
2011-08-03 13:41:52 +00:00
pierre
5a2d6c0429 Fix constant pointer reading for 64 bit CPU
git-svn-id: trunk@17962 -
2011-07-08 16:28:24 +00:00
pierre
0ca127b97e * Fix length size for non-short string types
git-svn-id: trunk@17961 -
2011-07-08 16:21:28 +00:00
pierre
b94cdd4881 * Handled real constants of different size
git-svn-id: trunk@17957 -
2011-07-08 15:39:04 +00:00
pierre
eb4798238d * Display hexadecimal values of wide strings
* Set has_errors on more locations
  + Add has_more_infos boolean
  * Add -M option to set ExitCode to 2 if more info is available.
  * Support constnil type.

git-svn-id: trunk@17953 -
2011-07-08 10:32:28 +00:00
pierre
cdd4b0297a * Show usage and halt with error if unknown parameters are given
at command line.
  * Also generate NASM register files for x86_64 (for support of NASM
    assembler for x86_64 CPU, to be committed later).

git-svn-id: trunk@17927 -
2011-07-04 07:33:00 +00:00
tom_at_work
619afa83ad Use NOCPUDEF for all ppu* compilations
git-svn-id: trunk@17888 -
2011-07-01 07:30:16 +00:00
pierre
b78e0db500 + Also look for gdb if gdbpas is not found.
+ AdaptToGDB procedure to convert filenames with dirtectories
  to the format GDB expects.

git-svn-id: trunk@17853 -
2011-06-28 10:12:19 +00:00
pierre
239944f8d0 + Use DLL name in assembler labels used to import DLL functions/variables
in Windows, Emx and OS2 targets.
    This fixes test failures: test/library/tlib1b.pp and lib2b.pp

    link unit TLinker.AddImportSymbol: Added symmangledname parameter.
    ogbase unit TImportSymbol.Create: Add AMangledName parameter.
    fmodule unit TModule.AddExternalImport: Add symmangledname parameter.
    fppu unit: Also put mangled name string for imported symbol.
    ppu unit: Increase PPUVersion
    utils/ppudump.pp: Adapt to PPU change above.
    systems/T_OS units: Use ImportSymbol.MangledName property to create
    import libraries or .idata sections.

git-svn-id: trunk@17804 -
2011-06-23 11:38:57 +00:00
pierre
83f100432c + Move enumration types uses in ppu files from systems.pas
into systems.inc include file for direct inclusion by utils/ppudump.pp
  + new generic/cpuinfo.pas unit to allow compilation of ppudump without any
    CPU specific code.
  * Modified utils/ppudump rule in utils Makefile.fpc
    to use generic/cpuinfo unit by use of -dGENERIC_CPU
  * globals unit changed to support GENERIC_CPU.
  * utils/ppudump.pp changed to remove local enumeration types.

git-svn-id: trunk@17773 -
2011-06-20 14:16:57 +00:00
pierre
f9e7b364bb * Added missing PPU flags
git-svn-id: trunk@17622 -
2011-06-01 10:28:57 +00:00
sergei
504e0c6816 x86 assembler fixes:
* mkx86ins.pp: 'regmem' operand type in x86ins.dat must be converted to OT_RM_GPR, not OT_REGMEM. The latter does not restrict register type, allowing to use e.g. xmm registers in place of regular ones. 
* Finished 'movd' and 'movq', added some tests for them to tasm2.pp.

git-svn-id: trunk@17515 -
2011-05-20 20:39:35 +00:00
florian
d19d8de8fe * packed column writing/reading for token recorder, reduces size of fgl.ppu by approx. 10%
git-svn-id: trunk@17512 -
2011-05-20 17:43:11 +00:00
florian
e29d8df95c * updated ppudump for latest ppu format changes
git-svn-id: trunk@17509 -
2011-05-19 20:32:39 +00:00
sergei
9bb0dc6cfe * mkx86ins.pp: ot_signed flag must not be set by literal opcodes. Ignore 2- and 3-byte literal sequences, not just 1-byte ones.
* x86ins.dat: replaced codes \17 with literal zeros. They aren't necessary for FPC, and they were removed from NASM quite a while ago.

git-svn-id: trunk@17430 -
2011-05-11 12:31:18 +00:00
sergei
f97f223de6 x86_64 assembler reader improvements:
+ Added new value TAttSuffix.attsufINTdual, assigned it to movsX and movzX instructions
* Moved suffix-to-size translation tables from rax86att.pas to itcpugas.pas
+ Added x86_64 specific suffix-to-size translation, enabling BQ and WQ suffixes (LQ seems unnecessary at the moment)
* Fixed logic of tx86attreader.is_asmopcode so it only assigns dual suffix to instructions that explicitly allow it. This disambiguates cases like movsbq=movs+bq vs. cmovbq=cmovb+q
* As a net result: movz[bw]q and movs[bw]q now compile for x86_64; cmovbw and cmovbl which were incorrectly handled for i386 are now fixed.
+ Test for correct assembling of cmov.

git-svn-id: trunk@17353 -
2011-04-20 11:18:13 +00:00
svenbarth
d0705a1779 Rebase to revision 17236
git-svn-id: branches/svenbarth/classhelpers@17241 -
2011-04-03 17:24:35 +00:00
svenbarth
c0a0ec9962 correct ppudump
git-svn-id: branches/svenbarth/classhelpers@17238 -
2011-04-03 13:37:07 +00:00
joost
fe503598c1 * samplecfg now also creates fppkg configuration files
git-svn-id: trunk@17190 -
2011-03-27 12:29:32 +00:00
joost
dc5f4b038d * Do not use scripts, but let fpcmkcfg create eventual parent directories
git-svn-id: trunk@17185 -
2011-03-26 20:48:31 +00:00
joost
6fa6151bef * Do not create a backup, fpcmkcfg does this already
git-svn-id: trunk@17183 -
2011-03-26 17:32:52 +00:00
svenbarth
f7f357f18e * symconst.pas:
- remove thelpersearch again => adjustments to searchsym_in_class and calls to it
- rename sto_has_classhelper to sto_has_helper
* symbase.pas: make push and pop in tsymtablestack virtual
* symdef.pas:
- add a new class tdefawaresymtablestack which overrides push and pop of tsymtablestack and adjusts the new extendeddefs field of the current tmodule
- tobjectdef.create: sto_has_classhelper => sto_has_helper
* fmodule.pas:
- add new hash object list to tmodule (key: mangled type name) which holds object list instances that contain all helpers currently active for a given type (= key of the hash list)
- tmodule.create: the hash list owns the sublists (but those don't own the defs)
- tmodule.destroy: free the hash list
* pdecobjpas:
- rename parse_extended_class to parse_extended_type
- parsing of constructors:
# for all helper types: no class constructors allowed
# for record helpers: as long as constructors for records themselves are disabled they are for record helpers as well
- object_dec: manually add the helper to the extendeddefs if the overall owner of the current def is a static symtable (implementation section or program/library main file), because the symtable won't be popped and pushed then
* parser.pas: instantiate the new stack class
* psub.pas: backup the extendeddefs in specialize_objectdefs as well
* ptype.pas:
- generate_specialization: backup the extendeddefs as well
- record_dec: _RECORD is now consumed in read_named_type itself
- read_named_type: parse "record helper" if advanced record syntax is enabled
* symtable.pas:
- correct searchsym_in_class declaration => adjustments in this unit as well
- add the possibility to pass a context def to search_last_objectpascal_helper
- rename search_objectpascal_class_helper to search_objectpascal_helper
- rename search_class_helper to search_objc_helper
- searchsym_in_class: 
# search for helpers in every level of the tree of the class
# the contextclassh can also be a subclass of the extendeddef
- searchsym_in_record: search for helper methods as well
- searchsym_in_helper:
# search for symbols in class and record helpers is the same except for the search in the class' ancestors
# search the extendeddef directly and rely on searchsym_in_class only for the class' ancestors as we need to find the helpers there as well
- search_last_objectpascal_helper: use the extendeddefs list of current_module instead of scanning the symbol stack itself
* pexpr.pas: adjustments because of renaming of sto_has_classhelper
* pinline.pas: adjustment because of removing of thelpersearch
* nflw.pas: 
- renamed classhelper to helperdef
- adjusted search_last_objectpascal_helper call
* msg*:
- adjusted error message for constructors in records (this currently applies to record helpers as well)
- renamed parser_e_not_allowed_in_classhelper to parser_e_not_allowed_in_helper => adjustments in code
- added parser_e_no_class_constructors_in_helpers
* pdecsub.pas: adjusted renamed error message
* htypechk.pas: check for helpers in every step of the hierarchy
* nobj.pas: search_class_helper => search_objc_helper
* utils/ppudump.pas: adjust, because of renames

Note: the define "useoldsearch" will be only used for performance comparison on my (faster) Linux machine; that (and its associated code) will be removed afterwards

git-svn-id: branches/svenbarth/classhelpers@17151 -
2011-03-20 11:27:27 +00:00
joost
3c6bb40c52 * Samplecfg now uses fpcmkcfg to create the configuration files
git-svn-id: trunk@17148 -
2011-03-19 22:09:47 +00:00
svenbarth
e19bcfae38 Added a flag set to TSymtable that tells whether it contains a class helper symbol, which is currently only used for static- and globalsymtables.
symconst.pas: added new enum tsymtableoption with set tsymtableoptions; currently it contains only sto_has_classhelper, but refactoring tstoredsymtable.b_needs_init_final is on the todo list
ppu.pas: added a new entry type that will hold the symtable options (91)
symbase.pas: added a new field "tableoptions" to TSymtable which will hold the flags of the symtable (only saved by tstoredsymtable)
symdef.pas: when a tobjectdef is created as a odt_classhelper or odt_objccategory the flag sto_has_classhelper is added to its owning global- or staticsymtable
symtable.pas: 
* load and write the symtable's options as a small set to an entry before the definition entries
* tabstractlocalsymtable needed to annoy me by not calling "inherited writeppu" which does the same as tabstractsymtable did before
* search_last_objectpascal_classhelper: check whether the static- or globalsymtable contains a class helper at all; if not then just continue with the next
utils/ppudump.pas:
* added reading of symtableoptions entry (as readsymtableoptions) based on the reading of tsym options
* added the reading of symtableoptions before every read of the contents of a TSymtable (definitions, symbols)

git-svn-id: branches/svenbarth/classhelpers@16845 -
2011-01-30 09:19:59 +00:00
svenbarth
36ee46110c Updated ppudump to support the new ppu data that might contain class helpers.
This needed a small restructuring of the code as we need to know the object_options (especially oo_is_classhelper) when we reach the point in the ppu where the parent class helper is stored.

git-svn-id: branches/svenbarth/classhelpers@16828 -
2011-01-28 20:57:19 +00:00
paul
4e93ecda3d utils: fix ppudump generic tokenbuf reading
git-svn-id: trunk@16727 -
2011-01-07 17:47:23 +00:00
joost
d97d2490c8 * Fixed the order in which the httpd-units are searched for (bug 18405)
git-svn-id: trunk@16722 -
2011-01-06 14:42:57 +00:00
paul
dd921ffc9d utils: fix ppudump:
- show array symtable
  - support unicodestring
  - don't read "Last VTable idx" field in case of interface - this entry is not stored in ppu

git-svn-id: trunk@16688 -
2011-01-02 19:08:35 +00:00
paul
86d3e41442 compiler: replace MODESWTICH POINTERARITHMETICS with $POINTERMATH directive, disable pointer arithmetic in delphi mode by default (compatible with delphi), enable pointer arithmetic in fpc/objfpc modes as they had it enabled by default before, add has_pointer_math field to tpointerdef to allow pointer arithmetic with such pointer even if pointer math mode is off (delphi compatible) + tests
git-svn-id: trunk@16651 -
2010-12-29 03:24:28 +00:00
paul
4f274b157c compiler: move objectoptions to tabstractrecorddef because it will be needed for records too
git-svn-id: branches/paul/extended_records@16541 -
2010-12-11 06:48:08 +00:00
paul
26cef34005 compiler:
- move objname, objrealname fields from tobjectdef to tabstractrecorddef, 
  - load and save them from/to ppu file, 
  - use tabstarctrecorddef in some more places where previously code worked for tobjectdef
  - change push_nested_hierarchy, pop_nested_hierarchy to handle records too

git-svn-id: branches/paul/extended_records@16519 -
2010-12-08 06:58:48 +00:00
pierre
73b1fa667c * use dwarf64 numbers for x86_64 stabs registers
git-svn-id: trunk@16157 -
2010-10-13 22:56:02 +00:00
mazen
b127fc154a * Fixed spell error revealed by lintian.
git-svn-id: trunk@16094 -
2010-10-06 20:33:57 +00:00
Jonas Maebe
8b0301409a + i386/iphonesim target for the new iPhoneSimulator in Xcode 3.2.4 and
later: the same as i386/darwin, except
      a) uses the non-fragile Objective-C ABI/runtime
      b) does not require stubs for direct calls/jumps (not required for
         i386/darwin under 10.6 and later either, but still generated
         there for backwards compatibility)
      c) only the same packages are enabled as for ARM/Darwin
      d) MacOSAll is compiled specifically for the iPhoneSimulator SDK
    This target also defines the symbol "darwin" apart from the target
    name "iphonesim" for source code compatibility reasons.

git-svn-id: trunk@16065 -
2010-09-29 21:56:47 +00:00
pierre
19e037dde7 * Try to improve directory handling of program
git-svn-id: trunk@16057 -
2010-09-28 10:21:51 +00:00
Jonas Maebe
eb2581946c o adapted to current ppu format:
* support enumsyms stored as part of the enumdef (r15051)
    * removed po_local and added po_delphi_nested_cc (r15694)
    * renamed pi_has_goto to pi_has_label (r15712)

git-svn-id: trunk@15798 -
2010-08-13 13:24:28 +00:00
pierre
45b11561cf + Always try to find Compiler in same directory first
git-svn-id: trunk@15763 -
2010-08-10 11:37:06 +00:00
pierre
874e69bcf8 * revert wrong commits
git-svn-id: trunk@15762 -
2010-08-10 11:33:38 +00:00
pierre
d27278faac * Add external linker possibility for windows x86_64 compiler
git-svn-id: trunk@15761 -
2010-08-10 11:28:31 +00:00
joost
f1e4de764a * Write a warning to stderr that this utility is deprecated
git-svn-id: trunk@15213 -
2010-05-03 14:02:22 +00:00
joost
3759ad8963 * Moved fpcmkcfg from compiler/utils to utils/fpcmkcfg
git-svn-id: trunk@15189 -
2010-04-27 07:59:20 +00:00
paul
d6c514b6db compiler: apply patch of Sven Barth to add nativent-i386 and linux-mips to the ppudump (issue #0016266)
git-svn-id: trunk@15146 -
2010-04-15 13:06:53 +00:00
paul
24d8a7d833 compiler: start implementation of class constructors/destructors: parsing is ready but at the moment neither class constructors nor destructors are called - this is to be implemented
git-svn-id: trunk@15109 -
2010-04-03 09:14:12 +00:00
paul
1ef53ca590 compiler: remove unused variables (reduce hints)
git-svn-id: trunk@15093 -
2010-03-30 04:30:41 +00:00
Jonas Maebe
635bf9fb7a + support for "univ" parameter modifier added in r15010
git-svn-id: trunk@15016 -
2010-03-14 12:26:01 +00:00
florian
b8e58428ed * don't search use extrapath for searching ppc* if extrapath is empty because this might find undesired compilers in the current directory
git-svn-id: trunk@14835 -
2010-01-31 16:48:18 +00:00
florian
e7bff9f5c1 * fixed reading of constants from token streams
git-svn-id: trunk@14792 -
2010-01-24 12:35:03 +00:00
paul
1b55473ad5 utils: implement module options for ppudump
git-svn-id: trunk@14768 -
2010-01-22 09:29:50 +00:00
paul
77a2c316dd compiler: use sp_internal instead of vo_is_internal for internal symbols used for static fields, remove vo_is_internal
git-svn-id: trunk@14631 -
2010-01-14 03:50:01 +00:00
Jonas Maebe
2c5ed92a4b * fixed search path for httpd units in fpc.cft & fpccfg.inc
(mantis #15501)
  - removed "include path search paths" from default configs, since they
    don't make sense anymore nowadays

git-svn-id: trunk@14630 -
2010-01-12 20:25:28 +00:00
paul
c9987c296e compiler: don't show notes for symbols which are created by static class fields, update ppudump and ppu version
git-svn-id: trunk@14608 -
2010-01-11 06:38:40 +00:00
paul
8166148a37 compiler: 'static' keyword:
- deprecate -St compiler switch
  - remove $STATIC directive
  - unconditionally enable 'static' keyword usage
  - adopt tests, samplecfg, fpc.cft, error messages

git-svn-id: trunk@14569 -
2010-01-07 19:02:09 +00:00
Jonas Maebe
407d60f8a4 * fixed in case fpc is installed under a path containing spaces
git-svn-id: trunk@14524 -
2010-01-02 17:27:03 +00:00
Jonas Maebe
1743c6f1a8 * also recompile a unit if class/object definitions in indirectly used
units have changed, because these can influence the code of the
    current unit in case method signatures changed (mantis #13840)
    + manual test
  * fixed some recompilation crashes related to WPO info
  * clarified the unit_u_add_depend_to message

git-svn-id: trunk@14503 -
2009-12-30 14:03:31 +00:00
Jonas Maebe
d219109b16 * fixed dumping objectdefs after r14185
+ dump wpo info

git-svn-id: trunk@14484 -
2009-12-27 14:26:37 +00:00
florian
092823308a + mips(el) support in the compiler makefile
* regenerated some makefiles to support mipsel-linux

git-svn-id: trunk@14371 -
2009-12-08 19:57:16 +00:00
Jonas Maebe
d1538ab023 o added ARM VPFv2/VFPv3 support:
+ RTL support:
      o VFP exceptions are disabled by default on Darwin,
        because they cause kernel panics on iPhoneOS 2.2.1 at least
      o all denormals are truncated to 0 on Darwin, because disabling
        that also causes kernel panics on iPhoneOS 2.2.1 (probably
        because otherwise denormals can also cause exceptions)
    * set softfloat rounding mode correctly for non-wince/darwin/vfp
      targets
    + compiler support: only half the number of single precision
      registers is available due to limitations of the register
      allocator
    + added a number of comments about why the stackframe on ARM is
      set up the way it is by the compiler
    + added regtype and subregtype info to regsets, because they're
      also used for VFP registers (+ support in assembler reader)
    + various generic support routines for dealing with floating point
      values located in integer registers that have to be transferred to
      mm registers (needed for VFP)
    * renamed use_sse() to use_vectorfpu() and also use it for
      ARM/vfp support
    o only superficially tested for Linux (compiler compiled with -Cpvfpv6
      -Cfvfpv2 works on a Cortex-A8, no testsuite run performed -- at least
      the fpu exception handler still needs to be implemented), Darwin has
      been tested more thoroughly
  + added ARMv6 cpu type and made it default for Darwin/ARM
  + ARMv6+ implementations of atomic operations using ldrex/strex
  * don't use r9 on Darwin/ARM, as it's reserved under certain
    circumstances (don't know yet which ones)
  * changed C-test object files for ARM/Darwin to ARMv6 versions
  * check in assembler reader that regsets are not empty, because
    instructions with a regset operand have undefined behaviour in that
    case
  * fixed resultdef of tarmtypeconvnode.first_int_to_real in case of
    int64->single type conversion
  * fixed constant pool locations in case 64 bit constants are generated,
    and/or when vfp instructions with limited reach are present

  WARNING: when using VFP on an ARMv6 or later cpu, you *must* compile all
    code with -Cparmv6 (or higher), or you will get crashes. The reason is
    that storing/restoring multiple VFP registers must happen using
    different instructions on pre/post-ARMv6.

git-svn-id: trunk@14317 -
2009-12-03 22:46:30 +00:00
marco
b3ec68e2e1 * when "all" target is not used, unit dir was not created.
Added a msg2inc$(exeext) target that forces unitdir creation
	mantis 15116

git-svn-id: trunk@14253 -
2009-11-22 11:36:36 +00:00
Jonas Maebe
2ef18ba527 * use pipes instead of temporary files by default for assembling under
Darwin

git-svn-id: trunk@14227 -
2009-11-20 13:20:01 +00:00
Jonas Maebe
e244acad77 * set default cpu type to pentiumm for darwin/i386 (since the first Macs
with an Intel cpu had a Core Solo)

git-svn-id: trunk@14226 -
2009-11-20 13:07:45 +00:00
pierre
a93c468518 * Revert wrong commit for fpcfg.inc
git-svn-id: trunk@14225 -
2009-11-20 11:09:19 +00:00
pierre
0687f16a04 * Accept weak for Solaris targets
git-svn-id: trunk@14224 -
2009-11-20 11:06:50 +00:00
pierre
57b0a1b0da + Add target_x86_64_solaris constant
git-svn-id: trunk@14221 -
2009-11-20 10:51:02 +00:00
Jonas Maebe
f8754d8fab + Objective-C category support (old and new ABI, both external and
implemented in Pascal). See
    http://wiki.freepascal.org/FPC_PasCocoa#Category_declaration for syntax
    details

git-svn-id: trunk@14196 -
2009-11-16 00:12:08 +00:00
pierre
d12c36ee32 * add to missing CPUs
git-svn-id: trunk@14090 -
2009-11-07 00:23:04 +00:00
Jonas Maebe
a60869fe64 + support for Objective-C classes/protols/options
git-svn-id: branches/objc@14050 -
2009-11-04 16:45:14 +00:00
paul
aa5a5e79ce merge revisions: 13909,13923,13924,13934,13935,13942,13943,13944,13946,13948,13950,13951,13952,13983,13994:
rtl: add enumerators to the basic classes
tests: add enumerators test which compiles and work both by fpc and dcc
compiler: 
  + start for-in loop implementation: implement for-in loop for types (enumerations and ranges), strings, arrays and sets. todo: perform type checking, optimize array and string loops - use temp for expression, implement for-in loop for classes
test:
  + add a simple test for the 'for-in' loop
compiler: fix string for-in loop. now it uses a temp variable to store string expression result
complier: fix for-in array loop. use a temp variable for the loop expression only if loop is not an open array loop
complier: continue enumerator implementation:
  + add operator enumerator which give an ability to add enumerator for an existent type (for example to override builtin string enumerator)
  + add class enumerator support via delphi compatible GetEnumerator method + enumerator class/object template (function MoveNext: Boolean; property Current)
  + tests
compiler: fix for-in loop for arrays. delphi does not copy arrays to a temp variable and it is possible to change array during loop. + test
compiler: add reference for the enumerator operator when it is used + another test for operator enumerator for a class
compiler: add reference for the enumerator operator when it is used + another test for operator enumerator for a class
compiler: enumerator directive support:
  + allow to mark methods and properties by 'enumerator MoveNext' and 'enumerator Current' modifiers. Parser checks return types and duplicates.
  + prefer *marked* by enumerator directive methods and properties than GetEnumerator and Current builtin symbols
  + increase ppu version
  + test
rtl: add IEnumerator and IEnumerable interfaces declarations
tests: for-in loop tests:
  + add small comment at the top of test program
compiler: allow 'enumerator MoveNext' for the interface function declaration + test
compiler: move all for-in loop helpers to the nflw unit
compiler: don't allow the compiler to choose the non-valid enumerator operator for the for-in loop

git-svn-id: trunk@14008 -
2009-11-02 03:24:48 +00:00
paul
e784ec1079 merge revisions 13898-13899:
- compiler: allow message after the *deprecated* keyword
 - compiler: raise an internal error if deprecated message is trying to set to a non clear string pointer

git-svn-id: trunk@13997 -
2009-11-01 14:06:30 +00:00
florian
ea00759588 + final modifier support for methods by Paul Ishenin
-- Zusammenführen von r13887 in ».«:
A    tests/test/tfinal1.pp
U    compiler/msgtxt.inc
U    compiler/msgidx.inc
U    compiler/pdecsub.pas
U    compiler/tokens.pas
U    compiler/symconst.pas
U    compiler/msg/errore.msg
U    compiler/utils/ppudump.pp
-- Zusammenführen von r13890 in ».«:
G    compiler/msgtxt.inc
G    compiler/msgidx.inc
U    compiler/nobj.pas
G    compiler/msg/errore.msg
-- Zusammenführen von r13891 in ».«:
A    tests/test/tfinal2.pp

git-svn-id: trunk@13938 -
2009-10-24 11:48:52 +00:00
florian
eb433d1bdd * merged sealed and abstract support by Paul Ishenin
-- Zusammenführen von r13884 in ».«:
U    compiler/msgtxt.inc
U    compiler/msgidx.inc
U    compiler/pdecsub.pas
U    compiler/pdecobj.pas
U    compiler/tokens.pas
U    compiler/ppu.pas
U    compiler/symconst.pas
U    compiler/msg/errore.msg
U    compiler/utils/ppudump.pp
-- Zusammenführen von r13885 in ».«:
A    tests/test/tsealed1.pp
A    tests/test/tabstract1.pp
A    tests/test/tsealed2.pp
-- Zusammenführen von r13893 in ».«:
A    tests/test/tsealed3.pp
A    tests/test/tsealed4.pp

git-svn-id: trunk@13908 -
2009-10-18 20:05:29 +00:00
Jonas Maebe
e246cac3ac * regenerated using latest fpcmake
git-svn-id: trunk@13487 -
2009-08-02 18:40:14 +00:00
joost
d4c2a35c75 * Use ExeSearch instead of FileSearch to find compiler executable
git-svn-id: trunk@12948 -
2009-03-22 10:03:03 +00:00
Jonas Maebe
4bf254bc32 * added .txt extensions to all README, TODO and COPYING files
(mantis #12358)

git-svn-id: trunk@12825 -
2009-02-28 17:34:08 +00:00
Jonas Maebe
eb40758e9c * updated target list (arm-darwin)
+ added support for ibresources, ibwpofile, ibmainname, iblinkotherframeworks
  * fixed reading of tobjectdef since we started storing the vmt entries as
    part of the objectdef, and since the addition of df_copied_def and 
    po_dispid
  * fixed/completed various copies of enums in symconst/globtype
  + added note to "uses" clause about why we don't just use those units
    (to save people from making the same mistake as me, realising it, and
     having to change everything back)

git-svn-id: trunk@12803 -
2009-02-26 22:50:22 +00:00
Tomas Hajny
7bb670800d * -Ratt removed from default fp.cfg - it is not necessary and makes troubles under sparc
git-svn-id: trunk@12714 -
2009-02-08 01:00:02 +00:00
Jonas Maebe
1bda0686d9 * fixed paths to http units (mantis #13065)
git-svn-id: trunk@12625 -
2009-01-29 10:10:18 +00:00
florian
bd0aa27a14 + build instruction table generators
git-svn-id: trunk@12610 -
2009-01-26 14:20:49 +00:00
Tomas Hajny
c75c2e06e1 * additional safeguards - double quotes around environment variables plus avoid checking for $fpcfgfile and $fpinifile if no $FPBIN found
git-svn-id: trunk@12554 -
2009-01-17 09:55:25 +00:00
joost
9506c91614 * Fixed script
git-svn-id: trunk@12552 -
2009-01-16 16:53:27 +00:00