aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-05-16 15:50:16 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-05-16 15:50:16 -0700
commite4c4ebeb21d6cf8db5cbd7aec9fe3918acdfcf90 (patch)
treebe61de48feb531889ef8950109f41ec33acaf79c
parentf90811a2999664865306af3d009f14c884ee3fe8 (diff)
downloadgcc-e4c4ebeb21d6cf8db5cbd7aec9fe3918acdfcf90.zip
gcc-e4c4ebeb21d6cf8db5cbd7aec9fe3918acdfcf90.tar.gz
gcc-e4c4ebeb21d6cf8db5cbd7aec9fe3918acdfcf90.tar.bz2
* config/i386/i386.h (ASM_PREFERRED_EH_DATA_FORMAT): New.
From-SVN: r42180
-rw-r--r--gcc/ChangeLog2
-rw-r--r--gcc/config/i386/i386.h12
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4024dd0..6d52557 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -3,6 +3,8 @@
* dwarf2asm.c (eh_data_format_name): Add names for "pointer size"
variants of non-absolute encodings.
+ * config/i386/i386.h (ASM_PREFERRED_EH_DATA_FORMAT): New.
+
2001-05-16 Richard Henderson <rth@redhat.com>
* except.c (eh_data_format_name): Move to ...
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 27ac641..6a229b7 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -2830,6 +2830,18 @@ extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER];
#define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? (N) : INVALID_REGNUM)
#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 2)
+/* 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.
+
+ ??? All x86 object file formats are capable of representing this.
+ After all, the relocation needed is the same as for the call insn.
+ Whether or not a particular assembler allows us to enter such, I
+ guess we'll have to see. */
+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
+ (flag_pic ? (GLOBAL ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel \
+ : DW_EH_PE_absptr)
+
/* This is how to output the definition of a user-level label named NAME,
such as the label on a static function or variable NAME. */