mirror of
https://github.com/openssl/openssl.git
synced 2025-04-06 20:20:50 +08:00
s390xcap.c: Avoid copying structure on initialization
This is problematic on old compilers. It also avoids duplicating the read-only data. Reviewed-by: Todd Short <todd.short@me.com> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21284) (cherry picked from commit 0dee3b0421047354abd0b70cedd4c1bceaf323b0)
This commit is contained in:
parent
64aa8eaf12
commit
32d2b5fdd9
@ -57,14 +57,16 @@
|
||||
cap->NAME[1] = ~cap->NAME[1]; \
|
||||
}
|
||||
|
||||
#define TOK_CPU(NAME) \
|
||||
#define TOK_CPU_ALIAS(NAME, STRUCT_NAME) \
|
||||
(sscanf(tok_begin, \
|
||||
" %" STR(LEN) "s %" STR(LEN) "s ", \
|
||||
tok[0], tok[1]) == 1 \
|
||||
&& !strcmp(tok[0], #NAME)) { \
|
||||
memcpy(cap, &NAME, sizeof(*cap)); \
|
||||
memcpy(cap, &STRUCT_NAME, sizeof(*cap)); \
|
||||
}
|
||||
|
||||
#define TOK_CPU(NAME) TOK_CPU_ALIAS(NAME, NAME)
|
||||
|
||||
#ifndef OSSL_IMPLEMENT_GETAUXVAL
|
||||
static sigjmp_buf ill_jmp;
|
||||
static void ill_handler(int sig)
|
||||
@ -746,9 +748,8 @@ static int parse_env(struct OPENSSL_s390xcap_st *cap, int *cex)
|
||||
|
||||
/*-
|
||||
* z16 (2022) - z/Architecture POP
|
||||
* Implements MSA and MSA1-9 (same as z15).
|
||||
* Implements MSA and MSA1-9 (same as z15, no need to repeat).
|
||||
*/
|
||||
static const struct OPENSSL_s390xcap_st z16 = z15;
|
||||
|
||||
char *tok_begin, *tok_end, *buff, tok[S390X_STFLE_MAX][LEN + 1];
|
||||
int rc, off, i, n;
|
||||
@ -804,7 +805,7 @@ static int parse_env(struct OPENSSL_s390xcap_st *cap, int *cex)
|
||||
else if TOK_CPU(z13)
|
||||
else if TOK_CPU(z14)
|
||||
else if TOK_CPU(z15)
|
||||
else if TOK_CPU(z16)
|
||||
else if TOK_CPU_ALIAS(z16, z15)
|
||||
|
||||
/* nocex to deactivate cex support */
|
||||
else if (sscanf(tok_begin, " %" STR(LEN) "s %" STR(LEN) "s ",
|
||||
|
Loading…
x
Reference in New Issue
Block a user