bfd/
2003-03-22 H.J. Lu <hongjiu.lu@intel.com> PR ld/4210 * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Use the virtual address and virtual size of the last section for the image size. ld/testsuite/ 2003-03-22 H.J. Lu <hongjiu.lu@intel.com> PR ld/4210 * ld-pe/image_size.d: New file. * ld-pe/image_size.s: Likewise. * ld-pe/image_size.t: Likewise. * ld-pe/pe.exp: Run image_size.
This commit is contained in:
parent
0920dee7ba
commit
50572669e4
7 changed files with 59 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2003-03-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/4210
|
||||
* peXXigen.c (_bfd_XXi_swap_aouthdr_out): Use the virtual
|
||||
address and virtual size of the last section for the image
|
||||
size.
|
||||
|
||||
2007-03-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/4007
|
||||
|
|
|
@ -645,16 +645,22 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, void * in, void * out)
|
|||
in the virt_size field). Files have been seen (from MSVC
|
||||
5.0 link.exe) where the file size of the .data segment is
|
||||
quite small compared to the virtual size. Without this
|
||||
fix, strip munges the file. */
|
||||
fix, strip munges the file.
|
||||
|
||||
FIXME: We need to handle holes between sections, which may
|
||||
happpen when we covert from another format. We just use
|
||||
the virtual address and virtual size of the last section
|
||||
for the image size. */
|
||||
if (coff_section_data (abfd, sec) != NULL
|
||||
&& pei_section_data (abfd, sec) != NULL)
|
||||
isize += SA (FA (pei_section_data (abfd, sec)->virt_size));
|
||||
isize = (sec->vma - extra->ImageBase
|
||||
+ SA (FA (pei_section_data (abfd, sec)->virt_size)));
|
||||
}
|
||||
|
||||
aouthdr_in->dsize = dsize;
|
||||
aouthdr_in->tsize = tsize;
|
||||
extra->SizeOfHeaders = hsize;
|
||||
extra->SizeOfImage = SA (hsize) + isize;
|
||||
extra->SizeOfImage = isize;
|
||||
}
|
||||
|
||||
H_PUT_16 (abfd, aouthdr_in->magic, aouthdr_out->standard.magic);
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2003-03-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/4210
|
||||
* ld-pe/image_size.d: New file.
|
||||
* ld-pe/image_size.s: Likewise.
|
||||
* ld-pe/image_size.t: Likewise.
|
||||
|
||||
* ld-pe/pe.exp: Run image_size.
|
||||
|
||||
2007-03-22 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/4007
|
||||
|
|
9
ld/testsuite/ld-pe/image_size.d
Normal file
9
ld/testsuite/ld-pe/image_size.d
Normal file
|
@ -0,0 +1,9 @@
|
|||
#name: PE-COFF SizeOfImage
|
||||
#ld: -T image_size.t
|
||||
#objdump: -p
|
||||
#target: i*86-*-mingw32
|
||||
|
||||
.*: file format .*
|
||||
#...
|
||||
SizeOfImage 00004000
|
||||
#...
|
8
ld/testsuite/ld-pe/image_size.s
Normal file
8
ld/testsuite/ld-pe/image_size.s
Normal file
|
@ -0,0 +1,8 @@
|
|||
.text
|
||||
.global _start
|
||||
_start:
|
||||
.byte 1
|
||||
.global data
|
||||
.data
|
||||
data:
|
||||
.byte 2
|
15
ld/testsuite/ld-pe/image_size.t
Normal file
15
ld/testsuite/ld-pe/image_size.t
Normal file
|
@ -0,0 +1,15 @@
|
|||
SECTIONS
|
||||
{
|
||||
. = SIZEOF_HEADERS;
|
||||
. = ALIGN(__section_alignment__);
|
||||
.text __image_base__ + ( __section_alignment__ < 0x1000 ? . : __section_alignment__ ) :
|
||||
{
|
||||
*(.text)
|
||||
}
|
||||
. = . + 0x1000;
|
||||
.data BLOCK(__section_alignment__) :
|
||||
{
|
||||
*(.data)
|
||||
}
|
||||
/DISCARD/ : { *(.*) }
|
||||
}
|
|
@ -32,3 +32,5 @@ set pe_tests {
|
|||
}
|
||||
|
||||
run_ld_link_tests $pe_tests
|
||||
|
||||
run_dump_test "image_size"
|
||||
|
|
Loading…
Add table
Reference in a new issue