In Solaris 11.1, 
I updated the system headers to enable use of several attributes on
functions, including noreturn and printf format, to give
compilers and static analyzers more information about how they are used to
give better warnings when building code.
In Solaris 11.2, I've gone back in and added one more attribute to
a number of functions in the system headers: 
__attribute__((__deprecated__)).  This is used to warn people
building software that they’re using function calls we recommend
no longer be used.   While in many cases the 
Solaris Binary Compatibility Guarantee means we won't ever remove
these functions from the system libraries, we still want to discourage
their use.
I made passes through both the POSIX and C
standards, and some of the Solaris architecture review cases to come up with
an initial list which the Solaris architecture review committee accepted to
start with. This set is by no means a complete list of Obsolete function
interfaces, but should be a reasonable start at functions that are well
documented as deprecated and seem useful to warn developers away from.
More functions may be flagged in the future as they get deprecated, or if
further passes are made through our existing deprecated functions to flag
more of them.
    
    
      
	
	  Header
	  Interface
	  Deprecated by
	  Alternative
	  Documented in
	
      
      
	
	  <door.h>
	  door_cred(3C)
	  PSARC/2002/188
	  door_ucred(3C)
	  door_cred(3C)
	
	
	  <kvm.h>
	  kvm_read(3KVM), kvm_write(3KVM)
	  PSARC/1995/186
	  Functions on kvm_kread(3KVM) man page
	  kvm_read(3KVM)
	
	
	  <stdio.h>
	  gets(3C)
	  ISO C99 TC3 (Removed in ISO C11), POSIX:2008/XPG7/Unix08
	  fgets(3C)
	  gets(3C) man page, and just about every gets(3C) reference online from the past 25 years, since the Morris worm proved bad things happen when it’s used.
	
	
	  <unistd.h>
	  vfork(2)
	  PSARC/2004/760, POSIX:2001/XPG6/Unix03 (Removed in POSIX:2008/XPG7/Unix08)
	  posix_spawn(3C)
	  vfork(2) man page.
	
	
	  <utmp.h>
	  All functions from getutent(3C) man page
	  PSARC/1999/103
	  utmpx functions from getutentx(3C) man page
	  getutent(3C) man page
	
	
	  <varargs.h>
	  varargs.h version of va_list typedef
	  ANSI/ISO C89 standard
	  <stdarg.h>
	  varargs(3EXT)
	
	
	  <volmgt.h>
	  All functions
	  PSARC/2005/672
	  hal(5) API
	  volmgt_check(3VOLMGT), etc.
	
	
	  <sys/nvpair.h>
	  nvlist_add_boolean(3NVPAIR), nvlist_lookup_boolean(3NVPAIR)
	  PSARC/2003/587
	  nvlist_add_boolean_value, nvlist_lookup_boolean_value
	  nvlist_add_boolean(3NVPAIR) & (9F), nvlist_lookup_boolean(3NVPAIR) & (9F).
	
	
	  <sys/processor.h>
	  gethomelgroup(3C)
	  PSARC/2003/034
	  lgrp_home(3LGRP)
	  gethomelgroup(3C)
	
	
	  <sys/stat_impl.h>
	  _fxstat, _xstat, _lxstat, _xmknod
	  PSARC/2009/657
	  stat(2)
	  old functions are undocumented remains of SVR3/COFF compatibility support
	
      
    
If the above table is cut off when viewing in the blog, try viewing this standalone copy of the table.
    To See or Not To See
To see these warnings, you will need to be building with either gcc
(versions 3.4, 4.5, 4.7, & 4.8 are available in the 11.2 package repo),
or with Oracle Solaris Studio 12.4 or later (which like Solaris 11.2, is
currently in beta testing).
For instance, take this oversimplified (and obviously buggy) implementation of 
the cat command:
#include <stdio.h>
int main(int argc, char **argv) {
    char buf[80];
    while (gets(buf) != NULL)
	puts(buf);
    return 0;
}
Compiling it with the Studio 12.4 beta compiler will produce warnings such as:
% cc -V
cc: Sun C 5.13 SunOS_i386 Beta 2014/03/11
% cc gets_test.c
"gets_test.c", line 6: warning:  "gets" is deprecated, declared in : "/usr/include/iso/stdio_iso.h", line 221
    
The exact warning given varies by compilers, and the compilers also have a
variety of flags to either raise the warnings to errors, or silence them.
Of couse, the exact form of the output is Not An Interface that can
be relied on for automated parsing, just shown for example.
  
    
gets(3C) is actually a special case — as noted above, it is no 
longer part of the C Standard Library in the C11 standard, so when compiling in 
C11 mode (i.e. when __STDC_VERSION__ >= 201112L), the 
<stdio.h> header will not provide a prototype for it, causing
the compiler to complain it is unknown:
% gcc -std=c11 gets_test.c
gets_test.c: In function ‘main’:
gets_test.c:6:5: warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration]
     while (gets(buf) != NULL)
     ^
The gets(3C) function of course is still in libc, so if you ignore the
error or provide your own prototype, you can still build code that calls it,
you just have to acknowledge you’re taking on the risk of doing so yourself.
    
    
      Solaris Studio 12.4 Beta
      % cc gets_test.c
"gets_test.c", line 6: warning:  "gets" is deprecated, declared in : "/usr/include/iso/stdio_iso.h", line 221
% cc -errwarn=E_DEPRECATED_ATT gets_test.c
"gets_test.c", line 6:  "gets" is deprecated, declared in : "/usr/include/iso/stdio_iso.h", line 221
cc: acomp failed for gets_test.c
This warning is silenced in the 12.4 beta by cc -erroff=E_DEPRECATED_ATT
No warning is currently issued by Studio 12.3 & earler releases.
    
    
      gcc 3.4.3
    % /usr/sfw/bin/gcc gets_test.c
gets_test.c: In function `main':
gets_test.c:6: warning: `gets' is deprecated (declared at /usr/include/iso/stdio_iso.h:221)
    
Warning is completely silenced with gcc -Wno-deprecated-declarations
    
  
  
    gcc 4.7.3
    % /usr/gcc/4.7/bin/gcc gets_test.c
gets_test.c: In function ‘main’:
gets_test.c:6:5: warning: ‘gets’ is deprecated (declared at /usr/include/iso/stdio_iso.h:221) [-Wdeprecated-declarations]
% /usr/gcc/4.7/bin/gcc -Werror=deprecated-declarations gets_test.c
gets_test.c: In function ‘main’:
gets_test.c:6:5: error: ‘gets’ is deprecated (declared at /usr/include/iso/stdio_iso.h:221) [-Werror=deprecated-declarations]
cc1: some warnings being treated as errors
    
Warning is completely silenced with gcc -Wno-deprecated-declarations
    
  
  
    gcc 4.8.2
    % /usr/bin/gcc gets_test.c
gets_test.c: In function ‘main’:
gets_test.c:6:5: warning: ‘gets’ is deprecated (declared at /usr/include/iso/stdio_iso.h:221) [-Wdeprecated-declarations]
     while (gets(buf) != NULL)
     ^
% /usr/bin/gcc -Werror=deprecated-declarations gets_test.c
gets_test.c: In function ‘main’:
gets_test.c:6:5: error: ‘gets’ is deprecated (declared at /usr/include/iso/stdio_iso.h:221) [-Werror=deprecated-declarations]
     while (gets(buf) != NULL)
     ^
cc1: some warnings being treated as errors
    
Warning is completely silenced with gcc -Wno-deprecated-declarations