View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0007873CMakeCMakepublic2008-10-28 12:312016-06-10 14:30
ReporterGeorge Neill 
Assigned ToBill Hoffman 
PrioritynormalSeverityminorReproducibilityN/A
StatusclosedResolutionmoved 
PlatformSun SPARCOSSolarisOS Version10
Product VersionCMake-2-6 
Target VersionFixed in Version 
Summary0007873: sun solaris (sparc) -xcode vs. -KPIC
DescriptionSun Studio 12, on SPARC, (possibly back to SS10?) obsoletes the use of the -KPIC when building shared libraries.

<manpage quote>
     -KPIC
          (SPARC) Obsolete. You should not use this option. Use
          -xcode=pic32 instead. For a complete list of obsolete
          options and flags, see the C User's Guide.

          (x86) -KPIC is identical to -Kpic on x86 architectures.

     -Kpic
          (SPARC) Obsolete. You should not use this option. Use
          -xcode=pic13 instead. For a complete list of obsolete
          options and flags, see the C User's Guide.

          (x86) Produces position-independent code. Use this
          option to compile source files when building a shared
          library. Each reference to a global datum is generated
          as a dereference of a pointer in the global offset
          table. Each function call is generated in pc-relative
          addressing mode through a procedure linkage table.
</manpage quote>

and here's the relevent documentation from the manpages about -xcode.

<manpage quote>
     -xcode=v
          (SPARC) Specify code address space

          Note: It is highly recommended that you build shared
          objects by specifying -xcode=pic13 or -xcode=pic32. It
          is possible to build workable shared objects with
          -xarch=v9 -xcode=abs64 and with -xarch=v8 -xcode=abs32,
          but these will be inefficient. Shared objects built
          with -xarch=v9 -xcode=abs32 or -xarch=v9 -xcode=abs44
          will not work.

          The values for -xcode are:

          abs32 This is the default for 32-bit systems. Gen-
                  erates 32-bit absolute addresses.
                  Code + data + bss size is limited to 2**32
                  bytes.

          abs44 This is the default for 64-bit systems. Gen-
                  erates 44-bit absolute addresses.
                  Code + data + bss size is limited to 2**44
                  bytes. Available only on 64-bit architectures.

          abs64 Generates 64-bit absolute addresses.
                  Available only on 64-bit architectures.

          pic13 Generates position-independent code for use in
                  shared libraries (small model).
                  Equivalent to -Kpic. Permits references to at
                  most 2**11 unique external symbols on 32-bit
                  architectures, 2**10 on 64-bit.

          pic32 Generates position-independent code for use in
                  shared libraries (large model).
                  Equivalent to -KPIC. Permits references to at
                  most 2**30 unique external symbols on 32-bit
                  architectures, 2**29 on 64-bit.

          The default is -xcode=abs32 for 32-bit architectures.
          The default is -xcode=abs44 for 64-bit architectures.

          When building shared dynamic libraries, the default
          -xcode value of abs44 (not abs32) will not work with
          64-bit architectures. Specify -xcode=pic13 or
          -xcode=pic32 instead.

          To determine whether to use -xcode=pic13 or
          -xcode=pic32, check the size of the Global Offset Table
          (GOT) by using elfdump -c (see the elfdump(1) man page
          for more information) and to look for the section
          header, sh_name: .got. The sh_size value is the size of
          the GOT. If the GOT is less than 8,192 bytes, specify
          -xcode=pic13, otherwise specify -xcode=pic32.

          In general, use the following guidelines to determine
          how you should use -xcode:

          o If you are building an executable you should not use
          -xcode=pic13 or -xcode=pic32.

          o If you are building an archive library only for
          linking into executables you should not use
          -xcode=pic13 or -xcode=pic32.

          o If you are building a shared library, start with
          -xcode=pic13 and once the GOT size exceeds 8,192 bytes,
          use -xcode=pic32.

          o If you are building an archive library for linking
          into shared libraries you should just use -xcode=pic32.
</manpage quote>
Additional InformationIt appears the -KPIC flag is still accepted by the compiler, so I have set this bug as minor severity.
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0034322)
Stephen Kelly (developer)
2013-11-02 10:18

We have

 set(CMAKE_CXX_COMPILE_OPTIONS_PIC -KPIC)
 set(CMAKE_CXX_COMPILE_OPTIONS_PIE -KPIE)

Is -KPIE also obsolete?
(0041461)
Kitware Robot (administrator)
2016-06-10 14:27

Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page.

 Issue History
Date Modified Username Field Change
2008-10-28 12:31 George Neill New Issue
2009-01-07 14:34 Bill Hoffman Status new => assigned
2009-01-07 14:34 Bill Hoffman Assigned To => Bill Hoffman
2013-11-02 10:18 Stephen Kelly Note Added: 0034322
2016-06-10 14:27 Kitware Robot Note Added: 0041461
2016-06-10 14:27 Kitware Robot Status assigned => resolved
2016-06-10 14:27 Kitware Robot Resolution open => moved
2016-06-10 14:30 Kitware Robot Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team