[GIT PULL] one kbuild fix for powerpc

roel kluin roel.kluin at gmail.com
Fri Jun 13 00:03:54 EST 2008


2008/6/12 Sam Ravnborg <sam at ravnborg.org>:

> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 508c589..b763aba 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -467,6 +467,26 @@ static void parse_elf_finish(struct elf_info *info)
>        release_file(info->hdr, info->size);
>  }
>
> +static int ignore_undef_symbol(struct elf_info *info, const char *symname)
> +{
> +       /* ignore __this_module, it will be resolved shortly */
> +       if (strcmp(symname, MODULE_SYMBOL_PREFIX "__this_module") == 0)
> +               return 1;
> +       /* ignore global offset table */
> +       if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
> +               return 1;
> +       if (info->hdr->e_machine == EM_PPC)
> +               /* Special register function linked on all modules during final link of .ko */
> +               if (strncmp(symname, "_restgpr_", sizeof("_restgpr_") - 1) == 0 ||
> +                   strncmp(symname, "_savegpr_", sizeof("_savegpr_") - 1) == 0 ||
> +                   strncmp(symname, "_rest32gpr_", sizeof("_rest32gpr_") - 1) == 0 ||
> +                   strncmp(symname, "_save32gpr_", sizeof("_save32gpr_") - 1) == 0) {
> +                       return 1;
> +       }

Either the indentation is wrong, or you want to move the opening curly
bracket upwards.

> +       /* Do not ignore this symbol */
> +       return 0;
> +}
> +
>  #define CRC_PFX     MODULE_SYMBOL_PREFIX "__crc_"
>  #define KSYMTAB_PFX MODULE_SYMBOL_PREFIX "__ksymtab_"
>
> @@ -493,11 +513,7 @@ static void handle_modversions(struct module *mod, struct elf_info *info,
>                if (ELF_ST_BIND(sym->st_info) != STB_GLOBAL &&
>                    ELF_ST_BIND(sym->st_info) != STB_WEAK)
>                        break;
> -               /* ignore global offset table */
> -               if (strcmp(symname, "_GLOBAL_OFFSET_TABLE_") == 0)
> -                       break;
> -               /* ignore __this_module, it will be resolved shortly */
> -               if (strcmp(symname, MODULE_SYMBOL_PREFIX "__this_module") == 0)
> +               if (ignore_undef_symbol(info, symname))
>                        break;
>  /* cope with newer glibc (2.3.4 or higher) STT_ definition in elf.h */
>  #if defined(STT_REGISTER) || defined(STT_SPARC_REGISTER)



More information about the Linuxppc-dev mailing list