Linker warning about function ordering with VC.NET 2003

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

My project uses the /ORDER specifier to order functions as specified in file containing the decorated names of packaged functions (COMDATs). I am in the process of upgrading from VC6 to VC.NET 2003.

When linking a release build of my project VC.NET 2003, the following warning occurs for each function that is being ordered:

SUTL_X86OrderComdats.dat : warning LNK4065: '?SUTL_SomeFunction@@YAXXZ' cannot be ordered; ignored

The help for warning LNK4065 suggests that function-level linking (/Gy) needs to be enabled. But when I checked this setting it is already enabled.

I do not receive the LNK4065 warning when building the debug configuration of my project.

Any ideas?

Thanks.
 
Further to my above message, when I convert my project from VC6 to VC.NET 2002, the function ordering works properly

But when I then convert the project to VC.NET 2003, I get the above series of warning messages indicating the functions cannot be ordered

Does anyone have function ordering working with VC.NET 2003

Thanks.
 
--------------------

| Subject: RE: Linker warning about function ordering with VC.NET 2003
| Date: Tue, 10 Feb 2004 09:06:10 -0800

| Further to my above message, when I convert my project from VC6 to VC.NET
2002, the function ordering works properly.

But when I then convert the project to VC.NET 2003, I get the above series
of warning messages indicating the functions cannot be ordered.

Does anyone have function ordering working with VC.NET 2003?

Thanks.
|

Hi,

If you wouldn't mind putting together a link-repro for me and sending it
to: (e-mail address removed), I can get our linker devs to take a look at the
issue and to get back to you.

Here's how you make a link-repro, just in case you don't know how:

All linkers:
1. mkdir <some_dir>
2. set link_repro=<some_dir>
3. if you build from msdev, start msdev from the command where #2 was
performed.
4. run the offending link command
5. if you were in msdev, exit it.
6. set link_repro=
7. copy any of the compiler generated .pdb files that are necessary.



6.20 and later linkers:
1. mkdir <some_dir>
2. add /linkrepro:<some_dir> to the linker command line
3. run the offending link command
4. copy any of the compiler generated .pdb files that are necessary.


Thanks!

Kang Su Gatlin
Visual C++ Program Manager
 
I finally realized that I was using the 60-day demo version of VC.NET 2003, which apparently has certain optimizations disabled for release builds, including function ordering.

I successfully rebuilt the project using the full version of the compiler. Issue resolved.

Thanks anyway for your reply Kang.

Ryan
 
Back
Top