r218141 - In the Itanium ABI, move stuff to the comdat of variables with static init.

Ulrich Weigand Ulrich.Weigand at de.ibm.com
Mon Sep 29 06:45:04 PDT 2014


Rafael Espindola wrote:

+    // The ABI says: It is suggested that it be emitted in the same COMDAT
group
+    // as the associated data object

This (together with the other recent comdat patches) seems to trigger a bug
in binutils when building with -g.

The problem is that having multiple initializer functions in the same file
can lead to assembler along these line:

         .file 1 "test.c"

         .section        .text.startup,"axG", at progbits,test,comdat
         .loc 1 1
         nop

         .section        .text.startup,"ax", at progbits
         .loc 1 1
         nop

This will cause multiple sections named ".text.startup" to exist in the
output object, one within the comdat group and one outside of it.   This in
turn triggers a bug in dwarf2dbg.c in GAS, where it gets confused in
looking up the section name in a hash table and assumes there can only be
one section with the same name, resulting in an internal error.

This causes compile failures in the tramp3d-v4 and CoyoteBench/fftbench
test cases in test-suite when using -g to build the suite.


The bug is fixed in mainline GAS here:
https://sourceware.org/ml/binutils/2014-09/msg00211.html
but that hasn't made it into any release (or distro) yet.


Mit freundlichen Gruessen / Best Regards

Ulrich Weigand

--
  Dr. Ulrich Weigand | Phone: +49-7031/16-3727
  STSM, GNU/Linux compilers and toolchain
  IBM Deutschland Research & Development GmbH
  Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk
Wittkopp
  Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294





More information about the cfe-commits mailing list