[KEYBOARDLEYOUTS]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Tue, 19 Nov 2013 23:30:58 +0000 (23:30 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Tue, 19 Nov 2013 23:30:58 +0000 (23:30 +0000)
Keyboard layout files have special requirements to the section layout of the dell. That is because MS win32k devs didn't write proper code and that is why the original win32k first parses all sections, looks for the .data section, checks if everything is valid and then truncates a pointer in a table to 16 bit and uses this as an offset into the section. Of course that does ONLY work, if the section is the first section AND that pointer happens to be less than 64k off from the start of the section AND the image base is 64k aligned. To achieve this, add a new module type kbdlayout that does all the neccessary things. On MSVC we merge the sections with a linker command, on GCC we use a custom linker script.

svn path=/trunk/; revision=61053

82 files changed:
reactos/cmake/CMakeMacros.cmake
reactos/dll/keyboard/kbda1/CMakeLists.txt
reactos/dll/keyboard/kbda2/CMakeLists.txt
reactos/dll/keyboard/kbda3/CMakeLists.txt
reactos/dll/keyboard/kbdal/CMakeLists.txt
reactos/dll/keyboard/kbdarme/CMakeLists.txt
reactos/dll/keyboard/kbdarmw/CMakeLists.txt
reactos/dll/keyboard/kbdaze/CMakeLists.txt
reactos/dll/keyboard/kbdazel/CMakeLists.txt
reactos/dll/keyboard/kbdbe/CMakeLists.txt
reactos/dll/keyboard/kbdbga/CMakeLists.txt
reactos/dll/keyboard/kbdbgm/CMakeLists.txt
reactos/dll/keyboard/kbdbgt/CMakeLists.txt
reactos/dll/keyboard/kbdblr/CMakeLists.txt
reactos/dll/keyboard/kbdbr/CMakeLists.txt
reactos/dll/keyboard/kbdbur/CMakeLists.txt
reactos/dll/keyboard/kbdcan/CMakeLists.txt
reactos/dll/keyboard/kbdcr/CMakeLists.txt
reactos/dll/keyboard/kbdcz/CMakeLists.txt
reactos/dll/keyboard/kbdcz1/CMakeLists.txt
reactos/dll/keyboard/kbdda/CMakeLists.txt
reactos/dll/keyboard/kbddv/CMakeLists.txt
reactos/dll/keyboard/kbdes/CMakeLists.txt
reactos/dll/keyboard/kbdest/CMakeLists.txt
reactos/dll/keyboard/kbdfc/CMakeLists.txt
reactos/dll/keyboard/kbdfi/CMakeLists.txt
reactos/dll/keyboard/kbdfr/CMakeLists.txt
reactos/dll/keyboard/kbdgeo/CMakeLists.txt
reactos/dll/keyboard/kbdgerg/CMakeLists.txt
reactos/dll/keyboard/kbdgneo/CMakeLists.txt
reactos/dll/keyboard/kbdgr/CMakeLists.txt
reactos/dll/keyboard/kbdgrist/CMakeLists.txt
reactos/dll/keyboard/kbdhe/CMakeLists.txt
reactos/dll/keyboard/kbdheb/CMakeLists.txt
reactos/dll/keyboard/kbdhu/CMakeLists.txt
reactos/dll/keyboard/kbdic/CMakeLists.txt
reactos/dll/keyboard/kbdinasa/CMakeLists.txt
reactos/dll/keyboard/kbdinben/CMakeLists.txt
reactos/dll/keyboard/kbdindev/CMakeLists.txt
reactos/dll/keyboard/kbdinguj/CMakeLists.txt
reactos/dll/keyboard/kbdinmal/CMakeLists.txt
reactos/dll/keyboard/kbdir/CMakeLists.txt
reactos/dll/keyboard/kbdit/CMakeLists.txt
reactos/dll/keyboard/kbdja/CMakeLists.txt
reactos/dll/keyboard/kbdkaz/CMakeLists.txt
reactos/dll/keyboard/kbdko/CMakeLists.txt
reactos/dll/keyboard/kbdla/CMakeLists.txt
reactos/dll/keyboard/kbdlt1/CMakeLists.txt
reactos/dll/keyboard/kbdlv/CMakeLists.txt
reactos/dll/keyboard/kbdmac/CMakeLists.txt
reactos/dll/keyboard/kbdne/CMakeLists.txt
reactos/dll/keyboard/kbdno/CMakeLists.txt
reactos/dll/keyboard/kbdpl/CMakeLists.txt
reactos/dll/keyboard/kbdpl1/CMakeLists.txt
reactos/dll/keyboard/kbdpo/CMakeLists.txt
reactos/dll/keyboard/kbdro/CMakeLists.txt
reactos/dll/keyboard/kbdru/CMakeLists.txt
reactos/dll/keyboard/kbdru1/CMakeLists.txt
reactos/dll/keyboard/kbdsg/CMakeLists.txt
reactos/dll/keyboard/kbdsk/CMakeLists.txt
reactos/dll/keyboard/kbdsk1/CMakeLists.txt
reactos/dll/keyboard/kbdsw/CMakeLists.txt
reactos/dll/keyboard/kbdtat/CMakeLists.txt
reactos/dll/keyboard/kbdth0/CMakeLists.txt
reactos/dll/keyboard/kbdth1/CMakeLists.txt
reactos/dll/keyboard/kbdth2/CMakeLists.txt
reactos/dll/keyboard/kbdth3/CMakeLists.txt
reactos/dll/keyboard/kbdtuf/CMakeLists.txt
reactos/dll/keyboard/kbdtuq/CMakeLists.txt
reactos/dll/keyboard/kbduk/CMakeLists.txt
reactos/dll/keyboard/kbdur/CMakeLists.txt
reactos/dll/keyboard/kbdurs/CMakeLists.txt
reactos/dll/keyboard/kbdus/CMakeLists.txt
reactos/dll/keyboard/kbdusa/CMakeLists.txt
reactos/dll/keyboard/kbdusl/CMakeLists.txt
reactos/dll/keyboard/kbdusr/CMakeLists.txt
reactos/dll/keyboard/kbdusx/CMakeLists.txt
reactos/dll/keyboard/kbduzb/CMakeLists.txt
reactos/dll/keyboard/kbdvntc/CMakeLists.txt
reactos/dll/keyboard/kbdycc/CMakeLists.txt
reactos/dll/keyboard/kbdycl/CMakeLists.txt
reactos/kbdlayout.lds [new file with mode: 0644]

index 798327b..4737656 100644 (file)
@@ -429,6 +429,18 @@ function(set_module_type MODULE TYPE)
         set(__subsystem console)
     elseif(${TYPE} STREQUAL win32gui)
         set(__subsystem windows)
+    elseif(${TYPE} STREQUAL kbdlayout)
+        set_entrypoint(${MODULE} 0)
+        set_image_base(${MODULE} 0x5FFF0000)
+        set_subsystem(${MODULE} native)
+        if (MSVC)
+            # Merge the .text and .rdata section into the .data section
+            add_target_link_flags(${MODULE} "/ignore:4254 /SECTION:.data,ER /MERGE:.text=.data /MERGE:.rdata=.data /MERGE:.bss=.data /MERGE:.edata=.data")
+        else()
+            # Use a custom linker script
+            add_target_link_flags(${MODULE} "-Wl,-T,${CMAKE_SOURCE_DIR}/kbdlayout.lds")
+            add_dependencies(${MODULE} "${CMAKE_SOURCE_DIR}/kbdlayout.lds")
+        endif()
     elseif(NOT ((${TYPE} STREQUAL win32dll) OR (${TYPE} STREQUAL win32ocx)
             OR (${TYPE} STREQUAL cpl) OR (${TYPE} STREQUAL module)))
         message(FATAL_ERROR "Unknown type ${TYPE} for module ${MODULE}")
index 09a6bf0..4f3aefe 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbda1.dll kbda1.spec)
 
 add_library(kbda1 SHARED kbda1.c kbda1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbda1.def)
 
-set_entrypoint(kbda1 0)
+set_module_type(kbda1 kbdlayout)
 
 add_dependencies(kbda1 psdk)
 
index 8f784b0..21233ae 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbda2.dll kbda2.spec)
 
 add_library(kbda2 SHARED kbda2.c kbda2.rc ${CMAKE_CURRENT_BINARY_DIR}/kbda2.def)
 
-set_entrypoint(kbda2 0)
+set_module_type(kbda2 kbdlayout)
 
 add_dependencies(kbda2 psdk)
 
index 30e0d84..9054d9b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbda3.dll kbda3.spec)
 
 add_library(kbda3 SHARED kbda3.c kbda3.rc ${CMAKE_CURRENT_BINARY_DIR}/kbda3.def)
 
-set_entrypoint(kbda3 0)
+set_module_type(kbda3 kbdlayout)
 
 add_dependencies(kbda3 psdk)
 
index 59a2116..34b1a76 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdal.dll kbdal.spec)
 
 add_library(kbdal SHARED kbdal.c kbdal.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdal.def)
 
-set_entrypoint(kbdal 0)
+set_module_type(kbdal kbdlayout)
 
 add_dependencies(kbdal psdk)
 
index 035020a..3cd149c 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdarme.dll kbdarme.spec)
 
 add_library(kbdarme SHARED kbdarme.c kbdarme.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdarme.def)
 
-set_entrypoint(kbdarme 0)
+set_module_type(kbdarme kbdlayout)
 
 add_dependencies(kbdarme psdk)
 
index 4f52189..25a9739 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdarmw.dll kbdarmw.spec)
 
 add_library(kbdarmw SHARED kbdarmw.c kbdarmw.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdarmw.def)
 
-set_entrypoint(kbdarmw 0)
+set_module_type(kbdarmw kbdlayout)
 
 add_dependencies(kbdarmw psdk)
 
index 4f3f4fe..f8fae7c 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdaze.dll kbdaze.spec)
 
 add_library(kbdaze SHARED kbdaze.c kbdaze.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdaze.def)
 
-set_entrypoint(kbdaze 0)
+set_module_type(kbdaze kbdlayout)
 
 add_dependencies(kbdaze psdk)
 
index 0944e99..177f252 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdazel.dll kbdazel.spec)
 
 add_library(kbdazel SHARED kbdazel.c kbdazel.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdazel.def)
 
-set_entrypoint(kbdazel 0)
+set_module_type(kbdazel kbdlayout)
 
 add_dependencies(kbdazel psdk)
 
index 5d1c6a3..fc05d3f 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdbe.dll kbdbe.spec)
 
 add_library(kbdbe SHARED kbdbe.c kbdbe.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdbe.def)
 
-set_entrypoint(kbdbe 0)
+set_module_type(kbdbe kbdlayout)
 
 add_dependencies(kbdbe psdk)
 
index c009a41..0b3866d 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdbga.dll kbdbga.spec)
 
 add_library(kbdbga SHARED kbdbga.c kbdbga.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdbga.def)
 
-set_entrypoint(kbdbga 0)
+set_module_type(kbdbga kbdlayout)
 
 add_dependencies(kbdbga psdk)
 
index 67820d9..a22331f 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdbgm.dll kbdbgm.spec)
 
 add_library(kbdbgm SHARED kbdbgm.c kbdbgm.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdbgm.def)
 
-set_entrypoint(kbdbgm 0)
+set_module_type(kbdbgm kbdlayout)
 
 add_dependencies(kbdbgm psdk)
 
index 74a9f45..8801f65 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdbgt.dll kbdbgt.spec)
 
 add_library(kbdbgt SHARED kbdbgt.c kbdbgt.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdbgt.def)
 
-set_entrypoint(kbdbgt 0)
+set_module_type(kbdbgt kbdlayout)
 
 add_dependencies(kbdbgt psdk)
 
index 0a2941d..48ee155 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdblr.dll kbdblr.spec)
 
 add_library(kbdblr SHARED kbdblr.c kbdblr.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdblr.def)
 
-set_entrypoint(kbdblr 0)
+set_module_type(kbdblr kbdlayout)
 
 add_dependencies(kbdblr psdk)
 
index f8ea361..0bc694b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdbr.dll kbdbr.spec)
 
 add_library(kbdbr SHARED kbdbr.c kbdbr.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdbr.def)
 
-set_entrypoint(kbdbr 0)
+set_module_type(kbdbr kbdlayout)
 
 add_dependencies(kbdbr psdk)
 
index 9800c13..ba45e4c 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdbur.dll kbdbur.spec)
 
 add_library(kbdbur SHARED kbdbur.c kbdbur.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdbur.def)
 
-set_entrypoint(kbdbur 0)
+set_module_type(kbdbur kbdlayout)
 
 add_dependencies(kbdbur psdk)
 
index 7c244ba..8e44413 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdcan.dll kbdcan.spec)
 
 add_library(kbdcan SHARED kbdcan.c kbdcan.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdcan.def)
 
-set_entrypoint(kbdcan 0)
+set_module_type(kbdcan kbdlayout)
 
 add_dependencies(kbdcan psdk)
 
