Benjamin Teoh
b107ba426e
morello/disassembler: Fixed objdump of adrp inst with negative offset
...
When an adrp instruction references a symbol that is more than a page
in memory behind the instruction, it would have a negative offset.
An example of this is:
foo:
nop
.zero 4096
adrp c0, foo
where adrp references 'foo' that is more than a page in memory behind
it.
In the case where the offset is negative, when translating from its
binary format, the offset was seen as an unsigned integer, which
caused a spurious high bit set in the resolved address in the adrp
instruction like in:
0000000000400078 <foo>:
400078: d503201f nop
...
40107c: f0ffffe0 adrp c0, 100400000 <__bss_end__+0xfffeeff8>
There was an issue with how the imm field of the adrp instruction was
extracted in `aarch64_ext_imm`. The value was not sign extended
correctly for capability mode targets. This was caused by the imm
field having its `P` bit being removed before the sign extension,
which is exclusive to 64-bit capability targets. This was remedied
by shortening the width of the imm field before sign extending the
imm value, resulting in:
0000000000400078 <foo>:
400078: d503201f nop
...
40107c: f0ffffe0 adrp c0, 400000 <foo-0x78>
2023-12-06 18:40:59 +00:00
..
2020-08-12 11:25:38 +01:00
2022-04-07 11:00:36 +01:00
2020-10-20 15:03:52 -03:00
2020-10-20 15:03:41 -03:00
2022-04-07 11:00:36 +01:00
2023-12-06 18:40:59 +00:00
2020-10-20 15:03:41 -03:00
2020-02-26 10:37:25 +10:30
2022-04-07 11:00:36 +01:00
2022-04-07 11:00:36 +01:00
2020-10-20 15:03:52 -03:00
2023-05-17 12:44:32 +01:00
2020-02-26 10:37:25 +10:30
2020-01-01 18:42:54 +10:30
2020-07-14 14:51:15 +03:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-05-21 10:45:33 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-07-07 16:01:48 +03:00
2020-02-25 10:27:07 +02:00
2020-07-07 16:01:48 +03:00
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-09-18 10:04:23 -07:00
2020-09-18 10:04:23 -07:00
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-09-18 10:04:23 -07:00
2020-09-18 10:04:23 -07:00
2020-10-05 14:20:15 +01:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-10-05 14:20:15 +01:00
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2021-11-11 16:57:22 +00:00
2020-01-01 18:12:08 +10:30
2020-07-04 10:34:23 +01:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-08-30 20:49:32 +09:30
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-09-26 15:28:22 +09:30
2020-09-26 15:28:22 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-02-04 14:10:40 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-08-26 16:48:39 +02:00
2020-03-26 20:02:42 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-03-26 20:02:42 +10:30
2020-01-20 15:45:50 +10:30
2020-07-14 10:33:40 +02:00
2020-07-14 10:42:33 +02:00
2020-07-14 10:42:33 +02:00
2020-07-14 10:33:40 +02:00
2020-07-14 10:42:33 +02:00
2020-07-14 10:42:33 +02:00
2020-10-14 05:02:31 -07:00
2020-10-16 11:37:09 +08:00
2020-10-16 11:37:09 +08:00
2020-01-01 18:42:54 +10:30
2020-10-16 11:37:09 +08:00
2020-10-16 11:37:09 +08:00
2020-07-10 05:18:34 -07:00
2020-10-16 11:37:09 +08:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-04-21 16:53:36 +02:00
2020-01-10 17:32:33 +10:30
2020-01-01 18:42:54 +10:30
2020-01-10 17:32:33 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-03-09 08:23:46 -07:00
2020-03-09 08:23:46 -07:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-05-21 10:45:33 +09:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-03-20 12:35:51 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-02-26 10:37:25 +10:30
2020-01-01 18:42:54 +10:30
2020-03-20 12:35:51 +10:30
2020-01-01 18:42:54 +10:30
2020-02-26 10:37:25 +10:30
2020-05-28 22:08:42 +09:30
2020-01-01 18:42:54 +10:30
2020-05-28 21:11:32 +09:30
2020-01-01 18:42:54 +10:30
2020-01-17 12:34:03 -06:00
2020-05-19 20:41:03 +09:00
2020-06-04 16:17:42 +02:00
2020-05-19 20:41:03 +09:00
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-05-19 20:41:03 +09:00
2020-05-19 20:41:03 +09:00
2020-05-19 20:41:03 +09:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-09-16 16:41:33 +09:30
2020-08-19 08:47:35 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-30 09:54:55 +08:00
2020-06-22 10:01:14 +08:00
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-09-21 18:20:58 +09:30
2020-03-22 23:20:15 +10:30
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-07-29 19:46:44 +02:00
2020-01-01 18:42:54 +10:30
2020-05-26 18:15:41 +02:00
2020-01-13 12:12:41 +10:30
2020-01-13 12:12:41 +10:30
2020-01-01 18:42:54 +10:30
2020-04-29 13:13:55 +01:00
2020-04-29 16:09:38 +01:00
2020-05-21 10:45:33 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-05-21 10:45:33 +09:30
2020-01-01 18:42:54 +10:30
2020-10-05 14:20:15 +01:00
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-01-10 17:32:33 +10:30
2020-01-01 18:42:54 +10:30
2020-01-10 17:32:33 +10:30
2020-01-01 18:42:54 +10:30
2020-09-02 16:30:44 +09:30
2020-08-25 23:07:10 +09:30
2020-02-26 10:37:25 +10:30
2020-01-01 18:42:54 +10:30
2020-01-13 16:44:27 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-29 10:07:56 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-01-01 18:42:54 +10:30
2020-06-04 16:17:42 +02:00
2020-09-02 16:30:44 +09:30
2020-01-01 18:42:54 +10:30
2020-01-01 18:42:54 +10:30
2020-05-21 10:45:33 +09:30
2020-01-14 10:57:52 +10:30
2020-08-04 22:31:42 +02:00
2020-08-04 22:31:42 +02:00
2020-03-25 08:54:18 +10:30