linux/arch/s390
Vasily Gorbik 5a2e1853d6 s390: avoid vmlinux segments overlap
Currently .vmlinux.info section of uncompressed vmlinux elf image is
included into the data segment and load address specified as 0. That
extends data segment to address 0 and makes "text" and "data" segments
overlap.
Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000001000 0x0000000000100000 0x0000000000100000
                 0x0000000000ead03c 0x0000000000ead03c  R E    0x1000
  LOAD           0x0000000000eaf000 0x0000000000000000 0x0000000000000000
                 0x0000000001a13400 0x000000000233b520  RWE    0x1000
  NOTE           0x0000000000eae000 0x0000000000fad000 0x0000000000fad000
                 0x000000000000003c 0x000000000000003c         0x4

 Section to Segment mapping:
  Segment Sections...
   00     .text .notes
   01     .rodata __ksymtab __ksymtab_gpl __ksymtab_strings __param
   __modver .data..ro_after_init __ex_table .data __bug_table .init.text
   .exit.text .exit.data .altinstructions .altinstr_replacement
   .nospec_call_table .nospec_return_table .boot.data .init.data
   .data..percpu .bss .vmlinux.info
   02     .notes

Later when vmlinux.bin is produced from vmlinux, .vmlinux.info section
is removed. But elf vmlinux file, even though it is not bootable anymore,
used for debugging and loadable segments overlap should be avoided.

Utilize special ":NONE" phdr specification to avoid adding .vmlinux.info
into loadable data segment. Also set .vmlinux.info section type to INFO,
which allows to get a not-loadable info CONTENTS section.

Since minimal supported version of binutils 2.20 does not have
--dump-section objcopy option, make .vmlinux.info section loadable during
info.bin creation to get actual section contents.

Reported-by: Philipp Rudo <prudo@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2018-10-26 10:19:40 +02:00
..
appldata s390/appldata: do not use stack buffers for hardware data 2018-10-09 11:20:52 +02:00
boot s390: avoid vmlinux segments overlap 2018-10-26 10:19:40 +02:00
configs crypto: x86 - remove SHA multibuffer routines and mcryptd 2018-09-04 11:37:04 +08:00
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2018-10-25 16:43:35 -07:00
hypfs s390/hypfs: do not use stack buffers for hardware data 2018-10-09 11:20:53 +02:00
include KVM updates for v4.20 2018-10-25 17:57:35 -07:00
kernel s390: avoid vmlinux segments overlap 2018-10-26 10:19:40 +02:00
kvm KVM: s390/vfio-ap: Fixes and enhancements for vfio-ap 2018-10-13 12:00:26 +02:00
lib s390/kasan: avoid user access code instrumentation 2018-10-09 11:21:21 +02:00
mm KVM updates for v4.20 2018-10-25 17:57:35 -07:00
net Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2018-08-13 19:07:17 -07:00
numa s390/numa: move initial setup of node_to_cpumask_map 2018-08-01 07:48:33 +02:00
oprofile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pci s390/pci: remove fmb address from debug output 2018-08-16 14:49:13 +02:00
purgatory s390: clean up stacks setup 2018-09-20 13:20:29 +02:00
scripts s390/build: add *.o.chkbss files to targets list 2018-07-02 12:32:23 +02:00
tools KVM: s390: CPU model support for AP virtualization 2018-09-28 15:50:11 +02:00
defconfig Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2018-10-25 16:43:35 -07:00
Kbuild s390/kexec_file: Add purgatory 2018-04-16 09:10:22 +02:00
Kconfig KVM updates for v4.20 2018-10-25 17:57:35 -07:00
Kconfig.debug Kconfig: consolidate the "Kernel hacking" menu 2018-08-02 08:06:48 +09:00
Makefile s390/kasan: double the stack size 2018-10-09 11:21:21 +02:00