Momchil Velikov
50a97aacac
[AArch64] Async unwind - function prologues
...
Re-commit of 32e8b550e5439c7e4aafa73894faffd5f25d0d05
This patch rearranges emission of CFI instructions, so the resulting
DWARF and `.eh_frame` information is precise at every instruction.
The current state is that the unwind info is emitted only after the
function prologue. This is fine for synchronous (e.g. C++) exceptions,
but the information is generally incorrect when the program counter is
at an instruction in the prologue or the epilogue, for example:
```
stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
mov x29, sp
.cfi_def_cfa w29, 16
...
```
after the `stp` is executed the (initial) rule for the CFA still says
the CFA is in the `sp`, even though it's already offset by 16 bytes
A correct unwind info could look like:
```
stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
.cfi_def_cfa_offset 16
mov x29, sp
.cfi_def_cfa w29, 16
...
```
Having this information precise up to an instruction is useful for
sampling profilers that would like to get a stack backtrace. The end
goal (towards this patch is just a step) is to have fully working
`-fasynchronous-unwind-tables`.
Reviewed By: danielkiss, MaskRay
Differential Revision: https://reviews.llvm.org/D111411
2022-03-24 16:16:44 +00:00
..
2021-09-22 14:20:43 +01:00
2021-10-09 15:58:31 +01:00
2021-10-04 12:33:20 -07:00
2021-10-04 12:33:20 -07:00
2022-01-06 14:23:51 +01:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-10-11 11:55:11 +03:00
2022-03-14 10:09:59 -07:00
2021-06-30 16:54:13 -04:00
2020-02-14 10:45:58 -08:00
2021-09-20 13:00:58 +02:00
2022-01-24 09:26:52 -05:00
2020-09-30 10:35:25 -04:00
2022-03-24 16:16:44 +00:00
2020-02-07 15:32:54 -08:00
2021-10-11 11:55:11 +03:00
2021-12-23 14:30:02 +01:00
2021-08-02 14:48:44 -07:00
2021-06-30 16:54:13 -04:00
2021-08-02 14:48:44 -07:00
2020-02-13 10:16:06 -08:00
2021-06-30 16:54:13 -04:00
2020-12-09 12:47:51 -08:00
2021-10-04 12:33:20 -07:00
2022-03-24 16:16:44 +00:00
2021-10-11 11:55:11 +03:00
2021-10-20 12:11:52 -07:00
2021-03-09 11:34:26 -08:00
2021-06-30 16:54:13 -04:00
2020-09-01 08:50:06 -07:00
2021-03-09 11:08:02 -08:00
2020-09-16 10:34:15 -07:00
2021-06-30 16:54:13 -04:00
2020-09-16 10:34:15 -07:00
2020-09-16 10:34:15 -07:00
2020-09-16 10:34:15 -07:00
2020-09-16 10:34:15 -07:00
2021-09-03 09:25:37 -07:00
2020-10-28 12:27:07 -07:00
2020-07-31 10:13:36 -07:00
2020-01-29 13:39:00 -08:00
2021-09-30 14:31:25 -07:00
2021-09-28 16:59:43 -07:00
2022-01-20 17:02:52 +00:00
2021-12-09 12:38:16 -08:00
2020-07-31 10:13:36 -07:00
2022-02-20 00:53:09 -08:00
2020-05-12 15:32:18 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-08-07 01:41:02 -07:00
2020-09-08 09:46:38 -07:00
2020-09-23 09:07:50 -04:00
2022-02-17 13:41:57 +03:00
2021-10-12 11:31:22 -07:00
2021-10-12 11:31:22 -07:00
2020-09-14 17:27:23 -07:00
2020-04-22 17:03:40 -07:00
2021-06-30 16:54:13 -04:00
2021-08-30 12:33:03 -07:00
2022-01-05 20:02:39 +00:00
2020-09-30 10:35:25 -04:00
2020-02-06 14:41:40 +00:00
2020-06-11 13:50:56 -07:00
2021-06-30 16:54:13 -04:00
2020-04-03 09:05:19 +00:00
2020-05-11 16:25:03 -07:00
2020-10-01 15:34:16 -07:00
2020-10-14 16:49:33 -07:00
2021-03-18 16:01:02 -07:00
2021-06-30 16:54:13 -04:00
2020-10-22 15:27:36 -07:00
2021-06-01 10:56:17 -07:00
2021-04-29 21:54:19 -04:00
2021-10-18 10:33:01 -07:00
2021-08-05 13:52:10 +02:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-08-03 02:28:46 -07:00
2022-01-12 18:57:24 -05:00
2021-02-01 12:43:33 +00:00
2021-03-24 23:08:51 -07:00
2021-06-30 16:54:13 -04:00
2021-11-24 20:23:05 -05:00
2021-11-24 20:23:05 -05:00
2021-07-16 11:41:32 -04:00
2021-06-30 16:54:13 -04:00
2020-05-20 16:03:48 -07:00
2022-01-20 17:02:52 +00:00
2021-10-04 12:33:20 -07:00
2021-06-30 16:54:13 -04:00
2021-06-24 13:15:39 +03:00
2020-07-28 11:46:05 -04:00
2021-10-04 21:33:44 -07:00
2021-10-04 12:33:20 -07:00
2020-12-12 14:58:54 -08:00
2020-07-24 20:02:20 -04:00
2020-05-08 13:40:02 -07:00
2022-01-06 14:23:51 +01:00
2020-12-24 18:14:18 +07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2020-10-26 11:49:21 +01:00
2021-05-13 19:13:03 +01:00
2021-07-01 16:38:47 -07:00
2021-05-05 17:35:02 -04:00
2021-06-30 16:54:13 -04:00
2021-09-10 18:32:12 +02:00
2021-06-30 16:54:13 -04:00
2021-09-24 00:19:27 -07:00
2021-06-30 16:54:13 -04:00
2021-10-06 04:16:19 -07:00
2021-11-09 16:20:34 -08:00
2021-06-30 16:54:13 -04:00
2021-04-21 18:10:40 -07:00
2021-09-20 13:00:58 +02:00
2021-09-20 13:00:58 +02:00
2021-08-24 11:09:56 +02:00
2021-08-20 14:44:03 -07:00
2021-06-30 16:54:13 -04:00
2021-09-20 13:00:58 +02:00
2021-09-29 15:11:30 -07:00
2021-03-25 17:14:25 -07:00
2021-06-30 16:54:13 -04:00
2021-08-24 11:09:56 +02:00
2022-02-09 12:29:16 +00:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2021-08-05 09:40:46 -07:00
2021-07-28 15:31:33 -07:00
2021-03-23 12:49:10 -07:00
2021-04-19 10:56:02 -07:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2021-06-30 16:54:13 -04:00
2021-01-13 10:44:31 -05:00
2021-08-24 11:09:56 +02:00
2021-09-20 13:00:58 +02:00
2021-10-04 12:19:19 -07:00
2021-09-20 13:00:58 +02:00
2021-12-09 11:54:14 -08:00
2021-08-18 13:30:03 -07:00
2021-12-09 11:54:14 -08:00
2021-08-18 13:30:03 -07:00
2020-11-11 13:25:11 -08:00
2021-01-13 10:46:10 -05:00
2021-08-24 13:54:28 -07:00
2020-09-30 18:03:37 -07:00
2021-06-30 17:05:29 -04:00
2021-08-24 11:09:56 +02:00
2021-06-30 17:05:29 -04:00
2021-08-24 11:09:56 +02:00
2021-03-23 16:09:19 -07:00
2021-03-23 16:11:45 -07:00
2021-03-18 16:01:02 -07:00
2021-03-18 16:01:02 -07:00
2021-01-28 13:58:37 -08:00
2020-09-25 01:59:16 -07:00
2021-09-20 13:00:58 +02:00
2021-08-20 17:13:34 -07:00
2021-03-09 10:03:16 -08:00
2020-02-13 10:16:06 -08:00
2020-02-13 10:16:06 -08:00
2021-07-13 17:28:14 -07:00
2021-09-29 15:11:30 -07:00
2021-08-23 09:45:23 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-07-19 20:21:05 -04:00
2021-09-21 00:02:15 -07:00
2021-06-30 17:44:13 -04:00
2020-07-30 16:14:56 -07:00
2021-08-20 14:22:58 -07:00
2021-08-24 11:09:56 +02:00
2021-11-08 12:39:50 -06:00
2021-07-20 17:04:33 -07:00
2021-09-20 13:00:58 +02:00
2021-08-24 11:09:56 +02:00
2021-10-01 22:15:23 -07:00
2021-08-24 11:09:56 +02:00
2021-09-20 13:00:58 +02:00
2021-09-20 13:00:58 +02:00
2020-05-20 16:26:58 -07:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:02:01 -07:00
2021-06-30 16:54:13 -04:00
2021-10-05 00:39:29 -07:00
2021-03-30 11:19:21 -07:00
2021-08-24 11:09:56 +02:00
2021-10-10 17:01:21 -07:00
2021-10-05 10:20:10 +01:00
2021-03-30 11:11:19 -07:00
2021-10-04 12:33:20 -07:00
2021-09-20 13:00:58 +02:00
2021-09-20 13:00:58 +02:00
2021-12-23 14:30:02 +01:00
2021-04-02 11:11:06 -04:00
2021-08-24 11:09:56 +02:00
2021-06-30 16:54:13 -04:00
2020-06-19 13:20:41 -07:00
2021-06-30 16:54:13 -04:00
2020-07-09 17:13:16 -07:00
2021-09-20 13:00:58 +02:00
2021-12-23 14:30:02 +01:00
2021-08-24 11:09:56 +02:00
2021-09-20 13:00:58 +02:00
2021-09-20 13:00:58 +02:00
2021-12-23 14:30:02 +01:00
2021-01-25 22:02:31 -05:00
2021-08-24 11:09:56 +02:00
2021-09-20 13:00:58 +02:00
2021-09-20 13:00:58 +02:00
2021-04-02 11:11:06 -04:00
2021-08-05 18:21:14 -07:00
2021-09-20 13:00:58 +02:00
2021-08-24 11:09:56 +02:00
2021-09-20 13:00:58 +02:00
2021-09-20 13:00:58 +02:00
2021-06-30 16:54:13 -04:00
2021-08-10 13:11:03 +01:00
2021-08-24 11:09:56 +02:00
2021-06-30 16:54:13 -04:00
2021-08-24 11:09:56 +02:00
2021-08-24 11:09:56 +02:00
2022-02-11 12:08:23 -05:00
2021-03-17 18:02:08 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-05-10 15:40:06 -07:00
2021-10-18 10:33:01 -07:00
2021-10-09 21:18:20 -07:00
2021-03-17 15:08:08 -07:00
2021-06-30 16:54:13 -04:00
2020-12-01 15:45:14 -08:00
2020-03-05 11:13:02 -08:00
2020-12-08 10:42:05 -08:00
2021-05-18 10:00:00 -07:00
2020-03-05 11:13:02 -08:00
2020-01-31 11:09:55 -08:00
2021-09-06 11:12:07 +08:00
2021-09-28 17:13:34 -07:00
2021-06-30 16:54:13 -04:00
2020-10-14 16:49:33 -07:00
2021-08-30 12:33:03 -07:00
2021-08-11 13:59:23 -07:00
2021-01-28 16:34:34 -08:00
2021-10-01 15:01:20 -07:00
2021-07-26 14:53:33 -07:00
2020-08-15 13:44:30 -07:00
2021-07-26 15:17:11 -07:00
2021-07-26 10:58:04 -07:00
2021-06-30 16:54:13 -04:00
2021-12-20 19:11:48 -05:00
2021-06-30 16:54:13 -04:00
2020-10-22 15:27:36 -07:00
2021-03-08 13:01:10 -08:00
2020-10-22 14:43:25 -07:00
2020-10-22 14:43:25 -07:00
2021-02-23 11:55:16 -08:00
2021-03-09 11:36:26 -08:00
2020-10-22 14:43:25 -07:00
2021-04-09 15:46:48 -07:00
2020-10-22 14:43:25 -07:00
2021-07-20 00:04:34 -07:00
2020-10-22 14:43:25 -07:00
2021-03-08 13:01:10 -08:00
2020-10-22 14:43:25 -07:00
2021-06-30 16:54:13 -04:00
2020-11-03 17:25:14 -08:00
2020-08-11 10:40:06 -07:00
2021-02-10 15:30:45 -08:00
2021-09-08 10:09:02 -07:00
2021-07-26 15:17:11 -07:00
2021-06-30 16:54:13 -04:00
2020-10-23 10:18:36 -07:00
2022-02-03 14:25:15 -08:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-09-16 10:42:46 +02:00
2021-06-30 16:54:13 -04:00
2021-07-19 10:23:23 -07:00
2022-02-03 14:23:58 -08:00
2021-08-13 18:31:13 -07:00
2020-08-18 10:42:15 -07:00
2020-03-30 18:22:37 -07:00
2021-02-02 15:38:48 -08:00
2021-06-30 16:54:13 -04:00
2020-10-28 12:27:07 -07:00
2020-06-16 16:57:16 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-03-30 11:00:36 -07:00
2020-08-11 10:40:06 -07:00
2021-06-30 16:54:13 -04:00
2020-09-07 09:31:08 +01:00
2022-02-04 15:00:47 -08:00
2021-06-30 16:54:13 -04:00
2021-08-10 16:41:18 -07:00
2021-01-28 14:43:00 -08:00
2021-06-30 16:54:13 -04:00
2020-06-15 09:43:24 -07:00
2021-10-11 15:55:13 -07:00
2020-03-19 16:46:06 -07:00
2020-09-28 10:08:14 -07:00
2021-06-30 16:54:13 -04:00
2021-10-29 11:47:00 -07:00
2022-01-24 09:26:52 -05:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-02-21 21:17:29 -08:00
2020-09-17 11:50:33 -07:00
2021-05-14 10:41:38 +01:00
2021-04-21 18:11:30 -07:00
2021-12-09 12:52:32 -08:00
2021-12-09 12:52:32 -08:00
2021-06-30 16:54:13 -04:00
2021-07-16 10:11:10 +00:00
2021-06-30 16:54:13 -04:00
2021-08-23 10:32:20 -07:00
2021-08-20 14:31:14 -07:00
2021-08-18 13:32:19 -07:00
2021-08-18 13:32:19 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2020-10-16 10:42:15 -07:00
2021-03-02 17:31:13 -05:00
2021-07-31 14:09:59 -07:00
2021-08-24 11:09:56 +02:00
2021-04-21 18:10:40 -07:00
2021-09-09 14:31:49 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-11-30 15:28:35 -05:00
2020-07-08 17:16:27 -04:00
2021-06-17 12:52:59 -07:00
2021-06-10 10:33:52 -07:00
2021-10-05 23:06:22 -07:00
2021-06-30 16:54:13 -04:00
2021-08-26 11:45:11 -07:00
2021-06-30 16:54:13 -04:00
2021-10-21 13:51:44 -07:00
2021-06-30 16:54:13 -04:00
2021-08-05 09:40:46 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2020-09-09 13:08:16 -07:00
2021-03-23 12:49:10 -07:00
2021-04-13 11:03:39 -07:00
2021-12-05 15:55:59 -05:00
2021-03-08 13:01:10 -08:00
2021-05-11 12:38:53 -07:00
2021-06-30 16:54:13 -04:00
2021-09-23 23:07:16 -07:00
2022-01-05 20:02:39 +00:00
2022-01-05 20:02:39 +00:00
2020-11-03 17:25:14 -08:00
2021-01-15 22:53:25 -08:00
2021-06-30 16:54:13 -04:00
2021-09-10 19:36:34 -07:00
2021-04-22 15:03:17 +01:00
2022-01-05 20:02:39 +00:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-09-09 14:31:49 -04:00
2021-02-17 13:10:34 -08:00
2021-03-02 12:55:51 -08:00
2020-09-28 13:44:51 -07:00
2021-05-18 10:00:00 -07:00
2021-08-24 11:02:01 -07:00
2021-04-19 10:47:49 -07:00
2021-09-09 14:31:49 -04:00
2021-09-09 14:31:49 -04:00
2021-08-23 17:15:53 -07:00
2021-08-24 09:03:49 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-09-01 10:19:22 -07:00
2021-09-29 02:55:08 -07:00
2021-05-10 15:40:06 -07:00
2020-11-11 22:46:53 -08:00
2021-06-30 16:54:13 -04:00
2020-10-16 11:41:57 -07:00
2021-06-30 16:54:13 -04:00
2021-05-18 10:00:00 -07:00
2020-09-24 18:04:37 +01:00
2020-09-24 18:04:37 +01:00
2020-06-12 09:39:46 -07:00
2021-09-02 21:37:24 -07:00
2021-01-22 17:29:54 -08:00
2021-04-29 21:54:19 -04:00
2021-11-30 15:28:35 -05:00
2021-02-10 00:03:13 -08:00
2021-06-30 16:54:13 -04:00
2020-07-29 11:41:37 -07:00
2021-01-22 17:29:54 -08:00
2021-07-20 13:23:46 -07:00
2021-09-09 14:31:49 -04:00
2021-06-30 16:54:13 -04:00
2021-08-24 16:07:00 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2020-06-12 09:39:46 -07:00
2021-11-09 20:47:50 -08:00
2020-11-11 09:26:03 -08:00
2021-04-29 21:54:19 -04:00
2022-01-05 20:02:39 +00:00
2021-10-05 23:06:22 -07:00
2021-01-22 17:29:54 -08:00
2020-06-03 15:09:41 -07:00
2020-06-23 19:23:47 -07:00
2021-04-09 10:41:41 -07:00
2021-08-24 16:07:00 -07:00
2020-09-10 15:01:26 -07:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2020-06-02 18:57:11 -07:00
2021-09-09 14:31:49 -04:00
2021-06-30 16:54:13 -04:00
2020-12-07 17:24:23 -08:00
2021-07-16 11:41:32 -04:00
2022-03-14 13:48:51 -07:00
2021-11-15 21:10:39 -08:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-10-09 15:58:31 +01:00
2022-02-18 16:10:56 +00:00
2020-12-01 15:45:14 -08:00
2020-11-11 09:20:05 -08:00
2021-06-30 16:54:13 -04:00
2020-03-30 19:30:42 -04:00
2021-07-26 14:16:35 +01:00
2021-12-05 15:55:59 -05:00
2020-12-09 10:17:16 +00:00
2021-05-13 19:13:03 +01:00
2021-09-20 09:50:11 +01:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-02-22 13:58:44 -08:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00