Hi de!

I confirm this issue on my box (but I don't know why this would be specific to macOS, or why you don't see the symbol duplicates elsewhere).

Between these two commits

     fossil diff --from d4bb0eb147b1671a --to d41caf001d9d4d2a

in tdomDecls.h you dropped  "extern" for

   -extern const TdomStubs *tdomStubsPtr;
   +const TdomStubs *tdomStubsPtr;

This leads to the classic duplicate definition in the compilation units including tdomDecls.h during linking (tdominit.c and tdomStubLib.c, for example).

The below fixes this for me (and aligns the definition in tdominit.c).

-------%<-------
Index: generic/tdomDecls.h
==================================================================
--- generic/tdomDecls.h
+++ generic/tdomDecls.h
@@ -85,11 +85,11 @@
     int (*xML_GetIdAttributeIndex) (XML_Parser parser); /* 15 */
     domNode * (*tcldom_getNodeFromName) (Tcl_Interp *interp, char *nodeName, char **errMsg); /* 16 */
     domDocument * (*tcldom_getDocumentFromName) (Tcl_Interp *interp, char *docName, char **errMsg); /* 17 */
 } TdomStubs;

-const TdomStubs *tdomStubsPtr;
+EXTERN const TdomStubs *tdomStubsPtr;

 #ifdef __cplusplus
 }
 #endif


Index: generic/tdominit.c
==================================================================
--- generic/tdominit.c
+++ generic/tdominit.c
@@ -39,11 +39,11 @@
 #include <dom.h>
 #include <tdom.h>
 #include <tcldom.h>
 #include <tclpull.h>

-extern TdomStubs tdomStubs;
+const TdomStubs *tdomStubsPtr;

 /*
  *----------------------------------------------------------------------------
  *
  * Tdom_Init --
@@ -93,11 +93,11 @@
     Tcl_CreateObjCommand(interp, "tdom::pullparser", tDOM_PullParserCmd, NULL, NULL );
 #endif

 #ifdef USE_TCL_STUBS
     Tcl_PkgProvideEx(interp, PACKAGE_NAME, PACKAGE_VERSION,
-                     (ClientData) &tdomStubs);
+                     (ClientData) tdomStubsPtr);
 #else
     Tcl_PkgProvide(interp, PACKAGE_NAME, PACKAGE_VERSION);
 #endif

     return TCL_OK;
-------%<-------

HTH, mr_calvin