cvs commit: src/gnu/lib/csu Makefile.csu

Simon Schubert corecode at
Wed Aug 22 23:52:36 PDT 2007

corecode    2007/08/22 23:52:02 PDT

DragonFly src repository

  Modified files:
    gnu/lib/csu          Makefile.csu 
  Don't define USED_FOR_TARGET on the command line.
  This produces all kinds of side effects, ultimately leading to the csu
  sources and the compiler being out of sync on compilation, thus triggering
  an internal compiler error.
  Details for the curious and for historical purposes:
  Our gcc is configured to work with a ld which can merge ro and rw sections
  to rw sections.  Nevertheless cc1 will enforce sections in one unit to be
  of one type or the other, i.e. it disallows section flag changes.  Sections
  are usually a compiler internal detail, so a flag change is considered a
  compiler bug and thus cc1 aborts with an internal compiler error on such
  The csu libs consider themselves as part of the compiler and use section
  declarations.  However if the lib and the compiler don't agree on some
  settings and are out of sync, the lib will decide to create a rw .eh_frame
  section (by not declaring a variable constant).  If the compiler uses the
  .eh_frame section as well, like gcc41/amd64 does to store dwarf2 exception
  rollback information, the above mentioned internal compiler error is
  The essential problem here was that USED_FOR_TARGET will prevent the
  auto-host.h/dragonfly-native.h config.h-style headers to set the necessary
  compiler configuration which is also used by the csu libs.  By moving it
  to the place where the gcc people intended it to be, everything works as
  Revision  Changes    Path
  1.2       +0 -1      src/gnu/lib/csu/Makefile.csu

More information about the Commits mailing list