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
This commit is contained in:
Eric Botcazou 2006-11-02 18:40:54 +00:00 committed by Eric Botcazou
parent 4cb1c1c396
commit 55fc9e87b2
4 changed files with 71 additions and 5 deletions

View File

@ -1,3 +1,10 @@
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>
PR middle-end/29335

View File

@ -3522,8 +3522,14 @@ sjlj_output_call_site_table (void)
static void
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)
{
int flags;
@ -3539,22 +3545,26 @@ switch_to_exception_section (const char * ARG_UNUSED (fnname))
}
else
flags = SECTION_WRITE;
#ifdef HAVE_LD_EH_GC_SECTIONS
if (flag_function_sections)
{
char *section_name = xmalloc (strlen (fnname) + 32);
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);
}
else
#endif
exception_section = get_section (".gcc_except_table", flags, NULL);
exception_section
= s = get_section (".gcc_except_table", flags, NULL);
}
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

View File

@ -1,3 +1,7 @@
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>
* gcc.dg/torture/builtin-math-3.c: Fix semicolons.

View File

@ -0,0 +1,45 @@
/* 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;
}