/* APPLE LOCAL file Macintosh alignment */

/* { dg-do run } */
/* { dg-options "-Wno-long-long" } */

/*
 * GCC alignment test for bit-fields.
 * This came up initially as an alignment problem in the kernel.
 * Fred Forsman
 * Apple Computer, Inc.
 */
 
 /* Check whether we are testing GCC 3 or later.  */
#ifdef __GNUC__
#if __GNUC__ >= 3
#define GCC3 1
#else
#define GCC3 0
#endif
#endif

#include <stdio.h>
#include <stddef.h>
#include <string.h>

/*
 * The following defined determines whether we should compare against
 * the values produced by GCC 2.95 or against the values I expect given
 * my understanding of the alignment rules.
 */
#define USE_GCC2_VALUES 1

#define NAME2(name,mode) mode##_##name
#define NAME(name,mode) NAME2(name,mode)

#define STR(s) #s
#define SIZEOF3(name) STR(sizeof(name)), sizeof(name)
#define SIZEOF2(name,mode) SIZEOF3(mode##_##name)
#define SIZEOF(name,mode) SIZEOF2(name,mode)

#define OFFSETOF3(name,field) STR(offsetof(name,field)), offsetof(name,field)
#define OFFSETOF2(name,mode,field) OFFSETOF3(mode##_##name,field)
#define OFFSETOF(name,mode,field) OFFSETOF2(name,mode,field)

typedef unsigned char UINT8;
typedef unsigned long UINT32;

static int bad_option = 0;
static int flag_verbose = 0;
static int nbr_failures = 0;

/* === mac68k alignment problem in kernel === */

typedef unsigned PEF_UBits32, ByteCount;
typedef short SInt16;

/* === power === */
#pragma options align=power
#define MODE power
#include "align-test-4.h"

#ifndef __LP64__
/* === mac68k === */
#pragma options align=mac68k
#undef MODE
#define MODE mac68k
#include "align-test-4.h"
#endif

/* === pack(2) === */
#pragma pack(2)
#undef MODE
#define MODE pack2
#include "align-test-4.h"


static void check(char * rec_name, int actual, int expected32, int expected64,
		  int expected_ia32, char * comment)
{
    int expected;
#ifdef __i386__
    expected = expected_ia32;
#else
    expected = ((sizeof(char *) == 8) ? expected64 : expected32);
#endif
    if (flag_verbose || (actual != expected)) {
        printf("%-30s = %2d (%2d) ", rec_name, actual, expected);
        if (actual != expected) {
            printf("*** FAIL");
            nbr_failures++;
        } else
            printf("    PASS");
        printf(": %s\n", comment);
    }
}

static void check_option(char *option)
{
    if (*option == '-') {
        if (strcmp(option, "-v") == 0)
            flag_verbose = 1;
        else {
            fprintf(stderr, "*** unrecognized option '%s'.\n", option);
            bad_option = 1;
        }
    } else {
        fprintf(stderr, "*** unrecognized option '%s'.\n", option);
        bad_option = 1;
    }
}

