Commit Graph

22289 Commits

Author SHA1 Message Date
florian
df4ec9e8e3 * arm-linux uses dwarf debug info by default
git-svn-id: trunk@43133 -
2019-10-05 20:48:30 +00:00
florian
a2d3522812 * general-dynamic -> global-dynamic
git-svn-id: trunk@43132 -
2019-10-05 20:48:29 +00:00
florian
7ee889d4ec * it must be decided in allocate_tls_register if a tls register is allocated
git-svn-id: trunk@43131 -
2019-10-05 20:48:28 +00:00
florian
16163b74ec + support for the gnu2 general-dynamic tls model on arm, use it instead of the gnu one as the gnu2 one can be relaxed (access optimizations by the linker)
+ support pic relocations in the internal assembler writer

git-svn-id: trunk@43128 -
2019-10-05 20:48:26 +00:00
florian
abb9401011 + tls models tlsm_general_dynamic and tlsm_local_exec for arm
git-svn-id: trunk@43127 -
2019-10-05 20:48:24 +00:00
florian
c3f4ad39a3 * it must be decided in g_maybe_tls_init if a tls is loaded
git-svn-id: trunk@43126 -
2019-10-05 20:48:24 +00:00
florian
988dce14c7 * cosmetics
git-svn-id: trunk@43125 -
2019-10-05 20:48:23 +00:00
florian
cffc69ec1d + support pi_needs_tls
git-svn-id: trunk@43124 -
2019-10-05 20:48:22 +00:00
florian
03dfc615dc + new relocations for arm tls
git-svn-id: trunk@43123 -
2019-10-05 20:48:21 +00:00
florian
03f7ef4c63 * renamed tls model switches and symbols to match gcc
git-svn-id: trunk@43122 -
2019-10-05 20:48:20 +00:00
svenbarth
3ae1b04d09 * disable the use of C-operators inside the compiler's sources
git-svn-id: trunk@43120 -
2019-10-05 09:42:52 +00:00
svenbarth
79bdee3278 * finally implement tdynamicarray.equal so that exact match comdat sections work as well
git-svn-id: trunk@43119 -
2019-10-05 09:42:49 +00:00
svenbarth
beb606be13 * fix for Mantis #36114: when converting a static class field to a global variable the varspez of the field needs to be respected
+ added test

git-svn-id: trunk@43116 -
2019-10-03 16:39:40 +00:00
svenbarth
562d345060 * fix for Mantis #36121: define FPC_ISO and FPC_EXTENDEDPASCAL for modes ISO and EXTENDEDPASCAL respectively
git-svn-id: trunk@43114 -
2019-10-03 12:34:36 +00:00
Jonas Maebe
49026e1261 * add "readonly" attribute for constant pointer parameters on LLVM
git-svn-id: trunk@43089 -
2019-09-29 10:29:57 +00:00
Jonas Maebe
b99323bb19 * fix LLVM compilation after r43076
git-svn-id: trunk@43088 -
2019-09-29 10:29:54 +00:00
florian
3949be6989 * be able to set an AT_* for datablocks
* set AT_TLS if needed

