svn commit: r364027 - in head/sys/cddl: compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs contrib/opensolaris/uts/common/fs/zfs/sys

Alex Richardson arichardson at FreeBSD.org
Fri Aug 7 16:04:27 UTC 2020


Author: arichardson
Date: Fri Aug  7 16:04:21 2020
New Revision: 364027
URL: https://svnweb.freebsd.org/changeset/base/364027

Log:
  Fix linker error in libuutil with recent LLVM
  
  Not marking the function as static can result in a linker error:
  undefined reference to __assfail [--no-allow-shlib-undefined]
  I noticed this error after updating our CHERI LLVM to the latest upstream
  LLVM HEAD revision.
  
  This change effectively reverts r329984 and marks dmu_buf_init_user as
  static (which keeps the GCC build happy).
  
  Reviewed By:	#zfs, asomers, freqlabs, mav
  Differential Revision: https://reviews.freebsd.org/D25663

Modified:
  head/sys/cddl/compat/opensolaris/sys/assfail.h
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h

Modified: head/sys/cddl/compat/opensolaris/sys/assfail.h
==============================================================================
--- head/sys/cddl/compat/opensolaris/sys/assfail.h	Fri Aug  7 16:04:15 2020	(r364026)
+++ head/sys/cddl/compat/opensolaris/sys/assfail.h	Fri Aug  7 16:04:21 2020	(r364027)
@@ -48,9 +48,7 @@ void assfail3(const char *, uintmax_t, const char *, u
 #ifndef HAVE_ASSFAIL
 extern int aok;
 
-__inline int __assfail(const char *expr, const char *file, int line);
-
-__inline int
+static __inline int
 __assfail(const char *expr, const char *file, int line)
 {
 

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c	Fri Aug  7 16:04:15 2020	(r364026)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c	Fri Aug  7 16:04:21 2020	(r364027)
@@ -175,13 +175,6 @@ static int __dbuf_hold_impl(struct dbuf_hold_impl_data
 static boolean_t dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx);
 static void dbuf_write(dbuf_dirty_record_t *dr, arc_buf_t *data, dmu_tx_t *tx);
 
-#ifndef __lint
-extern inline void dmu_buf_init_user(dmu_buf_user_t *dbu,
-    dmu_buf_evict_func_t *evict_func_sync,
-    dmu_buf_evict_func_t *evict_func_async,
-    dmu_buf_t **clear_on_evict_dbufp);
-#endif /* ! __lint */
-
 /*
  * Global data structures and functions for the dbuf cache.
  */

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h	Fri Aug  7 16:04:15 2020	(r364026)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h	Fri Aug  7 16:04:21 2020	(r364027)
@@ -610,7 +610,7 @@ typedef struct dmu_buf_user {
  *       To allow enforcement of this, dbu must already be zeroed on entry.
  */
 /*ARGSUSED*/
-inline void
+static inline void
 dmu_buf_init_user(dmu_buf_user_t *dbu, dmu_buf_evict_func_t *evict_func_sync,
     dmu_buf_evict_func_t *evict_func_async, dmu_buf_t **clear_on_evict_dbufp)
 {


More information about the svn-src-all mailing list