GNOME Bugzilla – Bug 512166
doesn't build with glib-2.15.3
Last modified: 2018-06-29 22:00:12 UTC
/usr/include/glib-2.0/glib/gutils.h in 2.15.3 has: #if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__) # undef inline # define inline __inline__ #elif !defined (G_HAVE_INLINE) # undef inline # if defined (G_HAVE___INLINE__) # define inline __inline__ # elif defined (G_HAVE___INLINE) # define inline __inline # else /* !inline && !__inline__ && !__inline */ # define inline /* don't inline, then */ # endif #endif #ifdef G_IMPLEMENT_INLINES # define G_INLINE_FUNC # undef G_CAN_INLINE #elif defined (__GNUC__) # define G_INLINE_FUNC static __inline __attribute__ ((unused)) #elif defined (G_CAN_INLINE) # define G_INLINE_FUNC static inline #else /* can't inline */ # define G_INLINE_FUNC #endif /* !G_INLINE_FUNC */ gnucash-2.2.3/src/engine/SplitP.h has: G_INLINE_FUNC void mark_split (Split *s); This evaluates (when building with gcc 4.1.2 on x86_64) to: static __inline __attribute__ ((unused)) void mark_split (Split *s); which causes Transaction.c, when compiled, to not actually have a prototype for mark_split. This generates a PC-relative relocation against the undefined symbol, causing linking to fail. That being said.... why exactly is it declaring mark_split as inline in the header when it's being called from Transaction.c, which will have no idea what mark_split is to inline?
This has already been fixed by the commit r16885 which is marked for backport to branches/2.2 so that it should appear in GnuCash 2.2.4. Thanks a lot for this report!
Applied to branches/2.2 as r16899 for GnuCash 2.2.4.
GnuCash bug tracking has moved to a new Bugzilla host. This bug has been copied to https://bugs.gnucash.org/show_bug.cgi?id=512166. Please update any external references or bookmarks.