Commit Graph

18499 Commits

Author SHA1 Message Date
nickysn
910003848c * fixed code generation of indirect far calls and jumps on the i8086 from the
inline assembler

git-svn-id: trunk@31946 -
2015-10-05 02:19:32 +00:00
nickysn
b3c2765da9 * on i8086, for BP7 compatibility, assemble 'call/jmp dword [ref]' as a far call
git-svn-id: trunk@31945 -
2015-10-05 00:47:17 +00:00
joost
8e2a44db88 * Fixed problem with samplecfg that did not write the fppkg-configuration files when fp was not installed
git-svn-id: trunk@31943 -
2015-10-04 09:36:07 +00:00
Jonas Maebe
95927665ce - removed variable notification support, it's not used and superceded by
DFA

git-svn-id: trunk@31916 -
2015-10-02 17:00:25 +00:00
svenbarth
3afc18f277 Fix for Mantis #28766.
ncgrtti.pas, write_persistent_type_info:
  * do not generate RTTI information for generics

git-svn-id: trunk@31911 -
2015-10-02 13:06:51 +00:00
svenbarth
c25e7491e7 Fix for Mantis #28674.
ptype.pas, resolve_forward_types:
  * fix an access violation in case of inline pointer declarations
  * fix the check whether it's a valid use of a generic (parse_generic is useless here...)

+ added test

git-svn-id: trunk@31910 -
2015-10-02 12:46:13 +00:00
florian
c40240990e * popt386 uses now also all routines of aoptx86
git-svn-id: trunk@31894 -
2015-09-29 19:31:33 +00:00
svenbarth
114dfe41a3 Fix for Mantis #28741.
pexpr.pas:
  * initialize srsym in the classrefdef case; it should not have let to problems, because it's only used if erroroutp1 is false which is only the case if the symbol is assigned, but better save then sorry...

