mirror of
https://github.com/reactos/reactos.git
synced 2024-10-30 11:35:58 +00:00
db897ac621
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
36 lines
437 B
Plaintext
36 lines
437 B
Plaintext
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/ :
|
|
{
|
|
*(*)
|
|
}
|
|
}
|