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]

Re: [PATCH,rs6000] split up crtsavres into individual files


On Fri, Mar 21, 2008 at 01:23:31PM -0700, Nathan Froyd wrote:
> The psABI for PowerPC specifies several procedures for out-of-line
> register saves and restores; these procedures are currently implemented
> by gcc/config/rs6000/crtsavres.asm.  However, there are two problems
> with the current scheme and 32-bit targets:
[...]
> This patch fixes both problems.  It splits out the individual classes of
> routines (save GPRs, restore FPRs, etc.) into their own files.  An
> archive is then built from the individual compiled objects.  The linker
> then pulls in the routines as needed.
> 
> I confess to not being terribly familiar with how the new toplevel
> libgcc works; are the changes to gcc/config/rs6000/t-ppccomm really
> necessary?  And does anybody know why t-netbsd feels the need to
> duplicate t-ppccomm?

Ping?  CC'ing Ian in hopes of getting an answer to the libgcc questions,
too.

A revised patch is zipped and attached: this patch moves the routines
into libgcc.a.  Where they go at the moment isn't important, but I have
a patch I hope to submit next week that makes GCC start generating calls
to these routines at -Os and it will break fewer things (e.g. building
kernels at -Os) if the routines are in libgcc.a rather than the
previously-proposed libcrtsavres.a.

-Nathan

libgcc/
	* config/rs6000/t-ppccomm: Add build rules for new files.
	(LIB2ADD_ST): New variable.

gcc/
	* config/rs6000/crtresgpr.asm, config/rs6000/crtresxgpr.asm,
	config/rs6000/crtsavgpr.asm, config/rs6000/crtresfpr.asm,
	config/rs6000/crtresxfpr.asm, config/rs6000/crtsavfpr.asm: Break out
	from...
	* config/rs6000/crtsavres.asm: ...here.  Remove unneeded file.
	* config/rs6000/e500crtres32gpr.asm, config/rs6000/e500crtres64gpr.asm
	config/rs6000/e500crtres64gprctr.asm, config/rs6000/e500crtrest32gpr.asm
	config/rs6000/e500crtrest64gpr.asm, config/rs6000/e500crtresx32gpr.asm
	config/rs6000/e500crtresx64gpr.asm, config/rs6000/e500crtsav32gpr.asm
	config/rs6000/e500crtsav64gpr.asm, config/rs6000/e500crtsav64gprctr.asm
	config/rs6000/e500crtsavg32gpr.asm, config/rs6000/e500crtsavg64gpr.asm
	config/rs6000/e500crtsavg64gprctr.asm: New files.
	* config/rs6000/t-ppccomm: Add build rules for new files.
	(LIB2FUNCS_STATIC_EXTRA): Add new files.
	* config/rs6000/t-netbsd: Add build rules for new files.
	(LIB2FUNCS_STATIC_EXTRA): New variable.
	* config/rs6000/sysv4.h (ENDFILE_SPEC): Don't include crtsavres.o
	(CRTSAVRES_DEFAULT_SPEC): Likewise.
	* config/rs6000/netbsd.h (ENDFILE_SPEC): Likewise.

Attachment: crtsavres-split.patch.gz
Description: Binary data


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