int main(int argc, char *argv[])
{
    int i;
    
    for (i = 1; i < argc; i++)
        check_option(argv[i]);
    
    if (bad_option)
        return 1;

#undef MODE
#define MODE power

#if USE_GCC2_VALUES
    check(SIZEOF(LoaderExport, MODE), 12, 12, 12, "kernel struct");
    check(OFFSETOF(LoaderExport, MODE, offset), 4, 4, 4, "offset of offset");
    check(OFFSETOF(LoaderExport, MODE, sectionNumber), 8, 8, 8, "offset of sectionNumber");
    check(SIZEOF(S1, MODE), 8, 8, 8, "bitfields & char");
    check(SIZEOF(S2, MODE), 8, 8, 8, "int & char");
    check(SIZEOF(S3, MODE), 12, 12, 12, "char, bitfields(32), char");
    check(OFFSETOF(S3, MODE, f3), 8, 8, 8, "offset of 2nd char");
    check(SIZEOF(S4, MODE), 8, 8, 8, "char, bitfields(32), char");
    check(OFFSETOF(S4, MODE, f3), 7, 7, 7, "offset of 2nd char");
    check(SIZEOF(S5, MODE), 4, 4, 4, "char, bitfields(16), char");
    check(OFFSETOF(S5, MODE, f3), 3, 3, 3, "offset of 2nd char");
    check(SIZEOF(S6, MODE), 4, 4, 4, "char, bitfields(8), char");
    check(OFFSETOF(S6, MODE, f3), 2, 2, 2, "offset of 2nd char");
#else
    check(SIZEOF(LoaderExport, MODE), 12, 12, "kernel struct");
    check(OFFSETOF(LoaderExport, MODE, offset), 4, 4, "offset of offset");
    check(OFFSETOF(LoaderExport, MODE, sectionNumber), 8, 8, "offset of sectionNumber");
    check(SIZEOF(S1, MODE), 8, 8, "bitfields & char");
    check(SIZEOF(S2, MODE), 8, 8, "int & char");
    check(SIZEOF(S3, MODE), 12, 12, "char, bitfields(32), char");
    check(OFFSETOF(S3, MODE, f3), 8, 8, "offset of 2nd char");
    check(SIZEOF(S4, MODE), 12, 12, "char, bitfields(32), char");
    check(OFFSETOF(S4, MODE, f3), 8, 8, "offset of 2nd char");
    check(SIZEOF(S5, MODE), 12, 12, "char, bitfields(16), char");
    check(OFFSETOF(S5, MODE, f3), 8, 8, "offset of 2nd char");
    check(SIZEOF(S6, MODE), 12, 12, "char, bitfields(8), char");
    check(OFFSETOF(S6, MODE, f3), 8, 8, "offset of 2nd char");
#endif

#ifndef __LP64__
#undef MODE
#define MODE mac68k

#if USE_GCC2_VALUES
    check(SIZEOF(LoaderExport, MODE), 10, 10, 10, "kernel struct");
    check(OFFSETOF(LoaderExport, MODE, offset), 4, 4, 4, "offset of offset");
    check(OFFSETOF(LoaderExport, MODE, sectionNumber), 8, 8, 8, "offset of sectionNumber");
#if 1
    // GCC 2 is wrong on the following.
    check(SIZEOF(S1, MODE), 6, 6, 6, "bitfields & char");
#else
    check(SIZEOF(S1, MODE), 8, 8, "bitfields & char");
#endif
    check(SIZEOF(S2, MODE), 6, 6, 6, "int & char");
    check(SIZEOF(S3, MODE), 6, 6, 6, "char, bitfields(32), char");
    check(OFFSETOF(S3, MODE, f3), 5, 5, 5, "offset of 2nd char");
    check(SIZEOF(S4, MODE), 6, 6, 6, "char, bitfields(32), char");
    check(OFFSETOF(S4, MODE, f3), 5, 5, 5, "offset of 2nd char");
    check(SIZEOF(S5, MODE), 4, 4, 4, "char, bitfields(16), char");
    check(OFFSETOF(S5, MODE, f3), 3, 3, 3, "offset of 2nd char");
    check(SIZEOF(S6, MODE), 4, 4, 4, "char, bitfields(8), char");
    check(OFFSETOF(S6, MODE, f3), 2, 2, 2, "offset of 2nd char");
#else
    check(SIZEOF(LoaderExport, MODE), 10, 10, "kernel struct");
    check(OFFSETOF(LoaderExport, MODE, offset), 4, 4, "offset of offset");
    check(OFFSETOF(LoaderExport, MODE, sectionNumber), 8, 8, "offset of sectionNumber");
    check(SIZEOF(S1, MODE), 6, 6, "bitfields & char");
    check(SIZEOF(S2, MODE), 6, 6, "int & char");
    check(SIZEOF(S3, MODE), 8, 8, "char, bitfields(32), char");
    check(OFFSETOF(S3, MODE, f3), 6, 6, "offset of 2nd char");
    check(SIZEOF(S4, MODE), 8, 8, "char, bitfields(32), char");
    check(OFFSETOF(S4, MODE, f3), 6, 6, "offset of 2nd char");
    check(SIZEOF(S5, MODE), 6, 6, "char, bitfields(16), char");
    check(OFFSETOF(S5, MODE, f3), 4, 4, "offset of 2nd char");
    check(SIZEOF(S6, MODE), 4, 4, "char, bitfields(8), char");
    check(OFFSETOF(S6, MODE, f3), 2, 2, "offset of 2nd char");
#endif
#endif /* n __LP64__ */

#undef MODE
#define MODE pack2

#if USE_GCC2_VALUES
    check(SIZEOF(LoaderExport, MODE), 10, 10, 10, "kernel struct");
    check(OFFSETOF(LoaderExport, MODE, offset), 4, 4, 4, "offset of offset");
    check(OFFSETOF(LoaderExport, MODE, sectionNumber), 8, 8, 8, "offset of sectionNumber");
    /* GCC2 used to have this as '8', but it should really be 6.  */
    check(SIZEOF(S1, MODE), 6, 6, 6, "bitfields & char");
    check(SIZEOF(S2, MODE), 6, 6, 6, "int & char");
    check(SIZEOF(S3, MODE), 6, 6, 6, "char, bitfields(32), char");
    check(OFFSETOF(S3, MODE, f3), 5, 5, 5, "offset of 2nd char");
    check(SIZEOF(S4, MODE), 6, 6, 6, "char, bitfields(32), char");
    check(OFFSETOF(S4, MODE, f3), 5, 5, 5, "offset of 2nd char");
    check(SIZEOF(S5, MODE), 4, 4, 4, "char, bitfields(16), char");
    check(OFFSETOF(S5, MODE, f3), 3, 3, 3, "offset of 2nd char");
    check(SIZEOF(S6, MODE), 4, 4, 4, "char, bitfields(8), char");
    check(OFFSETOF(S6, MODE, f3), 2, 2, 2, "offset of 2nd char");
#else
    check(SIZEOF(LoaderExport, MODE), 10, 10, "kernel struct");
    check(OFFSETOF(LoaderExport, MODE, offset), 4, 4, "offset of offset");
    check(OFFSETOF(LoaderExport, MODE, sectionNumber), 8, 8, "offset of sectionNumber");
    check(SIZEOF(S1, MODE), 6, 6, "bitfields & char");
    check(SIZEOF(S2, MODE), 6, 6, "int & char");
    check(SIZEOF(S3, MODE), 8, 8, "char, bitfields(32), char");
    check(OFFSETOF(S3, MODE, f3), 6, 6, "offset of 2nd char");
    check(SIZEOF(S4, MODE), 8, 8, "char, bitfields(32), char");
    check(OFFSETOF(S4, MODE, f3), 6, 6, "offset of 2nd char");
    check(SIZEOF(S5, MODE), 6, 6, "char, bitfields(16), char");
    check(OFFSETOF(S5, MODE, f3), 4, 4, "offset of 2nd char");
    check(SIZEOF(S6, MODE), 4, 4, "char, bitfields(8), char");
    check(OFFSETOF(S6, MODE, f3), 2, 2, "offset of 2nd char");
#endif

    if (nbr_failures > 0)
    	return 1;
    else
    	return 0;
}
