On Fri, Jun 30, 2023 at 9:11 AM Xi Ruoyao wrote: > On Fri, 2023-06-30 at 08:28 +0200, Jędrzej Dudkiewicz via Gcc-help wrote: > > This is basically the same as > > > https://stackoverflow.com/questions/76580329/hide-symbols-from-executable > > I pasted it below in its entirety. > > > > If this is primarily a binutils question I will paste it there, but I > > *think* it is mostly a gcc related question. > > > > ------8< ------8< ------8< ------8< ------8< ------8< ------8< ------ > > > > > > I use gcc 9.2.0 to compile c++ program for arm. I use boost 1.71.0 > (mainly > > asio). My final executable works fine, but even after stripping readelf > -W > > prog --dyn-syms shows e.g. these entries: > > > > 904: 000dc518 1 OBJECT UNIQUE DEFAULT 25 > > > _ZN5boost4asio6detail30execution_context_service_baseINS1_16resolver_serviceINS0_2ip3tcpEEEE2idE > > 912: 000dc498 1 OBJECT UNIQUE DEFAULT 25 > > > _ZN5boost4asio6detail30execution_context_service_baseINS1_18signal_set_serviceEE2idE > > 943: 000dc46c 4 OBJECT UNIQUE DEFAULT 25 > > > _ZN5boost4asio6detail17posix_global_implINS0_14system_contextEE11static_ptr_E > > 951: 000dc4b0 1 OBJECT UNIQUE DEFAULT 25 > > _ZN5boost4asio6detail12service_baseINS1_14strand_serviceEE2idE > > 990: 000dc48c 4 OBJECT UNIQUE DEFAULT 25 > > > _ZGVN5boost4asio6detail10call_stackINS1_14strand_service11strand_implEhE4top_E > > 1005: 0009a484 38 OBJECT WEAK DEFAULT 15 > > _ZTSN5boost4asio22service_already_existsE > > 1006: 000a3808 87 OBJECT WEAK DEFAULT 15 > > > _ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_12bad_any_castEEEEE > > 1024: 0009ad9c 65 OBJECT WEAK DEFAULT 15 > > _ZTSN5boost16exception_detail19error_info_injectorISt11logic_errorEE > > 1038: 0009ee34 128 OBJECT WEAK DEFAULT 15 > > > _ZTSN5boost4asio6detail30execution_context_service_baseINS1_22deadline_timer_serviceINS0_11time_traitsINS_10posix_time5ptimeEEEEEEE > > 1045: 0009ade0 84 OBJECT WEAK DEFAULT 15 > > > _ZTSN5boost16exception_detail10clone_implINS0_19error_info_injectorISt11logic_errorEEEE > > > > As far as I can tell, these symbols are known to the compiler/linker, as > > their Ndx is not UND (so undefined), which means their presence in the > > symbol table is not necessary. Since the whole program has 690kB and as > > strings shows these entries in the symbol table take more or less 140kB, > > I'd like to remove them. > > > > Currently I am compiling using the following compiler/linker options: > > -fvisibility=hidden -fvisibility-inlines-hidden -flto > -Wl,--exclude-libs,ALL > > -Wl,-r,--discard-all -Wl,-flto > > Hmm, isn't "-r" for partial linking? How can you use it to link an > executable? > Well, final binary works so I suppose it simply makes no difference. Reason for it being here is simple: I've been trying basically all combinations of options that according to The Experts Of The Internet should somehow make my binary smaller. Since this is combination that ended with smallest binary. -- Jędrzej Dudkiewicz I really hate this damn machine, I wish that they would sell it. It never does just what I want, but only what I tell it.