From mboxrd@z Thu Jan 1 00:00:00 1970 From: "John David Anglin" To: rth@redhat.com (Richard Henderson) Cc: gcc-patches@gcc.gnu.org Subject: Re: fix execute/20010518-2.c Date: Wed, 22 Aug 2001 11:11:00 -0000 Message-id: <200108221811.f7MIBV1a021309@hiauly1.hia.nrc.ca> References: <20010822102610.E29468@redhat.com> X-SW-Source: 2001-08/msg01300.html > If you tested c++, you tested exception handling. And as-discussed, > you will get unaligned data there. The test results are here < http://gcc.gnu.org/ml/gcc-testresults/2001-08/msg00588.html >. I see any obvious problems related to exception handling. The FAILs are pretty much the same as a few days before. I am currently testing the following change to the PA config together with the patch you sent. It will take a couple of days to run with and without gas. Possibly, ASM_PREFERRED_EH_DATA_FORMAT can be improved but at the moment I don't know what is needed. As I understand the situation, we have the following selectors: F% Full 32 bits (default). T% F% value offset from linkage table pointer (%r19). P% Data procedure label constructor. The other selectors are more or less instruction related. Probably, the location and attributes of where the exception data is stored could be controlled. Dave -- J. David Anglin dave.anglin@nrc.ca National Research Council of Canada (613) 990-0752 (FAX: 952-6605) 2001-08-22 John David Anglin * som.h (ASM_PREFERRED_EH_DATA_FORMAT): Define. * pa.h (UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): Define --- som.h.orig Sat Aug 11 22:59:29 2001 +++ som.h Wed Aug 22 11:21:51 2001 @@ -51,6 +51,15 @@ fprintf (FILE, \ "\t.stabs \"\",%d,0,0,L$text_end0000\nL$text_end0000:\n", N_SO) +/* 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" --- pa.h.orig Mon Aug 20 14:10:07 2001 +++ pa.h Wed Aug 22 11:22:42 2001 @@ -1755,6 +1755,13 @@ #define ASM_OUTPUT_BYTE(FILE,VALUE) \ fprintf (FILE, "\t.byte 0x%x\n", (VALUE)) +/* C string constants giving the pseudo-op to use for a sequence of + 2, 4, and 8 byte unaligned constants. dwarf2out.c needs these. */ + +#define UNALIGNED_SHORT_ASM_OP (TARGET_GAS ? "\t.half " : NULL) +#define UNALIGNED_INT_ASM_OP (TARGET_GAS ? "\t.word " : NULL) +#define UNALIGNED_DOUBLE_INT_ASM_OP (TARGET_GAS ? "\t.dword " : NULL) + #define ASM_GLOBALIZE_LABEL(FILE, NAME) \ do { \ /* We only handle DATA objects here, functions are globalized in \