On Tue, 5 Nov 2019, Matthew Malcomson wrote: > `build_personality_function` generates a declaration for a personality > function. The type it declares for these functions doesn't match the > type of the actual personality functions that are defined by the C++ > unwinding ABI. > > This doesn't cause any crashes since the compiler never generates a call > to these decl's, and hence the type of the function is never used. > Nonetheless, for the sake of consistency and readability we update the > type of this declaration. > > (See libstdc++-v3/libsupc++/unwind-cxx.h for declaration of > _gxx_personality_v0 > to compare types).
OK. I believe _Unwind_Personality_Fn in libgcc/unwind-generic.h is the correct reference. Thanks, Richard. > gcc/ChangeLog: > > 2019-11-05 Matthew Malcomson <matthew.malcom...@arm.com> > > * expr.c (build_personality_function): Fix generated type to > match actual personality functions. > > > > ############### Attachment also inlined for ease of reply > ############### > > > diff --git a/gcc/expr.c b/gcc/expr.c > index > 2f2b53f8b6905013b4214eea137d67c666b0c795..7dc37a288ebffb99c990442cf339b848c5fa9d2e > 100644 > --- a/gcc/expr.c > +++ b/gcc/expr.c > @@ -12525,7 +12525,8 @@ build_personality_function (const char *lang) > > name = ACONCAT (("__", lang, "_personality", unwind_and_version, NULL)); > > - type = build_function_type_list (integer_type_node, integer_type_node, > + type = build_function_type_list (unsigned_type_node, > + integer_type_node, integer_type_node, > long_long_unsigned_type_node, > ptr_type_node, ptr_type_node, NULL_TREE); > decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)