Commit Graph

14959 Commits

Author SHA1 Message Date
Jonas Maebe
abc79bc4cf * override tcgraisenode.pass_1 so that the JVM raise support will keep
working after r24288 is merged to trunk

git-svn-id: trunk@24301 -
2013-04-22 14:47:06 +00:00
Jonas Maebe
c4b62f86a1 * renamed ppudump directory introduced by r24298 to ppuutils to fix
compilation on unix platforms (the ppudump binary name conflicted with
    with the directory name)

git-svn-id: trunk@24300 -
2013-04-22 14:37:37 +00:00
yury
85c2d144c5 * ppudump: Started implementation of JSON output. Output of unit header info has been implemented.
git-svn-id: trunk@24299 -
2013-04-22 14:08:53 +00:00
yury
6327854259 * Move ppudump.pp to a sub-folder as preparation for adding JSON output units.
git-svn-id: trunk@24298 -
2013-04-22 11:19:25 +00:00
yury
187153a557 * ppudump: commented unused local vars.
git-svn-id: trunk@24297 -
2013-04-22 10:45:33 +00:00
yury
eca2b52a03 * ppudump: Implemented wrappers for write and writeln in order to be able to turn off default output when JSON output is selected.
git-svn-id: trunk@24296 -
2013-04-22 10:35:11 +00:00
florian
f3ef5a1f9c + jvm lazarus project file
git-svn-id: trunk@24271 -
2013-04-19 16:50:55 +00:00
sergei
d54d38b4ab * Moved all code responsible for writing VMTs and interface wrappers (nobj.TVMTWriter, ncgutil.gen_intf_wrappers, ptype.write_persistent_type_info) into a new unit ncgvmt.pas.
This improves compiling speed a bit (two iterations over symtables replaced by one, code generator is created once per unit rather than once per class).
In perspective it makes possible to reduce amount of generated smartlink sections and global labels.

git-svn-id: trunk@24269 -
2013-04-19 13:31:27 +00:00
sergei
9dc5b07a68 * COFF: fixed setting section flags. Content type and access bits must be set for non-loadable sections as well.
* Changed .reloc sections to be non-loadable, all Windows DLLs have it that way (and ld produces the same as well).

git-svn-id: trunk@24262 -
2013-04-17 19:51:38 +00:00
florian
e1233e0111 * asizeint => longint, it is unlikely that an variant record well ever have more than 2^31 branches
git-svn-id: trunk@24260 -
2013-04-16 16:49:42 +00:00
Jonas Maebe
9023148bb1 * fixed compilation of JVM rtls after r24188 (there is no JMP_BUF type
on that platform)

git-svn-id: trunk@24259 -
2013-04-16 10:08:58 +00:00
florian
99f2e57e42 * better error reporting
git-svn-id: trunk@24242 -
2013-04-14 15:51:25 +00:00
florian
2fdd3e2d0a + introduce tvariantrecbranch to be able to store
all needed information for iso compatible variant records
* new for variant records as required by iso pascal
+ tests

git-svn-id: trunk@24241 -
2013-04-14 15:50:42 +00:00
sergei
02a288fd89 * MIPS addnode: rewritten almost completely:
* shorter by 280 lines
  * generates actual instructions instead of macros
  * uses immediate operands for constants when possible
  * 64-bit and float comparisons use LOC_JUMP as location

git-svn-id: trunk@24236 -
2013-04-14 12:12:36 +00:00
sergei
b86372ccec + Internal linker: process unreferenced .pdata sections on x86_64-win64, restores the possibility to use GAS on win64 (which got broken by introducing SEH).
git-svn-id: trunk@24235 -
2013-04-13 18:52:50 +00:00
pierre
8a6e057fca Merge forgotten go32v2 2.6.0 branch changes back into trunk.
* Change it also in TInternalLinkerGo32v2.DefaultLinkScript method.
------------------------------------------------------------------------
r20578 | pierre | 2012-03-22 17:34:35 +0100 (Thu, 22 Mar 2012) | 1 line

 Force _environ to be the same as __environ
------------------------------------------------------------------------

git-svn-id: trunk@24229 -
2013-04-12 10:25:13 +00:00
sergei
c3f8086598 + Internal linker: base support for sections that aren't referenced but must be linked if section referenced by them is linked (like win64 .pdata). Actual handling is still to be implemented in descendant classes.
git-svn-id: trunk@24224 -
2013-04-11 17:42:09 +00:00
florian
7ac7d8a4b6 + define UNICODE as well as FPC_UNICODESTRINGS
git-svn-id: trunk@24214 -
2013-04-09 13:05:29 +00:00
svenbarth
8353d53b69 Fix for Mantis #22433.
pdecsub.pas, parse_parameter_dec:
  * allow inline specialization for array types in mode Delphi

+ added test

git-svn-id: trunk@24207 -
2013-04-08 14:51:42 +00:00
florian
ec69ed5b3c * spelling fixed
git-svn-id: trunk@24205 -
2013-04-08 11:50:09 +00:00
florian
f80b6f4774 * arm thumb: take care of large offsets in interface wrappers
git-svn-id: trunk@24203 -
2013-04-07 21:56:37 +00:00
florian
dee35abf41 * arm thumb: let all registers used in a ldr/str operation interfere with the "hi" registers
git-svn-id: trunk@24202 -
2013-04-07 21:39:30 +00:00
florian
36a32e153d + arm thumb: tarmloadparentfpnode moves the stack pointer to a different register to avoid illegal instruction encodings
git-svn-id: trunk@24201 -
2013-04-07 21:29:12 +00:00
florian
e41b7b1b94 * arm thumb: strh/ldrh does not allow stack pointer based references with offset
git-svn-id: trunk@24200 -
2013-04-07 21:27:59 +00:00
florian
877c6e9ce9 * formatting
git-svn-id: trunk@24199 -
2013-04-07 21:26:56 +00:00
florian
b41728c129 * estimatedtempsize should be a longint to avoid warnings on 8 bit targets
git-svn-id: trunk@24198 -
2013-04-07 21:01:18 +00:00
florian
7ba197a221 * fix stack parameter handling for arm thumb
* fix entry/exit code generation for arm thumb

