x86-64: Move the error_alignment label forward
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 22 Jun 2017 21:26:09 +0000 (14:26 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 22 Jun 2017 21:26:09 +0000 (14:26 -0700)
Move the error_alignment label forward to avoid clang warning on

if (!bfd_set_section_alignment (ebfd, sec, 2))
  goto error_alignment;

htab = elf_x86_64_hash_table (info);

error_alignment:
  info->callbacks->einfo (_("%F%A: failed to align section\n"), sec);
                             "%F" causes a fatal linker error and
     immediate exit.

sec = htab->elf.sgotplt;

Also fix alignment on program property note section.

* elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Move
the error_alignment label forward.  Properly align program
property note section.

bfd/ChangeLog
bfd/elf64-x86-64.c

index 8fa42f7..4d2acc5 100644 (file)
@@ -1,3 +1,9 @@
+2017-06-22  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Move
+       the error_alignment label forward.  Properly align program
+       property note section.
+
 2017-06-22  Eric Christopher  <echristo@gmail.com>
 
        * elf32-arm.c (elf32_arm_final_link_relocate): Use labs rather than
index 957dcd9..8cef9f5 100644 (file)
@@ -7407,8 +7407,13 @@ elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
          if (sec == NULL)
            info->callbacks->einfo (_("%F: failed to create GNU property section\n"));
 
-         if (!bfd_set_section_alignment (ebfd, sec, 2))
-           goto error_alignment;
+         if (!bfd_set_section_alignment (ebfd, sec,
+                                         ABI_64_P (ebfd) ? 3 : 2))
+           {
+error_alignment:
+             info->callbacks->einfo (_("%F%A: failed to align section\n"),
+                                     sec);
+           }
 
          elf_section_type (sec) = SHT_NOTE;
        }
@@ -7567,11 +7572,7 @@ elf_x86_64_link_setup_gnu_properties (struct bfd_link_info *info)
      properly aligned even if create_dynamic_sections isn't called.  */
   sec = htab->elf.sgot;
   if (!bfd_set_section_alignment (dynobj, sec, 3))
-    {
-error_alignment:
-      info->callbacks->einfo (_("%F%A: failed to align section\n"),
-                             sec);
-    }
+    goto error_alignment;
 
   sec = htab->elf.sgotplt;
   if (!bfd_set_section_alignment (dynobj, sec, 3))