tests: Work around a gdb bug in assert-msg-test

It seems that when GLib is compiled without CFLAGS=-g, gdb can’t work
out the size of __glib_assert_msg, so assumes it’s 4 bytes — even on
64-bit systems. This causes it to not read the most significant 4 bytes
of the assertion message pointer, and hence it can’t print the stored
assertion message. This causes assert-msg-test to fail.

The upstream gdb bug is
https://sourceware.org/bugzilla/show_bug.cgi?id=22501.

Work around that by referencing and dereferencing __glib_assert_msg so
that gdb treats it as a pointer of sizeof(char*) rather than of the size
it incorrectly calculated from the library’s symbol table (or through
some other mystical process).

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=782057
This commit is contained in:
Philip Withnall 2017-11-27 11:29:15 +00:00
parent 23373d7f7e
commit 20648cdc29

View File

@ -1,4 +1,5 @@
run
set print elements 0
print (char*) __glib_assert_msg
# Work around https://sourceware.org/bugzilla/show_bug.cgi?id=22501
print *((char**) &__glib_assert_msg)
quit