Re: [Gc] Compilation issue against musl

Brendan Heading <[email protected]> Fri, 31 Jul 2015 13:44:07 +0100
Newsgroups gmane.comp.programming.garbage-collection.boehmgc
Message-ID <CA+BsyQ7pPRpsOj0+YAyR7mW_ObAN4xd_uBVw25jfbe10ZVqtww@mail.gmail.com>
Ivan,

Thank you - my apologies, I should have checked the master branch on
github. I tested the changes from there and they appear to solve the
problem.

Do you have any plans to issue a new release in the near future ?

regards

Brendan

On 31 July 2015 at 09:40, Ivan Maidanski <[email protected]> wrote:
> Hi,
>
> Please check master branch. Issue should be solved.
> Also, there are a couple of issues in github bdwgc bug tracker, please check
> them.
>
> --
>
> среда, 29 июля 2015г., 02:31 +03:00 от Brendan Heading
> <[email protected]>:
>
> Hi guys,
>
> There's a minor compilation issue when building bdwgc against musl. The
> problem is observed on version 7.4.2. The compilation error is as follows :
>
> =================
>
> In file included from os_dep.c:44:0:
> /home/peko/autobuild/instance-2/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/asm/sigcontext.h:9:8:
> error: redefinition of 'struct sigcontext'
>  struct sigcontext {
>         ^
> In file included from
> /home/peko/autobuild/instance-2/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/signal.h:243:0,
>                  from ./include/private/../gc_pthread_redirects.h:42,
>                  from ./include/private/../gc.h:1443,
>                  from ./include/private/gc_priv.h:46,
>                  from os_dep.c:17:
> /home/peko/autobuild/instance-2/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/bits/signal.h:11:16:
> note: originally defined here
>  typedef struct sigcontext
>
> =================
>
> The root cause is in the following excerpt from os_dep.c
>
> =================
>
> #   if 2 <= __GLIBC__
>
> #     if 2 == __GLIBC__ && 0 == __GLIBC_MINOR__
>
>         /* glibc 2.1 no longer has sigcontext.h.  But signal.h          */
>
>         /* has the right declaration for glibc 2.1.                     */
>
> #       include <sigcontext.h>
>
> #     endif /* 0 == __GLIBC_MINOR__ */
>
> #   else /* __GLIBC__ < 2 */
>
>       /* libc5 doesn't have <sigcontext.h>: go directly with the kernel   */
>
>       /* one.  Check LINUX_VERSION_CODE to see which we should reference. */
>
> #     include <asm/sigcontext.h>
>
> #   endif /* __GLIBC__ < 2 */
>
> =================
>
> The logic here is intended to provide two special cases; one for __GLIBC__
> version 2.0, the other is a fall through case intended to be reached if
> __GLIBC__ version is <2. However this fall through is also reached if
> __GLIBC__ is undefined as is the case in musl. If the __GLIBC__ version is
> 2.1 or greater no special action is taken.
>
> musl, as a matter of policy, will never provide a macro to detect its
> presence. Instead I propose that the above logic be wrapped in an #ifdef
> __GLIBC__. I've tested that this allows the build to work on musl, and
> should also work on uclibc and other C libraries.
>
> I've attached a patch - I'm more than happy to update it if you feel there
> is a better approach.
>
> regards
>
> Brendan
>
>
>
>
>
>
>
>
> _______________________________________________
> bdwgc mailing list
> [email protected]
> https://lists.opendylan.org/mailman/listinfo/bdwgc
_______________________________________________
bdwgc mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/bdwgc