forked from rpms/elfutils
		
	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-64046
This commit is contained in:
		
							parent
							
								
									b8e9691d13
								
							
						
					
					
						commit
						347352d8dc
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -32,3 +32,4 @@ | ||||
| /elfutils-0.189.tar.bz2 | ||||
| /elfutils-0.190.tar.bz2 | ||||
| /elfutils-0.191.tar.bz2 | ||||
| /elfutils-0.192.tar.bz2 | ||||
|  | ||||
| @ -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 | ||||
| 
 | ||||
| @ -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 | ||||
| 
 | ||||
| Name: elfutils | ||||
| Version: 0.191 | ||||
| %global baserelease 5 | ||||
| Version: 0.192 | ||||
| %global baserelease 1 | ||||
| Release: %{baserelease}%{?dist} | ||||
| URL: http://elfutils.org/ | ||||
| %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(sqlite3) >= 3.7.17 | ||||
| BuildRequires: pkgconfig(libarchive) >= 3.1.2 | ||||
| # For debugindod metadata query | ||||
| BuildRequires: pkgconfig(json-c) >= 0.11 | ||||
| 
 | ||||
| # For tests need to bunzip2 test files. | ||||
| BuildRequires: bzip2 | ||||
| @ -75,7 +77,8 @@ BuildRequires: gettext-devel | ||||
| # For s390x... FDO package notes are bogus. | ||||
| Patch1: elfutils-0.186-fdo-swap.patch | ||||
| 
 | ||||
| Patch2: elfutils-0.190-riscv-flatten.patch | ||||
| # Include libeu.a objects in libelf.a for static linking. | ||||
| Patch2: elfutils-0.192-libelf-static.patch | ||||
| 
 | ||||
| %description | ||||
| Elfutils is a collection of utilities, including stack (to show | ||||
| @ -426,6 +429,9 @@ fi | ||||
| %{_libdir}/libelf.so | ||||
| %{_libdir}/pkgconfig/libelf.pc | ||||
| %{_mandir}/man3/elf_*.3* | ||||
| %{_mandir}/man3/elf32_*.3* | ||||
| %{_mandir}/man3/elf64_*.3* | ||||
| %{_mandir}/man3/libelf.3* | ||||
| 
 | ||||
| %if %{with static} | ||||
| %files libelf-devel-static | ||||
| @ -446,6 +452,7 @@ fi | ||||
| %config(noreplace) %{_sysconfdir}/profile.d/* | ||||
| %if "%{?dist_debuginfod_url}" | ||||
| %config(noreplace) %{_sysconfdir}/debuginfod/* | ||||
| %config(noreplace) %{_datadir}/fish/vendor_conf.d/* | ||||
| %endif | ||||
| 
 | ||||
| %files debuginfod-client-devel | ||||
| @ -485,6 +492,14 @@ exit 0 | ||||
| %systemd_postun_with_restart debuginfod.service | ||||
| 
 | ||||
| %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 | ||||
| 
 | ||||
| * Tue Jun 25 2024 Mark Wielaard <mjw@fedoraproject.org> - 0.191-5 | ||||
| - Add elfutils-0.190-riscv-flatten.patch | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										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