13 Oct, 2007

1 commit

  • Fix modpost segfault.

    Before:
    -------
    ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o
    Segmentation fault

    After:
    ------
    ynezz@ntbk:~/linux-2.6.git$ scripts/mod/modpost vmlinux ath_pci.o
    FATAL: section header offset=815726848 in file 'ath_pci.o' is bigger then filesize=153968

    Sam: This seems to warn for a binutils issue. Anyway modpost should not
    segfault.

    Signed-off-by: Petr Stetiar
    Signed-off-by: Sam Ravnborg

    Petr Stetiar
     

11 Oct, 2007

1 commit

  • With the net namespaces many code leaved the __init section,
    thus making the kernel occupy more memory than it did before.
    Since we have a config option that prohibits the namespace
    creation, the functions that initialize/finalize some netns
    stuff are simply not needed and can be freed after the boot.

    Currently, this is almost not noticeable, since few calls
    are no longer in __init, but when the namespaces will be
    merged it will be possible to free more code. I propose to
    use the __net_init, __net_exit and __net_initdata "attributes"
    for functions/variables that are not used if the CONFIG_NET_NS
    is not set to save more space in memory.

    The exiting functions cannot just reside in the __exit section,
    as noticed by David, since the init section will have
    references on it and the compilation will fail due to modpost
    checks. These references can exist, since the init namespace
    never dies and the exit callbacks are never called. So I
    introduce the __exit_refok attribute just like it is already
    done with the __init_refok.

    Signed-off-by: Pavel Emelyanov
    Signed-off-by: David S. Miller

    Pavel Emelyanov
     

01 Aug, 2007

1 commit

  • This is needed on MIPS where the same mechanism as get_user() is used to
    intercept bus error exceptions for some hardware probes. Without this
    patch modpost will throw spurious warnings:

    LD vmlinux
    SYSMAP System.map
    SYSMAP .tmp_System.map
    MODPOST vmlinux
    WARNING: arch/mips/sgi-ip22/built-in.o(__dbe_table+0x0): Section mismatch: reference to .init.text:

    Signed-off-by: Ralf Baechle
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     

26 Jul, 2007

4 commits

  • The Xtensa architecture places literal pools in sections separate
    from the instructions. The corresponsing text sections, therefore,
    reference the .literal section, and we have to suppress those
    warnings.

    The naming convention defines the name for a literal
    section as .SECTION.literal, unless .SECTION is .text. In that case
    the name is only .literal. Using strncmp() instead of strcmp()
    to compare the from-section with .SECTION.init.refok in pattern 0
    should not cause any regressions for other architectures.

    We also need to suppress warnings for two informational
    sections (.xt.lit and .xt.prop) used by the Xtensa architecture.

    Signed-off-by: Chris Zankel
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • In the whitelist function of modpost now use the same
    check to identify init_section as in other places of modpost.
    This has the effect that we now recognize sections named
    .init.text.19 as init sections and we no longer warn
    when we see these.

    At the same time make surrounding code readable by dropping
    use of temporary flags.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • This is a preparational patch that just move
    two functions and add one (for now unused) function.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • We already check and warn about section mismatches from vmlinux
    (build as vmlinux.o) during first pass so skip the checks
    during the 2nd pass where we process modules.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

20 Jul, 2007

1 commit


17 Jul, 2007

14 commits


12 Jun, 2007

