Commit 55fc9e87 by Eric Botcazou Committed by Eric Botcazou

re PR other/29639 (ext/bitmap_allocator/check_allocate_max_size.cc execution test)

	PR other/29639
	* except.c (switch_to_exception_section): Do not cache the section
	if named sections are supported and HAVE_LD_EH_GC_SECTIONS is defined
	and flag_function_sections is set.

From-SVN: r118422
parent 4cb1c1c3
2006-11-02 Eric Botcazou <ebotcazou@adacore.com>
PR other/29639
* except.c (switch_to_exception_section): Do not cache the section
if named sections are supported and HAVE_LD_EH_GC_SECTIONS is defined
and flag_function_sections is set.
2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
PR middle-end/29335 PR middle-end/29335
......
...@@ -3522,8 +3522,14 @@ sjlj_output_call_site_table (void) ...@@ -3522,8 +3522,14 @@ sjlj_output_call_site_table (void)
static void static void
switch_to_exception_section (const char * ARG_UNUSED (fnname)) switch_to_exception_section (const char * ARG_UNUSED (fnname))
{ {
if (exception_section == 0) section *s;
if (exception_section)
s = exception_section;
else
{ {
/* Compute the section and cache it into exception_section,
unless it depends on the function name. */
if (targetm.have_named_sections) if (targetm.have_named_sections)
{ {
int flags; int flags;
...@@ -3539,22 +3545,26 @@ switch_to_exception_section (const char * ARG_UNUSED (fnname)) ...@@ -3539,22 +3545,26 @@ switch_to_exception_section (const char * ARG_UNUSED (fnname))
} }
else else
flags = SECTION_WRITE; flags = SECTION_WRITE;
#ifdef HAVE_LD_EH_GC_SECTIONS #ifdef HAVE_LD_EH_GC_SECTIONS
if (flag_function_sections) if (flag_function_sections)
{ {
char *section_name = xmalloc (strlen (fnname) + 32); char *section_name = xmalloc (strlen (fnname) + 32);
sprintf (section_name, ".gcc_except_table.%s", fnname); sprintf (section_name, ".gcc_except_table.%s", fnname);
exception_section = get_section (section_name, flags, NULL); s = get_section (section_name, flags, NULL);
free (section_name); free (section_name);
} }
else else
#endif #endif
exception_section = get_section (".gcc_except_table", flags, NULL); exception_section
= s = get_section (".gcc_except_table", flags, NULL);
} }
else else
exception_section = flag_pic ? data_section : readonly_data_section; exception_section
= s = flag_pic ? data_section : readonly_data_section;
} }
switch_to_section (exception_section);
switch_to_section (s);
} }
#endif #endif
......
2006-11-02 Eric Botcazou <ebotcazou@adacore.com>
* g++.dg/eh/gcsec1.C: New test.
2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2006-11-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.dg/torture/builtin-math-3.c: Fix semicolons. * gcc.dg/torture/builtin-math-3.c: Fix semicolons.
/* PR other/29639 */
/* AIX gld supports garbage collection. But AIX gcc does not support
-ffunction-sections or -fdata-sections. */
/* { dg-do run { xfail rs6000-*-aix* powerpc*-*-aix* } } */
/* { dg-require-gc-sections "" } */
/* { dg-options "-ffunction-sections -Wl,--gc-sections" } */
extern "C" void abort (void);
int g = 0;
void raise_exception()
{
throw 1;
}
void used()
{
try {
raise_exception ();
}
catch (int) {
g = 1;
}
}
void unused()
{
try {
raise_exception ();
}
catch (int) {
g = 1;
}
}
int main()
{
used ();
if (g != 1)
abort ();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment