GNU bug report logs - #43195
[PATCH] Remove definitions of UP, BC and PC which should be provided by terminfo

Previous Next

Package: emacs;

Reported by: Fangrui Song <maskray <at> google.com>

Date: Fri, 4 Sep 2020 05:08:01 UTC

Severity: normal

Tags: patch

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Fangrui Song <maskray <at> google.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 43195 <at> debbugs.gnu.org
Subject: bug#43195: [PATCH] Remove definitions of UP, BC and PC which should be provided by terminfo
Date: Fri, 4 Sep 2020 08:38:03 -0700
On 2020-09-04, Eli Zaretskii wrote:
>> Cc: Fangrui Song <maskray <at> google.com>
>> Date: Thu,  3 Sep 2020 17:57:48 -0700
>> From: Fangrui Song via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> Otherwise if terminfo.c is compiled with -fno-common (GCC 10 and clang
>> 11 default) and the archive version of the terminfo library is linked,
>> there will be a multiple definition linker error.
>>
>> * src/terminfo.c (UP, BC, PC): Delete.
>
>Given the comment there, I think this should be conditioned on
>actually using terminfo.  Does the following patch work for you?
>
>diff --git a/src/terminfo.c b/src/terminfo.c
>index 51fd32e..0765996 100644
>--- a/src/terminfo.c
>+++ b/src/terminfo.c
>@@ -23,9 +23,12 @@
>
> /* Define these variables that serve as global parameters to termcap,
>    so that we do not need to conditionalize the places in Emacs
>-   that set them.  */
>+   that set them.  But don't do that for terminfo, as that could
>+   cause link errors when using -fno-common.  */
>
>+#if !TERMINFO
> char *UP, *BC, PC;
>+#endif
>
> /* Interface to curses/terminfo library.
>    Turns out that all of the terminfo-level routines look
>

Looks great! Thanks!

One nit, 

  #if !TERMINFO

probably should be 

  #ifndef TERMINFO


I don't know whether it is worth mentioning that -fcommon/-fno-common does not
cause a linker error when libtinfo.so is linked (a common/regular definition
preempts a shared definition).

-fno-common + libtinfo.a => multiple definition error




This bug report was last modified 4 years and 251 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.