Commit Graph

55464 Commits

Author SHA1 Message Date
florian
f66d7d431f * ensure that the label points inside the range where the raise is located for psabieh
git-svn-id: branches/debug_eh@41384 -
2019-02-19 22:19:30 +00:00
florian
b1cc02e417 * reraise has to reset the ref. count to 0
git-svn-id: branches/debug_eh@41383 -
2019-02-19 22:17:27 +00:00
florian
a8c8cc1890 * create proper cfi, when registers are pushed
git-svn-id: branches/debug_eh@41382 -
2019-02-19 22:16:39 +00:00
florian
38be96e586 * allow pointer+ord. const always if the node is created internally
git-svn-id: branches/debug_eh@41381 -
2019-02-19 22:16:05 +00:00
florian
9e67e7311a * change the exception address is only useful if a valid frame is passed
git-svn-id: branches/debug_eh@41377 -
2019-02-18 22:04:08 +00:00
florian
a24d75ed3d + comment explaining previous change
git-svn-id: branches/debug_eh@41376 -
2019-02-18 22:03:29 +00:00
florian
502febc968 * resume needs to be surrounded by an empty landing pad
git-svn-id: branches/debug_eh@41375 -
2019-02-18 21:46:55 +00:00
florian
0e25d6f00d * better debug messages
+ initial approach to handle addr and frame

git-svn-id: branches/debug_eh@41368 -
2019-02-17 21:45:18 +00:00
florian
9514bd9162 * refactored psabieh handling, most code is now in psabiehpi
git-svn-id: branches/debug_eh@41367 -
2019-02-17 21:20:40 +00:00
florian
c0c14d5362 * building on PowerPC fixed
git-svn-id: branches/debug_eh@41366 -
2019-02-17 21:14:27 +00:00
florian
3567d01ee4 * improved CFI
git-svn-id: branches/debug_eh@41356 -
2019-02-17 20:26:32 +00:00
florian
5587c878e6 * small fixes for pseabieh
+ raise node support for pseabieh

git-svn-id: branches/debug_eh@41355 -
2019-02-17 20:12:51 +00:00
florian
a3594574ca * in case of finally nodes of implicit frames with a third=nil, exit has to load 0 into the exception value, so an explicit exit call is not handled as an exception
git-svn-id: branches/debug_eh@41318 -
2019-02-14 22:30:40 +00:00
florian
a91f009b7e * cleanup
git-svn-id: branches/debug_eh@41309 -
2019-02-11 20:33:50 +00:00
florian
3b77146e1c * adapt FPC_Unwind_Exception for native eh_frame support
git-svn-id: branches/debug_eh@41307 -
2019-02-11 20:30:21 +00:00
florian
294c7c9daf * adapt identifiert name
* updates for eh_frame support on native targets
* improved messages

git-svn-id: branches/debug_eh@41306 -
2019-02-11 20:29:02 +00:00
florian
dcf9744f12 * reverts accidentally changed identifier spelling
git-svn-id: branches/debug_eh@41305 -
2019-02-11 20:27:29 +00:00
florian
6817cea33b + missing unit
git-svn-id: branches/debug_eh@41291 -
2019-02-10 22:37:54 +00:00
florian
6b0c2a45f5 * compilation fixes
git-svn-id: branches/debug_eh@41290 -
2019-02-10 19:33:14 +00:00
florian
65aebd22b0 + initial implementation of dwarf/eh_frame based exception handling for i386-linux, basic stuff works, open todos
* nested exception handling statments in one procedure need to be fixed
  * clean up, finally factor out tcgprocinfo from psub at least
  * extensive testing

git-svn-id: branches/debug_eh@41289 -
2019-02-10 18:07:33 +00:00
florian
501b384b17 + define psabieh to enable dwarf based exception handling
git-svn-id: branches/debug_eh@41288 -
2019-02-10 18:01:11 +00:00
florian
72a02b467c + generate more cfi on x86
git-svn-id: branches/debug_eh@41287 -
2019-02-10 18:00:24 +00:00
florian
65cece7657 + mark outmost frame in CFI
git-svn-id: branches/debug_eh@41286 -
2019-02-10 17:59:04 +00:00
florian
27ab140dd9 + gcc_except_table section
+ support exception related sections in the default LD linker script

git-svn-id: branches/debug_eh@41285 -
2019-02-10 17:57:48 +00:00
florian
b81cc7fbaf * set filepos better
git-svn-id: branches/debug_eh@41284 -
2019-02-10 17:53:52 +00:00
florian
e2c83edc2a + flag when a procedure generated exception table data
git-svn-id: branches/debug_eh@41283 -
2019-02-10 17:51:18 +00:00
florian
dfe37de0a1 * do not use push/pop based exception reason handling on i386 if dwarf based exceptions are used
git-svn-id: branches/debug_eh@41282 -
2019-02-10 17:49:40 +00:00
Jonas Maebe
a0831b058a * fixed LLVM para loading for byval paralocs that are preceded by other
paralocs

