Commit Graph
5911 Commits
Author SHA1 Message Date
Frantisek Hrbata a60c3c4f29 fix(ldgen): don't emit intermediate placements without sections
When a symbol needs to be placed to a different target than the one
designated for the object file, the object file is expanded, which
includes the following steps:

1. Creating a new placement for the symbol's input section with the
   specified target.
2. Excluding the object placement from the orignal target.
3. Creating a new intermediate placement for the object for the original
   target, where its input sections are expanded, excluding the input
   section for the symbol.

Let's illustrate the object expansion process with the following example:

[sections:rodata]
entries:
    .rodata+
    .sdata2+
    .srodata+

[scheme:default]
entries:
    text -> flash_text
    rodata -> flash_rodata

[scheme:noflash]
entries:
    text -> iram0_text
    rodata -> dram0_data

[mapping:soc_pm]
archive: libsoc.a
entries:
    gpio_periph: GPIO_HOLD_MASK (noflash)

gpio_periph section headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00000000 000034 000000 00  AX  0   0  2
  [ 2] .data             PROGBITS        00000000 000034 000000 00  WA  0   0  1
  [ 3] .bss              NOBITS          00000000 000034 000000 00  WA  0   0  1
  [ 4] .rodata.GPIO_HOLD_MASK PROGBITS        00000000 000034 000058 00   A  0   0  4
  [ 5] .rodata.GPIO_PIN_MUX_REG PROGBITS        00000000 00008c 000058 00   A  0   0  4
  [ 6] .debug_info       PROGBITS        00000000 0000e4 0000d8 00      0   0  1
  [ 7] .rela.debug_info  RELA            00000000 0009d4 000108 0c   I 16   6  4
  [ 8] .debug_abbrev     PROGBITS        00000000 0001bc 000070 00      0   0  1
  [ 9] .debug_aranges    PROGBITS        00000000 00022c 000018 00      0   0  1
  [10] .rela.debug_aranges RELA            00000000 000adc 00000c 0c   I 16   9  4
  [11] .debug_line       PROGBITS        00000000 000244 0001ab 00      0   0  1
  [12] .debug_str        PROGBITS        00000000 0003ef 00022d 01  MS  0   0  1
  [13] .comment          PROGBITS        00000000 00061c 000030 01  MS  0   0  1
  [14] .note.GNU-stack   PROGBITS        00000000 00064c 000000 00      0   0  1
  [15] .riscv.attributes RISCV_ATTRIBUTES 00000000 00064c 000044 00      0   0  1
  [16] .symtab           SYMTAB          00000000 000690 000260 10     17  36  4
  [17] .strtab           STRTAB          00000000 0008f0 0000e1 00      0   0  1
  [18] .shstrtab         STRTAB          00000000 000ae8 0000d1 00      0   0  1

1. Creating a new placement
.dram0.data :
{
    *libsoc.a:gpio_periph.*(.rodata.GPIO_HOLD_MASK .sdata2.GPIO_HOLD_MASK .srodata.GPIO_HOLD_MASK)
}

2. Excluding the object placement
.flash.rodata :
{
    *(EXCLUDE_FILE(*libsoc.a:gpio_periph.*) .rodata.* ...)
}

3. Creating a new intermediate placement
.flash.rodata :
{
    *libsoc.a:gpio_periph.*(.rodata.GPIO_PIN_MUX_REG)
}

Now, let's do the same, but also move GPIO_PIN_MUX_REG to noflash with an updated mapping.

[mapping:soc_pm]
archive: libsoc.a
entries:
    gpio_periph: GPIO_HOLD_MASK (noflash)
    gpio_periph: GPIO_PIN_MUX_REG (noflash)

1. Creating a new placement
.dram0.data :
{
    *libsoc.a:gpio_periph.*(.rodata.GPIO_HOLD_MASK .sdata2.GPIO_HOLD_MASK .srodata.GPIO_HOLD_MASK)
    *libsoc.a:gpio_periph.*(.rodata.GPIO_PIN_MUX_REG .sdata2.GPIO_PIN_MUX_REG
                            .srodata.GPIO_PIN_MUX_REG)
}

2. Excluding the object placement
.flash.rodata :
{
    *(EXCLUDE_FILE(*libsoc.a:gpio_periph.*) .rodata.* ...)
}

3. Creating a new intermediate placement
.flash.rodata :
{
    *libsoc.a:gpio_periph.*
}

