On Thu, Dec 09, 2021 at 12:01:42PM +0100, Philipp Rudo wrote: > On Thu, 9 Dec 2021 08:38:17 +0100 > Alexander Egorenkov <egorenar@xxxxxxxxxxxxx> wrote: > > > Starting with gcc 11.3, the C compiler will generate PLT-relative function > > calls even if they are local and do not require it. Later on during linking, > > the linker will replace all PLT-relative calls to local functions with > > PC-relative ones. Unfortunately, the purgatory code of kexec/kdump is > > not being linked as a regular executable or shared library would have been, > > and therefore, all PLT-relative addresses remain in the generated purgatory > > object code unresolved. This leads to the situation where the purgatory > > code is being executed during kdump with all PLT-relative addresses > > unresolved. And this results in endless loops within the purgatory code. > > > > Furthermore, the clang C compiler has always behaved like described above > > and this commit should fix kdump for kernels built with the latter. > > > > Because the purgatory code is no regular executable or shared library, > > contains only calls to local functions and has no PLT, all R_390_PLT32DBL > > relocation entries can be resolved just like a R_390_PC32DBL one. ... > > Signed-off-by: Alexander Egorenkov <egorenar@xxxxxxxxxxxxx> > > Reported-by: Tao Liu <ltao@xxxxxxxxxx> > > Suggested-by: Philipp Rudo <prudo@xxxxxxxxxx> > > Thanks! > > Reviewed-by: Philipp Rudo <prudo@xxxxxxxxxx> Applied, thanks!