diff -Nru glib2.0-2.40.0/debian/changelog glib2.0-2.40.0/debian/changelog --- glib2.0-2.40.0/debian/changelog 2014-08-10 17:59:24.000000000 -0400 +++ glib2.0-2.40.0/debian/changelog 2014-08-28 19:59:12.000000000 -0400 @@ -1,3 +1,11 @@ +glib2.0 (2.40.0-4.1) unstable; urgency=medium + + * Non-maintainer upload. + * Bug fix: "build gobject with -Wl,nodelete to prevent unloading", + thanks to Jason Pleau (Closes: #752544). + + -- Reinhard Tartler Thu, 28 Aug 2014 19:59:09 -0400 + glib2.0 (2.40.0-4) unstable; urgency=medium * Team upload diff -Nru glib2.0-2.40.0/debian/patches/link-nodelete.patch glib2.0-2.40.0/debian/patches/link-nodelete.patch --- glib2.0-2.40.0/debian/patches/link-nodelete.patch 1969-12-31 19:00:00.000000000 -0500 +++ glib2.0-2.40.0/debian/patches/link-nodelete.patch 2014-08-28 19:56:51.000000000 -0400 @@ -0,0 +1,64 @@ +From 3662eb9759fe225d1c214db6927c667a1b733e8a Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev +Date: Mon, 2 Sep 2013 13:59:18 -0400 +Subject: gobject: try to link with -Wl,-z,nodelete + +Since the type system does not support reloading its data and assumes +that libgobject remains loaded for the lifetime of the process, we +should link libgobject with a flag indicating that it can't be unloaded. + +https://bugzilla.gnome.org/show_bug.cgi?id=707298 + +--- a/configure.ac ++++ b/configure.ac +@@ -3468,6 +3468,40 @@ fi + AC_SUBST(GLIB_LINK_FLAGS) + + dnl ++dnl Check for -z,nodelete linker flag: the type system assumes that ++dnl libgobject stays loaded for the lifetime of the process. ++dnl Since ld.bfd does not treat wrong -z options as fatal by default, ++dnl we also try to check for the --fatal-warnings linker flag if ++dnl auto-detecting. ++dnl ++ ++AC_ARG_ENABLE([znodelete], ++ [AS_HELP_STRING([--disable-znodelete], ++ [avoid linking with -z,nodelete])],, ++ [SAVED_LDFLAGS="${LDFLAGS}" ++ AC_MSG_CHECKING([for --fatal-warnings linker flag]) ++ LDFLAGS=-Wl,--fatal-warnings ++ AC_TRY_LINK([], [int main (void) { return 0; }], ++ AC_MSG_RESULT(yes) ++ [ldflags_fatal=-Wl,--fatal-warnings], ++ AC_MSG_RESULT(no) ++ ldflags_fatal=) ++ AC_MSG_CHECKING([for -z,nodelete linker flag]) ++ LDFLAGS="$ldflags_fatal -Wl,-z,nodelete" ++ AC_TRY_LINK([], [int main (void) { return 0; }], ++ AC_MSG_RESULT(yes) ++ enable_znodelete=yes, ++ AC_MSG_RESULT(no) ++ enable_znodelete=no) ++ LDFLAGS="${SAVED_LDFLAGS}"]) ++ ++if test "x${enable_znodelete}" = "xyes"; then ++ GOBJECT_LINK_FLAGS=-Wl,-z,nodelete ++fi ++ ++AC_SUBST(GOBJECT_LINK_FLAGS) ++ ++dnl + dnl Check for -fvisibility=hidden to determine if we can do GNU-style + dnl visibility attributes for symbol export control + dnl +--- a/gobject/Makefile.am ++++ b/gobject/Makefile.am +@@ -45,6 +45,7 @@ endif + + libgobjectincludedir = $(includedir)/glib-2.0/gobject + libgobject_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ ++ $(GOBJECT_LINK_FLAGS) \ + $(gobject_win32_res_ldflag) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -export-dynamic $(no_undefined) diff -Nru glib2.0-2.40.0/debian/patches/series glib2.0-2.40.0/debian/patches/series --- glib2.0-2.40.0/debian/patches/series 2014-08-10 17:37:19.000000000 -0400 +++ glib2.0-2.40.0/debian/patches/series 2014-08-28 19:56:38.000000000 -0400 @@ -21,3 +21,4 @@ regex-test-do-not-assert-that-system-PCRE-allows-P-1.patch regex-test-do-not-assert-that-system-PCRE-still-has-.patch gvariant-tests-workaround-libc-compiler-issue.patch +link-nodelete.patch