## readelf -h xen-2.6.18-268.e15
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class:
ELF32 //why ELF32 ,it should be ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x100000
//as document , xen-kernel will be load physically address 0x100000
Start of program headers: 52 (bytes into file)
Start of section headers: 980552 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 1
Size of section headers: 40 (bytes)
Number of section headers: 3
Section header string table index: 2
b)## readelf -h xen-syms-2.6.18-268.el5
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64 // this is ELF64 .above is ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0xffff828c80100000 //why here is virtual address , and above 0x100000 is physical address ?
Start of program headers: 64 (bytes into file)
Start of section headers: 984784 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 1
Size of section headers: 64 (bytes)
Number of section headers: 22
Section header string table index: 21
---------------------------------
my question is that , what is xen-syms-2.6.18-268.el5(readelf result is virtual address) used for ? it seems that useless. grub.conf seems don't need it.
in xen/arch/x86/boot/head.S:
#undef bootsym_phys
#define sym_phys(sym) ((sym) - __XEN_VIRT_START
I know all symbols address should be virtual address , its physical address should be minus __XEN_VIRT_START
if want to check symbols ,
## objdump -t xen-syms-2.6.18-268.el5
xen-syms-2.6.18-268.el5: file format elf64-x86-64
SYMBOL TABLE:
no symbols
thanks very much for your comments!
-Bob Zhang