Skip to content

Fixing build for Oracle DeveloperStudio12.5 (C++ 5.14)#461

Merged
jwillemsen merged 5 commits into
DOCGroup:masterfrom
avl42:SUNPRO_CC_5_14
Aug 6, 2017
Merged

Fixing build for Oracle DeveloperStudio12.5 (C++ 5.14)#461
jwillemsen merged 5 commits into
DOCGroup:masterfrom
avl42:SUNPRO_CC_5_14

Conversation

@avl42
Copy link
Copy Markdown
Contributor

@avl42 avl42 commented Aug 4, 2017

These changes were necessary to get a complete successful build with the Oracle's developerstudio12.5 on Solaris 11.3 including examples and tests.

I'm not sure whether the tests are also run, or merely compiled with a plain "make" within each of ACE_ROOT and TAO_ROOT.

I can't test it on any other platform, but I am positive that these changes would fix more than break.

Having someone test it e.g. with DeveloperStudio12.5 on Linux (just to be safe) wouldn't hurt, though.

avl42 added 4 commits August 4, 2017 19:48
because it is the "first non-inline non-pure-virtual" method,
and Solaris Studio Compilers automatically add some internal
symbols to whereever that one gets implemented.
Without an implementation of RND_Timer::push(), the linker
complains about lack of symbol "RND_Timer::__descr".
For C++ 5.14, the SunCC preprocessor still separates a negative sign
from a number and tao_idl segfaults on such a pre-processed .idl .
Update check from (__SUNPRO_CC > 0x5120) to (__SUNPRO_CC > 0x5140)
Oracle's DeveloperStudio12.5 (C++ 5.14) compiler still has
std::reverse_iterator with 6 template parameters - at least
on Solaris 11.3.
partially undo commit 2e7b117
which removed it from config-sunos5.10.h rather than just adding
it to config-suncc-common.h
// Solaris Studio 12.4 implements symbol lookup correctly.
#if defined (__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130)
#define ACE_ANY_OPS_USE_NAMESPACE
#endif
Copy link
Copy Markdown
Member

@jwillemsen jwillemsen Aug 5, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't it be better to include config-suncc-common.h in the config-sunos5.5.h file at the moment suncc is used? That way we only have this knowledge once and all SunCC version dependent defines are in one file

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a legit question... I pondered it for a while, but then I noticed, that most of the defines currently in config-suncc-common.h were already in some of the sunos* headers. Getting each define into where it really belongs may be another year's work ;-)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding the symbol (conditionally) in sunos5.10 should be fine, because the latest compilers for which it matters, 12.4 and 12.5, don't even offer installation on any older sunos than 5.10.

config-suncc-common seems to be only included by config-linux.

this->driver_->event (event);
}

void
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why isn't this one in the header? This operation shouldn't be needed, maybe report a bug to Oracle?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The question is rather: if this method isn't ever called, then why is it declared as an override in RND_Timer class at all?

It's a very old and apt heuristic to generate certain class-data into whichever module defines the first "non-inline non-pure-virtual" method, i.o.w.: the first method that is expected to end up in a .o file.

removing the push from RND_Timer completely would be fine with me, as well.

PS: and keep in mind to never let operator<<=(unsigned char) in CORBA::Any move to that particular place.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just remove it from rnd_timer

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will do... hang on...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tried a test compile, but it seems like I've spoiled my ACE build tree with a "wrong-env" make. might take a bit longer than expected, but once the compile passes the stage where Random.o gets linked I'll prepare the commit & PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. (obviously it doesn't matter, if a class has only inline methods/ctors)

@jwillemsen jwillemsen merged commit c15cf08 into DOCGroup:master Aug 6, 2017
@avl42 avl42 deleted the SUNPRO_CC_5_14 branch August 6, 2017 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants