I don't know what's different in your build, but reeling.netbsd.org shows all the builds are working. Are you cross building?
christos > On Jan 25, 2024, at 3:20 AM, Adam <a...@netbsd.org> wrote: > >> Today, the build fails while making tools: >> >> >> --- md2.lo --- >> /dist/src/tools/compat/../../lib/libc/hash/md2/md2.c:130:4: error: call to >> undeclared function 'MD2Transform'; ISO C99 and later do not support >> implicit function declarations [-Wimplicit-function-declaration] >> MD2Transform(context); /* resets i */ >> ^ >> /dist/src/tools/compat/../../lib/libc/hash/md2/md2.c:163:1: error: >> conflicting types for 'MD2Transform' >> MD2Transform(MD2_CTX *context) >> ^ >> /dist/src/tools/compat/../../lib/libc/hash/md2/md2.c:130:4: note: previous >> implicit declaration is here >> MD2Transform(context); /* resets i */ >> ^ >> 2 errors generated. > > Reverting lib/libc/hash/md2/md2.c to v1.7 fixes the build. > > As I understand, MD2Transform() is used (in MD2Update()) before it is > defined, so to fix it properly I suggest the following patch. > > Commit? > > Kind regards, > Adam > > > > diff -u -r1.8 md2.c > --- md2.c 20 Jan 2024 14:52:47 -0000 1.8 > +++ md2.c 25 Jan 2024 08:17:43 -0000 > @@ -113,6 +113,30 @@ > memset(&context->X[0], 0, sizeof(context->X)); > } > +/* > + * XXX This should not be visible, but due to an accident, it is > + * XXX so it must remain so. > + */ > +/*static*/ void > +MD2Transform(MD2_CTX *context) > +{ > + uint32_t l, j, k, t; > + > + /* set block "3" and update "checksum" */ > + for (l = context->C[15], j = 0; j < 16; j++) { > + context->X[32 + j] = context->X[j] ^ context->X[16 + j]; > + l = context->C[j] ^= S[context->X[16 + j] ^ l]; > + } > + > + /* mangle input block */ > + for (t = j = 0; j < 18; t = (t + j) % 256, j++) > + for (k = 0; k < 48; k++) > + t = context->X[k] = (context->X[k] ^ S[t]); > + > + /* reset input pointer */ > + context->i = 16; > +} > + > void > MD2Update(MD2_CTX *context, const unsigned char *input, unsigned int inputLen) > { > @@ -155,28 +179,4 @@ > MD2Init(context); > } > -/* > - * XXX This should not be visible, but due to an accident, it is > - * XXX so it must remain so. > - */ > -/*static*/ void > -MD2Transform(MD2_CTX *context) > -{ > - uint32_t l, j, k, t; > - > - /* set block "3" and update "checksum" */ > - for (l = context->C[15], j = 0; j < 16; j++) { > - context->X[32 + j] = context->X[j] ^ context->X[16 + j]; > - l = context->C[j] ^= S[context->X[16 + j] ^ l]; > - } > - > - /* mangle input block */ > - for (t = j = 0; j < 18; t = (t + j) % 256, j++) > - for (k = 0; k < 48; k++) > - t = context->X[k] = (context->X[k] ^ S[t]); > - > - /* reset input pointer */ > - context->i = 16; > -} > - > #endif /* !HAVE_MD2_H */