remove __attribute_used__
Remove the deprecated __attribute_used__. [Introduce __section in a few places to silence checkpatch /sam] Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
Родитель
bc395add94
Коммит
3ff6eecca4
|
@ -30,8 +30,7 @@ _atomic_dec_and_lock: \n\
|
||||||
.previous \n\
|
.previous \n\
|
||||||
.end _atomic_dec_and_lock");
|
.end _atomic_dec_and_lock");
|
||||||
|
|
||||||
static int __attribute_used__
|
static int __used atomic_dec_and_lock_1(atomic_t *atomic, spinlock_t *lock)
|
||||||
atomic_dec_and_lock_1(atomic_t *atomic, spinlock_t *lock)
|
|
||||||
{
|
{
|
||||||
/* Slow path */
|
/* Slow path */
|
||||||
spin_lock(lock);
|
spin_lock(lock);
|
||||||
|
|
|
@ -65,7 +65,7 @@ obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
|
||||||
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
|
obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
|
||||||
|
|
||||||
quiet_cmd_copy_zlib = COPY $@
|
quiet_cmd_copy_zlib = COPY $@
|
||||||
cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
|
cmd_copy_zlib = sed "s@__used@@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
|
||||||
|
|
||||||
quiet_cmd_copy_zlibheader = COPY $@
|
quiet_cmd_copy_zlibheader = COPY $@
|
||||||
cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
|
cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
|
||||||
|
|
|
@ -158,7 +158,7 @@ static ssize_t show_##NAME(struct sys_device *dev, char *buf) \
|
||||||
unsigned long val = run_on_cpu(cpu->sysdev.id, read_##NAME, 0); \
|
unsigned long val = run_on_cpu(cpu->sysdev.id, read_##NAME, 0); \
|
||||||
return sprintf(buf, "%lx\n", val); \
|
return sprintf(buf, "%lx\n", val); \
|
||||||
} \
|
} \
|
||||||
static ssize_t __attribute_used__ \
|
static ssize_t __used \
|
||||||
store_##NAME(struct sys_device *dev, const char *buf, size_t count) \
|
store_##NAME(struct sys_device *dev, const char *buf, size_t count) \
|
||||||
{ \
|
{ \
|
||||||
struct cpu *cpu = container_of(dev, struct cpu, sysdev); \
|
struct cpu *cpu = container_of(dev, struct cpu, sysdev); \
|
||||||
|
|
|
@ -172,15 +172,15 @@ static void power4_stop(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fake functions used by canonicalize_pc */
|
/* Fake functions used by canonicalize_pc */
|
||||||
static void __attribute_used__ hypervisor_bucket(void)
|
static void __used hypervisor_bucket(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __attribute_used__ rtas_bucket(void)
|
static void __used rtas_bucket(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __attribute_used__ kernel_unknown_bucket(void)
|
static void __used kernel_unknown_bucket(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,7 @@ unsigned long compute_effective_address(struct pt_regs *regs,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is just to make gcc think die_if_kernel does return... */
|
/* This is just to make gcc think die_if_kernel does return... */
|
||||||
static void __attribute_used__ unaligned_panic(char *str, struct pt_regs *regs)
|
static void __used unaligned_panic(char *str, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
die_if_kernel(str, regs);
|
die_if_kernel(str, regs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,15 +42,15 @@ typedef void (*exitcall_t)(void);
|
||||||
|
|
||||||
/* These are for everybody (although not all archs will actually
|
/* These are for everybody (although not all archs will actually
|
||||||
discard it in modules) */
|
discard it in modules) */
|
||||||
#define __init __attribute__ ((__section__ (".init.text")))
|
#define __init __section(.init.text)
|
||||||
#define __initdata __attribute__ ((__section__ (".init.data")))
|
#define __initdata __section(.init.data)
|
||||||
#define __exitdata __attribute__ ((__section__(".exit.data")))
|
#define __exitdata __section(.exit.data)
|
||||||
#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))
|
#define __exit_call __used __section(.exitcall.exit)
|
||||||
|
|
||||||
#ifdef MODULE
|
#ifdef MODULE
|
||||||
#define __exit __attribute__ ((__section__(".exit.text")))
|
#define __exit __section(.exit.text)
|
||||||
#else
|
#else
|
||||||
#define __exit __attribute_used__ __attribute__ ((__section__(".exit.text")))
|
#define __exit __used __section(.exit.text)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -103,16 +103,16 @@ extern struct uml_param __uml_setup_start, __uml_setup_end;
|
||||||
* Mark functions and data as being only used at initialization
|
* Mark functions and data as being only used at initialization
|
||||||
* or exit time.
|
* or exit time.
|
||||||
*/
|
*/
|
||||||
#define __uml_init_setup __attribute_used__ __attribute__ ((__section__ (".uml.setup.init")))
|
#define __uml_init_setup __used __section(.uml.setup.init)
|
||||||
#define __uml_setup_help __attribute_used__ __attribute__ ((__section__ (".uml.help.init")))
|
#define __uml_setup_help __used __section(.uml.help.init)
|
||||||
#define __uml_init_call __attribute_used__ __attribute__ ((__section__ (".uml.initcall.init")))
|
#define __uml_init_call __used __section(.uml.initcall.init)
|
||||||
#define __uml_postsetup_call __attribute_used__ __attribute__ ((__section__ (".uml.postsetup.init")))
|
#define __uml_postsetup_call __used __section(.uml.postsetup.init)
|
||||||
#define __uml_exit_call __attribute_used__ __attribute__ ((__section__ (".uml.exitcall.exit")))
|
#define __uml_exit_call __used __section(.uml.exitcall.exit)
|
||||||
|
|
||||||
#ifndef __KERNEL__
|
#ifndef __KERNEL__
|
||||||
|
|
||||||
#define __define_initcall(level,fn) \
|
#define __define_initcall(level,fn) \
|
||||||
static initcall_t __initcall_##fn __attribute_used__ \
|
static initcall_t __initcall_##fn __used \
|
||||||
__attribute__((__section__(".initcall" level ".init"))) = fn
|
__attribute__((__section__(".initcall" level ".init"))) = fn
|
||||||
|
|
||||||
/* Userspace initcalls shouldn't depend on anything in the kernel, so we'll
|
/* Userspace initcalls shouldn't depend on anything in the kernel, so we'll
|
||||||
|
@ -122,7 +122,7 @@ extern struct uml_param __uml_setup_start, __uml_setup_end;
|
||||||
|
|
||||||
#define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn
|
#define __exitcall(fn) static exitcall_t __exitcall_##fn __exit_call = fn
|
||||||
|
|
||||||
#define __init_call __attribute_used__ __attribute__ ((__section__ (".initcall.init")))
|
#define __init_call __used __section(.initcall.init)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@ extern struct rio_route_ops __end_rio_route_ops[];
|
||||||
|
|
||||||
/* Helpers internal to the RIO core code */
|
/* Helpers internal to the RIO core code */
|
||||||
#define DECLARE_RIO_ROUTE_SECTION(section, vid, did, add_hook, get_hook) \
|
#define DECLARE_RIO_ROUTE_SECTION(section, vid, did, add_hook, get_hook) \
|
||||||
static struct rio_route_ops __rio_route_ops __attribute_used__ \
|
static struct rio_route_ops __rio_route_ops __used \
|
||||||
__attribute__((__section__(#section))) = { vid, did, add_hook, get_hook };
|
__section(section)= { vid, did, add_hook, get_hook };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DECLARE_RIO_ROUTE_OPS - Registers switch routing operations
|
* DECLARE_RIO_ROUTE_OPS - Registers switch routing operations
|
||||||
|
|
|
@ -1376,7 +1376,7 @@ static int do_atm_ioctl(unsigned int fd, unsigned int cmd32, unsigned long arg)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __attribute_used__ int
|
static __used int
|
||||||
ret_einval(unsigned int fd, unsigned int cmd, unsigned long arg)
|
ret_einval(unsigned int fd, unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -110,7 +110,7 @@ struct tagtable {
|
||||||
int (*parse)(struct tag *);
|
int (*parse)(struct tag *);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define __tag __attribute_used__ __attribute__((__section__(".taglist.init")))
|
#define __tag __used __attribute__((__section__(".taglist.init")))
|
||||||
#define __tagtable(tag, fn) \
|
#define __tagtable(tag, fn) \
|
||||||
static struct tagtable __tagtable_##fn __tag = { tag, fn }
|
static struct tagtable __tagtable_##fn __tag = { tag, fn }
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
extern void ia64_bad_param_for_setreg (void);
|
extern void ia64_bad_param_for_setreg (void);
|
||||||
extern void ia64_bad_param_for_getreg (void);
|
extern void ia64_bad_param_for_getreg (void);
|
||||||
|
|
||||||
register unsigned long ia64_r13 asm ("r13") __attribute_used__;
|
register unsigned long ia64_r13 asm ("r13") __used;
|
||||||
|
|
||||||
#define ia64_setreg(regnum, val) \
|
#define ia64_setreg(regnum, val) \
|
||||||
({ \
|
({ \
|
||||||
|
|
|
@ -65,6 +65,6 @@ extern struct sh_machine_vector sh_mv;
|
||||||
#define get_system_type() sh_mv.mv_name
|
#define get_system_type() sh_mv.mv_name
|
||||||
|
|
||||||
#define __initmv \
|
#define __initmv \
|
||||||
__attribute_used__ __attribute__((__section__ (".machvec.init")))
|
__used __section(.machvec.init)
|
||||||
|
|
||||||
#endif /* _ASM_SH_MACHVEC_H */
|
#endif /* _ASM_SH_MACHVEC_H */
|
||||||
|
|
|
@ -68,7 +68,7 @@ struct thread_info {
|
||||||
#define init_stack (init_thread_union.stack)
|
#define init_stack (init_thread_union.stack)
|
||||||
|
|
||||||
/* how to get the current stack pointer from C */
|
/* how to get the current stack pointer from C */
|
||||||
register unsigned long current_stack_pointer asm("r15") __attribute_used__;
|
register unsigned long current_stack_pointer asm("r15") __used;
|
||||||
|
|
||||||
/* how to get the thread information struct from C */
|
/* how to get the thread information struct from C */
|
||||||
static inline struct thread_info *current_thread_info(void)
|
static inline struct thread_info *current_thread_info(void)
|
||||||
|
|
|
@ -85,7 +85,7 @@ struct thread_info {
|
||||||
|
|
||||||
|
|
||||||
/* how to get the current stack pointer from C */
|
/* how to get the current stack pointer from C */
|
||||||
register unsigned long current_stack_pointer asm("esp") __attribute_used__;
|
register unsigned long current_stack_pointer asm("esp") __used;
|
||||||
|
|
||||||
/* how to get the thread information struct from C */
|
/* how to get the thread information struct from C */
|
||||||
static inline struct thread_info *current_thread_info(void)
|
static inline struct thread_info *current_thread_info(void)
|
||||||
|
|
|
@ -7,10 +7,8 @@
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 3
|
#if __GNUC_MINOR__ >= 3
|
||||||
# define __used __attribute__((__used__))
|
# define __used __attribute__((__used__))
|
||||||
# define __attribute_used__ __used /* deprecated */
|
|
||||||
#else
|
#else
|
||||||
# define __used __attribute__((__unused__))
|
# define __used __attribute__((__unused__))
|
||||||
# define __attribute_used__ __used /* deprecated */
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __GNUC_MINOR__ >= 4
|
#if __GNUC_MINOR__ >= 4
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __used __attribute__((__used__))
|
#define __used __attribute__((__used__))
|
||||||
#define __attribute_used__ __used /* deprecated */
|
|
||||||
#define __must_check __attribute__((warn_unused_result))
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
|
||||||
#define __always_inline inline __attribute__((always_inline))
|
#define __always_inline inline __attribute__((always_inline))
|
||||||
|
|
|
@ -126,10 +126,6 @@ extern void __chk_io_ptr(const volatile void __iomem *);
|
||||||
* Mark functions that are referenced only in inline assembly as __used so
|
* Mark functions that are referenced only in inline assembly as __used so
|
||||||
* the code is emitted even though it appears to be unreferenced.
|
* the code is emitted even though it appears to be unreferenced.
|
||||||
*/
|
*/
|
||||||
#ifndef __attribute_used__
|
|
||||||
# define __attribute_used__ /* deprecated */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __used
|
#ifndef __used
|
||||||
# define __used /* unimplemented */
|
# define __used /* unimplemented */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
typeof(desc) _desc \
|
typeof(desc) _desc \
|
||||||
__attribute__((aligned(sizeof(Elf##size##_Word)))); \
|
__attribute__((aligned(sizeof(Elf##size##_Word)))); \
|
||||||
} _ELFNOTE_PASTE(_note_, unique) \
|
} _ELFNOTE_PASTE(_note_, unique) \
|
||||||
__attribute_used__ \
|
__used \
|
||||||
__attribute__((section(".note." name), \
|
__attribute__((section(".note." name), \
|
||||||
aligned(sizeof(Elf##size##_Word)), \
|
aligned(sizeof(Elf##size##_Word)), \
|
||||||
unused)) = { \
|
unused)) = { \
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#define __init __section(.init.text) __cold
|
#define __init __section(.init.text) __cold
|
||||||
#define __initdata __section(.init.data)
|
#define __initdata __section(.init.data)
|
||||||
#define __exitdata __section(.exit.data)
|
#define __exitdata __section(.exit.data)
|
||||||
#define __exit_call __attribute_used__ __section(.exitcall.exit)
|
#define __exit_call __used __section(.exitcall.exit)
|
||||||
|
|
||||||
/* modpost check for section mismatches during the kernel build.
|
/* modpost check for section mismatches during the kernel build.
|
||||||
* A section mismatch happens when there are references from a
|
* A section mismatch happens when there are references from a
|
||||||
|
@ -144,7 +144,7 @@ void prepare_namespace(void);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __define_initcall(level,fn,id) \
|
#define __define_initcall(level,fn,id) \
|
||||||
static initcall_t __initcall_##fn##id __attribute_used__ \
|
static initcall_t __initcall_##fn##id __used \
|
||||||
__attribute__((__section__(".initcall" level ".init"))) = fn
|
__attribute__((__section__(".initcall" level ".init"))) = fn
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -178,11 +178,11 @@ void prepare_namespace(void);
|
||||||
|
|
||||||
#define console_initcall(fn) \
|
#define console_initcall(fn) \
|
||||||
static initcall_t __initcall_##fn \
|
static initcall_t __initcall_##fn \
|
||||||
__attribute_used__ __section(.con_initcall.init)=fn
|
__used __section(.con_initcall.init) = fn
|
||||||
|
|
||||||
#define security_initcall(fn) \
|
#define security_initcall(fn) \
|
||||||
static initcall_t __initcall_##fn \
|
static initcall_t __initcall_##fn \
|
||||||
__attribute_used__ __section(.security_initcall.init) = fn
|
__used __section(.security_initcall.init) = fn
|
||||||
|
|
||||||
struct obs_kernel_param {
|
struct obs_kernel_param {
|
||||||
const char *str;
|
const char *str;
|
||||||
|
@ -199,8 +199,7 @@ struct obs_kernel_param {
|
||||||
#define __setup_param(str, unique_id, fn, early) \
|
#define __setup_param(str, unique_id, fn, early) \
|
||||||
static char __setup_str_##unique_id[] __initdata __aligned(1) = str; \
|
static char __setup_str_##unique_id[] __initdata __aligned(1) = str; \
|
||||||
static struct obs_kernel_param __setup_##unique_id \
|
static struct obs_kernel_param __setup_##unique_id \
|
||||||
__attribute_used__ \
|
__used __section(.init.setup) \
|
||||||
__section(.init.setup) \
|
|
||||||
__attribute__((aligned((sizeof(long))))) \
|
__attribute__((aligned((sizeof(long))))) \
|
||||||
= { __setup_str_##unique_id, fn, early }
|
= { __setup_str_##unique_id, fn, early }
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,7 @@ void *__symbol_get_gpl(const char *symbol);
|
||||||
#define __CRC_SYMBOL(sym, sec) \
|
#define __CRC_SYMBOL(sym, sec) \
|
||||||
extern void *__crc_##sym __attribute__((weak)); \
|
extern void *__crc_##sym __attribute__((weak)); \
|
||||||
static const unsigned long __kcrctab_##sym \
|
static const unsigned long __kcrctab_##sym \
|
||||||
__attribute_used__ \
|
__used \
|
||||||
__attribute__((section("__kcrctab" sec), unused)) \
|
__attribute__((section("__kcrctab" sec), unused)) \
|
||||||
= (unsigned long) &__crc_##sym;
|
= (unsigned long) &__crc_##sym;
|
||||||
#else
|
#else
|
||||||
|
@ -193,7 +193,7 @@ void *__symbol_get_gpl(const char *symbol);
|
||||||
__attribute__((section("__ksymtab_strings"))) \
|
__attribute__((section("__ksymtab_strings"))) \
|
||||||
= MODULE_SYMBOL_PREFIX #sym; \
|
= MODULE_SYMBOL_PREFIX #sym; \
|
||||||
static const struct kernel_symbol __ksymtab_##sym \
|
static const struct kernel_symbol __ksymtab_##sym \
|
||||||
__attribute_used__ \
|
__used \
|
||||||
__attribute__((section("__ksymtab" sec), unused)) \
|
__attribute__((section("__ksymtab" sec), unused)) \
|
||||||
= { (unsigned long)&sym, __kstrtab_##sym }
|
= { (unsigned long)&sym, __kstrtab_##sym }
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
#define __module_cat(a,b) ___module_cat(a,b)
|
#define __module_cat(a,b) ___module_cat(a,b)
|
||||||
#define __MODULE_INFO(tag, name, info) \
|
#define __MODULE_INFO(tag, name, info) \
|
||||||
static const char __module_cat(name,__LINE__)[] \
|
static const char __module_cat(name,__LINE__)[] \
|
||||||
__attribute_used__ \
|
__used \
|
||||||
__attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info
|
__attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info
|
||||||
#else /* !MODULE */
|
#else /* !MODULE */
|
||||||
#define __MODULE_INFO(tag, name, info)
|
#define __MODULE_INFO(tag, name, info)
|
||||||
|
@ -72,7 +72,7 @@ struct kparam_array
|
||||||
BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)); \
|
BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)); \
|
||||||
static const char __param_str_##name[] = prefix #name; \
|
static const char __param_str_##name[] = prefix #name; \
|
||||||
static struct kernel_param const __param_##name \
|
static struct kernel_param const __param_##name \
|
||||||
__attribute_used__ \
|
__used \
|
||||||
__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \
|
__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \
|
||||||
= { __param_str_##name, perm, set, get, { arg } }
|
= { __param_str_##name, perm, set, get, { arg } }
|
||||||
|
|
||||||
|
|
|
@ -867,7 +867,7 @@ enum pci_fixup_pass {
|
||||||
|
|
||||||
/* Anonymous variables would be nice... */
|
/* Anonymous variables would be nice... */
|
||||||
#define DECLARE_PCI_FIXUP_SECTION(section, name, vendor, device, hook) \
|
#define DECLARE_PCI_FIXUP_SECTION(section, name, vendor, device, hook) \
|
||||||
static const struct pci_fixup __pci_fixup_##name __attribute_used__ \
|
static const struct pci_fixup __pci_fixup_##name __used \
|
||||||
__attribute__((__section__(#section))) = { vendor, device, hook };
|
__attribute__((__section__(#section))) = { vendor, device, hook };
|
||||||
#define DECLARE_PCI_FIXUP_EARLY(vendor, device, hook) \
|
#define DECLARE_PCI_FIXUP_EARLY(vendor, device, hook) \
|
||||||
DECLARE_PCI_FIXUP_SECTION(.pci_fixup_early, \
|
DECLARE_PCI_FIXUP_SECTION(.pci_fixup_early, \
|
||||||
|
|
|
@ -1445,7 +1445,7 @@ static int add_versions(struct buffer *b, struct module *mod)
|
||||||
|
|
||||||
buf_printf(b, "\n");
|
buf_printf(b, "\n");
|
||||||
buf_printf(b, "static const struct modversion_info ____versions[]\n");
|
buf_printf(b, "static const struct modversion_info ____versions[]\n");
|
||||||
buf_printf(b, "__attribute_used__\n");
|
buf_printf(b, "__used\n");
|
||||||
buf_printf(b, "__attribute__((section(\"__versions\"))) = {\n");
|
buf_printf(b, "__attribute__((section(\"__versions\"))) = {\n");
|
||||||
|
|
||||||
for (s = mod->unres; s; s = s->next) {
|
for (s = mod->unres; s; s = s->next) {
|
||||||
|
@ -1476,7 +1476,7 @@ static void add_depends(struct buffer *b, struct module *mod,
|
||||||
|
|
||||||
buf_printf(b, "\n");
|
buf_printf(b, "\n");
|
||||||
buf_printf(b, "static const char __module_depends[]\n");
|
buf_printf(b, "static const char __module_depends[]\n");
|
||||||
buf_printf(b, "__attribute_used__\n");
|
buf_printf(b, "__used\n");
|
||||||
buf_printf(b, "__attribute__((section(\".modinfo\"))) =\n");
|
buf_printf(b, "__attribute__((section(\".modinfo\"))) =\n");
|
||||||
buf_printf(b, "\"depends=");
|
buf_printf(b, "\"depends=");
|
||||||
for (s = mod->unres; s; s = s->next) {
|
for (s = mod->unres; s; s = s->next) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче