Handle VDSO section headers past end of page
[deliverable/binutils-gdb.git] / bfd / elf-bfd.h
index add80b3c040625f9488bbd52bae01a9f67e10022..6d07303246306ae53e455962c4741e0606252416 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD back-end data structures for ELF files.
-   Copyright 1992-2013 Free Software Foundation, Inc.
+   Copyright (C) 1992-2014 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -419,6 +419,7 @@ enum elf_target_id
   MICROBLAZE_ELF_DATA,
   MIPS_ELF_DATA,
   MN10300_ELF_DATA,
+  NDS32_ELF_DATA,
   NIOS2_ELF_DATA,
   PPC32_ELF_DATA,
   PPC64_ELF_DATA,
@@ -1190,9 +1191,9 @@ struct elf_backend_data
   /* This function implements `bfd_elf_bfd_from_remote_memory';
      see elf.c, elfcode.h.  */
   bfd *(*elf_backend_bfd_from_remote_memory)
-     (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
-      int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
-                                bfd_size_type len));
+    (bfd *templ, bfd_vma ehdr_vma, size_t size, bfd_vma *loadbasep,
+     int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
+                               bfd_size_type len));
 
   /* This function is used by `_bfd_elf_get_synthetic_symtab';
      see elf.c.  */
@@ -1341,6 +1342,11 @@ struct elf_backend_data
      other file in the link needs to have a .note.GNU-stack section
      for a PT_GNU_STACK segment to be created.  */
   unsigned default_execstack : 1;
+
+  /* True if elf_section_data(sec)->this_hdr.contents is sec->rawsize
+     in length rather than sec->size in length, if sec->rawsize is
+     non-zero and smaller than sec->size.  */
+  unsigned caches_rawsize : 1;
 };
 
 /* Information about reloc sections associated with a bfd_elf_section_data
@@ -2040,7 +2046,7 @@ extern bfd_reloc_status_type bfd_elf_perform_complex_relocation
 extern bfd_boolean _bfd_elf_setup_sections
   (bfd *);
 
-extern void _bfd_elf_set_osabi (bfd * , struct bfd_link_info *);
+extern void _bfd_elf_post_process_headers (bfd * , struct bfd_link_info *);
 
 extern const bfd_target *bfd_elf32_object_p
   (bfd *);
@@ -2328,10 +2334,10 @@ extern char *elfcore_write_ppc_linux_prpsinfo32
   (bfd *, char *, int *, const struct elf_internal_linux_prpsinfo *);
 
 extern bfd *_bfd_elf32_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
+  (bfd *templ, bfd_vma ehdr_vma, size_t size, bfd_vma *loadbasep,
    int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type));
 extern bfd *_bfd_elf64_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
+  (bfd *templ, bfd_vma ehdr_vma, size_t size, bfd_vma *loadbasep,
    int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type));
 
 extern bfd_vma bfd_elf_obj_attr_size (bfd *);
@@ -2414,7 +2420,7 @@ extern asection _bfd_elf_large_com_section;
 #define RELOC_FOR_GLOBAL_SYMBOL(info, input_bfd, input_section, rel,   \
                                r_symndx, symtab_hdr, sym_hashes,       \
                                h, sec, relocation,                     \
-                               unresolved_reloc, warned)               \
+                               unresolved_reloc, warned, ignored)      \
   do                                                                   \
     {                                                                  \
       /* It seems this can happen with erroneous or unsupported                \
@@ -2429,6 +2435,7 @@ extern asection _bfd_elf_large_com_section;
        h = (struct elf_link_hash_entry *) h->root.u.i.link;            \
                                                                        \
       warned = FALSE;                                                  \
+      ignored = FALSE;                                                 \
       unresolved_reloc = FALSE;                                                \
       relocation = 0;                                                  \
       if (h->root.type == bfd_link_hash_defined                                \
@@ -2451,7 +2458,7 @@ extern asection _bfd_elf_large_com_section;
        ;                                                               \
       else if (info->unresolved_syms_in_objects == RM_IGNORE           \
               && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)          \
-       ;                                                               \
+       ignored = TRUE;                                                 \
       else if (!info->relocatable)                                     \
        {                                                               \
          bfd_boolean err;                                              \
@@ -2467,6 +2474,7 @@ extern asection _bfd_elf_large_com_section;
        }                                                               \
       (void) unresolved_reloc;                                         \
       (void) warned;                                                   \
+      (void) ignored;                                                  \
     }                                                                  \
   while (0)
 
This page took 0.025621 seconds and 4 git commands to generate.