From af385746fb14957696f524cdc3263cf759f6c732 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 7 Aug 2011 16:32:20 +0000 Subject: [PATCH] * dw2gencfi.c (all_fde_data): Export. * dw2gencfi.h (all_fde_data): Declare. * config/tc-alpha.c (alpha_elf_md_end): Don't convert legacy unwind info to cfi unwind info if the user already has supplied some. --- gas/ChangeLog | 7 +++++++ gas/config/tc-alpha.c | 8 ++++++++ gas/dw2gencfi.c | 2 +- gas/dw2gencfi.h | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index e40ab83259a..110c77e9f04 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2011-08-06 Richard Henderson + + * dw2gencfi.c (all_fde_data): Export. + * dw2gencfi.h (all_fde_data): Declare. + * config/tc-alpha.c (alpha_elf_md_end): Don't convert legacy unwind + info to cfi unwind info if the user already has supplied some. + 2011-08-06 Richard Sandiford * config/tc-mips.c (emit_nop): Delete. diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c index 9523adaaba6..db3f8b4a17a 100644 --- a/gas/config/tc-alpha.c +++ b/gas/config/tc-alpha.c @@ -4042,6 +4042,14 @@ alpha_elf_md_end (void) if (bfd_get_section_by_name (stdoutput, ".eh_frame") != NULL) return; + /* ??? In theory we could look for functions for which we have + generated unwind info via CFI directives, and those we have not. + Those we have not could still get their unwind info from here. + For now, do nothing if we've seen any CFI directives. Note that + the above test will not trigger, as we've not emitted data yet. */ + if (all_fde_data != NULL) + return; + /* Generate .eh_frame data for the unwind directives specified. */ for (p = all_frame_data; p ; p = p->next) if (p->prologue_sym) diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c index 85f2cbb01e7..163b8dea74f 100644 --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -287,7 +287,7 @@ struct cie_entry /* List of FDE entries. */ -static struct fde_entry *all_fde_data; +struct fde_entry *all_fde_data; static struct fde_entry **last_fde_data = &all_fde_data; /* List of CIEs so that they could be reused. */ diff --git a/gas/dw2gencfi.h b/gas/dw2gencfi.h index 0226cdd388e..7f834966b90 100644 --- a/gas/dw2gencfi.h +++ b/gas/dw2gencfi.h @@ -118,6 +118,9 @@ struct fde_entry #endif }; +/* The list of all FDEs that have been collected. */ +extern struct fde_entry *all_fde_data; + /* Fake CFI type; outside the byte range of any real CFI insn. */ #define CFI_adjust_cfa_offset 0x100 #define CFI_return_column 0x101 -- 2.30.2