mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
* elf64-alpha.c (SKIP_HOWTO): New.
(elf64_alpha_howto_table): Use it to remove dead ECOFF relocs. Fix sizes of 16-bit mem format relocs. (elf64_alpha_reloc_map): Update to match. (elf64_alpha_relax_with_lituse): Use GPREL16 as appropriate. (elf64_alpha_relax_without_lituse): Likewise. (elf64_alpha_check_relocs): Handle GPREL16. (elf64_alpha_relocate_section): Likewise. * reloc.c (BFD_RELOC_ALPHA_USER_*): Remove. (BFD_RELOC_ALPHA_GPREL_HI16, BFD_RELOC_ALPHA_GPREL_LO16): New. * bfd-in2.h, libbfd.h: Rebuild.
This commit is contained in:
parent
e3883bf957
commit
dfe57ca0af
@ -1,3 +1,17 @@
|
||||
2001-09-04 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* elf64-alpha.c (SKIP_HOWTO): New.
|
||||
(elf64_alpha_howto_table): Use it to remove dead ECOFF relocs.
|
||||
Fix sizes of 16-bit mem format relocs.
|
||||
(elf64_alpha_reloc_map): Update to match.
|
||||
(elf64_alpha_relax_with_lituse): Use GPREL16 as appropriate.
|
||||
(elf64_alpha_relax_without_lituse): Likewise.
|
||||
(elf64_alpha_check_relocs): Handle GPREL16.
|
||||
(elf64_alpha_relocate_section): Likewise.
|
||||
* reloc.c (BFD_RELOC_ALPHA_USER_*): Remove.
|
||||
(BFD_RELOC_ALPHA_GPREL_HI16, BFD_RELOC_ALPHA_GPREL_LO16): New.
|
||||
* bfd-in2.h, libbfd.h: Rebuild.
|
||||
|
||||
2001-09-04 Jeff Law <law@redhat.com>
|
||||
|
||||
* elf32-h8300.c (elf32_h8_relax_section): New function.
|
||||
|
@ -2017,24 +2017,11 @@ as the absolute section symbol), and the "addend" indicates the type
|
||||
of instruction using the register:
|
||||
1 - "memory" fmt insn
|
||||
2 - byte-manipulation (byte offset reg)
|
||||
3 - jsr (target of branch)
|
||||
|
||||
The GNU linker currently doesn't do any of this optimizing. */
|
||||
3 - jsr (target of branch) */
|
||||
BFD_RELOC_ALPHA_LITERAL,
|
||||
BFD_RELOC_ALPHA_ELF_LITERAL,
|
||||
BFD_RELOC_ALPHA_LITUSE,
|
||||
|
||||
/* The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to
|
||||
process the explicit !<reloc>!sequence relocations, and are mapped
|
||||
into the normal relocations at the end of processing. */
|
||||
BFD_RELOC_ALPHA_USER_LITERAL,
|
||||
BFD_RELOC_ALPHA_USER_LITUSE_BASE,
|
||||
BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF,
|
||||
BFD_RELOC_ALPHA_USER_LITUSE_JSR,
|
||||
BFD_RELOC_ALPHA_USER_GPDISP,
|
||||
BFD_RELOC_ALPHA_USER_GPRELHIGH,
|
||||
BFD_RELOC_ALPHA_USER_GPRELLOW,
|
||||
|
||||
/* The HINT relocation indicates a value that should be filled into the
|
||||
"hint" field of a jmp/jsr/ret instruction, for possible branch-
|
||||
prediction logic which may be provided on some processors. */
|
||||
@ -2048,6 +2035,11 @@ which is filled by the linker. */
|
||||
which is filled by the linker. */
|
||||
BFD_RELOC_ALPHA_CODEADDR,
|
||||
|
||||
/* The GPREL_HI/LO relocations together form a 32-bit offset from the
|
||||
GP register. */
|
||||
BFD_RELOC_ALPHA_GPREL_HI16,
|
||||
BFD_RELOC_ALPHA_GPREL_LO16,
|
||||
|
||||
/* Bits 27..2 of the relocation address shifted right 2 bits;
|
||||
simple reloc otherwise. */
|
||||
BFD_RELOC_MIPS_JMP,
|
||||
|
@ -399,6 +399,9 @@ elf64_alpha_object_p (abfd)
|
||||
from smaller values. Start with zero, widen, *then* decrement. */
|
||||
#define MINUS_ONE (((bfd_vma)0) - 1)
|
||||
|
||||
#define SKIP_HOWTO(N) \
|
||||
HOWTO(N, 0, 0, 0, 0, 0, 0, elf64_alpha_reloc_bad, 0, 0, 0, 0, 0)
|
||||
|
||||
static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
{
|
||||
HOWTO (R_ALPHA_NONE, /* type */
|
||||
@ -465,7 +468,7 @@ static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
/* Used for an instruction that refers to memory off the GP register. */
|
||||
HOWTO (R_ALPHA_LITERAL, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
@ -486,7 +489,7 @@ static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
This does not actually do any relocation. */
|
||||
HOWTO (R_ALPHA_LITUSE, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
@ -546,7 +549,7 @@ static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
/* A hint for a jump to a register. */
|
||||
HOWTO (R_ALPHA_HINT, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
14, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
@ -603,99 +606,22 @@ static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
MINUS_ONE, /* dst_mask */
|
||||
true), /* pcrel_offset */
|
||||
|
||||
/* Push a value on the reloc evaluation stack. */
|
||||
/* Not implemented -- it's dumb. */
|
||||
HOWTO (R_ALPHA_OP_PUSH, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"OP_PUSH", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* Store the value from the stack at the given address. Store it in
|
||||
a bitfield of size r_size starting at bit position r_offset. */
|
||||
/* Not implemented -- it's dumb. */
|
||||
HOWTO (R_ALPHA_OP_STORE, /* type */
|
||||
0, /* rightshift */
|
||||
4, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
64, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"OP_STORE", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
MINUS_ONE, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* Subtract the reloc address from the value on the top of the
|
||||
relocation stack. */
|
||||
/* Not implemented -- it's dumb. */
|
||||
HOWTO (R_ALPHA_OP_PSUB, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"OP_PSUB", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* Shift the value on the top of the relocation stack right by the
|
||||
given value. */
|
||||
/* Not implemented -- it's dumb. */
|
||||
HOWTO (R_ALPHA_OP_PRSHIFT, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"OP_PRSHIFT", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* Change the value of GP used by +r_addend until the next GPVALUE or the
|
||||
end of the input bfd. */
|
||||
/* Not implemented -- it's dumb. */
|
||||
HOWTO (R_ALPHA_GPVALUE,
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"GPVALUE", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
/* Skip 12 - 16; deprecated ECOFF relocs. */
|
||||
SKIP_HOWTO (12),
|
||||
SKIP_HOWTO (13),
|
||||
SKIP_HOWTO (14),
|
||||
SKIP_HOWTO (15),
|
||||
SKIP_HOWTO (16),
|
||||
|
||||
/* The high 16 bits of the displacement from GP to the target. */
|
||||
HOWTO (R_ALPHA_GPRELHIGH,
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
0, /* special_function */
|
||||
"GPRELHIGH", /* name */
|
||||
false, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
@ -705,12 +631,12 @@ static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
/* The low 16 bits of the displacement from GP to the target. */
|
||||
HOWTO (R_ALPHA_GPRELLOW,
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
0, /* special_function */
|
||||
"GPRELLOW", /* name */
|
||||
false, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
@ -718,89 +644,25 @@ static reloc_howto_type elf64_alpha_howto_table[] =
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* A 16-bit displacement from the GP to the target. */
|
||||
/* XXX: Not implemented. */
|
||||
HOWTO (R_ALPHA_IMMED_GP_16,
|
||||
HOWTO (R_ALPHA_GPREL16,
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
0, /* special_function */
|
||||
"IMMED_GP_16", /* name */
|
||||
"GPREL16", /* name */
|
||||
false, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* The high bits of a 32-bit displacement from the GP to the target; the
|
||||
low bits are supplied in the subsequent R_ALPHA_IMMED_LO32 relocs. */
|
||||
/* XXX: Not implemented. */
|
||||
HOWTO (R_ALPHA_IMMED_GP_HI32,
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"IMMED_GP_HI32", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* The high bits of a 32-bit displacement to the starting address of the
|
||||
current section (the relocation target is ignored); the low bits are
|
||||
supplied in the subsequent R_ALPHA_IMMED_LO32 relocs. */
|
||||
/* XXX: Not implemented. */
|
||||
HOWTO (R_ALPHA_IMMED_SCN_HI32,
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"IMMED_SCN_HI32", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* The high bits of a 32-bit displacement from the previous br, bsr, jsr
|
||||
or jmp insn (as tagged by a BRADDR or HINT reloc) to the target; the
|
||||
low bits are supplied by subsequent R_ALPHA_IMMED_LO32 relocs. */
|
||||
/* XXX: Not implemented. */
|
||||
HOWTO (R_ALPHA_IMMED_BR_HI32,
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"IMMED_BR_HI32", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
/* The low 16 bits of a displacement calculated in a previous HI32 reloc. */
|
||||
/* XXX: Not implemented. */
|
||||
HOWTO (R_ALPHA_IMMED_LO32,
|
||||
0, /* rightshift */
|
||||
0, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
elf64_alpha_reloc_bad, /* special_function */
|
||||
"IMMED_LO32", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
/* Skip 20 - 23; deprecated ECOFF relocs. */
|
||||
SKIP_HOWTO (20),
|
||||
SKIP_HOWTO (21),
|
||||
SKIP_HOWTO (22),
|
||||
SKIP_HOWTO (23),
|
||||
|
||||
/* Misc ELF relocations. */
|
||||
|
||||
@ -1003,30 +865,22 @@ struct elf_reloc_map
|
||||
|
||||
static const struct elf_reloc_map elf64_alpha_reloc_map[] =
|
||||
{
|
||||
{BFD_RELOC_NONE, R_ALPHA_NONE},
|
||||
{BFD_RELOC_32, R_ALPHA_REFLONG},
|
||||
{BFD_RELOC_64, R_ALPHA_REFQUAD},
|
||||
{BFD_RELOC_CTOR, R_ALPHA_REFQUAD},
|
||||
{BFD_RELOC_GPREL32, R_ALPHA_GPREL32},
|
||||
{BFD_RELOC_ALPHA_ELF_LITERAL, R_ALPHA_LITERAL},
|
||||
{BFD_RELOC_ALPHA_LITUSE, R_ALPHA_LITUSE},
|
||||
{BFD_RELOC_ALPHA_GPDISP, R_ALPHA_GPDISP},
|
||||
{BFD_RELOC_23_PCREL_S2, R_ALPHA_BRADDR},
|
||||
{BFD_RELOC_ALPHA_HINT, R_ALPHA_HINT},
|
||||
{BFD_RELOC_16_PCREL, R_ALPHA_SREL16},
|
||||
{BFD_RELOC_32_PCREL, R_ALPHA_SREL32},
|
||||
{BFD_RELOC_64_PCREL, R_ALPHA_SREL64},
|
||||
|
||||
/* The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to process
|
||||
the explicit !<reloc>!sequence relocations, and are mapped into the normal
|
||||
relocations at the end of processing. */
|
||||
{BFD_RELOC_ALPHA_USER_LITERAL, R_ALPHA_LITERAL},
|
||||
{BFD_RELOC_ALPHA_USER_LITUSE_BASE, R_ALPHA_LITUSE},
|
||||
{BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF, R_ALPHA_LITUSE},
|
||||
{BFD_RELOC_ALPHA_USER_LITUSE_JSR, R_ALPHA_LITUSE},
|
||||
{BFD_RELOC_ALPHA_USER_GPDISP, R_ALPHA_GPDISP},
|
||||
{BFD_RELOC_ALPHA_USER_GPRELHIGH, R_ALPHA_GPRELHIGH},
|
||||
{BFD_RELOC_ALPHA_USER_GPRELLOW, R_ALPHA_GPRELLOW},
|
||||
{BFD_RELOC_NONE, R_ALPHA_NONE},
|
||||
{BFD_RELOC_32, R_ALPHA_REFLONG},
|
||||
{BFD_RELOC_64, R_ALPHA_REFQUAD},
|
||||
{BFD_RELOC_CTOR, R_ALPHA_REFQUAD},
|
||||
{BFD_RELOC_GPREL32, R_ALPHA_GPREL32},
|
||||
{BFD_RELOC_ALPHA_ELF_LITERAL, R_ALPHA_LITERAL},
|
||||
{BFD_RELOC_ALPHA_LITUSE, R_ALPHA_LITUSE},
|
||||
{BFD_RELOC_ALPHA_GPDISP, R_ALPHA_GPDISP},
|
||||
{BFD_RELOC_23_PCREL_S2, R_ALPHA_BRADDR},
|
||||
{BFD_RELOC_ALPHA_HINT, R_ALPHA_HINT},
|
||||
{BFD_RELOC_16_PCREL, R_ALPHA_SREL16},
|
||||
{BFD_RELOC_32_PCREL, R_ALPHA_SREL32},
|
||||
{BFD_RELOC_64_PCREL, R_ALPHA_SREL64},
|
||||
{BFD_RELOC_ALPHA_GPREL_HI16, R_ALPHA_GPRELHIGH},
|
||||
{BFD_RELOC_ALPHA_GPREL_LO16, R_ALPHA_GPRELLOW},
|
||||
{BFD_RELOC_GPREL16, R_ALPHA_GPREL16},
|
||||
};
|
||||
|
||||
/* Given a BFD reloc type, return a HOWTO structure. */
|
||||
@ -1205,7 +1059,7 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
|
||||
register from the literal insn. Leave the offset alone. */
|
||||
insn = (insn & 0xffe0ffff) | (lit_insn & 0x001f0000);
|
||||
urel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
|
||||
R_ALPHA_GPRELLOW);
|
||||
R_ALPHA_GPREL16);
|
||||
urel->r_addend = irel->r_addend;
|
||||
info->changed_relocs = true;
|
||||
|
||||
@ -1442,7 +1296,7 @@ elf64_alpha_relax_without_lituse (info, symval, irel)
|
||||
bfd_put_32 (info->abfd, insn, info->contents + irel->r_offset);
|
||||
info->changed_contents = true;
|
||||
|
||||
irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info), R_ALPHA_GPRELLOW);
|
||||
irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info), R_ALPHA_GPREL16);
|
||||
info->changed_relocs = true;
|
||||
|
||||
/* Reduce the use count on this got entry by one, possibly
|
||||
@ -2539,6 +2393,7 @@ elf64_alpha_check_relocs (abfd, info, sec, relocs)
|
||||
/* FALLTHRU */
|
||||
|
||||
case R_ALPHA_GPDISP:
|
||||
case R_ALPHA_GPREL16:
|
||||
case R_ALPHA_GPREL32:
|
||||
case R_ALPHA_GPRELHIGH:
|
||||
case R_ALPHA_GPRELLOW:
|
||||
@ -3560,13 +3415,6 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
}
|
||||
break;
|
||||
|
||||
case R_ALPHA_OP_PUSH:
|
||||
case R_ALPHA_OP_STORE:
|
||||
case R_ALPHA_OP_PSUB:
|
||||
case R_ALPHA_OP_PRSHIFT:
|
||||
/* We hate these silly beasts. */
|
||||
abort ();
|
||||
|
||||
case R_ALPHA_LITERAL:
|
||||
{
|
||||
struct alpha_elf_got_entry *gotent;
|
||||
@ -3637,6 +3485,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
|
||||
/* overflow handled by _bfd_final_link_relocate */
|
||||
goto default_reloc;
|
||||
|
||||
case R_ALPHA_GPREL16:
|
||||
case R_ALPHA_GPREL32:
|
||||
case R_ALPHA_GPRELLOW:
|
||||
BFD_ASSERT(gp != 0);
|
||||
|
@ -706,16 +706,11 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
|
||||
"BFD_RELOC_ALPHA_LITERAL",
|
||||
"BFD_RELOC_ALPHA_ELF_LITERAL",
|
||||
"BFD_RELOC_ALPHA_LITUSE",
|
||||
"BFD_RELOC_ALPHA_USER_LITERAL",
|
||||
"BFD_RELOC_ALPHA_USER_LITUSE_BASE",
|
||||
"BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF",
|
||||
"BFD_RELOC_ALPHA_USER_LITUSE_JSR",
|
||||
"BFD_RELOC_ALPHA_USER_GPDISP",
|
||||
"BFD_RELOC_ALPHA_USER_GPRELHIGH",
|
||||
"BFD_RELOC_ALPHA_USER_GPRELLOW",
|
||||
"BFD_RELOC_ALPHA_HINT",
|
||||
"BFD_RELOC_ALPHA_LINKAGE",
|
||||
"BFD_RELOC_ALPHA_CODEADDR",
|
||||
"BFD_RELOC_ALPHA_GPREL_HI16",
|
||||
"BFD_RELOC_ALPHA_GPREL_LO16",
|
||||
"BFD_RELOC_MIPS_JMP",
|
||||
"BFD_RELOC_MIPS16_JMP",
|
||||
"BFD_RELOC_MIPS16_GPREL",
|
||||
|
29
bfd/reloc.c
29
bfd/reloc.c
@ -1931,27 +1931,6 @@ ENUMDOC
|
||||
2 - byte-manipulation (byte offset reg)
|
||||
3 - jsr (target of branch)
|
||||
|
||||
The GNU linker currently doesn't do any of this optimizing.
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_ALPHA_USER_LITERAL
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_USER_LITUSE_BASE
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_USER_LITUSE_JSR
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_USER_GPDISP
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_USER_GPRELHIGH
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_USER_GPRELLOW
|
||||
ENUMDOC
|
||||
The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to
|
||||
process the explicit !<reloc>!sequence relocations, and are mapped
|
||||
into the normal relocations at the end of processing.
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_ALPHA_HINT
|
||||
ENUMDOC
|
||||
@ -1971,6 +1950,14 @@ ENUMDOC
|
||||
The CODEADDR relocation outputs a STO_CA in the object file,
|
||||
which is filled by the linker.
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_ALPHA_GPREL_HI16
|
||||
ENUMX
|
||||
BFD_RELOC_ALPHA_GPREL_LO16
|
||||
ENUMDOC
|
||||
The GPREL_HI/LO relocations together form a 32-bit offset from the
|
||||
GP register.
|
||||
|
||||
ENUM
|
||||
BFD_RELOC_MIPS_JMP
|
||||
ENUMDOC
|
||||
|
Loading…
Reference in New Issue
Block a user