Closed Bug 541366 Opened 14 years ago Closed 14 years ago

Solaris warning cleanup

Categories

(Tamarin Graveyard :: Build Config, defect, P3)

Sun
All
defect

Tracking

(Not tracked)

VERIFIED FIXED
Q3 11 - Serrano

People

(Reporter: lhansen, Assigned: lhansen)

Details

Attachments

(1 obsolete file)

The Solaris warning situation is out of control.  We can do a lot with little, though.  I have some fixes, will attach them here.
Attached patch Patch (obsolete) — Splinter Review
Remove the bulk of the Solaris warnings:

Add a flag to turn off warnings about locals hiding member variables.

Remove the trailing comma at the end of two enums.  We could disable this warning but since there were only two instances I assume we've been trying to clean up.  I don't know what the current state of C++ is but the trailing comma in enums used to be illegal.
Attachment #422965 - Flags: review?(stejohns)
These are the remaining warnings in a DD avmshell build:

MMgc/GCHeap.cpp:83: attribute aligned is unsupported and will be skipped..
core/AbcParser.cpp:1998: Types cannot be declared in anonymous union.
core/jit-calls.h:663: Too few arguments in macro _nvprof.
core/jit-calls.h:667: Too few arguments in macro _nvprof.
core/jit-calls.h:683: Too few arguments in macro _nvprof.
core/jit-calls.h:688: Too few arguments in macro _nvprof.
core/jit-calls.h:699: Too few arguments in macro _nvprof.
core/CodegenLIR.cpp:5874: Too few arguments in macro _nvprof.
core/CodegenLIR.cpp:6001: Too few arguments in macro _nvprof.
core/CodegenLIR.cpp:6383: Too few arguments in macro _nvprof.
core/CodegenLIR.cpp:6385: Too few arguments in macro _nvprof.
core/Traits.cpp:1906: Goto failure bypasses a variable (or an exception) initialization.
core/instr.cpp:192: Too few arguments in macro _nvprof.
core/instr.cpp:201: Too few arguments in macro _nvprof.
core/instr.cpp:206: Too few arguments in macro _nvprof.
vprof/vprof.h:241: attribute aligned is unsupported and will be skipped..
vprof/vprof.h:242: attribute aligned is unsupported and will be skipped..
vprof/vprof.cpp:214: Anachronism: Formal argument 1 of type extern "C" void(*)() in call to std::atexit(extern "C" void(*)()) is being passed void(*)().
vprof/vprof.cpp:301: Anachronism: Formal argument 1 of type extern "C" void(*)() in call to std::atexit(extern "C" void(*)()) is being passed void(*)().
nanojit/CodeAlloc.cpp:74: Too few arguments in macro _nvprof.
nanojit/CodeAlloc.cpp:141: Too few arguments in macro _nvprof.
nanojit/CodeAlloc.cpp:237: Too few arguments in macro _nvprof.
nanojit/CodeAlloc.cpp:466: Too few arguments in macro _nvprof.
The ones in AbcParser.cpp and Traits.cpp are easily fixed and no great cause for concern.

The alignment warnings are curious; unix-platform.h has a case specifically for the SunPro compiler.  The issue could be a compiler version problem.  Needs investigation - the warnings probaby don't matter in vprof but the one in GCHeap.cpp could be important.

The remaining warnings are all related to vprof.  Edwin says vprof has probably never been tested on Solaris.
(In reply to comment #3)
> The alignment warnings are curious; unix-platform.h has a case specifically for
> the SunPro compiler.  The issue could be a compiler version problem.

This is the compiler version that we are using on the buildslaves:
CC: Sun C++ 5.9 SunOS_sparc Patch 124863-17 2009/10/27
The warning about 'align' in GCHeap.cpp is probably not important - the annotation is on a large global array of byte, which - this being SPARC - is probably aligned on an 8-byte boundary.

The __attribute__ ((whatever)) structure is not documented in the Sun C++ User's Guide, so it may just be some GCC compatibility stuff the compiler understands, warns about, and ignores.  Instead the docs suggest that we use "#pragma align n(name)" where n is the alignment and name is the mangled(!) name of the global variable.  I'm not sure this is really amenable to our AVMPLUS_ALIGN8(name) macro.

(We have an AVMPLUS_ALIGN16 macro too but it's only used in the x86 / x86_64 jits.)
Priority: -- → P3
Target Milestone: --- → flash10.2
(In reply to comment #1)
> Remove the trailing comma at the end of two enums.  We could disable this
> warning but since there were only two instances I assume we've been trying to
> clean up.  I don't know what the current state of C++ is but the trailing comma
> in enums used to be illegal.

It's still theoretically illegal, though many compilers allow it.
Attachment #422965 - Flags: review?(stejohns) → review+
Comment on attachment 422965 [details] [diff] [review]
Patch

redux changeset:   3707:03f6c0d274d4
Attachment #422965 - Attachment is obsolete: true
Closing this as "good enough for now".
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Yes, going from almost 4,000 lines of output for a compilation of the shell to around 350 lines is "good enough". Thanks for getting this cleaned up.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: