Makes userspace debuginfo configurable
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 19 Apr 2010 00:15:55 +0000 (17:15 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:43 +0000 (17:35 -0700)
Glibc will continue to be built with -g, but if the CONFIG_USERDEBUG
flag isn't set, the make process won't compile user/ and tests/ with -g
and will strip the debuginfo from the binaries, which decreases the size
of the programs (and the kernel when using KFS).

Also, this fixes a bug where the USER_CFLAGS were getting clobbered.

GNUmakefile
Makeconfig
Makelocal.template
kern/src/Makefrag
user/Makefrag

index 5274948..8009111 100644 (file)
@@ -84,7 +84,7 @@ endif
 endif
 
 # Default programs for compilation
-USER_CFLAGS := -O2
+USER_CFLAGS += -O2
 ifeq ($(COMPILER),IVY)
 KERN_CFLAGS += --deputy \
                --no-rc-sharc \
@@ -106,6 +106,7 @@ LD      := $(GCCPREFIX)ld
 OBJCOPY        := $(GCCPREFIX)objcopy
 OBJDUMP        := $(GCCPREFIX)objdump
 NM         := $(GCCPREFIX)nm
+STRIP   := $(GCCPREFIX)strip
 PERL    := perl
 
 EXTRAARGS ?= -std=gnu99 -Wno-attributes -fno-stack-protector -fgnu89-inline
index 9ed1ceb..449c58a 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_DEMAND_PAGING:=             -D__CONFIG_DEMAND_PAGING__
 # To enable any of these options, add a line like the following to your Makelocal
 # USER_CFLAGS += $(CONFIG_SYSCALL_TRAP)
 CONFIG_SYSCALL_TRAP:=              -D__CONFIG_SYSCALL_TRAP__
+CONFIG_USER_DEBUGINFO:=            -g
 
 # User tests configuration parameters
 # By default, each of these options will be turned off
index 6dee7ee..88b2695 100644 (file)
@@ -18,6 +18,7 @@
 
 # Userspace configuration parameters
 #USER_CFLAGS += $(CONFIG_SYSCALL_TRAP)
+#USER_CFLAGS += $(CONFIG_USER_DEBUGINFO)
 
 # User tests configuration parameters
 #TESTS_CFLAGS += $(CONFIG_STATIC_APPS)
index 1ae8dac..d661512 100644 (file)
@@ -77,7 +77,7 @@ KERN_OBJFILES  := $(patsubst $(KERN_DIR)/%.S, \
 
 KERN_APPFILES  := $(patsubst %, $(OBJDIR)/%, $(KERN_APPFILES))
 
-KERN_APPFILES  += $(KERN_DIR)/kfs/*
+KERN_RAWAPPFILES  := $(KERN_DIR)/kfs/*
 
 KERN_LDDEPENDS := $(KERN_OBJFILES) $(KERN_APPFILES) $(ARCH_DIR)/$(TARGET_ARCH)/kernel.ld \
                   $(OBJDIR)/$(KERN_DIR)/libivykern.a
@@ -96,10 +96,14 @@ $(OBJDIR)/$(KERN_DIR)/%.o: $(KERN_DIR)/%.S
        @mkdir -p $(@D)
        $(V)$(CC) $(KERN_CFLAGS) -D__ASSEMBLER__ -c -o $@ $<
 
+UDEBUG := $(findstring -g,$(USER_CFLAGS))
 $(OBJDIR)/$(KERN_DIR)/kernel: $(KERN_LDDEPENDS)
        @echo + ld [KERN] $@
+       @if [ "$(UDEBUG)" != "-g" ]; then \
+               $(STRIP) -s $(KERN_APPFILES) ; \
+       fi
        $(V)$(LD) -o $@ $(KERN_LDFLAGS) $(KERN_OBJFILES) $(KERN_LDLIBS) \
-                       $(KERN_GCC_LIB) -b binary $(KERN_APPFILES)
+                       $(KERN_GCC_LIB) -b binary $(KERN_APPFILES) $(KERN_RAWAPPFILES)
        $(V)$(OBJDUMP) -S $@ > $@.asm
        $(V)$(NM) -n $@ > $@.sym
 
index 3cb8713..0e2590f 100644 (file)
@@ -1,5 +1,5 @@
 USER_DIR := $(TOP_DIR)/user
-USER_CFLAGS += $(CFLAGS) -g -std=gnu99 -I$(USER_DIR)/include
+USER_CFLAGS += $(CFLAGS) -std=gnu99 -I$(USER_DIR)/include
 
 include $(USER_DIR)/parlib/Makefrag
 include $(USER_DIR)/pthread/Makefrag