diff options
Diffstat (limited to 'dev-libs/elfutils')
4 files changed, 221 insertions, 1 deletions
diff --git a/dev-libs/elfutils/Manifest b/dev-libs/elfutils/Manifest index e42ba2013df8..e9e7e2bdbf3f 100644 --- a/dev-libs/elfutils/Manifest +++ b/dev-libs/elfutils/Manifest @@ -1,7 +1,9 @@ AUX elfutils-0.175-disable-biarch-test-PR24158.patch 307 BLAKE2B 9cfcd2c9ef972b16fdf6bc203ed2cde70b0da80d982dc3493c993532492cdb8f597b66fd38ebedf7517403096c1704d77f7541972d875af2b952cad3586751bb SHA512 d3263c42b1638a416e95c2b8e68b15a9723e748490c8eca727da94bf7bb3dd8389222dd01bf69612ba45a20114ee1427d77935c41436d1ca9180fcfd71d3cdfe AUX elfutils-0.177-disable-large.patch 383 BLAKE2B ce5a90495ca0eac5a74d7e3f52b9f55e0611fe83782374d5201b984e85e7c27897d0d056f53af40ebb383e8cbe315a57adce2af378348ee1a573cfeb005e7a43 SHA512 2660ee456b62d6b1ed72ede92d8b00e9d1cd4b0a5778a80bfbdc3139e5527758591cdb05110b39a5c5811f60e2223cc8c83a488ac055a554f5b3c71fc5980acb AUX elfutils-0.180-PaX-support.patch 1058 BLAKE2B 9d7980eedf6250b848923eddb86d918ac983b348f77b3816ba77e1a663cc637ec02670e062b005aa010fa50f45fb953b1f2ef033bca6381773793231eb3cef06 SHA512 1bfb390ff4fb9ba2cbaf677bb4cd0d3ab3a27e465629be0dcc7b37f14dfe6c876069b598e29e9f3aa0c345b08c62895e68ce557237d18239c7505b8ea51c9ebd +AUX elfutils-0.185-configure.ac-rework-gnu99-ext-check-to-allow-clang.patch 4731 BLAKE2B b201b7e511e963f935f8ec308f0f8f0b1a006050c6f804076083ce6b95a7f638aba77b58e0654baefc35ef1093051c6d1a4f73c882bc54afcccf1441e9282481 SHA512 72e319c99c473965eabcc7ed2773594b03d7dc55f8d2cba205b93ced768956f607330656203b22e2cf101394e5d0e7eb3743f48e035d8a97e440628fb3723971 +AUX elfutils-0.185-pull-advance_pc-in-file-scope.patch 2620 BLAKE2B cfa868cd11ede0bb04e401da099e64f6d5134e7b31aa9f27c7ed89ea22eeaaaee1f55d2e58cd6e08f8ba761939fe33b28cb5cc5d962318a56e4b9ff6310bd34d SHA512 db7e2cb5ecd0f4236256f2001b8c9610ce4269dd01cee8d17276fa4e3394265f0bb1e85b1feab79299b899a08be581e3ac12f638bbc21ae14c44785cde3a8751 AUX elfutils-0.185-static-inline.patch 361 BLAKE2B c480f9a4024922252c9917c5e69eb8b4c92c897f7ebb4284445a489b5b28c630ac28e337bff977f67c164abed688aa0ed0dc76a715f6270e1001a7a80d46799f SHA512 8ac89c40aa108b097f18deb82ec3267d987aa16473fb40105aa7f83465cbea4ac1538bf4fc84c957e61250f9b8b6ea1f5694dcd5b404902ce8b73f53eed3308a DIST elfutils-0.185.tar.bz2 9187627 BLAKE2B 57cfa7e4060975c4bf6170dbd354687a19a92f7069c060db1ac2fa4da5a9d34e8bddd07c7ce376b5c28b5670ad5b8c1df795164cbcfb600a44cf1db60c20c4af SHA512 34de0de1355b11740e036e0fc64f2fc063587c8eb121b19216ee5548d3f0f268d8fc3995176c47190466b9d881007cfa11a9d01e9a50e38af6119492bf8bb47f -EBUILD elfutils-0.185.ebuild 2414 BLAKE2B a24fd2616818ffff4813543cb90320c8d127b36f5afac5c2ab8617d8e6f7fe6c988782b36797160263b132df431b59ea99d29afeafa709c9754e648a18b3e8ab SHA512 77b9b6a7fca2a31ad74854d67455751ffbf366124458a98cb10c8f9ef6ba0a12d130ac788ff5afd3a6a9f02b2e868eba611bc1640b03b5c8744fbfd9bd817249 +EBUILD elfutils-0.185.ebuild 2561 BLAKE2B f69ec9c003ff2f70b859d94353cfe472641c7828a18ba9adb41edc49b597d8640a79107df40695608a8e44cdf999a64a69debe3f68913677b269cfc3b477f0ba SHA512 590c629a87ee792a3871a806527643c65ae3f22f6a2a68b647061f0b54d98ed1fcbf342c8033ebb1ecd66981c10327236c9a6e3c861cfb25f32f0b16ba807563 MISC metadata.xml 729 BLAKE2B 7fb60c690ef99ef62b4cd4fbed802a48141b90e295f84fdad09cf18d061dd94a63086be119d733249b91fca67a1588bcea9ee442e3dd142921cb9c163d65a726 SHA512 2e5c223aad3d51f6ae770ae7feacd3731821c9de0b68f6ad2d89a4c7c8360ba6decbd6d73416648186f19d19b4aa6516302cba6554c9f4955024a19c082d0f85 diff --git a/dev-libs/elfutils/elfutils-0.185.ebuild b/dev-libs/elfutils/elfutils-0.185.ebuild index a4f1cc565367..fd5ccd261595 100644 --- a/dev-libs/elfutils/elfutils-0.185.ebuild +++ b/dev-libs/elfutils/elfutils-0.185.ebuild @@ -34,6 +34,8 @@ PATCHES=( "${FILESDIR}"/${PN}-0.177-disable-large.patch "${FILESDIR}"/${PN}-0.180-PaX-support.patch "${FILESDIR}"/${PN}-0.185-static-inline.patch + "${FILESDIR}"/${PN}-0.185-pull-advance_pc-in-file-scope.patch + "${FILESDIR}"/${PN}-0.185-configure.ac-rework-gnu99-ext-check-to-allow-clang.patch ) src_prepare() { diff --git a/dev-libs/elfutils/files/elfutils-0.185-configure.ac-rework-gnu99-ext-check-to-allow-clang.patch b/dev-libs/elfutils/files/elfutils-0.185-configure.ac-rework-gnu99-ext-check-to-allow-clang.patch new file mode 100644 index 000000000000..fe0b111ca859 --- /dev/null +++ b/dev-libs/elfutils/files/elfutils-0.185-configure.ac-rework-gnu99-ext-check-to-allow-clang.patch @@ -0,0 +1,146 @@ +From c9ff5c53c319f963cac34a41c86cd43edf902459 Mon Sep 17 00:00:00 2001 +From: Adrian Ratiu <adrian.ratiu@collabora.com> +Date: Mon, 30 Aug 2021 18:43:13 +0300 +Subject: [PATCH] configure.ac: rework gnu99 ext check to allow clang + +It is true that Clang does not support all gnu99 extensions [1], +but not all of them are used in the codebase and over time there +have been code cleanup efforts to improve Clang support. + +For example after commit 779c57ea ("readelf: Pull advance_pc() +in file scope") there are no more nested function declarations +and elfutils now builds fine with Clang. + +So in the interest of enabling Clang builds we remove the only +remaining blocker: the configure checks for nested functions and +variable length arrays which are also unused. + +Considering mixed decls and code is also part of c99 standard, +the entire check becomes redundant and we can just replace +AC_PROG_CC -> AC_PROG_CC_C99. + +Upstream-Status: Backport [master commit 6eb991a9] + +[1] https://sourceware.org/bugzilla/show_bug.cgi?id=24964 +[Adrian: backported to v0.185] +Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com> +--- + configure | 48 ------------------------------------------------ + configure.ac | 35 +---------------------------------- + 2 files changed, 1 insertion(+), 82 deletions(-) + +diff --git a/configure b/configure +index 4ea75ee..22bda6c 100755 +--- a/configure ++++ b/configure +@@ -5162,54 +5162,6 @@ else + fi + + +-# We use -std=gnu99 but have explicit checks for some language constructs +-# and GNU extensions since some compilers claim GNU99 support, but don't +-# really support all language extensions. In particular we need +-# Mixed Declarations and Code +-# https://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html +-# Nested Functions +-# https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html +-# Arrays of Variable Length +-# https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc with GNU99 support" >&5 +-$as_echo_n "checking for gcc with GNU99 support... " >&6; } +-if ${ac_cv_c99+:} false; then : +- $as_echo_n "(cached) " >&6 +-else +- old_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -std=gnu99" +-cat confdefs.h - <<_ACEOF >conftest.$ac_ext +-/* end confdefs.h. */ +-int foo (int a) +-{ +- for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; return s; +-} +- +-double bar (double a, double b) +-{ +- double square (double z) { return z * z; } +- return square (a) + square (b); +-} +- +-void baz (int n) +-{ +- struct S { int x[n]; }; +-} +-_ACEOF +-if ac_fn_c_try_compile "$LINENO"; then : +- ac_cv_c99=yes +-else +- ac_cv_c99=no +-fi +-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +-CFLAGS="$old_CFLAGS" +-fi +-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c99" >&5 +-$as_echo "$ac_cv_c99" >&6; } +-if test "x$ac_cv_c99" != xyes; then : +- as_fn_error $? "gcc with GNU99 support required" "$LINENO" 5 +-fi +- + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports __attribute__((visibility()))" >&5 + $as_echo_n "checking whether gcc supports __attribute__((visibility()))... " >&6; } + if ${ac_cv_visibility+:} false; then : +diff --git a/configure.ac b/configure.ac +index b348a71..6298547 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -87,7 +87,7 @@ AS_IF([test "$use_locks" = yes], + + AH_TEMPLATE([USE_LOCKS], [Defined if libraries should be thread-safe.]) + +-AC_PROG_CC ++AC_PROG_CC_C99 + AC_PROG_RANLIB + AC_PROG_YACC + AM_PROG_LEX +@@ -96,39 +96,6 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) + AC_CHECK_TOOL([READELF], [readelf]) + AC_CHECK_TOOL([NM], [nm]) + +-# We use -std=gnu99 but have explicit checks for some language constructs +-# and GNU extensions since some compilers claim GNU99 support, but don't +-# really support all language extensions. In particular we need +-# Mixed Declarations and Code +-# https://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html +-# Nested Functions +-# https://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html +-# Arrays of Variable Length +-# https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html +-AC_CACHE_CHECK([for gcc with GNU99 support], ac_cv_c99, [dnl +-old_CFLAGS="$CFLAGS" +-CFLAGS="$CFLAGS -std=gnu99" +-AC_COMPILE_IFELSE([AC_LANG_SOURCE([dnl +-int foo (int a) +-{ +- for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; return s; +-} +- +-double bar (double a, double b) +-{ +- double square (double z) { return z * z; } +- return square (a) + square (b); +-} +- +-void baz (int n) +-{ +- struct S { int x[[n]]; }; +-}])], +- ac_cv_c99=yes, ac_cv_c99=no) +-CFLAGS="$old_CFLAGS"]) +-AS_IF([test "x$ac_cv_c99" != xyes], +- AC_MSG_ERROR([gcc with GNU99 support required])) +- + AC_CACHE_CHECK([whether gcc supports __attribute__((visibility()))], + ac_cv_visibility, [dnl + save_CFLAGS="$CFLAGS" +-- +2.33.0 + diff --git a/dev-libs/elfutils/files/elfutils-0.185-pull-advance_pc-in-file-scope.patch b/dev-libs/elfutils/files/elfutils-0.185-pull-advance_pc-in-file-scope.patch new file mode 100644 index 000000000000..e0678c9ba73e --- /dev/null +++ b/dev-libs/elfutils/files/elfutils-0.185-pull-advance_pc-in-file-scope.patch @@ -0,0 +1,70 @@ +From 779c57ea864d104bad88455535df9b26336349fd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbaeder@redhat.com> +Date: Thu, 18 Mar 2021 10:25:24 +0100 +Subject: [PATCH] readelf: Pull advance_pc() in file scope +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Make advance_pc() a static function so we can get rid of another nested +function. Rename it to run_advance_pc() and use a local advance_pc() +macro to pass all the local variables. This is similar to what the +equivalent code in libdw/dwarf_getsrclines.c is doing. + +Upstream-Status: Backport [master commit 779c57ea] + +Signed-off-by: Timm Bäder <tbaeder@redhat.com> +[Adrian: backported to v0.185] +Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com> +--- + src/ChangeLog | 7 +++++++ + src/readelf.c | 26 +++++++++++++++++++------- + 2 files changed, 26 insertions(+), 7 deletions(-) + +diff --git a/src/readelf.c b/src/readelf.c +index 161d7e65..8191bde2 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -8373,6 +8373,23 @@ print_form_data (Dwarf *dbg, int form, const unsigned char *readp, + return readp; + } + ++/* Only used via run_advance_pc() macro */ ++static inline void ++run_advance_pc (unsigned int op_advance, ++ unsigned int minimum_instr_len, ++ unsigned int max_ops_per_instr, ++ unsigned int *op_addr_advance, ++ Dwarf_Word *address, ++ unsigned int *op_index) ++{ ++ const unsigned int advanced_op_index = (*op_index) + op_advance; ++ ++ *op_addr_advance = minimum_instr_len * (advanced_op_index ++ / max_ops_per_instr); ++ *address = *address + *op_addr_advance; ++ *op_index = advanced_op_index % max_ops_per_instr; ++} ++ + static void + print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) +@@ -8763,13 +8780,8 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + /* Apply the "operation advance" from a special opcode + or DW_LNS_advance_pc (as per DWARF4 6.2.5.1). */ + unsigned int op_addr_advance; +- inline void advance_pc (unsigned int op_advance) +- { +- op_addr_advance = minimum_instr_len * ((op_index + op_advance) +- / max_ops_per_instr); +- address += op_addr_advance; +- op_index = (op_index + op_advance) % max_ops_per_instr; +- } ++#define advance_pc(op_advance) run_advance_pc(op_advance, minimum_instr_len, \ ++ max_ops_per_instr, &op_addr_advance, &address, &op_index) + + if (max_ops_per_instr == 0) + { +-- +2.32.0 + |