Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Qipo and SAFESEH

iccuser
Beginner
765 Views
Using /Qipo breaks compilation with /SAFESEH or /Qsafeseh. If I use /Qip then everything compiles fine and the resulting executable has SEH table.
I don't see something relevant in the documentation so I come to the conclusion that this is somehow broken or it's by design like this. Can someone shed some light on this?

I'm using Intel Parallel Composer 12 update 4.

Thanks in advance.
0 Kudos
11 Replies
Om_S_Intel
Employee
765 Views
It would be nice if you can share a sample code so that we can investigate and narrow down the issue.
0 Kudos
iccuser
Beginner
765 Views
I was able to reproduce this with this project.
0 Kudos
Om_S_Intel
Employee
765 Views
It would be nice if you can attach the test case to this thread.
0 Kudos
iccuser
Beginner
765 Views
The test case is in the link I posted. Anyway, attached is the source code.

Things to try:
* Run "build\Notepad2_icl12.sln" and you'll see that the executable will have the problem I described.
* Change /qipo to /qip and it will work as it should.
* Specify /SAFESEH in the linker, so that it's forced to generate SEH table, with /qipo and you'll get compilation errors.

Error 23 error LNK2026: module unsafe for SAFESEH image. C:\Users\user\Desktop\notepad2-mod\src\WPO.obj Notepad2
Error 24 error LNK1281: Unable to generate SAFESEH image. C:\Users\user\Desktop\notepad2-mod\bin\ICL12\Release_x86\Notepad2.exe Notepad2


All of the above apply to the "Release|Win32" config of course.

Note that Microsoft's compilers works fine.
0 Kudos
Om_S_Intel
Employee
765 Views
This seems an issue with compiler. I have submitted a report to Intel Compiler development team on this. I will update the thread when I have more information.
0 Kudos
iccuser
Beginner
765 Views
Thanks! It was baffling me for quite some time...

May I also suggest that the default location for the WPOObject file is set to IntDir? Because if it's not set the WPO object file gets generated every time even if nothing has changed and it can take a while for large projects.

One last thing I'd like to see in the documentation is something like this. It helps a lot to see which compiler switches are in effect with each optimization option enabled. If it's already there, sorry for that.
0 Kudos
Om_S_Intel
Employee
765 Views
It would be nice if we have a smaller testcase.
0 Kudos
iccuser
Beginner
765 Views
Sorry, not possible. Isn't that something the Intel developers should take care of when reviewing this issue? I don't see why I have to provide a smaller test case when this happens every time regardless of the code.
0 Kudos
iccuser
Beginner
765 Views
I found this small program and decided to try ICC. The problem is present there, so here is your smaller testcase. Open FeetToMeters.sln and compile Release|Win32.

But like I said, the code doesn't matter, the problem always happens with /Qipo.
0 Kudos
Om_S_Intel
Employee
765 Views
Thanks for helping with small testcase.
0 Kudos
Om_S_Intel
Employee
765 Views
The issue is fixed in the latest Intel C++ Composer XE 2011.
0 Kudos
Reply