other/2930: Failure to compile/link when check_stack rule defined
pauli@lineo.com
pauli@lineo.com
Thu May 24 16:16:00 GMT 2001
>Number: 2930
>Category: other
>Synopsis: Failure to compile/link when check_stack rule defined
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu May 24 16:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Paul Dale
>Release: building: gcc version 2.95.3 20010315 (release)
>Organization:
>Environment:
Linux skaro 2.2.16-22 #1 Tue Aug 22 16:49:06 EDT 2000 i686 unknown
Building a cross compiler for m68k-elf
>Description:
I added a check_stack rule to the m68k machine description file
(without an MMU, the inbuilt stack check code doesn't work).
When I attempted to build gcc I received the folloring error
message:
[...]
gcc -c -DCROSS_COMPILE -DIN_GCC -g -O2 -DHAVE_CONFIG_H \
-I. -I../../gcc-2.95.3/gcc -I../../gcc-2.95.3/gcc/config \
-I../../gcc-2.95.3/gcc/../include ../../gcc-2.95.3/gcc/explow.c
../../gcc-2.95.3/gcc/explow.c: In function `probe_stack_range':
../../gcc-2.95.3/gcc/explow.c:1372: warning: passing arg 1 of `force_operand' makes pointer from integer without a cast
../../gcc-2.95.3/gcc/explow.c:1376: `last_address' undeclared (first use in this function)
../../gcc-2.95.3/gcc/explow.c:1376: (Each undeclared identifier is reported only once
../../gcc-2.95.3/gcc/explow.c:1376: for each function it appears in.)
Fixing this (change last_addr to last_address in this function)
and building again from scratch produced a link error much later
in the build:
[...]
gcc -DCROSS_COMPILE -DIN_GCC -g -O2 -DHAVE_CONFIG_H -o cc1 toplev.o version.o tree.o print-tree.o \
stor-layout.o fold-const.o function.o stmt.o except.o expr.o calls.o expmed.o explow.o optabs.o \
intl.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o genrtl.o real.o dbxout.o sdbout.o \
dwarfout.o dwarf2out.o xcoffout.o bitmap.o alias.o gcse.o integrate.o jump.o cse.o loop.o \
unroll.o flow.o stupid.o combine.o varray.o regclass.o regmove.o local-alloc.o global.o \
reload.o reload1.o caller-save.o insn-peep.o reorg.o sched.o final.o recog.o reg-stack.o \
insn-opinit.o insn-recog.o insn-extract.o insn-output.o insn-emit.o lcm.o profile.o insn-attrtab.o \
m68k.o getpwd.o convert.o mbchar.o dyn-string.o splay-tree.o graph.o sbitmap.o resource.o hash.o \
c-parse.o c-lang.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-iterate.o \
obstack.o ../libiberty/libiberty.a
explow.o: In function `probe_stack_range':
/home/gcc/build-gcc/gcc/../../gcc-2.95.3/gcc/explow.c:1369: undefined reference to `gen_rtx_STACK_GROW_OP'
It seems the documented check_stack rule doesn't quite function anymore.
I've tried several variations on the check_stack rule and
all exhibited this problem.
>How-To-Repeat:
I added the following rule to the m68k.md file:
(define_insn "check_stack"
[(set (cc0)
(match_operand:SI 0 "general_operand" "d"))]
""
"nop")
this caused gcc not to compile.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list