Skip to content

Commit 9fa774e

Browse files
committed
make debugging great again
1 parent 570086e commit 9fa774e

3 files changed

Lines changed: 85 additions & 2 deletions

File tree

src/linker_script.ld

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,45 @@ SECTIONS
8787
KEEP(*(.runprgm.reloc))
8888
}
8989
90+
91+
/* Debug info (kept out of loadable memory) */
92+
.debug_info 0 : { KEEP(*(.debug_info .debug_info.*)) }
93+
.debug_abbrev 0 : { KEEP(*(.debug_abbrev .debug_abbrev.*)) }
94+
.debug_line 0 : { KEEP(*(.debug_line .debug_line.*)) }
95+
.debug_line_str 0 : { KEEP(*(.debug_line_str .debug_line_str.*)) }
96+
.debug_str 0 : { KEEP(*(.debug_str .debug_str.*)) }
97+
.debug_str_offsets 0 : { KEEP(*(.debug_str_offsets .debug_str_offsets.*)) }
98+
.debug_addr 0 : { KEEP(*(.debug_addr .debug_addr.*)) }
99+
.debug_aranges 0 : { KEEP(*(.debug_aranges .debug_aranges.*)) }
100+
.debug_ranges 0 : { KEEP(*(.debug_ranges .debug_ranges.*)) }
101+
.debug_rnglists 0 : { KEEP(*(.debug_rnglists .debug_rnglists.*)) }
102+
.debug_loc 0 : { KEEP(*(.debug_loc .debug_loc.*)) }
103+
.debug_loclists 0 : { KEEP(*(.debug_loclists .debug_loclists.*)) }
104+
.debug_frame 0 : { KEEP(*(.debug_frame .debug_frame.*)) }
105+
.debug_macro 0 : { KEEP(*(.debug_macro .debug_macro.*)) }
106+
.debug_macinfo 0 : { KEEP(*(.debug_macinfo .debug_macinfo.*)) }
107+
.debug_names 0 : { KEEP(*(.debug_names .debug_names.*)) }
108+
.debug_pubnames 0 : { KEEP(*(.debug_pubnames .debug_pubnames.*)) }
109+
.debug_pubtypes 0 : { KEEP(*(.debug_pubtypes .debug_pubtypes.*)) }
110+
.debug_types 0 : { KEEP(*(.debug_types .debug_types.*)) }
111+
.debug_sup 0 : { KEEP(*(.debug_sup .debug_sup.*)) }
112+
.debug_cu_index 0 : { KEEP(*(.debug_cu_index .debug_cu_index.*)) }
113+
.debug_tu_index 0 : { KEEP(*(.debug_tu_index .debug_tu_index.*)) }
114+
.gdb_index 0 : { KEEP(*(.gdb_index)) }
115+
.debug_gdb_scripts 0 : { KEEP(*(.debug_gdb_scripts)) }
116+
117+
.debug_abbrev.dwo 0 : { KEEP(*(.debug_abbrev.dwo .debug_abbrev.dwo.*)) }
118+
.debug_info.dwo 0 : { KEEP(*(.debug_info.dwo .debug_info.dwo.*)) }
119+
.debug_line.dwo 0 : { KEEP(*(.debug_line.dwo .debug_line.dwo.*)) }
120+
.debug_loclists.dwo 0 : { KEEP(*(.debug_loclists.dwo .debug_loclists.dwo.*)) }
121+
.debug_macro.dwo 0 : { KEEP(*(.debug_macro.dwo .debug_macro.dwo.*)) }
122+
.debug_rnglists.dwo 0 : { KEEP(*(.debug_rnglists.dwo .debug_rnglists.dwo.*)) }
123+
.debug_str.dwo 0 : { KEEP(*(.debug_str.dwo .debug_str.dwo.*)) }
124+
.debug_str_offsets.dwo 0 : { KEEP(*(.debug_str_offsets.dwo .debug_str_offsets.dwo.*)) }
125+
126+
.eh_frame 0 : { KEEP(*(.eh_frame)) }
127+
.eh_frame_hdr 0 : { KEEP(*(.eh_frame_hdr)) }
128+
90129
/DISCARD/ :
91130
{
92131
*(.comment)

src/linker_script_app.ld

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,45 @@ SECTIONS
8080
. = BSSHEAP_HIGH;
8181
___heap_high = .;
8282
83+
84+
/* Debug info (kept out of loadable memory) */
85+
.debug_info 0 : { KEEP(*(.debug_info .debug_info.*)) }
86+
.debug_abbrev 0 : { KEEP(*(.debug_abbrev .debug_abbrev.*)) }
87+
.debug_line 0 : { KEEP(*(.debug_line .debug_line.*)) }
88+
.debug_line_str 0 : { KEEP(*(.debug_line_str .debug_line_str.*)) }
89+
.debug_str 0 : { KEEP(*(.debug_str .debug_str.*)) }
90+
.debug_str_offsets 0 : { KEEP(*(.debug_str_offsets .debug_str_offsets.*)) }
91+
.debug_addr 0 : { KEEP(*(.debug_addr .debug_addr.*)) }
92+
.debug_aranges 0 : { KEEP(*(.debug_aranges .debug_aranges.*)) }
93+
.debug_ranges 0 : { KEEP(*(.debug_ranges .debug_ranges.*)) }
94+
.debug_rnglists 0 : { KEEP(*(.debug_rnglists .debug_rnglists.*)) }
95+
.debug_loc 0 : { KEEP(*(.debug_loc .debug_loc.*)) }
96+
.debug_loclists 0 : { KEEP(*(.debug_loclists .debug_loclists.*)) }
97+
.debug_frame 0 : { KEEP(*(.debug_frame .debug_frame.*)) }
98+
.debug_macro 0 : { KEEP(*(.debug_macro .debug_macro.*)) }
99+
.debug_macinfo 0 : { KEEP(*(.debug_macinfo .debug_macinfo.*)) }
100+
.debug_names 0 : { KEEP(*(.debug_names .debug_names.*)) }
101+
.debug_pubnames 0 : { KEEP(*(.debug_pubnames .debug_pubnames.*)) }
102+
.debug_pubtypes 0 : { KEEP(*(.debug_pubtypes .debug_pubtypes.*)) }
103+
.debug_types 0 : { KEEP(*(.debug_types .debug_types.*)) }
104+
.debug_sup 0 : { KEEP(*(.debug_sup .debug_sup.*)) }
105+
.debug_cu_index 0 : { KEEP(*(.debug_cu_index .debug_cu_index.*)) }
106+
.debug_tu_index 0 : { KEEP(*(.debug_tu_index .debug_tu_index.*)) }
107+
.gdb_index 0 : { KEEP(*(.gdb_index)) }
108+
.debug_gdb_scripts 0 : { KEEP(*(.debug_gdb_scripts)) }
109+
110+
.debug_abbrev.dwo 0 : { KEEP(*(.debug_abbrev.dwo .debug_abbrev.dwo.*)) }
111+
.debug_info.dwo 0 : { KEEP(*(.debug_info.dwo .debug_info.dwo.*)) }
112+
.debug_line.dwo 0 : { KEEP(*(.debug_line.dwo .debug_line.dwo.*)) }
113+
.debug_loclists.dwo 0 : { KEEP(*(.debug_loclists.dwo .debug_loclists.dwo.*)) }
114+
.debug_macro.dwo 0 : { KEEP(*(.debug_macro.dwo .debug_macro.dwo.*)) }
115+
.debug_rnglists.dwo 0 : { KEEP(*(.debug_rnglists.dwo .debug_rnglists.dwo.*)) }
116+
.debug_str.dwo 0 : { KEEP(*(.debug_str.dwo .debug_str.dwo.*)) }
117+
.debug_str_offsets.dwo 0 : { KEEP(*(.debug_str_offsets.dwo .debug_str_offsets.dwo.*)) }
118+
119+
.eh_frame 0 : { KEEP(*(.eh_frame)) }
120+
.eh_frame_hdr 0 : { KEEP(*(.eh_frame_hdr)) }
121+
83122
/DISCARD/ :
84123
{
85124
*(.runprgm.reloc)

src/makefile.mk

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,15 @@ RM = ( del /q /f $1 2>nul || call )
8989
RMDIR = ( rmdir /s /q $1 2>nul || call )
9090
NATIVEMKDR = ( mkdir $1 2>nul || call )
9191
QUOTE_ARG = "$(subst ",',$1)"#'
92+
NOOP = rem
9293
else
9394
NATIVEPATH = $(subst \,/,$1)
9495
EXE_SUFFIX =
9596
RM = rm -f $1
9697
RMDIR = rm -rf $1
9798
NATIVEMKDR = mkdir -p $1
9899
QUOTE_ARG = '$(subst ','\'',$1)'#'
100+
NOOP = :
99101
endif
100102

101103
# toolchain binaries
@@ -108,6 +110,8 @@ AS = $(call NATIVEPATH,$(BINUTILS_BIN)/z80-none-elf-as$(EXE_SUFFIX))
108110
LD = $(call NATIVEPATH,$(BINUTILS_BIN)/z80-none-elf-ld$(EXE_SUFFIX))
109111
OBJCOPY = $(call NATIVEPATH,$(BINUTILS_BIN)/z80-none-elf-objcopy$(EXE_SUFFIX))
110112
STRIP = $(call NATIVEPATH,$(BINUTILS_BIN)/z80-none-elf-strip$(EXE_SUFFIX))
113+
STRIP_FLAGS = --strip-unneeded
114+
STRIP_CMD = $(STRIP) $(STRIP_FLAGS)
111115
CEDEV_OBJ = $(call NATIVEPATH,$(BIN)/cedev-obj$(EXE_SUFFIX))
112116

113117
# filepath operations
@@ -328,7 +332,8 @@ build: $(BUILD)
328332
target: $(BINDIR)/$(TARGET)
329333

330334
# this rule is trigged to build debug everything
331-
debug: CC_DEBUG = -DDEBUG=1
335+
debug: CC_DEBUG = -DDEBUG=1 -Og -gdwarf-5 -g3
336+
debug: STRIP_CMD = $(NOOP)
332337
debug: LD_DEBUG = --defsym DEBUG=1
333338
debug: $(BUILD)
334339

@@ -470,7 +475,7 @@ $(OBJDIR)/$(TARGETTMP): $(OBJECTS) $(LIB_ALLOCATOR) $(LIB_PRINTF) $(LIB_CXX) $(L
470475
$(LIB_SOFTFLOAT) \
471476
$(EXTRA_LIBS) \
472477
-o $(call QUOTE_ARG,$@)
473-
$(Q)$(STRIP) --strip-unneeded $(call QUOTE_ARG,$@)
478+
$(Q)$(STRIP_CMD) $(call QUOTE_ARG,$@)
474479

475480
$(OBJDIR)/crt.h: $(OBJDIR)/$(TARGETTMP)
476481
$(Q)$(call MKDIR,$(@D))

0 commit comments

Comments
 (0)