IA64 to AMD64 conversion (Linux) - Unix

This is a discussion on IA64 to AMD64 conversion (Linux) - Unix ; Hi there I have a shared object file which was built on IA64 (Itanium). Is there any way I can convert and use it on AMD64? I've tried tinkering with objcopy, which looks like it might do what I want, ...

+ Reply to Thread
Results 1 to 6 of 6

Thread: IA64 to AMD64 conversion (Linux)

  1. IA64 to AMD64 conversion (Linux)

    Hi there

    I have a shared object file which was built on IA64 (Itanium). Is
    there any way I can convert and use it on AMD64? I've tried tinkering
    with objcopy, which looks like it might do what I want, but with no
    luck. And I don't really know enough about binary formats to tell
    whether what I'm trying to do is even possible.

    As an aside, this problem came up when trying to dlopen() the IA64
    shared object on an AMD64 machine -- it wouldn't, and gave an error.
    But programs built on AMD64 seem to run fine on IA64, so I'm a bit
    puzzled as to what's going on. And Google wasn't any help either.
    Any clues?

    Glenn

  2. Re: IA64 to AMD64 conversion (Linux)

    Glenn Hutchings schrieb:

    > Any clues?


    The IA-64 and Intel64 (= AMD64, formerly known as EM64T) architectures
    are *fundamentally* different - although they sound alike. Without
    telling us how you compiled the programs, there is no telling on why it
    worked. Usually, you will have to recompile from source for the target
    platform.

    Try to use "file" on the binaries to clear things a little up. Maybe do
    a "objdump -d" to see what code has been generated.

    Greetings,
    Johannes

    --
    "Viele der Theorien der Mathematiker sind falsch und klar
    Gotteslästerlich. Ich vermute, dass diese falschen Theorien genau
    deshalb so geliebt werden." -- Prophet und Visionär Hans Joss aka
    HJP in de.sci.mathematik <4740ad67$0$3811$5402220f@news.sunrise.ch>

  3. Re: IA64 to AMD64 conversion (Linux)

    Johannes Bauer wrote:
    > Glenn Hutchings schrieb:
    >
    >> As an aside, this problem came up when trying to dlopen() the IA64
    >> shared object on an AMD64 machine -- it wouldn't, and gave an error.
    >> But programs built on AMD64 seem to run fine on IA64, so I'm a bit
    >> puzzled as to what's going on. And Google wasn't any help either.
    >> Any clues?

    >
    > The IA-64 and Intel64 (= AMD64, formerly known as EM64T) architectures
    > are *fundamentally* different - although they sound alike. Without
    > telling us how you compiled the programs, there is no telling on why it
    > worked. Usually, you will have to recompile from source for the target
    > platform.


    Code compiled on AMD64 running on an IA64 box isn't necessarily that big
    of a surprise. As I recall, most, if not all, Itanium (IA64) boxes
    include IA32-EL, a dynamic binary translator that takes x86 code and
    translates it to IA64 vector instructions. If the files that are
    working fine were compiled with gcc -m32, that would explain it; if they
    were actually compiled as 64 bit binaries, maybe there have been updates
    to IA32-EL to support EM64T instructions too.

    -dan

  4. Re: IA64 to AMD64 conversion (Linux)

    Glenn Hutchings did eloquently scribble:
    > Hi there


    > I have a shared object file which was built on IA64 (Itanium). Is
    > there any way I can convert and use it on AMD64? I've tried tinkering
    > with objcopy, which looks like it might do what I want, but with no
    > luck. And I don't really know enough about binary formats to tell
    > whether what I'm trying to do is even possible.


    IA64 is a completely different machine language.
    It's very difficult to decompile and recompile.
    Better to get the source code and compile it for the correct platform.

    > As an aside, this problem came up when trying to dlopen() the IA64
    > shared object on an AMD64 machine -- it wouldn't, and gave an error.


    Of course it did.
    IA64 is an utterly different platform in every way to AMD64.

    > But programs built on AMD64 seem to run fine on IA64, so I'm a bit
    > puzzled as to what's going on. And Google wasn't any help either.
    > Any clues?


    Does IA64 perhaps have an emulation layer to handle x86?
    --
    __________________________________________________ ____________________________
    | spike1@freenet.co.uk | |
    |Andrew Halliwell BSc(hons)| "ARSE! GERLS!! DRINK! DRINK! DRINK!!!" |
    | in | "THAT WOULD BE AN ECUMENICAL MATTER!...FECK!!!! |
    | Computer Science | - Father Jack in "Father Ted" |
    ------------------------------------------------------------------------------

  5. Re: IA64 to AMD64 conversion (Linux)

    On Dec 3, 8:16 pm, Dan Upton wrote:
    > Code compiled on AMD64 running on an IA64 box isn't necessarily that big
    > of a surprise. As I recall, most, if not all, Itanium (IA64) boxes
    > include IA32-EL, a dynamic binary translator that takes x86 code and
    > translates it to IA64 vector instructions. If the files that are
    > working fine were compiled with gcc -m32, that would explain it; if they
    > were actually compiled as 64 bit binaries, maybe there have been updates
    > to IA32-EL to support EM64T instructions too.


    That would explain why my programs run OK. And I guess the
    translation /isn't/ being done when shared objects are loaded up by
    dlopen().

    Thanks to all for their replies; at least I can close this off as a
    dead end.

    Glenn

  6. Re: IA64 to AMD64 conversion (Linux)

    spike1 wrote:

    > Does IA64 perhaps have an emulation layer to handle x86?


    IA-32 Execution Layer
    http://www.intel.com/cd/ids/develope...nium/66007.htm

+ Reply to Thread