1 commit

  • There's a special .cranges section that is almost always generated,
    with data being moved to the appropriate section by the linker at a later
    stage.

    To give a bit of background, sh64 has both a native SHmedia instruction
    set (32-bit instructions) and SHcompact (which is compatability with
    normal SH -- 16-bit, a massively reduced register set, etc.). code ranges
    are emitted when we're using the 32-bit ABI, but not the 64-bit one.

    It is a special staging section used solely by binutils where code with
    different flags get placed (more specifically differing flags for input
    and output sections), before being lazily merged by the linker.

    The closest I've been able to find to documentation is:
    http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/ld/emultempl/sh64elf.em?rev=1.10&content-type=text/x-cvsweb-markup&cvsroot=src

    It's an array of 8-byte Elf32_CRange structure given in
    http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/bfd/elf32-sh64.h?rev=1.4&content-type=text/x-cvsweb-markup&cvsroot=src
    that describes for which ISA a range is used.

    Silence the warnings by allowing references from .init.text to .cranges.

    The following warnings are fixed:

    WARNING: init/built-in.o(.cranges+0x0): Section mismatch: reference to .init.text:
    WARNING: init/built-in.o(.cranges+0xa): Section mismatch: reference to .init.text:
    WARNING: init/built-in.o(.cranges+0x14): Section mismatch: reference to .init.text:
    WARNING: init/built-in.o(.cranges+0x1e): Section mismatch: reference to .init.text:
    WARNING: init/built-in.o(.cranges+0x28): Section mismatch: reference to .init.text:
    WARNING: init/built-in.o(.cranges+0x32): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x50): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x5a): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x64): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0xfa): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x104): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x10e): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x14a): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x154): Section mismatch: reference to .init.text:
    WARNING: kernel/built-in.o(.cranges+0x15e): Section mismatch: reference to .init.text:
    WARNING: mm/built-in.o(.cranges+0x6e): Section mismatch: reference to .init.text:
    WARNING: mm/built-in.o(.cranges+0x78): Section mismatch: reference to .init.text:
    WARNING: mm/built-in.o(.cranges+0x82): Section mismatch: reference to .init.text:
    WARNING: mm/built-in.o(.cranges+0xaa): Section mismatch: reference to .init.text:
    WARNING: fs/built-in.o(.cranges+0x136): Section mismatch: reference to .init.text:
    WARNING: fs/built-in.o(.cranges+0x140): Section mismatch: reference to .init.text:
    WARNING: fs/built-in.o(.cranges+0x14a): Section mismatch: reference to .init.text:
    WARNING: fs/built-in.o(.cranges+0x168): Section mismatch: reference to .init.text:
    WARNING: fs/built-in.o(.cranges+0x1f4): Section mismatch: reference to .init.text:
    WARNING: fs/built-in.o(.cranges+0x1fe): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x302): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x30c): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x316): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x3a2): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x3ac): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x4ce): Section mismatch: reference to .init.text:
    WARNING: net/built-in.o(.cranges+0x4d8): Section mismatch: reference to .init.text:

    Signed-off-by: Paul Mundt
    Cc: Kaz Kojima
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

22 May, 2007

1 commit


19 May, 2007

