IA64 PE/COFF (efi-app-ia64) image has bad VirtualSize field
Brian J. Johnson
bjohnson@sgi.com
Mon Jan 5 19:49:00 GMT 2004
On Fri, 2 Jan 2004, Nick Clifton wrote:
>
> Not really. Internally the VirtualSize value is stored as the s_paddr
> field of the bfd section structure, so my guess would be that at some
> point this field is being set to zero.
>
> > and how to fix it?
>
> You could put a watchpoint on the relevant s_paddr field and find out
> when/where it is set to zero.
>
> If you can provide a *small* reproducible test case and post it to
> this list then we may be able to investigate ourselves.
Small reproducible test case attached below. When run with binutils
2.11.90.0.8, the VirtualSize field is nonzero. When run with binutils
2.14.90.0.4, the VirtualSize field is zero.
Brian J. Johnson
--------------------------------------------------------------------
#!/bin/sh
set -x
cat > try.c <<END
#include <efi.h>
#include <efilib.h>
EFI_STATUS
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *system_tab)
{
return EFI_SUCCESS;
}
END
gcc -I. -I/usr/include/efi -I/usr/include/efi/ia64 -I/usr/include/efi/protocol -O2 -fpic -fshort-wchar -Wall -fno-merge-constants -mfixed-range=f32-f127 -DCONFIG_ia64 -c try.c -o try.o
ld -nostdlib -T /usr/lib/gnuefi/elf_ia64_efi.lds -shared -Bsymbolic -L/usr/lib /usr/lib/gnuefi/crt0-efi-ia64.o try.o -o try.so -L/usr/lib -lefi -lgnuefi
objcopy -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .reloc --target=efi-app-ia64 try.so try.efi
More information about the Binutils
mailing list