mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Mainly boring here, too. rmmod --wait finally removed, though.
Cheers, Rusty. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQIcBAABAgAGBQJSe3ngAAoJENkgDmzRrbjxqkMP/jFwTIVy+tZbPL36xR4C7UI/ JZ9JU2c2HTyAtqp/T/bljA0QUDQWUASCfwG5WmRgyvMkEwhfuGrQ3dveQLRq5iKD Ln/LIN8JXXijhRr+ywhXLAcp1P5ysSJJYYS5lZTCmJ2Cv9jnAvmUl0KqdTEx+ZNH YsWBiI9+WmwhODiAdUlqtThDK37w8OsWeMq2agf97bBERlRYnRZvzwy3tSP2mf5j 4wx8viOdzPC7NVblyX1cj3gonFFQJtMI4s/e787QzkUpNQjvrN3XecPiQX6aBCX3 seVjuv6panv1tw1HqyU1KXWo7fs2uCc9mVR5Rr3Zok+8qpKWkj0dyCnF3A+ufsrO vlkrFLUsv/U1NUkWJM6mJKzMjKRD4iF702QsEEpNA5rlOsAMMGSSlju4eu6GvadI ZJ+ZDaNWUDPbWa9Xgjyp+DKWR6vybNgEHZmLmcCdeLt1u8Th1E/ujsKxv4SN6eIO 2v+lNPjGEivoNXUX52toRZ1324U3FFzburCSA0c55+r1sjPT6SXCfl8kISSKvVtt iFemsDxhaSwqVzqbsx3ztU010Z0f9uVbpZHAQgZ514Uk25HtwhkaQSdiIP+cPXE8 rClzj9m4gD+Jy0T+P0HjPlSxKCGSlgLiEBWEigX36/F4Isv+GL1HjvrGGCWM4VnO lIyw5ux/UH8USct9nH4x =xg2p -----END PGP SIGNATURE----- Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux Pull module updates from Rusty Russell: "Mainly boring here, too. rmmod --wait finally removed, though" * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: modpost: fix bogus 'exported twice' warnings. init: fix in-place parameter modification regression asmlinkage, module: Make ksymtab and kcrctab symbols and __this_module __visible kernel: add support for init_array constructors modpost: Optionally ignore secondary errors seen if a single module build fails module: remove rmmod --wait option.
This commit is contained in:
commit
ce6513f758
7 changed files with 55 additions and 52 deletions
|
@ -17,6 +17,7 @@
|
|||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <stdbool.h>
|
||||
#include <errno.h>
|
||||
#include "modpost.h"
|
||||
#include "../../include/generated/autoconf.h"
|
||||
#include "../../include/linux/license.h"
|
||||
|
@ -37,6 +38,8 @@ static int warn_unresolved = 0;
|
|||
/* How a symbol is exported */
|
||||
static int sec_mismatch_count = 0;
|
||||
static int sec_mismatch_verbose = 1;
|
||||
/* ignore missing files */
|
||||
static int ignore_missing_files;
|
||||
|
||||
enum export {
|
||||
export_plain, export_unused, export_gpl,
|
||||
|
@ -161,7 +164,7 @@ struct symbol {
|
|||
unsigned int vmlinux:1; /* 1 if symbol is defined in vmlinux */
|
||||
unsigned int kernel:1; /* 1 if symbol is from kernel
|
||||
* (only for external modules) **/
|
||||
unsigned int preloaded:1; /* 1 if symbol from Module.symvers */
|
||||
unsigned int preloaded:1; /* 1 if symbol from Module.symvers, or crc */
|
||||
enum export export; /* Type of export */
|
||||
char name[0];
|
||||
};
|
||||
|
@ -329,8 +332,11 @@ static void sym_update_crc(const char *name, struct module *mod,
|
|||
{
|
||||
struct symbol *s = find_symbol(name);
|
||||
|
||||
if (!s)
|
||||
if (!s) {
|
||||
s = new_symbol(name, mod, export);
|
||||
/* Don't complain when we find it later. */
|
||||
s->preloaded = 1;
|
||||
}
|
||||
s->crc = crc;
|
||||
s->crc_valid = 1;
|
||||
}
|
||||
|
@ -407,6 +413,11 @@ static int parse_elf(struct elf_info *info, const char *filename)
|
|||
|
||||
hdr = grab_file(filename, &info->size);
|
||||
if (!hdr) {
|
||||
if (ignore_missing_files) {
|
||||
fprintf(stderr, "%s: %s (ignored)\n", filename,
|
||||
strerror(errno));
|
||||
return 0;
|
||||
}
|
||||
perror(filename);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -1852,7 +1863,7 @@ static void add_header(struct buffer *b, struct module *mod)
|
|||
buf_printf(b, "\n");
|
||||
buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n");
|
||||
buf_printf(b, "\n");
|
||||
buf_printf(b, "struct module __this_module\n");
|
||||
buf_printf(b, "__visible struct module __this_module\n");
|
||||
buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
|
||||
buf_printf(b, "\t.name = KBUILD_MODNAME,\n");
|
||||
if (mod->has_init)
|
||||
|
@ -2118,7 +2129,7 @@ int main(int argc, char **argv)
|
|||
struct ext_sym_list *extsym_iter;
|
||||
struct ext_sym_list *extsym_start = NULL;
|
||||
|
||||
while ((opt = getopt(argc, argv, "i:I:e:msST:o:awM:K:")) != -1) {
|
||||
while ((opt = getopt(argc, argv, "i:I:e:mnsST:o:awM:K:")) != -1) {
|
||||
switch (opt) {
|
||||
case 'i':
|
||||
kernel_read = optarg;
|
||||
|
@ -2138,6 +2149,9 @@ int main(int argc, char **argv)
|
|||
case 'm':
|
||||
modversions = 1;
|
||||
break;
|
||||
case 'n':
|
||||
ignore_missing_files = 1;
|
||||
break;
|
||||
case 'o':
|
||||
dump_write = optarg;
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue