Fix -msdata=sysv and pass -dynamic-linker if not already passed
From-SVN: r16768
This commit is contained in:
parent
a226df4686
commit
8fbd2dc7cb
3 changed files with 21 additions and 5 deletions
|
@ -1,5 +1,13 @@
|
|||
Wed Nov 26 15:47:30 1997 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
|
||||
(print_operand): Use SMALL_DATA_REG for the register involved in
|
||||
small data relocations.
|
||||
(print_operand_address): Ditto.
|
||||
|
||||
* rs6000/linux.h (LINK_SPEC): Pass -dynamic-linker /lib/ld.so.1 if
|
||||
-dynamic linker is not used.
|
||||
|
||||
* rs6000.md (call insns): For local calls, use @local suffix under
|
||||
System V. Don't use @plt under Solaris.
|
||||
|
||||
|
|
|
@ -28,7 +28,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "-m elf32ppc %{shared:-shared} \
|
||||
%{!shared: \
|
||||
%{!static: %{rdynamic:-export-dynamic}} \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
|
||||
%{static:-static}}"
|
||||
|
||||
#undef LIB_DEFAULT_SPEC
|
||||
|
|
|
@ -2342,8 +2342,10 @@ rs6000_init_expanders ()
|
|||
|
||||
#if TARGET_ELF
|
||||
#define SMALL_DATA_RELOC ((rs6000_sdata == SDATA_EABI) ? "sda21" : "sdarel")
|
||||
#define SMALL_DATA_REG ((rs6000_sdata == SDATA_EABI) ? 0 : 13)
|
||||
#else
|
||||
#define SMALL_DATA_RELOC "sda21"
|
||||
#define SMALL_DATA_REG 0
|
||||
#endif
|
||||
|
||||
void
|
||||
|
@ -2542,7 +2544,8 @@ print_operand (file, x, code)
|
|||
else
|
||||
output_address (plus_constant (XEXP (x, 0), 4));
|
||||
if (small_data_operand (x, GET_MODE (x)))
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC, reg_names[0]);
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
|
||||
reg_names[SMALL_DATA_REG]);
|
||||
}
|
||||
return;
|
||||
|
||||
|
@ -2770,7 +2773,8 @@ print_operand (file, x, code)
|
|||
else
|
||||
output_address (plus_constant (XEXP (x, 0), 8));
|
||||
if (small_data_operand (x, GET_MODE (x)))
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC, reg_names[0]);
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
|
||||
reg_names[SMALL_DATA_REG]);
|
||||
}
|
||||
return;
|
||||
|
||||
|
@ -2819,7 +2823,8 @@ print_operand (file, x, code)
|
|||
else
|
||||
output_address (plus_constant (XEXP (x, 0), 12));
|
||||
if (small_data_operand (x, GET_MODE (x)))
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC, reg_names[0]);
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
|
||||
reg_names[SMALL_DATA_REG]);
|
||||
}
|
||||
return;
|
||||
|
||||
|
@ -2861,7 +2866,8 @@ print_operand_address (file, x)
|
|||
{
|
||||
output_addr_const (file, x);
|
||||
if (small_data_operand (x, GET_MODE (x)))
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC, reg_names[0]);
|
||||
fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
|
||||
reg_names[SMALL_DATA_REG]);
|
||||
|
||||
#ifdef TARGET_NO_TOC
|
||||
else if (TARGET_NO_TOC)
|
||||
|
|
Loading…
Add table
Reference in a new issue