summaryrefslogtreecommitdiff
path: root/usr/src/lib/libc/inc/lint.h
diff options
context:
space:
mode:
authorRod Evans <Rod.Evans@Sun.COM>2009-05-07 16:01:18 -0700
committerRod Evans <Rod.Evans@Sun.COM>2009-05-07 16:01:18 -0700
commit2a8d6eba033e4713ab12b61178f0513f1f075482 (patch)
tree0fd82f40b89008aa56426a55126371550f5b2309 /usr/src/lib/libc/inc/lint.h
parentc03aa62609f1d65e84421396e8ee70875fc77b30 (diff)
downloadillumos-joyent-2a8d6eba033e4713ab12b61178f0513f1f075482.tar.gz
6806791 filter builds could be optimized
6823371 calloc() uses suboptimal memset() causing 15% regression in SpecCPU2006 gcc code --HG-- rename : usr/src/lib/libkrb5/common/mapfile => usr/src/lib/libkrb5/common/mapfile-vers
Diffstat (limited to 'usr/src/lib/libc/inc/lint.h')
-rw-r--r--usr/src/lib/libc/inc/lint.h31
1 files changed, 28 insertions, 3 deletions
diff --git a/usr/src/lib/libc/inc/lint.h b/usr/src/lib/libc/inc/lint.h
index d031a250c5..99a1d1ab83 100644
--- a/usr/src/lib/libc/inc/lint.h
+++ b/usr/src/lib/libc/inc/lint.h
@@ -20,15 +20,13 @@
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _LIBC_LINT_H
#define _LIBC_LINT_H
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -53,6 +51,33 @@ extern "C" {
#define syscall _syscall6
#define __systemcall __systemcall6
+/*
+ * Shades of the old and deprecated "synonyms.h" file.
+ * Because of the awkward relationship between these functions:
+ * memcmp()
+ * memcpy()
+ * memmove()
+ * memset()
+ * and the sparc auxiliary filters:
+ * /platform/.../lib/libc_psr.so.1
+ * we must be careful always to call the leading-underscore
+ * symbol names when calling from within libc itself.
+ *
+ * If an interposer interposes on these mem*() symbol names,
+ * and we call one of them from within a critical region in libc,
+ * we will end up in the interposer code while executing within
+ * the critical region. Chaos can ensue.
+ *
+ * We try to avoid this by calling only the leading-underscore names.
+ * We hope that no interposer will interpose on the leading-underscore
+ * versions of these functions, else all hope is lost.
+ */
+
+#pragma redefine_extname memcmp _memcmp
+#pragma redefine_extname memcpy _memcpy
+#pragma redefine_extname memmove _memmove
+#pragma redefine_extname memset _memset
+
#endif
#ifdef __cplusplus