Re: Fix misaligned access of ItemPointerData on ARM

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Fix misaligned access of ItemPointerData on ARM
Дата
Msg-id 1957.1432238903@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Fix misaligned access of ItemPointerData on ARM  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Fix misaligned access of ItemPointerData on ARM  (Andrew Dunstan <andrew@dunslane.net>)
Re: Fix misaligned access of ItemPointerData on ARM  (Piotr Stefaniak <postgres@piotr-stefaniak.me>)
Список pgsql-hackers
I wrote:
> But BlockIdData is laid out and accessed as two 16-bit fields, so there
> should be no problem.  On what platform exactly do you see a failure?

Ah, after reading the gcc manual a bit more closely, I get the point.
For some reason I think we assumed that "packed" would not result in
misaligning the struct overall, but it clearly could do so, with possible
efficiency consequences on hardware that doesn't like misaligned accesses.

If the compiler accepts __attribute__((aligned)) then what you've done is
clearly better.  It's not clear to me whether all compilers that accept
"packed" also accept "aligned", but there are enough ARM machines in the
buildfarm that we could hope that we'll find out if this isn't portable.

I wonder whether we should drop the ARM assumption and instead write

#if defined(pg_attribute_packed) && defined(pg_attribute_aligned)
pg_attribute_packed()
pg_attribute_aligned(2)
#endif

so that the annotations are applied on every compiler that accepts them.
        regards, tom lane



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

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Fix misaligned access of ItemPointerData on ARM
Следующее
От: Simon Riggs
Дата:
Сообщение: Re: INSERT ... ON CONFLICT DO UPDATE with _any_ constraint