mirror of https://github.com/openssl/openssl.git
crypto/bio: drop float formating for UEFI
Using floating point is not supported in UEFI and can cause build problems, for example due to SSE being disabled and x64 calling convention passing floats in SSE registers. Avoid those problems by not compiling the formating code for floating point numbers. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/17547)
This commit is contained in:
parent
619c9bad41
commit
f59d72f027
|
@ -13,6 +13,7 @@
|
||||||
#include "crypto/ctype.h"
|
#include "crypto/ctype.h"
|
||||||
#include "internal/numbers.h"
|
#include "internal/numbers.h"
|
||||||
#include <openssl/bio.h>
|
#include <openssl/bio.h>
|
||||||
|
#include <openssl/configuration.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright Patrick Powell 1995
|
* Copyright Patrick Powell 1995
|
||||||
|
@ -31,8 +32,10 @@ static int fmtstr(char **, char **, size_t *, size_t *,
|
||||||
const char *, int, int, int);
|
const char *, int, int, int);
|
||||||
static int fmtint(char **, char **, size_t *, size_t *,
|
static int fmtint(char **, char **, size_t *, size_t *,
|
||||||
int64_t, int, int, int, int);
|
int64_t, int, int, int, int);
|
||||||
|
#ifndef OPENSSL_SYS_UEFI
|
||||||
static int fmtfp(char **, char **, size_t *, size_t *,
|
static int fmtfp(char **, char **, size_t *, size_t *,
|
||||||
LDOUBLE, int, int, int, int);
|
LDOUBLE, int, int, int, int);
|
||||||
|
#endif
|
||||||
static int doapr_outch(char **, char **, size_t *, size_t *, int);
|
static int doapr_outch(char **, char **, size_t *, size_t *, int);
|
||||||
static int _dopr(char **sbuffer, char **buffer,
|
static int _dopr(char **sbuffer, char **buffer,
|
||||||
size_t *maxlen, size_t *retlen, int *truncated,
|
size_t *maxlen, size_t *retlen, int *truncated,
|
||||||
|
@ -88,7 +91,9 @@ _dopr(char **sbuffer,
|
||||||
{
|
{
|
||||||
char ch;
|
char ch;
|
||||||
int64_t value;
|
int64_t value;
|
||||||
|
#ifndef OPENSSL_SYS_UEFI
|
||||||
LDOUBLE fvalue;
|
LDOUBLE fvalue;
|
||||||
|
#endif
|
||||||
char *strvalue;
|
char *strvalue;
|
||||||
int min;
|
int min;
|
||||||
int max;
|
int max;
|
||||||
|
@ -259,6 +264,7 @@ _dopr(char **sbuffer,
|
||||||
min, max, flags))
|
min, max, flags))
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
#ifndef OPENSSL_SYS_UEFI
|
||||||
case 'f':
|
case 'f':
|
||||||
if (cflags == DP_C_LDOUBLE)
|
if (cflags == DP_C_LDOUBLE)
|
||||||
fvalue = va_arg(args, LDOUBLE);
|
fvalue = va_arg(args, LDOUBLE);
|
||||||
|
@ -292,6 +298,16 @@ _dopr(char **sbuffer,
|
||||||
flags, G_FORMAT))
|
flags, G_FORMAT))
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
#else
|
||||||
|
case 'f':
|
||||||
|
case 'E':
|
||||||
|
case 'e':
|
||||||
|
case 'G':
|
||||||
|
case 'g':
|
||||||
|
/* not implemented for UEFI */
|
||||||
|
ERR_raise(ERR_LIB_BIO, ERR_R_UNSUPPORTED);
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
case 'c':
|
case 'c':
|
||||||
if (!doapr_outch(sbuffer, buffer, &currlen, maxlen,
|
if (!doapr_outch(sbuffer, buffer, &currlen, maxlen,
|
||||||
va_arg(args, int)))
|
va_arg(args, int)))
|
||||||
|
@ -512,6 +528,8 @@ fmtint(char **sbuffer,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef OPENSSL_SYS_UEFI
|
||||||
|
|
||||||
static LDOUBLE abs_val(LDOUBLE value)
|
static LDOUBLE abs_val(LDOUBLE value)
|
||||||
{
|
{
|
||||||
LDOUBLE result = value;
|
LDOUBLE result = value;
|
||||||
|
@ -807,6 +825,8 @@ fmtfp(char **sbuffer,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* OPENSSL_SYS_UEFI */
|
||||||
|
|
||||||
#define BUFFER_INC 1024
|
#define BUFFER_INC 1024
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Reference in New Issue