index f69e7ea..a8ac224 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdcr.dll kbdcr.spec)
 
 add_library(kbdcr SHARED kbdcr.c kbdcr.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdcr.def)
 
-set_entrypoint(kbdcr 0)
+set_module_type(kbdcr kbdlayout)
 
 add_dependencies(kbdcr psdk)
 
index 6321509..e235e38 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdcz.dll kbdcz.spec)
 
 add_library(kbdcz SHARED kbdcz.c kbdcz.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdcz.def)
 
-set_entrypoint(kbdcz 0)
+set_module_type(kbdcz kbdlayout)
 
 add_dependencies(kbdcz psdk)
 
index 1e99681..5d094eb 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdcz1.dll kbdcz1.spec)
 
 add_library(kbdcz1 SHARED kbdcz1.c kbdcz1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdcz1.def)
 
-set_entrypoint(kbdcz1 0)
+set_module_type(kbdcz1 kbdlayout)
 
 add_dependencies(kbdcz1 psdk)
 
index 98d9b5b..043e20b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdda.dll kbdda.spec)
 
 add_library(kbdda SHARED kbdda.c kbdda.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdda.def)
 
-set_entrypoint(kbdda 0)
+set_module_type(kbdda kbdlayout)
 
 add_dependencies(kbdda psdk)
 
index 04e6c0c..11696fb 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbddv.dll kbddv.spec)
 
 add_library(kbddv SHARED kbddv.c kbddv.rc ${CMAKE_CURRENT_BINARY_DIR}/kbddv.def)
 
-set_entrypoint(kbddv 0)
+set_module_type(kbddv kbdlayout)
 
 add_dependencies(kbddv psdk)
 
index 499266a..7f97296 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdes.dll kbdes.spec)
 
 add_library(kbdes SHARED kbdes.c kbdes.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdes.def)
 
-set_entrypoint(kbdes 0)
+set_module_type(kbdes kbdlayout)
 
 add_dependencies(kbdes psdk)
 
index 58c6199..6f7c39b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdest.dll kbdest.spec)
 
 add_library(kbdest SHARED kbdest.c kbdest.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdest.def)
 
-set_entrypoint(kbdest 0)
+set_module_type(kbdest kbdlayout)
 
 add_dependencies(kbdest psdk)
 
index ce7a5cf..7d40d4e 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdfc.dll kbdfc.spec)
 
 add_library(kbdfc SHARED kbdfc.c kbdfc.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdfc.def)
 
-set_entrypoint(kbdfc 0)
+set_module_type(kbdfc kbdlayout)
 
 add_dependencies(kbdfc psdk)
 
index 3b922e5..01b8d4b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdfi.dll kbdfi.spec)
 
 add_library(kbdfi SHARED kbdfi.c kbdfi.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdfi.def)
 
-set_entrypoint(kbdfi 0)
+set_module_type(kbdfi kbdlayout)
 
 add_dependencies(kbdfi psdk)
 
index 85b1385..1a32d46 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdfr.dll kbdfr.spec)
 
 add_library(kbdfr SHARED kbdfr.c kbdfr.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdfr.def)
 
-set_entrypoint(kbdfr 0)
+set_module_type(kbdfr kbdlayout)
 
 add_dependencies(kbdfr psdk)
 
index 965855e..cdd7e7f 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdgeo.dll kbdgeo.spec)
 
 add_library(kbdgeo SHARED kbdgeo.c kbdgeo.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdgeo.def)
 
-set_entrypoint(kbdgeo 0)
+set_module_type(kbdgeo kbdlayout)
 
 add_dependencies(kbdgeo psdk)
 
index db17d69..6db4e12 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdgerg.dll kbdgerg.spec)
 
 add_library(kbdgerg SHARED kbdgerg.c kbdgerg.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdgerg.def)
 
-set_entrypoint(kbdgerg 0)
+set_module_type(kbdgerg kbdlayout)
 
 add_dependencies(kbdgerg psdk)
 
index 3227429..9fcff4e 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdgneo.dll kbdgneo.spec)
 
 add_library(kbdgneo SHARED kbdgneo.c kbdgneo.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdgneo.def)
 
-set_entrypoint(kbdgneo 0)
+set_module_type(kbdgneo kbdlayout)
 
 add_dependencies(kbdgneo psdk)
 
index c488873..fcb9f97 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdgr.dll kbdgr.spec)
 
 add_library(kbdgr SHARED kbdgr.c kbdgr.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdgr.def)
 
-set_entrypoint(kbdgr 0)
+set_module_type(kbdgr kbdlayout)
 
 add_dependencies(kbdgr psdk)
 
index 19ffbd7..2d3e4cc 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdgrist.dll kbdgrist.spec)
 
 add_library(kbdgrist SHARED kbdgrist.c kbdgrist.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdgrist.def)
 
-set_entrypoint(kbdgrist 0)
+set_module_type(kbdgrist kbdlayout)
 
 add_dependencies(kbdgrist psdk)
 
index b9af289..f324287 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdhe.dll kbdhe.spec)
 
 add_library(kbdhe SHARED kbdhe.c kbdhe.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdhe.def)
 
-set_entrypoint(kbdhe 0)
+set_module_type(kbdhe kbdlayout)
 
 add_dependencies(kbdhe psdk)
 
index 59e64bc..c82b89d 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdheb.dll kbdheb.spec)
 
 add_library(kbdheb SHARED kbdheb.c kbdheb.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdheb.def)
 
-set_entrypoint(kbdheb 0)
+set_module_type(kbdheb kbdlayout)
 
 add_dependencies(kbdheb psdk)
 
index a78195a..b458f97 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdhu.dll kbdhu.spec)
 
 add_library(kbdhu SHARED kbdhu.c kbdhu.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdhu.def)
 
-set_entrypoint(kbdhu 0)
+set_module_type(kbdhu kbdlayout)
 
 add_dependencies(kbdhu psdk)
 
index 3d910a2..7155646 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdic.dll kbdic.spec)
 
 add_library(kbdic SHARED kbdic.c kbdic.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdic.def)
 
-set_entrypoint(kbdic 0)
+set_module_type(kbdic kbdlayout)
 
 add_dependencies(kbdic psdk)
 
index bd97597..69cfdba 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdinasa.dll kbdinasa.spec)
 
 add_library(kbdinasa SHARED kbdinasa.c kbdinasa.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdinasa.def)
 
-set_entrypoint(kbdinasa 0)
+set_module_type(kbdinasa kbdlayout)
 
 add_dependencies(kbdinasa psdk)
 
index 9579cf1..154095c 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdinben.dll kbdinben.spec)
 
 add_library(kbdinben SHARED kbdinben.c kbdinben.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdinben.def)
 
-set_entrypoint(kbdinben 0)
+set_module_type(kbdinben kbdlayout)
 
 add_dependencies(kbdinben psdk)
 
index 624f785..7f4a720 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdindev.dll kbdindev.spec)
 
 add_library(kbdindev SHARED kbdindev.c kbdindev.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdindev.def)
 
-set_entrypoint(kbdindev 0)
+set_module_type(kbdindev kbdlayout)
 
 add_dependencies(kbdindev psdk)
 
index e10c4d1..6ed1059 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdinguj.dll kbdinguj.spec)
 
 add_library(kbdinguj SHARED kbdinguj.c kbdinguj.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdinguj.def)
 
-set_entrypoint(kbdinguj 0)
+set_module_type(kbdinguj kbdlayout)
 
 add_dependencies(kbdinguj psdk)
 
index 5bbfb8a..629f729 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdinmal.dll kbdinmal.spec)
 
 add_library(kbdinmal SHARED kbdinmal.c kbdinmal.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdinmal.def)
 
-set_entrypoint(kbdinmal 0)
+set_module_type(kbdinmal kbdlayout)
 
 add_dependencies(kbdinmal psdk)
 
index 49817b7..780e6c2 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdir.dll kbdir.spec)
 
 add_library(kbdir SHARED kbdir.c kbdir.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdir.def)
 
-set_entrypoint(kbdir 0)
+set_module_type(kbdir kbdlayout)
 
 add_dependencies(kbdir psdk)
 
index 052f75b..1ec7b4b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdit.dll kbdit.spec)
 
 add_library(kbdit SHARED kbdit.c kbdit.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdit.def)
 
-set_entrypoint(kbdit 0)
+set_module_type(kbdit kbdlayout)
 
 add_dependencies(kbdit psdk)
 
index af98288..8f3c653 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdja.dll kbdja.spec)
 
 add_library(kbdja SHARED kbdja.c kbdja.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdja.def)
 
-set_entrypoint(kbdja 0)
+set_module_type(kbdja kbdlayout)
 
 add_dependencies(kbdja psdk)
 
index 587a4ac..bafc2ed 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdkaz.dll kbdkaz.spec)
 
 add_library(kbdkaz SHARED kbdkaz.c kbdkaz.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdkaz.def)
 
