editeng/CustomTarget_generated.mk | 2 +- editeng/source/misc/SvXMLAutoCorrectTokenHandler.cxx | 11 +++++++---- filter/CustomTarget_svg.mk | 2 +- oox/source/token/tokenmap.cxx | 8 ++++++-- sdext/CustomTarget_pdfimport.mk | 2 +- sdext/source/pdfimport/wrapper/keyword_list | 2 +- solenv/bin/generate-tokens.py | 2 +- solenv/bin/gentoken.py | 2 +- solenv/gbuild/CustomTarget.mk | 2 +- sw/CustomTarget_generated.mk | 2 ++ sw/source/core/swg/SwXMLBlockImport.cxx | 11 +++++++---- xmloff/source/core/fasttokenhandler.cxx | 8 ++++++-- 12 files changed, 35 insertions(+), 19 deletions(-)
New commits: commit e75369aff89789364387d81754a124a7bc5558e0 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Tue Jul 8 20:02:11 2025 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Wed Jul 9 16:49:00 2025 +0200 use gperf -fpic friendly version mode nm -S --size-sort --print-size instdir/program/libmergedlo.so| grep ' [Dd] ' | c++filt | tail -n 10 before: ... 00000000000027f0 d aFmFormShellSlots_Impl ... 0000000000002920 d pRGBTable ... 0000000000003b80 d vcl::pdf::BuildinFontFace::m_aBuildinFonts ... 0000000000004140 d C.16.0 ... 0000000000004d80 d (anonymous namespace)::aMethods ... 00000000000066a8 d aRTFTokenTab ... 000000000000cf60 d xmloff::(anonymous namespace)::wordlist ... 000000000000cf60 d xmloff::token::getNames(int)::{lambda()#1}::operator()() const::sppcTokenNames ... 00000000000172c0 d oox::(anonymous namespace)::wordlist ... 00000000000172c0 d oox::TokenMap::getUtf8TokenName(int)::{lambda()#1}::operator()() const::sppcTokenNames after: ... 0000000000002790 d STR_ARR_SVT_LANGUAGE_TABLE ... 00000000000027a8 d RID_STRLIST_FUNCTION_NAMES ... 00000000000027f0 d aFmFormShellSlots_Impl ... 0000000000002920 d pRGBTable ... 0000000000003b80 d vcl::pdf::BuildinFontFace::m_aBuildinFonts ... 0000000000004140 d C.16.0 ... 0000000000004d80 d (anonymous namespace)::aMethods ... 00000000000066a8 d aRTFTokenTab ... 000000000000cf60 d xmloff::token::getNames(int)::{lambda()#1}::operator()() const::sppcTokenNames ... 00000000000172c0 d oox::TokenMap::getUtf8TokenName(int)::{lambda()#1}::operator()() const::sppcTokenNames See also: https://www.akkadia.org/drepper/dsohowto.pdf Change-Id: Ic1141c466d06d79d71e573c5f283cd1f089d7067 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187578 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/editeng/CustomTarget_generated.mk b/editeng/CustomTarget_generated.mk index bbdc75fcf53a..21a7892cf4ce 100644 --- a/editeng/CustomTarget_generated.mk +++ b/editeng/CustomTarget_generated.mk @@ -19,7 +19,7 @@ $(editeng_INC)/tokens.hxx $(editeng_INC)/tokens.gperf : $(editeng_SRC)/tokens.tx $(call gb_ExternalExecutable_get_command,python) $(editeng_PY) $(editeng_SRC)/tokens.txt $(editeng_INC)/tokens.gperf $(editeng_INC)/tokens.cxx : $(editeng_INC)/tokens.gperf - $(call gb_Helper_wsl_path,$(GPERF) --compare-strncmp --readonly-tables $(editeng_INC)/tokens.gperf) \ + $(call gb_Helper_wsl_path,$(GPERF) --compare-strncmp --readonly-tables --pic $(editeng_INC)/tokens.gperf) \ | sed -e '/^#line/d' -e 's/(char\*)0/(char\*)0, XML_TOKEN_INVALID/g' > $@ $(call gb_CustomTarget_get_target,editeng/generated) : $(editeng_INC)/tokens.cxx diff --git a/editeng/source/misc/SvXMLAutoCorrectTokenHandler.cxx b/editeng/source/misc/SvXMLAutoCorrectTokenHandler.cxx index ae1744615073..c6998d452b07 100644 --- a/editeng/source/misc/SvXMLAutoCorrectTokenHandler.cxx +++ b/editeng/source/misc/SvXMLAutoCorrectTokenHandler.cxx @@ -9,18 +9,21 @@ #include "SvXMLAutoCorrectTokenHandler.hxx" #include <xmloff/xmltoken.hxx> +#if defined __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" #if defined __clang__ #if __has_warning("-Wdeprecated-register") -#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-register" #endif #endif +#endif + #include <tokens.cxx> -#if defined __clang__ -#if __has_warning("-Wdeprecated-register") + +#if defined __GNUC__ #pragma GCC diagnostic pop #endif -#endif using namespace css::uno; using namespace ::xmloff::token; diff --git a/filter/CustomTarget_svg.mk b/filter/CustomTarget_svg.mk index cdc48cc21219..295a8072418d 100644 --- a/filter/CustomTarget_svg.mk +++ b/filter/CustomTarget_svg.mk @@ -40,7 +40,7 @@ $(filter_GEN_svg_Tokens_hxx) : $(filter_GEN_svg_Tokens_gperf) $(filter_GEN_svg_Tokens_cxx) : $(filter_GEN_svg_Tokens_gperf) $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,GPF,1) $(call gb_Helper_wsl_path,\ - $(GPERF) --compare-strncmp -C -m 20 --switch=2 --readonly-tables $(filter_GEN_svg_Tokens_gperf)) \ + $(GPERF) --compare-strncmp -C -m 20 --switch=2 --readonly-tables --pic $(filter_GEN_svg_Tokens_gperf)) \ | sed -e '/^#line/d' -e 's/(char\*)0/(char\*)0, 0/g' > $@ $(filter_GEN_svg_Script_hxx) : \ diff --git a/oox/source/token/tokenmap.cxx b/oox/source/token/tokenmap.cxx index dcd1481cbe15..c6b21dfa89b6 100644 --- a/oox/source/token/tokenmap.cxx +++ b/oox/source/token/tokenmap.cxx @@ -31,15 +31,19 @@ namespace oox { namespace { // include auto-generated Perfect_Hash -#if defined __clang__ +#if defined __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#if defined __clang__ #if __has_warning("-Wdeprecated-register") #pragma GCC diagnostic ignored "-Wdeprecated-register" #endif #endif +#endif + #include <tokenhash.inc> -#if defined __clang__ + +#if defined __GNUC__ #pragma GCC diagnostic pop #endif } // namespace diff --git a/sdext/CustomTarget_pdfimport.mk b/sdext/CustomTarget_pdfimport.mk index a32da2b94191..a2627824a8d4 100644 --- a/sdext/CustomTarget_pdfimport.mk +++ b/sdext/CustomTarget_pdfimport.mk @@ -17,7 +17,7 @@ $(gb_CustomTarget_workdir)/sdext/pdfimport/hash.cxx : \ | $(gb_CustomTarget_workdir)/sdext/pdfimport/.dir $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),GPF,1) $(call gb_Trace_StartRange,$(subst $(WORKDIR)/,,$@),GPF) - $(call gb_Helper_wsl_path,$(GPERF) -C -t -l -L C++ -m 20 --switch=2 --readonly-tables -Z PdfKeywordHash -k'4-5$(COMMA)$$' $<) > $@ + $(call gb_Helper_wsl_path,$(GPERF) -C -t -l -L C++ -m 20 --switch=2 --readonly-tables --pic -Z PdfKeywordHash -k'4-5$(COMMA)$$' $<) > $@ $(call gb_Trace_EndRange,$(subst $(WORKDIR)/,,$@),GPF) # vim:set shiftwidth=4 tabstop=4 noexpandtab: diff --git a/sdext/source/pdfimport/wrapper/keyword_list b/sdext/source/pdfimport/wrapper/keyword_list index 470a414f68fb..28a5c3184105 100644 --- a/sdext/source/pdfimport/wrapper/keyword_list +++ b/sdext/source/pdfimport/wrapper/keyword_list @@ -1,4 +1,4 @@ -struct hash_entry { const char* name; enum parseKey eKey; }; +struct hash_entry { int name; enum parseKey eKey; }; #if defined __GNUC__ #pragma GCC system_header diff --git a/solenv/bin/generate-tokens.py b/solenv/bin/generate-tokens.py index f1e01dc0d6db..857d96fcc3bb 100644 --- a/solenv/bin/generate-tokens.py +++ b/solenv/bin/generate-tokens.py @@ -33,7 +33,7 @@ gperffile.write("""%language=C++ %null-strings %struct-type struct xmltoken { - const char *name; + int name; sal_Int32 nToken; }; %% diff --git a/solenv/bin/gentoken.py b/solenv/bin/gentoken.py index 0fa793ea34f4..3c93119b1cb6 100644 --- a/solenv/bin/gentoken.py +++ b/solenv/bin/gentoken.py @@ -24,7 +24,7 @@ gperf_header = """%language=C++ %struct-type struct xmltoken { - const char *name; XMLTokenEnum nToken; + int name; XMLTokenEnum nToken; }; %% """ diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk index 7020f2c45b85..c7d5a9a3291f 100644 --- a/solenv/gbuild/CustomTarget.mk +++ b/solenv/gbuild/CustomTarget.mk @@ -84,7 +84,7 @@ define gb_CustomTarget_token_hash $(call gb_CustomTarget_get_target,$(1)) : $(gb_CustomTarget_workdir)/$(1)/$(2) $(gb_CustomTarget_workdir)/$(1)/$(2) : $(gb_CustomTarget_workdir)/$(1)/misc/$(3) $$(call gb_Output_announce,$$(subst $(WORKDIR)/,,$$@),build,GPF,1) - $$(call gb_Helper_wsl_path,$(GPERF) --compare-strncmp --switch=2 --readonly-tables $$< --output-file=$$@.gperf) \ + $$(call gb_Helper_wsl_path,$(GPERF) --compare-strncmp --switch=2 --readonly-tables --pic $$< --output-file=$$@.gperf) \ && sed -e '/^#line/d' -e 's/(char\*)0/(char\*)0, 0/g' $$@.gperf > $$@ && rm -f $$@.gperf endef diff --git a/sw/CustomTarget_generated.mk b/sw/CustomTarget_generated.mk index ca59842fd582..d031b5f7402b 100644 --- a/sw/CustomTarget_generated.mk +++ b/sw/CustomTarget_generated.mk @@ -24,10 +24,12 @@ $(sw_INC)/BlockListTokens.gperf : $(sw_INC)/%.gperf : $(sw_SRC)/%.txt $(sw_PY) \ # https://github.com/microsoft/WSL/issues/4400 so create them as separate intermediates $(sw_INC)/TextBlockTokens.processed : $(sw_INC)/TextBlockTokens.gperf $(GPERF) --compare-strncmp --readonly-tables --class-name=TextBlockTokens \ + --pic --string-pool-name=textBlockPool \ --word-array-name=textBlockList --enum $(sw_INC)/TextBlockTokens.gperf > $@ $(sw_INC)/BlockListTokens.processed : $(sw_INC)/BlockListTokens.gperf $(GPERF) --compare-strncmp --readonly-tables -T $(sw_INC)/BlockListTokens.gperf \ + --pic --string-pool-name=blockListPool \ --class-name=BlockListTokens --word-array-name=blockListList > $@ $(sw_INC)/tokens.cxx : sw_INC:=$(call gb_Helper_wsl_path,$(sw_INC)) diff --git a/sw/source/core/swg/SwXMLBlockImport.cxx b/sw/source/core/swg/SwXMLBlockImport.cxx index 4f19f72510f3..a2e6dcfc9615 100644 --- a/sw/source/core/swg/SwXMLBlockImport.cxx +++ b/sw/source/core/swg/SwXMLBlockImport.cxx @@ -23,18 +23,21 @@ #include <unotools/charclass.hxx> #include <swtypes.hxx> +#if defined __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" #if defined __clang__ #if __has_warning("-Wdeprecated-register") -#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-register" #endif #endif +#endif + #include <tokens.cxx> -#if defined __clang__ -#if __has_warning("-Wdeprecated-register") + +#if defined __GNUC__ #pragma GCC diagnostic pop #endif -#endif using namespace ::com::sun::star::uno; using namespace ::com::sun::star; diff --git a/xmloff/source/core/fasttokenhandler.cxx b/xmloff/source/core/fasttokenhandler.cxx index e7b2dc7e017e..a830609c26d5 100644 --- a/xmloff/source/core/fasttokenhandler.cxx +++ b/xmloff/source/core/fasttokenhandler.cxx @@ -15,15 +15,19 @@ namespace xmloff { namespace { // include auto-generated Perfect_Hash -#if defined __clang__ +#if defined __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" +#if defined __clang__ #if __has_warning("-Wdeprecated-register") #pragma GCC diagnostic ignored "-Wdeprecated-register" #endif #endif +#endif + #include <tokenhash.inc> -#if defined __clang__ + +#if defined __GNUC__ #pragma GCC diagnostic pop #endif } // namespace