UAPI fdpic problems

From: Lars-Peter Clausen
Date: Mon Oct 15 2012 - 05:01:32 EST


Hi,

I just tried to build 3.7-rc1 and hit some problems when trying to build the
fdpic elf loader:

fs/binfmt_elf_fdpic.c:60: warning: ‘struct elf_fdpic_params’ declared inside
parameter list
fs/binfmt_elf_fdpic.c:60: warning: its scope is only this definition or
declaration, which is probably not what you want
fs/binfmt_elf_fdpic.c:62: warning: ‘struct elf_fdpic_params’ declared inside
parameter list
fs/binfmt_elf_fdpic.c:66: warning: ‘struct elf_fdpic_params’ declared inside
parameter list
fs/binfmt_elf_fdpic.c:73: warning: ‘struct elf_fdpic_params’ declared inside
parameter list
fs/binfmt_elf_fdpic.c:77: warning: ‘struct elf_fdpic_params’ declared inside
parameter list
fs/binfmt_elf_fdpic.c:124: warning: ‘struct elf_fdpic_params’ declared
inside parameter list
fs/binfmt_elf_fdpic.c:123: error: conflicting types for ‘elf_fdpic_fetch_phdrs’
fs/binfmt_elf_fdpic.c:60: error: previous declaration of
‘elf_fdpic_fetch_phdrs’ was here
...

The problem is caused by commit 607ca46e97a ("UAPI: (Scripted) Disintegrate
include/linux").

This is the change made by the patch to elf-fdpic.h, where struct
elf_fdpic_params is declared.

--- a/include/linux/elf-fdpic.h
+++ b/include/uapi/linux/elf-fdpic.h
@@ -31,6 +31,7 @@ struct elf32_fdpic_loadmap {

#define ELF32_FDPIC_LOADMAP_VERSION 0x0000

+#ifndef __KERNEL__
/*
* binfmt binary parameters structure
*/
@@ -58,7 +59,6 @@ struct elf_fdpic_params {
#define ELF_FDPIC_FLAG_PRESENT 0x80000000
};

-#ifdef __KERNEL__
#ifdef CONFIG_MMU
extern void elf_fdpic_arch_lay_out_mm(struct elf_fdpic_params *exec_params,
struct elf_fdpic_params


So the patch removed the #ifdef __KERNEL__ around
elf_fdpic_arch_lay_out_mm() and added a #ifndef __KERNEL__ around both
struct elf_fdpic_params and elf_fdpic_arch_lay_out_mm(), which does not seem
to make much sense, since both are used (only?) inside the kernel. David do
you know why your script made this change?

The fix I'm using for now is the following, but I'm not quite sure if it is
the correct solution.

--- a/include/uapi/linux/elf-fdpic.h
+++ b/include/uapi/linux/elf-fdpic.h
@@ -31,7 +31,7 @@ struct elf32_fdpic_loadmap {

#define ELF32_FDPIC_LOADMAP_VERSION 0x0000

-#ifndef __KERNEL__
+#ifdef __KERNEL__
/*
* binfmt binary parameters structure
*/

Thanks,
- Lars
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/