Michael Matz
13a3cad698
PR30437 aarch64: make RELA relocs idempotent
...
normally RELA relocs in BFD should not consider the contents of the
relocated place. The aarch64 psABI is even stricter, it specifies
(section 5.7.16) that all RELA relocs _must_ be idempotent.
Since the inception of the aarch64 BFD backend all the relocs have a
non-zero src_mask, and hence break this invariant. It's normally not
a very visible problem as one can see it only when the relocated place
already contains a non-zero value, which usually only happens sometimes
when using 'ld -r' (or as in the testcase when jumping through hoops to
generate the relocations). Or with alternative toolchains that do encode
stuff in the relocated places with the assumption that a relocation
to that place ignores whatever is there (as they can according to
the psABI).
Golang is such a toolchain and https://github.com/golang/go/issues/39927
is ultimately caused by this problem: the testcase testGCData failing
is caused by the garbage collection data-structure to describe a type
containing pointers to be wrong. It's wrong because a field that's
supposed to contain a file-relative offset (to some gcbits) has a
relocation applied and that relocation has an addend which also is
already part of the go-produced object file (so the addend is
implicitely applied twice).
bfd/
PR ld/30437
* elfnn-aarch64.c (elfNN_aarch64_howto_table): Clear src_mask
if all relocation descriptors.
ld/
* testsuite/ld-aarch64/rela-idempotent.s: New testcase.
* testsuite/ld-aarch64/rela-idempotent.d: New.
* testsuite/ld-aarch64/aarch64-elf.exp: Run it.
2023-05-23 16:43:14 +02:00
..
2023-05-23 16:43:14 +02:00
2023-03-16 15:01:05 +01:00
2023-03-23 12:49:32 +00:00
2023-03-23 12:49:32 +00:00
2023-03-23 12:49:32 +00:00
2023-03-23 12:49:32 +00:00
2023-03-23 12:49:32 +00:00
2023-03-23 12:49:32 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-03-21 16:20:21 +00:00
2019-11-07 11:55:28 +10:30
2019-03-13 11:47:07 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2023-01-04 09:30:14 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-03-13 11:47:07 +00:00
2019-03-13 11:47:07 +00:00
2019-11-07 11:55:28 +10:30
2017-06-15 17:04:04 +01:00
2017-06-15 17:04:04 +01:00
2017-06-15 17:04:04 +01:00
2017-06-15 17:04:04 +01:00
2014-08-26 15:48:47 +01:00
2022-06-22 10:55:12 -07:00
2017-06-15 17:04:04 +01:00
2014-08-26 15:48:47 +01:00
2021-11-15 11:09:17 -08:00
2015-06-23 12:12:06 +01:00
2014-08-26 15:06:49 +01:00
2014-08-26 15:06:49 +01:00
2014-08-26 15:06:49 +01:00
2023-03-16 15:01:05 +01:00
2019-06-14 12:02:19 +01:00
2023-03-16 15:01:05 +01:00
2019-06-14 12:02:19 +01:00
2023-03-16 15:01:05 +01:00
2015-06-01 15:45:25 +01:00
2023-03-16 15:01:05 +01:00
2015-08-11 21:26:41 +01:00
2023-03-16 15:01:05 +01:00
2015-08-11 21:26:41 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:40:18 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:40:18 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:40:18 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:40:18 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:40:18 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:40:18 +01:00
2023-03-16 15:01:05 +01:00
2015-08-19 16:30:47 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2023-03-16 15:01:05 +01:00
2018-03-28 18:08:51 +01:00
2019-11-07 11:55:28 +10:30
2018-02-05 18:18:45 +00:00
2019-11-07 11:55:28 +10:30
2018-02-05 18:18:45 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-02-26 18:00:15 +00:00
2016-09-21 17:09:59 +01:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2018-01-24 16:20:05 +00:00
2016-09-21 17:11:52 +01:00
2016-09-21 17:11:52 +01:00
2015-10-02 17:56:07 +01:00
2016-09-21 17:11:52 +01:00
2016-09-21 17:11:52 +01:00
2015-10-02 17:56:07 +01:00
2013-07-02 06:37:33 +00:00
2013-07-02 06:37:33 +00:00
2013-07-03 17:26:36 +00:00
2016-09-21 17:11:52 +01:00
2016-09-21 17:11:52 +01:00
2015-10-02 17:56:07 +01:00
2013-07-02 06:39:26 +00:00
2013-07-02 06:37:33 +00:00
2016-09-21 17:11:52 +01:00
2015-06-02 14:01:29 +01:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2015-10-02 17:56:08 +01:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2015-10-02 17:56:08 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-19 16:40:18 +01:00
2015-08-11 21:26:41 +01:00
2015-08-11 21:26:41 +01:00
2015-08-11 21:26:41 +01:00
2015-08-11 21:26:41 +01:00
2015-08-19 16:30:47 +01:00
2015-08-19 16:30:47 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2018-06-20 14:47:37 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2016-09-21 17:11:52 +01:00
2015-08-19 16:57:38 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-06-20 14:47:37 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2018-03-28 18:08:51 +01:00
2020-09-10 21:42:37 +05:30
2020-05-19 11:07:52 +01:00
2014-07-08 09:29:06 +01:00
2014-07-08 09:29:06 +01:00
2014-09-11 00:15:51 +09:30
2020-01-02 14:08:27 +00:00
2018-03-02 10:49:20 +00:00
2014-10-24 11:39:35 +01:00
2020-04-30 15:47:30 +01:00
2018-11-27 12:42:22 +00:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2019-05-21 13:05:22 +01:00
2018-03-02 10:49:20 +00:00
2015-04-01 13:16:38 +01:00
2018-03-02 10:49:20 +00:00
2015-08-11 22:12:08 +01:00
2015-08-11 21:44:31 +01:00
2015-08-11 21:44:31 +01:00
2018-03-02 10:49:20 +00:00
2019-11-07 11:55:28 +10:30
2015-08-11 21:44:31 +01:00
2020-04-30 15:47:30 +01:00
2016-01-21 09:57:09 +00:00
2018-03-02 10:49:20 +00:00
2015-03-26 16:20:38 +00:00
2020-04-30 15:47:30 +01:00
2018-03-02 10:49:20 +00:00
2015-08-11 22:12:08 +01:00
2018-03-02 10:49:20 +00:00
2019-11-07 11:55:28 +10:30
2015-08-11 21:44:31 +01:00
2020-04-30 15:47:30 +01:00
2016-01-21 09:57:09 +00:00
2018-03-02 10:49:20 +00:00
2020-05-04 15:51:56 +01:00
2020-05-04 15:51:56 +01:00
2017-01-20 13:30:32 +00:00
2017-01-20 13:30:32 +00:00
2017-01-20 13:30:32 +00:00
2017-10-16 03:50:13 -07:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2017-12-13 15:15:50 +00:00
2013-07-03 17:26:36 +00:00
2017-10-16 03:50:13 -07:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2016-12-13 12:50:17 +00:00
2016-12-13 12:50:17 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2017-03-13 09:58:04 +00:00
2013-10-03 14:46:09 +00:00
2016-12-13 12:50:17 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2016-12-13 12:50:17 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2016-12-13 12:50:17 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2018-07-20 16:35:37 +01:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-10-03 14:46:09 +00:00
2019-11-07 11:55:28 +10:30
2013-11-26 15:24:54 +00:00
2013-12-11 21:05:36 +00:00
2013-11-26 15:25:11 +00:00
2016-03-07 15:40:50 +00:00
2016-03-07 15:40:50 +00:00
2016-12-13 12:50:17 +00:00
2016-12-13 12:50:17 +00:00
2014-09-11 00:15:51 +09:30
2023-03-16 15:01:05 +01:00
2023-03-16 15:01:05 +01:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2022-06-23 01:10:44 -07:00
2019-11-07 11:55:28 +10:30
2022-06-23 01:10:44 -07:00
2017-06-16 14:20:38 +01:00
2016-11-10 09:25:17 +00:00
2016-11-10 09:25:17 +00:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2015-10-01 14:27:56 +01:00
2015-01-13 11:18:10 +00:00
2015-01-13 11:18:10 +00:00
2021-11-15 11:09:17 -08:00
2018-03-07 14:47:27 +00:00
2021-11-15 11:09:17 -08:00
2018-02-05 18:18:45 +00:00
2019-11-07 11:55:28 +10:30
2019-03-13 11:47:00 +00:00
2019-08-08 17:04:31 +01:00
2019-03-13 11:47:00 +00:00
2019-08-08 17:04:31 +01:00
2019-06-06 12:27:41 +01:00
2019-06-06 12:27:41 +01:00
2019-06-06 12:27:41 +01:00
2022-06-23 01:04:39 -07:00
2015-07-27 11:48:48 +01:00
2022-06-22 10:55:12 -07:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2016-05-03 11:59:37 +01:00
2023-05-23 16:43:14 +02:00
2023-05-23 16:43:14 +02:00
2019-11-07 11:55:28 +10:30
2014-03-25 09:01:50 +00:00
2016-02-09 10:47:54 +00:00
2016-02-09 10:47:54 +00:00
2018-02-26 09:31:52 +10:30
2019-11-07 11:55:28 +10:30
2015-08-12 09:34:13 +08:00
2022-08-02 12:09:40 +01:00
2022-08-02 12:09:40 +01:00
2022-11-15 15:49:47 -08:00
2022-11-15 15:49:47 -08:00
2022-11-15 15:49:47 -08:00
2023-03-16 15:01:05 +01:00
2023-03-16 15:01:05 +01:00
2019-11-07 11:55:28 +10:30
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2015-10-02 17:56:09 +01:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2015-10-02 17:56:08 +01:00
2023-03-16 15:01:05 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2023-03-16 15:01:05 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2023-03-16 15:01:05 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2023-03-16 15:01:05 +01:00
2023-03-16 15:01:05 +01:00
2023-01-04 09:30:14 +00:00
2023-03-16 15:01:05 +01:00
2023-03-16 15:01:05 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2023-03-16 15:01:05 +01:00
2016-09-21 17:11:52 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2015-11-03 12:00:10 +00:00
2015-11-03 12:00:10 +00:00
2015-10-02 17:56:09 +01:00
2015-11-03 12:00:10 +00:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2015-11-03 12:00:10 +00:00
2015-11-03 12:00:10 +00:00
2015-10-02 17:56:09 +01:00
2023-03-16 15:01:05 +01:00
2015-09-09 14:19:28 +01:00
2015-09-09 14:19:28 +01:00
2023-03-16 15:01:05 +01:00
2015-09-09 14:19:28 +01:00
2015-09-09 14:19:28 +01:00
2022-08-02 12:10:01 +01:00
2019-11-07 11:55:28 +10:30
2015-08-11 21:26:13 +01:00
2023-03-16 15:01:05 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2023-03-16 15:01:05 +01:00
2015-02-26 22:59:27 +00:00
2015-02-26 22:59:27 +00:00
2019-11-07 11:55:28 +10:30
2015-02-26 22:59:27 +00:00
2023-03-16 15:01:05 +01:00
2022-08-02 12:10:01 +01:00
2022-08-02 12:10:01 +01:00
2023-03-16 15:01:05 +01:00
2015-02-26 22:23:09 +00:00
2015-02-26 22:23:09 +00:00
2019-11-07 11:55:28 +10:30
2015-02-26 22:23:09 +00:00
2019-11-07 11:55:28 +10:30
2015-02-26 22:23:09 +00:00
2019-11-07 11:55:28 +10:30
2015-07-16 15:46:21 +01:00
2019-11-07 11:55:28 +10:30
2019-11-07 11:55:28 +10:30
2015-03-04 09:09:05 +00:00
2015-06-01 10:31:38 +01:00
2015-06-01 10:31:38 +01:00
2015-01-13 11:21:43 +00:00
2015-01-13 11:21:43 +00:00
2019-08-22 11:43:15 +01:00
2019-08-22 11:43:15 +01:00
2019-05-24 15:11:00 +01:00
2019-05-24 15:11:00 +01:00
2021-04-21 10:34:32 +01:00
2021-04-21 10:34:32 +01:00
2021-04-21 10:34:32 +01:00
2019-05-24 15:11:00 +01:00
2019-08-22 11:43:15 +01:00
2019-08-22 11:43:15 +01:00
2016-09-21 17:09:59 +01:00