diff --git a/components/bootloader/subproject/main/ld/esp32/bootloader.ld b/components/bootloader/subproject/main/ld/esp32/bootloader.ld index d2f9441f5d..facbf63f55 100644 --- a/components/bootloader/subproject/main/ld/esp32/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32/bootloader.ld @@ -268,6 +268,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32c2/bootloader.ld b/components/bootloader/subproject/main/ld/esp32c2/bootloader.ld index dcf0d0e3eb..01be5ff6a1 100644 --- a/components/bootloader/subproject/main/ld/esp32c2/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32c2/bootloader.ld @@ -279,6 +279,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32c3/bootloader.ld b/components/bootloader/subproject/main/ld/esp32c3/bootloader.ld index c59612a3a7..b7c8685ef1 100644 --- a/components/bootloader/subproject/main/ld/esp32c3/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32c3/bootloader.ld @@ -279,6 +279,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32c5/bootloader.ld b/components/bootloader/subproject/main/ld/esp32c5/bootloader.ld index ff8cb2b93e..9738e41bda 100644 --- a/components/bootloader/subproject/main/ld/esp32c5/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32c5/bootloader.ld @@ -277,6 +277,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32c6/bootloader.ld b/components/bootloader/subproject/main/ld/esp32c6/bootloader.ld index 1c32b2e72c..2b4daa233f 100644 --- a/components/bootloader/subproject/main/ld/esp32c6/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32c6/bootloader.ld @@ -278,6 +278,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32c61/bootloader.ld b/components/bootloader/subproject/main/ld/esp32c61/bootloader.ld index 0116028328..cadd0fad16 100644 --- a/components/bootloader/subproject/main/ld/esp32c61/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32c61/bootloader.ld @@ -277,6 +277,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32h2/bootloader.ld b/components/bootloader/subproject/main/ld/esp32h2/bootloader.ld index 8f97b5b40e..c2acf37df6 100644 --- a/components/bootloader/subproject/main/ld/esp32h2/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32h2/bootloader.ld @@ -277,6 +277,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32h21/bootloader.ld b/components/bootloader/subproject/main/ld/esp32h21/bootloader.ld index ed787d756b..9774dbfac4 100644 --- a/components/bootloader/subproject/main/ld/esp32h21/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32h21/bootloader.ld @@ -277,6 +277,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32h4/bootloader.ld b/components/bootloader/subproject/main/ld/esp32h4/bootloader.ld index 416756114a..093a7a8b78 100644 --- a/components/bootloader/subproject/main/ld/esp32h4/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32h4/bootloader.ld @@ -269,6 +269,20 @@ SECTIONS * And so forth... */ /DISCARD/ : { *(.rela.*) } + + /** + * This section is not included in the binary image; it is only present in the ELF file. + * It is used to keep certain symbols in the ELF file. + */ + .noload 0 (INFO) : + { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); + _noload_keep_in_elf_start = ABSOLUTE(.); + KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) + _noload_keep_in_elf_end = ABSOLUTE(.); + } } /** diff --git a/components/bootloader/subproject/main/ld/esp32p4/bootloader.ld b/components/bootloader/subproject/main/ld/esp32p4/bootloader.ld index edb3378972..d3941b7e44 100644 --- a/components/bootloader/subproject/main/ld/esp32p4/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32p4/bootloader.ld @@ -277,6 +277,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32s2/bootloader.ld b/components/bootloader/subproject/main/ld/esp32s2/bootloader.ld index 076472974b..9bde08ceed 100644 --- a/components/bootloader/subproject/main/ld/esp32s2/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32s2/bootloader.ld @@ -257,6 +257,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld b/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld index dad1ba40af..90514a6a7a 100644 --- a/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld +++ b/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld @@ -291,6 +291,9 @@ SECTIONS */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) _noload_keep_in_elf_end = ABSOLUTE(.); diff --git a/components/esp_system/ld/elf_misc.ld.in b/components/esp_system/ld/elf_misc.ld.in index d9891a34e8..74ce86bf03 100644 --- a/components/esp_system/ld/elf_misc.ld.in +++ b/components/esp_system/ld/elf_misc.ld.in @@ -6,6 +6,9 @@ */ .noload 0 (INFO) : { + /* Reserve first 4 bytes as zero for vars pointed to NULL */ + . = 0; + LONG(0); _noload_keep_in_elf_start = ABSOLUTE(.); KEEP(*(.noload_keep_in_elf .noload_keep_in_elf.*)) mapping[noload_keep_in_elf]