git-svn-id: trunk@31887 -
2015-09-29 12:56:01 +00:00
Jonas Maebe
2b01a7e2c6 * initialize errorp1 for classrefdef after r31856 (mantis #28741, but this
doesn't fix it as there are more problems)

git-svn-id: trunk@31884 -
2015-09-29 07:59:59 +00:00
Jonas Maebe
525685617c * unicode2ascii: give an internalerror when trying to convert to UTF-8, as
this routine does not support this (and isn't/shouldn't be used for that
    purpose in the compiler)

git-svn-id: trunk@31882 -
2015-09-28 22:15:00 +00:00
Jonas Maebe
05bf826342 + support UTF-8 in ascii2unicode(), this fixes the UTF-16 output of
resourcestring data .rsj files in case the source file is interpreted as
    UTF-8. Previously, the individual UTF-8 bytes were each stored in a
    separate widechar in the Json file (mantis #28717)

  * due to the fact that rstconv didn't use the cwstring unit on Unix, rstconv
    until now just concatenated the bytes stored in the widechars of the Json
    file on those platforms, i.e., the strings put in the resource file were
    byte for byte equal to what was in the source file. On Windows, these bytes
    were interpreted as individual widechars, converted to the
    DefaultSystemCodePage and then written. This means that for anything but
    ISO-8859-1 (where every widechar from #0000 to #0255 maps to #0 to #255),
    the output got corrupted.

    In order to keep compatibility with the old behaviour whereby rstconv wrote
    the resource strings using the same encoding as in the source file (except
    if the data got completely corrupted, in which case compatibility is
    useless), we now store all resourcestrings twice in the .rsj file: once as
    the exact byte sequence from the source file, and once (properly) encoded
    in UTF-16.

    By default, rstconv will use the byte string and just write that one to the
    resource file. Additionally, there is a new -p option that accepts a code
    page name (see rstconv -h for the list of supported names), which can be
    used to make rstconv use the UTF-16 version and convert that to the desired
    code page (as long as the system on which rstconv runs supports that
    codepage).

    And this also finally resolves mantis #6477.

git-svn-id: trunk@31881 -
2015-09-28 22:14:56 +00:00
Jonas Maebe
a1ed7cc162 * addending to r31831: disable cs_systemcodepage if the source file code page
is set via an UTF-8 BOM

git-svn-id: trunk@31880 -
2015-09-28 22:14:53 +00:00
Jonas Maebe
0ebee6a825 * enabled assembling via a pipe for clang
git-svn-id: trunk@31879 -
2015-09-28 22:14:50 +00:00
Jonas Maebe
fdf76bc606 * ascii2unicode: consistently use the cp parameter
git-svn-id: trunk@31878 -
2015-09-28 22:14:44 +00:00
svenbarth
e2be6f400f Fix for Mantis #28738.
pexpr.pas:
  * the gettypedef() overload should not have been commented... Note to self: don't test things during commits

git-svn-id: trunk@31875 -
2015-09-28 09:25:07 +00:00
florian
79619df936 + use the or instruction to compare 32 bit values with 0
git-svn-id: trunk@31862 -
2015-09-27 20:50:59 +00:00
florian
298cde6489 + initial code in aoptcpu for i8086: make use of lds/les
git-svn-id: trunk@31861 -
2015-09-27 20:50:57 +00:00
svenbarth
bb873c93af pexpr.pas:
* postfixoperators: generate specialize nodes in mode Delphi
  * factor: don't call postfixoperators() if returned node is a specialize node
  * sub_expr: handle specialize nodes
  * sub_expr: extract common code handling specializations in < and as/is into a nested function

git-svn-id: trunk@31859 -
2015-09-27 20:12:03 +00:00
svenbarth
9dcfec8c63 pexpr.pas:
* extend handle_specialize_inline_specialization() with the ability to handle generic functions
  * have handle_factor_typenode() and postfixoperators() make use of this extension

git-svn-id: trunk@31856 -
2015-09-27 18:53:16 +00:00
Jonas Maebe
8e50695f78 * make the meaning of "string" in {$h+} mode the same as that of ansistring:
"type ansistring(CP_ACP)", rather than "type ansistring(sourcefilecodepage)"

git-svn-id: trunk@31847 -
2015-09-27 14:46:41 +00:00
florian
53ea4fb7d4 * unify x86 peephole optimizer helpers
git-svn-id: trunk@31843 -
2015-09-27 09:36:39 +00:00
nickysn
3e2248f41a + implemented exporting of functions for the win16 target
git-svn-id: trunk@31842 -
2015-09-27 00:48:35 +00:00
nickysn
c513cec740 - disallow mixing 'export' and 'interrupt' for the same procedure
git-svn-id: trunk@31836 -
2015-09-26 18:35:04 +00:00
nickysn
b26e10d53c + generate proper win16 prologue/epilogue for exported routines (we don't yet
actually export them from the .exe or .dll, but they can now be used as
  callbacks)
+ support win16 smart callbacks via the $K switch

git-svn-id: trunk@31835 -
2015-09-26 18:04:59 +00:00
nickysn
ae533e4c77 + made the $W switch control the FarProcsPushOddBP target switch in the i8086
compiler (BP7 compatibility) instead of controlling stack frame elimination
  (which isn't supported by the compiler on i8086 anyway, due to i8086's lack
  of support for stack relative addressing)

git-svn-id: trunk@31834 -
2015-09-26 15:41:44 +00:00
nickysn
e0aa6bf85f * the FarProcsPushOddBP target switch made local instead of global (BP7 compatibility)
git-svn-id: trunk@31833 -
2015-09-26 15:14:15 +00:00
nickysn
3a4afab681 * fixed a bug in the $targetswitch directive, which prevented target switches
from being turned off (they were turned on instead)

git-svn-id: trunk@31832 -
2015-09-26 13:36:51 +00:00
Jonas Maebe
2cf8e50771 * fixed unwanted disabling of a codepage set via -FcXXX/{$codepage XXX}
when {$modeswitch systemcodepage} gets disabled without having been
    enabled first (such as when initially setting the syntax mode)
    (mantis #28718)

git-svn-id: trunk@31831 -
2015-09-25 18:31:58 +00:00
Jonas Maebe
7c594b0288 + added support for using Clang as an assembler, and make it the default
for all non-ppc(32/64) Darwin platforms
   o pass the macosx-version-min/iphoneos-version-min to clang as an assembler,
     so that it properly sets this information starting with Xcode 7 (solves
     errors when targeting the iOS simulator, and warnings about object files
     being compiled for a different OS X version when targeting (Mac) OS X)
   o the old assembler is still selectable via -Aas-darwin (required with
     Xcode 3.1.x and older)
   o since the first Xcode version that shipped with Clang is Xcode 3.2, which
     is available for Mac OS X 10.6, most users should not encounter any issues
     with the new default (in fact, it fixes some tests for x86 because Clang
     supports some instructions that "as" doesn't). Clang does not support
     Stabs however, so -gs does require the use of -Aas-darwin

git-svn-id: trunk@31830 -
2015-09-25 18:31:54 +00:00
Jonas Maebe
1131b08d6d * changed idtext of as_darwin to AS-DARWIN, so it can be explicitly
selected via -Aas-darwin (since it compares uppercased strings)

git-svn-id: trunk@31808 -
2015-09-24 06:49:29 +00:00
Jonas Maebe
8155d759dc - reverted r31806, it breaks building on non-Darwin (mantis #28716)
git-svn-id: trunk@31807 -
2015-09-24 06:44:12 +00:00
Jonas Maebe
c0b451e788 - removed as_darwin, since there is no difference with as_gas (there is no
GNU as from binutils for Darwin, and Apple's "as" is based on an old
    version of GNU as)
   o this will not cause any backward compatibility problems, as the
     previous identifier for as_darwin was "AS-Darwin" and the compiler
     compared the uppercase value of the -A parameter to the identifier,
     so it was not explicitly selectable earlier. The new name is "AS",
     so it is explicitly selectable via -Aas like on other platforms.

git-svn-id: trunk@31806 -
2015-09-23 21:25:38 +00:00
Jonas Maebe
840c043c75 * always use unified assembler syntax on Darwin (required by Xcode 7+)
git-svn-id: trunk@31805 -
2015-09-23 20:38:18 +00:00
Jonas Maebe
c5f64a51da * also support unified syntax for non-thumb2 (not yet activatable/usable)
git-svn-id: trunk@31804 -
2015-09-23 20:38:14 +00:00
Jonas Maebe
ff4847f685 * also write out the assembler invocation when using pipes
git-svn-id: trunk@31803 -
2015-09-23 20:38:11 +00:00
Jonas Maebe
392af652df * let de syntax for got/page offsets depend on the target OS rather than
on the assembler

git-svn-id: trunk@31802 -
2015-09-23 20:38:08 +00:00
pierre
7e348a40a3 Use general_e_exception_raised if Compiler generates an uncaught exception
git-svn-id: trunk@31801 -
2015-09-23 16:49:24 +00:00
pierre
6524e536fa Regenerated after addition of new general_e_exception_raised Error
git-svn-id: trunk@31800 -
2015-09-23 16:39:58 +00:00
pierre
5c5c28ab9b Add new general_e_exception_raised Error
git-svn-id: trunk@31799 -
2015-09-23 16:39:23 +00:00
pierre
6435968a3b Introduce tabstractsubsymtable class that uses subentryid to use it also for tenumsymtable and tarraysymtable, to fix errors for ppudump util with -VH option
git-svn-id: trunk@31798 -
2015-09-23 16:37:40 +00:00
pierre
3123d823a1 Fix -VD or -VS by partially reading Interface information
git-svn-id: trunk@31797 -
2015-09-23 16:34:02 +00:00
Jonas Maebe
d214ea56ee * filedef is an implicit pointer type on the JVM platform, since it's a
record

git-svn-id: trunk@31778 -
2015-09-22 19:59:40 +00:00
Jonas Maebe
3b2bd718d8 * corrected the def of the temp for array constructor nodes in case of
an array of const

git-svn-id: trunk@31777 -
2015-09-22 19:59:37 +00:00
Jonas Maebe
954cfd8d40 * replaced use of current_asmdata.currasmlist with the "list" parameter
in g_set_addr_nonbitpacked_record_field_ref()

git-svn-id: trunk@31776 -
2015-09-22 19:59:34 +00:00
Jonas Maebe
f05d573391 * changed default debug format for Darwin/i386 from Stabs to DWARF2, as the
oldcctools are no longer shipped with Xcode 7 and Clang assembler doesn't
    support Stabs (and DWARF2 has been working better than Stabs since a long
    time already)

git-svn-id: trunk@31774 -
2015-09-22 12:55:59 +00:00
svenbarth
96a9273fba pdecsub.pas:
+ export parse_proc_dec_finish() from the unit
pgenutil.pas:
  * adjust generate_specialization_phase2() to correctly specialize procdefs

git-svn-id: trunk@31772 -
2015-09-18 21:51:17 +00:00
svenbarth
d15cdefc37 pdecsub.pas:
* extend parse_proc_head() with the ability to deal with specializations of procdefs
Note: such a procdef is created as unregistered as this is used to determine the correct overload in tcallcandidates (through the use of the yet to be adapted generate_specialization_phase2())

git-svn-id: trunk@31771 -
2015-09-18 21:31:53 +00:00
florian
d36694bdb8 * fix compilation with -Oodfa
git-svn-id: trunk@31770 -
2015-09-18 18:22:25 +00:00
svenbarth
17a0ac7fc0 pdecsub.pas:
* extend parse_proc_head() with support for /parsing/ generic functions (at least in mode Delphi, mode ObjFPC depends on the new isgeneric parameter to be set)
  * adjust parsing of interface mappings with a generic interface (note: in mode ObjFPC this now requires a "specialize" directly before the generic interface's name, which is more in line with other uses of "specialize")
pexpr.pas, factor:
  * don't call postfixoperators() if hadspecialize is set

tests/test/tgeneric79.pp:
  * adjust test to changed syntax

git-svn-id: trunk@31769 -
2015-09-18 16:24:07 +00:00
svenbarth
35d8a51730 pexpr.pas:
* extend factor() with the ability to deal with an already parsed "specialize"

git-svn-id: trunk@31768 -
2015-09-18 15:38:09 +00:00