[Buildroot] Kernel panic - not syncing: Attempted to kill init!
Bernhard Reutner-Fischer
rep.dot.nop at gmail.com
Fri Sep 11 10:34:38 UTC 2009
On Thu, Sep 10, 2009 at 07:57:29PM -0400, H Hartley Sweeten wrote:
>I was able to get the compiler to work correctly at one point but still had
>problems with the linker. I verified this by doing a clean "make V=1" and
>then examining all the output. I would see the -march=armv4t in all the
>compile steps but it was missing in some of the link steps. I think this
>was happening due to the following in TARGET_CONFIGURE_OPTS:
>
> AR="$(TARGET_AR)" \
> AS="$(TARGET_AS)" \
> LD="$(TARGET_LD)" \
> NM="$(TARGET_NM)" \
> CC="$(TARGET_CC) $(TARGET_CFLAGS)" \
> GCC="$(TARGET_CC) $(TARGET_CFLAGS)" \
> CPP="$(TARGET_CPP) $(TARGET_CFLAGS)" \
> CXX="$(TARGET_CXX) $(TARGET_CXXFLAGS)" \
> FC="$(TARGET_FC) $(TARGET_FCFLAGS)" \
>
>If the package build used CC (or equiv.) for the link it would get the
>necessary flags. But if it used LD, no flags.
So whatever buildroot you're using it's handling flags in an incomplete
way (this is nothing new; see archives).
My tree does:
AUTO_CONFIGURE_TARGET=\
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
$(TARGET_CONFIGURE_ENV) \
$(if $(THIS_SRCDIR),$(THIS_SRCDIR)/,./)configure \
--cache-file="$(PROJECT_BUILD_DIR)/tgt-config.cache" \
--target=$(REAL_GNU_TARGET_NAME) \
--host=$(REAL_GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME)
TARGET_CONFIGURE_OPTS=\
PATH=$(TARGET_PATH) \
AR="$(TARGET_AR)" \
AS="$(TARGET_AS)" \
LD="$(TARGET_LD)$(if $(TARGET_LD_FLAGS), $(TARGET_LD_FLAGS))" \
NM="$(TARGET_NM)" \
CC="$(TARGET_CC)$(if $(TARGET_CC_FLAGS), $(TARGET_CC_FLAGS))" \
GCC="$(TARGET_CC)$(if $(TARGET_CC_FLAGS), $(TARGET_CC_FLAGS))" \
CPP="$(TARGET_CPP)$(if $(TARGET_CC_FLAGS), $(TARGET_CC_FLAGS))"
\
CXX="$(if $(BR2_GCC_CROSS_CXX),$(TARGET_CXX)$(if
$(TARGET_CXXFLAGS), $(TARGET_CXXFLAGS)))" \
GCJ="$(if $(BR2_GCC_CROSS_GCJ),$(TARGET_GCJ)$(if
$(TARGET_GCJFLAGS), $(TARGET_GCJFLAGS)))" \
FC="$(TARGET_FC)$(if $(TARGET_FC_FLAGS), $(TARGET_FC_FLAGS))" \
RANLIB="$(TARGET_RANLIB)" \
>
>Then there are the packages that just use CROSS=$(TARGET_CROSS). For
>those packages none of the flags are getting passed.
>
>Also, I'm not sure having the $(TARGET_CFLAGS) directly in CC, GCC, etc.
care must be taken which stuff you put into CC (see above).
I think that i resorted to only putting the bare necessities in it.
Again, my tree:
ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
TARGET_CFLAGS=
TARGET_LDFLAGS=
# flags that are inherent part of the tool
TARGET_CC_FLAGS=
TARGET_LD_FLAGS=
ifeq ($(BR2_TOOLCHAIN_SYSROOT),y)
TARGET_CC_FLAGS+= $(BR2_SYSROOT) $(BR2_ISYSROOT) -I=/usr/include
TARGET_LD_FLAGS+= $(BR2_SYSROOT)
else
# for old gcc's, as fallback
TARGET_CC_FLAGS+= -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include
endif
ifeq ($(BR2_ENABLE_MULTILIB),y)
TARGET_LD_FLAGS+= -L$(STAGING_DIR)/lib64 -L$(STAGING_DIR)/usr/lib64
endif
TARGET_LD_FLAGS+= -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib
TARGET_CFLAGS += $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
ifeq ($(BR2_bfin),y)
CC_TARGET_CPU_SUB_:=$(strip $(subst ",,$(BR2_bfin_sirevision)))
#"))
CC_TARGET_CPU_SUB_:=$(if $(CC_TARGET_CPU_SUB_),-$(CC_TARGET_CPU_SUB_))
endif
##############################################################################
#disabled
ifneq (XXX,XXX)
# gcc configury --with-foo
CC_TARGET_CPU_:=$(strip $(subst ",,$(BR2_GCC_TARGET_CPU)))
#"))
CC_TARGET_TUNE_:=$(strip $(subst ",,$(BR2_GCC_TARGET_TUNE)))
#"))
CC_TARGET_ARCH_:=$(strip $(subst ",,$(BR2_GCC_TARGET_ARCH)))
#"))
CC_TARGET_ABI_:=$(strip $(subst ",,$(BR2_GCC_TARGET_ABI)))
#"))
# fixup for MOTOROLA
ifeq ($(BR2_m68k),y)
CC_TARGET_ARCH_:=$(filter-out cf m68k,$(CC_TARGET_ARCH_))
endif
ifneq ($(strip $(CC_TARGET_CPU_)),)
TARGET_CFLAGS+=-mcpu=$(CC_TARGET_CPU_)$(CC_TARGET_CPU_SUB_)
endif
ifneq ($(strip $(CC_TARGET_TUNE_)),)
TARGET_CFLAGS+=-mtune=$(CC_TARGET_TUNE_)
endif
ifneq ($(strip $(CC_TARGET_ARCH_)),)
TARGET_CFLAGS+=-march=$(CC_TARGET_ARCH_)
endif
ifneq ($(strip $(CC_TARGET_ABI_)),)
TARGET_CFLAGS+=-mabi=$(CC_TARGET_ABI_)
endif
endif
>is correct. At one point I got an error during the ./configure for one
>of the packages due to a -V option passed to the compiler. I think this
>had something to due with determining the version of the compiler. It
>appears that the -V option must come at the start of the command line
>with gcc. Of course this could also be a problem with the ./configure
>stuff.
gcc: '-V' must come at the start of the command line
so yes.
HTH,
More information about the buildroot
mailing list