[HACKERS] 10beta1/m68k: static assertion failed: "MAXALIGN too small to fitint32"

Поиск
Список
Период
Сортировка
От Christoph Berg
Тема [HACKERS] 10beta1/m68k: static assertion failed: "MAXALIGN too small to fitint32"
Дата
Msg-id 20170517193957.fwntkgi6epuso5l2@msg.df7cb.de
обсуждение исходный текст
Ответы Re: [HACKERS] 10beta1/m68k: static assertion failed: "MAXALIGN toosmall to fit int32"  (Heikki Linnakangas <hlinnaka@iki.fi>)
Список pgsql-hackers
Not sure if a lot of people still care about m68k, but it's still one
of the unofficial Debian ports (it used to be the first non-x86 port
done decades ago):

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute
-Wformat-security-fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -g -O2
-fdebug-prefix-map=/<<PKGBUILDDIR>>=.-fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/mit-krb5
-no-pie-I../../../../src/include -I/<<PKGBUILDDIR>>/build/../src/include -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE
-I/usr/include/libxml2 -I/usr/include/tcl8.6   -c -o slab.o /<<PKGBUILDDIR>>/build/../src/backend/utils/mmgr/slab.c
 
In file included from /<<PKGBUILDDIR>>/build/../src/include/postgres.h:47:0,                from
/<<PKGBUILDDIR>>/build/../src/backend/utils/mmgr/slab.c:53:
/<<PKGBUILDDIR>>/build/../src/backend/utils/mmgr/slab.c: In function 'SlabContextCreate':
/<<PKGBUILDDIR>>/build/../src/include/c.h:753:7: error: static assertion failed: "MAXALIGN too small to fit int32" do {
_Static_assert(condition,errmessage); } while(0)      ^
 
/<<PKGBUILDDIR>>/build/../src/backend/utils/mmgr/slab.c:198:2: note: in expansion of macro 'StaticAssertStmt'
StaticAssertStmt(MAXIMUM_ALIGNOF>= sizeof(int), ^~~~~~~~~~~~~~~~
 
<builtin>: recipe for target 'slab.o' failed
make[5]: *** [slab.o] Error 1


The code there is:

/** SlabContextCreate*      Create a new Slab context.** parent: parent context, or NULL if top-level context* name:
nameof context (for debugging --- string will be copied)* blockSize: allocation block size* chunkSize: allocation chunk
size**The chunkSize may not exceed:*      MAXALIGN_DOWN(SIZE_MAX) - MAXALIGN(sizeof(SlabBlock)) - SLAB_CHUNKHDRSZ**/
 
MemoryContext
SlabContextCreate(MemoryContext parent,                 const char *name,                 Size blockSize,
 Size chunkSize)
 
{   int         chunksPerBlock;   Size        fullChunkSize;   Size        freelistSize;   SlabContext *slab;
   StaticAssertStmt(offsetof(SlabChunk, slab) +sizeof(MemoryContext) ==                    MAXALIGN(sizeof(SlabChunk)),
                  "padding calculation in SlabChunk is wrong");
 
   /* otherwise the linked list inside freed chunk isn't guaranteed to fit */   StaticAssertStmt(MAXIMUM_ALIGNOF >=
sizeof(int),                   "MAXALIGN too small to fit int32");
 
   /* chunk, including SLAB header (both addresses nicely aligned) */   fullChunkSize = MAXALIGN(sizeof(SlabChunk) +
MAXALIGN(chunkSize));


I don't have the pg_config.h file at hand, but the 9.6 version has
this:

/* The normal alignment of `double', in bytes. */
#define ALIGNOF_DOUBLE 2

/* The normal alignment of `int', in bytes. */
#define ALIGNOF_INT 2

/* The normal alignment of `long', in bytes. */
#define ALIGNOF_LONG 2

/* The normal alignment of `long long int', in bytes. */
#define ALIGNOF_LONG_LONG_INT 2

/* The normal alignment of `short', in bytes. */
#define ALIGNOF_SHORT 2

/* Define as the maximum alignment requirement of any C data type. */
#define MAXIMUM_ALIGNOF 2


I don't think anyone is actually going to run a PG server on m68k, but
the same source package is building libpq5, which is not dispensable.

Christoph



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: [HACKERS] Hash Functions
Следующее
От: Piotr Stefaniak
Дата:
Сообщение: Re: pgindent (was Re: [HACKERS] [COMMITTERS] pgsql: Preventivemaintenance in advance of pgindent run.)