Skip to content

Instantly share code, notes, and snippets.

@mohammedgqudah
Created October 4, 2024 15:49
Show Gist options
  • Select an option

  • Save mohammedgqudah/86a70195a448a6eb79eaa74ee6d832d0 to your computer and use it in GitHub Desktop.

Select an option

Save mohammedgqudah/86a70195a448a6eb79eaa74ee6d832d0 to your computer and use it in GitHub Desktop.

Revisions

  1. mohammedgqudah created this gist Oct 4, 2024.
    11 changes: 11 additions & 0 deletions build.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    # A workaround I had to do while reading "Linux Kernel Development (3rd Edition)", which uses a *very* old kernel version.
    git checkout v2.6.39

    cp include/linux/compiler-gcc4.h include/linux/compiler-gcc14.h

    # Make a local copy of the patch in this gist
    patch -p1 < v2.6-gcc-14.patch

    make clean
    make defconfig
    CFLAGS="-fcommon" make
    56 changes: 56 additions & 0 deletions v2.6-gcc-14.patch
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    diff --git a/Makefile b/Makefile
    index 123d858dae03..0c17d10b8887 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -542,6 +542,13 @@ endif # $(dot-config)
    # Defaults to vmlinux, but the arch makefile usually adds further targets
    all: vmlinux

    +KBUILD_CFLAGS += $(call cc-option, -fno-pie)
    +KBUILD_CFLAGS += $(call cc-option, -no-pie)
    +KBUILD_AFLAGS += $(call cc-option, -fno-pie)
    +KBUILD_CPPFLAGS += $(call cc-option, -fno-pie)
    +KBUILD_CFLAGS += $(call cc-option, -fcommon)
    +KBUILD_AFLAGS += $(call cc-option, -fcommon)
    +
    ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
    KBUILD_CFLAGS += -Os
    else
    diff --git a/arch/x86/Makefile b/arch/x86/Makefile
    index b02e509072a7..d19d4ee39df7 100644
    --- a/arch/x86/Makefile
    +++ b/arch/x86/Makefile
    @@ -104,6 +104,7 @@ KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr)
    KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr)

    LDFLAGS := -m elf_$(UTS_MACHINE)
    +LDFLAGS := --allow-multiple-definition

    # Speed up the build
    KBUILD_CFLAGS += -pipe
    diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
    index 45ad4ffef533..8cfd997fb840 100644
    --- a/drivers/acpi/osl.c
    +++ b/drivers/acpi/osl.c
    @@ -1091,7 +1091,7 @@ struct osi_setup_entry {
    bool enable;
    };

    -static struct osi_setup_entry __initdata osi_setup_entries[OSI_STRING_ENTRIES_MAX];
    +static struct osi_setup_entry osi_setup_entries[OSI_STRING_ENTRIES_MAX];

    void __init acpi_osi_setup(char *str)
    {
    diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl
    index eb51d76e058a..04612394c53e 100644
    --- a/kernel/timeconst.pl
    +++ b/kernel/timeconst.pl
    @@ -370,7 +370,7 @@ if ($hz eq '--can') {
    }

    @val = @{$canned_values{$hz}};
    - if (!defined(@val)) {
    + if (!@val) {
    @val = compute_values($hz);
    }
    output($hz, @val);