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