[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1319796904-799-1-git-send-email-linus.walleij@linaro.org>
Date: Fri, 28 Oct 2011 12:15:04 +0200
From: Linus Walleij <linus.walleij@...aro.org>
To: linux-kernel@...r.kernel.org
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Russell King <linux@....linux.org.uk>,
Linus Walleij <linus.walleij@...aro.org>
Subject: [PATCH] RFC: fs to be compiled with -Dlinux
I dunno how to solve this problem the real way or if I'm just doing
something idiotic. I'm using a vanilla GCC "arm-none-eabi-gcc" not
targeted at any specific OS so the environment variable "linux" is
not set. Then I try to compile an arch that by default wants to
generate an a.out image, actually mach-rpc (Acorn RISC PC) from
rpc_defconfig. (This is the grandfather in arch/arm/* if I'm not
mistaken.)
Without this patch that currently fails like this with a "none"
compiler:
CC fs/binfmt_aout.o
/home/elinwal/linux/fs/binfmt_aout.c: In function 'load_aout_binary':
/home/elinwal/linux/fs/binfmt_aout.c:256: error: 'SEGMENT_SIZE' undeclared (first use in this function)
/home/elinwal/linux/fs/binfmt_aout.c:256: error: (Each undeclared identifier is reported only once
/home/elinwal/linux/fs/binfmt_aout.c:256: error: for each function it appears in.)
make[3]: *** [fs/binfmt_aout.o] Error 1
make[2]: *** [fs] Error 2
However the kernel compilation process in fs/binmft_aout.c require
SEGMENT_SIZE which is in turn defined in <linux/a.out.h> like this:
#ifdef linux
#ifdef __KERNEL__
#include <asm/page.h>
#else
#include <unistd.h>
#endif
#if defined(__i386__) || defined(__mc68000__)
#define SEGMENT_SIZE 1024
#else
#ifndef SEGMENT_SIZE
#ifdef __KERNEL__
#define SEGMENT_SIZE PAGE_SIZE
#else
#define SEGMENT_SIZE getpagesize()
#endif
#endif
#endif
#endif
I don't know what the intent of all the pre-git
specific-machine detection code surrounding this statement
is, sorry I'm too young and naive. I don't dare to just delete
it though since it looks like stuff some userspace programs may
depend on, or intended for cross-compilation somekindof or
both.
Instead I chicken out and stick -Dlinux into the fs
Makefile, since that sure as hell cannot get the definition
of SEGMENT_SIZE from any other place than this file.
That doesn't feel good either, so: help.
Signed-off-by: Linus Walleij <linus.walleij@...aro.org>
---
fs/Makefile | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/fs/Makefile b/fs/Makefile
index d2c3353..128debc 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -3,7 +3,12 @@
#
# 14 Sep 2000, Christoph Hellwig <hch@...radead.org>
# Rewritten to use lists instead of if-statements.
-#
+#
+
+# binfmt_aout includes <linux/a.out.h> which requires that the compiler
+# defines "linux" to provide SEGMENT_SIZE and such things for the kernel
+# compilation
+ccflags-y := -Dlinux
obj-y := open.o read_write.o file_table.o super.o \
char_dev.o stat.o exec.o pipe.o namei.o fcntl.o \
--
1.7.3.2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists