florian
c9b1df2c91
* the test $-1,%reg optimization shall be done not only if the cpu type is i386, but for the i386 compiler
...
git-svn-id: trunk@31474 -
2015-08-31 20:03:56 +00:00
florian
63f828d54e
* take care of nf_internal when doing range checking and inserting type conversions in tassignmentnode.pass_typecheck
...
git-svn-id: trunk@31473 -
2015-08-31 20:03:54 +00:00
florian
27828d41e7
* extended nodes which return true from is_const
...
git-svn-id: trunk@31472 -
2015-08-31 20:03:52 +00:00
florian
f00a55ae08
+ tinlinenode.createintern
...
* do not do range checking on constants created by pred/succ if these nodes are created internally
git-svn-id: trunk@31471 -
2015-08-31 20:03:51 +00:00
florian
049491a573
+ fold the constructs @<record type>(nil^).<field >) and @<record point>(nil)^.<field> used to get the offset of a field into a constant
...
git-svn-id: trunk@31470 -
2015-08-31 20:03:49 +00:00
florian
495b7181a8
+ write the value of a pointer constant node in printnodedata
...
git-svn-id: trunk@31469 -
2015-08-31 20:03:47 +00:00
Jonas Maebe
f374b81c12
* disabled ARM-specific code for smallset in-operations on big endian targets,
...
as it's also little endian-specific (mantis #28592 )
git-svn-id: trunk@31466 -
2015-08-31 13:06:42 +00:00
Jonas Maebe
4f38317bd2
* fixed small linker script syntax error in r31459
...
git-svn-id: trunk@31460 -
2015-08-30 15:45:57 +00:00
Jonas Maebe
6d29ad44f7
* always use a minimal linker script when we are not using -T, so that the
...
chance of conflicts with the built-in linkerscript is minimised
o removed special case for AArch64 which that already
o check the diff without whitespace changes, most is indentation
git-svn-id: trunk@31459 -
2015-08-30 15:25:44 +00:00
Jonas Maebe
c27807ee63
* resolve formal/anonymous external classes before comparing parameters to
...
overloaded routines
git-svn-id: trunk@31458 -
2015-08-30 14:33:01 +00:00
Jonas Maebe
e720b44471
* expand the error message for when trying to use a formal class with an
...
explanation of what to do
git-svn-id: trunk@31457 -
2015-08-30 14:32:56 +00:00
Jonas Maebe
32c3f05522
+ peepholeoptimizations to remove swap instructions
...
git-svn-id: trunk@31456 -
2015-08-29 21:06:29 +00:00
Jonas Maebe
dde8e323e0
* insert swap instructions if it results in store/regdealloc/load
...
sequences
git-svn-id: trunk@31455 -
2015-08-29 21:06:26 +00:00
Jonas Maebe
51864b0458
* skip temp (de)allocs when looking for store/regdealloc/load and
...
regalloc/regdealloc sequences
git-svn-id: trunk@31454 -
2015-08-29 21:06:23 +00:00
Jonas Maebe
6bb430e97c
* also use the ARM/EABI linker script when targeting armhf
...
git-svn-id: trunk@31451 -
2015-08-29 13:00:03 +00:00
Jonas Maebe
882421a3ad
* also use -T when cross-compiling a shared library using a sysroot on
...
Linux (we want to replace the entire built-in linker script in that case)
git-svn-id: trunk@31450 -
2015-08-29 12:26:12 +00:00
Jonas Maebe
e391a37b30
* add the sysrootpath to the path of the dynamic linker in the INPUT()
...
section for Linux
git-svn-id: trunk@31449 -
2015-08-29 12:26:08 +00:00
Jonas Maebe
8c8657e2d5
* base optimiser support for the JVM target
...
o jump threading only works for unconditional branches until now,
as conditional ones have limited offsets
git-svn-id: trunk@31448 -
2015-08-29 10:08:19 +00:00
Jonas Maebe
c3a7d76c68
* ait_jcatch should not be skipped by optimizers, as it does result in
...
control flow
git-svn-id: trunk@31447 -
2015-08-29 10:08:15 +00:00
Jonas Maebe
3f9f498e0d
- removed leftover alpha, ia64 and vis code
...
git-svn-id: trunk@31446 -
2015-08-28 22:31:29 +00:00
Jonas Maebe
bc62795f15
* removed no longer used simplify_ppu global
...
git-svn-id: trunk@31445 -
2015-08-28 22:31:24 +00:00
Jonas Maebe
21066ba3f3
* changed LinkTypeSetExplicitly from a global variable into a field of toption
...
git-svn-id: trunk@31444 -
2015-08-28 22:31:21 +00:00
Jonas Maebe
0d74e4f719
* changed paratargetdbg from a global variable into a field of toption
...
git-svn-id: trunk@31443 -
2015-08-28 22:31:17 +00:00
Jonas Maebe
84bd523867
* changed paratargetasm from a global variable into a field of toption
...
git-svn-id: trunk@31442 -
2015-08-28 22:31:12 +00:00
Jonas Maebe
13638d958d
* changed paratarget from a global variable into a field of toption
...
git-svn-id: trunk@31441 -
2015-08-28 22:31:08 +00:00
florian
199b1861d6
* fix wrong comparisons in trgobj.conservative to enable better coalescing,
...
before this patch, k was calculated wrong most of the time
git-svn-id: trunk@31439 -
2015-08-28 18:49:04 +00:00
svenbarth
66781b5526
Fix for Mantis #28530 .
...
ptype.pas:
* record_dec: if parse_generic is given set current_genericdef
+ added test
git-svn-id: trunk@31437 -
2015-08-28 15:46:18 +00:00
Jonas Maebe
0fc1fd6ac1
* replaced current_procinfo.currtrue/falselabel with storing the true/false
...
labels of LOC_JUMP in the node's location. This generates some extra jumps
for short circuit boolean and/or-expressions if optimizations are off, but
with optimisations enabled the generated code is the same (except for JVM
because the jump threading optimisation isn't enabled there yet).
git-svn-id: trunk@31431 -
2015-08-27 18:28:57 +00:00
Jonas Maebe
10b2ea3b1b
* use handle_locjump() instead of local inlined version
...
git-svn-id: trunk@31430 -
2015-08-27 18:28:52 +00:00
nickysn
e9c790f4eb
+ support 'SEG' in the i8086 inline assembler
...
git-svn-id: trunk@31428 -
2015-08-26 15:57:44 +00:00
nickysn
919cc8377a
+ added class type property CObjSymbol to TExeOutput as well
...
git-svn-id: trunk@31426 -
2015-08-25 16:07:59 +00:00
nickysn
19aab3fd31
+ i8086-msdos internal linker: write symbol addresses in segment:offset format in the linker map file
...
git-svn-id: trunk@31425 -
2015-08-25 14:48:08 +00:00
nickysn
046a4e4114
* allow using a TObjSymbol subclass via using a "class of" type
...
git-svn-id: trunk@31424 -
2015-08-25 14:32:08 +00:00
nickysn
f41692710f
- removed bogus comment from TMZExeUnifiedLogicalSegment.CalcMemPos
...
git-svn-id: trunk@31423 -
2015-08-25 14:04:51 +00:00
nickysn
2467cb34c2
* fixed MemBasePos calculation for segments that go beyond the previous segment base
...
git-svn-id: trunk@31421 -
2015-08-25 13:06:50 +00:00
nickysn
2c05bcc28f
+ i8086-msdos internal linker: in the far data memory models, fill
...
MaxExtraParagraphs in the MZ exe header according to the specified max heap
size
git-svn-id: trunk@31420 -
2015-08-25 11:40:02 +00:00
nickysn
dad0f015a9
- removed the TOmfObjSectionGroup class, because it is not used
...
git-svn-id: trunk@31419 -
2015-08-25 11:32:30 +00:00
nickysn
0894ede9cd
+ enable the i8086-msdos internal linker
...
git-svn-id: trunk@31417 -
2015-08-25 01:32:46 +00:00
nickysn
6e20e0fc84
+ added checks and error messages in case a 16-bit segment or group exceeds 64k
...
git-svn-id: trunk@31416 -
2015-08-25 01:01:20 +00:00
nickysn
851ebd9850
* use a normalized MemBasePos (i.e. offset<16) for stack segments
...
git-svn-id: trunk@31415 -
2015-08-25 00:29:02 +00:00
nickysn
f3d5bf3743
* the result of tobjsymbol.address changed from 'aword' to 'qword' as well
...
git-svn-id: trunk@31414 -
2015-08-25 00:19:26 +00:00
nickysn
8977c0fc78
* TExeSection.Size and .DataPos changed from aword to qword, because:
...
1) aword follows the ALU size of the CPU, not the address type
2) MemPos is qword and is already checked against MaxMemPos
git-svn-id: trunk@31413 -
2015-08-25 00:08:02 +00:00
nickysn
fb1be14337
* yet another fix for the MZ relocation offsets
...
+ support RELOC_SEG and RELOC_SEGREL relocations pointing to an object section
git-svn-id: trunk@31412 -
2015-08-24 23:40:07 +00:00
nickysn
ba1c494cd6
* the code for displaying a symbol address in the linker map file moved to a
...
method in TObjSymbol
git-svn-id: trunk@31411 -
2015-08-24 22:12:00 +00:00
Jonas Maebe
677595880a
+ support for get_frame() for the LLVM target (using the llvm.frameaddress()
...
intrinsic)
git-svn-id: trunk@31409 -
2015-08-24 22:07:03 +00:00
Jonas Maebe
be9d2b1c26
* implement concatcopy for complex types by calling the llvm.memcpy()
...
intrinsic. This may insert actual calls to a function called memcpy with
the signature of the libc function, but llvm optimizers are free to
insert such calls by themselves already. This means that for non-libc
targets, we will have to add weak symbols for memcpy/memmove/memset
that call through to move/fillchar when using LLVM, so that these
implementation are used when not linking to libc
git-svn-id: trunk@31408 -
2015-08-24 22:07:00 +00:00
Jonas Maebe
ba9d54beb5
* don't mangle symbol names for llvm intrinsics
...
git-svn-id: trunk@31406 -
2015-08-24 22:06:53 +00:00
Jonas Maebe
7a8921a060
* define CPULLVM when using the LLVM backend (in addtion to the CPUXXX define
...
for the actual target architecture)
git-svn-id: trunk@31405 -
2015-08-24 22:06:50 +00:00
Jonas Maebe
052af9200e
* support external declarations for compilerprocs
...
o since there is no separate implementation for them, we have to immediately
convert the symbol to lower case after parsing the declaration
git-svn-id: trunk@31404 -
2015-08-24 22:06:47 +00:00
nickysn
faa9362b44
+ calculate and fill "min extra paragraphs" in the MZ header
...
git-svn-id: trunk@31403 -
2015-08-24 21:33:26 +00:00
nickysn
6665cec157
* put the startup code first also when using the internal linker in i8086 far
...
code memory models
git-svn-id: trunk@31402 -
2015-08-24 21:13:57 +00:00
nickysn
2100714ebe
+ implemented RELOC_SEG and RELOC_SEGREL fixups for a symbol target
...
* bug fix in the MZ relocation generated for RELOC_DGROUP/RELOC_DGROUPREL
relocations
* reduced code duplication in TMZExeOutput.DoRelocationFixup a little by using
nested procedures
git-svn-id: trunk@31401 -
2015-08-24 21:12:26 +00:00
nickysn
0eb1cd157a
* don't subtract two from the end of the stack segment when calculating the
...
initial SP value - seems to be wlink compatible
git-svn-id: trunk@31399 -
2015-08-24 20:22:01 +00:00
nickysn
2431b6e63b
* i8086-msdos internal linker: use a different approach for finding the stack
...
segment - either its class name must be 'STACK' (wlink compatible) or its
combine type must be scStack (tlink compatible)
git-svn-id: trunk@31398 -
2015-08-24 20:18:44 +00:00
nickysn
d2a47a7c69
+ fill the initial stack address in the MZ exe header
...
git-svn-id: trunk@31396 -
2015-08-24 18:28:00 +00:00
nickysn
ea27b97f3a
* fixed the order of the _NULL and _AFTERNULL segments
...
git-svn-id: trunk@31395 -
2015-08-24 18:14:55 +00:00
nickysn
18cdc08c26
+ prevent certain special omf sections from being smartlinked out
...
git-svn-id: trunk@31394 -
2015-08-24 18:10:50 +00:00
nickysn
fe69e3324c
+ implemented RELOC_DGROUP and RELOC_DGROUPREL in TMZExeOutput.DoRelocationFixup
...
git-svn-id: trunk@31393 -
2015-08-24 17:55:44 +00:00
nickysn
0eda4c954d
+ handle omf references to a segment with frame method=target
...
git-svn-id: trunk@31392 -
2015-08-24 17:34:04 +00:00
nickysn
d8f88599de
+ support REL_DGROUP and REL_DGROUPREL in TExeOutput.RemoveUnreferencedSections
...
git-svn-id: trunk@31391 -
2015-08-24 17:25:33 +00:00
nickysn
e88dc71983
+ import DGROUP omf fixup references
...
git-svn-id: trunk@31390 -
2015-08-24 16:53:44 +00:00
nickysn
73ea3b7ff1
+ implemented fixups targeting a logical segment offset in the omf internal linker
...
git-svn-id: trunk@31389 -
2015-08-24 15:50:47 +00:00
nickysn
3d3eb6c472
* stop with an error when encountering omf fixups that aren't yet implemented
...
git-svn-id: trunk@31388 -
2015-08-24 15:20:59 +00:00
nickysn
d7f08866e5
* use the TMZExeOutput.MZFlatContentSection property in TInternalLinkerMsDos.GetTotalSizeForSegmentClass
...
instead of finding the exe section by name
git-svn-id: trunk@31387 -
2015-08-24 15:09:35 +00:00
nickysn
449506ffb7
+ write mz exe section data
...
+ fill MaxExtraParagraphs in the MZ header with $ffff by default, to prevent DOS
from loading the program at the highest possible address
git-svn-id: trunk@31386 -
2015-08-24 15:02:37 +00:00
nickysn
fdbfaacec8
+ calculate the MZ loadable image size (excluding bss, stack and heap)
...
+ only write the loadable image size number of bytes to .com files
git-svn-id: trunk@31385 -
2015-08-24 14:42:43 +00:00
nickysn
a7e63581b4
+ i8086-msdos internal lniker: find the program entry point and fill it in the
...
mz exe header; also write it in the linker map file
git-svn-id: trunk@31384 -
2015-08-24 14:22:17 +00:00
nickysn
e0bd25191e
+ also take into account the frame method when converting the omf start address to a symbol
...
git-svn-id: trunk@31383 -
2015-08-24 13:46:37 +00:00
nickysn
cff94639d5
* i8086-msdos internal linker: improved handling of the _edata and _end internal
...
symbols - add them to 'DGROUP' and define them in a section with class 'BSS'
git-svn-id: trunk@31382 -
2015-08-24 12:39:39 +00:00
nickysn
989afc6ecb
* show section addresses relative to the segment's MemBasePos in the i8086-msdos
...
internal linker map file
git-svn-id: trunk@31380 -
2015-08-24 01:31:16 +00:00
nickysn
368ba47d6e
* support writing more than 1024 zeros in tobjectwriter.writezeros
...
git-svn-id: trunk@31379 -
2015-08-24 01:09:53 +00:00
nickysn
fa8841d575
+ support omf group-relative fixups pointing to external symbol (e.g.
...
'wrt dgroup' references)
- removed debug code from TMZExeOutput.DoRelocationFixup
git-svn-id: trunk@31378 -
2015-08-24 00:55:56 +00:00
nickysn
173713ce57
* preserve original order (as specified in the link script) of omf sections with
...
the same name. This ensures that the startup code always comes first, which is
important for .com files
git-svn-id: trunk@31377 -
2015-08-24 00:30:24 +00:00
nickysn
f182a98d7b
* also preserve TObjSymbol.group when updating external with global symbols
...
git-svn-id: trunk@31376 -
2015-08-24 00:25:37 +00:00
nickysn
f08e98bfd0
+ partial implementation of DoRelocationFixups for the i8086-msdos internal linker
...
git-svn-id: trunk@31375 -
2015-08-24 00:23:56 +00:00
nickysn
78cbb1ba2b
+ implemented writing .com files in the i8086-msdos internal linker
...
git-svn-id: trunk@31374 -
2015-08-23 22:06:30 +00:00
nickysn
fa9a1f706b
+ i8086-msdos internal linker: calculate the final segments and groups locations
...
in memory (incl. segment bases) before DoRelocations; list segments and groups
in the map file as well
git-svn-id: trunk@31373 -
2015-08-23 21:36:24 +00:00
nickysn
5dc42404cf
* capitalize omf segment class names, as that's how other 16-bit compilers write them
...
git-svn-id: trunk@31371 -
2015-08-22 19:07:04 +00:00
nickysn
e09ab50724
* capitalize the group name 'DGROUP' in the generated omf object files, because
...
that's how it is usually written by other 16-bit compilers
git-svn-id: trunk@31369 -
2015-08-22 16:28:36 +00:00
nickysn
70677e3e44
+ added a descendant class for omf section groups, which adds base address, size
...
and a method to calculate these new fields
git-svn-id: trunk@31363 -
2015-08-22 12:23:49 +00:00
marco
f59b88f6f8
* Add support for libraries with C linking under Haiku
...
Patch by Olivier, mantis #28558
git-svn-id: trunk@31362 -
2015-08-22 12:23:15 +00:00
nickysn
b74a104e48
* instantiate TObjSectionGroup through a class type, to allow using a child
...
class for certain object formats
git-svn-id: trunk@31360 -
2015-08-22 11:27:22 +00:00
nickysn
9aeb94676c
+ added virtual method to tobjsection for returning a string representation of
...
the section's base address for the internal linker map file
* implemented it for omf sections to return the address in 'seg:ofs' format
git-svn-id: trunk@31359 -
2015-08-21 16:21:16 +00:00
nickysn
a762532ae1
* changed the MemPos field in TObjSection and TExeSection from aword to qword:
...
1) aword follows the ALU size of the CPU, not the address size
2) it is already qword in TExeOutput and its methods and there's already
MaxMemPos to check if the limits of the platform/exe format have been
exceeded
git-svn-id: trunk@31357 -
2015-08-21 14:13:27 +00:00
nickysn
157345c9c2
+ obtain and return the internal module name in brackets in the internal omf
...
library reader (just like the internal .ar reader does)
git-svn-id: trunk@31355 -
2015-08-20 23:24:54 +00:00
nickysn
808b5dfb78
* allow gaps between LEDATA records, as nasm seems to produce them. They're
...
automatically filled with zeros. This fixes reading of the tiny memory model
startup code object module by the i8086-msdos internal linker.
git-svn-id: trunk@31354 -
2015-08-20 22:57:15 +00:00
nickysn
1b9eeee25d
+ order omf sections first by classname, then by name
...
git-svn-id: trunk@31352 -
2015-08-20 21:21:52 +00:00
nickysn
eed7e3aa6b
+ implemented GetCode/Data/BssSize in the i8086-msdos internal linker
...
git-svn-id: trunk@31351 -
2015-08-20 21:11:09 +00:00
nickysn
7d586df038
* override DoRelocationFixup in TMZExeOutput - doing nothing for now, but
...
prevents the "abstract method called" error
git-svn-id: trunk@31350 -
2015-08-20 20:55:24 +00:00
nickysn
0fb92b803b
* set the MZ exe section limit to 640k
...
git-svn-id: trunk@31348 -
2015-08-20 15:01:39 +00:00
nickysn
07fff73527
* fixed the "Incompatible section options" error when using the omf internal linker to produce msdos executables
...
git-svn-id: trunk@31347 -
2015-08-20 14:50:59 +00:00
nickysn
a4c188ff01
+ partial implementation of omf fixup reading
...
git-svn-id: trunk@31346 -
2015-08-19 15:55:03 +00:00
Jonas Maebe
4c5191f5d7
* generate LLVM typedefs for file-typed data
...
git-svn-id: trunk@31344 -
2015-08-18 16:10:29 +00:00
Jonas Maebe
2cf17c0487
* don't generate DWARF cfi when targeting LLVM, it will do that itself
...
git-svn-id: trunk@31343 -
2015-08-18 16:09:44 +00:00
nickysn
6d6ed840a4
* set the data record start offset of the omf fixup object when reading omf fixups
...
git-svn-id: trunk@31342 -
2015-08-18 15:18:03 +00:00
nickysn
ebde434255
* specify the proper segment ordering in the link script of the i8086-msdos
...
internal linker
git-svn-id: trunk@31341 -
2015-08-18 14:44:00 +00:00
nickysn
cbc676e80e
* ignore case (i.e. always convert to upper case) in omf segment/class/overlay/group names
...
git-svn-id: trunk@31340 -
2015-08-18 14:41:29 +00:00
nickysn
d4b0b6f6e6
* use SegmentName+'||'+ClassName for the name of OMF sections when reading OMF
...
files, because omf segments are (according to the spec) identified by the
tuple <SegmentName,ClassName,OverlayName> and not just by name (and we ignore
the overlay name)
git-svn-id: trunk@31339 -
2015-08-18 14:31:59 +00:00
nickysn
0dab94e35d
* i8086-msdos internal linker: put the static libraries in a group, to enable
...
multiple passes when resolving symbols
git-svn-id: trunk@31338 -
2015-08-18 13:37:57 +00:00
nickysn
3c0d83bd74
* fixed reading of OMF library dictionary
...
git-svn-id: trunk@31337 -
2015-08-17 13:03:57 +00:00