[PATCH libgpg-error] syscfg: Add ARC architecture

Alexey Brodkin Alexey.Brodkin at synopsys.com
Wed Sep 19 22:53:40 CEST 2018


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


More information about the Gnupg-devel mailing list