mirror of
https://github.com/opnsense/src.git
synced 2026-04-03 00:15:16 -04:00
Merge libcxxrt master 8049924686b8414d8e652cbd2a52c763b48e8456
Interesting fixes: b3c73ba libelftc_dem_gnu3: Sync with elftoolchain r3877 7b2335c Mostly fix __cxa_demangle after #3 Reported by: arichardson PR: 253226 MFC after: 3 days
This commit is contained in:
commit
0ee0dbfb0d
3 changed files with 20 additions and 7 deletions
|
|
@ -541,9 +541,19 @@ __cxa_demangle_gnu3(const char *org)
|
|||
char *rtn;
|
||||
bool has_ret, more_type;
|
||||
|
||||
if (org == NULL || (org_len = strlen(org)) < 2)
|
||||
if (org == NULL)
|
||||
return (NULL);
|
||||
|
||||
org_len = strlen(org);
|
||||
// Try demangling as a type for short encodings
|
||||
if ((org_len < 2) || (org[0] != '_' || org[1] != 'Z' )) {
|
||||
if (!cpp_demangle_data_init(&ddata, org))
|
||||
return (NULL);
|
||||
if (!cpp_demangle_read_type(&ddata, 0))
|
||||
goto clean;
|
||||
rtn = vector_str_get_flat(&ddata.output, (size_t *) NULL);
|
||||
goto clean;
|
||||
}
|
||||
if (org_len > 11 && !strncmp(org, "_GLOBAL__I_", 11)) {
|
||||
if ((rtn = malloc(org_len + 19)) == NULL)
|
||||
return (NULL);
|
||||
|
|
@ -552,8 +562,6 @@ __cxa_demangle_gnu3(const char *org)
|
|||
return (rtn);
|
||||
}
|
||||
|
||||
if (org[0] != '_' || org[1] != 'Z')
|
||||
return (NULL);
|
||||
|
||||
if (!cpp_demangle_data_init(&ddata, org + 2))
|
||||
return (NULL);
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
*/
|
||||
typedef enum
|
||||
{
|
||||
_URC_NO_REASON = 0,
|
||||
_URC_OK = 0, /* operation completed successfully */
|
||||
_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
|
||||
_URC_END_OF_STACK = 5,
|
||||
|
|
@ -96,7 +97,7 @@ struct _Unwind_Exception
|
|||
} pr_cache;
|
||||
/** Force alignment of next item to 8-byte boundary */
|
||||
long long int :0;
|
||||
};
|
||||
} __attribute__((__aligned__(8)));
|
||||
|
||||
/* Unwinding functions */
|
||||
_Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *ucbp);
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ extern "C" {
|
|||
typedef enum
|
||||
{
|
||||
_URC_NO_REASON = 0,
|
||||
_URC_OK = 0,
|
||||
_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
|
||||
_URC_FATAL_PHASE2_ERROR = 2,
|
||||
_URC_FATAL_PHASE1_ERROR = 3,
|
||||
|
|
@ -78,9 +79,12 @@ struct _Unwind_Exception
|
|||
{
|
||||
uint64_t exception_class;
|
||||
_Unwind_Exception_Cleanup_Fn exception_cleanup;
|
||||
unsigned long private_1;
|
||||
unsigned long private_2;
|
||||
} ;
|
||||
uintptr_t private_1;
|
||||
uintptr_t private_2;
|
||||
#if __SIZEOF_POINTER__ == 4
|
||||
uint32_t reserved[3];
|
||||
#endif
|
||||
} __attribute__((__aligned__));
|
||||
|
||||
extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);
|
||||
extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
|
||||
|
|
|
|||
Loading…
Reference in a new issue