On Sun, Oct 2, 2016 at 10:53 AM, Samuel Thibault <samuel.thiba...@gnu.org> wrote: > David Michael, on Sun 02 Oct 2016 10:22:12 -0700, wrote: >> Add a GLIBC_2.22 { __mach_host_self_; } section to mach/Versions. > > Alright, I forgot to cherry-pick the upstream commit for this. Note > however that in upstream, it got versioned to 2.23, so we are diverging > here, distributions will have to handle this.
That's fine with me, but I don't know if Guix will have an issue with this difference. CCing Manolis and Ludovic so they are aware of it. >> Commit a87bf9a8eab3af79798131b60c1f7f92f995df8c breaks static linking >> (namely ext2fs.static) from missing pthread_setcancelstate. > > Ah? I don't understand how: this commit only makes libpthread use its > own internal __pthread_setcancelstate symbol. A pthread_setcancelstate > alias is still defined from pthread/pt-setcancelstate.c, how is it that > you don't get it? The following is the actual error when using that commit. It looks like pthread_setcancelstate is defined in libpthread2.a, and the linking command includes -lpthread, which includes -lpthread2. Changing error.c and pthread-functions.h doesn't seem correct since there are many other instances of that throughout glibc. I didn't get much further into it than that yet. /usr/i686-pc-gnu/sys-root/lib/libcrt.a(error.o): In function `__error': (.text+0x26f): undefined reference to `pthread_setcancelstate' /usr/i686-pc-gnu/sys-root/lib/libcrt.a(error.o): In function `__error': (.text+0x2b4): undefined reference to `pthread_setcancelstate' /usr/i686-pc-gnu/sys-root/lib/libcrt.a(error.o): In function `__error_at_line': (.text+0x330): undefined reference to `pthread_setcancelstate' /usr/i686-pc-gnu/sys-root/lib/libcrt.a(error.o): In function `__error_at_line': (.text+0x38f): undefined reference to `pthread_setcancelstate' collect2: error: ld returned 1 exit status ../Makeconf:347: recipe for target 'ext2fs.static' failed >> The panic update patches produce -Wformat-security warnings--errors >> with Fedora's CFLAGS. Use a literal "%s" instead of a variable as the >> format string. > > Could you be more precise? A quick check didn't let me see where it was > a problem. This will make it build: --- a/i386/i386at/biosmem.c +++ b/i386/i386at/biosmem.c @@ -35,7 +35,7 @@ #define __init #define boot_memmove memmove -#define boot_panic panic +#define boot_panic(s) panic("%s", s) #define boot_strlen strlen #define BOOT_CGAMEM phystokv(0xb8000) @@ -216,7 +216,7 @@ unsigned int i; if (start >= end) { - panic(biosmem_panic_inval_boot_data); + panic("%s", biosmem_panic_inval_boot_data); } assert(biosmem_nr_boot_data != 0); Thanks. David