Bug#285654: further information on G_BREAKPOINT problem

Anand Kumria Anand Kumria <wildfire@progsoc.uts.edu.au>, 285654-quiet@bugs.debian.org
Wed, 15 Dec 2004 04:07:25 +1100


Hi,

My package, gtk-gnutella, uses G_BREAKPOINT. This is defined as (in
/usr/include/glib-2.0/glib/gbacktrace.h):

/* Hacker macro to place breakpoints for selected machines.
 * Actual use is strongly discouraged of course ;)
 */
#if (defined (__i386__) || defined (__x86_64__)) && defined (__GNUC__) && __GNUC__ >= 2
#  define G_BREAKPOINT()        G_STMT_START{ __asm__ __volatile__ ("int  $03"); }G_STMT_END
#elif defined (_MSC_VER) && defined (_M_IX86)
#  define G_BREAKPOINT()        G_STMT_START{ __asm int 3h }G_STMT_END
#elif defined (__alpha__) && !defined(__osf__) && defined (__GNUC__) && __GNUC__ >= 2
#  define G_BREAKPOINT()        G_STMT_START{ __asm__ __volatile__ ("bpt"); }G_STMT_END
#else   /* !__i386__ && !__alpha__ */
#  define G_BREAKPOINT()        G_STMT_START{ raise (SIGTRAP);  }G_STMT_END
#endif  /* __i386__ */ 

Which means gtk-gnutella fails to build on a number of architectures.
For example, <URL: http://buildd.debian.org/fetch.php?&pkg=gtk-gnutella&ver=0.95-1&arch=powerpc&stamp=1102775797&file=log&as=raw> and search for SIGTRAP.


That last line should be:

#  define G_BREAKPOINT()        G_STMT_START{ #include <signal.h> raise (SIGTRAP);  }G_STMT_END

Thanks,
Anand

-- 
linux.conf.au 2005   -  http://lca2005.linux.org.au/  -  Birthplace of Tux
April 18th to 23rd   -  http://lca2005.linux.org.au/  -       LINUX
Canberra, Australia  -  http://lca2005.linux.org.au/  -    Get bitten!