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] |
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] |