Line 1... |
Line 1... |
/* BFD back-end for National Semiconductor's CRX ELF
|
/* BFD back-end for National Semiconductor's CRX ELF
|
Copyright 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
Copyright 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
|
Written by Tomer Levi, NSC, Israel.
|
Written by Tomer Levi, NSC, Israel.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
|
|
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
Line 102... |
Line 102... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REL4", /* name */
|
"R_CRX_REL4", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xf, /* src_mask */
|
0x0, /* src_mask */
|
0xf, /* dst_mask */
|
0xf, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REL8, /* type */
|
HOWTO (R_CRX_REL8, /* type */
|
1, /* rightshift */
|
1, /* rightshift */
|
Line 116... |
Line 116... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REL8", /* name */
|
"R_CRX_REL8", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xff, /* src_mask */
|
0x0, /* src_mask */
|
0xff, /* dst_mask */
|
0xff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REL8_CMP, /* type */
|
HOWTO (R_CRX_REL8_CMP, /* type */
|
1, /* rightshift */
|
1, /* rightshift */
|
Line 130... |
Line 130... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REL8_CMP", /* name */
|
"R_CRX_REL8_CMP", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xff, /* src_mask */
|
0x0, /* src_mask */
|
0xff, /* dst_mask */
|
0xff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REL16, /* type */
|
HOWTO (R_CRX_REL16, /* type */
|
1, /* rightshift */
|
1, /* rightshift */
|
Line 144... |
Line 144... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REL16", /* name */
|
"R_CRX_REL16", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REL24, /* type */
|
HOWTO (R_CRX_REL24, /* type */
|
1, /* rightshift */
|
1, /* rightshift */
|
Line 158... |
Line 158... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REL24", /* name */
|
"R_CRX_REL24", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffff, /* dst_mask */
|
0xffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REL32, /* type */
|
HOWTO (R_CRX_REL32, /* type */
|
1, /* rightshift */
|
1, /* rightshift */
|
Line 172... |
Line 172... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REL32", /* name */
|
"R_CRX_REL32", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REGREL12, /* type */
|
HOWTO (R_CRX_REGREL12, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 186... |
Line 186... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REGREL12", /* name */
|
"R_CRX_REGREL12", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xfff, /* src_mask */
|
0x0, /* src_mask */
|
0xfff, /* dst_mask */
|
0xfff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REGREL22, /* type */
|
HOWTO (R_CRX_REGREL22, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 200... |
Line 200... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REGREL22", /* name */
|
"R_CRX_REGREL22", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0x3fffff, /* src_mask */
|
0x0, /* src_mask */
|
0x3fffff, /* dst_mask */
|
0x3fffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REGREL28, /* type */
|
HOWTO (R_CRX_REGREL28, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 214... |
Line 214... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REGREL28", /* name */
|
"R_CRX_REGREL28", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xfffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xfffffff, /* dst_mask */
|
0xfffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_REGREL32, /* type */
|
HOWTO (R_CRX_REGREL32, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 228... |
Line 228... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_REGREL32", /* name */
|
"R_CRX_REGREL32", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_ABS16, /* type */
|
HOWTO (R_CRX_ABS16, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 242... |
Line 242... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_ABS16", /* name */
|
"R_CRX_ABS16", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_ABS32, /* type */
|
HOWTO (R_CRX_ABS32, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 256... |
Line 256... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_ABS32", /* name */
|
"R_CRX_ABS32", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_NUM8, /* type */
|
HOWTO (R_CRX_NUM8, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 270... |
Line 270... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_NUM8", /* name */
|
"R_CRX_NUM8", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xff, /* src_mask */
|
0x0, /* src_mask */
|
0xff, /* dst_mask */
|
0xff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_NUM16, /* type */
|
HOWTO (R_CRX_NUM16, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 284... |
Line 284... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_NUM16", /* name */
|
"R_CRX_NUM16", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_NUM32, /* type */
|
HOWTO (R_CRX_NUM32, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 298... |
Line 298... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_NUM32", /* name */
|
"R_CRX_NUM32", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_IMM16, /* type */
|
HOWTO (R_CRX_IMM16, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 312... |
Line 312... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_IMM16", /* name */
|
"R_CRX_IMM16", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
HOWTO (R_CRX_IMM32, /* type */
|
HOWTO (R_CRX_IMM32, /* type */
|
0, /* rightshift */
|
0, /* rightshift */
|
Line 326... |
Line 326... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
complain_overflow_bitfield,/* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_IMM32", /* name */
|
"R_CRX_IMM32", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
FALSE), /* pcrel_offset */
|
FALSE), /* pcrel_offset */
|
|
|
/* An 8 bit switch table entry. This is generated for an expression
|
/* An 8 bit switch table entry. This is generated for an expression
|
such as ``.byte L1 - L2''. The offset holds the difference
|
such as ``.byte L1 - L2''. The offset holds the difference
|
Line 343... |
Line 343... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_unsigned, /* complain_on_overflow */
|
complain_overflow_unsigned, /* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_SWITCH8", /* name */
|
"R_CRX_SWITCH8", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xff, /* src_mask */
|
0x0, /* src_mask */
|
0xff, /* dst_mask */
|
0xff, /* dst_mask */
|
TRUE), /* pcrel_offset */
|
TRUE), /* pcrel_offset */
|
|
|
/* A 16 bit switch table entry. This is generated for an expression
|
/* A 16 bit switch table entry. This is generated for an expression
|
such as ``.word L1 - L2''. The offset holds the difference
|
such as ``.word L1 - L2''. The offset holds the difference
|
Line 360... |
Line 360... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_unsigned, /* complain_on_overflow */
|
complain_overflow_unsigned, /* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_SWITCH16", /* name */
|
"R_CRX_SWITCH16", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffff, /* dst_mask */
|
0xffff, /* dst_mask */
|
TRUE), /* pcrel_offset */
|
TRUE), /* pcrel_offset */
|
|
|
/* A 32 bit switch table entry. This is generated for an expression
|
/* A 32 bit switch table entry. This is generated for an expression
|
such as ``.long L1 - L2''. The offset holds the difference
|
such as ``.long L1 - L2''. The offset holds the difference
|
Line 377... |
Line 377... |
0, /* bitpos */
|
0, /* bitpos */
|
complain_overflow_unsigned, /* complain_on_overflow */
|
complain_overflow_unsigned, /* complain_on_overflow */
|
bfd_elf_generic_reloc, /* special_function */
|
bfd_elf_generic_reloc, /* special_function */
|
"R_CRX_SWITCH32", /* name */
|
"R_CRX_SWITCH32", /* name */
|
FALSE, /* partial_inplace */
|
FALSE, /* partial_inplace */
|
0xffffffff, /* src_mask */
|
0x0, /* src_mask */
|
0xffffffff, /* dst_mask */
|
0xffffffff, /* dst_mask */
|
TRUE) /* pcrel_offset */
|
TRUE) /* pcrel_offset */
|
};
|
};
|
|
|
/* Retrieve a howto ptr using a BFD reloc_code. */
|
/* Retrieve a howto ptr using a BFD reloc_code. */
|