Commit 9fb1c9db by John David Anglin Committed by John David Anglin

re PR target/24348 (bootstrap failure building libgcc)

	PR target/24348
	* config.gcc (hppa*-*-hpux*): Add pa/t-slibgcc-elf-ver to tmake config
	when not using sjlj exceptions.
	* config/pa/pa64-hpux.h (LIB_SPEC): Add -lpthread in static links.
	* config/pa/pa-hpux11.h (LIB_SPEC): Likewise.
	* config/pa/som.h (ASM_PREFERRED_EH_DATA_FORMAT): Delete define.
	* config/pa/linux-unwind.h (pa32_fallback_frame_state): Use
	DWARF_ALT_FRAME_RETURN_COLUMN instead of column 0 as return column.
	* config/pa/pa-hpux.h (MD_UNWIND_SUPPORT): New define.
	* config/pa/pa-linux.h (INCOMING_RETURN_ADDR_RTX,
	DWARF_FRAME_RETURN_COLUMN, ASM_PREFERRED_EH_DATA_FORMAT,
	ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Delete defines.
	* config/pa/pa.h (ARG_POINTER_CFA_OFFSET): Delete.
	(FRAME_POINTER_CFA_OFFSET, INCOMING_RETURN_ADDR_RTX,
	DWARF_FRAME_RETURN_COLUMN, DWARF_ALT_FRAME_RETURN_COLUMN,
	ASM_PREFERRED_EH_DATA_FORMAT, ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New
	defines.
	* config/pa/hpux-unwind.h: New file.

	* testsuite/gcc.dg/cleanup-8.c: Enable test on hppa*-*-hpux*.
	* testsuite/gcc.dg/cleanup-9.c: Likewise.
	* testsuite/gcc.dg/cleanup-10.c: Likewise.
	* testsuite/gcc.dg/cleanup-11.c: Likewise.

From-SVN: r107157
parent ff2d10c1
2005-11-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR target/24348
* config.gcc (hppa*-*-hpux*): Add pa/t-slibgcc-elf-ver to tmake config
when not using sjlj exceptions.
* config/pa/pa64-hpux.h (LIB_SPEC): Add -lpthread in static links.
* config/pa/pa-hpux11.h (LIB_SPEC): Likewise.
* config/pa/som.h (ASM_PREFERRED_EH_DATA_FORMAT): Delete define.
* config/pa/linux-unwind.h (pa32_fallback_frame_state): Use
DWARF_ALT_FRAME_RETURN_COLUMN instead of column 0 as return column.
* config/pa/pa-hpux.h (MD_UNWIND_SUPPORT): New define.
* config/pa/pa-linux.h (INCOMING_RETURN_ADDR_RTX,
DWARF_FRAME_RETURN_COLUMN, ASM_PREFERRED_EH_DATA_FORMAT,
ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Delete defines.
* config/pa/pa.h (ARG_POINTER_CFA_OFFSET): Delete.
(FRAME_POINTER_CFA_OFFSET, INCOMING_RETURN_ADDR_RTX,
DWARF_FRAME_RETURN_COLUMN, DWARF_ALT_FRAME_RETURN_COLUMN,
ASM_PREFERRED_EH_DATA_FORMAT, ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New
defines.
* config/pa/hpux-unwind.h: New file.
2005-11-17 Alexandre Oliva <aoliva@redhat.com>
* config/rs6000/rs6000.h (ASM_OUTPUT_WEAKREF): Define.
......
......@@ -900,6 +900,9 @@ hppa[12]*-*-hpux10*)
tmake_file="${tmake_file} pa/t-dce-thr"
;;
esac
if test x$sjlj != x1; then
tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
fi
use_collect2=yes
use_fixproto=yes
;;
......@@ -932,6 +935,9 @@ hppa*64*-*-hpux11*)
pa/pa-hpux1010.opt pa/pa64-hpux.opt"
need_64bit_hwint=yes
tmake_file="pa/t-pa64 pa/t-pa-hpux pa/t-hpux-shlib"
if test x$sjlj != x1; then
tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
fi
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
case x${enable_threads} in
xyes | xposix )
......@@ -955,6 +961,9 @@ hppa[12]*-*-hpux11*)
;;
esac
tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
if test x$sjlj != x1; then
tmake_file="$tmake_file pa/t-slibgcc-elf-ver"
fi
case x${enable_threads} in
xyes | xposix )
thread_file=posix
......
......@@ -131,8 +131,9 @@ pa32_fallback_frame_state (struct _Unwind_Context *context,
}
fs->regs.reg[88].how = REG_SAVED_OFFSET;
fs->regs.reg[88].loc.offset = (long) &sc->sc_sar - new_cfa;
fs->regs.reg[0].how = REG_SAVED_OFFSET;
fs->regs.reg[0].loc.offset = (long) &sc->sc_iaoq[0] - new_cfa;
fs->retaddr_column = 0;
fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].how = REG_SAVED_OFFSET;
fs->regs.reg[DWARF_ALT_FRAME_RETURN_COLUMN].loc.offset
= (long) &sc->sc_iaoq[0] - new_cfa;
fs->retaddr_column = DWARF_ALT_FRAME_RETURN_COLUMN;
return _URC_NO_REASON;
}
......@@ -124,3 +124,5 @@ Boston, MA 02110-1301, USA. */
/* Define this so we can compile MS code for use with WINE. */
#undef HANDLE_PRAGMA_PACK_PUSH_POP
#define HANDLE_PRAGMA_PACK_PUSH_POP
#define MD_UNWIND_SUPPORT "config/pa/hpux-unwind.h"
......@@ -134,7 +134,7 @@ Boston, MA 02110-1301, USA. */
#define LIB_SPEC \
"%{!shared:\
%{mt|pthread:-lpthread} -lc \
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}"
%{static:%{!nolibdld:-a shared -ldld -a archive -lpthread -lc}}}"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
......
......@@ -19,39 +19,6 @@ the Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
/* A C expression whose value is RTL representing the location of the
incoming return address at the beginning of any function, before the
prologue. You only need to define this macro if you want to support
call frame debugging information like that provided by DWARF 2. */
#define INCOMING_RETURN_ADDR_RTX (gen_rtx_REG (word_mode, 2))
#define DWARF_FRAME_RETURN_COLUMN (DWARF_FRAME_REGNUM (2))
/* This macro chooses the encoding of pointers embedded in the exception
handling sections. If at all possible, this should be defined such
that the exception handling section will not require dynamic relocations,
and so may be read-only.
FIXME: We use DW_EH_PE_aligned to output a PLABEL constructor for
global function pointers. */
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
(CODE == 2 && GLOBAL ? DW_EH_PE_aligned : DW_EH_PE_absptr)
/* Handle special EH pointer encodings. Absolute, pc-relative, and
indirect are handled automatically. Since pc-relative encoding is
not possible on the PA and we don't have the infrastructure for
data relative encoding, we use aligned plabels for global function
pointers. */
#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
do { \
if (((ENCODING) & 0x0F) == DW_EH_PE_aligned) \
{ \
fputs (integer_asm_op (SIZE, FALSE), FILE); \
fputs ("P%", FILE); \
assemble_name (FILE, XSTR (ADDR, 0)); \
goto DONE; \
} \
} while (0)
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
......
......@@ -404,12 +404,72 @@ extern struct rtx_def *hppa_pic_save_rtx (void);
gen_rtx_MEM (word_mode, \
gen_rtx_PLUS (word_mode, frame_pointer_rtx, \
TARGET_64BIT ? GEN_INT (-16) : GEN_INT (-20)))
/* Offset from the argument pointer register value to the top of
stack. This is different from FIRST_PARM_OFFSET because of the
frame marker. */
#define ARG_POINTER_CFA_OFFSET(FNDECL) 0
/* Offset from the frame pointer register value to the top of stack. */
#define FRAME_POINTER_CFA_OFFSET(FNDECL) 0
/* A C expression whose value is RTL representing the location of the
incoming return address at the beginning of any function, before the
prologue. You only need to define this macro if you want to support
call frame debugging information like that provided by DWARF 2. */
#define INCOMING_RETURN_ADDR_RTX (gen_rtx_REG (word_mode, 2))
#define DWARF_FRAME_RETURN_COLUMN (DWARF_FRAME_REGNUM (2))
/* A C expression whose value is an integer giving a DWARF 2 column
number that may be used as an alternate return column. This should
be defined only if DWARF_FRAME_RETURN_COLUMN is set to a general
register, but an alternate column needs to be used for signal frames.
Column 0 is not used but unfortunately its register size is set to
4 bytes (sizeof CCmode) so it can't be used on 64-bit targets. */
#define DWARF_ALT_FRAME_RETURN_COLUMN FIRST_PSEUDO_REGISTER
/* This macro chooses the encoding of pointers embedded in the exception
handling sections. If at all possible, this should be defined such
that the exception handling section will not require dynamic relocations,
and so may be read-only.
Because the HP assembler auto aligns, it is necessary to use
DW_EH_PE_aligned. It's not possible to make the data read-only
on the HP-UX SOM port since the linker requires fixups for label
differences in different sections to be word aligned. However,
the SOM linker can do unaligned fixups for absolute pointers.
We also need aligned pointers for global and function pointers.
Although the HP-UX 64-bit ELF linker can handle unaligned pc-relative
fixups, the runtime doesn't have a consistent relationship between
text and data for dynamically loaded objects. Thus, it's not possible
to use pc-relative encoding for pointers on this target. It may be
possible to use segment relative encodings but GAS doesn't currently
have a mechanism to generate these encodings. For other targets, we
use pc-relative encoding for pointers. If the pointer might require
dynamic relocation, we make it indirect. */
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
(TARGET_GAS && !TARGET_HPUX \
? (DW_EH_PE_pcrel \
| ((GLOBAL) || (CODE) == 2 ? DW_EH_PE_indirect : 0) \
| (TARGET_64BIT ? DW_EH_PE_sdata8 : DW_EH_PE_sdata4)) \
: (!TARGET_GAS || (GLOBAL) || (CODE) == 2 \
? DW_EH_PE_aligned : DW_EH_PE_absptr))
/* Handle special EH pointer encodings. Absolute, pc-relative, and
indirect are handled automatically. We output pc-relative, and
indirect pc-relative ourself since we need some special magic to
generate pc-relative relocations, and to handle indirect function
pointers. */
#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
do { \
if (((ENCODING) & 0x70) == DW_EH_PE_pcrel) \
{ \
fputs (integer_asm_op (SIZE, FALSE), FILE); \
if ((ENCODING) & DW_EH_PE_indirect) \
output_addr_const (FILE, get_deferred_plabel (ADDR)); \
else \
assemble_name (FILE, XSTR ((ADDR), 0)); \
fputs ("+8-$PIC_pcrel$0", FILE); \
goto DONE; \
} \
} while (0)
/* The letters I, J, K, L and M in a register constraint string
can be used to stand for particular ranges of immediate operands.
......
......@@ -56,23 +56,25 @@ Boston, MA 02110-1301, USA. */
#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)
#define LIB_SPEC \
"%{!shared:\
%{!p:%{!pg: -lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
%{!p:%{!pg: %{static:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
%{p:%{!pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\
-lprof %{static:-a archive} -lc\
-lprof %{static:-a archive -lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
%{pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\
-lgprof %{static:-a archive} -lc\
-lgprof %{static:-a archive -lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
/usr/lib/pa20_64/milli.a"
#else
#define LIB_SPEC \
"%{!shared:\
%{!p:%{!pg: -lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
%{!p:%{!pg: %{static:-lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
%{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
-lprof %{static:-a archive} -lc\
-lprof %{static:-a archive -lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
%{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\
-lgprof %{static:-a archive} -lc\
-lgprof %{static:-a archive -lpthread} -lc\
%{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
/usr/lib/pa20_64/milli.a"
#endif
......
......@@ -34,15 +34,6 @@ Boston, MA 02110-1301, USA. */
#define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
/* Select a format to encode pointers in exception handling data. CODE
is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is
true if the symbol may be affected by dynamic relocations. Because
the HP assembler does auto alignment, it is necessary to use
DW_EH_PE_aligned instead of the default DW_EH_PE_absptr. */
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
(TARGET_GAS ? DW_EH_PE_absptr : DW_EH_PE_aligned)
/* HPUX has a program 'chatr' to list the dependencies of dynamically
linked executables and shared libraries. */
#define LDD_SUFFIX "chatr"
......
2005-11-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* gcc.dg/cleanup-8.c: Enable test on hppa*-*-hpux*.
* gcc.dg/cleanup-9.c: Likewise.
* gcc.dg/cleanup-10.c: Likewise.
* gcc.dg/cleanup-11.c: Likewise.
2005-11-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR fortran/24892
/* { dg-do run { target *-*-linux* powerpc*-*-darwin* } } */
/* { dg-do run { target hppa*-*-hpux* *-*-linux* powerpc*-*-darwin* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
/* Verify that cleanups work with exception handling through signal frames
on alternate stack. */
......
/* { dg-do run { target *-*-linux* powerpc*-*-darwin* } } */
/* { dg-do run { target hppa*-*-hpux* *-*-linux* powerpc*-*-darwin* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
/* Verify that cleanups work with exception handling through realtime signal
frames on alternate stack. */
......
/* { dg-do run { target *-*-linux* powerpc*-*-darwin* } } */
/* { dg-do run { target hppa*-*-hpux* *-*-linux* powerpc*-*-darwin* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
/* Verify that cleanups work with exception handling through signal
frames. */
......
/* { dg-do run { target *-*-linux* powerpc*-*-darwin* } } */
/* { dg-do run { target hppa*-*-hpux* *-*-linux* powerpc*-*-darwin* } } */
/* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
/* Verify that cleanups work with exception handling through realtime
signal frames. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment