Re: [Gc] patch for gc to work on newer NetBSD releases
Ivan Maidanski
ivmai at mail.ru
Thu May 31 16:23:45 PDT 2012
Hi Tsugutomo,
Committed your patch (with some modifications) to master branch (7.3alpha3). Please check.
I'll commit to release branch (gc7.2) as well after testing.
Q: Which is newer NetBSD? I guess rel 9.0, right?
Regards,
Ivan
Tue, 29 May 2012 12:08:26 +0900 tsugutomo.enami at jp.sony.com:
> Hi.
>
> Attached patch is necessary for boehm-gc to work on newer NetBSD
> release. Without it, for example, make check fails as attached log.
>
> The change itself is distributed for a while as a part of pkgsrc, which
> is 3rd party software management system.
>
> I hope this is integrated in the future release of boehm-gc.
>
> enami.
>
>
> $NetBSD: patch-ac,v 1.15 2012/05/29 03:01:15 enami Exp $
>
> --- dyn_load.c.orig 2007-12-19 02:37:12.000000000 +0300
> +++ dyn_load.c 2009-11-11 01:54:26.000000000 +0300
> @@ -78,6 +78,8 @@
> #endif
>
> #if defined(NETBSD)
> +# include <sys/param.h>
> +# include <dlfcn.h>
> # include <machine/elf_machdep.h>
> # define ELFSIZE ARCH_ELFSIZE
> #endif
> @@ -499,6 +501,15 @@
> return(0);
> }
> if( cachedResult == 0 ) {
> +#if defined(NETBSD) && defined(RTLD_DI_LINKMAP)
> + struct link_map *lm = NULL;
> + int rv = dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &lm);
> + if (rv != 0)
> + return (0);
> + if (lm == NULL)
> + return (0);
> + cachedResult = lm;
> +#else /* !(defined(NETBSD) && defined(RTLD_DI_LINKMAP)) */
> int tag;
> for( dp = _DYNAMIC; (tag = dp->d_tag) != 0; dp++ ) {
> if( tag == DT_DEBUG ) {
> @@ -508,6 +519,7 @@
> break;
> }
> }
> +#endif /* !(defined(NETBSD) && defined(RTLD_DI_LINKMAP)) */
> }
> return cachedResult;
> }
>
> make check-TESTS
> [1] Segmentation fault (core dumped) ${dir}${tst}
> FAIL: gctest
> Leaked composite object at 0x631eb0 (tests/leak_test.c:19, sz=8, NORMAL)
> Caller at allocation:
> ##PC##= 0x4009d2
>
> PASS: leaktest
> Final heap size is 65536
> PASS: middletest
> GC_check_heap_block: found smashed heap objects:
> 0x63ffb8 in or near object at 0x63ff90(tests/smash_test.c:21, sz=40)
> Caller at allocation:
> ##PC##= 0x400942
> GC_check_heap_block: found smashed heap objects:
> 0x63ffb8 in or near object at 0x63ff90(tests/smash_test.c:21, sz=40)
> Caller at allocation:
> ##PC##= 0x400942
> GC_check_heap_block: found smashed heap objects:
> 0x63ffb8 in or near object at 0x63ff90(tests/smash_test.c:21, sz=40)
> Caller at allocation:
> ##PC##= 0x400942
> GC_check_heap_block: found smashed heap objects:
> 0x6c6cb8 in or near object at 0x6c6c90(tests/smash_test.c:21, sz=40)
> Caller at allocation:
> ##PC##= 0x400942
> 0x63ffb8 in or near object at 0x63ff90(tests/smash_test.c:21, sz=40)
> Caller at allocation:
> ##PC##= 0x400942
> PASS: smashtest
> GC Warning: Out of Memory! Returning NIL!
> GC Warning: Out of Memory! Returning NIL!
> GC Warning: Out of Memory! Returning NIL!
> PASS: hugetest
> usage: test_cpp number-of-iterations
> Assuming 10 iters
> Starting iteration 1
> [1] Segmentation fault (core dumped) ${dir}${tst}
> FAIL: test_cpp
> ==================================
> 2 of 6 tests failed
> Please report to Hans.Boehm at hp.com
> ==================================
> *** Error code 1
>
> Stop.
>
> _______________________________________________
> Gc mailing list
> Gc at linux.hpl.hp.com
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
More information about the Gc
mailing list