-set_entrypoint(kbdkaz 0)
+set_module_type(kbdkaz kbdlayout)
 
 add_dependencies(kbdkaz psdk)
 
index d7525fd..e3a1aec 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdko.dll kbdko.spec)
 
 add_library(kbdko SHARED kbdko.c kbdko.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdko.def)
 
-set_entrypoint(kbdko 0)
+set_module_type(kbdko kbdlayout)
 
 add_dependencies(kbdko psdk)
 
index a34ab26..46fa88d 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdla.dll kbdla.spec)
 
 add_library(kbdla SHARED kbdla.c kbdla.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdla.def)
 
-set_entrypoint(kbdla 0)
+set_module_type(kbdla kbdlayout)
 
 add_dependencies(kbdla psdk)
 
index 17cdce1..1356f59 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdlt1.dll kbdlt1.spec)
 
 add_library(kbdlt1 SHARED kbdlt1.c kbdlt1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdlt1.def)
 
-set_entrypoint(kbdlt1 0)
+set_module_type(kbdlt1 kbdlayout)
 
 add_dependencies(kbdlt1 psdk)
 
index 31a5a37..7f1b53f 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdlv.dll kbdlv.spec)
 
 add_library(kbdlv SHARED kbdlv.c kbdlv.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdlv.def)
 
-set_entrypoint(kbdlv 0)
+set_module_type(kbdlv kbdlayout)
 
 add_dependencies(kbdlv psdk)
 
index 0c96cc0..ef2c441 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdmac.dll kbdmac.spec)
 
 add_library(kbdmac SHARED kbdmac.c kbdmac.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdmac.def)
 
-set_entrypoint(kbdmac 0)
+set_module_type(kbdmac kbdlayout)
 
 add_dependencies(kbdmac psdk)
 
index b9695b3..93c4701 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdne.dll kbdne.spec)
 
 add_library(kbdne SHARED kbdne.c kbdne.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdne.def)
 
-set_entrypoint(kbdne 0)
+set_module_type(kbdne kbdlayout)
 
 add_dependencies(kbdne psdk)
 
index 7f97189..8ecf189 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdno.dll kbdno.spec)
 
 add_library(kbdno SHARED kbdno.c kbdno.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdno.def)
 
-set_entrypoint(kbdno 0)
+set_module_type(kbdno kbdlayout)
 
 add_dependencies(kbdno psdk)
 
index a11cd53..1d5d330 100644 (file)
@@ -3,7 +3,7 @@ spec2def(kbdpl.dll kbdpl.spec)
 
 add_library(kbdpl SHARED kbdpl.c kbdpl.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdpl.def)
 
-set_entrypoint(kbdpl 0)
+set_module_type(kbdpl kbdlayout)
 
 add_dependencies(kbdpl psdk)
 
index 2b482b4..f4d30f5 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdpl1.dll kbdpl1.spec)
 
 add_library(kbdpl1 SHARED kbdpl1.c kbdpl1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdpl1.def)
 
-set_entrypoint(kbdpl1 0)
+set_module_type(kbdpl1 kbdlayout)
 
 add_dependencies(kbdpl1 psdk)
 
index 496d776..bef781e 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdpo.dll kbdpo.spec)
 
 add_library(kbdpo SHARED kbdpo.c kbdpo.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdpo.def)
 
-set_entrypoint(kbdpo 0)
+set_module_type(kbdpo kbdlayout)
 
 add_dependencies(kbdpo psdk)
 
index 2d1d3d8..aa3c3da 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdro.dll kbdro.spec)
 
 add_library(kbdro SHARED kbdro.c kbdro.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdro.def)
 
-set_entrypoint(kbdro 0)
+set_module_type(kbdro kbdlayout)
 
 add_dependencies(kbdro psdk)
 
index 7c51327..0e4250c 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdru.dll kbdru.spec)
 
 add_library(kbdru SHARED kbdru.c kbdru.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdru.def)
 
-set_entrypoint(kbdru 0)
+set_module_type(kbdru kbdlayout)
 
 add_dependencies(kbdru psdk)
 
index 62b1672..847a439 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdru1.dll kbdru1.spec)
 
 add_library(kbdru1 SHARED kbdru1.c kbdru1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdru1.def)
 
-set_entrypoint(kbdru1 0)
+set_module_type(kbdru1 kbdlayout)
 
 add_dependencies(kbdru1 psdk)
 
