Tcl Source Code

View Ticket
Login
Ticket UUID: 3572362
Title: platform-3.1 CPU ID on Windows/UNIX FAILED
Type: Bug Version: obsolete: 8.5.12
Submitter: matzek Created on: 2012-09-27 09:09:37
Subsystem: 52. Portability Support Assigned To: nijtmans
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2012-09-27 21:24:23
Resolution: Invalid Closed By: matzek
    Closed on: 2012-09-27 14:24:23
Description:
Tcl: 8.5.12
OS: Solaris 5.10 on AMD64

Doing a

$ sh .../tcl8.5/unix/configure --enable-64bit --prefix=`pwd`/..
$ make test

gives one failing test case:

==== platform-3.1 CPU ID on Windows/UNIX FAILED
==== Contents of test case:
                
        set cpudata [testcpuid 0]
        binary format iii  [lindex $cpudata 1]  [lindex $cpudata 3]  [lindex $cpudata 2] 
    
---- Result was:
�� )D
---- Result should have been (regexp matching):
^(?:AuthenticAMD|CentaurHauls|CyrixInstead|GenuineIntel)$
==== platform-3.1 FAILED
User Comments: matzek added on 2012-09-27 21:24:23:

allow_comments - 1

matzek added on 2012-09-27 21:24:22:
After some further searching in the net and talking with a fellow developer, I used a different compiler. And see ... it works there. So Studio 12 isn't a good choice to use here, Studio 12.1 works, however. So it can be closed.

Sorry for any inconvenience.

nijtmans added on 2012-09-27 19:32:46:
> http://docs.oracle.com/cd/E19082-01/819-2254/6n4iaouu6/index.html
That page is about the cpuid device, not about the cpuid assembler instruction.
Part of this page:
>The device is useful to enable low-level configuration information to
> be extracted from the CPU without having to write any assembler code
> to invoke the cpuid instruction directly.
Well, Tcl now contains the assembler code which invokes the cpuid
instruction directly, so it should simply work..

It will need some debugging. The assembler code is
borrowed from: <http://en.wikipedia.org/wiki/CPUID>
and can be found in unix/tclUnixCompat.c:990-995.

matzek added on 2012-09-27 19:02:43:
I looked into a library I have here and found a comment to the cpuid manual page for Solaris. The comment basically says that the Linux way isn't going to work on Solaris.

http://docs.oracle.com/cd/E19082-01/819-2254/6n4iaouu6/index.html

nijtmans added on 2012-09-27 17:26:13:
According to what I can find, I would expect "AuthenticAMD" as well.
See:
    <http://support.amd.com/us/Embedded_TechDocs/25481.pdf>

matzek added on 2012-09-27 16:32:21:
Is the attached kstat-output enough, or do you want something else?

matzek added on 2012-09-27 16:24:54:

File Added - 453932: kstat.log

matzek added on 2012-09-27 16:22:21:
Forgot to mention that the expected result should have been "AuthenticAMD" (according to kstat)!

nijtmans added on 2012-09-27 16:13:24:
Interesting. Exactly what processor does this machine have?

Attachments: