cvs commit: src/gnu/lib/csu Makefile.csu
Simon Schubert
corecode at crater.dragonflybsd.org
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
Log:
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
occasions.
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
triggered.
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
desired.
Revision Changes Path
1.2 +0 -1 src/gnu/lib/csu/Makefile.csu
http://www.dragonflybsd.org/cvsweb/src/gnu/lib/csu/Makefile.csu.diff?r1=1.1&r2=1.2&f=u
More information about the Commits
mailing list