home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / gnu / gdb-4.12.tar.gz / gdb-4.12.tar / gdb-4.12 / bfd / elf64-target.h < prev    next >
C/C++ Source or Header  |  1994-02-03  |  9KB  |  289 lines

  1. /* Target definitions for 64-bit ELF
  2.    Copyright 1993 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 2 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* This structure contains everything that BFD knows about a target.
  21.    It includes things like its byte order, name, what routines to call
  22.    to do various operations, etc.  Every BFD points to a target structure
  23.    with its "xvec" member.
  24.  
  25.    There are two such structures here:  one for big-endian machines and
  26.    one for little-endian machines.   */
  27.  
  28. /* Archives are generic or unimplemented.  */
  29. #ifndef bfd_elf64_slurp_armap
  30. #define bfd_elf64_slurp_armap        bfd_slurp_coff_armap
  31. #endif
  32. #define bfd_elf64_slurp_extended_name_table    _bfd_slurp_extended_name_table
  33. #define bfd_elf64_truncate_arname        bfd_dont_truncate_arname
  34. #define bfd_elf64_openr_next_archived_file    bfd_generic_openr_next_archived_file
  35. #define bfd_elf64_generic_stat_arch_elt    bfd_generic_stat_arch_elt
  36. #ifndef bfd_elf64_write_armap
  37. #define    bfd_elf64_write_armap        coff_write_armap
  38. #endif
  39.  
  40. /* Ordinary section reading and writing */
  41. #define bfd_elf64_get_section_contents    bfd_generic_get_section_contents
  42. #define    bfd_elf64_close_and_cleanup        bfd_generic_close_and_cleanup
  43.  
  44. #define bfd_elf64_bfd_debug_info_start    bfd_void
  45. #define bfd_elf64_bfd_debug_info_end    bfd_void
  46. #define bfd_elf64_bfd_debug_info_accumulate    (PROTO(void,(*),(bfd*, struct sec *))) bfd_void
  47. #define bfd_elf64_bfd_get_relocated_section_contents \
  48.  bfd_generic_get_relocated_section_contents
  49. #define bfd_elf64_bfd_relax_section bfd_generic_relax_section
  50. #define bfd_elf64_bfd_make_debug_symbol \
  51.   ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr)
  52. #ifndef bfd_elf64_bfd_link_hash_table_create
  53. #define bfd_elf64_bfd_link_hash_table_create \
  54.   _bfd_generic_link_hash_table_create
  55. #endif
  56. #ifndef bfd_elf64_bfd_link_add_symbols
  57. #define bfd_elf64_bfd_link_add_symbols    _bfd_generic_link_add_symbols
  58. #endif
  59. #ifndef bfd_elf64_bfd_final_link
  60. #define bfd_elf64_bfd_final_link    _bfd_generic_final_link
  61. #endif
  62.  
  63. #ifndef elf_info_to_howto_rel
  64. #define elf_info_to_howto_rel 0
  65. #endif
  66.  
  67. #ifndef ELF_MAXPAGESIZE
  68. #define ELF_MAXPAGESIZE 1
  69. #endif
  70.  
  71. #ifndef elf_backend_sym_is_global
  72. #define elf_backend_sym_is_global    0
  73. #endif
  74. #ifndef elf_backend_object_p
  75. #define elf_backend_object_p        0
  76. #endif
  77. #ifndef elf_backend_symbol_processing
  78. #define elf_backend_symbol_processing    0
  79. #endif
  80. #ifndef elf_backend_symbol_table_processing
  81. #define elf_backend_symbol_table_processing    0
  82. #endif
  83. #ifndef elf_backend_section_processing
  84. #define elf_backend_section_processing    0
  85. #endif
  86. #ifndef elf_backend_section_from_shdr
  87. #define elf_backend_section_from_shdr    0
  88. #endif
  89. #ifndef elf_backend_fake_sections
  90. #define elf_backend_fake_sections    0
  91. #endif
  92. #ifndef elf_backend_section_from_bfd_section
  93. #define elf_backend_section_from_bfd_section    0
  94. #endif
  95. #ifndef elf_backend_final_write_processing
  96. #define elf_backend_final_write_processing    0
  97. #endif
  98. #ifndef elf_backend_ecoff_debug_swap
  99. #define elf_backend_ecoff_debug_swap    0
  100. #endif
  101.  
  102. static CONST struct elf_backend_data elf64_bed =
  103. {
  104. #ifdef USE_REL
  105.   0,                /* use_rela_p */
  106. #else
  107.   1,                /* use_rela_p */
  108. #endif
  109.   1,                /* elf_64_p */
  110.   ELF_ARCH,            /* arch */
  111.   ELF_MACHINE_CODE,        /* elf_machine_code */
  112.   ELF_MAXPAGESIZE,        /* maxpagesize */
  113.   elf_info_to_howto,
  114.   elf_info_to_howto_rel,
  115.   elf_backend_sym_is_global,
  116.   elf_backend_object_p,
  117.   elf_backend_symbol_processing,
  118.   elf_backend_symbol_table_processing,
  119.   elf_backend_section_processing,
  120.   elf_backend_section_from_shdr,
  121.   elf_backend_fake_sections,
  122.   elf_backend_section_from_bfd_section,
  123.   elf_backend_ecoff_debug_swap
  124. };
  125.  
  126. #ifdef TARGET_BIG_SYM
  127. bfd_target TARGET_BIG_SYM =
  128. {
  129.   /* name: identify kind of target */
  130.   TARGET_BIG_NAME,
  131.  
  132.   /* flavour: general indication about file */
  133.   bfd_target_elf_flavour,
  134.  
  135.   /* byteorder_big_p: data is big endian */
  136.   true,
  137.  
  138.   /* header_byteorder_big_p: header is also big endian */
  139.   true,
  140.  
  141.   /* object_flags: mask of all file flags */
  142.   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS |
  143.    DYNAMIC | WP_TEXT),
  144.   
  145.   /* section_flags: mask of all section flags */
  146.   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY |
  147.    SEC_CODE | SEC_DATA | SEC_DEBUGGING),
  148.  
  149.    /* leading_symbol_char: is the first char of a user symbol
  150.       predictable, and if so what is it */
  151.    0,
  152.  
  153.   /* ar_pad_char: pad character for filenames within an archive header
  154.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  155.      of the archiver and/or os and should be independently tunable */
  156.   '/',
  157.  
  158.   /* ar_max_namelen: maximum number of characters in an archive header
  159.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  160.      of the archiver and should be independently tunable.  This value is
  161.      a WAG (wild a** guess) */
  162.   15,
  163.  
  164.   /* align_power_min: minimum alignment restriction for any section
  165.      FIXME:  this value may be target machine dependent */
  166.   3,
  167.  
  168.   /* Routines to byte-swap various sized integers from the data sections */
  169.   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
  170.     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
  171.     bfd_getb16, bfd_getb_signed_16, bfd_putb16,
  172.  
  173.   /* Routines to byte-swap various sized integers from the file headers */
  174.   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
  175.     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
  176.     bfd_getb16, bfd_getb_signed_16, bfd_putb16,
  177.  
  178.   /* bfd_check_format: check the format of a file being read */
  179.   { _bfd_dummy_target,        /* unknown format */
  180.     bfd_elf64_object_p,        /* assembler/linker output (object file) */
  181.     bfd_generic_archive_p,    /* an archive */
  182.     bfd_elf64_core_file_p    /* a core file */
  183.   },
  184.  
  185.   /* bfd_set_format: set the format of a file being written */
  186.   { bfd_false,
  187.     bfd_elf_mkobject,
  188.     _bfd_generic_mkarchive,
  189.     bfd_false
  190.   },
  191.  
  192.   /* bfd_write_contents: write cached information into a file being written */
  193.   { bfd_false,
  194.     bfd_elf64_write_object_contents,
  195.     _bfd_write_archive_contents,
  196.     bfd_false
  197.   },
  198.  
  199.   /* Initialize a jump table with the standard macro.  All names start with
  200.      "elf" */
  201.   JUMP_TABLE(bfd_elf64),
  202.  
  203.   /* backend_data: */
  204.   (PTR) &elf64_bed,
  205. };
  206. #endif
  207.  
  208. #ifdef TARGET_LITTLE_SYM
  209. bfd_target TARGET_LITTLE_SYM =
  210. {
  211.   /* name: identify kind of target */
  212.   TARGET_LITTLE_NAME,
  213.  
  214.   /* flavour: general indication about file */
  215.   bfd_target_elf_flavour,
  216.  
  217.   /* byteorder_big_p: data is big endian */
  218.   false,        /* Nope -- this one's little endian */
  219.  
  220.   /* header_byteorder_big_p: header is also big endian */
  221.   false,        /* Nope -- this one's little endian */
  222.  
  223.   /* object_flags: mask of all file flags */
  224.   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS |
  225.    DYNAMIC | WP_TEXT),
  226.   
  227.   /* section_flags: mask of all section flags */
  228.   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY |
  229.    SEC_CODE | SEC_DATA | SEC_DEBUGGING),
  230.  
  231.    /* leading_symbol_char: is the first char of a user symbol
  232.       predictable, and if so what is it */
  233.    0,
  234.  
  235.   /* ar_pad_char: pad character for filenames within an archive header
  236.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  237.      of the archiver and/or os and should be independently tunable */
  238.   '/',
  239.  
  240.   /* ar_max_namelen: maximum number of characters in an archive header
  241.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  242.      of the archiver and should be independently tunable.  This value is
  243.      a WAG (wild a** guess) */
  244.   15,
  245.  
  246.   /* align_power_min: minimum alignment restriction for any section
  247.      FIXME:  this value may be target machine dependent */
  248.   3,
  249.  
  250.   /* Routines to byte-swap various sized integers from the data sections */
  251.   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
  252.     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
  253.     bfd_getl16, bfd_getl_signed_16, bfd_putl16,
  254.  
  255.   /* Routines to byte-swap various sized integers from the file headers */
  256.   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
  257.     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
  258.     bfd_getl16, bfd_getl_signed_16, bfd_putl16,
  259.  
  260.   /* bfd_check_format: check the format of a file being read */
  261.   { _bfd_dummy_target,        /* unknown format */
  262.     bfd_elf64_object_p,        /* assembler/linker output (object file) */
  263.     bfd_generic_archive_p,    /* an archive */
  264.     bfd_elf64_core_file_p    /* a core file */
  265.   },
  266.  
  267.   /* bfd_set_format: set the format of a file being written */
  268.   { bfd_false,
  269.     bfd_elf_mkobject,
  270.     _bfd_generic_mkarchive,
  271.     bfd_false
  272.   },
  273.  
  274.   /* bfd_write_contents: write cached information into a file being written */
  275.   { bfd_false,
  276.     bfd_elf64_write_object_contents,
  277.     _bfd_write_archive_contents,
  278.     bfd_false
  279.   },
  280.  
  281.   /* Initialize a jump table with the standard macro.  All names start with
  282.      "elf" */
  283.   JUMP_TABLE(bfd_elf64),
  284.  
  285.   /* backend_data: */
  286.   (PTR) &elf64_bed,
  287. };
  288. #endif
  289.