| Hi,
The command line you show for the old compiler appears
to use the default extern model, relaxed_refdef, which
tolerates multiple uninitialized definitions for the same
object. The second command line you show for upgraded
compiler, is specifying stict_refdef which limits you to
exactly one definition. So depending on how and where
you have placed your extern_model pragma directives,
the multiple definition errors could be caused by that.
Presumably you are aware that VAX C used the common block
model, which is the most lax with regard to multiple definitions.
Do track this down, I would suggest that you take a look
at the DEC C User's Manual chap 4. I find the tables
4-5 through 4-8 at the end of the chapter to be the most
helpful in explaining what psect information will be generated
for each type of C declaration under the various extern models.
I don't think that this is your problem, but beginning with
V5.3, a new compiler-generated psect
$READONLY_ADDR$ was added for static-exten const data
that is initialized with link-time addresses. This allows
$READONLY$ to remain sharable, where formally
$READONLY$ would be marked as non-shared when
that type of data was used. So possibly $READONLY$
was non-shared in the past.
You will also find detailed information on PSECT "stuff"
in the linker manual.
I hope this helps, if not,
you might wanna provide a small code example we can probably
provide a more specific answer to your question.
--val
|