11 Oct, 2011

1 commit

  • Consider structures, unions and enums defined in the source file as
    internal and do not expand them. This way, changes to e.g. struct
    serial_private in drivers/tty/serial/8250_pci.c will not affect the
    checksum of the pciserial_* exports.

    Michal Marek
     

25 Jul, 2011

1 commit

  • The ARRAY_SIZE macro in scripts/genksyms/genksyms.c returns a value of
    type size_t. That value is being compared to a variable of type int in
    a loop in read_node(). Change the int variable to size_t type as well,
    so we don't do signed vs unsigned type comparisons with all the
    potential promotion/sign extension trouble that can cause (also
    silences compiler warnings at high levels of warnings).

    Signed-off-by: Jesper Juhl
    Signed-off-by: Michal Marek

    Jesper Juhl
     

17 Mar, 2011

4 commits

  • Enum constants can be used as array sizes; if the enum itself does not
    appear in the symbol expansion, a change in the enum constant will go
    unnoticed. Example patch that changes the ABI but does not change the
    checksum with current genksyms:

    | enum e {
    | E1,
    | E2,
    |+ E3,
    | E_MAX
    | };
    |
    | struct s {
    | int a[E_MAX];
    | }
    |
    | int f(struct s *s) { ... }
    | EXPORT_SYMBOL(f)

    Therefore, remember the value of each enum constant and
    expand each occurence to . The value is not actually
    computed, but instead an expression in the form
    (last explicitly assigned value) + N
    is used. This avoids having to parse and semantically understand whole
    of C.

    Note: The changes won't take effect until the lexer and parser are
    rebuilt by the next patch.

    Signed-off-by: Michal Marek
    Acked-by: Sam Ravnborg

    Michal Marek
     
  • Allow searching for symbols of an exact type. The lexer does this and a
    subsequent patch will add one more usage.

    Signed-off-by: Michal Marek
    Acked-by: Sam Ravnborg

    Michal Marek
     
  • Signed-off-by: Michal Marek
    Acked-by: Sam Ravnborg

    Michal Marek
     
  • Instead of special-casing SYM_NORMAL, do not map any name to it. Also
    explicitly set the single-letter name of the symbol type, which will be
    needed by a further patch. The only user-visible change is one debug
    printf.

    Signed-off-by: Michal Marek
    Acked-by: Sam Ravnborg

    Michal Marek
     

02 Feb, 2010

1 commit


23 Sep, 2009

1 commit


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
     

20 Dec, 2008

1 commit

  • 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
     

04 Dec, 2008

2 commits

  • This adds an "override" keyword for use in *.symvers / *.symref files.
    When a symbol is overridden, the symbol's old definition will be used for
    computing checksums instead of the new one, preserving the previous
    checksum. (Genksyms will still warn about the change.)

    This is meant to allow distributions to hide minor actual as well as fake
    ABI changes. (For example, when extra type information becomes available
    because additional headers are included, this may change checksums even
    though none of the types used have actully changed.)

    This approach also allows to get rid of "#ifdef __GENKSYMS__" hacks in the
    code, which are currently used in some vendor kernels to work around
    checksum changes.

    Signed-off-by: Andreas Gruenbacher
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Andreas Gruenbacher
     
  • Sometimes it is preferable to avoid changes of exported symbol checksums
    (to avoid breaking externally provided modules). When a checksum change
    occurs, it can be hard to figure out what caused this change: underlying
    types may have changed, or additional type information may simply have
    become available at the point where a symbol is exported.

    Add a new --reference option to genksyms which allows it to report why
    checksums change, based on the type information dumps it creates with the
    --dump-types flag. Genksyms will read in such a dump from a previous run,
    and report which symbols have changed (and why).

    The behavior can be controlled for an entire build as follows: If
    KBUILD_SYMTYPES is set, genksyms uses --dump-types to produce *.symtypes
    dump files. If any *.symref files exist, those will be used as the
    reference to check against. If KBUILD_PRESERVE is set, checksum changes
    will fail the build.

    Signed-off-by: Andreas Gruenbacher
    Cc: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Sam Ravnborg

    Andreas Gruenbacher
     

01 Aug, 2008

1 commit


25 Jul, 2008

1 commit

  • Trying to compile the v850 port brings many compile errors, one of them exists
    since at least kernel 2.6.19.

    There also seems to be noone willing to bring this port back into a usable
    state.

    This patch therefore removes the v850 port.

    If anyone ever decides to revive the v850 port the code will still be
    available from older kernels, and it wouldn't be impossible for the port to
    reenter the kernel if it would become actively maintained again.

    Signed-off-by: Adrian Bunk
    Acked-by: Greg Ungerer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     

29 Jan, 2008

1 commit

  • The usage does not mention the "-a,--arch" or "-T,--dump-types" options, so
    add them. The calls to getopt() seem to mention options that no longer exist
    (some "k" and "p" thingy) but omits the "h" option which means using '-h'
    actually triggers the error code path, so update those as well.

    Signed-off-by: Mike Frysinger
    Signed-off-by: Sam Ravnborg

    Mike Frysinger
     

