NM := $(NM) -B
LDFLAGS_vmlinux := -static -N #-relax
-LDFLAGS_BLOB := --format binary --oformat elf64-alpha
cflags-y := -pipe -mno-fp-regs -ffixed-8
# Determine if we can use the BWX instructions with GAS.
CFLAGS += -DUTS_SYSNAME=\"uClinux\" -DTARGET=$(BOARD)
AFLAGS += -DPLATFORM=$(PLATFORM) -DTARGET=$(BOARD) -DMODEL=$(MODEL) $(cflags-y)
LDFLAGS += $(ldflags-y)
-LDFLAGS_BLOB := --format binary --oformat elf32-h8300
CROSS_COMPILE = h8300-elf-
#HEAD := arch/$(ARCH)/platform/$(platform-y)/$(board-y)/crt0_$(model-y).o
LDFLAGS := -m elf_i386
OBJCOPYFLAGS := -O binary -R .note -R .comment -S
LDFLAGS_vmlinux :=
-LDFLAGS_BLOB := --format binary --oformat elf32-i386
CFLAGS += -pipe
# override top level makefile
AS += -m68020
LDFLAGS := -m m68kelf
-LDFLAGS_BLOB := --format binary --oformat elf32-m68k
ifneq ($(COMPILE_ARCH),$(ARCH))
# prefix for cross-compiling binaries
CROSS_COMPILE = m68k-linux-
CFLAGS += -D__linux__
CFLAGS += -DUTS_SYSNAME=\"uClinux\"
-LDFLAGS_BLOB := --format binary --oformat elf32-m68k
-
head-y := arch/m68knommu/platform/$(platform-y)/$(board-y)/crt0_$(model-y).o
CLEAN_FILES := include/asm-$(ARCH)/asm-offsets.h \
ifdef CONFIG_CPU_LITTLE_ENDIAN
tool-prefix = mipsel-linux-
JIFFIES32 = jiffies_64
-LDFLAGS_BLOB := --format binary --oformat elf32-tradlittlemips
else
tool-prefix = mips-linux-
JIFFIES32 = jiffies_64 + 4
-LDFLAGS_BLOB := --format binary --oformat elf32-tradbigmips
endif
ifdef CONFIG_CROSSCOMPILE
ifdef CONFIG_PARISC64
CROSS_COMPILE := hppa64-linux-
UTS_MACHINE := parisc64
-LDFLAGS_BLOB := --format binary --oformat elf64-hppa-linux
else
MACHINE := $(subst 64,,$(shell uname -m))
ifneq ($(MACHINE),parisc)
CROSS_COMPILE := hppa-linux-
endif
-LDFLAGS_BLOB := --format binary --oformat elf32-hppa-linux
endif
FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align
# This must match PAGE_OFFSET in include/asm-ppc/page.h.
KERNELLOAD := $(CONFIG_KERNEL_START)
-LDFLAGS_BLOB := --format binary --oformat elf32-powerpc
LDFLAGS_vmlinux := -Ttext $(KERNELLOAD) -Bstatic
CPPFLAGS += -Iarch/$(ARCH)
AFLAGS += -Iarch/$(ARCH)
LDFLAGS := -m elf64ppc
LDFLAGS_vmlinux := -Bstatic -e $(KERNELLOAD) -Ttext $(KERNELLOAD)
-LDFLAGS_BLOB := --format binary --oformat elf64-powerpc
CFLAGS += -msoft-float -pipe -Wno-uninitialized -mminimal-toc \
-mtraceback=full -mcpu=power4
ifdef CONFIG_ARCH_S390_31
LDFLAGS := -m elf_s390
-LDFLAGS_BLOB := --format binary --oformat elf32-s390
CFLAGS += -m31
AFLAGS += -m31
UTS_MACHINE := s390
ifdef CONFIG_ARCH_S390X
LDFLAGS := -m elf64_s390
MODFLAGS += -fpic -D__PIC__
-LDFLAGS_BLOB := --format binary --oformat elf64-s390
CFLAGS += -m64
AFLAGS += -m64
UTS_MACHINE := s390x
ifdef CONFIG_CPU_LITTLE_ENDIAN
LDFLAGS_vmlinux += --defsym 'jiffies=jiffies_64' -EL
-LDFLAGS_BLOB :=--format binary --oformat elf32-sh-linux
else
LDFLAGS_vmlinux += --defsym 'jiffies=jiffies_64+4' -EB
-LDFLAGS_BLOB :=--format binary --oformat elf32-shbig-linux
endif
CFLAGS += -pipe $(cpu-y)
LDFLAGS := -m elf32_sparc
endif
-LDFLAGS_BLOB := --format binary --oformat elf32-sparc
-
#CFLAGS := $(CFLAGS) -g -pipe -fcall-used-g5 -fcall-used-g7
ifneq ($(IS_EGCS),y)
CFLAGS := $(CFLAGS) -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
else
AS := $(AS) -64
LDFLAGS := -m elf64_sparc
-LDFLAGS_BLOB := --format binary --oformat elf64-sparc
endif
ifneq ($(UNDECLARED_REGS),y)
# some reason)
LDFLAGS_MODULE += --unique=.gnu.linkonce.this_module
-LDFLAGS_BLOB := -b binary --oformat elf32-little
OBJCOPY_FLAGS_BLOB := -I binary -O elf32-little -B v850e
LDFLAGS := -m elf_x86_64
OBJCOPYFLAGS := -O binary -R .note -R .comment -S
LDFLAGS_vmlinux := -e stext
-LDFLAGS_BLOB := --format binary --oformat elf64-x86-64
CFLAGS += -mno-red-zone
CFLAGS += -mcmodel=kernel
host-progs := gen_init_cpio
-clean-files := initramfs_data.cpio.gz initramfs_data.S
+clean-files := initramfs_data.cpio.gz
-$(src)/initramfs_data.S: $(obj)/initramfs_data.cpio.gz
- echo " .section .init.ramfs,\"a\"" > $(src)/initramfs_data.S
- echo ".incbin \"usr/initramfs_data.cpio.gz\"" >> $(src)/initramfs_data.S
+# initramfs_data.o contains the initramfs_data.cpio.gz image.
+# The image is included using .incbin, a dependency which is not
+# tracked automatically.
+$(obj)/initramfs_data.o: $(obj)/initramfs_data.cpio.gz FORCE
# initramfs-y are the programs which will be copied into the CPIO
# archive. Currently, the filenames are hardcoded in gen_init_cpio,
--- /dev/null
+/*
+ initramfs_data includes the compressed binary that is the
+ filesystem used for early user space.
+ Note: Older versions of "as" (prior to binutils 2.11.90.0.23
+ released on 2001-07-14) dit not support .incbin.
+ If you are forced to use older binutils than that then the
+ following trick can be applied to create the resulting binary:
+
+
+ ld -m elf_i386 --format binary --oformat elf32-i386 -r \
+ -T initramfs_data.scr initramfs_data.cpio.gz -o initramfs_data.o
+ ld -m elf_i386 -r -o built-in.o initramfs_data.o
+
+ initramfs_data.scr looks like this:
+SECTIONS
+{
+ .init.ramfs : { *(.data) }
+}
+
+ The above example is for i386 - the parameters vary from architectures.
+ Eventually look up LDFLAGS_BLOB in an older version of the
+ arch/$(ARCH)/Makefile to see the flags used before .incbin was introduced.
+
+ Using .incbin has the advantage over ld that the correct flags are set
+ in the ELF header, as required by certain architectures.
+*/
+
+.section .init.ramfs,"a"
+.incbin "usr/initramfs_data.cpio.gz"
+