Hi, with LTO early debug and LTO bootstrap I now get
/usr/include/sys/resource.h:51:12: error: type of ‘getrlimit’ does not match original declaration [-Werror=lto-type-mismatch] extern int getrlimit (__rlimit_resource_t __resource, ^ /usr/include/sys/resource.h:51:12: note: type mismatch in parameter 1 extern int getrlimit (__rlimit_resource_t __resource, ^ /usr/include/sys/resource.h:43:13: note: type ‘__rlimit_resource_t’ should match type ‘__rlimit_resource_t’ typedef int __rlimit_resource_t; ^ /usr/include/sys/resource.h:39:32: note: the incompatible type is defined here typedef enum __rlimit_resource __rlimit_resource_t; ^ /usr/include/sys/resource.h:51:12: note: ‘getrlimit’ was previously declared here extern int getrlimit (__rlimit_resource_t __resource, ^ the issue is wrt C / C++ context where glibc headers have #if defined __USE_GNU && !defined __cplusplus typedef enum __rlimit_resource __rlimit_resource_t; typedef enum __rusage_who __rusage_who_t; typedef enum __priority_which __priority_which_t; #else typedef int __rlimit_resource_t; typedef int __rusage_who_t; typedef int __priority_which_t; #endif and the enum is unsigned: (gdb) p debug_tree (0x7fffe7aa2690) <enumeral_type 0x7fffe7aa2690 __rlimit_resource_t unsigned SI size <integer_cst 0x7ffff6281df8 type <integer_type 0x7ffff62852a0 bitsizetype> constant 32> unit size <integer_cst 0x7ffff6281e10 type <integer_type 0x7ffff62851f8 sizetype> constant 4> which currently isn't compatible with signed int. I'm now double-checking unpatched LTO bootstrap but I guess I somehow just keep streaming some more decls or get different partitioning. I know in the end you'd like to make int and unsigned int compatible for this check(?) but I wonder whether glibc really desired to make the enum unsigned... it's just /* Kinds of resource limit. */ enum __rlimit_resource { /* Per-process CPU limit, in seconds. */ RLIMIT_CPU = 0, ... #define RLIMIT_NLIMITS __RLIMIT_NLIMITS #define RLIM_NLIMITS __RLIM_NLIMITS }; one reason I get here might be also that somehow the locations of the decls are not in-system-header. This would be an artifact of LTO location streaming I guess. Oh, seems unpatched LTO bootstrap is broken (possibly by me). Richard.