public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* driver/10168: identical return statements plus default in a switch can cause undefined symbols
@ 2003-03-20 17:06 ian.mitchell
0 siblings, 0 replies; only message in thread
From: ian.mitchell @ 2003-03-20 17:06 UTC (permalink / raw)
To: gcc-gnats
>Number: 10168
>Category: driver
>Synopsis: identical return statements plus default in a switch can cause undefined symbols
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Mar 20 17:06:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: ian.mitchell@risk.sungard.com
>Release: unknown-1.0
>Organization:
>Environment:
SunOS 5.8
>Description:
If there are 5 or more identical returns plus a default in a switch statement, then there is an unresolved symbol at link time
>How-To-Repeat:
compile/link attached program
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="switch.out"
Content-Disposition: inline; filename="switch.out"
wildone=> gcc -v -save-temps switch.cc
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/specs
Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls
Thread model: posix
gcc version 3.2
/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/cpp0 -lang-c++ -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -v -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__GXX_ABI_VERSION=102 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc -D__sun -D__unix -Asystem=unix -Asystem=svr4 -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_XOPEN_SOURCE=500 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D__EXTENSIONS__ -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -D__WCHAR_TYPE__=long int -D__WINT_TYPE__=long int -D__GCC_NEW_VARARGS__ -Acpu=sparc -Amachine=sparc switch.cc switch.ii
GNU CPP version 3.2 (cpplib) (sparc ELF)
ignoring nonexistent directory "NONE/include"
ignoring nonexistent directory "/usr/local/sparc-sun-solaris2.8/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include/c++/3.2
/usr/local/include/c++/3.2/sparc-sun-solaris2.8
/usr/local/include/c++/3.2/backward
/usr/local/include
/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/include
/usr/include
End of search list.
/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/cc1plus -fpreprocessed switch.ii -quiet -dumpbase switch.cc -version -o switch.s
GNU CPP version 3.2 (cpplib) (sparc ELF)
GNU C++ version 3.2 (sparc-sun-solaris2.8)
compiled by GNU C version 3.2.
/usr/ccs/bin/as -V -Qy -s -o switch.o switch.s
/usr/ccs/bin/as: Sun WorkShop 6 99/08/18
/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crt1.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crti.o /usr/ccs/lib/values-Xa.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtbegin.o -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2 -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/../../.. switch.o -lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtend.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtn.o
ld: Software Generation Utilities - Solaris-ELF (4.0)
Undefined first referenced
symbol in file
.LL10 switch.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
wildone=> cat switch.ii
# 1 "switch.cc"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "switch.cc"
int main()
{
int i;
switch(i)
{
case 0: return 0;
case 1: return 0;
case 2: return 0;
case 3: return 0;
case 4: return 0;
case 5: return 0;
default: ;
};
}
wildone=> cat switch.s
.file "switch.cc"
.section ".text"
.align 4
.global main
.type main,#function
.proc 04
main:
.LLFB1:
!#PROLOGUE# 0
save %sp, -120, %sp
.LLCFI0:
!#PROLOGUE# 1
ld [%fp-20], %i0
cmp %i0, 5
bgu .LL1
nop
ld [%fp-20], %i0
sll %i0, 2, %i1
sethi %hi(.LL10), %i0
or %i0, %lo(.LL10), %i0
ld [%i1+%i0], %i0
.LL1:
mov 0, %i0
nop
ret
restore
.LLFE1:
.LLfe1:
.size main,.LLfe1-main
.ident "GCC: (GNU) 3.2"
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-03-20 17:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-20 17:06 driver/10168: identical return statements plus default in a switch can cause undefined symbols ian.mitchell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).