Fix build errors on gcc 10
gcc version 10 changed the default from -fcommon to -fno-common and as a result e2fsprogs unit tests fail because tst_libext2fs.c end up with a build error. Fix the problem by creating an extern declaration of said variables in debugfs.h and just setting them in tst_libext2fs.c without additional declaration. Signed-off-by: Lukas Czerner <lczerner@redhat.com>
This commit is contained in:
parent
baebfb1899
commit
bdcc549ca9
@ -0,0 +1,65 @@
|
|||||||
|
From 92c24f230ac7c02b5111849d94db14a24626bee4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lukas Czerner <lczerner@redhat.com>
|
||||||
|
Date: Thu, 30 Jan 2020 13:24:19 +0100
|
||||||
|
Subject: [PATCH] tst_libext2fs: Avoid multiple definition of global variables
|
||||||
|
|
||||||
|
gcc version 10 changed the default from -fcommon to -fno-common and as a
|
||||||
|
result e2fsprogs unit tests fail because tst_libext2fs.c end up with a
|
||||||
|
build error.
|
||||||
|
|
||||||
|
This is because it defines two global variables debug_prog_name and
|
||||||
|
extra_cmds that are already defined in debugfs/debugfs.c. With -fcommon
|
||||||
|
linker was able to resolve those into the same object, however with
|
||||||
|
-fno-common it's no longer able to do it and we end up with
|
||||||
|
multiple definition errors.
|
||||||
|
|
||||||
|
Fix the problem by creating an extern declaration of said variables in
|
||||||
|
debugfs.h and just setting them in tst_libext2fs.c without additional
|
||||||
|
declaration.
|
||||||
|
|
||||||
|
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
|
||||||
|
---
|
||||||
|
debugfs/debugfs.h | 2 ++
|
||||||
|
lib/ext2fs/tst_libext2fs.c | 5 +++--
|
||||||
|
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
|
||||||
|
index 477d9bbb..956517bc 100644
|
||||||
|
--- a/debugfs/debugfs.h
|
||||||
|
+++ b/debugfs/debugfs.h
|
||||||
|
@@ -123,6 +123,8 @@ extern void do_set_block_group_descriptor(int argc, char **, int sci_idx, void *
|
||||||
|
extern void do_dump_unused(int argc, char **argv, int sci_idx, void *infop);
|
||||||
|
|
||||||
|
/* debugfs.c */
|
||||||
|
+extern ss_request_table *extra_cmds;
|
||||||
|
+extern const char *debug_prog_name;
|
||||||
|
extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
|
||||||
|
struct ext2_inode *, int);
|
||||||
|
|
||||||
|
diff --git a/lib/ext2fs/tst_libext2fs.c b/lib/ext2fs/tst_libext2fs.c
|
||||||
|
index 3e7497cd..43f0d153 100644
|
||||||
|
--- a/lib/ext2fs/tst_libext2fs.c
|
||||||
|
+++ b/lib/ext2fs/tst_libext2fs.c
|
||||||
|
@@ -28,9 +28,7 @@
|
||||||
|
* Hook in new commands into debugfs
|
||||||
|
* Override debugfs's prompt
|
||||||
|
*/
|
||||||
|
-const char *debug_prog_name = "tst_libext2fs";
|
||||||
|
extern ss_request_table libext2fs_cmds;
|
||||||
|
-ss_request_table *extra_cmds = &libext2fs_cmds;
|
||||||
|
|
||||||
|
static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
|
||||||
|
blk64_t *blocknr, e2_blkcnt_t blockcnt,
|
||||||
|
@@ -51,6 +49,9 @@ void do_block_iterate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
|
||||||
|
int err = 0;
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
|
+ debug_prog_name = "tst_libext2fs";
|
||||||
|
+ extra_cmds = &libext2fs_cmds;
|
||||||
|
+
|
||||||
|
if (common_args_process(argc, argv, 2, 3, argv[0], usage, 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.21.1
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Summary: Utilities for managing ext2, ext3, and ext4 file systems
|
Summary: Utilities for managing ext2, ext3, and ext4 file systems
|
||||||
Name: e2fsprogs
|
Name: e2fsprogs
|
||||||
Version: 1.45.5
|
Version: 1.45.5
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
|
|
||||||
# License tags based on COPYING file distinctions for various components
|
# License tags based on COPYING file distinctions for various components
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
@ -27,6 +27,8 @@ BuildRequires: gettext
|
|||||||
BuildRequires: multilib-rpm-config
|
BuildRequires: multilib-rpm-config
|
||||||
BuildRequires: systemd
|
BuildRequires: systemd
|
||||||
|
|
||||||
|
Patch0: 0001-tst_libext2fs-Avoid-multiple-definition-of-global-va.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The e2fsprogs package contains a number of utilities for creating,
|
The e2fsprogs package contains a number of utilities for creating,
|
||||||
checking, modifying, and correcting any inconsistencies in second,
|
checking, modifying, and correcting any inconsistencies in second,
|
||||||
@ -154,6 +156,8 @@ managed device with some free space available in respective volume group.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
|
%patch0 -p1
|
||||||
|
|
||||||
%global _udevdir %{_prefix}/lib/udev/rules.d
|
%global _udevdir %{_prefix}/lib/udev/rules.d
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -320,6 +324,9 @@ make fullcheck
|
|||||||
%{_udevdir}/96-e2scrub.rules
|
%{_udevdir}/96-e2scrub.rules
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 30 2020 Lukas Czerner <lczerner@redhat.com> - 1.45.5-3
|
||||||
|
- Fix build errors with gcc 10
|
||||||
|
|
||||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.45.5-2
|
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.45.5-2
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user