summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-13 13:50:10 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2023-10-13 13:50:10 (GMT)
commitbfa39cdd57f5e52d610b1c1e7168718760e77b93 (patch)
tree9398e4182a5a8e10d192f228d34b1b61554a8c5b
parente6a868c242fb7ad99bf71d9d57597761e1fec9ab (diff)
downloadtcl-bfa39cdd57f5e52d610b1c1e7168718760e77b93.zip
tcl-bfa39cdd57f5e52d610b1c1e7168718760e77b93.tar.gz
tcl-bfa39cdd57f5e52d610b1c1e7168718760e77b93.tar.bz2
Fix warning on MacOSX: "/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libtcl8.6.a(tclAlloc.o) has no symbols". Backported from 8.7
-rw-r--r--generic/tclAlloc.c6
-rw-r--r--generic/tclInt.h21
-rw-r--r--generic/tclThreadJoin.c6
-rw-r--r--unix/tclUnixEvent.c4
-rw-r--r--unix/tclUnixNotfy.c2
5 files changed, 34 insertions, 5 deletions
diff --git a/generic/tclAlloc.c b/generic/tclAlloc.c
index 5eaa2eb..c9d5113 100644
--- a/generic/tclAlloc.c
+++ b/generic/tclAlloc.c
@@ -8,7 +8,7 @@
*
* Copyright (c) 1983 Regents of the University of California.
* Copyright (c) 1996-1997 Sun Microsystems, Inc.
- * Copyright (c) 1998-1999 by Scriptics Corporation.
+ * Copyright (c) 1998-1999 Scriptics Corporation.
*
* Portions contributed by Chris Kingsley, Jack Jansen and Ray Johnson.
*
@@ -275,7 +275,7 @@ TclpAlloc(
if (numBytes >= MAXMALLOC - OVERHEAD) {
if (numBytes <= UINT_MAX - OVERHEAD -sizeof(struct block)) {
bigBlockPtr = (struct block *) TclpSysAlloc(
- (sizeof(struct block) + OVERHEAD + numBytes), 0);
+ sizeof(struct block) + OVERHEAD + numBytes, 0);
}
if (bigBlockPtr == NULL) {
Tcl_MutexUnlock(allocMutexPtr);
@@ -748,6 +748,8 @@ TclpRealloc(
}
#endif /* !USE_TCLALLOC */
+#else
+TCL_MAC_EMPTY_FILE(generic_tclAlloc_c)
#endif /* !TCL_THREADS */
/*
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 103827f..6550ab3 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -4503,6 +4503,27 @@ typedef struct NRE_callback {
#endif
/*
+ * Special hack for macOS, where the static linker (technically the 'ar'
+ * command) hates empty object files, and accepts no flags to make it shut up.
+ *
+ * These symbols are otherwise completely useless.
+ *
+ * They can't be written to or written through. They can't be seen by any
+ * other code. They use a separate attribute (supported by all macOS
+ * compilers, which are derivatives of clang or gcc) to stop the compilation
+ * from moaning. They will be excluded during the final linking stage.
+ *
+ * Other platforms get nothing at all. That's good.
+ */
+
+#ifdef MAC_OSX_TCL
+#define TCL_MAC_EMPTY_FILE(name) \
+ static __attribute__((used)) const void *const TclUnusedFile_ ## name = NULL;
+#else
+#define TCL_MAC_EMPTY_FILE(name)
+#endif /* MAC_OSX_TCL */
+
+/*
* Other externals.
*/
diff --git a/generic/tclThreadJoin.c b/generic/tclThreadJoin.c
index d6d89a1..5c4d969 100644
--- a/generic/tclThreadJoin.c
+++ b/generic/tclThreadJoin.c
@@ -6,7 +6,7 @@
* provide the functionality of joining threads. This code is currently
* not necessary on Unix.
*
- * Copyright (c) 2000 by Scriptics Corporation
+ * Copyright (c) 2000 Scriptics Corporation
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -230,7 +230,7 @@ TclRememberJoinableThread(
{
JoinableThread *threadPtr;
- threadPtr = ckalloc(sizeof(JoinableThread));
+ threadPtr = (JoinableThread *)ckalloc(sizeof(JoinableThread));
threadPtr->id = id;
threadPtr->done = 0;
threadPtr->waitedUpon = 0;
@@ -305,6 +305,8 @@ TclSignalExitThread(
Tcl_MutexUnlock(&threadPtr->threadMutex);
}
+#else
+TCL_MAC_EMPTY_FILE(generic_tclThreadJoin_c)
#endif /* _WIN32 */
/*
diff --git a/unix/tclUnixEvent.c b/unix/tclUnixEvent.c
index 40aac6f..7161d18 100644
--- a/unix/tclUnixEvent.c
+++ b/unix/tclUnixEvent.c
@@ -3,7 +3,7 @@
*
* This file implements Unix specific event related routines.
*
- * Copyright (c) 1997 by Sun Microsystems, Inc.
+ * Copyright (c) 1997 Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -85,6 +85,8 @@ Tcl_Sleep(
}
}
+#else
+TCL_MAC_EMPTY_FILE(unix_tclUnixEvent_c)
#endif /* HAVE_COREFOUNDATION */
/*
* Local Variables:
diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c
index 4655327..0bee2f1 100644
--- a/unix/tclUnixNotfy.c
+++ b/unix/tclUnixNotfy.c
@@ -1483,6 +1483,8 @@ AtForkChild(void)
#endif /* TCL_THREADS */
+#else
+TCL_MAC_EMPTY_FILE(unix_tclUnixNotfy_c)
#endif /* !HAVE_COREFOUNDATION */
/*