On 04/04/11 10:15, Valery Reznic wrote:
Hello. I am trying to make relocatable linking on x86-64 box for objects in 
format i386

Naive

ld -r file1.o file2.o -o output.o

produce
ld: Relocatable linking with relocations from format elf32-i386 (file1.o) to 
format elf64-x86-64 (output.o) is not supported

But even when I add --oformat situation not improved:

ld --output-format elf32-i386 -r file1.o file2.o -o output.o
ld: Relocatable linking with relocations from format elf32-i386 (file1.o) to 
format elf32-i386 (output.o) is not supported

So linker correctly recognize what input and output format should be,
but for some reason don't want do it.

Do you have any ideas if it can be done at all and how?
Can't. You're trying to link objects compiled for different machine codes. Tis not the linking stage that is wrong.

While it is possible to run both machine codes on your computer, they must run in different processes (the kernel actually treats x86 and amd64 codes differently when it sets up the registers for the context switch), and thus you cannot link them into a single executable, cannot dynamically load one from the other, and cannot have two threads with different types. Your only option for interaction is RPC of some sort (or recompile one of them).

Shachar

--
Shachar Shemesh
Lingnu Open Source Consulting Ltd.
http://www.lingnu.com


_______________________________________________
Linux-il mailing list
[email protected]
http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il

Reply via email to