* [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 @ 2018-07-25 12:37 Marcin Niestroj 2018-07-25 12:37 ` [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc Marcin Niestroj 2018-07-25 14:46 ` [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Baruch Siach 0 siblings, 2 replies; 10+ messages in thread From: Marcin Niestroj @ 2018-07-25 12:37 UTC (permalink / raw) To: buildroot lvm2 starting from version 2.02.178 depends on libaio library. Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> --- package/lvm2/Config.in | 3 +++ package/lvm2/lvm2.hash | 4 ++-- package/lvm2/lvm2.mk | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package/lvm2/Config.in b/package/lvm2/Config.in index 0dd6d53b4a..5f706982cd 100644 --- a/package/lvm2/Config.in +++ b/package/lvm2/Config.in @@ -1,8 +1,10 @@ config BR2_PACKAGE_LVM2 bool "lvm2 & device mapper" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_MMU # needs fork() depends on !BR2_STATIC_LIBS # It fails to build statically + select BR2_PACKAGE_LIBAIO help This is LVM2, the rewrite of The Linux Logical Volume Manager. LVM supports enterprise level volume management of disk and @@ -50,4 +52,5 @@ endif comment "lvm2 needs a toolchain w/ threads, dynamic library" depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/package/lvm2/lvm2.hash b/package/lvm2/lvm2.hash index b0dfcfcef3..697a413995 100644 --- a/package/lvm2/lvm2.hash +++ b/package/lvm2/lvm2.hash @@ -1,5 +1,5 @@ -# From ftp://sources.redhat.com/pub/lvm2/releases/sha512.sum -sha512 c2ea8beafe006abf9282f51ec98600fd0ebff816d53c10ecbb19bbf336ada4825135cf9c92ccd364afb18f8b1d7e163eff5bdec8dfdd70dfb9ba45db2f6bdd5e LVM2.2.02.173.tgz +# From ftp://sources.redhat.com/pub/lvm2/sha512.sum +sha512 6e0a10ab48be4f0c751447c6ab88b8f9fa1dcd1d703de77966e8507b173df70b1987fa0be252c31dfce9e0ee70e5f439db58c8f534e24144a70f254c091554ee LVM2.2.02.180.tgz # Locally computed sha256 checksums sha256 e76fbcd2fb97cf202da330301327754d2db5c58b5b4bebd3a8a749393e7603d1 COPYING sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING.LIB diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk index 20e0dd0d5c..fd823da846 100644 --- a/package/lvm2/lvm2.mk +++ b/package/lvm2/lvm2.mk @@ -4,9 +4,9 @@ # ################################################################################ -LVM2_VERSION = 2.02.173 +LVM2_VERSION = 2.02.180 LVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz -LVM2_SITE = ftp://sources.redhat.com/pub/lvm2/releases +LVM2_SITE = ftp://sources.redhat.com/pub/lvm2 LVM2_INSTALL_STAGING = YES LVM2_LICENSE = GPL-2.0, LGPL-2.1 LVM2_LICENSE_FILES = COPYING COPYING.LIB @@ -21,7 +21,7 @@ LVM2_CONF_OPTS += \ --enable-dmeventd \ --disable-nls -LVM2_DEPENDENCIES += host-pkgconf +LVM2_DEPENDENCIES += host-pkgconf libaio # LVM2 uses autoconf, but not automake, and the build system does not # take into account the toolchain passed at configure time. -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-25 12:37 [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Marcin Niestroj @ 2018-07-25 12:37 ` Marcin Niestroj 2018-07-25 16:09 ` Thomas Petazzoni 2018-07-25 14:46 ` [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Baruch Siach 1 sibling, 1 reply; 10+ messages in thread From: Marcin Niestroj @ 2018-07-25 12:37 UTC (permalink / raw) To: buildroot When using uclibc libdevmapper.so was calling dm_task_get_info_base() function recursively, leading to segmentation fault. This was happening because uclibc linker loader just takes first existing 'dm_task_get_info' (which is 'dm_task_get_info_base') symbol in elf binary, instead of default version. Add upstreamable lvm2 patch [1], which introduces --enable-symvers[=STYLE] switch. Use that switch to disable symbol versions, as we do not plan to support binaries compiled against old libdevmapper library. [1] https://www.redhat.com/archives/dm-devel/2018-July/msg00187.html Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> --- ...gure-Introduce-enable-symvers-option.patch | 288 ++++++++++++++++++ package/lvm2/lvm2.mk | 3 +- 2 files changed, 290 insertions(+), 1 deletion(-) create mode 100644 package/lvm2/0001-configure-Introduce-enable-symvers-option.patch diff --git a/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch b/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch new file mode 100644 index 0000000000..757305a86d --- /dev/null +++ b/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch @@ -0,0 +1,288 @@ +From f4fb05978de506c6941c80493c4f3b77f0509913 Mon Sep 17 00:00:00 2001 +From: Marcin Niestroj <m.niestroj@grinn-global.com> +Date: Fri, 20 Jul 2018 14:26:44 +0200 +Subject: [PATCH] configure: Introduce --enable-symvers option + +Only few libc (e.g. glibc) libraries support full symbol version +resolution in runtime. There are lot of standard libraries that do not +support that, such as dietlibc, musl and uclibc. Hence there is no +reason to generate symbol versions when compiling against them. + +Additionally libdevmapper.so was broken when compiled against +uclibc. Runtime linker loader caused calling dm_task_get_info_base() +function recursively, leading to segmentation fault. + +Introduce --enable-symvers[=STYLE] option, which allows to choose +between gnu and disabled symbol versioning. By default gnu symbol +versioning is used to provide backward compatibility. +__GNUC__ check is replaced now with GNU_SYMVER, which is generated by +configure script. Additionally ld version script is included only in +case of gnu option, which slightly reduces output size. + +Providing --disable-symvers to configure script when building against +uclibc library fixes segmentation fault error described above, due to +lack of several versions of the same symbol in libdevmapper.so +library. +--- + WHATS_NEW | 1 + + configure | 32 ++++++++++++++++++++++++++++++-- + configure.ac | 28 +++++++++++++++++++++++++--- + include/configure.h.in | 3 +++ + lib/misc/lib.h | 10 +++++----- + libdm/datastruct/bitset.c | 5 +---- + libdm/ioctl/libdm-iface.c | 2 +- + libdm/libdm-deptree.c | 2 +- + libdm/libdm-stats.c | 2 +- + 9 files changed, 68 insertions(+), 17 deletions(-) + +diff --git a/WHATS_NEW b/WHATS_NEW +index bdd2fa635..2279c4275 100644 +--- a/WHATS_NEW ++++ b/WHATS_NEW +@@ -1,5 +1,6 @@ + Version 2.02.181 - + ================================= ++ Introduce --enable-symvers[=STYLE] switch. + + Version 2.02.180 - 19th July 2018 + ================================= +diff --git a/configure b/configure +index 7d945dfa8..94cd6b1ea 100755 +--- a/configure ++++ b/configure +@@ -975,6 +975,7 @@ enable_fsadm + enable_blkdeactivate + enable_dmeventd + enable_selinux ++enable_symvers + enable_nls + with_localedir + with_confdir +@@ -1725,6 +1726,9 @@ Optional Features: + --disable-blkdeactivate disable blkdeactivate + --enable-dmeventd enable the device-mapper event daemon + --disable-selinux disable selinux support ++ --enable-symvers[=STYLE] ++ enables symbol versioning of the shared library ++ [default=gnu] + --enable-nls enable Native Language Support + + Optional Packages: +@@ -3156,7 +3160,6 @@ if test -z "$CFLAGS"; then : + fi + case "$host_os" in + linux*) +- CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym" + # equivalent to -rdynamic + ELDFLAGS="-Wl,--export-dynamic" + # FIXME Generate list and use --dynamic-list=.dlopen.sym +@@ -3178,7 +3181,6 @@ case "$host_os" in + ;; + darwin*) + CFLAGS="$CFLAGS -no-cpp-precomp -fno-common" +- CLDFLAGS="$CLDFLAGS" + ELDFLAGS= + CLDWHOLEARCHIVE="-all_load" + CLDNOWHOLEARCHIVE= +@@ -14401,6 +14403,32 @@ done + LIBS=$lvm_saved_libs + fi + ++################################################################################ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable symbol versioning" >&5 ++$as_echo_n "checking whether to enable symbol versioning... " >&6; } ++# Check whether --enable-symvers was given. ++if test "${enable_symvers+set}" = set; then : ++ enableval=$enable_symvers; ++ case "$enableval" in ++ gnu|no) ;; ++ *) as_fn_error $? "Unknown argument to enable/disable symvers" "$LINENO" 5 ;; ++ esac ++else ++ enable_symvers=gnu ++fi ++ ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_symvers" >&5 ++$as_echo "$enable_symvers" >&6; } ++ ++if test x$GCC = xyes && test x$enable_symvers = xgnu ; then ++ ++$as_echo "#define GNU_SYMVER 1" >>confdefs.h ++ ++ case "$host_os" in ++ linux*) CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym" ;; ++ esac ++fi ++ + ################################################################################ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable internationalisation" >&5 + $as_echo_n "checking whether to enable internationalisation... " >&6; } +diff --git a/configure.ac b/configure.ac +index e427708cd..2e8712f92 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -30,13 +30,11 @@ AC_CANONICAL_TARGET([]) + AS_IF([test -z "$CFLAGS"], [COPTIMISE_FLAG="-O2"]) + case "$host_os" in + linux*) +- CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym" + # equivalent to -rdynamic + ELDFLAGS="-Wl,--export-dynamic" + # FIXME Generate list and use --dynamic-list=.dlopen.sym + CLDWHOLEARCHIVE="-Wl,-whole-archive" + CLDNOWHOLEARCHIVE="-Wl,-no-whole-archive" +- LDDEPS="$LDDEPS .export.sym" + LIB_SUFFIX=so + DEVMAPPER=yes + BUILD_LVMETAD=no +@@ -52,7 +50,6 @@ case "$host_os" in + ;; + darwin*) + CFLAGS="$CFLAGS -no-cpp-precomp -fno-common" +- CLDFLAGS="$CLDFLAGS" + ELDFLAGS= + CLDWHOLEARCHIVE="-all_load" + CLDNOWHOLEARCHIVE= +@@ -1656,6 +1653,31 @@ package as well (which may be called readline-devel or something similar).]) + LIBS=$lvm_saved_libs + fi + ++################################################################################ ++dnl -- Symbol versioning ++AC_MSG_CHECKING(whether to enable symbol versioning) ++AC_ARG_ENABLE(symvers, ++ AC_HELP_STRING([--enable-symvers[[[=STYLE]]]], ++ [enables symbol versioning of the shared library [default=gnu]]), ++ [ ++ case "$enableval" in ++ gnu|no) ;; ++ *) AC_MSG_ERROR(Unknown argument to enable/disable symvers) ;; ++ esac], ++ enable_symvers=gnu) ++AC_MSG_RESULT($enable_symvers) ++ ++if test x$GCC = xyes && test x$enable_symvers = xgnu ; then ++ AC_DEFINE(GNU_SYMVER, 1, ++ [Define to use GNU versioning in the shared library.]) ++ case "$host_os" in ++ linux*) ++ CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym" ++ LDDEPS="$LDDEPS .export.sym" ++ ;; ++ esac ++fi ++ + ################################################################################ + dnl -- Internationalisation stuff + AC_MSG_CHECKING(whether to enable internationalisation) +diff --git a/include/configure.h.in b/include/configure.h.in +index 15fd150ed..7a07a10ef 100644 +--- a/include/configure.h.in ++++ b/include/configure.h.in +@@ -147,6 +147,9 @@ + /* Path to fsadm binary. */ + #undef FSADM_PATH + ++/* Define to use GNU versioning in the shared library. */ ++#undef GNU_SYMVER ++ + /* Define to 1 if you have the `alarm' function. */ + #undef HAVE_ALARM + +diff --git a/lib/misc/lib.h b/lib/misc/lib.h +index d7fa5c721..7cf98f932 100644 +--- a/lib/misc/lib.h ++++ b/lib/misc/lib.h +@@ -41,16 +41,16 @@ + * macro DM_EXPORT_SYMBOL to export the function and bind it to the + * specified version string. + * +- * Since versioning is only available when compiling with GCC the entire +- * compatibility version should be enclosed in '#if defined(__GNUC__)', +- * for example: ++ * Since versioning is only available when compiling with GCC ++ * and GLIBC the entire compatibility version should be enclosed ++ * in '#if defined(GNU_SYMVER)', for example: + * + * int dm_foo(int bar) + * { + * return bar; + * } + * +- * #if defined(__GNUC__) ++ * #if defined(GNU_SYMVER) + * // Backward compatible dm_foo() version 1.02.104 + * int dm_foo_v1_02_104(void); + * int dm_foo_v1_02_104(void) +@@ -67,7 +67,7 @@ + * versions of library symbols prior to the introduction of symbol + * versioning: it must never be used for new symbols. + */ +-#if defined(__GNUC__) ++#if defined(GNU_SYMVER) + #define DM_EXPORT_SYMBOL(func, ver) \ + __asm__(".symver " #func "_v" #ver ", " #func "@DM_" #ver ) + #define DM_EXPORT_SYMBOL_BASE(func) \ +diff --git a/libdm/datastruct/bitset.c b/libdm/datastruct/bitset.c +index b0826e1eb..2ec3f8f84 100644 +--- a/libdm/datastruct/bitset.c ++++ b/libdm/datastruct/bitset.c +@@ -242,7 +242,7 @@ bad: + return NULL; + } + +-#if defined(__GNUC__) ++#if defined(GNU_SYMVER) + /* + * Maintain backward compatibility with older versions that did not + * accept a 'min_num_bits' argument to dm_bitset_parse_list(). +@@ -253,7 +253,4 @@ dm_bitset_t dm_bitset_parse_list_v1_02_129(const char *str, struct dm_pool *mem) + return dm_bitset_parse_list(str, mem, 0); + } + DM_EXPORT_SYMBOL(dm_bitset_parse_list, 1_02_129); +- +-#else /* if defined(__GNUC__) */ +- + #endif +diff --git a/libdm/ioctl/libdm-iface.c b/libdm/ioctl/libdm-iface.c +index 769b69c1b..28e2eadee 100644 +--- a/libdm/ioctl/libdm-iface.c ++++ b/libdm/ioctl/libdm-iface.c +@@ -2145,7 +2145,7 @@ void dm_lib_exit(void) + _version_checked = 0; + } + +-#if defined(__GNUC__) ++#if defined(GNU_SYMVER) + /* + * Maintain binary backward compatibility. + * Version script mechanism works with 'gcc' compatible compilers only. +diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c +index ab0545659..00651c0b2 100644 +--- a/libdm/libdm-deptree.c ++++ b/libdm/libdm-deptree.c +@@ -3797,7 +3797,7 @@ void dm_tree_node_set_callback(struct dm_tree_node *dnode, + dnode->callback_data = data; + } + +-#if defined(__GNUC__) ++#if defined(GNU_SYMVER) + /* + * Backward compatible implementations. + * +diff --git a/libdm/libdm-stats.c b/libdm/libdm-stats.c +index 94ad380e0..76efbbe35 100644 +--- a/libdm/libdm-stats.c ++++ b/libdm/libdm-stats.c +@@ -5065,7 +5065,7 @@ int dm_stats_start_filemapd(int fd, uint64_t group_id, const char *path, + * current dm_stats_create_region() version. + */ + +-#if defined(__GNUC__) ++#if defined(GNU_SYMVER) + int dm_stats_create_region_v1_02_106(struct dm_stats *dms, uint64_t *region_id, + uint64_t start, uint64_t len, int64_t step, + int precise, const char *program_id, +-- +2.18.0 + diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk index fd823da846..2352f17af0 100644 --- a/package/lvm2/lvm2.mk +++ b/package/lvm2/lvm2.mk @@ -19,7 +19,8 @@ LVM2_CONF_OPTS += \ --enable-pkgconfig \ --enable-cmdlib \ --enable-dmeventd \ - --disable-nls + --disable-nls \ + --disable-symvers LVM2_DEPENDENCIES += host-pkgconf libaio -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-25 12:37 ` [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc Marcin Niestroj @ 2018-07-25 16:09 ` Thomas Petazzoni 2018-07-25 16:18 ` Marcin Niestroj 0 siblings, 1 reply; 10+ messages in thread From: Thomas Petazzoni @ 2018-07-25 16:09 UTC (permalink / raw) To: buildroot Hello Marcin, On Wed, 25 Jul 2018 14:37:03 +0200, Marcin Niestroj wrote: > When using uclibc libdevmapper.so was calling dm_task_get_info_base() > function recursively, leading to segmentation fault. This was > happening because uclibc linker loader just takes first existing > 'dm_task_get_info' (which is 'dm_task_get_info_base') symbol in elf > binary, instead of default version. > > Add upstreamable lvm2 patch [1], which introduces > --enable-symvers[=STYLE] switch. Use that switch to disable symbol > versions, as we do not plan to support binaries compiled against > old libdevmapper library. > > [1] https://www.redhat.com/archives/dm-devel/2018-July/msg00187.html > > Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> Is this needed only with the lvm2 bump to 2.02.180 ? Or is it needed even with the current version of lvm2 we have packaged in Buildroot ? > --- > ...gure-Introduce-enable-symvers-option.patch | 288 ++++++++++++++++++ > package/lvm2/lvm2.mk | 3 +- > 2 files changed, 290 insertions(+), 1 deletion(-) > create mode 100644 package/lvm2/0001-configure-Introduce-enable-symvers-option.patch > > diff --git a/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch b/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch > new file mode 100644 > index 0000000000..757305a86d > --- /dev/null > +++ b/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch > @@ -0,0 +1,288 @@ > +From f4fb05978de506c6941c80493c4f3b77f0509913 Mon Sep 17 00:00:00 2001 > +From: Marcin Niestroj <m.niestroj@grinn-global.com> > +Date: Fri, 20 Jul 2018 14:26:44 +0200 > +Subject: [PATCH] configure: Introduce --enable-symvers option > + > +Only few libc (e.g. glibc) libraries support full symbol version > +resolution in runtime. There are lot of standard libraries that do not > +support that, such as dietlibc, musl and uclibc. Hence there is no > +reason to generate symbol versions when compiling against them. > + > +Additionally libdevmapper.so was broken when compiled against > +uclibc. Runtime linker loader caused calling dm_task_get_info_base() > +function recursively, leading to segmentation fault. > + > +Introduce --enable-symvers[=STYLE] option, which allows to choose > +between gnu and disabled symbol versioning. By default gnu symbol > +versioning is used to provide backward compatibility. > +__GNUC__ check is replaced now with GNU_SYMVER, which is generated by > +configure script. Additionally ld version script is included only in > +case of gnu option, which slightly reduces output size. > + > +Providing --disable-symvers to configure script when building against > +uclibc library fixes segmentation fault error described above, due to > +lack of several versions of the same symbol in libdevmapper.so > +library. Could you add your SoB to the patch itself ? Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-25 16:09 ` Thomas Petazzoni @ 2018-07-25 16:18 ` Marcin Niestroj 2018-07-25 16:25 ` Thomas Petazzoni 0 siblings, 1 reply; 10+ messages in thread From: Marcin Niestroj @ 2018-07-25 16:18 UTC (permalink / raw) To: buildroot Hi Thomas, On 25.07.2018 18:09, Thomas Petazzoni wrote: > Hello Marcin, > > On Wed, 25 Jul 2018 14:37:03 +0200, Marcin Niestroj wrote: >> When using uclibc libdevmapper.so was calling dm_task_get_info_base() >> function recursively, leading to segmentation fault. This was >> happening because uclibc linker loader just takes first existing >> 'dm_task_get_info' (which is 'dm_task_get_info_base') symbol in elf >> binary, instead of default version. >> >> Add upstreamable lvm2 patch [1], which introduces >> --enable-symvers[=STYLE] switch. Use that switch to disable symbol >> versions, as we do not plan to support binaries compiled against >> old libdevmapper library. >> >> [1] https://www.redhat.com/archives/dm-devel/2018-July/msg00187.html >> >> Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> > > Is this needed only with the lvm2 bump to 2.02.180 ? Or is it needed > even with the current version of lvm2 we have packaged in Buildroot ? This is also needed for older version (currently packaged in Buildroot). > >> --- >> ...gure-Introduce-enable-symvers-option.patch | 288 ++++++++++++++++++ >> package/lvm2/lvm2.mk | 3 +- >> 2 files changed, 290 insertions(+), 1 deletion(-) >> create mode 100644 package/lvm2/0001-configure-Introduce-enable-symvers-option.patch >> >> diff --git a/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch b/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch >> new file mode 100644 >> index 0000000000..757305a86d >> --- /dev/null >> +++ b/package/lvm2/0001-configure-Introduce-enable-symvers-option.patch >> @@ -0,0 +1,288 @@ >> +From f4fb05978de506c6941c80493c4f3b77f0509913 Mon Sep 17 00:00:00 2001 >> +From: Marcin Niestroj <m.niestroj@grinn-global.com> >> +Date: Fri, 20 Jul 2018 14:26:44 +0200 >> +Subject: [PATCH] configure: Introduce --enable-symvers option >> + >> +Only few libc (e.g. glibc) libraries support full symbol version >> +resolution in runtime. There are lot of standard libraries that do not >> +support that, such as dietlibc, musl and uclibc. Hence there is no >> +reason to generate symbol versions when compiling against them. >> + >> +Additionally libdevmapper.so was broken when compiled against >> +uclibc. Runtime linker loader caused calling dm_task_get_info_base() >> +function recursively, leading to segmentation fault. >> + >> +Introduce --enable-symvers[=STYLE] option, which allows to choose >> +between gnu and disabled symbol versioning. By default gnu symbol >> +versioning is used to provide backward compatibility. >> +__GNUC__ check is replaced now with GNU_SYMVER, which is generated by >> +configure script. Additionally ld version script is included only in >> +case of gnu option, which slightly reduces output size. >> + >> +Providing --disable-symvers to configure script when building against >> +uclibc library fixes segmentation fault error described above, due to >> +lack of several versions of the same symbol in libdevmapper.so >> +library. > > Could you add your SoB to the patch itself ? > > Thanks! > > Thomas > Ok, I will add SoB to the patch as well. -- Marcin Niestroj ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-25 16:18 ` Marcin Niestroj @ 2018-07-25 16:25 ` Thomas Petazzoni 2018-07-25 16:37 ` Marcin Niestroj 0 siblings, 1 reply; 10+ messages in thread From: Thomas Petazzoni @ 2018-07-25 16:25 UTC (permalink / raw) To: buildroot Hello, On Wed, 25 Jul 2018 18:18:46 +0200, Marcin Niestroj wrote: > > Is this needed only with the lvm2 bump to 2.02.180 ? Or is it needed > > even with the current version of lvm2 we have packaged in Buildroot ? > > This is also needed for older version (currently packaged in Buildroot). Then it should be PATCH 1/2 in your series, to make it clear that it is needed today with the current version of lvm2 we have. Is this fixing the following bug perhaps: https://bugs.busybox.net/show_bug.cgi?id=10781 ? I would assume yes. Best regards, Thomas -- Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-25 16:25 ` Thomas Petazzoni @ 2018-07-25 16:37 ` Marcin Niestroj 2018-07-26 11:13 ` Marcin Niestroj 0 siblings, 1 reply; 10+ messages in thread From: Marcin Niestroj @ 2018-07-25 16:37 UTC (permalink / raw) To: buildroot Hi, On 25.07.2018 18:25, Thomas Petazzoni wrote: > Hello, > > On Wed, 25 Jul 2018 18:18:46 +0200, Marcin Niestroj wrote: > >>> Is this needed only with the lvm2 bump to 2.02.180 ? Or is it needed >>> even with the current version of lvm2 we have packaged in Buildroot ? >> >> This is also needed for older version (currently packaged in Buildroot). > > Then it should be PATCH 1/2 in your series, to make it clear that it is > needed today with the current version of lvm2 we have. Ok, I will check if this patch applies cleanly for older version as well, then make it PATCH 1/2. > > Is this fixing the following bug perhaps: > https://bugs.busybox.net/show_bug.cgi?id=10781 ? I would assume yes. I didn't see it earlier. But yes, it is fixing this bug. > > Best regards, > > Thomas > Regards, Marcin ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-25 16:37 ` Marcin Niestroj @ 2018-07-26 11:13 ` Marcin Niestroj 2018-07-26 12:23 ` Thomas Petazzoni 0 siblings, 1 reply; 10+ messages in thread From: Marcin Niestroj @ 2018-07-26 11:13 UTC (permalink / raw) To: buildroot Hi Thomas, On 25.07.2018 18:37, Marcin Niestroj wrote: > Hi, > > On 25.07.2018 18:25, Thomas Petazzoni wrote: >> Hello, >> >> On Wed, 25 Jul 2018 18:18:46 +0200, Marcin Niestroj wrote: >> >>>> Is this needed only with the lvm2 bump to 2.02.180 ? Or is it needed >>>> even with the current version of lvm2 we have packaged in Buildroot ? >>> >>> This is also needed for older version (currently packaged in Buildroot). >> >> Then it should be PATCH 1/2 in your series, to make it clear that it is >> needed today with the current version of lvm2 we have. > > Ok, I will check if this patch applies cleanly for older version > as well, then make it PATCH 1/2. > Patch does not apply cleanly on 2.02.173 (current Buildroot). However it is easy to adjust patch for that version. Do you still want to make it PATCH 1/2 and then adjust it in PATCH 2/2 "package/lvm2: bump to version 2.02.180" ? Regards, Marcin ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc 2018-07-26 11:13 ` Marcin Niestroj @ 2018-07-26 12:23 ` Thomas Petazzoni 0 siblings, 0 replies; 10+ messages in thread From: Thomas Petazzoni @ 2018-07-26 12:23 UTC (permalink / raw) To: buildroot Hello, On Thu, 26 Jul 2018 13:13:36 +0200, Marcin Niestroj wrote: > Patch does not apply cleanly on 2.02.173 (current Buildroot). However it > is easy to adjust patch for that version. Do you still want to make it > PATCH 1/2 and then adjust it in PATCH 2/2 "package/lvm2: bump to > version 2.02.180" ? Yes, because we want to be able to backport the fix to our LTS branch. So the fix should be PATCH 1/2 and the bump should be PATCH 2/2, even if doing the bump requires adjusting the patch. Thanks! Thomas -- Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 2018-07-25 12:37 [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Marcin Niestroj 2018-07-25 12:37 ` [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc Marcin Niestroj @ 2018-07-25 14:46 ` Baruch Siach 2018-07-25 16:16 ` Marcin Niestroj 1 sibling, 1 reply; 10+ messages in thread From: Baruch Siach @ 2018-07-25 14:46 UTC (permalink / raw) To: buildroot Hi Marcin, On Wed, Jul 25, 2018 at 02:37:02PM +0200, Marcin Niestroj wrote: > lvm2 starting from version 2.02.178 depends on libaio library. > > Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> > --- > package/lvm2/Config.in | 3 +++ > package/lvm2/lvm2.hash | 4 ++-- > package/lvm2/lvm2.mk | 6 +++--- > 3 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/package/lvm2/Config.in b/package/lvm2/Config.in > index 0dd6d53b4a..5f706982cd 100644 > --- a/package/lvm2/Config.in > +++ b/package/lvm2/Config.in > @@ -1,8 +1,10 @@ > config BR2_PACKAGE_LVM2 > bool "lvm2 & device mapper" > + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS This new dependency needs to be added to all lvm2 reverse dependencies, i.e., packages that select BR2_PACKAGE_LVM2, as well as their reverse dependencies. > depends on BR2_TOOLCHAIN_HAS_THREADS > depends on BR2_USE_MMU # needs fork() > depends on !BR2_STATIC_LIBS # It fails to build statically > + select BR2_PACKAGE_LIBAIO > help > This is LVM2, the rewrite of The Linux Logical Volume Manager. > LVM supports enterprise level volume management of disk and > @@ -50,4 +52,5 @@ endif > > comment "lvm2 needs a toolchain w/ threads, dynamic library" > depends on BR2_USE_MMU > + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS > depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS baruch -- http://baruch.siach.name/blog/ ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il - ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 2018-07-25 14:46 ` [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Baruch Siach @ 2018-07-25 16:16 ` Marcin Niestroj 0 siblings, 0 replies; 10+ messages in thread From: Marcin Niestroj @ 2018-07-25 16:16 UTC (permalink / raw) To: buildroot Hi Baruch, On 25.07.2018 16:46, Baruch Siach wrote: > Hi Marcin, > > On Wed, Jul 25, 2018 at 02:37:02PM +0200, Marcin Niestroj wrote: >> lvm2 starting from version 2.02.178 depends on libaio library. >> >> Signed-off-by: Marcin Niestroj <m.niestroj@grinn-global.com> >> --- >> package/lvm2/Config.in | 3 +++ >> package/lvm2/lvm2.hash | 4 ++-- >> package/lvm2/lvm2.mk | 6 +++--- >> 3 files changed, 8 insertions(+), 5 deletions(-) >> >> diff --git a/package/lvm2/Config.in b/package/lvm2/Config.in >> index 0dd6d53b4a..5f706982cd 100644 >> --- a/package/lvm2/Config.in >> +++ b/package/lvm2/Config.in >> @@ -1,8 +1,10 @@ >> config BR2_PACKAGE_LVM2 >> bool "lvm2 & device mapper" >> + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS > > This new dependency needs to be added to all lvm2 reverse dependencies, i.e., > packages that select BR2_PACKAGE_LVM2, as well as their reverse dependencies. Thanks for that! I will fix it in v2. -- Marcin Niestroj ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-07-26 12:23 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-07-25 12:37 [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Marcin Niestroj 2018-07-25 12:37 ` [Buildroot] [PATCH 2/2] package/lvm2: Fix runtime crash when using uclibc Marcin Niestroj 2018-07-25 16:09 ` Thomas Petazzoni 2018-07-25 16:18 ` Marcin Niestroj 2018-07-25 16:25 ` Thomas Petazzoni 2018-07-25 16:37 ` Marcin Niestroj 2018-07-26 11:13 ` Marcin Niestroj 2018-07-26 12:23 ` Thomas Petazzoni 2018-07-25 14:46 ` [Buildroot] [PATCH 1/2] package/lvm2: bump version to 2.02.180 Baruch Siach 2018-07-25 16:16 ` Marcin Niestroj
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox