public inbox for java@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: [patch] C6X unwinding/exception handling
       [not found] ` <201109131348.13087.paul@codesourcery.com>
@ 2011-10-09 11:10   ` Matthias Klose
  2011-10-10 10:33     ` Andrew Haley
  0 siblings, 1 reply; 10+ messages in thread
From: Matthias Klose @ 2011-10-09 11:10 UTC (permalink / raw)
  To: Paul Brook; +Cc: gcc-patches, GCC Java, Nicola Pero

This did break libobjc and libjava on arm-linux-gnueabi.

libobjc now has an undefined reference to _Unwind_decode_target2, which can be
avoided with

--- libobjc/exception.c.orig    2011-07-21 15:33:57.000000000 +0000
+++ libobjc/exception.c 2011-10-09 10:53:12.554940776 +0000
@@ -182,7 +182,7 @@
   _Unwind_Ptr ptr;

   ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-  ptr = _Unwind_decode_target2 (ptr);
+  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word) ptr);

   /* NULL ptr means catch-all.  Note that if the class is not found,
      this will abort the program.  */

libjava fails to build, the same change doesn't work for libjava/exception.cc,
because the struct lsda_header_info in exception.cc is missing the ttype_base
member. Any suggestions?

On 09/13/2011 02:48 PM, Paul Brook wrote:
>> C6X uses an unwinding/exception handling echeme very similar to that
>> defined by the ARM EABI.  The core of the unwinder is the same, so I've
>> pulled it out into a common file.
>>
>> Other than the obvious target specific bits, the main compiler visible
>> difference is that the C6X assembler generates the unwinding tables from
>> DWARF .cfi directives, rather than the separate set of directives used by
>> the ARM assembler.
>>
>> The libstdc++ changes probably deserve a bit of explanation. The ttype_base
>> field was clearly used in an early draft of the ARM EABI, and the current
>> ARM definition is a compatible subset of that used by C6X.
>> _GLIBCXX_OVERRIDE_TTYPE_ENCODING is an unfortunate hack because when doing
>> the ARM implementation I failed to realise ttype_encoding was the same
>> thing as R_ARM_TARGET2.  We now have a lot of ARM binaries floating around
>> with that field set incorrectly, so it's either this or an ABI bump.
> 
> I've updated the patch to accomodate the move to libgcc/, done a quick sanity 
> recheck of arm-linux and c6x-elf and applied to svn.
> 
> P.S. in case it's not clear from my description, the libstdc++ changes aren't 
> really a new hack, it's just making an old one more obvious.
> 
> Paul
> 
> 2011-09-13  Paul Brook  <paul@codesourcery.com>
>  
> 	gcc/
> 	* config/arm/arm.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
> 	(ARM_TARGET2_DWARF_FORMAT): Provide default definition.
> 	* config/arm/linux-eabi.h (ARM_TARGET2_DWARF_FORMAT): Define.
> 	* config/arm/symbian.h (ARM_TARGET2_DWARF_FORMAT): Define.
> 	* config/arm/uclinux-eabi.h(ARM_TARGET2_DWARF_FORMAT): Define.
> 	* config/arm/t-bpabi (EXTRA_HEADERS): Add unwind-arm-common.h.
> 	* config/arm/t-symbian (EXTRA_HEADERS): Add unwind-arm-common.h.
> 	* config/c6x/c6x.c (c6x_output_file_unwind): Don't rely on dwarf2 code
> 	enabling unwind tables.
> 	(c6x_debug_unwind_info): New function.
> 	(TARGET_ARM_EABI_UNWINDER): Define.
> 	(TARGET_DEBUG_UNWIND_INFO): Define.
> 	* config/c6x/c6x.h (DWARF_FRAME_RETURN_COLUMN): Define.
> 	(TARGET_EXTRA_CFI_SECTION): Remove.
> 	* config/c6x/t-c6x-elf (EXTRA_HEADERS): Set.
> 	* ginclude/unwind-arm-common.h: New file.
> 
> 	libgcc/
> 	* config.host (tic6x-*-*): Add c6x/t-c6x-elf.  Set unwind_header.
> 	* unwind-c.c (PERSONALITY_FUNCTION): Use UNWIND_POINTER_REG.
> 	* unwind-arm-common.inc: New file.
> 	* config/arm/unwind-arm.c: Use unwind-arm-common.inc.
> 	* config/arm/unwind-arm.h: Use unwind-arm-common.h.
> 	(_GLIBCXX_OVERRIDE_TTYPE_ENCODING): Define.
> 	* config/c6x/libunwind.S: New file.
> 	* config/c6x/pr-support.c: New file.
> 	* config/c6x/unwind-c6x.c: New file.
> 	* config/c6x/unwind-c6x.h: New file.
> 	* config/c6x/t-c6x-elf: New file.
> 
> 
> 	libstdc++-v3/
> 	* libsupc++/eh_arm.cc (__cxa_end_cleanup): Add C6X implementation.
> 	* libsupc++/eh_call.cc (__cxa_call_unexpected): Set rtti_base.
> 	* libsupc++/eh_personality.cc (NO_SIZE_OF_ENCODED_VALUE): Remove
> 	__ARM_EABI_UNWINDER__ check.
> 	(parse_lsda_header): Check _GLIBCXX_OVERRIDE_TTYPE_ENCODING.
> 	(get_ttype_entry): Use generic implementation on ARM EABI.
> 	(check_exception_spec): Use _Unwind_decode_typeinfo_ptr and
> 	UNWIND_STACK_REG.
> 	(PERSONALITY_FUNCTION): Set ttype_base.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-09 11:10   ` [patch] C6X unwinding/exception handling Matthias Klose
@ 2011-10-10 10:33     ` Andrew Haley
  2011-10-10 11:27       ` Matthias Klose
  0 siblings, 1 reply; 10+ messages in thread
From: Andrew Haley @ 2011-10-10 10:33 UTC (permalink / raw)
  To: Matthias Klose; +Cc: Paul Brook, gcc-patches, GCC Java, Nicola Pero

On 10/09/2011 12:09 PM, Matthias Klose wrote:
> This did break libobjc and libjava on arm-linux-gnueabi.
>
> libobjc now has an undefined reference to _Unwind_decode_target2, which can be
> avoided with
>
> --- libobjc/exception.c.orig    2011-07-21 15:33:57.000000000 +0000
> +++ libobjc/exception.c 2011-10-09 10:53:12.554940776 +0000
> @@ -182,7 +182,7 @@
>    _Unwind_Ptr ptr;
>
>    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
> -  ptr = _Unwind_decode_target2 (ptr);
> +  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word) ptr);
>
>    /* NULL ptr means catch-all.  Note that if the class is not found,
>       this will abort the program.  */
>
> libjava fails to build, the same change doesn't work for libjava/exception.cc,
> because the struct lsda_header_info in exception.cc is missing the ttype_base
> member. Any suggestions?

Is this fixable without backing out Paul Brooks' patch?

Andrew.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-10 10:33     ` Andrew Haley
@ 2011-10-10 11:27       ` Matthias Klose
  2011-10-10 12:23         ` Paul Brook
  0 siblings, 1 reply; 10+ messages in thread
From: Matthias Klose @ 2011-10-10 11:27 UTC (permalink / raw)
  To: Andrew Haley; +Cc: Paul Brook, gcc-patches, GCC Java, Nicola Pero

On 10/10/2011 12:32 PM, Andrew Haley wrote:
> On 10/09/2011 12:09 PM, Matthias Klose wrote:
>> This did break libobjc and libjava on arm-linux-gnueabi.
>>
>> libobjc now has an undefined reference to _Unwind_decode_target2, which can be
>> avoided with

with this patch, the libobjc testsuite results looks as before this change.

>>
>> --- libobjc/exception.c.orig    2011-07-21 15:33:57.000000000 +0000
>> +++ libobjc/exception.c 2011-10-09 10:53:12.554940776 +0000
>> @@ -182,7 +182,7 @@
>>    _Unwind_Ptr ptr;
>>
>>    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
>> -  ptr = _Unwind_decode_target2 (ptr);
>> +  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word) ptr);
>>
>>    /* NULL ptr means catch-all.  Note that if the class is not found,
>>       this will abort the program.  */
>>
>> libjava fails to build, the same change doesn't work for libjava/exception.cc,
>> because the struct lsda_header_info in exception.cc is missing the ttype_base
>> member. Any suggestions?
> 
> Is this fixable without backing out Paul Brooks' patch?

currently testing

Index: libjava/exception.cc
===================================================================
--- libjava/exception.cc	(revision 179739)
+++ libjava/exception.cc	(working copy)
@@ -135,6 +135,7 @@
 {
   _Unwind_Ptr Start;
   _Unwind_Ptr LPStart;
+  _Unwind_Ptr ttype_base;
   const unsigned char *TType;
   const unsigned char *action_table;
   unsigned char ttype_encoding;
@@ -184,7 +185,7 @@
   _Unwind_Ptr ptr;

   ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-  ptr = _Unwind_decode_target2(ptr);
+  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word) ptr);

   return reinterpret_cast<void **>(ptr);
 }
@@ -325,6 +326,7 @@

   // Parse the LSDA header.
   p = parse_lsda_header (context, language_specific_data, &info);
+  info.ttype_base = base_of_encoded_value (info.ttype_encoding, context);
 #ifdef HAVE_GETIPINFO
   ip = _Unwind_GetIPInfo (context, &ip_before_insn);
 #else


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-10 11:27       ` Matthias Klose
@ 2011-10-10 12:23         ` Paul Brook
  2011-10-17 11:01           ` Matthias Klose
  0 siblings, 1 reply; 10+ messages in thread
From: Paul Brook @ 2011-10-10 12:23 UTC (permalink / raw)
  To: Matthias Klose; +Cc: Andrew Haley, gcc-patches, GCC Java, Nicola Pero

> Index: libjava/exception.cc
> ===================================================================
> --- libjava/exception.cc	(revision 179739)
> +++ libjava/exception.cc	(working copy)
> @@ -135,6 +135,7 @@
>  {
>    _Unwind_Ptr Start;
>    _Unwind_Ptr LPStart;
> +  _Unwind_Ptr ttype_base;
>    const unsigned char *TType;
>    const unsigned char *action_table;
>    unsigned char ttype_encoding;
> @@ -184,7 +185,7 @@
>    _Unwind_Ptr ptr;
> 
>    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
> -  ptr = _Unwind_decode_target2(ptr);
> +  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word)
> ptr);
> 
>    return reinterpret_cast<void **>(ptr);
>  }
> @@ -325,6 +326,7 @@
> 
>    // Parse the LSDA header.
>    p = parse_lsda_header (context, language_specific_data, &info);
> +  info.ttype_base = base_of_encoded_value (info.ttype_encoding, context);
>  #ifdef HAVE_GETIPINFO
>    ip = _Unwind_GetIPInfo (context, &ip_before_insn);
>  #else

No.  The purpose of my patch was to remove the arm specific code.

The only difference I can see in this bit of code is that libstdc++ uses 
base_of_encoded_value/read_encoded_value_with_base whereas libjava uses 
context/read_encoded_value.

I expect you want something like the patch below (completely untested).

Paul

Index: exception.cc
===================================================================
--- exception.cc	(revision 178906)
+++ exception.cc	(working copy)
@@ -161,6 +161,11 @@ parse_lsda_header (_Unwind_Context *cont
   info->ttype_encoding = *p++;
   if (info->ttype_encoding != DW_EH_PE_omit)
     {
+#if _GLIBCXX_OVERRIDE_TTYPE_ENCODING
+      /* Older ARM EABI toolchains set this value incorrectly, so use a
+        hardcoded OS-specific format.  */
+      info->ttype_encoding = _GLIBCXX_OVERRIDE_TTYPE_ENCODING;
+#endif
       p = read_uleb128 (p, &tmp);
       info->TType = p + tmp;
     }
@@ -176,21 +181,6 @@ parse_lsda_header (_Unwind_Context *cont
   return p;
 }
 
-#ifdef __ARM_EABI_UNWINDER__
-
-static void **
-get_ttype_entry(_Unwind_Context *, lsda_header_info* info, _uleb128_t i)
-{
-  _Unwind_Ptr ptr;
-
-  ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-  ptr = _Unwind_decode_target2(ptr);
-  
-  return reinterpret_cast<void **>(ptr);
-}
-
-#else
-
 static void **
 get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i)
 {
@@ -202,8 +192,6 @@ get_ttype_entry (_Unwind_Context *contex
   return reinterpret_cast<void **>(ptr);
 }
 
-#endif
-
 // Using a different personality function name causes link failures
 // when trying to mix code using different exception handling models.
 #ifdef SJLJ_EXCEPTIONS

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-10 12:23         ` Paul Brook
@ 2011-10-17 11:01           ` Matthias Klose
  2011-10-17 11:21             ` Andrew Haley
  2011-10-17 13:49             ` Paul Brook
  0 siblings, 2 replies; 10+ messages in thread
From: Matthias Klose @ 2011-10-17 11:01 UTC (permalink / raw)
  To: Paul Brook; +Cc: Andrew Haley, gcc-patches, GCC Java, Nicola Pero

[-- Attachment #1: Type: text/plain, Size: 1549 bytes --]

On 10/10/2011 02:23 PM, Paul Brook wrote:
>> Index: libjava/exception.cc
>> ===================================================================
>> --- libjava/exception.cc	(revision 179739)
>> +++ libjava/exception.cc	(working copy)
>> @@ -135,6 +135,7 @@
>>  {
>>    _Unwind_Ptr Start;
>>    _Unwind_Ptr LPStart;
>> +  _Unwind_Ptr ttype_base;
>>    const unsigned char *TType;
>>    const unsigned char *action_table;
>>    unsigned char ttype_encoding;
>> @@ -184,7 +185,7 @@
>>    _Unwind_Ptr ptr;
>>
>>    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
>> -  ptr = _Unwind_decode_target2(ptr);
>> +  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word)
>> ptr);
>>
>>    return reinterpret_cast<void **>(ptr);
>>  }
>> @@ -325,6 +326,7 @@
>>
>>    // Parse the LSDA header.
>>    p = parse_lsda_header (context, language_specific_data, &info);
>> +  info.ttype_base = base_of_encoded_value (info.ttype_encoding, context);
>>  #ifdef HAVE_GETIPINFO
>>    ip = _Unwind_GetIPInfo (context, &ip_before_insn);
>>  #else
> 
> No.  The purpose of my patch was to remove the arm specific code.
> 
> The only difference I can see in this bit of code is that libstdc++ uses 
> base_of_encoded_value/read_encoded_value_with_base whereas libjava uses 
> context/read_encoded_value.
> 
> I expect you want something like the patch below (completely untested).

I checked the attached patch, test results at
http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg01377.html

which are the same as with my suggested patch.

Ok for the trunk?

 Matthias

[-- Attachment #2: exc.diff --]
[-- Type: text/plain, Size: 3070 bytes --]

libjava/
2011-10-17  Paul Brook  <paul@codesourcery.com>

	* exception.cc (parse_lsda_header): hardcode ttype_encoding for older
	ARM EABI toolchains.
	(get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant.

libobjc/
2011-10-17  Paul Brook  <paul@codesourcery.com>
	    Matthias Klose  <doko@ubuntu.com>

	* exception.c (parse_lsda_header): hardcode ttype_encoding for older
	ARM EABI toolchains.
	(get_ttype_entry) Remove __ARM_EABI_UNWINDER__ variant.

Index: libjava/exception.cc
===================================================================
--- libjava/exception.cc	(revision 180086)
+++ libjava/exception.cc	(working copy)
@@ -161,6 +161,11 @@
   info->ttype_encoding = *p++;
   if (info->ttype_encoding != DW_EH_PE_omit)
     {
+#if _GLIBCXX_OVERRIDE_TTYPE_ENCODING
+      /* Older ARM EABI toolchains set this value incorrectly, so use a
+	 hardcoded OS-specific format.  */
+  info->ttype_encoding = _GLIBCXX_OVERRIDE_TTYPE_ENCODING;
+#endif
       p = read_uleb128 (p, &tmp);
       info->TType = p + tmp;
     }
@@ -176,22 +181,7 @@
   return p;
 }
 
-#ifdef __ARM_EABI_UNWINDER__
-
 static void **
-get_ttype_entry(_Unwind_Context *, lsda_header_info* info, _uleb128_t i)
-{
-  _Unwind_Ptr ptr;
-
-  ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-  ptr = _Unwind_decode_target2(ptr);
-  
-  return reinterpret_cast<void **>(ptr);
-}
-
-#else
-
-static void **
 get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i)
 {
   _Unwind_Ptr ptr;
@@ -202,8 +192,6 @@
   return reinterpret_cast<void **>(ptr);
 }
 
-#endif
-
 // Using a different personality function name causes link failures
 // when trying to mix code using different exception handling models.
 #ifdef SJLJ_EXCEPTIONS

Index: libobjc/exception.c
===================================================================
--- libobjc/exception.c	(revision 180086)
+++ libobjc/exception.c	(working copy)
@@ -159,6 +159,11 @@
   info->ttype_encoding = *p++;
   if (info->ttype_encoding != DW_EH_PE_omit)
     {
+#if _GLIBCXX_OVERRIDE_TTYPE_ENCODING
+      /* Older ARM EABI toolchains set this value incorrectly, so use a
+	 hardcoded OS-specific format.  */
+      info->ttype_encoding = _GLIBCXX_OVERRIDE_TTYPE_ENCODING;
+#endif
       p = read_uleb128 (p, &tmp);
       info->TType = p + tmp;
     }
