[libvirt] alignment of data fields when compiling with mingwin

Matthias Bolte matthias.bolte at googlemail.com
Sun Oct 17 10:04:06 UTC 2010


2010/10/15  <arnaud.champion at devatom.fr>:
> Hi,
>
> I'm currently working on libvirt csharp bindings, and I have some trouble
> with virConnectOpenAuth marshaling.
> I need to know what is the alignment of data fields in structure when
> compiling with mingwin.
> Anyone know that ?
>
> cheers,
>
> Arnaud Champion
>

Why do you need to know the alignment? Do you need to build or access
members of the virConnectCredential or virConnectAuth structs by
offset in memory?

The Wikipedia article about data structure alignment might be helpful
when you really need to care about alignment.

If you actually need the offset of the members in those structs you
can just use the offsetof macro and let the compiler tell you:

#include <stdio.h>
#include <stddef.h>
#include <libvirt/libvirt.h>

void main(void)
{
    printf("virConnectCredential\n");
    printf("  type      %2u\n", offsetof(virConnectCredential, type));
    printf("  prompt    %2u\n", offsetof(virConnectCredential, prompt));
    printf("  challenge %2u\n", offsetof(virConnectCredential, challenge));
    printf("  defresult %2u\n", offsetof(virConnectCredential, defresult));
    printf("  result    %2u\n", offsetof(virConnectCredential, result));
    printf("  resultlen %2u\n", offsetof(virConnectCredential, resultlen));
    printf("\n");
    printf("virConnectAuth\n");
    printf("  credtype  %2u\n", offsetof(virConnectAuth, credtype));
    printf("  ncredtype %2u\n", offsetof(virConnectAuth, ncredtype));
    printf("  cb        %2u\n", offsetof(virConnectAuth, cb));
    printf("  cbdata    %2u\n", offsetof(virConnectAuth, cbdata));
}


Output on x86:

virConnectCredential
  type       0
  prompt     4
  challenge  8
  defresult 12
  result    16
  resultlen 20

virConnectAuth
  credtype   0
  ncredtype  4
  cb         8
  cbdata    12


Output on x86_64:

virConnectCredential
  type       0
  prompt     8
  challenge 16
  defresult 24
  result    32
  resultlen 40

virConnectAuth
  credtype   0
  ncredtype  8
  cb        16
  cbdata    24

[1] http://en.wikipedia.org/wiki/Data_structure_alignment#Typical_alignment_of_C_structs_on_x86

Matthias




More information about the libvir-list mailing list