File tree Expand file tree Collapse file tree
port/espressif/esp/ld/esp32_c3 Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -276,6 +276,9 @@ pub const LinkerScript = struct {
276276 /// Place rodata in the first region tagged as ram.
277277 ram ,
278278 } = .flash ,
279+ /// Give .eh_frame and .eh_frame_hdr the status of other elf debug
280+ /// sections (to not flash them to the device).
281+ eh_frame_no_load : bool = true ,
279282 },
280283 };
281284};
Original file line number Diff line number Diff line change @@ -84,9 +84,13 @@ SECTIONS
8484 microzig_data_load_start = ORIGIN (DROM) + _irom_size + _drom_size;
8585 PROVIDE (__global_pointer$ = microzig_data_start + 0x800 );
8686
87- /DISCARD/ :
87+ . eh_frame_hdr 0 ( INFO) :
8888 {
89- *(.eh_frame_hdr )
90- *(.eh_frame )
89+ KEEP (*(.eh_frame_hdr ))
90+ }
91+
92+ .eh_frame 0 (INFO) :
93+ {
94+ KEEP (*(.eh_frame ))
9195 }
9296}
Original file line number Diff line number Diff line change @@ -59,9 +59,13 @@ SECTIONS
5959
6060 PROVIDE (__global_pointer$ = microzig_data_start + 0x800 );
6161
62- /DISCARD/ :
62+ . eh_frame_hdr 0 ( INFO) :
6363 {
64- *(.eh_frame_hdr )
65- *(.eh_frame )
64+ KEEP (*(.eh_frame_hdr ))
65+ }
66+
67+ .eh_frame 0 (INFO) :
68+ {
69+ KEEP (*(.eh_frame ))
6670 }
6771}
Original file line number Diff line number Diff line change @@ -116,9 +116,13 @@ SECTIONS
116116
117117 PROVIDE (__global_pointer$ = microzig_data_start + 0x800 );
118118
119- /DISCARD/ :
119+ . eh_frame_hdr 0 ( INFO) :
120120 {
121- *(.eh_frame_hdr )
122- *(.eh_frame )
121+ KEEP (*(.eh_frame_hdr ))
122+ }
123+
124+ .eh_frame 0 (INFO) :
125+ {
126+ KEEP (*(.eh_frame ))
123127 }
124128}
Original file line number Diff line number Diff line change @@ -268,6 +268,22 @@ pub fn main(init: std.process.Init) !void {
268268 , .{flash_region_name });
269269 }
270270
271+ if (options .eh_frame_no_load ) {
272+ try writer .interface .writeAll (
273+ \\
274+ \\ .eh_frame_hdr 0 (INFO) :
275+ \\ {
276+ \\ KEEP(*(.eh_frame_hdr))
277+ \\ }
278+ \\
279+ \\ .eh_frame 0 (INFO) :
280+ \\ {
281+ \\ KEEP(*(.eh_frame))
282+ \\ }
283+ \\
284+ );
285+ }
286+
271287 try writer .interface .writeAll (
272288 \\
273289 \\ microzig_data_load_start = LOADADDR(.data);
You can’t perform that action at this time.
0 commit comments