Browse Source

Merge topic 'export-executable-symbols'

85e08370 bindexplib: Always export executable symbols, even they are also readable
pull/293/head
Brad King 9 years ago
committed by CMake Topic Stage
parent
commit
86563cf7c8
  1. 3
      Source/bindexplib.cxx
  2. 6
      Tests/RunCMake/AutoExportDll/AutoExport.cmake
  3. 12
      Tests/RunCMake/AutoExportDll/nop.asm
  4. 4
      Tests/RunCMake/AutoExportDll/say.cxx

3
Source/bindexplib.cxx

@ -308,7 +308,8 @@ public:
this->DataSymbols.insert(symbol);
} else {
if ( pSymbolTable->Type ||
!(SectChar & IMAGE_SCN_MEM_READ)) {
!(SectChar & IMAGE_SCN_MEM_READ) ||
(SectChar & IMAGE_SCN_MEM_EXECUTE)) {
this->Symbols.insert(symbol);
} else {
// printf(" strange symbol: %s \n",symbol.c_str());

6
Tests/RunCMake/AutoExportDll/AutoExport.cmake

@ -11,5 +11,11 @@ if(MSVC)
set_target_properties(say PROPERTIES ENABLE_EXPORTS ON)
add_library(autoexport_for_exec SHARED hello2.c)
target_link_libraries(autoexport_for_exec say)
if(NOT MSVC_VERSION VERSION_LESS 1600)
enable_language(ASM_MASM)
target_sources(autoexport PRIVATE nop.asm)
set_property(SOURCE nop.asm PROPERTY COMPILE_FLAGS /safeseh)
target_compile_definitions(say PRIVATE HAS_JUSTNOP)
endif()
endif()
target_link_libraries(say autoexport autoexport2)

12
Tests/RunCMake/AutoExportDll/nop.asm

@ -0,0 +1,12 @@
IFDEF RAX
ELSE
.MODEL FLAT,C
ENDIF
SOME SEGMENT EXECUTE READ
public justnop
justnop:
ret
END

4
Tests/RunCMake/AutoExportDll/say.cxx

@ -12,6 +12,7 @@ int WINAPI foo();
// test regular C
int bar();
int objlib();
void justnop();
}
// test c++ functions
@ -42,5 +43,8 @@ int main()
bar();
objlib();
printf("\n");
#ifdef HAS_JUSTNOP
justnop();
#endif
return 0;
}
Loading…
Cancel
Save