OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [scripts/] [mod/] [modpost.h] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
#include <stdio.h>
2
#include <stdlib.h>
3
#include <stdarg.h>
4
#include <string.h>
5
#include <sys/types.h>
6
#include <sys/stat.h>
7
#include <sys/mman.h>
8
#include <fcntl.h>
9
#include <unistd.h>
10
#include <elf.h>
11
 
12
#include "elfconfig.h"
13
 
14
#if KERNEL_ELFCLASS == ELFCLASS32
15
 
16
#define Elf_Ehdr    Elf32_Ehdr
17
#define Elf_Shdr    Elf32_Shdr
18
#define Elf_Sym     Elf32_Sym
19
#define Elf_Addr    Elf32_Addr
20
#define Elf_Section Elf32_Half
21
#define ELF_ST_BIND ELF32_ST_BIND
22
#define ELF_ST_TYPE ELF32_ST_TYPE
23
 
24
#define Elf_Rel     Elf32_Rel
25
#define Elf_Rela    Elf32_Rela
26
#define ELF_R_SYM   ELF32_R_SYM
27
#define ELF_R_TYPE  ELF32_R_TYPE
28
#else
29
 
30
#define Elf_Ehdr    Elf64_Ehdr
31
#define Elf_Shdr    Elf64_Shdr
32
#define Elf_Sym     Elf64_Sym
33
#define Elf_Addr    Elf64_Addr
34
#define Elf_Section Elf64_Half
35
#define ELF_ST_BIND ELF64_ST_BIND
36
#define ELF_ST_TYPE ELF64_ST_TYPE
37
 
38
#define Elf_Rel     Elf64_Rel
39
#define Elf_Rela    Elf64_Rela
40
#define ELF_R_SYM   ELF64_R_SYM
41
#define ELF_R_TYPE  ELF64_R_TYPE
42
#endif
43
 
44 7 xianfeng
#ifdef __CYGWIN__
45
// Missing defines on Cygwin scripts/mod/modpost.c
46
#define R_386_32        1            /* Direct 32 bit  */
47
#define R_386_PC32      2            /* PC relative 32 bit */
48
#define R_ARM_ABS32          2       /* Direct 32 bit  */
49
#define R_ARM_PC24           1       /* PC relative 26 bit branch */
50
#define R_MIPS_HI16          5       /* High 16 bit */
51
#define R_MIPS_LO16          6       /* Low 16 bit */
52
#define R_MIPS_32            2       /* Direct 32 bit */
53
#define R_MIPS_26            4       /* Direct 26 bit shifted */
54
#endif
55
 
56 3 xianfeng
/* The 64-bit MIPS ELF ABI uses an unusual reloc format. */
57
typedef struct
58
{
59
        Elf32_Word    r_sym;    /* Symbol index */
60
        unsigned char r_ssym;   /* Special symbol for 2nd relocation */
61
        unsigned char r_type3;  /* 3rd relocation type */
62
        unsigned char r_type2;  /* 2nd relocation type */
63
        unsigned char r_type1;  /* 1st relocation type */
64
} _Elf64_Mips_R_Info;
65
 
66
typedef union
67
{
68
        Elf64_Xword             r_info_number;
69
        _Elf64_Mips_R_Info      r_info_fields;
70
} _Elf64_Mips_R_Info_union;
71
 
72
#define ELF64_MIPS_R_SYM(i) \
73
  ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
74
 
75
#define ELF64_MIPS_R_TYPE(i) \
76
  ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1)
77
 
78
#if KERNEL_ELFDATA != HOST_ELFDATA
79
 
80
static inline void __endian(const void *src, void *dest, unsigned int size)
81
{
82
        unsigned int i;
83
        for (i = 0; i < size; i++)
84
                ((unsigned char*)dest)[i] = ((unsigned char*)src)[size - i-1];
85
}
86
 
87
#define TO_NATIVE(x)                                            \
88
({                                                              \
89
        typeof(x) __x;                                          \
90
        __endian(&(x), &(__x), sizeof(__x));                    \
91
        __x;                                                    \
92
})
93
 
94
#else /* endianness matches */
95
 
96
#define TO_NATIVE(x) (x)
97
 
98
#endif
99
 
100
#define NOFAIL(ptr)   do_nofail((ptr), #ptr)
101
void *do_nofail(void *ptr, const char *expr);
102
 
103
struct buffer {
104
        char *p;
105
        int pos;
106
        int size;
107
};
108
 
109
void __attribute__((format(printf, 2, 3)))
110
buf_printf(struct buffer *buf, const char *fmt, ...);
111
 
112
void
113
buf_write(struct buffer *buf, const char *s, int len);
114
 
115
struct module {
116
        struct module *next;
117
        const char *name;
118
        int gpl_compatible;
119
        struct symbol *unres;
120
        int seen;
121
        int skip;
122
        int has_init;
123
        int has_cleanup;
124
        struct buffer dev_table_buf;
125
        char         srcversion[25];
126
};
127
 
128
struct elf_info {
129
        unsigned long size;
130
        Elf_Ehdr     *hdr;
131
        Elf_Shdr     *sechdrs;
132
        Elf_Sym      *symtab_start;
133
        Elf_Sym      *symtab_stop;
134
        Elf_Section  export_sec;
135
        Elf_Section  export_unused_sec;
136
        Elf_Section  export_gpl_sec;
137
        Elf_Section  export_unused_gpl_sec;
138
        Elf_Section  export_gpl_future_sec;
139
        const char   *strtab;
140
        char         *modinfo;
141
        unsigned int modinfo_len;
142
};
143
 
144
/* file2alias.c */
145
void handle_moddevtable(struct module *mod, struct elf_info *info,
146
                        Elf_Sym *sym, const char *symname);
147
void add_moddevtable(struct buffer *buf, struct module *mod);
148
 
149
/* sumversion.c */
150
void maybe_frob_rcs_version(const char *modfilename,
151
                            char *version,
152
                            void *modinfo,
153
                            unsigned long modinfo_offset);
154
void get_src_version(const char *modname, char sum[], unsigned sumlen);
155
 
156
/* from modpost.c */
157
void *grab_file(const char *filename, unsigned long *size);
158
char* get_next_line(unsigned long *pos, void *file, unsigned long size);
159
void release_file(void *file, unsigned long size);
160
 
161
void fatal(const char *fmt, ...);
162
void warn(const char *fmt, ...);
163
void merror(const char *fmt, ...);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.