Hello Mingli Yu!

Sorry for the delay: as a last thing yesterday i uploaded a new
version of my little s-postgray policy server, and forgot to make
it accessible for postfix (it was 0700 not 0755), so no mail
delivery was possible..

[email protected] wrote in
 <[email protected]>:
 |From: Mingli Yu <[email protected]>
 |
 |Fixes:
 ...
 || 6_64-wrs-linux/12.1.0/ld: mx-047.o: in function `a_nm_alias_expand':
 || /usr/src/debug/s-nail/14.9.24-r0/s-nail-14.9.24/src/mx/names.c:308: \
 || undefined reference to `su_cs_dict_lookup'
 ...
 || 36: undefined reference to `su_mem_get_can_book'
 |  collect2: error: ld returned 1 exit status

Hm.

 |Signed-off-by: Mingli Yu <[email protected]>
 |---
 | include/su/cs-dict.h | 2 +-
 | include/su/mem.h     | 2 +-
 | 2 files changed, 2 insertions(+), 2 deletions(-)
 ...
 | /*! Lookup a value, return it (possibly \NIL) or \NIL. */
 |-INLINE void *su_cs_dict_lookup(struct su_cs_dict *self, char const *key){
 |+static inline void *su_cs_dict_lookup(struct su_cs_dict *self, char \
 ...
 |-INLINE boole su_mem_get_can_book(uz size, uz no, uz notoadd){
 |+static inline boole su_mem_get_can_book(uz size, uz no, uz notoadd){

No Mingli Yu, this does not seem right.
I can compile 14.9.24 with gcc 12.1.0 here.
Which were your $CFLAGS, you came there with OPT_AUTOCC=no, did
you?  INLINE comes from include/su/code.h.  Why only these two,
there are many dozens "INLINE" functions?

I once have seen something similar, and that was under AlpineLinux
with -Os optimization flag, a bug in gcc 8.3.0, contradicting
documentation, (not all) inline functions became inlined.
I suspect we see this here again?

Unfortunately back in 2019 i found no way of detecting _which_
optimization level is in use.

So.  To work around this suspected gcc bug you could either pass
-std=c89 (in $CFLAGS, or in $EXTRA_CFLAGS if you use
OPT_AUTOCC=y), then we should end up like 

  #   define su_INLINE extern __inline __attribute__((gnu_inline))
  #   define su_SINLINE static __inline __attribute__((gnu_inline))

which should work out fine; or you apply the below.

Thank you for reporting this, if i am right i think i will
shortcut gcc now and never trust they get it right!

And sorry for the inconvience of having to spend time on such
a minor program.  And then the SMTP mess..  :)

Ciao!

diff --git a/include/su/code.h b/include/su/code.h
index ef44a0b573..ffabbd1463 100644
--- a/include/su/code.h
+++ b/include/su/code.h
@@ -445,8 +445,11 @@ do{\
 #  define su_INLINE inline /*!< \_ */
 #  define su_SINLINE inline /*!< \_ */
 # elif su_CC_GCC
+#  if 1
+#   define su_INLINE extern __inline __attribute__((gnu_inline))
+#   define su_SINLINE static __inline __attribute__((gnu_inline))
    /* After lots of trouble with OpenBSD/gcc 4.2.1 and SunOS/gcc 3.4.3 */
-#  if !su_CC_VCHECK_GCC(3, 2) /* Unsure: only used C++ at that time */
+#  elif !su_CC_VCHECK_GCC(3, 2) /* Unsure: only used C++ at that time */
 #   define su_INLINE extern __inline
 #   define su_SINLINE static __inline
 #  elif !su_CC_VCHECK_GCC(4, 3)

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)

Reply via email to