libargp package breaks getent utility

Andrew Schulman andrex.e.schulman@gmail.com
Sun Nov 9 16:02:42 GMT 2025


>A message box shown when running an affected program directly from 
>cmd.exe reveals the problem: Entrypoint "argp_parse" is missing.
>>$ objdump -p /bin/cygargp-0.dll | grep argp_parse
>         [  56] +base[  57]  0038 rpl_argp_parse
>>Previous version:
>>$ objdump -p /bin/cygargp-0.dll | grep argp_parse
>         [  24] +base[  25]  0018 argp_parse
>>>Current <argp.h> actually maps 'argp_parse' to 'rpl_argp_parse':
>>$ printf '#include <argp.h>\nargp_parse' | gcc -E -xc - | tail -1
>rpl_argp_parse
>>$ grep -B1 rpl_argp_parse /usr/include/argp-config.h
>/* Define to the name of argp_parse outside libc. */
>#define argp_parse rpl_argp_parse

Good grief. Thanks Christian. So I see a few possible solutions to this:
(1) Recompile all of the Cygwin programs that use argp, so they call the new
entry point rpl_argp_parse, aliased from argp_parse. (I don't really want to
do this)
(2) Patch the gnulib source to make argp_parse a function that points to
rpl_argp_parse, instead of just a #define.
(3) File a bug report with the gnulib project and see if they'll fix it.
While I sort that out, I'm going to release another update that will revert to
the previous release. That should get everything working again for now.
Sorry for the trouble, everyone. This was a breaking ABI change and
unfortunately that meant that it passed all of our tests with newly compiled
code.
Andrew


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /