On Sun, Oct 25, 2026 at 04:33:58PM +0200, Eli Zaretskii wrote:
> This link command is supposed to produce the shared library
> .libs/cygtexinfo-convert-1.dll, right?
> 
> The link command line mentions .libs/libtexinfo.dll.a several times.
> This is an import library, which is supposed to tell the linker in
> which DLL to find each function it needs.  If you run "nm -A" on
> .libs/libtexinfo.dll.a, do you see there entries for the functions
> that the linker complains as unresolved?  For example, if I look at
> .libs/libtexinfo.dll.a which was built with MinGW from Texinfo 7.3, I
> see this for rpl_free:

As Hans-Bernhard Bröker said, nm supports a lot of formats, and "nm -A"
works out of the box on libtexinfo.dll.a, which appears to be almost
empty, consistently with a small size, the only T symbol is
libtexinfo.dll.a:cygtexinfo_1_dll_d000001.o:00000000 T 
_gl_get_setlocale_null_lock

Also:
$ ar t .libs/libtexinfo.dll.a
cygtexinfo_1_dll_d000002.o
cygtexinfo_1_dll_d000000.o
cygtexinfo_1_dll_d000001.o

The linking of .libs/libtexinfo.dll.a is the following command.  The
list of the .o looks good and I checked two .o with nm and got the
expected list of symbols.

2026-10-25T19:40:47.2006630Z libtool: link: gcc -shared  
main/.libs/libtexinfo_la-tree.o main/.libs/libtexinfo_la-text.o 
main/.libs/libtexinfo_la-base_utils.o 
main/.libs/libtexinfo_la-builtin_commands.o 
main/.libs/libtexinfo_la-types_data.o main/.libs/libtexinfo_la-debug.o 
main/.libs/libtexinfo_la-errors.o main/.libs/libtexinfo_la-extra.o 
main/.libs/libtexinfo_la-structure_list.o 
main/.libs/libtexinfo_la-convert_to_texinfo.o 
main/.libs/libtexinfo_la-convert_to_text.o 
main/.libs/libtexinfo_la-convert_utils.o 
main/.libs/libtexinfo_la-customization_options.o 
main/.libs/libtexinfo_la-html_conversion_data.o 
main/.libs/libtexinfo_la-html_css_data.o main/.libs/libtexinfo_la-floats.o 
main/.libs/libtexinfo_la-manipulate_tree.o main/.libs/libtexinfo_la-reader.o 
main/.libs/libtexinfo_la-node_name_normalization.o 
main/.libs/libtexinfo_la-command_stack.o 
main/.libs/libtexinfo_la-cmd_structuring.o main/.libs/libtexinfo_la-cmd_text.o 
main/.libs/libtexinfo_la-parser_conf.o main/.libs/libtexinfo_la-targets.o 
main/.libs/libtexinfo_la-options_init_free.o 
main/.libs/libtexinfo_la-options_defaults.o main/.libs/libtexinfo_la-utils.o 
main/.libs/libtexinfo_la-unicode.o main/.libs/libtexinfo_la-hashmap.o 
main/.libs/libtexinfo_la-translations.o main/.libs/libtexinfo_la-document.o 
main/.libs/libtexinfo_la-manipulate_indices.o 
main/.libs/libtexinfo_la-output_unit.o main/.libs/libtexinfo_la-txi_config.o 
main/.libs/libtexinfo_la-txi_documentlanguage_languages.o 
main/.libs/libtexinfo_la-txi_documentlanguage_regions.o 
main/.libs/libtexinfo_la-txi_documentlanguage_scripts.o 
main/.libs/libtexinfo_la-txi_documentlanguage_script_names.o 
main/.libs/libtexinfo_la-txi_documentlanguage_variants.o 
main/unicode-collation/.libs/libtexinfo_la-collation_data_lookup.o 
main/unicode-collation/.libs/libtexinfo_la-collation_key.o 
parsetexi/.libs/libtexinfo_la-parser_api.o 
parsetexi/.libs/libtexinfo_la-parser.o parsetexi/.libs/libtexinfo_la-input.o 
parsetexi/.libs/libtexinfo_la-close.o 
parsetexi/.libs/libtexinfo_la-set_parser_conf.o 
parsetexi/.libs/libtexinfo_la-context_stack.o 
parsetexi/.libs/libtexinfo_la-debug_parser.o 
parsetexi/.libs/libtexinfo_la-errors_parser.o 
parsetexi/.libs/libtexinfo_la-end_line.o 
parsetexi/.libs/libtexinfo_la-separator.o 
parsetexi/.libs/libtexinfo_la-multitable.o 
parsetexi/.libs/libtexinfo_la-indices.o 
parsetexi/.libs/libtexinfo_la-commands.o parsetexi/.libs/libtexinfo_la-macro.o 
parsetexi/.libs/libtexinfo_la-handle_commands.o 
parsetexi/.libs/libtexinfo_la-def.o parsetexi/.libs/libtexinfo_la-menus.o 
parsetexi/.libs/libtexinfo_la-labels.o parsetexi/.libs/libtexinfo_la-counter.o 
parsetexi/.libs/libtexinfo_la-source_marks.o 
structuring_transfo/.libs/libtexinfo_la-structuring.o 
structuring_transfo/.libs/libtexinfo_la-transformations.o  -Wl,--whole-archive 
./.libs/libcallperl_libtexinfo.a -Wl,--no-whole-archive  -liconv -lintl  -g -O2 
  -o .libs/cygtexinfo-1.dll -Wl,--enable-auto-image-base -Xlinker --out-implib 
-Xlinker .libs/libtexinfo.dll.a

With the Perl flags, the end of the linking command adds, after removing
Perl specific and -fstack-protector-strong, -Wl,--enable-auto-image-base
being duplicated at the end too:
 -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base

-Wl,--enable-auto-image-base is also in the call above, only at the end,
but the other two are not (same as other linking command). 

The two ld options --enable-auto-import and --export-all-symbols could be
relevant to have code added to DLL, but it is strange that libtool does
not add them already.

-- 
Pat

Reply via email to