[Updated: 04/07/2006] Much accurate information is available in a better format at:
Reducing Symbol Scope with Sun Studio C/C++__________________
Default behavior
----------------
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%CC -c hidden.c
scope of symbols inside object "hidden.o":
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%elfdump -C -s hidden.o
Symbol Table:  .symtab
       index    value       size     type bind oth ver shndx       name
         [3]  0x00000080 0x0000002c  FUNC GLOB  D    0 .text       int agefunc()
         [4]  0x00000050 0x00000020  FUNC GLOB  D    0 .text       char firstchar(char*)
         [5]  0x00000010 0x0000002c  FUNC GLOB  D    0 .text       char*lastname(char*)
         [6]  0x00000000 0x00000004  OBJT GLOB  D    0 .data       age
All symbols are "
global" & "
defined" (GLOB & D)
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%ls -l
total 10
  -rw-r--r--   1 build    engr         281 Sep 14 16:03 driver.c
  -rw-r--r--   1 build    engr         223 Sep 14 16:00 hidden.c
  -rw-r--r--   1 build    engr          63 Sep 14 15:58 hidden.h
  -rw-r--r--   1 build    engr        1468 Sep 14 16:00 hidden.o
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%CC -G -o libhidden.so hidden.o
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%ls -l
total 22
  -rw-r--r--   1 build    engr         281 Sep 14 16:03 driver.c
  -rw-r--r--   1 build    engr         223 Sep 14 16:00 hidden.c
  -rw-r--r--   1 build    engr          63 Sep 14 15:58 hidden.h
  -rw-r--r--   1 build    engr        1468 Sep 14 16:00 hidden.o
  -rwxr-xr-x   1 build    engr        5256 Sep 14 16:05 libhidden.so
scope of symbols inside object "libhidden.so"
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%elfdump -C -s libhidden.so
Symbol Table:  .symtab
    index    value       size     type bind oth ver shndx       name
      [1]  0x00000000 0x00000000  FILE LOCL  D    0 ABS         libhidden.so
     [40]  0x00010828 0x00000004  OBJT GLOB  D    0 .data       age
     [46]  0x00000558 0x00000020  FUNC GLOB  D    0 .text       char firstchar(char*)
     [54]  0x00000518 0x0000002c  FUNC GLOB  D    0 .text       char*lastname(char*)
     [56]  0x00000588 0x0000002c  FUNC GLOB  D    0 .text       int agefunc()
Global & Defined
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%ls -l
total 22
  -rw-r--r--   1 build    engr         281 Sep 14 16:03 driver.c
  -rw-r--r--   1 build    engr         223 Sep 14 16:00 hidden.c
  -rw-r--r--   1 build    engr          63 Sep 14 15:58 hidden.h
  -rw-r--r--   1 build    engr        1468 Sep 14 16:00 hidden.o
  -rwxr-xr-x   1 build    engr        5256 Sep 14 16:05 libhidden.so
 
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%setenv LD_LIBRARY_PATH /sunbuild1/giri/testcases/symbol-hiding:$LD_LIBRARY_PATH
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%CC -lhidden -o driver driver.c
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%ls -l
total 148
  -rwxr-xr-x   1 build    engr       63680 Sep 14 16:11 driver
  -rw-r--r--   1 build    engr         297 Sep 14 16:11 driver.c
  -rw-r--r--   1 build    engr         223 Sep 14 16:00 hidden.c
  -rw-r--r--   1 build    engr          63 Sep 14 15:58 hidden.h
  -rw-r--r--   1 build    engr        1468 Sep 14 16:00 hidden.o
  -rwxr-xr-x   1 build    engr        5256 Sep 14 16:05 libhidden.so
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%./driver
lname = mandalika
age = 25
first char = c
It just *
Works*
scope of symbols inside executable program "driver":
bpte4500s001:/sunbuild1/giri/testcases/symbol-hiding/%elfdump -C -s driver
Symbol Table:  .symtab
    index    value       size     type bind oth ver shndx       name
     [90]  0x00028f6c 0x00000000  FUNC GLOB  D    0 UNDEF       char firstchar(char*)
    [122]  0x00028f60 0x00000000  FUNC GLOB  D    0 UNDEF       int agefunc()
    [197]  0x00028f48 0x00000000  FUNC GLOB  D    0 UNDEF       char*lastname(char*)
i.e., the default symbol scope on Solaris (UNIX® infact) is "Global" & "Defined"