aboutsummaryrefslogtreecommitdiff
path: root/gcc/unwind-dw2-fde.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>2001-06-05 18:57:49 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-06-05 18:57:49 -0700
commit099c8b17ace8e7a35a53993bf8cf211b955d29a8 (patch)
tree7d58db2a4f6ec00eb20b149b79bc6fbe2e8c5a80 /gcc/unwind-dw2-fde.c
parentc51f6c6bd5a4177ee5dcb0afbfe9b27e4fda6478 (diff)
downloadgcc-099c8b17ace8e7a35a53993bf8cf211b955d29a8.zip
gcc-099c8b17ace8e7a35a53993bf8cf211b955d29a8.tar.gz
gcc-099c8b17ace8e7a35a53993bf8cf211b955d29a8.tar.bz2
dwarf2.h (DW_EH_PE_aligned): New.
* dwarf2.h (DW_EH_PE_aligned): New. * dwarf2asm.c (eh_data_format_name): Name it. (dw2_asm_output_encoded_addr_rtx): Align for it. * dwarf2out.c (output_call_frame_info): Handle it for personality routine and LSDA pointers. * unwind-pe.h (DW_EH_PE_aligned): New. (base_of_encoded_value): Handle it. (read_encoded_value_with_base): Likewise. * unwind-dw2-fde.c (base_from_object): Likewise. (get_cie_encoding): Likewise. * config/alpha/elf.h: Remove ecoff commentary. * config/alpha/osf.h (ASM_PREFERRED_EH_DATA_FORMAT): New. From-SVN: r42926
Diffstat (limited to 'gcc/unwind-dw2-fde.c')
-rw-r--r--gcc/unwind-dw2-fde.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/unwind-dw2-fde.c b/gcc/unwind-dw2-fde.c
index c486f50..6da2c73 100644
--- a/gcc/unwind-dw2-fde.c
+++ b/gcc/unwind-dw2-fde.c
@@ -233,6 +233,7 @@ base_from_object (unsigned char encoding, struct object *ob)
{
case DW_EH_PE_absptr:
case DW_EH_PE_pcrel:
+ case DW_EH_PE_aligned:
return 0;
case DW_EH_PE_textrel:
@@ -270,7 +271,12 @@ get_cie_encoding (struct dwarf_cie *cie)
return *p;
/* Personality encoding and pointer. */
else if (*aug == 'P')
- p = read_encoded_value_with_base (*p & 0xF, 0, p + 1, &dummy);
+ {
+ /* ??? Avoid dereferencing indirect pointers, since we're
+ faking the base address. Gotta keep DW_EH_PE_aligned
+ intact, however. */
+ p = read_encoded_value_with_base (*p & 0x7F, 0, p + 1, &dummy);
+ }
/* LSDA encoding. */
else if (*aug == 'L')
p++;