Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug
Bug#: 14925
Product:  
Component:  
Status: RESOLVED
Resolution: INVALID
Assigned To: Not yet assigned to anyone <unassigned@gcc.gnu.org>
Host:
Reported against  
Priority:  
Severity:  
Target Milestone:  
 
 
Target:
Reporter: H.J. Lu <hjl.tools@gmail.com>
Add CC:
CC:
Remove selected CCs
Build:
URL:
Summary:
Keywords:
Known to work:
Known to fail:

Attachment Description Type Created Size Actions
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 14925 depends on: Show dependency tree
Show dependency graph
Bug 14925 blocks:

Additional Comments:






View Bug Activity   |   Format For Printing   |   Clone This Bug


Description:   Last confirmed: Opened: 2004-04-12 16:49
When libunwind is installed on the system, the gcc configure
will enable it automatically by default. As the result, the new
libgcc_s.so.1 is very different and not backward compatible with
the previous libgcc_s.so.1. The new libgcc_s.so.1 depends on
libunwind.so. Many symbols used to defined in libgcc_s.so.1 are
now provided by libunwind.so and unversioned. Anything referencing
those symbols won't work now like:

/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/adalib//libgnat.so: undefined reference
to `_Unwind_GetRegionStart@GCC_3.0'
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/adalib//libgnat.so: undefined reference
to `_Unwind_SetGR@GCC_3.0'
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/adalib//libgnat.so: undefined reference
to `_Unwind_GetLanguageSpecificData@GCC_3.0'
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/adalib//libgnat.so: undefined reference
to `_Unwind_GetIP@GCC_3.0'
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/adalib//libgnat.so: undefined reference
to `_Unwind_GetGR@GCC_3.0'
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/adalib//libgnat.so: undefined reference
to `_Unwind_SetIP@GCC_3.0' collect2: ld returned 1 exit status
gnatlink: cannot call /usr/bin/gcc

------- Comment #1 From Andrew Pinski 2004-04-12 17:12 -------
I do not think there is any way around this.  Either use libunwind or not use
it, do not build one 
compiler with and then one without or the other way around.

------- Comment #2 From H.J. Lu 2004-04-12 21:50 -------
I don't think gcc 3.4.0 should enable libunwind by default before
binary compatibility issue is resolved.

------- Comment #3 From H.J. Lu 2004-04-12 22:13 -------
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2004-04/msg00751.html

------- Comment #4 From Mark Mitchell 2004-04-12 22:45 -------
Until someone (Richard Henderson?) says that this is really a defect, I'm not
going to treat it as a showstopper.

There's a backwards compatible fix for 3.4.1 -- have the new libgcc define the
old, versioned symbols even when using libunwind.  Since there's a backwards
compatible fix later, I'm not worried now: any distributors using 3.4.0 directly
can use --disable-libunwind.

------- Comment #5 From Andrew Pinski 2004-05-26 13:45 -------
I think this was decided this is not a bug, as anything changes the ABI is
really not a bug if it is more 
correct.

------- Comment #6 From H.J. Lu 2004-07-08 07:49 -------
It is a real gcc bug. We have been working on it. A proposal will be submitted
soon.

------- Comment #7 From Andrew Pinski 2004-07-08 07:59 -------
How can an ABI change be a GCC bug?

------- Comment #8 From H.J. Lu 2004-07-08 15:13 -------
The proposed fix will be backward binary compatible.

------- Comment #9 From Andrew Pinski 2004-08-15 03:56 -------
I see the email was posted and nothing came out of it, basically this bug is
invalid.  Not because it 
would change the ABI but the different between using libunwind and not using it
is an ABI difference 
and an known one which means that you should be care full when trying to mix
the binaries so closing 
as invalid.

------- Comment #10 From H.J. Lu 2004-08-19 19:03 -------
An updated patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2004-08/msg01398.html

------- Comment #11 From H.J. Lu 2004-08-19 19:06 -------
With the patch

http://gcc.gnu.org/ml/gcc-patches/2004-08/msg01398.html

applied, the ABI-compliant 3rd party libunwind can be used in gcc without causing
any binary incompatibility. libunwind 0.98 from David Mosberger is one of such
libraries.

------- Comment #12 From H.J. Lu 2004-08-24 16:14 -------
The draft of the ia64 unwind extension is at

http://www.kernel.org/pub/linux/devel/gcc/unwind/

------- Comment #13 From Andrew Pinski 2004-08-31 05:29 -------
Note again this is not a bug in GCC at all so closing as invalid.

------- Comment #14 From CVS Commits 2004-09-04 00:15 -------
Subject: Bug 14925

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	hjl@gcc.gnu.org	2004-09-04 00:15:43

Modified files:
	gcc            : ChangeLog Makefile.in config.gcc config.in 
	                 configure configure.ac gcc.c mklibgcc.in 
	                 unwind-dw2-fde-glibc.c unwind-dw2.c 
	gcc/config     : t-libunwind 
	gcc/config/ia64: t-glibc t-hpux unwind-ia64.c 
	gcc/doc        : install.texi 
Added files:
	gcc            : unwind-compat.c unwind-compat.h 
	                 unwind-dw2-fde-compat.c 
	gcc/config     : t-libunwind-elf 
	gcc/config/ia64: t-glibc-libunwind 

Log message:
	2004-09-03  H.J. Lu  <hongjiu.lu@intel.com>
	
	PR target/14925:
	Makefile.in (LIB2ADDEHSTATIC): New.
	(LIB2ADDEHSHARED): New.
	(LIBUNWIND): New.
	(LIBUNWINDDEP): New.
	(SHLIBUNWIND_LINK): New.
	(SHLIBUNWIND_INSTALL): New.
	(libgcc.mk): Pass LIB2ADDEHSTATIC, LIB2ADDEHSHARED, LIBUNWIND,
	LIBUNWINDDEP, SHLIBUNWIND_LINK and SHLIBUNWIND_INSTALL.
	(clean): Remove libunwind*
	(stage1-start): Remove and copy stage1/libunwind*.
	(stage2-start): Remove and copy stage2/libunwind*.
	(stage3-start): Remove and copy stage3/libunwind*.
	(stage4-start): Remove and copy stage4/libunwind*.
	(stageprofile-start): Remove and copy stageprofile/libunwind*.
	(stagefeedback-start): Remove and copy stagefeedback/libunwind*.
	
	* config.gcc (ia64*-*-linux*): Always add t-libunwind to
	tmake_file. Add t-libunwind-elf and ia64/t-glibc-libunwind to
	tmake_file if --with-system-libunwind isn't used.
	
	* config/ia64/t-glibc-libunwind: New file.
	* config/t-libunwind-elf: Likewise.
	* unwind-compat.c: Likewise.
	* unwind-compat.h: Likewise.
	* unwind-dw2-fde-compat.c: Likewise.
	
	* config/ia64/t-glibc (LIB2ADDEH): Updated.
	* config/ia64/t-hpux (T_CFLAGS): Add -DUSE_LIBUNWIND_EXCEPTIONS.
	
	* config/ia64/unwind-ia64.c: Include "unwind-compat.h". Define
	aliases if needed.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-dw2.c: Likewise.
	
	* config/t-libunwind (LIB2ADDEH): Updated.
	(LIB2ADDEHSTATIC): New.
	(T_CFLAGS): Add -DUSE_LIBUNWIND_EXCEPTIONS.
	(TARGET_LIBGCC2_CFLAGS): Set to -DUSE_GAS_SYMVER.
	
	* configure.ac: Change --enable-libunwind-exceptions to
	--with-system-libunwind. Don't define USE_LIBUNWIND_EXCEPTIONS.
	* configure: Regenerated.
	* config.in: Updated.
	
	* doc/install.texi (ia64-*-linux): Require libunwind 0.98 or
	above and mention --with-system-libunwind.
	(ia64-*-hpux*): Mention --enable-libunwind-exceptions is
	removed in gcc 3.4.3 and later.
	
	* gcc.c (init_spec): Add -lunwind to -lgcc_s if
	USE_LIBUNWIND_EXCEPTIONS is defined.
	
	* mklibgcc.in: Support libunwind.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-compat.c.diff?cvsroot=gcc&r1=NONE&r2=2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-compat.h.diff?cvsroot=gcc&r1=NONE&r2=2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-dw2-fde-compat.c.diff?cvsroot=gcc&r1=NONE&r2=2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.5245&r2=2.5246
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/Makefile.in.diff?cvsroot=gcc&r1=1.1368&r2=1.1369
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?cvsroot=gcc&r1=1.487&r2=1.488
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.in.diff?cvsroot=gcc&r1=1.195&r2=1.196
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/configure.diff?cvsroot=gcc&r1=1.850&r2=1.851
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/configure.ac.diff?cvsroot=gcc&r1=2.61&r2=2.62
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/gcc.c.diff?cvsroot=gcc&r1=1.430&r2=1.431
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/mklibgcc.in.diff?cvsroot=gcc&r1=1.70&r2=1.71
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-dw2-fde-glibc.c.diff?cvsroot=gcc&r1=1.14&r2=1.15
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-dw2.c.diff?cvsroot=gcc&r1=1.44&r2=1.45
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/t-libunwind-elf.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/t-libunwind.diff?cvsroot=gcc&r1=1.5&r2=1.6
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/t-glibc-libunwind.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/t-glibc.diff?cvsroot=gcc&r1=1.3&r2=1.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/t-hpux.diff?cvsroot=gcc&r1=1.8&r2=1.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/unwind-ia64.c.diff?cvsroot=gcc&r1=1.25&r2=1.26
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/install.texi.diff?cvsroot=gcc&r1=1.313&r2=1.314