The *libsoc.a:gpio_periph.* entity in step 3 no longer has input
sections, as there are no remaining .rodata input sections in the object
file. The linker behavior for this mapping is to include all object
input sections that have not yet been placed as described in
https://sourceware.org/binutils/docs/ld.html#Input-Section-Basics
"If you use a file name without a list of sections, then all sections in
the input file will be included in the output section. This is not
commonly done, but it may by useful on occasion."

The map file for such mapping now contains following input sections

 .flash.rodata   0x3c0a0120    0x19b34
     *libsoc.a:gpio_periph.*()
     .debug_info    0x3c0b95bf       0xd8 esp-idf/soc/libsoc.a(gpio_periph.c.obj)
     .debug_abbrev  0x3c0b9697       0x70 esp-idf/soc/libsoc.a(gpio_periph.c.obj)
     .debug_aranges
                    0x3c0b9707       0x18 esp-idf/soc/libsoc.a(gpio_periph.c.obj)
     .debug_line    0x3c0b971f      0x1ab esp-idf/soc/libsoc.a(gpio_periph.c.obj)
     .debug_str     0x3c0b98ca      0x21a esp-idf/soc/libsoc.a(gpio_periph.c.obj)
                                    0x22d (size before relaxing)
     .comment       0x3c0b9ae4       0x30 esp-idf/soc/libsoc.a(gpio_periph.c.obj)
     .note.GNU-stack
                    0x3c0b9ae4        0x0 esp-idf/soc/libsoc.a(gpio_periph.c.obj)
     .riscv.attributes
                    0x3c0b9ae4       0x44 esp-idf/soc/libsoc.a(gpio_periph.c.obj)

This is incorrect, and such intermediate placement should not be
generated. This type of placement can be recognized because it is not
explicitly defined in the mapping and lacks input sections. We can
identify this in the significant function and prevent issuing commands
for such placement.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2025-02-17 15:33:19 +08:00
Fu Hanxi 11142cffb3 ci: set app_list to empty list when not None 2025-02-14 14:04:18 +01:00
radek.tandler 0f5073ea2c fix(ci): Removed storage related ignore warnings 2025-02-13 20:40:05 +01:00
Erhan Kurubas e9161c62d0 test(coredump): collect all expected uart data first, then process lazily 2025-02-03 15:11:27 +01:00
Euripedes Rocha 6c83f8a838 fix(mqtt): Regenerate certificates for testing
- Previous fix ommited one of the client certificates by mistaque.
- This regenerates all certificates to clean that up.
2025-01-29 14:04:14 +01:00
David Čermák f2fe95f31b Merge branch 'ci/iperf_esp32p4_v5.3' into 'release/v5.3'
ci(esp_eth): added ESP32P4 to iperf CI test (v5.3)

See merge request espressif/esp-idf!36390
2025-01-24 19:49:20 +08:00
Fu Hanxi 539971de6c feat: add component_source property to component targets 2025-01-21 16:45:29 +08:00
Ondrej Kosta 17ebbe0924 ci(esp_eth): added ESP32P4 to iperf CI test
Updated (increased) ETH_THROUGHPUT_SPI_ETH limits.
Improved iperf optimization description
2025-01-14 15:45:55 +01:00
Marius Vikhammer ba92aee8c1 Merge branch 'ci/swap-argument-find-app_v5.3' into 'release/v5.3'
ci(ci_build_apps): swap function args (v5.3)

See merge request espressif/esp-idf!36060
2025-01-08 09:10:48 +08:00
Roland Dobai bc92458d2a Merge branch 'feature/add_utf_8_decoding_v5.3' into 'release/v5.3'
feat(tools): Enforced utf-8 encoding with Python open() functions (v5.3)

See merge request espressif/esp-idf!36126
2025-01-06 17:10:39 +08:00
Roland Dobai 3652281fb5 Merge branch 'feat/dfu_p4_backport_v5.3' into 'release/v5.3'
feat(dfu): Enable DFU on ESP32-P4 (backport v5.3)

See merge request espressif/esp-idf!35830
2025-01-06 15:41:59 +08:00
Marek Fiala 2b0407eb2a feat(tools): Enforce utf-8 encoding with open() function 2025-01-02 16:48:43 +01:00
Marius Vikhammer 4531d056e9 fix(interrupt): fixed wrongly reserved interrupt for wifi on H2 2025-01-02 16:44:05 +08:00
Jiang Jiang Jian b5e59fb0af Merge branch 'ci/add_build_test_eco_versions_v5.3' into 'release/v5.3'
ci: add build test for eco versions (v5.3)

