Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package elfutils for openSUSE:Factory checked in at 2023-02-19 18:18:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/elfutils (Old) and /work/SRC/openSUSE:Factory/.elfutils.new.22824 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "elfutils" Sun Feb 19 18:18:37 2023 rev:104 rq:1066183 version:0.188 Changes: -------- --- /work/SRC/openSUSE:Factory/elfutils/elfutils-debuginfod.changes 2022-12-15 19:23:28.999468503 +0100 +++ /work/SRC/openSUSE:Factory/.elfutils.new.22824/elfutils-debuginfod.changes 2023-02-19 18:18:39.993368410 +0100 @@ -1,0 +2,14 @@ +Thu Feb 16 13:00:33 UTC 2023 - Pedro Monreal <pmonr...@suse.com> + +- Fix build with libcurl version 7.88.0 for various deprecated + constants. Add patches: + * elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch + * elfutils-0.188-CURL_AT_LEAST_VERSION.patch + * elfutils-0.188-deprecated-CURLINFO.patch + +------------------------------------------------------------------- +Tue Feb 14 09:46:19 UTC 2023 - Martin Liška <mli...@suse.cz> + +- Add support-DW_TAG_unspecified_type.patch that fixes PR30047. + +------------------------------------------------------------------- elfutils.changes: same change New: ---- elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch elfutils-0.188-CURL_AT_LEAST_VERSION.patch elfutils-0.188-deprecated-CURLINFO.patch support-DW_TAG_unspecified_type.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ elfutils-debuginfod.spec ++++++ --- /var/tmp/diff_new_pack.dJFa3m/_old 2023-02-19 18:18:40.777373392 +0100 +++ /var/tmp/diff_new_pack.dJFa3m/_new 2023-02-19 18:18:40.785373443 +0100 @@ -1,7 +1,7 @@ # # spec file for package elfutils-debuginfod # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -30,6 +30,11 @@ Source4: %{name}.sysusers Patch1: harden_debuginfod.service.patch Patch2: 0005-backends-Add-RISC-V-object-attribute-printing.patch +Patch3: support-DW_TAG_unspecified_type.patch +#PATCH-FIX-UPSTREAM Patches to fix deprecated curl options +Patch4: elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch +Patch5: elfutils-0.188-CURL_AT_LEAST_VERSION.patch +Patch6: elfutils-0.188-deprecated-CURLINFO.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bison ++++++ elfutils.spec ++++++ --- /var/tmp/diff_new_pack.dJFa3m/_old 2023-02-19 18:18:40.813373621 +0100 +++ /var/tmp/diff_new_pack.dJFa3m/_new 2023-02-19 18:18:40.821373671 +0100 @@ -1,7 +1,7 @@ # # spec file for package elfutils # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -32,6 +32,11 @@ Source6: elfutils-rpmlintrc Patch1: harden_debuginfod.service.patch Patch2: 0005-backends-Add-RISC-V-object-attribute-printing.patch +Patch3: support-DW_TAG_unspecified_type.patch +#PATCH-FIX-UPSTREAM Patches to fix deprecated curl options +Patch4: elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch +Patch5: elfutils-0.188-CURL_AT_LEAST_VERSION.patch +Patch6: elfutils-0.188-deprecated-CURLINFO.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bison ++++++ elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch ++++++ >From 6560fb26a62ef135a804357ef4f15a47de3e49b3 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <m...@klomp.org> Date: Tue, 10 Jan 2023 23:20:41 +0100 Subject: [PATCH 8/8] debuginfod-client: Use CURLOPT_PROTOCOLS_STR for libcurl >= 7.85.0 https://sourceware.org/bugzilla/show_bug.cgi?id=29926 Signed-off-by: Mark Wielaard <m...@klomp.org> --- debuginfod/ChangeLog | 5 +++++ debuginfod/debuginfod-client.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index a16165bd..1ce45632 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -1336,8 +1336,13 @@ debuginfod_query_server (debuginfod_client *c, /* Only allow http:// + https:// + file:// so we aren't being redirected to some unsupported protocol. */ +#if CURL_AT_LEAST_VERSION(7, 85, 0) + curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS_STR, + "http,https,file"); +#else curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS, (CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FILE)); +#endif curl_easy_setopt_ck(data[i].handle, CURLOPT_URL, data[i].url); if (vfd >= 0) curl_easy_setopt_ck(data[i].handle, CURLOPT_ERRORBUFFER, -- 2.39.1 ++++++ elfutils-0.188-CURL_AT_LEAST_VERSION.patch ++++++ >From 304741e11018c29e7ff17751e05dcc5c786a3fd9 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <m...@klomp.org> Date: Wed, 21 Dec 2022 18:21:08 +0100 Subject: [PATCH 2/8] debuginfod: Define CURL_AT_LEAST_VERSION if necessary Older curl.h don't define CURL_AT_LEAST_VERSION, so define it ourselves because it is nicer than doing hex encoded version comparisons. Signed-off-by: Mark Wielaard <m...@klomp.org> --- debuginfod/ChangeLog | 4 ++++ debuginfod/debuginfod-client.c | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index 692aecce..a16165bd 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -105,6 +105,13 @@ void debuginfod_end (debuginfod_client *c) { } #include <fts.h> #endif +/* Older curl.h don't define CURL_AT_LEAST_VERSION. */ +#ifndef CURL_AT_LEAST_VERSION + #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) + #define CURL_AT_LEAST_VERSION(x,y,z) \ + (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) +#endif + #include <pthread.h> static pthread_once_t init_control = PTHREAD_ONCE_INIT; -- 2.39.1 ++++++ elfutils-0.188-deprecated-CURLINFO.patch ++++++ >From d2bf497b12fbd49b4996ccf0744303ffd67735b1 Mon Sep 17 00:00:00 2001 From: Andrew Paprocki <and...@ishiboo.com> Date: Wed, 21 Dec 2022 11:15:00 -0500 Subject: [PATCH 1/8] PR29926: debuginfod: Fix usage of deprecated CURLINFO_* The `CURLINFO_SIZE_DOWNLOAD_T` and `CURLINFO_CONTENT_LENGTH_DOWNLOAD_T` identifiers are `enum`s, not pre-processor definitions, so the current `#ifdef` logic is not selecting the newer API. This results in the older identifiers being used and they now generate errors when compiled against Curl 7.87, which has silently deprecated them, causing GCC to emit `-Werror=deprecated-declarations`. Instead, the newer identifiers were added in Curl 7.55, so explicitly check for `CURL_AT_LEAST_VERSION(7, 55, 0)` instead of the current logic. This eliminates the error when compiling against Curl 7.87. Ref: https://github.com/curl/curl/pull/1511 Signed-off-by: Andrew Paprocki <and...@ishiboo.com> --- debuginfod/ChangeLog | 4 ++++ debuginfod/debuginfod-client.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index 8873fcc8..692aecce 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -1456,7 +1456,7 @@ debuginfod_query_server (debuginfod_client *c, deflate-compressing proxies, this number is likely to be unavailable, so -1 may show. */ CURLcode curl_res; -#ifdef CURLINFO_CONTENT_LENGTH_DOWNLOAD_T +#if CURL_AT_LEAST_VERSION(7, 55, 0) curl_off_t cl; curl_res = curl_easy_getinfo(target_handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, @@ -1491,7 +1491,7 @@ debuginfod_query_server (debuginfod_client *c, if (target_handle) /* we've committed to a server; report its download progress */ { CURLcode curl_res; -#ifdef CURLINFO_SIZE_DOWNLOAD_T +#if CURL_AT_LEAST_VERSION(7, 55, 0) curl_off_t dl; curl_res = curl_easy_getinfo(target_handle, CURLINFO_SIZE_DOWNLOAD_T, -- 2.39.1 ++++++ support-DW_TAG_unspecified_type.patch ++++++ >From f638ab839a5c0a6fdfa666acdf6839ed827f0897 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <m...@klomp.org> Date: Thu, 26 Jan 2023 18:19:15 +0100 Subject: [PATCH] backends: Handle DW_TAG_unspecified_type in dwarf_peeled_die_type binutils 2.40 introduces DW_TAG_unspecified_type for assembly functions with an unknown return type. This breaks the run-funcretval.sh testcase because dwfl_module_return_value_location returns an error for such functions because it cannot determine the return value location. Fix that by treating DW_TAG_unspecified_type as if the DIE doesn't have a DW_AT_type. Also update the testcase to explicitly checking for DW_TAG_unspecified_type and printing "returns unspecified type". https://sourceware.org/bugzilla/show_bug.cgi?id=30047 Signed-off-by: Mark Wielaard <m...@klomp.org> --- NEWS | 5 +++++ backends/ChangeLog | 5 +++++ backends/libebl_CPU.h | 14 ++++++++++++-- tests/ChangeLog | 4 ++++ tests/funcretval.c | 14 +++++++++++++- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/backends/libebl_CPU.h b/backends/libebl_CPU.h index 0e507bd3..a2898a1f 100644 --- a/backends/libebl_CPU.h +++ b/backends/libebl_CPU.h @@ -1,5 +1,6 @@ /* Common interface for libebl modules. Copyright (C) 2000, 2001, 2002, 2003, 2005, 2013, 2014 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard <m...@klomp.org> This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -53,7 +54,9 @@ extern bool (*generic_debugscn_p) (const char *) attribute_hidden; dwarf_tag (_die); }) /* Get a type die corresponding to DIE. Peel CV qualifiers off - it. */ + it. Returns zero if the DIE doesn't have a type, or the type + is DW_TAG_unspecified_type. Returns -1 on error. Otherwise + returns the result tag DW_AT value. */ static inline int dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result) { @@ -69,7 +72,14 @@ dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result) if (dwarf_peel_type (result, result) != 0) return -1; - return DWARF_TAG_OR_RETURN (result); + if (result == NULL) + return -1; + + int tag = dwarf_tag (result); + if (tag == DW_TAG_unspecified_type) + return 0; /* Treat an unspecified type as if there was no type. */ + + return tag; } #endif /* libebl_CPU.h */ diff --git a/tests/funcretval.c b/tests/funcretval.c index 16cd1a44..41198ab7 100644 --- a/tests/funcretval.c +++ b/tests/funcretval.c @@ -1,5 +1,6 @@ /* Test program for dwfl_module_return_value_location. Copyright (C) 2005 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard <m...@klomp.org> This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -67,7 +68,18 @@ handle_function (Dwarf_Die *funcdie, void *arg) error (EXIT_FAILURE, 0, "dwfl_module_return_value_location: %s", dwfl_errmsg (-1)); else if (nlocops == 0) - puts ("returns no value"); + { + // Check if this is the special unspecified type + // https://sourceware.org/bugzilla/show_bug.cgi?id=30047 + Dwarf_Die die_mem, *typedie = &die_mem; + Dwarf_Attribute attr_mem, *attr; + attr = dwarf_attr_integrate (funcdie, DW_AT_type, &attr_mem); + if (dwarf_formref_die (attr, typedie) != NULL + && dwarf_tag (typedie) == DW_TAG_unspecified_type) + puts ("returns unspecified type"); + else + puts ("returns no value"); + } else { printf ("return value location:"); -- 2.39.1