summaryrefslogtreecommitdiff
path: root/open_issues/gcc
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@gnu.org>2009-05-19 11:30:24 +0200
committerThomas Schwinge <tschwinge@gnu.org>2009-05-19 11:47:08 +0200
commita956d8791ffe383fe6fe356fd1035cabe76d4bdd (patch)
treecd6058bee3f19d7898c74ee3f6d3321f8a4bf187 /open_issues/gcc
parent9a504117097495928a2a83884bb40438baa2321a (diff)
GCC issues.
Diffstat (limited to 'open_issues/gcc')
-rw-r--r--open_issues/gcc/c++.mdwn41
-rw-r--r--open_issues/gcc/libmudflap.mdwn74
2 files changed, 115 insertions, 0 deletions
diff --git a/open_issues/gcc/c++.mdwn b/open_issues/gcc/c++.mdwn
new file mode 100644
index 00000000..cab4c1f1
--- /dev/null
+++ b/open_issues/gcc/c++.mdwn
@@ -0,0 +1,41 @@
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_porting open_issue_gcc fixed_in_debian]]
+
+Modify the [[hurd/building/cross-compiling]] shell script to configure GCC for
+building GCC with C++ support when building its second (i.e., final) version.
+
+Compiling a most-trivial C++ program used to work with GCC 4.2 and 4.3 (and the
+resulting binaries would also work), but linking fails with GCC SVN trunk:
+
+ $ $TARGET-g++ -Wall a.cc -lpthread
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__multf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__fixunstfsi'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__subtf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__divtf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__copysigntf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__addtf3'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__lttf2'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__floatsitf'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__netf2'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__floatunsitf'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__eqtf2'
+ /home/thomas/tmp/gnu-0/lib/gcc/i586-pc-gnu/4.4.0/../../../../i586-pc-gnu/lib/libgcc_s.so: undefined reference to `__fabstf2'
+ collect2: ld returned 1 exit status
+
+Whether this defect report also applies to a natively-build GCC from SVN trunk
+has not yet been checked.
+
+[[Thomas_Schwinge|tschwinge]] suspects the problem to be a configuration issue
+of a GCC helper library, whose configuration setup has changed after GCC 4.3.
+
+The need for `-lpthread` is another story. See the Debian glibc patches
+repository for details.
diff --git a/open_issues/gcc/libmudflap.mdwn b/open_issues/gcc/libmudflap.mdwn
new file mode 100644
index 00000000..f14ca1bc
--- /dev/null
+++ b/open_issues/gcc/libmudflap.mdwn
@@ -0,0 +1,74 @@
+[[!meta copyright="Copyright © 2008, 2009 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled
+[[GNU Free Documentation License|/fdl]]."]]"""]]
+
+[[!tag open_issue_porting open_issue_gcc]]
+
+Single-threaded use appears to work:
+
+ $ echo 'int main(void) { int *a; a[10]=0; return a[5]; }' | ↩
+ gcc -o a -fmudflap -x c - -lmudflap
+ $ ./a
+ *******
+ mudflap violation 1 (check/write): time=1227208721.922064 ptr=0x1023de0 size=4
+ pc=0x1037a33 location=`<stdin>:1:26 (main)'
+ /usr/lib/libmudflap.so.0(__mf_check+0x33) [0x1037a33]
+ ./a(main+0x7c) [0x80486c4]
+ /usr/lib/libmudflap.so.0(__wrap_main+0x49) [0x1037239]
+ Nearby object 1: checked region begins 68B before and ends 65B before
+ mudflap object 0x80ca268: name=`argv[]'
+ bounds=[0x1023e24,0x1023e2b] size=8 area=static check=0r/0w liveness=0
+ alloc time=1227208721.922064 pc=0x10371d3
+ Nearby object 2: checked region begins 76B before and ends 73B before
+ mudflap object 0x80cb448: name=`environ[]'
+ bounds=[0x1023e2c,0x1023ed7] size=172 area=static check=0r/0w liveness=0
+ alloc time=1227208721.922064 pc=0x10371d3
+ number of nearby objects: 2
+ *******
+ mudflap violation 2 (check/read): time=1227208721.942109 ptr=0x1023dcc size=4
+ pc=0x1037a33 location=`<stdin>:1:35 (main)'
+ /usr/lib/libmudflap.so.0(__mf_check+0x33) [0x1037a33]
+ ./a(main+0xf3) [0x804873b]
+ /usr/lib/libmudflap.so.0(__wrap_main+0x49) [0x1037239]
+ Nearby object 1: checked region begins 88B before and ends 85B before
+ mudflap object 0x80ca268: name=`argv[]'
+ Nearby object 2: checked region begins 96B before and ends 93B before
+ mudflap object 0x80cb448: name=`environ[]'
+ number of nearby objects: 2
+
+Multi-threaded use doesn't:
+
+ $ echo 'int main(void) { int *a; a[10]=0; return a[5]; }' | ↩
+ gcc -include pthread.h -o a -fmudflapth -x c - -lmudflapth -lpthread
+ $ ./a
+ Killed
+ $ gdb a
+ [...]
+ Starting program: /media/data/home/tschwinge/a
+
+ Program received signal EXC_BAD_ACCESS, Could not access memory.
+ 0x01180653 in getenv () from /lib/libc.so.0.3
+ (gdb) bt
+ #0 0x01180653 in getenv () from /lib/libc.so.0.3
+ #1 0x01177a02 in __dcigettext () from /lib/libc.so.0.3
+ #2 0x01176a57 in dcgettext () from /lib/libc.so.0.3
+ #3 0x011c03b5 in strerror_r () from /lib/libc.so.0.3
+ #4 0x01175b57 in __assert_perror_fail () from /lib/libc.so.0.3
+ #5 0x0111f1ad in cthread_fork (func=0x114f630 <_hurd_msgport_receive>, arg=0x0)
+ at /build/buildd/hurd-20080607/build-tree/hurd/libpthread/pthread/cthreads-compat.c:41
+ #6 0x0115713e in _hurdsig_init () from /lib/libc.so.0.3
+ #7 0x01140852 in _hurd_proc_init@@GLIBC_2.2.6 () from /lib/libc.so.0.3
+ #8 0x01140e86 in _hurd_init () from /lib/libc.so.0.3
+ #9 0x011690ce in init1 () from /lib/libc.so.0.3
+ #10 0x00001e96 in _dl_start_user () from /lib/ld.so
+ #11 0x00000001 in ?? ()
+ #12 0x01024000 in ?? ()
+ #13 0x00000000 in ?? ()
+
+Also `libmudflap` is pthread-only.