After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 512166 - doesn't build with glib-2.15.3
doesn't build with glib-2.15.3
Status: VERIFIED FIXED
Product: GnuCash
Classification: Other
Component: Engine
2.2.x
Other Linux
: Normal normal
: ---
Assigned To: Derek Atkins
Derek Atkins
Depends on:
Blocks: backport
 
 
Reported: 2008-01-26 02:51 UTC by Bill Nottingham
Modified: 2018-06-29 22:00 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Bill Nottingham 2008-01-26 02:51:41 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?
Comment 1 Andreas Köhler 2008-01-28 11:44:42 UTC
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!
Comment 2 Andreas Köhler 2008-01-30 20:43:48 UTC
Applied to branches/2.2 as r16899 for GnuCash 2.2.4.
Comment 3 John Ralls 2018-06-29 22:00:12 UTC
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.