]> git.karo-electronics.de Git - karo-tx-linux.git/commit
s390: move _text symbol to address higher than zero
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Thu, 4 May 2017 07:42:22 +0000 (09:42 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 9 May 2017 08:44:38 +0000 (10:44 +0200)
commitd04a4c76f71dd5335f8e499b59617382d84e2b8d
tree08af1ed0632f3eed9646c44dc6e52daafea66db8
parent6423ef691c50568e56bb7e33a35bf9f8d6142d23
s390: move _text symbol to address higher than zero

The perf tool assumes that kernel symbols are never present at address
zero. In fact it assumes if functions that map symbols to addresses
return zero, that the symbol was not found.

Given that s390's _text symbol historically is located at address zero
this yields at least a couple of false errors and warnings in one of
perf's test cases about not present symbols ("perf test 1").

To fix this simply move the _text symbol to address 0x200, just behind
the initial psw and channel program located at the beginning of the
kernel image. This is now hard coded within the linker script.

I tried a nicer solution which moves the initial psw and channel
program into an own section. However that would move the symbols
within the "real" head.text section to different addresses, since the
".org" statements within head.S are relative to the head.text
section. If there is a new section in front, everything else will be
moved. Alternatively I could have adjusted all ".org" statements. But
this current solution seems to be the easiest one, since nobody really
cares where the _text symbol is actually located.

Reported-by: Zvonko Kosic <zkosic@linux.vnet.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/vmlinux.lds.S