Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Oct 2021 11:19:11 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 7075120b4d50 - main - irc/bitchx: fix non-static inline functions
Message-ID:  <202110021119.192BJBah070723@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by dim (src committer):

URL: https://cgit.FreeBSD.org/ports/commit/?id=7075120b4d50ebba264775ce8a5bcbcafd1d99a2

commit 7075120b4d50ebba264775ce8a5bcbcafd1d99a2
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2021-09-12 20:13:36 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2021-10-02 11:08:57 +0000

    irc/bitchx: fix non-static inline functions
    
    During an exp-run for llvm 13 (see bug 258209), it turned out that both
    chinese/bitchx and irc/bitchx fail to build with clang 13 [1]:
    
    ...
    cc -fstack-protector-strong  -L/usr/lib -o BitchX alias.o alist.o  array.o art.o banlist.o bot_link.o cdcc.o cdns.o  chelp.o commands.o commands2.o compat.o cset.o ctcp.o dcc.o debug.o encrypt.o exec.o files.o flood.o fset.o functions.o funny.o glob.o hash.o hebrew.o help.o history.o hook.o if.o ignore.o input.o irc.o ircaux.o ircsig.o keys.o lastlog.o list.o log.o mail.o misc.o modules.o names.o network.o newio.o notice.o notify.o numbers.o output.o parse.o queue.o readlog.o reg.o screen.o server.o stack.o status.o struct.o tcl_public.o term.o timer.o translat.o user.o userlist.o vars.o who.o whowas.o window.o words.o   -ldl -ltinfo -lssl -lcrypto -lm -lcrypt
    ld: error: undefined symbol: operator
    >>> referenced by alias.c
    >>>               alias.o:(zzlex)
    cc: error: linker command failed with exit code 1 (use -v to see invocation)
    
    This is because several functions in source/expr2.c are marked __inline,
    without either static or extern keyword. The compiler then has to assume
    the function is also externally available.
    
    Fix this by marking the affected functions static.
    
    PR:             258464
    Approved by:    fernape (maintainer)
    MFH:            2021Q4
---
 irc/bitchx/files/patch-source_expr2.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/irc/bitchx/files/patch-source_expr2.c b/irc/bitchx/files/patch-source_expr2.c
new file mode 100644
index 000000000000..08df39bb0083
--- /dev/null
+++ b/irc/bitchx/files/patch-source_expr2.c
@@ -0,0 +1,29 @@
+--- source/expr2.c.orig	2008-02-25 09:49:14 UTC
++++ source/expr2.c
+@@ -1192,7 +1192,7 @@ int	lexerr (expr_info *c, char *format, ...)
+  * case 'operand' is set to 1.  When an operand is lexed, then the next token
+  * is expected to be a binary operator, so 'operand' is set to 0. 
+  */
+-__inline int	check_implied_arg (expr_info *c)
++__inline static int	check_implied_arg (expr_info *c)
+ {
+ 	if (c->operand == 2)
+ 	{
+@@ -1205,7 +1205,7 @@ __inline int	check_implied_arg (expr_info *c)
+ 	return c->operand;
+ }
+ 
+-__inline TOKEN 	operator (expr_info *c, char *x, int y, TOKEN z)
++__inline static	TOKEN	operator (expr_info *c, char *x, int y, TOKEN z)
+ {
+ 	check_implied_arg(c);
+ 	if (c->operand)
+@@ -1216,7 +1216,7 @@ __inline TOKEN 	operator (expr_info *c, char *x, int y
+ 	return z;
+ }
+ 
+-__inline TOKEN 	unary (expr_info *c, char *x, int y, TOKEN z)
++__inline static TOKEN 	unary (expr_info *c, char *x, int y, TOKEN z)
+ {
+ 	if (!c->operand)
+ 		return lexerr(c, "An operator (%s) was found where "



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202110021119.192BJBah070723>