git-svn-id: trunk@43076 -
2019-09-25 21:19:07 +00:00
florian
11319353fd * loading a got depends only on the fact if a got is needed and not if pic shall be generated
git-svn-id: trunk@43075 -
2019-09-25 21:19:06 +00:00
florian
9e8bc7c935 * the general section threadvar model needs a got but pic is not required
git-svn-id: trunk@43074 -
2019-09-25 21:19:06 +00:00
florian
4064c5f39b * section thread vars need to be access with the symbol type AT_TLS
git-svn-id: trunk@43073 -
2019-09-25 21:19:05 +00:00
florian
d8e2db2691 + command line switch -CV to select the threadvar model for section threadvars
git-svn-id: trunk@43071 -
2019-09-25 21:19:04 +00:00
florian
56d91b4ca7 + support tls threadvars with the internal assembler
git-svn-id: trunk@43070 -
2019-09-25 21:19:03 +00:00
florian
f6667a5143 * we have to use __tls_get_addr from the dyn. linker lib else tls on programs with pure pascal dyn. libraries fail
git-svn-id: trunk@43069 -
2019-09-25 21:19:01 +00:00
florian
14b7eaa46f + x86-64: implemented support for relocation needed by tls threadvars in the binary elf writer
git-svn-id: trunk@43067 -
2019-09-25 21:18:59 +00:00
florian
bd1d6f335d * if we load a got depends only if one is needed, not if PIC is generated as this could be also caused by tls support
git-svn-id: trunk@43055 -
2019-09-22 15:27:51 +00:00
florian
02deb7d954 * try to avoid to use pic based calls
git-svn-id: trunk@43054 -
2019-09-22 15:27:50 +00:00
Károly Balogh
eb71d11b99 m68k: also handle OS_64 register sizes in cgsize2subreg
git-svn-id: trunk@43045 -
2019-09-20 13:48:30 +00:00
Károly Balogh
435b57bdb1 m68k: allow vecnode to use word size index registers
git-svn-id: trunk@43044 -
2019-09-20 11:37:18 +00:00
Károly Balogh
19a6964088 m68k: add subregisters. on 68k, these are not as universal as on x86 and work differently, but the compiler needs this infrastructure to do 16bit math (which is a massive improvement on '000) or word-size indexes on CPUs which support it
git-svn-id: trunk@43043 -
2019-09-20 11:35:35 +00:00
pierre
eb3a470f45 * assemble.pas (TInternalAssembler.TreePass0): Avoid range/overflow check error.
(TInternalAssembler.TreePass2): Check that objsymend and objsym are in same section
    and avoid range/overflow check error.

git-svn-id: trunk@43028 -
2019-09-17 21:06:18 +00:00
pierre
0fa70759a2 * cutils.pas (size_2_align): Move to..
globals.pas (size_2_align): ...here.
     Change parameter type to asizeuint to avoid overflows.
     (var_align_size, const_align_size): Also change parameter type to asizeuint.
     i386/cpupara.pas, i8086/cpupara.pas, x86_64/cpupara.pas: Add globals
     to implementation uses clause because of size_2_align move.

git-svn-id: trunk@43022 -
2019-09-16 14:50:43 +00:00
Jonas Maebe
9678542ba6 + add "thunk" attribute for stubs/thunks and emit it for LLVM
- also removed wrong "noreturn" attribute for interface thunks generated
     for high level code generator targets

git-svn-id: trunk@43018 -
2019-09-15 20:43:12 +00:00
Jonas Maebe
ff2d718699 * fixed occasional rounding error with currency constants on the LLVM targets
(fixes test/tcustomattr13.pp)

git-svn-id: trunk@43017 -
2019-09-15 20:43:09 +00:00
Jonas Maebe
4deb62ad87 * fix for "ldr label" support in AArch64 assembler reader (r42988)
git-svn-id: trunk@43016 -
2019-09-15 17:26:25 +00:00
florian
bfd83911e4 * set stack alignment for i386-linux to 16 byte boundaries, this implies a fixed stack layout inside the subroutine code as well
git-svn-id: trunk@43014 -
2019-09-15 17:17:33 +00:00
florian
26d8cc9142 + define FPC_STACKALIGNMENT
git-svn-id: trunk@43008 -
2019-09-15 17:17:28 +00:00
florian
896e031e84 * interrupt procedures fixed for i386 targets with a fixed stack with 16 byte alignment
git-svn-id: trunk@43006 -
2019-09-15 17:17:27 +00:00
Jonas Maebe
9e7cf37cd6 * changed resulttype and firstpass processing from recursion into loop, based
on patch/idea by J. Gareth Moreton (as part of his patch in #35857)

git-svn-id: trunk@43004 -
2019-09-15 16:18:14 +00:00
Jonas Maebe
78c901e3c4 * mention LLVM define
git-svn-id: trunk@43000 -
2019-09-14 17:31:11 +00:00
Jonas Maebe
a051b8d225 - remmoved doregister parameter from t*sym constructors, as the registration
is handled automatically nowadays

git-svn-id: trunk@42998 -
2019-09-14 17:30:45 +00:00
Jonas Maebe
d14fd51d0b * fix potential crash with copied goto nodes on nestedparentfp platforms
o as described in the comment for the tgotonode.labsym field, it will
     be null for copied gotonodes

git-svn-id: trunk@42997 -
2019-09-14 17:22:23 +00:00
svenbarth
61642ffaa4 * Aarch64 asm reader: explicitely set the refaddr for local labels
git-svn-id: trunk@42989 -
2019-09-13 20:38:25 +00:00
svenbarth
ef154fb454 * Aarch64 asm reader: LDR instruction allows labels as well
git-svn-id: trunk@42988 -
2019-09-13 20:38:22 +00:00
Jonas Maebe
ef6dde6de3 * fixed loading the address of a copied labelnode in a loadnode
(mantis #35877)

git-svn-id: trunk@42987 -
2019-09-13 19:06:40 +00:00
Jonas Maebe
e3e23df7e2 * document how tgotonode/tlabelnode copying works
git-svn-id: trunk@42986 -
2019-09-13 19:06:34 +00:00
florian
4e93a9a6c7 * AVR: patch by Christo Crause: fixes tcgavr.g_concatcopy for data with size>255, resolves #36066
git-svn-id: trunk@42977 -
2019-09-12 20:29:12 +00:00
florian
fa2e751f9f + AArch64: implementation of taarch64casenode.genlinearlist
git-svn-id: trunk@42973 -
2019-09-10 18:46:56 +00:00
florian
58eef0a5aa + AAarch64: TCpuAsmOptimizer.OptPass1Shift makes use of RemoveSuperfluousMove
git-svn-id: trunk@42971 -
2019-09-09 20:59:55 +00:00
Jonas Maebe
cdafe680c2 * different definitions for the same Objective-C class (can happen with
external class declarations) need a type conversion in LLVM (because
    they're represented by different LLVM types)

git-svn-id: trunk@42970 -
2019-09-09 18:33:37 +00:00
Jonas Maebe
dcf4e4cb2c * support taking the address of labels defined in assembler blocks in the
LLVM code genrator (for the rtti unit's thunk hacking)

git-svn-id: trunk@42969 -
2019-09-09 18:33:33 +00:00