All development is taking place on github, I'll respond there.

https://github.com/libunwind/libunwind/issues/190

Thanks

On Mon, Jun 22, 2020 at 11:58 PM Mark W. Krentel <kren...@rice.edu> wrote:

> Hi, I found a data point where libunwind 1.5-stable doesn't build.
> I started looking into this and I have a couple questions or suggestions.
> These apply to both master and 1.5-stable.
>
> (1) --enable-debug-frame doesn't build on RedHat 7.x because elf.h is
> too old.  I first noticed this on aarch64 where debug-frame is turned
> on by default, but it applies anywhere with --enable-debug-frame and
> RedHat 7.x.
>
> The problem is /usr/include/elf.h is too old for libunwind 1.5 and
> doesn't define SHF_COMPRESSED.  The build fails with:
>
>     ../../libunwind-1.5-rc1/src/dwarf/Gfind_proc_info-lsb.c:
>     In function 'load_debug_frame':
>     ../../libunwind-1.5-rc1/src/dwarf/Gfind_proc_info-lsb.c:130:24:
>     error: 'SHF_COMPRESSED' undeclared (first use in this function)
>        if (shdr->sh_flags & SHF_COMPRESSED)
>
> This fails on RedHat 7.x, but of course, the real problem is the
> version of glibc, 2.17 on RH 7.  But I haven't done the bisection to
> identify the rev where this was added.
>
> For my purposes (I've recently become the maintainer for the spack
> libunwind package, github.com/spack/spack), I have an easy workaround.
> I just require a recent elf headers as a prereq.
>
> But I was thinking you might want to add a configure test (see if
> SHF_COMPRESSED is defined in elf.h) and turn off debug-frame if not.
>
> ----------
>
> (2) On aarch64, there is a spew of warnings over the asm definition of
> unw_tdep_getcontext().
>
>
> In file included from ../include/libunwind.h:7:0,
>                   from mi/backtrace.c:29:
> mi/backtrace.c: In function 'unw_backtrace':
> ../include/libunwind-aarch64.h:236:5: warning: right-hand operand of
> comma expression has no effect [-Wunused-value]
>   #define unw_tdep_getcontext(uc) (({     \
>                                   ~~~~~~~~~
>     unw_tdep_context_t *unw_ctx = (uc);     \
>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     register uint64_t *unw_base __asm__ ("x0") = (uint64_t*)
> unw_ctx->uc_mcontext.regs;  \
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     __asm__ __volatile__ (      \
>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>        "stp x0, x1, [%[base], #0]\n" \
>        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>        "stp x2, x3, [%[base], #16]\n" \
>        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>        ...
>
>        "str x30, [%[base], #240]\n" \
>        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>        "mov x1, sp\n" \
>        ~~~~~~~~~~~~~~~~
>        "stp x1, x30, [%[base], #248]\n" \
>        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>        : [base] "+r" (unw_base) : : "x1", "memory"); \
>        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     }), 0)
>     ~~^~~~
> ../include/libunwind-common.h:127:29: note: in expansion of macro
> 'unw_tdep_getcontext'
>   #define unw_getcontext(uc)  unw_tdep_getcontext(uc)
>                               ^~~~~~~~~~~~~~~~~~~
> mi/backtrace.c:71:7: note: in expansion of macro 'unw_getcontext'
>         unw_getcontext (&uc);
>         ^~~~~~~~~~~~~~
>
> AFAICT, the warning is harmless, but the message is pretty verbose and
> happens something like 5-6 times.  So, anyone looking at the build
> will stop and wonder.
>
> It might be worthwhile to adjust the define to silence the warning.
>
> Thanks,
>
> --Mark
>
>
>
>

-- 
-Dave

Reply via email to