Commit 581d9404 by John David Anglin Committed by John David Anglin

pa.h (STARTING_FRAME_OFFSET): Change offset for TARGET_64BIT to 16.

	* pa.h (STARTING_FRAME_OFFSET): Change offset for TARGET_64BIT to 16.
	* config.gcc (hppa*64*-*-linux*): Shorten lines in tm_file define.
	(hppa*64*-*-hpux11*): Likewise.  Use elfos.h with gas.
	* pa.c (output_millicode_call): Use symbol difference rather than
	$PIC_pcrel$0 when using HP assembler.
	* pa64-hpux.h (TARGET_GAS): Define to 1 or 0 depending on whether or
	not elfos.h (i.e., gas) is being used.
	(ASM_FILE_START, STRING_ASM_OP, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_COMMON,
	ASM_OUTPUT_ALIGNED_LOCAL, GLOBAL_ASM_OP, ASM_DECLARE_FUNCTION_NAME,
	ASM_OUTPUT_EXTERNAL, ASM_OUTPUT_EXTERNAL_LIBCALL,
	ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL): Define when
	using elfos.h.
	(TARGET_ASM_GLOBALIZE_LABEL): Undefine when using elfos.h.
	(DWARF2_ASM_LINE_DEBUG_INFO): Delete.
	(ASM_FILE_START): Add standard .SPACE and .SUBSPA defines when not
	using elfos.h.
	(TEXT_SECTION_ASM_OP, READONLY_DATA_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
	BSS_SECTION_ASM_OP): New HP style defines when not using elfos.h.
	(TARGET_ASM_NAMED_SECTION, MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL):
	Don't define when not using elfos.h.
	(ASM_DECLARE_RESULT): Don't define.
	* doc/install.texi (hppa*-hp-hpux*): Remove statement that HP assembler
	doesn't work on hppa64-hp-hpux11.
	(hppa*-hp-hpux11): Update.

