Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package clang-extract for openSUSE:Factory checked in at 2026-02-24 17:58:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/clang-extract (Old) and /work/SRC/openSUSE:Factory/.clang-extract.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clang-extract" Tue Feb 24 17:58:57 2026 rev:19 rq:1334821 version:0~20260224.7ad9595 Changes: -------- --- /work/SRC/openSUSE:Factory/clang-extract/clang-extract.changes 2025-10-21 11:18:14.011365263 +0200 +++ /work/SRC/openSUSE:Factory/.clang-extract.new.1977/clang-extract.changes 2026-02-24 17:58:57.991586958 +0100 @@ -1,0 +2,7 @@ +Tue Feb 24 16:17:20 UTC 2026 - [email protected] + +- Update to version 0~20260224.7ad9595: + * Add support for TLS variables + * Ignore -Wfree-labels and -Wmissing-parameter-name + +------------------------------------------------------------------- Old: ---- clang-extract-0~20251020.19c1329.tar.xz New: ---- clang-extract-0~20260224.7ad9595.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ clang-extract.spec ++++++ --- /var/tmp/diff_new_pack.gXne5v/_old 2026-02-24 17:58:59.735659082 +0100 +++ /var/tmp/diff_new_pack.gXne5v/_new 2026-02-24 17:58:59.751659743 +0100 @@ -1,7 +1,7 @@ # # spec file for package clang-extract # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: clang-extract -Version: 0~20251020.19c1329 +Version: 0~20260224.7ad9595 Release: 0 Summary: A tool to extract code content from source files License: Apache-2.0 WITH LLVM-exception AND NCSA ++++++ _service ++++++ --- /var/tmp/diff_new_pack.gXne5v/_old 2026-02-24 17:58:59.991669669 +0100 +++ /var/tmp/diff_new_pack.gXne5v/_new 2026-02-24 17:59:00.023670992 +0100 @@ -2,7 +2,7 @@ <service name="tar_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://github.com/SUSE/clang-extract</param> - <param name="revision">19c13299e893581112c15d6f1d123c4c7f824527</param> + <param name="revision">7ad959571de4cbf670898aaa17707300817b7686</param> <param name="versionformat">0~%cd.%h</param> <param name="changesgenerate">enable</param> <param name="changesauthor">[email protected]</param> ++++++ clang-extract-0~20251020.19c1329.tar.xz -> clang-extract-0~20260224.7ad9595.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-extract-0~20251020.19c1329/libcextract/ArgvParser.cpp new/clang-extract-0~20260224.7ad9595/libcextract/ArgvParser.cpp --- old/clang-extract-0~20251020.19c1329/libcextract/ArgvParser.cpp 2025-10-20 17:03:40.000000000 +0200 +++ new/clang-extract-0~20260224.7ad9595/libcextract/ArgvParser.cpp 2026-02-24 17:12:41.000000000 +0100 @@ -54,6 +54,8 @@ "-Wimplicit-fallthrough=", "-Wendif-labels", "-Wmissing-selector-name", + "-Wfree-labels", + "-Wmissing-parameter-name", }; ArgvParser::ArgvParser(int argc, char **argv) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-extract-0~20251020.19c1329/libcextract/DscFileGenerator.cpp new/clang-extract-0~20260224.7ad9595/libcextract/DscFileGenerator.cpp --- old/clang-extract-0~20251020.19c1329/libcextract/DscFileGenerator.cpp 2025-10-20 17:03:40.000000000 +0200 +++ new/clang-extract-0~20260224.7ad9595/libcextract/DscFileGenerator.cpp 2026-02-24 17:12:41.000000000 +0100 @@ -92,6 +92,29 @@ } } +static bool Is_TLS(VarDecl *decl) +{ + return decl->getTLSKind() == VarDecl::TLS_None ? false : true; +} + +static bool Is_TLS(const DeclContext::lookup_result &decls) +{ + bool is_tls = false; + + for (auto it = decls.begin(); it != decls.end(); ++it) { + if (VarDecl *vdecl = dyn_cast<VarDecl>(*it)) { + is_tls |= Is_TLS(vdecl); + } + } + + return is_tls; +} + +static std::string Get_TLS_Token(bool predicate) +{ + return predicate == true ? "%" : ""; +} + void DscFileGenerator::Local_Symbols(void) { TranslationUnitDecl *tu = AST->getASTContext().getTranslationUnitDecl(); @@ -102,9 +125,11 @@ DeclContext::lookup_result decls = tu->lookup( DeclarationName(&idtbl.get(entry.NewName))); if (decls.empty()) { - throw std::runtime_error("Unable to find symbol " + entry.NewName + " in the AST"); + throw std::runtime_error("Unable to find symbol " + entry.NewName + + " in the AST"); } - Out << "\n#" << entry.OldName << ":" << entry.NewName; + Out << "\n#" << Get_TLS_Token(Is_TLS(decls)) << entry.OldName << ":" << + entry.NewName; std::string mod = IA.Get_Symbol_Module(entry.OldName); if (!mod.empty()) Out << ":" << mod; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-extract-0~20251020.19c1329/libcextract/PrettyPrint.cpp new/clang-extract-0~20260224.7ad9595/libcextract/PrettyPrint.cpp --- old/clang-extract-0~20251020.19c1329/libcextract/PrettyPrint.cpp 2025-10-20 17:03:40.000000000 +0200 +++ new/clang-extract-0~20260224.7ad9595/libcextract/PrettyPrint.cpp 2026-02-24 17:12:41.000000000 +0100 @@ -36,7 +36,6 @@ return; if (decl->hasAttrs()) { - const SourceManager &SM = decl->getASTContext().getSourceManager(); AttrVec &Attrs = decl->getAttrs(); /* Clang always seems to insert the `asm` label last, but lets just swap diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-extract-0~20251020.19c1329/libcextract/SymbolExternalizer.cpp new/clang-extract-0~20260224.7ad9595/libcextract/SymbolExternalizer.cpp --- old/clang-extract-0~20251020.19c1329/libcextract/SymbolExternalizer.cpp 2025-10-20 17:03:40.000000000 +0200 +++ new/clang-extract-0~20260224.7ad9595/libcextract/SymbolExternalizer.cpp 2026-02-24 17:12:41.000000000 +0100 @@ -646,6 +646,12 @@ ret->addAttr(UsedAttr::Create(astctx)); } + /* In case the original Decl has TLS storage, we must copy it to the new + variable as well. */ + if (VarDecl *vdecl = dyn_cast<VarDecl>(decl)) { + ret->setTSCSpec(vdecl->getTSCSpec()); + } + /* return node. */ return ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-extract-0~20251020.19c1329/testsuite/small/tls-1.c new/clang-extract-0~20260224.7ad9595/testsuite/small/tls-1.c --- old/clang-extract-0~20251020.19c1329/testsuite/small/tls-1.c 1970-01-01 01:00:00.000000000 +0100 +++ new/clang-extract-0~20260224.7ad9595/testsuite/small/tls-1.c 2026-02-24 17:12:41.000000000 +0100 @@ -0,0 +1,11 @@ +/* { dg-options "-DCE_EXTRACT_FUNCTIONS=set_errno -DCE_EXPORT_SYMBOLS=__libc_errno" }*/ + +extern __thread int __libc_errno __attribute__ ((tls_model ("initial-exec"))); + +void set_errno(int err) +{ + __libc_errno = err; +} + +/* { dg-final { scan-tree-dump "__attribute__\(\(used\)\) static __thread int \*klpe___libc_errno;|static __thread int \*klpe___libc_errno __attribute__\(\(used\)\);" } } */ +/* { dg-final { scan-tree-dump "\(\*klpe___libc_errno\) = err" } } */
