lkml.org 
[lkml]   [2006]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] kbuild: fix genksyms build error
    On Sun, Mar 12, 2006 at 02:16:26PM +0100, Rafael J. Wysocki wrote:
    > On Sunday 12 March 2006 12:10, Andrew Morton wrote:
    > >
    > > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.16-rc6/2.6.16-rc6-mm1/
    >
    > Doesn't compile for me:
    >
    > rafael@albercik:~/src/mm/linux-2.6.16-rc6-mm1> make
    > CHK include/linux/version.h
    > SPLIT include/linux/autoconf.h -> include/config/*
    > HOSTCC scripts/genksyms/genksyms.o
    > scripts/genksyms/genksyms.c:35:30: error: ../mod/elfconfig.h: No such file or directory
    It a stupid dependency on a generated file.
    The file only gets generated upon a successfull 'make modules', whereas
    genksyms is used for every file compiled as a module.
    The workaround is to do:
    disable CONFIG_MODVERSIONS
    make modules
    enable CONFIG_MODVERSIONS
    make

    We could eventually fetch definition from <asm/module.h> but that seems
    to drag all other stuff in.
    So fix is instead to hardcode the check for the two relevant
    architectures direct in genksyms.

    Is genksyms used outside the kernel?

    Sam


    diff --git a/scripts/Makefile.build b/scripts/Makefile.build
    index 7afe3e7..19ef2bc 100644
    --- a/scripts/Makefile.build
    +++ b/scripts/Makefile.build
    @@ -166,7 +166,7 @@ cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D
    cmd_modversions = \
    if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \
    $(CPP) -D__GENKSYMS__ $(c_flags) $< \
    - | $(GENKSYMS) \
    + | $(GENKSYMS) -a $(ARCH) \
    > $(@D)/.tmp_$(@F:.o=.ver); \
    \
    $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
    diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c
    index ef8822e..da8ff4f 100644
    --- a/scripts/genksyms/genksyms.c
    +++ b/scripts/genksyms/genksyms.c
    @@ -32,7 +32,6 @@
    #endif /* __GNU_LIBRARY__ */

    #include "genksyms.h"
    -#include "../mod/elfconfig.h"
    /*----------------------------------------------------------------------*/

    #define HASH_BUCKETS 4096
    @@ -44,6 +43,8 @@ int cur_line = 1;
    char *cur_filename, *output_directory;

    int flag_debug, flag_dump_defs, flag_warnings;
    +const char *arch = "";
    +const char *mod_prefix = "";

    static int errors;
    static int nsyms;
    @@ -458,7 +459,7 @@ export_symbol(const char *name)
    fputs(">\n", debugfile);

    /* Used as a linker script. */
    - printf("%s__crc_%s = 0x%08lx ;\n", MODULE_SYMBOL_PREFIX, name, crc);
    + printf("%s__crc_%s = 0x%08lx ;\n", mod_prefix, name, crc);
    }
    }

    @@ -529,6 +530,7 @@ main(int argc, char **argv)

    #ifdef __GNU_LIBRARY__
    struct option long_opts[] = {
    + {"arch", 1, 0, 'a'},
    {"debug", 0, 0, 'd'},
    {"warnings", 0, 0, 'w'},
    {"quiet", 0, 0, 'q'},
    @@ -538,13 +540,16 @@ main(int argc, char **argv)
    {0, 0, 0, 0}
    };

    - while ((o = getopt_long(argc, argv, "dwqVDk:p:",
    + while ((o = getopt_long(argc, argv, "a:dwqVDk:p:",
    &long_opts[0], NULL)) != EOF)
    #else /* __GNU_LIBRARY__ */
    - while ((o = getopt(argc, argv, "dwqVDk:p:")) != EOF)
    + while ((o = getopt(argc, argv, "a:dwqVDk:p:")) != EOF)
    #endif /* __GNU_LIBRARY__ */
    switch (o)
    {
    + case 'a':
    + arch = optarg;
    + break;
    case 'd':
    flag_debug++;
    break;
    @@ -567,7 +572,9 @@ main(int argc, char **argv)
    genksyms_usage();
    return 1;
    }
    -
    + if ((strcmp(arch, "v850") == 0) ||
    + (strcmp(arch, "h8300") == 0))
    + mod_prefix = "_";
    {
    extern int yydebug;
    extern int yy_flex_debug;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-03-12 15:33    [W:0.029 / U:91.180 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site