Skip debug sections when estimating distances
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 27 Apr 2016 16:13:10 +0000 (09:13 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 27 Apr 2016 16:13:10 +0000 (09:13 -0700)
Skip debug sections when estimating distances between output sections
since compressed_size is used to compress debug sections and debug
sections aren't excluded from distances between output sections.

bfd/

PR ld/20006
* elf64-x86-64.c (elf_x86_64_convert_load): Skip debug sections
when estimating distances between output sections.

ld/

PR ld/20006
* testsuite/ld-elfvsb/elfvsb.exp (COMPRESS_LDFLAG): New.
(visibility_run): Pass COMPRESS_LDFLAG to visibility_test on
ELF targets.

bfd/ChangeLog
bfd/elf64-x86-64.c
ld/ChangeLog
ld/testsuite/ld-elfvsb/elfvsb.exp

index f67db84..b63811b 100644 (file)
@@ -1,3 +1,9 @@
+2016-04-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/20006
+       * elf64-x86-64.c (elf_x86_64_convert_load): Skip debug sections
+       when estimating distances between output sections.
+
 2016-04-27  Alan Modra  <amodra@gmail.com>
 
        * elflink.c (_bfd_elf_is_start_stop): New function.
index 4899f98..02fcb22 100644 (file)
@@ -3205,17 +3205,20 @@ elf_x86_64_convert_load (bfd *abfd, asection *sec,
              for (asect = link_info->output_bfd->sections;
                   asect != NULL;
                   asect = asect->next)
-               {
-                 asection *i;
-                 for (i = asect->map_head.s;
-                      i != NULL;
-                      i = i->map_head.s)
-                   {
-                     size = align_power (size, i->alignment_power);
-                     size += i->size;
-                   }
-                 asect->compressed_size = size;
-               }
+               /* Skip debug sections since compressed_size is used to
+                  compress debug sections.  */
+               if ((asect->flags & SEC_DEBUGGING) == 0)
+                 {
+                   asection *i;
+                   for (i = asect->map_head.s;
+                        i != NULL;
+                        i = i->map_head.s)
+                     {
+                       size = align_power (size, i->alignment_power);
+                       size += i->size;
+                     }
+                   asect->compressed_size = size;
+                 }
            }
 
          /* Don't convert GOTPCREL relocations if TSEC isn't placed
index 62db170..379a214 100644 (file)
@@ -1,8 +1,15 @@
 2016-04-27  H.J. Lu  <hongjiu.lu@intel.com>
 
-       * ld-elf/compressed1b.d: Pass --compress-debug-sections=none
-       to ld.
-       * ld-elf/compressed1c.d: Likewise.
+       PR ld/20006
+       * testsuite/ld-elfvsb/elfvsb.exp (COMPRESS_LDFLAG): New.
+       (visibility_run): Pass COMPRESS_LDFLAG to visibility_test on
+       ELF targets.
+
+2016-04-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/ld-elf/compressed1b.d: Pass
+       --compress-debug-sections=none to ld.
+       * testsuite/ld-elf/compressed1c.d: Likewise.
 
 2016-04-27  Alan Modra  <amodra@gmail.com>
 
index d9d26d6..e20cd76 100644 (file)
@@ -62,6 +62,7 @@ if ![isnative] then {return}
 set tmpdir tmpdir
 set SHCFLAG ""
 set shared_needs_pic "no"
+set COMPRESS_LDFLAG "-Wl,--compress-debug-sections=zlib-gabi"
 
 if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
 
@@ -228,6 +229,7 @@ proc visibility_run {visibility} {
     global support_protected
     global shared_needs_pic
     global PLT_CFLAGS
+    global COMPRESS_LDFLAG
 
     if [ string match $visibility "hidden" ] {
        set VSBCFLAG "-DHIDDEN_TEST"
@@ -384,7 +386,7 @@ proc visibility_run {visibility} {
            } else { if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
                visibility_test $visibility vp "visibility ($visibility)" mainnp.o sh1p.o sh2p.o xcoff
            } else {
-               visibility_test $visibility vp "visibility ($visibility)" mainnp.o sh1p.o sh2p.o elfvsb
+               visibility_test $visibility vp "visibility ($visibility)" mainnp.o sh1p.o sh2p.o elfvsb $COMPRESS_LDFLAG
            } }
        }
     }}