On Thu, Jul 18, 2024 at 5:41 PM Almudena Garcia <liberamenso10...@gmail.com>
wrote:

> do this means that you are updating rumpkernel sources? I tried to update
> rumpdisk sources some months ago, but i had problems with the Hurd patches.
>

No. The user stubs are generated automatically by the build process using
mig.

El jue, 18 jul 2024 a las 23:25, Flavio Cruz (<flavioc...@gmail.com>)
> escribió:
>
>> I have noticed a problem when compiling rumpkernel with the new
>> thread_get_name:
>>
>> gnumachUser.c: In function 'thread_get_name':
>> gnumachUser.c:1791:37: error: comparison of integer expressions of
>> different signedness: 'unsigned int' and 'int' [-Werror=sign-compare]
>>  1791 |         if (mig_unlikely (msgh_size != 36 +
>> ((OutP->nameType.msgt_number + 3) & ~3)))
>>       |                                     ^~
>> gnumachUser.c:25:47: note: in definition of macro 'mig_unlikely'
>>    25 | #define mig_unlikely(X) __builtin_expect (!! (X), 0)
>>       |                                               ^
>> cc1: all warnings being treated as errors
>>
>> This ensures that the compiler won't cast ~3 to int since the code will
>> be written as:
>>
>>  1791 |         if (mig_unlikely (msgh_size != 36 +
>> ((OutP->nameType.msgt_number + 3) & ~3U)))
>> ---
>>  server.c | 4 ++--
>>  user.c   | 4 ++--
>>  2 files changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/server.c b/server.c
>> index e02e1e7..8da231c 100644
>> --- a/server.c
>> +++ b/server.c
>> @@ -511,7 +511,7 @@ WriteCheckArgSize(FILE *file, const argument_t *arg)
>>      /* If the base type size of the data field isn`t a multiple of
>> complex_alignof,
>>         we have to round up. */
>>      if (btype->itTypeSize % complex_alignof != 0)
>> -       fprintf(file, " + %zd) & ~%zd", complex_alignof - 1,
>> complex_alignof - 1);
>> +       fprintf(file, " + %zd) & ~%zdU", complex_alignof - 1,
>> complex_alignof - 1);
>>
>>      if (ptype->itIndefinite) {
>>         fprintf(file, " : sizeof(%s *)", FetchServerType(btype));
>> @@ -1192,7 +1192,7 @@ WriteArgSize(FILE *file, const argument_t *arg)
>>       * we have to round up.
>>       */
>>      if (bsize % complex_alignof != 0)
>> -       fprintf(file, " + %zd) & ~%zd", complex_alignof - 1,
>> complex_alignof - 1);
>> +       fprintf(file, " + %zd) & ~%zdU", complex_alignof - 1,
>> complex_alignof - 1);
>>
>>      if (ptype->itIndefinite) {
>>         fprintf(file, " : sizeof(%s *)",
>> diff --git a/user.c b/user.c
>> index d98ab98..48b8c8b 100644
>> --- a/user.c
>> +++ b/user.c
>> @@ -552,7 +552,7 @@ WriteArgSize(FILE *file, const argument_t *arg)
>>       * we have to round up.
>>       */
>>      if (bsize % complex_alignof != 0)
>> -       fprintf(file, " + %zd) & ~%zd", complex_alignof - 1,
>> complex_alignof - 1);
>> +       fprintf(file, " + %zd) & ~%zdU", complex_alignof - 1,
>> complex_alignof - 1);
>>
>>      if (ptype->itIndefinite) {
>>         fprintf(file, " : sizeof(%s *)",
>> @@ -880,7 +880,7 @@ WriteCheckArgSize(FILE *file, const argument_t *arg)
>>      /* If the base type size of the data field isn`t a multiple of
>> complex_alignof,
>>         we have to round up. */
>>      if (btype->itTypeSize % complex_alignof != 0)
>> -       fprintf(file, " + %zd) & ~%zd", complex_alignof - 1,
>> complex_alignof - 1);
>> +       fprintf(file, " + %zd) & ~%zdU", complex_alignof - 1,
>> complex_alignof - 1);
>>
>>      if (ptype->itIndefinite)
>>         fprintf(file, " : sizeof(%s *)", FetchUserType(btype));
>> --
>> 2.43.0
>>
>>
>>

Reply via email to