@@ -174,27 +179,7 @@
   return p;
 }
 
-#ifdef __ARM_EABI_UNWINDER__
-
 static Class
-get_ttype_entry (struct lsda_header_info *info, _uleb128_t i)
-{
-  _Unwind_Ptr ptr;
-  
-  ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-  ptr = _Unwind_decode_target2 (ptr);
-
-  /* NULL ptr means catch-all.  Note that if the class is not found,
-     this will abort the program.  */
-  if (ptr)
-    return objc_getRequiredClass ((const char *) ptr);
-  else
-    return 0;
-}
-
-#else
-
-static Class
 get_ttype_entry (struct lsda_header_info *info, _Unwind_Word i)
 {
   _Unwind_Ptr ptr;
@@ -211,8 +196,6 @@
     return 0;
 }
 
-#endif
-
 /* Using a different personality function name causes link failures
    when trying to mix code using different exception handling
    models.  */

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-17 11:01           ` Matthias Klose
@ 2011-10-17 11:21             ` Andrew Haley
  2011-10-17 11:27               ` Matthias Klose
  2011-10-17 13:49             ` Paul Brook
  1 sibling, 1 reply; 10+ messages in thread
From: Andrew Haley @ 2011-10-17 11:21 UTC (permalink / raw)
  To: java

On 10/17/2011 12:01 PM, Matthias Klose wrote:
> On 10/10/2011 02:23 PM, Paul Brook wrote:
>>> Index: libjava/exception.cc
>>> ===================================================================
>>> --- libjava/exception.cc	(revision 179739)
>>> +++ libjava/exception.cc	(working copy)
>>> @@ -135,6 +135,7 @@
>>>  {
>>>    _Unwind_Ptr Start;
>>>    _Unwind_Ptr LPStart;
>>> +  _Unwind_Ptr ttype_base;
>>>    const unsigned char *TType;
>>>    const unsigned char *action_table;
>>>    unsigned char ttype_encoding;
>>> @@ -184,7 +185,7 @@
>>>    _Unwind_Ptr ptr;
>>>
>>>    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
>>> -  ptr = _Unwind_decode_target2(ptr);
>>> +  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word)
>>> ptr);
>>>
>>>    return reinterpret_cast<void **>(ptr);
>>>  }
>>> @@ -325,6 +326,7 @@
>>>
>>>    // Parse the LSDA header.
>>>    p = parse_lsda_header (context, language_specific_data, &info);
>>> +  info.ttype_base = base_of_encoded_value (info.ttype_encoding, context);
>>>  #ifdef HAVE_GETIPINFO
>>>    ip = _Unwind_GetIPInfo (context, &ip_before_insn);
>>>  #else
>>
>> No.  The purpose of my patch was to remove the arm specific code.
>>
>> The only difference I can see in this bit of code is that libstdc++ uses 
>> base_of_encoded_value/read_encoded_value_with_base whereas libjava uses 
>> context/read_encoded_value.
>>
>> I expect you want something like the patch below (completely untested).
> 
> I checked the attached patch, test results at
> http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg01377.html
> 
> which are the same as with my suggested patch.
> 
> Ok for the trunk?

OK.  One question: where is_GLIBCXX_OVERRIDE_TTYPE_ENCODING defined?

Andrew.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-17 11:21             ` Andrew Haley
@ 2011-10-17 11:27               ` Matthias Klose
  0 siblings, 0 replies; 10+ messages in thread
From: Matthias Klose @ 2011-10-17 11:27 UTC (permalink / raw)
  To: java

