[committed] Add support for dynamic non-PIC MIPS executables

Richard Sandiford rdsandiford@googlemail.com
Sun Aug 17 12:34:00 GMT 2008


This patch adds support for dynamic non-PIC MIPS executables.
Thanks to Dan for all the merging work.

Tested on mips64-linux-gnu and applied.

I've also attached a draft changes.html patch.  Comments welcome!

Richard


gcc/
2008-08-17  Daniel Jacobowitz  <dan@codesourcery.com>
	    Richard Sandiford  <rdsandiford@googlemail.com>

	* doc/install.texi (--with-mips-plt): Document.
	* doc/invoke.texi (-mplt, -mno-plt): Document.
	* config.gcc (mips*-*-*): Add mips-plt to supported_defaults
	and handle ${with_mips_plt}.
	* config/mips/mips.opt (mplt): New option.
	* config/mips/mips.h (TARGET_ABICALLS_PIC0): New macro.
	(TARGET_ABICALLS_PIC2): Likewise.
	(TARGET_GPWORD): Return false for TARGET_ABSOLUTE_ABICALLS.
	(OPTION_DEFAULT_SPECS): Add a mips-plt entry.
	(ASM_SPEC): Use !mabi=* instead of !mabi*.
	(MIPS_CALL): Use TARGET_ABICALLS_PIC2 instead of TARGET_ABICALLS
	to decide whether to output ".option picX" directives.
	* config/mips/linux.h (SUBTARGET_ASM_SPEC): Remove -mabi=64 handling.
	Pass -call_nonpic rather than -KPIC for -mplt.
	(BASE_DRIVER_SELF_SPECS): Remove -mplt if -mno-shared is not present
	on the command line.  Also remove it when -mabi=64 is used without
	-msym32.
	* config/mips/linux64.h (SUBTARGET_ASM_SPEC): Delete.
	* config/mips/mips.c (mips_use_pic_fn_addr_reg_p): Handle
	TARGET_ABICALLS_PIC0.
	(mips_classify_symbol): Use TARGET_ABICALLS_PIC2 instead of
	TARGET_ABICALLS.
	(mips16_build_function_stub): Only output ".option pic" directives
	and PIC stubs if TARGET_ABICALLS_PIC2.  Call through $25 instead of $1.
	(mips16_build_call_stub): Fix comment and remove redundant
	".set at"/"set .noat" directives.
	(mips_function_rodata_section): Use the default behaviour for
	TARGET_ABSOLUTE_ABICALLS.
	(mips_file_start): Emit ".option pic0" for TARGET_ABICALLS_PIC0.
	(mips_global_pointer): Handle TARGET_ABICALLS_PIC0.
	(mips_restore_gp): Do nothing if the current function doesn't use
	a global pointer.
	(mips_expand_prologue): Only save $gp if the current function uses it.
	Use a normal move for TARGET_ABICALLS_PIC0.
	(mips_override_options): Only set flag_pic if TARGET_ABICALLS_PIC2.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: mips-plt.diff
Type: text/x-diff
Size: 18227 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20080817/be45c79d/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: changes.diff
Type: text/x-diff
Size: 1565 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20080817/be45c79d/attachment-0001.bin>


More information about the Gcc-patches mailing list