6 commits

  • modpost had two cases hardcoded for mm/
    Shift over to __init_refok and kill the
    hardcoded function names in modpost.

    This has the drawback that the functions
    will always be kept no matter configuration.
    With previous code the function were placed in
    init section if configuration allowed it.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Kill a special case in modpost by introducing the
    __init_refok marker.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • Throughout the kernel there are a few legitimite references
    to init or exit sections. Most of these are covered by the
    patterns included in modpost but a few nees special attention.
    To avoid hardcoding a lot of function names in modpost introduce
    a marker so relevant function/data can be marked.
    When modpost see a reference to a init/exit function from
    a function/data marked no warning will be issued.

    Idea from: Andrew Morton

    Signed-off-by: Sam Ravnborg
    Cc: Andrew Morton

    Sam Ravnborg
     
  • This patch fixes the following class of "Section mismatch" warnings when
    building powerpc platforms.

    WARNING: arch/powerpc/kernel/built-in.o - Section mismatch: reference to .init.data:.got2 from prom_entry (offset 0x0)
    WARNING: arch/powerpc/platforms/built-in.o - Section mismatch: reference to .init.text:mpc8313_rdb_probe from .machine.desc after 'mach_mpc8313_rdb' (at offset 0x4)
    ....

    Signed-off-by: Li Yang
    Signed-off-by: Sam Ravnborg

    Li Yang
     
  • On i386, ARM and MIPS, warn_sec_mismatch() sometimes fails to show
    usefull symbol name. This is because empty 'refsym' due to 0 r_addend
    value. This patch is to adjust r_addend value, consulting with
    apply_relocate() routine in kernel code.

    Without this patch:
    MODPOST vmlinux
    WARNING: init/built-in.o - Section mismatch: reference to .init.text: from .text between 'rest_init' (at offset 0xf4) and 'try_name'
    WARNING: mm/built-in.o - Section mismatch: reference to .init.text: from .text between 'kmem_cache_create' (at offset 0x18a39) and 'cache_reap'
    WARNING: mm/built-in.o - Section mismatch: reference to .init.text: from .text between 'kmem_cache_create' (at offset 0x18a6b) and 'cache_reap'

    With this patch:
    MODPOST vmlinux
    WARNING: mm/built-in.o - Section mismatch: reference to .init.text:set_up_list3s from .text between 'kmem_cache_create' (at offset 0x18a39) and 'cache_reap'
    WARNING: mm/built-in.o - Section mismatch: reference to .init.text:set_up_list3s from .text between 'kmem_cache_create' (at offset 0x18a6b) and 'cache_reap'

    Now modpost can detect "kernel_init" name (and whitelist it) and show
    "set_up_list3s" name.

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Sam Ravnborg

    Atsushi Nemoto
     
  • Change modpost section mismatch warnings to be less confusing;
    model them on the binutils linker warnings which we all know how
    to interpret.

    Also, fix the wrong ordering of arguments for the final case -
    fromsec and refsymname were reversed.

    Signed-off-by: Russell King
    Acked-by: Acked-by: David S. Miller
    Signed-off-by: Sam Ravnborg

    Russell King
     

10 May, 2007

1 commit


09 May, 2007

1 commit

  • This patch is add white list into modpost.c for some functions and
    ia64's section to fix section mismatchs.

    sparse_index_alloc() and zone_wait_table_init() calls bootmem allocator
    at boot time, and kmalloc/vmalloc at hotplug time. If config
    memory hotplug is on, there are references of bootmem allocater(init text)
    from them (normal text). This is cause of section mismatch.

    Bootmem is called by many functions and it must be
    used only at boot time. I think __init of them should keep for
    section mismatch check. So, I would like to register sparse_index_alloc()
    and zone_wait_table_init() into white list.

    In addition, ia64's .machvec section is function table of some platform
    dependent code. It is mixture of .init.text and normal text. These
    reference of __init functions are valid too.

    Signed-off-by: Yasunori Goto
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yasunori Goto
     

07 May, 2007

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild: (38 commits)
    kconfig: fix mconf segmentation fault
    kbuild: enable use of code from a different dir
    kconfig: error out if recursive dependencies are found
    kbuild: scripts/basic/fixdep segfault on pathological string-o-death
    kconfig: correct minor typo in Kconfig warning message.
    kconfig: fix path to modules.txt in Kconfig help
    usr/Kconfig: fix typo
    kernel-doc: alphabetically-sorted entries in index.html of 'htmldocs'
    kbuild: be more explicit on missing .config file
    kbuild: clarify the creation of the LOCALVERSION_AUTO string.
    kbuild: propagate errors from find in scripts/gen_initramfs_list.sh
    kconfig: refer to qt3 if we cannot find qt libraries
    kbuild: handle compressed cpio initramfs-es
    kbuild: ignore section mismatch warning for references from .paravirtprobe to .init.text
    kbuild: remove stale comment in modpost.c
    kbuild/mkuboot.sh: allow spaces in CROSS_COMPILE
    kbuild: fix make mrproper for Documentation/DocBook/man
    kbuild: remove kconfig binaries during make mrproper
    kconfig/menuconfig: do not hardcode '.config'
    kbuild: override build timestamp & version
    ...

    Linus Torvalds
     

03 May, 2007

7 commits