Bug 20446 - [4.0/4.1 Regression] invalid assembly with -gstabs+
Summary: [4.0/4.1 Regression] invalid assembly with -gstabs+
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.1.0
: P2 normal
Target Milestone: 4.0.0
Assignee: Eric Botcazou
URL:
Keywords: wrong-code
Depends on:
Blocks:
 
Reported: 2005-03-12 23:09 UTC by ivan
Modified: 2010-04-28 20:14 UTC (History)
2 users (show)

See Also:
Host: sparc-sun-solaris2.8
Target: sparc-sun-solaris2.8
Build: sparc-sun-solaris2.8
Known to work:
Known to fail:
Last reconfirmed: 2005-03-16 10:24:33


Attachments
preprocessed and assembler file for sugarconverter.cpp (118.26 KB, application/x-gzip-compressed)
2005-03-12 23:13 UTC, ivan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description ivan 2005-03-12 23:09:39 UTC
I didn't have this problems using gcc-3.4.2
 When I try to compile the file, gcc-4.0.0 reports error which is not reported 
by gcc-3.4.2


 Info follows:

version of GCC:
sparc-sun-solaris2.8-gcc-4.0.0 (GCC) 4.1.0 20050309 (experimental)

system type:
SunOS 5.8

GCC configure options:
./configure   --prefix=/usr/local/toolchain-4.0.0 --with-gnu-as --with-gnu-l
d --enable-languages=c,c++

command line:
g++ -v -save-temps -gstabs+ -fPIC -c -o -DUNIX -DUSING_STLPORT -I/home/lib/S
TLport/stlport sugarconverter.o sugarconverter.cpp


compiler output:
home/lib/STLport/stlport sugarconverter.o sugarconverter.cpp
Using built-in specs.
Target: sparc-sun-solaris2.8
Configured with:
../gcc/configure --prefix=/usr/local/toolchain-4.0.0 --with-gnu-as --with-gn
u-ld --enable-languages=c,c++
Thread model: posix
gcc version 4.1.0 20050309 (experimental)

/space/home/usr.local/toolchain-4.0.0/bin/../libexec/gcc/sparc-sun-solaris2.
8/4.1.0/cc1plus -E -quiet -v -I/home/lib/STLport/stlport -iprefix
/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4.
1.0/ -DUSING_STLPORT
sugarconverter.cpp -mcpu=v7 -fPIC -fworking-directory -fpch-preprocess -o
sugarconverter.ii
ignoring nonexistent directory
"/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4
.1.0/../../../../sparc-sun-solaris2.8/include"
ignoring duplicate directory
"/usr/local/toolchain-4.0.0/lib/gcc/sparc-sun-solaris2.8/4.1.0/../../../../i
nclude/c++/4.1.0"
ignoring duplicate directory
"/usr/local/toolchain-4.0.0/lib/gcc/sparc-sun-solaris2.8/4.1.0/../../../../i
nclude/c++/4.1.0/sparc-sun-solaris2.8"
ignoring duplicate directory
"/usr/local/toolchain-4.0.0/lib/gcc/sparc-sun-solaris2.8/4.1.0/../../../../i
nclude/c++/4.1.0/backward"
ignoring duplicate directory
"/usr/local/toolchain-4.0.0/lib/gcc/sparc-sun-solaris2.8/4.1.0/include"
ignoring nonexistent directory
"/usr/local/toolchain-4.0.0/lib/gcc/sparc-sun-solaris2.8/4.1.0/../../../../s
parc-sun-solaris2.8/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/lib/STLport/stlport

/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4.
1.0/../../../../include/c++/4.1.0

/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4.
1.0/../../../../include/c++/4.1.0/sparc-sun-solaris2.8

/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4.
1.0/../../../../include/c++/4.1.0/backward

/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4.
1.0/include
 /usr/local/include
 /usr/local/toolchain-4.0.0/include
 /usr/include
End of search list.
sugarconverter.cpp:4:10: warning: #pragma once in main file

/space/home/usr.local/toolchain-4.0.0/bin/../libexec/gcc/sparc-sun-solaris2.
8/4.1.0/cc1plus -fpreprocessed sugarconverter.ii -quiet -dumpbase
sugarconverter.cpp -mcpu=v7 -auxbase-strip -DUNIX -gstabs+ -version -fPIC -o
sugarconverter.s
GNU C++ version 4.1.0 20050309 (experimental) (sparc-sun-solaris2.8)
        compiled by GNU C version 4.0.0 20050221 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

/space/home/usr.local/toolchain-4.0.0/bin/../lib/gcc/sparc-sun-solaris2.8/4.
1.0/../../../../sparc-sun-solaris2.8/bin/as -V -Qy -s -K
PIC -xarch=v8 -o -DUNIX sugarconverter.s
GNU assembler version 2.14 (sparc-sun-solaris2.8) using BFD version 2.14
20030612
sugarconverter.s: Assembler messages:
sugarconverter.s:888: Error: can't resolve `.text' {.text section} -
`_ZThn4_N15TSugarConverter5VisitEPK1A'
{.gnu.linkonce.t._ZThn4_N15TSugarConverter5VisitEPK1A section}
distcc[3959] ERROR: compile (NULL) on localhost failed
Comment 1 Andrew Pinski 2005-03-12 23:11:41 UTC
Is there a reason why you are using stabs+, the default debuging format on solaris is dwarf-2 which 
provides more information.
Comment 2 ivan 2005-03-12 23:13:31 UTC
Created attachment 8377 [details]
preprocessed and assembler file for sugarconverter.cpp

untar and apply this command:
g++ -v -save-temps -gstabs+ -fPIC -c -o -DUNIX -DUSING_STLPORT -I/home/lib/S
TLport/stlport sugarconverter.o sugarconverter.ii
Comment 3 Eric Botcazou 2005-03-12 23:15:22 UTC
It's 4.1.0 if I read correctly.
Comment 4 Andrew Pinski 2005-03-13 05:31:39 UTC
This is most likely the same problem as PR 18170, the error messages are similar.
Comment 5 ivan 2005-03-14 00:03:13 UTC
(In reply to comment #3)
> It's 4.1.0 if I read correctly.

Yes, actually it's 4.1.0 20050309

Comment 6 ivan 2005-03-14 14:20:44 UTC
(In reply to comment #1)
> Is there a reason why you are using stabs+, the default debuging format on 
solaris is dwarf-2 which 
> provides more information.

yes, file compiles with default format but doesn't with stabs+
Comment 7 ivan 2005-03-14 14:23:34 UTC
(In reply to comment #1)
> Is there a reason why you are using stabs+, the default debuging format on 
solaris is dwarf-2 which 
> provides more information.

stabs+ is used for compatibility issues with Wine
Comment 8 Andrew Pinski 2005-03-14 14:27:32 UTC
(In reply to comment #7)
> stabs+ is used for compatibility issues with Wine

So, even mywin (and cygwin) have both moved over to dwarf2.
Comment 9 ivan 2005-03-14 15:42:21 UTC
Subject: Re:  invalid assembly with -gstabs+

Hi,

If I switch to default debug format, I get an internal compiler error in
another file that I guess would have to report as a different bug. I'll need
some time though to narrow down the file to something smaller.

Ivan


----- Original Message ----- 
From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org>
To: <ivanr@syncad.com>
Sent: Monday, March 14, 2005 9:27 AM
Subject: [Bug debug/20446] invalid assembly with -gstabs+


>
> ------- Additional Comments From pinskia at gcc dot gnu dot org
2005-03-14 14:27 -------
> (In reply to comment #7)
> > stabs+ is used for compatibility issues with Wine
>
> So, even mywin (and cygwin) have both moved over to dwarf2.
>
>
> -- 
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20446
>
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.
>
>

Comment 10 ivan 2005-03-14 15:42:21 UTC
Subject: Re:  invalid assembly with -gstabs+

Hi,

If I switch to default debug format, I get an internal compiler error in
another file that I guess would have to report as a different bug. I'll need
some time though to narrow down the file to something smaller.

Ivan


----- Original Message ----- 
From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org>
To: <ivanr@syncad.com>
Sent: Monday, March 14, 2005 9:27 AM
Subject: [Bug debug/20446] invalid assembly with -gstabs+


>
> ------- Additional Comments From pinskia at gcc dot gnu dot org
2005-03-14 14:27 -------
> (In reply to comment #7)
> > stabs+ is used for compatibility issues with Wine
>
> So, even mywin (and cygwin) have both moved over to dwarf2.
>
>
> -- 
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20446
>
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.
>
>

Comment 11 Eric Botcazou 2005-03-16 10:24:33 UTC
With Sun as, I get

as: "sugarconverter.s", line 873: error: can't compute difference between
symbols in different segments

for the same function (which is slightly more descriptive).
Comment 12 Eric Botcazou 2005-03-16 10:26:31 UTC
Investigating, but STABS+ is crippled in GCC 4.x.
Comment 13 Eric Botcazou 2005-03-29 14:08:04 UTC
Workaround: -fdelayed-branch (enabled at -O and above).
Comment 14 Eric Botcazou 2005-04-04 14:54:24 UTC
Recategorizing.
Comment 15 CVS Commits 2005-04-04 15:29:47 UTC
Subject: Bug 20446

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	ebotcazou@gcc.gnu.org	2005-04-04 15:29:12

Modified files:
	gcc            : ChangeLog 
	gcc/config/sparc: linux.h linux64.h sparc.c sparc.h 

Log message:
	PR target/20446
	* config/sparc/sparc.h (NEED_INDICATE_EXEC_STACK): Define to 0.
	* config/sparc/linux.h (TARGET_ASM_FILE_END): Delete.
	(NEED_INDICATE_EXEC_STACK): Define to 1.
	* config/sparc/linux64.h (TARGET_ASM_FILE_END): Delete.
	(NEED_INDICATE_EXEC_STACK): Define to 1.
	* config/sparc/sparc.c (TARGET_ASM_FILE_END): Set to sparc_file_end.
	(add_pc_to_pic_symbol): Rename into pic_helper_symbol.
	(add_pc_to_pic_symbol_name): Rename into pic_helper_symbol_name.
	(pic_helper_emitted_p): New global.
	(emit_pic_helper): New function extracted from...
	(load_pic_register): ...here.  Add 'delay_pic_helper' parameter.
	Do not call emit_pic_helper if delay_pic_helper is true.
	(sparc_expand_prologue): Pass 'false' to load_pic_register.
	(sparc_output_mi_thunk): Pass 'true' to load_pic_register.
	(sparc_file_end): New function.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.8118&r2=2.8119
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/linux.h.diff?cvsroot=gcc&r1=1.68&r2=1.69
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/linux64.h.diff?cvsroot=gcc&r1=1.91&r2=1.92
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.c.diff?cvsroot=gcc&r1=1.358&r2=1.359
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.h.diff?cvsroot=gcc&r1=1.273&r2=1.274

Comment 16 CVS Commits 2005-04-04 15:32:19 UTC
Subject: Bug 20446

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-4_0-branch
Changes by:	ebotcazou@gcc.gnu.org	2005-04-04 15:32:03

Modified files:
	gcc            : ChangeLog 
	gcc/config/sparc: linux.h linux64.h sparc.c sparc.h 

Log message:
	PR target/20446
	* config/sparc/sparc.h (NEED_INDICATE_EXEC_STACK): Define to 0.
	* config/sparc/linux.h (TARGET_ASM_FILE_END): Delete.
	(NEED_INDICATE_EXEC_STACK): Define to 1.
	* config/sparc/linux64.h (TARGET_ASM_FILE_END): Delete.
	(NEED_INDICATE_EXEC_STACK): Define to 1.
	* config/sparc/sparc.c (TARGET_ASM_FILE_END): Set to sparc_file_end.
	(add_pc_to_pic_symbol): Rename into pic_helper_symbol.
	(add_pc_to_pic_symbol_name): Rename into pic_helper_symbol_name.
	(pic_helper_emitted_p): New global.
	(emit_pic_helper): New function extracted from...
	(load_pic_register): ...here.  Add 'delay_pic_helper' parameter.
	Do not call emit_pic_helper if delay_pic_helper is true.
	(sparc_expand_prologue): Pass 'false' to load_pic_register.
	(sparc_output_mi_thunk): Pass 'true' to load_pic_register.
	(sparc_file_end): New function.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.120&r2=2.7592.2.121
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/linux.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.68&r2=1.68.8.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/linux64.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.91&r2=1.91.8.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.354&r2=1.354.8.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.273&r2=1.273.8.1

Comment 17 Eric Botcazou 2005-04-04 15:42:03 UTC
See http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00359.html
Comment 18 ivan 2005-04-08 02:35:16 UTC
Subject: Re:  [4.0/4.1 Regression] invalid assembly with
 -gstabs+

patch tested. works fine.
thanks!

Comment 19 Eric Botcazou 2005-04-08 08:53:22 UTC
Thanks for confirming.
Comment 20 Rainer Orth 2010-04-28 20:13:52 UTC
Reopened ...
Comment 21 Rainer Orth 2010-04-28 20:14:30 UTC
... to close as FIXED.