diff mbox series

[kvm-unit-tests,3/7] x86: Makefile: Fix linkage of realmode on x86_64-elf binutils

Message ID 20200810130618.16066-4-r.bolshakov@yadro.com (mailing list archive)
State New, archived
Headers show
Series Add support for generic ELF cross-compiler | expand

Commit Message

Roman Bolshakov Aug. 10, 2020, 1:06 p.m. UTC
link spec [1][2] is empty on x86_64-elf-gcc, i.e. -m32 is not propogated
to the linker as "-m elf_i386" and that causes the error:

  /usr/local/opt/x86_64-elf-binutils/bin/x86_64-elf-ld: i386 architecture
  of input file `x86/realmode.o' is incompatible with i386:x86-64 output

1. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
2. https://gcc.gnu.org/onlinedocs/gccint/Driver.html

Cc: Cameron Esfahani <dirty@apple.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
---
 x86/Makefile.common | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Thomas Huth Aug. 28, 2020, 5:44 a.m. UTC | #1
On 10/08/2020 15.06, Roman Bolshakov wrote:
> link spec [1][2] is empty on x86_64-elf-gcc, i.e. -m32 is not propogated
> to the linker as "-m elf_i386" and that causes the error:
> 
>   /usr/local/opt/x86_64-elf-binutils/bin/x86_64-elf-ld: i386 architecture
>   of input file `x86/realmode.o' is incompatible with i386:x86-64 output
> 
> 1. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
> 2. https://gcc.gnu.org/onlinedocs/gccint/Driver.html
> 
> Cc: Cameron Esfahani <dirty@apple.com>
> Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
> ---
>  x86/Makefile.common | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/x86/Makefile.common b/x86/Makefile.common
> index 2ea9c9f..8230ac0 100644
> --- a/x86/Makefile.common
> +++ b/x86/Makefile.common
> @@ -66,7 +66,8 @@ test_cases: $(tests-common) $(tests)
>  $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/x86 -I lib
>  
>  $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o
> -	$(CC) -m32 -nostdlib -o $@ -Wl,-T,$(SRCDIR)/$(TEST_DIR)/realmode.lds $^
> +	$(CC) -m32 -nostdlib -o $@ -Wl,-m,elf_i386 \
> +	      -Wl,-T,$(SRCDIR)/$(TEST_DIR)/realmode.lds $^
>  
>  $(TEST_DIR)/realmode.o: bits = 32

Reviewed-by: Thomas Huth <thuth@redhat.com>
diff mbox series

Patch

diff --git a/x86/Makefile.common b/x86/Makefile.common
index 2ea9c9f..8230ac0 100644
--- a/x86/Makefile.common
+++ b/x86/Makefile.common
@@ -66,7 +66,8 @@  test_cases: $(tests-common) $(tests)
 $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I $(SRCDIR)/lib -I $(SRCDIR)/lib/x86 -I lib
 
 $(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o
-	$(CC) -m32 -nostdlib -o $@ -Wl,-T,$(SRCDIR)/$(TEST_DIR)/realmode.lds $^
+	$(CC) -m32 -nostdlib -o $@ -Wl,-m,elf_i386 \
+	      -Wl,-T,$(SRCDIR)/$(TEST_DIR)/realmode.lds $^
 
 $(TEST_DIR)/realmode.o: bits = 32