Re: [sharutils] Does not compile with -fno-common
Petr Pisar <[email protected]> Thu, 23 Jan 2020 16:19:04 +0100
| Newsgroups | gmane.comp.gnu.utils.bugs |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Jan 20, 2020 at 07:47:15PM +0100, Christian Voegl wrote: > Trying to build sharutils 4.15.2 with -fno-common fails with > > [ 30s] > /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: > shar-opts.o:(.data.rel.ro.local+0x0): multiple definition of > `program_name'; shar.o:(.rodata+0x10): first defined here > [ 30s] > /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: > ../lib/libgnu.a(md5.o): in function `md5_stream': > [ 30s] md5.c:(.text+0x15d): multiple definition of `md5_stream'; > shar.o:shar.c:(.text+0x28): first defined here > > > As -fno-common is going to be the default, I think this should be fixed. > Please try the two patches attached. The first one should fix the program_name symbol. The second the md5_stream symbol. I was able to reproduce the first one, but not the second one. (Depiste tha fact I do not link to openssl.) -- Petr
sharutils-4.15.2-Fix-building-with-GCC-10.patch
(text/plain, 2.7 KB)
From ec4ceb632abc0d54061269bc779459e13172f264 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]> Date: Thu, 23 Jan 2020 15:42:41 +0100 Subject: [PATCH 1/2] Fix building with GCC 10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC 10 defaults to -fno-common that results into errors on multiple global variable definitions: /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: shar-opts.o:(.data.rel.ro.local+0x0): multiple definition of `program_name'; shar.o:(.rodata+0x10): first defined here This patch fixes it by changing the definitions in header files into extern declarations. <https://lists.gnu.org/archive/html/bug-gnu-utils/2020-01/msg00001.html> Signed-off-by: Petr Písař <[email protected]> --- src/shar-opts.h | 2 +- src/shar-std.def | 2 +- src/unshar-opts.h | 2 +- src/uudecode-opts.h | 2 +- src/uuencode-opts.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/shar-opts.h b/src/shar-opts.h index 75dcae2..5055d1c 100644 --- a/src/shar-opts.h +++ b/src/shar-opts.h @@ -352,7 +352,7 @@ extern "C" { * global exported definitions */ #include "local.h" -char const * const program_name; +extern char const * const program_name; extern bool initialization_done; extern int optidx; diff --git a/src/shar-std.def b/src/shar-std.def index ed06b77..a28f61c 100644 --- a/src/shar-std.def +++ b/src/shar-std.def @@ -41,7 +41,7 @@ no-misuse-usage; usage-message; die-code; -export = '#include "local.h"'"\nchar const * const program_name;"; +export = '#include "local.h"'"\nextern char const * const program_name;"; #shell echo "include = 'char const * const program_name = \"${progname}\";';" diff --git a/src/unshar-opts.h b/src/unshar-opts.h index 2c3febe..9ebe2fc 100644 --- a/src/unshar-opts.h +++ b/src/unshar-opts.h @@ -192,7 +192,7 @@ extern "C" { extern size_t separator_str_len; #include "local.h" -char const * const program_name; +extern char const * const program_name; /* * * * * * diff --git a/src/uudecode-opts.h b/src/uudecode-opts.h index 29b3b5c..5494289 100644 --- a/src/uudecode-opts.h +++ b/src/uudecode-opts.h @@ -170,7 +170,7 @@ extern "C" { * global exported definitions */ #include "local.h" -char const * const program_name; +extern char const * const program_name; /* * * * * * diff --git a/src/uuencode-opts.h b/src/uuencode-opts.h index e71c9b8..d6ec03e 100644 --- a/src/uuencode-opts.h +++ b/src/uuencode-opts.h @@ -166,7 +166,7 @@ extern "C" { * global exported definitions */ #include "local.h" -char const * const program_name; +extern char const * const program_name; /* * * * * * -- 2.21.1
sharutils-4.15.2-Do-not-include-lib-md5.c-into-src-shar.c.patch
(text/plain, 1.2 KB)
From 4c47a36fb6e2e4349995376cee063bb37d4e68e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]> Date: Thu, 23 Jan 2020 15:57:05 +0100 Subject: [PATCH 2/2] Do not include lib/md5.c into src/shar.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lib/md5.o is part of libgnu.a that is linked to shar. There is no point in linking md5.o twice into shar executable. Moreover SuSE reports that this triggers a linking error with GCC 10: /usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: ../lib/libgnu.a(md5.o): in function `md5_stream': [ 30s] md5.c:(.text+0x15d): multiple definition of `md5_stream'; shar.o:shar.c:(.text+0x28): first defined here <https://lists.gnu.org/archive/html/bug-gnu-utils/2020-01/msg00001.html> Signed-off-by: Petr Písař <[email protected]> --- src/shar.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shar.c b/src/shar.c index 11cbada..6d7ed1d 100644 --- a/src/shar.c +++ b/src/shar.c @@ -53,7 +53,6 @@ static const char cright_years_z[] = #include "inttostr.h" #include "liballoca.h" -#include "md5.c" #include "md5.h" #include "quotearg.h" #include "xalloc.h" -- 2.21.1
signature.asc
(application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE----- iHUEABEIAB0WIQRLUoOT5qOw37LvOmQSycXHZ8b6ogUCXim5WwAKCRASycXHZ8b6 ojrtAP9nntlDBFcp9eLX3WraTqoqz/3TLbZIjw9oREK9SrrDzAD9GNZXhFXJWFY6 ZwkuwdTe5x/4GcVEG8BidzrSTBmK2EE= =0els -----END PGP SIGNATURE-----