OLD | NEW |
1 /* MIPS-specific support for 32-bit ELF | 1 /* MIPS-specific support for 32-bit ELF |
2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, | 2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, |
3 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. | 3 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
4 | 4 |
5 Most of the information added by Ian Lance Taylor, Cygnus Support, | 5 Most of the information added by Ian Lance Taylor, Cygnus Support, |
6 <ian@cygnus.com>. | 6 <ian@cygnus.com>. |
7 N32/64 ABI support added by Mark Mitchell, CodeSourcery, LLC. | 7 N32/64 ABI support added by Mark Mitchell, CodeSourcery, LLC. |
8 <mark@codesourcery.com> | 8 <mark@codesourcery.com> |
9 Traditional MIPS targets support added by Koundinya.K, Dansk Data | 9 Traditional MIPS targets support added by Koundinya.K, Dansk Data |
10 Elektronik & Operations Research Group. <kk@ddeorg.soft.net> | 10 Elektronik & Operations Research Group. <kk@ddeorg.soft.net> |
(...skipping 1537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1548 16, /* bitsize */ | 1548 16, /* bitsize */ |
1549 FALSE, /* pc_relative */ | 1549 FALSE, /* pc_relative */ |
1550 0, /* bitpos */ | 1550 0, /* bitpos */ |
1551 complain_overflow_dont, /* complain_on_overflow */ | 1551 complain_overflow_dont, /* complain_on_overflow */ |
1552 _bfd_mips_elf_lo16_reloc, /* special_function */ | 1552 _bfd_mips_elf_lo16_reloc, /* special_function */ |
1553 "R_MIPS16_LO16", /* name */ | 1553 "R_MIPS16_LO16", /* name */ |
1554 TRUE, /* partial_inplace */ | 1554 TRUE, /* partial_inplace */ |
1555 0x0000ffff, /* src_mask */ | 1555 0x0000ffff, /* src_mask */ |
1556 0x0000ffff, /* dst_mask */ | 1556 0x0000ffff, /* dst_mask */ |
1557 FALSE), /* pcrel_offset */ | 1557 FALSE), /* pcrel_offset */ |
| 1558 |
| 1559 /* MIPS16 TLS general dynamic variable reference. */ |
| 1560 HOWTO (R_MIPS16_TLS_GD, /* type */ |
| 1561 0, /* rightshift */ |
| 1562 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1563 16, /* bitsize */ |
| 1564 FALSE, /* pc_relative */ |
| 1565 0, /* bitpos */ |
| 1566 complain_overflow_signed, /* complain_on_overflow */ |
| 1567 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1568 "R_MIPS16_TLS_GD", /* name */ |
| 1569 TRUE, /* partial_inplace */ |
| 1570 0x0000ffff, /* src_mask */ |
| 1571 0x0000ffff, /* dst_mask */ |
| 1572 FALSE), /* pcrel_offset */ |
| 1573 |
| 1574 /* MIPS16 TLS local dynamic variable reference. */ |
| 1575 HOWTO (R_MIPS16_TLS_LDM, /* type */ |
| 1576 0, /* rightshift */ |
| 1577 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1578 16, /* bitsize */ |
| 1579 FALSE, /* pc_relative */ |
| 1580 0, /* bitpos */ |
| 1581 complain_overflow_signed, /* complain_on_overflow */ |
| 1582 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1583 "R_MIPS16_TLS_LDM", /* name */ |
| 1584 TRUE, /* partial_inplace */ |
| 1585 0x0000ffff, /* src_mask */ |
| 1586 0x0000ffff, /* dst_mask */ |
| 1587 FALSE), /* pcrel_offset */ |
| 1588 |
| 1589 /* MIPS16 TLS local dynamic offset. */ |
| 1590 HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ |
| 1591 0, /* rightshift */ |
| 1592 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1593 16, /* bitsize */ |
| 1594 FALSE, /* pc_relative */ |
| 1595 0, /* bitpos */ |
| 1596 complain_overflow_signed, /* complain_on_overflow */ |
| 1597 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1598 "R_MIPS16_TLS_DTPREL_HI16", /* name */ |
| 1599 TRUE, /* partial_inplace */ |
| 1600 0x0000ffff, /* src_mask */ |
| 1601 0x0000ffff, /* dst_mask */ |
| 1602 FALSE), /* pcrel_offset */ |
| 1603 |
| 1604 /* MIPS16 TLS local dynamic offset. */ |
| 1605 HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ |
| 1606 0, /* rightshift */ |
| 1607 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1608 16, /* bitsize */ |
| 1609 FALSE, /* pc_relative */ |
| 1610 0, /* bitpos */ |
| 1611 complain_overflow_signed, /* complain_on_overflow */ |
| 1612 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1613 "R_MIPS16_TLS_DTPREL_LO16", /* name */ |
| 1614 TRUE, /* partial_inplace */ |
| 1615 0x0000ffff, /* src_mask */ |
| 1616 0x0000ffff, /* dst_mask */ |
| 1617 FALSE), /* pcrel_offset */ |
| 1618 |
| 1619 /* MIPS16 TLS thread pointer offset. */ |
| 1620 HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ |
| 1621 0, /* rightshift */ |
| 1622 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1623 16, /* bitsize */ |
| 1624 FALSE, /* pc_relative */ |
| 1625 0, /* bitpos */ |
| 1626 complain_overflow_signed, /* complain_on_overflow */ |
| 1627 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1628 "R_MIPS16_TLS_GOTTPREL", /* name */ |
| 1629 TRUE, /* partial_inplace */ |
| 1630 0x0000ffff, /* src_mask */ |
| 1631 0x0000ffff, /* dst_mask */ |
| 1632 FALSE), /* pcrel_offset */ |
| 1633 |
| 1634 /* MIPS16 TLS thread pointer offset. */ |
| 1635 HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ |
| 1636 0, /* rightshift */ |
| 1637 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1638 16, /* bitsize */ |
| 1639 FALSE, /* pc_relative */ |
| 1640 0, /* bitpos */ |
| 1641 complain_overflow_signed, /* complain_on_overflow */ |
| 1642 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1643 "R_MIPS16_TLS_TPREL_HI16", /* name */ |
| 1644 TRUE, /* partial_inplace */ |
| 1645 0x0000ffff, /* src_mask */ |
| 1646 0x0000ffff, /* dst_mask */ |
| 1647 FALSE), /* pcrel_offset */ |
| 1648 |
| 1649 /* MIPS16 TLS thread pointer offset. */ |
| 1650 HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ |
| 1651 0, /* rightshift */ |
| 1652 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1653 16, /* bitsize */ |
| 1654 FALSE, /* pc_relative */ |
| 1655 0, /* bitpos */ |
| 1656 complain_overflow_signed, /* complain_on_overflow */ |
| 1657 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1658 "R_MIPS16_TLS_TPREL_LO16", /* name */ |
| 1659 TRUE, /* partial_inplace */ |
| 1660 0x0000ffff, /* src_mask */ |
| 1661 0x0000ffff, /* dst_mask */ |
| 1662 FALSE), /* pcrel_offset */ |
1558 }; | 1663 }; |
1559 | 1664 |
1560 static reloc_howto_type elf_mips16_howto_table_rela[] = | 1665 static reloc_howto_type elf_mips16_howto_table_rela[] = |
1561 { | 1666 { |
1562 /* The reloc used for the mips16 jump instruction. */ | 1667 /* The reloc used for the mips16 jump instruction. */ |
1563 HOWTO (R_MIPS16_26, /* type */ | 1668 HOWTO (R_MIPS16_26, /* type */ |
1564 2, /* rightshift */ | 1669 2, /* rightshift */ |
1565 2, /* size (0 = byte, 1 = short, 2 = long) */ | 1670 2, /* size (0 = byte, 1 = short, 2 = long) */ |
1566 26, /* bitsize */ | 1671 26, /* bitsize */ |
1567 FALSE, /* pc_relative */ | 1672 FALSE, /* pc_relative */ |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1644 16, /* bitsize */ | 1749 16, /* bitsize */ |
1645 FALSE, /* pc_relative */ | 1750 FALSE, /* pc_relative */ |
1646 0, /* bitpos */ | 1751 0, /* bitpos */ |
1647 complain_overflow_dont, /* complain_on_overflow */ | 1752 complain_overflow_dont, /* complain_on_overflow */ |
1648 _bfd_mips_elf_lo16_reloc, /* special_function */ | 1753 _bfd_mips_elf_lo16_reloc, /* special_function */ |
1649 "R_MIPS16_LO16", /* name */ | 1754 "R_MIPS16_LO16", /* name */ |
1650 FALSE, /* partial_inplace */ | 1755 FALSE, /* partial_inplace */ |
1651 0, /* src_mask */ | 1756 0, /* src_mask */ |
1652 0x0000ffff, /* dst_mask */ | 1757 0x0000ffff, /* dst_mask */ |
1653 FALSE), /* pcrel_offset */ | 1758 FALSE), /* pcrel_offset */ |
| 1759 |
| 1760 /* MIPS16 TLS general dynamic variable reference. */ |
| 1761 HOWTO (R_MIPS16_TLS_GD, /* type */ |
| 1762 0, /* rightshift */ |
| 1763 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1764 16, /* bitsize */ |
| 1765 FALSE, /* pc_relative */ |
| 1766 0, /* bitpos */ |
| 1767 complain_overflow_signed, /* complain_on_overflow */ |
| 1768 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1769 "R_MIPS16_TLS_GD", /* name */ |
| 1770 FALSE, /* partial_inplace */ |
| 1771 0x0000ffff, /* src_mask */ |
| 1772 0x0000ffff, /* dst_mask */ |
| 1773 FALSE), /* pcrel_offset */ |
| 1774 |
| 1775 /* MIPS16 TLS local dynamic variable reference. */ |
| 1776 HOWTO (R_MIPS16_TLS_LDM, /* type */ |
| 1777 0, /* rightshift */ |
| 1778 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1779 16, /* bitsize */ |
| 1780 FALSE, /* pc_relative */ |
| 1781 0, /* bitpos */ |
| 1782 complain_overflow_signed, /* complain_on_overflow */ |
| 1783 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1784 "R_MIPS16_TLS_LDM", /* name */ |
| 1785 FALSE, /* partial_inplace */ |
| 1786 0x0000ffff, /* src_mask */ |
| 1787 0x0000ffff, /* dst_mask */ |
| 1788 FALSE), /* pcrel_offset */ |
| 1789 |
| 1790 /* MIPS16 TLS local dynamic offset. */ |
| 1791 HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ |
| 1792 0, /* rightshift */ |
| 1793 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1794 16, /* bitsize */ |
| 1795 FALSE, /* pc_relative */ |
| 1796 0, /* bitpos */ |
| 1797 complain_overflow_signed, /* complain_on_overflow */ |
| 1798 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1799 "R_MIPS16_TLS_DTPREL_HI16", /* name */ |
| 1800 FALSE, /* partial_inplace */ |
| 1801 0x0000ffff, /* src_mask */ |
| 1802 0x0000ffff, /* dst_mask */ |
| 1803 FALSE), /* pcrel_offset */ |
| 1804 |
| 1805 /* MIPS16 TLS local dynamic offset. */ |
| 1806 HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ |
| 1807 0, /* rightshift */ |
| 1808 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1809 16, /* bitsize */ |
| 1810 FALSE, /* pc_relative */ |
| 1811 0, /* bitpos */ |
| 1812 complain_overflow_signed, /* complain_on_overflow */ |
| 1813 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1814 "R_MIPS16_TLS_DTPREL_LO16", /* name */ |
| 1815 FALSE, /* partial_inplace */ |
| 1816 0x0000ffff, /* src_mask */ |
| 1817 0x0000ffff, /* dst_mask */ |
| 1818 FALSE), /* pcrel_offset */ |
| 1819 |
| 1820 /* MIPS16 TLS thread pointer offset. */ |
| 1821 HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ |
| 1822 0, /* rightshift */ |
| 1823 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1824 16, /* bitsize */ |
| 1825 FALSE, /* pc_relative */ |
| 1826 0, /* bitpos */ |
| 1827 complain_overflow_signed, /* complain_on_overflow */ |
| 1828 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1829 "R_MIPS16_TLS_GOTTPREL", /* name */ |
| 1830 FALSE, /* partial_inplace */ |
| 1831 0x0000ffff, /* src_mask */ |
| 1832 0x0000ffff, /* dst_mask */ |
| 1833 FALSE), /* pcrel_offset */ |
| 1834 |
| 1835 /* MIPS16 TLS thread pointer offset. */ |
| 1836 HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ |
| 1837 0, /* rightshift */ |
| 1838 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1839 16, /* bitsize */ |
| 1840 FALSE, /* pc_relative */ |
| 1841 0, /* bitpos */ |
| 1842 complain_overflow_signed, /* complain_on_overflow */ |
| 1843 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1844 "R_MIPS16_TLS_TPREL_HI16", /* name */ |
| 1845 FALSE, /* partial_inplace */ |
| 1846 0x0000ffff, /* src_mask */ |
| 1847 0x0000ffff, /* dst_mask */ |
| 1848 FALSE), /* pcrel_offset */ |
| 1849 |
| 1850 /* MIPS16 TLS thread pointer offset. */ |
| 1851 HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ |
| 1852 0, /* rightshift */ |
| 1853 2, /* size (0 = byte, 1 = short, 2 = long) */ |
| 1854 16, /* bitsize */ |
| 1855 FALSE, /* pc_relative */ |
| 1856 0, /* bitpos */ |
| 1857 complain_overflow_signed, /* complain_on_overflow */ |
| 1858 _bfd_mips_elf_generic_reloc, /* special_function */ |
| 1859 "R_MIPS16_TLS_TPREL_LO16", /* name */ |
| 1860 FALSE, /* partial_inplace */ |
| 1861 0x0000ffff, /* src_mask */ |
| 1862 0x0000ffff, /* dst_mask */ |
| 1863 FALSE), /* pcrel_offset */ |
1654 }; | 1864 }; |
1655 | 1865 |
1656 static reloc_howto_type elf_micromips_howto_table_rel[] = | 1866 static reloc_howto_type elf_micromips_howto_table_rel[] = |
1657 { | 1867 { |
1658 EMPTY_HOWTO (130), | 1868 EMPTY_HOWTO (130), |
1659 EMPTY_HOWTO (131), | 1869 EMPTY_HOWTO (131), |
1660 EMPTY_HOWTO (132), | 1870 EMPTY_HOWTO (132), |
1661 | 1871 |
1662 /* 26 bit jump address. */ | 1872 /* 26 bit jump address. */ |
1663 HOWTO (R_MICROMIPS_26_S1, /* type */ | 1873 HOWTO (R_MICROMIPS_26_S1, /* type */ |
(...skipping 1050 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2714 { BFD_RELOC_MIPS_TLS_LDM, R_MIPS_TLS_LDM }, | 2924 { BFD_RELOC_MIPS_TLS_LDM, R_MIPS_TLS_LDM }, |
2715 { BFD_RELOC_MIPS_TLS_DTPREL_HI16, R_MIPS_TLS_DTPREL_HI16 }, | 2925 { BFD_RELOC_MIPS_TLS_DTPREL_HI16, R_MIPS_TLS_DTPREL_HI16 }, |
2716 { BFD_RELOC_MIPS_TLS_DTPREL_LO16, R_MIPS_TLS_DTPREL_LO16 }, | 2926 { BFD_RELOC_MIPS_TLS_DTPREL_LO16, R_MIPS_TLS_DTPREL_LO16 }, |
2717 { BFD_RELOC_MIPS_TLS_GOTTPREL, R_MIPS_TLS_GOTTPREL }, | 2927 { BFD_RELOC_MIPS_TLS_GOTTPREL, R_MIPS_TLS_GOTTPREL }, |
2718 { BFD_RELOC_MIPS_TLS_TPREL32, R_MIPS_TLS_TPREL32 }, | 2928 { BFD_RELOC_MIPS_TLS_TPREL32, R_MIPS_TLS_TPREL32 }, |
2719 { BFD_RELOC_MIPS_TLS_TPREL64, R_MIPS_TLS_TPREL64 }, | 2929 { BFD_RELOC_MIPS_TLS_TPREL64, R_MIPS_TLS_TPREL64 }, |
2720 { BFD_RELOC_MIPS_TLS_TPREL_HI16, R_MIPS_TLS_TPREL_HI16 }, | 2930 { BFD_RELOC_MIPS_TLS_TPREL_HI16, R_MIPS_TLS_TPREL_HI16 }, |
2721 { BFD_RELOC_MIPS_TLS_TPREL_LO16, R_MIPS_TLS_TPREL_LO16 } | 2931 { BFD_RELOC_MIPS_TLS_TPREL_LO16, R_MIPS_TLS_TPREL_LO16 } |
2722 }; | 2932 }; |
2723 | 2933 |
error: old chunk mismatch |
None
OLD | NEW |