mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-02 07:36:17 +01:00
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
This commit is contained in:
parent
7089cf8967
commit
2b178c762f
34
configure.ac
34
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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user