From-SVN: r58967
parent f7aa343f
2002-11-09 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa.h (STARTING_FRAME_OFFSET): Change offset for TARGET_64BIT to 16.
* config.gcc (hppa*64*-*-linux*): Shorten lines in tm_file define.
(hppa*64*-*-hpux11*): Likewise. Use elfos.h with gas.
* pa.c (output_millicode_call): Use symbol difference rather than
$PIC_pcrel$0 when using HP assembler.
* pa64-hpux.h (TARGET_GAS): Define to 1 or 0 depending on whether or
not elfos.h (i.e., gas) is being used.
(ASM_FILE_START, STRING_ASM_OP, TEXT_SECTION_ASM_OP,
DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP, ASM_OUTPUT_ALIGNED_COMMON,
ASM_OUTPUT_ALIGNED_LOCAL, GLOBAL_ASM_OP, ASM_DECLARE_FUNCTION_NAME,
ASM_OUTPUT_EXTERNAL, ASM_OUTPUT_EXTERNAL_LIBCALL,
ASM_OUTPUT_INTERNAL_LABEL, ASM_GENERATE_INTERNAL_LABEL): Define when
using elfos.h.
(TARGET_ASM_GLOBALIZE_LABEL): Undefine when using elfos.h.
(DWARF2_ASM_LINE_DEBUG_INFO): Delete.
(ASM_FILE_START): Add standard .SPACE and .SUBSPA defines when not
using elfos.h.
(TEXT_SECTION_ASM_OP, READONLY_DATA_SECTION_ASM_OP, DATA_SECTION_ASM_OP,
BSS_SECTION_ASM_OP): New HP style defines when not using elfos.h.
(TARGET_ASM_NAMED_SECTION, MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL):
Don't define when not using elfos.h.
(ASM_DECLARE_RESULT): Don't define.
* doc/install.texi (hppa*-hp-hpux*): Remove statement that HP assembler
doesn't work on hppa64-hp-hpux11.
(hppa*-hp-hpux11): Update.
2002-11-09 Jason Thorpe <thorpej@wasabisystems.com> 2002-11-09 Jason Thorpe <thorpej@wasabisystems.com>
* config/mips/netbsd.h (SUBTARGET_ASM_SPEC): Don't pass -KPIC * config/mips/netbsd.h (SUBTARGET_ASM_SPEC): Don't pass -KPIC
......
...@@ -733,8 +733,8 @@ h8300-*-*) ...@@ -733,8 +733,8 @@ h8300-*-*)
;; ;;
hppa*64*-*-linux* | parisc*64*-*-linux*) hppa*64*-*-linux* | parisc*64*-*-linux*)
target_cpu_default="(MASK_PA_11 | MASK_PA_20)" target_cpu_default="(MASK_PA_11 | MASK_PA_20)"
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \ tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h svr4.h linux.h \
pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h" pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
tmake_file=pa/t-linux64 tmake_file=pa/t-linux64
gas=yes gnu_ld=yes gas=yes gnu_ld=yes
;; ;;
...@@ -867,7 +867,16 @@ hppa1.0-*-hpux10*) ...@@ -867,7 +867,16 @@ hppa1.0-*-hpux10*)
;; ;;
hppa*64*-*-hpux11*) hppa*64*-*-hpux11*)
xm_defines=POSIX xm_defines=POSIX
tm_file="pa/pa64-start.h ${tm_file} pa/pa64-regs.h pa/long_double.h pa/elf.h pa/pa-hpux.h pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h" if test x$gas = xyes
then
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h \
pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
else
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h pa/elf.h \
pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
fi
tmake_file="pa/t-pa64 pa/t-pa-hpux" tmake_file="pa/t-pa64 pa/t-pa-hpux"
xmake_file="pa/x-ada" xmake_file="pa/x-ada"
target_cpu_default="(MASK_PA_11|MASK_PA_20|MASK_GAS)" target_cpu_default="(MASK_PA_11|MASK_PA_20|MASK_GAS)"
......
...@@ -6238,8 +6238,21 @@ output_millicode_call (insn, call_dest) ...@@ -6238,8 +6238,21 @@ output_millicode_call (insn, call_dest)
loaded objects. Using a pc-relative sequence also avoids loaded objects. Using a pc-relative sequence also avoids
problems related to the implicit use of the gp register. */ problems related to the implicit use of the gp register. */
output_asm_insn ("b,l .+8,%%r1", xoperands); output_asm_insn ("b,l .+8,%%r1", xoperands);
output_asm_insn ("addil L'%0-$PIC_pcrel$0+4,%%r1", xoperands);
output_asm_insn ("ldo R'%0-$PIC_pcrel$0+8(%%r1),%%r1", xoperands); if (TARGET_GAS)
{
output_asm_insn ("addil L'%0-$PIC_pcrel$0+4,%%r1", xoperands);
output_asm_insn ("ldo R'%0-$PIC_pcrel$0+8(%%r1),%%r1", xoperands);
}
else
{
xoperands[1] = gen_label_rtx ();
output_asm_insn ("addil L'%0-%l1,%%r1", xoperands);
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
CODE_LABEL_NUMBER (xoperands[1]));
output_asm_insn ("ldo R'%0-%l1(%%r1),%%r1", xoperands);
}
output_asm_insn ("bve,l (%%r1),%%r2", xoperands); output_asm_insn ("bve,l (%%r1),%%r2", xoperands);
} }
else if (TARGET_PORTABLE_RUNTIME) else if (TARGET_PORTABLE_RUNTIME)
...@@ -6269,6 +6282,9 @@ output_millicode_call (insn, call_dest) ...@@ -6269,6 +6282,9 @@ output_millicode_call (insn, call_dest)
} }
else else
{ {
output_asm_insn ("{bl|b,l} .+8,%%r1", xoperands);
output_asm_insn ("addi 16,%%r1,%%r31", xoperands);
if (TARGET_SOM || !TARGET_GAS) if (TARGET_SOM || !TARGET_GAS)
{ {
/* The HP assembler can generate relocations for the /* The HP assembler can generate relocations for the
...@@ -6276,8 +6292,6 @@ output_millicode_call (insn, call_dest) ...@@ -6276,8 +6292,6 @@ output_millicode_call (insn, call_dest)
millicode symbol but not an arbitrary external millicode symbol but not an arbitrary external
symbol when generating SOM output. */ symbol when generating SOM output. */
xoperands[1] = gen_label_rtx (); xoperands[1] = gen_label_rtx ();
output_asm_insn ("{bl|b,l} .+8,%%r1", xoperands);
output_asm_insn ("addi 16,%%r1,%%r31", xoperands);
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L", ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L",
CODE_LABEL_NUMBER (xoperands[1])); CODE_LABEL_NUMBER (xoperands[1]));
output_asm_insn ("addil L'%0-%l1,%%r1", xoperands); output_asm_insn ("addil L'%0-%l1,%%r1", xoperands);
...@@ -6285,8 +6299,6 @@ output_millicode_call (insn, call_dest) ...@@ -6285,8 +6299,6 @@ output_millicode_call (insn, call_dest)
} }
else else
{ {
output_asm_insn ("{bl|b,l} .+8,%%r1", xoperands);
output_asm_insn ("addi 16,%%r1,%%r31", xoperands);
output_asm_insn ("addil L'%0-$PIC_pcrel$0+8,%%r1", xoperands); output_asm_insn ("addil L'%0-$PIC_pcrel$0+8,%%r1", xoperands);
output_asm_insn ("ldo R'%0-$PIC_pcrel$0+12(%%r1),%%r1", output_asm_insn ("ldo R'%0-$PIC_pcrel$0+12(%%r1),%%r1",
xoperands); xoperands);
......
...@@ -672,8 +672,10 @@ extern struct rtx_def *hppa_pic_save_rtx PARAMS ((void)); ...@@ -672,8 +672,10 @@ extern struct rtx_def *hppa_pic_save_rtx PARAMS ((void));
/* Offset within stack frame to start allocating local variables at. /* Offset within stack frame to start allocating local variables at.
If FRAME_GROWS_DOWNWARD, this is the offset to the END of the If FRAME_GROWS_DOWNWARD, this is the offset to the END of the
first local allocated. Otherwise, it is the offset to the BEGINNING first local allocated. Otherwise, it is the offset to the BEGINNING
of the first local allocated. */ of the first local allocated. The start of the locals must lie on
#define STARTING_FRAME_OFFSET 8 a STACK_BOUNDARY or else the frame size of leaf functions will not
be zero. */
#define STARTING_FRAME_OFFSET (TARGET_64BIT ? 16 : 8)
/* If we generate an insn to push BYTES bytes, /* If we generate an insn to push BYTES bytes,
this says how many the stack pointer really advances by. this says how many the stack pointer really advances by.
......
...@@ -72,50 +72,165 @@ Boston, MA 02111-1307, USA. */ ...@@ -72,50 +72,165 @@ Boston, MA 02111-1307, USA. */
#define MD_STARTFILE_PREFIX_1 "/opt/langtools/lib/pa20_64/" #define MD_STARTFILE_PREFIX_1 "/opt/langtools/lib/pa20_64/"
#endif #endif
/* hpux11 has the new HP assembler. It's still lousy, but it's a whole lot /* Due to limitations in the target structure, it isn't currently possible
better than the assembler shipped with older versions of hpux. */ to dynamically switch between the GNU and HP assemblers. */
#undef NEW_HP_ASSEMBLER #undef TARGET_GAS
#define NEW_HP_ASSEMBLER 1
/* Configure selects the standard ELFOS defines for use with GAS. */
#ifdef USING_ELFOS_H
/* We are using GAS. */
#define TARGET_GAS 1
#undef ASM_FILE_START #undef ASM_FILE_START
#define ASM_FILE_START(FILE) \ #define ASM_FILE_START(FILE) \
do { \ do { \
if (TARGET_64BIT) \ if (TARGET_64BIT) \
fputs("\t.LEVEL 2.0w\n", FILE); \ fputs("\t.LEVEL 2.0w\n", FILE); \
else if (TARGET_PA_20) \ else if (TARGET_PA_20) \
fputs("\t.LEVEL 2.0\n", FILE); \ fputs("\t.LEVEL 2.0\n", FILE); \
else if (TARGET_PA_11) \ else if (TARGET_PA_11) \
fputs("\t.LEVEL 1.1\n", FILE); \ fputs("\t.LEVEL 1.1\n", FILE); \
else \ else \
fputs("\t.LEVEL 1.0\n", FILE); \ fputs("\t.LEVEL 1.0\n", FILE); \
if (profile_flag)\ if (profile_flag) \
fprintf (FILE, "\t.IMPORT _mcount, CODE\n");\ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, "_mcount", "function"); \
if (write_symbols != NO_DEBUG) \ if (write_symbols != NO_DEBUG) \
output_file_directive ((FILE), main_input_filename); \ { \
} while (0) output_file_directive ((FILE), main_input_filename); \
fputs ("\t.version\t\"01.01\"\n", FILE); \
} \
} while (0)
/* This is how we output a null terminated string. */
#undef STRING_ASM_OP
#define STRING_ASM_OP "\t.stringz\t"
#define TEXT_SECTION_ASM_OP "\t.text"
#define DATA_SECTION_ASM_OP "\t.data"
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
#undef ASM_OUTPUT_ALIGNED_COMMON
#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
do { \
bss_section (); \
assemble_name ((FILE), (NAME)); \
fputs ("\t.comm ", (FILE)); \
fprintf ((FILE), "%d\n", MAX ((SIZE), ((ALIGN) / BITS_PER_UNIT))); \
} while (0)
#undef ASM_OUTPUT_ALIGNED_LOCAL
#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
do { \
bss_section (); \
fprintf ((FILE), "\t.align %d\n", ((ALIGN) / BITS_PER_UNIT)); \
assemble_name ((FILE), (NAME)); \
fprintf ((FILE), "\n\t.block %d\n", (SIZE)); \
} while (0)
/* The define in pa.h doesn't work with the alias attribute. The
default is ok with the following define for GLOBAL_ASM_OP. */
#undef TARGET_ASM_GLOBALIZE_LABEL
/* This is how we globalize a label. */
#define GLOBAL_ASM_OP "\t.globl\t"
/* Hacked version from elfos.h that doesn't output a label. */
#undef ASM_DECLARE_FUNCTION_NAME
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
do { \
ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \
ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \
} while (0)
/* The type of external references must be set correctly for the
dynamic loader to work correctly. This is equivalent to the
HP assembler's .IMPORT directive but relates more directly to
ELF object file types. */
#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
do { \
int save_referenced; \
save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL));\
if (FUNCTION_NAME_P (NAME)) \
ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \
else \
ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)) = save_referenced;\
} while (0)
/* We need set the type for external libcalls. Also note that not all
libcall names are passed to targetm.encode_section_info (e.g., __main).
Thus, we also have to do the section encoding if it hasn't been done
already. */
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
do { \
if (!FUNCTION_NAME_P (XSTR (FUN, 0))) \
hppa_encode_label (FUN); \
ASM_OUTPUT_TYPE_DIRECTIVE (FILE, XSTR (FUN, 0), "function"); \
} while (0)
/* We need to use the HP style for internal labels. */
#undef ASM_OUTPUT_INTERNAL_LABEL
#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \
fprintf (FILE, "%c$%s%04d\n", (PREFIX)[0], (PREFIX) + 1, NUM)
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM))
#else /* USING_ELFOS_H */
/* We are not using GAS. */
#define TARGET_GAS 0
/* HPUX 11 has the "new" HP assembler. It's still lousy, but it's a whole
lot better than the assembler shipped with older versions of hpux.
However, it doesn't support weak symbols and is a bad fit with ELF. */
#undef NEW_HP_ASSEMBLER
#define NEW_HP_ASSEMBLER 1
/* It looks like DWARF2 will be the easiest debug format to handle on this /* It looks like DWARF2 will be the easiest debug format to handle on this
platform. */ platform. */
#define OBJECT_FORMAT_ELF
#define DWARF2_DEBUGGING_INFO 1 #define DWARF2_DEBUGGING_INFO 1
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
/* This isn't quite ready yet. I'm seeing it mess up some line
tables. For example, we're getting lines starting/ending at
impossible addresses. */
#define DWARF2_ASM_LINE_DEBUG_INFO 1
/* This target uses the ELF object file format. */
#define OBJECT_FORMAT_ELF
/* The rest of this file is copied from the generic svr4.h. One day we #undef ASM_FILE_START
would like to simply include svr4.h instead of copying all these #define ASM_FILE_START(FILE) \
definitions. */ do { \
if (TARGET_64BIT) \
fputs("\t.LEVEL 2.0w\n", FILE); \
else if (TARGET_PA_20) \
fputs("\t.LEVEL 2.0\n", FILE); \
else if (TARGET_PA_11) \
fputs("\t.LEVEL 1.1\n", FILE); \
else \
fputs("\t.LEVEL 1.0\n", FILE); \
fputs("\t.SPACE $PRIVATE$,SORT=16\n\
\t.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31\n\
\t.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82\n\
\t.SPACE $TEXT$,SORT=8\n\
\t.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44\n\
\t.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY\n", FILE); \
if (profile_flag) \
fprintf (FILE, "\t.IMPORT _mcount, CODE\n"); \
if (write_symbols != NO_DEBUG) \
output_file_directive ((FILE), main_input_filename); \
} while (0)
#define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rodata" #undef TEXT_SECTION_ASM_OP
#define TEXT_SECTION_ASM_OP "\t.SUBSPA $CODE$\n"
#undef READONLY_DATA_SECTION_ASM_OP
#define READONLY_DATA_SECTION_ASM_OP "\t.SUBSPA $LIT$\n"
#undef DATA_SECTION_ASM_OP
#define DATA_SECTION_ASM_OP "\t.SUBSPA $DATA$\n"
#undef BSS_SECTION_ASM_OP
#define BSS_SECTION_ASM_OP "\t.SUBSPA $BSS$\n"
/* On svr4, we *do* have support for the .init and .fini sections, and we #endif /* USING_ELFOS_H */
can put stuff in there to be executed before and after `main'. We let
crtstuff.c and other files know this by defining the following symbols.
The definitions say how to change sections to the .init and .fini
sections. This is the same for all known svr4 assemblers. */
/* For the time being, we aren't using init sections. `P' relocations /* For the time being, we aren't using init sections. `P' relocations
are currently used for function references. However, P relocations are are currently used for function references. However, P relocations are
...@@ -124,10 +239,9 @@ do { \ ...@@ -124,10 +239,9 @@ do { \
weak symbols in crtbegin.o (e.g., __register_frame_info). Possibly weak symbols in crtbegin.o (e.g., __register_frame_info). Possibly
Q relocations might avoid this problem but the GNU assembler doesn't Q relocations might avoid this problem but the GNU assembler doesn't
support them. */ support them. */
#if 0 #undef INIT_SECTION_ASM_OP
#define INIT_SECTION_ASM_OP "\t.section\t.init" #undef FINI_SECTION_ASM_OP
#define FINI_SECTION_ASM_OP "\t.section\t.fini"
#else
#define EH_FRAME_IN_DATA_SECTION 1 #define EH_FRAME_IN_DATA_SECTION 1
#undef ENDFILE_SPEC #undef ENDFILE_SPEC
...@@ -144,32 +258,13 @@ do { \ ...@@ -144,32 +258,13 @@ do { \
of running ldd, but unfortunately the options are different for of running ldd, but unfortunately the options are different for
the two linkers. */ the two linkers. */
#define LDD_SUFFIX "/usr/ccs/bin/ldd" #define LDD_SUFFIX "/usr/ccs/bin/ldd"
/* Skip to first '>' then advance to '/' at the beginning of the filename. */ /* Skip to first '>' then advance to '/' at the beginning of the filename. */
#define PARSE_LDD_OUTPUT(PTR) \ #define PARSE_LDD_OUTPUT(PTR) \
do { \ do { \
while (*PTR != '>') PTR++; \ while (*PTR != '>') PTR++; \
while (*PTR != '/') PTR++; \ while (*PTR != '/') PTR++; \
} while (0) } while (0)
#endif
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
/* This is how we tell the assembler that a symbol is weak. */
#define ASM_WEAKEN_LABEL(FILE,NAME) \
do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
fputc ('\n', FILE); } while (0)
/* Write the extra assembler code needed to declare a function's result.
Most svr4 assemblers don't require any special declaration of the
result value, but there are exceptions. */
#ifndef ASM_DECLARE_RESULT
#define ASM_DECLARE_RESULT(FILE, RESULT)
#endif
/* If using HP ld do not call pxdb. Use size as a program that does nothing /* If using HP ld do not call pxdb. Use size as a program that does nothing
and returns 0. /bin/true cannot be used because it is a script without and returns 0. /bin/true cannot be used because it is a script without
......
...@@ -2059,8 +2059,7 @@ longer a multiple of 2 bytes. ...@@ -2059,8 +2059,7 @@ longer a multiple of 2 bytes.
We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa
platforms; you may encounter a variety of problems when using the HP platforms; you may encounter a variety of problems when using the HP
assembler. The HP assembler does not work with the @samp{hppa64-hp-hpux11*} assembler.
port.
Specifically, @option{-g} does not work on HP-UX (since that system Specifically, @option{-g} does not work on HP-UX (since that system
uses a peculiar debugging format which GCC does not know about), unless you uses a peculiar debugging format which GCC does not know about), unless you
...@@ -2162,16 +2161,27 @@ compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for ...@@ -2162,16 +2161,27 @@ compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for
information about obtaining precompiled GCC binaries for HP-UX. information about obtaining precompiled GCC binaries for HP-UX.
GNU binutils 2.13 or later is recommended with the 64-bit port. GNU binutils 2.13 or later is recommended with the 64-bit port.
The HP assembler is not supported. It is @emph{highly} recommended The HP assembler has many limitations and is not recommended. For
that the GNU linker be used as well. Either binutils must be built example, it does not support weak symbols or alias definitions.
prior to gcc, or a binary distribution of gcc or binutils must be As a result, explicit template instantiations are required when
obtained for the initial builds. When starting with a HP compiler, using C++. Either the HP or GNU linker can be used but it may be
it is preferable to use the ANSI compiler as the bundled compiler necessary to use the GNU linker when dwarf2 exception support is
only supports traditional C. Bootstrapping with the bundled compiler implemented.
is tested infrequently and problems often arise because of the subtle
differences in semantics between traditional and ISO C. There also There are several possible approaches to building the distribution.
have been problems reported with various binary distributions. This Binutils can be built first using the HP tools. Then, the GCC
port still is undergoing significant development. distribution can be built. The second approach is to build GCC
first using the HP tools, then build binutils, then rebuild GCC.
There have been problems with various binary distributions, so
it is best not to start from a binary distribution.
When starting with a HP compiler, it is preferable to use the ANSI
compiler as the bundled compiler only supports traditional C.
Bootstrapping with the bundled compiler is tested infrequently and
problems often arise because of the subtle differences in semantics
between traditional and ISO C.
This port still is undergoing significant development.
@html @html
<hr /> <hr />
......
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