diff options
author | Rod Evans <Rod.Evans@Sun.COM> | 2009-05-07 16:01:18 -0700 |
---|---|---|
committer | Rod Evans <Rod.Evans@Sun.COM> | 2009-05-07 16:01:18 -0700 |
commit | 2a8d6eba033e4713ab12b61178f0513f1f075482 (patch) | |
tree | 0fd82f40b89008aa56426a55126371550f5b2309 /usr/src/lib/libc/inc/lint.h | |
parent | c03aa62609f1d65e84421396e8ee70875fc77b30 (diff) | |
download | illumos-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.h | 31 |
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 |