diff options
author | Tim Yamin <plasmaroo@gentoo.org> | 2004-02-08 00:42:56 +0000 |
---|---|---|
committer | Tim Yamin <plasmaroo@gentoo.org> | 2004-02-08 00:42:56 +0000 |
commit | 423259b26a18e3212efb59cc090a96ff3d3642f1 (patch) | |
tree | 99807665f0d9a7c024b5afab3b282e94d3a47557 /app-admin | |
parent | ver bump (diff) | |
download | historical-423259b26a18e3212efb59cc090a96ff3d3642f1.tar.gz historical-423259b26a18e3212efb59cc090a96ff3d3642f1.tar.bz2 historical-423259b26a18e3212efb59cc090a96ff3d3642f1.zip |
Added linux-headers-2.6.1 support. Closes bug #38357.
Diffstat (limited to 'app-admin')
-rw-r--r-- | app-admin/sysklogd/ChangeLog | 6 | ||||
-rw-r--r-- | app-admin/sysklogd/Manifest | 29 | ||||
-rw-r--r-- | app-admin/sysklogd/files/sysklogd-1.4.1-2.6.headers.patch | 865 | ||||
-rw-r--r-- | app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild | 3 | ||||
-rw-r--r-- | app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild | 4 | ||||
-rw-r--r-- | app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild | 4 | ||||
-rw-r--r-- | app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild | 4 |
7 files changed, 893 insertions, 22 deletions
diff --git a/app-admin/sysklogd/ChangeLog b/app-admin/sysklogd/ChangeLog index 7f4ce60bbfb7..f49c67270a5a 100644 --- a/app-admin/sysklogd/ChangeLog +++ b/app-admin/sysklogd/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for app-admin/sysklogd # Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/ChangeLog,v 1.25 2004/01/14 02:59:55 avenj Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/ChangeLog,v 1.26 2004/02/08 00:42:56 plasmaroo Exp $ + + 08 Feb 2004; <plasmaroo@gentoo.org> sysklogd-1.4.1-r10.ebuild, + files/sysklogd-1.4.1-2.6.headers.patch: + Added linux-headers-2.6.1 support. Closes bug #38357. 13 Jan 2004; Jon Portnoy <avenj@gentoo.org> sysklogd-1.4.1-r10.ebuild : Stable on AMD64. diff --git a/app-admin/sysklogd/Manifest b/app-admin/sysklogd/Manifest index 97842b6b2476..1aa6d16ce098 100644 --- a/app-admin/sysklogd/Manifest +++ b/app-admin/sysklogd/Manifest @@ -1,17 +1,18 @@ -MD5 11b169a4e937d21a1189224dca38e33a ChangeLog 4037 -MD5 8362f937238501b4bf6ae66aefca965e sysklogd-1.4.1-r10.ebuild 1430 -MD5 dad35a6591b4f579a47a156987449b7a sysklogd-1.4.1-r7.ebuild 1249 -MD5 ec33f65ddf32f64755b0bba29d53708d sysklogd-1.4.1-r8.ebuild 1278 -MD5 664d561152badcc03d47dab13e493725 sysklogd-1.4.1-r9.ebuild 1324 -MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r10 65 -MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r7 65 -MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r8 65 -MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r9 65 -MD5 e1376d40e02cf8026882cd4451267fed files/sysklogd-1.4.1-SO_BSDCOMPAT.patch 2523 +MD5 ab1eb251ba969d23bfb3d8ace7016933 ChangeLog 4205 +MD5 49283f0b7b137ab0e5df85043e175f47 sysklogd-1.4.1-r8.ebuild 1283 +MD5 ab29b22f34b746f848ab163fbff5d9ae sysklogd-1.4.1-r7.ebuild 1253 +MD5 d2c9311f8c48ba4d892763c545413767 sysklogd-1.4.1-r10.ebuild 1486 +MD5 bf29e612f475918911ee1b61e2d1a9a6 sysklogd-1.4.1-r9.ebuild 1328 +MD5 5d4b89ceb689887a6cbb582b875bf3e7 files/syslogd-listfiles.8 2540 +MD5 39526162728783b83aabc6754a6df208 files/syslogd-listfiles 2759 +MD5 1bcc8d6b60987b455f0defec45e0cf0b files/syslog-cron 706 +MD5 59219c3af9de241b92b3fd786c84f483 files/sysklogd.rc6 1007 MD5 ee6c8a2e9ce3c67c0704ba954826d828 files/sysklogd-1.4.1-mips.patch 449 +MD5 e1376d40e02cf8026882cd4451267fed files/sysklogd-1.4.1-SO_BSDCOMPAT.patch 2523 +MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r8 65 MD5 e25d7b583b7e4bd8be503b89e1771e90 files/sysklogd.confd 113 -MD5 59219c3af9de241b92b3fd786c84f483 files/sysklogd.rc6 1007 -MD5 1bcc8d6b60987b455f0defec45e0cf0b files/syslog-cron 706 +MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r10 65 +MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r7 65 +MD5 ac98f0965732976526df2ab0cbbc2ee1 files/sysklogd-1.4.1-2.6.headers.patch 25028 MD5 a4ca2a78eecd855928cc313d7c243819 files/syslog.conf 2332 -MD5 39526162728783b83aabc6754a6df208 files/syslogd-listfiles 2759 -MD5 5d4b89ceb689887a6cbb582b875bf3e7 files/syslogd-listfiles.8 2540 +MD5 01d7ea5644c29972a910ab27e3ab4738 files/digest-sysklogd-1.4.1-r9 65 diff --git a/app-admin/sysklogd/files/sysklogd-1.4.1-2.6.headers.patch b/app-admin/sysklogd/files/sysklogd-1.4.1-2.6.headers.patch new file mode 100644 index 000000000000..6352c7ae9b7e --- /dev/null +++ b/app-admin/sysklogd/files/sysklogd-1.4.1-2.6.headers.patch @@ -0,0 +1,865 @@ +Author: Tim Yamin <plasmaroo@gentoo.org> +Patch: Patched for 2.6.0 headers. Please note that these changes + won't work on pure vanilla 2.6 headers. + +Author: Kelledin <kelledin@users.sourceforge.net> +Purpose: klogd (from sysklogd-1.4.1) uses an antiquated method of + tracing module symbols by seeking through /dev/kmem. Not only + is this obsolete, it incurs a possible race condition and + often does not work on 64-bit platforms. This patch updates + klogd to use the newer, safer query_module() function. + +--- sysklogd-1.4.1/ksym_mod.c 2000-09-12 22:15:28.000000000 +0100 ++++ sysklogd-1.4.1-plasmaroo/ksym_mod.c 2004-01-19 20:15:16.000000000 +0000 +@@ -80,9 +80,31 @@ + * Changed llseek() to lseek64() in order to skip a libc warning. + */ + +- + /* Includes. */ ++ + #include <stdlib.h> ++#include <time.h> ++#include <signal.h> ++#include <linux/version.h> ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,1) ++ ++ #include <linux/signal.h> ++ #include <linux/spinlock.h> ++ ++ #define __KERNEL__ ++ #include <asm/posix_types.h> ++ #undef __KERNEL_STRICT_NAMES ++ #include <linux/types.h> ++ ++ #undef _LINUX_LIST_H ++ #include <linux/list.h> ++ #include <asm/semaphore.h> ++ #undef __KERNEL__ ++ #include "module.h" ++ ++#endif ++ + #include <malloc.h> + #include <unistd.h> + #include <signal.h> +diff -Naur sysklogd-1.4.1/module.h sysklogd-1.4.1.plasmaroo/module.h +--- sysklogd-1.4.1/module.h 1970-01-01 01:00:00.000000000 +0100 ++++ sysklogd-1.4.1.plasmaroo/module.h 2004-02-07 22:56:47.000000000 +0000 +@@ -0,0 +1,415 @@ ++/* ++ * Dynamic loading of modules into the kernel. ++ * ++ * Rewritten by Richard Henderson <rth@tamu.edu> Dec 1996 ++ */ ++ ++#ifndef _LINUX_MODULE_H ++#define _LINUX_MODULE_H ++ ++#include <linux/config.h> ++#include <linux/spinlock.h> ++#include <linux/list.h> ++ ++#ifdef __GENKSYMS__ ++# define _set_ver(sym) sym ++# undef MODVERSIONS ++# define MODVERSIONS ++#else /* ! __GENKSYMS__ */ ++# if !defined(MODVERSIONS) && defined(EXPORT_SYMTAB) ++# define _set_ver(sym) sym ++# include <linux/modversions.h> ++# endif ++#endif /* __GENKSYMS__ */ ++ ++#include <asm/atomic.h> ++ ++/* Don't need to bring in all of uaccess.h just for this decl. */ ++struct exception_table_entry; ++ ++/* Used by get_kernel_syms, which is obsolete. */ ++struct kernel_sym ++{ ++ unsigned long value; ++ char name[60]; /* should have been 64-sizeof(long); oh well */ ++}; ++ ++struct module_symbol ++{ ++ unsigned long value; ++ const char *name; ++}; ++ ++struct module_ref ++{ ++ struct module *dep; /* "parent" pointer */ ++ struct module *ref; /* "child" pointer */ ++ struct module_ref *next_ref; ++}; ++ ++/* TBD */ ++struct module_persist; ++ ++struct module ++{ ++ unsigned long size_of_struct; /* == sizeof(module) */ ++ struct module *next; ++ const char *name; ++ unsigned long size; ++ ++ union ++ { ++ atomic_t usecount; ++ long pad; ++ } uc; /* Needs to keep its size - so says rth */ ++ ++ unsigned long flags; /* AUTOCLEAN et al */ ++ ++ unsigned nsyms; ++ unsigned ndeps; ++ ++ struct module_symbol *syms; ++ struct module_ref *deps; ++ struct module_ref *refs; ++ int (*init)(void); ++ void (*cleanup)(void); ++ const struct exception_table_entry *ex_table_start; ++ const struct exception_table_entry *ex_table_end; ++#ifdef __alpha__ ++ unsigned long gp; ++#endif ++ /* Members past this point are extensions to the basic ++ module support and are optional. Use mod_member_present() ++ to examine them. */ ++ const struct module_persist *persist_start; ++ const struct module_persist *persist_end; ++ int (*can_unload)(void); ++ int runsize; /* In modutils, not currently used */ ++ const char *kallsyms_start; /* All symbols for kernel debugging */ ++ const char *kallsyms_end; ++ const char *archdata_start; /* arch specific data for module */ ++ const char *archdata_end; ++ const char *kernel_data; /* Reserved for kernel internal use */ ++}; ++ ++struct module_info ++{ ++ unsigned long addr; ++ unsigned long size; ++ unsigned long flags; ++ long usecount; ++}; ++ ++/* Bits of module.flags. */ ++ ++#define MOD_UNINITIALIZED 0 ++#define MOD_RUNNING 1 ++#define MOD_DELETED 2 ++#define MOD_AUTOCLEAN 4 ++#define MOD_VISITED 8 ++#define MOD_USED_ONCE 16 ++#define MOD_JUST_FREED 32 ++#define MOD_INITIALIZING 64 ++ ++/* Values for query_module's which. */ ++ ++#define QM_MODULES 1 ++#define QM_DEPS 2 ++#define QM_REFS 3 ++#define QM_SYMBOLS 4 ++#define QM_INFO 5 ++ ++/* Can the module be queried? */ ++#define MOD_CAN_QUERY(mod) (((mod)->flags & (MOD_RUNNING | MOD_INITIALIZING)) && !((mod)->flags & MOD_DELETED)) ++ ++/* When struct module is extended, we must test whether the new member ++ is present in the header received from insmod before we can use it. ++ This function returns true if the member is present. */ ++ ++#define mod_member_present(mod,member) \ ++ ((unsigned long)(&((struct module *)0L)->member + 1) \ ++ <= (mod)->size_of_struct) ++ ++/* ++ * Ditto for archdata. Assumes mod->archdata_start and mod->archdata_end ++ * are validated elsewhere. ++ */ ++#define mod_archdata_member_present(mod, type, member) \ ++ (((unsigned long)(&((type *)0L)->member) + \ ++ sizeof(((type *)0L)->member)) <= \ ++ ((mod)->archdata_end - (mod)->archdata_start)) ++ ++ ++/* Check if an address p with number of entries n is within the body of module m */ ++#define mod_bound(p, n, m) ((unsigned long)(p) >= ((unsigned long)(m) + ((m)->size_of_struct)) && \ ++ (unsigned long)((p)+(n)) <= (unsigned long)(m) + (m)->size) ++ ++/* Backwards compatibility definition. */ ++ ++#define GET_USE_COUNT(module) (atomic_read(&(module)->uc.usecount)) ++ ++/* Poke the use count of a module. */ ++ ++#define __MOD_INC_USE_COUNT(mod) \ ++ (atomic_inc(&(mod)->uc.usecount), (mod)->flags |= MOD_VISITED|MOD_USED_ONCE) ++#define __MOD_DEC_USE_COUNT(mod) \ ++ (atomic_dec(&(mod)->uc.usecount), (mod)->flags |= MOD_VISITED) ++#define __MOD_IN_USE(mod) \ ++ (mod_member_present((mod), can_unload) && (mod)->can_unload \ ++ ? (mod)->can_unload() : atomic_read(&(mod)->uc.usecount)) ++ ++/* Indirect stringification. */ ++ ++#define __MODULE_STRING_1(x) #x ++#define __MODULE_STRING(x) __MODULE_STRING_1(x) ++ ++/* Generic inter module communication. ++ * ++ * NOTE: This interface is intended for small amounts of data that are ++ * passed between two objects and either or both of the objects ++ * might be compiled as modules. Do not over use this interface. ++ * ++ * If more than two objects need to communicate then you probably ++ * need a specific interface instead of abusing this generic ++ * interface. If both objects are *always* built into the kernel ++ * then a global extern variable is good enough, you do not need ++ * this interface. ++ * ++ * Keith Owens <kaos@ocs.com.au> 28 Oct 2000. ++ */ ++ ++#ifdef __KERNEL__ ++#define HAVE_INTER_MODULE ++extern void inter_module_register(const char *, struct module *, const void *); ++extern void inter_module_unregister(const char *); ++extern const void *inter_module_get(const char *); ++extern const void *inter_module_get_request(const char *, const char *); ++extern void inter_module_put(const char *); ++ ++struct inter_module_entry { ++ struct list_head list; ++ const char *im_name; ++ struct module *owner; ++ const void *userdata; ++}; ++ ++extern int try_inc_mod_count(struct module *mod); ++#endif /* __KERNEL__ */ ++ ++#if defined(MODULE) && !defined(__GENKSYMS__) ++ ++/* Embedded module documentation macros. */ ++ ++/* For documentation purposes only. */ ++ ++#define MODULE_AUTHOR(name) \ ++const char __module_author[] __attribute__((section(".modinfo"))) = \ ++"author=" name ++ ++#define MODULE_DESCRIPTION(desc) \ ++const char __module_description[] __attribute__((section(".modinfo"))) = \ ++"description=" desc ++ ++/* Could potentially be used by kmod... */ ++ ++#define MODULE_SUPPORTED_DEVICE(dev) \ ++const char __module_device[] __attribute__((section(".modinfo"))) = \ ++"device=" dev ++ ++/* Used to verify parameters given to the module. The TYPE arg should ++ be a string in the following format: ++ [min[-max]]{b,h,i,l,s} ++ The MIN and MAX specifiers delimit the length of the array. If MAX ++ is omitted, it defaults to MIN; if both are omitted, the default is 1. ++ The final character is a type specifier: ++ b byte ++ h short ++ i int ++ l long ++ s string ++*/ ++ ++#define MODULE_PARM(var,type) \ ++const char __module_parm_##var[] \ ++__attribute__((section(".modinfo"))) = \ ++"parm_" __MODULE_STRING(var) "=" type ++ ++#define MODULE_PARM_DESC(var,desc) \ ++const char __module_parm_desc_##var[] \ ++__attribute__((section(".modinfo"))) = \ ++"parm_desc_" __MODULE_STRING(var) "=" desc ++ ++/* ++ * MODULE_DEVICE_TABLE exports information about devices ++ * currently supported by this module. A device type, such as PCI, ++ * is a C-like identifier passed as the first arg to this macro. ++ * The second macro arg is the variable containing the device ++ * information being made public. ++ * ++ * The following is a list of known device types (arg 1), ++ * and the C types which are to be passed as arg 2. ++ * pci - struct pci_device_id - List of PCI ids supported by this module ++ * isapnp - struct isapnp_device_id - List of ISA PnP ids supported by this module ++ * usb - struct usb_device_id - List of USB ids supported by this module ++ */ ++#define MODULE_GENERIC_TABLE(gtype,name) \ ++static const unsigned long __module_##gtype##_size \ ++ __attribute__ ((unused)) = sizeof(struct gtype##_id); \ ++static const struct gtype##_id * __module_##gtype##_table \ ++ __attribute__ ((unused)) = name ++ ++/* ++ * The following license idents are currently accepted as indicating free ++ * software modules ++ * ++ * "GPL" [GNU Public License v2 or later] ++ * "GPL v2" [GNU Public License v2] ++ * "GPL and additional rights" [GNU Public License v2 rights and more] ++ * "Dual BSD/GPL" [GNU Public License v2 or BSD license choice] ++ * "Dual MPL/GPL" [GNU Public License v2 or Mozilla license choice] ++ * ++ * The following other idents are available ++ * ++ * "Proprietary" [Non free products] ++ * ++ * There are dual licensed components, but when running with Linux it is the ++ * GPL that is relevant so this is a non issue. Similarly LGPL linked with GPL ++ * is a GPL combined work. ++ * ++ * This exists for several reasons ++ * 1. So modinfo can show license info for users wanting to vet their setup ++ * is free ++ * 2. So the community can ignore bug reports including proprietary modules ++ * 3. So vendors can do likewise based on their own policies ++ */ ++ ++#define MODULE_LICENSE(license) \ ++static const char __module_license[] __attribute__((section(".modinfo"))) = \ ++"license=" license ++ ++/* Define the module variable, and usage macros. */ ++extern struct module __this_module; ++ ++#define THIS_MODULE (&__this_module) ++#define MOD_INC_USE_COUNT __MOD_INC_USE_COUNT(THIS_MODULE) ++#define MOD_DEC_USE_COUNT __MOD_DEC_USE_COUNT(THIS_MODULE) ++#define MOD_IN_USE __MOD_IN_USE(THIS_MODULE) ++ ++#include <linux/version.h> ++static const char __module_kernel_version[] __attribute__((section(".modinfo"))) = ++"kernel_version=" UTS_RELEASE; ++#ifdef MODVERSIONS ++static const char __module_using_checksums[] __attribute__((section(".modinfo"))) = ++"using_checksums=1"; ++#endif ++ ++#else /* MODULE */ ++ ++#define MODULE_AUTHOR(name) ++#define MODULE_LICENSE(license) ++#define MODULE_DESCRIPTION(desc) ++#define MODULE_SUPPORTED_DEVICE(name) ++#define MODULE_PARM(var,type) ++#define MODULE_PARM_DESC(var,desc) ++ ++/* Create a dummy reference to the table to suppress gcc unused warnings. Put ++ * the reference in the .data.exit section which is discarded when code is built ++ * in, so the reference does not bloat the running kernel. Note: cannot be ++ * const, other exit data may be writable. ++ */ ++#define MODULE_GENERIC_TABLE(gtype,name) \ ++static const struct gtype##_id * __module_##gtype##_table \ ++ __attribute__ ((unused, __section__(".data.exit"))) = name ++ ++#ifndef __GENKSYMS__ ++ ++#define THIS_MODULE NULL ++#define MOD_INC_USE_COUNT do { } while (0) ++#define MOD_DEC_USE_COUNT do { } while (0) ++#define MOD_IN_USE 1 ++ ++extern struct module *module_list; ++ ++#endif /* !__GENKSYMS__ */ ++ ++#endif /* MODULE */ ++ ++#define MODULE_DEVICE_TABLE(type,name) \ ++ MODULE_GENERIC_TABLE(type##_device,name) ++ ++/* Export a symbol either from the kernel or a module. ++ ++ In the kernel, the symbol is added to the kernel's global symbol table. ++ ++ In a module, it controls which variables are exported. If no ++ variables are explicitly exported, the action is controled by the ++ insmod -[xX] flags. Otherwise, only the variables listed are exported. ++ This obviates the need for the old register_symtab() function. */ ++ ++#if defined(__GENKSYMS__) ++ ++/* We want the EXPORT_SYMBOL tag left intact for recognition. */ ++ ++#elif !defined(AUTOCONF_INCLUDED) ++ ++#define __EXPORT_SYMBOL(sym,str) error config_must_be_included_before_module ++#define EXPORT_SYMBOL(var) error config_must_be_included_before_module ++#define EXPORT_SYMBOL_NOVERS(var) error config_must_be_included_before_module ++#define EXPORT_SYMBOL_GPL(var) error config_must_be_included_before_module ++ ++#elif !defined(CONFIG_MODULES) ++ ++#define __EXPORT_SYMBOL(sym,str) ++#define EXPORT_SYMBOL(var) ++#define EXPORT_SYMBOL_NOVERS(var) ++#define EXPORT_SYMBOL_GPL(var) ++ ++#elif !defined(EXPORT_SYMTAB) ++ ++#define __EXPORT_SYMBOL(sym,str) error this_object_must_be_defined_as_export_objs_in_the_Makefile ++#define EXPORT_SYMBOL(var) error this_object_must_be_defined_as_export_objs_in_the_Makefile ++#define EXPORT_SYMBOL_NOVERS(var) error this_object_must_be_defined_as_export_objs_in_the_Makefile ++#define EXPORT_SYMBOL_GPL(var) error this_object_must_be_defined_as_export_objs_in_the_Makefile ++ ++#else ++ ++#define __EXPORT_SYMBOL(sym, str) \ ++const char __kstrtab_##sym[] \ ++__attribute__((section(".kstrtab"))) = str; \ ++const struct module_symbol __ksymtab_##sym \ ++__attribute__((section("__ksymtab"))) = \ ++{ (unsigned long)&sym, __kstrtab_##sym } ++ ++#define __EXPORT_SYMBOL_GPL(sym, str) \ ++const char __kstrtab_##sym[] \ ++__attribute__((section(".kstrtab"))) = "GPLONLY_" str; \ ++const struct module_symbol __ksymtab_##sym \ ++__attribute__((section("__ksymtab"))) = \ ++{ (unsigned long)&sym, __kstrtab_##sym } ++ ++#if defined(MODVERSIONS) || !defined(CONFIG_MODVERSIONS) ++#define EXPORT_SYMBOL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(var)) ++#define EXPORT_SYMBOL_GPL(var) __EXPORT_SYMBOL_GPL(var, __MODULE_STRING(var)) ++#else ++#define EXPORT_SYMBOL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var))) ++#define EXPORT_SYMBOL_GPL(var) __EXPORT_SYMBOL(var, __MODULE_STRING(__VERSIONED_SYMBOL(var))) ++#endif ++ ++#define EXPORT_SYMBOL_NOVERS(var) __EXPORT_SYMBOL(var, __MODULE_STRING(var)) ++ ++#endif /* __GENKSYMS__ */ ++ ++#ifdef MODULE ++/* Force a module to export no symbols. */ ++#define EXPORT_NO_SYMBOLS __asm__(".section __ksymtab\n.previous") ++#else ++#define EXPORT_NO_SYMBOLS ++#endif /* MODULE */ ++ ++#ifdef CONFIG_MODULES ++#define SET_MODULE_OWNER(some_struct) do { (some_struct)->owner = THIS_MODULE; } while (0) ++#else ++#define SET_MODULE_OWNER(some_struct) do { } while (0) ++#endif ++ ++#endif /* _LINUX_MODULE_H */ +diff -Naur sysklogd-1.4.1/ksym_mod.c sysklogd-1.4.1-querymodules/ksym_mod.c +--- sysklogd-1.4.1/ksym_mod.c 2000-09-12 16:15:28.000000000 -0500 ++++ sysklogd-1.4.1-querymodules/ksym_mod.c 2003-10-03 23:18:05.000000000 -0500 +@@ -122,6 +122,8 @@ + #define getsyms get_kernel_syms + #endif /* __GLIBC__ */ + ++extern int query_module(const char *, int, void *, size_t, size_t *); ++ + /* Variables static to this module. */ + struct sym_table + { +@@ -142,7 +144,7 @@ + }; + + static int num_modules = 0; +-struct Module *sym_array_modules = (struct Module *) 0; ++struct Module *sym_array_modules = NULL; + + static int have_modules = 0; + +@@ -155,8 +157,8 @@ + + /* Function prototypes. */ + static void FreeModules(void); +-static int AddSymbol(struct Module *mp, unsigned long, char *); +-static int AddModule(unsigned long, char *); ++static int AddSymbol(struct Module *mp, unsigned long, const char *); ++static int AddModule(char *); + static int symsort(const void *, const void *); + + +@@ -179,81 +181,106 @@ + extern int InitMsyms() + + { +- auto int rtn, +- tmp; ++ auto size_t rtn; ++ auto int tmp; ++ ++ auto char **mod_table; ++ ++ char *modbuf = NULL, ++ *newbuf; + +- auto struct kernel_sym *ksym_table, +- *p; ++ int modsize = 32, ++ result; + + + /* Initialize the kernel module symbol table. */ + FreeModules(); + ++ /* ++ * New style symbol table parser. This uses the newer query_module ++ * function rather than the old obsolete hack of stepping thru ++ * /dev/kmem. ++ */ + + /* +- * The system call which returns the kernel symbol table has +- * essentialy two modes of operation. Called with a null pointer +- * the system call returns the number of symbols defined in the +- * the table. +- * +- * The second mode of operation is to pass a valid pointer to +- * the call which will then load the current symbol table into +- * the memory provided. +- * +- * Returning the symbol table is essentially an all or nothing +- * proposition so we need to pre-allocate enough memory for the +- * complete table regardless of how many symbols we need. +- * +- * Bummer. ++ * First, we query for the list of loaded modules. We may ++ * have to grow our buffer in size. + */ +- if ( (rtn = getsyms((struct kernel_sym *) 0)) < 0 ) +- { +- if ( errno == ENOSYS ) +- Syslog(LOG_INFO, "No module symbols loaded - " +- "kernel modules not enabled.\n"); +- else ++ do { ++ modsize+=modsize; ++ newbuf=realloc(modbuf, modsize); ++ ++ if (newbuf==NULL) { ++ /* Uh-oh... */ + Syslog(LOG_ERR, "Error loading kernel symbols " \ + "- %s\n", strerror(errno)); ++ if (modbuf!=NULL) free(modbuf); ++ return(0); ++ } ++ ++ modbuf=newbuf; ++ ++ result=query_module(NULL, QM_MODULES, modbuf, modsize, &rtn); ++ ++ if (result<0 && errno!=ENOSPC) { ++ Syslog(LOG_ERR, "Error querying loaded modules " \ ++ "- %s\n", strerror(errno)); ++ free(modbuf); ++ return(0); ++ } ++ } while (result<0); ++ ++ if ( rtn <= 0 ) { ++ /* No modules??? */ ++ Syslog(LOG_INFO, "No module symbols loaded - " ++ "modules disabled?\n"); ++ free(modbuf); + return(0); + } + if ( debugging ) + fprintf(stderr, "Loading kernel module symbols - " + "Size of table: %d\n", rtn); + +- ksym_table = (struct kernel_sym *) malloc(rtn * \ +- sizeof(struct kernel_sym)); +- if ( ksym_table == (struct kernel_sym *) 0 ) ++ mod_table = (char **) malloc(rtn * sizeof(char *)); ++ if ( mod_table == NULL ) + { + Syslog(LOG_WARNING, " Failed memory allocation for kernel " \ + "symbol table.\n"); ++ free(modbuf); + return(0); + } +- if ( (rtn = getsyms(ksym_table)) < 0 ) ++ ++ sym_array_modules = (struct Module *) malloc(rtn * sizeof(struct Module)); ++ if ( sym_array_modules == NULL ) + { +- Syslog(LOG_WARNING, "Error reading kernel symbols - %s\n", \ +- strerror(errno)); ++ Syslog(LOG_WARNING, " Failed memory allocation for kernel " \ ++ "symbol table.\n"); ++ free(mod_table); ++ free(modbuf); + return(0); + } + +- + /* + * Build a symbol table compatible with the other one used by + * klogd. + */ +- tmp = rtn; +- p = ksym_table; +- while ( tmp-- ) ++ newbuf=modbuf; ++ for (tmp=rtn-1; tmp>=0; tmp--) + { +- if ( !AddModule(p->value, p->name) ) ++ mod_table[tmp]=newbuf; ++ newbuf+=(strlen(newbuf)+1); ++ if ( !AddModule(mod_table[tmp]) ) + { + Syslog(LOG_WARNING, "Error adding kernel module table " + "entry.\n"); +- free(ksym_table); ++ free(mod_table); ++ free(modbuf); + return(0); + } +- ++p; + } + ++ have_modules = 1; ++ + /* Sort the symbol tables in each module. */ + for (rtn = tmp= 0; tmp < num_modules; ++tmp) + { +@@ -271,7 +299,8 @@ + Syslog(LOG_INFO, "Loaded %d %s from %d module%s", rtn, \ + (rtn == 1) ? "symbol" : "symbols", \ + num_modules, (num_modules == 1) ? "." : "s."); +- free(ksym_table); ++ free(mod_table); ++ free(modbuf); + return(1); + } + +@@ -316,23 +345,23 @@ + + /* Check to see if the module symbol tables need to be cleared. */ + have_modules = 0; +- if ( num_modules == 0 ) +- return; +- + +- for (nmods= 0; nmods < num_modules; ++nmods) +- { +- mp = &sym_array_modules[nmods]; +- if ( mp->num_syms == 0 ) +- continue; ++ if (sym_array_modules != NULL) { ++ for (nmods= 0; nmods < num_modules; ++nmods) ++ { ++ mp = &sym_array_modules[nmods]; ++ if ( mp->num_syms == 0 ) ++ continue; + +- for (nsyms= 0; nsyms < mp->num_syms; ++nsyms) +- free(mp->sym_array[nsyms].name); +- free(mp->sym_array); ++ for (nsyms= 0; nsyms < mp->num_syms; ++nsyms) ++ free(mp->sym_array[nsyms].name); ++ free(mp->sym_array); ++ } ++ ++ free(sym_array_modules); ++ sym_array_modules = NULL; + } + +- free(sym_array_modules); +- sym_array_modules = (struct Module *) 0; + num_modules = 0; + return; + } +@@ -344,23 +373,25 @@ + * Purpose: This function is responsible for adding a module to + * the list of currently loaded modules. + * +- * Arguements: (unsigned long) address, (char *) symbol +- * +- * address:-> The address of the module. ++ * Arguments: (char *) symbol + * + * symbol:-> The name of the module. + * + * Return: int + **************************************************************************/ + +-static int AddModule(address, symbol) +- +- unsigned long address; ++static int AddModule(symbol) + + char *symbol; + + { +- auto int memfd; ++ size_t rtn; ++ size_t i; ++ const char *cbuf; ++ int symsize=128; ++ int result; ++ struct module_symbol *symbuf=NULL, ++ *newbuf; + + auto struct Module *mp; + +@@ -368,78 +399,75 @@ + /* Return if we have loaded the modules. */ + if ( have_modules ) + return(1); ++ ++ /* We already have space for the module. */ ++ mp = &sym_array_modules[num_modules]; ++ ++ if (query_module(symbol, QM_INFO, &sym_array_modules[num_modules].module, ++ sizeof(struct module), &rtn)<0) ++ { ++ Syslog(LOG_WARNING, "Error reading module info for %s.\n", ++ symbol); ++ return(0); ++ } ++ ++ /* Save the module name. */ ++ mp->name = strdup(symbol); ++ if ( mp->name == NULL ) ++ return(0); ++ ++ mp->num_syms = 0; ++ mp->sym_array = NULL; ++ ++num_modules; + + /* +- * The following section of code is responsible for determining +- * whether or not we are done reading the list of modules. ++ * First, we query for the list of exported symbols. We may ++ * have to grow our buffer in size. + */ +- if ( symbol[0] == '#' ) +- { ++ do { ++ symsize+=symsize; ++ newbuf=realloc(symbuf, symsize); + +- if ( symbol[1] == '\0' ) +- { +- /* +- * A symbol which consists of a # sign only +- * signifies a a resident kernel segment. When we +- * hit one of these we are done reading the +- * module list. +- */ +- have_modules = 1; +- return(1); +- } +- /* Allocate space for the module. */ +- sym_array_modules = (struct Module *) \ +- realloc(sym_array_modules, \ +- (num_modules+1) * sizeof(struct Module)); +- if ( sym_array_modules == (struct Module *) 0 ) +- { +- Syslog(LOG_WARNING, "Cannot allocate Module array.\n"); ++ if (newbuf==NULL) { ++ /* Uh-oh... */ ++ Syslog(LOG_ERR, "Error loading kernel symbols " \ ++ "- %s\n", strerror(errno)); ++ if (symbuf!=NULL) free(symbuf); + return(0); + } +- mp = &sym_array_modules[num_modules]; + +- if ( (memfd = open("/dev/kmem", O_RDONLY)) < 0 ) +- { +- Syslog(LOG_WARNING, "Error opening /dev/kmem\n"); +- return(0); +- } +- if ( lseek64(memfd, address, SEEK_SET) < 0 ) +- { +- Syslog(LOG_WARNING, "Error seeking in /dev/kmem\n"); +- Syslog(LOG_WARNING, "Symbol %s, value %08x\n", symbol, address); +- return(0); +- } +- if ( read(memfd, \ +- (char *)&sym_array_modules[num_modules].module, \ +- sizeof(struct module)) < 0 ) +- { +- Syslog(LOG_WARNING, "Error reading module " +- "descriptor.\n"); +- return(0); +- } +- close(memfd); ++ symbuf=newbuf; ++ ++ result=query_module(symbol, QM_SYMBOLS, symbuf, symsize, &rtn); + +- /* Save the module name. */ +- mp->name = (char *) malloc(strlen(&symbol[1]) + 1); +- if ( mp->name == (char *) 0 ) ++ if (result<0 && errno!=ENOSPC) { ++ Syslog(LOG_ERR, "Error querying symbol list for %s " \ ++ "- %s\n", symbol, strerror(errno)); ++ free(symbuf); + return(0); +- strcpy(mp->name, &symbol[1]); ++ } ++ } while (result<0); + +- mp->num_syms = 0; +- mp->sym_array = (struct sym_table *) 0; +- ++num_modules; +- return(1); +- } +- else +- { +- if (num_modules > 0) +- mp = &sym_array_modules[num_modules - 1]; +- else +- mp = &sym_array_modules[0]; +- AddSymbol(mp, address, symbol); ++ if ( rtn < 0 ) { ++ /* No symbols??? */ ++ Syslog(LOG_INFO, "No module symbols loaded - unknown error.\n"); ++ free(symbuf); ++ return(0); + } + ++ cbuf=(char *)symbuf; ++ ++ for (i=0; i<rtn; i++) { ++ if (num_modules > 0) ++ mp = &sym_array_modules[num_modules - 1]; ++ else ++ mp = &sym_array_modules[0]; ++ ++ AddSymbol(mp, symbuf[i].value, ++ cbuf+(unsigned long)(symbuf[i].name)); ++ } + ++ free(symbuf); + return(1); + } + +@@ -471,7 +499,7 @@ + + unsigned long address; + +- char *symbol; ++ const char *symbol; + + { + auto int tmp; diff --git a/app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild b/app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild index 79f3e856021c..6a512be9e009 100644 --- a/app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild +++ b/app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild,v 1.7 2004/01/14 02:59:55 avenj Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r10.ebuild,v 1.8 2004/02/08 00:42:56 plasmaroo Exp $ S="${WORKDIR}/${P}" DESCRIPTION="Standard log daemons" @@ -24,6 +24,7 @@ src_unpack() { # Handle SO_BSDCOMPAT being depricated in 2.5+ kernels. cd ${S}; epatch ${FILESDIR}/${P}-SO_BSDCOMPAT.patch + cd ${S}; epatch ${FILESDIR}/${P}-2.6.headers.patch if [ "${ARCH}" = "mips" ] then diff --git a/app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild b/app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild index 4ff4b3f059f2..fc6ca3988b4b 100644 --- a/app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild +++ b/app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. +# Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild,v 1.3 2003/10/17 08:44:08 tuxus Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r7.ebuild,v 1.4 2004/02/08 00:42:56 plasmaroo Exp $ S=${WORKDIR}/${P} DESCRIPTION="Standard log daemons" diff --git a/app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild b/app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild index d8e3e626d3e5..02164540f2d0 100644 --- a/app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild +++ b/app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. +# Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild,v 1.2 2003/09/23 20:20:55 aliz Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r8.ebuild,v 1.3 2004/02/08 00:42:56 plasmaroo Exp $ S="${WORKDIR}/${P}" DESCRIPTION="Standard log daemons" diff --git a/app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild b/app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild index 4eef6185df17..94eb611eb686 100644 --- a/app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild +++ b/app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2003 Gentoo Technologies, Inc. +# Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild,v 1.2 2003/09/17 22:31:47 avenj Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/sysklogd/sysklogd-1.4.1-r9.ebuild,v 1.3 2004/02/08 00:42:56 plasmaroo Exp $ S="${WORKDIR}/${P}" DESCRIPTION="Standard log daemons" |