(root)/
binutils-2.41/
bfd/
elf32-ppc.h
       1  /* PowerPC-specific support for 64-bit ELF.
       2     Copyright (C) 2003-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of BFD, the Binary File Descriptor library.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3 of the License, or
       9     (at your option) any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software
      18     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      19     MA 02110-1301, USA.  */
      20  
      21  enum ppc_elf_plt_type
      22  {
      23    PLT_UNSET,
      24    PLT_OLD,
      25    PLT_NEW,
      26    PLT_VXWORKS
      27  };
      28  
      29  /* Various options passed from the linker to bfd backend.  */
      30  struct ppc_elf_params
      31  {
      32    /* Chooses the type of .plt.  */
      33    enum ppc_elf_plt_type plt_style;
      34  
      35    /* Set if individual PLT call stubs should be aligned.  */
      36    int plt_stub_align;
      37  
      38    /* Whether to emit symbols for stubs.  */
      39    int emit_stub_syms;
      40  
      41    /* Whether to emit special stub for __tls_get_addr calls.  */
      42    int no_tls_get_addr_opt;
      43  
      44    /* Insert trampolines for branches that won't reach their destination.  */
      45    int branch_trampolines;
      46  
      47    /* Avoid execution falling into new page.  */
      48    int ppc476_workaround;
      49    unsigned int pagesize_p2;
      50  
      51    /* The bfd backend detected a non-PIC reference to a protected symbol
      52       defined in a shared library.  */
      53    int pic_fixup;
      54  
      55    /* Relocate 16A relocs as 16D and vice versa.  */
      56    int vle_reloc_fixup;
      57  
      58    bfd_vma pagesize;
      59  };
      60  
      61  void ppc_elf_link_params (struct bfd_link_info *, struct ppc_elf_params *);
      62  int ppc_elf_select_plt_layout (bfd *, struct bfd_link_info *);
      63  bool ppc_elf_inline_plt (struct bfd_link_info *);
      64  asection *ppc_elf_tls_setup (bfd *, struct bfd_link_info *);
      65  bool ppc_elf_tls_optimize (bfd *, struct bfd_link_info *);
      66  void ppc_elf_maybe_strip_sdata_syms (struct bfd_link_info *);
      67  extern bool ppc_elf_modify_segment_map (bfd *, struct bfd_link_info *);
      68  extern bool ppc_elf_section_processing (bfd *, Elf_Internal_Shdr *);
      69  extern bool ppc_finish_symbols (struct bfd_link_info *);