diff options
| author | Daniel Isaksen <d@duniel.no> | 2019-06-08 16:08:28 +0000 |
|---|---|---|
| committer | Natanael Copa <ncopa@alpinelinux.org> | 2019-06-10 09:21:58 +0000 |
| commit | 0ab839af36e71914fb2da45786aa2d88fbe033cf (patch) | |
| tree | f6adc2209da2836955b339c5c48d860d5b89ad70 /main/syslinux/0018-prevent-pow-optimization.patch | |
| parent | c0d166d5b136bc5aca00381cd0d30c180f0c888b (diff) | |
| download | aports-0ab839af36e71914fb2da45786aa2d88fbe033cf.tar.bz2 aports-0ab839af36e71914fb2da45786aa2d88fbe033cf.tar.xz | |
main/syslinux: Apply Debian's patch to fix HDT.
With the current GCC 8.2.0 from Debian, a section of code calling pow() in
zzjson_parse.c is turned into a sequence calling exp(). Since no exp()
implementation is available in syslinux those optimizations need to be
disabled.
Closes #10546
Diffstat (limited to 'main/syslinux/0018-prevent-pow-optimization.patch')
| -rw-r--r-- | main/syslinux/0018-prevent-pow-optimization.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/main/syslinux/0018-prevent-pow-optimization.patch b/main/syslinux/0018-prevent-pow-optimization.patch new file mode 100644 index 0000000000..0c42c7bbb3 --- /dev/null +++ b/main/syslinux/0018-prevent-pow-optimization.patch @@ -0,0 +1,36 @@ +From: Lukas Schwaighofer <lukas@schwaighofer.name> +Date: Tue, 26 Feb 2019 23:13:58 +0100 +Subject: Prevent optimizing the pow() function + +With the current GCC 8.2.0 from Debian, a section of code calling pow() in +zzjson_parse.c is turned into a sequence calling exp(). Since no exp() +implementation is available in syslinux those optimizations need to be +disabled. +--- + com32/gpllib/zzjson/zzjson_parse.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/com32/gpllib/zzjson/zzjson_parse.c b/com32/gpllib/zzjson/zzjson_parse.c +index ecb6f61..e66a9d8 100644 +--- a/com32/gpllib/zzjson/zzjson_parse.c ++++ b/com32/gpllib/zzjson/zzjson_parse.c +@@ -138,6 +138,10 @@ static ZZJSON *parse_string2(ZZJSON_CONFIG *config) { + return zzjson; + } + ++static double __attribute__((optimize("O0"))) pow_noopt(double x, double y) { ++ return pow(x, y); ++} ++ + static ZZJSON *parse_number(ZZJSON_CONFIG *config) { + ZZJSON *zzjson; + unsigned long long ival = 0, expo = 0; +@@ -213,7 +217,7 @@ skipexpo: + if (dbl) { + dval = sign * (long long) ival; + dval += sign * frac; +- dval *= pow(10.0, (double) signexpo * expo); ++ dval *= pow_noopt(10.0, (double) signexpo * expo); + } + + zzjson = config->calloc(1, sizeof(ZZJSON)); |
