Message ID | 20230808140814.2134573-1-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | [hurd,commited] hurd: Make error_t an int in C++ | expand |
* Samuel Thibault: > Making error_t defined to enum __error_t_codes conveniently makes the > debugger print symbolic values, but in C++ int is not interoperable with > enum __error_t_codes, leading to C++ application build issues, so let's > revert error_t to int in C++. > --- > sysdeps/mach/hurd/bits/types/error_t.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/sysdeps/mach/hurd/bits/types/error_t.h b/sysdeps/mach/hurd/bits/types/error_t.h > index 380aa434d5..4a7bd452c8 100644 > --- a/sysdeps/mach/hurd/bits/types/error_t.h > +++ b/sysdeps/mach/hurd/bits/types/error_t.h > @@ -24,6 +24,12 @@ > #ifndef __error_t_defined > # define __error_t_defined 1 > > +#ifdef __cplusplus > +/* Unfortunately, in C++ int and enum __error_t_codes are not > + interoperable... */ > +typedef int error_t; > +#else > typedef enum __error_t_codes error_t; > +#endif Doesn't this change C++ name mangling? Should it have a NEWS entry? Thanks, Florian
Hello, Florian Weimer, le mar. 08 août 2023 16:14:07 +0200, a ecrit: > > +#ifdef __cplusplus > > +/* Unfortunately, in C++ int and enum __error_t_codes are not > > + interoperable... */ > > +typedef int error_t; > > +#else > > typedef enum __error_t_codes error_t; > > +#endif > > Doesn't this change C++ name mangling? Actually, no, I'm getting 'i' in both cases ; it is apparently stricly an API thing. Samuel
* Samuel Thibault via Libc-alpha: > Hello, > > Florian Weimer, le mar. 08 août 2023 16:14:07 +0200, a ecrit: >> > +#ifdef __cplusplus >> > +/* Unfortunately, in C++ int and enum __error_t_codes are not >> > + interoperable... */ >> > +typedef int error_t; >> > +#else >> > typedef enum __error_t_codes error_t; >> > +#endif >> >> Doesn't this change C++ name mangling? > > Actually, no, I'm getting 'i' in both cases ; it is apparently stricly > an API thing. Huh, right, it would have to be an enum class to matter. Thanks, Florian
diff --git a/sysdeps/mach/hurd/bits/types/error_t.h b/sysdeps/mach/hurd/bits/types/error_t.h index 380aa434d5..4a7bd452c8 100644 --- a/sysdeps/mach/hurd/bits/types/error_t.h +++ b/sysdeps/mach/hurd/bits/types/error_t.h @@ -24,6 +24,12 @@ #ifndef __error_t_defined # define __error_t_defined 1 +#ifdef __cplusplus +/* Unfortunately, in C++ int and enum __error_t_codes are not + interoperable... */ +typedef int error_t; +#else typedef enum __error_t_codes error_t; +#endif #endif