See merge request espressif/esp-idf!35819
2025-01-02 15:24:34 +08:00
igor.udot 8abb36267b ci(ci_build_apps): swap function args 2024-12-30 15:03:33 +08:00
Frantisek Hrbata af605b12d2 fix(hints): improve suggestion for missing header file
Currently, we are only suggesting that the header file is likely not
part of the component's INCLUDE_DIRS. However, the header file may be
missing also because of the configuration settings. For instance, the
component might be disabled in sdkconfig, or the feature that supplies
the header might not be enabled. Enhance the hint message to address
this scenario as well.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-12-29 18:56:46 +01:00
Tomas Rezucha 31c883b3a6 feat(dfu): Enable DFU on ESP32-P4 2024-12-20 11:17:26 +01:00
Chen Yudong 5fd9ee23d3 ci: add build test for eco versions 2024-12-19 21:02:49 +08:00
Roland Dobai 81010cff35 fix(idf_tools.py): Upgrade pip and setuptools separately
This way the setuptools version dependency resolution will be done by
the upgraded pip.
2024-12-18 12:57:20 +01:00
Alexey Gerenkov a7c987e450 Merge branch 'fix/test_idf_gdb_v5.3' into 'release/v5.3'
test(system): mark gdb test runners properly (v5.3)

See merge request espressif/esp-idf!35587
2024-12-17 21:43:34 +08:00
Island 0b7cbb40ca Merge branch 'bugfix/fix_hid_crash_v5.3' into 'release/v5.3'
fix(ble): Fix crash issue during logging (v5.3)

See merge request espressif/esp-idf!35510
2024-12-12 09:06:15 +08:00
Erhan Kurubas e29f06bb2b change(cmake): use board configuration file for ftdi interface 2024-12-11 18:50:09 +01:00
Erhan Kurubas b63cafb1a6 test(system): mark gdb test runners properly 2024-12-11 18:50:09 +01:00
Erhan Kurubas dfc248d66d change(tools): enhance expect_reg_dump to support any or specific core values 2024-12-09 16:23:39 +01:00
Erhan Kurubas ef14d7ab64 test(coredump): fix failed core dump tests 2024-12-09 15:52:59 +01:00
Erhan Kurubas 5f3d3f5e92 ci(panic): extend extram_stack tests 2024-12-09 15:52:59 +01:00
Erhan Kurubas c753271de1 ci(panic): add coredump tcb corrupted test 2024-12-09 15:52:58 +01:00
zhanghaipeng 6718fc73b1 feat(bt): Add support for converting BT HCI logs to btsnoop format 2024-12-09 17:55:37 +08:00
Alexey Lapshin 782e04e2dc fix(tools): fix idf.py gdb execution in case app was not built 2024-12-06 23:34:54 +07:00
Roland Dobai 0a62a9078c Merge branch 'change/sysview_test_config_v5.3' into 'release/v5.3'
change(sysview): run heap_log tracing tests on existing cores (v5.3)

See merge request espressif/esp-idf!35196
2024-12-06 19:56:48 +08:00
Roland Dobai 22162a45e9 Merge branch 'feature/move-gdb-options-to_project_description_json_v5.3' into 'release/v5.3'
feat(debugging): move gdbinit generation to CMake (v5.3)

See merge request espressif/esp-idf!35176
2024-12-06 19:29:12 +08:00
Roland Dobai 3a3396dcc1 Merge branch 'feat/size_unify_sections_v5.3' into 'release/v5.3'
feat(tools): unify sections in idf.py size reports for NG version (v5.3)

See merge request espressif/esp-idf!34856
2024-12-06 17:35:38 +08:00
Roland Dobai 5ce9a7f07d Merge branch 'fix/import_error_msg_v5.3' into 'release/v5.3'
fix(tools): re-raise ImportError without module name (v5.3)

See merge request espressif/esp-idf!35074
2024-12-06 17:35:26 +08:00
Alexey Lapshin 3af39a0ab0 feat(debugging): move gdbinit generation to CMake
This feature is useful for 3rd-party software to run GDB with predefined
options that described in project_description.json file

