This file is indexed.

/usr/share/tcltk/critcl3.1.8/Config is in critcl 3.1.9-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
# -*- tcl -*- Critcl configuration file
#
#   $Id: Config,v 1.12 2006/08/25 09:05:28 steve Exp $

# some defaults - you can override these in the platform specific section
# but shouldn't need to for typical *nix toolchains using gcc
#
#   platform        sets the platform (defaults to platform::generic)
#   compile         compile a C source file to an object file
#   version         print the compiler version number
#   ldout           See below
#   link            Command to link one or more object files and create a shared library
#   embed_manifest  Command to embed a manifest into a DLL. (Win-specific)
#   link_debug      See below
#   link_preload    Linker flags to use when dependent libraries are pre-loaded.
#   link_release    See below
#   preproc_define  preprocess C source file (for critcl::cdefines)
#   preproc_enum    ditto
#   tclstubs        cflag to set USE_TCL_STUBS
#   tkstubs         cflag to set USE_TK_STUBS
#   debug_memory    cflag to enable memory debugging
#   debug_symbols   cflag to add symbols to resulting library
#   object          file extension for object files
#   output          flags to set output file
#   strip           cflag to tell linker to strip symbols
#   optimize        cflag to specify optimization level
#   include         cflag to add an include directory
#   noassert        cflag to turn off assertions in Tcl code
#   threadflags     cflags to enable threaded build
#   target          indicates that this is a cross-compile target
#   sharedlibext    the platform shared library extension
#
#   (Support for Fortran)
#   fcompile        compile a Fortran source file to an object file
#   fversion        print the Fortran compiler version number
#   flink           link one or more object files and create a shared library,
#                   if at least one object file comes from Fortran
#   foutput         Fortran flag(s) to set output file
#   finclude        Fortran flag to add an include directory
#   fextra_cflags   Extra C flags for indicating type of Fortran compiler
#
# Any other config options are assumed to refer to Tcl variables and
# these are set when building so they can be used in the Critcl script.
# Typically this is used when defining cross-compile environments to set
# various tcl_platform() values.
#
# You can also set Tcl variables to use in "when" options (see the MacOSX
# section for an example - "set universal ..."). These commands and the
# "when" commands are run in a separate interpreter.
#
# You can also base a build configuration on an existing one by using
# the "copy" option and then specifically setting the config bits that
# you want to change. See win32-x86_64-cl for an example.

compile         gcc -c -fPIC
version         gcc -v
link            gcc -shared
include         -I
libinclude      -L
preproc_define  gcc -E -dM
preproc_enum    gcc -E
tclstubs        -DUSE_TCL_STUBS
tkstubs         -DUSE_TK_STUBS
debug_memory    -DTCL_MEM_DEBUG
debug_symbols   -g
object          .o
output          -o [list $outfile]
embed_manifest  
ldoutput
link_debug
link_release
link_preload    --unresolved-symbols=ignore-in-shared-libs
strip           -Wl,-s
optimize        -O2
noassert        -DNDEBUG
threadflags     -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1    \
                -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_READDIR_R=1   \
                -DTCL_THREADS=1

# platform specific stuff follows

# OSX - check if universal binaries supported by the installed toolchain

