Reputation: 12273
I found that Linux and GNU Binutils define a special machine type EM_SPARC32PLUS
in ELF header. Why is it needed? What makes SPARC V8+ so special that it can not use EM_SPARC
?
I think there should be an important reason for new machine type, because it breaks compatibility with old programs, and all other architectures tend to use the old machine type as long as possible.
Upvotes: 3
Views: 1083
Reputation: 137497
Starting with elf-em.h
, we see the following (cherry-picked) entries:
#define EM_SPARC 2
#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */
#define EM_SPARCV9 43 /* SPARC v9 64-bit */
Some Googling led me to this reference page for Sun Studio 12, which says:
v8plus
Compile for the V8plus version of the SPARC-V9 ISA. By definition, V8plus means the V9 ISA, but limited to the 32–bit subset defined by the V8plus ISA specification, without the Visual Instruction Set (VIS), and without other implementation-specific ISA extensions.
This option enables the compiler to generate code for good performance on the V8plus ISA.
The resulting object code is in SPARC-V8+ ELF32 format and only executes in a Solaris UltraSPARC environment—it does not run on a V7 or V8 processor.
Example: Any system based on the UltraSPARC chip architecture
It seems to be essentially the 32-bit version of the V9 architecture for the UltraSPARC.
See also:
Upvotes: 3