Alexey Kardashevskiy
151322c24e
powerpc/64: Add UADDR64 relocation support
...
commit d799769188 upstream.
When ld detects unaligned relocations, it emits R_PPC64_UADDR64
relocations instead of R_PPC64_RELATIVE. Currently R_PPC64_UADDR64 are
detected by arch/powerpc/tools/relocs_check.sh and expected not to work.
Below is a simple chunk to trigger this behaviour (this disables
optimization for the demonstration purposes only, this also happens with
-O1/-O2 when CONFIG_PRINTK_INDEX=y, for example):
\#pragma GCC push_options
\#pragma GCC optimize ("O0")
struct entry {
const char *file;
int line;
} __attribute__((packed));
static const struct entry e1 = { .file = __FILE__, .line = __LINE__ };
static const struct entry e2 = { .file = __FILE__, .line = __LINE__ };
...
prom_printf("e1=%s %lx %lx\n", e1.file, (unsigned long) e1.file, mfmsr());
prom_printf("e2=%s %lx\n", e2.file, (unsigned long) e2.file);
\#pragma GCC pop_options
This adds support for UADDR64 for 64bit. This reuses __dynamic_symtab
from the 32bit code which supports more relocation types already.
Because RELACOUNT includes only R_PPC64_RELATIVE, this replaces it with
RELASZ which is the size of all relocation records.
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru >
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au >
Cc: Nathan Chancellor <nathan@kernel.org >
Link: https://lore.kernel.org/r/20220309061822.168173-1-aik@ozlabs.ru
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2022-05-09 09:14:44 +02:00
..
2021-08-26 21:21:07 +10:00
2021-09-08 15:32:35 -07:00
2021-06-17 00:09:00 +10:00
2021-04-30 12:22:28 -07:00
2021-07-29 23:13:12 +10:00
2020-03-25 11:50:48 +01:00
2021-04-21 22:52:33 +10:00
2021-09-03 22:54:12 +10:00
2017-11-02 11:10:55 +01:00
2022-01-27 11:04:57 +01:00
2021-08-04 10:53:39 +10:00
2019-06-15 16:52:06 +10:00
2017-11-02 11:10:55 +01:00
2020-06-02 20:59:11 +10:00
2019-05-30 11:26:32 -07:00
2020-12-05 21:49:18 +11:00
2019-06-05 17:37:06 +02:00
2020-12-04 01:01:29 +11:00
2019-05-30 11:26:32 -07:00
2021-01-29 10:05:51 +05:30
2021-06-17 00:09:00 +10:00
2021-08-13 22:04:26 +10:00
2021-02-09 00:10:49 +11:00
2021-09-30 17:10:17 +10:00
2019-02-18 22:41:03 +11:00
2019-05-30 11:26:32 -07:00
2021-01-29 10:05:51 +05:30
2019-11-13 19:27:40 +11:00
2021-08-13 22:04:26 +10:00
2020-08-07 18:48:15 -07:00
2019-09-14 00:01:14 +10:00
2020-10-07 22:34:47 +11:00
2020-07-26 23:34:20 +10:00
2021-08-13 22:04:26 +10:00
2021-08-25 13:35:47 +10:00
2021-08-15 13:49:24 +10:00
2019-05-30 11:26:32 -07:00
2021-06-17 00:09:00 +10:00
2021-08-26 21:21:07 +10:00
2021-10-07 19:54:55 +11:00
2022-01-27 11:05:02 +01:00
2021-11-18 19:16:51 +01:00
2021-08-18 23:49:55 +10:00
2021-08-25 13:35:47 +10:00
2021-11-25 09:48:44 +01:00
2021-12-01 09:04:44 +01:00
2022-01-27 11:05:01 +01:00
2021-08-25 13:35:47 +10:00
2021-07-26 20:38:51 +10:00
2022-02-23 12:03:14 +01:00
2021-11-18 19:17:19 +01:00
2021-09-03 11:22:50 -07:00
2021-04-03 21:21:41 +11:00
2021-08-13 22:04:26 +10:00
2021-03-29 13:22:10 +11:00
2019-05-30 11:26:32 -07:00
2021-10-20 21:37:58 +11:00
2021-03-29 13:22:10 +11:00
2020-11-24 16:47:35 +01:00
2020-05-07 17:25:54 +10:00
2022-02-01 17:27:09 +01:00
2022-01-27 11:03:22 +01:00
2021-05-28 22:54:27 +10:00
2019-05-30 11:26:32 -07:00
2020-12-04 01:01:09 +11:00
2021-09-03 11:22:50 -07:00
2021-10-07 19:54:55 +11:00
2021-04-30 11:20:40 -07:00
2021-06-17 00:09:00 +10:00
2021-08-13 22:04:26 +10:00
2021-06-25 00:06:55 +10:00
2021-06-25 00:06:55 +10:00
2021-08-09 16:31:54 +10:00
2019-09-14 00:04:40 +10:00
2022-05-01 17:22:28 +02:00
2020-10-08 21:17:13 +11:00
2021-05-12 11:07:39 +10:00
2022-02-01 17:27:06 +01:00
2021-06-21 21:13:19 +10:00
2021-09-13 22:34:12 +10:00
2021-08-25 13:35:47 +10:00
2021-08-25 13:35:47 +10:00
2021-08-25 13:35:47 +10:00
2021-06-16 00:16:48 +10:00
2021-12-22 09:32:49 +01:00
2022-01-27 11:04:08 +01:00
2019-05-30 11:26:32 -07:00
2019-08-30 09:40:15 +10:00
2021-03-08 11:43:27 +01:00
2020-07-26 23:34:19 +10:00
2021-04-21 22:52:32 +10:00
2021-06-25 14:46:51 +10:00
2021-05-17 15:27:15 +10:00
2019-08-22 23:11:48 +10:00
2021-04-30 11:20:40 -07:00
2021-02-09 00:01:05 +11:00
2020-01-06 16:25:29 +11:00
2021-08-10 23:14:57 +10:00
2020-05-18 21:58:44 +10:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-04-04 21:40:57 +11:00
2020-02-04 03:05:26 +00:00
2021-08-26 21:21:07 +10:00
2019-10-29 15:12:17 +11:00
2022-01-27 11:04:06 +01:00
2017-11-02 11:10:55 +01:00
2021-09-03 15:33:47 -07:00
2021-08-25 13:35:47 +10:00
2022-05-09 09:14:44 +02:00
2020-02-04 03:05:26 +00:00
2020-06-09 09:39:13 -07:00
2021-04-14 23:04:16 +10:00
2021-06-25 14:47:20 +10:00
2022-04-13 20:59:03 +02:00
2021-08-10 23:14:56 +10:00
2020-07-16 14:49:53 +10:00
2021-10-07 19:52:58 +11:00
2019-11-13 00:33:22 +11:00
2022-04-13 20:59:08 +02:00
2021-06-17 00:09:00 +10:00
2021-08-13 22:04:26 +10:00
2021-08-13 22:04:26 +10:00
2021-02-09 00:10:50 +11:00
2022-05-01 17:22:28 +02:00
2022-05-01 17:22:28 +02:00
2021-09-22 10:24:01 -04:00
2021-11-25 09:48:44 +01:00
2017-11-02 11:10:55 +01:00
2022-01-27 11:05:02 +01:00
2021-08-03 22:33:37 +10:00
2019-06-14 10:48:56 +02:00
2020-06-02 20:59:11 +10:00
2019-06-19 17:11:22 +02:00
2019-06-19 17:11:22 +02:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:32 -07:00
2021-02-11 23:35:07 +11:00
2021-08-25 13:35:48 +10:00
2021-08-07 08:53:59 +10:00
2019-05-30 11:26:32 -07:00
2021-04-14 23:04:16 +10:00
2021-08-20 17:00:53 +10:00
2021-09-03 22:54:12 +10:00
2020-10-06 23:22:25 +11:00
2021-10-07 19:54:55 +11:00
2019-08-30 09:40:15 +10:00
2021-06-21 21:16:31 +10:00
2021-08-19 09:02:55 +09:00
2021-06-25 00:06:55 +10:00
2021-01-30 22:23:42 +11:00
2021-01-30 22:23:42 +11:00
2021-04-14 23:04:44 +10:00
2020-05-19 00:10:37 +10:00
2021-08-18 23:49:55 +10:00
2022-05-09 09:14:44 +02:00
2022-01-27 11:04:57 +01:00