if {[string match macosx-* $platform]} {
    if {[info exists ::env(SDKROOT)] && $::env(SDKROOT) ne ""} {
        set SDKROOT $::env(SDKROOT)
    } else {
        # look for an SDK supporting universal binaries
        set pos [string length MacOSX]
	set sdklist {}
	set base /Developer
	catch {set base [exec xcode-select -print-path]}
        foreach dir [glob -nocomplain -tails \
			    -directory $base/SDKs MacOSX*] {
            set ver [string trimright \
                        [file rootname [string range $dir $pos end]] u]
            if {[package vcompare $ver 10.4] >= 0}  {
                # 10.4 is earliest supporting universal that we support
                set path($ver) $dir
                lappend sdklist $ver
            }
        }
        if {[llength $sdklist]} {
            set ver [lindex [lsort -command "package vcompare" $sdklist] 0]
            set SDKROOT $base/SDKs/$path($ver)
        } else {
            set SDKROOT  ""
        }
    }
    if {$SDKROOT ne ""} {
        # get the SDKsettings for the min OSX value supported
	set info ""
        if [catch {
                set info [exec defaults read $SDKROOT/SDKSettings buildSettings]
        }] {
            catch {
                set info [exec defaults read $SDKROOT/SDKSettings DefaultProperties \
			      -dict MACOSX_DEPLOYMENT_TARGET]
            }
        }
	if {$info eq ""} {
	    puts stderr "SDKROOT isn't configured correctly on this host"
	    puts stderr "current setting $SDKROOT needs updating"
	    exit 1
	}
        set info [string trim $info]
        regsub -all {[\n"\;=\{\}]+} $info "" info ;#" help emacs hilighting
        regsub -all {\s+} $info " " info
        set osxmin [lindex $info 1]
    } else {
        # use the current platform
        foreach {v1 v2 v3} [split $::tcl_platform(osVersion) .] break
        incr v1 -4
        set osxmin 10.$v1.$v2
        # do we actually need to check if universal is supported, given the
        # gcc check below will do it for us?
        # set info [exec lipo -info /usr/lib/libSystem.dylib]
        # set plats [split [string trim [lindex [split $info :] 2]]]
    }
    if {[info exists ::env(osxmin)] && $::env(osxmin) ne ""} {
        set osxmin $::env(osxmin)
    }
    set universal 0
    catch {
	set ppc    [expr {[exec gcc -v -arch ppc    > /dev/null 2>@stdout] eq ""}]
	set ppc64  [expr {[exec gcc -v -arch ppc64  > /dev/null 2>@stdout] eq ""}]
	set i386   [expr {[exec gcc -v -arch i386   > /dev/null 2>@stdout] eq ""}]
	set x86_64 [expr {[exec gcc -v -arch x86_64 > /dev/null 2>@stdout] eq ""}]
    }
}

# Note: The result of 'platform::generic' is used to restrict which of
# the following blocks will be considered.

# Note 2: The platform declarations are required to set up a proper
# mapping in pkgIndex.tcl of a -pkg.

# default on OSX ppc is universal containing ppc and x86 32 bit
macosx-powerpc when         $ppc
macosx-powerpc compile      gcc -c -arch ppc \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-powerpc link         gcc -bundle -arch ppc \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-powerpc link_preload -undefined dynamic_lookup -mmacosx-version-min=10.3
macosx-powerpc strip

# default on OSX intel is universal containing x86 32 and 64 bit
macosx-ix86 when            $i386 && $x86_64
macosx-ix86 compile         gcc -c -arch i386 -arch x86_64 \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-ix86 link            gcc -bundle -arch i386 -arch x86_64 \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-ix86 link_preload    -undefined dynamic_lookup -mmacosx-version-min=10.3
macosx-ix86 strip
macosx-ix86 platform        macosx-ix86 $osxmin \
	    macosx-ix86 \
	    macosx-x86_64

# target for most common architectures
macosx-most when            $ppc && $i386 && $x86_64
macosx-most compile         gcc -c -arch i386 -arch x86_64 -arch ppc \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-most link            gcc -bundle -arch i386 -arch x86_64 -arch ppc \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-most link_preload    -undefined dynamic_lookup -mmacosx-version-min=10.3
macosx-most strip
macosx-most platform        macosx-most $osxmin \
	    macosx-powerpc \
	    macosx-ix86 \
	    macosx-x86_64

# target for old universal, ppc and x86 32.
macosx-universal when            $ppc && $i386
macosx-universal compile         gcc -c -arch i386 -arch ppc \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-universal link            gcc -bundle -arch i386 -arch ppc \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-universal link_preload    -undefined dynamic_lookup -mmacosx-version-min=10.3
macosx-universal strip
macosx-universal platform        macosx-universal $osxmin \
	    macosx-powerpc \
	    macosx-ix86

# target for all architectures
macosx-all when            $ppc && $ppc64 && $i386 && $x86_64
macosx-all compile         gcc -c -arch i386 -arch x86_64 -arch ppc -arch ppc64 \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-all link            gcc -bundle -arch i386 -arch x86_64 -arch ppc -arch ppc64 \
    -isysroot $SDKROOT \
    -mmacosx-version-min=$osxmin
macosx-all link_preload    -undefined dynamic_lookup -mmacosx-version-min=10.3
macosx-all strip
macosx-all platform        macosx-all $osxmin \
	    macosx-powerpc \
	    macosx-powerpc64 \
	    macosx-ix86 \
	    macosx-x86_64

# OSX ppc 32 bit
macosx-ppc32 when           $ppc
macosx-ppc32 compile        gcc -c -arch ppc
macosx-ppc32 link           gcc -bundle -arch ppc
macosx-ppc32 link_preload   -undefined dynamic_lookup
macosx-ppc32 strip
macosx-ppc32 platform       macosx-powerpc

# OSX ppc 64 bit
macosx-ppc64 when           $ppc64
macosx-ppc64 compile        gcc -c -arch ppc64
macosx-ppc64 link           gcc -bundle -arch ppc64
macosx-ppc64 link_preload   -undefined dynamic_lookup
macosx-ppc64 strip
macosx-ppc64 platform       macosx-powerpc64

# OSX x86 32 bit
macosx-x86_32 when          $i386
macosx-x86_32 compile       gcc -c -arch i386
macosx-x86_32 link          gcc -bundle -arch i386
macosx-x86_32 link_preload  -undefined dynamic_lookup
macosx-x86_32 strip
macosx-x86_32 platform      macosx-ix86

# OSX x86 64 bit
macosx-x86_64 when          $x86_64
macosx-x86_64 compile       gcc -c -arch x86_64
macosx-x86_64 link          gcc -bundle -arch x86_64
macosx-x86_64 link_preload  -undefined dynamic_lookup
macosx-x86_64 strip
macosx-x86_64 platform      macosx-x86_64

# Linux - 32 bit or 64 bit build - select using "-target" if you don't
#         want the platform default (32 on 32, 64 on 64). This requires
#         some work to detect the cpu class in use and then set a platform
#         with the proper variant name.

if {[string match linux-* $platform]} {
    # platform = os-cpu(-compiler)
    set cpu [lindex [split $platform -] 1]

    switch -- $cpu {
	x86_64 - ix86 {
	    set cpu32 ix86
	    set cpu64 x86_64
	}
	* {
	    #error "Unknown architecture"
	    set cpu32 unknown32fixme_$cpu
	    set cpu64 unknown64fixme_$cpu
	}
    }
}

linux-32-*  compile   gcc -c -m32
linux-32-*  link      gcc -shared -m32
linux-32-*  platform  linux-$cpu32

linux-64-*  compile   gcc -c -m64
linux-64-*  link      gcc -shared -m64
linux-64-*  platform  linux-$cpu64

# Windows - Check if bufferoverflowU.lib is required, or not. We
# assume that "requiredness" coincides with "presence". IOW, if the
# library is present in the LIB search paths, then it is required.
# This should be ok, for linking to it when it is present but not
# required, should do no harm.

set msvc 0
if {[string match win32-* $platform]} {
    set cl [file nativename [lindex [auto_execok cl] 0]]
    if {$cl ne ""} {
	set msvc 1

	set msvcbufferoverflowlib ""
	foreach p [split $::env(LIB) \;] {
	    if {[llength [glob -nocomplain -directory $p bufferoverflowu.lib]]} {
		set msvcbufferoverflowlib bufferoverflowU.lib
		break
	    }
	}

	set tmpfile $::env(TMP)/[pid].txt
	catch { exec $cl 2> $tmpfile > NUL: } msg
	#puts "M $msg"
	set chan [open $tmpfile r]
	set output [read $chan]
	#puts "O $output"
	close $chan
	file delete $tmpfile

	regexp {Version ([0-9.]*)} $output -> msvcversion
	#puts V=$msvcversion
	if {[package vcompare $msvcversion 15.00.30729.01] >= 0} {
	    # VC9 or higher. -debug:full is not supported anymore.
	    # VC9 - warning, VC10 - error
	    set msvclinkdebug -debug
	} else {
	    set msvclinkdebug -debug:full
	}
    }
}

# Windows - using MSVC++ 6.0
#
# Note: the language option for cl is -TC for c and -TP for c++ or
#       it can treat single files -Tc<filename>
#
win32-ix86-cl  when            $msvc
win32-ix86-cl  compile         cl -nologo -c
win32-ix86-cl  link            link -nologo
win32-ix86-cl  embed_manifest  mt -manifest [list $outfile].manifest -outputresource:[list $outfile]\;2
win32-ix86-cl  preproc_define  cl -nologo -E
win32-ix86-cl  preproc_enum    cl -nologo -E
win32-ix86-cl  libinclude      /LIBPATH:
win32-ix86-cl  object          .obj
win32-ix86-cl  debug_symbols   -W3 -Od -Zi -GZ -MDd -D_DEBUG
win32-ix86-cl  optimize        -W3 -O2 -Op -Gs -MD
win32-ix86-cl  output          [list -Fo$outfile]
win32-ix86-cl  ldoutput        -dll [list -out:$outfile]
win32-ix86-cl  link_debug      $msvclinkdebug -debugtype:cv -verbose:lib -nodefaultlib:libc
win32-ix86-cl  link_release    -release -opt:ref -opt:icf,3 -ws:aggressive -verbose:lib
win32-ix86-cl  link_preload
win32-ix86-cl  strip
win32-ix86-cl  version         cl
win32-ix86-cl  platform        win32-ix86

# Windows 64 - using Platform SDK
#
# Note: the language option for cl is -TC for c and -TP for c++ or
#       it can treat single files -Tc<filename>
#

win32-x86_64-cl  when            $msvc
win32-x86_64-cl  copy            win32-ix86-cl
# XXX - Override inherited "optimize" with a view to remove -Op in the future
win32-x86_64-cl  optimize        -W3 -O2 -Op -Gs -MD
win32-x86_64-cl  link_debug      $msvclinkdebug -debugtype:cv -verbose:lib $msvcbufferoverflowlib
win32-x86_64-cl  link_release    -release -opt:ref -opt:icf,3 -ws:aggressive -verbose:lib $msvcbufferoverflowlib
win32-x86_64-cl  platform        win32-x86_64

# Cross-compile for Windows using Xmingwin
mingw32     target         win32-ix86
mingw32     compile        gcc -c -nostdlib
mingw32     link           gcc -shared
mingw32     link_preload
mingw32     sharedlibext  .dll
mingw32     tcl_platform(byteOrder)  littleEndian
mingw32     tcl_platform(machine)    intel
mingw32     tcl_platform(os)         Windows NT
mingw32     tcl_platform(osVersion)  5.0
mingw32     tcl_platform(platform)   windows
mingw32     tcl_platform(wordSize)   4

# Cross-compile for ARM (n770/Zaurus/etc) using Scratchbox et al
linux-arm   target
linux-arm   sharedlibext .so
linux-arm   tcl_platform(byteOrder)  littleEndian
linux-arm   tcl_platform(machine)    arm
linux-arm   tcl_platform(os)         Linux
linux-arm   tcl_platform(osVersion)  2.6
linux-arm   tcl_platform(platform)   unix
linux-arm   tcl_platform(wordSize)   4

# hpux itanium, native cc, 32 and 64bit builds.
# +z <=> -fPIC on hpux.
# +DD64 invokes the 64bit mode.

hpux-ia64_32-cc compile         cc -c +z
hpux-ia64_32-cc link            ld -b
hpux-ia64_32-cc preproc_define  cc -E
hpux-ia64_32-cc preproc_enum    cc -E
hpux-ia64_32-cc link_preload
hpux-ia64_32-cc strip

hpux-ia64-cc    compile         cc -c +z +DD64
hpux-ia64-cc    link            ld -b
hpux-ia64-cc    preproc_define  cc -E
hpux-ia64-cc    preproc_enum    cc -E
hpux-ia64-cc    link_preload
hpux-ia64-cc    strip

# hpux, itanium, gcc
# This works only if the -lgcc for 64bit is somewhere reachable.
# hpux-ia64	gcc -c -fPIC -mlp64

hpux-parisc-cc    compile         cc -c +z +DAportable
hpux-parisc-cc    link            ld -b
hpux-parisc-cc    preproc_define  cc -E
hpux-parisc-cc    preproc_enum    cc -E
hpux-parisc-cc    link_preload
hpux-parisc-cc    strip

hpux-parisc64-cc  compile         cc -c +z +DA2.0W
hpux-parisc64-cc  link            ld -b
hpux-parisc64-cc  preproc_define  cc -E
hpux-parisc64-cc  preproc_enum    cc -E
hpux-parisc64-cc  link_preload
hpux-parisc64-cc  strip

# hpux-parisc, 64bit, gcc
#
# For this architecture gcc does not have compiler switches for change
# between 32/64 results. Rather, gcc has to be built specifically to
# produce either 32 or 64 bit binaries. And if both results are
# wanted, it has to be built and installed twice (in different
# directories).
#
# HP provides precompiled binaries of these two variants at
# http://www.hp.com/go/gcc. Install the desired compiler(s). In case
# of having both ensure that the desired one is first in the PATH.

# aix, rs6000/powerpc, native cc, 32bit build
# The link line is pretty much copied from Tcl.

# NOTE: ldAix was copied from Tcl into a directory in the PATH.

# It might make sense to stuff this file into critcl and then copy it
# out when needed, either into a fixed place, or tempdir. In the
# latter case the link line needs some way of getting the value
# substituted into it. I have no idea of the critcl config allows
# that, and if yes, nor how.

# cc_r = something with thread-enabled. better use it than cc and have
# things fail.

aix-powerpc-cc    compile         cc_r -c -O
aix-powerpc-cc    link            ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry -lm -lc
aix-powerpc-cc    preproc_define  cc -E
aix-powerpc-cc    preproc_enum    cc -E
aix-powerpc-cc    link_preload
aix-powerpc-cc    strip

aix-powerpc64-cc  compile         cc_r -c -O -q64
aix-powerpc64-cc  link            ldAix /bin/ld -b64 -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry -lm -lc
aix-powerpc64-cc  preproc_define  cc -E
aix-powerpc64-cc  preproc_enum    cc -E
aix-powerpc64-cc  link_preload
aix-powerpc64-cc  strip

aix-powerpc-xlc    compile         xlc_r -c -O
aix-powerpc-xlc    link            ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry -lm -lc
aix-powerpc-xlc    preproc_define  xlc -E
aix-powerpc-xlc    preproc_enum    xlc -E
aix-powerpc-xlc    link_preload
aix-powerpc-xlc    strip

aix-powerpc64-xlc  compile         xlc_r -c -O -q64
aix-powerpc64-xlc  link            ldAix /bin/ld -b64 -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry -lm -lc
aix-powerpc64-xlc  preproc_define  xlc -E
aix-powerpc64-xlc  preproc_enum    xlc -E
aix-powerpc64-xlc  link_preload
aix-powerpc64-xlc  strip

# Solaris, Sparc and Intel platforms, 32 and 64 bit

solaris-x86_64-cc   compile         cc -m64 -c -KPIC
solaris-x86_64-cc   link            /usr/ccs/bin/ld -L/lib/64 -G -lc -lnsl
solaris-x86_64-cc   preproc_define  cc -E
solaris-x86_64-cc   preproc_enum    cc -E
solaris-x86_64-cc   version         cc -V
solaris-x86_64-cc   link_preload
solaris-x86_64-cc   strip

solaris-x86_64-gcc  compile         gcc -m64 -c -fPIC
solaris-x86_64-gcc  link            gcc -m64 -shared

solaris-ix86-cc     compile         cc -m32 -c -KPIC
solaris-ix86-cc     link            /usr/ccs/bin/ld -G -lc -lnsl
solaris-ix86-cc     preproc_define  cc -E
solaris-ix86-cc     preproc_enum    cc -E
solaris-ix86-cc     version         cc -V
solaris-ix86-cc     link_preload
solaris-ix86-cc     strip

solaris-sparc-cc    compile         cc -KPIC -c
solaris-sparc-cc    link            /usr/ccs/bin/ld -G -lc -lnsl
solaris-sparc-cc    preproc_define  cc -E
solaris-sparc-cc    preproc_enum    cc -E
solaris-sparc-cc    version         cc -V
solaris-sparc-cc    link_preload
solaris-sparc-cc    strip

solaris-sparc64-cc  compile         cc -KPIC -xarch=v9 -c
solaris-sparc64-cc  link            /usr/ccs/bin/ld -G -lc -lnsl
solaris-sparc64-cc  preproc_define  cc -E
solaris-sparc64-cc  preproc_enum    cc -E
solaris-sparc64-cc  version         cc -V
solaris-sparc64-cc  link_preload
solaris-sparc64-cc  strip

solaris-sparc64-gcc compile         gcc -m64 -c -fPIC -mcpu=v9
solaris-sparc64-gcc link            gcc -m64 -shared -mcpu=v9