Upgrade to upstream elfutils 0.192
- Drop upstreamed patches elfutils-0.190-riscv-flatten.patch elfutils-0.191-riscv-flatten.patch elfutils-0.191-profile-empty-urls.patch - Add elfutils-0.192-libelf-static.patch Resolves: RHEL-64067
This commit is contained in:
parent
4dacbbaed3
commit
e1311a3451
1
.gitignore
vendored
1
.gitignore
vendored
@ -31,3 +31,4 @@
|
|||||||
/elfutils-0.189.tar.bz2
|
/elfutils-0.189.tar.bz2
|
||||||
/elfutils-0.190.tar.bz2
|
/elfutils-0.190.tar.bz2
|
||||||
/elfutils-0.191.tar.bz2
|
/elfutils-0.191.tar.bz2
|
||||||
|
/elfutils-0.192.tar.bz2
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
commit 0ba2e4aa9945019a8c6db95d27d142b660a63a79
|
|
||||||
Author: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Tue Mar 26 21:42:39 2024 +0100
|
|
||||||
|
|
||||||
config: Make sure profile.sh succeeds with set -e and set -o pipefail
|
|
||||||
|
|
||||||
profile.sh might fail with set -o pipefail because:
|
|
||||||
|
|
||||||
cat /dev/null "${prefix}/etc/debuginfod"/*.urls 2>/dev/null | tr '\n' ' '
|
|
||||||
|
|
||||||
might fail when there isn't an *.urls file the first command in the
|
|
||||||
pipe fails (the 2>/dev/null is there to hide that failure).
|
|
||||||
|
|
||||||
This can be fixed by adding || : at the end.
|
|
||||||
|
|
||||||
This works because : always succeeds and produces no outpur which is
|
|
||||||
what the script expects when the command would fail.
|
|
||||||
|
|
||||||
Also add a new testcase that runs profile.sh with bout set -e
|
|
||||||
and set -o pipefail.
|
|
||||||
|
|
||||||
* config/profile.sh.in: Add || : at end of pipe.
|
|
||||||
* tests/run-debuginfod-client-profile.sh: New test.
|
|
||||||
* tests/Makefile.am (TESTS): Add run-debuginfod-client-profile.sh.
|
|
||||||
(EXTRA_DIST): Likewise.
|
|
||||||
|
|
||||||
https://sourceware.org/bugzilla/show_bug.cgi?id=31562
|
|
||||||
|
|
||||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
||||||
|
|
||||||
diff --git a/config/profile.sh.in b/config/profile.sh.in
|
|
||||||
index 3f4397dcb44d..84d3260ddcfc 100644
|
|
||||||
--- a/config/profile.sh.in
|
|
||||||
+++ b/config/profile.sh.in
|
|
||||||
@@ -6,7 +6,7 @@
|
|
||||||
|
|
||||||
if [ -z "$DEBUGINFOD_URLS" ]; then
|
|
||||||
prefix="@prefix@"
|
|
||||||
- DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ')
|
|
||||||
+ DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' || :)
|
|
||||||
[ -n "$DEBUGINFOD_URLS" ] && export DEBUGINFOD_URLS || unset DEBUGINFOD_URLS
|
|
||||||
unset prefix
|
|
||||||
fi
|
|
||||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
|
||||||
index 9315ec3bbe4c..344d6706e16e 100644
|
|
||||||
--- a/tests/Makefile.am
|
|
||||||
+++ b/tests/Makefile.am
|
|
||||||
@@ -209,6 +209,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
|
|
||||||
run-disasm-riscv64.sh \
|
|
||||||
run-pt_gnu_prop-tests.sh \
|
|
||||||
run-getphdrnum.sh run-test-includes.sh \
|
|
||||||
+ run-debuginfod-client-profile.sh \
|
|
||||||
leb128 read_unaligned \
|
|
||||||
msg_tst system-elf-libelf-test system-elf-gelf-test \
|
|
||||||
$(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \
|
|
||||||
@@ -636,6 +637,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
|
|
||||||
testfile_pt_gnu_prop.bz2 testfile_pt_gnu_prop32.bz2 \
|
|
||||||
run-getphdrnum.sh testfile-phdrs.elf.bz2 \
|
|
||||||
run-test-includes.sh run-low_high_pc-dw-form-indirect.sh \
|
|
||||||
+ run-debuginfod-client-profile.sh \
|
|
||||||
run-readelf-dw-form-indirect.sh testfile-dw-form-indirect.bz2 \
|
|
||||||
run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \
|
|
||||||
testfile_nvidia_linemap.bz2 \
|
|
||||||
diff --git a/tests/run-debuginfod-client-profile.sh b/tests/run-debuginfod-client-profile.sh
|
|
||||||
new file mode 100755
|
|
||||||
index 000000000000..7435ced83f15
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/run-debuginfod-client-profile.sh
|
|
||||||
@@ -0,0 +1,27 @@
|
|
||||||
+#! /bin/sh
|
|
||||||
+# Copyright (C) 2024 Mark J. Wielaard
|
|
||||||
+# This file is part of elfutils.
|
|
||||||
+#
|
|
||||||
+# This file is free software; you can redistribute it and/or modify
|
|
||||||
+# it under the terms of the GNU General Public License as published by
|
|
||||||
+# the Free Software Foundation; either version 3 of the License, or
|
|
||||||
+# (at your option) any later version.
|
|
||||||
+#
|
|
||||||
+# elfutils is distributed in the hope that it will be useful, but
|
|
||||||
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+# GNU General Public License for more details.
|
|
||||||
+#
|
|
||||||
+# You should have received a copy of the GNU General Public License
|
|
||||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
+
|
|
||||||
+. $srcdir/test-subr.sh
|
|
||||||
+
|
|
||||||
+# Make sure the profile.sh or profile.d/debuginfod.sh works even with
|
|
||||||
+# set -e (any command error is an error) and set -o pipefail (any error
|
|
||||||
+# in a pipe fails the whole pipe command).
|
|
||||||
+
|
|
||||||
+set -e
|
|
||||||
+set -o pipefail
|
|
||||||
+
|
|
||||||
+source ${abs_top_builddir}/config/profile.sh
|
|
@ -1,359 +0,0 @@
|
|||||||
From e39336df6588c3f9853be7d02819aee262ba2121 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Tue, 19 Mar 2024 22:43:10 +0000
|
|
||||||
Subject: [PATCH] riscv: Partial implementation of flatten_aggregate
|
|
||||||
|
|
||||||
dwfl_module_return_value_location would fail on riscv for functions
|
|
||||||
which return a (small) struct. This patch implements the simplest
|
|
||||||
cases of flatten_aggregate in backends/riscv_retval.c. It just handles
|
|
||||||
structs containing one or two members of the same base type which fit
|
|
||||||
completely or in pieces in one or two general or floating point
|
|
||||||
registers.
|
|
||||||
|
|
||||||
It also adds a specific test case run-funcretval-struct.sh containing
|
|
||||||
small structs of ints, longs, floats and doubles. All these testscases
|
|
||||||
now work for riscv. There is already a slightly more extensive
|
|
||||||
testcase for this in tests/run-funcretval.sh but that only has a
|
|
||||||
testcase for aarch64.
|
|
||||||
|
|
||||||
* backends/riscv_retval.c (flatten_aggregate_arg): Implement
|
|
||||||
for the simple cases where we have a struct with one or two
|
|
||||||
members of the same base type.
|
|
||||||
(pass_by_flattened_arg): Likewise. Call either
|
|
||||||
pass_in_gpr_lp64 or pass_in_fpr_lp64d.
|
|
||||||
(riscv_return_value_location_lp64ifd): Call
|
|
||||||
flatten_aggregate_arg including size.
|
|
||||||
* tests/Makefile.am (TESTS): Add run-funcretval-struct.sh
|
|
||||||
and run-funcretval-struct-native.sh.
|
|
||||||
(check_PROGRAMS): Add funcretval_test_struct.
|
|
||||||
(funcretval_test_struct_SOURCES): New.
|
|
||||||
(EXTRA_DIST): Add run-funcretval-struct.sh,
|
|
||||||
funcretval_test_struct_riscv.bz2 and
|
|
||||||
run-funcretval-struct-native.sh.
|
|
||||||
* tests/funcretval_test_struct_riscv.bz2: New test binary.
|
|
||||||
* tests/run-funcretval-struct-native.sh: New test.
|
|
||||||
* tests/run-funcretval-struct.sh: Likewise.
|
|
||||||
|
|
||||||
https://sourceware.org/bugzilla/show_bug.cgi?id=31142
|
|
||||||
|
|
||||||
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
|
||||||
---
|
|
||||||
backends/riscv_retval.c | 123 ++++++++++++++++++++++---
|
|
||||||
tests/Makefile.am | 7 ++
|
|
||||||
tests/funcretval_test_struct.c | 86 +++++++++++++++++
|
|
||||||
tests/funcretval_test_struct_riscv.bz2 | Bin 0 -> 3821 bytes
|
|
||||||
tests/run-funcretval-struct-native.sh | 22 +++++
|
|
||||||
tests/run-funcretval-struct.sh | 35 +++++++
|
|
||||||
6 files changed, 262 insertions(+), 11 deletions(-)
|
|
||||||
create mode 100644 tests/funcretval_test_struct.c
|
|
||||||
create mode 100755 tests/funcretval_test_struct_riscv.bz2
|
|
||||||
create mode 100755 tests/run-funcretval-struct-native.sh
|
|
||||||
create mode 100755 tests/run-funcretval-struct.sh
|
|
||||||
|
|
||||||
Fedora NOTE: Both the riscv specific test files weren't included
|
|
||||||
(funcretval_test_struct_riscv.bz2 and run-funcretval-struct.sh)
|
|
||||||
Because it contained a binary test. The native test is included
|
|
||||||
though.
|
|
||||||
|
|
||||||
diff --git a/backends/riscv_retval.c b/backends/riscv_retval.c
|
|
||||||
index 0a1e02f81cd2..50c451a4ba32 100644
|
|
||||||
--- a/backends/riscv_retval.c
|
|
||||||
+++ b/backends/riscv_retval.c
|
|
||||||
@@ -1,6 +1,7 @@
|
|
||||||
/* Function return value location for Linux/RISC-V ABI.
|
|
||||||
Copyright (C) 2018 Sifive, Inc.
|
|
||||||
Copyright (C) 2013 Red Hat, Inc.
|
|
||||||
+ Copyright (C) 2024 Mark J. Wielaard <mark@klomp.org>
|
|
||||||
This file is part of elfutils.
|
|
||||||
|
|
||||||
This file is free software; you can redistribute it and/or modify
|
|
||||||
@@ -105,23 +106,123 @@ pass_in_fpr_lp64d (const Dwarf_Op **locp, Dwarf_Word size)
|
|
||||||
return size <= 8 ? 1 : 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Checks if we can "flatten" the given type, Only handles the simple
|
|
||||||
+ cases where we have a struct with one or two the same base type
|
|
||||||
+ elements. */
|
|
||||||
static int
|
|
||||||
-flatten_aggregate_arg (Dwarf_Die *typedie __attribute__ ((unused)),
|
|
||||||
- Dwarf_Die *arg0 __attribute__ ((unused)),
|
|
||||||
- Dwarf_Die *arg1 __attribute__ ((unused)))
|
|
||||||
+flatten_aggregate_arg (Dwarf_Die *typedie,
|
|
||||||
+ Dwarf_Word size,
|
|
||||||
+ Dwarf_Die *arg0,
|
|
||||||
+ Dwarf_Die *arg1)
|
|
||||||
{
|
|
||||||
- /* ??? */
|
|
||||||
+ int tag0, tag1;
|
|
||||||
+ Dwarf_Die member;
|
|
||||||
+ Dwarf_Word encoding0, encoding1;
|
|
||||||
+ Dwarf_Attribute attr;
|
|
||||||
+ Dwarf_Word size0, size1;
|
|
||||||
+
|
|
||||||
+ if (size < 8 || size > 16)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (dwarf_child (typedie, arg0) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ tag0 = dwarf_tag (arg0);
|
|
||||||
+ while (tag0 != -1 && tag0 != DW_TAG_member)
|
|
||||||
+ {
|
|
||||||
+ if (dwarf_siblingof (arg0, arg0) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+ tag0 = dwarf_tag (arg0);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (tag0 != DW_TAG_member)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ /* Remember where we are. */
|
|
||||||
+ member = *arg0;
|
|
||||||
+
|
|
||||||
+ tag0 = dwarf_peeled_die_type (arg0, arg0);
|
|
||||||
+ if (tag0 != DW_TAG_base_type)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (dwarf_attr_integrate (arg0, DW_AT_encoding, &attr) == NULL
|
|
||||||
+ || dwarf_formudata (&attr, &encoding0) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (dwarf_bytesize_aux (arg0, &size0) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (size == size0)
|
|
||||||
+ return 1; /* This one member is the whole size. */
|
|
||||||
+
|
|
||||||
+ if (size != 2 * size0)
|
|
||||||
+ return 0; /* We only handle two of the same. */
|
|
||||||
+
|
|
||||||
+ /* Look for another member with the same encoding. */
|
|
||||||
+ if (dwarf_siblingof (&member, arg1) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ tag1 = dwarf_tag (arg1);
|
|
||||||
+ while (tag1 != -1 && tag1 != DW_TAG_member)
|
|
||||||
+ {
|
|
||||||
+ if (dwarf_siblingof (arg1, arg1) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+ tag1 = dwarf_tag (arg1);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (tag1 != DW_TAG_member)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ tag1 = dwarf_peeled_die_type (arg1, arg1);
|
|
||||||
+ if (tag1 != DW_TAG_base_type)
|
|
||||||
+ return 0; /* We can only handle two equal base types for now. */
|
|
||||||
+
|
|
||||||
+ if (dwarf_attr_integrate (arg1, DW_AT_encoding, &attr) == NULL
|
|
||||||
+ || dwarf_formudata (&attr, &encoding1) != 0
|
|
||||||
+ || encoding0 != encoding1)
|
|
||||||
+ return 0; /* We can only handle two of the same for now. */
|
|
||||||
+
|
|
||||||
+ if (dwarf_bytesize_aux (arg1, &size1) != 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (size0 != size1)
|
|
||||||
+ return 0; /* We can only handle two of the same for now. */
|
|
||||||
+
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* arg0 and arg1 should be the peeled die types found by
|
|
||||||
+ flatten_aggregate_arg. */
|
|
||||||
static int
|
|
||||||
-pass_by_flattened_arg (const Dwarf_Op **locp __attribute__ ((unused)),
|
|
||||||
- Dwarf_Word size __attribute__ ((unused)),
|
|
||||||
- Dwarf_Die *arg0 __attribute__ ((unused)),
|
|
||||||
- Dwarf_Die *arg1 __attribute__ ((unused)))
|
|
||||||
+pass_by_flattened_arg (const Dwarf_Op **locp,
|
|
||||||
+ Dwarf_Word size,
|
|
||||||
+ Dwarf_Die *arg0,
|
|
||||||
+ Dwarf_Die *arg1 __attribute__((unused)))
|
|
||||||
{
|
|
||||||
- /* ??? */
|
|
||||||
- return -2;
|
|
||||||
+ /* For now we just assume arg0 and arg1 are the same type and
|
|
||||||
+ encoding. */
|
|
||||||
+ Dwarf_Word encoding;
|
|
||||||
+ Dwarf_Attribute attr;
|
|
||||||
+
|
|
||||||
+ if (dwarf_attr_integrate (arg0, DW_AT_encoding, &attr) == NULL
|
|
||||||
+ || dwarf_formudata (&attr, &encoding) != 0)
|
|
||||||
+ return -1;
|
|
||||||
+
|
|
||||||
+ switch (encoding)
|
|
||||||
+ {
|
|
||||||
+ case DW_ATE_boolean:
|
|
||||||
+ case DW_ATE_signed:
|
|
||||||
+ case DW_ATE_unsigned:
|
|
||||||
+ case DW_ATE_unsigned_char:
|
|
||||||
+ case DW_ATE_signed_char:
|
|
||||||
+ return pass_in_gpr_lp64 (locp, size);
|
|
||||||
+
|
|
||||||
+ case DW_ATE_float:
|
|
||||||
+ return pass_in_fpr_lp64d (locp, size);
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
@@ -158,7 +259,7 @@ riscv_return_value_location_lp64ifd (int fp, Dwarf_Die *functypedie,
|
|
||||||
provided the floating-point real is no more than FLEN bits wide and
|
|
||||||
the integer is no more than XLEN bits wide. */
|
|
||||||
if (tag == DW_TAG_structure_type
|
|
||||||
- && flatten_aggregate_arg (&typedie, &arg0, &arg1))
|
|
||||||
+ && flatten_aggregate_arg (&typedie, size, &arg0, &arg1))
|
|
||||||
return pass_by_flattened_arg (locp, size, &arg0, &arg1);
|
|
||||||
/* Aggregates larger than 2*XLEN bits are passed by reference. */
|
|
||||||
else if (size > 16)
|
|
||||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
|
||||||
index 9141074fe44c..9315ec3bbe4c 100644
|
|
||||||
--- a/tests/Makefile.am
|
|
||||||
+++ b/tests/Makefile.am
|
|
||||||
@@ -284,6 +285,10 @@ funcretval_test__11_SOURCES = funcretval_test++11.cxx
|
|
||||||
TESTS += run-funcretval++11.sh
|
|
||||||
endif
|
|
||||||
|
|
||||||
+check_PROGRAMS += funcretval_test_struct
|
|
||||||
+funcretval_test_struct_SOURCES = funcretval_test_struct.c
|
|
||||||
+TESTS += run-funcretval-struct-native.sh
|
|
||||||
+
|
|
||||||
EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
|
|
||||||
run-ar-N.sh \
|
|
||||||
run-show-die-info.sh run-get-files.sh run-get-lines.sh \
|
|
||||||
@@ -635,6 +641,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
|
|
||||||
testfile_nvidia_linemap.bz2 \
|
|
||||||
testfile-largealign.o.bz2 run-strip-largealign.sh \
|
|
||||||
run-funcretval++11.sh \
|
|
||||||
+ run-funcretval-struct-native.sh \
|
|
||||||
test-ar-duplicates.a.bz2 \
|
|
||||||
run-dwfl-core-noncontig.sh testcore-noncontig.bz2 \
|
|
||||||
testfile-dwarf5-line-clang.bz2 \
|
|
||||||
diff --git a/tests/funcretval_test_struct.c b/tests/funcretval_test_struct.c
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..df94bde0a42d
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/funcretval_test_struct.c
|
|
||||||
@@ -0,0 +1,86 @@
|
|
||||||
+/* Copyright (C) 2024 Mark J. Wielaard <mark@klomp.org>
|
|
||||||
+ This file is part of elfutils.
|
|
||||||
+
|
|
||||||
+ This file is free software; you can redistribute it and/or modify
|
|
||||||
+ it under the terms of the GNU General Public License as published by
|
|
||||||
+ the Free Software Foundation; either version 3 of the License, or
|
|
||||||
+ (at your option) any later version.
|
|
||||||
+
|
|
||||||
+ elfutils is distributed in the hope that it will be useful, but
|
|
||||||
+ WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ GNU General Public License for more details.
|
|
||||||
+
|
|
||||||
+ You should have received a copy of the GNU General Public License
|
|
||||||
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
||||||
+
|
|
||||||
+typedef struct
|
|
||||||
+ {
|
|
||||||
+ int q;
|
|
||||||
+ int r;
|
|
||||||
+ } div_t;
|
|
||||||
+
|
|
||||||
+typedef struct
|
|
||||||
+ {
|
|
||||||
+ long q;
|
|
||||||
+ long r;
|
|
||||||
+ } ldiv_t;
|
|
||||||
+
|
|
||||||
+typedef struct
|
|
||||||
+ {
|
|
||||||
+ float x;
|
|
||||||
+ float y;
|
|
||||||
+ } point_t;
|
|
||||||
+
|
|
||||||
+typedef struct
|
|
||||||
+ {
|
|
||||||
+ double x;
|
|
||||||
+ double y;
|
|
||||||
+ } dpoint_t;
|
|
||||||
+
|
|
||||||
+div_t __attribute__((__noinline__))
|
|
||||||
+div (int n, int d)
|
|
||||||
+{
|
|
||||||
+ div_t r;
|
|
||||||
+ r.q = n / d;
|
|
||||||
+ r.r = n % d;
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+ldiv_t __attribute__((__noinline__))
|
|
||||||
+ldiv (long n, long d)
|
|
||||||
+{
|
|
||||||
+ ldiv_t r;
|
|
||||||
+ r.q = n / d;
|
|
||||||
+ r.r = n % d;
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+point_t __attribute__((__noinline__))
|
|
||||||
+mkpt (float x, float y)
|
|
||||||
+{
|
|
||||||
+ point_t r;
|
|
||||||
+ r.x = x;
|
|
||||||
+ r.y = y;
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+dpoint_t __attribute__((__noinline__))
|
|
||||||
+dmkpt (double x, double y)
|
|
||||||
+{
|
|
||||||
+ dpoint_t r;
|
|
||||||
+ r.x = x;
|
|
||||||
+ r.y = y;
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+main (void)
|
|
||||||
+{
|
|
||||||
+ div_t d = div (3, 2);
|
|
||||||
+ ldiv_t ld = ldiv (3, 2);
|
|
||||||
+ point_t p = mkpt (3.0f, 1.0f);
|
|
||||||
+ dpoint_t dp = dmkpt (3.0d, 1.0d);
|
|
||||||
+
|
|
||||||
+ return d.q - (int) p.y + ld.q - (int) dp.y;
|
|
||||||
+}
|
|
||||||
|
|
||||||
diff --git a/tests/run-funcretval-struct-native.sh b/tests/run-funcretval-struct-native.sh
|
|
||||||
new file mode 100755
|
|
||||||
index 000000000000..798edb3b61b3
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/run-funcretval-struct-native.sh
|
|
||||||
@@ -0,0 +1,22 @@
|
|
||||||
+#! /bin/sh
|
|
||||||
+# Copyright (C) 2024 Mark J. Wielaard <mark@klomp.org>
|
|
||||||
+# This file is part of elfutils.
|
|
||||||
+#
|
|
||||||
+# This file is free software; you can redistribute it and/or modify
|
|
||||||
+# it under the terms of the GNU General Public License as published by
|
|
||||||
+# the Free Software Foundation; either version 3 of the License, or
|
|
||||||
+# (at your option) any later version.
|
|
||||||
+#
|
|
||||||
+# elfutils is distributed in the hope that it will be useful, but
|
|
||||||
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+# GNU General Public License for more details.
|
|
||||||
+#
|
|
||||||
+# You should have received a copy of the GNU General Public License
|
|
||||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
+
|
|
||||||
+. $srcdir/test-subr.sh
|
|
||||||
+
|
|
||||||
+# Just run it, we don't know what the native representation is.
|
|
||||||
+# But it should at least work and not error out.
|
|
||||||
+testrun $abs_builddir/funcretval -e $abs_builddir/funcretval_test_struct
|
|
||||||
--
|
|
||||||
2.44.0
|
|
||||||
|
|
36
elfutils-0.192-libelf-static.patch
Normal file
36
elfutils-0.192-libelf-static.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From 0a65a54593ae489d40cb993caa74095d45bc47fd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Tue, 22 Oct 2024 15:03:42 +0200
|
||||||
|
Subject: [PATCH] libelf: Add libeu objects to libelf.a static archive
|
||||||
|
|
||||||
|
libelf might use some symbols from libeu.a, specifically the eu-search
|
||||||
|
wrappers. But we don't ship libeu.a separately. So include the libeu
|
||||||
|
objects in the libelf.a archive to facilitate static linking.
|
||||||
|
|
||||||
|
* libelf/Makefile.am (libeu_objects): New variable.
|
||||||
|
(libelf_a_LIBADD): New, add libeu_objects.
|
||||||
|
|
||||||
|
https://sourceware.org/bugzilla/show_bug.cgi?id=32293
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
---
|
||||||
|
libelf/Makefile.am | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/libelf/Makefile.am b/libelf/Makefile.am
|
||||||
|
index 3402863e..2d3dbdf2 100644
|
||||||
|
--- a/libelf/Makefile.am
|
||||||
|
+++ b/libelf/Makefile.am
|
||||||
|
@@ -122,6 +122,9 @@ libelf.so: $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS)
|
||||||
|
@$(textrel_check)
|
||||||
|
$(AM_V_at)ln -fs $@ $@.$(VERSION)
|
||||||
|
|
||||||
|
+libeu_objects = $(shell $(AR) t ../lib/libeu.a)
|
||||||
|
+libelf_a_LIBADD = $(addprefix ../lib/,$(libeu_objects))
|
||||||
|
+
|
||||||
|
install: install-am libelf.so
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(libdir)
|
||||||
|
$(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so
|
||||||
|
--
|
||||||
|
2.47.0
|
||||||
|
|
@ -3,8 +3,8 @@
|
|||||||
%bcond_with static
|
%bcond_with static
|
||||||
|
|
||||||
Name: elfutils
|
Name: elfutils
|
||||||
Version: 0.191
|
Version: 0.192
|
||||||
%global baserelease 4
|
%global baserelease 1
|
||||||
Release: %{baserelease}%{?dist}
|
Release: %{baserelease}%{?dist}
|
||||||
URL: http://elfutils.org/
|
URL: http://elfutils.org/
|
||||||
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
|
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
|
||||||
@ -39,6 +39,8 @@ BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33
|
|||||||
BuildRequires: pkgconfig(libcurl) >= 7.29.0
|
BuildRequires: pkgconfig(libcurl) >= 7.29.0
|
||||||
BuildRequires: pkgconfig(sqlite3) >= 3.7.17
|
BuildRequires: pkgconfig(sqlite3) >= 3.7.17
|
||||||
BuildRequires: pkgconfig(libarchive) >= 3.1.2
|
BuildRequires: pkgconfig(libarchive) >= 3.1.2
|
||||||
|
# For debugindod metadata query
|
||||||
|
BuildRequires: pkgconfig(json-c) >= 0.11
|
||||||
|
|
||||||
# For tests need to bunzip2 test files.
|
# For tests need to bunzip2 test files.
|
||||||
BuildRequires: bzip2
|
BuildRequires: bzip2
|
||||||
@ -72,6 +74,9 @@ BuildRequires: gettext-devel
|
|||||||
|
|
||||||
# Patches
|
# Patches
|
||||||
|
|
||||||
|
# Include libeu.a objects in libelf.a for static linking.
|
||||||
|
Patch1: elfutils-0.192-libelf-static.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Elfutils is a collection of utilities, including stack (to show
|
Elfutils is a collection of utilities, including stack (to show
|
||||||
backtraces), nm (for listing symbols from object files), size
|
backtraces), nm (for listing symbols from object files), size
|
||||||
@ -429,6 +434,9 @@ fi
|
|||||||
%{_libdir}/libelf.so
|
%{_libdir}/libelf.so
|
||||||
%{_libdir}/pkgconfig/libelf.pc
|
%{_libdir}/pkgconfig/libelf.pc
|
||||||
%{_mandir}/man3/elf_*.3*
|
%{_mandir}/man3/elf_*.3*
|
||||||
|
%{_mandir}/man3/elf32_*.3*
|
||||||
|
%{_mandir}/man3/elf64_*.3*
|
||||||
|
%{_mandir}/man3/libelf.3*
|
||||||
|
|
||||||
%if %{with static}
|
%if %{with static}
|
||||||
%files libelf-devel-static
|
%files libelf-devel-static
|
||||||
@ -447,6 +455,7 @@ fi
|
|||||||
%{_mandir}/man1/debuginfod-find.1*
|
%{_mandir}/man1/debuginfod-find.1*
|
||||||
%{_mandir}/man7/debuginfod*.7*
|
%{_mandir}/man7/debuginfod*.7*
|
||||||
%{_sysconfdir}/profile.d/debuginfod.*
|
%{_sysconfdir}/profile.d/debuginfod.*
|
||||||
|
%config(noreplace) %{_datadir}/fish/vendor_conf.d/*
|
||||||
%if 0%{?centos} >= 8
|
%if 0%{?centos} >= 8
|
||||||
%{_sysconfdir}/debuginfod/*.urls
|
%{_sysconfdir}/debuginfod/*.urls
|
||||||
%endif
|
%endif
|
||||||
@ -488,6 +497,14 @@ exit 0
|
|||||||
%systemd_postun_with_restart debuginfod.service
|
%systemd_postun_with_restart debuginfod.service
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 23 2024 Aaron Merey <amerey@redhat.com> - 0.192-1
|
||||||
|
- Upgrade to upstream elfutils 0.192
|
||||||
|
- Drop upstreamed patches
|
||||||
|
elfutils-0.190-riscv-flatten.patch
|
||||||
|
elfutils-0.191-riscv-flatten.patch
|
||||||
|
elfutils-0.191-profile-empty-urls.patch
|
||||||
|
- Add elfutils-0.192-libelf-static.patch
|
||||||
|
|
||||||
* Fri Apr 19 2024 Aaron Merey <amerey@redhat.com> - 0.191-3
|
* Fri Apr 19 2024 Aaron Merey <amerey@redhat.com> - 0.191-3
|
||||||
- eu-srcfiles directly links to libdebuginfod.so so explicitly
|
- eu-srcfiles directly links to libdebuginfod.so so explicitly
|
||||||
Require elfutils-debuginfod-client not just Recommends.
|
Require elfutils-debuginfod-client not just Recommends.
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (elfutils-0.191.tar.bz2) = e22d85f25317a79b36d370347e50284c9120c86f9830f08791b7b6a7b4ad89b9bf4c7c71129133b8d193a0edffb2a2c17987b7e48428b9670aff5ce918777e04
|
SHA512 (elfutils-0.192.tar.bz2) = 543188f5f2cfe5bc7955a878416c5f252edff9926754e5de0c6c57b132f21d9285c9b29e41281e93baad11d4ae7efbbf93580c114579c182103565fe99bd3909
|
||||||
|
Loading…
Reference in New Issue
Block a user