allow to pass custom options to "idf.py gdb":

  --gdb-commands: command line arguments for gdb. (without changes)
  -ex: pass command to gdb.
  -x: pass gdbinit file to gdb. Alias for old --gdbinit command
2024-12-06 05:07:52 +08:00
Marius Vikhammer 9d7f2d69f5 change(version): Update version to 5.3.2 2024-12-05 15:30:21 +08:00
Erhan Kurubas e2db600c8c fix(sysview): add prefix to the module desc to avoid stuck in Segger SystemView app
Closes https://github.com/espressif/esp-idf/issues/10483
2024-11-26 10:56:02 +01:00
Frantisek Hrbata 8d768f675b fix(tools): re-raise ImportError without module name
The ImportError or ModuleNotFoundError might be raised without
specifying a module name. In this not so common situation, re-raise the
exception to print all the information that could assist in identifying
the problem.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-11-21 09:37:22 +01:00
Frantisek Hrbata 63c565d95d feat(tools): unify sections in idf.py size reports for NG version
By default, esp-idf-size.ng displays all sections individually. This can
be confusing, especially if CONFIG_SOC_MEM_NON_CONTIGUOUS_SRAM is
enabled, resulting in sections like .dram0.data and .dram1.data being
abbreviated as two .data sections in the size report. To avoid confusion
for idf.py and cmake users, pass the --unify option to the underlying
esp_idf_size.ng by default.

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-11-15 21:17:53 +08:00
Jiang Jiang Jian 61c5b1151a Merge branch 'ci/diff_manifest_with_sha' into 'release/v5.3'
CI: Diff manifest (v5.3)

See merge request espressif/esp-idf!34746
2024-11-14 18:59:49 +08:00
Jiang Jiang Jian 004e1b5c24 Merge branch 'ci/fix_macos_ccache_v5.3' into 'release/v5.3'
CI: Fix failing ccache and show ccache statistics for macOS tests (v5.3)

See merge request espressif/esp-idf!33937
2024-11-14 18:55:25 +08:00
Fu Hanxi 773ce3de55 ci: remove gitlab api call while generating pytest target-test child pipeline 2024-11-13 20:46:01 +01:00
Fu Hanxi 91feda824b ci: generate new report if old one failed to be updated 2024-11-13 20:46:01 +01:00
Fu Hanxi c9971bea59 ci: support diff manifest sha with the base commit 2024-11-07 10:40:23 +01:00
WanqQixiang 20ee7e18f4 fix(tools/esp_prov): Fix hostname resolving for IPv6-only host 2024-11-05 17:44:46 +08:00
Jiang Jiang Jian e6fcf6632c Merge branch 'fix/gdbstub_runtime_test_requiers_elf_file_v5.3' into 'release/v5.3'
fix(gdbstub_runtime): fix test gdbstub_runtime which requiers elf file (v5.3)

See merge request espressif/esp-idf!33815
2024-10-28 12:12:32 +08:00
Jiang Jiang Jian 8d41e65110 Merge branch 'fix/kconfig-option-orphan_sections_warning_v5.3' into 'release/v5.3'
fix(build): fix orphan sections warning kconfig variable (v5.3)

See merge request espressif/esp-idf!33941
2024-10-28 11:53:16 +08:00
Rodrigo Silva c52114bb0b change: bump max sockets in lwip Kconfig
Tested under ESP32S3, running 50 tasks, each with a client, and a server
listening to one client, totalizing 150 sockets/files open, forwarding
data from PPP to Ethernet and vice versa.
Reasoning for 255 total sockets/files is VFS local_fd_t being a uint8_t.
Since FD_SETSIZE is defined at tool level, a CMakeLists user definition
is needed in cases above 64 (the default value).

Merges https://github.com/espressif/esp-idf/pull/13866
2024-10-25 17:50:10 +08:00
Jiang Jiang Jian 817495b1ff Merge branch 'feature/update-openocd-to-v0.12.0-esp32-20241016_v5.3' into 'release/v5.3'
feat(tools): update openocd version to v0.12.0-esp32-20241016 (v5.3)

See merge request espressif/esp-idf!34393
2024-10-24 11:21:28 +08:00
Alexey Gerenkov 854dfb45d4 feat(tools): update openocd version to v0.12.0-esp32-20241016 2024-10-23 10:04:56 +02:00
Roland Dobai 431cf92fed fix(tools): Print message about GDBGUI being not supported with Python 3.13 2024-10-22 16:00:42 +02:00