On 10/17/2011 01:21 PM, Andrew Haley wrote:
> On 10/17/2011 12:01 PM, Matthias Klose wrote:
>> On 10/10/2011 02:23 PM, Paul Brook wrote:
>>>> Index: libjava/exception.cc
>>>> ===================================================================
>>>> --- libjava/exception.cc	(revision 179739)
>>>> +++ libjava/exception.cc	(working copy)
>>>> @@ -135,6 +135,7 @@
>>>>  {
>>>>    _Unwind_Ptr Start;
>>>>    _Unwind_Ptr LPStart;
>>>> +  _Unwind_Ptr ttype_base;
>>>>    const unsigned char *TType;
>>>>    const unsigned char *action_table;
>>>>    unsigned char ttype_encoding;
>>>> @@ -184,7 +185,7 @@
>>>>    _Unwind_Ptr ptr;
>>>>
>>>>    ptr = (_Unwind_Ptr) (info->TType - (i * 4));
>>>> -  ptr = _Unwind_decode_target2(ptr);
>>>> +  ptr = _Unwind_decode_typeinfo_ptr (info->ttype_base, (_Unwind_Word)
>>>> ptr);
>>>>
>>>>    return reinterpret_cast<void **>(ptr);
>>>>  }
>>>> @@ -325,6 +326,7 @@
>>>>
>>>>    // Parse the LSDA header.
>>>>    p = parse_lsda_header (context, language_specific_data, &info);
>>>> +  info.ttype_base = base_of_encoded_value (info.ttype_encoding, context);
>>>>  #ifdef HAVE_GETIPINFO
>>>>    ip = _Unwind_GetIPInfo (context, &ip_before_insn);
>>>>  #else
>>>
>>> No.  The purpose of my patch was to remove the arm specific code.
>>>
>>> The only difference I can see in this bit of code is that libstdc++ uses 
>>> base_of_encoded_value/read_encoded_value_with_base whereas libjava uses 
>>> context/read_encoded_value.
>>>
>>> I expect you want something like the patch below (completely untested).
>>
>> I checked the attached patch, test results at
>> http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg01377.html
>>
>> which are the same as with my suggested patch.
>>
>> Ok for the trunk?
> 
> OK.  One question: where is_GLIBCXX_OVERRIDE_TTYPE_ENCODING defined?

in libgcc/config/arm/unwind-arm.h

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-17 11:01           ` Matthias Klose
  2011-10-17 11:21             ` Andrew Haley
@ 2011-10-17 13:49             ` Paul Brook
  2011-10-17 14:11               ` Nicola Pero
  1 sibling, 1 reply; 10+ messages in thread
From: Paul Brook @ 2011-10-17 13:49 UTC (permalink / raw)
  To: Matthias Klose; +Cc: Andrew Haley, gcc-patches, GCC Java, Nicola Pero

> I checked the attached patch, test results at
> http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg01377.html
> 
> which are the same as with my suggested patch.
> 
> Ok for the trunk?

I probably don't have authority to approve this, but looks OK to me.

Paul

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-17 13:49             ` Paul Brook
@ 2011-10-17 14:11               ` Nicola Pero
  2011-10-20 12:29                 ` Bernd Schmidt
  0 siblings, 1 reply; 10+ messages in thread
From: Nicola Pero @ 2011-10-17 14:11 UTC (permalink / raw)
  To: Paul Brook; +Cc: Matthias Klose, Andrew Haley, gcc-patches, GCC Java

>> I checked the attached patch, test results at
>> http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg01377.html
>> 
>> which are the same as with my suggested patch.
>> 
>> Ok for the trunk?
>
> I probably don't have authority to approve this, but looks OK to me.

The libobjc bits are Ok for trunk.

Thanks

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [patch] C6X unwinding/exception handling
  2011-10-17 14:11               ` Nicola Pero
@ 2011-10-20 12:29                 ` Bernd Schmidt
  0 siblings, 0 replies; 10+ messages in thread
From: Bernd Schmidt @ 2011-10-20 12:29 UTC (permalink / raw)
  To: Nicola Pero
  Cc: Paul Brook, Matthias Klose, Andrew Haley, gcc-patches, GCC Java

On 10/17/11 16:10, Nicola Pero wrote:
>>> I checked the attached patch, test results at
>>> http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg01377.html
>>>
>>> which are the same as with my suggested patch.
>>>
>>> Ok for the trunk?
>>
>> I probably don't have authority to approve this, but looks OK to me.
> 
> The libobjc bits are Ok for trunk.

This is just making sure libjava/libobjc match libsupc++, correct? OK if
Andrew doesn't object in the next day or so.


Bernd

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-10-20 12:29 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <201108041531.58790.paul@codesourcery.com>
     [not found] ` <201109131348.13087.paul@codesourcery.com>
2011-10-09 11:10   ` [patch] C6X unwinding/exception handling Matthias Klose
2011-10-10 10:33     ` Andrew Haley
2011-10-10 11:27       ` Matthias Klose
2011-10-10 12:23         ` Paul Brook
2011-10-17 11:01           ` Matthias Klose
2011-10-17 11:21             ` Andrew Haley
2011-10-17 11:27               ` Matthias Klose
2011-10-17 13:49             ` Paul Brook
2011-10-17 14:11               ` Nicola Pero
2011-10-20 12:29                 ` Bernd Schmidt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).