Change regcache list to be an hash map
[deliverable/binutils-gdb.git] / bfd / elf-eh-frame.c
index a13e81ebb861129a50ac92390ffb2980111f06c1..b622ffcee2aa1dbd8b875b7122d3f307eb118c13 100644 (file)
@@ -1109,7 +1109,7 @@ add_eh_frame_hdr_terminator (asection *sec,
   if (!sec->rawsize)
     sec->rawsize = sec->size;
 
-  bfd_set_section_size (sec->owner, sec, sec->size + 8);
+  bfd_set_section_size (sec, sec->size + 8);
 }
 
 /* Finish a pass over all .eh_frame_entry sections.  */
@@ -1532,19 +1532,23 @@ _bfd_elf_discard_section_eh_frame
                   don't create the binary search table,
                   since it is affected by runtime relocations.  */
                hdr_info->u.dwarf.table = FALSE;
-               if (num_warnings_issued < 10)
+               /* Only warn if --eh-frame-hdr was specified.  */
+               if (info->eh_frame_hdr_type != 0)
                  {
-                   _bfd_error_handler
-                     /* xgettext:c-format */
-                     (_("FDE encoding in %pB(%pA) prevents .eh_frame_hdr"
-                        " table being created"), abfd, sec);
-                   num_warnings_issued ++;
-                 }
-               else if (num_warnings_issued == 10)
-                 {
-                   _bfd_error_handler
-                     (_("further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"));
-                   num_warnings_issued ++;
+                   if (num_warnings_issued < 10)
+                     {
+                       _bfd_error_handler
+                         /* xgettext:c-format */
+                         (_("FDE encoding in %pB(%pA) prevents .eh_frame_hdr"
+                            " table being created"), abfd, sec);
+                       num_warnings_issued ++;
+                     }
+                   else if (num_warnings_issued == 10)
+                     {
+                       _bfd_error_handler
+                         (_("further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"));
+                       num_warnings_issued ++;
+                     }
                  }
              }
            ent->removed = 0;
@@ -1682,7 +1686,7 @@ _bfd_elf_eh_frame_entry_present (struct bfd_link_info *info)
     {
       for (o = abfd->sections; o; o = o->next)
        {
-         const char *name = bfd_get_section_name (abfd, o);
+         const char *name = bfd_section_name (o);
 
          if (strcmp (name, ".eh_frame_entry")
              && !bfd_is_abs_section (o->output_section))
@@ -1993,7 +1997,7 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
              || ent->u.cie.per_encoding_relative)
            {
              char *aug;
-             unsigned int action, extra_string, extra_data;
+             unsigned int version, action, extra_string, extra_data;
              unsigned int per_width, per_encoding;
 
              /* Need to find 'R' or 'L' augmentation's argument and modify
@@ -2004,13 +2008,17 @@ _bfd_elf_write_section_eh_frame (bfd *abfd,
              extra_string = extra_augmentation_string_bytes (ent);
              extra_data = extra_augmentation_data_bytes (ent);
 
-             /* Skip length, id and version.  */
-             buf += 9;
+             /* Skip length, id.  */
+             buf += 8;
+             version = *buf++;
              aug = (char *) buf;
              buf += strlen (aug) + 1;
              skip_leb128 (&buf, end);
              skip_leb128 (&buf, end);
-             skip_leb128 (&buf, end);
+             if (version == 1)
+               skip_bytes (&buf, end, 1);
+             else
+               skip_leb128 (&buf, end);
              if (*aug == 'z')
                {
                  /* The uleb128 will always be a single byte for the kind
This page took 0.023978 seconds and 4 git commands to generate.