24 Mar, 2009

2 commits

  • Linus Torvalds
     
  • With a sufficiently new compiler and binutils, code which wasn't
    previously generating .eh_frame sections has begun to. Certain
    architectures (powerpc, in this case) may generate unexpected relocation
    formats in response to this, preventing modules from loading.

    While the new relocation types should probably be handled, revert to the
    previous behaviour with regards to generation of .eh_frame sections.

    (This was reported against Fedora, which appears to be the only distro
    doing any building against gcc-4.4 at present: RH bz#486545.)

    Signed-off-by: Kyle McMartin
    Acked-by: Roland McGrath
    Cc: Alexandre Oliva
    Cc: Sam Ravnborg
    Signed-off-by: Linus Torvalds

    Kyle McMartin
     

20 Mar, 2009

2 commits

  • Sam Ravnborg says:
    "We have several architectures that plays strange games with $(CC) and
    $(CROSS_COMPILE).

    So we need to postpone any use of $(call cc-option..) until we have
    included the arch specific Makefile so we try with the correct $(CC)
    version."

    Requested-by: Sam Ravnborg
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • This makes sure that gcc doesn't try to optimize away wrapping
    arithmetic, which the kernel occasionally uses for overflow testing, ie
    things like

    if (ptr + offset < ptr)

    which technically is undefined for non-unsigned types. See

    http://bugzilla.kernel.org/show_bug.cgi?id=12597

    for details.

    Not all versions of gcc support it, so we need to make it conditional
    (it looks like it was introduced in gcc-3.4).

    Reminded-by: Alan Cox
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

13 Mar, 2009

1 commit


07 Mar, 2009

2 commits

  • Following a thread on busybox mailing list
    depmod -r option is ignored by module-init-tools depmod
    -r option break busybox depmod.

    So the best solution look to remove -r from kernel Makefile

    Signed-off-by: Gilles Espinasse
    Signed-off-by: Sam Ravnborg

    Gilles Espinasse
     
  • Running 'make rpm' fails when CONFIG_LOCALVERSION_AUTO=y and using a kernel source
    tree under SCM. This is due to KERNELRELEASE being different when the initial make
    is run and when make is run from rpmbuild.

    mkspec creates kernel.spec using KERNELRELEASE:

    echo "%files"
    echo '%defattr (-, root, root)'
    echo "%dir /lib/modules"
    echo "/lib/modules/$KERNELRELEASE"
    echo "/lib/firmware"
    echo "/boot/*"
    echo ""

    When CONFIG_LOCALVERSION_AUTO=y scripts/setlocalversion is called and grabs any
    additional version info from SCM. Next, the srctree is tarred up and SCM
    information is excluded.

    rpmbuild reruns make and in the process generates a new include/config/kernel.release
    and thus a new KERNELRELEASE. However this time the SCM information is gone so
    KERNELRELEASE no longer has the additional version information. When "make modules_install"
    runs, it uses the new KERNELRELEASE value to determine where to install the modules.
    This conflicts with where the spec file assumes they are going because of the
    mis-matching KERNELRELEASE versions.

    + INSTALL_MOD_PATH=/var/tmp/kernel-2.6.29rc4tip01479g5d85422-root
    + make -j16 modules_install
    INSTALL crypto/aead.ko
    INSTALL crypto/cbc.ko
    INSTALL crypto/chainiv.ko
    INSTALL crypto/crc32c.ko
    INSTALL crypto/crypto_algapi.ko
    INSTALL crypto/crypto_blkcipher.ko
    INSTALL crypto/crypto_hash.ko
    INSTALL crypto/cryptomgr.ko
    INSTALL crypto/ecb.ko
    INSTALL crypto/eseqiv.ko
    INSTALL crypto/krng.ko
    INSTALL crypto/md5.ko
    INSTALL crypto/pcbc.ko
    INSTALL crypto/rng.ko
    INSTALL drivers/block/cciss.ko
    INSTALL drivers/hid/hid-dummy.ko
    INSTALL drivers/scsi/iscsi_tcp.ko
    INSTALL drivers/scsi/libiscsi.ko
    INSTALL drivers/scsi/libiscsi_tcp.ko
    INSTALL drivers/scsi/scsi_transport_iscsi.ko
    INSTALL drivers/scsi/scsi_wait_scan.ko
    INSTALL fs/lockd/lockd.ko
    INSTALL fs/nfs/nfs.ko
    INSTALL fs/nfsd/nfsd.ko
    INSTALL lib/libcrc32c.ko
    INSTALL net/sunrpc/sunrpc.ko
    DEPMOD 2.6.29-rc4-tip
    + cp arch/x86/boot/bzImage
    /var/tmp/kernel-2.6.29rc4tip01479g5d85422-root/boot/vmlinuz-2.6.29-rc4-tip-01479-g5d85422
    + cp System.map
    /var/tmp/kernel-2.6.29rc4tip01479g5d85422-root/boot/System.map-2.6.29-rc4-tip-01479-g5d85422
    + cp .config
    /var/tmp/kernel-2.6.29rc4tip01479g5d85422-root/boot/config-2.6.29-rc4-tip-01479-g5d85422
    + cp vmlinux vmlinux.orig
    + bzip2 -9 vmlinux
    + mv vmlinux.bz2
    /var/tmp/kernel-2.6.29rc4tip01479g5d85422-root/boot/vmlinux-2.6.29-rc4-tip-01479-g5d85422.bz2
    + mv vmlinux.orig vmlinux
    + /usr/lib/rpm/brp-compress
    Processing files: kernel-2.6.29rc4tip01479g5d85422-2
    error: File not found:
    /var/tmp/kernel-2.6.29rc4tip01479g5d85422-root/lib/modules/2.6.29-rc4-tip-01479-g5d85422

    RPM build errors:
    File not found:
    /var/tmp/kernel-2.6.29rc4tip01479g5d85422-root/lib/modules/2.6.29-rc4-tip-01479-g5d85422
    make[1]: *** [rpm] Error 1
    make: *** [rpm] Error 2

    I have tested this patch on git -tip, Linus' git tree, and the kernel.org tar files, both
    with and without CONFIG_LOCALVERSION_AUTO=y.

    Signed-off-by: Josh Hunt
    Signed-off-by: Sam Ravnborg
    ----

    Josh Hunt
     

04 Mar, 2009

1 commit


23 Feb, 2009

1 commit


15 Feb, 2009

1 commit

  • It's useful to already have the source symlink in a
    objdir when one just runs make *config. Then one
    can do

    mkdir obj-allyes
    cd obj-allyes
    make -C ../sourcedir O=$(pwd) allyesconfig
    ./source/scripts/config --disable debug_info
    make CC=icecc -j18

    without having to interrupt the make first just to
    get the source symlink.

    Signed-off-by: Andi Kleen
    [sam: deleted the other source symlink statement]
    Signed-off-by: Sam Ravnborg

    Andi Kleen
     

14 Feb, 2009

1 commit


09 Feb, 2009

1 commit


29 Jan, 2009

1 commit


27 Jan, 2009

2 commits


17 Jan, 2009

1 commit


16 Jan, 2009

1 commit

  • Merge header files for m68k and m68knommu to the single location:

    arch/m68k/include/asm

    The majority of this patch was the result of the
    script that is included in the changelog below.

    The script was originally written by Arnd Bergman and
    exten by me to cover a few more files.

    When the header files differed the script uses the following:

    The original m68k file is named _mm.h [mm for memory manager]
    The m68knommu file is named _no.h [no for no memory manager]

    The files uses the following include guard:

    This include gaurd works as the m68knommu toolchain set
    the __uClinux__ symbol - so this should work in userspace too.

    Merging the header files for m68k and m68knommu exposes the
    (unexpected?) ABI differences thus it is easier to actually
    identify these and thus to fix them.

    The commit has been build tested with both a m68k and
    a m68knommu toolchain - with success.

    The commit has also been tested with "make headers_check"
    and this patch fixes make headers_check for m68knommu.

    The script used:
    TARGET=arch/m68k/include/asm
    SOURCE=arch/m68knommu/include/asm

    INCLUDE="cachectl.h errno.h fcntl.h hwtest.h ioctls.h ipcbuf.h \
    linkage.h math-emu.h md.h mman.h movs.h msgbuf.h openprom.h \
    oplib.h poll.h posix_types.h resource.h rtc.h sembuf.h shmbuf.h \
    shm.h shmparam.h socket.h sockios.h spinlock.h statfs.h stat.h \
    termbits.h termios.h tlb.h types.h user.h"

    EQUAL="auxvec.h cputime.h device.h emergency-restart.h futex.h \
    ioctl.h irq_regs.h kdebug.h local.h mutex.h percpu.h \
    sections.h topology.h"

    NOMUUFILES="anchor.h bootstd.h coldfire.h commproc.h dbg.h \
    elia.h flat.h m5206sim.h m520xsim.h m523xsim.h m5249sim.h \
    m5272sim.h m527xsim.h m528xsim.h m5307sim.h m532xsim.h \
    m5407sim.h m68360_enet.h m68360.h m68360_pram.h m68360_quicc.h \
    m68360_regs.h MC68328.h MC68332.h MC68EZ328.h MC68VZ328.h \
    mcfcache.h mcfdma.h mcfmbus.h mcfne.h mcfpci.h mcfpit.h \
    mcfsim.h mcfsmc.h mcftimer.h mcfuart.h mcfwdebug.h \
    nettel.h quicc_simple.h smp.h"

    FILES="atomic.h bitops.h bootinfo.h bug.h bugs.h byteorder.h cache.h \
    cacheflush.h checksum.h current.h delay.h div64.h \
    dma-mapping.h dma.h elf.h entry.h fb.h fpu.h hardirq.h hw_irq.h io.h \
    irq.h kmap_types.h machdep.h mc146818rtc.h mmu.h mmu_context.h \
    module.h page.h page_offset.h param.h pci.h pgalloc.h \
    pgtable.h processor.h ptrace.h scatterlist.h segment.h \
    setup.h sigcontext.h siginfo.h signal.h string.h system.h swab.h \
    thread_info.h timex.h tlbflush.h traps.h uaccess.h ucontext.h \
    unaligned.h unistd.h"

    mergefile() {
    BASE=${1%.h}
    git mv ${SOURCE}/$1 ${TARGET}/${BASE}_no.h
    git mv ${TARGET}/$1 ${TARGET}/${BASE}_mm.h

    cat << EOF > ${TARGET}/$1
    EOF

    git add ${TARGET}/$1
    }

    set -e

    mkdir -p ${TARGET}

    git mv include/asm-m68k/* ${TARGET}
    rmdir include/asm-m68k

    git rm ${SOURCE}/Kbuild
    for F in $INCLUDE $EQUAL; do
    git rm ${SOURCE}/$F
    done

    for F in $NOMUUFILES; do
    git mv ${SOURCE}/$F ${TARGET}/$F
    done

    for F in $FILES ; do
    mergefile $F
    done

    rmdir arch/m68knommu/include/asm
    rmdir arch/m68knommu/include

    Cc: Arnd Bergmann
    Cc: Geert Uytterhoeven
    Signed-off-by: Sam Ravnborg
    Signed-off-by: Greg Ungerer

    Sam Ravnborg
     

15 Jan, 2009

1 commit

  • This reverts commit ad7a953c522ceb496611d127e51e278bfe0ff483.

    And commit: ("allow stripping of generated symbols under CONFIG_KALLSYMS_ALL")
    9bb482476c6c9d1ae033306440c51ceac93ea80c

    These stripping patches has caused a set of issues:

    1) People have reported compatibility issues with binutils due to
    lack of support for `--strip-unneeded-symbols' with objcopy 2.15.92.0.2
    Reported by: Wenji
    2) ccache and distcc no longer works as expeced
    Reported by: Ted, Roland, + others
    3) The installed modules increased a lot in size
    Reported by: Ted, Davej + others

    Reported-by: Wenji Huang
    Reported-by: "Theodore Ts'o"
    Reported-by: Dave Jones
    Reported-by: Roland McGrath
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

11 Jan, 2009

1 commit


08 Jan, 2009

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes:
    kbuild: fix typos (s/bin_shipped/bin.o_shipped/) in Documentation
    kbuild: add a symlink to the source for separate objdirs
    kconfig: add script to manipulate .config files on the command line
    kbuild: reintroduce ALLSOURCE_ARCHS support for tags/cscope
    bootchart: improve output based on Dave Jones' feedback
    fix modules_install via NFS
    qnx: include for definitions of __[us]{8,16,32,64} types

    Linus Torvalds
     
  • I have some scripts which need to map back to the source directory
    from an objdir. This was so far done by parsing the Makefile,
    but the Makefile format changes occasionally and breaks my scripts
    then.

    To make this more reliable add a "source" symlink back.

    Signed-off-by: Andi Kleen
    Signed-off-by: Sam Ravnborg

    Andi Kleen
     

06 Jan, 2009

1 commit


03 Jan, 2009

1 commit


29 Dec, 2008

2 commits

  • Conflicts:
    arch/sparc64/kernel/idprom.c

    David S. Miller
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next: (25 commits)
    allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
    kbuild: strip generated symbols from *.ko
    kbuild: simplify use of genksyms
    kernel-doc: check for extra kernel-doc notations
    kbuild: add headerdep used to detect inclusion cycles in header files
    kbuild: fix string equality testing in tags.sh
    kbuild: fix make tags/cscope
    kbuild: fix make incompatibility
    kbuild: remove TAR_IGNORE
    setlocalversion: add git-svn support
    setlocalversion: print correct subversion revision
    scripts: improve the decodecode script
    scripts/package: allow custom options to rpm
    genksyms: allow to ignore symbol checksum changes
    genksyms: track symbol checksum changes
    tags and cscope support really belongs in a shell script
    kconfig: fix options to check-lxdialog.sh
    kbuild: gen_init_cpio expands shell variables in file names
    remove bashisms from scripts/extract-ikconfig
    kbuild: teach mkmakfile to be silent
    ...

    Linus Torvalds
     

25 Dec, 2008

1 commit


20 Dec, 2008

2 commits

  • Building upon parts of the module stripping patch, this patch
    introduces similar stripping for vmlinux when CONFIG_KALLSYMS_ALL=y.
    Using CONFIG_KALLSYMS_STRIP_GENERATED reduces the overhead of
    CONFIG_KALLSYMS_ALL from 245k/310k to 65k/80k for the (i386/x86-64)
    kernels I tested with.

    The patch also does away with the need to special case the kallsyms-
    internal symbols by making them available even in the first linking
    stage.

    While it is a generated file, the patch includes the changes to
    scripts/genksyms/keywords.c_shipped, as I'm unsure what the procedure
    here is.

    Signed-off-by: Jan Beulich
    Signed-off-by: Sam Ravnborg

    Jan Beulich
     
  • This patch changes the way __crc_ symbols are being resolved from
    using ld to do so to using the assembler, thus allowing these symbols
    to be marked local (the linker creates then as global ones) and hence
    allow stripping (for modules) or ignoring (for vmlinux) them. While at
    this, also strip other generated symbols during module installation.

    One potentially debatable point is the handling of the flags passeed
    to gcc when translating the intermediate assembly file into an object:
    passing $(c_flags) unchanged doesn't work as gcc passes --gdwarf2 to
    gas whenever is sees any -g* option, even for -g0, and despite the
    fact that the compiler would have already produced all necessary debug
    info in the C->assembly translation phase. I took the approach of just
    filtering out all -g* options, but an alternative to such negative
    filtering might be to have a positive filter which might, in the ideal
    case allow just all the -Wa,* options to pass through.

    Signed-off-by: Jan Beulich
    Signed-off-by: Sam Ravnborg

    Jan Beulich
     

19 Dec, 2008

2 commits


14 Dec, 2008

1 commit

  • "Paul Smith" reported that we would fail
    to build with a new check that may be enabled in an
    upcoming version of make.

    The error was:

    Makefile:442: *** mixed implicit and normal rules. Stop.

    The problem is that we did stuff like this:

    config %config: ...

    The solution was simple - the above was split into two with identical
    prerequisites and commands.
    With only three lines it was not worth to try to avoid the duplication.

    Cc: "Paul Smith"
    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

11 Dec, 2008

1 commit


05 Dec, 2008

1 commit

  • To unify Makefile for sparc and sparc64 a few other steps was needed:
    1) separate defconfig files for sparc and sparc64 is required,
    so locate these in arch/sparc/configs
    2) removoval of hack in toplevel Makefile to deal with that
    headers was in a separate directory compared to the rest

    The unification of the Makefile required usage of several

    foo-$(CONFIG_SPARCnn) +=

    due to a few directories pending unification.
    This will be cleaned up when we unify the remaining directories.

    Included in this patch are the deletion of a few files in
    sparc64 as they are no longer needed: Makefile + Kconfig.
    arch/sparc64/ will after this patch is applied only
    have four directories (prom, lib, kernel, boot)

    Signed-off-by: Sam Ravnborg
    Signed-off-by: David S. Miller

    Sam Ravnborg
     

04 Dec, 2008

3 commits

  • as they do not benefit from the make functionality.

    Moving the support to a shell script has several benefits:
    - The readability of the code has increased a lot
    - More people is able to extend the tags support
    - We see less changes to the top-level Makefile

    The shell script version includes improvements from:
    Alexey Dobriyan (jump to kconfig symbols)
    Alexey Dobriyan (drop ./ in paths)
    Ian Campbell (simplified find algorithms)

    This version has a few caveats:
    => It does not support ALLSOURCE_ARCHS
    - it is easy to add if it is really used
    => It assumes all archs have moved to arch/$ARCH/include
    - until that happens we have a few additional hits in the archs

    Signed-off-by: Sam Ravnborg
    Cc: Alexey Dobriyan
    Tested-by: Ian Campbell

    Sam Ravnborg
     
  • Convert a few echos in the build system to new $(kecho) so we get correct
    output according to build verbosity.

    Signed-off-by: Mike Frysinger
    [sam: added kecho in a few more places for O=... builds]
    Signed-off-by: Sam Ravnborg

    Mike Frysinger
     
  • kbuild failed to expand include flags in KBUILD_CPPFLAGS
    resulting in code like this in arch Makefiles:

    ifeq ($(KBUILD_SRC),)
    KBUILD_CPPFLAGS += -Iinclude/foo
    else
    KBUILD_CPPFLAGS += -I$(srctree)/include/foo
    endif

    Move use of LINUXINCLUDE into Makefile.lib to allow
    us to expand -I directives of KBUILD_CPPFLAGS so
    we can avoid the above code.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

02 Dec, 2008

1 commit


21 Nov, 2008

1 commit


16 Nov, 2008

1 commit


10 Nov, 2008

1 commit