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).