Hello, Natanael Copa <nc...@alpinelinux.org> wrote: > diff --git a/libbb/hash_md5_sha.c b/libbb/hash_md5_sha.c > index 880ffab01..d2351d3e6 100644 > --- a/libbb/hash_md5_sha.c > +++ b/libbb/hash_md5_sha.c > @@ -17,8 +17,11 @@ > # if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) > static void cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx) > { > - asm ("cpuid" > - : "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx) > + asm volatile ( > + "mov %%ebx, %%esi;" /* save %ebx PIC register */ > + "cpuid;" > + "xchg %%ebx, %%esi;" > + : "=a"(*eax), "=S"(*ebx), "=c"(*ecx), "=d"(*edx) > : "0"(*eax), "1"(*ebx), "2"(*ecx), "3"(*edx) > ); > }
Unfortunately, this does not fix the segfault. Since the segfault occurs in musl's dynamic loader I also don't think that this code is reached/executed. Instead, this seems to be a problem with the symbols of the provided assembly file. I am currently debugging this on a96ccbefe417aaac6a2ce59c788e01fc0f83902f. If I remove the PSHUFFLE_BYTE_FLIP_MASK definition (and the instruction using it) in hash_md5_sha256_x86-32_shaNI.S from the checkout for this commit then the segfault doesn't occur. So this does definitely seem to be a problem with the hash_md5_sha256_x86-32_shaNI.S assembly file... Greetings, Sören _______________________________________________ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox