This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, target] Sort out some issues in config{,/*}/darwin*.h


Hi all,

Whilst this is mostly darwin-specific, it clearly needs build-system approval for the generation and installation of "dsymutil-wrapper.sh" in $(libexecdir)

References:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43751
http://gcc.gnu.org/ml/gcc/2010-04/msg00207.html
http://gcc.gnu.org/ml/fortran/2010-04/msg00131.html
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42333
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43254

Much though I dislike addressing multiple problems in one patch...
... this particular area is like a balloon - if you push it in one place it just pops out somewhere else.


So this is what I've done:

o Trivial white-space tidies in asm directives (.comm, .lcomm, .glob missing leading tabs)

o Split the LINK_COMMAND_SPEC into two bits:
LINK_COMMAND_SPEC_A Common across the platform.
DSYMUTIL_SPEC which needs to vary depending on the default debug format.

o macro-ized DSYMUTIL so that we can change it without editing the specs.
o Provided a wrapper for the system-supplied dsymutil that allows us to edit out bogus warnings.
this is installed in $(libexecdir) . The initial version filters the message that gives us problems
like PR43254.


o Altered the behavior of DSYMUTIL_SPEC so that it:
(a) Always runs when we are generating an exe - IMO this is more intuitive to the end user - and
it side-steps the problem with the existing spec.
(b) it defaults to generation of flat debug (.dwarf) files - you can generate the .dSYM by passing
-mdsym on the c/l (although .dwarf works just fine with the XCode gdb AFAICT).


This latter step hopefully will get round the myriad "X.dSYM is directory" configury error msgs.

- this now works for all FEs including fortran.


o Filter out -lm and re-apply it where needed. [I've provided a bolt- hole for anyone who wants to
force -lm (-force_lm) at least until we confirm that this is not an issue.]


o Remove -lgcc from darwin.h and re-apply it in the rs6000/ darwin{7,8}.h where it is required
as the source of save/restore_world (added a FIXME that this probably should not be so).


o as a temporary hack - I've placed libgcc.a ahead of libm and libsystem on darwin 10. This works
around PR42333.


o fixed darwin10 not to provide no_compact_unwind when building for <10.6.


Have fun.. and I'd welcome comments on improvements.


Iain

gcc/ChangeLog:

	* dsymutil-wrapper.sh.in: New.
	* Makefile.in: Build and install (to libexecdir) dsymutil-wrapper.sh.
	* config/i386/darwin.h: Correct tabs before asm directives.
	* config/rs6000/darwin.h: Ditto.
	* config/rs6000/darwin7.h: Add -lgcc to LIB_SPEC and add FIXME note.
	* config/rs6000/darwin8.h: Ditto.
	* config/darwin.h: Correct tabs before asm directives.
	Split LINK_COMMAND_SPEC into
	(LINK_COMMAND_SPEC_A): New. (DSYMUTIL_SPEC): New.
	Remove source code dependency on dsymutils running.  Reference
	dsymutil-wrapper.sh.  Strip -lm from Darwin versions that supply
	this in libSystem or libgcc_s.  Remove -lgcc catch-all from the
	LIB_SPEC.
	(DEBUG_INLINED_SECTION): New macro.
	* config/darwin9.h: LINK_COMMAND_SPEC: Use LINK_COMMAND_SPEC_A.
	(DSYMUTIL_SPEC): New.
	Correct tabs before asm directives.
	* config/darwin10.h: Reference libgcc.a before libm and libSystem
	to work around PR42333.  Add FIXME note.  Make "no_compact_unwind"
	depend on targetting >= 10.6.



Attachment: 158296-darwinh-lm-dsymutils-diff.txt
Description: Text document



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]