sim: add missing values to array initializers
[deliverable/binutils-gdb.git] / bfd / elf-eh-frame.c
index 37c92553ce352e90ab452a22a084a177c85f6959..8380ef86004e9b0dd26b21688ac2e7bda36724ed 100644 (file)
@@ -1,5 +1,5 @@
 /* .eh_frame section optimization.
-   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
@@ -636,7 +636,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
          REQUIRE (read_byte (&buf, end, &cie->version));
 
          /* Cannot handle unknown versions.  */
-         REQUIRE (cie->version == 1 || cie->version == 3);
+         REQUIRE (cie->version == 1
+                  || cie->version == 3
+                  || cie->version == 4);
          REQUIRE (strlen ((char *) buf) < sizeof (cie->augmentation));
 
          strcpy (cie->augmentation, (char *) buf);
@@ -651,6 +653,13 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info,
              REQUIRE (skip_bytes (&buf, end, ptr_size));
              SKIP_RELOCS (buf);
            }
+         if (cie->version >= 4)
+           {
+             REQUIRE (buf + 1 < end);
+             REQUIRE (buf[0] == ptr_size);
+             REQUIRE (buf[1] == 0);
+             buf += 2;
+           }
          REQUIRE (read_uleb128 (&buf, end, &cie->code_align));
          REQUIRE (read_sleb128 (&buf, end, &cie->data_align));
          if (cie->version == 1)
@@ -1269,13 +1278,11 @@ _bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info)
 
 bfd_vma
 _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED,
-                                 struct bfd_link_info *info,
+                                 struct bfd_link_info *info ATTRIBUTE_UNUSED,
                                  asection *sec,
                                  bfd_vma offset)
 {
   struct eh_frame_sec_info *sec_info;
-  struct elf_link_hash_table *htab;
-  struct eh_frame_hdr_info *hdr_info;
   unsigned int lo, hi, mid;
 
   if (sec->sec_info_type != ELF_INFO_TYPE_EH_FRAME)
@@ -1285,9 +1292,6 @@ _bfd_elf_eh_frame_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED,
   if (offset >= sec->rawsize)
     return offset - sec->rawsize + sec->size;
 
-  htab = elf_hash_table (info);
-  hdr_info = &htab->eh_info;
-
   lo = 0;
   hi = sec_info->count;
   mid = 0;
This page took 0.02472 seconds and 4 git commands to generate.