linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.5-bk AT_GID clash
@ 2002-11-12  1:18 Anders Gustafsson
  2002-11-12 17:16 ` Rusty Russell
  0 siblings, 1 reply; 12+ messages in thread
From: Anders Gustafsson @ 2002-11-12  1:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: rusty, lord

Hi,

the new module-api making module.h including elf.h have exposed a name clash
in xfs:

include/linux/elf.h:175:#define AT_GID    13    /* real gid */
fs/xfs/linux/xfs_vnode.h:547:#define AT_GID             0x00000008

Can one be renamed? 

Maybe module.h shouldn't be including elf.h, that afaik is needed by the
arch-specific module loaders and not by all modules. A split into
module.h for the modules and moduleloader.h for the arch-spec-loaders?

-- 
Anders Gustafsson - andersg@0x63.nu - http://0x63.nu/

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12  1:18 2.5-bk AT_GID clash Anders Gustafsson
@ 2002-11-12 17:16 ` Rusty Russell
  2002-11-12 17:33   ` Steve Lord
                     ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Rusty Russell @ 2002-11-12 17:16 UTC (permalink / raw)
  To: Anders Gustafsson; +Cc: linux-kernel, lord

In message <20021112011858.GB19877@gagarin> you write:
> Hi,
> 
> the new module-api making module.h including elf.h have exposed a name clash
> in xfs:
> 
> include/linux/elf.h:175:#define AT_GID    13    /* real gid */
> fs/xfs/linux/xfs_vnode.h:547:#define AT_GID             0x00000008
> 
> Can one be renamed? 

Probably should be.  I don't use AT_GID from memory, maybe somewhere
else in the kernel is.

> Maybe module.h shouldn't be including elf.h, that afaik is needed by the
> arch-specific module loaders and not by all modules. A split into
> module.h for the modules and moduleloader.h for the arch-spec-loaders?

This might be OK too, but in practice I don't think much will be in
moduleloader.h: asm/module.h only really defines struct
mod_arch_specific, which is embedded in struct module, and struct
module needs to be exposed for those inlines...

Rusty.
--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 17:16 ` Rusty Russell
@ 2002-11-12 17:33   ` Steve Lord
  2002-11-12 18:07     ` Rusty Russell
  2002-11-12 18:07   ` Christoph Hellwig
  2002-11-12 22:50   ` Anders Gustafsson
  2 siblings, 1 reply; 12+ messages in thread
From: Steve Lord @ 2002-11-12 17:33 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Anders Gustafsson, Linux Kernel

On Tue, 2002-11-12 at 11:16, Rusty Russell wrote:
> In message <20021112011858.GB19877@gagarin> you write:
> > Hi,
> > 
> > the new module-api making module.h including elf.h have exposed a name clash
> > in xfs:
> > 
> > include/linux/elf.h:175:#define AT_GID    13    /* real gid */
> > fs/xfs/linux/xfs_vnode.h:547:#define AT_GID             0x00000008
> > 
> > Can one be renamed? 
> 
> Probably should be.  I don't use AT_GID from memory, maybe somewhere
> else in the kernel is.
> 
> > Maybe module.h shouldn't be including elf.h, that afaik is needed by the
> > arch-specific module loaders and not by all modules. A split into
> > module.h for the modules and moduleloader.h for the arch-spec-loaders?
> 
> This might be OK too, but in practice I don't think much will be in
> moduleloader.h: asm/module.h only really defines struct
> mod_arch_specific, which is embedded in struct module, and struct
> module needs to be exposed for those inlines...


But does everyone who wants to implement a module need to be exposed
to all the details of the elf header?

Steve

-- 

