Hello team, Previously, I have noticed that symbols in LTO symtabs don't have underscores. Now I have found that some of them do. These are the native symbols from gcc/intl.o during LTO-enabled bootstrap stage2:
> $ nm intl.o > 00000000 b .bss > 00000000 d .data > 00000000 N .debug_abbrev > 00000000 N .debug_aranges > 00000000 N .debug_info > 00000000 N .debug_line > 00000000 N .debug_loc > 00000000 N .debug_str > 00000000 r .eh_frame > 00000000 r .gnu.lto_.cgraph.e2eb6ce9 > 00000000 r .gnu.lto_.decls.e2eb6ce9 > 00000000 r .gnu.lto_.jmpfuncs.e2eb6ce9 > 00000000 r .gnu.lto_.opts > 00000000 r .gnu.lto_.pureconst.e2eb6ce9 > 00000000 r .gnu.lto_.refs.e2eb6ce9 > 00000000 r .gnu.lto_.statics.e2eb6ce9 > 00000000 r .gnu.lto_.symtab.e2eb6ce9 > 00000000 r .gnu.lto_.vars.e2eb6ce9 > 00000000 r .gnu.lto_gcc_gettext_width.e2eb6ce9 > 00000000 r .gnu.lto_gcc_init_libintl.e2eb6ce9 > 00000000 r .gnu.lto_get_spaces.e2eb6ce9 > 00000000 r .rdata > 00000000 t .text > U ___chkstk_ms > 00000001 C ___gnu_lto_v1 > 00000000 D _close_quote > 00000110 T _gcc_gettext_width > 00000000 T _gcc_init_libintl > 00000180 T _get_spaces > U _libintl_bindtextdomain > U _libintl_gettext > U _libintl_textdomain > 00000004 B _locale_encoding > 00000000 B _locale_utf8 > U _mbstowcs > U _memset > U _nl_langinfo > 00000004 D _open_quote > U _setlocale > U _strcasecmp > U _wcswidth > U _xmalloc This is i686-pc-cygwin, btw, and PE-COFF object format. Here is the contents of the LTO symtab from the file: > $ objdump -s -j .gnu.lto_.symtab.e2eb6ce9 intl.o > > intl.o: file format pe-i386 > > Contents of section .gnu.lto_.symtab.e2eb6ce9: > 0000 6763635f 696e6974 5f6c6962 696e746c gcc_init_libintl > 0010 00000000 00000000 00000000 70000000 ............p... > 0020 6763635f 67657474 6578745f 77696474 gcc_gettext_widt > 0030 68000000 00000000 00000000 00740000 h............t.. > 0040 00676574 5f737061 63657300 00000000 .get_spaces..... > 0050 00000000 0000007b 0000006e 6c5f6c61 .......{...nl_la > 0060 6e67696e 666f0000 02000000 00000000 nginfo.......... > 0070 00009600 00005f6c 6962696e 746c5f74 ......_libintl_t > 0080 65787464 6f6d6169 6e000002 00000000 extdomain....... > 0090 00000000 00a60000 005f6c69 62696e74 ........._libint > 00a0 6c5f6269 6e647465 7874646f 6d61696e l_bindtextdomain > 00b0 00000200 00000000 00000000 a9000000 ................ > 00c0 7365746c 6f63616c 65000002 00000000 setlocale....... > 00d0 00000000 00af0000 00776373 77696474 .........wcswidt > 00e0 68000002 00000000 00000000 00b50000 h............... > 00f0 006d6273 746f7763 73000002 00000000 .mbstowcs....... > 0100 00000000 00bd0000 00786d61 6c6c6f63 .........xmalloc > 0110 00000200 00000000 00000000 cf000000 ................ > 0120 6f70656e 5f71756f 74650000 00000000 open_quote...... > 0130 00000000 0000d500 0000636c 6f73655f ..........close_ > 0140 71756f74 65000000 00000000 00000000 quote........... > 0150 00da0000 006c6f63 616c655f 656e636f .....locale_enco > 0160 64696e67 00000000 00000000 00000000 ding............ > 0170 df000000 6c6f6361 6c655f75 74663800 ....locale_utf8. > 0180 00000000 00000000 000000e1 000000 ............... For some reason, the two libintl symbols have underscores. gettext is missing altogether because we have a builtin for it, but I don't think we do for (bind)textdomain. Is this expected? cheers, DaveK