/* Meta support for 32-bit ELF
- Copyright (C) 2013-2021 Free Software Foundation, Inc.
+ Copyright (C) 2013-2023 Free Software Foundation, Inc.
Contributed by Imagination Technologies Ltd.
This file is part of BFD, the Binary File Descriptor library.
/* High order 16 bit absolute. */
HOWTO (R_METAG_HIADDR16, /* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* Low order 16 bit absolute. */
HOWTO (R_METAG_LOADDR16, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* 32 bit absolute. */
HOWTO (R_METAG_ADDR32, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
/* No relocation. */
HOWTO (R_METAG_NONE, /* type */
0, /* rightshift */
- 3, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* size */
0, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
/* 19 bit pc relative */
HOWTO (R_METAG_RELBRANCH, /* type */
2, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
19, /* bitsize */
true, /* pc_relative */
5, /* bitpos */
/* GET/SET offset */
HOWTO (R_METAG_GETSETOFF, /* type */
0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 2, /* size */
12, /* bitsize */
false, /* pc_relative */
7, /* bitpos */
HOWTO (R_METAG_GNU_VTINHERIT, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
0, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_GNU_VTENTRY, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
0, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
/* High order 16 bit GOT offset */
HOWTO (R_METAG_HI16_GOTOFF, /* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* Low order 16 bit GOT offset */
HOWTO (R_METAG_LO16_GOTOFF, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* GET/SET GOT offset */
HOWTO (R_METAG_GETSET_GOTOFF, /* type */
0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 2, /* size */
12, /* bitsize */
false, /* pc_relative */
7, /* bitpos */
/* GET/SET GOT relative */
HOWTO (R_METAG_GETSET_GOT, /* type */
0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 2, /* size */
12, /* bitsize */
false, /* pc_relative */
7, /* bitpos */
/* High order 16 bit GOT reference */
HOWTO (R_METAG_HI16_GOTPC, /* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* Low order 16 bit GOT reference */
HOWTO (R_METAG_LO16_GOTPC, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* High order 16 bit PLT */
HOWTO (R_METAG_HI16_PLT, /* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* Low order 16 bit PLT */
HOWTO (R_METAG_LO16_PLT, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_RELBRANCH_PLT, /* type */
2, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
19, /* bitsize */
true, /* pc_relative */
5, /* bitpos */
/* Dummy relocs used by the linker internally. */
HOWTO (R_METAG_GOTOFF, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_PLT, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
run has to have the data at some particular address. */
HOWTO (R_METAG_COPY, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
/* Marks a procedure linkage table entry for a symbol. */
HOWTO (R_METAG_JMP_SLOT, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
addend. */
HOWTO (R_METAG_RELATIVE, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_GLOB_DAT, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_TLS_GD, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_LDM, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_LDO_HI16, /* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_LDO_LO16, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
/* Dummy reloc used by the linker internally. */
HOWTO (R_METAG_TLS_LDO, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_IE, /* type */
2, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
12, /* bitsize */
false, /* pc_relative */
7, /* bitpos */
/* Dummy reloc used by the linker internally. */
HOWTO (R_METAG_TLS_IENONPIC, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_IENONPIC_HI16,/* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_IENONPIC_LO16,/* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_TPOFF, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_TLS_DTPMOD, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_TLS_DTPOFF, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
/* Dummy reloc used by the linker internally. */
HOWTO (R_METAG_TLS_LE, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
32, /* bitsize */
false, /* pc_relative */
0, /* bitpos */
HOWTO (R_METAG_TLS_LE_HI16, /* type */
16, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
HOWTO (R_METAG_TLS_LE_LO16, /* type */
0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 4, /* size */
16, /* bitsize */
false, /* pc_relative */
3, /* bitpos */
section. The user should fix his linker script. */
if (hsh->target_section->output_section == NULL
&& info->non_contiguous_regions)
- info->callbacks->einfo (_("%F%P: Could not assign '%pA' to an output section. "
+ info->callbacks->einfo (_("%F%P: Could not assign `%pA' to an output section. "
"Retry without --enable-non-contiguous-regions.\n"),
hsh->target_section);
#define ELF_ARCH bfd_arch_metag
#define ELF_TARGET_ID METAG_ELF_DATA
#define ELF_MACHINE_CODE EM_METAG
-#define ELF_MINPAGESIZE 0x1000
-#define ELF_MAXPAGESIZE 0x4000
+#define ELF_MAXPAGESIZE 0x4000
#define ELF_COMMONPAGESIZE 0x1000
#define TARGET_LITTLE_SYM metag_elf32_vec