git-svn-id: branches/debug_eh@41217 -
2019-02-03 21:10:18 +00:00
Jonas Maebe
af098474f4 * keep track of the alignment requirements of parameters with LLVM, and emit
them when they are different from the default

git-svn-id: branches/debug_eh@41216 -
2019-02-03 21:10:14 +00:00
Jonas Maebe
016882ca82 * do not add references to external procedures and variables to the used
compiler symbols of the current module (useless, and moreover crashes
    clang)

git-svn-id: branches/debug_eh@41215 -
2019-02-03 21:10:11 +00:00
Jonas Maebe
1b48e6abe8 * _Unwind_SetGR/_Unwind_GetGR/_Unwind_SetIP/_Unwind_GetIP implementation for
ARM EABI

git-svn-id: branches/debug_eh@41214 -
2019-02-03 21:10:07 +00:00
Jonas Maebe
ef1757a5a7 + ARM EABI exception handling support for PSABIEH
git-svn-id: branches/debug_eh@41213 -
2019-02-03 21:10:04 +00:00
Jonas Maebe
d835a91a31 * detabbed
git-svn-id: branches/debug_eh@41212 -
2019-02-03 21:10:01 +00:00
Jonas Maebe
8eb07ed7b1 * add support for custom calling conventions to LLVM function declarations
git-svn-id: branches/debug_eh@41211 -
2019-02-03 21:09:58 +00:00
Jonas Maebe
9d07e4948f * fix compilation of ARM compiler for LLVM
git-svn-id: branches/debug_eh@41210 -
2019-02-03 21:09:54 +00:00
Jonas Maebe
7aa6a2ec81 * only make a copy of the finally code in pass_1 instead of in pass_typecheck,
to avoid an internalerror in case the finally code contains a goto outside
    the finally code (tbf/tb0209.pp)

git-svn-id: branches/debug_eh@41209 -
2019-02-03 21:09:51 +00:00
Jonas Maebe
d93c05a90c * synchronised with trunk till r41207
git-svn-id: branches/debug_eh@41208 -
2019-02-03 21:05:37 +00:00
Jonas Maebe
13ce27cc1d * fixed the default external assembler for llvm when using -s
git-svn-id: trunk@41207 -
2019-02-03 21:01:13 +00:00
Jonas Maebe
1abea6451c * fixed thlcgobj.g_rangecheck() for cpuhighleveltarget when targetting a
cpu32bitalu

git-svn-id: trunk@41206 -
2019-02-03 21:01:08 +00:00
Jonas Maebe
7af95cbf06 * LLVM does not support 128 bits arithmetic on 32 bit platforms, which we
need for overflow checking -> use RTL built-ins

git-svn-id: trunk@41205 -
2019-02-03 21:01:02 +00:00
Jonas Maebe
353be907c7 * update the stack alignment field of parameters when doing so for paralocs
git-svn-id: trunk@41204 -
2019-02-03 21:00:57 +00:00
Jonas Maebe
7a65e1f393 * fixed ARM paraloc defs (for LLVM)
git-svn-id: trunk@41203 -
2019-02-03 21:00:51 +00:00
Jonas Maebe
da0deae9ae * removed unnecessary replacements of the paraloc def with arraydefs on ARM
git-svn-id: trunk@41202 -
2019-02-03 21:00:46 +00:00
Jonas Maebe
8c362eac67 * always emit UAL when using LLVM (clang does not and will not support
pre-UAL)

git-svn-id: trunk@41201 -
2019-02-03 21:00:41 +00:00
Jonas Maebe
ab51e8637c * set default Mac OS X target version to 10.6 for LLVM (earlier versions did
not include libunwind in libSystem, causing linking errors when compiling
    on later versions)

git-svn-id: trunk@41200 -
2019-02-03 21:00:36 +00:00
Jonas Maebe
f9668f8c03 * let de LLVM parameter manager merge multiple paralocs used to represent a
single ordinal, as such splitting is handled by LLVM itself (and handling
    such split locations is currently not supported by our LLVM code generator)

git-svn-id: trunk@41199 -
2019-02-03 21:00:28 +00:00
Jonas Maebe
503ea604f3 + nolinline modifier to specify that a routine must never be inlined
git-svn-id: trunk@41198 -
2019-02-03 21:00:17 +00:00
joost
5341f6fc7a * Fixed the user-repository path on Windows
git-svn-id: trunk@41197 -
2019-02-03 20:08:21 +00:00
nickysn
1d7ff66602 + added .Sort() overloads with a SortingAlgorithm parameter to TFPGList,
TFPGObjectList, TFPGInterfacedObjectList and TFPSMap

git-svn-id: trunk@41196 -
2019-02-03 19:49:35 +00:00
nickysn
5c4af27a7a + added test for the sortbase unit
git-svn-id: trunk@41195 -
2019-02-03 19:16:48 +00:00