source: trunk/target/linux/generic/patches-2.6.35/028-module_exports.patch @ 21952

Last change on this file since 21952 was 21952, checked in by nbd, 6 years ago

rename target/linux/generic-2.6 to generic

File size: 3.6 KB
  • include/asm-generic/vmlinux.lds.h

    a b  
    5252#define LOAD_OFFSET 0 
    5353#endif 
    5454 
     55#ifndef SYMTAB_KEEP_STR 
     56#define SYMTAB_KEEP_STR *(__ksymtab_strings.*) 
     57#define SYMTAB_DISCARD_STR 
     58#else 
     59#define SYMTAB_DISCARD_STR *(__ksymtab_strings.*) 
     60#endif 
     61 
     62#ifndef SYMTAB_KEEP 
     63#define SYMTAB_KEEP *(__ksymtab.*) 
     64#define SYMTAB_DISCARD 
     65#else 
     66#define SYMTAB_DISCARD *(__ksymtab.*) 
     67#endif 
     68 
     69#ifndef SYMTAB_KEEP_GPL 
     70#define SYMTAB_KEEP_GPL *(__ksymtab_gpl.*) 
     71#define SYMTAB_DISCARD_GPL 
     72#else 
     73#define SYMTAB_DISCARD_GPL *(__ksymtab_gpl.*) 
     74#endif 
     75 
    5576#ifndef SYMBOL_PREFIX 
    5677#define VMLINUX_SYMBOL(sym) sym 
    5778#else 
     
    258279        /* Kernel symbol table: Normal symbols */                       \ 
    259280        __ksymtab         : AT(ADDR(__ksymtab) - LOAD_OFFSET) {         \ 
    260281                VMLINUX_SYMBOL(__start___ksymtab) = .;                  \ 
    261                 *(__ksymtab)                                            \ 
     282                SYMTAB_KEEP                                             \ 
    262283                VMLINUX_SYMBOL(__stop___ksymtab) = .;                   \ 
    263284        }                                                               \ 
    264285                                                                        \ 
    265286        /* Kernel symbol table: GPL-only symbols */                     \ 
    266287        __ksymtab_gpl     : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) {     \ 
    267288                VMLINUX_SYMBOL(__start___ksymtab_gpl) = .;              \ 
    268                 *(__ksymtab_gpl)                                        \ 
     289                SYMTAB_KEEP_GPL                                         \ 
    269290                VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .;               \ 
    270291        }                                                               \ 
    271292                                                                        \ 
    272293        /* Kernel symbol table: Normal unused symbols */                \ 
    273294        __ksymtab_unused  : AT(ADDR(__ksymtab_unused) - LOAD_OFFSET) {  \ 
    274295                VMLINUX_SYMBOL(__start___ksymtab_unused) = .;           \ 
    275                 *(__ksymtab_unused)                                     \ 
     296                *(__ksymtab_unused.*)                                   \ 
    276297                VMLINUX_SYMBOL(__stop___ksymtab_unused) = .;            \ 
    277298        }                                                               \ 
    278299                                                                        \ 
    279300        /* Kernel symbol table: GPL-only unused symbols */              \ 
    280301        __ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - LOAD_OFFSET) { \ 
    281302                VMLINUX_SYMBOL(__start___ksymtab_unused_gpl) = .;       \ 
    282                 *(__ksymtab_unused_gpl)                                 \ 
     303                *(__ksymtab_unused_gpl.*)                               \ 
    283304                VMLINUX_SYMBOL(__stop___ksymtab_unused_gpl) = .;        \ 
    284305        }                                                               \ 
    285306                                                                        \ 
    286307        /* Kernel symbol table: GPL-future-only symbols */              \ 
    287308        __ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \ 
    288309                VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .;       \ 
    289                 *(__ksymtab_gpl_future)                                 \ 
     310                *(__ksymtab_gpl_future.*)                               \ 
    290311                VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .;        \ 
    291312        }                                                               \ 
    292313                                                                        \ 
     
    327348                                                                        \ 
    328349        /* Kernel symbol table: strings */                              \ 
    329350        __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \ 
    330                 *(__ksymtab_strings)                                    \ 
     351                SYMTAB_KEEP_STR                                         \ 
    331352        }                                                               \ 
    332353                                                                        \ 
    333354        /* __*init sections */                                          \ 
     
    642663        EXIT_TEXT                                                       \ 
    643664        EXIT_DATA                                                       \ 
    644665        EXIT_CALL                                                       \ 
     666        SYMTAB_DISCARD                                                  \ 
     667        SYMTAB_DISCARD_GPL                                              \ 
     668        SYMTAB_DISCARD_STR                                              \ 
    645669        *(.discard)                                                     \ 
    646670        } 
    647671 
  • include/linux/module.h

    a b void *__symbol_get_gpl(const char *symbo 
    195195#define __CRC_SYMBOL(sym, sec) 
    196196#endif 
    197197 
     198#ifdef MODULE 
     199#define __EXPORT_SUFFIX(sym) 
     200#else 
     201#define __EXPORT_SUFFIX(sym) "." #sym 
     202#endif 
     203 
    198204/* For every exported symbol, place a struct in the __ksymtab section */ 
    199205#define __EXPORT_SYMBOL(sym, sec)                               \ 
    200206        extern typeof(sym) sym;                                 \ 
    201207        __CRC_SYMBOL(sym, sec)                                  \ 
    202208        static const char __kstrtab_##sym[]                     \ 
    203         __attribute__((section("__ksymtab_strings"), aligned(1))) \ 
     209        __attribute__((section("__ksymtab_strings"              \ 
     210          __EXPORT_SUFFIX(sym)), aligned(1)))                   \ 
    204211        = MODULE_SYMBOL_PREFIX #sym;                            \ 
    205212        static const struct kernel_symbol __ksymtab_##sym       \ 
    206213        __used                                                  \ 
    207         __attribute__((section("__ksymtab" sec), unused))       \ 
     214        __attribute__((section("__ksymtab" sec                  \ 
     215          __EXPORT_SUFFIX(sym)), unused))                       \ 
    208216        = { (unsigned long)&sym, __kstrtab_##sym } 
    209217 
    210218#define EXPORT_SYMBOL(sym)                                      \ 
Note: See TracBrowser for help on using the repository browser.