This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Hints on investigating 'invalid ELF header' on ia64-hp-openvms



I have the following [1] run from Linux readelf on the simple.o created from VMS, and the following [2] from analyze/object run from VMS.

[1] $ readelf -a simple.o
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 0d 02 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            VMS - OpenVMS
  ABI Version:                       2
  Type:                              REL (Relocatable file)
  Machine:                           Intel IA-64
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          496 (bytes into file)
  Flags:                             0x1000010, 64-bit
  Size of this header:               72 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           64 (bytes)
  Number of section headers:         13
  Section header string table index: 10

[2] $ analyze/object simple.o

[...] skipped

This is an OpenVMS IA64 (Elf format) object file

Elf Header Information, at file address 0.

    Class:                                      ELF-64
    Data:                                       Little-endian byte order
    Elf Header Version:                         1.
    OS ABI:                                     OpenVMS
    OS ABI Version:                             2.
    Type:                                       Object
    Machine Architecture:                       IA_64
    Elf File Version:                           1.
    VMS Completion Code:                        SUCCESS

[...] skipped

On 07/29/2015 07:18 PM, h.becker wrote:
The vms linker complains about the 'magic number' of your object module
SIMPLE.O. Use readelf or the vms tool analyze/object to find/compare
what the magic should be - and keep in mind, that on vms object modules
can be concatenated: which means, in an object file the first byte after
an object module is interpreted as the start of the next ELF header:

$ readelf -h shr.obj
ELF Header:
   Magic:   7f 45 4c 46 02 01 01 0d 02 00 00 00 00 00 00 00
   Class:                             ELF64
   Data:                              2's complement, little endian
   Version:                           1 (current)
   OS/ABI:                            VMS - OpenVMS
   ABI Version:                       2
   Type:                              REL (Relocatable file)
   Machine:                           Intel IA-64
   Version:                           0x1
   Entry point address:               0x0
   Start of program headers:          0 (bytes into file)
   Start of section headers:          1648 (bytes into file)
   Flags:                             0x1000014, 64-bit, vms_linkages
   Size of this header:               64 (bytes)
   Size of program headers:           0 (bytes)
   Number of program headers:         0
   Size of section headers:           64 (bytes)
   Number of section headers:         18
   Section header string table index: 1
$



On 07/29/2015 10:51 AM, David SAUVAGE - AdaLabs Ltd wrote:

Hi,

Using a crossed native build of binutils running on ia64-hp-openvms,
object file built [2] from assembly file [3] is invalid [1]

As the cross binutils build produces valid object files on the target,
the issue seems to be related to the crossed native build process.
I am looking for hints on how to further investigate and solve this issue.

Best regards,

[1]

||$ MCR DISK$USERS:[ADALABS]ld.exe -v simple.o -o simple.exe
$ link /exe=SIMPLE.EXE simple.opt_tmpfile/opt
|%ILINK-E-INVLDHDR, invalid ELF header; field 'ehdr$b_ei_mag0' has
invalid value
%X00
         module: <unassigned>
         file: DISK$USERS:[ADALABS]SIMPLE.O;6|


[2]

|$ MCR DISK$USERS:[ADALABS]as.exe  -o simple.o simple.s|


[3] simple.s

|     .file    "simple.c"
     .pred.safe_across_calls p1-p5,p16-p63
     .text
     .align 16
     .global main#
     .type    main#, @function
     .proc main#
main:
     .prologue 2, 2
     .vframe r2
     mov r2 = r12
     .body
     nop 0
     ;;
     .restore sp
     mov r12 = r2
     br.ret.sptk.many b0
     ;;
     .endp main#
     .ident    "GCC: (GNU) "|







Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]