index 2338afa..3046bc5 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdsg.dll kbdsg.spec)
 
 add_library(kbdsg SHARED kbdsg.c kbdsg.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdsg.def)
 
-set_entrypoint(kbdsg 0)
+set_module_type(kbdsg kbdlayout)
 
 add_dependencies(kbdsg psdk)
 
index 3445d1d..d7d8e91 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdsk.dll kbdsk.spec)
 
 add_library(kbdsk SHARED kbdsk.c kbdsk.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdsk.def)
 
-set_entrypoint(kbdsk 0)
+set_module_type(kbdsk kbdlayout)
 
 add_dependencies(kbdsk psdk)
 
index 1860bed..ecd0da9 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdsk1.dll kbdsk1.spec)
 
 add_library(kbdsk1 SHARED kbdsk1.c kbdsk1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdsk1.def)
 
-set_entrypoint(kbdsk1 0)
+set_module_type(kbdsk1 kbdlayout)
 
 add_dependencies(kbdsk1 psdk)
 
index 4bbda23..2a03ad7 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdsw.dll kbdsw.spec)
 
 add_library(kbdsw SHARED kbdsw.c kbdsw.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdsw.def)
 
-set_entrypoint(kbdsw 0)
+set_module_type(kbdsw kbdlayout)
 
 add_dependencies(kbdsw psdk)
 
index 0ee6b97..d0eb343 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdtat.dll kbdtat.spec)
 
 add_library(kbdtat SHARED kbdtat.c kbdtat.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdtat.def)
 
-set_entrypoint(kbdtat 0)
+set_module_type(kbdtat kbdlayout)
 
 add_dependencies(kbdtat psdk)
 
index 57b49fc..0e96486 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdth0.dll kbdth0.spec)
 
 add_library(kbdth0 SHARED kbdth0.c kbdth0.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdth0.def)
 
-set_entrypoint(kbdth0 0)
+set_module_type(kbdth0 kbdlayout)
 
 add_dependencies(kbdth0 psdk)
 
index 1ccaa3e..799384c 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdth1.dll kbdth1.spec)
 
 add_library(kbdth1 SHARED kbdth1.c kbdth1.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdth1.def)
 
-set_entrypoint(kbdth1 0)
+set_module_type(kbdth1 kbdlayout)
 
 add_dependencies(kbdth1 psdk)
 
index 54f7b67..a81d8d1 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdth2.dll kbdth2.spec)
 
 add_library(kbdth2 SHARED kbdth2.c kbdth2.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdth2.def)
 
-set_entrypoint(kbdth2 0)
+set_module_type(kbdth2 kbdlayout)
 
 add_dependencies(kbdth2 psdk)
 
index f40d878..d9591a1 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdth3.dll kbdth3.spec)
 
 add_library(kbdth3 SHARED kbdth3.c kbdth3.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdth3.def)
 
-set_entrypoint(kbdth3 0)
+set_module_type(kbdth3 kbdlayout)
 
 add_dependencies(kbdth3 psdk)
 
index 7203a80..2ca390f 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdtuf.dll kbdtuf.spec)
 
 add_library(kbdtuf SHARED kbdtuf.c kbdtuf.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdtuf.def)
 
-set_entrypoint(kbdtuf 0)
+set_module_type(kbdtuf kbdlayout)
 
 add_dependencies(kbdtuf psdk)
 
index da03c03..bbb9c81 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdtuq.dll kbdtuq.spec)
 
 add_library(kbdtuq SHARED kbdtuq.c kbdtuq.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdtuq.def)
 
-set_entrypoint(kbdtuq 0)
+set_module_type(kbdtuq kbdlayout)
 
 add_dependencies(kbdtuq psdk)
 
index 6f92fca..217c70d 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbduk.dll kbduk.spec)
 
 add_library(kbduk SHARED kbduk.c kbduk.rc ${CMAKE_CURRENT_BINARY_DIR}/kbduk.def)
 
-set_entrypoint(kbduk 0)
+set_module_type(kbduk kbdlayout)
 
 add_dependencies(kbduk psdk)
 
index eb17d88..90de872 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdur.dll kbdur.spec)
 
 add_library(kbdur SHARED kbdur.c kbdur.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdur.def)
 
-set_entrypoint(kbdur 0)
+set_module_type(kbdur kbdlayout)
 
 add_dependencies(kbdur psdk)
 
index 1ab666a..8a37c1b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdurs.dll kbdurs.spec)
 
 add_library(kbdurs SHARED kbdurs.c kbdurs.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdurs.def)
 
-set_entrypoint(kbdurs 0)
+set_module_type(kbdurs kbdlayout)
 
 add_dependencies(kbdurs psdk)
 
index 8eecc6d..56d7b11 100644 (file)
@@ -4,7 +4,7 @@ spec2def(kbdus.dll kbdus.spec)
 
 add_library(kbdus SHARED kbdus.c kbdus.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdus.def)
 
-set_entrypoint(kbdus 0)
+set_module_type(kbdus kbdlayout)
 
 add_dependencies(kbdus psdk)
 
index eb14685..2f87a3e 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdusa.dll kbdusa.spec)
 
 add_library(kbdusa SHARED kbdusa.c kbdusa.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdusa.def)
 
-set_entrypoint(kbdusa 0)
+set_module_type(kbdusa kbdlayout)
 
 add_dependencies(kbdusa psdk)
 
index e459e89..1734b17 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdusl.dll kbdusl.spec)
 
 add_library(kbdusl SHARED kbdusl.c kbdusl.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdusl.def)
 
-set_entrypoint(kbdusl 0)
+set_module_type(kbdusl kbdlayout)
 
 add_dependencies(kbdusl psdk)
 
index 8ae4972..cd33a55 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdusr.dll kbdusr.spec)
 
 add_library(kbdusr SHARED kbdusr.c kbdusr.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdusr.def)
 
-set_entrypoint(kbdusr 0)
+set_module_type(kbdusr kbdlayout)
 
 add_dependencies(kbdusr psdk)
 
index 1994501..8d7871b 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdusx.dll kbdusx.spec)
 
 add_library(kbdusx SHARED kbdusx.c kbdusx.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdusx.def)
 
-set_entrypoint(kbdusx 0)
+set_module_type(kbdusx kbdlayout)
 
 add_dependencies(kbdusx psdk)
 
index 2ad14e5..6b561a0 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbduzb.dll kbduzb.spec)
 
 add_library(kbduzb SHARED kbduzb.c kbduzb.rc ${CMAKE_CURRENT_BINARY_DIR}/kbduzb.def)
 
-set_entrypoint(kbduzb 0)
+set_module_type(kbduzb kbdlayout)
 
 add_dependencies(kbduzb psdk)
 
index d180991..9b2ce1d 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdvntc.dll kbdvntc.spec)
 
 add_library(kbdvntc SHARED kbdvntc.c kbdvntc.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdvntc.def)
 
-set_entrypoint(kbdvntc 0)
+set_module_type(kbdvntc kbdlayout)
 
 add_dependencies(kbdvntc psdk)
 
index 2711771..2e0d34f 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdycc.dll kbdycc.spec)
 
 add_library(kbdycc SHARED kbdycc.c kbdycc.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdycc.def)
 
-set_entrypoint(kbdycc 0)
+set_module_type(kbdycc kbdlayout)
 
 add_dependencies(kbdycc psdk)
 
index 5726970..cb73723 100644 (file)
@@ -5,7 +5,7 @@ spec2def(kbdycl.dll kbdycl.spec)
 
 add_library(kbdycl SHARED kbdycl.c kbdycl.rc ${CMAKE_CURRENT_BINARY_DIR}/kbdycl.def)
 
-set_entrypoint(kbdycl 0)
+set_module_type(kbdycl kbdlayout)
 
 add_dependencies(kbdycl psdk)
 
diff --git a/reactos/kbdlayout.lds b/reactos/kbdlayout.lds
new file mode 100644 (file)
index 0000000..d31fc73
--- /dev/null
@@ -0,0 +1,35 @@
+SECTIONS
+{
+  .data __image_base__ + __section_alignment__ :
+  {
+    *(.data)
+    *(SORT(.data*))
+    *(.rdata)
+    *(SORT(.rdata*))
+    *(.text)
+    *(SORT(.text*))
+    *(.bss)
+    *(COMMON)
+  }
+
+  .rsrc BLOCK(__section_alignment__) :
+  {
+    *(.rsrc)
+    *(SORT(.rsrc$*))
+  }
+
+  .reloc BLOCK(__section_alignment__) :
+  {
+    *(.reloc)
+  }
+
+  .edata BLOCK(__section_alignment__) :
+  {
+    *(.edata)
+  }
+
+  /DISCARD/ :
+  {
+    *(*)
+  }
+}