Commit 3334fda6 authored by Alexander Gordeev's avatar Alexander Gordeev Committed by Heiko Carstens
Browse files

s390/boot: simplify GOT handling



The end of GOT is calculated dynamically on boot. The size of GOT
is calculated on build from the start and end of GOT. Avoid both
calculations and use the end of GOT directly.

Acked-by: default avatarSumanth Korikkar <sumanthk@linux.ibm.com>
Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent a795e5d2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -30,8 +30,8 @@ struct vmlinux_info {
	unsigned long rela_dyn_start;
	unsigned long rela_dyn_end;
#else
	unsigned long got_off;
	unsigned long got_size;
	unsigned long got_start;
	unsigned long got_end;
#endif
	unsigned long amode31_size;
	unsigned long init_mm_off;
+3 −5
Original line number Diff line number Diff line
@@ -221,12 +221,9 @@ static void kaslr_adjust_got(unsigned long offset)
	 * Even without -fPIE, Clang still uses a global offset table for some
	 * reason.  Adjust the GOT entries.
	 */
	for (entry = (u64 *)vmlinux.got_off;
	     entry < (u64 *)(vmlinux.got_off + vmlinux.got_size);
	     entry++) {
	for (entry = (u64 *)vmlinux.got_start; entry < (u64 *)vmlinux.got_end; entry++)
		*entry += offset;
}
}
#endif

/*
@@ -366,7 +363,8 @@ static void kaslr_adjust_vmlinux_info(unsigned long offset)
	vmlinux.rela_dyn_end += offset;
	vmlinux.dynsym_start += offset;
#else
	vmlinux.got_off += offset;
	vmlinux.got_start += offset;
	vmlinux.got_end += offset;
#endif
	vmlinux.init_mm_off += offset;
	vmlinux.swapper_pg_dir_off += offset;
+2 −2
Original line number Diff line number Diff line
@@ -244,8 +244,8 @@ SECTIONS
		QUAD(__rela_dyn_start)				/* rela_dyn_start */
		QUAD(__rela_dyn_end)				/* rela_dyn_end */
#else
		QUAD(__got_start)				/* got_off */
		QUAD(__got_end - __got_start)			/* got_size */
		QUAD(__got_start)				/* got_start */
		QUAD(__got_end)					/* got_end */
#endif
		QUAD(_eamode31 - _samode31)			/* amode31_size */
		QUAD(init_mm)