lkml.org 
[lkml]   [2023]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: .config and "make" / turning off all debug
    From
    Hi--

    On 2/21/23 08:16, Hanasaki Jiji wrote:
    > Is there a command line parameter to Make that will disable anything
    > that results in a debuggable kernel?

    No.

    > Is there a tool that will modify .config removing anything that will
    > result in a debuggable kernel?

    We don't have a nice, clean, packaged way to do this.

    It also depends on what you mean by DEBUG. I would first disable
    CONFIG_COMPILE_TEST, then decide if you want TRACE/TRACING features
    disabled or enabled. Also decide whether you want DEBUGFS
    options enabled or disabled.

    There are a couple of things that you can try. YMMV.

    Neither of these is a complete solution; option 2 requires
    the user to update the list of config options that should be disabled
    as needed.

    (1) Use a script to convert all occurrences of
    /CONFIG.*DEBUG=y/ to /# CONFIG.*DEBUG is not set/.

    This misses a few CONFIG options where "DEBUG" is toward the middle
    of the CONFIG option, like CONFIG_DEBUG_RSEQ, CONFIG_DEBUG_TEST_DRIVER_REMOVE,
    CONFIG_C710_DEBUG_ASSUMPTIONS, CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING,
    CONFIG_DRM_DEBUG_xyzzz (a few like this), CONFIG_DEBUG_KERNEL_DC,
    CONFIG_NOUVEAU_DEBUG_xyzzz (a few), CONFIG_DRM_I915_DEBUG_xyzzz (a few),
    CONFIG_SND_SOC_SOF_xyzzz (several), CONFIG_HFI1_DEBUG_SDMA_ORDER,
    CONFIG_AFS_DEBUG_CURSOR, CONFIG_DEBUG_NET, lots of entries in the
    Kernel Hacking menu. Then there are several SELFTEST config options,
    but they are not always spelled "SELFTEST"; they might just be spelled
    TEST or TESTS.

    I'll attach a Perl script (from 2009) that begins the work on option 1,
    but I haven't used it since forever.

    (2) Make a "mini.config" file that contains a list of all the options that you
    want to have set in a certain way (can be either enabled or disabled).
    Then use
    $ KCONFIG_ALLCONFIG=your.mini.config make allmodconfig

    This is the documented and supported way. It is documented in
    Documentation/kbuild/kconfig.rst:

    <begin quote>

    KCONFIG_ALLCONFIG
    -----------------
    (partially based on lkml email from/by Rob Landley, re: miniconfig)

    --------------------------------------------------

    The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also
    use the environment variable KCONFIG_ALLCONFIG as a flag or a filename
    that contains config symbols that the user requires to be set to a
    specific value. If KCONFIG_ALLCONFIG is used without a filename where
    KCONFIG_ALLCONFIG == "" or KCONFIG_ALLCONFIG == "1", `make *config`
    checks for a file named "all{yes/mod/no/def/random}.config"
    (corresponding to the `*config` command that was used) for symbol values
    that are to be forced. If this file is not found, it checks for a
    file named "all.config" to contain forced values.

    This enables you to create "miniature" config (miniconfig) or custom
    config files containing just the config symbols that you are interested
    in. Then the kernel config system generates the full .config file,
    including symbols of your miniconfig file.

    This 'KCONFIG_ALLCONFIG' file is a config file which contains
    (usually a subset of all) preset config symbols. These variable
    settings are still subject to normal dependency checks.

    Examples::

    KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig

    or::

    KCONFIG_ALLCONFIG=mini.config make allnoconfig

    or::

    make KCONFIG_ALLCONFIG=mini.config allnoconfig

    These examples will disable most options (allnoconfig) but enable or
    disable the options that are explicitly listed in the specified
    mini-config files.

    <end quote>

    Note that this only works with "make allyesconfig/allmodconfig/allnoconfig/randconfig"
    variants. You could try it and see if it works for you.

    I'll also attach a sample "disable.all.debug.config" file for this option.
    You will need to update this CONFIG options list continually.

    HTH. Good luck.

    --
    ~Randy#! /usr/bin/perl
    # config.debug.off: change all /CONFIG_xyz_DEBUG=y/ to /# CONFIG_xyz_DEBUG is not set/
    # Randy Dunlap, April-2009
    #
    $VER = "001";

    use Getopt::Std;

    getopts("v");

    my $changecount = 0;

    sub usage() {
    print "usage: config.debug.off [-v] < config.file1 > config.file2 [ver. $VER]\n";
    print " -v : verbose\n";
    exit (1);
    }

    ##if ($opt_v) { }

    LINE: while ($line = <STDIN>) {
    chomp $line;

    if ($line =~ /^(CONFIG.*_DEBUG)=y/) {
    print "# $1 is not set\n";
    $changecount++;
    }
    else {
    print "$line\n";
    }
    }

    printf STDERR "$changecount lines changed\n";
    [unhandled content-type:application/x-config]
    \
     
     \ /
      Last update: 2023-03-27 00:31    [W:8.559 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site