x86: Fix car_uninit weak symbol definition
Since commit 80df194f01
("x86: detect unsupported relocation types"),
an error message is seen on QEMU x86 target during boot:
do_elf_reloc_fixups32: unsupported relocation type 0x1 at fff841f0, offset = 0xfff00087
do_elf_reloc_fixups32: unsupported relocation type 0x2 at fff841f8, offset = 0xfff00091
Check offset 0xfff00087 and 0xfff00091 in the u-boot ELF image,
fff00087 000df401 R_386_32 00000000 car_uninit
fff00091 000df402 R_386_PC32 00000000 car_uninit
we see R_386_32 and R_386_PC32 relocation type is generated for
symbol car_uninit, which is declared as a weak symbol in start.S.
However the actual weak symbol implementation ends up nowhere. As
we can see below, it's *UND*.
$ objdump -t u-boot | grep car_uninit
00000000 w *UND* 00000000 car_uninit
With this fix, it is normal now.
$ objdump -t u-boot | grep car_uninit
fff00094 w F .text.start 00000001 car_uninit
Reported-by: Hannes Schmelzer <hannes@schmelzer.or.at>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Tested-by: Hannes Schmelzer <oe5hpm@oevsv.at>
This commit is contained in:
parent
87bb4fe869
commit
3d2be8003c
@ -16,6 +16,7 @@
|
||||
#include <asm/processor-flags.h>
|
||||
#include <generated/generic-asm-offsets.h>
|
||||
#include <generated/asm-offsets.h>
|
||||
#include <linux/linkage.h>
|
||||
|
||||
.section .text.start
|
||||
.code32
|
||||
@ -184,13 +185,8 @@ board_init_f_r_trampoline:
|
||||
movl %eax, %esp
|
||||
|
||||
/* See if we need to disable CAR */
|
||||
.weak car_uninit
|
||||
movl $car_uninit, %eax
|
||||
cmpl $0, %eax
|
||||
jz 1f
|
||||
|
||||
call car_uninit
|
||||
1:
|
||||
|
||||
/* Re-enter U-Boot by calling board_init_f_r() */
|
||||
call board_init_f_r
|
||||
|
||||
@ -199,6 +195,10 @@ die:
|
||||
jmp die
|
||||
hlt
|
||||
|
||||
WEAK(car_uninit)
|
||||
ret
|
||||
ENDPROC(car_uninit)
|
||||
|
||||
blank_idt_ptr:
|
||||
.word 0 /* limit */
|
||||
.long 0 /* base */
|
||||
|
Loading…
Reference in New Issue
Block a user