On Fri, May 8, 2026 at 6:05 PM H.J. Lu <[email protected]> wrote: > > default_stack_protect_guard calls > > lang_hooks.types.type_for_mode (ptr_mode, 1); > > to get an integer type for __stack_chk_guard which is declared as a > global symbol of type uintptr_t. For 32-bit systems, uintptr_t may > be either unsigned int or unsigned long int. On 32-bit Darwin, we get > > $ cat /tmp/x.c > __UINTPTR_TYPE__ __stack_chk_guard = 0x1000; > $ ./xgcc -B./ -S /tmp/x.c -m32 > /tmp/x.c:1:18: error: conflicting types for ‘__stack_chk_guard’; have > ‘long unsigned int’ > 1 | __UINTPTR_TYPE__ __stack_chk_guard = 0x1000; > | ^~~~~~~~~~~~~~~~~ > cc1: note: previous declaration of ‘__stack_chk_guard’ with type ‘unsigned > int’ > $ > > since lang_hooks.types.type_for_mode returns unsigned int while Darwin's > uintptr_t is unsigned long int. > > Add LANG_HOOKS_TYPE_FOR_MODE_KIND to specify signed or unsigned integer > type for pointer and update default_stack_protect_guard to call > > lang_hooks.types.type_for_mode_kind > (ptr_mode, 1, KIND_IS_INTEGER_FOR_POINTER); > > to get unsigned integer type for pointer. > > gcc/ > > PR c/125226 > * langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE_KIND): New. > (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add > LANG_HOOKS_TYPE_FOR_MODE_KIND. > * langhooks.h (type_kind): New enum. > (lang_hooks_for_types): Add type_for_mode_kind. > * targhooks.c (default_stack_protect_guard): Call > lang_hooks.types.type_for_mode_kind if not NULL. > > gcc/c-family/ > > PR c/125226 > * c-common.cc (c_common_type_for_mode): Renamed to ... > (c_common_type_for_mode_kind): This. Add an argument for type > kind. Return intptr_type_node/uintptr_type_node when asking > for integer type for pointers. > (c_common_type_for_mode): New. Call c_common_type_for_mode_kind > with KIND_IS_UNKNOWN. > * c-common.h: Include "langhooks.h". > (c_common_type_for_mode_kind): New prototype. > * c-objc-common.h (LANG_HOOKS_TYPE_FOR_MODE_KIND): New. > > gcc/cp/ > > PR c/125226 > * cp-objcp-common.h (LANG_HOOKS_TYPE_FOR_MODE_KIND): New. > > > -- > H.J.
Jason, Joseph, Can you review this patch? Thanks. -- H.J.
