Hi Vineet, Werner, On Wed, 2018-09-19 at 18:46 +0000, Vineet Gupta wrote: > On 09/19/2018 04:44 AM, Werner Koch wrote: > > On Tue, 18 Sep 2018 21:34, Vineet.Gupta1 at synopsys.com said: > > > > > I'm not exactly clear what the question is ? What is specific in ABI related to > > > locks ? > > > > Libgpg-error abstracts the native lock interface and thus needs to get > > some information on the actual implementation. It can very well be the > > case that the big-endian ABI is different from the little endian ABI. > > In particular the static initialization may be different; this is > > implemented in libgpg-error using a macro which may look like this > > > > #define GPGRT_LOCK_INITIALIZER {1,{{167,171,170,50,0,0,0,0, \ > > 0,0,0,0,0,0,0,0, \ > > 0,0,0,0,0,0,0,0, \ > > 0,0,0,0,0,0,0,0, \ > > 0,0,0,0,0,0,0,0, \ > > 0,0,0,0,0,0,0,0, \ > > 0,0,0,0,0,0,0,0, \ > > 0,0,0,0,0,0,0,0}}} > > > > This is an memory image and we can't make use of C data types because > > we don't know them. > > Well BE will certainly be different than LE. > Back to the original discussion, was the question about glibc vs. uClibc pthread > ABI ? Since they are different / independent implementations (even if uClibc is > sort of copy over from glibc) we can't guarantee that these would the same so each > would need a specific initializer I guess. That's what I've got for glibc case: -------------------------->8------------------------- ## lock-obj-pub.arc-buildroot-linux-gnu.h ## File created by gen-posix-lock-obj - DO NOT EDIT ## To be included by mkheader into gpg-error.h typedef struct { long _vers; union { volatile char _priv[24]; long _x_align; long *_xp_align; } u; } gpgrt_lock_t; #define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \ 0,0,0,0,0,0,0,0, \ 0,0,0,0,0,0,0,0}}} ## ## Local Variables: ## mode: c ## buffer-read-only: t ## End: ## -------------------------->8------------------------- I'd say it looks similar to uClibc version which is below as a reference: -------------------------->8------------------------- ## lock-obj-pub.arc-buildroot-linux-uclibc.h ## File created by gen-posix-lock-obj - DO NOT EDIT ## To be included by mkheader into gpg-error.h typedef struct { long _vers; union { volatile char _priv[24]; long _x_align; long *_xp_align; } u; } gpgrt_lock_t; #define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \ 0,0,0,0,0,0,0,0, \ 0,0,0,0,0,0,0,0}}} ## ## Local Variables: ## mode: c ## buffer-read-only: t ## End: ## -------------------------->8------------------------- -Alexey