diff options
Diffstat (limited to 'open_issues')
-rw-r--r-- | open_issues/gcc.mdwn | 321 | ||||
-rw-r--r-- | open_issues/gcc/libmudflap.mdwn | 74 |
2 files changed, 177 insertions, 218 deletions
diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index 45590928..57de9a6d 100644 --- a/open_issues/gcc.mdwn +++ b/open_issues/gcc.mdwn @@ -31,14 +31,14 @@ example. Especially all the compiler magic is all the same. <!-- git checkout reviewed -git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefix=./ --find-renames --ignore-space-change ..upstream/master | awk '/^diff/ { c = $0; } /^@@/ { print c; } { print; }' | less +git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefix=./ --word-diff --color --find-renames --ignore-space-change ..upstream/trunk | awk '/^(\x1b\[[0-9]+m)?diff/ { c = " " $0; } /^(\x1b\[[0-9]+m)?@@/ { print c; } { print; }' | less -i -/^---.*/([^.]*|.*\.texi.*|[^/]*gnu[^/]*)$|hurd|linux|nacl|nptl|glibc|gs: +/^---.*/([^.]*|.*\.texi.*|[^/]*gnu[^/]*|libgo/go/(net/sock_bsd\.go|syscall/exec_bsd\.go|syscall/libcall_posix\.go))$|hurd|linux|nacl|nptl|glibc($|[^x]|x[^x]|x$)|gs:|dg-runtest --> -Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 -(2013-06-06) sources|source_repositories/gcc]]. +Last reviewed up to the [[Git mirror's d3faa4b6d102b09a5ea17bbf81590f215b42fbc4 +(2014-09-26) sources|source_repositories/gcc]]. <http://gcc.gnu.org/install/configure.html> has documentation for the `configure` switches. @@ -61,7 +61,8 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 rename to `gnu-user` to reflect this? TODO. * `gcc/acinclude.m4`:`gcc_GAS_FLAGS`: always pass `--32` to assembler for - x86 Linux. (Why?) + x86 Linux. Probably we should just do the same, see `*-*-linux*` + comment in [[!message-id "87zjrjcasc.fsf@schwinge.name"]]. * `lib-prefix.m4` (present twice in GCC sources) contains one remaining `linux`-only case. @@ -277,12 +278,17 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 * `libgcc` - TODO: - * `config/t-linux` * `config/i386/t-linux` + + TODO, rename to `t-gnu-user`. + * `config/i386/linux-unwind.h` + TODO, probably needs porting, if we need this. + [[!GCC_PR 57851 desc="[patch] unwinding via signal trampoline for + kfreebsd*-gnu"]]. + * `libitm` TODO: @@ -299,10 +305,33 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 * Eventually: get rid of this special-casing. [[!message-id "gckk1s$e0b$1@ger.gmane.org"]]. - * [[`libmudflap`|libmudflap]]. - * [`-fsplit-stack`](http://nickclifton.livejournal.com/6889.html) + #define TARGET_CAN_SPLIT_STACK + #define TARGET_THREAD_SPLIT_STACK_OFFSET 0x30 + + libgcc/config/i386/morestack.S + libgcc/config/i386/t-stack-i386 + libgcc/config/t-stack + libgcc/generic-morestack-thread.c + libgcc/generic-morestack.c + libgcc/generic-morestack.h + libgcc/config/i386/morestack.S: cmpl %gs:0x30,%eax # See if we have enough space. + libgcc/config/i386/morestack.S: # gcc/config/i386/linux.h. + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 # Save the new stack boundary. + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 # Save the new stack boundary. + libgcc/config/i386/morestack.S: movl %ecx,%gs:0x30 # Save new stack boundary. + libgcc/config/i386/morestack.S: # gcc/config/i386/linux64.h. + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 + libgcc/config/i386/morestack.S: movl %gs:0x30,%eax + libgcc/config/i386/morestack.S: movl %eax,%gs:0x30 + libgcc/generic-morestack-thread.c: can build glibc. */ + libgcc/generic-morestack-thread.c: not be necessary if glibc supports -fsplit-stack directly. */ + libgcc/generic-morestack.c: can build glibc. */ + libgcc/generic-morestack.c: since stack splitting only works on GNU/Linux anyhow. */ + libgcc/generic-morestack.c:#if defined(__GLIBC__) && defined(__linux__) + libgcc/generic-morestack.c: /* In glibc, the first two real time signals are used by the NPTL + IRC, freenode, #hurd, 2014-01-10: <gnu_srs1> Hi, I assume gcc -fsplit-stack is not yet supported? @@ -362,8 +391,7 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 * Might `-fsplit-stack` be useful for us with respect to our [[multithreaded|multithreading]] libraries? - * `gcc/ada`, `gcc/testsuite/ada`, `gcc/testsuite/gnat.dg`, `gnattools`, - `libada` (not reviewed) + * `gcc/ada` (not all reviewed) * [[Ada (GNAT)|GNAT]] support is work in progress. @@ -416,8 +444,6 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 commit a204f0622242865ffea889bd698bc7c7bd236bd1), commit 05c1aa95e6c37b3b281d749c76c673392941a031. - * Check before/after Joseph changes. (Should be fine.) - * 34618b3190c110b8926cc2b1db4b4eac95451995 »config-list.mk« What's this used for? (Check ML.) Ask to include i686-pc-gnu (once it is @@ -599,8 +625,131 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 A lot of Linux-specific things. + * 30f690e026ecdf99c68e777a48562b58afe37f43 `TARGET_LIBC_HAS_FUNCTION`. Where + is `targetm` set? All TARGET_C99_FUNCTIONS and TARGET_HAS_SINCOS gone? + + * `libvtv` + + * Disabled in `configure.tgt`. + + * `libvtv/vtv_rts.cc`: `if (strcmp (info->dlpi_name, "linux-vdso.so.1") + == 0)` -- not a problem for us, but... + + * `libvtv/vtv_rts.cc`: `/proc/self/exe` usage, `PATH_MAX`. + + * ./libgomp/testsuite/libgomp.c/affinity-1.c Linux usage + * `libcilkrts` + Disabled for Hurd. + + libcilkrts/Makefile.am: + + +# If we're building on Linux, use the Linux version script + +if LINUX_LINKER_SCRIPT + + libcilkrts_la_LDFLAGS += -Wl,--version-script,$(srcdir)/runtime/linux-symbols.ver + +endif + + libcilkrts/configure.ac: + + +# We have linker scripts for appropriate operating systems + +linux_linker_script=no + +case "${host}" in + + *-*-linux*) + + linux_linker_script=yes + + ;; + +esac + +AM_CONDITIONAL(LINUX_LINKER_SCRIPT, test "$linux_linker_script" = "yes") + + libcilkrts/runtime/cilk_malloc.c: + + +#if defined _WIN32 || defined _WIN64 || defined __linux__ + +#include <malloc.h> + +#define HAS_MEMALIGN 1 + +#endif + + libcilkrts/runtime/config/x86/cilk-abi-vla.c: + + +#if defined(__x86_64) + + // For Intel64 linux & MACH ABI, all the parameters were passed in + + // register, so top of the stack frame above the return address + + // is just the size of the return address plus + + // distance_from_sp_to_alloca_area on the chance that the alloca + + // area isn't at the very bottom of the calling functions stack. + +#elif defined(__MACH__) + + // For ia32 MACH, parameter size is always a mutliple of 16 + + // bytes to keep the stack 16 byte aligned. So we need to round + + // number of parameters up to multiple of 4. + + param_size = 8 * sizeof(char *); + +#else + + // For both windows Intel64 ABI, and the IA32 windows and + + // linux ABIs, space is reserved on the stack for all these + + // parameters. param_size is 5 * size of a stack slot. + + param_size = 5 * sizeof(char *); + +#endif + + +#if defined(__x86_64) + + // For Intel64 linux & MACH ABI, all the parameters were passed in + + // register, so top of the stack frame above the return address + + // is just the size of the return address plus + + // distance_from_sp_to_alloca_area on the chance that the alloca + + // area isn't at the very bottom of the calling functions stack. + +#elif defined(__MACH__) + + // For ia32 MACH, parameter size is always a mutliple of 16 + + // bytes to keep the stack 16 byte aligned. So we need to round + + // number of parameters up to multiple of 4. + + param_size = 8 * sizeof(char *); + +#else + + // For both windows Intel64 ABI, and the IA32 windows and + + // linux ABIs, space is reserved on the stack for all these + + // parameters. param_size is 5 * size of a stack slot. + + param_size = 6 * sizeof(char *); + +#endif + + libcilkrts/runtime/os-unix.c: + + +#ifdef __linux__ + + // define _GNU_SOURCE before *any* #include. + + // Even <stdint.h> will break later #includes if this macro is not + + // already defined when it is #included. + +# define _GNU_SOURCE + +#endif + + +#if defined __linux__ + +# include <sys/sysinfo.h> + +# include <sys/syscall.h> + + Syscall usage outside __linux__? + + Will run into: + + +#else + +#error "Unknown architecture" + + libcilkrts/runtime/sysdep-unix.c: + + +#ifdef __linux__ + + // define _GNU_SOURCE before *any* #include. + + // Even <stdint.h> will break later #includes if this macro is not + + // already defined when it is #included. + +# define _GNU_SOURCE + +#endif + + +#ifdef __linux__ + +# include <sys/resource.h> + +# include <sys/sysinfo.h> + +#endif + + +#if defined( __linux__) || defined(__VXWORKS__) + + pthread_t tid = *(pthread_t *)thread_id; + + if (i < 0 || i > g->total_workers) + + return 0; + + return g->sysdep->threads[i] == tid; + +#else + + // Needs to be implemented + + return 0; + +#endif + IRC, freenode, #hurd, 2014-01-10: <youpi> bwaarf, libcilkrts in gcc-4.9 @@ -612,42 +761,22 @@ Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 <http://news.gmane.org/find-root.php?message_id=%3C87wqjjo5kx.fsf%40kepler.schwinge.homeip.net%3E> resolved, actually. - [[!debbug 734973]]. - - * `WCONTINUED` - - IRC, OFTC, #debian-hurd, 2014-02-25: - - <gnu_srs> youpi: some gcc-4.9 packages (and source) are needed for - gnat-4.9 to build: Is it OK to propose this patch: - http://paste.debian.net/84079/ - --- a/src/gcc/lto_lto.c.orig 2014-02-14 19:22:14.000000000 +0100 - +++ b/src/gcc/lto/lto.c 2014-02-25 20:50:20.000000000 +0100 - @@ -2476,7 +2476,11 @@ - int status; - do - { - +#ifdef __GNU__ - + int w = waitpid(0, &status, WUNTRACED); - +#else - int w = waitpid(0, &status, WUNTRACED | WCONTINUED); - +#endif - if (w == -1) - fatal_error ("waitpid failed"); - <youpi> gnu_srs: rather ifndef WCONTINUED + [[!debbug 734973]]. gcc-4.9/debian/patches/libcilkrts-targets.diff + * Debian GCC 48594516135e34a726cafe3863a4dc661bbd61a4 `boehm-gc: use + anonymous mmap instead of brk also on hurd-*.`. [[!debbug 753791]]. # Build Here's a log of a GCC build run; this is from our [[Git repository's -2a3496bebfe9d89f11d0b7a591afac55e11d5263 (2013-06-06; -3a930d3fc68785662f5f3f4af02474cb21a62056 (2013-06-06)) +f91948d1bd857c81bb2cea688457b84fa3ce6b84 (2014-09-26; +d3faa4b6d102b09a5ea17bbf81590f215b42fbc4 (2014-09-26)) sources|source_repositories/gcc]], run on kepler.SCHWINGE and laplace.SCHWINGE. $ export LC_ALL=C $ (cd ../master/ && contrib/gcc_update --touch) - $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 --enable-languages=all,ada 2>&1 | tee log_build + $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.9 CXX=g++-4.9 --enable-languages=all,ada 2>&1 | tee log_build [...] $ make 2>&1 | tee log_build_ [...] @@ -655,11 +784,8 @@ sources|source_repositories/gcc]], run on kepler.SCHWINGE and laplace.SCHWINGE. Different hosts may default to different shells and compiler versions; thus harmonized. -We're stuck with GCC 4.6 until there are Debian -*gnat-4.7*/*gnat-4.8*/*gnat-4.9* packages avaible. (Which there now are.) - -This takes up around 3.5 GiB, and runs for [[3 h 22 min|performance#measure]] -on kepler.SCHWINGE and [[3 h 44 min|performance#measure]] on laplace.SCHWINGE. +This takes up around 4 GiB, and runs for [[4 h 48 min|performance#measure]] on +kepler.SCHWINGE and [[5 h 10 min|performance#measure]] on laplace.SCHWINGE. <!-- @@ -691,6 +817,8 @@ on kepler.SCHWINGE and [[3 h 44 min|performance#measure]] on laplace.SCHWINGE. Comes from `gcc/config.gcc`: `i386/t-pmm_malloc` vs. `i386/t-gmm_malloc` for `i[34567]86-*-linux*` vs. `i[34567]86-*-*`. + 2004-08-03, PR target/16570, id:20040802163509.GA18487@lucon.org + * `libgomp` * `libgomp/config/linux`, `libgomp/config/linux/x86` @@ -813,7 +941,7 @@ on kepler.SCHWINGE and [[3 h 44 min|performance#measure]] on laplace.SCHWINGE. [...] This takes up around 1.1 GiB, and runs for [[3 min|performance#measure]] on -kepler.SCHWINGE and [[12 min|performance#measure]] on laplace.SCHWINGE. +kepler.SCHWINGE and [[13 min|performance#measure]] on laplace.SCHWINGE. ## Analysis @@ -842,21 +970,14 @@ TODO. On GNU/Hurd, it is advisable to reboot after having built and installed GCC, before running the testsuite, as otherwise there seems to be a tendency that the system crashes during the `gcc.c-torture/compile/limits-structnest.c` tests, which are rather memory hungry, see [[!message-id -"87bol6aixd.fsf@schwinge.name"]]. Likewise, it also seems advisable to add -further reboots in between, that is, separate `make check`'s `check-host` into -several separate runs, and then one for `check-target` (see -`[build]/Makefile:do-check`, `[build]/gcc/Makefile:CHECK_TARGETS`), as -otherwise there seems to be a tendency for the system crashing sooner or later. -(Running `check-host` accumulates to something like 44 hours worth of -forking/execing of GCC and testcases.) On GNU/Linux we run it in one go, so -that we'll catch any fundamental rearrangements of/additions to the testsuites. +"87bol6aixd.fsf@schwinge.name"]]. $ make -k check 2>&1 | tee log_test [...] -This runs for [[7 h 35 min|performance#measure]] on kepler.SCHWINGE and [[15 h -46 min|performance#measure]] on laplace.SCHWINGE. +This runs for [[10 h 46 min|performance#measure]] on kepler.SCHWINGE and [[18 h +10 min|performance#measure]] on laplace.SCHWINGE. ## Analysis @@ -1004,90 +1125,6 @@ This runs for [[7 h 35 min|performance#measure]] on kepler.SCHWINGE and [[15 h TODO. - * `[ARCH]/libmudflap` - - spawn [open ...] - FAIL: libmudflap.cth/pass37-frag.c (-O0) execution test - FAIL: libmudflap.cth/pass37-frag.c (-O0) output pattern test - - FAIL: libmudflap.cth/pass37-frag.c (-O0) (rerun 1) execution test - FAIL: libmudflap.cth/pass37-frag.c (-O0) (rerun 1) output pattern test - [...] - - TODO. Seems like not just timeouts (though, reported before: [[!GCC_PR - 20003]]). If GDB is to believed, it seems like confusion between - libmudflap and glibc startup (while setting up the signal thread?): - - #0 getenv (name=0x12dabee "LANGUAGE") at getenv.c:81 - #1 0x011b2c78 in guess_category_value (categoryname=<optimized out>, category=<optimized out>) at dcigettext.c:1359 - #2 __dcigettext (domainname=0x12dab1b <_libc_intl_domainname> "libc", msgid1=0x12e1cd8 "Error in unknown error system: ", msgid2=0x0, plural=0, n=0, category=5) at dcigettext.c:575 - #3 0x011b1c53 in __dcgettext (domainname=0x12dab1b <_libc_intl_domainname> "libc", msgid=0x12e1cd8 "Error in unknown error system: ", category=5) at dcgettext.c:53 - #4 0x01203728 in __strerror_r (errnum=-1, buf=0x15ff648 "", buflen=1024) at ../sysdeps/mach/_strerror.c:57 - #5 0x011b0f30 in __assert_perror_fail (errnum=-1, file=0x1133969 "./pthread/cthreads-compat.c", line=45, function=0x1133985 <__PRETTY_FUNCTION__.5356> "cthread_fork") at assert-perr.c:62 - #6 0x011324d4 in cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:45 - #7 0x01192a96 in _hurdsig_init (intarray=0x102a000, intarraysize=5) at hurdsig.c:1499 - #8 0x0117b9f8 in _hurd_new_proc_init (argv=0x15ffb88, intarray=0x102a000, intarraysize=5) at hurdinit.c:138 - #9 0x0117bfef in _hurd_init (flags=8, argv=0x15ffb88, portarray=0x1029000, portarraysize=6, intarray=0x102a000, intarraysize=5) at hurdinit.c:94 - #10 0x011a47c4 in init1 (argc=1, arg0=0x1025000 "/media/erich/home/thomas/tmp/gcc/hurd/master.build/i686-unknown-gnu0.3/libmudflap/testsuite/pass37-frag.exe") at ../sysdeps/mach/hurd/i386/init-first.c:136 - #11 0x00001ec6 in _dl_start_user () from /lib/ld.so - - pthread/cthreads-compat.c: - - 38 cthread_t - 39 cthread_fork (cthread_fn_t func, void *arg) - 40 { - 41 pthread_t thread; - 42 int err; - 43 - 44 err = pthread_create (&thread, NULL, func, arg); - 45 assert_perror (err); - - Breakpoint 2, cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:44 - 44 err = pthread_create (&thread, NULL, func, arg); - (gdb) info threads - Id Target Id Frame - * 4 Thread 17597.16 cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:44 - (gdb) s - 40 { - (gdb) - 44 err = pthread_create (&thread, NULL, func, arg); - (gdb) - - Breakpoint 1, pthread_create (thr=0x15ffa70, attr=0x0, start=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ../../../master/libmudflap/mf-hooks3.c:272 - 272 { - (gdb) s - 275 TRACE ("pthread_create\n"); - (gdb) - 278 si = CALL_REAL (malloc, sizeof (*si)); - (gdb) n - 279 si->user_fn = start; - (gdb) - 283 return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); - (gdb) s - 279 si->user_fn = start; - (gdb) - 280 si->user_arg = arg; - (gdb) - 283 return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); - (gdb) - 280 si->user_arg = arg; - (gdb) - 283 return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); - (gdb) - __mf_0fn_pthread_create (thr=thr@entry=0x15ffa70, attr=attr@entry=0x0, start=start@entry=0x1041070 <__mf_pthread_spawner>, arg=arg@entry=0x108e520 <__mf_0fn_bufs+12288>) at ../../../master/libmudflap/mf-hooks3.c:265 - 265 } - (gdb) s - pthread_create (thr=0x15ffa70, attr=0x0, start=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ../../../master/libmudflap/mf-hooks3.c:284 - 284 } - (gdb) s - cthread_fork (func=0x118b0b0 <_hurd_msgport_receive>, arg=0x0) at ./pthread/cthreads-compat.c:45 - 45 assert_perror (err); - (gdb) s - __assert_perror_fail (errnum=-1, file=0x1133969 "./pthread/cthreads-compat.c", line=45, function=0x1133985 <__PRETTY_FUNCTION__.5356> "cthread_fork") at assert-perr.c:55 - - Is this `libmudflap/mf-hooks3.c:__mf_0fn_pthread_create`, *a special - bootstrap variant*, that indeed just returns `-1`? - * `[ARCH]/libstdc++-v3` FAIL: libstdc++-abi/abi_check @@ -1202,11 +1239,7 @@ This runs for [[7 h 35 min|performance#measure]] on kepler.SCHWINGE and [[15 h GCC DejaGnu's `remote.exp:remote_wait` to get rid of (that is, ignore) its `timeout` parameter which, in DejaGnu code, is often invoked with a hard-coded value (that we may want to override) (or is that what - `gcc/testsuite/lib/timeout.exp:standard_wait` is for?). While at it, - `libmudflap/testsuite/libmudflap.c++/ctors.exp` and - `libmudflap/testsuite/libmudflap.c/externs.exp` use hard-coded timeout - values in `remote_wait` calls (also, why don't these use the usual way of - running tests?). + `gcc/testsuite/lib/timeout.exp:standard_wait` is for?). * What is `gcc/testsuite/gcc.test-framework/test-framework.exp` and should we define `CHECK_TEST_FRAMEWORK` to run these tests? diff --git a/open_issues/gcc/libmudflap.mdwn b/open_issues/gcc/libmudflap.mdwn deleted file mode 100644 index f14ca1bc..00000000 --- a/open_issues/gcc/libmudflap.mdwn +++ /dev/null @@ -1,74 +0,0 @@ -[[!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. |