Steve Lord                                      voice: +1-651-683-3511
Principal Engineer, Filesystem Software         email: lord@sgi.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 17:33   ` Steve Lord
@ 2002-11-12 18:07     ` Rusty Russell
  2002-11-13  7:34       ` Nathan Scott
                         ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Rusty Russell @ 2002-11-12 18:07 UTC (permalink / raw)
  To: Steve Lord; +Cc: Anders Gustafsson, Linux Kernel

In message <1037122398.27014.43.camel@jen.americas.sgi.com> you write:
> On Tue, 2002-11-12 at 11:16, Rusty Russell wrote:
> > This might be kOK too, but in practice I don't think much will be in
> > moduleloader.h: asm/module.h only really defines struct
> > mod_arch_specific, which is embedded in struct module, and struct
> > module needs to be exposed for those inlines...
> 
> But does everyone who wants to implement a module need to be exposed
> to all the details of the elf header?

Well, linux/module.h -> asm/module.h -> linux/elf.h.  Although if you
use #define instead of typedef you can break the last link.  Feel free
to send a patch to split it into moduleload.h or something, but I
think it'll look tiny.

But IMHO the nameclash needs to be fixed *anyway*, not hacked around,
or someone else will run over it one day.  AFAICT, changing
fs/binfmt_elf.c and elf.h to AT_RGID is the simplest.  Both should be
mildly chastised for using a prefix like AT_ publically.

Rusty.
--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 17:16 ` Rusty Russell
  2002-11-12 17:33   ` Steve Lord
@ 2002-11-12 18:07   ` Christoph Hellwig
  2002-11-12 22:50   ` Anders Gustafsson
  2 siblings, 0 replies; 12+ messages in thread
From: Christoph Hellwig @ 2002-11-12 18:07 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Anders Gustafsson, linux-kernel, lord

On Wed, Nov 13, 2002 at 04:16:56AM +1100, Rusty Russell wrote:
> In message <20021112011858.GB19877@gagarin> you write:
> > Hi,
> > 
> > the new module-api making module.h including elf.h have exposed a name clash
> > in xfs:
> > 
> > include/linux/elf.h:175:#define AT_GID    13    /* real gid */
> > fs/xfs/linux/xfs_vnode.h:547:#define AT_GID             0x00000008
> > 
> > Can one be renamed? 
> 
> Probably should be.  I don't use AT_GID from memory, maybe somewhere
> else in the kernel is.
> 
> > Maybe module.h shouldn't be including elf.h, that afaik is needed by the
> > arch-specific module loaders and not by all modules. A split into
> > module.h for the modules and moduleloader.h for the arch-spec-loaders?
> 
> This might be OK too, but in practice I don't think much will be in
> moduleloader.h: asm/module.h only really defines struct
> mod_arch_specific, which is embedded in struct module, and struct
> module needs to be exposed for those inlines...

If it's for nothing else it's at least worth not exposing elf details
to every single file in the kernel..


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 17:16 ` Rusty Russell
  2002-11-12 17:33   ` Steve Lord
  2002-11-12 18:07   ` Christoph Hellwig
@ 2002-11-12 22:50   ` Anders Gustafsson
  2002-11-14  6:44     ` Rusty Russell
  2 siblings, 1 reply; 12+ messages in thread
From: Anders Gustafsson @ 2002-11-12 22:50 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Anders Gustafsson, linux-kernel, lord

On Wed, Nov 13, 2002 at 04:16:56AM +1100, Rusty Russell wrote:
> > Maybe module.h shouldn't be including elf.h, that afaik is needed by the
> > arch-specific module loaders and not by all modules. A split into
> > module.h for the modules and moduleloader.h for the arch-spec-loaders?
> 
> This might be OK too, but in practice I don't think much will be in
> moduleloader.h: asm/module.h only really defines struct
> mod_arch_specific, which is embedded in struct module, and struct
> module needs to be exposed for those inlines...

But there are things in linux/module.h that are arch-generic but not needed
for the modules if i understand it correctly, things that need elf.h:

find_symbol_internal, module_core_alloc, module_init_alloc, apply_relocate,
apply_relocate_add and module_finalize

Something like this patch...

-- 
Anders Gustafsson - andersg@0x63.nu - http://0x63.nu/

You can import this changeset into BK by piping this whole message to:
'| bk receive [path to repository]' or apply the patch as usual.

===================================================================


ChangeSet@1.858, 2002-11-12 23:44:23+01:00, andersg@0x63.nu
  Do not include elf.h into all modules via module.h


 include/linux/module.h       |   45 --------------------------------------
 include/linux/moduleloader.h |   50 +++++++++++++++++++++++++++++++++++++++++++
 kernel/module.c              |    1 
 3 files changed, 51 insertions(+), 45 deletions(-)


diff -Nru a/include/linux/module.h b/include/linux/module.h
--- a/include/linux/module.h	Tue Nov 12 23:46:58 2002
+++ b/include/linux/module.h	Tue Nov 12 23:46:58 2002
@@ -10,7 +10,6 @@
 #include <linux/sched.h>
 #include <linux/spinlock.h>
 #include <linux/list.h>
-#include <linux/elf.h>
 #include <linux/stat.h>
 #include <linux/compiler.h>
 #include <linux/cache.h>
@@ -143,50 +142,6 @@
 	   keeping pointers to this stuff */
 	char args[0];
 };
-
-/* Helper function for arch-specific module loaders */
-unsigned long find_symbol_internal(Elf_Shdr *sechdrs,
-				   unsigned int symindex,
-				   const char *strtab,
-				   const char *name,
-				   struct module *mod,
-				   struct kernel_symbol_group **group);
-
-/* These must be implemented by the specific architecture */
-
-/* vmalloc AND zero for the non-releasable code; return ERR_PTR() on error. */
-void *module_core_alloc(const Elf_Ehdr *hdr,
-			const Elf_Shdr *sechdrs,
-			const char *secstrings,
-			struct module *mod);
-
-/* vmalloc and zero (if any) for sections to be freed after init.
-   Return ERR_PTR() on error. */
-void *module_init_alloc(const Elf_Ehdr *hdr,
-			const Elf_Shdr *sechdrs,
-			const char *secstrings,
-			struct module *mod);
-
-/* Apply the given relocation to the (simplified) ELF.  Return -error
-   or 0. */
-int apply_relocate(Elf_Shdr *sechdrs,
-		   const char *strtab,
-		   unsigned int symindex,
-		   unsigned int relsec,
-		   struct module *mod);
-
-/* Apply the given add relocation to the (simplified) ELF.  Return
-   -error or 0 */
-int apply_relocate_add(Elf_Shdr *sechdrs,
-		       const char *strtab,
-		       unsigned int symindex,
-		       unsigned int relsec,
-		       struct module *mod);
-
-/* Any final processing of module before access.  Return -error or 0. */
-int module_finalize(const Elf_Ehdr *hdr,
-		    const Elf_Shdr *sechdrs,
-		    struct module *mod);
 
 /* Free memory returned from module_core_alloc/module_init_alloc */
 void module_free(struct module *mod, void *module_region);
diff -Nru a/include/linux/moduleloader.h b/include/linux/moduleloader.h
--- /dev/null	Wed Dec 31 16:00:00 1969
+++ b/include/linux/moduleloader.h	Tue Nov 12 23:46:58 2002
@@ -0,0 +1,50 @@
+#ifndef _LINUX_MODULELOADER_H
+#define _LINUX_MODULELOADER_H
+
+#include <linux/elf.h>
+
+/* Helper function for arch-specific module loaders */
+unsigned long find_symbol_internal(Elf_Shdr *sechdrs,
+				   unsigned int symindex,
+				   const char *strtab,
+				   const char *name,
+				   struct module *mod,
+				   struct kernel_symbol_group **group);
+
+/* These must be implemented by the specific architecture */
+
+/* vmalloc AND zero for the non-releasable code; return ERR_PTR() on error. */
+void *module_core_alloc(const Elf_Ehdr *hdr,
+			const Elf_Shdr *sechdrs,
+			const char *secstrings,
+			struct module *mod);
+
+/* vmalloc and zero (if any) for sections to be freed after init.
+   Return ERR_PTR() on error. */
+void *module_init_alloc(const Elf_Ehdr *hdr,
+			const Elf_Shdr *sechdrs,
+			const char *secstrings,
+			struct module *mod);
+
+/* Apply the given relocation to the (simplified) ELF.  Return -error
+   or 0. */
+int apply_relocate(Elf_Shdr *sechdrs,
+		   const char *strtab,
+		   unsigned int symindex,
+		   unsigned int relsec,
+		   struct module *mod);
+
+/* Apply the given add relocation to the (simplified) ELF.  Return
+   -error or 0 */
+int apply_relocate_add(Elf_Shdr *sechdrs,
+		       const char *strtab,
+		       unsigned int symindex,
+		       unsigned int relsec,
+		       struct module *mod);
+
+/* Any final processing of module before access.  Return -error or 0. */
+int module_finalize(const Elf_Ehdr *hdr,
+		    const Elf_Shdr *sechdrs,
+		    struct module *mod);
+
+#endif
diff -Nru a/kernel/module.c b/kernel/module.c
--- a/kernel/module.c	Tue Nov 12 23:46:58 2002
+++ b/kernel/module.c	Tue Nov 12 23:46:58 2002
@@ -17,6 +17,7 @@
 */
 #include <linux/config.h>
 #include <linux/module.h>
