Skip to content

Commit 1f7a063

Browse files
committed
Link the main library with -Wl,-z,nodelete to prevent unloading
See: libvips/php-vips-ext#44
1 parent 57fff0f commit 1f7a063

File tree

4 files changed

+17
-0
lines changed

4 files changed

+17
-0
lines changed

configure.ac

+14
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,20 @@ else
457457
fi
458458
fi
459459

460+
SAVE_LDFLAGS="$LDFLAGS"
461+
LDFLAGS="$LDFLAGS -Wl,-z,nodelete"
462+
AC_MSG_CHECKING([whether linker understands -z nodelete])
463+
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
464+
[
465+
AC_MSG_RESULT([yes])
466+
LDFLAGS_Z_NODELETE="-Wl,-z,nodelete"
467+
],[
468+
AC_MSG_RESULT([no])
469+
LDFLAGS_Z_NODELETE=""
470+
])
471+
LDFLAGS="$SAVE_LDFLAGS"
472+
AC_SUBST(LDFLAGS_Z_NODELETE)
473+
460474
# check for gtk-doc
461475
GTK_DOC_CHECK([1.14],[--flavour no-tmpl])
462476

libvips/Makefile.am

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ libvips_la_LIBADD = \
5858
@VIPS_LIBS@
5959

6060
libvips_la_LDFLAGS = \
61+
$(LDFLAGS_Z_NODELETE) \
6162
-no-undefined \
6263
-version-info @LIBRARY_CURRENT@:@LIBRARY_REVISION@:@LIBRARY_AGE@
6364

libvips/meson.build

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ libvips_lib = library('vips',
2626
darwin_versions: darwin_versions,
2727
gnu_symbol_visibility: 'hidden',
2828
install: true,
29+
link_args: nodelete_link_args,
2930
)
3031

3132
libvips_dep = declare_dependency(

meson.build

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ libvips_deps = [
6767
thread_dep,
6868
m_dep,
6969
]
70+
nodelete_link_args = cc.get_supported_link_arguments('-Wl,-z,nodelete')
7071

7172
prefix_dir = get_option('prefix')
7273
lib_dir = prefix_dir / get_option('libdir')

0 commit comments

Comments
 (0)