1. 25 Feb, 2018 1 commit
  2. 10 Jan, 2018 1 commit
  3. 20 Aug, 2015 2 commits
    • Michal Marek's avatar
      genksyms: Regenerate parser · 5b733fac
      Michal Marek authored
      Rebuild the parser after commit 1c722503 (genksyms: Duplicate
      function pointer type definitions segfault), using bison 2.7.
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      5b733fac
    • Richard Yao's avatar
      genksyms: Duplicate function pointer type definitions segfault · 1c722503
      Richard Yao authored
      I noticed that genksyms will segfault when it sees duplicate function
      pointer type declaration when I placed the same function pointer
      definition in two separate headers in a local branch as an intermediate
      step of some refactoring. This can be reproduced by piping the following
      minimal test case into `genksyms -r /dev/null` or alternatively, putting
      it into a C file attempting a build:
      
      typedef int (*f)();
      typedef int (*f)();
      
      Attaching gdb to genksyms to understand this failure is useless without
      changing CFLAGS to emit debuginfo. Once you have debuginfo, you will
      find that the failure is that `char *s` was NULL and the program
      executed `while(*s)`. At which point, further debugging requires
      familiarity with compiler front end / parser development.
      
      What happens is that flex identifies the first instance of the token "f"
      as IDENT and the yacc parser adds it to the symbol table. On the second
      instance, flex will identify "f" as TYPE, which triggers an error case
      in the yacc parser. Given that TYPE would have been IDENT had it not
      been in the symbol table, the the segmentaion fault could be avoided by
      treating TYPE as IDENT in the affected rule.
      
      Some might consider placing identical function pointer type declarations
      in different headers to be poor style might consider a failure to be
      beneficial. However, failing through a segmentation fault makes the
      cause non-obvious and can waste the time of anyone who encounters it.
      Signed-off-by: default avatarRichard Yao <richard.yao@clusterhq.com>
      Acked-by: default avatarMadhuri Yechuri <madhuriyechuri@clusterhq.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      1c722503
  4. 03 Apr, 2014 1 commit
    • Jan Beulich's avatar
      genksyms: fix typeof() handling · dc533240
      Jan Beulich authored
      Recent increased use of typeof() throughout the tree resulted in a
      number of symbols (25 in a typical distro config of ours) not getting a
      proper CRC calculated for them anymore, due to the parser in genksyms
      not coping with several of these uses (interestingly in the majority of
      [if not all] cases the problem is due to the use of typeof() in code
      preceding a certain export, not in the declaration/definition of the
      exported function/object itself; I wasn't able to find a way to address
      this more general parser shortcoming).
      
      The use of parameter_declaration is a little more relaxed than would be
      ideal (permitting not just a bare type specification, but also one with
      identifier), but since the same code is being passed through an actual
      compiler, there's no apparent risk of allowing through any broken code.
      
      Otoh using parameter_declaration instead of the ad hoc
      "decl_specifier_seq '*'" / "decl_specifier_seq" pair allows all types to
      be handled rather than just plain ones and pointers to plain ones.
      Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dc533240
  5. 20 Mar, 2013 1 commit
    • James Hogan's avatar
      genksyms: pass symbol-prefix instead of arch · d70f82ac
      James Hogan authored
      Pass symbol-prefix to genksyms instead of arch, so that the decision
      what symbol prefix to use is kept in one place.
      
      Basically genksyms used to take a -a $ARCH argument and it used that to
      determine whether to add an underscore symbol prefix. It's now changed
      to take a -s $SYMBOL_PREFIX argument so that the caller decides whether
      a symbol prefix is required. The build system then uses
      CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX to determine whether to pass the
      argument.
      Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      d70f82ac
  6. 02 Mar, 2013 1 commit
  7. 08 Jan, 2012 1 commit
  8. 11 Oct, 2011 3 commits
  9. 25 Jul, 2011 1 commit
    • Jesper Juhl's avatar
      genksyms: Use same type in loop comparison · 1ae14703
      Jesper Juhl authored
      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: default avatarJesper Juhl <jj@chaosbits.net>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      1ae14703
  10. 09 Jun, 2011 4 commits
  11. 17 Mar, 2011 7 commits
  12. 25 Nov, 2010 1 commit
  13. 02 Feb, 2010 1 commit
  14. 12 Dec, 2009 1 commit
  15. 15 Nov, 2009 1 commit
    • Josh Triplett's avatar
      genksyms: Mark is_reserved_word static · ed9df091
      Josh Triplett authored
      The genksyms keyword gperf hash provides a function is_reserved_word.
      genksyms #includes the resulting generated file keywords.c, so the
      function gets used only in the same source file that defines it.  Mark
      is_reserved_word static, and regenerate the corresponding generated
      file.
      Signed-off-by: default avatarJosh Triplett <josh@joshtriplett.org>
      ed9df091
  16. 23 Sep, 2009 1 commit
  17. 14 Jan, 2009 1 commit
  18. 19 Dec, 2008 2 commits
    • Jan Beulich's avatar
      allow stripping of generated symbols under CONFIG_KALLSYMS_ALL · 9bb48247
      Jan Beulich authored
      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: default avatarJan Beulich <jbeulich@novell.com>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      9bb48247
    • Jan Beulich's avatar
      kbuild: strip generated symbols from *.ko · ad7a953c
      Jan Beulich authored
      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: default avatarJan Beulich <jbeulich@novell.com>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      ad7a953c
  19. 03 Dec, 2008 2 commits
    • Andreas Gruenbacher's avatar
      genksyms: allow to ignore symbol checksum changes · 5dae9a55
      Andreas Gruenbacher authored
      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: default avatarAndreas Gruenbacher <agruen@suse.de>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      5dae9a55
    • Andreas Gruenbacher's avatar
      genksyms: track symbol checksum changes · 64e6c1e1
      Andreas Gruenbacher authored
      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: default avatarAndreas Gruenbacher <agruen@suse.de>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      64e6c1e1
  20. 31 Jul, 2008 2 commits
    • Andreas Gruenbacher's avatar
      kbuild: genksyms: Include extern information in dumps · 3b40d381
      Andreas Gruenbacher authored
      The extern flag currently is not included in type dump files
      (genksyms --dump-types). Include that flag there for completeness.
      Signed-off-by: default avatarAndreas Gruenbacher <agruen@suse.de>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      3b40d381
    • Andreas Gruenbacher's avatar
      kbuild: genksyms parser: fix the __attribute__ rule · 94aa3d71
      Andreas Gruenbacher authored
      We are having two kinds of problems with genksyms today: fake checksum
      changes without actual ABI changes, and changes which we would rather like
      to ignore (such as an additional field at the end of a structure that
      modules are not supposed to touch, for example).
      
      I have thought about ways to improve genksyms and compute checksums
      differently to avoid those problems, but in the end I don't see a
      fundamentally better way.  So here are some genksyms patches for at least
      making the checksums more easily manageable, if we cannot fully fix them.
      
      In addition to the bugfixes (the first two patches), this allows genksyms
      to track checksum changes and report why a checksum changed (third patch),
      and to selectively ignore changes (fourth patch).
      
      This patch:
      
      Gcc __attribute__ definitions may occur repeatedly, e.g.,
      
      	static int foo __attribute__((__used__))
      		       __attribute__((aligned (16)));
      
      The genksyms parser does not understand this, and generates a syntax error.
      Fix this case.
      Signed-off-by: default avatarAndreas Gruenbacher <agruen@suse.de>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      94aa3d71
  21. 30 Jul, 2008 1 commit
  22. 24 Jul, 2008 1 commit
  23. 28 Jan, 2008 1 commit
  24. 12 Oct, 2007 2 commits
    • Sam Ravnborg's avatar
      kbuild: apply genksyms changes · 70f75246
      Sam Ravnborg authored
      This patch updates the _shipped files for genksyms.
      See previous patch for actual functional changes.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      70f75246
    • Sam Ravnborg's avatar
      kbuild: __extension__ support in genksyms (fix unknown CRC warning) · 3550a516
      Sam Ravnborg authored
      Recently the __extension__ keyword has been introduced in the kernel.
      Teach genksyms about this keyword so it can generate correct CRC for
      exported symbols that uses a symbol marked __extension__.
      For now only the typedef variant:
      
      	__extension__ typedef ...
      
      is supported.
      Later we may add more variants as needed.
      
      This patch contains the actual source file changes. The
      following patch will hold modifications to the generated
      files (*_shipped) and only after the second patch the fix
      has effect.
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      3550a516