From bcec667ee3fc9eabd667fd2d3eb9278a00e48e78 Mon Sep 17 00:00:00 2001 From: Raven Date: Tue, 7 May 2024 16:56:52 +0600 Subject: [PATCH] rx-libjpeg-turbo: import from SRPM; update to 3.0.2 --- base/rx-libjpeg-turbo/libjpeg-turbo-CET.patch | 1248 +++++++++++++++++ .../libjpeg-turbo-cmake.patch | 33 + base/rx-libjpeg-turbo/libjpeg-turbo.spec | 508 +++++++ 3 files changed, 1789 insertions(+) create mode 100644 base/rx-libjpeg-turbo/libjpeg-turbo-CET.patch create mode 100644 base/rx-libjpeg-turbo/libjpeg-turbo-cmake.patch create mode 100644 base/rx-libjpeg-turbo/libjpeg-turbo.spec diff --git a/base/rx-libjpeg-turbo/libjpeg-turbo-CET.patch b/base/rx-libjpeg-turbo/libjpeg-turbo-CET.patch new file mode 100644 index 0000000..75e0cea --- /dev/null +++ b/base/rx-libjpeg-turbo/libjpeg-turbo-CET.patch @@ -0,0 +1,1248 @@ +From db1afe88c361ceea22c6ac8abdb9b0ff41a39aa2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Nikola=20Forr=C3=B3?= +Date: Mon, 15 Apr 2019 16:56:45 +0200 +Subject: [PATCH] x86 SIMD: Add endbr32/endbr64 instructions +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Allow for indirect branch tracking with Intel CET (Control-Flow +Enforcement Technology) [1], by making all exported routines a possible +target for an indirect jump. + +Signed-off-by: Nikola Forró + +[1] https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf +--- + simd/i386/jccolext-avx2.asm | 1 + + simd/i386/jccolext-mmx.asm | 1 + + simd/i386/jccolext-sse2.asm | 1 + + simd/i386/jcgryext-avx2.asm | 1 + + simd/i386/jcgryext-mmx.asm | 1 + + simd/i386/jcgryext-sse2.asm | 1 + + simd/i386/jchuff-sse2.asm | 1 + + simd/i386/jcphuff-sse2.asm | 2 ++ + simd/i386/jcsample-avx2.asm | 2 ++ + simd/i386/jcsample-mmx.asm | 2 ++ + simd/i386/jcsample-sse2.asm | 2 ++ + simd/i386/jdcolext-avx2.asm | 1 + + simd/i386/jdcolext-mmx.asm | 1 + + simd/i386/jdcolext-sse2.asm | 1 + + simd/i386/jdmrgext-avx2.asm | 2 ++ + simd/i386/jdmrgext-mmx.asm | 2 ++ + simd/i386/jdmrgext-sse2.asm | 2 ++ + simd/i386/jdsample-avx2.asm | 4 ++++ + simd/i386/jdsample-mmx.asm | 4 ++++ + simd/i386/jdsample-sse2.asm | 4 ++++ + simd/i386/jfdctflt-3dn.asm | 1 + + simd/i386/jfdctflt-sse.asm | 1 + + simd/i386/jfdctfst-mmx.asm | 1 + + simd/i386/jfdctfst-sse2.asm | 1 + + simd/i386/jfdctint-avx2.asm | 1 + + simd/i386/jfdctint-mmx.asm | 1 + + simd/i386/jfdctint-sse2.asm | 1 + + simd/i386/jidctflt-3dn.asm | 1 + + simd/i386/jidctflt-sse.asm | 1 + + simd/i386/jidctflt-sse2.asm | 1 + + simd/i386/jidctfst-mmx.asm | 1 + + simd/i386/jidctfst-sse2.asm | 1 + + simd/i386/jidctint-avx2.asm | 1 + + simd/i386/jidctint-mmx.asm | 1 + + simd/i386/jidctint-sse2.asm | 1 + + simd/i386/jidctred-mmx.asm | 2 ++ + simd/i386/jidctred-sse2.asm | 2 ++ + simd/i386/jquant-3dn.asm | 2 ++ + simd/i386/jquant-mmx.asm | 2 ++ + simd/i386/jquant-sse.asm | 2 ++ + simd/i386/jquantf-sse2.asm | 2 ++ + simd/i386/jquanti-avx2.asm | 2 ++ + simd/i386/jquanti-sse2.asm | 2 ++ + simd/nasm/jsimdext.inc | 8 ++++++++ + simd/x86_64/jccolext-avx2.asm | 1 + + simd/x86_64/jccolext-sse2.asm | 1 + + simd/x86_64/jcgryext-avx2.asm | 1 + + simd/x86_64/jcgryext-sse2.asm | 1 + + simd/x86_64/jchuff-sse2.asm | 1 + + simd/x86_64/jcphuff-sse2.asm | 2 ++ + simd/x86_64/jcsample-avx2.asm | 2 ++ + simd/x86_64/jcsample-sse2.asm | 2 ++ + simd/x86_64/jdcolext-avx2.asm | 1 + + simd/x86_64/jdcolext-sse2.asm | 1 + + simd/x86_64/jdmrgext-avx2.asm | 2 ++ + simd/x86_64/jdmrgext-sse2.asm | 2 ++ + simd/x86_64/jdsample-avx2.asm | 4 ++++ + simd/x86_64/jdsample-sse2.asm | 4 ++++ + simd/x86_64/jfdctflt-sse.asm | 1 + + simd/x86_64/jfdctfst-sse2.asm | 1 + + simd/x86_64/jfdctint-avx2.asm | 1 + + simd/x86_64/jfdctint-sse2.asm | 1 + + simd/x86_64/jidctflt-sse2.asm | 1 + + simd/x86_64/jidctfst-sse2.asm | 1 + + simd/x86_64/jidctint-avx2.asm | 1 + + simd/x86_64/jidctint-sse2.asm | 1 + + simd/x86_64/jidctred-sse2.asm | 2 ++ + simd/x86_64/jquantf-sse2.asm | 2 ++ + simd/x86_64/jquanti-avx2.asm | 2 ++ + simd/x86_64/jquanti-sse2.asm | 2 ++ + 70 files changed, 116 insertions(+) + +diff --git a/simd/i386/jccolext-avx2.asm b/simd/i386/jccolext-avx2.asm +index c46d684..7dc6e08 100644 +--- a/simd/i386/jccolext-avx2.asm ++++ b/simd/i386/jccolext-avx2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_avx2) + + EXTN(jsimd_rgb_ycc_convert_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jccolext-mmx.asm b/simd/i386/jccolext-mmx.asm +index 6357a42..8048abb 100644 +--- a/simd/i386/jccolext-mmx.asm ++++ b/simd/i386/jccolext-mmx.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_mmx) + + EXTN(jsimd_rgb_ycc_convert_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jccolext-sse2.asm b/simd/i386/jccolext-sse2.asm +index c6c8085..5307ddc 100644 +--- a/simd/i386/jccolext-sse2.asm ++++ b/simd/i386/jccolext-sse2.asm +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_sse2) + + EXTN(jsimd_rgb_ycc_convert_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jcgryext-avx2.asm b/simd/i386/jcgryext-avx2.asm +index 3fa7973..27a0e11 100644 +--- a/simd/i386/jcgryext-avx2.asm ++++ b/simd/i386/jcgryext-avx2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_avx2) + + EXTN(jsimd_rgb_gray_convert_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jcgryext-mmx.asm b/simd/i386/jcgryext-mmx.asm +index 8af42e5..dda0e05 100644 +--- a/simd/i386/jcgryext-mmx.asm ++++ b/simd/i386/jcgryext-mmx.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_mmx) + + EXTN(jsimd_rgb_gray_convert_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jcgryext-sse2.asm b/simd/i386/jcgryext-sse2.asm +index c9d6ff1..f8835bb 100644 +--- a/simd/i386/jcgryext-sse2.asm ++++ b/simd/i386/jcgryext-sse2.asm +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_sse2) + + EXTN(jsimd_rgb_gray_convert_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jchuff-sse2.asm b/simd/i386/jchuff-sse2.asm +index 76cc85f..0217480 100644 +--- a/simd/i386/jchuff-sse2.asm ++++ b/simd/i386/jchuff-sse2.asm +@@ -350,6 +350,7 @@ times 1 << 14 db 15 + GLOBAL_FUNCTION(jsimd_huff_encode_one_block_sse2) + + EXTN(jsimd_huff_encode_one_block_sse2): ++ _endbr32 + + %assign stack_offset 0 + %define arg_state 4 + stack_offset +diff --git a/simd/i386/jcphuff-sse2.asm b/simd/i386/jcphuff-sse2.asm +index c26b48a..7fb01e5 100644 +--- a/simd/i386/jcphuff-sse2.asm ++++ b/simd/i386/jcphuff-sse2.asm +@@ -281,6 +281,7 @@ + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_first_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_first_prepare_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -460,6 +461,7 @@ EXTN(jsimd_encode_mcu_AC_first_prepare_sse2): + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_refine_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_refine_prepare_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jcsample-avx2.asm b/simd/i386/jcsample-avx2.asm +index 0a20802..46eba8c 100644 +--- a/simd/i386/jcsample-avx2.asm ++++ b/simd/i386/jcsample-avx2.asm +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_avx2) + + EXTN(jsimd_h2v1_downsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -216,6 +217,7 @@ EXTN(jsimd_h2v1_downsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_avx2) + + EXTN(jsimd_h2v2_downsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jcsample-mmx.asm b/simd/i386/jcsample-mmx.asm +index 2c223ee..b2b8ded 100644 +--- a/simd/i386/jcsample-mmx.asm ++++ b/simd/i386/jcsample-mmx.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_mmx) + + EXTN(jsimd_h2v1_downsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -185,6 +186,7 @@ EXTN(jsimd_h2v1_downsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_mmx) + + EXTN(jsimd_h2v2_downsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jcsample-sse2.asm b/simd/i386/jcsample-sse2.asm +index 4fea60d..4c22b40 100644 +--- a/simd/i386/jcsample-sse2.asm ++++ b/simd/i386/jcsample-sse2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_sse2) + + EXTN(jsimd_h2v1_downsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -198,6 +199,7 @@ EXTN(jsimd_h2v1_downsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_sse2) + + EXTN(jsimd_h2v2_downsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jdcolext-avx2.asm b/simd/i386/jdcolext-avx2.asm +index 015be04..b076765 100644 +--- a/simd/i386/jdcolext-avx2.asm ++++ b/simd/i386/jdcolext-avx2.asm +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_avx2) + + EXTN(jsimd_ycc_rgb_convert_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jdcolext-mmx.asm b/simd/i386/jdcolext-mmx.asm +index 5813cfc..150f5b6 100644 +--- a/simd/i386/jdcolext-mmx.asm ++++ b/simd/i386/jdcolext-mmx.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_mmx) + + EXTN(jsimd_ycc_rgb_convert_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jdcolext-sse2.asm b/simd/i386/jdcolext-sse2.asm +index d5572b3..cd3ac70 100644 +--- a/simd/i386/jdcolext-sse2.asm ++++ b/simd/i386/jdcolext-sse2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_sse2) + + EXTN(jsimd_ycc_rgb_convert_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jdmrgext-avx2.asm b/simd/i386/jdmrgext-avx2.asm +index e35f728..0db0aa4 100644 +--- a/simd/i386/jdmrgext-avx2.asm ++++ b/simd/i386/jdmrgext-avx2.asm +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_avx2) + + EXTN(jsimd_h2v1_merged_upsample_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -523,6 +524,7 @@ EXTN(jsimd_h2v1_merged_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_avx2) + + EXTN(jsimd_h2v2_merged_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jdmrgext-mmx.asm b/simd/i386/jdmrgext-mmx.asm +index eb3e36b..6427a1a 100644 +--- a/simd/i386/jdmrgext-mmx.asm ++++ b/simd/i386/jdmrgext-mmx.asm +@@ -40,6 +40,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_mmx) + + EXTN(jsimd_h2v1_merged_upsample_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -408,6 +409,7 @@ EXTN(jsimd_h2v1_merged_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_mmx) + + EXTN(jsimd_h2v2_merged_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jdmrgext-sse2.asm b/simd/i386/jdmrgext-sse2.asm +index c113dc4..6897fa1 100644 +--- a/simd/i386/jdmrgext-sse2.asm ++++ b/simd/i386/jdmrgext-sse2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_sse2) + + EXTN(jsimd_h2v1_merged_upsample_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -465,6 +466,7 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_sse2) + + EXTN(jsimd_h2v2_merged_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jdsample-avx2.asm b/simd/i386/jdsample-avx2.asm +index a800c35..7d52708 100644 +--- a/simd/i386/jdsample-avx2.asm ++++ b/simd/i386/jdsample-avx2.asm +@@ -60,6 +60,7 @@ PW_EIGHT times 16 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_avx2) + + EXTN(jsimd_h2v1_fancy_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +@@ -227,6 +228,7 @@ EXTN(jsimd_h2v1_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_avx2) + + EXTN(jsimd_h2v2_fancy_upsample_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -570,6 +572,7 @@ EXTN(jsimd_h2v2_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_avx2) + + EXTN(jsimd_h2v1_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -669,6 +672,7 @@ EXTN(jsimd_h2v1_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_avx2) + + EXTN(jsimd_h2v2_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jdsample-mmx.asm b/simd/i386/jdsample-mmx.asm +index 12c49f0..7f2ab40 100644 +--- a/simd/i386/jdsample-mmx.asm ++++ b/simd/i386/jdsample-mmx.asm +@@ -59,6 +59,7 @@ PW_EIGHT times 4 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_mmx) + + EXTN(jsimd_h2v1_fancy_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +@@ -217,6 +218,7 @@ EXTN(jsimd_h2v1_fancy_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_mmx) + + EXTN(jsimd_h2v2_fancy_upsample_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -541,6 +543,7 @@ EXTN(jsimd_h2v2_fancy_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_mmx) + + EXTN(jsimd_h2v1_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -640,6 +643,7 @@ EXTN(jsimd_h2v1_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_mmx) + + EXTN(jsimd_h2v2_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jdsample-sse2.asm b/simd/i386/jdsample-sse2.asm +index 4e28d2f..3311b25 100644 +--- a/simd/i386/jdsample-sse2.asm ++++ b/simd/i386/jdsample-sse2.asm +@@ -59,6 +59,7 @@ PW_EIGHT times 8 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_sse2) + + EXTN(jsimd_h2v1_fancy_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +@@ -216,6 +217,7 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_sse2) + + EXTN(jsimd_h2v2_fancy_upsample_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -538,6 +540,7 @@ EXTN(jsimd_h2v2_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_sse2) + + EXTN(jsimd_h2v1_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -635,6 +638,7 @@ EXTN(jsimd_h2v1_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_sse2) + + EXTN(jsimd_h2v2_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jfdctflt-3dn.asm b/simd/i386/jfdctflt-3dn.asm +index 322ab16..109e36e 100644 +--- a/simd/i386/jfdctflt-3dn.asm ++++ b/simd/i386/jfdctflt-3dn.asm +@@ -56,6 +56,7 @@ PD_1_306 times 2 dd 1.306562964876376527856643 + GLOBAL_FUNCTION(jsimd_fdct_float_3dnow) + + EXTN(jsimd_fdct_float_3dnow): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jfdctflt-sse.asm b/simd/i386/jfdctflt-sse.asm +index 86952c6..b1e0576 100644 +--- a/simd/i386/jfdctflt-sse.asm ++++ b/simd/i386/jfdctflt-sse.asm +@@ -67,6 +67,7 @@ PD_1_306 times 4 dd 1.306562964876376527856643 + GLOBAL_FUNCTION(jsimd_fdct_float_sse) + + EXTN(jsimd_fdct_float_sse): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jfdctfst-mmx.asm b/simd/i386/jfdctfst-mmx.asm +index 80645a5..be84fdb 100644 +--- a/simd/i386/jfdctfst-mmx.asm ++++ b/simd/i386/jfdctfst-mmx.asm +@@ -81,6 +81,7 @@ PW_F1306 times 4 dw F_1_306 << CONST_SHIFT + GLOBAL_FUNCTION(jsimd_fdct_ifast_mmx) + + EXTN(jsimd_fdct_ifast_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jfdctfst-sse2.asm b/simd/i386/jfdctfst-sse2.asm +index 446fa7a..945f9cf 100644 +--- a/simd/i386/jfdctfst-sse2.asm ++++ b/simd/i386/jfdctfst-sse2.asm +@@ -82,6 +82,7 @@ PW_F1306 times 8 dw F_1_306 << CONST_SHIFT + GLOBAL_FUNCTION(jsimd_fdct_ifast_sse2) + + EXTN(jsimd_fdct_ifast_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jfdctint-avx2.asm b/simd/i386/jfdctint-avx2.asm +index 23cf733..56acb63 100644 +--- a/simd/i386/jfdctint-avx2.asm ++++ b/simd/i386/jfdctint-avx2.asm +@@ -260,6 +260,7 @@ PW_1_NEG1 times 8 dw 1 + GLOBAL_FUNCTION(jsimd_fdct_islow_avx2) + + EXTN(jsimd_fdct_islow_avx2): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +diff --git a/simd/i386/jfdctint-mmx.asm b/simd/i386/jfdctint-mmx.asm +index 34a43b9..4d1e773 100644 +--- a/simd/i386/jfdctint-mmx.asm ++++ b/simd/i386/jfdctint-mmx.asm +@@ -102,6 +102,7 @@ PW_DESCALE_P2X times 4 dw 1 << (PASS1_BITS - 1) + GLOBAL_FUNCTION(jsimd_fdct_islow_mmx) + + EXTN(jsimd_fdct_islow_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jfdctint-sse2.asm b/simd/i386/jfdctint-sse2.asm +index 6f8e18c..3954c8f 100644 +--- a/simd/i386/jfdctint-sse2.asm ++++ b/simd/i386/jfdctint-sse2.asm +@@ -103,6 +103,7 @@ PW_DESCALE_P2X times 8 dw 1 << (PASS1_BITS - 1) + GLOBAL_FUNCTION(jsimd_fdct_islow_sse2) + + EXTN(jsimd_fdct_islow_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctflt-3dn.asm b/simd/i386/jidctflt-3dn.asm +index 8795191..eb49902 100644 +--- a/simd/i386/jidctflt-3dn.asm ++++ b/simd/i386/jidctflt-3dn.asm +@@ -65,6 +65,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_float_3dnow) + + EXTN(jsimd_idct_float_3dnow): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctflt-sse.asm b/simd/i386/jidctflt-sse.asm +index b27ecfd..ffe54f8 100644 +--- a/simd/i386/jidctflt-sse.asm ++++ b/simd/i386/jidctflt-sse.asm +@@ -75,6 +75,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_float_sse) + + EXTN(jsimd_idct_float_sse): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctflt-sse2.asm b/simd/i386/jidctflt-sse2.asm +index c646eae..fd1fe35 100644 +--- a/simd/i386/jidctflt-sse2.asm ++++ b/simd/i386/jidctflt-sse2.asm +@@ -75,6 +75,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_float_sse2) + + EXTN(jsimd_idct_float_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctfst-mmx.asm b/simd/i386/jidctfst-mmx.asm +index 24622d4..00940b8 100644 +--- a/simd/i386/jidctfst-mmx.asm ++++ b/simd/i386/jidctfst-mmx.asm +@@ -96,6 +96,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_ifast_mmx) + + EXTN(jsimd_idct_ifast_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctfst-sse2.asm b/simd/i386/jidctfst-sse2.asm +index 19704ff..1f4af33 100644 +--- a/simd/i386/jidctfst-sse2.asm ++++ b/simd/i386/jidctfst-sse2.asm +@@ -94,6 +94,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_ifast_sse2) + + EXTN(jsimd_idct_ifast_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctint-avx2.asm b/simd/i386/jidctint-avx2.asm +index 199c7df..2eb606a 100644 +--- a/simd/i386/jidctint-avx2.asm ++++ b/simd/i386/jidctint-avx2.asm +@@ -296,6 +296,7 @@ PW_1_NEG1 times 8 dw 1 + GLOBAL_FUNCTION(jsimd_idct_islow_avx2) + + EXTN(jsimd_idct_islow_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctint-mmx.asm b/simd/i386/jidctint-mmx.asm +index f15c8d3..2d91b7e 100644 +--- a/simd/i386/jidctint-mmx.asm ++++ b/simd/i386/jidctint-mmx.asm +@@ -109,6 +109,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_islow_mmx) + + EXTN(jsimd_idct_islow_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctint-sse2.asm b/simd/i386/jidctint-sse2.asm +index 43e3201..804be19 100644 +--- a/simd/i386/jidctint-sse2.asm ++++ b/simd/i386/jidctint-sse2.asm +@@ -107,6 +107,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_islow_sse2) + + EXTN(jsimd_idct_islow_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff --git a/simd/i386/jidctred-mmx.asm b/simd/i386/jidctred-mmx.asm +index e2307e1..cb43106 100644 +--- a/simd/i386/jidctred-mmx.asm ++++ b/simd/i386/jidctred-mmx.asm +@@ -117,6 +117,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_4x4_mmx) + + EXTN(jsimd_idct_4x4_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -504,6 +505,7 @@ EXTN(jsimd_idct_4x4_mmx): + GLOBAL_FUNCTION(jsimd_idct_2x2_mmx) + + EXTN(jsimd_idct_2x2_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jidctred-sse2.asm b/simd/i386/jidctred-sse2.asm +index 6e56494..2a61b9e 100644 +--- a/simd/i386/jidctred-sse2.asm ++++ b/simd/i386/jidctred-sse2.asm +@@ -115,6 +115,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_4x4_sse2) + + EXTN(jsimd_idct_4x4_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -425,6 +426,7 @@ EXTN(jsimd_idct_4x4_sse2): + GLOBAL_FUNCTION(jsimd_idct_2x2_sse2) + + EXTN(jsimd_idct_2x2_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff --git a/simd/i386/jquant-3dn.asm b/simd/i386/jquant-3dn.asm +index 5cb60ca..a0599eb 100644 +--- a/simd/i386/jquant-3dn.asm ++++ b/simd/i386/jquant-3dn.asm +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_3dnow) + + EXTN(jsimd_convsamp_float_3dnow): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -138,6 +139,7 @@ EXTN(jsimd_convsamp_float_3dnow): + GLOBAL_FUNCTION(jsimd_quantize_float_3dnow) + + EXTN(jsimd_quantize_float_3dnow): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jquant-mmx.asm b/simd/i386/jquant-mmx.asm +index 61305c6..080021b 100644 +--- a/simd/i386/jquant-mmx.asm ++++ b/simd/i386/jquant-mmx.asm +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_mmx) + + EXTN(jsimd_convsamp_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -145,6 +146,7 @@ EXTN(jsimd_convsamp_mmx): + GLOBAL_FUNCTION(jsimd_quantize_mmx) + + EXTN(jsimd_quantize_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jquant-sse.asm b/simd/i386/jquant-sse.asm +index 218adc9..cacd2a9 100644 +--- a/simd/i386/jquant-sse.asm ++++ b/simd/i386/jquant-sse.asm +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_sse) + + EXTN(jsimd_convsamp_float_sse): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -138,6 +139,7 @@ EXTN(jsimd_convsamp_float_sse): + GLOBAL_FUNCTION(jsimd_quantize_float_sse) + + EXTN(jsimd_quantize_float_sse): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jquantf-sse2.asm b/simd/i386/jquantf-sse2.asm +index a881ab5..6f4789c 100644 +--- a/simd/i386/jquantf-sse2.asm ++++ b/simd/i386/jquantf-sse2.asm +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_sse2) + + EXTN(jsimd_convsamp_float_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -115,6 +116,7 @@ EXTN(jsimd_convsamp_float_sse2): + GLOBAL_FUNCTION(jsimd_quantize_float_sse2) + + EXTN(jsimd_quantize_float_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jquanti-avx2.asm b/simd/i386/jquanti-avx2.asm +index 5ed6bec..efcddd2 100644 +--- a/simd/i386/jquanti-avx2.asm ++++ b/simd/i386/jquanti-avx2.asm +@@ -37,6 +37,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_avx2) + + EXTN(jsimd_convsamp_avx2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -130,6 +131,7 @@ EXTN(jsimd_convsamp_avx2): + GLOBAL_FUNCTION(jsimd_quantize_avx2) + + EXTN(jsimd_quantize_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/i386/jquanti-sse2.asm b/simd/i386/jquanti-sse2.asm +index 0a50940..98d39e0 100644 +--- a/simd/i386/jquanti-sse2.asm ++++ b/simd/i386/jquanti-sse2.asm +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_sse2) + + EXTN(jsimd_convsamp_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -121,6 +122,7 @@ EXTN(jsimd_convsamp_sse2): + GLOBAL_FUNCTION(jsimd_quantize_sse2) + + EXTN(jsimd_quantize_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff --git a/simd/nasm/jsimdext.inc b/simd/nasm/jsimdext.inc +index bebcb20..4b0cd69 100644 +--- a/simd/nasm/jsimdext.inc ++++ b/simd/nasm/jsimdext.inc +@@ -513,6 +513,14 @@ const_base: + + %endif + ++%imacro _endbr32 0 ++ dd 0xfb1e0ff3 ++%endmacro ++ ++%imacro _endbr64 0 ++ dd 0xfa1e0ff3 ++%endmacro ++ + ; -------------------------------------------------------------------------- + ; Defines picked up from the C headers + ; +diff --git a/simd/x86_64/jccolext-avx2.asm b/simd/x86_64/jccolext-avx2.asm +index dd7ea39..e6c8283 100644 +--- a/simd/x86_64/jccolext-avx2.asm ++++ b/simd/x86_64/jccolext-avx2.asm +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_avx2) + + EXTN(jsimd_rgb_ycc_convert_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jccolext-sse2.asm b/simd/x86_64/jccolext-sse2.asm +index bc1e817..4bb1af6 100644 +--- a/simd/x86_64/jccolext-sse2.asm ++++ b/simd/x86_64/jccolext-sse2.asm +@@ -40,6 +40,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_sse2) + + EXTN(jsimd_rgb_ycc_convert_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jcgryext-avx2.asm b/simd/x86_64/jcgryext-avx2.asm +index c8c8d12..12ecb7e 100644 +--- a/simd/x86_64/jcgryext-avx2.asm ++++ b/simd/x86_64/jcgryext-avx2.asm +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_avx2) + + EXTN(jsimd_rgb_gray_convert_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jcgryext-sse2.asm b/simd/x86_64/jcgryext-sse2.asm +index 7e5a0f2..e3a2413 100644 +--- a/simd/x86_64/jcgryext-sse2.asm ++++ b/simd/x86_64/jcgryext-sse2.asm +@@ -40,6 +40,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_sse2) + + EXTN(jsimd_rgb_gray_convert_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jchuff-sse2.asm b/simd/x86_64/jchuff-sse2.asm +index 0c2cdd6..44ea81d 100644 +--- a/simd/x86_64/jchuff-sse2.asm ++++ b/simd/x86_64/jchuff-sse2.asm +@@ -261,6 +261,7 @@ times 1 << 15 db 16 + GLOBAL_FUNCTION(jsimd_huff_encode_one_block_sse2) + + EXTN(jsimd_huff_encode_one_block_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + +diff --git a/simd/x86_64/jcphuff-sse2.asm b/simd/x86_64/jcphuff-sse2.asm +index 11db4b2..2157e97 100644 +--- a/simd/x86_64/jcphuff-sse2.asm ++++ b/simd/x86_64/jcphuff-sse2.asm +@@ -282,6 +282,7 @@ + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_first_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_first_prepare_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + and rsp, byte (-SIZEOF_XMMWORD) ; align to 128 bits +@@ -445,6 +446,7 @@ EXTN(jsimd_encode_mcu_AC_first_prepare_sse2): + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_refine_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_refine_prepare_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + and rsp, byte (-SIZEOF_XMMWORD) ; align to 128 bits +diff --git a/simd/x86_64/jcsample-avx2.asm b/simd/x86_64/jcsample-avx2.asm +index 589c52b..7d8d4e0 100644 +--- a/simd/x86_64/jcsample-avx2.asm ++++ b/simd/x86_64/jcsample-avx2.asm +@@ -44,6 +44,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_avx2) + + EXTN(jsimd_h2v1_downsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +@@ -205,6 +206,7 @@ EXTN(jsimd_h2v1_downsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_avx2) + + EXTN(jsimd_h2v2_downsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +diff --git a/simd/x86_64/jcsample-sse2.asm b/simd/x86_64/jcsample-sse2.asm +index 7a4f1bc..8932b94 100644 +--- a/simd/x86_64/jcsample-sse2.asm ++++ b/simd/x86_64/jcsample-sse2.asm +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_sse2) + + EXTN(jsimd_h2v1_downsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +@@ -187,6 +188,7 @@ EXTN(jsimd_h2v1_downsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_sse2) + + EXTN(jsimd_h2v2_downsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +diff --git a/simd/x86_64/jdcolext-avx2.asm b/simd/x86_64/jdcolext-avx2.asm +index 070436c..6c0a212 100644 +--- a/simd/x86_64/jdcolext-avx2.asm ++++ b/simd/x86_64/jdcolext-avx2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_avx2) + + EXTN(jsimd_ycc_rgb_convert_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jdcolext-sse2.asm b/simd/x86_64/jdcolext-sse2.asm +index bba3a30..28d05e4 100644 +--- a/simd/x86_64/jdcolext-sse2.asm ++++ b/simd/x86_64/jdcolext-sse2.asm +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_sse2) + + EXTN(jsimd_ycc_rgb_convert_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jdmrgext-avx2.asm b/simd/x86_64/jdmrgext-avx2.asm +index 1191645..f58384c 100644 +--- a/simd/x86_64/jdmrgext-avx2.asm ++++ b/simd/x86_64/jdmrgext-avx2.asm +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_avx2) + + EXTN(jsimd_h2v1_merged_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -506,6 +507,7 @@ EXTN(jsimd_h2v1_merged_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_avx2) + + EXTN(jsimd_h2v2_merged_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff --git a/simd/x86_64/jdmrgext-sse2.asm b/simd/x86_64/jdmrgext-sse2.asm +index 8988dd0..8641aa3 100644 +--- a/simd/x86_64/jdmrgext-sse2.asm ++++ b/simd/x86_64/jdmrgext-sse2.asm +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_sse2) + + EXTN(jsimd_h2v1_merged_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -448,6 +449,7 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_sse2) + + EXTN(jsimd_h2v2_merged_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff --git a/simd/x86_64/jdsample-avx2.asm b/simd/x86_64/jdsample-avx2.asm +index c6ddbb5..c5594ed 100644 +--- a/simd/x86_64/jdsample-avx2.asm ++++ b/simd/x86_64/jdsample-avx2.asm +@@ -62,6 +62,7 @@ PW_EIGHT times 16 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_avx2) + + EXTN(jsimd_h2v1_fancy_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push_xmm 3 +@@ -215,6 +216,7 @@ EXTN(jsimd_h2v1_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_avx2) + + EXTN(jsimd_h2v2_fancy_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -524,6 +526,7 @@ EXTN(jsimd_h2v2_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_avx2) + + EXTN(jsimd_h2v1_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +@@ -612,6 +615,7 @@ EXTN(jsimd_h2v1_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_avx2) + + EXTN(jsimd_h2v2_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff --git a/simd/x86_64/jdsample-sse2.asm b/simd/x86_64/jdsample-sse2.asm +index 24cd389..27bf771 100644 +--- a/simd/x86_64/jdsample-sse2.asm ++++ b/simd/x86_64/jdsample-sse2.asm +@@ -61,6 +61,7 @@ PW_EIGHT times 8 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_sse2) + + EXTN(jsimd_h2v1_fancy_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +@@ -202,6 +203,7 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_sse2) + + EXTN(jsimd_h2v2_fancy_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -497,6 +499,7 @@ EXTN(jsimd_h2v2_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_sse2) + + EXTN(jsimd_h2v1_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +@@ -583,6 +586,7 @@ EXTN(jsimd_h2v1_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_sse2) + + EXTN(jsimd_h2v2_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff --git a/simd/x86_64/jfdctflt-sse.asm b/simd/x86_64/jfdctflt-sse.asm +index 3595496..b5abeee 100644 +--- a/simd/x86_64/jfdctflt-sse.asm ++++ b/simd/x86_64/jfdctflt-sse.asm +@@ -66,6 +66,7 @@ PD_1_306 times 4 dd 1.306562964876376527856643 + GLOBAL_FUNCTION(jsimd_fdct_float_sse) + + EXTN(jsimd_fdct_float_sse): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jfdctfst-sse2.asm b/simd/x86_64/jfdctfst-sse2.asm +index d33c58a..78af5e4 100644 +--- a/simd/x86_64/jfdctfst-sse2.asm ++++ b/simd/x86_64/jfdctfst-sse2.asm +@@ -81,6 +81,7 @@ PW_F1306 times 8 dw F_1_306 << CONST_SHIFT + GLOBAL_FUNCTION(jsimd_fdct_ifast_sse2) + + EXTN(jsimd_fdct_ifast_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jfdctint-avx2.asm b/simd/x86_64/jfdctint-avx2.asm +index d0afe5e..b083fbb 100644 +--- a/simd/x86_64/jfdctint-avx2.asm ++++ b/simd/x86_64/jfdctint-avx2.asm +@@ -260,6 +260,7 @@ PW_1_NEG1 times 8 dw 1 + GLOBAL_FUNCTION(jsimd_fdct_islow_avx2) + + EXTN(jsimd_fdct_islow_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 1 +diff --git a/simd/x86_64/jfdctint-sse2.asm b/simd/x86_64/jfdctint-sse2.asm +index 024ce90..88ea491 100644 +--- a/simd/x86_64/jfdctint-sse2.asm ++++ b/simd/x86_64/jfdctint-sse2.asm +@@ -102,6 +102,7 @@ PW_DESCALE_P2X times 8 dw 1 << (PASS1_BITS - 1) + GLOBAL_FUNCTION(jsimd_fdct_islow_sse2) + + EXTN(jsimd_fdct_islow_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jidctflt-sse2.asm b/simd/x86_64/jidctflt-sse2.asm +index 952fbe3..8610710 100644 +--- a/simd/x86_64/jidctflt-sse2.asm ++++ b/simd/x86_64/jidctflt-sse2.asm +@@ -76,6 +76,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_float_sse2) + + EXTN(jsimd_idct_float_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jidctfst-sse2.asm b/simd/x86_64/jidctfst-sse2.asm +index a3da8d8..351ee06 100644 +--- a/simd/x86_64/jidctfst-sse2.asm ++++ b/simd/x86_64/jidctfst-sse2.asm +@@ -95,6 +95,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_ifast_sse2) + + EXTN(jsimd_idct_ifast_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jidctint-avx2.asm b/simd/x86_64/jidctint-avx2.asm +index 528da01..00087c7 100644 +--- a/simd/x86_64/jidctint-avx2.asm ++++ b/simd/x86_64/jidctint-avx2.asm +@@ -282,6 +282,7 @@ PW_1_NEG1 times 8 dw 1 + GLOBAL_FUNCTION(jsimd_idct_islow_avx2) + + EXTN(jsimd_idct_islow_avx2): ++ _endbr64 + push rbp + mov rbp, rsp ; rbp = aligned rbp + push_xmm 4 +diff --git a/simd/x86_64/jidctint-sse2.asm b/simd/x86_64/jidctint-sse2.asm +index 92f633e..9301e81 100644 +--- a/simd/x86_64/jidctint-sse2.asm ++++ b/simd/x86_64/jidctint-sse2.asm +@@ -108,6 +108,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_islow_sse2) + + EXTN(jsimd_idct_islow_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff --git a/simd/x86_64/jidctred-sse2.asm b/simd/x86_64/jidctred-sse2.asm +index 1ec500c..e74162d 100644 +--- a/simd/x86_64/jidctred-sse2.asm ++++ b/simd/x86_64/jidctred-sse2.asm +@@ -116,6 +116,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_4x4_sse2) + + EXTN(jsimd_idct_4x4_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -413,6 +414,7 @@ EXTN(jsimd_idct_4x4_sse2): + GLOBAL_FUNCTION(jsimd_idct_2x2_sse2) + + EXTN(jsimd_idct_2x2_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff --git a/simd/x86_64/jquantf-sse2.asm b/simd/x86_64/jquantf-sse2.asm +index 232bbb2..2d65986 100644 +--- a/simd/x86_64/jquantf-sse2.asm ++++ b/simd/x86_64/jquantf-sse2.asm +@@ -37,6 +37,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_sse2) + + EXTN(jsimd_convsamp_float_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +@@ -109,6 +110,7 @@ EXTN(jsimd_convsamp_float_sse2): + GLOBAL_FUNCTION(jsimd_quantize_float_sse2) + + EXTN(jsimd_quantize_float_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +diff --git a/simd/x86_64/jquanti-avx2.asm b/simd/x86_64/jquanti-avx2.asm +index 66104d7..a7ea496 100644 +--- a/simd/x86_64/jquanti-avx2.asm ++++ b/simd/x86_64/jquanti-avx2.asm +@@ -38,6 +38,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_avx2) + + EXTN(jsimd_convsamp_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +@@ -115,6 +116,7 @@ EXTN(jsimd_convsamp_avx2): + GLOBAL_FUNCTION(jsimd_quantize_avx2) + + EXTN(jsimd_quantize_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +diff --git a/simd/x86_64/jquanti-sse2.asm b/simd/x86_64/jquanti-sse2.asm +index 11e9f4c..24cb1cf 100644 +--- a/simd/x86_64/jquanti-sse2.asm ++++ b/simd/x86_64/jquanti-sse2.asm +@@ -37,6 +37,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_sse2) + + EXTN(jsimd_convsamp_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +@@ -115,6 +116,7 @@ EXTN(jsimd_convsamp_sse2): + GLOBAL_FUNCTION(jsimd_quantize_sse2) + + EXTN(jsimd_quantize_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +-- diff --git a/base/rx-libjpeg-turbo/libjpeg-turbo-cmake.patch b/base/rx-libjpeg-turbo/libjpeg-turbo-cmake.patch new file mode 100644 index 0000000..ef4c14d --- /dev/null +++ b/base/rx-libjpeg-turbo/libjpeg-turbo-cmake.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index adb0ca4..902c271 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1768,18 +1768,6 @@ endif() + + install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg +- ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/example.c +- ${CMAKE_CURRENT_SOURCE_DIR}/tjexample.c +- ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg.txt +- ${CMAKE_CURRENT_SOURCE_DIR}/structure.txt +- ${CMAKE_CURRENT_SOURCE_DIR}/usage.txt ${CMAKE_CURRENT_SOURCE_DIR}/wizard.txt +- ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) +-if(WITH_JAVA) +- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/java/TJExample.java +- DESTINATION ${CMAKE_INSTALL_DOCDIR}) +-endif() +- + if(UNIX OR MINGW) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cjpeg.1 + ${CMAKE_CURRENT_SOURCE_DIR}/djpeg.1 ${CMAKE_CURRENT_SOURCE_DIR}/jpegtran.1 +@@ -1803,7 +1791,7 @@ install(EXPORT ${CMAKE_PROJECT_NAME}Targets + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h + ${CMAKE_CURRENT_SOURCE_DIR}/jerror.h ${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h +- ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h ++ ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h ${CMAKE_CURRENT_SOURCE_DIR}/jpegint.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + include(cmakescripts/BuildPackages.cmake) +-- diff --git a/base/rx-libjpeg-turbo/libjpeg-turbo.spec b/base/rx-libjpeg-turbo/libjpeg-turbo.spec new file mode 100644 index 0000000..6354a9a --- /dev/null +++ b/base/rx-libjpeg-turbo/libjpeg-turbo.spec @@ -0,0 +1,508 @@ +%global realname libjpeg-turbo +%global _sys_bindir %_bindir +%global _prefix /opt/rx +%global _bindir %{_prefix}/bin +%global _libdir %{_prefix}/%{_lib} +%global _datadir %{_prefix}/share +%global _includedir %{_prefix}/include +%global _mandir %{_datadir}/man + +Name: rx-libjpeg-turbo +Version: 3.0.2 +Release: 1%{?dist} +Summary: A MMX/SSE2/SIMD accelerated library for manipulating JPEG image files +License: IJG +URL: http://sourceforge.net/projects/libjpeg-turbo + +Source0: http://downloads.sourceforge.net/%{realname}/%{realname}-%{version}.tar.gz +Patch0: libjpeg-turbo-cmake.patch +Patch1: libjpeg-turbo-CET.patch + +BuildRequires: gcc +BuildRequires: cmake +BuildRequires: libtool +BuildRequires: nasm + + +%description +The libjpeg-turbo package contains a library of functions for manipulating JPEG +images. + +%package devel +Summary: Headers for the libjpeg-turbo library +Requires: rx-libjpeg-turbo%{?_isa} = %{version}-%{release} + + +%description devel +This package contains header files necessary for developing programs which will +manipulate JPEG files using the libjpeg-turbo library. + +%package utils +Summary: Utilities for manipulating JPEG images +Requires: rx-libjpeg-turbo%{?_isa} = %{version}-%{release} + +%description utils +The libjpeg-turbo-utils package contains simple client programs for accessing +the libjpeg functions. It contains cjpeg, djpeg, jpegtran, rdjpgcom and +wrjpgcom. Cjpeg compresses an image file into JPEG format. Djpeg decompresses a +JPEG file into a regular image file. Jpegtran can perform various useful +transformations on JPEG files. Rdjpgcom displays any text comments included in a +JPEG file. Wrjpgcom inserts text comments into a JPEG file. + +%package -n rx-turbojpeg +Summary: TurboJPEG library + +%description -n rx-turbojpeg +The turbojpeg package contains the TurboJPEG shared library. + +%package -n rx-turbojpeg-devel +Summary: Headers for the TurboJPEG library +Requires: rx-turbojpeg%{?_isa} = %{version}-%{release} + +%description -n rx-turbojpeg-devel +This package contains header files necessary for developing programs which will +manipulate JPEG files using the TurboJPEG library. + +%prep +%autosetup -p1 -n %{realname}-%{version} + +%build +export PKG_CONFIG_PATH=%{_libdir}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}} +export LDFLAGS="-L%{_libdir} -Wl,-rpath=%{_libdir} $LDFLAGS" +# NASM object files are missing GNU Property note for Intel CET, +# force it on the resulting library +%ifarch %{ix86} x86_64 +export LDFLAGS="$RPM_LD_FLAGS -Wl,-z,ibt -Wl,-z,shstk" +%endif + +%{cmake} -DCMAKE_SKIP_RPATH:BOOL=YES \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ +%ifarch s390x + -DFLOATTEST:STRING="fp-contract" \ +%endif + -DENABLE_STATIC:BOOL=NO + +%cmake_build + +%install +%cmake_install +find %{buildroot} -name "*.la" -delete + +# Fix perms +chmod -x README.md + +# Remove tjbench +rm -f %{buildroot}/%{_bindir}/tjbench + +# multilib header hack +# we only apply this to known Red Hat multilib arches, per bug #1264675 +case `uname -i` in + i386 | ppc | s390 | sparc ) + wordsize="32" + ;; + x86_64 | ppc64 | s390x | sparc64 ) + wordsize="64" + ;; + *) + wordsize="" + ;; +esac + +if test -n "$wordsize" +then + mv $RPM_BUILD_ROOT%{_includedir}/jconfig.h \ + $RPM_BUILD_ROOT%{_includedir}/jconfig-$wordsize.h + + cat >$RPM_BUILD_ROOT%{_includedir}/jconfig.h < + +#if __WORDSIZE == 32 +# include "jconfig-32.h" +#elif __WORDSIZE == 64 +# include "jconfig-64.h" +#else +# error "unexpected value for __WORDSIZE macro" +#endif + +#endif +EOF + +fi + +mkdir -p %{buildroot}%{_sys_bindir} +for bin in cjpeg djpeg jpegtran rdjpgcom wrjpgcom +do + ln -sf %{_bindir}/${bin} %{buildroot}/%{_sys_bindir}/${bin}-3 +done + +%check +export LD_LIBRARY_PATH=%{buildroot}%{_libdir} +%ctest + +%ldconfig_scriptlets +%ldconfig_scriptlets -n rx-turbojpeg + +%files +%license LICENSE.md +%doc README.md README.ijg ChangeLog.md +%{_libdir}/libjpeg.so.62* + +%files devel +%doc coderules.txt jconfig.txt libjpeg.txt structure.txt +%{_includedir}/jconfig*.h +%{_includedir}/jerror.h +%{_includedir}/jmorecfg.h +%{_includedir}/jpegint.h +%{_includedir}/jpeglib.h +%{_libdir}/libjpeg.so +%{_libdir}/pkgconfig/libjpeg.pc +%{_libdir}/cmake/%{realname}/%{realname}*.cmake + +%files utils +%doc usage.txt wizard.txt +%{_sys_bindir}/*-3 +%{_bindir}/cjpeg +%{_bindir}/djpeg +%{_bindir}/jpegtran +%{_bindir}/rdjpgcom +%{_bindir}/wrjpgcom +%{_mandir}/man1/cjpeg.1* +%{_mandir}/man1/djpeg.1* +%{_mandir}/man1/jpegtran.1* +%{_mandir}/man1/rdjpgcom.1* +%{_mandir}/man1/wrjpgcom.1* + +%files -n rx-turbojpeg +%license LICENSE.md +%doc README.md README.ijg ChangeLog.md +%{_libdir}/libturbojpeg.so.0* + +%files -n rx-turbojpeg-devel +%doc tjexample.c +%{_includedir}/turbojpeg.h +%{_libdir}/libturbojpeg.so +%{_libdir}/pkgconfig/libturbojpeg.pc + +%changelog +* Tue May 7 2024 Raven - 3.0.2-1 +- New upstream release 3.0.2 + +* Mon Aug 15 2022 Nikola Forró - 2.1.4-1 +- New upstream release 2.1.4 (#2118023) + +* Thu Jul 21 2022 Fedora Release Engineering - 2.1.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Feb 27 2022 Nikola Forró - 2.1.3-1 +- New upstream release 2.1.3 (#2058898) + +* Thu Jan 20 2022 Fedora Release Engineering - 2.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Nov 22 2021 Matej Mužila - 2.1.2-1 +- New upstream release 2.1.2 (#2025141) + +* Wed Aug 11 2021 Nikola Forró - 2.1.1-1 +- New upstream release 2.1.1 (#1991844) + +* Thu Jul 22 2021 Fedora Release Engineering - 2.1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Apr 26 2021 Nikola Forró - 2.1.0-1 +- New upstream release 2.1.0 (#1953074) + +* Thu Mar 25 2021 Nikola Forró - 2.0.90-2 +- Fix CVE-2021-20205 (#1937387) + +* Thu Jan 28 2021 Nikola Forró - 2.0.90-1 +- New upstream release 2.0.90 (#1898427) + +* Tue Jan 26 2021 Fedora Release Engineering - 2.0.5-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Aug 04 2020 Nikola Forró - 2.0.5-5 +- Fix FTBFS (#1864007) + +* Sat Aug 01 2020 Fedora Release Engineering - 2.0.5-4 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 2.0.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Tom Stellard - 2.0.5-2 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Fri Jul 03 2020 Nikola Forró - 2.0.5-1 +- New upstream release 2.0.5 (#1850293) + +* Tue Jun 16 2020 Nikola Forró - 2.0.4-3 +- Fix CVE-2020-13790 (#1847159) + +* Wed Jan 29 2020 Fedora Release Engineering - 2.0.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 08 2020 Nikola Forró - 2.0.4-1 +- New upstream release 2.0.4 (#1787793) + +* Thu Sep 05 2019 Nikola Forró - 2.0.3-1 +- New upstream release 2.0.3 (#1749130) + +* Thu Jul 25 2019 Fedora Release Engineering - 2.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jun 04 2019 Nikola Forró - 2.0.2-3 +- Fix LDFLAGS + +* Mon Apr 29 2019 Nikola Forró - 2.0.2-2 +- Support running with Intel CET + +* Wed Feb 27 2019 Nikola Forró - 2.0.2-1 +- New upstream release 2.0.2 + +* Fri Feb 01 2019 Fedora Release Engineering - 2.0.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jan 11 2019 Nikola Forró - 2.0.0-3 +- Fix CVE-2018-19664 (#1656219) + +* Fri Jan 11 2019 Nikola Forró - 2.0.0-2 +- Fix CVE-2018-20330 (#1665224) + +* Mon Jul 30 2018 Nikola Forró - 2.0.0-1 +- New upstream release 2.0.0 (#1609439) + +* Fri Jul 13 2018 Fedora Release Engineering - 1.5.90-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Jun 29 2018 Nikola Forró - 1.5.90-3 +- Fix CVE-2018-1152 (#1593555) + +* Fri Jun 15 2018 Nikola Forró - 1.5.90-2 +- Fix CVE-2018-11813 (#1588804) + +* Wed Mar 28 2018 Nikola Forró - 1.5.90-1 +- New upstream release 1.5.90 (#1560219) + +* Tue Feb 20 2018 Nikola Forró - 1.5.3-4 +- Add missing gcc build dependency + +* Wed Feb 07 2018 Fedora Release Engineering - 1.5.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 1.5.3-2 +- Switch to %%ldconfig_scriptlets + +* Tue Dec 19 2017 Nikola Forró - 1.5.3-1 +- New upstream release 1.5.3 (#1468783) + +* Tue Dec 19 2017 Nikola Forró - 1.5.1-5 +- re-enable check on ppc64(le) + +* Thu Aug 03 2017 Fedora Release Engineering - 1.5.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.5.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu May 18 2017 Karsten Hopp - 1.5.1-2 +- disable check on ppc64(le) + +* Fri Feb 10 2017 Fedora Release Engineering - 1.5.1-1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Oct 06 2016 Petr Hracek - 1.5.1-1 +- New upstream relelase 1.5.1 (#1377903) + +* Wed Sep 21 2016 Peter Robinson 1.5.0-4 +- Add upstream aarch64 NEON fix, re-enable SIMD on aarch64 + +* Mon Sep 19 2016 Peter Robinson 1.5.0-3 +- Temporarily disable SIMD on aarch64 until upstream #97 is fixed +- Add NEON fix for ARMv7 + +* Tue Sep 13 2016 Peter Robinson 1.5.0-2 +- Add upstream fix to fix SIMD crash on aarch64 (rhbz #1368569) + +* Tue Jun 21 2016 Petr Hracek - 1.5.0-1 +- New upstream release 1.5.0 (#1343786) + +* Thu Mar 10 2016 Petr Hracek - 1.4.90-1 +- New upstream release 1.4.90 (#1313111) + +* Thu Feb 04 2016 Fedora Release Engineering - 1.4.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Oct 07 2015 Petr Hracek - 1.4.2-2 +- Fix problem with multilibs like jconfig.h (#1264675) + +* Wed Oct 07 2015 Petr Hracek - 1.4.2-1 +- New upstream release 1.4.2 (#1265034) + +* Tue Jun 16 2015 Peter Robinson 1.4.1-1 +- new upstream version 1.4.1 +- nasm available on all arches +- run tests with SMP + +* Tue Jan 20 2015 Petr Hracek - 1.4.0-1 +- new upstream version 1.4.0 (#1180442) + +* Wed Nov 26 2014 Petr Hracek - 1.3.90-3 +- libjpeg-turbo no longer defined macros like JPP (#1164815) + +* Wed Nov 19 2014 Petr Hracek - 1.3.90-2 +- Resolves #1161585 Add suport for secondary arches + +* Mon Oct 27 2014 Petr Hracek - 1.3.90-1 +- new upstream version 1.3.90 +Resolves #1135375 + +* Sun Aug 17 2014 Fedora Release Engineering - 1.3.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.3.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Apr 17 2014 Simone Caronni - 1.3.1-2 +- Re-add libjpeg-devel requirements for broken packages since Fedora 13. + +* Wed Apr 16 2014 Petr Hracek - 1.3.1-1 +- New upstream version +- Remove upstreamed patches, add missing jpegint.h +- Clean up SPEC file +- Disable --static subpackage +- Remove libjpeg obsolency, removed in Fedora 13 + +* Thu Dec 19 2013 Petr Hracek - 1.3.0-2 +- Apply fixes CVE-2013-6629, CVE-2013-6630 (#20131737) + +* Thu Jul 25 2013 Petr Hracek - 1.3.0-1 +- new upstream version +- no soname bump change + +* Tue Mar 26 2013 Adam Tkac - 1.2.90-2 +- rebuild for ARM64 support + +* Fri Feb 08 2013 Adam Tkac 1.2.90-1 +- update to 1.2.90 + +* Mon Feb 04 2013 Adam Tkac 1.2.90-0.1.20130204svn922 +- update to 1.2.80 snapshot (#854695) +- run `make test` during build + +* Fri Jan 18 2013 Adam Tkac 1.2.1-6 +- build with jpeg6 API/ABI (jpeg8-ABI feature was dropped) + +* Tue Dec 04 2012 Adam Tkac 1.2.1-5 +- change license to IJG (#877517) + +* Wed Oct 24 2012 Adam Tkac 1.2.1-4 +- build with jpeg8 API/ABI (#854695) + +* Thu Oct 18 2012 Adam Tkac 1.2.1-3 +- minor provides tuning (#863231) + +* Thu Jul 19 2012 Fedora Release Engineering - 1.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jul 16 2012 Adam Tkac 1.2.1-1 +- update to 1.2.1 + +* Thu Mar 08 2012 Adam Tkac 1.2.0-1 +- update to 1.2.0 + +* Fri Jan 13 2012 Fedora Release Engineering - 1.1.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Nov 21 2011 Orion Poplawski 1.1.1-3 +- Make turobojpeg-devel depend on turbojpeg + +* Fri Oct 7 2011 Orion Poplawski 1.1.1-2 +- Ship the turbojpeg library (#744258) + +* Mon Jul 11 2011 Adam Tkac 1.1.1-1 +- update to 1.1.1 + - ljt11-rh688712.patch merged + +* Tue Mar 22 2011 Adam Tkac 1.1.0-2 +- handle broken JPEGs better (#688712) + +* Tue Mar 01 2011 Adam Tkac 1.1.0-1 +- update to 1.1.0 + +* Tue Feb 08 2011 Fedora Release Engineering - 1.0.90-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jan 17 2011 Adam Tkac 1.0.90-1 +- update to 1.0.90 +- libjpeg-turbo10-rh639672.patch merged + +* Fri Oct 29 2010 Adam Tkac 1.0.1-3 +- add support for arithmetic coded files into decoder (#639672) + +* Wed Sep 29 2010 jkeating - 1.0.1-2 +- Rebuilt for gcc bug 634757 + +* Mon Sep 13 2010 Adam Tkac 1.0.1-1 +- update to 1.0.1 + - libjpeg-turbo10-rh617469.patch merged +- add -static subpkg (#632859) + +* Wed Aug 04 2010 Adam Tkac 1.0.0-3 +- fix huffman decoder to handle broken JPEGs well (#617469) + +* Fri Jul 02 2010 Adam Tkac 1.0.0-2 +- add libjpeg-devel%%{_isa} provides to -devel subpkg to satisfy imlib-devel + deps + +* Fri Jul 02 2010 Adam Tkac 1.0.0-1 +- update to 1.0.0 +- patches merged + - libjpeg-turbo-programs.patch + - libjpeg-turbo-nosimd.patch +- add libjpeg provides to the main package to workaround problems with broken + java-1.6.0-openjdk package + +* Fri Jul 02 2010 Adam Tkac 0.0.93-13 +- remove libjpeg provides from -utils subpkg + +* Wed Jun 30 2010 Rex Dieter 0.0.93-12 +- move Obsoletes: libjpeg to main pkg + +* Wed Jun 30 2010 Rex Dieter 0.0.93-11 +- -utils: Requires: %%name ... + +* Wed Jun 30 2010 Adam Tkac 0.0.93-10 +- add Provides = libjpeg to -utils subpackage + +* Mon Jun 28 2010 Adam Tkac 0.0.93-9 +- merge review related fixes (#600243) + +* Wed Jun 16 2010 Adam Tkac 0.0.93-8 +- merge review related fixes (#600243) + +* Mon Jun 14 2010 Adam Tkac 0.0.93-7 +- obsolete -static libjpeg subpackage (#600243) + +* Mon Jun 14 2010 Adam Tkac 0.0.93-6 +- improve package description a little (#600243) +- include example.c as %%doc in the -devel subpackage + +* Fri Jun 11 2010 Adam Tkac 0.0.93-5 +- don't use "fc12" disttag in obsoletes/provides (#600243) + +* Thu Jun 10 2010 Adam Tkac 0.0.93-4 +- fix compilation on platforms without MMX/SSE (#600243) + +* Thu Jun 10 2010 Adam Tkac 0.0.93-3 +- package review related fixes (#600243) + +* Wed Jun 09 2010 Adam Tkac 0.0.93-2 +- package review related fixes (#600243) + +* Fri Jun 04 2010 Adam Tkac 0.0.93-1 +- initial package