git-svn-id: trunk@24197 -
2013-04-07 21:01:15 +00:00
florian
f9ef8e90da + a_op_const_reg_reg for arm thumb taking care of availability of add sp,sp, ...
* handle references with base and index on arm thumb correctly

git-svn-id: trunk@24196 -
2013-04-07 21:01:11 +00:00
florian
9bbc24b5e3 * r13 might be used only under certain circumstance in memory reference on arm thumb
git-svn-id: trunk@24195 -
2013-04-07 21:01:08 +00:00
florian
79334242a2 * arm thumb uses always the stack pointer as frame pointer
git-svn-id: trunk@24194 -
2013-04-07 21:01:05 +00:00
florian
52070e26e1 * arm thumb uses always the stack pointer as frame pointer
git-svn-id: trunk@24192 -
2013-04-07 21:00:58 +00:00
florian
f25a905904 * fix register allocation initalization for arm thumb
* avoid that the register allocator creates code which writes to frame/stack pointer

git-svn-id: trunk@24190 -
2013-04-07 21:00:50 +00:00
florian
4e4cc4e289 * support neg instruction for spilling
git-svn-id: trunk@24189 -
2013-04-07 21:00:47 +00:00
florian
075abd6220 + support of stackframesize for arm thumb
+ estimatedtempsize to get a good estimatation for architectures which require to know the stack size before

git-svn-id: trunk@24188 -
2013-04-07 21:00:38 +00:00
svenbarth
70886d1727 Fix the exception reported in Mantis #24072. This does not mean though that the bug is fixed, because the bug itself is related to the topic "partial specialization".
symtable.pas, sym_is_owned_by:
	* instead of checking in which symtables to not look, specify in which tables to look (namely object- and recordsymtables)

git-svn-id: trunk@24180 -
2013-04-07 13:44:56 +00:00
Jonas Maebe
8b8a786823 * moved ARM/x86 ifdef'ed code from ncgcal to virtual methods
git-svn-id: trunk@24179 -
2013-04-07 13:42:06 +00:00
Jonas Maebe
3a03586ca9 * give an error when declaring a class as conforming to a forward-declared
interface: the compiler does not/cannot check whether the class
    implements all required methods in that case, and it moreover leads to
    crashes (mantis #24184). Older versions of Delphi did allow this (and
    don't check whether the interface methods are implemented either), but
    that's simply a (similar) bug in Delphi that has been fixed in XE at
    least
  * fixed compilation of webtbs/tw2727 after this fix

git-svn-id: trunk@24177 -
2013-04-07 12:18:31 +00:00
florian
b817b6f62a * enable section smartlinking on all linux targets
git-svn-id: trunk@24146 -
2013-04-04 09:43:00 +00:00
sergei
999c3a0a02 * COFF linker: postpone import section generation until unreferenced sections (and imports) are removed, and put all remaining imports into a single section. This is much more efficient than generating multiple smart-linkable import sections and immediately discarding a good half of them.
git-svn-id: trunk@24123 -
2013-04-02 05:46:32 +00:00
florian
43b6139b66 + setlocalloc resets currentregloc
git-svn-id: trunk@24118 -
2013-04-01 19:52:46 +00:00
florian
364f170765 * cosmetic formatting changes
git-svn-id: trunk@24117 -
2013-04-01 19:52:43 +00:00
florian
7155808570 + ttempcreatenode.printnodedata writes tempinitcode node
git-svn-id: trunk@24116 -
2013-04-01 19:52:39 +00:00
sergei
cded05ccef + MIPS linker: support linking PIC object files with non-PIC ones, by routing absolute calls into PIC code through stubs that load R25.
git-svn-id: trunk@24098 -
2013-03-31 19:58:52 +00:00
florian
9375529430 + put guids in a constant pool as well
git-svn-id: trunk@24061 -
2013-03-29 18:48:55 +00:00
sergei
e4949e3044 + ELF linker: finish support for imported symbol versions.
git-svn-id: trunk@24056 -
2013-03-29 15:17:48 +00:00
sergei
29c0266fb9 + Added values for DT_FLAGS and DT_FLAGS_1 dynamic tags.
git-svn-id: trunk@24053 -
2013-03-29 14:46:44 +00:00
sergei
c5bf2ecb65 + MIPS linker: added ELF header flags, TLS relocations and an utility procedure to handle endianness.
git-svn-id: trunk@24052 -
2013-03-29 14:11:27 +00:00
Jonas Maebe
9973a5737f * don't give an error when calling a class method on an object typecasted
into a class reference (problem introduced by r23976)

git-svn-id: trunk@24039 -
2013-03-28 18:45:09 +00:00
Jonas Maebe
4daa40f480 * reorder register parameters to minimise the number of register conflicts,
which usually (but not always) results in better register allocation

git-svn-id: trunk@24038 -
2013-03-28 18:44:57 +00:00
sergei
1d32b107f5 * Made address comparison 64-bit safe.
* Referencing a section is basically referencing its AT_SECTION symbol, fixed reporting in map file.

git-svn-id: trunk@24029 -
2013-03-28 10:44:09 +00:00