diff options
author | Olivier Hainque <hainque@adacore.com> | 2009-08-28 09:04:52 +0000 |
---|---|---|
committer | Olivier Hainque <hainque@gcc.gnu.org> | 2009-08-28 09:04:52 +0000 |
commit | 7e49a4b3969b940d0165515374f81c0307965d45 (patch) | |
tree | 3e42ebb98788d56f06fc541c25397579d2c0909d /gcc/config | |
parent | 72129a2509b0f79a94bcc96392f33228813e8bb2 (diff) | |
download | gcc-7e49a4b3969b940d0165515374f81c0307965d45.zip gcc-7e49a4b3969b940d0165515374f81c0307965d45.tar.gz gcc-7e49a4b3969b940d0165515374f81c0307965d45.tar.bz2 |
collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro, always defined.
* collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
always defined. Reflect definition or absence of such for
COLLECT_EXPORT_LIST. Readability helper.
(scanfilter): New enum, to help control what symbols
are to be considered or ignored by scan_prog_file.
(enum pass): Rename as "scanpass", moved together with scanfilter
prior to scan_prog_file's prototype.
(scan_prog_file): Accept and honor scanpass and scanfilter arguments.
Group prototype with the scanpass/scanfilter definitions, factorize
head comments for the several implementations at the prototype.
(main): Reorganize the first pass link control to let AIX
drag only the needed frame tables in executables. Prevent
frame tables collection during the scan aimed at static ctors.
Pre-link and scan for frame tables later to compensate.
* doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
A C statement to issue assembly directives that create a reference
to the given DWARF table identifier label from the current function
section.
* dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
to differentiate first time section entry. Only emit a .data
tables start identifier label the first time around.
(switch_to_frame_table_section): New function. Helper for
output_call_frame_info to switch possibly BACK into the eh_frame
or the debug_frame section depending on FOR_EH.
(output_call_frame_info): Use helper to first enter the proper
frame section.
(output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
emit a link to the frame table start label from each function
section.
* config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
New function. Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
* config/rs6000/rs6000-protos.h: Declare it.
* config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
From-SVN: r151157
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/rs6000/aix.h | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 9 |
3 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h index 44015a3..4676110 100644 --- a/gcc/config/rs6000/aix.h +++ b/gcc/config/rs6000/aix.h @@ -43,6 +43,12 @@ collect has a chance to see them, so scan the object files directly. */ #define COLLECT_EXPORT_LIST +/* Issue assembly directives that create a reference to the given DWARF table + identifier label from the current function section. This is defined to + ensure we drag frame frame tables associated with needed function bodies in + a link with garbage collection activated. */ +#define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref + /* Handle #pragma weak and #pragma pack. */ #define HANDLE_SYSV_PRAGMA 1 diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h index 96f215b..6e6bb9e 100644 --- a/gcc/config/rs6000/rs6000-protos.h +++ b/gcc/config/rs6000/rs6000-protos.h @@ -179,6 +179,8 @@ extern int rs6000_memory_move_cost (enum machine_mode, enum reg_class, int); extern bool rs6000_tls_referenced_p (rtx); extern void rs6000_conditional_register_usage (void); +extern void rs6000_aix_asm_output_dwarf_table_ref (char *); + /* Declare functions in rs6000-c.c */ extern void rs6000_pragma_longcall (struct cpp_reader *); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index cb64d28..8e31cbb 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -17612,6 +17612,15 @@ create_TOC_reference (rtx symbol) gen_rtx_UNSPEC (Pmode, gen_rtvec (1, symbol), UNSPEC_TOCREL))); } +/* Issue assembly directives that create a reference to the given DWARF + FRAME_TABLE_LABEL from the current function section. */ +void +rs6000_aix_asm_output_dwarf_table_ref (char * frame_table_label) +{ + fprintf (asm_out_file, "\t.ref %s\n", + TARGET_STRIP_NAME_ENCODING (frame_table_label)); +} + /* If _Unwind_* has been called from within the same module, toc register is not guaranteed to be saved to 40(1) on function entry. Save it there in that case. */ |