Re: [PATCH]: Remove CONFIG_BUILD_ELF64 entirely

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kumba wrote:
> Thiemo Seufer wrote:
> >>The replacement is CONFIG_BUILD_ELF64=n (it adds -msym32 option) +
> >>CONFIG_BOOT_ELF32=y (it adds vmlinux.32 to "all" target).  Not
> >>CONFIG_BUILD_ELF64=y.
> >>
> >>CONFIG_BUILD_ELF64=n enables -msym32 option, which means the kernel
> >>load address should be CKSEG0.
> >
> >This sounds wrong to me, since CONFIG_BUILD_ELF64=n will build a
> >ELF64 kernel (from compiler/linker POV). This tricks people into
> >believing they need no ELF64 capable toolchain for a 64bit kernel.
> >
> >IMO -msym32 should depend on:
> >    ((Compiler can do -msym32)
> >     && (load address is in ckseg0)
> >     && CONFIG_64BIT)
> >
> >which obsoletes the whole CONFIG_BUILD_ELF* stuff.
> >
> >
> >Thiemo
> 
> Going on this, I propose the following patch to fix our lovely SGI/Cobalt 
> systems, and eliminate a confusing Kconfig option whose time is likely long 
> since passed.  The attached patch achieves the following:
> 
> * Introduces a new flag for IP22, IP32, and Cobalt called 
> 'kernel_loads_in_ckseg0'.
> * Introduces a new header, mem-layout.h, in 
> include/asm-mips/mach-<platform>/ for this flag for these three systems, 
> and a dummy entry for mach-generic, calling it in where appropriate.
> * Removes CONFIG_BUILD_ELF64 from Kconfig, Makefile, and several 
> defconfigs, and replaces its few references in header files with 
> 'kernel_loads_in_ckseg0', with appropriate flips in logic (except in 
> stackframe.h).
> * Includes Frank's patch to eliminate the need for -mno-explicit-relocs.

[snip]
> diff -Naurp mipslinux/arch/mips/Makefile mipslinux.ckseg0/arch/mips/Makefile
> --- mipslinux/arch/mips/Makefile	2007-03-17 21:12:06.000000000 -0400
> +++ mipslinux.ckseg0/arch/mips/Makefile	2007-03-25 02:15:22.000000000 -0400
> @@ -60,11 +60,6 @@ vmlinux-32		= vmlinux.32
>  vmlinux-64		= vmlinux
>  
>  cflags-y		+= -mabi=64
> -ifdef CONFIG_BUILD_ELF64
> -cflags-y		+= $(call cc-option,-mno-explicit-relocs)
> -else
> -cflags-y		+= $(call cc-option,-msym32)
> -endif
>  endif

AFAICS this loses -mno-explicit-relocs completely, but it is needed for
all non-ckseg0 CONFIG_64BIT builds.


Thiemo


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux