Use --build-id=none to avoid build-id sections on FC8.
authorBen Pfaff <blp@cs.stanford.edu>
Thu, 21 Aug 2008 04:49:45 +0000 (04:49 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Thu, 21 Aug 2008 04:49:45 +0000 (04:49 +0000)
These build-id sections cause the Pintos ELF loader to reject
binaries.  The preferred way to eliminate them would be to add
/DISCARD/ : { *(.note.gnu.build-id) }
to the linker script, but (as reported by Godmar Back) this causes a
segmentation fault in ld, as reported in a bug filed at:
http://sourceware.org/bugzilla/show_bug.cgi?id=5025

src/Make.config
src/Makefile.userprog

index 841e9104bbce9f3f881271ee0d643b75282d205b..3279301160d7462aa3017c011a76a920189200db 100644 (file)
@@ -44,6 +44,11 @@ ifeq ($(strip $(shell echo | $(CC) -fno-stack-protector -E - > /dev/null 2>&1; e
 CFLAGS += -fno-stack-protector
 endif
 
+# Turn off --build-id in the linker, which confuses the Pintos loader.
+ifeq ($(strip $(shell $(LD) --build-id=none -e 0 /dev/null -o /dev/null 2>&1; echo $$?)),0)
+LDFLAGS += -Wl,--build-id=none
+endif
+
 %.o: %.c
        $(CC) -c $< -o $@ $(CFLAGS) $(CPPFLAGS) $(WARNINGS) $(DEFINES) $(DEPS)
 
index 3631cf1b221b2a3bf3e5e0fb02457338a39132db..f90b08c965e365022aa78b0d97eb417c0160c6b4 100644 (file)
@@ -3,7 +3,7 @@
 $(PROGS): CPPFLAGS += -I$(SRCDIR)/lib/user -I.
 
 # Linker flags.
-$(PROGS): LDFLAGS = -nostdlib -static -Wl,-T,$(LDSCRIPT)
+$(PROGS): LDFLAGS += -nostdlib -static -Wl,-T,$(LDSCRIPT)
 $(PROGS): LDSCRIPT = $(SRCDIR)/lib/user/user.lds
 
 # Library code shared between kernel and user programs.