* 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 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: 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 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: 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 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