aboutsummaryrefslogtreecommitdiffstats
path: root/patches/port-pragma-init.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/port-pragma-init.patch')
-rw-r--r--patches/port-pragma-init.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/patches/port-pragma-init.patch b/patches/port-pragma-init.patch
new file mode 100644
index 000000000..665aa9b62
--- /dev/null
+++ b/patches/port-pragma-init.patch
@@ -0,0 +1,52 @@
+Use constructor attribute on non-Solaris platforms.
+
+Index: zfs+chaos4/lib/libuutil/uu_misc.c
+===================================================================
+--- zfs+chaos4.orig/lib/libuutil/uu_misc.c
++++ zfs+chaos4/lib/libuutil/uu_misc.c
+@@ -251,7 +251,13 @@ uu_release_child(void)
+ uu_release();
+ }
+
++#ifdef __GNUC__
++static void
++uu_init(void) __attribute__((constructor));
++#else
+ #pragma init(uu_init)
++#endif
++
+ static void
+ uu_init(void)
+ {
+Index: zfs+chaos4/lib/libzfs/libzfs_mount.c
+===================================================================
+--- zfs+chaos4.orig/lib/libzfs/libzfs_mount.c
++++ zfs+chaos4/lib/libzfs/libzfs_mount.c
+@@ -128,7 +128,13 @@ zfs_share_proto_t share_all_proto[] = {
+ PROTO_END
+ };
+
++#ifdef __GNUC__
++static void
++zfs_iscsi_init(void) __attribute__((constructor));
++#else
+ #pragma init(zfs_iscsi_init)
++#endif
++
+ static void
+ zfs_iscsi_init(void)
+ {
+@@ -548,8 +554,12 @@ static void (*_sa_update_sharetab_ts)(sa
+ * values to be used later. This is triggered by the runtime loader.
+ * Make sure the correct ISA version is loaded.
+ */
+-
++#ifdef __GNUC__
++static void
++_zfs_init_libshare(void) __attribute__((constructor));
++#else
+ #pragma init(_zfs_init_libshare)
++#endif
+ static void
+ _zfs_init_libshare(void)
+ {