• Philipp Rudo's avatar
    s390/purgatory: Remove duplicate variable definitions · 287d6070
    Philipp Rudo authored
    Currently there are some variables in the purgatory (e.g. kernel_entry)
    which are defined twice, once in assembler- and once in c-code. The reason
    for this is that these variables are set during purgatory load, where
    sanity checks on the corresponding Elf_Sym's are made, while they are used
    in assembler-code. Thus adding a second definition in c-code is a handy
    workaround to guarantee correct Elf_Sym's are created.
    
    When the purgatory is compiled with -fcommon (default for gcc on s390) this
    is no problem because both symbols are merged by the linker. However this
    is not required by ISO C and when the purgatory is built with -fno-common
    the linker fails with errors like
    
    arch/s390/purgatory/purgatory.o:(.bss+0x18): multiple definition of `kernel_entry'
    arch/s390/purgatory/head.o:/.../arch/s390/purgatory/head.S:230: first defined here
    
    Thus remove the duplicate definitions and add the required size and type
    information to the assembler definition. Also add -fno-common to the
    command line options to prevent similar hacks in the future.
    Signed-off-by: default avatarPhilipp Rudo <prudo@linux.ibm.com>
    Acked-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    287d6070
purgatory.c 734 Bytes