Skip to content

Commit 06d2bfe

Browse files
Christoph HellwigGreg Ungerer
authored andcommitted
binfmt_flat: remove the uapi <linux/flat.h> header
The split between the two flat.h files is completely arbitrary, and the uapi version even contains CONFIG_ ifdefs that can't work in userspace. The only userspace program known to use the header is elf2flt, and it ships with its own version of the combined header. Use the chance to move the <asm/flat.h> inclusion out of this file, as it is in no way needed for the format defintion, but just for the binfmt implementation. Signed-off-by: Christoph Hellwig <hch@lst.de> Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
1 parent bdd15a2 commit 06d2bfe

File tree

3 files changed

+42
-63
lines changed

3 files changed

+42
-63
lines changed

fs/binfmt_flat.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#include <asm/unaligned.h>
4343
#include <asm/cacheflush.h>
4444
#include <asm/page.h>
45+
#include <asm/flat.h>
4546

4647
#ifndef flat_get_relocate_addr
4748
#define flat_get_relocate_addr(rel) (rel)

include/linux/flat.h

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,47 @@
1010
#ifndef _LINUX_FLAT_H
1111
#define _LINUX_FLAT_H
1212

13-
#include <uapi/linux/flat.h>
14-
#include <asm/flat.h>
13+
#define FLAT_VERSION 0x00000004L
14+
15+
#ifdef CONFIG_BINFMT_SHARED_FLAT
16+
#define MAX_SHARED_LIBS (4)
17+
#else
18+
#define MAX_SHARED_LIBS (1)
19+
#endif
20+
21+
/*
22+
* To make everything easier to port and manage cross platform
23+
* development, all fields are in network byte order.
24+
*/
25+
26+
struct flat_hdr {
27+
char magic[4];
28+
unsigned long rev; /* version (as above) */
29+
unsigned long entry; /* Offset of first executable instruction
30+
with text segment from beginning of file */
31+
unsigned long data_start; /* Offset of data segment from beginning of
32+
file */
33+
unsigned long data_end; /* Offset of end of data segment
34+
from beginning of file */
35+
unsigned long bss_end; /* Offset of end of bss segment from beginning
36+
of file */
37+
38+
/* (It is assumed that data_end through bss_end forms the bss segment.) */
39+
40+
unsigned long stack_size; /* Size of stack, in bytes */
41+
unsigned long reloc_start; /* Offset of relocation records from
42+
beginning of file */
43+
unsigned long reloc_count; /* Number of relocation records */
44+
unsigned long flags;
45+
unsigned long build_date; /* When the program/library was built */
46+
unsigned long filler[5]; /* Reservered, set to zero */
47+
};
48+
49+
#define FLAT_FLAG_RAM 0x0001 /* load program entirely into RAM */
50+
#define FLAT_FLAG_GOTPIC 0x0002 /* program is PIC with GOT */
51+
#define FLAT_FLAG_GZIP 0x0004 /* all but the header is compressed */
52+
#define FLAT_FLAG_GZDATA 0x0008 /* only data/relocs are compressed (for XIP) */
53+
#define FLAT_FLAG_KTRACE 0x0010 /* output useful kernel trace for debugging */
1554

1655
/*
1756
* While it would be nice to keep this header clean, users of older
@@ -22,8 +61,6 @@
2261
* with the format above, except to fix bugs with old format support.
2362
*/
2463

25-
#include <asm/byteorder.h>
26-
2764
#define OLD_FLAT_VERSION 0x00000002L
2865
#define OLD_FLAT_RELOC_TYPE_TEXT 0
2966
#define OLD_FLAT_RELOC_TYPE_DATA 1

include/uapi/linux/flat.h

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)