08 May, 2007

1 commit

  • This adds support for the Analog Devices Blackfin processor architecture, and
    currently supports the BF533, BF532, BF531, BF537, BF536, BF534, and BF561
    (Dual Core) devices, with a variety of development platforms including those
    avaliable from Analog Devices (BF533-EZKit, BF533-STAMP, BF537-STAMP,
    BF561-EZKIT), and Bluetechnix! Tinyboards.

    The Blackfin architecture was jointly developed by Intel and Analog Devices
    Inc. (ADI) as the Micro Signal Architecture (MSA) core and introduced it in
    December of 2000. Since then ADI has put this core into its Blackfin
    processor family of devices. The Blackfin core has the advantages of a clean,
    orthogonal,RISC-like microprocessor instruction set. It combines a dual-MAC
    (Multiply/Accumulate), state-of-the-art signal processing engine and
    single-instruction, multiple-data (SIMD) multimedia capabilities into a single
    instruction-set architecture.

    The Blackfin architecture, including the instruction set, is described by the
    ADSP-BF53x/BF56x Blackfin Processor Programming Reference
    http://blackfin.uclinux.org/gf/download/frsrelease/29/2549/Blackfin_PRM.pdf

    The Blackfin processor is already supported by major releases of gcc, and
    there are binary and source rpms/tarballs for many architectures at:
    http://blackfin.uclinux.org/gf/project/toolchain/frs There is complete
    documentation, including "getting started" guides available at:
    http://docs.blackfin.uclinux.org/ which provides links to the sources and
    patches you will need in order to set up a cross-compiling environment for
    bfin-linux-uclibc

    This patch, as well as the other patches (toolchain, distribution,
    uClibc) are actively supported by Analog Devices Inc, at:
    http://blackfin.uclinux.org/

    We have tested this on LTP, and our test plan (including pass/fails) can
    be found at:
    http://docs.blackfin.uclinux.org/doku.php?id=testing_the_linux_kernel

    [m.kozlowski@tuxland.pl: balance parenthesis in blackfin header files]
    Signed-off-by: Bryan Wu
    Signed-off-by: Mariusz Kozlowski
    Signed-off-by: Aubrey Li
    Signed-off-by: Jie Zhang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bryan Wu
     

25 Jun, 2006

1 commit

  • Here is a patch that adds a new -T option to genksyms for generating dumps of
    the type definition that makes up the symbol version hashes. This allows to
    trace modversion changes back to what caused them. The dump format is the
    name of the type defined, followed by its definition (which is almost C):

    s#list_head struct list_head { s#list_head * next , * prev ; }

    The s#, u#, e#, and t# prefixes stand for struct, union, enum, and typedef.
    The exported symbols do not define types, and thus do not have an x# prefix:

    nfs4_acl_get_whotype int nfs4_acl_get_whotype ( char * , t#u32 )

    The symbol type defintion of a single file can be generated with:

    make fs/jbd/journal.symtypes

    If KBUILD_SYMTYPES is defined, all the *.symtypes of all object files that
    export symbols are generated.

    The single *.symtypes files can be combined into a single file after a kernel
    build with a script like the following:

    for f in $(find -name '*.symtypes' | sort); do
    f=${f#./}
    echo "/* ${f%.symtypes}.o */"
    cat $f
    echo
    done \
    | sed -e '\:UNKNOWN:d' \
    -e 's:[,;] }:}:g' \
    -e 's:\([[({]\) :\1:g' \
    -e 's: \([])},;]\):\1:g' \
    -e 's: $::' \
    $f \
    | awk '
    /^.#/ { if (defined[$1] == $0) {
    print $1
    next
    }
    defined[$1] = $0
    }
    { print }
    '

    When the kernel ABI changes, diffing individual *.symtype files, or the
    combined files, against each other will show which symbol changes caused the
    ABI changes. This can save a tremendous amount of time.

    Dump the types that make up modversions

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Sam Ravnborg

    Andreas Gruenbacher
     

13 Mar, 2006

3 commits

  • o remove all inlines
    o declare everything static which is only used by genksyms.c
    o delete unused functions
    o delete unused variables
    o delete unused stuff in genksyms.h
    o properly ident genksyms.h

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • No fix-ups applied yet. Just the raw Lindent output.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     
  • genksyms needs to know when a symbol must have a "_" prefex as is
    true for a few architectures.
    Pass $(ARCH) as commandline argument and hardcode what architectures that
    needs this info.
    Previous attemt to take it from elfconfig.h was br0ken since elfconfig.h
    is a generated file.

    Signed-off-by: Sam Ravnborg

    Sam Ravnborg
     

09 Mar, 2006

1 commit

  • The scripts/genksyms/genksyms.c uses hardcoded "__crc_" prefix for
    crc symbols in kernel and modules. The prefix should be replaced by
    "MODULE_SYMBOL_PREFIX##__crc_" otherwise there will be warnings when
    MODULE_SYMBOL_PREFIX is not NULL.

    I am sorry my last patch for this issue is actually wrong. I revert
    it in this patch.

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

    Luke Yang
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds