Files
linux/include/linux
Paul Burton 774c105ed8 binfmt_elf: allow arch code to examine PT_LOPROC ... PT_HIPROC headers
MIPS is introducing new variants of its O32 ABI which differ in their
handling of floating point, in order to enable a gradual transition
towards a world where mips32 binaries can take advantage of new hardware
features only available when configured for certain FP modes. In order
to do this ELF binaries are being augmented with a new section that
indicates, amongst other things, the FP mode requirements of the binary.
The presence & location of such a section is indicated by a program
header in the PT_LOPROC ... PT_HIPROC range.

In order to allow the MIPS architecture code to examine the program
header & section in question, pass all program headers in this range
to an architecture-specific arch_elf_pt_proc function. This function
may return an error if the header is deemed invalid or unsuitable for
the system, in which case that error will be returned from
load_elf_binary and upwards through the execve syscall.

A means is required for the architecture code to make a decision once
it is known that all such headers have been seen, but before it is too
late to return from an execve syscall. For this purpose the
arch_check_elf function is added, and called once, after all PT_LOPROC
to PT_HIPROC headers have been passed to arch_elf_pt_proc but before
the code which invoked execve has been lost. This enables the
architecture code to make a decision based upon all the headers present
in an ELF binary and its interpreter, as is required to forbid
conflicting FP ABI requirements between an ELF & its interpreter.

In order to allow data to be stored throughout the calls to the above
functions, struct arch_elf_state is introduced.

Finally a variant of the SET_PERSONALITY macro is introduced which
accepts a pointer to the struct arch_elf_state, allowing it to act
based upon state observed from the architecture specific program
headers.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/7679/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-11-24 07:45:02 +01:00
..
2014-11-18 13:23:31 +01:00
2014-09-22 16:48:47 +09:00
2014-10-03 15:28:18 -06:00
2014-10-14 09:00:44 -06:00
2014-09-26 15:05:15 -04:00
2014-09-19 09:29:32 -04:00
2014-10-21 00:51:01 +02:00
2014-08-01 22:35:55 +08:00
2014-07-08 13:36:52 -07:00
2014-06-26 15:46:55 -03:00
2014-09-23 11:10:20 -07:00
2014-09-26 15:05:15 -04:00
2014-10-09 11:35:48 +03:00
2014-10-08 16:01:41 -04:00
2014-08-07 14:40:08 -04:00
2014-08-06 18:01:24 -07:00
2014-09-25 16:07:15 +02:00
2014-06-06 16:08:13 -07:00
2014-09-29 15:37:01 -04:00
2014-09-01 13:48:59 +02:00
2014-07-22 21:55:45 +01:00
2014-10-14 02:18:13 +02:00
2014-10-09 22:25:58 -04:00
2014-09-24 14:07:58 +02:00
2014-10-24 00:14:36 +02:00
2014-10-15 12:11:00 -04:00
2014-09-30 16:24:56 -04:00
2014-09-30 16:24:56 -04:00
2014-07-09 14:58:37 +01:00
2014-08-26 13:45:56 -04:00
2014-10-07 01:18:12 +02:00
2014-07-15 22:40:22 +02:00
2014-09-13 12:30:26 -04:00
2014-08-08 15:57:26 -07:00
2014-08-08 15:57:31 -07:00
2014-11-05 15:52:45 -05:00
2014-06-12 00:21:11 -04:00
2014-08-08 15:57:24 -07:00
2014-09-23 21:40:48 -07:00
2014-09-25 17:05:12 +02:00
2014-08-08 15:57:22 -07:00
2014-09-16 15:02:55 -06:00