home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / gnu / djgpp / src / binutils.2 / bfd / elf32-ta.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-30  |  7.4 KB  |  225 lines

  1. /* Target definitions for 32-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 elf_slurp_armap
  30. #define elf_slurp_armap            bfd_slurp_coff_armap
  31. #endif
  32. #define elf_slurp_extended_name_table    _bfd_slurp_extended_name_table
  33. #define elf_truncate_arname        bfd_dont_truncate_arname
  34. #define elf_openr_next_archived_file    bfd_generic_openr_next_archived_file
  35. #define elf_generic_stat_arch_elt    bfd_generic_stat_arch_elt
  36. #ifndef elf_write_armap
  37. #define    elf_write_armap            coff_write_armap
  38. #endif
  39.  
  40. /* Ordinary section reading and writing */
  41. #define elf_new_section_hook        _bfd_dummy_new_section_hook
  42. #define elf_get_section_contents    bfd_generic_get_section_contents
  43. /* #define elf_set_section_contents    bfd_generic_set_section_contents */
  44. #define    elf_close_and_cleanup        bfd_generic_close_and_cleanup
  45.  
  46. #define elf_bfd_debug_info_start    bfd_void
  47. #define elf_bfd_debug_info_end        bfd_void
  48. #define elf_bfd_debug_info_accumulate    (PROTO(void,(*),(bfd*, struct sec *))) bfd_void
  49. #define elf_bfd_get_relocated_section_contents \
  50.  bfd_generic_get_relocated_section_contents
  51. #define elf_bfd_relax_section bfd_generic_relax_section
  52. #define elf_bfd_seclet_link bfd_generic_seclet_link
  53. #define elf_bfd_make_debug_symbol \
  54.   ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr)
  55.  
  56. static CONST struct elf_backend_data elf_bed =
  57. {
  58.   elf_info_to_howto,
  59.   ELF_ARCH,
  60. };
  61.  
  62. #ifdef TARGET_BIG_SYM
  63. bfd_target TARGET_BIG_SYM =
  64. {
  65.   /* name: identify kind of target */
  66.   TARGET_BIG_NAME,
  67.  
  68.   /* flavour: general indication about file */
  69.   bfd_target_elf_flavour,
  70.  
  71.   /* byteorder_big_p: data is big endian */
  72.   true,
  73.  
  74.   /* header_byteorder_big_p: header is also big endian */
  75.   true,
  76.  
  77.   /* object_flags: mask of all file flags */
  78.   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS |
  79.    DYNAMIC | WP_TEXT),
  80.   
  81.   /* section_flags: mask of all section flags */
  82.   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY |
  83.    SEC_CODE | SEC_DATA), 
  84.  
  85.    /* leading_symbol_char: is the first char of a user symbol
  86.       predictable, and if so what is it */
  87.    0,
  88.  
  89.   /* ar_pad_char: pad character for filenames within an archive header
  90.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  91.      of the archiver and/or os and should be independently tunable */
  92.   '/',
  93.  
  94.   /* ar_max_namelen: maximum number of characters in an archive header
  95.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  96.      of the archiver and should be independently tunable.  This value is
  97.      a WAG (wild a** guess) */
  98.   15,
  99.  
  100.   /* align_power_min: minimum alignment restriction for any section
  101.      FIXME:  this value may be target machine dependent */
  102.   3,
  103.  
  104.   /* Routines to byte-swap various sized integers from the data sections */
  105.   _do_getb64, _do_getb_signed_64, _do_putb64,
  106.     _do_getb32, _do_getb_signed_32, _do_putb32,
  107.     _do_getb16, _do_getb_signed_16, _do_putb16,
  108.  
  109.   /* Routines to byte-swap various sized integers from the file headers */
  110.   _do_getb64, _do_getb_signed_64, _do_putb64,
  111.     _do_getb32, _do_getb_signed_32, _do_putb32,
  112.     _do_getb16, _do_getb_signed_16, _do_putb16,
  113.  
  114.   /* bfd_check_format: check the format of a file being read */
  115.   { _bfd_dummy_target,        /* unknown format */
  116.     elf_object_p,        /* assembler/linker output (object file) */
  117.     bfd_generic_archive_p,    /* an archive */
  118.     elf_core_file_p        /* a core file */
  119.   },
  120.  
  121.   /* bfd_set_format: set the format of a file being written */
  122.   { bfd_false,
  123.     elf_mkobject,
  124.     _bfd_generic_mkarchive,
  125.     bfd_false
  126.   },
  127.  
  128.   /* bfd_write_contents: write cached information into a file being written */
  129.   { bfd_false,
  130.     elf_write_object_contents,
  131.     _bfd_write_archive_contents,
  132.     bfd_false
  133.   },
  134.  
  135.   /* Initialize a jump table with the standard macro.  All names start with
  136.      "elf" */
  137.   JUMP_TABLE(elf),
  138.  
  139.   /* backend_data: */
  140.   (PTR) &elf_bed,
  141. };
  142. #endif
  143.  
  144. #ifdef TARGET_LITTLE_SYM
  145. bfd_target TARGET_LITTLE_SYM =
  146. {
  147.   /* name: identify kind of target */
  148.   TARGET_LITTLE_NAME,
  149.  
  150.   /* flavour: general indication about file */
  151.   bfd_target_elf_flavour,
  152.  
  153.   /* byteorder_big_p: data is big endian */
  154.   false,        /* Nope -- this one's little endian */
  155.  
  156.   /* header_byteorder_big_p: header is also big endian */
  157.   false,        /* Nope -- this one's little endian */
  158.  
  159.   /* object_flags: mask of all file flags */
  160.   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS |
  161.    DYNAMIC | WP_TEXT),
  162.   
  163.   /* section_flags: mask of all section flags */
  164.   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY |
  165.    SEC_DATA), 
  166.  
  167.    /* leading_symbol_char: is the first char of a user symbol
  168.       predictable, and if so what is it */
  169.    0,
  170.  
  171.   /* ar_pad_char: pad character for filenames within an archive header
  172.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  173.      of the archiver and/or os and should be independently tunable */
  174.   '/',
  175.  
  176.   /* ar_max_namelen: maximum number of characters in an archive header
  177.      FIXME:  this really has nothing to do with ELF, this is a characteristic
  178.      of the archiver and should be independently tunable.  This value is
  179.      a WAG (wild a** guess) */
  180.   15,
  181.  
  182.   /* align_power_min: minimum alignment restriction for any section
  183.      FIXME:  this value may be target machine dependent */
  184.   3,
  185.  
  186.   /* Routines to byte-swap various sized integers from the data sections */
  187.   _do_getl64, _do_getl_signed_64, _do_putl64,
  188.     _do_getl32, _do_getl_signed_32, _do_putl32,
  189.     _do_getl16, _do_getl_signed_16, _do_putl16,
  190.  
  191.   /* Routines to byte-swap various sized integers from the file headers */
  192.   _do_getl64, _do_getl_signed_64, _do_putl64,
  193.     _do_getl32, _do_getl_signed_32, _do_putl32,
  194.     _do_getl16, _do_getl_signed_16, _do_putl16,
  195.  
  196.   /* bfd_check_format: check the format of a file being read */
  197.   { _bfd_dummy_target,        /* unknown format */
  198.     elf_object_p,        /* assembler/linker output (object file) */
  199.     bfd_generic_archive_p,    /* an archive */
  200.     elf_core_file_p        /* a core file */
  201.   },
  202.  
  203.   /* bfd_set_format: set the format of a file being written */
  204.   { bfd_false,
  205.     elf_mkobject,
  206.     _bfd_generic_mkarchive,
  207.     bfd_false
  208.   },
  209.  
  210.   /* bfd_write_contents: write cached information into a file being written */
  211.   { bfd_false,
  212.     elf_write_object_contents,
  213.     _bfd_write_archive_contents,
  214.     bfd_false
  215.   },
  216.  
  217.   /* Initialize a jump table with the standard macro.  All names start with
  218.      "elf" */
  219.   JUMP_TABLE(elf),
  220.  
  221.   /* backend_data: */
  222.   (PTR) &elf_bed,
  223. };
  224. #endif
  225.