Bug 46940 - asm aliases with linker plugin segfaults
Summary: asm aliases with linker plugin segfaults
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: lto (show other bugs)
Version: 4.6.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-12-14 15:34 UTC by Jan Hubicka
Modified: 2010-12-14 23:23 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2010-12-14 16:20:51


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Hubicka 2010-12-14 15:34:55 UTC
extern __attribute__((visibility("hidden"))) void _moz_foo (void);
extern __typeof (_moz_foo) _moz_foo __asm__ ("" "INT__foo") __attribute__((__visibility__("hidden"))) ;
void _moz_foo(void)
{
  printf ("blah\n");
}
extern __typeof (_moz_foo) EXT__foo __asm__("" "_moz_foo") __attribute__((__alias__("" "INT__foo")));
evans:/abuild/jh/trunk-3/build-inst2/gcc/:[0]# more t2.c
extern void _moz_foo (void);
main()
{
  _moz_foo ();
}
evans:/abuild/jh/trunk-3/build-inst2/gcc/:[0]# ./xgcc -B ./ -O2 -flto t.c t2.c -fuse-linker-plugin
t.c: In function ?_moz_foo?:
t.c:5:3: warning: incompatible implicit declaration of built-in function ?printf? [enabled by default]
lto1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
lto-wrapper: ./xgcc returned 1 exit status
lto-wrapper failedcollect2: ld returned 1 exit status

The problem here is that we get prevailing definition of _moz_foo to be alias that has no cgraph node (nor alias node) attached. Bah.
Comment 1 Jan Hubicka 2010-12-14 16:20:51 UTC
testing patch...
Comment 2 Jan Hubicka 2010-12-14 23:22:27 UTC
Author: hubicka
Date: Tue Dec 14 23:22:23 2010
New Revision: 167822

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167822
Log:
	PR lto/46940
	PR lto/44463
	* lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Construct nodes
	for aliases when they are used.

	* gcc.dg/lto/pr46940_0.c: New testcase.
	* gcc.dg/lto/pr46940_1.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/lto/pr46940_0.c
    trunk/gcc/testsuite/gcc.dg/lto/pr46940_1.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/lto-symtab.c
    trunk/gcc/testsuite/ChangeLog
Comment 3 Jan Hubicka 2010-12-14 23:23:11 UTC
Fixed.