------- Comment #15 From CVS Commits 2004-09-08 15:16 -------
Subject: Bug 14925

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	hjl@gcc.gnu.org	2004-09-08 15:16:17

Modified files:
	gcc            : ChangeLog Makefile.in config.gcc config.in 
	                 configure.ac gcc.c mklibgcc.in 
	                 unwind-dw2-fde-glibc.c unwind-dw2.c 
	gcc/config     : t-libunwind 
	gcc/config/ia64: t-glibc t-hpux unwind-ia64.c 
	gcc/doc        : install.texi 
Added files:
	gcc            : unwind-compat.c unwind-compat.h 
	                 unwind-dw2-fde-compat.c 
	gcc/config     : t-libunwind-elf 
	gcc/config/ia64: t-glibc-libunwind 

Log message:
	2004-09-08  H.J. Lu  <hongjiu.lu@intel.com>
	
	PR target/14925:
	Makefile.in (LIB2ADDEHSTATIC): New.
	(LIB2ADDEHSHARED): New.
	(LIBUNWIND): New.
	(LIBUNWINDDEP): New.
	(SHLIBUNWIND_LINK): New.
	(SHLIBUNWIND_INSTALL): New.
	(libgcc.mk): Pass LIB2ADDEHSTATIC, LIB2ADDEHSHARED, LIBUNWIND,
	LIBUNWINDDEP, SHLIBUNWIND_LINK and SHLIBUNWIND_INSTALL.
	(clean): Remove libunwind*
	(stage1-start): Remove and copy stage1/libunwind*.
	(stage2-start): Remove and copy stage2/libunwind*.
	(stage3-start): Remove and copy stage3/libunwind*.
	(stage4-start): Remove and copy stage4/libunwind*.
	(stageprofile-start): Remove and copy stageprofile/libunwind*.
	(stagefeedback-start): Remove and copy stagefeedback/libunwind*.
	
	* config.gcc (ia64*-*-linux*): Always add t-libunwind to
	tmake_file. Add t-libunwind-elf and ia64/t-glibc-libunwind to
	tmake_file if --with-system-libunwind isn't used.
	
	* config/ia64/t-glibc-libunwind: New file.
	* config/t-libunwind-elf: Likewise.
	* unwind-compat.c: Likewise.
	* unwind-compat.h: Likewise.
	* unwind-dw2-fde-compat.c: Likewise.
	
	* config/ia64/t-glibc (LIB2ADDEH): Updated.
	* config/ia64/t-hpux (T_CFLAGS): Add -DUSE_LIBUNWIND_EXCEPTIONS.
	
	* config/ia64/unwind-ia64.c: Include "unwind-compat.h". Define
	aliases if needed.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-dw2.c: Likewise.
	
	* config/t-libunwind (LIB2ADDEH): Updated.
	(LIB2ADDEHSTATIC): New.
	(T_CFLAGS): Add -DUSE_LIBUNWIND_EXCEPTIONS.
	(TARGET_LIBGCC2_CFLAGS): Set to -DUSE_GAS_SYMVER.
	
	* configure.ac: Change --enable-libunwind-exceptions to
	--with-system-libunwind. Don't define USE_LIBUNWIND_EXCEPTIONS.
	* configure: Regenerated.
	* config.in: Updated.
	
	* doc/install.texi (ia64-*-linux): Require libunwind 0.98 or
	above and mention --with-system-libunwind.
	(ia64-*-hpux*): Mention --enable-libunwind-exceptions is
	removed in gcc 3.4.3 and later.
	
	* gcc.c (init_spec): Add -lunwind to -lgcc_s if
	USE_LIBUNWIND_EXCEPTIONS is defined.
	
	* mklibgcc.in: Support libunwind.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-compat.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=2.1.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-compat.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=2.1.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-dw2-fde-compat.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=2.1.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.612&r2=2.2326.2.613
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/Makefile.in.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.1223.2.17&r2=1.1223.2.18
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.420.2.14&r2=1.420.2.15
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.in.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.181.4.3&r2=1.181.4.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/configure.ac.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.6.2.15&r2=2.6.2.16
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/gcc.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.403.4.8&r2=1.403.4.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/mklibgcc.in.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.67.4.1&r2=1.67.4.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-dw2-fde-glibc.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.12&r2=1.12.6.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/unwind-dw2.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.40&r2=1.40.6.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/t-libunwind-elf.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/t-libunwind.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.5&r2=1.5.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/t-glibc-libunwind.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/t-glibc.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3&r2=1.3.84.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/t-hpux.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.8&r2=1.8.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/ia64/unwind-ia64.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.21.4.1&r2=1.21.4.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/doc/install.texi.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.248.4.25&r2=1.248.4.26


Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug