• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

GNU Binutils with patches for OS216


Commit MetaInfo

Révision3dd243066bca0093af6a653cc25507596d5ea0b4 (tree)
l'heure2008-09-08 07:54:54
AuteurDave Anglin <dave.anglin@nrc....>
CommiterDave Anglin

Message de Log

* dw2gencfi.c (CFI_DIFF_EXPR_OK): Define if not defined.
(dot_cfi_personality): Use CFI_DIFF_EXPR_OK instead of DIFF_EXPR_OK.
(dot_cfi_lsda, output_cie, output_fde): Likewise.
* config/tc-hppa.h (CFI_DIFF_EXPR_OK): Define.

Change Summary

Modification

--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
1+2008-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
2+
3+ * dw2gencfi.c (CFI_DIFF_EXPR_OK): Define if not defined.
4+ (dot_cfi_personality): Use CFI_DIFF_EXPR_OK instead of DIFF_EXPR_OK.
5+ (dot_cfi_lsda, output_cie, output_fde): Likewise.
6+ * config/tc-hppa.h (CFI_DIFF_EXPR_OK): Define.
7+
18 2008-09-06 Richard Sandiford <rdsandiford@googlemail.com>
29
310 * config/tc-mips.h (DWARF2_FDE_RELOC_SIZE): Define.
--- a/gas/config/tc-hppa.h
+++ b/gas/config/tc-hppa.h
@@ -222,6 +222,10 @@ extern int hppa_regname_to_dw2regnum (char *regname);
222222 /* Due to the way dynamic linking to personality functions is handled
223223 on HP-UX, we need to have a read-write .eh_frame section. */
224224 #define DWARF2_EH_FRAME_READ_ONLY 0
225+
226+/* Because differences between text and data symbols don't work, we
227+ can't use difference expressions during CFI generation. */
228+#define CFI_DIFF_EXPR_OK 0
225229 #endif
226230
227231 #endif /* OBJ_ELF */
--- a/gas/dw2gencfi.c
+++ b/gas/dw2gencfi.c
@@ -25,6 +25,15 @@
2525
2626 #ifdef TARGET_USE_CFIPOP
2727
28+/* By default, use difference expressions if DIFF_EXPR_OK is defined. */
29+#ifndef CFI_DIFF_EXPR_OK
30+# ifdef DIFF_EXPR_OK
31+# define CFI_DIFF_EXPR_OK 1
32+# else
33+# define CFI_DIFF_EXPR_OK 0
34+# endif
35+#endif
36+
2837 /* We re-use DWARF2_LINE_MIN_INSN_LENGTH for the code alignment field
2938 of the CIE. Default to 1 if not otherwise specified. */
3039 #ifndef DWARF2_LINE_MIN_INSN_LENGTH
@@ -655,7 +664,7 @@ dot_cfi_personality (int ignored ATTRIBUTE_UNUSED)
655664
656665 if ((encoding & 0xff) != encoding
657666 || ((encoding & 0x70) != 0
658-#if defined DIFF_EXPR_OK || defined tc_cfi_emit_pcrel_expr
667+#if CFI_DIFF_EXPR_OK || defined tc_cfi_emit_pcrel_expr
659668 && (encoding & 0x70) != DW_EH_PE_pcrel
660669 #endif
661670 )
@@ -725,7 +734,7 @@ dot_cfi_lsda (int ignored ATTRIBUTE_UNUSED)
725734
726735 if ((encoding & 0xff) != encoding
727736 || ((encoding & 0x70) != 0
728-#if defined DIFF_EXPR_OK || defined tc_cfi_emit_pcrel_expr
737+#if CFI_DIFF_EXPR_OK || defined tc_cfi_emit_pcrel_expr
729738 && (encoding & 0x70) != DW_EH_PE_pcrel
730739 #endif
731740 )
@@ -1092,7 +1101,7 @@ output_cie (struct cie_entry *cie)
10921101 exp = cie->personality;
10931102 if ((cie->per_encoding & 0x70) == DW_EH_PE_pcrel)
10941103 {
1095-#ifdef DIFF_EXPR_OK
1104+#if CFI_DIFF_EXPR_OK
10961105 exp.X_op = O_subtract;
10971106 exp.X_op_symbol = symbol_temp_new_now ();
10981107 emit_expr (&exp, size);
@@ -1122,7 +1131,7 @@ output_cie (struct cie_entry *cie)
11221131 default:
11231132 abort ();
11241133 }
1125-#if defined DIFF_EXPR_OK || defined tc_cfi_emit_pcrel_expr
1134+#if CFI_DIFF_EXPR_OK || defined tc_cfi_emit_pcrel_expr
11261135 enc |= DW_EH_PE_pcrel;
11271136 #endif
11281137 out_one (enc);
@@ -1157,7 +1166,7 @@ output_fde (struct fde_entry *fde, struct cie_entry *cie,
11571166 exp.X_op_symbol = cie->start_address;
11581167 emit_expr (&exp, 4); /* CIE offset. */
11591168
1160-#ifdef DIFF_EXPR_OK
1169+#if CFI_DIFF_EXPR_OK
11611170 exp.X_add_symbol = fde->start_address;
11621171 exp.X_op_symbol = symbol_temp_new_now ();
11631172 emit_expr (&exp, DWARF2_FDE_RELOC_SIZE); /* Code offset. */
@@ -1185,7 +1194,7 @@ output_fde (struct fde_entry *fde, struct cie_entry *cie,
11851194 exp = fde->lsda;
11861195 if ((fde->lsda_encoding & 0x70) == DW_EH_PE_pcrel)
11871196 {
1188-#ifdef DIFF_EXPR_OK
1197+#if CFI_DIFF_EXPR_OK
11891198 exp.X_op = O_subtract;
11901199 exp.X_op_symbol = symbol_temp_new_now ();
11911200 emit_expr (&exp, augmentation_size);