diff options
Diffstat (limited to 'patches/port-pragma-init.patch')
-rw-r--r-- | patches/port-pragma-init.patch | 52 |
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) + { |