+#include <linux/moduleloader.h>
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>

===================================================================


This BitKeeper patch contains the following changesets:
1.858
## Wrapped with gzip_uu ##


begin 664 bkpatch19251
M'XL(`.*$T3T``\U8;4_;2!#^C'_%2'P!>DEV_9:7'E5ID[X(CE9I.56Z.T6;
M]3BVZNQ&MD.A\H^_\=J$PR$AI<?I'!1CSXOG>69F=YQ]N,@P'>P)%6":S:Q]
M>*>S?+#'KGRGK99T/=::KCN1GF.GUNI\Q51ATIE^[4P3_<TBK8\BEQ%<DG2P
MQ]O.ZDY^O<#!WGCT]N+L9&Q9Q\?P.A)JAI\PA^-C*]?II4B"[*7(HT2K=IX*
ME<TQ%VVIY\5*M;`9L^GC\:[#/+_@/G.[A>0!Y\+E&##;[?FN58?WL@Z^8<\Y
MIY/'."M<MVL[UA!XN^?U@-D=SCO<!ML9N.[`=IXQ/F`,&N[@F0,M9KV"?S?H
MUY:$H0:E<XB53)8!`B9A.Z*K7(-($ICK8)E@!I>QJ/]O1]8I>$ZWYU@?;PFU
M6C]X6!83S'K1!%K4<7226"VO.M4C$RU(J1VMJ+1MU^6$RNUSM_`92KLOA=WW
MO2#LXT^X[!9>U_:[%-9VGN_S6/NJ2>^[K+"[S.\7KM_W^NC[#O?8U`GY3N$U
M`_,*S^UUV8.!U<U1.Y%W(G+ZA6?;GD.N?,^6GG!\QJ:]GK,6T7U>_DD[`6.F
MG[8Q6[;8.7Z#,$YPL%73^AU<:ZV!?KX03).Q9HMQ?U.+L:=H,0FOXOP4<8&I
MH0*VK6:=K32=@L%);;=5;0QK1'P!=M6S^2.:]*G2PG=/B_<D>7EMO0%>KF2F
MX3]`*_UF_@CT`_S^.(GO&7C,VH]#@A;"Y.S]^<67R6\?AA=GH[,/)\/1>/+.
MVB=1K'"#]$^RKA?H7ZN@S#K]@@2=(WB'B2FOI9)YK!6$.@61RJB5+5#&82SK
MI1LJ#!D<=:RERN*9PH#NJ1E5I@HFV?5\JI,)K?U4E"(Y&"7AY%,4I'"4H:1S
M]HNU1P<`K(Q)%\B,K/%J)95:93G(2)26>9J+Z;TB)>:X$I#>4N8W<1[1N2FJ
M.N4FR%FJEPLX.C+GP^<5#Y\CS!#F2WK$%"&>+Q*<(Z$)8'H->82PXJ-D)\Y1
MYLL42S:,^>6<=CPMX>1\"-\QU8;'TDQIU4HQ09&)*44G=8#/(44R5C`:CR<?
M/X\/#H&(QS35:;MT>*GCP,`@.!.I4YP8WP<5`26S(\,L?1F@M_?7&;_#)TKB
M(U:S2K1.VPT7-V"HG2HP!W%(%]>'!A6Y*2LEHZ8JJ0I3)))$2(FGE,9YVR+>
MQ[L#+&W^:X`GBT5297467Z*B?-#CA:E_`E7>/\C*$J!\8W`(H[,W[16FEL%1
M@B0NF,%35K(H74YJ1WA__6^L[VUMT931(\AE+=D=H@B"'X%9XJN0&ICWHYR0
MTXU(81M:>`#QFOP.:MB.7%V7:Y)(8)%JB5E&!0$ZO%&=(A4Q#7JR%#73>C>G
M=84:9_%WW%2?MT@W<K$AVGU401QN'(>J0>CIQLE;U^5<L;MC7AX]YGENX7+'
M]LRN;*]OR]Z6:<GU_D=O)&8^WF$??]0./N0.30M#[OK@NB;7C1GYX20_:C2W
M4MK,KE^6W[2)+$I';;'\X^9)?VT:U3GO,DINP?I=NUL-7/[N$Q=_JG?-$UK`
M&F\)(@-1#2LS5)BN9I56I0$1&L5R^#6O'8T,-_`_9CCC?4IM<[RZ&^6+VY\9
89(3R:[:<'T^=/F>N[%I_`[O-$U_'$```
`
end

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 18:07     ` Rusty Russell
@ 2002-11-13  7:34       ` Nathan Scott
  2002-11-13 11:17       ` linux/elf.h vs linux/module.h [was: 2.5-bk AT_GID clash] Anders Gustafsson
  2002-11-13 22:37       ` 2.5-bk AT_GID clash Paul Mackerras
  2 siblings, 0 replies; 12+ messages in thread
From: Nathan Scott @ 2002-11-13  7:34 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Steve Lord, Anders Gustafsson, Linux Kernel

On Wed, Nov 13, 2002 at 05:07:03AM +1100, Rusty Russell wrote:
> In message <1037122398.27014.43.camel@jen.americas.sgi.com> you write:
> > 
> > But does everyone who wants to implement a module need to be exposed
> > to all the details of the elf header?
> 
> Well, linux/module.h -> asm/module.h -> linux/elf.h.  Although if you
> use #define instead of typedef you can break the last link.  Feel free
> to send a patch to split it into moduleload.h or something, but I
> think it'll look tiny.
> 
> But IMHO the nameclash needs to be fixed *anyway*, not hacked around,
> or someone else will run over it one day.  AFAICT, changing
> fs/binfmt_elf.c and elf.h to AT_RGID is the simplest.  Both should be
> mildly chastised for using a prefix like AT_ publically.

FWIW, we changed XFS earlier today - it will go to Linus in the
next batch of XFS mods.  We're now using an XFS_AT_* convention
instead.

cheers.

-- 
Nathan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* linux/elf.h vs linux/module.h [was: 2.5-bk AT_GID clash]
  2002-11-12 18:07     ` Rusty Russell
  2002-11-13  7:34       ` Nathan Scott
@ 2002-11-13 11:17       ` Anders Gustafsson
  2002-11-14  1:53         ` Rusty Russell
  2002-11-13 22:37       ` 2.5-bk AT_GID clash Paul Mackerras
  2 siblings, 1 reply; 12+ messages in thread
From: Anders Gustafsson @ 2002-11-13 11:17 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Steve Lord, Anders Gustafsson, Linux Kernel

On Wed, Nov 13, 2002 at 05:07:03AM +1100, Rusty Russell wrote:
> In message <1037122398.27014.43.camel@jen.americas.sgi.com> you write:
> > On Tue, 2002-11-12 at 11:16, Rusty Russell wrote:
> > > This might be kOK too, but in practice I don't think much will be in
> > > moduleloader.h: asm/module.h only really defines struct
> > > mod_arch_specific, which is embedded in struct module, and struct
> > > module needs to be exposed for those inlines...
> > 
> > But does everyone who wants to implement a module need to be exposed
> > to all the details of the elf header?
> 
> Well, linux/module.h -> asm/module.h -> linux/elf.h.  Although if you
> use #define instead of typedef you can break the last link.  Feel free
> to send a patch to split it into moduleload.h or something, but I
> think it'll look tiny.

At least for i386 there is no inclusion of elf.h from asm/module.h, and they
are already defines. And a quick grep in the other arches shows no direct
include of elf.h. So removing elf.h from module.h should relieve all
sourcefiles[*] including module.h implicitly including elf.h too, which imho
is a good thing.

[*] find . -name "*.c" | xargs grep "include <linux/module.h>" | wc -l
   2479

-- 
Anders Gustafsson - andersg@0x63.nu - http://0x63.nu/

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 18:07     ` Rusty Russell
  2002-11-13  7:34       ` Nathan Scott
  2002-11-13 11:17       ` linux/elf.h vs linux/module.h [was: 2.5-bk AT_GID clash] Anders Gustafsson
@ 2002-11-13 22:37       ` Paul Mackerras
  2 siblings, 0 replies; 12+ messages in thread
From: Paul Mackerras @ 2002-11-13 22:37 UTC (permalink / raw)
  To: Rusty Russell; +Cc: Steve Lord, Anders Gustafsson, Linux Kernel

Rusty Russell writes:

> But IMHO the nameclash needs to be fixed *anyway*, not hacked around,
> or someone else will run over it one day.  AFAICT, changing
> fs/binfmt_elf.c and elf.h to AT_RGID is the simplest.  Both should be
> mildly chastised for using a prefix like AT_ publically.

The name (AT_GID) is mandated by the ABI specification IIRC.

Paul.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: linux/elf.h vs linux/module.h [was: 2.5-bk AT_GID clash]
  2002-11-13 11:17       ` linux/elf.h vs linux/module.h [was: 2.5-bk AT_GID clash] Anders Gustafsson
@ 2002-11-14  1:53         ` Rusty Russell
  0 siblings, 0 replies; 12+ messages in thread
From: Rusty Russell @ 2002-11-14  1:53 UTC (permalink / raw)
  To: Anders Gustafsson; +Cc: Steve Lord, Linux Kernel

In message <20021113111744.GA10014@gagarin> you write:
> On Wed, Nov 13, 2002 at 05:07:03AM +1100, Rusty Russell wrote:
> > In message <1037122398.27014.43.camel@jen.americas.sgi.com> you write:
> > > On Tue, 2002-11-12 at 11:16, Rusty Russell wrote:
> > > > This might be kOK too, but in practice I don't think much will be in
> > > > moduleloader.h: asm/module.h only really defines struct
> > > > mod_arch_specific, which is embedded in struct module, and struct
> > > > module needs to be exposed for those inlines...
> > > 
> > > But does everyone who wants to implement a module need to be exposed
> > > to all the details of the elf header?
> > 
> > Well, linux/module.h -> asm/module.h -> linux/elf.h.  Although if you
> > use #define instead of typedef you can break the last link.  Feel free
> > to send a patch to split it into moduleload.h or something, but I
> > think it'll look tiny.
> 
> At least for i386 there is no inclusion of elf.h from asm/module.h, and they
> are already defines.

I know, I wrote them.  But a header should include all the files
needed to use it, as a general rule.

I'm looking at the moduleloader.h patch, and I think it looks sane
(the archs need to #include it, too).

Cheers,
Rusty.
--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-12 22:50   ` Anders Gustafsson
@ 2002-11-14  6:44     ` Rusty Russell
  2002-11-14 13:26       ` Anders Gustafsson
  0 siblings, 1 reply; 12+ messages in thread
From: Rusty Russell @ 2002-11-14  6:44 UTC (permalink / raw)
  To: Anders Gustafsson; +Cc: linux-kernel, lord

In message <20021112225022.GA10689@gagarin> you write:
> But there are things in linux/module.h that are arch-generic but not needed
> for the modules if i understand it correctly, things that need elf.h:
> 
> find_symbol_internal, module_core_alloc, module_init_alloc, apply_relocate,
> apply_relocate_add and module_finalize
> 
> Something like this patch...

You missed the arch's module.c and the module_free function.  Does
this work for you (untested here, snarfed off on your patch)?

Frankly, it's nice to clean some of the cruft out of module.h, too.

Thanks!
Rusty.
--
  Anyone who quotes me in their sig is an idiot. -- Rusty Russell.

diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/arch/i386/kernel/module.c working-2.5-bk-noelf/arch/i386/kernel/module.c
--- linux-2.5-bk/arch/i386/kernel/module.c	2002-11-14 15:08:19.000000000 +1100
+++ working-2.5-bk-noelf/arch/i386/kernel/module.c	2002-11-14 16:30:13.000000000 +1100
@@ -15,7 +15,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
-#include <linux/module.h>
+#include <linux/moduleloader.h>
 #include <linux/elf.h>
 #include <linux/vmalloc.h>
 #include <linux/fs.h>
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/arch/sparc/kernel/module.c working-2.5-bk-noelf/arch/sparc/kernel/module.c
--- linux-2.5-bk/arch/sparc/kernel/module.c	2002-11-14 15:08:20.000000000 +1100
+++ working-2.5-bk-noelf/arch/sparc/kernel/module.c	2002-11-14 16:30:55.000000000 +1100
@@ -4,7 +4,7 @@
  * Copyright (C) 2002 David S. Miller.
  */
 
-#include <linux/module.h>
+#include <linux/moduleloader.h>
 #include <linux/kernel.h>
 #include <linux/elf.h>
 #include <linux/vmalloc.h>
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/arch/sparc64/kernel/module.c working-2.5-bk-noelf/arch/sparc64/kernel/module.c
--- linux-2.5-bk/arch/sparc64/kernel/module.c	2002-11-14 15:08:21.000000000 +1100
+++ working-2.5-bk-noelf/arch/sparc64/kernel/module.c	2002-11-14 16:31:02.000000000 +1100
@@ -4,7 +4,7 @@
  * Copyright (C) 2002 David S. Miller.
  */
 
-#include <linux/module.h>
+#include <linux/moduleloader.h>
 #include <linux/kernel.h>
 #include <linux/elf.h>
 #include <linux/vmalloc.h>
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/include/linux/module.h working-2.5-bk-noelf/include/linux/module.h
--- linux-2.5-bk/include/linux/module.h	2002-11-14 15:08:25.000000000 +1100
+++ working-2.5-bk-noelf/include/linux/module.h	2002-11-14 16:28:51.000000000 +1100
@@ -10,7 +10,6 @@
 #include <linux/sched.h>
 #include <linux/spinlock.h>
 #include <linux/list.h>
-#include <linux/elf.h>
 #include <linux/stat.h>
 #include <linux/compiler.h>
 #include <linux/cache.h>
@@ -143,53 +142,6 @@ struct module
 	char args[0];
 };
 
-/* Helper function for arch-specific module loaders */
-unsigned long find_symbol_internal(Elf_Shdr *sechdrs,
-				   unsigned int symindex,
-				   const char *strtab,
-				   const char *name,
-				   struct module *mod,
-				   struct kernel_symbol_group **group);
-
-/* These must be implemented by the specific architecture */
-
-/* vmalloc AND zero for the non-releasable code; return ERR_PTR() on error. */
-void *module_core_alloc(const Elf_Ehdr *hdr,
-			const Elf_Shdr *sechdrs,
-			const char *secstrings,
-			struct module *mod);
-
-/* vmalloc and zero (if any) for sections to be freed after init.
-   Return ERR_PTR() on error. */
-void *module_init_alloc(const Elf_Ehdr *hdr,
-			const Elf_Shdr *sechdrs,
-			const char *secstrings,
-			struct module *mod);
-
-/* Apply the given relocation to the (simplified) ELF.  Return -error
-   or 0. */
-int apply_relocate(Elf_Shdr *sechdrs,
-		   const char *strtab,
-		   unsigned int symindex,
-		   unsigned int relsec,
-		   struct module *mod);
-
-/* Apply the given add relocation to the (simplified) ELF.  Return
-   -error or 0 */
-int apply_relocate_add(Elf_Shdr *sechdrs,
-		       const char *strtab,
-		       unsigned int symindex,
-		       unsigned int relsec,
-		       struct module *mod);
-
-/* Any final processing of module before access.  Return -error or 0. */
-int module_finalize(const Elf_Ehdr *hdr,
-		    const Elf_Shdr *sechdrs,
-		    struct module *mod);
-
-/* Free memory returned from module_core_alloc/module_init_alloc */
-void module_free(struct module *mod, void *module_region);
-
 #ifdef CONFIG_MODULE_UNLOAD
 
 void __symbol_put(const char *symbol);
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/include/linux/moduleloader.h working-2.5-bk-noelf/include/linux/moduleloader.h
--- linux-2.5-bk/include/linux/moduleloader.h	1970-01-01 10:00:00.000000000 +1000
+++ working-2.5-bk-noelf/include/linux/moduleloader.h	2002-11-14 16:29:33.000000000 +1100
@@ -0,0 +1,55 @@
+#ifndef _LINUX_MODULELOADER_H
+#define _LINUX_MODULELOADER_H
+/* The stuff needed for archs to support modules. */
+
+#include <linux/module.h>
+#include <linux/elf.h>
+
+/* Helper function for arch-specific module loaders */
+unsigned long find_symbol_internal(Elf_Shdr *sechdrs,
+				   unsigned int symindex,
+				   const char *strtab,
+				   const char *name,
+				   struct module *mod,
+				   struct kernel_symbol_group **group);
+
+/* These must be implemented by the specific architecture */
+
+/* vmalloc AND zero for the non-releasable code; return ERR_PTR() on error. */
+void *module_core_alloc(const Elf_Ehdr *hdr,
+			const Elf_Shdr *sechdrs,
+			const char *secstrings,
+			struct module *mod);
+
+/* vmalloc and zero (if any) for sections to be freed after init.
+   Return ERR_PTR() on error. */
+void *module_init_alloc(const Elf_Ehdr *hdr,
+			const Elf_Shdr *sechdrs,
+			const char *secstrings,
+			struct module *mod);
+
+/* Free memory returned from module_core_alloc/module_init_alloc */
+void module_free(struct module *mod, void *module_region);
+
+/* Apply the given relocation to the (simplified) ELF.  Return -error
+   or 0. */
+int apply_relocate(Elf_Shdr *sechdrs,
+		   const char *strtab,
+		   unsigned int symindex,
+		   unsigned int relsec,
+		   struct module *mod);
+
+/* Apply the given add relocation to the (simplified) ELF.  Return
+   -error or 0 */
+int apply_relocate_add(Elf_Shdr *sechdrs,
+		       const char *strtab,
+		       unsigned int symindex,
+		       unsigned int relsec,
+		       struct module *mod);
+
+/* Any final processing of module before access.  Return -error or 0. */
+int module_finalize(const Elf_Ehdr *hdr,
+		    const Elf_Shdr *sechdrs,
+		    struct module *mod);
+
+#endif
diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal linux-2.5-bk/kernel/module.c working-2.5-bk-noelf/kernel/module.c
--- linux-2.5-bk/kernel/module.c	2002-11-14 15:08:25.000000000 +1100
+++ working-2.5-bk-noelf/kernel/module.c	2002-11-14 16:28:04.000000000 +1100
@@ -17,6 +17,7 @@
 */
 #include <linux/config.h>
 #include <linux/module.h>
+#include <linux/moduleloader.h>
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.5-bk AT_GID clash
  2002-11-14  6:44     ` Rusty Russell
@ 2002-11-14 13:26       ` Anders Gustafsson
  0 siblings, 0 replies; 12+ messages in thread
From: Anders Gustafsson @ 2002-11-14 13:26 UTC (permalink / raw)
  To: Rusty Russell; +Cc: linux-kernel

On Thu, Nov 14, 2002 at 05:44:22PM +1100, Rusty Russell wrote:
> You missed the arch's module.c and the module_free function.  Does
> this work for you (untested here, snarfed off on your patch)?

Yes, works fine!

And I dont use any modules that need parameters, so the new
in-kernel-moduleloader works great for me.

-- 
Anders Gustafsson - andersg@0x63.nu - http://0x63.nu/

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2002-11-14 13:19 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-11-12  1:18 2.5-bk AT_GID clash Anders Gustafsson
2002-11-12 17:16 ` Rusty Russell
2002-11-12 17:33   ` Steve Lord
2002-11-12 18:07     ` Rusty Russell
2002-11-13  7:34       ` Nathan Scott
2002-11-13 11:17       ` linux/elf.h vs linux/module.h [was: 2.5-bk AT_GID clash] Anders Gustafsson
2002-11-14  1:53         ` Rusty Russell
2002-11-13 22:37       ` 2.5-bk AT_GID clash Paul Mackerras
2002-11-12 18:07   ` Christoph Hellwig
2002-11-12 22:50   ` Anders Gustafsson
2002-11-14  6:44     ` Rusty Russell
2002-11-14 13:26       ` Anders Gustafsson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).