Comparar commits

...

1 Commits

Autor SHA1 Mensagem Data
Farid Molazem Tabrizi ef430d778b Generate llvm-bitcode at build-time
Run:
make \
  CLANG=1 \
  FUCHSIA=1 \
  TOOLCHAIN_PREFIX=your/toolchain \
  LIBGCC=your/gcclib \
  ARCH_x86_64_TOOLCHAIN_PREFIX=your/toolchain

make -f llvm-bitcode.mk

output: all.o
2016-09-13 17:21:05 -07:00
7 arquivos alterados com 49 adições e 36 exclusões
+9 -4
Ver Arquivo
@@ -76,19 +76,23 @@ GLOBAL_COMPILEFLAGS += -Wall -Wextra -Wno-multichar -Werror -Wno-unused-paramete
ifeq ($(CLANG),1)
GLOBAL_COMPILEFLAGS += -Wno-error
endif
GLOBAL_CFLAGS := --std=c11 -Werror-implicit-function-declaration -Wstrict-prototypes -Wwrite-strings
#GLOBAL_CFLAGS := --std=c11 -Werror-implicit-function-declaration -Wstrict-prototypes -Wwrite-strings
GLOBAL_CFLAGS := --std=c11 -Werror-implicit-function-declaration -Wstrict-prototypes -Wwrite-strings -S -emit-llvm
# Note: Both -fno-exceptions and -fno-asynchronous-unwind-tables is needed
# in order to stop gcc from emitting .eh_frame (which is part of the loaded
# image by default).
GLOBAL_CPPFLAGS := --std=c++11 -fno-exceptions -fno-asynchronous-unwind-tables -fno-rtti -fno-threadsafe-statics -Wconversion
GLOBAL_CPPFLAGS := --std=c++11 -fno-exceptions -fno-asynchronous-unwind-tables -fno-rtti -fno-threadsafe-statics -Wconversion -S -emit-llvm
#GLOBAL_CPPFLAGS += -Weffc++
GLOBAL_ASMFLAGS := -DASSEMBLY
GLOBAL_ASMFLAGS := -DASSEMBLY -S -emit-llvm
GLOBAL_LDFLAGS := -nostdlib $(addprefix -L,$(LKINC))
GLOBAL_MODULE_LDFLAGS :=
# Kernel compile flags
KERNEL_COMPILEFLAGS := -ffreestanding -include $(KERNEL_CONFIG_HEADER)
#KERNEL_CFLAGS := --analyze -Xclang -analyzer-checker=security.insecureAPI.vfork
KERNEL_CFLAGS :=
#KERNEL_CPPFLAGS := -Xclang -analyze -Xclang -analyzer-checker=security.insecureAPI.vfork
KERNEL_CPPFLAGS :=
KERNEL_ASMFLAGS :=
@@ -303,7 +307,8 @@ else
CC := $(CCACHE) $(TOOLCHAIN_PREFIX)gcc
AR := $(TOOLCHAIN_PREFIX)ar
endif
LD := $(TOOLCHAIN_PREFIX)ld
#LD := $(TOOLCHAIN_PREFIX)ld
LD := true
OBJDUMP := $(TOOLCHAIN_PREFIX)objdump
OBJCOPY := $(TOOLCHAIN_PREFIX)objcopy
CPPFILT := $(TOOLCHAIN_PREFIX)c++filt
+1 -1
Ver Arquivo
@@ -12,7 +12,7 @@
// include the bootfs archive containing a user file system
DATA(user_bootfs)
.incbin USER_BOOTFS_FILENAME
#.incbin USER_BOOTFS_FILENAME
END(user_bootfs)
.Luser_bootfs_end:
+22 -23
Ver Arquivo
@@ -24,46 +24,46 @@ endif
$(OUTLKBIN): $(OUTLKELF)
@echo generating image: $@
$(NOECHO)$(OBJCOPY) -O binary $< $@
# $(NOECHO)$(OBJCOPY) -O binary $< $@
$(OUTLKELF).hex: $(OUTLKELF)
@echo generating hex file: $@
$(NOECHO)$(OBJCOPY) -O ihex $< $@
# $(NOECHO)$(OBJCOPY) -O ihex $< $@
$(OUTLKELF): $(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LINKER_SCRIPT)
@echo linking $@
$(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -dT $(LINKER_SCRIPT) \
# $(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -dT $(LINKER_SCRIPT) \
$(ALLMODULE_OBJS) $(EXTRA_OBJS) $(LIBGCC) -o $@
$(NOECHO)$(SIZECMD) -t --common $(sort $(ALLMODULE_OBJS)) $(EXTRA_OBJS)
$(NOECHO)$(SIZECMD) $@
# $(NOECHO)$(SIZECMD) -t --common $(sort $(ALLMODULE_OBJS)) $(EXTRA_OBJS)
# $(NOECHO)$(SIZECMD) $@
$(OUTLKELF).sym: $(OUTLKELF)
@echo generating symbols: $@
$(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) > $@
# $(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) > $@
$(OUTLKELF).sym.sorted: $(OUTLKELF)
@echo generating sorted symbols: $@
$(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) | sort > $@
# $(NOECHO)$(OBJDUMP) -t $< | $(CPPFILT) | sort > $@
$(OUTLKELF).lst: $(OUTLKELF)
@echo generating listing: $@
$(NOECHO)$(OBJDUMP) $(OBJDUMP_LIST_FLAGS) -d $< | $(CPPFILT) > $@
# $(NOECHO)$(OBJDUMP) $(OBJDUMP_LIST_FLAGS) -d $< | $(CPPFILT) > $@
$(OUTLKELF).debug.lst: $(OUTLKELF)
@echo generating listing: $@
$(NOECHO)$(OBJDUMP) $(OBJDUMP_LIST_FLAGS) -S $< | $(CPPFILT) > $@
# $(NOECHO)$(OBJDUMP) $(OBJDUMP_LIST_FLAGS) -S $< | $(CPPFILT) > $@
$(OUTLKELF).dump: $(OUTLKELF)
@echo generating objdump: $@
$(NOECHO)$(OBJDUMP) -x $< > $@
# $(NOECHO)$(OBJDUMP) -x $< > $@
$(OUTLKELF).size: $(OUTLKELF)
@echo generating size map: $@
$(NOECHO)$(NM) -S --size-sort $< > $@
# $(NOECHO)$(NM) -S --size-sort $< > $@
$(OUTLKELF)-gdb.py: scripts/$(LKNAME).elf-gdb.py
@echo generating $@
$(NOECHO)cp -f $< $@
# $(NOECHO)cp -f $< $@
# print some information about the build
#$(BUILDDIR)/srcfiles.txt:
@@ -88,28 +88,27 @@ $(OUTLKELF)-gdb.py: scripts/$(LKNAME).elf-gdb.py
# so they will be reflected in the $^ expansion of the link line
$(BUILDDIR)/%.elf:: $(BUILDDIR)/%.mod.o $(USER_LINKER_SCRIPT)
@echo linking $@
$(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -T $(USER_LINKER_SCRIPT) $(ARCH_LDFLAGS) \
# $(NOECHO)$(LD) $(GLOBAL_LDFLAGS) -T $(USER_LINKER_SCRIPT) $(ARCH_LDFLAGS) \
$(filter-out $(USER_LINKER_SCRIPT),$^) $(LIBGCC) -o $@
$(BUILDDIR)/%.elf.dump: $(BUILDDIR)/%.elf
@echo generating $@
$(NOECHO)$(OBJDUMP) -x $< > $@
# $(NOECHO)$(OBJDUMP) -x $< > $@
$(BUILDDIR)/%.elf.lst: $(BUILDDIR)/%.elf
@echo generating $@
$(NOECHO)$(OBJDUMP) $(OBJDUMP_LIST_FLAGS) -d $< > $@
# $(NOECHO)$(OBJDUMP) $(OBJDUMP_LIST_FLAGS) -d $< > $@
$(BUILDDIR)/%.elf.strip: $(BUILDDIR)/%.elf
@echo generating $@
$(NOECHO)$(STRIP) -d $< -o $@
# $(NOECHO)$(STRIP) -d $< -o $@
# generate a new manifest and compare to see if it differs from the previous one
.PHONY: usermanifestfile
$(USER_MANIFEST): usermanifestfile
@echo generating $@
@$(MKDIR)
$(NOECHO)echo $(USER_MANIFEST_LINES) | tr ' ' '\n' | sort > $@.tmp
$(NOECHO)$(call TESTANDREPLACEFILE,$@.tmp,$@)
# $(NOECHO)echo $(USER_MANIFEST_LINES) | tr ' ' '\n' | sort > $@.tmp
# $(NOECHO)$(call TESTANDREPLACEFILE,$@.tmp,$@)
GENERATED += $(USER_MANIFEST)
@@ -132,16 +131,16 @@ USER_MANIFEST_DEPS := $(foreach x,$(USER_MANIFEST_LINES),$(lastword $(subst =,$(
$(USER_BOOTFS): $(MKBOOTFS) $(BOOTSERVER) $(LOGLISTENER) $(USER_MANIFEST) $(USER_MANIFEST_DEPS)
@echo generating $@
@$(MKDIR)
$(NOECHO)$(MKBOOTFS) -o $(USER_BOOTFS) $(USER_MANIFEST)
# @$(MKDIR)
# $(NOECHO)$(MKBOOTFS) -o $(USER_BOOTFS) $(USER_MANIFEST)
GENERATED += $(USER_BOOTFS)
# build userspace filesystem image
$(USER_FS): $(USER_BOOTFS)
@echo generating $@
$(NOECHO)dd if=/dev/zero of=$@ bs=1048576 count=16
$(NOECHO)dd if=$(USER_BOOTFS) of=$@ conv=notrunc
# $(NOECHO)dd if=/dev/zero of=$@ bs=1048576 count=16
# $(NOECHO)dd if=$(USER_BOOTFS) of=$@ conv=notrunc
# add the fs image to the clean list
GENERATED += $(USER_FS)
+1 -1
Ver Arquivo
@@ -40,7 +40,7 @@ $(MODULE_OBJS): MODULE_SRCDEPS:=$(MODULE_SRCDEPS)
$(MODULE_COBJS): $(MODULE_BUILDDIR)/%.c.o: %.c $(MODULE_SRCDEPS)
@$(MKDIR)
@echo compiling $<
@echo compilingg $<
$(NOECHO)$(CC) $(GLOBAL_OPTFLAGS) $(MODULE_OPTFLAGS) $(GLOBAL_COMPILEFLAGS) $(KERNEL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(MODULE_COMPILEFLAGS) $(GLOBAL_CFLAGS) $(KERNEL_CFLAGS) $(ARCH_CFLAGS) $(MODULE_CFLAGS) $(GLOBAL_INCLUDES) -c $< -MD -MP -MT $@ -MF $(@:%o=%d) -o $@
$(MODULE_CPPOBJS): $(MODULE_BUILDDIR)/%.cpp.o: %.cpp $(MODULE_SRCDEPS)
+6 -6
Ver Arquivo
@@ -131,9 +131,9 @@ endif
# build a ld -r style combined object
MODULE_OBJECT := $(MODULE_OUTNAME).mod.o
$(MODULE_OBJECT): $(MODULE_OBJS) $(MODULE_EXTRA_OBJS)
@$(MKDIR)
# @$(MKDIR)
@echo linking $@
$(NOECHO)$(LD) $(GLOBAL_MODULE_LDFLAGS) -r $^ -o $@
# $(NOECHO)$(LD) $(GLOBAL_MODULE_LDFLAGS) -r $^ -o $@
# track all of the source files compiled
ALLSRCS += $(MODULE_SRCS)
@@ -178,10 +178,10 @@ endif
# build static library
MODULE_STATIC_LIB := $(MODULE_LIBNAME).a
$(MODULE_STATIC_LIB): $(MODULE_LIBRARY_OBJS)
@$(MKDIR)
@echo linking $@
@rm -f $@
$(NOECHO)$(AR) cr $@ $^
# @$(MKDIR)
# @echo linking $@
# @rm -f $@
# $(NOECHO)$(AR) cr $@ $^
# always build all libraries
EXTRA_BUILDDEPS += $(MODULE_STATIC_LIB)
+8
Ver Arquivo
@@ -0,0 +1,8 @@
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
ALL_C_OBJ := $(call rwildcard,build-magenta-qemu-x86-64/,*.c.o)
ALL_CPP_OBJ := $(call rwildcard,build-magenta-qemu-x86-64/,*.cpp.o)
ALL_OBJ := $(ALL_C_OBJ) $(ALL_CPP_OBJ)
target: FORCE
llvm-link $(ALL_OBJ) -o all.o
FORCE:
+2 -1
Ver Arquivo
@@ -44,7 +44,8 @@ $(BUILDDIR)/$(LOCAL_DIR)/$(ARCH).S.o: $(LOCAL_DIR)/$(ARCH).S
$(BUILDDIR)/$(LOCAL_DIR)/elf-interp-helper.so: \
$(BUILDDIR)/$(LOCAL_DIR)/$(ARCH).S.o
$(NOECHO)$(LD) -shared $^ -o $@
true
#$(NOECHO)$(LD) -shared $^ -o $@
USER_MANIFEST_LINES += \
bin/elf-interp-helper.so=$(BUILDDIR)/$(LOCAL_DIR)/elf-interp-helper.so