added linker script to assure correct order of sections
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4122 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
05d2a3a979
commit
5ed1ef2bb8
1 changed files with 26 additions and 0 deletions
|
@ -80,6 +80,32 @@ util_env.Append(LINKFLAGS = '$ALIGN_FLAG') # 512 bytes align
|
||||||
|
|
||||||
### weird GCC requirements
|
### weird GCC requirements
|
||||||
|
|
||||||
|
#
|
||||||
|
# GCC puts new PE sections, added by code, between other sections.
|
||||||
|
# This is not good for the .ndata section because makensis changes
|
||||||
|
# its size dynamically. This is not good if RVAs to sections below
|
||||||
|
# it are saved in other places. The RVAs will point to garbage.
|
||||||
|
#
|
||||||
|
# To fix this, a linker script is provided. The linker script makes
|
||||||
|
# sure the sections will be written in the correct order.
|
||||||
|
#
|
||||||
|
|
||||||
|
script_path = File('#.sconf_temp/linker_script').path
|
||||||
|
open(script_path, 'w').write("""
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.text : { *(.text) }
|
||||||
|
.data : { *(.data) }
|
||||||
|
.rdata : { *(.rdata) }
|
||||||
|
.bss : { *(.bss) }
|
||||||
|
.idata : { *(.idata) }
|
||||||
|
.ndata BLOCK(__section_alignment__) : { [ .ndata ] }
|
||||||
|
.rsrc : { *(.rsrc) }
|
||||||
|
}
|
||||||
|
""")
|
||||||
|
|
||||||
|
stub_env.Append(LINKFLAGS = '-Wl,%s' % script_path)
|
||||||
|
|
||||||
#
|
#
|
||||||
# GCC requires some functions from the CRT to be present, if certain
|
# GCC requires some functions from the CRT to be present, if certain
|
||||||
# operations are done. For example, if a small string is assigned to
|
# operations are done. For example, if a small string is assigned to
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue