Document how to use the linker to create a resource only DLL.
PR 30359 * ld.texi (WIN32): Document how to create a resource only DLL.
This commit is contained in:
parent
0e759f232b
commit
d1792f72bf
2 changed files with 38 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2023-05-16 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR 30359
|
||||||
|
* ld.texi (WIN32): Document how to create a resource only DLL.
|
||||||
|
|
||||||
2023-05-16 Nick Clifton <nickc@redhat.com>
|
2023-05-16 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* ld.texi (-Ur): Clarify the actions of this option.
|
* ld.texi (-Ur): Clarify the actions of this option.
|
||||||
|
|
33
ld/ld.texi
33
ld/ld.texi
|
@ -8556,6 +8556,39 @@ archive. The cygwin and mingw ports of @command{ld} have specific
|
||||||
support for creating such libraries provided with the
|
support for creating such libraries provided with the
|
||||||
@samp{--out-implib} command-line option.
|
@samp{--out-implib} command-line option.
|
||||||
|
|
||||||
|
@item Resource only DLLs
|
||||||
|
It is possible to create a DLL that only contains resources, ie just a
|
||||||
|
@samp{.rsrc} section, but in order to do so a custom linker script
|
||||||
|
must be used. This is because the built-in default linker scripts
|
||||||
|
will always create @samp{.text} amd @samp {.idata} sections, even if
|
||||||
|
there is no input to go into them.
|
||||||
|
|
||||||
|
The script should look like this, although the @code{OUTPUT_FORMAT}
|
||||||
|
should be changed to match the desired format.
|
||||||
|
|
||||||
|
@example
|
||||||
|
OUTPUT_FORMAT(pei-i386)
|
||||||
|
SECTIONS
|
||||||
|
@{
|
||||||
|
. = SIZEOF_HEADERS;
|
||||||
|
. = ALIGN(__section_alignment__);
|
||||||
|
.rsrc __image_base__ + __section_alignment__ : ALIGN(4)
|
||||||
|
@{
|
||||||
|
KEEP (*(.rsrc))
|
||||||
|
KEEP (*(.rsrc$*))
|
||||||
|
@}
|
||||||
|
/DISCARD/ : @{ *(*) @}
|
||||||
|
@}
|
||||||
|
@end example
|
||||||
|
|
||||||
|
With this script saved to a file called, eg @file{rsrc.ld}, a command
|
||||||
|
line like this can be used to create the resource only DLL
|
||||||
|
@file{rsrc.dll} from an input file called @file{rsrc.o}:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
ld -dll --subsystem windows -e 0 -s rsrc.o -o rsrc.dll -T rsrc.ld
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
@item exporting DLL symbols
|
@item exporting DLL symbols
|
||||||
@cindex exporting DLL symbols
|
@cindex exporting DLL symbols
|
||||||
The cygwin/mingw @command{ld} has several ways to export symbols for dll's.
|
The cygwin/mingw @command{ld} has several ways to export symbols for dll's.
|
||||||
|
|
Loading…
Add table
Reference in a new issue