mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
Further improve code for probing the availability of ARM CRC instructions.
Andrew Gierth pointed out that commit 1c72ec6f4 would yield the wrong
answer on big-endian ARM systems, because the data being CRC'd would be
different. To fix that, and avoid the rather unsightly hard-wired
constant, simply compare the hardware and software implementations'
results.
While we're at it, also log the resulting decision at DEBUG1, and error
out if the hw and sw results unexpectedly differ. Also, since this
file must compile for both frontend and backend, avoid incorrect
dependencies on backend-only headers.
In passing, add a comment to postmaster.c about when the CRC function
pointer will get initialized.
Thomas Munro, based on complaints from Andrew Gierth and Tom Lane
Discussion: https://postgr.es/m/HE1PR0801MB1323D171938EABC04FFE7FA9E3110@HE1PR0801MB1323.eurprd08.prod.outlook.com
This commit is contained in:
@@ -957,7 +957,15 @@ PostmasterMain(int argc, char *argv[])
|
||||
*/
|
||||
CreateDataDirLockFile(true);
|
||||
|
||||
/* read control file (error checking and contains config) */
|
||||
/*
|
||||
* Read the control file (for error checking and config info).
|
||||
*
|
||||
* Since we verify the control file's CRC, this has a useful side effect
|
||||
* on machines where we need a run-time test for CRC support instructions.
|
||||
* The postmaster will do the test once at startup, and then its child
|
||||
* processes will inherit the correct function pointer and not need to
|
||||
* repeat the test.
|
||||
*/
|
||||
LocalProcessControlFile(false);
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user