summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--adk/extlinux/extlinux.conf0
-rw-r--r--adk/tools/depmaker.c4
-rw-r--r--adk/tools/pkgmaker.c60
-rw-r--r--docs/running-openadk.txt30
-rw-r--r--mk/build.mk1
-rw-r--r--mk/fetch.mk2
-rw-r--r--mk/host-bottom.mk8
-rw-r--r--mk/host.mk2
-rw-r--r--mk/image.mk98
-rw-r--r--mk/kernel-build.mk15
-rw-r--r--mk/kernel-vars.mk19
-rw-r--r--mk/linux-ver.mk50
-rw-r--r--mk/linux.mk3
-rw-r--r--mk/mirrors.mk1
-rw-r--r--mk/package.mk9
-rw-r--r--mk/perl.mk2
-rw-r--r--mk/pkg-bottom.mk10
-rw-r--r--mk/python.mk3
-rw-r--r--mk/python3.mk2
-rw-r--r--mk/vars.mk32
-rw-r--r--package/Config.in1
-rw-r--r--package/Config.in.options12
-rw-r--r--package/ImageMagick/Makefile6
-rw-r--r--package/adktest/Makefile2
-rwxr-xr-xpackage/adktest/files/adktest.init1
-rwxr-xr-xpackage/adktest/src/quit2
-rw-r--r--package/afboot-stm32/patches/patch-Makefile15
-rw-r--r--package/afpfs-ng/Makefile2
-rw-r--r--package/aircrack-ng/Makefile21
-rw-r--r--package/aircrack-ng/patches/patch-common_mak27
-rw-r--r--package/aircrack-ng/patches/patch-src_osdep_linux_c26
-rw-r--r--package/alsa-lib/Makefile7
-rw-r--r--package/alsa-utils/Makefile4
-rw-r--r--package/alsa-utils/files/amixer.init2
-rw-r--r--package/apr-util/Makefile3
-rw-r--r--package/arm-trusted-firmware/Makefile26
-rw-r--r--package/arm-trusted-firmware/patches/patch-plat_rockchip_rk3328_rk3328_def_h11
-rw-r--r--package/asterisk/Makefile69
-rw-r--r--package/asterisk/files/asterisk.init2
-rw-r--r--package/asterisk/patches/patch-main_dns_c11
-rw-r--r--package/asterisk/patches/patch-main_tcptls_c16
-rw-r--r--package/asterisk/patches/patch-res_stasis_control_c11
-rw-r--r--package/atk/Makefile16
-rw-r--r--package/autofs/Makefile14
-rw-r--r--package/autofs/patches/patch-configure_in12
-rw-r--r--package/automake16/Makefile43
-rw-r--r--package/avahi/Makefile8
-rw-r--r--package/avahi/patches/patch-Makefile_am12
-rw-r--r--package/avahi/patches/patch-avahi-ui_Makefile_am19
-rw-r--r--package/avahi/patches/patch-configure_ac14
-rw-r--r--package/base-files/Makefile10
-rw-r--r--package/base-files/files/base-files.conffiles1
-rwxr-xr-xpackage/base-files/files/init.d/rcS1
-rw-r--r--package/base-files/files/profile1
-rwxr-xr-xpackage/base-files/src/etc/network/if-pre-up.d/04-wireless6
-rw-r--r--package/bash/Makefile4
-rw-r--r--package/bcm28xx-bootloader/Makefile59
-rwxr-xr-xpackage/bcm28xx-bootloader/files/vcdbgbin71804 -> 0 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/bootcode.binbin52456 -> 52476 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup.datbin7312 -> 7269 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup4.datbin5446 -> 5412 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup4cd.datbin3187 -> 3180 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup4db.datbin8452 -> 8397 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup4x.datbin8452 -> 8399 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup_cd.datbin3187 -> 3180 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup_db.datbin10298 -> 10242 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/fixup_x.datbin10298 -> 10244 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start.elfbin2952704 -> 2979264 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start4.elfbin2228512 -> 2254944 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start4cd.elfbin792924 -> 808060 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start4db.elfbin3722248 -> 3751752 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start4x.elfbin2980936 -> 3002536 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start_cd.elfbin792924 -> 808060 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start_db.elfbin4794216 -> 4823624 bytes
-rw-r--r--package/bcm28xx-bootloader/src/boot/start_x.elfbin3704488 -> 3726216 bytes
-rw-r--r--package/bcm28xx-utils/Makefile32
-rw-r--r--package/bcm28xx-utils/patches/patch-CMakeLists_txt16
-rw-r--r--package/bcm28xx-vc/Makefile84
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_android_apps_vidtex_CMakeLists_txt10
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_linux_apps_dtmerge_dtmerge_c10
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_linux_apps_gencmd_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_linux_apps_raspicam_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_linux_apps_smem_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_linux_libs_bcm_host_CMakeLists_txt19
-rw-r--r--package/bcm28xx-vc/patches/patch-host_applications_linux_libs_sm_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-interface_khronos_CMakeLists_txt17
-rw-r--r--package/bcm28xx-vc/patches/patch-interface_mmal_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-interface_vcos_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-interface_vcos_pthreads_CMakeLists_txt11
-rw-r--r--package/bcm28xx-vc/patches/patch-interface_vmcs_host_linux_vcfiled_CMakeLists_txt9
-rw-r--r--package/bcm28xx-vc/patches/patch-interface_vmcs_host_vc_vchi_tvservice_c18
-rw-r--r--package/bcm28xx-vc/src/host_applications/linux/libs/bcm_host/bcm_host.pc.in10
-rw-r--r--package/bcm28xx-vc/src/interface/khronos/egl/egl.pc.in11
-rw-r--r--package/bcm28xx-vc/src/interface/khronos/glxx/glesv2.pc.in10
-rw-r--r--package/bind/Makefile44
-rw-r--r--package/bind/patches/patch-bin_rndc_Makefile_am18
-rw-r--r--package/bind/patches/patch-lib_isc_backtrace_c14
-rw-r--r--package/binutils/Makefile1
-rw-r--r--package/bison/Makefile4
-rw-r--r--package/bison/patches/patch-lib_fseterr_c11
-rw-r--r--package/bison/patches/patch-lib_vasnprintf_c28
-rw-r--r--package/bitlbee/Makefile5
-rw-r--r--package/bitlbee/patches/patch-lib_Makefile10
-rw-r--r--package/bitlbee/patches/patch-protocols_Makefile8
-rw-r--r--package/bitlbee/patches/patch-protocols_jabber_Makefile8
-rw-r--r--package/bitlbee/patches/patch-protocols_msn_Makefile19
-rw-r--r--package/bitlbee/patches/patch-protocols_oscar_Makefile24
-rw-r--r--package/bitlbee/patches/patch-protocols_twitter_Makefile8
-rw-r--r--package/bluez/Makefile5
-rw-r--r--package/bluez/patches/patch-tools_csr_usb_c10
-rw-r--r--package/bluez/patches/patch-tools_hciattach_bcm43xx_c32
-rw-r--r--package/boost/Makefile28
-rw-r--r--package/brcm-bluetooth/files/hci3
-rw-r--r--package/brcm-bluetooth/src/BCM4345C5.hcdbin0 -> 45667 bytes
-rw-r--r--package/brcmfmac-firmware/Makefile6
-rw-r--r--package/brcmfmac-firmware/src/BCM43430A1.hcdbin36264 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/BCM4345C0.hcdbin55096 -> 0 bytes
l---------package/brcmfmac-firmware/src/brcm/BCM-0a5c-6410.hcd1
-rw-r--r--package/brcmfmac-firmware/src/brcm/BCM-0bb4-0306.hcdbin0 -> 54734 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/BCM43430A1.hcdbin0 -> 30049 bytes
l---------package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,3-model-b.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-2-w.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-w.hcd1
-rw-r--r--package/brcmfmac-firmware/src/brcm/BCM43430B0.hcdbin0 -> 44376 bytes
l---------package/brcmfmac-firmware/src/brcm/BCM43430B0.raspberrypi,model-zero-2-w.hcd1
-rw-r--r--package/brcmfmac-firmware/src/brcm/BCM4345C0.hcdbin0 -> 63806 bytes
l---------package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-a-plus.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-b-plus.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-compute-module.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-model-b.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,5-model-b.hcd1
-rw-r--r--package/brcmfmac-firmware/src/brcm/BCM4345C5.hcdbin0 -> 55676 bytes
l---------package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,4-compute-module.hcd1
l---------package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,400.hcd1
-rw-r--r--package/brcmfmac-firmware/src/brcm/bcm43xx-0.fw (renamed from package/brcmfmac-firmware/src/bcm43xx-0.fw)bin96224 -> 96224 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/bcm43xx_hdr-0.fw (renamed from package/brcmfmac-firmware/src/bcm43xx_hdr-0.fw)bin180 -> 180 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.clm_blob1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43143-sdio.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43143-sdio.bin)bin385067 -> 385067 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43143.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43143.bin)bin397312 -> 397312 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43236b.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43236b.bin)bin348160 -> 348160 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43241b0-sdio.binbin0 -> 459988 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43241b4-sdio.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43241b4-sdio.bin)bin403855 -> 403855 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43241b5-sdio.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43241b5-sdio.bin)bin408682 -> 408682 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43242a.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43242a.bin)bin479232 -> 479232 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4329-sdio.bin)bin253748 -> 253748 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.binbin0 -> 253748 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.txt70
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.binbin0 -> 253748 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.txt70
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.txt (renamed from package/brcmfmac-firmware/src/brcmfmac4329-sdio.txt)0
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.Prowise-PT301.txt89
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.binbin0 -> 223581 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4330-sdio.bin)bin222126 -> 222126 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.txt118
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.binbin0 -> 222126 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.txt118
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.txt (renamed from package/brcmfmac-firmware/src/brcmfmac4330-sdio.txt)0
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4334-sdio.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4334-sdio.bin)bin451566 -> 451566 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.bin1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.meegopad-t08.txt98
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt98
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.predia-basic.txt98
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4335-sdio.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4335-sdio.bin)bin569291 -> 569291 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.bin1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt45
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4339-sdio.bin1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.AP6212.txt44
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt48
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.MUR1DX.txt44
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.txt64
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.binbin0 -> 382455 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.ilife-S806.txt47
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt49
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.binbin0 -> 416101 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.clm_blobbin0 -> 11209 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.txt93
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.binbin0 -> 442211 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.txt67
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.AW-CM256SM.txt66
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinebook-pro.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinephone-pro.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,quartz64-b.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.txt98
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.binbin0 -> 495898 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.clm_blobbin0 -> 7163 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.txt97
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4350-pcie.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4350-pcie.bin)bin626140 -> 626140 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4350c2-pcie.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4350c2-pcie.bin)bin623304 -> 623304 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.clm_blob1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.gpd-win-pocket.txt121
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.AP6356S.txt122
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.clm_blob1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.firefly,firefly-rk3399.txt1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.khadas,vim2.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.txt126
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.vamrs,rock960.txt1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43569.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43569.bin)bin557056 -> 557056 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.clm_blob1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4358-pcie.binbin0 -> 634361 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43602-pcie.ap.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43602-pcie.ap.bin)bin595472 -> 595472 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac43602-pcie.bin (renamed from package/brcmfmac-firmware/src/brcmfmac43602-pcie.bin)bin635449 -> 635449 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4366b-pcie.binbin0 -> 1105361 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4366c-pcie.binbin0 -> 1120971 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4371-pcie.bin (renamed from package/brcmfmac-firmware/src/brcmfmac4371-pcie.bin)bin623448 -> 623448 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.clm_blob1
-rw-r--r--package/brcmfmac-firmware/src/brcm/brcmfmac4373.binbin0 -> 479232 bytes
l---------package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.bin1
l---------package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.clm_blob1
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43241b0-sdio.binbin455745 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43340-sdio.binbin397378 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43362-sdio.binbin219557 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac4339-sdio.binbin493599 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43430-sdio.binbin388739 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt59
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43455-sdio.binbin600487 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43455-sdio.clm_blobbin14036 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43455-sdio.txt92
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac4354-sdio.binbin591837 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac4356-pcie.binbin623012 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac43570-pcie.binbin550333 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/brcmfmac4366b-pcie.binbin989401 -> 0 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.binbin0 -> 490686 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.clm_blobbin0 -> 4692 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43340-sdio.binbin0 -> 409717 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43362-sdio.binbin0 -> 202623 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4339-sdio.binbin0 -> 574096 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.binbin0 -> 399344 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.clm_blobbin0 -> 4733 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-minimal.binbin0 -> 548728 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-standard.binbin0 -> 637406 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.binbin0 -> 637406 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.clm_blobbin0 -> 2676 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.binbin0 -> 601704 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.clm_blobbin0 -> 5750 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.binbin0 -> 616174 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.clm_blobbin0 -> 5750 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.binbin0 -> 580258 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.clm_blobbin0 -> 5750 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.binbin0 -> 558388 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.clm_blobbin0 -> 5750 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.binbin0 -> 563834 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.clm_blobbin0 -> 4684 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.binbin0 -> 615882 bytes
-rw-r--r--package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.clm_blobbin0 -> 5764 bytes
-rw-r--r--package/btrfs-progs/Makefile37
-rw-r--r--package/busybox/Config.in.manual213
-rw-r--r--package/busybox/Makefile6
-rw-r--r--package/busybox/config/Config.in4
-rw-r--r--package/busybox/config/archival/Config.in14
-rw-r--r--package/busybox/config/coreutils/Config.in121
-rw-r--r--package/busybox/config/editors/Config.in16
-rw-r--r--package/busybox/config/findutils/Config.in43
-rw-r--r--package/busybox/config/klibc-utils/Config.in2
-rw-r--r--package/busybox/config/libbb/Config.in224
-rw-r--r--package/busybox/config/mailutils/Config.in14
-rw-r--r--package/busybox/config/miscutils/Config.in33
-rw-r--r--package/busybox/config/networking/Config.in49
-rw-r--r--package/busybox/config/networking/udhcp/Config.in15
-rw-r--r--package/busybox/config/procps/Config.in23
-rw-r--r--package/busybox/config/shell/Config.in17
-rw-r--r--package/busybox/files/ntpd.init2
-rw-r--r--package/busybox/patches/002-hwclock-musl.patch31
-rw-r--r--package/busybox/patches/009-disable-Oz.patch20
-rw-r--r--package/bzip2/Makefile9
-rw-r--r--package/bzr/Makefile41
-rw-r--r--package/ca-certificates/Makefile6
-rw-r--r--package/ca-certificates/patches/patch-Makefile5
-rw-r--r--package/ca-certificates/patches/patch-mozilla_Makefile11
-rw-r--r--package/ca-certificates/patches/patch-sbin_Makefile9
-rw-r--r--package/ccid/Makefile13
-rw-r--r--package/ccid/patches/patch-configure21
-rw-r--r--package/ccid/patches/patch-ltmain_sh11
-rw-r--r--package/cdrkit/patches/patch-Makefile465
-rw-r--r--package/cdrkit/patches/patch-genisoimage_genisoimage_h11
-rw-r--r--package/cfgfs/Makefile4
-rw-r--r--package/cfgfs/src/fwcf.sh58
-rw-r--r--package/cherokee/Makefile12
-rw-r--r--package/cherrypy/Makefile8
-rw-r--r--package/chocolate-doom/Makefile32
-rw-r--r--package/cifs-utils/Makefile5
-rw-r--r--package/cifs-utils/patches/patch-Makefile_am21
-rw-r--r--package/cifs-utils/patches/patch-cifs_idmap_c16
-rw-r--r--package/cifs-utils/patches/patch-configure_ac33
-rw-r--r--package/cifs-utils/patches/patch-mount_cifs_c24
-rw-r--r--package/cifs-utils/patches/patch-mtab_c10
-rw-r--r--package/clamav/Makefile4
-rw-r--r--package/collectd/Makefile4
-rw-r--r--package/coreutils/Makefile4
-rw-r--r--package/cpio/Makefile4
-rw-r--r--package/cpio/patches/patch-gnu_stdio_in_h13
-rw-r--r--package/cpio/patches/patch-src_filetypes_h8
-rw-r--r--package/crda/Makefile53
-rw-r--r--package/crda/patches/patch-Makefile11
-rw-r--r--package/cryptodev-linux/Makefile2
-rw-r--r--package/cups/Makefile29
-rw-r--r--package/cups/patches/patch-Makedefs_in10
-rw-r--r--package/cups/patches/patch-configure14
-rw-r--r--package/curl/Makefile60
-rw-r--r--package/cxxtools/Makefile39
-rw-r--r--package/dansguardian/Makefile41
-rw-r--r--package/dansguardian/files/dansguardian.init33
-rw-r--r--package/dansguardian/files/dansguardian.postinst6
-rw-r--r--package/dansguardian/patches/patch-src_ImageContainer_cpp10
-rw-r--r--package/dansguardian/patches/patch-src_SocketArray_cpp10
-rw-r--r--package/dansguardian/patches/patch-src_UDSocket_cpp10
-rw-r--r--package/davfs2/Makefile8
-rw-r--r--package/davfs2/patches/patch-configure_ac11
-rw-r--r--package/davfs2/patches/patch-src_Makefile_am12
-rw-r--r--package/davfs2/patches/patch-src_Makefile_in12
-rw-r--r--package/dbus-python/Makefile26
-rw-r--r--package/dbus-python/patches/patch-configure11
-rw-r--r--package/dbus/Makefile21
-rw-r--r--package/deco/Makefile1
-rw-r--r--package/dhcp/Makefile6
-rw-r--r--package/dhcp/patches/patch-bind_Makefile_in13
-rw-r--r--package/dhcp/patches/patch-common_discover_c13
-rw-r--r--package/dillo/Makefile2
-rw-r--r--package/dillo/patches/patch-dpi_https_c14
-rw-r--r--package/dnsmasq/Makefile4
-rw-r--r--package/dosfstools/Makefile9
-rw-r--r--package/drbd-utils/Makefile39
-rw-r--r--package/drbd-utils/files/drbd.conf21
-rw-r--r--package/drbd-utils/files/drbd.conffiles1
-rw-r--r--package/dropbear/Makefile13
-rw-r--r--package/dropbear/files/dropbear.init12
-rw-r--r--package/dropbear/files/dropbear.service11
-rw-r--r--package/dropbear/patches/patch-Makefile_in35
-rw-r--r--package/dropbear/patches/patch-svr-authpubkey_c109
-rw-r--r--package/dtc/Makefile7
-rw-r--r--package/dtc/patches/patch-Makefile11
-rw-r--r--package/e2fsprogs/Makefile27
-rw-r--r--package/elinks/Makefile75
-rw-r--r--package/elinks/patches/patch-Makefile_lib11
-rw-r--r--package/elinks/patches/patch-src_network_ssl_ssl_c16
-rw-r--r--package/esmtp/Makefile29
-rw-r--r--package/ethtool/Makefile6
-rw-r--r--package/expat/Makefile10
-rw-r--r--package/ffmpeg/Makefile32
-rw-r--r--package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S93
-rw-r--r--package/file/Makefile10
-rw-r--r--package/firefox/Makefile54
-rw-r--r--package/flac/Makefile7
-rw-r--r--package/flashrom/Makefile30
-rw-r--r--package/flatbuffers/Makefile39
-rw-r--r--package/fltk/Makefile4
-rw-r--r--package/fluxbox/Makefile2
-rw-r--r--package/fluxbox/patches/patch-util_fluxbox-remote_cc11
-rw-r--r--package/fmt/Makefile5
-rw-r--r--package/font-adobe-100dpi/Makefile4
-rw-r--r--package/font-adobe-75dpi/Makefile4
-rw-r--r--package/font-util/Makefile4
-rw-r--r--package/font-util/patches/patch-fontutil_pc_in13
-rw-r--r--package/fontconfig/Makefile9
-rw-r--r--package/fping/Makefile4
-rw-r--r--package/fprobe/patches/patch-src_fprobe_c20
-rw-r--r--package/freeradius-server/Makefile27
-rw-r--r--package/freeradius-server/patches/patch-acinclude_m4164
-rw-r--r--package/freeradius-server/patches/patch-scripts_libtool_mk14
-rw-r--r--package/freeradius-server/patches/patch-src_include_threads_h19
-rw-r--r--package/freeswitch/Makefile18
-rw-r--r--package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c22
-rw-r--r--package/freetype/Makefile20
-rw-r--r--package/freetype/patches/patch-builds_unix_freetype-config_in16
-rw-r--r--package/freetype/patches/patch-builds_unix_freetype2_in15
-rw-r--r--package/fribidi/Makefile6
-rw-r--r--package/fstrcmp/Makefile24
-rw-r--r--package/fstrcmp/patches/patch-Makefile_in11
-rw-r--r--package/fuse/Makefile8
-rw-r--r--package/fuse/patches/patch-include_fuse_kernel_h16
-rw-r--r--package/fuse3/Makefile47
-rw-r--r--package/fuse3/patches/patch-util_install_helper_sh22
-rw-r--r--package/fuse3/patches/patch-util_meson_build12
-rw-r--r--package/fwupdate/Makefile6
-rw-r--r--package/fwupdate/files/fwupdate.postinst3
-rw-r--r--package/fwupdate/files/fwupdate.service9
-rwxr-xr-xpackage/fwupdate/src/fwupdate45
-rwxr-xr-xpackage/fwupdate/src/fwvalidate50
-rw-r--r--package/gatling/Makefile12
-rw-r--r--package/gatling/patches/patch-GNUmakefile16
-rw-r--r--package/gatling/patches/patch-http_c19
-rw-r--r--package/gcc/Makefile2
-rw-r--r--package/gcr/Makefile19
-rw-r--r--package/gdb/Makefile10
-rw-r--r--package/gdbserver/Makefile14
-rw-r--r--package/gdbserver/patches/patch-gdb_nat_fork-inferior_c10
-rw-r--r--package/gdk-pixbuf/Makefile2
-rw-r--r--package/genimage/Makefile4
-rw-r--r--package/gettext/Makefile1
-rw-r--r--package/git/Makefile16
-rw-r--r--package/glib/Makefile71
-rw-r--r--package/glib/patches/patch-glib_gnulib_meson_build12
-rw-r--r--package/glib/patches/patch-gobject-2_0_pc_in10
-rw-r--r--package/glib/patches/patch-meson_build10
-rw-r--r--package/glibc/Makefile20
-rw-r--r--package/glu/Makefile6
-rw-r--r--package/gmediaserver/Makefile4
-rw-r--r--package/gmediaserver/patches/patch-src_metadata_c78
-rw-r--r--package/gmp/patches/patch-longlong_h11
-rw-r--r--package/gnupg2/Makefile4
-rw-r--r--package/gnutls/Makefile9
-rw-r--r--package/gnutls/patches/0001-uclibc.patch32
-rw-r--r--package/gpgme/Makefile4
-rw-r--r--package/gpm/patches/patch-src_headers_daemon_h11
-rw-r--r--package/gpsd/Makefile6
-rw-r--r--package/gpsd/patches/patch-SConstruct12
-rw-r--r--package/gpsd/patches/patch-gpsmon_c13
-rw-r--r--package/gptfdisk/Makefile4
-rw-r--r--package/grep/Makefile9
-rw-r--r--package/grub/Makefile2
-rw-r--r--package/grub/files/grub-dual.cfg12
-rw-r--r--package/grub/files/grub.cfg6
-rw-r--r--package/gst-plugins-base/Makefile11
-rw-r--r--package/gst-plugins-good/Makefile11
-rw-r--r--package/gzip/Makefile4
-rw-r--r--package/harfbuzz/Makefile22
-rw-r--r--package/harfbuzz/patches/patch-Makefile_in11
-rw-r--r--package/harfbuzz/patches/patch-src_harfbuzz_pc_in18
-rw-r--r--package/haveged/Makefile10
-rw-r--r--package/hdparm/Makefile4
-rw-r--r--package/heyu/Makefile10
-rw-r--r--package/heyu/patches/patch-tty_c12
-rw-r--r--package/heyu/patches/patch-x10state_c12
-rw-r--r--package/hostapd/Makefile7
-rw-r--r--package/htop/Makefile8
-rw-r--r--package/httping/Makefile20
-rw-r--r--package/hugo/Makefile37
-rw-r--r--package/hush/Makefile4
-rw-r--r--package/hush/files/config76
-rw-r--r--package/hwdata/Makefile51
-rw-r--r--package/hwdata/patches/patch-hwdata_pc_in10
-rw-r--r--package/hwids/Makefile61
-rw-r--r--package/icecast/Makefile5
-rw-r--r--package/ipmitool/Makefile12
-rw-r--r--package/iptables-snmp/Makefile30
-rw-r--r--package/iptables-snmp/patches/patch-Makefile_in11
-rw-r--r--package/iptables-snmp/patches/patch-iptables-snmp_c12
-rw-r--r--package/iptables-snmp/patches/patch-libiptc_libip6tc_c11
-rw-r--r--package/iptables/Makefile7
-rw-r--r--package/iptraf-ng/Makefile32
-rw-r--r--package/iptraf-ng/patches/patch-Makefile11
-rw-r--r--package/iptraf/patches/patch-src_Makefile9
-rw-r--r--package/iptraf/patches/patch-src_isdntab_c10
-rw-r--r--package/iptraf/patches/patch-src_packet_c40
-rw-r--r--package/irssi/Makefile4
-rw-r--r--package/iw/Makefile4
-rw-r--r--package/jack/Makefile2
-rw-r--r--package/jack2/Makefile11
-rw-r--r--package/jack2/patches/patch-wscript23
-rw-r--r--package/kexec-tools/Makefile4
-rw-r--r--package/kismet/Makefile51
-rw-r--r--package/kismet/patches/patch-configure_in12
-rw-r--r--package/kismet/patches/patch-dumpfile_tuntap_h18
-rw-r--r--package/kmod/Makefile5
-rw-r--r--package/knxd/Makefile13
-rw-r--r--package/knxd/patches/patch-tools_version_sh10
-rw-r--r--package/kodi/Makefile96
-rw-r--r--package/kodi/files/kodi.init4
-rw-r--r--package/kodi/patches/patch-CMakeLists_txt27
-rw-r--r--package/kodi/patches/patch-cmake_KodiConfig_cmake_in20
-rw-r--r--package/kodi/patches/patch-tools_depends_native_TexturePacker_CMakeLists_txt20
-rw-r--r--package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp15
-rw-r--r--package/kodi/patches/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA_cpp30
-rw-r--r--package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp31
-rw-r--r--package/lame/Makefile4
-rw-r--r--package/lftp/Makefile4
-rw-r--r--package/lftp/patches/patch-src_FileCopy_cc11
-rw-r--r--package/lftp/patches/patch-src_NetAccess_cc11
-rw-r--r--package/lftp/patches/patch-src_ResMgr_cc11
-rw-r--r--package/lftp/patches/patch-src_Speedometer_cc11
-rw-r--r--package/lftp/patches/patch-src_lftp_ssl_cc38
-rw-r--r--package/libXrandr/Makefile2
-rw-r--r--package/libao/Makefile4
-rw-r--r--package/libass/Makefile4
-rw-r--r--package/libassuan/Makefile4
-rw-r--r--package/libbsd/Makefile6
-rw-r--r--package/libcap-ng/Makefile28
-rw-r--r--package/libcap-ng/patches/patch-INSTALL521
-rw-r--r--package/libcap-ng/patches/patch-autogen_sh9
-rw-r--r--package/libcdada/Makefile31
-rw-r--r--package/libcdada/patches/patch-configure_ac22
-rw-r--r--package/libcdio/Makefile2
-rw-r--r--package/libcec/Makefile17
-rw-r--r--package/libcec/patches/libcec-00-imx6-support.patch879
-rw-r--r--package/libcec/patches/patch-src_cec-client_CMakeLists_txt10
-rw-r--r--package/libdisplay-info/Makefile31
-rw-r--r--package/libdrm/Makefile6
-rw-r--r--package/libedit/Makefile26
-rw-r--r--package/libedit/patches/patch-src_sys_h11
-rw-r--r--package/libepoxy/Makefile18
-rw-r--r--package/libesmtp/Makefile38
-rw-r--r--package/libesmtp/patches/patch-Makefile_am12
-rw-r--r--package/libesmtp/patches/patch-crammd5_Makefile_am12
-rw-r--r--package/libesmtp/patches/patch-login_Makefile_am12
-rw-r--r--package/libesmtp/patches/patch-meson_build42
-rw-r--r--package/libesmtp/patches/patch-meson_options_txt7
-rw-r--r--package/libesmtp/patches/patch-ntlm_Makefile_am12
-rw-r--r--package/libesmtp/patches/patch-ntlm_meson_build11
-rw-r--r--package/libesmtp/patches/patch-plain_Makefile_am12
-rw-r--r--package/libevdev/Makefile25
-rw-r--r--package/libevent/Makefile6
-rw-r--r--package/libffi/Makefile5
-rw-r--r--package/libgcc/Makefile2
-rw-r--r--package/libgcrypt/Makefile4
-rw-r--r--package/libgcrypt/patches/patch-cipher_Makefile_am11
-rw-r--r--package/libgcrypt/patches/patch-cipher_Makefile_in11
-rw-r--r--package/libgpg-error/Makefile14
-rw-r--r--package/libgpg-error/patches/patch-src_gen-lock-obj_sh11
-rw-r--r--package/libgpg-error/src/src/syscfg/lock-obj-pub.xtensa-unknown-linux-gnu.h24
-rw-r--r--package/libgtk3/Makefile10
-rw-r--r--package/libinih/Makefile4
-rw-r--r--package/libinput/Makefile39
-rw-r--r--package/libjansson/Makefile8
-rw-r--r--package/libksba/Makefile4
-rw-r--r--package/libmd/Makefile25
-rw-r--r--package/libmicrohttpd/Makefile6
-rw-r--r--package/libmpdclient/Makefile4
-rw-r--r--package/libmpdclient/patches/patch-src_socket_c10
-rw-r--r--package/libmpdclient/patches/patch-src_sync_c11
-rw-r--r--package/libnettle/Makefile4
-rw-r--r--package/libnl/patches/patch-autogen_sh7
-rw-r--r--package/libnl/patches/patch-lib_utils_c6
-rw-r--r--package/libnl/patches/patch-src_lib_utils_c8
-rw-r--r--package/libowfat/Makefile15
-rw-r--r--package/libowfat/patches/patch-GNUmakefile28
-rw-r--r--package/libp11/Makefile10
-rw-r--r--package/libp11/patches/patch-ltmain_sh11
-rw-r--r--package/libpcap/Makefile4
-rw-r--r--package/libpciaccess/Makefile4
-rw-r--r--package/libptytty/Makefile32
-rw-r--r--package/libptytty/patches/patch-CMakeLists_txt13
-rw-r--r--package/libressl/Makefile12
-rw-r--r--package/libressl/patches/patch-Makefile_in11
-rw-r--r--package/libseat/Makefile31
-rw-r--r--package/libshout/Makefile4
-rw-r--r--package/libsndfile/Makefile4
-rw-r--r--package/libssh2/Makefile4
-rw-r--r--package/libtasn1/Makefile4
-rw-r--r--package/libtirpc/Makefile4
-rw-r--r--package/libtirpc/patches/patch-src_clnt_bcast_c11
-rw-r--r--package/libtirpc/patches/patch-src_clnt_fd_locks_h11
-rw-r--r--package/libtorrent/Makefile11
-rw-r--r--package/libtorrent/patches/patch-configure_ac18
-rw-r--r--package/libtorrent/patches/patch-scripts_ax_check_zlib_m411
-rw-r--r--package/libudfread/Makefile28
-rw-r--r--package/liburcu/Makefile27
-rw-r--r--package/libvncserver/Makefile33
-rw-r--r--package/libvpx/Makefile16
-rw-r--r--package/libvpx/patches/patch-configure18
-rw-r--r--package/libwebp/Makefile14
-rw-r--r--package/libwebsockets/Makefile31
-rw-r--r--package/libx264/Makefile2
-rw-r--r--package/libxcb/Makefile10
-rw-r--r--package/libxcrypt/Makefile30
-rw-r--r--package/libxkbcommon/Makefile35
-rw-r--r--package/libxml2/Makefile34
-rw-r--r--package/libxml2/patches/patch-Makefile_am14
-rw-r--r--package/libxml2/patches/patch-configure_ac96
-rw-r--r--package/libxml2/patches/patch-python_Makefile_am12
-rw-r--r--package/libxslt/Makefile12
-rw-r--r--package/lighttpd/Makefile18
-rw-r--r--package/lirc/Makefile5
-rw-r--r--package/logitechmediaserver/Makefile8
-rw-r--r--package/logitechmediaserver/patches/patch-Slim_Utils_OS_Linux_pm13
-rw-r--r--package/logrotate/Makefile11
-rw-r--r--package/logrotate/patches/patch-Makefile36
-rw-r--r--package/ltp/Makefile21
-rw-r--r--package/ltp/patches/patch-Makefile11
-rw-r--r--package/ltp/patches/patch-runtest_mm8
-rw-r--r--package/ltp/patches/patch-runtest_sched13
-rw-r--r--package/ltp/patches/patch-runtest_syscalls11
-rw-r--r--package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify02_c10
-rw-r--r--package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify04_c10
-rw-r--r--package/lttng-tools/Makefile9
-rw-r--r--package/lttng-tools/patches/patch-configure_ac19
-rw-r--r--package/lttng-tools/patches/patch-src_bin_lttng-sessiond_thread_c11
-rw-r--r--package/lttng-tools/patches/patch-src_common_fd-handle_c20
-rw-r--r--package/lttng-tools/patches/patch-src_common_shm_c20
-rw-r--r--package/luajit/Makefile12
-rw-r--r--package/lvm/Makefile4
-rw-r--r--package/lvm/files/lvm.conf4
-rw-r--r--package/lynx/Makefile13
-rw-r--r--package/lynx/patches/patch-WWW_Library_Implementation_HTTP_c11
-rw-r--r--package/lynx/patches/patch-WWW_Library_Implementation_HTUtils_h34
-rw-r--r--package/lynx/patches/patch-makefile_in11
-rw-r--r--package/lynx/patches/patch-src_chrtrans_makeuctb_c10
-rw-r--r--package/lz4/Makefile4
-rw-r--r--package/lz4/patches/patch-lib_liblz4_pc_in10
-rw-r--r--package/lzip/Makefile4
-rw-r--r--package/lzip/patches/patch-configure14
-rw-r--r--package/m4/Makefile4
-rw-r--r--package/m4/patches/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch166
-rw-r--r--package/m4/patches/patch-lib_vasnprintf_c28
-rw-r--r--package/make/Makefile6
-rw-r--r--package/make/patches/patch-configure_ac14
-rw-r--r--package/mariadb/Makefile20
-rw-r--r--package/mbedtls/Makefile12
-rw-r--r--package/mbedtls/patches/patch-Makefile35
-rw-r--r--package/mc/Makefile12
-rw-r--r--package/mc/patches/patch-lib_tty_tty-ncurses_c42
-rw-r--r--package/mdadm/Makefile8
-rw-r--r--package/mdadm/patches/patch-Makefile32
-rw-r--r--package/mesa-demos/Makefile25
-rw-r--r--package/mesa/Makefile34
-rw-r--r--package/mesa/patches/patch-src_mapi_glapi_glapi_gentable_c14
-rw-r--r--package/meson/Makefile4
-rw-r--r--package/meson/src/cross-compilation.conf.in8
-rw-r--r--package/mgetty/Makefile11
-rw-r--r--package/mgetty/patches/patch-Makefile77
-rw-r--r--package/mgetty/patches/patch-g3_Makefile12
-rw-r--r--package/mgetty/patches/patch-g3_g3cat_c38
-rw-r--r--package/mgetty/patches/patch-g3_pbm2g3_c38
-rw-r--r--package/mgetty/patches/patch-logfile_c17
-rw-r--r--package/midori/Makefile49
-rw-r--r--package/midori/patches/patch-CMakeLists_txt13
-rw-r--r--package/minijail/Makefile38
-rw-r--r--package/minijail/patches/patch-common_mk15
-rw-r--r--package/minijail/patches/patch-libminijail_c12
-rw-r--r--package/mongrel2/Makefile8
-rw-r--r--package/mongrel2/patches/patch-Makefile36
-rw-r--r--package/mongrel2/patches/patch-tools_m2sh_Makefile14
-rw-r--r--package/monit/Makefile8
-rw-r--r--package/monit/patches/patch-configure49
-rw-r--r--package/monit/patches/patch-libmonit_configure49
-rw-r--r--package/mopd/Makefile1
-rw-r--r--package/mopd/src/Makefile2
-rw-r--r--package/mosquitto/Makefile6
-rw-r--r--package/motion/Makefile18
-rw-r--r--package/motion/patches/patch-config_h33
-rw-r--r--package/motion/patches/patch-configure20
-rw-r--r--package/motion/patches/patch-motion_init-Debian11
-rw-r--r--package/motion/patches/patch-motion_init-FreeBSD_sh11
-rw-r--r--package/mpc/Makefile11
-rw-r--r--package/mpd/Makefile120
-rw-r--r--package/mpd/files/mpd.conf1
-rw-r--r--package/mpg123/Makefile15
-rw-r--r--package/mpg123/patches/patch-configure_ac11
-rw-r--r--package/mplayer/Makefile7
-rw-r--r--package/mplayer/patches/patch-stream_asf_streaming_c27
-rw-r--r--package/mtdev/Makefile26
-rw-r--r--package/mtr/Makefile11
-rw-r--r--package/mtr/patches/501-dns.patch511
-rw-r--r--package/mtr/patches/patch-curses_c21
-rw-r--r--package/mtr/patches/patch-report_c30
-rw-r--r--package/musl/Makefile2
-rw-r--r--package/mutt/Makefile4
-rw-r--r--package/mympd/Makefile33
-rw-r--r--package/mympd/files/mympd.init31
-rw-r--r--package/mympd/files/mympd.postinst7
-rw-r--r--package/mympd/patches/patch-src_compile_time_h_in13
-rw-r--r--package/mympd/patches/patch-src_main_c21
-rw-r--r--package/ncurses/Makefile11
-rw-r--r--package/neon/Makefile8
-rw-r--r--package/netperf/Makefile1
-rw-r--r--package/nfs-utils/Makefile12
-rw-r--r--package/nfs-utils/files/nfsd.exports2
-rw-r--r--package/nfs-utils/patches/0001-Include-a-local-copy-of-sys-queue.h-instead-of-the-l.patch37
-rw-r--r--package/nfs-utils/patches/0002-drop-not-needed-tools-from-being-compiled.patch21
-rw-r--r--package/nfs-utils/patches/0003-Build-tools-with-host-compiler.patch24
-rw-r--r--package/nfs-utils/patches/patch-support_reexport_fsidd_c10
-rw-r--r--package/nfs-utils/patches/patch-support_reexport_reexport_c10
-rw-r--r--package/nfs-utils/patches/patch-tools_rpcgen_Makefile_am13
-rw-r--r--package/nginx/Makefile4
-rw-r--r--package/nginx/files/nginx.conf5
-rw-r--r--package/nginx/files/nginx.postinst3
-rw-r--r--package/nmap/Makefile12
-rw-r--r--package/nodejs/Makefile28
-rw-r--r--package/nodejs/patches/patch-deps_v8_src_base_debug_stack_trace_posix_cc11
-rw-r--r--package/nodejs/patches/patch-deps_v8_src_log-utils_h11
-rw-r--r--package/nut/Makefile6
-rw-r--r--package/olsrd/Makefile13
-rw-r--r--package/olsrd/patches/patch-lib_pud_Makefile11
-rw-r--r--package/olsrd/patches/patch-lib_pud_src_gpsdclient_c98
-rw-r--r--package/olsrd/patches/patch-lib_pud_src_gpsdclient_h16
-rw-r--r--package/olsrd/patches/patch-src_cfgparser_local_mk17
-rw-r--r--package/open-iscsi/Makefile30
-rw-r--r--package/open-iscsi/patches/patch-usr_Makefile19
-rw-r--r--package/open-iscsi/patches/patch-usr_idbm_c10
-rw-r--r--package/open-iscsi/patches/patch-usr_iscsi_sysfs_c10
-rw-r--r--package/open-iscsi/patches/patch-usr_log_h17
-rw-r--r--package/open-iscsi/patches/patch-usr_mgmt_ipc_c35
-rw-r--r--package/openobex/Makefile4
-rw-r--r--package/opensbi/Makefile29
-rw-r--r--package/opensc/Makefile9
-rw-r--r--package/opensips/Makefile17
-rw-r--r--package/openssh/Makefile20
-rw-r--r--package/openssl-pkcs11/Makefile30
-rw-r--r--package/openssl-pkcs11/patches/patch-ltmain_sh11
-rw-r--r--package/openssl/Makefile117
-rw-r--r--package/openssl/patches/patch-Configurations_unix-Makefile_tmpl20
-rw-r--r--package/openswan/Makefile16
-rw-r--r--package/openswan/patches/patch-Makefile_inc23
-rw-r--r--package/openswan/patches/patch-include_arpa_nameser_h128
-rw-r--r--package/openswan/patches/patch-lib_libalgoparse_kernel_alg_c11
-rw-r--r--package/openswan/patches/patch-lib_libalgoparse_klips_interface_c11
-rw-r--r--package/openswan/patches/patch-lib_libipsecconf_keywords_c11
-rw-r--r--package/openswan/patches/patch-lib_libipsecconf_oeconns_c11
-rw-r--r--package/openswan/patches/patch-lib_libopenswan_kernel_alg_c11
-rw-r--r--package/openswan/patches/patch-lib_liboswlog_oswlog_c11
-rw-r--r--package/openvpn/Makefile10
-rw-r--r--package/openvpn/patches/patch-src_openvpn_ssl_openssl_c29
-rw-r--r--package/opkg/Makefile5
-rw-r--r--package/opus/Makefile4
-rw-r--r--package/owfs/Makefile6
-rw-r--r--package/p5-anyevent/Makefile4
-rw-r--r--package/p5-sub-name/Makefile6
-rw-r--r--package/p5-xml-parser-expat/Makefile4
-rw-r--r--package/p5-xml-parser/Makefile4
-rw-r--r--package/p5-yaml-xs/Makefile6
-rw-r--r--package/p8-platform/Makefile29
-rw-r--r--package/pango/Makefile20
-rw-r--r--package/parted/Makefile6
-rw-r--r--package/pciutils/Makefile3
-rw-r--r--package/pcre/Makefile4
-rw-r--r--package/pcre2/Makefile40
-rw-r--r--package/pdnsd/Makefile41
-rw-r--r--package/pdnsd/files/pdnsd.conf36
-rw-r--r--package/pdnsd/files/pdnsd.conffiles1
-rw-r--r--package/pdnsd/files/pdnsd.init34
-rw-r--r--package/pdnsd/files/pdnsd.postinst3
-rw-r--r--package/perl/Makefile7
-rw-r--r--package/php/Makefile22
-rw-r--r--package/php/files/php.init4
-rw-r--r--package/php/patches/patch-ext_standard_crc32_c73
-rw-r--r--package/picocom/Makefile4
-rw-r--r--package/picocom/patches/patch-Makefile18
-rw-r--r--package/picocom/patches/patch-linenoise-1_0_Makefile11
-rw-r--r--package/pkgconf/Makefile15
-rw-r--r--package/platform/Makefile26
-rw-r--r--package/pmacct/Makefile11
-rw-r--r--package/pmacct/patches/patch-configure41
-rw-r--r--package/popt/Makefile6
-rw-r--r--package/popt/patches/patch-Makefile_am11
-rw-r--r--package/protobuf-c/Makefile33
-rw-r--r--package/protobuf/Makefile6
-rw-r--r--package/proxychains-ng/Makefile32
-rw-r--r--package/pulseaudio/Makefile49
-rw-r--r--package/pulseaudio/patches/patch-Makefile_am11
-rw-r--r--package/pulseaudio/patches/patch-configure_ac55
-rw-r--r--package/py-spidev/Makefile6
-rw-r--r--package/pycurl/Makefile14
-rw-r--r--package/pycurl/patches/patch-setup_py12
-rw-r--r--package/pyrex/Makefile38
-rw-r--r--package/python-mako/Makefile33
-rw-r--r--package/python-setuptools/Makefile33
-rw-r--r--package/python2/Makefile150
-rw-r--r--package/python2/files/patch-Lib_distutils_sysconfig_py10
-rw-r--r--package/python2/files/python-config.patch21
-rw-r--r--package/python2/patches/0001-2.7-bpo-33127-Compatibility-patch-for-LibreSSL-2.7.0.patch79
-rw-r--r--package/python2/patches/patch-Makefile_pre_in40
-rw-r--r--package/python2/patches/patch-configure_ac22
-rw-r--r--package/python2/patches/patch-setup_py115
-rw-r--r--package/python3/Makefile61
-rw-r--r--package/python3/patches/patch-setup_py11
-rw-r--r--package/quagga/Makefile7
-rw-r--r--package/rdesktop/Makefile16
-rw-r--r--package/rpcbind/Makefile11
-rw-r--r--package/rpcbind/files/rpcbind.init4
-rw-r--r--package/rpcbind/patches/patch-src_security_c50
-rw-r--r--package/rrdtool/Makefile10
-rw-r--r--package/rsync/Makefile6
-rw-r--r--package/rtorrent/Makefile2
-rw-r--r--package/ruby/Makefile13
-rw-r--r--package/ruby/patches/0001-fix-default-coroutine-selection.patch21
-rw-r--r--package/rxvt-unicode/Makefile14
-rw-r--r--package/samba/Makefile9
-rw-r--r--package/samba/files/cache.txt13
-rw-r--r--package/samba/files/samba.init5
-rw-r--r--package/samba/patches/patch-nsswitch_wins_c17
-rw-r--r--package/samba/patches/patch-source3_lib_util_c18
-rw-r--r--package/sane-backends/Makefile12
-rw-r--r--package/sane-backends/patches/patch-Makefile_in12
-rw-r--r--package/sane-backends/patches/patch-backend_canon630u-common_c12
-rw-r--r--package/sane-backends/patches/patch-backend_epson2-commands_c10
-rw-r--r--package/sane-backends/patches/patch-backend_genesys_c10
-rw-r--r--package/sane-backends/patches/patch-backend_genesys_h10
-rw-r--r--package/sane-backends/patches/patch-backend_genesys_low_c10
-rw-r--r--package/sane-backends/patches/patch-backend_hp3900_rts8822_c10
-rw-r--r--package/sane-backends/patches/patch-backend_hp5400_sanei_c10
-rw-r--r--package/sane-backends/patches/patch-backend_hp5590_low_c10
-rw-r--r--package/sane-backends/patches/patch-backend_kvs20xx_opt_c10
-rw-r--r--package/sane-backends/patches/patch-backend_microtek_c11
-rw-r--r--package/sane-backends/patches/patch-backend_pixma_bjnp_c22
-rw-r--r--package/sane-backends/patches/patch-backend_pixma_common_h13
-rw-r--r--package/sane-backends/patches/patch-backend_pixma_imageclass_c12
-rw-r--r--package/sane-backends/patches/patch-backend_rts88xx_lib_c10
-rw-r--r--package/sane-backends/patches/patch-backend_sm3600-scanutil_c11
-rw-r--r--package/sane-backends/patches/patch-backend_umax1220u-common_c12
-rw-r--r--package/sane-backends/patches/patch-backend_xerox_mfp_c10
-rw-r--r--package/sane-backends/patches/patch-configure90
-rw-r--r--package/sane-backends/patches/patch-configure_in11
-rw-r--r--package/sane-backends/patches/patch-include_sane_sanei_tcp_h10
-rw-r--r--package/sane-backends/patches/patch-include_sane_sanei_udp_h10
-rw-r--r--package/scons/Makefile14
-rw-r--r--package/screen/Makefile6
-rw-r--r--package/sdl/Makefile65
-rw-r--r--package/sdl2-mixer/Makefile29
-rw-r--r--package/sdl2-net/Makefile29
-rw-r--r--package/sdl2/Makefile33
-rw-r--r--package/section.lst1
-rw-r--r--package/serdisplib/Makefile5
-rw-r--r--package/serdisplib/patches/patch-Makefile_in12
-rw-r--r--package/serdisplib/patches/patch-configure22
-rw-r--r--package/serdisplib/patches/patch-include_serdisplib_serdisp_control_h12
-rw-r--r--package/serdisplib/patches/patch-src_Makefile_in12
-rw-r--r--package/serdisplib/patches/patch-src_serdisp_connect_c21
-rw-r--r--package/serdisplib/patches/patch-src_serdisp_connect_usb_c39
-rw-r--r--package/serdisplib/patches/patch-src_serdisp_control_c48
-rw-r--r--package/serdisplib/patches/patch-src_serdisp_tools_c30
-rw-r--r--package/shadow/Makefile32
-rw-r--r--package/shairport-sync/Makefile2
-rwxr-xr-xpackage/simpleinit/files/rc3
-rw-r--r--package/siproxd/Makefile4
-rw-r--r--package/sipsak/Makefile12
-rw-r--r--package/sipsak/patches/patch-configure9009
-rw-r--r--package/sipsak/patches/patch-configure_ac10
-rw-r--r--package/sipsak/patches/patch-header_f_c11
-rw-r--r--package/sipsak/patches/patch-header_f_h9
-rw-r--r--package/sngrep/Makefile4
-rw-r--r--package/snort/Makefile4
-rw-r--r--package/socat/Makefile4
-rw-r--r--package/sofia-sip/Makefile28
-rw-r--r--package/spandsp/Makefile30
-rw-r--r--package/spdlog/Makefile31
-rw-r--r--package/sqlite/Makefile15
-rw-r--r--package/squid/Makefile33
-rw-r--r--package/strace/Makefile7
-rw-r--r--package/strace/patches/riscv32.patch282
-rw-r--r--package/stress-ng/Makefile2
-rw-r--r--package/strongswan/Makefile4
-rw-r--r--package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c10
-rw-r--r--package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c.orig24
-rw-r--r--package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_private_key_c11
-rw-r--r--package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_public_key_c11
-rw-r--r--package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_x_diffie_hellman_c6
-rw-r--r--package/strongswan/patches/patch-src_starter_netkey_c18
-rw-r--r--package/subversion/Makefile9
-rw-r--r--package/sudo/Makefile4
-rw-r--r--package/supl/Makefile35
-rw-r--r--package/supl/patches/patch-configure11
-rw-r--r--package/supl/patches/patch-src_Makefile16
-rw-r--r--package/supl/patches/patch-src_supl-client_c40
-rw-r--r--package/supl/patches/patch-src_supl_c46
-rw-r--r--package/supl/patches/patch-src_supl_h19
-rw-r--r--package/sysdig/Makefile48
-rw-r--r--package/syslog-ng/Makefile13
-rw-r--r--package/syslog-ng/patches/patch-CMakeLists_txt10
-rw-r--r--package/sysstat/Makefile10
-rw-r--r--package/sysstat/patches/patch-Makefile79
-rw-r--r--package/systemd/Makefile155
-rw-r--r--package/systemd/files/systemd.postinst27
-rw-r--r--package/systemd/files/wired.network5
-rw-r--r--package/taglib/Makefile6
-rw-r--r--package/taglib/patches/patch-taglib_pc_cmake19
-rw-r--r--package/talloc/Makefile7
-rw-r--r--package/tar/Makefile4
-rw-r--r--package/tcpdump/Makefile8
-rw-r--r--package/tcsh/Makefile4
-rw-r--r--package/tcsh/patches/patch-Makefile_in18
-rw-r--r--package/tcsh/patches/patch-sh_h23
-rw-r--r--package/tcsh/patches/patch-sh_proc_c11
-rw-r--r--package/tinyproxy/Makefile21
-rw-r--r--package/tinyproxy/files/tinyproxy.conf22
-rw-r--r--package/tinyproxy/files/tinyproxy.init4
-rw-r--r--package/tinyproxy/patches/patch-Makefile_am10
-rw-r--r--package/tinyproxy/patches/patch-configure_ac27
-rw-r--r--package/tinyxml2/Makefile33
-rw-r--r--package/tmux/Makefile7
-rw-r--r--package/tmux/patches/patch-configure_ac22
-rw-r--r--package/tntnet/Makefile68
-rw-r--r--package/tntnet/files/mime.conf22
-rw-r--r--package/tntnet/files/tntnet.conffiles3
-rw-r--r--package/tntnet/files/tntnet.init27
-rw-r--r--package/tntnet/files/tntnet.postinst6
-rw-r--r--package/tntnet/files/tntnet.properties31
-rw-r--r--package/tntnet/files/tntnet.xml49
-rw-r--r--package/tntnet/patches/patch-framework_common_gnutls_cpp10
-rw-r--r--package/toolbox/src/Makefile2
-rw-r--r--package/tor/Makefile9
-rw-r--r--package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_c14
-rw-r--r--package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_h14
-rw-r--r--package/trafshow/Makefile31
-rw-r--r--package/trafshow/patches/patch-Makefile_in54
-rw-r--r--package/trafshow/patches/patch-domain_resolver_c680
-rw-r--r--package/trafshow/patches/patch-session_c11
-rw-r--r--package/transmission/Makefile12
-rw-r--r--package/trinity/Makefile28
-rw-r--r--package/trinity/patches/patch-Makefile10
-rw-r--r--package/trinity/patches/patch-syscalls_prctl_c11
-rw-r--r--package/tvheadend/Makefile9
-rw-r--r--package/tvheadend/patches/patch-configure22
-rw-r--r--package/tvheadend/patches/patch-configure.orig11
-rw-r--r--package/twm/Makefile4
-rw-r--r--package/tzdata/Makefile4
-rw-r--r--package/tzdata/patches/patch-Makefile20
-rw-r--r--package/u-boot-h8300/Makefile3
-rw-r--r--package/u-boot-h8300/patches/dtc.patch11
-rw-r--r--package/u-boot-h8300/patches/patch-include_image_h13
-rw-r--r--package/u-boot/Makefile63
-rw-r--r--package/u-boot/files/boot.script.bpizero4
-rw-r--r--package/u-boot/files/boot.script.imx66
-rw-r--r--package/u-boot/files/boot.script.rockpi44
-rw-r--r--package/u-boot/files/fw_env.config2
-rwxr-xr-xpackage/u-boot/files/uboot_print_env5
-rwxr-xr-xpackage/u-boot/files/uboot_set_env5
-rw-r--r--package/u-boot/patches/patch-configs_bananapi_m2_p2_zero_defconfig18
-rw-r--r--package/u-boot/patches/patch-configs_rock-pi-4-rk3399_defconfig11
-rw-r--r--package/u-boot/patches/patch-configs_rock-pi-4c-rk3399_defconfig11
-rw-r--r--package/u-boot/patches/patch-tools_Makefile11
-rw-r--r--package/u-boot/src/bl31.elfbin0 -> 365344 bytes
-rw-r--r--package/uacme/Makefile30
-rw-r--r--package/uclibc-ng-test/Makefile15
-rw-r--r--package/uclibc-ng/Makefile8
-rw-r--r--package/udp-broadcast-relay/Makefile8
-rw-r--r--package/udp-broadcast-relay/patches/patch-main_c32
-rw-r--r--package/urlgrabber/Makefile38
-rw-r--r--package/urlgrabber/patches/patch-setup_py24
-rw-r--r--package/util-linux/Makefile10
-rw-r--r--package/v4l-utils/Makefile18
-rw-r--r--package/v4l-utils/patches/patch-utils_rds_rds-saa6588_c15
-rw-r--r--package/valgrind/Makefile17
-rw-r--r--package/vilistextum/Makefile2
-rw-r--r--package/vim/Makefile18
-rw-r--r--package/vlc/Makefile27
-rw-r--r--package/vlc/patches/patch-Makefile_am11
-rw-r--r--package/vlc/patches/patch-bin_Makefile_am11
-rw-r--r--package/vlc/patches/patch-configure_ac129
-rw-r--r--package/vlc/patches/patch-include_vlc_fixups_h15
-rw-r--r--package/vlc/patches/patch-modules_codec_avcodec_audio_c11
-rw-r--r--package/vlc/patches/patch-modules_codec_avcodec_encoder_c92
-rw-r--r--package/vlc/patches/patch-modules_codec_avcodec_vaapi_c11
-rw-r--r--package/vlc/patches/patch-modules_codec_avcodec_video_c51
-rw-r--r--package/vlc/patches/patch-modules_demux_avformat_demux_c46
-rw-r--r--package/vlc/patches/patch-src_posix_error_c13
-rw-r--r--package/vlc/patches/patch-src_posix_thread_c11
-rw-r--r--package/vnstat/Makefile10
-rw-r--r--package/w3m/Makefile2
-rw-r--r--package/wayland-protocols/Makefile33
-rw-r--r--package/wayland-protocols/patches/patch-meson_build11
-rw-r--r--package/wayland-protocols/patches/patch-wayland-protocols_pc_in10
-rw-r--r--package/wayland/Makefile53
-rw-r--r--package/webkitgtk/Makefile18
-rw-r--r--package/webkitgtk/patches/patch-Source_PlatformGTK_cmake7
-rw-r--r--package/weechat/Makefile21
-rw-r--r--package/weston/Makefile60
-rw-r--r--package/wifidog/Makefile1
-rw-r--r--package/wolfssl/Makefile4
-rw-r--r--package/wpa_supplicant/Makefile10
-rw-r--r--package/wput/Makefile1
-rw-r--r--package/x11vnc/Makefile19
-rw-r--r--package/x11vnc/patches/patch-src_util_c12
-rw-r--r--package/x11vnc/patches/patch-src_util_h15
-rw-r--r--package/xawtv/Makefile8
-rw-r--r--package/xcb-proto/Makefile29
-rw-r--r--package/xcb-proto/patches/patch-xcb-proto_pc_in14
-rw-r--r--package/xdm/Makefile9
-rw-r--r--package/xenomai/Makefile49
-rw-r--r--package/xf86-input-evdev/Makefile4
-rw-r--r--package/xfsprogs/Makefile8
-rw-r--r--package/xkeyboard-config/Makefile14
-rw-r--r--package/xkeyboard-config/patches/patch-Makefile_am10
-rw-r--r--package/xkeyboard-config/patches/patch-configure_ac13
-rw-r--r--package/xkeyboard-config/patches/patch-rules_Makefile_am10
-rw-r--r--package/xkeyboard-config/patches/patch-rules_base_extras_xml_in855
-rw-r--r--package/xkeyboard-config/patches/patch-rules_base_xml_in7654
-rw-r--r--package/xkeyboard-config/patches/patch-rules_evdev_extras_xml_in855
-rw-r--r--package/xkeyboard-config/patches/patch-rules_evdev_xml_in7654
-rw-r--r--package/xorg-server/Makefile11
-rw-r--r--package/xorg-server/patches/patch-configure11
-rw-r--r--package/xorg-server/patches/patch-include_misc_h59
-rw-r--r--package/xsm/Makefile2
-rw-r--r--package/xterm/Makefile10
-rw-r--r--package/xwayland/Makefile39
-rw-r--r--package/xwayland/patches/patch-hw_xwayland_xwayland-glx_c12
-rw-r--r--package/xwayland/patches/patch-include_misc_h51
-rw-r--r--package/xz/Makefile42
-rw-r--r--package/xz/patches/patch-src_liblzma_liblzma_pc_in15
-rw-r--r--package/yajl/Makefile7
-rw-r--r--package/ympd/Makefile29
-rw-r--r--package/ympd/files/ympd.init29
-rw-r--r--package/ympd/files/ympd.postinst3
-rw-r--r--package/zlib-ng/Makefile29
-rw-r--r--package/zlib/Makefile6
-rw-r--r--package/zsh/Makefile4
-rw-r--r--package/zstd/Makefile38
-rw-r--r--package/zstd/patches/patch-lib_Makefile11
-rw-r--r--package/zstd/patches/patch-programs_Makefile11
-rw-r--r--rules.mk1
-rwxr-xr-xscripts/config.guess1233
-rwxr-xr-xscripts/config.sub303
-rwxr-xr-xscripts/create.sh10
-rwxr-xr-xscripts/flash-uboot.sh22
-rwxr-xr-xscripts/flash.sh2
-rwxr-xr-xscripts/install.sh75
-rwxr-xr-xscripts/kflash.py1566
-rwxr-xr-xscripts/nsim.sh11
-rwxr-xr-xscripts/prereq.sh75
-rwxr-xr-xscripts/tarpkg4
-rw-r--r--target/Makefile4
-rw-r--r--target/aarch64/Makefile36
-rw-r--r--target/aarch64/kernel/raspberry-pi3p-6410
-rw-r--r--target/aarch64/kernel/raspberry-pi4-641874
-rw-r--r--target/aarch64/kernel/raspberry-pi5149
-rw-r--r--target/aarch64/kernel/rockpi4-plus863
-rw-r--r--target/aarch64/rockpi4-plus/extlinux.conf4
-rw-r--r--target/aarch64/rockpi4-plus/genimage-dual.cfg34
-rw-r--r--target/aarch64/rockpi4-plus/genimage.cfg45
-rw-r--r--target/aarch64/systems/raspberry-pi3p-6426
-rw-r--r--target/aarch64/systems/raspberry-pi4-6426
-rw-r--r--target/aarch64/systems/raspberry-pi526
-rw-r--r--target/aarch64/systems/rockpi4-plus27
-rw-r--r--target/alpha/kernel/qemu-alpha1
-rw-r--r--target/arc/Makefile34
-rw-r--r--target/arc/kernel/qemu-arc3
-rw-r--r--target/arc/kernel/synopsys-hsdk7
-rw-r--r--target/arc/kernel/synopsys-nsim7
-rw-r--r--target/arc/systems/qemu-arc8
-rw-r--r--target/arc/uclibc-ng.config26
-rw-r--r--target/arch.lst1
-rw-r--r--target/arm/Makefile46
-rw-r--r--target/arm/banana-p2-zero/extlinux.conf4
-rw-r--r--target/arm/banana-p2-zero/genimage.cfg35
-rw-r--r--target/arm/kernel/banana-p2-zero323
-rw-r--r--target/arm/kernel/qemu-arm-realview-eb-mpcore1
-rw-r--r--target/arm/kernel/qemu-arm-spitz6
-rw-r--r--target/arm/kernel/qemu-arm-terrier6
-rw-r--r--target/arm/kernel/qemu-arm-versatilepb3
-rw-r--r--target/arm/kernel/qemu-arm-vexpress-a924
-rw-r--r--target/arm/kernel/raspberry-pi3p25
-rw-r--r--target/arm/kernel/raspberry-pi442
-rw-r--r--target/arm/kernel/solidrun-imx615
-rw-r--r--target/arm/kernel/st-stm32f746g28
-rw-r--r--target/arm/st-stm32f746g/extlinux.conf4
-rw-r--r--target/arm/st-stm32f746g/genimage.cfg27
-rw-r--r--target/arm/systems/banana-p2-zero25
-rw-r--r--target/arm/systems/qemu-arm-xilinx-zynq1
-rw-r--r--target/arm/systems/raspberry-pi3p27
-rw-r--r--target/arm/systems/raspberry-pi427
-rw-r--r--target/arm/systems/st-stm32f746g14
-rw-r--r--target/arm/uclibc-ng-nommu.config234
-rw-r--r--target/arm/uclibc-ng.config14
-rw-r--r--target/avr32/Makefile5
-rw-r--r--target/avr32/patches/4.4.302/revert-futex.patch22
-rw-r--r--target/avr32/systems/atmel-ngw1001
-rw-r--r--target/bfin/Makefile2
-rw-r--r--target/bfin/uclibc-ng-nommu.config (renamed from target/bfin/uclibc-ng.config)0
-rw-r--r--target/c6x/uclibc-ng-nommu.config254
-rw-r--r--target/c6x/uclibc-ng.config243
-rw-r--r--target/config/Config.in6
-rw-r--r--target/config/Config.in.abi13
-rw-r--r--target/config/Config.in.binfmt18
-rw-r--r--target/config/Config.in.binutils51
-rw-r--r--target/config/Config.in.compiler64
-rw-r--r--target/config/Config.in.cpu140
-rw-r--r--target/config/Config.in.elf2flt19
-rw-r--r--target/config/Config.in.endian1
-rw-r--r--target/config/Config.in.gdb18
-rw-r--r--target/config/Config.in.kernelfmt10
-rw-r--r--target/config/Config.in.libc37
-rw-r--r--target/config/Config.in.libs2
-rw-r--r--target/config/Config.in.qemuopts8
-rw-r--r--target/config/Config.in.rootfs20
-rw-r--r--target/config/Config.in.runtime85
-rw-r--r--target/config/Config.in.toolchain1
-rw-r--r--target/config/Config.in.tools16
-rw-r--r--target/csky/kernel/qemu-csky1
-rw-r--r--target/h8300/systems/hitachi-edosk26742
-rw-r--r--target/h8300/uclibc-ng-nommu.config (renamed from target/h8300/uclibc-ng.config)0
-rw-r--r--target/hppa/Makefile1
-rw-r--r--target/hppa/kernel/qemu-hppa1
-rw-r--r--target/kvx/Makefile54
-rw-r--r--target/kvx/kernel/generic-kvx3310
-rw-r--r--target/kvx/kernel/qemu-kvx3311
-rw-r--r--target/kvx/systems/qemu-kvx7
-rw-r--r--target/linux/Config.in1
-rw-r--r--target/linux/Config.in.kernelcfg25
-rw-r--r--target/linux/Config.in.kernelversion112
-rw-r--r--target/linux/arch.lst1
-rw-r--r--target/linux/config/Config.in.arc5
-rw-r--r--target/linux/config/Config.in.audio26
-rw-r--r--target/linux/config/Config.in.block69
-rw-r--r--target/linux/config/Config.in.bluetooth12
-rw-r--r--target/linux/config/Config.in.bus1
-rw-r--r--target/linux/config/Config.in.compression24
-rw-r--r--target/linux/config/Config.in.cpu4
-rw-r--r--target/linux/config/Config.in.ethernet44
-rw-r--r--target/linux/config/Config.in.fs19
-rw-r--r--target/linux/config/Config.in.graphics48
-rw-r--r--target/linux/config/Config.in.i2c20
-rw-r--r--target/linux/config/Config.in.input8
-rw-r--r--target/linux/config/Config.in.kernel81
-rw-r--r--target/linux/config/Config.in.m68k14
-rw-r--r--target/linux/config/Config.in.misc3
-rw-r--r--target/linux/config/Config.in.rtc11
-rw-r--r--target/linux/config/Config.in.serial52
-rw-r--r--target/linux/config/Config.in.usb40
-rw-r--r--target/linux/config/Config.in.watchdog9
-rw-r--r--target/linux/config/Config.in.wireless14
-rw-r--r--target/linux/patches/4.14.334/alpha-remove-coff.patch (renamed from target/linux/patches/4.14.252/alpha-remove-coff.patch)0
-rw-r--r--target/linux/patches/4.14.334/arm-nommu.patch (renamed from target/linux/patches/4.14.252/arm-nommu.patch)0
-rw-r--r--target/linux/patches/4.14.334/arm-thumb2.patch (renamed from target/linux/patches/4.14.252/arm-thumb2.patch)0
-rw-r--r--target/linux/patches/4.14.334/h8300.patch (renamed from target/linux/patches/4.14.252/h8300.patch)0
-rw-r--r--target/linux/patches/4.14.334/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.14.252/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/4.14.334/microblaze-sigaltstack.patch (renamed from target/linux/patches/4.14.252/microblaze-sigaltstack.patch)0
-rw-r--r--target/linux/patches/4.14.334/or1k-more-ram.patch (renamed from target/linux/patches/4.14.252/or1k-more-ram.patch)0
-rw-r--r--target/linux/patches/4.14.334/startup.patch (renamed from target/linux/patches/4.14.252/startup.patch)0
-rw-r--r--target/linux/patches/4.14.334/vdso2.patch (renamed from target/linux/patches/4.14.252/vdso2.patch)0
-rw-r--r--target/linux/patches/4.19.310/arc.patch (renamed from target/linux/patches/4.19.213/arc.patch)0
-rw-r--r--target/linux/patches/4.19.310/arm-nommu.patch (renamed from target/linux/patches/4.19.213/arm-nommu.patch)0
-rw-r--r--target/linux/patches/4.19.310/darwin-dtc.patch (renamed from target/linux/patches/4.19.213/darwin-dtc.patch)0
-rw-r--r--target/linux/patches/4.19.310/darwin-file2alias.patch (renamed from target/linux/patches/4.19.213/darwin-file2alias.patch)0
-rw-r--r--target/linux/patches/4.19.310/fec-coldfire.patch (renamed from target/linux/patches/4.19.213/fec-coldfire.patch)0
-rw-r--r--target/linux/patches/4.19.310/or1k-more-ram.patch (renamed from target/linux/patches/4.19.213/or1k-more-ram.patch)0
-rw-r--r--target/linux/patches/4.19.310/relocs.patch (renamed from target/linux/patches/4.19.213/relocs.patch)0
-rw-r--r--target/linux/patches/4.19.310/startup.patch (renamed from target/linux/patches/4.19.213/startup.patch)0
-rw-r--r--target/linux/patches/4.19.310/vdso2.patch (renamed from target/linux/patches/4.19.213/vdso2.patch)0
-rw-r--r--target/linux/patches/4.4.302/coldfire-sighandler.patch (renamed from target/linux/patches/4.4.289/coldfire-sighandler.patch)0
-rw-r--r--target/linux/patches/4.4.302/crisv32.patch (renamed from target/linux/patches/4.4.289/crisv32.patch)0
-rw-r--r--target/linux/patches/4.4.302/crisv32_ethernet_driver.patch (renamed from target/linux/patches/4.4.289/crisv32_ethernet_driver.patch)0
-rw-r--r--target/linux/patches/4.4.302/h8300-net.patch81
-rw-r--r--target/linux/patches/4.4.302/h8300.patch (renamed from target/linux/patches/4.4.289/h8300.patch)0
-rw-r--r--target/linux/patches/4.4.302/initramfs-nosizelimit.patch (renamed from target/linux/patches/4.4.289/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/4.4.302/ld-or1k.patch (renamed from target/linux/patches/4.4.289/ld-or1k.patch)0
-rw-r--r--target/linux/patches/4.4.302/macsonic.patch (renamed from target/linux/patches/4.4.289/macsonic.patch)0
-rw-r--r--target/linux/patches/4.4.302/mips-xz.patch (renamed from target/linux/patches/4.4.289/mips-xz.patch)0
-rw-r--r--target/linux/patches/4.4.302/patch-realtime (renamed from target/linux/patches/4.4.289/patch-realtime)0
-rw-r--r--target/linux/patches/4.4.302/startup.patch (renamed from target/linux/patches/4.4.289/startup.patch)0
-rw-r--r--target/linux/patches/4.4.302/use-libgcc-for-sh.patch (renamed from target/linux/patches/4.4.289/use-libgcc-for-sh.patch)0
-rw-r--r--target/linux/patches/4.4.302/versatile-nommu.patch (renamed from target/linux/patches/4.4.289/versatile-nommu.patch)0
-rw-r--r--target/linux/patches/5.10.213/arc.patch (renamed from target/linux/patches/5.10.75/arc.patch)0
-rw-r--r--target/linux/patches/5.10.213/darwin-dtc.patch (renamed from target/linux/patches/5.10.75/darwin-dtc.patch)0
-rw-r--r--target/linux/patches/5.10.213/darwin-file2alias.patch (renamed from target/linux/patches/5.10.75/darwin-file2alias.patch)0
-rw-r--r--target/linux/patches/5.10.213/dtc-noyaml.patch (renamed from target/linux/patches/5.10.75/dtc-noyaml.patch)0
-rw-r--r--target/linux/patches/5.10.213/nds32-ag101p.patch64
-rw-r--r--target/linux/patches/5.10.213/or1k-more-ram.patch (renamed from target/linux/patches/5.10.75/or1k-more-ram.patch)0
-rw-r--r--target/linux/patches/5.10.213/relocs.patch (renamed from target/linux/patches/5.10.75/relocs.patch)0
-rw-r--r--target/linux/patches/5.10.213/startup.patch (renamed from target/linux/patches/5.10.75/startup.patch)0
-rw-r--r--target/linux/patches/5.15.152/darwin-dtc.patch (renamed from target/linux/patches/5.4.155/darwin-dtc.patch)0
-rw-r--r--target/linux/patches/5.15.152/darwin-file2alias.patch (renamed from target/linux/patches/5.4.155/darwin-file2alias.patch)0
-rw-r--r--target/linux/patches/5.15.152/dtc-noyaml.patch (renamed from target/linux/patches/5.4.155/dtc-noyaml.patch)0
-rw-r--r--target/linux/patches/5.15.152/enable-ethernet-bpi-m2-plus.patch15
-rw-r--r--target/linux/patches/5.15.152/nds32-ag101p.patch64
-rw-r--r--target/linux/patches/5.15.152/or1k-more-ram.patch (renamed from target/linux/patches/5.4.155/or1k-more-ram.patch)0
-rw-r--r--target/linux/patches/5.15.152/relocs.patch (renamed from target/linux/patches/5.4.155/relocs.patch)0
-rw-r--r--target/linux/patches/5.15.152/rockchip-115200.patch12
-rw-r--r--target/linux/patches/5.15.152/startup.patch25
-rw-r--r--target/linux/patches/5.4.272/arc.patch (renamed from target/linux/patches/5.4.155/arc.patch)0
-rw-r--r--target/linux/patches/5.4.272/arm-nommu.patch (renamed from target/linux/patches/5.4.155/arm-nommu.patch)0
-rw-r--r--target/linux/patches/5.4.272/darwin-dtc.patch26
-rw-r--r--target/linux/patches/5.4.272/darwin-file2alias.patch14
-rw-r--r--target/linux/patches/5.4.272/dtc-noyaml.patch16
-rw-r--r--target/linux/patches/5.4.272/macsonic.patch11
-rw-r--r--target/linux/patches/5.4.272/or1k-more-ram.patch12
-rw-r--r--target/linux/patches/5.4.272/relocs.patch2698
-rw-r--r--target/linux/patches/5.4.272/sh4.patch (renamed from target/linux/patches/5.4.155/sh4.patch)0
-rw-r--r--target/linux/patches/5.4.272/startup.patch (renamed from target/linux/patches/5.4.155/startup.patch)0
-rw-r--r--target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/disable-gcc-plugins.patch22
-rw-r--r--target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/localversion.patch18
-rw-r--r--target/linux/patches/6.1.82/armnommu-fix-thread-registers.patch57
-rw-r--r--target/linux/patches/6.1.82/armnommu-versatile.patch101
-rw-r--r--target/linux/patches/6.1.82/board-rockpi4-0003-arm64-dts-pcie.patch35
-rw-r--r--target/linux/patches/6.1.82/enable-ethernet-bpi-m2-plus.patch15
-rw-r--r--target/linux/patches/6.1.82/hppa-cross-compile.patch12
-rw-r--r--target/linux/patches/6.1.82/macsonic.patch11
-rw-r--r--target/linux/patches/6.1.82/nios2.patch12
-rw-r--r--target/linux/patches/6.1.82/or1k-more-ram.patch12
-rw-r--r--target/linux/patches/6.1.82/riscv32.patch49
-rw-r--r--target/linux/patches/6.1.82/riscv64-flat.patch19
-rw-r--r--target/linux/patches/6.1.82/rockchip-115200.patch12
-rw-r--r--target/linux/patches/6.1.82/rockchip-pcie-timeout.patch16
-rw-r--r--target/linux/patches/6.6.28/armnommu-fix-thread-registers.patch57
-rw-r--r--target/linux/patches/6.6.28/armnommu-versatile.patch101
-rw-r--r--target/linux/patches/6.6.28/hppa-cross-compile.patch12
-rw-r--r--target/linux/patches/6.6.28/macsonic.patch11
-rw-r--r--target/linux/patches/6.6.28/riscv-flat.patch19
-rw-r--r--target/linux/patches/b6bfece0d9ddf21e1526fead81340ef02f98f6ad/defconfig.patch18
-rw-r--r--target/linux/patches/d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/defconfig.patch54
-rw-r--r--target/linux/patches/eb06d31da3e2025a2e578d8de9843e24b68137a6/defconfig.patch36
-rw-r--r--target/linux/patches/stable-4.4-rockpi4/serial-baudrate.patch23
-rw-r--r--target/lm32/Makefile2
-rw-r--r--target/lm32/kernel/qemu-lm3270
-rw-r--r--target/lm32/uclibc-ng-nommu.config212
-rw-r--r--target/lm32/uclibc-ng.config221
-rw-r--r--target/loongarch/Makefile62
-rw-r--r--target/loongarch/QEMU_EFI.fdbin0 -> 3801088 bytes
-rw-r--r--target/loongarch/kernel/qemu-loongarch10
-rw-r--r--target/loongarch/systems/qemu-loongarch8
-rw-r--r--target/m68k/Makefile10
-rw-r--r--target/m68k/kernel/aranym-m68k1
-rw-r--r--target/m68k/kernel/qemu-m68k-mcf52081
-rw-r--r--target/m68k/kernel/qemu-m68k-q8001
-rw-r--r--target/m68k/kernel/qemu-m68k-virt3
-rw-r--r--target/m68k/systems/qemu-m68k-mcf52083
-rw-r--r--target/m68k/systems/qemu-m68k-virt10
-rw-r--r--target/m68k/uclibc-ng-nommu.config229
-rw-r--r--target/m68k/uclibc-ng.config31
-rw-r--r--target/microblaze/kernel/qemu-microblaze-ml6051
-rw-r--r--target/microblaze/kernel/qemu-microblaze-s3adsp18001
-rw-r--r--target/microblaze/uclibc-ng.config20
-rw-r--r--target/mips/Makefile4
-rw-r--r--target/mips/kernel/qemu-mips1
-rw-r--r--target/mips/systems/imgtec-ci201
-rw-r--r--target/mips/uclibc-ng.config24
-rw-r--r--target/mips64/kernel/qemu-mips641
-rw-r--r--target/nios2/kernel/qemu-nios23
-rw-r--r--target/or1k/Makefile2
-rw-r--r--target/or1k/kernel/qemu-or1k1
-rw-r--r--target/or1k/uclibc-ng.config20
-rw-r--r--target/ppc/kernel/qemu-ppc-bamboo1
-rw-r--r--target/ppc/kernel/qemu-ppc-macppc1
-rw-r--r--target/ppc/kernel/qemu-ppc-mpc8544ds1
-rw-r--r--target/ppc/uclibc-ng.config21
-rw-r--r--target/riscv32/Makefile21
-rw-r--r--target/riscv32/kernel/qemu-riscv329
-rw-r--r--target/riscv32/uclibc-ng-nommu.config230
-rw-r--r--target/riscv32/uclibc-ng.config22
-rw-r--r--target/riscv64/Makefile51
-rw-r--r--target/riscv64/kernel/qemu-riscv649
-rw-r--r--target/riscv64/kernel/sipeed-maix-bit9
-rw-r--r--target/riscv64/kernel/starfive-visionfive2629
-rw-r--r--target/riscv64/starfive-visionfive2/extlinux.conf4
-rw-r--r--target/riscv64/starfive-visionfive2/genimage.cfg28
-rw-r--r--target/riscv64/systems/sipeed-maix-bit7
-rw-r--r--target/riscv64/systems/starfive-visionfive217
-rw-r--r--target/riscv64/uclibc-ng-nommu.config226
-rw-r--r--target/riscv64/uclibc-ng.config19
-rw-r--r--target/s390/Makefile13
-rw-r--r--target/sh/kernel/numato-mimasv21
-rw-r--r--target/sh/kernel/qemu-sh1
-rw-r--r--target/sh/uclibc-ng-nommu.config235
-rw-r--r--target/sh/uclibc-ng.config20
-rw-r--r--target/sparc/kernel/qemu-sparc1
-rw-r--r--target/sparc/uclibc-ng.config20
-rw-r--r--target/x86/Makefile5
-rw-r--r--target/x86/kernel/qemu-x861
-rw-r--r--target/x86/kernel/vbox-x864
-rw-r--r--target/x86/systems/vbox-x869
-rw-r--r--target/x86/uclibc-ng.config20
-rw-r--r--target/x86_64/Makefile5
-rw-r--r--target/x86_64/generic-x86_64/genimage-dual.cfg36
-rw-r--r--target/x86_64/generic-x86_64/genimage-efi-dual.cfg37
-rw-r--r--target/x86_64/generic-x86_64/genimage-efi.cfg30
-rw-r--r--target/x86_64/generic-x86_64/genimage.cfg30
-rw-r--r--target/x86_64/kernel/asus-p5bvm7
-rw-r--r--target/x86_64/kernel/lenovo-x2006
-rw-r--r--target/x86_64/qemu-x86_64/genimage-efi-dual.cfg11
-rw-r--r--target/x86_64/qemu-x86_64/genimage-efi.cfg9
-rw-r--r--target/xtensa/kernel/qemu-xtensa3
-rw-r--r--target/xtensa/uclibc-ng-nommu.config229
-rw-r--r--target/xtensa/uclibc-ng.config23
-rw-r--r--tasks/002-mpd6
-rw-r--r--tasks/003-kodi29
-rw-r--r--tasks/004-development12
-rw-r--r--toolchain/Makefile2
-rw-r--r--toolchain/binutils/Makefile8
-rw-r--r--toolchain/binutils/Makefile.inc63
-rw-r--r--toolchain/binutils/patches/2.20.1/newer-gcc.patch24
-rw-r--r--toolchain/binutils/patches/2.28/lm32.patch24
-rw-r--r--toolchain/binutils/patches/2.37/0001-i386-Allow-GOT32-relocations-against-ABS-symbols.patch47
-rw-r--r--toolchain/binutils/patches/2.37/nds32-uclibc.patch15
-rw-r--r--toolchain/binutils/patches/2.38/0001-binutils-2.38-vs.-ppc32-linux-kernel.patch55
-rw-r--r--toolchain/binutils/patches/2.38/nds32-uclibc.patch15
-rw-r--r--toolchain/binutils/patches/2.41/lm32.patch24
-rw-r--r--toolchain/binutils/patches/2.42/j2.patch584
-rw-r--r--toolchain/binutils/patches/2.42/kvx.patch29
-rw-r--r--toolchain/elf2flt/Makefile23
-rw-r--r--toolchain/elf2flt/Makefile.inc9
-rw-r--r--toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0001-riscv32.patch42
-rw-r--r--toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0002-lm32.patch167
-rw-r--r--toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0003-sh2.patch52
-rw-r--r--toolchain/elf2flt/patches/3051fec89bbd30de6f952dc3100712feff3ca076/0001-.rofixup-fix.patch33
-rw-r--r--toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0005-elf2flt-add-riscv-64-bits-support.patch137
-rw-r--r--toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0008-remove_BFD_VMA_FMT.patch125
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0001-elf2flt-handle-binutils-2.34.patch377
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0002-elf2flt.ld-reinstate-32-byte-alignment-for-.data-sec.patch81
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0003-elf2flt-add-riscv-64-bits-support.patch103
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0004-elf2flt-create-a-common-helper-function.patch76
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0005-elf2flt-fix-fatal-error-regression-on-m68k-xtensa-ri.patch74
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0006-elf2flt-xtensa-fix-text-relocations.patch25
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0007-riscv32.patch56
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0008-remove_BFD_VMA_FMT.patch97
-rw-r--r--toolchain/elf2flt/patches/v2021.08/0009-riscv.patch11
-rw-r--r--toolchain/elf2flt/patches/v2024.02/0001-sh2.patch43
-rw-r--r--toolchain/elf2flt/patches/v2024.02/0002-h8300.patch20
-rw-r--r--toolchain/elf2flt/patches/v2024.02/0003-riscv64-alignment.patch12
-rw-r--r--toolchain/gcc/Makefile32
-rw-r--r--toolchain/gcc/Makefile.inc78
-rw-r--r--toolchain/gcc/patches/10.3.0/revert-sparc.patch23628
-rw-r--r--toolchain/gcc/patches/10.5.0/add-crtreloc.frv (renamed from toolchain/gcc/patches/10.3.0/add-crtreloc.frv)0
-rw-r--r--toolchain/gcc/patches/10.5.0/c6x-disable-multilib.patch (renamed from toolchain/gcc/patches/10.3.0/c6x-disable-multilib.patch)0
-rw-r--r--toolchain/gcc/patches/10.5.0/ia64-fix-libgcc.patch (renamed from toolchain/gcc/patches/10.3.0/ia64-fix-libgcc.patch)0
-rw-r--r--toolchain/gcc/patches/10.5.0/j2.patch346
-rw-r--r--toolchain/gcc/patches/10.5.0/nios2-softfp.patch (renamed from toolchain/gcc/patches/10.3.0/nios2-softfp.patch)0
-rw-r--r--toolchain/gcc/patches/10.5.0/revert-sparc.patch283
-rw-r--r--toolchain/gcc/patches/11.4.0/add-crtreloc.frv12
-rw-r--r--toolchain/gcc/patches/11.4.0/c6x-disable-multilib.patch10
-rw-r--r--toolchain/gcc/patches/11.4.0/csky.patch12
-rw-r--r--toolchain/gcc/patches/11.4.0/ia64-fix-libgcc.patch17
-rw-r--r--toolchain/gcc/patches/11.4.0/nios2-softfp.patch14
-rw-r--r--toolchain/gcc/patches/11.4.0/revert.sparc283
-rw-r--r--toolchain/gcc/patches/12.3.0/csky.patch12
-rw-r--r--toolchain/gcc/patches/12.3.0/nios2-softfp.patch14
-rw-r--r--toolchain/gcc/patches/13.2.0/csky.patch12
-rw-r--r--toolchain/gcc/patches/13.2.0/nios2-softfp.patch14
-rw-r--r--toolchain/gcc/patches/4.5.4/gcc.lm322
-rw-r--r--toolchain/gdb/Makefile.inc26
-rw-r--r--toolchain/glibc/Makefile12
-rw-r--r--toolchain/glibc/Makefile.inc14
-rw-r--r--toolchain/glibc/patches/2.26/0001-Do-not-use-__builtin_types_compatible_p-in-C-mode-bu.patch50
-rw-r--r--toolchain/glibc/patches/2.26/0002-Do-not-use-generic-selection-in-C-mode.patch56
-rw-r--r--toolchain/glibc/patches/2.26/0003-Provide-a-C-version-of-issignaling-that-does-not-use.patch225
-rw-r--r--toolchain/glibc/patches/2.26/0004-Fix-the-C-version-of-issignaling-when-__NO_LONG_DOUB.patch47
-rw-r--r--toolchain/glibc/patches/2.26/0005-Provide-a-C-version-of-iszero-that-does-not-use-__MA.patch210
-rw-r--r--toolchain/glibc/patches/2.26/0006-Let-fpclassify-use-the-builtin-when-optimizing-for-s.patch63
-rw-r--r--toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch46
-rw-r--r--toolchain/glibc/patches/2.38/0004-ARC-Add-support-for-ARCv3-processors.patch4036
-rw-r--r--toolchain/glibc/patches/2.38/m68k-m68040.patch59
-rw-r--r--toolchain/gmp/Makefile.inc4
-rw-r--r--toolchain/mpfr/Makefile.inc4
-rw-r--r--toolchain/musl/Makefile.inc6
-rw-r--r--toolchain/newlib/Makefile.inc13
-rw-r--r--toolchain/newlib/patches/3.1.0/fix-tooldir.patch12
-rw-r--r--toolchain/newlib/patches/git/fix-tooldir.patch12
-rw-r--r--toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch12
-rw-r--r--toolchain/uclibc-ng/Makefile32
-rw-r--r--toolchain/uclibc-ng/Makefile.inc12
1378 files changed, 37868 insertions, 64279 deletions
diff --git a/adk/extlinux/extlinux.conf b/adk/extlinux/extlinux.conf
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/adk/extlinux/extlinux.conf
diff --git a/adk/tools/depmaker.c b/adk/tools/depmaker.c
index 7b04b3781..609d95a6a 100644
--- a/adk/tools/depmaker.c
+++ b/adk/tools/depmaker.c
@@ -133,7 +133,6 @@ static char *parse_line(char *package, char *pkgvar, char *string, int checksym,
}
strncat(depvar, dep, strlen(dep)-5);
if ((strncmp(depvar, "bc", 2) == 0) ||
- (strncmp(depvar, "bzip2", 5) == 0) ||
(strncmp(depvar, "file", 4) == 0) ||
(strncmp(depvar, "gawk", 4) == 0) ||
(strncmp(depvar, "grep", 4) == 0) ||
@@ -277,6 +276,8 @@ int main() {
tmp = parse_line(pkgdirp->d_name, dpkg, stringtmp, 1, 0, 2, &prefix);
} else if (strncmp("MUSL", dpkg, 4) == 0) {
tmp = parse_line(pkgdirp->d_name, dpkg, stringtmp, 1, 0, 2, &prefix);
+ } else if (strncmp("GLIBC", dpkg, 5) == 0) {
+ tmp = parse_line(pkgdirp->d_name, dpkg, stringtmp, 1, 0, 2, &prefix);
} else {
tmp = parse_line(pkgdirp->d_name, dpkg, stringtmp, 1, 0, 1, &prefix);
}
@@ -339,6 +340,7 @@ int main() {
}
}
} else if (strncmp(buf, "HOST_BUILDDEP", 13) == 0) {
+ //printf("DEBUG: HOST_BUILDDEP found for %s\n", pkgdirp->d_name);
asprintf(&string, "%s-host", pkgdirp->d_name);
// check retval; string for NULL
tmp = parse_line(string, NULL, buf, 2, 0, 0, &hprefix);
diff --git a/adk/tools/pkgmaker.c b/adk/tools/pkgmaker.c
index 451300548..30a0d11ca 100644
--- a/adk/tools/pkgmaker.c
+++ b/adk/tools/pkgmaker.c
@@ -19,6 +19,7 @@
#include <ctype.h>
#include <dirent.h>
+#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
@@ -290,22 +291,44 @@ static char *tolowerstr(char *string) {
static char *toupperstr(char *string) {
+ static char *sdup = NULL;
+ static int sduplen = 0;
int i;
- char *str;
-
+
+ if (!string) {
+ free(sdup);
+ sduplen = 0;
+ return NULL;
+ }
+
+ if (sduplen <= strlen(string)) {
+ sduplen = strlen(string) + 1;
+ sdup = realloc(sdup, sduplen);
+ if (!sdup)
+ fatal_error("%s: memory allocation failed: %s\n",
+ __func__, strerror(errno));
+ }
+
/* transform to uppercase variable name */
- str = strdup(string);
- for (i=0; i<(int)strlen(str); i++) {
- if (str[i] == '+')
- str[i] = 'X';
- if (str[i] == '-')
- str[i] = '_';
- /* remove negation here, useful for package host depends */
- if (str[i] == '!')
- str[i] = '_';
- str[i] = toupper(str[i]);
+ for (i = 0; i < strlen(string) + 1; i++) {
+ switch (string[i]) {
+ case '+':
+ sdup[i] = 'X';
+ break;
+ case '-':
+ sdup[i] = '_';
+ break;
+ case '!':
+ sdup[i] = '_';
+ break;
+ case '\0':
+ sdup[i] = '\0';
+ break;
+ default:
+ sdup[i] = toupper(string[i]);
+ }
}
- return(str);
+ return sdup;
}
@@ -463,10 +486,12 @@ int main() {
icfg = fopen(runtime, "a");
if (icfg == NULL)
continue;
- if (strncmp("busybox", sname, 7) == 0)
- fprintf(icfg, "config ADK_RUNTIME_START_%s_%s\n", toupperstr(sname), toupperstr(sname2));
- else
+ if (strncmp("busybox", sname, 7) == 0) {
+ fprintf(icfg, "config ADK_RUNTIME_START_%s", toupperstr(sname));
+ fprintf(icfg, "_%s\n", toupperstr(sname2));
+ } else {
fprintf(icfg, "config ADK_RUNTIME_START_%s\n", toupperstr(sname));
+ }
fprintf(icfg, "\tprompt \"Start %s on boot\"\n", sname2);
fprintf(icfg, "\ttristate\n");
if (strncmp("busybox", sname, 7) == 0)
@@ -813,7 +838,7 @@ int main() {
if (result == 1) {
val = strtok_r(hvalue, " ", &saveptr);
while (val != NULL) {
- fprintf(cfg, "\tselect ADK_KERNEL_%s\n", toupperstr(val));
+ fprintf(cfg, "\tselect ADK_LINUX_KERNEL_%s\n", toupperstr(val));
val = strtok_r(NULL, " ", &saveptr);
}
}
@@ -1282,6 +1307,7 @@ int main() {
fatal_error("removing file failed.");
}
}
+ toupperstr(NULL);
closedir(pkglistdir);
return(0);
}
diff --git a/docs/running-openadk.txt b/docs/running-openadk.txt
index a0676bbce..205b0d292 100644
--- a/docs/running-openadk.txt
+++ b/docs/running-openadk.txt
@@ -60,8 +60,6 @@ OpenADK is generated while producing the +base-files+ package. The main job
the default inittab does is to start the +/etc/init.d/rcS+ shell script, and
start one or more +getty+ programs (which provides a login prompt).
-Support for systemd and s6 is very experimental at the moment.
-
/dev management
~~~~~~~~~~~~~~~
@@ -73,19 +71,21 @@ hardware devices, even if they are properly recognized by the Linux
kernel.
In OpenADK you can choose between different types of device managements.
-OpenADK defaults to *dynamic device nodes using devtmpfs and mdev*. This method
-relies on the _devtmpfs_ virtual filesystem in the kernel, which is enabled by
-default for all OpenADK generated kernels, and adds the +mdev+ userspace
-utility on top of it. +mdev+ is a program part of Busybox that the kernel will
-call every time a device is added or removed. Thanks to the +/etc/mdev.conf+
-configuration file, +mdev+ can be configured to for example, set specific
-permissions or ownership on a device file, call a script or application
-whenever a device appears or disappear, etc. Basically, it allows _userspace_
-to react on device addition and removal events. +mdev+ is also important if you
-have devices that require a firmware, as it will be responsible for pushing the
-firmware contents to the kernel. +mdev+ is a lightweight implementation (with
-fewer features) of +udev+. For more details about +mdev+ and the syntax of its
-configuration file, see http://git.busybox.net/busybox/tree/docs/mdev.txt.
+OpenADK defaults to *static device nodes using devtmpfs*. That is the simplest
+way available. Most users might like to change it to *dynamic device nodes
+using devtmpfs and mdev*. This method relies on the _devtmpfs_ virtual
+filesystem in the kernel, which is enabled by default for all OpenADK generated
+kernels, and adds the +mdev+ userspace utility on top of it. +mdev+ is a
+program part of Busybox that the kernel will call every time a device is added
+or removed. Thanks to the +/etc/mdev.conf+ configuration file, +mdev+ can be
+configured to for example, set specific permissions or ownership on a device
+file, call a script or application whenever a device appears or disappear, etc.
+Basically, it allows _userspace_ to react on device addition and removal
+events. +mdev+ is also important if you have devices that require a firmware,
+as it will be responsible for pushing the firmware contents to the kernel.
++mdev+ is a lightweight implementation (with fewer features) of +udev+. For
+more details about +mdev+ and the syntax of its configuration file, see
+http://git.busybox.net/busybox/tree/docs/mdev.txt.
initscripts
~~~~~~~~~~~
diff --git a/mk/build.mk b/mk/build.mk
index a3e8c86ae..1fe387598 100644
--- a/mk/build.mk
+++ b/mk/build.mk
@@ -24,7 +24,6 @@ DEFCONFIG= ADK_DEBUG=n \
ADK_USE_CCACHE=n \
ADK_RUNTIME_START_SERVICES=n \
ADK_PACKAGE_BASE_FILES=y \
- ADK_PACKAGE_DBUS_WITH_SYSTEMD=n \
ADK_PACKAGE_KEXECINIT=n \
ADK_PACKAGE_CLASSPATH=n \
ADK_PACKAGE_LM_SENSORS_DETECT=n \
diff --git a/mk/fetch.mk b/mk/fetch.mk
index 0d3e90a34..bc6838256 100644
--- a/mk/fetch.mk
+++ b/mk/fetch.mk
@@ -92,7 +92,7 @@ $(1):
(cd $${PKG_NAME}-$${PKG_VERSION}; git submodule update --init --recursive) $(DL_TRACE); \
fi; \
rm -rf $${PKG_NAME}-$${PKG_VERSION}/.git; \
- PATH='$(HOST_PATH)' tar cJf $${PKG_NAME}-$${PKG_VERSION}.tar.xz $${PKG_NAME}-$${PKG_VERSION}; \
+ PATH='$(HOST_PATH)' tar czf $${PKG_NAME}-$${PKG_VERSION}.tar.gz $${PKG_NAME}-$${PKG_VERSION}; \
touch $$$${filename}.nohash; \
rm -rf $${PKG_NAME}-$${PKG_VERSION}; \
: check the size here; \
diff --git a/mk/host-bottom.mk b/mk/host-bottom.mk
index 621693ec3..f7e635f15 100644
--- a/mk/host-bottom.mk
+++ b/mk/host-bottom.mk
@@ -56,7 +56,7 @@ endif
ifeq (${HOST_CONFIG_STYLE},cmake)
@$(CMD_TRACE) "configuring cmake.. "
cd ${WRKBUILD}; PATH='${HOST_PATH}' \
- cmake -Wno-dev -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ cmake -Wno-dev -DCMAKE_INSTALL_PREFIX:PATH=$(STAGING_HOST_DIR)/usr \
${HOST_CMAKE_FLAGS} ${WRKSRC} $(MAKE_TRACE)
endif
ifeq (${HOST_CONFIG_STYLE},meson)
@@ -64,8 +64,8 @@ ifeq (${HOST_CONFIG_STYLE},meson)
cd ${WRKSRC}; PATH='${HOST_PATH}' \
meson --prefix $(STAGING_HOST_DIR)/usr \
--pkg-config-path $(STAGING_HOST_DIR)/usr/lib/pkgconfig \
- --buildtype release $(MESON_FLAGS) \
- $(WRKSRC) $(WRKBUILD)
+ --buildtype release $(HOST_MESON_FLAGS) \
+ $(WRKSRC) $(WRKBUILD) $(MAKE_TRACE)
endif
ifeq (${HOST_CONFIG_STYLE},perl)
@$(CMD_TRACE) "configuring perl module.. "
@@ -86,7 +86,7 @@ host-build:
${_HOST_BUILD_COOKIE}: ${_HOST_CONFIGURE_COOKIE}
@$(CMD_TRACE) "compiling.. "
ifneq ($(filter meson,${HOST_STYLE}),)
- PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD)
+ PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD) $(MAKE_TRACE)
else ifneq (${HOST_STYLE},manual)
cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -j${ADK_MAKE_JOBS} -f ${MAKE_FILE} \
${HOST_MAKE_FLAGS} ${HOST_ALL_TARGET} $(MAKE_TRACE)
diff --git a/mk/host.mk b/mk/host.mk
index 9ff38ac6f..33c437836 100644
--- a/mk/host.mk
+++ b/mk/host.mk
@@ -15,7 +15,7 @@ HOST_AUTOTOOL_ENV+= PATH='${HOST_PATH}' \
HOST_CONFIGURE_ENV?= PATH='${HOST_PATH}' \
${COMMON_ENV} \
${HOST_ENV} \
- PKG_CONFIG_LIBDIR='${STAGING_HOST_DIR}/usr/lib/pkgconfig:${STAGING_HOST_DIR}/usr/share/pkgconfig' \
+ PKG_CONFIG_LIBDIR='${STAGING_HOST_DIR}/usr/lib/pkgconfig:${STAGING_HOST_DIR}/usr/share/pkgconfig:${STAGING_HOST_DIR}/usr/lib/${GNU_HOST_NAME}/pkgconfig' \
PKG_CONFIG_SYSROOT_DIR='${STAGING_HOST_DIR}' \
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1
diff --git a/mk/image.mk b/mk/image.mk
index cf870ba48..364b80db3 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -78,12 +78,6 @@ image-prepare-post:
-rm -f ${TARGET_DIR}/bin/sh
ln -sf ${BINSH} ${TARGET_DIR}/bin/sh
-ifeq ($(ADK_RUNTIME_INIT_SYSTEMD),y)
- ln -fs ../usr/${ADK_TARGET_LIBC_PATH}/systemd/systemd $(TARGET_DIR)/sbin/init
- ln -fs ../usr/bin/systemctl $(TARGET_DIR)/sbin/halt
- ln -fs ../usr/bin/systemctl $(TARGET_DIR)/sbin/poweroff
- ln -fs ../usr/bin/systemctl $(TARGET_DIR)/sbin/reboot
-endif
test -z $(GIT) || \
$(GIT) log -1|head -1|sed -e 's#commit ##' \
> $(TARGET_DIR)/etc/.adkgithash
@@ -104,7 +98,7 @@ ifneq ($(ADK_TARGET_ARCH_AARCH64)$(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_ARCH_PPC6
test ! -d ${TARGET_DIR}/usr/lib || rm -rf ${TARGET_DIR}/usr/lib/
(cd ${TARGET_DIR}/usr ; ln -sf ${ADK_TARGET_LIBC_PATH} lib)
endif
-ifeq ($(ADK_TARGET_ARCH_S390),y)
+ifeq ($(ADK_TARGET_ARCH_LOONGARCH)$(ADK_TARGET_ARCH_S390),y)
(cd ${TARGET_DIR}/; ln -sf lib lib64)
endif
@@ -128,8 +122,8 @@ INITRAMFS= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-${ADK_TARGET_FS}
ROOTFSSQUASHFS= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-${ADK_TARGET_FS}.img
ROOTFSJFFS2= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-jffs2.img
ROOTFSUBIFS= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-ubifs.img
-ROOTFSTARBALL= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-${ADK_TARGET_FS}+kernel.tar.xz
-ROOTFSUSERTARBALL= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-${ADK_TARGET_FS}.tar.xz
+ROOTFSTARBALL= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-${ADK_TARGET_FS}+kernel.tar.gz
+ROOTFSUSERTARBALL= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}-${ADK_TARGET_FS}.tar.gz
ROOTFSISO= ${ADK_TARGET_SYSTEM}-${ADK_TARGET_LIBC}.iso
kernel-package: kernel-strip
@@ -151,14 +145,14 @@ endif
${FW_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR}/.adk kernel-package
cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \
- $(CPIO) --quiet -o -Hustar --owner=0:0 | $(XZ) -c >$@
+ $(CPIO) --quiet -o -Hustar --owner=0:0 | gzip -c >$@
ifeq ($(ADK_TARGET_QEMU),y)
@cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
endif
${FW_DIR}/${ROOTFSUSERTARBALL}: ${TARGET_DIR}/.adk
cd ${TARGET_DIR}; find . | grep -v ./boot/ | sed -n '/^\.\//s///p' | sort | \
- $(CPIO) --quiet -o -Hustar --owner=0:0 | $(XZ) -c >$@
+ $(CPIO) --quiet -o -Hustar --owner=0:0 | gzip -c >$@
${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk
PATH='${HOST_PATH}' $(BASH) ${SCRIPT_DIR}/gen_initramfs_list.sh -u squash -g squash \
@@ -169,10 +163,15 @@ ${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk
for i in 0 1 2 3 4; do \
echo "nod /dev/tty$$i 0644 0 0 c 4 $$$$i"; \
done; \
- echo "nod /dev/null 0644 0 0 c 1 3"; \
+ echo "nod /dev/null 0666 0 0 c 1 3"; \
+ echo "nod /dev/zero 0666 0 0 c 1 5"; \
+ echo "nod /dev/kmsg 0644 0 0 c 1 11"; \
echo "nod /dev/ram 0655 0 0 b 1 1"; \
+ echo "nod /dev/mem 0665 0 0 c 1 1"; \
+ echo "nod /dev/random 0666 0 0 c 1 8"; \
+ echo "nod /dev/urandom 0666 0 0 c 1 9"; \
echo "nod /dev/ttyS0 0660 0 0 c 4 64"; \
- echo "nod /dev/ttyS1 0660 0 0 c 4 65"; \
+ echo "nod /dev/ttysclp0 0660 0 0 c 4 65"; \
echo "nod /dev/ttyB0 0660 0 0 c 11 0"; \
echo "nod /dev/ttyB1 0660 0 0 c 11 1"; \
echo "nod /dev/ttyAMA0 0660 0 0 c 204 64"; \
@@ -184,6 +183,7 @@ ${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk
echo "nod /dev/ttyBF1 0660 0 0 c 204 65"; \
echo "nod /dev/ttyUL0 0660 0 0 c 204 187"; \
echo "nod /dev/ttyUL1 0660 0 0 c 204 188"; \
+ echo "nod /dev/ttyGF0 0660 0 0 c 254 0"; \
echo "slink /init /sbin/init 755 0 0"; \
) >>$@
@@ -193,7 +193,7 @@ ${FW_DIR}/${INITRAMFS}: ${STAGING_TARGET_DIR}/${INITRAMFS}_list
${BUILD_DIR}/root.squashfs: ${TARGET_DIR}/.adk
${STAGING_HOST_DIR}/usr/bin/mksquashfs ${TARGET_DIR} \
- ${BUILD_DIR}/root.squashfs -comp xz \
+ ${BUILD_DIR}/root.squashfs -comp gzip \
-nopad -noappend -root-owned $(MAKE_TRACE)
${FW_DIR}/${ROOTFSJFFS2}: ${TARGET_DIR}
@@ -235,23 +235,17 @@ createinitramfs: ${STAGING_TARGET_DIR}/${INITRAMFS}_list
echo 'CONFIG_INITRAMFS_ROOT_UID=0'; \
echo 'CONFIG_INITRAMFS_ROOT_GID=0'; \
echo 'CONFIG_INITRAMFS_IS_LARGE=n'; \
+ echo 'CONFIG_INITRAMFS_PRESERVE_MTIME=n'; \
) >> ${LINUX_DIR}/.config
-ifeq ($(ADK_LINUX_KERNEL_COMP_XZ),y)
+ifeq ($(ADK_LINUX_KERNEL_COMP_ZSTD),y)
+ echo "CONFIG_RD_XZ=n" >> ${LINUX_DIR}/.config
echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config
echo "CONFIG_RD_GZIP=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_RD_LZMA=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_RD_LZ4=n" >> ${LINUX_DIR}/.config
echo "CONFIG_RD_LZO=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_RD_XZ=y" >> ${LINUX_DIR}/.config
- echo "CONFIG_RD_ZSTD=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_INITRAMFS_COMPRESSION_XZ=y" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_X86=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_POWERPC=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_IA64=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_ARM=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_ARMTHUMB=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_SPARC=n" >> ${LINUX_DIR}/.config
- echo "CONFIG_XZ_DEC_TEST=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZ4=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_LZMA=n" >> ${LINUX_DIR}/.config
+ echo "CONFIG_RD_ZSTD=y" >> ${LINUX_DIR}/.config
+ echo "CONFIG_INITRAMFS_COMPRESSION_ZSTD=y" >> ${LINUX_DIR}/.config
endif
ifeq ($(ADK_LINUX_KERNEL_COMP_LZ4),y)
echo "CONFIG_RD_XZ=n" >> ${LINUX_DIR}/.config
@@ -337,12 +331,23 @@ GENCFG:=$(ADK_TOPDIR)/adk/genimage/$(ADK_TARGET_GENIMAGE_FILENAME)
else
GENCFG:=$(ADK_TOPDIR)/target/$(ADK_TARGET_ARCH)/$(ADK_TARGET_SYSTEM)/$(ADK_TARGET_GENIMAGE_FILENAME)
endif
+ifeq (,$(wildcard $(ADK_TOPDIR)/target/$(ADK_TARGET_ARCH)/$(ADK_TARGET_SYSTEM)/$(ADK_TARGET_EXTLINUX_FILENAME)))
+EXTLINUX:=$(ADK_TOPDIR)/adk/extlinux/$(ADK_TARGET_EXTLINUX_FILENAME)
+else
+EXTLINUX:=$(ADK_TOPDIR)/target/$(ADK_TARGET_ARCH)/$(ADK_TARGET_SYSTEM)/$(ADK_TARGET_EXTLINUX_FILENAME)
+endif
${FW_DIR}/${GENIMAGE}: ${TARGET_DIR} kernel-package
@rm -rf ${FW_DIR}/temp
@mkdir -p ${FW_DIR}/temp
@$(CP) $(KERNEL) $(FW_DIR)/kernel
- @dd if=/dev/zero of=${FW_DIR}/cfgfs.img bs=16384 count=1 $(MAKE_TRACE)
+ @dd if=/dev/zero of=${FW_DIR}/cfgfs.img bs=16384 count=1024 $(MAKE_TRACE)
+ mkdir -p ${FW_DIR}/extlinux
+ $(CP) $(EXTLINUX) $(FW_DIR)/extlinux
+ mkdir -p $(TARGET_DIR)/boot/extlinux
+ $(CP) $(EXTLINUX) $(TARGET_DIR)/boot/extlinux
+ $(CP) $(FW_DIR)/kernel $(TARGET_DIR)/boot
+ -$(CP) $(FW_DIR)/*.dtb $(TARGET_DIR)/boot
ifeq ($(ADK_RUNTIME_FIX_PERMISSION),y)
echo '#!/bin/sh' > $(ADK_TOPDIR)/scripts/fakeroot.sh
echo "chown -R 0:0 $(TARGET_DIR)" >> $(ADK_TOPDIR)/scripts/fakeroot.sh
@@ -352,23 +357,46 @@ ifeq ($(ADK_RUNTIME_FIX_PERMISSION),y)
PATH='$(HOST_PATH)' $(FAKEROOT) $(ADK_TOPDIR)/scripts/fakeroot.sh
rm $(ADK_TOPDIR)/scripts/fakeroot.sh $(STAGING_TARGET_DIR)/scripts/permissions.sh
endif
- PATH='${HOST_PATH}' $(FAKEROOT) mke2img \
- -G 4 \
+ifeq ($(ADK_TARGET_DUAL_BOOT),y)
+ $(CP) $(FW_DIR)/kernel $(TARGET_DIR)
+ -$(CP) $(FW_DIR)/*.dtb $(TARGET_DIR)
+ mkdir $(TARGET_DIR)/extlinux
+ $(CP) $(EXTLINUX) $(TARGET_DIR)/extlinux
+ $(SED) "s#root=.*#root=/dev/$(ADK_TARGET_ROOTDEV)p1#" $(TARGET_DIR)/extlinux/extlinux.conf
+ PATH='${HOST_PATH}' $(FAKEROOT) mkfs.ext2 \
-d "$(TARGET_DIR)" \
- -o $(FW_DIR)/rootfs.ext $(MAKE_TRACE)
+ -r 1 -N 0 -m 5 -L "rootfs1" \
+ $(FW_DIR)/rootfs1.ext "64M" $(MAKE_TRACE)
+ $(SED) "s#root=.*#root=/dev/$(ADK_TARGET_ROOTDEV)p2#" $(TARGET_DIR)/extlinux/extlinux.conf
+ PATH='${HOST_PATH}' $(FAKEROOT) mkfs.ext2 \
+ -d "$(TARGET_DIR)" \
+ -r 1 -N 0 -m 5 -L "rootfs2" \
+ $(FW_DIR)/rootfs2.ext "64M" $(MAKE_TRACE)
+ PATH='${HOST_PATH}' genimage \
+ --config "$(GENCFG)" \
+ --tmppath "${FW_DIR}/temp" \
+ --rootpath "$(TARGET_DIR)" \
+ --inputpath "$(FW_DIR)" \
+ --outputpath "$(FW_DIR)" $(MAKE_TRACE)
+else
+ PATH='${HOST_PATH}' $(FAKEROOT) mkfs.ext2 \
+ -d "$(TARGET_DIR)" \
+ -r 1 -N 0 -m 5 -L "rootfs" \
+ $(FW_DIR)/rootfs.ext "64M" $(MAKE_TRACE)
PATH='${HOST_PATH}' genimage \
--config "$(GENCFG)" \
--tmppath "${FW_DIR}/temp" \
--rootpath "$(TARGET_DIR)" \
--inputpath "$(FW_DIR)" \
--outputpath "$(FW_DIR)" $(MAKE_TRACE)
+endif
ifeq ($(ADK_TARGET_DUAL_BOOT),y)
- (cd ${TARGET_DIR}; find . | grep -v ./boot/ | sed -n '/^\.\//s///p' | sort | \
+ (cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \
PATH='${HOST_PATH}' $(CPIO) -o --quiet -Hustar --owner=0:0 | \
- ${XZ} -c > ${FW_DIR}/openadk.tar.xz)
- (cd ${FW_DIR}; PATH='${HOST_PATH}' sha256sum openadk.tar.xz \
+ ${GZIP} -c > ${FW_DIR}/openadk.tar.gz)
+ (cd ${FW_DIR}; PATH='${HOST_PATH}' sha256sum openadk.tar.gz \
| cut -d\ -f1 > sha256.txt)
- (cd ${FW_DIR}; PATH='${HOST_PATH}' tar -cf ${ADK_TARGET_SYSTEM}-update.tar openadk.tar.xz sha256.txt)
+ (cd ${FW_DIR}; PATH='${HOST_PATH}' tar -cf ${ADK_TARGET_SYSTEM}-update.tar openadk.tar.gzip sha256.txt)
@rm -rf ${FW_DIR}/temp
endif
ifeq ($(ADK_PACKAGE_GRUB_EFI_X86)$(ADK_PACKAGE_GRUB_EFI_X86_64),y)
diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk
index bae7ab168..29458abf0 100644
--- a/mk/kernel-build.mk
+++ b/mk/kernel-build.mk
@@ -17,15 +17,13 @@ KERNEL_FILE:=$(ADK_TARGET_KERNEL)
KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
ifeq ($(ADK_TARGET_KERNEL_LINUXBIN),y)
KERNEL_FILE:=vmlinux
-KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
endif
ifeq ($(ADK_TARGET_KERNEL_ZIMAGE),y)
KERNEL_FILE:=vmlinux
-KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
endif
-ifeq ($(ADK_TARGET_KERNEL_VMLINUX_BOOTP),y)
-KERNEL_FILE:=bootpfile
-KERNEL_TARGET:=bootpfile
+ifeq ($(ADK_TARGET_KERNEL_VMLINUX_EFI),y)
+KERNEL_FILE:=vmlinux.efi
+KERNEL_TARGET:=all
endif
ifeq ($(ADK_TARGET_KERNEL_VMLINUX_GZ),y)
KERNEL_FILE:=vmlinux
@@ -37,7 +35,6 @@ KERNEL_TARGET:=all
endif
ifeq ($(ADK_TARGET_KERNEL_IMAGE),y)
KERNEL_FILE:=vmlinux
-KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
endif
ifeq ($(ADK_TARGET_KERNEL_SIMPLEIMAGE),y)
KERNEL_FILE:=vmlinux.bin
@@ -108,7 +105,6 @@ ifneq ($(KERNEL_MODULES_USED),)
modules_install $(MAKE_TRACE)
$(CMD_TRACE) " done"
$(END_TRACE)
-ifeq ($(ADK_RUNTIME_DEV_UDEV),)
$(START_TRACE) "target/$(ADK_TARGET_ARCH)-kernel-modules-create-packages.. "
rm -f ${PACKAGE_DIR}/kmod-*
PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/make-module-ipkgs.sh \
@@ -119,13 +115,14 @@ ifeq ($(ADK_RUNTIME_DEV_UDEV),)
"${PACKAGE_DIR}"
$(CMD_TRACE) " done"
$(END_TRACE)
-endif
$(START_TRACE) "target/${ADK_TARGET_ARCH}-kernel-modules-install-packages.. "
- for pkg in $(PACKAGE_DIR)/kmod-*; do \
+ -for pkg in $(PACKAGE_DIR)/kmod-*; do \
[[ -e "$$pkg" ]] && $(PKG_INSTALL) $$pkg; \
done
$(CMD_TRACE) " done"
$(END_TRACE)
+ $(CP) $(LINUX_BUILD_DIR)/modules/lib/modules/$(KERNEL_VERSION)/modules.{order,builtin} \
+ $(TARGET_DIR)/lib/modules/$(KERNEL_VERSION)/
endif
clean:
diff --git a/mk/kernel-vars.mk b/mk/kernel-vars.mk
index a8f80f000..475353d6f 100644
--- a/mk/kernel-vars.mk
+++ b/mk/kernel-vars.mk
@@ -1,7 +1,15 @@
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.
-KERNEL_MAKE_OPTS:= V=1 \
+KERNEL_MAKE_OPTS:= CC="$(TARGET_CC)"
+ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
+KERNEL_MAKE_OPTS:= CC="$(TARGET_CC) -mno-fdpic"
+endif
+ifeq ($(ADK_TARGET_ARCH_MICROBLAZE),y)
+KERNEL_MAKE_OPTS:= CC="$(TARGET_CC) -fno-tree-loop-distribute-patterns"
+endif
+
+KERNEL_MAKE_OPTS+= V=1 \
ARCH="$(ADK_TARGET_KARCH)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
HOSTCC="${HOST_CC}" \
@@ -9,13 +17,6 @@ KERNEL_MAKE_OPTS:= V=1 \
SHELL='${SHELL}' \
CONFIG_SHELL='${SHELL}'
-ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
-KERNEL_MAKE_OPTS+= CC="$(TARGET_CC) -mno-fdpic"
-else
-KERNEL_MAKE_OPTS+= CC="$(TARGET_CC)"
-endif
-
-
# regex for relocs needs pcre
ifeq ($(OS_FOR_BUILD),Darwin)
KERNEL_MAKE_OPTS+= HOSTLDFLAGS='-lpcreposix -Wl,-no_pie'
@@ -24,7 +25,7 @@ endif
# non-Linux platforms need elf.h
ifneq ($(OS_FOR_BUILD),Linux)
KERNEL_MAKE_OPTS+= HOSTCFLAGS='$(HOST_CPPFLAGS) ${HOST_CFLAGS}'
-KERNEL_MAKE_OPTS+= HOST_EXTRACFLAGS='-I${LINUX_DIR}/tools/include -I${LINUX_DIR}/usr/include -I${LINUX_DIR}/security/selinux/include -I${ADK_TOPDIR}/adk/include -DKBUILD_NO_NLS'
+KERNEL_MAKE_OPTS+= HOST_EXTRACFLAGS='-I${LINUX_DIR}/tools/include -I${LINUX_DIR}/usr/include -I${LINUX_DIR}/security/selinux/include -I${ADK_TOPDIR}/adk/include -I${LINUX_DIR}/scripts/dtc/libfdt -DKBUILD_NO_NLS'
else
KERNEL_MAKE_OPTS+= HOSTCFLAGS='${HOST_CFLAGS}'
endif
diff --git a/mk/linux-ver.mk b/mk/linux-ver.mk
index b4ed2bc1e..5e0fae716 100644
--- a/mk/linux-ver.mk
+++ b/mk/linux-ver.mk
@@ -15,29 +15,53 @@ KERNEL_FILE_VER:= $(ADK_TARGET_LINUX_KERNEL_GIT)
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(ADK_TARGET_LINUX_KERNEL_GIT_VER)-$(KERNEL_RELEASE)
endif
+ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_8),y)
+KERNEL_FILE_VER:= 6.8.6
+KERNEL_RELEASE:= 1
+KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
+KERNEL_HASH:= 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995
+endif
+ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_6),y)
+KERNEL_FILE_VER:= 6.6.28
+KERNEL_RELEASE:= 1
+KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
+KERNEL_HASH:= 818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394
+endif
+ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_1),y)
+KERNEL_FILE_VER:= 6.1.82
+KERNEL_RELEASE:= 1
+KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
+KERNEL_HASH:= d150d2d9d416877668d8b56f75759f166168d192419eefaa942ed67225cbec06
+endif
+ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_15),y)
+KERNEL_FILE_VER:= 5.15.152
+KERNEL_RELEASE:= 1
+KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
+KERNEL_HASH:= f0805225f4a5b24d0bba9302c2c2f261c04f737ac5dd931da9b112e9f3e4a47e
+endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_10),y)
-KERNEL_FILE_VER:= 5.10.75
+KERNEL_FILE_VER:= 5.10.213
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= 0a2b2f5fefb90773190aaef4726ac363e03992aedc424b0a57eca092d084304b
+KERNEL_HASH:= 84cf30223239ec3333a5f7b2a7fba2042bba70d1582a139f7543956af871ad80
endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_4),y)
-KERNEL_FILE_VER:= 5.4.155
+KERNEL_FILE_VER:= 5.4.272
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= cc0c0f902748d251cb22d0e69e3b8d260c447eb0072ef853da15da6cce775038
+KERNEL_HASH:= 3599d5959a403e64be407d7f05e56cb270d6ddd154e89a596609919ab1e2e366
endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_4_19),y)
-KERNEL_FILE_VER:= 4.19.213
+KERNEL_FILE_VER:= 4.19.310
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= 38f28c1cd6db0b54ee37a14fd17db651fe68704d08f95e141b14d32b872f4e98
+KERNEL_HASH:= 95ec94c4ab8f46d8a54430893f9bd653c46b0f1587d216818aa8f52fd313de69
endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_4_14),y)
-KERNEL_FILE_VER:= 4.14.252
+KERNEL_FILE_VER:= 4.14.334
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= 933bb2e9359165da8a7eb8ae8321e88e3e070c34b827d51937ff3ba443e15908
+KERNEL_HASH:= 8a1d520cfa71e9faebae9d8c24101f5bffe48fcb897dede4cecad5af67c34a45
endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_4_9),y)
KERNEL_FILE_VER:= 4.9.287
@@ -46,10 +70,10 @@ KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
KERNEL_HASH:= d44128674702529dd26214d6cd1c19542c37c5cc516f352bebbb78f0a9ed97c2
endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_4_4),y)
-KERNEL_FILE_VER:= 4.4.289
+KERNEL_FILE_VER:= 4.4.302
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= 33196aa3c0487d6d5be14c366fea1fb3d603d66efcf039746f77f3ef819be7bc
+KERNEL_HASH:= 35017bb40b604e0b577fc2b87e727632b46608a2ba3a4f5858b9177f58f376b3
endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_3_16),y)
KERNEL_FILE_VER:= 3.16.85
@@ -63,9 +87,3 @@ KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
KERNEL_HASH:= d7d0ee4588711d4f85ed67b65d447b4bbbe215e600a771fb87a62524b6341c43
endif
-ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_3_10_NDS32),y)
-KERNEL_FILE_VER:= 3.10-nds32
-KERNEL_RELEASE:= 1
-KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
-KERNEL_HASH:= 2f3e06924b850ca4d383ebb6baed154e1bb20440df6f38ca47c33950ec0e05c5
-endif
diff --git a/mk/linux.mk b/mk/linux.mk
index 37f7b8684..920c1749b 100644
--- a/mk/linux.mk
+++ b/mk/linux.mk
@@ -9,7 +9,8 @@ PKG_GIT:= $(ADK_TARGET_LINUX_KERNEL_GIT_TYPE)
PKG_SITES:= $(ADK_TARGET_LINUX_KERNEL_GIT_REPO)
else
PKG_VERSION:= $(KERNEL_FILE_VER)
-PKG_SITES:= ${MASTER_SITE_KERNEL:=kernel/v5.x/} \
+PKG_SITES:= ${MASTER_SITE_KERNEL:=kernel/v6.x/} \
+ ${MASTER_SITE_KERNEL:=kernel/v5.x/} \
${MASTER_SITE_KERNEL:=kernel/v4.x/} \
${MASTER_SITE_KERNEL:=kernel/v3.x/} \
${MASTER_SITE_KERNEL:=kernel/v3.0/testing/} \
diff --git a/mk/mirrors.mk b/mk/mirrors.mk
index a3b36be0b..a8dc27f6a 100644
--- a/mk/mirrors.mk
+++ b/mk/mirrors.mk
@@ -55,6 +55,7 @@ MASTER_SITE_MYSQL?= \
http://mysql.easynet.be/ \
MASTER_SITE_GNOME?= \
+ https://download.gnome.org/sources/ \
ftp://ftp.gnome.org/pub/GNOME/sources/ \
ftp://ftp.linux.org.uk/mirrors/ftp.gnome.org/sources/ \
ftp://ftp.acc.umu.se/pub/GNOME/sources/ \
diff --git a/mk/package.mk b/mk/package.mk
index 96add5789..2a3e1f414 100644
--- a/mk/package.mk
+++ b/mk/package.mk
@@ -224,15 +224,6 @@ endif
ifneq (${ADK_INSTALL_PACKAGE_NETWORK_SCRIPTS},y)
-@rm -rf $${IDIR_$(1)}/etc/network
endif
-ifeq (${ADK_RUNTIME_INIT_SYSTEMD},y)
- @for file in $$$$(ls ./files/*.service 2>/dev/null); do \
- fname=$$$$(echo $$$$file| sed -e "s#.*/##"); \
- mkdir -p $$(IDIR_$(1))/usr/lib/systemd/system && cp $$$$file $$(IDIR_$(1))/usr/lib/systemd/system/$$$$fname; \
- mkdir -p $$(IDIR_$(1))/etc/systemd/system/multi-user.target.wants; \
- ln -sf ../../../../usr/lib/systemd/system/$$$$fname \
- $$(IDIR_$(1))/etc/systemd/system/multi-user.target.wants; \
- done
-endif
endif
@mkdir -p $${PACKAGE_DIR} '$${STAGING_PKG_DIR}/stamps' \
'$${STAGING_TARGET_DIR}/scripts'
diff --git a/mk/perl.mk b/mk/perl.mk
index 893e8cb11..faaf078a9 100644
--- a/mk/perl.mk
+++ b/mk/perl.mk
@@ -1,4 +1,4 @@
-PERL_VERSION=5.32.1
+PERL_VERSION=5.38.0
PERL_ARCHNAME:=$(ADK_TARGET_CPU_ARCH)-linux
PERL_SITEDIR:=/usr/lib/perl5/site_perl/$(PERL_VERSION)
PERL_INCDIR:=/usr/lib/perl5/$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE
diff --git a/mk/pkg-bottom.mk b/mk/pkg-bottom.mk
index b46e381de..abc1e1604 100644
--- a/mk/pkg-bottom.mk
+++ b/mk/pkg-bottom.mk
@@ -53,10 +53,11 @@ ifneq ($(filter manual,${CONFIG_STYLE}),)
else ifneq ($(filter meson,${CONFIG_STYLE}),)
@$(CMD_TRACE) "configuring meson.. "
(cd ${WRKSRC} && $(MESON_ENV) \
- meson --prefix /usr --libdir lib \
+ meson setup --prefix /usr --libdir lib \
--cross-file $(STAGING_HOST_DIR)/etc/meson/cross-compilation.conf \
+ --build.pkg-config-path $(STAGING_HOST_DIR)/usr/lib/pkgconfig \
--buildtype release $(MESON_FLAGS) \
- $(WRKSRC) $(WRKBUILD))
+ $(WRKSRC) $(WRKBUILD)) $(MAKE_TRACE)
else ifneq ($(filter cmake,${CONFIG_STYLE}),)
@$(CMD_TRACE) "configuring cmake.. "
sed -e "s#@@TARGET_CC@@#$(TARGET_CC_NO_CCACHE)#" \
@@ -115,6 +116,7 @@ else ifeq ($(strip ${CONFIG_STYLE}),)
--disable-dependency-tracking \
--disable-libtool-lock \
--disable-nls \
+ --disable-silent-rules \
${CONFIGURE_LIB} \
${CONFIGURE_ARGS} $(MAKE_TRACE)
else
@@ -138,7 +140,7 @@ ${_BUILD_COOKIE}: ${_CONFIGURE_COOKIE}
@env ${MAKE_ENV} ${MAKE} pre-build $(MAKE_TRACE)
@$(CMD_TRACE) "compiling.. "
ifneq ($(filter meson,${BUILD_STYLE}),)
- PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD)
+ PATH='$(HOST_PATH)' ninja -v -C $(WRKBUILD) $(MAKE_TRACE)
else ifneq ($(filter manual,${BUILD_STYLE}),)
env ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} do-build $(MAKE_TRACE)
else ifeq ($(strip ${BUILD_STYLE}),)
@@ -212,7 +214,7 @@ endif
ifeq (,$(filter nostaging,${PKG_OPTS}))
@-cd ${WRKINST}; \
find usr ! -type d 2>/dev/null | \
- grep -E -v -e '^usr/share' -e '^usr/src' -e '^usr/doc' -e '^usr/local' -e '^usr/man' -e '^usr/info' \
+ grep -E -v -e '^usr/src' -e '^usr/doc' -e '^usr/local' -e '^usr/man' -e '^usr/info' \
-e '^usr/lib/libc.so' -e '^usr/bin/[a-z0-9-]+-config*' -e '^usr/lib/.*\.la$$' \
-e '^/usr/lib/libpthread_nonshared.a' | \
tee '${STAGING_PKG_DIR}/${PKG_NAME}' | \
diff --git a/mk/python.mk b/mk/python.mk
deleted file mode 100644
index 56008760a..000000000
--- a/mk/python.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-PYTHON_VERSION=2.7
-PYTHON_LIBDIR:=$(STAGING_HOST_DIR)/usr/lib
-PYTHON:=${STAGING_HOST_DIR}/usr/bin/python
diff --git a/mk/python3.mk b/mk/python3.mk
index 8c0ca363b..c2e9f7a27 100644
--- a/mk/python3.mk
+++ b/mk/python3.mk
@@ -1,3 +1,3 @@
-PYTHON_VERSION=3.9
+PYTHON_VERSION=3.11
PYTHON_LIBDIR:=$(STAGING_HOST_DIR)/usr/lib
PYTHON:=${STAGING_HOST_DIR}/usr/bin/python3
diff --git a/mk/vars.mk b/mk/vars.mk
index bc8b44646..1585833c6 100644
--- a/mk/vars.mk
+++ b/mk/vars.mk
@@ -142,7 +142,7 @@ TARGET_CFLAGS+= -mcpu=$(ADK_TARGET_GCC_CPU)
TARGET_CXXFLAGS+= -mcpu=$(ADK_TARGET_GCC_CPU)
endif
-# for archiectures where gcc --with-arch matches -march=
+# for architectures where gcc --with-arch matches -march=
ifneq ($(ADK_TARGET_GCC_ARCH),)
TARGET_CFLAGS+= -march=$(ADK_TARGET_GCC_ARCH)
TARGET_CXXFLAGS+= -march=$(ADK_TARGET_GCC_ARCH)
@@ -171,9 +171,9 @@ endif
endif
ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
-TARGET_LDFLAGS+= -Wl,-elf2flt
-TARGET_CFLAGS+= -Wl,-elf2flt
-TARGET_CXXFLAGS+= -Wl,-elf2flt
+TARGET_LDFLAGS+= -Wl,-elf2flt=-r
+TARGET_CFLAGS+= -Wl,-elf2flt=-r
+TARGET_CXXFLAGS+= -Wl,-elf2flt=-r
endif
ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
@@ -198,6 +198,13 @@ ifneq ($(ADK_TARGET_USE_LD_BIND_NOW),)
TARGET_LDFLAGS+= -Wl,-z,now
endif
+ifeq ($(ADK_TARGET_ARCH_RISCV64)$(ADK_TARGET_ARCH_RISCV32),y)
+ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
+TARGET_CFLAGS+= -fPIC
+TARGET_CXXFLAGS+= -fPIC
+endif
+endif
+
# needed for musl ppc
ifeq ($(ADK_TARGET_ARCH_PPC),y)
ifeq ($(ADK_TARGET_LIB_MUSL),y)
@@ -205,11 +212,17 @@ TARGET_LDFLAGS+= -Wl,--secure-plt
endif
endif
+ifneq ($(ADK_TARGET_BINFMT_ELF)$(ADK_TARGET_WITH_MMU),y)
ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY)$(ADK_TARGET_USE_STATIC_AND_SHARED_LIBS),y)
TARGET_CFLAGS+= -static
TARGET_CXXFLAGS+= -static
TARGET_LDFLAGS+= -static
endif
+else
+TARGET_CFLAGS+= -fpie
+TARGET_CXXFLAGS+= -fpie
+TARGET_LDFLAGS+= -fpie -pie
+endif
ifneq ($(ADK_TARGET_USE_SSP),)
TARGET_CFLAGS+= -fstack-protector-all --param=ssp-buffer-size=4
@@ -242,8 +255,8 @@ TARGET_CXXFLAGS+= -mlongcalls -mauto-litpools
endif
endif
ifeq ($(ADK_TARGET_ARCH_MICROBLAZE),y)
-TARGET_CFLAGS+= -mxl-barrel-shift
-TARGET_CXXFLAGS+= -mxl-barrel-shift
+TARGET_CFLAGS+= -mxl-barrel-shift -fno-tree-loop-distribute-patterns
+TARGET_CXXFLAGS+= -mxl-barrel-shift -fno-tree-loop-distribute-patterns
endif
endif
@@ -280,8 +293,8 @@ endif
# workaround gcc bug for m68k/coldfire
ifeq ($(ADK_TARGET_CPU_CF),y)
-TARGET_CFLAGS+= -fno-dwarf2-cfi-asm
-TARGET_CXXFLAGS+= -fno-dwarf2-cfi-asm
+TARGET_CFLAGS+= -fno-dwarf2-cfi-asm -mxgot
+TARGET_CXXFLAGS+= -fno-dwarf2-cfi-asm -mxgot
endif
ifeq ($(ADK_TARGET_ARCH_ARM),y)
@@ -320,7 +333,6 @@ HOST_STATIC_LDFLAGS:= -Wl,-static
endif
SED:= PATH='${HOST_PATH}' sed -i -e
-XZ:= PATH='${HOST_PATH}' xz
CPIO:= PATH='${HOST_PATH}' cpio
LINUX_DIR:= $(BUILD_DIR)/$(ADK_TARGET_OS)
KERNEL_MODULE_FLAGS:= ARCH=${ADK_TARGET_KARCH} \
@@ -404,7 +416,7 @@ PKG_INSTALL:= PATH='${HOST_PATH}' \
PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/opkg
endif
-ifeq ($(ADK_TARGET_PACKAGE_TXZ),y)
+ifeq ($(ADK_TARGET_PACKAGE_TGZ),y)
PKG_BUILD:= ${BASH} ${SCRIPT_DIR}/tarpkg build
PKG_INSTALL:= PKG_INSTROOT='$(TARGET_DIR)' \
PATH='${HOST_PATH}' ${BASH} ${SCRIPT_DIR}/tarpkg install
diff --git a/package/Config.in b/package/Config.in
index fd578b8c9..248d66fff 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -26,6 +26,7 @@ source package/Config.in.auto.app.chat
source package/Config.in.auto.app.crypto
source package/Config.in.auto.app.debug
source package/Config.in.auto.app.editor
+source package/Config.in.auto.app.games
source package/Config.in.auto.app.p2p
endmenu
diff --git a/package/Config.in.options b/package/Config.in.options
index 39e6a0b96..cdf3f436a 100644
--- a/package/Config.in.options
+++ b/package/Config.in.options
@@ -2,14 +2,14 @@ config ADK_PACKAGE_SUFFIX
string
default "ipk" if ADK_TARGET_PACKAGE_IPKG
default "ipk" if ADK_TARGET_PACKAGE_OPKG
- default "tar.xz" if ADK_TARGET_PACKAGE_TXZ
+ default "tar.gz" if ADK_TARGET_PACKAGE_TGZ
choice
prompt "Package format"
-default ADK_TARGET_PACKAGE_TXZ
+default ADK_TARGET_PACKAGE_TGZ
-config ADK_TARGET_PACKAGE_TXZ
- bool "xz compressed tar archive"
+config ADK_TARGET_PACKAGE_TGZ
+ bool "gzip compressed tar archive"
help
Create compressed tar archives of packages.
Pre- and post install scripts will be executed in the target
@@ -47,7 +47,7 @@ config ADK_LEAVE_ETC_ALONE
config ADK_INSTALL_PACKAGE_INIT_SCRIPTS
bool "ship custom init-scripts along with packages"
- default y if !ADK_RUNTIME_INIT_SYSTEMD
+ default y
depends on !ADK_LEAVE_ETC_ALONE
help
Turning this option to false will prevent the ADK from
@@ -59,7 +59,7 @@ config ADK_INSTALL_PACKAGE_INIT_SCRIPTS
config ADK_INSTALL_PACKAGE_NETWORK_SCRIPTS
bool "ship custom network-scripts along with packages"
- default y if !ADK_RUNTIME_INIT_SYSTEMD
+ default y
depends on !ADK_LEAVE_ETC_ALONE
help
Turning this option to false will prevent the ADK from
diff --git a/package/ImageMagick/Makefile b/package/ImageMagick/Makefile
index 2981a2930..aca4f647f 100644
--- a/package/ImageMagick/Makefile
+++ b/package/ImageMagick/Makefile
@@ -4,10 +4,10 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= ImageMagick
-PKG_VERSION:= 7.0.5
-PKG_EXTRAVER:= 10
+PKG_VERSION:= 7.1.1
+PKG_EXTRAVER:= 29
PKG_RELEASE:= 1
-PKG_HASH:= 0058fcde533986334458a5c99600b1b9633182dd9562cbad4ba618c5ccf2a28f
+PKG_HASH:= f140465fbeb0b4724cba4394bc6f6fb32715731c1c62572d586f4f1c8b9b0685
PKG_DESCR:= image processing and converting utility
PKG_SECTION:= mm/image
PKG_BUILDDEP:= libpng libjpeg-turbo libtiff fontconfig
diff --git a/package/adktest/Makefile b/package/adktest/Makefile
index 3e1ad35c3..b6571a199 100644
--- a/package/adktest/Makefile
+++ b/package/adktest/Makefile
@@ -5,7 +5,7 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= adktest
PKG_VERSION:= 0.1
-PKG_RELEASE:= 10
+PKG_RELEASE:= 11
PKG_DESCR:= helper tools and scripts for qemu testing
PKG_SECTION:= base/tests
PKG_URL:= http://openadk.org/
diff --git a/package/adktest/files/adktest.init b/package/adktest/files/adktest.init
index e1fe9a8c2..3969eb585 100755
--- a/package/adktest/files/adktest.init
+++ b/package/adktest/files/adktest.init
@@ -17,6 +17,7 @@ start)
fi
echo "Starting test script ..."
if [ -x /run.sh ];then
+ mount -o remount,rw /
/run.sh
quit
else
diff --git a/package/adktest/src/quit b/package/adktest/src/quit
index 74c5f01b8..00468d36a 100755
--- a/package/adktest/src/quit
+++ b/package/adktest/src/quit
@@ -1,7 +1,7 @@
#!/bin/sh
arch=$(uname -m)
case $arch in
- arc|blackfin|m68k|metag|openrisc|riscv64|s390x|sh4eb)
+ arc|blackfin|kvx|m68k|metag|riscv64|s390x|sh4eb)
poweroff
;;
*)
diff --git a/package/afboot-stm32/patches/patch-Makefile b/package/afboot-stm32/patches/patch-Makefile
index 8f543cc4e..c063052c9 100644
--- a/package/afboot-stm32/patches/patch-Makefile
+++ b/package/afboot-stm32/patches/patch-Makefile
@@ -1,11 +1,18 @@
---- afboot-stm32-3566acd582e5536fb60864281788a30f5527df2d.orig/Makefile 2021-04-09 08:03:07.000000000 +0200
-+++ afboot-stm32-3566acd582e5536fb60864281788a30f5527df2d/Makefile 2021-04-09 08:12:57.359735373 +0200
-@@ -13,7 +13,8 @@ DTB_ADDR?=0x08004000
+--- afboot-stm32-3566acd582e5536fb60864281788a30f5527df2d.orig/Makefile 2021-12-31 07:02:01.000000000 +0100
++++ afboot-stm32-3566acd582e5536fb60864281788a30f5527df2d/Makefile 2021-12-31 12:02:33.236273664 +0100
+@@ -7,13 +7,14 @@ OBJDUMP = $(CROSS_COMPILE)objdump
+ SIZE = $(CROSS_COMPILE)size
+ GDB = $(CROSS_COMPILE)gdb
+ OPENOCD = openocd
+-KERNEL_ADDR?=0x08008000
++KERNEL_ADDR?=0x0800C000
+ DTB_ADDR?=0x08004000
+
CFLAGS := -mthumb -mcpu=cortex-m4
CFLAGS += -ffunction-sections -fdata-sections
CFLAGS += -Os -std=gnu99 -Wall
-LINKERFLAGS := -nostartfiles --gc-sections
-+CFLAGS += -fno-builtin
++CFLAGS += -mno-fdpic -fno-builtin
+LINKERFLAGS := --gc-sections
obj-y += gpio.o mpu.o qspi.o start_kernel.o
diff --git a/package/afpfs-ng/Makefile b/package/afpfs-ng/Makefile
index 96380df46..28cbb57ba 100644
--- a/package/afpfs-ng/Makefile
+++ b/package/afpfs-ng/Makefile
@@ -11,7 +11,6 @@ PKG_DESCR:= client for apple filing protocol
PKG_SECTION:= net/fs
PKG_DEPENDS:= libgcrypt
PKG_BUILDDEP:= fuse libgcrypt readline
-PKG_URL:= https://sites.google.com/site/alexthepuffin/home
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=afpfs-ng/}
PKG_LIBNAME:= libafpclient
PKG_OPTS:= dev
@@ -29,6 +28,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,AFPFS_NG,afpfs-ng,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,LIBAFPCLIENT,libafpclient,$(PKG_VERSION)-${PKG_RELEASE},${PKGSS_LIBAFPCLIENT},${PKGSD_LIBAFPCLIENT},${PKGSC_LIBAFPCLIENT},$(PKG_OPTS)))
+TARGET_CFLAGS+= -fcommon
AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --enable-gcrypt
CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes
diff --git a/package/aircrack-ng/Makefile b/package/aircrack-ng/Makefile
index 40437b144..154e19922 100644
--- a/package/aircrack-ng/Makefile
+++ b/package/aircrack-ng/Makefile
@@ -4,31 +4,28 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= aircrack-ng
-PKG_VERSION:= 1.2
+PKG_VERSION:= 1.7
PKG_RELEASE:= 1
-PKG_HASH:= d93ac16aade5b4d37ab8cdf6ce4b855835096ccf83deb65ffdeff6d666eaff36
+PKG_HASH:= 05a704e3c8f7792a17315080a21214a4448fd2452c1b0dd5226a3a55f90b58c3
PKG_DESCR:= set of tools for auditing wireless networks
PKG_SECTION:= net/wifi
-PKG_DEPENDS:= libpcap libnl libressl
-PKG_BUILDDEP:= libpcap libnl libressl
-PKG_NEEDS:= threads
+PKG_DEPENDS:= libpcap libnl libressl zlib
+PKG_BUILDDEP:= libpcap libnl libressl zlib
+PKG_NEEDS:= threads c++
PKG_URL:= http://www.aircrack-ng.org/
PKG_SITES:= http://download.aircrack-ng.org/
# do not build parallel, otherwise libosdep.a may not be ready when compiling airtun-ng
PKG_NOPARALLEL:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}-rc4.tar.gz
-WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION}-rc4
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,AIRCRACK_NG,${PKG_NAME},$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIG_STYLE:= manual
-
-XAKE_FLAGS+= CC="$(TARGET_CC)" \
- TOOL_PREFIX="$(TARGET_CROSS)" \
- OSNAME="Linux" prefix="/usr"
+AUTOTOOL_STYLE:= autogen
+XAKE_FLAGS+= V=1
+CONFIGURE_ARGS+= --with-libpcap-include='$(STAGING_TARGET_DIR)/usr/include'
aircrack-ng-install:
$(INSTALL_DIR) $(IDIR_AIRCRACK_NG)/usr/bin
diff --git a/package/aircrack-ng/patches/patch-common_mak b/package/aircrack-ng/patches/patch-common_mak
deleted file mode 100644
index 9a8bf9c3c..000000000
--- a/package/aircrack-ng/patches/patch-common_mak
+++ /dev/null
@@ -1,27 +0,0 @@
---- aircrack-ng-1.2-rc4.orig/common.mak 2015-12-31 20:42:10.000000000 +0100
-+++ aircrack-ng-1.2-rc4/common.mak 2017-06-06 21:16:36.954790985 +0200
-@@ -1,6 +1,6 @@
- PKG_CONFIG ?= pkg-config
-
--NEWSSE = true
-+NEWSSE = false
- # Newer version of the core can be enabled via SIMDCORE
- # but should be automatically flipped on thru autodetection
- SIMDCORE = false
-@@ -231,16 +231,6 @@ ifeq ($(GCC_OVER49), 0)
- GCC_OVER49 = $(shell expr 4.9 \<= `$(CC) -dumpversion | awk -F. '{ print $1$2 }'`)
- endif
-
--ifeq ($(GCC_OVER49), 0)
-- ifeq ($(GCC_OVER41), 1)
-- COMMON_CFLAGS += -fstack-protector
-- endif
--endif
--
--ifeq ($(GCC_OVER49), 1)
-- COMMON_CFLAGS += -fstack-protector-strong
--endif
--
- ifeq ($(GCC_OVER45), 1)
- CFLAGS += -Wno-unused-but-set-variable -Wno-array-bounds
- endif
diff --git a/package/aircrack-ng/patches/patch-src_osdep_linux_c b/package/aircrack-ng/patches/patch-src_osdep_linux_c
deleted file mode 100644
index 1811eb90a..000000000
--- a/package/aircrack-ng/patches/patch-src_osdep_linux_c
+++ /dev/null
@@ -1,26 +0,0 @@
- When search for wireless-tools, also check $PATH
---- aircrack-ng-1.2-rc4.orig/src/osdep/linux.c 2016-02-15 00:34:57.000000000 +0100
-+++ aircrack-ng-1.2-rc4/src/osdep/linux.c 2017-06-06 20:36:32.460367791 +0200
-@@ -263,6 +263,7 @@ static char * wiToolsPath(const char * t
- "/usr/local/bin",
- "/tmp"
- };
-+ char *envpath, *token;
-
- // Also search in other known location just in case we haven't found it yet
- nbelems = sizeof(paths) / sizeof(char *);
-@@ -273,6 +274,14 @@ static char * wiToolsPath(const char * t
- return path;
- }
-
-+ /* search again in $PATH */
-+ for (envpath = getenv("PATH"); ; envpath = NULL) {
-+ if ((token = strtok(envpath, ":")) == NULL)
-+ break;
-+ if ((path = searchInside(token, tool)) != NULL)
-+ return path;
-+ }
-+
- return NULL;
- }
-
diff --git a/package/alsa-lib/Makefile b/package/alsa-lib/Makefile
index bf7f496d1..bbafdfd70 100644
--- a/package/alsa-lib/Makefile
+++ b/package/alsa-lib/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= alsa-lib
-PKG_VERSION:= 1.1.4
+PKG_VERSION:= 1.2.11
PKG_RELEASE:= 1
-PKG_HASH:= 82f50a09487079755d93e4c9384912196995bade6280bce9bfdcabf094bfb515
+PKG_HASH:= 9f3f2f69b995f9ad37359072fbc69a3a88bfba081fc83e9be30e14662795bb4d
PKG_DESCR:= sound library
PKG_SECTION:= libs/audio
PKG_URL:= http://www.alsa-project.org/
@@ -28,7 +28,8 @@ endif
HOST_STYLE:= auto
HOST_CONFIGURE_ARGS+= --disable-python
CONFIGURE_ARGS+= --disable-python \
- --without-versioned
+ --without-versioned \
+ --disable-topology
alsa-lib-install:
${INSTALL_DIR} ${IDIR_ALSA_LIB}/usr/lib
diff --git a/package/alsa-utils/Makefile b/package/alsa-utils/Makefile
index cabc1ca31..2caa08f05 100644
--- a/package/alsa-utils/Makefile
+++ b/package/alsa-utils/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= alsa-utils
-PKG_VERSION:= 1.1.4
+PKG_VERSION:= 1.2.11
PKG_RELEASE:= 1
-PKG_HASH:= a7831044de92c5bf33bf3365a3f36e49397f4191e934df460ae1ca15138c9d9d
+PKG_HASH:= 9ac6ca3a883f151e568dcf979b8d2e5cbecc51b819bb0e6bb8a2e9b34cc428a7
PKG_DESCR:= mixer/player/record utilities
PKG_SECTION:= mm/audio
PKG_DEPENDS:= alsa-lib
diff --git a/package/alsa-utils/files/amixer.init b/package/alsa-utils/files/amixer.init
index 884b2acf2..58813a96c 100644
--- a/package/alsa-utils/files/amixer.init
+++ b/package/alsa-utils/files/amixer.init
@@ -11,7 +11,7 @@ autostart)
exec sh $0 start
;;
start)
- for shell in $(ls /etc/amixer.d/*.sh); do
+ for shell in $(ls /etc/amixer.d/*.sh 2>/dev/null); do
./$shell >/dev/null
done
;;
diff --git a/package/apr-util/Makefile b/package/apr-util/Makefile
index 7046779ac..3ee12d26b 100644
--- a/package/apr-util/Makefile
+++ b/package/apr-util/Makefile
@@ -23,7 +23,8 @@ $(eval $(call PKG_template,APR_UTIL,apr-util,${PKG_VERSION}-${PKG_RELEASE},${PKG
CONFIGURE_ARGS+= --without-berkeley-db \
--with-apr=${STAGING_TARGET_DIR}/usr \
- --with-expat=${STAGING_TARGET_DIR}/usr
+ --with-expat=${STAGING_TARGET_DIR}/usr \
+ --without-iconv
XAKE_FLAGS+= apr_builddir=${STAGING_TARGET_DIR}/usr/share/build-1 \
apr_builders=${STAGING_TARGET_DIR}/usr/share/build-1
diff --git a/package/arm-trusted-firmware/Makefile b/package/arm-trusted-firmware/Makefile
new file mode 100644
index 000000000..10bb72a25
--- /dev/null
+++ b/package/arm-trusted-firmware/Makefile
@@ -0,0 +1,26 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= arm-trusted-firmware
+PKG_VERSION:= 6952ce49c29be021eb07159c2f472e9e23633135
+PKG_GIT:= hash
+PKG_RELEASE:= 1
+PKG_DESCR:= ARM Trusted Firmware
+PKG_SECTION:= base/boot
+PKG_SITES:= https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,ARM_TRUSTED_FIRMWARE,arm-trusted-firmware,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+TARGET_LDFLAGS:=
+XAKE_FLAGS+= V=1
+ALL_TARGET:= bl31
+CONFIG_STYLE:= manual
+INSTALL_STYLE:= manual
+
+arm-trusted-firmware-install:
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/arm-trusted-firmware/patches/patch-plat_rockchip_rk3328_rk3328_def_h b/package/arm-trusted-firmware/patches/patch-plat_rockchip_rk3328_rk3328_def_h
new file mode 100644
index 000000000..cbe6a2b07
--- /dev/null
+++ b/package/arm-trusted-firmware/patches/patch-plat_rockchip_rk3328_rk3328_def_h
@@ -0,0 +1,11 @@
+--- arm-trusted-firmware-6952ce49c29be021eb07159c2f472e9e23633135.orig/plat/rockchip/rk3328/rk3328_def.h 2022-12-19 22:36:56.000000000 +0100
++++ arm-trusted-firmware-6952ce49c29be021eb07159c2f472e9e23633135/plat/rockchip/rk3328/rk3328_def.h 2022-12-25 03:14:08.860679511 +0100
+@@ -103,7 +103,7 @@
+ /**************************************************************************
+ * UART related constants
+ **************************************************************************/
+-#define RK3328_BAUDRATE 1500000
++#define RK3328_BAUDRATE 115200
+ #define RK3328_UART_CLOCK 24000000
+
+ /******************************************************************************
diff --git a/package/asterisk/Makefile b/package/asterisk/Makefile
index 2504e1abc..bfda5995d 100644
--- a/package/asterisk/Makefile
+++ b/package/asterisk/Makefile
@@ -4,24 +4,26 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= asterisk
-PKG_VERSION:= 1.8.28.2
-PKG_RELEASE:= 2
-PKG_HASH:= 7b3d84a3403fce590377808eaa4b08b6320666ca0e37eba0ad578b66211b13c8
+PKG_VERSION:= 20.7.0
+PKG_RELEASE:= 1
+PKG_HASH:= 3d47889d2c4501974a8adaaba49738e6268a836dc177c7887a93a8ecf1d38b26
PKG_DESCR:= open source pbx
PKG_SECTION:= net/voip
-PKG_DEPENDS:= libncurses libcurl libressl
-PKG_BUILDDEP:= ncurses zlib curl popt libressl
+PKG_DEPENDS:= libncurses libcurl libressl libedit libuuid libjansson
+PKG_DEPENDS+= libxml2 libsqlite libxslt
+PKG_BUILDDEP:= ncurses zlib curl popt libressl libedit util-linux libjansson
+PKG_BUILDDEP+= libxml2 sqlite libxslt
PKG_NEEDS:= threads c++
PKG_URL:= http://www.asterisk.org/
PKG_SITES:= http://downloads.asterisk.org/pub/telephony/asterisk/releases/
-PKG_NOPARALLEL:= 1
+#PKG_NOPARALLEL:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
PKG_LIBC_DEPENDS:= uclibc-ng glibc
PKG_SUBPKGS:= ASTERISK ASTERISK_VOICEMAIL ASTERISK_SOUNDS
-PKG_SUBPKGS+= ASTERISK_CHAN_SKINNY ASTERISK_CHAN_IAX2 ASTERISK_CODEC_SPEEX ASTERISK_CODEC_GSM
+PKG_SUBPKGS+= ASTERISK_CHAN_IAX2 ASTERISK_CODEC_SPEEX ASTERISK_CODEC_GSM
PKG_SUBPKGS+= ASTERISK_PBX_DUNDI ASTERISK_RES_AGI
PKGSD_ASTERISK_VOICEMAIL:= voicemail support
PKGSN_ASTERISK_VOICEMAIL:= asterisk
@@ -31,10 +33,6 @@ PKGSD_ASTERISK_PBX_DUNDI:= PBX dundi support
PKGSN_ASTERISK_PBX_DUNDI:= asterisk
PKGSD_ASTERISK_RES_AGI:= res agi support
PKGSN_ASTERISK_RES_AGI:= asterisk
-PKGSD_ASTERISK_CHAN_MGCP:= Media Gateway Control Protocol implementation
-PKGSN_ASTERISK_CHAN_MGCP:= asterisk
-PKGSD_ASTERISK_CHAN_SKINNY:= skinny client control protocol implementation
-PKGSN_ASTERISK_CHAN_SKINNY:= asterisk
PKGSD_ASTERISK_CHAN_IAX2:= support for the Inter Asterisk Protocol
PKGSN_ASTERISK_CHAN_IAX2:= asterisk
PKGSD_ASTERISK_CODEC_SPEEX:= speex/PCM16 Codec translator
@@ -49,8 +47,6 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,ASTERISK,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,ASTERISK_VOICEMAIL,asterisk-voicemail,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ASTERISK_VOICEMAIL},${PKG_SECTION}))
$(eval $(call PKG_template,ASTERISK_SOUNDS,asterisk-sounds,$(PKG_VERSION)-${PKG_RELEASE},${PKGSS_ASTERISK_SOUNDS},${PKGSD_ASTERISK_SOUNDS},${PKG_SECTION}))
-#$(eval $(call PKG_template,ASTERISK_CHAN_MGCP,asterisk-chan-mgcp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ASTERISK_CHAN_MGCP},${PKG_SECTION}))
-$(eval $(call PKG_template,ASTERISK_CHAN_SKINNY,asterisk-chan-skinny,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ASTERISK_CHAN_SKINNY},${PKG_SECTION}))
$(eval $(call PKG_template,ASTERISK_CHAN_IAX2,asterisk-chan-iax2,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ASTERISK_CHAN_IAX2},${PKG_SECTION}))
$(eval $(call PKG_template,ASTERISK_CODEC_SPEEX,asterisk-codec-speex,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ASTERISK_CODEC_SPEEX},${PKG_SECTION}))
$(eval $(call PKG_template,ASTERISK_CODEC_GSM,asterisk-codec-gsm,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_ASTERISK_CODEC_GSM},${PKG_SECTION}))
@@ -59,16 +55,16 @@ $(eval $(call PKG_template,ASTERISK_RES_AGI,asterisk-res-agi,$(PKG_VERSION)-${PK
CONFIGURE_ARGS= --with-z=${STAGING_TARGET_DIR}/usr \
--with-ncurses=${STAGING_TARGET_DIR}/usr \
+ --with-libedit=${STAGING_TARGET_DIR}/usr \
+ --with-jansson=${STAGING_TARGET_DIR}/usr \
--with-ssl=${STAGING_TARGET_DIR}/usr \
--disable-xmldoc \
--without-tonezone \
--without-asound \
- --without-curses \
--without-gtk2 \
--without-h323 \
--without-iksemel \
--without-imap \
- --without-nbs \
--without-netsnmp \
--without-newt \
--without-openais \
@@ -78,12 +74,6 @@ CONFIGURE_ARGS= --with-z=${STAGING_TARGET_DIR}/usr \
--without-pri \
--without-pwlib \
--without-tds \
- --without-termcap \
- --without-tinfo \
- --without-vpb \
- --without-misdn \
- --without-isdnnet \
- --without-suppserv \
--without-postgres
ifneq (${ADK_PACKAGE_ASTERISK_CODEC_GSM},)
@@ -123,10 +113,10 @@ pre-configure:
pre-build:
$(MAKE) -C $(WRKBUILD)/menuselect
-post-build:
- cd ${WRKBUILD}/sounds ; \
- tar xzf asterisk-core-sounds-en-gsm-1.4.25.tar.gz ; \
- rm asterisk-core-sounds-en-gsm-1.4.25.tar.gz
+#post-build:
+# cd ${WRKBUILD}/sounds ; \
+# tar xzf asterisk-core-sounds-en-gsm-1.4.25.tar.gz ; \
+# rm asterisk-core-sounds-en-gsm-1.4.25.tar.gz
do-install:
$(CP) $(WRKINST)/* $(IDIR_ASTERISK)
@@ -189,38 +179,19 @@ asterisk-sounds-install:
asterisk-voicemail-install:
${INSTALL_DIR} $(IDIR_ASTERISK_VOICEMAIL)/etc/asterisk
${INSTALL_DIR} $(IDIR_ASTERISK_VOICEMAIL)/usr/lib/asterisk/modules
- ${INSTALL_DATA} $(WRKBUILD)/configs/voicemail.conf.sample \
+ ${INSTALL_DATA} $(WRKBUILD)/configs/samples/voicemail.conf.sample \
$(IDIR_ASTERISK_VOICEMAIL)/etc/asterisk/voicemail.conf
${CP} $(WRKBUILD)/apps/*voicemail.so \
$(IDIR_ASTERISK_VOICEMAIL)/usr/lib/asterisk/modules/
${INSTALL_BIN} $(WRKBUILD)/res/res_adsi.so \
$(IDIR_ASTERISK_VOICEMAIL)/usr/lib/asterisk/modules/
- ${INSTALL_DIR} $(IDIR_ASTERISK_VOICEMAIL)/usr/lib/asterisk/sounds
- $(CP) $(WRKBUILD)/sounds/vm-*.gsm \
- $(IDIR_ASTERISK_VOICEMAIL)/usr/lib/asterisk/sounds/
-
-asterisk-chan-mgcp-install:
- ${INSTALL_DIR} $(IDIR_ASTERISK_CHAN_MGCP)/etc/asterisk
- ${INSTALL_DATA} $(WRKBUILD)/configs/mgcp.conf.sample \
- $(IDIR_ASTERISK_CHAN_MGCP)/etc/asterisk/mgcp.conf
- ${INSTALL_DIR} $(IDIR_ASTERISK_CHAN_MGCP)/usr/lib/asterisk/modules
- ${INSTALL_BIN} $(WRKBUILD)/channels/chan_mgcp.so \
- $(IDIR_ASTERISK_CHAN_MGCP)/usr/lib/asterisk/modules/
-
-asterisk-chan-skinny-install:
- ${INSTALL_DIR} $(IDIR_ASTERISK_CHAN_SKINNY)/etc/asterisk
- ${INSTALL_DATA} $(WRKBUILD)/configs/skinny.conf.sample \
- $(IDIR_ASTERISK_CHAN_SKINNY)/etc/asterisk/skinny.conf
- ${INSTALL_DIR} $(IDIR_ASTERISK_CHAN_SKINNY)/usr/lib/asterisk/modules
- ${INSTALL_BIN} $(WRKBUILD)/channels/chan_skinny.so \
- $(IDIR_ASTERISK_CHAN_SKINNY)/usr/lib/asterisk/modules/
asterisk-chan-iax2-install:
${INSTALL_DIR} $(IDIR_ASTERISK_CHAN_IAX2)/etc/asterisk
${INSTALL_DIR} $(IDIR_ASTERISK_CHAN_IAX2)/usr/lib/asterisk/modules
- ${INSTALL_DATA} $(WRKBUILD)/configs/iax.conf.sample \
+ ${INSTALL_DATA} $(WRKBUILD)/configs/samples/iax.conf.sample \
$(IDIR_ASTERISK_CHAN_IAX2)/etc/asterisk/iax.conf
- ${INSTALL_DATA} $(WRKBUILD)/configs/iaxprov.conf.sample \
+ ${INSTALL_DATA} $(WRKBUILD)/configs/samples/iaxprov.conf.sample \
$(IDIR_ASTERISK_CHAN_IAX2)/etc/asterisk/iaxprov.conf
${INSTALL_BIN} $(WRKBUILD)/channels/chan_iax2.so \
$(IDIR_ASTERISK_CHAN_IAX2)/usr/lib/asterisk/modules/
@@ -237,7 +208,7 @@ asterisk-codec-gsm-install:
asterisk-pbx-dundi-install:
${INSTALL_DIR} $(IDIR_ASTERISK_PBX_DUNDI)/etc/asterisk
- ${INSTALL_DATA} $(WRKBUILD)/configs/dundi.conf.sample \
+ ${INSTALL_DATA} $(WRKBUILD)/configs/samples/dundi.conf.sample \
$(IDIR_ASTERISK_PBX_DUNDI)/etc/asterisk/dundi.conf
${INSTALL_DIR} $(IDIR_ASTERISK_PBX_DUNDI)/usr/lib/asterisk/modules
${INSTALL_BIN} $(WRKBUILD)/pbx/pbx_dundi.so \
@@ -252,7 +223,7 @@ asterisk-res-agi-install:
asterisk-meetme-install:
${INSTALL_DIR} ${IDIR_ASTERISK_MEETME}/etc/asterisk/
${INSTALL_DIR} ${IDIR_ASTERISK_MEETME}/usr/lib/asterisk/modules
- ${INSTALL_DATA} ${WRKBUILD}/configs/meetme.conf.sample \
+ ${INSTALL_DATA} ${WRKBUILD}/configs/samples/meetme.conf.sample \
${IDIR_ASTERISK_MEETME}/etc/asterisk/meetme.conf
${INSTALL_BIN} ${WRKBUILD}/apps/app_meetme.so \
${IDIR_ASTERISK_MEETME}/usr/lib/asterisk/modules
diff --git a/package/asterisk/files/asterisk.init b/package/asterisk/files/asterisk.init
index 9dfbed4a1..9f3e2aa5c 100644
--- a/package/asterisk/files/asterisk.init
+++ b/package/asterisk/files/asterisk.init
@@ -11,7 +11,7 @@ autostart)
exec sh $0 start
;;
start)
- for dir in run log spool lib; do
+ for dir in run log spool lib keys; do
[ -d /var/$dir/asterisk ] || mkdir -p /var/$dir/asterisk
done
/usr/sbin/asterisk
diff --git a/package/asterisk/patches/patch-main_dns_c b/package/asterisk/patches/patch-main_dns_c
deleted file mode 100644
index 0c3684d52..000000000
--- a/package/asterisk/patches/patch-main_dns_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- asterisk-1.8.20.1.orig/main/dns.c 2012-06-15 17:56:08.000000000 +0200
-+++ asterisk-1.8.20.1/main/dns.c 2013-03-05 14:49:01.000000000 +0100
-@@ -45,6 +45,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revisi
- #include "asterisk/dns.h"
- #include "asterisk/endian.h"
-
-+#undef HAVE_RES_NINIT
-+
- #define MAX_SIZE 4096
-
- #ifdef __PDP_ENDIAN
diff --git a/package/asterisk/patches/patch-main_tcptls_c b/package/asterisk/patches/patch-main_tcptls_c
deleted file mode 100644
index bf1c21c25..000000000
--- a/package/asterisk/patches/patch-main_tcptls_c
+++ /dev/null
@@ -1,16 +0,0 @@
---- asterisk-1.8.28.2.orig/main/tcptls.c 2014-06-13 07:06:27.000000000 +0200
-+++ asterisk-1.8.28.2/main/tcptls.c 2016-09-25 20:47:30.313327069 +0200
-@@ -753,9 +753,12 @@ static int __ssl_setup(struct ast_tls_co
- cfg->ssl_ctx = SSL_CTX_new(SSLv2_client_method());
- } else
- #endif
-+#ifndef OPENSSL_NO_SSL3_METHOD
- if (ast_test_flag(&cfg->flags, AST_SSL_SSLV3_CLIENT)) {
- cfg->ssl_ctx = SSL_CTX_new(SSLv3_client_method());
-- } else if (ast_test_flag(&cfg->flags, AST_SSL_TLSV1_CLIENT)) {
-+ } else
-+#endif
-+ if (ast_test_flag(&cfg->flags, AST_SSL_TLSV1_CLIENT)) {
- cfg->ssl_ctx = SSL_CTX_new(TLSv1_client_method());
- } else {
- /* SSLv23_client_method() sends SSLv2, this was the original
diff --git a/package/asterisk/patches/patch-res_stasis_control_c b/package/asterisk/patches/patch-res_stasis_control_c
new file mode 100644
index 000000000..5c80756e0
--- /dev/null
+++ b/package/asterisk/patches/patch-res_stasis_control_c
@@ -0,0 +1,11 @@
+--- asterisk-20.6.0.orig/res/stasis/control.c 2024-01-25 17:19:33.000000000 +0100
++++ asterisk-20.6.0/res/stasis/control.c 2024-02-05 15:20:24.824145190 +0100
+@@ -25,6 +25,8 @@
+
+ #include "asterisk.h"
+
++#include <signal.h>
++
+ #include "asterisk/stasis_channels.h"
+ #include "asterisk/stasis_app.h"
+
diff --git a/package/atk/Makefile b/package/atk/Makefile
index d199dec57..ad6335f1b 100644
--- a/package/atk/Makefile
+++ b/package/atk/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= atk
-PKG_VERSION:= 2.20.0
-PKG_EXTRAVER:= 2.20
+PKG_VERSION:= 2.36.0
+PKG_EXTRAVER:= 2.36
PKG_RELEASE:= 1
-PKG_HASH:= 493a50f6c4a025f588d380a551ec277e070b28a82e63ef8e3c06b3ee7c1238f0
+PKG_HASH:= fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788
PKG_DESCR:= accessibility toolkit library
PKG_SECTION:= libs/misc
-PKG_BUILDDEP:= glib
+PKG_BUILDDEP:= glib meson-host
PKG_URL:= http://www.gnome.org/
PKG_SITES:= $(MASTER_SITE_GNOME:=atk/$(PKG_EXTRAVER)/)
PKG_LIBNAME:= libatk
@@ -20,6 +20,14 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBATK,libatk,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+MESON_FLAGS+= -Dintrospection=false
+
libatk-install:
$(INSTALL_DIR) $(IDIR_LIBATK)/usr/lib
$(CP) $(WRKINST)/usr/lib/libatk-*.so* $(IDIR_LIBATK)/usr/lib
diff --git a/package/autofs/Makefile b/package/autofs/Makefile
index 9fd28a258..63d41c44f 100644
--- a/package/autofs/Makefile
+++ b/package/autofs/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= autofs
-PKG_VERSION:= 5.1.3
+PKG_VERSION:= 5.1.9
PKG_RELEASE:= 1
-PKG_HASH:= e96eebfe3ed5fb1a30f4510f538198affde223e370c6dc2bed9780309272b1bf
+PKG_HASH:= 87e6af6a03794b9462ea519781e50e7d23b5f7c92cd59e1142c85d2493b3c24b
PKG_DESCR:= automount filesystems
PKG_SECTION:= net/fs
PKG_DEPENDS:= libtirpc
@@ -17,12 +17,14 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,AUTOFS,autofs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --with-libtirpc
autofs-install:
- $(INSTALL_DIR) $(IDIR_AUTOFS)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/autofs \
- $(IDIR_AUTOFS)/usr/bin
+ $(INSTALL_DIR) $(IDIR_AUTOFS)/usr/lib/autofs
+ $(CP) $(WRKINST)/usr/lib/autofs/*.so \
+ $(IDIR_AUTOFS)/usr/lib/autofs
+ $(INSTALL_DIR) $(IDIR_AUTOFS)/usr/sbin
+ $(INSTALL_BIN) $(WRKINST)/usr/sbin/automount \
+ $(IDIR_AUTOFS)/usr/sbin
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/autofs/patches/patch-configure_in b/package/autofs/patches/patch-configure_in
deleted file mode 100644
index bf4fe87a8..000000000
--- a/package/autofs/patches/patch-configure_in
+++ /dev/null
@@ -1,12 +0,0 @@
---- autofs-5.1.3.orig/configure.in 2017-05-24 04:16:59.000000000 +0200
-+++ autofs-5.1.3/configure.in 2017-06-25 22:09:22.834510245 +0200
-@@ -124,8 +124,7 @@ AC_SUBST(flagdir)
- #
- # Use libtirpc
- #
--AF_WITH_LIBTIRPC()
--AC_SUBST(TIRPCLIB)
-+PKG_CHECK_MODULES([TIRPC], [tirpc])
-
- #
- # Optional include dmalloc
diff --git a/package/automake16/Makefile b/package/automake16/Makefile
new file mode 100644
index 000000000..a8df601a1
--- /dev/null
+++ b/package/automake16/Makefile
@@ -0,0 +1,43 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= automake16
+PKG_VERSION:= 1.16.3
+PKG_EXTRAVER:= 1.16
+PKG_RELEASE:= 1
+PKG_HASH:= ff2bf7656c4d1c6fdda3b8bebb21f09153a736bcba169aaf65eab25fa113bf3a
+PKG_DESCR:= tool for automatically generating makefiles
+PKG_SECTION:= dev/tools
+PKG_BUILDDEP:= m4-host autoconf-host autoconf
+HOST_BUILDDEP:= autoconf-host
+PKG_URL:= http://www.gnu.org/software/automake/
+PKG_SITES:= $(MASTER_SITE_GNU:=automake/)
+PKG_OPTS:= noscripts
+
+DISTFILES:= automake-${PKG_VERSION}.tar.xz
+
+WRKDIST= ${WRKDIR}/automake-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,AUTOMAKE16,automake16,$(PKG_VERSION)-$(PKG_RELEASE)))
+$(eval $(call PKG_template,AUTOMAKE16,automake16,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+XAKE_FLAGS+= PERL="/usr/bin/perl"
+
+automake16-install:
+ $(INSTALL_DIR) $(IDIR_AUTOMAKE16)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/automake $(IDIR_AUTOMAKE16)/usr/bin/automake16
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/aclocal $(IDIR_AUTOMAKE16)/usr/bin/aclocal16
+ $(INSTALL_DIR) $(IDIR_AUTOMAKE16)/usr/share/aclocal-$(PKG_EXTRAVER)
+ $(CP) $(WRKINST)/usr/share/aclocal-$(PKG_EXTRAVER) \
+ $(IDIR_AUTOMAKE16)/usr/share
+ $(INSTALL_DIR) $(IDIR_AUTOMAKE16)/usr/share/automake-$(PKG_EXTRAVER)
+ $(CP) $(WRKINST)/usr/share/automake-$(PKG_EXTRAVER) \
+ $(IDIR_AUTOMAKE16)/usr/share
+
+include $(ADK_TOPDIR)/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/avahi/Makefile b/package/avahi/Makefile
index a5b7cd081..94b894c5b 100644
--- a/package/avahi/Makefile
+++ b/package/avahi/Makefile
@@ -4,12 +4,12 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= avahi
-PKG_VERSION:= 0.6.32
+PKG_VERSION:= 0.8
PKG_RELEASE:= 1
-PKG_HASH:= d54991185d514a0aba54ebeb408d7575b60f5818a772e28fa0e18b98bc1db454
+PKG_HASH:= 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda
PKG_DESCR:= multicast dns daemon and dns-sd server
PKG_SECTION:= net/dns
-PKG_BUILDDEP:= libdaemon expat gdbm glib
+PKG_BUILDDEP:= libdaemon expat gdbm glib libevent
PKG_NEEDS:= c++ intl
PKG_URL:= http://avahi.org/
PKG_SITES:= https://github.com/lathiat/avahi/releases/download/v$(PKG_VERSION)/
@@ -31,12 +31,12 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,AVAHI,avahi,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_AVAHI),$(PKG_DESCR),$(PKG_SECTION)))
$(eval $(call PKG_template,LIBAVAHI,libavahi,$(PKG_VERSION)-$(PKG_RELEASE),,$(PKGSD_LIBAVAHI),$(PKGSC_LIBAVAHI),$(PKG_OPTS)))
-AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --enable-glib \
--enable-libdaemon \
--enable-dbus \
--disable-qt3 \
--disable-qt4 \
+ --disable-qt5 \
--disable-gtk \
--disable-gtk3 \
--disable-python \
diff --git a/package/avahi/patches/patch-Makefile_am b/package/avahi/patches/patch-Makefile_am
deleted file mode 100644
index ff5160336..000000000
--- a/package/avahi/patches/patch-Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
---- avahi-0.6.31.orig/Makefile.am 2011-12-30 22:26:44.000000000 +0100
-+++ avahi-0.6.31/Makefile.am 2014-03-04 09:57:29.000000000 +0100
-@@ -75,8 +75,7 @@ SUBDIRS = \
- avahi-compat-howl \
- avahi-autoipd \
- avahi-ui \
-- avahi-ui-sharp \
-- po
-+ avahi-ui-sharp
-
- DX_INPUT = \
- $(srcdir)/avahi-common/address.h \
diff --git a/package/avahi/patches/patch-avahi-ui_Makefile_am b/package/avahi/patches/patch-avahi-ui_Makefile_am
deleted file mode 100644
index c1744d9d0..000000000
--- a/package/avahi/patches/patch-avahi-ui_Makefile_am
+++ /dev/null
@@ -1,19 +0,0 @@
---- avahi-0.6.31.orig/avahi-ui/Makefile.am 2012-02-14 23:22:16.000000000 +0100
-+++ avahi-0.6.31/avahi-ui/Makefile.am 2014-03-04 09:45:16.000000000 +0100
-@@ -79,9 +79,6 @@ libavahi_ui_gtk3_la_CFLAGS += -DDATABASE
- endif
-
- bin_PROGRAMS = bssh
--desktop_DATA += bssh.desktop bvnc.desktop
--@INTLTOOL_DESKTOP_RULE@
--
- bssh_SOURCES = bssh.c
-
- if HAVE_GTK3
-@@ -108,6 +105,4 @@ endif # HAVE_GLIB
- endif
- endif
-
--@INTLTOOL_DESKTOP_RULE@
--
- CLEANFILES = $(desktop_DATA) $(desktop_DATA_in)
diff --git a/package/avahi/patches/patch-configure_ac b/package/avahi/patches/patch-configure_ac
deleted file mode 100644
index 53f1aea23..000000000
--- a/package/avahi/patches/patch-configure_ac
+++ /dev/null
@@ -1,14 +0,0 @@
---- avahi-0.6.31.orig/configure.ac 2012-02-14 22:44:25.484742099 +0100
-+++ avahi-0.6.31/configure.ac 2014-06-15 20:50:12.072045207 +0200
-@@ -412,11 +412,9 @@ if test "x$have_kqueue" = "xyes" ; then
- AC_DEFINE([HAVE_KQUEUE], 1, [Enable BSD kqueue() usage])
- fi
-
--IT_PROG_INTLTOOL([0.35.0])
- GETTEXT_PACKAGE=avahi
- AC_SUBST([GETTEXT_PACKAGE])
- AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
--AM_GLIB_GNU_GETTEXT
-
- avahilocaledir='${prefix}/${DATADIRNAME}/locale'
- AC_SUBST(avahilocaledir)
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 24e4e2432..9b3191ae7 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -6,7 +6,7 @@ include $(ADK_TOPDIR)/mk/rootfs.mk
PKG_NAME:= base-files
PKG_VERSION:= 1.1
-PKG_RELEASE:= 27
+PKG_RELEASE:= 29
PKG_SECTION:= base/apps
PKG_DESCR:= basic files and scripts
@@ -40,7 +40,6 @@ do-install:
ln -sf ../run $(IDIR_BASE_FILES)/var/run
chmod 600 $(IDIR_BASE_FILES)/etc/shadow
chmod 1777 ${IDIR_BASE_FILES}/tmp
-ifeq ($(ADK_RUNTIME_INIT_SYSTEMD),)
echo $(ADK_RUNTIME_TMPFS_SIZE) > $(IDIR_BASE_FILES)/etc/tmpfs
mkdir -p $(IDIR_BASE_FILES)/etc/init.d
cp ./files/init.d/* $(IDIR_BASE_FILES)/etc/init.d
@@ -64,7 +63,6 @@ ifeq (${ADK_TARGET_ROOTFS_NFSROOT},y)
else
(cd $(IDIR_BASE_FILES)/etc; ln -sf ../tmp/resolv.conf .)
endif
-endif
ifeq ($(ADK_RUNTIME_DEV_MDEV),y)
$(CP) ./files/rcdev.mdev $(IDIR_BASE_FILES)/etc/init.d/rcdev
$(SED) "s#@ADK_RUNTIME_DEV_MDEV_LOGGING@#"$(ADK_RUNTIME_DEV_MDEV_LOGGING_LINE)"#g" $(IDIR_BASE_FILES)/etc/init.d/rcdev
@@ -222,9 +220,9 @@ endif
ifeq ($(ADK_RUNTIME_ADDUSER),y)
mkdir -p ${IDIR_BASE_FILES}/$(ADK_RUNTIME_USER_HOME)
- printf "$(ADK_RUNTIME_USER_NAME):x:100:100:$(ADK_RUNTIME_USER_NAME):$(ADK_RUNTIME_USER_HOME):$(ADK_RUNTIME_USER_SHELL)" >> ${IDIR_BASE_FILES}/etc/passwd
- printf "$(ADK_RUNTIME_USER_NAME):$(ADK_RUNTIME_USER_PASSWORD):16514:0:::::" >> ${IDIR_BASE_FILES}/etc/shadow
- printf "$(ADK_RUNTIME_USER_NAME):x:100:" >> ${IDIR_BASE_FILES}/etc/group
+ printf "$(ADK_RUNTIME_USER_NAME):x:100:100:$(ADK_RUNTIME_USER_NAME):$(ADK_RUNTIME_USER_HOME):$(ADK_RUNTIME_USER_SHELL)\n" >> ${IDIR_BASE_FILES}/etc/passwd
+ printf "$(ADK_RUNTIME_USER_NAME):$(ADK_RUNTIME_USER_PASSWORD):16514:0:::::\n" >> ${IDIR_BASE_FILES}/etc/shadow
+ printf "$(ADK_RUNTIME_USER_NAME):x:100:\n" >> ${IDIR_BASE_FILES}/etc/group
endif
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/base-files/files/base-files.conffiles b/package/base-files/files/base-files.conffiles
index 2ee449379..4845c1855 100644
--- a/package/base-files/files/base-files.conffiles
+++ b/package/base-files/files/base-files.conffiles
@@ -1,4 +1,3 @@
-/etc/mdev.conf
/etc/inittab
/etc/banner
/etc/group
diff --git a/package/base-files/files/init.d/rcS b/package/base-files/files/init.d/rcS
index db03a76e5..9015a71ac 100755
--- a/package/base-files/files/init.d/rcS
+++ b/package/base-files/files/init.d/rcS
@@ -17,6 +17,7 @@ fi
mkdir -p /var/log
mkdir -p /var/run
mkdir -p /var/tmp
+mkdir -p /var/lock
touch /var/log/lastlog
touch /var/log/wtmp
diff --git a/package/base-files/files/profile b/package/base-files/files/profile
index c89b12c92..22bf8655d 100644
--- a/package/base-files/files/profile
+++ b/package/base-files/files/profile
@@ -1,6 +1,7 @@
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export TERM=linux
export EDITOR=/bin/vi
+export M4=/usr/bin/m4
if [[ $(id -u) = 0 ]]; then
export PS1='`whoami`@`hostname`:`pwd` # '
else
diff --git a/package/base-files/src/etc/network/if-pre-up.d/04-wireless b/package/base-files/src/etc/network/if-pre-up.d/04-wireless
index fa68058bf..ef070c5bc 100755
--- a/package/base-files/src/etc/network/if-pre-up.d/04-wireless
+++ b/package/base-files/src/etc/network/if-pre-up.d/04-wireless
@@ -81,6 +81,8 @@ case "$IF_WIRELESS_MODE" in
cat /etc/hostapd.conf.post >> /tmp/hostapd.conf
;;
sta)
+ # need to wait for wlan drivers to settle down
+ sleep 1
ip link set up dev ${IFACE}
[ $IF_WIRELESS_EXTENSION -eq 1 ] && {
[ -x /usr/sbin/iwconfig ] || {
@@ -96,9 +98,9 @@ case "$IF_WIRELESS_MODE" in
}
driver=nl80211
[ $sec -eq 2 ] && {
- iw dev ${IFACE} connect $IF_WIRELESS_SSID key d:0:$IF_WIRELESS_PASSPHRASE
+ iw dev ${IFACE} connect "$IF_WIRELESS_SSID" key d:0:$IF_WIRELESS_PASSPHRASE
} || {
- iw dev ${IFACE} connect $IF_WIRELESS_SSID
+ iw dev ${IFACE} connect "$IF_WIRELESS_SSID" 2>/dev/null
}
}
[ $wpa2 -eq 1 ] && {
diff --git a/package/bash/Makefile b/package/bash/Makefile
index 99a4bfb97..bfed5373c 100644
--- a/package/bash/Makefile
+++ b/package/bash/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= bash
-PKG_VERSION:= 5.1.8
+PKG_VERSION:= 5.2.21
PKG_RELEASE:= 1
-PKG_HASH:= 0cfb5c9bb1a29f800a97bd242d19511c997a1013815b805e0fdd32214113d6be
+PKG_HASH:= c8e31bdc59b69aaffc5b36509905ba3e5cbb12747091d27b4b977f078560d5b8
PKG_DESCR:= bourne-again shell
PKG_SECTION:= base/shells
PKG_URL:= http://www.gnu.org/software/bash/
diff --git a/package/bcm28xx-bootloader/Makefile b/package/bcm28xx-bootloader/Makefile
index 4ea08bf74..83a594ad0 100644
--- a/package/bcm28xx-bootloader/Makefile
+++ b/package/bcm28xx-bootloader/Makefile
@@ -5,31 +5,25 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= bcm28xx-bootloader
# not cloned, local src directory used
-PKG_VERSION:= 784fe6cebd9e5726c0c7b9e449f7cdbf2cf6959d
-PKG_RELEASE:= 1
+PKG_VERSION:= 1e403e23baab5673f0494a200f57cd01287d5b1a
+PKG_RELEASE:= 3
PKG_DESCR:= bootloader for bcm28xx
PKG_SECTION:= base/boot
PKG_URL:= https://github.com/raspberrypi/firmware
PKG_SITES:= https://github.com/raspberrypi/firmware.git
-PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi0 raspberry-pi2 raspberry-pi3 raspberry-pi3-64 raspberry-pi3p raspberry-pi3p-64
+PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi0 raspberry-pi2 raspberry-pi3 raspberry-pi3-64 raspberry-pi4 raspberry-pi4-64 raspberry-pi5
PKG_CHOICES_BCM28XX_BOOTLOADER:= DEFAULT EXTRA CUTDOWN
PKGCD_DEFAULT:= default bootloader
PKGCD_EXTRA:= bootloader with extra features and codecs
PKGCD_CUTDOWN:= cut down bootloader
-PKG_SUBPKGS:= BCM28XX_BOOTLOADER BCM28XX_DEBUGTOOL
-PKGSD_BCM28XX_DEBUGTOOL:= bcm28xx debugtool (vcdbg)
-PKGSC_BCM28XX_DEBUGTOOL:= sys/hw
-PKGSS_BCM28XX_DEBUGTOOL:= bcm28xx-vc-debug bcm28xx-vc-libs
-
NO_DISTFILES:= 1
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,BCM28XX_BOOTLOADER,bcm28xx-bootloader,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-$(eval $(call PKG_template,BCM28XX_DEBUGTOOL,bcm28xx-debugtool,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKGSC_BCM28XX_DEBUGTOOL)))
CONFIG_STYLE:= manual
BUILD_STYLE:= manual
@@ -38,14 +32,28 @@ INSTALL_STYLE:= manual
do-install:
$(INSTALL_DIR) $(IDIR_BCM28XX_BOOTLOADER)/boot
$(CP) $(WRKBUILD)/boot/bootcode.bin $(IDIR_BCM28XX_BOOTLOADER)/boot/
+ifeq ($(ADK_RUNTIME_VERBOSE_KERNEL_SERIAL_ONLY),y)
+ printf "console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/cmdline.txt
+endif
+ifeq ($(ADK_RUNTIME_VERBOSE_KERNEL_VGA_ONLY),y)
+ printf "console=tty0 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/cmdline.txt
+endif
printf "kernel=kernel\n" > $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
printf "dtparam=audio,i2s,spi,i2c\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
ifeq ($(ADK_PACKAGE_BCM28XX_BOOTLOADER_DEFAULT),y)
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI4)$(ADK_TARGET_SYSTEM_RASPBERRY_PI4_64),y)
+ $(CP) $(WRKBUILD)/boot/{start4.elf,fixup4.dat} $(IDIR_BCM28XX_BOOTLOADER)/boot/
+ printf "start_file=start4.elf\n" >> $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ printf "fixup_file=fixup4.dat\n" >> $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+else
$(CP) $(WRKBUILD)/boot/{start.elf,fixup.dat} $(IDIR_BCM28XX_BOOTLOADER)/boot/
printf "start_file=start.elf\n" >> $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
printf "fixup_file=fixup.dat\n" >> $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
endif
+endif
ifeq ($(ADK_PACKAGE_BCM28XX_BOOTLOADER_EXTRA),y)
$(CP) $(WRKBUILD)/boot/{start_x.elf,fixup_x.dat} $(IDIR_BCM28XX_BOOTLOADER)/boot/
printf "start_file=start_x.elf\n" >> $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
@@ -58,6 +66,16 @@ ifeq ($(ADK_PACKAGE_BCM28XX_BOOTLOADER_CUTDOWN),y)
endif
printf "gpu_mem=$(ADK_TARGET_GPU_MEM)\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ifeq ($(ADK_PACKAGE_KODI),y)
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI4)$(ADK_TARGET_SYSTEM_RASPBERRY_PI4_64),y)
+ printf "dtoverlay=vc4-kms-v3d-pi4\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+endif
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI5),y)
+ printf "dtoverlay=vc4-kms-v3d-pi5\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+endif
+endif
ifneq ($(ADK_TARGET_HARDWARE_HIFIBERRY_AMP),)
printf "dtoverlay=hifiberry-amp\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
@@ -98,12 +116,28 @@ ifeq ($(ADK_TARGET_HARDWARE_RPI3_SERIAL),y)
printf "enable_uart=1\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
endif
-ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3_64)$(ADK_TARGET_SYSTEM_RASPBERRY_PI3_64),y)
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI4),y)
+ printf "enable_uart=1\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+endif
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3_64)$(ADK_TARGET_SYSTEM_RASPBERRY_PI4_64),y)
printf "arm_control=0x200\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
printf "enable_uart=1\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
endif
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI5),y)
+ printf "dtparam=fan_temp0=0\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ printf "dtparam=fan_temp0_speed=64\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ printf "dtparam=fan_temp1_speed=64\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ printf "dtparam=fan_temp2_speed=64\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+ printf "dtparam=fan_temp3_speed=64\n" >> \
+ $(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
+endif
ifneq ($(ADK_RUNTIME_MPEG2_KEY),)
printf "decode_MPG2=$(ADK_RUNTIME_MPEG2_KEY)\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
@@ -112,10 +146,5 @@ ifneq ($(ADK_RUNTIME_VC1_KEY),)
printf "decode_WVC1=$(ADK_RUNTIME_VC1_KEY)\n" >> \
$(IDIR_BCM28XX_BOOTLOADER)/boot/config.txt
endif
-ifeq ($(ADK_PACKAGE_BCM28XX_DEBUGTOOL),y)
- $(INSTALL_DIR) $(IDIR_BCM28XX_DEBUGTOOL)/usr/bin
- $(INSTALL_BIN) ./files/vcdbg \
- $(IDIR_BCM28XX_DEBUGTOOL)/usr/bin
-endif
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/bcm28xx-bootloader/files/vcdbg b/package/bcm28xx-bootloader/files/vcdbg
deleted file mode 100755
index ba3e55e8e..000000000
--- a/package/bcm28xx-bootloader/files/vcdbg
+++ /dev/null
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/bootcode.bin b/package/bcm28xx-bootloader/src/boot/bootcode.bin
index 4800dab88..9e831a273 100644
--- a/package/bcm28xx-bootloader/src/boot/bootcode.bin
+++ b/package/bcm28xx-bootloader/src/boot/bootcode.bin
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup.dat b/package/bcm28xx-bootloader/src/boot/fixup.dat
index 43beb3d3f..2ff966820 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup4.dat b/package/bcm28xx-bootloader/src/boot/fixup4.dat
index 83376f3df..4380d320e 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup4.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup4.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup4cd.dat b/package/bcm28xx-bootloader/src/boot/fixup4cd.dat
index 0deaa6727..79a0b55e7 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup4cd.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup4cd.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup4db.dat b/package/bcm28xx-bootloader/src/boot/fixup4db.dat
index 79d7b04a1..4d13d6581 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup4db.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup4db.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup4x.dat b/package/bcm28xx-bootloader/src/boot/fixup4x.dat
index a1fa3f555..4d8ff5a96 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup4x.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup4x.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup_cd.dat b/package/bcm28xx-bootloader/src/boot/fixup_cd.dat
index 0deaa6727..79a0b55e7 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup_cd.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup_cd.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup_db.dat b/package/bcm28xx-bootloader/src/boot/fixup_db.dat
index 9b8318f27..3927ea52e 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup_db.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup_db.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/fixup_x.dat b/package/bcm28xx-bootloader/src/boot/fixup_x.dat
index 25e8b72c2..b93bc0620 100644
--- a/package/bcm28xx-bootloader/src/boot/fixup_x.dat
+++ b/package/bcm28xx-bootloader/src/boot/fixup_x.dat
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start.elf b/package/bcm28xx-bootloader/src/boot/start.elf
index 9e0c14451..f5d78d670 100644
--- a/package/bcm28xx-bootloader/src/boot/start.elf
+++ b/package/bcm28xx-bootloader/src/boot/start.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start4.elf b/package/bcm28xx-bootloader/src/boot/start4.elf
index cfbe7a32b..300e7a8a4 100644
--- a/package/bcm28xx-bootloader/src/boot/start4.elf
+++ b/package/bcm28xx-bootloader/src/boot/start4.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start4cd.elf b/package/bcm28xx-bootloader/src/boot/start4cd.elf
index a679efb8b..b7fe9328d 100644
--- a/package/bcm28xx-bootloader/src/boot/start4cd.elf
+++ b/package/bcm28xx-bootloader/src/boot/start4cd.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start4db.elf b/package/bcm28xx-bootloader/src/boot/start4db.elf
index 8052a876d..acd07e82c 100644
--- a/package/bcm28xx-bootloader/src/boot/start4db.elf
+++ b/package/bcm28xx-bootloader/src/boot/start4db.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start4x.elf b/package/bcm28xx-bootloader/src/boot/start4x.elf
index 87d73d795..274a62944 100644
--- a/package/bcm28xx-bootloader/src/boot/start4x.elf
+++ b/package/bcm28xx-bootloader/src/boot/start4x.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start_cd.elf b/package/bcm28xx-bootloader/src/boot/start_cd.elf
index f62941bce..5e616d0c6 100644
--- a/package/bcm28xx-bootloader/src/boot/start_cd.elf
+++ b/package/bcm28xx-bootloader/src/boot/start_cd.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start_db.elf b/package/bcm28xx-bootloader/src/boot/start_db.elf
index 6c4e1ffb8..f10f87fa3 100644
--- a/package/bcm28xx-bootloader/src/boot/start_db.elf
+++ b/package/bcm28xx-bootloader/src/boot/start_db.elf
Binary files differ
diff --git a/package/bcm28xx-bootloader/src/boot/start_x.elf b/package/bcm28xx-bootloader/src/boot/start_x.elf
index 011083598..26c1de866 100644
--- a/package/bcm28xx-bootloader/src/boot/start_x.elf
+++ b/package/bcm28xx-bootloader/src/boot/start_x.elf
Binary files differ
diff --git a/package/bcm28xx-utils/Makefile b/package/bcm28xx-utils/Makefile
new file mode 100644
index 000000000..e59dbde56
--- /dev/null
+++ b/package/bcm28xx-utils/Makefile
@@ -0,0 +1,32 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= bcm28xx-utils
+PKG_VERSION:= e65f5ec102e74218cda7da9fdc8b1caa0fd1127d
+PKG_GIT:= hash
+PKG_RELEASE:= 1
+PKG_DESCR:= videocore tools and utils
+PKG_SECTION:= sys/hw
+PKG_BUILDDEP:= cmake-host
+PKG_NEEDS:= c++ threads
+PKG_URL:= https://github.com/raspberrypi/utils
+PKG_SITES:= https://github.com/raspberrypi/utils.git
+
+PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi0 raspberry-pi2 raspberry-pi3 raspberry-pi3-64 raspberry-pi4 raspberry-pi4-64 raspberry-pi5
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,BCM28XX_UTILS,bcm28xx-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+CONFIG_STYLE:= cmake
+
+bcm28xx-utils-install:
+ $(INSTALL_DIR) $(IDIR_BCM28XX_UTILS)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/vcgencmd \
+ $(IDIR_BCM28XX_UTILS)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/vclog \
+ $(IDIR_BCM28XX_UTILS)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/bcm28xx-utils/patches/patch-CMakeLists_txt b/package/bcm28xx-utils/patches/patch-CMakeLists_txt
new file mode 100644
index 000000000..956feac7e
--- /dev/null
+++ b/package/bcm28xx-utils/patches/patch-CMakeLists_txt
@@ -0,0 +1,16 @@
+--- bcm28xx-utils-e65f5ec102e74218cda7da9fdc8b1caa0fd1127d.orig/CMakeLists.txt 2024-01-23 03:17:28.000000000 +0100
++++ bcm28xx-utils-e65f5ec102e74218cda7da9fdc8b1caa0fd1127d/CMakeLists.txt 2024-01-23 03:21:39.257325745 +0100
+@@ -3,13 +3,10 @@ cmake_minimum_required(VERSION 3.1...3.2
+ project(utils)
+
+ # List of subsidiary CMakeLists
+-add_subdirectory(dtmerge)
+ add_subdirectory(eeptools)
+ add_subdirectory(otpset)
+ add_subdirectory(overlaycheck)
+ add_subdirectory(ovmerge)
+-add_subdirectory(pinctrl)
+ add_subdirectory(raspinfo)
+ add_subdirectory(vcgencmd)
+ add_subdirectory(vclog)
+-add_subdirectory(vcmailbox)
diff --git a/package/bcm28xx-vc/Makefile b/package/bcm28xx-vc/Makefile
deleted file mode 100644
index c7337c859..000000000
--- a/package/bcm28xx-vc/Makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= bcm28xx-vc
-PKG_VERSION:= 2448644657e5fbfd82299416d218396ee1115ece
-PKG_GIT:= hash
-PKG_RELEASE:= 1
-PKG_DESCR:= videocore tools and libraries
-PKG_SECTION:= libs/video
-PKG_BUILDDEP:= cmake-host
-PKG_NEEDS:= c++ threads
-PKG_URL:= https://github.com/raspberrypi/userland
-PKG_SITES:= https://github.com/raspberrypi/userland.git
-
-PKG_SUBPKGS:= BCM28XX_VC_TOOLS BCM28XX_VC_LIBS BCM28XX_VC_GL_LIBS BCM28XX_VC_DEBUG
-PKGSS_BCM28XX_VC_TOOLS:=bcm28xx-vc-libs
-PKGSC_BCM28XX_VC_TOOLS:=sys/hw
-PKGSD_BCM28XX_VC_TOOLS:=videocore tools (vcgencmd,..)
-PKGSC_BCM28XX_VC_LIBS:= libs/misc
-PKGSD_BCM28XX_VC_LIBS:=videocore library
-PKGSC_BCM28XX_VC_DEBUG:=libs/misc
-PKGSD_BCM28XX_VC_DEBUG:=videocore debug library
-PKGSC_BCM28XX_VC_GL_LIBS:=libs/video
-PKGSS_BCM28XX_VC_GL_LIBS:=bcm28xx-vc-libs
-PKGSD_BCM28XX_VC_GL_LIBS:=videocore gl library
-
-PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi0 raspberry-pi2 raspberry-pi3 raspberry-pi3-64 raspberry-pi3p raspberry-pi3p-64
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,BCM28XX_VC_TOOLS,bcm28xx-vc-tools,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_BCM28XX_VC_TOOLS),$(PKG_DESCR),$(PKGSC_BCM28XX_VC_TOOLS)))
-$(eval $(call PKG_template,BCM28XX_VC_LIBS,bcm28xx-vc-libs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-$(eval $(call PKG_template,BCM28XX_VC_DEBUG,bcm28xx-vc-debug,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-$(eval $(call PKG_template,BCM28XX_VC_GL_LIBS,bcm28xx-vc-gl-libs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-CONFIG_STYLE:= cmake
-CMAKE_FLAGS+= -DVMCS_INSTALL_PREFIX=/usr
-
-bcm28xx-vc-tools-install:
- $(INSTALL_DIR) $(IDIR_BCM28XX_VC_TOOLS)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/vcgencmd \
- $(IDIR_BCM28XX_VC_TOOLS)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/dtoverlay \
- $(IDIR_BCM28XX_VC_TOOLS)/usr/bin
-
-bcm28xx-vc-debug-install:
- $(INSTALL_DIR) $(IDIR_BCM28XX_VC_DEBUG)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libdebug_sym.so \
- $(IDIR_BCM28XX_VC_DEBUG)/usr/lib
-
-bcm28xx-vc-libs-install:
- $(INSTALL_DIR) $(IDIR_BCM28XX_VC_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libvcos.so \
- $(IDIR_BCM28XX_VC_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libvchiq_arm.so \
- $(IDIR_BCM28XX_VC_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libbcm_host.so \
- $(IDIR_BCM28XX_VC_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libcontainers.so \
- $(IDIR_BCM28XX_VC_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libdtovl.so \
- $(IDIR_BCM28XX_VC_LIBS)/usr/lib
-
-bcm28xx-vc-gl-libs-install:
- $(INSTALL_DIR) $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libmmal*.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libopenmaxil.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libvcsm.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libEGL.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libGLESv2.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libOpenVG.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libbrcm*.so \
- $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib
- (cd $(IDIR_BCM28XX_VC_GL_LIBS)/usr/lib && ln -sf libEGL.so libEGL.so.1)
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_android_apps_vidtex_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-host_applications_android_apps_vidtex_CMakeLists_txt
deleted file mode 100644
index a36625f8e..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_android_apps_vidtex_CMakeLists_txt
+++ /dev/null
@@ -1,10 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/host_applications/android/apps/vidtex/CMakeLists.txt 2015-10-27 10:59:47.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/host_applications/android/apps/vidtex/CMakeLists.txt 2015-11-16 20:31:58.396542125 +0100
-@@ -1,6 +1,6 @@
- cmake_minimum_required(VERSION 2.8)
-
--SET(COMPILE_DEFINITIONS -Werror -Wall)
-+SET(COMPILE_DEFINITIONS -Wall)
- include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include)
-
- set (VIDTEX_SOURCES
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_dtmerge_dtmerge_c b/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_dtmerge_dtmerge_c
deleted file mode 100644
index fa78c0e3a..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_dtmerge_dtmerge_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- bcm28xx-vc-7c026fa7a4ded2c525916cc853a32731c072ed1e.orig/host_applications/linux/apps/dtmerge/dtmerge.c 2016-09-20 09:43:37.000000000 +0200
-+++ bcm28xx-vc-7c026fa7a4ded2c525916cc853a32731c072ed1e/host_applications/linux/apps/dtmerge/dtmerge.c 2016-09-20 10:22:23.000000000 +0200
-@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
- #include <stdio.h>
- #include <stdlib.h>
- #include <libfdt.h>
-+#include <stdarg.h>
-
- #include "dtoverlay.h"
-
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_gencmd_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_gencmd_CMakeLists_txt
deleted file mode 100644
index d67980b11..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_gencmd_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/host_applications/linux/apps/gencmd/CMakeLists.txt 2015-10-27 10:59:47.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/host_applications/linux/apps/gencmd/CMakeLists.txt 2015-11-16 20:30:46.553286656 +0100
-@@ -4,7 +4,7 @@ if (WIN32)
- set(VCOS_PLATFORM win32)
- else ()
- set(VCOS_PLATFORM pthreads)
-- add_definitions(-Wall -Werror)
-+ add_definitions(-Wall)
- endif ()
-
- include_directories( ../../../..
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_raspicam_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_raspicam_CMakeLists_txt
deleted file mode 100644
index b92e1e625..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_raspicam_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-8d518460723779f95b49efafc04c183e83da3a18.orig/host_applications/linux/apps/raspicam/CMakeLists.txt 2017-06-27 18:59:31.000000000 +0200
-+++ bcm28xx-vc-8d518460723779f95b49efafc04c183e83da3a18/host_applications/linux/apps/raspicam/CMakeLists.txt 2017-06-30 23:35:09.949011873 +0200
-@@ -1,8 +1,6 @@
-
- # raspistill/raspivid/raspiyuv
-
--SET(COMPILE_DEFINITIONS -Werror)
--
- include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include)
- include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/apps/raspicam/)
- include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/sm)
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_smem_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_smem_CMakeLists_txt
deleted file mode 100644
index f1e293abe..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_linux_apps_smem_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/host_applications/linux/apps/smem/CMakeLists.txt 2015-10-27 10:59:48.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/host_applications/linux/apps/smem/CMakeLists.txt 2015-11-16 20:31:12.527571311 +0100
-@@ -4,7 +4,7 @@ get_filename_component (VIDEOCORE_ROOT .
- include (${VIDEOCORE_ROOT}/makefiles/cmake/global_settings.cmake)
-
- if (NOT WIN32)
-- add_definitions(-Wall -Werror)
-+ add_definitions(-Wall)
- endif ()
-
- include_directories (
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_linux_libs_bcm_host_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-host_applications_linux_libs_bcm_host_CMakeLists_txt
deleted file mode 100644
index 2b6a25111..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_linux_libs_bcm_host_CMakeLists_txt
+++ /dev/null
@@ -1,19 +0,0 @@
---- bcm28xx-vc-8d518460723779f95b49efafc04c183e83da3a18.orig/host_applications/linux/libs/bcm_host/CMakeLists.txt 2017-06-27 18:59:31.000000000 +0200
-+++ bcm28xx-vc-8d518460723779f95b49efafc04c183e83da3a18/host_applications/linux/libs/bcm_host/CMakeLists.txt 2017-07-01 14:33:21.139286425 +0200
-@@ -3,7 +3,7 @@ if (WIN32)
- set(VCOS_PLATFORM win32)
- else ()
- set(VCOS_PLATFORM pthreads)
-- add_definitions(-Wall -Werror)
-+ add_definitions(-Wall)
- endif ()
-
- include_directories( ../../../..
-@@ -20,3 +20,7 @@ target_link_libraries(bcm_host vcos vcho
-
- install(TARGETS bcm_host DESTINATION lib)
-
-+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bcm_host.pc.in"
-+ "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc" @ONLY)
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc"
-+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
diff --git a/package/bcm28xx-vc/patches/patch-host_applications_linux_libs_sm_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-host_applications_linux_libs_sm_CMakeLists_txt
deleted file mode 100644
index 3269c550c..000000000
--- a/package/bcm28xx-vc/patches/patch-host_applications_linux_libs_sm_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/host_applications/linux/libs/sm/CMakeLists.txt 2015-10-27 10:59:48.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/host_applications/linux/libs/sm/CMakeLists.txt 2015-11-16 20:31:27.946553043 +0100
-@@ -3,7 +3,7 @@ if (WIN32)
- set(VCOS_PLATFORM win32)
- else ()
- set(VCOS_PLATFORM pthreads)
-- add_definitions(-Wall -Werror)
-+ add_definitions(-Wall)
- endif ()
-
- include_directories( ../../../..
diff --git a/package/bcm28xx-vc/patches/patch-interface_khronos_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-interface_khronos_CMakeLists_txt
deleted file mode 100644
index 068283106..000000000
--- a/package/bcm28xx-vc/patches/patch-interface_khronos_CMakeLists_txt
+++ /dev/null
@@ -1,17 +0,0 @@
---- bcm28xx-vc-8d518460723779f95b49efafc04c183e83da3a18.orig/interface/khronos/CMakeLists.txt 2017-06-27 18:59:31.000000000 +0200
-+++ bcm28xx-vc-8d518460723779f95b49efafc04c183e83da3a18/interface/khronos/CMakeLists.txt 2017-07-01 14:33:21.139286425 +0200
-@@ -80,6 +80,14 @@ target_link_libraries(OpenVG EGL)
-
- install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib)
- install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib)
-+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/egl/egl.pc.in"
-+ "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc" @ONLY)
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc"
-+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
-+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/glxx/glesv2.pc.in"
-+ "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc" @ONLY)
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc"
-+ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
-
- # recommended names to use to avoid conflicts with mesa libs
- add_library(brcmEGL ${SHARED} ${EGL_SOURCE})
diff --git a/package/bcm28xx-vc/patches/patch-interface_mmal_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-interface_mmal_CMakeLists_txt
deleted file mode 100644
index 8e4a1dace..000000000
--- a/package/bcm28xx-vc/patches/patch-interface_mmal_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/interface/mmal/CMakeLists.txt 2015-10-27 10:59:48.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/interface/mmal/CMakeLists.txt 2015-11-16 20:18:59.755962062 +0100
-@@ -3,7 +3,7 @@ if (NOT DEFINED LIBRARY_TYPE)
- set(LIBRARY_TYPE SHARED)
- endif (NOT DEFINED LIBRARY_TYPE)
-
--add_definitions(-Wall -Werror)
-+add_definitions(-Wall)
-
- add_library(mmal SHARED util/mmal_util.c)
-
diff --git a/package/bcm28xx-vc/patches/patch-interface_vcos_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-interface_vcos_CMakeLists_txt
deleted file mode 100644
index c962c3acf..000000000
--- a/package/bcm28xx-vc/patches/patch-interface_vcos_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/interface/vcos/CMakeLists.txt 2015-10-27 10:59:48.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/interface/vcos/CMakeLists.txt 2015-11-16 20:22:22.274588157 +0100
-@@ -43,7 +43,7 @@ foreach (header ${HEADERS})
- endforeach ()
-
- if (CMAKE_COMPILER_IS_GNUCC)
-- add_definitions (-ggdb -Werror -Wall)
-+ add_definitions (-Wall)
- endif ()
-
- if (CMAKE_COMPILER_2005)
diff --git a/package/bcm28xx-vc/patches/patch-interface_vcos_pthreads_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-interface_vcos_pthreads_CMakeLists_txt
deleted file mode 100644
index 34ac618fb..000000000
--- a/package/bcm28xx-vc/patches/patch-interface_vcos_pthreads_CMakeLists_txt
+++ /dev/null
@@ -1,11 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/interface/vcos/pthreads/CMakeLists.txt 2015-10-27 10:59:48.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/interface/vcos/pthreads/CMakeLists.txt 2015-11-16 20:22:39.353464208 +0100
-@@ -1,7 +1,7 @@
- # MSVC5 does not fully support C99, enabling declaration-after-statement
- # warnings allows a common MSVC5 build error to be detected in Linux builds.
- if (CMAKE_COMPILER_IS_GNUCC)
-- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wdeclaration-after-statement")
-+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement")
- add_definitions (-D_GNU_SOURCE)
- endif ()
-
diff --git a/package/bcm28xx-vc/patches/patch-interface_vmcs_host_linux_vcfiled_CMakeLists_txt b/package/bcm28xx-vc/patches/patch-interface_vmcs_host_linux_vcfiled_CMakeLists_txt
deleted file mode 100644
index 06bc3da60..000000000
--- a/package/bcm28xx-vc/patches/patch-interface_vmcs_host_linux_vcfiled_CMakeLists_txt
+++ /dev/null
@@ -1,9 +0,0 @@
---- bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8.orig/interface/vmcs_host/linux/vcfiled/CMakeLists.txt 2015-10-27 10:59:48.000000000 +0100
-+++ bcm28xx-vc-c2f27fb8e581f8e5af83bf28422553ade8f7a7c8/interface/vmcs_host/linux/vcfiled/CMakeLists.txt 2015-11-16 20:16:31.801734911 +0100
-@@ -1,6 +1,4 @@
-
--add_definitions(-Werror)
--
- # vcfiled - serves files to videocore. used for media handlers from
- # OpenMAX/IL and loading VLLs.
- add_executable(vcfiled vcfiled.c)
diff --git a/package/bcm28xx-vc/patches/patch-interface_vmcs_host_vc_vchi_tvservice_c b/package/bcm28xx-vc/patches/patch-interface_vmcs_host_vc_vchi_tvservice_c
deleted file mode 100644
index 2dfbf722c..000000000
--- a/package/bcm28xx-vc/patches/patch-interface_vmcs_host_vc_vchi_tvservice_c
+++ /dev/null
@@ -1,18 +0,0 @@
---- bcm28xx-vc-9cc14b29288f913ef0e3286f4b3232bf73ab59d2.orig/interface/vmcs_host/vc_vchi_tvservice.c 2015-05-25 13:22:55.000000000 -0500
-+++ bcm28xx-vc-9cc14b29288f913ef0e3286f4b3232bf73ab59d2/interface/vmcs_host/vc_vchi_tvservice.c 2015-06-08 13:01:47.348595327 -0500
-@@ -417,7 +417,6 @@ VCHPRE_ void VCHPOST_ vc_tv_register_cal
- ***********************************************************/
- VCHPRE_ void VCHPOST_ vc_tv_unregister_callback(TVSERVICE_CALLBACK_T callback)
- {
-- vcos_assert(callback != NULL);
-
- vcos_log_trace("[%s]", VCOS_FUNCTION);
- if(tvservice_lock_obtain() == 0)
-@@ -433,7 +432,6 @@ VCHPRE_ void VCHPOST_ vc_tv_unregister_c
- done = 1;
- } // if
- } // for
-- vcos_assert(done);
- tvservice_lock_release();
- }
- }
diff --git a/package/bcm28xx-vc/src/host_applications/linux/libs/bcm_host/bcm_host.pc.in b/package/bcm28xx-vc/src/host_applications/linux/libs/bcm_host/bcm_host.pc.in
deleted file mode 100644
index d40d35049..000000000
--- a/package/bcm28xx-vc/src/host_applications/linux/libs/bcm_host/bcm_host.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=/usr
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: bcm_host
-Description: Broadcom VideoCore host API library
-Version: 1
-Libs: -L${libdir} -lbcm_host -lvcos -lvchiq_arm
-Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux -I${includedir}/interface/vcos/pthreads -DUSE_VCHIQ_ARM
diff --git a/package/bcm28xx-vc/src/interface/khronos/egl/egl.pc.in b/package/bcm28xx-vc/src/interface/khronos/egl/egl.pc.in
deleted file mode 100644
index 58687062b..000000000
--- a/package/bcm28xx-vc/src/interface/khronos/egl/egl.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: egl
-Description: RasberryPi implementation of EGL
-Version: 10
-Libs: -L${libdir} -lEGL -lGLESv2 -lbcm_host -lvchostif
-Cflags: -I${includedir}/ -I${includedir}/interface/vcos/pthreads/ \
- -I${includedir}/interface/vmcs_host/linux/
diff --git a/package/bcm28xx-vc/src/interface/khronos/glxx/glesv2.pc.in b/package/bcm28xx-vc/src/interface/khronos/glxx/glesv2.pc.in
deleted file mode 100644
index 2f58eede5..000000000
--- a/package/bcm28xx-vc/src/interface/khronos/glxx/glesv2.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: glesv2
-Description: RasberryPi implementation of OpenGL ESv2
-Version: 2.0
-Libs: -L${libdir} -lGLESv2
-Cflags: -I${includedir}/
diff --git a/package/bind/Makefile b/package/bind/Makefile
index dc7801f2f..ac59cc624 100644
--- a/package/bind/Makefile
+++ b/package/bind/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= bind
-PKG_VERSION:= 9.16.22
+PKG_VERSION:= 9.18.24
PKG_RELEASE:= 1
-PKG_HASH:= 65e7b2af6479db346e2fc99bcfb6ec3240066468e09dbec575ebc7c57d994061
+PKG_HASH:= 709d73023c9115ddad3bab65b6c8c79a590196d0d114f5d0ca2533dbd52ddf66
PKG_DESCR:= dns server
PKG_SECTION:= net/dns
PKG_DEPENDS:= libxml2 libressl libuv libressl-util
@@ -42,9 +42,6 @@ PKGSD_BIND_DIG:= dig utility
PKGSC_BIND_DIG:= net/dns
PKGSS_BIND_DIG:= libbind libxml2
-PKG_FLAVOURS_LIBBIND:= WITH_IPV6
-PKGFD_WITH_IPV6:= enable IPv6 support
-
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,BIND_SERVER,bind-server,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
@@ -58,23 +55,10 @@ $(eval $(call PKG_template,LIBBIND,libbind,${PKG_VERSION}-${PKG_RELEASE},,${PKGS
AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ENV+= BUILD_CC="${HOST_CC}" BUILD_CFLAGS='${HOST_CFLAGS}' BUILD_LDFLAGS='${HOST_LDFLAGS}'
-CONFIGURE_ARGS+= --with-randomdev=/dev/urandom \
- --with-export-libdir=/usr/lib \
- --enable-exportlib \
- --with-ecdsa=no \
- --with-gost=no \
- --with-gssapi=no \
+CONFIGURE_ARGS+= --with-gssapi=no \
--with-openssl=${STAGING_TARGET_DIR}/usr \
- --without-python \
--disable-linux-caps \
- --enable-epoll \
- --with-libtool
-
-ifneq (${ADK_PACKAGE_LIBBIND_WITH_IPV6},)
-CONFIGURE_ARGS+= --enable-ipv6
-else
-CONFIGURE_ARGS+= --disable-ipv6
-endif
+ --disable-doh
bind-server-install:
${INSTALL_DIR} ${IDIR_BIND_SERVER}/usr/sbin ${IDIR_BIND_SERVER}/etc
@@ -92,18 +76,18 @@ bind-rndc-install:
${IDIR_BIND_RNDC}/usr/sbin
bind-check-install:
- ${INSTALL_DIR} ${IDIR_BIND_CHECK}/usr/sbin
- ${INSTALL_BIN} ${WRKINST}/usr/sbin/named-checkconf \
- ${IDIR_BIND_CHECK}/usr/sbin/
- ${INSTALL_BIN} ${WRKINST}/usr/sbin/named-checkzone \
- ${IDIR_BIND_CHECK}/usr/sbin/
+ ${INSTALL_DIR} ${IDIR_BIND_CHECK}/usr/bin
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/named-checkconf \
+ ${IDIR_BIND_CHECK}/usr/bin/
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/named-checkzone \
+ ${IDIR_BIND_CHECK}/usr/bin/
bind-dnssec-install:
- ${INSTALL_DIR} ${IDIR_BIND_DNSSEC}/usr/sbin
- ${INSTALL_BIN} ${WRKINST}/usr/sbin/dnssec-keygen \
- ${IDIR_BIND_DNSSEC}/usr/sbin
- ${INSTALL_BIN} ${WRKINST}/usr/sbin/dnssec-signzone \
- ${IDIR_BIND_DNSSEC}/usr/sbin
+ ${INSTALL_DIR} ${IDIR_BIND_DNSSEC}/usr/bin
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/dnssec-keygen \
+ ${IDIR_BIND_DNSSEC}/usr/bin
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/dnssec-signzone \
+ ${IDIR_BIND_DNSSEC}/usr/bin
bind-host-install:
${INSTALL_DIR} ${IDIR_BIND_HOST}/usr/bin
diff --git a/package/bind/patches/patch-bin_rndc_Makefile_am b/package/bind/patches/patch-bin_rndc_Makefile_am
new file mode 100644
index 000000000..4bf3b893c
--- /dev/null
+++ b/package/bind/patches/patch-bin_rndc_Makefile_am
@@ -0,0 +1,18 @@
+--- bind-9.18.24.orig/bin/rndc/Makefile.am 2024-02-11 11:42:55.296980787 +0100
++++ bind-9.18.24/bin/rndc/Makefile.am 2024-02-20 08:02:25.039885442 +0100
+@@ -2,6 +2,7 @@ include $(top_srcdir)/Makefile.top
+
+ AM_CPPFLAGS += \
+ $(LIBISC_CFLAGS) \
++ $(LIBNS_CFLAGS) \
+ $(LIBDNS_CFLAGS) \
+ $(LIBISCCFG_CFLAGS) \
+ $(LIBISCCC_CFLAGS) \
+@@ -20,6 +21,7 @@ rndc_SOURCES = \
+
+ rndc_LDADD = \
+ $(LIBISC_LIBS) \
++ $(LIBNS_LIBS) \
+ $(LIBDNS_LIBS) \
+ $(LIBISCCC_LIBS) \
+ $(LIBISCCFG_LIBS) \
diff --git a/package/bind/patches/patch-lib_isc_backtrace_c b/package/bind/patches/patch-lib_isc_backtrace_c
deleted file mode 100644
index d9470ccb4..000000000
--- a/package/bind/patches/patch-lib_isc_backtrace_c
+++ /dev/null
@@ -1,14 +0,0 @@
---- bind-9.16.22.orig/lib/isc/backtrace.c 2021-10-13 12:56:16.000000000 +0200
-+++ bind-9.16.22/lib/isc/backtrace.c 2021-10-29 13:57:20.009433814 +0200
-@@ -80,10 +80,7 @@ isc_backtrace_gettrace(void **addrs, int
- return (ISC_R_SUCCESS);
- }
- #elif defined(BACKTRACE_GCC)
--extern int
--_Unwind_Backtrace(void *fn, void *a);
--extern void *
--_Unwind_GetIP(void *ctx);
-+#include <unwind.h>
-
- typedef struct {
- void **result;
diff --git a/package/binutils/Makefile b/package/binutils/Makefile
index 9efce8208..27748b0d1 100644
--- a/package/binutils/Makefile
+++ b/package/binutils/Makefile
@@ -36,6 +36,7 @@ else
CONFIGURE_ARGS+= --enable-multilib
endif
CONFIGURE_ARGS+= --disable-werror \
+ --disable-gprofng \
--disable-gdb \
--disable-sim \
--disable-install-libiberty \
diff --git a/package/bison/Makefile b/package/bison/Makefile
index f7716611e..5bc9cce8d 100644
--- a/package/bison/Makefile
+++ b/package/bison/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= bison
-PKG_VERSION:= 3.0.4
+PKG_VERSION:= 3.8.2
PKG_RELEASE:= 1
-PKG_HASH:= a72428c7917bdf9fa93cb8181c971b6e22834125848cf1d03ce10b1bb0716fe1
+PKG_HASH:= 9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2
PKG_DESCR:= parser generator
PKG_SECTION:= dev/tools
PKG_BUILDDEP:= m4-host bison-host
diff --git a/package/bison/patches/patch-lib_fseterr_c b/package/bison/patches/patch-lib_fseterr_c
deleted file mode 100644
index 06af7469f..000000000
--- a/package/bison/patches/patch-lib_fseterr_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- bison-3.0.4.orig/lib/fseterr.c 2015-01-04 16:43:50.000000000 +0000
-+++ bison-3.0.4/lib/fseterr.c 2019-05-06 08:24:42.407830562 +0000
-@@ -29,7 +29,7 @@ fseterr (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_flags |= _IO_ERR_SEEN;
- #elif defined __sferror || defined __DragonFly__ /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin */
- fp_->_flags |= __SERR;
diff --git a/package/bison/patches/patch-lib_vasnprintf_c b/package/bison/patches/patch-lib_vasnprintf_c
deleted file mode 100644
index cb21d90fa..000000000
--- a/package/bison/patches/patch-lib_vasnprintf_c
+++ /dev/null
@@ -1,28 +0,0 @@
---- bison-3.0.4.orig/lib/vasnprintf.c 2015-01-04 17:46:03.000000000 +0100
-+++ bison-3.0.4/lib/vasnprintf.c 2018-02-24 21:13:43.000000000 +0100
-@@ -4858,7 +4858,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- #endif
- *fbp = dp->conversion;
- #if USE_SNPRINTF
--# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
-+# if ! (((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) \
-+ && !defined __UCLIBC__) \
-+ || (defined __APPLE__ && defined __MACH__) \
-+ || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
- fbp[1] = '%';
- fbp[2] = 'n';
- fbp[3] = '\0';
-@@ -4872,6 +4875,13 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- in format strings in writable memory may crash the program
- (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
- in this situation. */
-+ /* On Mac OS X 10.3 or newer, we know that snprintf's return
-+ value conforms to ISO C 99: the tests gl_SNPRINTF_RETVAL_C99
-+ and gl_SNPRINTF_TRUNCATION_C99 pass.
-+ Therefore we can avoid using %n in this situation.
-+ On Mac OS X 10.13 or newer, the use of %n in format strings
-+ in writable memory by default crashes the program, so we
-+ should avoid it in this situation. */
- /* On native Windows systems (such as mingw), we can avoid using
- %n because:
- - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
diff --git a/package/bitlbee/Makefile b/package/bitlbee/Makefile
index dae6d01c4..d9a8cf6b8 100644
--- a/package/bitlbee/Makefile
+++ b/package/bitlbee/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= bitlbee
-PKG_VERSION:= 3.5.1
+PKG_VERSION:= 3.6
PKG_RELEASE:= 1
-PKG_HASH:= 9636d7fd89ebb3756c13a9a3387736ca6d56ccf66ec0580d512f07b21db0fa69
+PKG_HASH:= 9f15de46f29b46bf1e39fc50bdf4515e71b17f551f3955094c5da792d962107e
PKG_DESCR:= irc gateway to im chat networks
PKG_SECTION:= app/chat
PKG_DEPENDS:= glib libressl
@@ -35,6 +35,7 @@ CONFIGURE_ARGS:= --target=${GNU_TARGET_NAME} \
--ipv6=1 \
--ssl=openssl
INSTALL_TARGET= install-etc install-bin
+XAKE_ENV+= VERBOSE=1
post-configure:
@echo 'CFLAGS+="-I${STAGING_TARGET_DIR}/usr/include/iconv"' >> \
diff --git a/package/bitlbee/patches/patch-lib_Makefile b/package/bitlbee/patches/patch-lib_Makefile
index f55340876..a0f65192c 100644
--- a/package/bitlbee/patches/patch-lib_Makefile
+++ b/package/bitlbee/patches/patch-lib_Makefile
@@ -1,8 +1,8 @@
---- bitlbee-3.5.1.orig/lib/Makefile 2017-01-30 21:45:59.000000000 +0100
-+++ bitlbee-3.5.1/lib/Makefile 2017-05-20 12:20:09.898551807 +0200
+--- bitlbee-3.6.orig/lib/Makefile 2019-02-07 20:53:38.000000000 +0100
++++ bitlbee-3.6/lib/Makefile 2024-02-14 17:50:24.243531011 +0100
@@ -14,7 +14,7 @@ endif
# [SH] Program variables
- objects = arc.o base64.o $(EVENT_HANDLER) ftutil.o http_client.o ini.o json.o json_util.o md5.o misc.o oauth.o oauth2.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o ns_parse.o
+ objects = arc.o base64.o canohost.o $(EVENT_HANDLER) ftutil.o http_client.o ini.o json.o json_util.o md5.o misc.o oauth.o oauth2.o proxy.o sha1.o $(SSL_CLIENT) url.o xmltree.o ns_parse.o
-LFLAGS += -r
+LFLAGS += -Wl,-r -nostdlib
@@ -13,8 +13,8 @@
lib.o: $(objects) $(subdirs)
@echo '*' Linking lib.o
-- @$(LD) $(LFLAGS) $(objects) -o lib.o
-+ @$(CC) $(LFLAGS) $(objects) -o lib.o
+- $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o lib.o
++ $(VERBOSE) $(CC) $(LFLAGS) $(objects) -o lib.o
$(objects): ../Makefile.settings Makefile
diff --git a/package/bitlbee/patches/patch-protocols_Makefile b/package/bitlbee/patches/patch-protocols_Makefile
index 77ce80f3d..80407a7e6 100644
--- a/package/bitlbee/patches/patch-protocols_Makefile
+++ b/package/bitlbee/patches/patch-protocols_Makefile
@@ -1,5 +1,5 @@
---- bitlbee-3.5.1.orig/protocols/Makefile 2017-01-30 21:45:59.000000000 +0100
-+++ bitlbee-3.5.1/protocols/Makefile 2017-05-20 12:17:34.748567834 +0200
+--- bitlbee-3.6.orig/protocols/Makefile 2019-02-07 20:53:38.000000000 +0100
++++ bitlbee-3.6/protocols/Makefile 2024-02-14 17:50:36.259530848 +0100
@@ -24,7 +24,7 @@ subdirobjs = $(PROTOOBJS)
# Expansion of variables
@@ -13,8 +13,8 @@
protocols.o: $(objects) $(subdirs)
@echo '*' Linking protocols.o
-- @$(LD) $(LFLAGS) $(objects) $(subdirobjs) -o protocols.o
-+ @$(CC) $(LFLAGS) $(objects) $(subdirobjs) -o protocols.o
+- $(VERBOSE) $(LD) $(LFLAGS) $(objects) $(subdirobjs) -o protocols.o
++ $(VERBOSE) $(CC) $(LFLAGS) $(objects) $(subdirobjs) -o protocols.o
$(objects): ../Makefile.settings Makefile
diff --git a/package/bitlbee/patches/patch-protocols_jabber_Makefile b/package/bitlbee/patches/patch-protocols_jabber_Makefile
index 9bf83badc..3eca97198 100644
--- a/package/bitlbee/patches/patch-protocols_jabber_Makefile
+++ b/package/bitlbee/patches/patch-protocols_jabber_Makefile
@@ -1,5 +1,5 @@
---- bitlbee-3.5.1.orig/protocols/jabber/Makefile 2017-01-30 21:45:59.000000000 +0100
-+++ bitlbee-3.5.1/protocols/jabber/Makefile 2017-05-20 12:15:26.360306005 +0200
+--- bitlbee-3.6.orig/protocols/jabber/Makefile 2019-02-07 20:53:38.000000000 +0100
++++ bitlbee-3.6/protocols/jabber/Makefile 2024-02-14 17:50:47.363530697 +0100
@@ -14,7 +14,7 @@ endif
# [SH] Program variables
objects = conference.o io.o iq.o jabber.o jabber_util.o message.o presence.o s5bytestream.o sasl.o si.o hipchat.o
@@ -13,7 +13,7 @@
jabber_mod.o: $(objects)
@echo '*' Linking jabber_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o jabber_mod.o
-+ @$(CC) $(LFLAGS) $(objects) -o jabber_mod.o
+- $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o jabber_mod.o
++ $(VERBOSE) $(CC) $(LFLAGS) $(objects) -o jabber_mod.o
-include .depend/*.d
diff --git a/package/bitlbee/patches/patch-protocols_msn_Makefile b/package/bitlbee/patches/patch-protocols_msn_Makefile
deleted file mode 100644
index b2b730cc7..000000000
--- a/package/bitlbee/patches/patch-protocols_msn_Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
---- bitlbee-3.5.1.orig/protocols/msn/Makefile 2017-01-30 21:45:59.000000000 +0100
-+++ bitlbee-3.5.1/protocols/msn/Makefile 2017-05-20 12:15:47.329655386 +0200
-@@ -14,7 +14,7 @@ endif
- # [SH] Program variables
- objects = msn.o msn_util.o ns.o soap.o tables.o gw.o
-
--LFLAGS += -r
-+LFLAGS += -Wl,-r -nostdlib
-
- # [SH] Phony targets
- all: msn_mod.o
-@@ -41,6 +41,6 @@ $(objects): %.o: $(_SRCDIR_)%.c
-
- msn_mod.o: $(objects)
- @echo '*' Linking msn_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o msn_mod.o
-+ @$(CC) $(LFLAGS) $(objects) -o msn_mod.o
-
- -include .depend/*.d
diff --git a/package/bitlbee/patches/patch-protocols_oscar_Makefile b/package/bitlbee/patches/patch-protocols_oscar_Makefile
deleted file mode 100644
index b9dcedf9f..000000000
--- a/package/bitlbee/patches/patch-protocols_oscar_Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
---- bitlbee-3.5.1.orig/protocols/oscar/Makefile 2017-01-30 21:45:59.000000000 +0100
-+++ bitlbee-3.5.1/protocols/oscar/Makefile 2017-05-20 12:16:09.175061142 +0200
-@@ -15,7 +15,7 @@ endif
- # [SH] Program variables
- objects = admin.o auth.o bos.o buddylist.o chat.o chatnav.o conn.o icq.o im.o info.o misc.o msgcookie.o rxhandlers.o rxqueue.o search.o service.o snac.o ssi.o stats.o tlv.o txqueue.o oscar_util.o oscar.o
-
--LFLAGS += -r
-+LFLAGS += -Wl,-r -nostdlib
-
- # [SH] Phony targets
- all: oscar_mod.o
-@@ -38,10 +38,10 @@ $(objects): ../../Makefile.settings Make
-
- $(objects): %.o: $(_SRCDIR_)%.c
- @echo '*' Compiling $<
-- @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-+ $(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
-
- oscar_mod.o: $(objects)
- @echo '*' Linking oscar_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o oscar_mod.o
-+ $(CC) $(LFLAGS) $(objects) -o oscar_mod.o
-
- -include .depend/*.d
diff --git a/package/bitlbee/patches/patch-protocols_twitter_Makefile b/package/bitlbee/patches/patch-protocols_twitter_Makefile
index 1dba18e51..f9be7d888 100644
--- a/package/bitlbee/patches/patch-protocols_twitter_Makefile
+++ b/package/bitlbee/patches/patch-protocols_twitter_Makefile
@@ -1,5 +1,5 @@
---- bitlbee-3.5.1.orig/protocols/twitter/Makefile 2017-01-30 21:45:59.000000000 +0100
-+++ bitlbee-3.5.1/protocols/twitter/Makefile 2017-05-20 12:16:01.590573095 +0200
+--- bitlbee-3.6.orig/protocols/twitter/Makefile 2019-02-07 20:53:38.000000000 +0100
++++ bitlbee-3.6/protocols/twitter/Makefile 2024-02-14 17:50:59.239530536 +0100
@@ -14,7 +14,7 @@ endif
# [SH] Program variables
objects = twitter.o twitter_http.o twitter_lib.o
@@ -13,7 +13,7 @@
twitter_mod.o: $(objects)
@echo '*' Linking twitter_mod.o
-- @$(LD) $(LFLAGS) $(objects) -o twitter_mod.o
-+ @$(CC) $(LFLAGS) $(objects) -o twitter_mod.o
+- $(VERBOSE) $(LD) $(LFLAGS) $(objects) -o twitter_mod.o
++ $(VERBOSE) $(CC) $(LFLAGS) $(objects) -o twitter_mod.o
-include .depend/*.d
diff --git a/package/bluez/Makefile b/package/bluez/Makefile
index bf12c5187..4741808b9 100644
--- a/package/bluez/Makefile
+++ b/package/bluez/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= bluez
-PKG_VERSION:= 5.43
+PKG_VERSION:= 5.66
PKG_RELEASE:= 1
-PKG_HASH:= 16c9c05d2a1da644ce3570d975ada3643d2e60c007a955bac09c0a0efeb58d15
+PKG_HASH:= 39fea64b590c9492984a0c27a89fc203e1cdc74866086efb8f4698677ab2b574
PKG_DESCR:= bluetooth applications
PKG_SECTION:= net/wifi
PKG_DEPENDS:= glib dbus libreadline libudev
@@ -36,6 +36,7 @@ CONFIGURE_ARGS+= --enable-tools \
--enable-udev \
--with-udevdir=/usr/bin \
--disable-test \
+ --disable-manpages \
--disable-systemd \
--disable-obex \
--disable-cups
diff --git a/package/bluez/patches/patch-tools_csr_usb_c b/package/bluez/patches/patch-tools_csr_usb_c
deleted file mode 100644
index 509061b56..000000000
--- a/package/bluez/patches/patch-tools_csr_usb_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- bluez-5.12.orig/tools/csr_usb.c 2013-09-16 10:36:07.000000000 +0200
-+++ bluez-5.12/tools/csr_usb.c 2013-12-21 19:22:48.000000000 +0100
-@@ -29,6 +29,7 @@
- #include <errno.h>
- #include <ctype.h>
- #include <fcntl.h>
-+#include <limits.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <string.h>
diff --git a/package/bluez/patches/patch-tools_hciattach_bcm43xx_c b/package/bluez/patches/patch-tools_hciattach_bcm43xx_c
deleted file mode 100644
index 0b8799193..000000000
--- a/package/bluez/patches/patch-tools_hciattach_bcm43xx_c
+++ /dev/null
@@ -1,32 +0,0 @@
---- bluez-5.40.orig/tools/hciattach_bcm43xx.c 2015-03-11 11:01:57.000000000 +0100
-+++ bluez-5.40/tools/hciattach_bcm43xx.c 2016-06-18 23:25:59.991459117 +0200
-@@ -43,7 +43,7 @@
- #include "hciattach.h"
-
- #ifndef FIRMWARE_DIR
--#define FIRMWARE_DIR "/etc/firmware"
-+#define FIRMWARE_DIR "/lib/firmware"
- #endif
-
- #define FW_EXT ".hcd"
-@@ -366,11 +366,8 @@ int bcm43xx_init(int fd, int def_speed,
- return -1;
-
- if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) {
-- fprintf(stderr, "Patch not found, continue anyway\n");
-+ fprintf(stderr, "Patch not found for %s, continue anyway\n", chip_name);
- } else {
-- if (bcm43xx_set_speed(fd, ti, speed))
-- return -1;
--
- if (bcm43xx_load_firmware(fd, fw_path))
- return -1;
-
-@@ -380,6 +377,7 @@ int bcm43xx_init(int fd, int def_speed,
- return -1;
- }
-
-+ sleep(1);
- if (bcm43xx_reset(fd))
- return -1;
- }
diff --git a/package/boost/Makefile b/package/boost/Makefile
index d6aca3295..4bd846e0f 100644
--- a/package/boost/Makefile
+++ b/package/boost/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= boost
-PKG_VERSION:= 1.77.0
-PKG_EXTRAVER:= 1_77
+PKG_VERSION:= 1.84.0
+PKG_EXTRAVER:= 1_84
PKG_RELEASE:= 1
-PKG_HASH:= 5347464af5b14ac54bb945dc68f1dd7c56f0dad7262816b956138fc53bcc0131
+PKG_HASH:= a5800f405508f5df8114558ca9855d2640a2de8f0445f051fa1c7c3383045724
PKG_DESCR:= portable c++ library
PKG_SECTION:= libs/misc
-PKG_BUILDDEP:= python2-host
+PKG_BUILDDEP:= python3-host
PKG_NEEDS:= c++
PKG_URL:= http://www.boost.org/
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=boost/}
@@ -19,12 +19,13 @@ PKG_OPTS:= dev
DISTFILES:= boost_$(PKG_EXTRAVER)_0.tar.gz
WRKDIST= ${WRKDIR}/${PKG_NAME}_$(PKG_EXTRAVER)_0
-PKG_FLAVOURS_BOOST:= DATE_TIME GRAPH GRAPH_PARALLEL IOSTREAMS LOG MATH PROGRAM_OPTIONS PYTHON REGEX SERIALIZATION TEST WAVE
+PKG_FLAVOURS_BOOST:= DATE_TIME JSON GRAPH GRAPH_PARALLEL IOSTREAMS LOG MATH PROGRAM_OPTIONS PYTHON REGEX SERIALIZATION TEST WAVE
PKGFD_DATE_TIME:= with date-time
+PKGFD_JSON:= with json
PKGFD_PYTHON:= with python
-PKGFB_PYTHON:= python2
-PKGFS_PYTHON:= python2
+PKGFB_PYTHON:= python3
+PKGFS_PYTHON:= python3
PKGFD_IOSTREAMS:= with iostreams
PKGFD_GRAPH:= with graph
PKGFD_GRAPH_PARALLEL:= with graph_parallel
@@ -40,7 +41,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,BOOST,boost,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-include ${ADK_TOPDIR}/mk/python.mk
+include ${ADK_TOPDIR}/mk/python3.mk
CONFIG_STYLE:= manual
BUILD_STYLE:= manual
@@ -64,6 +65,9 @@ endif
ifeq (${ADK_PACKAGE_BOOST_DATE_TIME},)
CONFIGURE_ARGS+= --without-date_time
endif
+ifeq (${ADK_PACKAGE_BOOST_JSON},)
+CONFIGURE_ARGS+= --without-json
+endif
ifeq (${ADK_PACKAGE_BOOST_PYTHON},)
CONFIGURE_ARGS+= --without-python
endif
@@ -92,6 +96,9 @@ ifeq (${ADK_PACKAGE_BOOST_WAVE},)
CONFIGURE_ARGS+= --without-wave
endif
+ifeq ($(ADK_TARGET_ARCH),aarch64)
+BOOST_ARCH:= architecture=arm
+endif
ifeq ($(ADK_TARGET_ARCH),arm)
BOOST_ARCH:= architecture=arm
endif
@@ -117,6 +124,9 @@ endif
ifeq ($(ADK_TARGET_ARCH),arm)
BOOST_ABI:= abi=aapcs
endif
+ifeq ($(ADK_TARGET_ARCH),aarch64)
+BOOST_ABI:= abi=aapcs
+endif
ifeq ($(ADK_TARGET_ARCH),mips)
BOOST_ABI:= abi=o32
endif
@@ -124,7 +134,7 @@ endif
# some variables for build
GPP_PATH:= ${TOOLCHAIN_DIR}/usr/bin/${GNU_TARGET_NAME}-g++
GPP_VERSION:= "`${GPP_PATH} -v 2>&1 | tail -1 | awk '{print $$3}'`"
-BJAM_PATH:= "`find ${WRKBUILD} -type f -name "bjam$(EXEEXT)"`"
+BJAM_PATH:= "`find ${WRKBUILD} -type f -name "b2$(EXEEXT)"`"
PYTHON_PATH:= ${STAGING_HOST_DIR}/usr/bin/python
PYTHON_INCLUDE:="`find ${STAGING_TARGET_DIR}/usr/include/ -maxdepth 1 -type d -name "python*" | head -1`"
PYTHON_LIB:= "`find ${STAGING_TARGET_DIR}/usr/lib/ -maxdepth 1 -type d -name "python*" | head -1`"
diff --git a/package/brcm-bluetooth/files/hci b/package/brcm-bluetooth/files/hci
index 69716e147..ecc86a210 100644
--- a/package/brcm-bluetooth/files/hci
+++ b/package/brcm-bluetooth/files/hci
@@ -11,10 +11,9 @@ start)
target=$(cat /etc/.adktarget)
case $target in
raspberry-pi3 | raspberry-pi3p)
- hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
+ btattach -B /dev/ttyAMA0 -P bcm
;;
*)
- echo "No supported target found"
;;
esac
;;
diff --git a/package/brcm-bluetooth/src/BCM4345C5.hcd b/package/brcm-bluetooth/src/BCM4345C5.hcd
new file mode 100644
index 000000000..f92310c94
--- /dev/null
+++ b/package/brcm-bluetooth/src/BCM4345C5.hcd
Binary files differ
diff --git a/package/brcmfmac-firmware/Makefile b/package/brcmfmac-firmware/Makefile
index 4fd65ab52..c714fd044 100644
--- a/package/brcmfmac-firmware/Makefile
+++ b/package/brcmfmac-firmware/Makefile
@@ -5,7 +5,7 @@ include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= brcmfmac-firmware
PKG_VERSION:= 1.0
-PKG_RELEASE:= 3
+PKG_RELEASE:= 6
PKG_DESCR:= firmware for broadcom wireless cards
PKG_SECTION:= sys/firmware
@@ -21,6 +21,8 @@ INSTALL_STYLE:= manual
do-install:
${INSTALL_DIR} ${IDIR_BRCMFMAC_FIRMWARE}/lib/firmware/brcm
- ${CP} ${WRKBUILD}/* ${IDIR_BRCMFMAC_FIRMWARE}/lib/firmware/brcm
+ ${CP} ${WRKBUILD}/brcm/* ${IDIR_BRCMFMAC_FIRMWARE}/lib/firmware/brcm
+ ${INSTALL_DIR} ${IDIR_BRCMFMAC_FIRMWARE}/lib/firmware/cypress
+ ${CP} ${WRKBUILD}/cypress/* ${IDIR_BRCMFMAC_FIRMWARE}/lib/firmware/cypress
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/brcmfmac-firmware/src/BCM43430A1.hcd b/package/brcmfmac-firmware/src/BCM43430A1.hcd
deleted file mode 100644
index 9b087f1b6..000000000
--- a/package/brcmfmac-firmware/src/BCM43430A1.hcd
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/BCM4345C0.hcd b/package/brcmfmac-firmware/src/BCM4345C0.hcd
deleted file mode 100644
index 6870153de..000000000
--- a/package/brcmfmac-firmware/src/BCM4345C0.hcd
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/BCM-0a5c-6410.hcd b/package/brcmfmac-firmware/src/brcm/BCM-0a5c-6410.hcd
new file mode 120000
index 000000000..df0229362
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM-0a5c-6410.hcd
@@ -0,0 +1 @@
+BCM-0bb4-0306.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM-0bb4-0306.hcd b/package/brcmfmac-firmware/src/brcm/BCM-0bb4-0306.hcd
new file mode 100644
index 000000000..dee1dc756
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM-0bb4-0306.hcd
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/BCM43430A1.hcd b/package/brcmfmac-firmware/src/brcm/BCM43430A1.hcd
new file mode 100644
index 000000000..2a7ec965f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM43430A1.hcd
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,3-model-b.hcd b/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,3-model-b.hcd
new file mode 120000
index 000000000..51441492a
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,3-model-b.hcd
@@ -0,0 +1 @@
+BCM43430A1.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-2-w.hcd b/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-2-w.hcd
new file mode 120000
index 000000000..2bc194fc9
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-2-w.hcd
@@ -0,0 +1 @@
+../synaptics/SYN43430A1.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-w.hcd b/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-w.hcd
new file mode 120000
index 000000000..51441492a
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM43430A1.raspberrypi,model-zero-w.hcd
@@ -0,0 +1 @@
+BCM43430A1.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM43430B0.hcd b/package/brcmfmac-firmware/src/brcm/BCM43430B0.hcd
new file mode 100644
index 000000000..5c44f2a5d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM43430B0.hcd
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/BCM43430B0.raspberrypi,model-zero-2-w.hcd b/package/brcmfmac-firmware/src/brcm/BCM43430B0.raspberrypi,model-zero-2-w.hcd
new file mode 120000
index 000000000..d62254786
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM43430B0.raspberrypi,model-zero-2-w.hcd
@@ -0,0 +1 @@
+../synaptics/SYN43430B0.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C0.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C0.hcd
new file mode 100644
index 000000000..007611e37
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C0.hcd
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-a-plus.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-a-plus.hcd
new file mode 120000
index 000000000..d8d4f1d34
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-a-plus.hcd
@@ -0,0 +1 @@
+BCM4345C0.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-b-plus.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-b-plus.hcd
new file mode 120000
index 000000000..d8d4f1d34
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,3-model-b-plus.hcd
@@ -0,0 +1 @@
+BCM4345C0.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-compute-module.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-compute-module.hcd
new file mode 120000
index 000000000..d8d4f1d34
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-compute-module.hcd
@@ -0,0 +1 @@
+BCM4345C0.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-model-b.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-model-b.hcd
new file mode 120000
index 000000000..d8d4f1d34
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,4-model-b.hcd
@@ -0,0 +1 @@
+BCM4345C0.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,5-model-b.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,5-model-b.hcd
new file mode 120000
index 000000000..d8d4f1d34
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C0.raspberrypi,5-model-b.hcd
@@ -0,0 +1 @@
+BCM4345C0.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C5.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C5.hcd
new file mode 100644
index 000000000..762359d31
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C5.hcd
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,4-compute-module.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,4-compute-module.hcd
new file mode 120000
index 000000000..00da8bb90
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,4-compute-module.hcd
@@ -0,0 +1 @@
+BCM4345C5.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,400.hcd b/package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,400.hcd
new file mode 120000
index 000000000..00da8bb90
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/BCM4345C5.raspberrypi,400.hcd
@@ -0,0 +1 @@
+BCM4345C5.hcd \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/bcm43xx-0.fw b/package/brcmfmac-firmware/src/brcm/bcm43xx-0.fw
index 9ee5ccc10..9ee5ccc10 100644
--- a/package/brcmfmac-firmware/src/bcm43xx-0.fw
+++ b/package/brcmfmac-firmware/src/brcm/bcm43xx-0.fw
Binary files differ
diff --git a/package/brcmfmac-firmware/src/bcm43xx_hdr-0.fw b/package/brcmfmac-firmware/src/brcm/bcm43xx_hdr-0.fw
index a6db78de0..a6db78de0 100644
--- a/package/brcmfmac-firmware/src/bcm43xx_hdr-0.fw
+++ b/package/brcmfmac-firmware/src/brcm/bcm43xx_hdr-0.fw
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.bin
new file mode 120000
index 000000000..6ed9407a6
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43012-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.clm_blob
new file mode 120000
index 000000000..4715e14ce
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43012-sdio.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43012-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcmfmac43143-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43143-sdio.bin
index e4f56f3d1..e4f56f3d1 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43143-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43143-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43143.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43143.bin
index 28b8db998..28b8db998 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43143.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43143.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43236b.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43236b.bin
index 8a2004a91..8a2004a91 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43236b.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43236b.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43241b0-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43241b0-sdio.bin
new file mode 100644
index 000000000..8cc3cd208
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43241b0-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43241b4-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43241b4-sdio.bin
index 5d10c24f1..5d10c24f1 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43241b4-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43241b4-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43241b5-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43241b5-sdio.bin
index 8d70d17cf..8d70d17cf 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43241b5-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43241b5-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43242a.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43242a.bin
index 80604d853..80604d853 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43242a.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43242a.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4329-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.bin
index d4c4560cd..d4c4560cd 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4329-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.bin
new file mode 100644
index 000000000..d4c4560cd
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.txt
new file mode 100644
index 000000000..d0fa0f556
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-dl.txt
@@ -0,0 +1,70 @@
+# bcm4329 NVRAM
+# $Copyright (C) 2008 Broadcom Corporation$
+# $id$
+
+sromrev=3
+vendid=0x14e4
+devid=0x432f
+boardtype=0x53e
+
+boardrev=0x41
+
+#boardflags=0x1200
+boardflags=0x200
+
+# Specify the xtalfreq if it is otherthan 38.4MHz
+xtalfreq=37400
+
+aa2g=3
+aa5g=0
+
+ag0=255
+#tri2g=0x64
+
+# 11g paparams
+pa0b0=5542,5542,5542
+pa0b1=64244,64244,64244
+pa0b2=65202,65202,65202
+
+pa0itssit=62
+pa0maxpwr=74
+opo=0
+mcs2gpo0=0x6666
+mcs2gpo1=0x6666
+
+# 11g rssi params
+rssismf2g=0xa,0xa,0xa
+rssismc2g=0xb,0xb,0xb
+rssisav2g=0x3,0x3,0x3
+bxa2g=0
+
+# country code
+ccode=ALL
+cctl=0x0
+cckdigfilttype=0
+ofdmdigfilttype=1
+
+rxpo2g=0
+
+boardnum=1
+macaddr=00:90:4c:c5:00:34
+
+# xtal pu and pd time control variable
+# pu time is driver default (0x1501)
+#r13t=0x1501
+
+#######
+nocrc=1
+
+#for mfgc
+otpimagesize=182
+
+# sdio extra configs
+hwhdr=0x05ffff031030031003100000
+
+#This generates empty F1, F2 and F3 tuple chains, and may be used if the host SDIO stack does not require the standard tuples.
+#RAW1=80 02 fe ff
+
+#This includes the standard FUNCID and FUNCE tuples in the F1, F2, F3 and common CIS.
+RAW1=80 32 fe 21 02 0c 00 22 2a 01 01 00 00 c5 0 e6 00 00 00 00 00 40 00 00 ff ff 80 00 00 00 00 00 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 20 04 D0 2 29 43 21 02 0c 00 22 04 00 20 00 5A
+nvramver=4.218.214.0
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.bin
new file mode 100644
index 000000000..d4c4560cd
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.txt
new file mode 100644
index 000000000..d0fa0f556
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.solidrun,cubox-i-q.txt
@@ -0,0 +1,70 @@
+# bcm4329 NVRAM
+# $Copyright (C) 2008 Broadcom Corporation$
+# $id$
+
+sromrev=3
+vendid=0x14e4
+devid=0x432f
+boardtype=0x53e
+
+boardrev=0x41
+
+#boardflags=0x1200
+boardflags=0x200
+
+# Specify the xtalfreq if it is otherthan 38.4MHz
+xtalfreq=37400
+
+aa2g=3
+aa5g=0
+
+ag0=255
+#tri2g=0x64
+
+# 11g paparams
+pa0b0=5542,5542,5542
+pa0b1=64244,64244,64244
+pa0b2=65202,65202,65202
+
+pa0itssit=62
+pa0maxpwr=74
+opo=0
+mcs2gpo0=0x6666
+mcs2gpo1=0x6666
+
+# 11g rssi params
+rssismf2g=0xa,0xa,0xa
+rssismc2g=0xb,0xb,0xb
+rssisav2g=0x3,0x3,0x3
+bxa2g=0
+
+# country code
+ccode=ALL
+cctl=0x0
+cckdigfilttype=0
+ofdmdigfilttype=1
+
+rxpo2g=0
+
+boardnum=1
+macaddr=00:90:4c:c5:00:34
+
+# xtal pu and pd time control variable
+# pu time is driver default (0x1501)
+#r13t=0x1501
+
+#######
+nocrc=1
+
+#for mfgc
+otpimagesize=182
+
+# sdio extra configs
+hwhdr=0x05ffff031030031003100000
+
+#This generates empty F1, F2 and F3 tuple chains, and may be used if the host SDIO stack does not require the standard tuples.
+#RAW1=80 02 fe ff
+
+#This includes the standard FUNCID and FUNCE tuples in the F1, F2, F3 and common CIS.
+RAW1=80 32 fe 21 02 0c 00 22 2a 01 01 00 00 c5 0 e6 00 00 00 00 00 40 00 00 ff ff 80 00 00 00 00 00 00 00 00 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 20 04 D0 2 29 43 21 02 0c 00 22 04 00 20 00 5A
+nvramver=4.218.214.0
diff --git a/package/brcmfmac-firmware/src/brcmfmac4329-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.txt
index 6be3013aa..6be3013aa 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4329-sdio.txt
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4329-sdio.txt
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.Prowise-PT301.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.Prowise-PT301.txt
new file mode 100644
index 000000000..67381ab43
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.Prowise-PT301.txt
@@ -0,0 +1,89 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6330 4330 WiFi/BT module found on the
+# Prowise PT301 tablet
+aa2g=1
+aa5g=1
+ag0=0x40
+ag1=0xBF
+boardflags=0x10080a00
+# boardflags3 is not set
+boardnum=22
+boardrev=0x1202
+boardtype=0x05e1
+bphyscale=17
+# btc_params is not set
+cckPwrIdxCorr=-15
+cckPwrOffset=6
+cckdigfilttype=20
+ccode=X2
+# cldo_pwm is not set
+dacrate2g=160
+dacrate5g=160
+devid=0x4360
+il0macaddr=00:90:4c:c5:12:38
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=0x44
+maxp5ga0=0x3A
+maxp5gha0=0x3A
+maxp5gla0=0x3A
+mcs2gpo0=0x4444
+mcs2gpo1=0x4444
+mcs5ghpo0=0x2222
+mcs5ghpo1=0x2222
+mcs5glpo0=0x2222
+mcs5glpo1=0x2222
+mcs5gpo0=0x2222
+mcs5gpo1=0x2222
+nocrc=1
+noise_cal_adj_2g=-3
+noise_cal_ref_2g=53
+ofdm2gpo=0x22222222
+ofdm5ghpo=0x00000000
+ofdm5glpo=0x00000000
+ofdm5gpo=0x00000000
+pa0b0=4924
+pa0b1=-595
+pa0b2=-157
+pa0itssit=0x20
+pa1b0=4880
+pa1b1=-625
+pa1b2=-200
+pa1hib0=4880
+pa1hib1=-620
+pa1hib2=-190
+pa1lob0=5050
+pa1lob1=-630
+pa1lob2=-195
+pacalpwr2g=13
+pacalpwr5g1=11
+pacalpwr5g=13
+pacalpwr5ghi1=11
+pacalpwr5ghi=13
+pacalpwr5glo1=11
+pacalpwr5glo=13
+prodid=0x0547
+rfreg033=0x19
+rfreg033_cck=0x1f
+rfreg088=15
+rssisav2g=0x7
+rssisav5g=0x7
+rssismc2g=0x3
+rssismc5g=0x3
+rssismf2g=0xa
+rssismf5g=0x4
+rxpo5g=0
+sd_gpdc=0
+sd_gpout=0
+sd_gpval=1
+sromrev=3
+swctrlmap_2g=0x04040404,0x02020202,0x02020202,0x18282,0x1ff
+swctrlmap_5g=0x10101010,0x28282020,0x20202020,0x10202,0x0f8
+triso2g=3
+triso5g=6
+txalpfbyp2g=1
+txgaintbl=1
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=26000
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.bin
new file mode 100644
index 000000000..3dd04446e
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4330-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.bin
index e3bc35546..e3bc35546 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4330-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.txt
new file mode 100644
index 000000000..09a044f78
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-dl.txt
@@ -0,0 +1,118 @@
+manfid=0x2d0
+prodid=0x0532
+vendid=0x14e4
+devid=0x4360
+boardtype=0x0532
+boardrev=0x20
+boardflags=0x10080201
+
+nocrc=1
+xtalfreq=37400
+xtalmode=0x20,0x4,0
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+ag0=252
+ag1=252
+aa2g=1
+aa5g=1
+ccode=EU
+regrev=5
+
+#for BT-coexistence
+btc_params80=0
+btc_params6=10
+btc_params8=10000
+
+sd_gpout=0
+# sd_oobonly=1
+muxenab=0x10
+
+# 2G PA param_B42R 110927
+pa0b0=0x12E4
+pa0b1=0xFE09
+pa0b2=0xFF9A
+#pa0itssit=62
+rssismf2g=0xa
+rssismc2g=0x3
+rssisav2g=0x7
+
+# rssi params for 5GHz B42R_110803
+#rssismf5g=0x4
+rssismf5g=0xa
+rssismc5g=0x7
+rssisav5g=0x1
+#PA parameters for lower band
+pa1lob0=0x144F
+pa1lob1=0xFD6B
+pa1lob2=0xFF3B
+#PA parameters for midband
+pa1b0=0x139C
+pa1b1=0xFD87
+pa1b2=0xFF4F
+#PA parameters for high band
+pa1hib0=0x12CA
+pa1hib1=0xFD9A
+pa1hib2=0xFF4E
+
+# 2G PA offset
+maxp2ga0=64
+sromrev=3
+cckpo=0
+ofdm2gpo=0x66666666
+mcs2gpo0=0xaaaa
+mcs2gpo1=0xaaaa
+
+# 5G PA offset
+maxp5ga0=66
+maxp5gla0=66
+maxp5gha0=66
+ofdm5gpo=0x22222222
+ofdm5glpo=0x11111111
+ofdm5ghpo=0x22222222
+mcs5gpo0=0x6666
+mcs5gpo1=0x6666
+mcs5glpo0=0x5555
+mcs5glpo1=0x5555
+mcs5ghpo0=0x6666
+mcs5ghpo1=0x6666
+
+cckPwrOffset=4
+cckdigfilttype=22
+ofdmdigfilttype=2
+extpagain5g=2
+#wl0id=0x431b
+
+# For 2GHz Tx EVM/SM
+rfreg033=0x19
+rfreg033_cck=0x1d
+pacalidx2g=65
+dacrate2g=160
+txalpfbyp2g=1
+bphyscale=17
+
+# 5GHz LOFT and IQ CAL
+txgaintbl5g=1
+txiqlopapu5g=1
+txiqlopag5g=0x10
+iqlocalidx5g=24
+
+# 5GHz Noise CAL parameter
+noise_cal_po_5g=5
+noise_cal_enable_5g=0
+
+# 2GHz RxPER at low rates
+noise_cal_ref_2g=56
+noise_cal_po_bias_2g=-4
+noise_cal_enable_2g=1
+
+# Max input level on a-band
+triso5g=9
+
+# Tx power control, especially temp.
+tssitime=1
+
+#fc+1.7GHz Spur Elimination
+loidacmode5g=1
+
+swctrlmap_2g=0x84048404, 0x82028202, 0x84048404, 0x010202, 0x1ff
+swctrlmap_5g=0xC040C040, 0xB030A020, 0xA020C040, 0x010A02, 0x2F8
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.bin
new file mode 100644
index 000000000..e3bc35546
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.txt
new file mode 100644
index 000000000..09a044f78
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.solidrun,cubox-i-q.txt
@@ -0,0 +1,118 @@
+manfid=0x2d0
+prodid=0x0532
+vendid=0x14e4
+devid=0x4360
+boardtype=0x0532
+boardrev=0x20
+boardflags=0x10080201
+
+nocrc=1
+xtalfreq=37400
+xtalmode=0x20,0x4,0
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+ag0=252
+ag1=252
+aa2g=1
+aa5g=1
+ccode=EU
+regrev=5
+
+#for BT-coexistence
+btc_params80=0
+btc_params6=10
+btc_params8=10000
+
+sd_gpout=0
+# sd_oobonly=1
+muxenab=0x10
+
+# 2G PA param_B42R 110927
+pa0b0=0x12E4
+pa0b1=0xFE09
+pa0b2=0xFF9A
+#pa0itssit=62
+rssismf2g=0xa
+rssismc2g=0x3
+rssisav2g=0x7
+
+# rssi params for 5GHz B42R_110803
+#rssismf5g=0x4
+rssismf5g=0xa
+rssismc5g=0x7
+rssisav5g=0x1
+#PA parameters for lower band
+pa1lob0=0x144F
+pa1lob1=0xFD6B
+pa1lob2=0xFF3B
+#PA parameters for midband
+pa1b0=0x139C
+pa1b1=0xFD87
+pa1b2=0xFF4F
+#PA parameters for high band
+pa1hib0=0x12CA
+pa1hib1=0xFD9A
+pa1hib2=0xFF4E
+
+# 2G PA offset
+maxp2ga0=64
+sromrev=3
+cckpo=0
+ofdm2gpo=0x66666666
+mcs2gpo0=0xaaaa
+mcs2gpo1=0xaaaa
+
+# 5G PA offset
+maxp5ga0=66
+maxp5gla0=66
+maxp5gha0=66
+ofdm5gpo=0x22222222
+ofdm5glpo=0x11111111
+ofdm5ghpo=0x22222222
+mcs5gpo0=0x6666
+mcs5gpo1=0x6666
+mcs5glpo0=0x5555
+mcs5glpo1=0x5555
+mcs5ghpo0=0x6666
+mcs5ghpo1=0x6666
+
+cckPwrOffset=4
+cckdigfilttype=22
+ofdmdigfilttype=2
+extpagain5g=2
+#wl0id=0x431b
+
+# For 2GHz Tx EVM/SM
+rfreg033=0x19
+rfreg033_cck=0x1d
+pacalidx2g=65
+dacrate2g=160
+txalpfbyp2g=1
+bphyscale=17
+
+# 5GHz LOFT and IQ CAL
+txgaintbl5g=1
+txiqlopapu5g=1
+txiqlopag5g=0x10
+iqlocalidx5g=24
+
+# 5GHz Noise CAL parameter
+noise_cal_po_5g=5
+noise_cal_enable_5g=0
+
+# 2GHz RxPER at low rates
+noise_cal_ref_2g=56
+noise_cal_po_bias_2g=-4
+noise_cal_enable_2g=1
+
+# Max input level on a-band
+triso5g=9
+
+# Tx power control, especially temp.
+tssitime=1
+
+#fc+1.7GHz Spur Elimination
+loidacmode5g=1
+
+swctrlmap_2g=0x84048404, 0x82028202, 0x84048404, 0x010202, 0x1ff
+swctrlmap_5g=0xC040C040, 0xB030A020, 0xA020C040, 0x010A02, 0x2F8
diff --git a/package/brcmfmac-firmware/src/brcmfmac4330-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.txt
index 9546246b9..9546246b9 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4330-sdio.txt
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4330-sdio.txt
diff --git a/package/brcmfmac-firmware/src/brcmfmac4334-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4334-sdio.bin
index ade994fbf..ade994fbf 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4334-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4334-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.bin
new file mode 120000
index 000000000..ffd98c6fd
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43340-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.meegopad-t08.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.meegopad-t08.txt
new file mode 100644
index 000000000..9535a4b6f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.meegopad-t08.txt
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6234 43340 WiFi/BT module found on the
+# Meegopad T08 HDMI stick
+aa2g=1
+ag0=255
+boardflags=0x0090201
+boardnum=22
+boardrev=0x1203
+boardtype=0x0653
+btc_flags=71
+btc_params22=8000
+btc_params83=9000
+btc_params84=4500
+btc_params8=15000
+cck2gpo=0x2222
+cckPwrOffset=3
+cckpapden=0
+ccode=X2
+dacrate2xen=1
+devid=0x4386
+dlocalidx5g=70
+dlorange_lowlimit=5
+gain=32
+gain_settle_dly_2g=4
+gain_settle_dly_5g=4
+iqcalidx5g=50
+iqlocalidx5g=40
+loflag=0
+lpbckmode5g=1
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=80
+maxp5ga0=80
+maxp5gha0=78
+maxp5gla0=78
+mcs2gpo0=0x5555
+mcs2gpo1=0x5555
+mcs5ghpo0=0x7777
+mcs5ghpo1=0x7777
+mcs5glpo0=0x7777
+mcs5glpo1=0x7777
+mcs5gpo0=0x8888
+mcs5gpo1=0x8888
+nocrc=1
+noise_cal_high_gain_2g=73
+noise_cal_high_gain_5g=73
+noise_cal_nf_substract_val_2g=346
+noise_cal_nf_substract_val_5g=346
+noise_cal_po_2g=-1
+noise_cal_po_40_2g=-1
+noise_cal_po_40_5g=-1
+noise_cal_po_5g=-1
+ofdm2gpo=0x333333333
+ofdm5ghpo=0x66666666
+ofdm5glpo=0x66666666
+ofdm5gpo=0x66666666
+pa0b0=6957 default
+pa0b1=-808
+pa0b2=-178
+pa0itssit=0x20
+pa1b0=5372
+pa1b1=-671
+pa1b2=-212
+pa1hib0=5620
+pa1hib1=-663
+pa1hib2=-179
+pa1lob0=5859
+pa1lob1=-693
+pa1lob2=-178
+papden2g=1
+papden5g=1
+prodid=0x0653
+rssisav2g=0x1
+rssisav5g=0x3
+rssismc2g=0x8
+rssismc5g=0x7
+rssismf2g=0xf
+rssismf5g=0xf
+rxpo5g=0
+sd_gpdc=0
+sd_gpout=4
+sd_gpval=1
+sromrev=3
+swctrlmap_2g=0x00080008,0x00100010,0x00080008,0x011010,0x11f
+swctrlmap_5g=0x00040004,0x00020002,0x00040004,0x011010,0x2fe
+triso2g=8
+triso5g=8
+tssifloor2g=69
+tssifloor5gh=74
+tssifloor5gl=77
+tssifloor5gm=77
+txalpfbyp=1
+txalpfpu=1
+txiqlopapu2g=0
+txiqlopapu5g=0
+vendid=0x14e4
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt
new file mode 100644
index 000000000..1bec11e4a
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.pov-tab-p1006w-data.txt
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6234 43340 WiFi/BT module found on the
+# Point of View TAB-P1006W-232-3G tablet
+aa2g=1
+ag0=255
+boardflags=0x0090201
+boardnum=22
+boardrev=0x1203
+boardtype=0x0653
+btc_flags=71
+btc_params22=8000
+btc_params83=9000
+btc_params84=4500
+btc_params8=15000
+cck2gpo=0x2222
+cckPwrOffset=3
+cckpapden=0
+ccode=X2
+dacrate2xen=1
+devid=0x4386
+dlocalidx5g=70
+dlorange_lowlimit=5
+gain=32
+gain_settle_dly_2g=4
+gain_settle_dly_5g=4
+iqcalidx5g=50
+iqlocalidx5g=40
+loflag=0
+lpbckmode5g=1
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=72
+maxp5ga0=68
+maxp5gha0=68
+maxp5gla0=68
+mcs2gpo0=0x5555
+mcs2gpo1=0x5555
+mcs5ghpo0=0x7777
+mcs5ghpo1=0x7777
+mcs5glpo0=0x7777
+mcs5glpo1=0x7777
+mcs5gpo0=0x8888
+mcs5gpo1=0x8888
+nocrc=1
+noise_cal_high_gain_2g=73
+noise_cal_high_gain_5g=73
+noise_cal_nf_substract_val_2g=346
+noise_cal_nf_substract_val_5g=346
+noise_cal_po_2g=-1
+noise_cal_po_40_2g=-1
+noise_cal_po_40_5g=-1
+noise_cal_po_5g=-1
+ofdm2gpo=0x333333333
+ofdm5ghpo=0x66666666
+ofdm5glpo=0x66666666
+ofdm5gpo=0x66666666
+pa0b0=0x1ce6
+pa0b1=0xfca1
+pa0b2=0xff62
+pa0itssit=0x20
+pa1b0=0x10cb
+pa1b1=0xfdac
+pa1b2=0xfefa
+pa1hib0=0x1481
+pa1hib1=0xfd90
+pa1hib2=0xff56
+pa1lob0=0x15ef
+pa1lob1=0xfd61
+pa1lob2=0xff57
+papden2g=1
+papden5g=1
+prodid=0x0653
+rssisav2g=0x1
+rssisav5g=0x3
+rssismc2g=0x8
+rssismc5g=0x7
+rssismf2g=0xf
+rssismf5g=0xf
+rxpo5g=0
+sd_gpdc=0
+sd_gpout=4
+sd_gpval=1
+sromrev=3
+swctrlmap_2g=0x00080008,0x00100010,0x00080008,0x011010,0x11f
+swctrlmap_5g=0x00040004,0x00020002,0x00040004,0x011010,0x2fe
+triso2g=8
+triso5g=8
+tssifloor2g=69
+tssifloor5gh=74
+tssifloor5gl=77
+tssifloor5gm=77
+txalpfbyp=1
+txalpfpu=1
+txiqlopapu2g=0
+txiqlopapu5g=0
+vendid=0x14e4
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.predia-basic.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.predia-basic.txt
new file mode 100644
index 000000000..c899475cc
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43340-sdio.predia-basic.txt
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6234 43340 WiFi/BT module found on the
+# Predia Basic tablet
+aa2g=1
+ag0=255
+boardflags=0x0090201
+boardnum=22
+boardrev=0x1203
+boardtype=0x0653
+btc_flags=71
+btc_params22=8000
+btc_params83=9000
+btc_params84=4500
+btc_params8=15000
+cck2gpo=0x2222
+cckPwrOffset=3
+cckpapden=0
+ccode=X2
+dacrate2xen=1
+devid=0x4386
+dlocalidx5g=70
+dlorange_lowlimit=5
+gain=32
+gain_settle_dly_2g=4
+gain_settle_dly_5g=4
+iqcalidx5g=50
+iqlocalidx5g=40
+loflag=0
+lpbckmode5g=1
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=76
+maxp5ga0=68
+maxp5gha0=68
+maxp5gla0=68
+mcs2gpo0=0x5555
+mcs2gpo1=0x5555
+mcs5ghpo0=0x7777
+mcs5ghpo1=0x7777
+mcs5glpo0=0x7777
+mcs5glpo1=0x7777
+mcs5gpo0=0x8888
+mcs5gpo1=0x8888
+nocrc=1
+noise_cal_high_gain_2g=73
+noise_cal_high_gain_5g=73
+noise_cal_nf_substract_val_2g=346
+noise_cal_nf_substract_val_5g=346
+noise_cal_po_2g=-1
+noise_cal_po_40_2g=-1
+noise_cal_po_40_5g=-1
+noise_cal_po_5g=-1
+ofdm2gpo=0x333333333
+ofdm5ghpo=0x66666666
+ofdm5glpo=0x66666666
+ofdm5gpo=0x66666666
+pa0b0=6957 default
+pa0b1=-808
+pa0b2=-178
+pa0itssit=0x20
+pa1b0=5372
+pa1b1=-671
+pa1b2=-212
+pa1hib0=5620
+pa1hib1=-663
+pa1hib2=-179
+pa1lob0=5859
+pa1lob1=-693
+pa1lob2=-178
+papden2g=1
+papden5g=1
+prodid=0x0653
+rssisav2g=0x1
+rssisav5g=0x3
+rssismc2g=0x8
+rssismc5g=0x7
+rssismf2g=0xf
+rssismf5g=0xf
+rxpo5g=0
+sd_gpdc=0
+sd_gpout=4
+sd_gpval=1
+sromrev=3
+swctrlmap_2g=0x00080008,0x00100010,0x00080008,0x011010,0x11f
+swctrlmap_5g=0x00040004,0x00020002,0x00040004,0x011010,0x2fe
+triso2g=8
+triso5g=8
+tssifloor2g=69
+tssifloor5gh=74
+tssifloor5gl=77
+tssifloor5gm=77
+txalpfbyp=1
+txalpfpu=1
+txiqlopapu2g=0
+txiqlopapu5g=0
+vendid=0x14e4
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcmfmac4335-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4335-sdio.bin
index a670e962c..a670e962c 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4335-sdio.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4335-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.bin
new file mode 120000
index 000000000..459879f13
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43362-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt
new file mode 100644
index 000000000..90b46682f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.cubietech,cubietruck.txt
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6210 43362 WiFi/BT module found on the
+# Cubietech Cubietruck board
+aa2g=1
+ag0=2
+boardflags2=0x80
+boardflags=0x80201
+boardnum=777
+boardrev=0x1307
+boardtype=0x0598
+btc_flags=0x6
+btc_params0=5000
+btc_params1=1000
+btc_params6=63
+cck2gpo=0x2222
+cckPwrOffset=5
+ccode=0
+devid=0x4343
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=74
+mcs2gpo0=0x6666
+mcs2gpo1=0x6666
+noise_cal_enable_2g=0
+noise_cal_po_2g=0
+ofdm2gpo=0x44444444
+pa0b0=5447
+pa0b1=-607
+pa0b2=-160
+pa0itssit=62
+pa0maxpwr=56
+pa1itssit=62
+prodid=0x492
+rssisav2g=0x7
+rssismc2g=0x3
+rssismf2g=0xa
+sromrev=3
+swctrlmap_2g=0x04040404,0x02020202,0x02020202,0x010101,0x1ff
+temp_add=29767
+temp_mult=425
+triso2g=0
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=26000
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt
new file mode 120000
index 000000000..c3f3fe933
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43362-sdio.lemaker,bananapro.txt
@@ -0,0 +1 @@
+brcmfmac43362-sdio.cubietech,cubietruck.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4339-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4339-sdio.bin
new file mode 120000
index 000000000..ee51e67ff
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4339-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac4339-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.AP6212.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.AP6212.txt
new file mode 100644
index 000000000..901854e67
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.AP6212.txt
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6212 43430 WiFi/BT module
+aa2g=1
+ag0=255
+AvVmid_c0=0x0,0xc8
+boardflags=0x00404201
+# boardflags3 is not set
+boardnum=22
+boardrev=0x1101
+boardtype=0x0726
+# btc_params is not set
+cckbw202gpo=0x5555
+cckpwroffset0=5
+ccode=ALL
+# cldo_pwm is not set
+deadman_to=0xffffffff
+devid=0x43e2
+extpagain2g=0
+il0macaddr=00:90:4c:c5:12:38
+legofdmbw202gpo=0x77777777
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=90
+mcsbw202gpo=0xaaaaaaaa
+muxenab=0x10
+nocrc=1
+ofdmdigfilttype=7
+# ofdmdigfilttypebe is not set
+pa0itssit=0x20
+pa2ga0=-168,7161,-820
+# pacalidx2g is not set
+# papdendidx is not set
+# papdepsoffset is not set
+papdmode=2
+# papdvalidtest is not set
+prodid=0x0726
+# propbw202gpois not set
+# spurconfig is not set
+sromrev=11
+txpwrbckof=6
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=26000
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt
new file mode 100644
index 000000000..5b854d430
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.Hampoo-D2D3_Vi8A1.txt
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the 43430 WiFi/BT chip as found on the Chuwi Vi8 Plus
+# tablet's mainboard
+aa2g=1
+ag0=255
+AvVmid_c0=0x0,0xc8
+boardflags=0x00404201
+# boardflags3 is not set
+boardnum=22
+boardrev=0x1101
+boardtype=0x0726
+# btc_params is not set
+cckbw202gpo=0
+cckpwroffset0=5
+ccode=X2
+# cldo_pwm is not set
+deadman_to=0xffffffff
+devid=0x43e2
+extpagain2g=0
+il0macaddr=00:90:4c:c5:12:38
+legofdmbw202gpo=0x66111111
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=90
+mcsbw202gpo=0x77711111
+muxenab=0x1
+nocrc=1
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+pa0itssit=0x20
+pa2ga0=-168,7161,-820
+# pacalidx2g is not set
+# papdendidx is not set
+# papdepsoffset is not set
+papdmode=1
+# papdvalidtest is not set
+prodid=0x0726
+# propbw202gpois not set
+sd_gpdc=0
+sd_gpout=0
+sd_gpval=1
+# spurconfig is not set
+sromrev=11
+txpwrbckof=6
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=26000
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.MUR1DX.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.MUR1DX.txt
new file mode 100644
index 000000000..06d4e3169
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.MUR1DX.txt
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Murata 1DX 43430 WiFi/BT module
+aa2g=1
+ag0=0
+AvVmid_c0=0x0,0xc8
+boardflags=0x00404201
+boardflags3=0x08000000
+boardnum=22
+boardrev=0x1202
+boardtype=0x0726
+# btc_params is not set
+cckbw202gpo=0x0
+cckpwroffset0=2
+ccode=ALL
+# cldo_pwm is not set
+# deadman_to is not set
+devid=0x43e2
+extpagain2g=0
+il0macaddr=00:90:4c:c5:12:38
+legofdmbw202gpo=0x88888888
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=74
+mcsbw202gpo=0xaaaaaaaa
+muxenab=0x10
+nocrc=1
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# pa0itssit is not set
+pa2ga0=-145,6667,-751
+pacalidx2g=48
+papdendidx=58
+papdepsoffset=-22
+papdmode=1
+papdvalidtest=1
+prodid=0x0726
+propbw202gpo=0xdd
+# spurconfig is not set
+sromrev=11
+# txpwrbckof is not set
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.bin
new file mode 120000
index 000000000..1c68d4a58
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43430-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.clm_blob
new file mode 120000
index 000000000..6e69616c4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43430-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.bin
new file mode 120000
index 000000000..1c68d4a58
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43430-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.clm_blob
new file mode 120000
index 000000000..6e69616c4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43430-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt
new file mode 120000
index 000000000..2ed668982
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt
@@ -0,0 +1 @@
+brcmfmac43430-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.bin
new file mode 120000
index 000000000..81b110413
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.bin
@@ -0,0 +1 @@
+brcmfmac43436s-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.txt
new file mode 120000
index 000000000..8d4e628b8
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-2-w.txt
@@ -0,0 +1 @@
+brcmfmac43436s-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.bin
new file mode 120000
index 000000000..1c68d4a58
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43430-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.clm_blob
new file mode 120000
index 000000000..6e69616c4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43430-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt
new file mode 120000
index 000000000..2ed668982
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.txt
@@ -0,0 +1 @@
+brcmfmac43430-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt
new file mode 120000
index 000000000..e06912f7d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-plus.txt
@@ -0,0 +1 @@
+brcmfmac43430-sdio.AP6212.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt
new file mode 120000
index 000000000..e06912f7d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-ultra.txt
@@ -0,0 +1 @@
+brcmfmac43430-sdio.AP6212.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt
new file mode 120000
index 000000000..e06912f7d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt
@@ -0,0 +1 @@
+brcmfmac43430-sdio.AP6212.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt
new file mode 120000
index 000000000..e06912f7d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.sinovoip,bpi-m3.txt
@@ -0,0 +1 @@
+brcmfmac43430-sdio.AP6212.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.txt
new file mode 100644
index 000000000..25a4f9b6e
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430-sdio.txt
@@ -0,0 +1,64 @@
+# NVRAM file for BCM943430WLSELG
+# 2.4 GHz, 20 MHz BW mode
+
+# The following parameter values are just placeholders, need to be updated.
+manfid=0x2d0
+prodid=0x0726
+vendid=0x14e4
+devid=0x43e2
+boardtype=0x0726
+boardrev=0x1202
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+sromrev=11
+boardflags=0x00404201
+boardflags3=0x08000000
+xtalfreq=37400
+#xtalfreq=19200
+nocrc=1
+ag0=255
+aa2g=1
+ccode=ALL
+
+pa0itssit=0x20
+extpagain2g=0
+
+#PA parameters for 2.4GHz, measured at CHIP OUTPUT
+pa2ga0=-168,7161,-820
+AvVmid_c0=0x0,0xc8
+cckpwroffset0=5
+
+# PPR params
+maxp2ga0=84
+txpwrbckof=6
+cckbw202gpo=0
+legofdmbw202gpo=0x66111111
+mcsbw202gpo=0x77711111
+propbw202gpo=0xdd
+
+# OFDM IIR :
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# PAPD mode:
+papdmode=1
+papdvalidtest=1
+pacalidx2g=32
+papdepsoffset=-36
+papdendidx=61
+
+il0macaddr=00:90:4c:c5:12:38
+wl0id=0x431b
+
+deadman_to=0xffffffff
+# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
+muxenab=0x1
+# CLDO PWM voltage settings - 0x4 - 1.1 volt
+#cldo_pwm=0x4
+
+#VCO freq 326.4MHz
+spurconfig=0x3
+
+# Improved Bluetooth coexistence parameters from Cypress
+btc_mode=1
+btc_params8=0x4e20
+btc_params1=0x7530
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.bin
new file mode 100644
index 000000000..dc5ef912d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.ilife-S806.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.ilife-S806.txt
new file mode 100644
index 000000000..c0ec87375
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.ilife-S806.txt
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the 43430a0 WiFi/BT chip found on the Chuwi Hi8 tablet
+aa2g=1
+ag0=255
+AvVmid_c0=0x0,0xc8
+boardflags=0x00404201
+# boardflags3 is not set
+boardnum=22
+boardrev=0x1101
+boardtype=0x0726
+# btc_params is not set
+cckbw202gpo=0
+cckpwroffset0=5
+ccode=X2
+# cldo_pwm is not set
+deadman_to=0xffffffff
+devid=0x43e2
+extpagain2g=0
+il0macaddr=00:90:4c:c5:12:38
+legofdmbw202gpo=0x66111111
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=90
+mcsbw202gpo=0x77711111
+muxenab=0x1
+nocrc=1
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+pa0itssit=0x20
+pa2ga0=-168,7161,-820
+# pacalidx2g is not set
+# papdendidx is not set
+# papdepsoffset is not set
+papdmode=1
+# papdvalidtest is not set
+prodid=0x0726
+# propbw202gpois not set
+sd_gpdc=0
+sd_gpout=0
+sd_gpval=1
+# spurconfig is not set
+sromrev=11
+txpwrbckof=6
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=26000
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt
new file mode 100644
index 000000000..14f56292d
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430a0-sdio.jumper-ezpad-mini3.txt
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6212 43430a0 WiFi/BT module found on the
+# Jumper EZpad mini 3 tablet
+aa2g=1
+ag0=255
+AvVmid_c0=0x0,0xc8
+boardflags=0x00404201
+# boardflags3 is not set
+boardnum=22
+boardrev=0x1101
+boardtype=0x0726
+# btc_params is not set
+cckbw202gpo=0
+cckpwroffset0=5
+ccode=X2
+# cldo_pwm is not set
+deadman_to=0xffffffff
+devid=0x43e2
+extpagain2g=0
+il0macaddr=00:90:4c:c5:12:38
+legofdmbw202gpo=0x66111111
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=78
+mcsbw202gpo=0x77711111
+muxenab=0x1
+nocrc=1
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+pa0itssit=0x20
+pa2ga0=-168,6009,-726
+# pacalidx2g is not set
+# papdendidx is not set
+# papdepsoffset is not set
+papdmode=1
+# papdvalidtest is not set
+prodid=0x0726
+# propbw202gpois not set
+rssicorrnorm=15
+sd_gpdc=0
+sd_gpout=0
+sd_gpval=1
+# spurconfig is not set
+sromrev=11
+txpwrbckof=6
+vendid=0x14e4
+wl0id=0x431b
+xtalfreq=26000
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.bin
new file mode 120000
index 000000000..3c46e4c67
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.bin
@@ -0,0 +1 @@
+brcmfmac43436-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.clm_blob
new file mode 120000
index 000000000..0b8821bd4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.clm_blob
@@ -0,0 +1 @@
+brcmfmac43436-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.txt
new file mode 120000
index 000000000..545893f15
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43430b0-sdio.raspberrypi,model-zero-2-w.txt
@@ -0,0 +1 @@
+brcmfmac43436-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.bin
new file mode 100644
index 000000000..a09e0e1c9
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.clm_blob
new file mode 100644
index 000000000..1efac5060
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.bin
new file mode 120000
index 000000000..3c46e4c67
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.bin
@@ -0,0 +1 @@
+brcmfmac43436-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.clm_blob
new file mode 120000
index 000000000..0b8821bd4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.clm_blob
@@ -0,0 +1 @@
+brcmfmac43436-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.txt
new file mode 120000
index 000000000..545893f15
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.raspberrypi,model-zero-2-w.txt
@@ -0,0 +1 @@
+brcmfmac43436-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.txt
new file mode 100644
index 000000000..8eba004ee
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436-sdio.txt
@@ -0,0 +1,93 @@
+# NVRAM file for BCM943430WLPTH, Bx Chip
+# 2.4 GHz, 20 MHz BW mode
+# $ Copyright Broadcom $
+#
+#
+# <<Broadcom-WL-IPTag/Proprietary:>>
+
+# The following parameter values are just placeholders, need to be updated.
+manfid=0x2d0
+prodid=0x0727
+vendid=0x14e4
+devid=0x43e2
+boardtype=0x0727
+boardrev=0x1331
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+sromrev=11
+boardflags=0x00404201
+boardflags3=0x08000000
+xtalfreq=37400
+nocrc=1
+ag0=255
+aa2g=1
+ccode=ALL
+
+pa0itssit=0x20
+extpagain2g=0
+
+#PA parameters for 2.4GHz, measured at CHIP OUTPUT
+pa2ga0=-203,6150,-732
+
+#PA parameters for 2.4GHz, measured at CELL_BLOCK_PORT output
+#pa2ga0=-191,6027,-713
+
+#PA parameters for 2.4GHz, measured at LTE_BLOCK_PORT output
+#pa2ga0=-161,5458,-639
+
+
+AvVmid_c0=0x0,0xc8
+cckpwroffset0=5
+
+# PPR params
+maxp2ga0=78
+txpwrbckof=6
+cckbw202gpo=0
+legofdmbw202gpo=0x66111111
+mcsbw202gpo=0x76611111
+propbw202gpo=0xcc
+
+# OFDM IIR :
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# PAPD mode:
+papdmode=1
+pacalidx2g=42
+papdepsoffset=-22
+papdendidx=58
+
+# LTECX flags
+#ltecxmux=0
+#ltecxpadnum=0x0102
+#ltecxfnsel=0x44
+#ltecxgcigpio=0x01
+
+il0macaddr=00:90:4c:c5:12:38
+wl0id=0x431b
+
+deadman_to=0xffffffff
+# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG, 0x10 for OOB
+muxenab=0x10
+# CLDO PWM voltage settings - 0x4 - 1.1 volt
+#cldo_pwm=0x4
+
+#VCO freq 326.4MHz
+spurconfig=0x3
+
+AvVmidIQcal=0x2,0xa8
+
+#SW based desense - Enable by default
+#i.e using glitich statistcs as critria to change crsmin
+glitch_based_crsmin=1
+
+#/* EDTHRESH default value */
+edonthd20l=-62
+edoffthd20ul=-68
+#/* EDTHRESH adjust offset once ACI active */
+edonthd20l_adj=2
+edoffthd20ul_adj=2
+
+# Improved Bluetooth coexistence parameters
+btc_mode=1
+btc_params8=0x4e20
+btc_params1=0x7530
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.bin
new file mode 100644
index 000000000..85dca9790
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.bin
new file mode 120000
index 000000000..81b110413
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.bin
@@ -0,0 +1 @@
+brcmfmac43436s-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.txt
new file mode 120000
index 000000000..8d4e628b8
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.raspberrypi,model-zero-2-w.txt
@@ -0,0 +1 @@
+brcmfmac43436s-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.txt
new file mode 100644
index 000000000..bac892656
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43436s-sdio.txt
@@ -0,0 +1,67 @@
+# NVRAM file for BCM943430WLPTH
+# 2.4 GHz, 20 MHz BW mode
+
+# The following parameter values are just placeholders, need to be updated.
+manfid=0x2d0
+prodid=0x0727
+vendid=0x14e4
+devid=0x43e2
+boardtype=0x0727
+boardrev=0x1101
+boardnum=22
+macaddr=00:90:4c:c5:12:38
+sromrev=11
+boardflags=0x00404201
+boardflags3=0x08000000
+xtalfreq=37400
+nocrc=1
+ag0=255
+aa2g=1
+ccode=ALL
+
+pa0itssit=0x20
+extpagain2g=0
+
+#PA parameters for 2.4GHz
+pa2ga0=-191,6027,-713
+AvVmid_c0=0x0,0xc8
+cckpwroffset0=5
+
+# PPR params
+maxp2ga0=78
+txpwrbckof=6
+cckbw202gpo=0
+legofdmbw202gpo=0x66111111
+mcsbw202gpo=0x77711111
+propbw202gpo=0xdd
+
+# OFDM IIR :
+ofdmdigfilttype=18
+ofdmdigfilttypebe=18
+# PAPD mode:
+papdmode=1
+papdvalidtest=1
+pacalidx2g=45
+papdepsoffset=-30
+papdendidx=58
+
+il0macaddr=00:90:4c:c5:12:38
+wl0id=0x431b
+
+deadman_to=0xffffffff
+# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
+muxenab=0x1
+# CLDO PWM voltage settings - 0x4 - 1.1 volt
+#cldo_pwm=0x4
+
+#VCO freq 326.4MHz
+spurconfig=0x3
+
+#SW based desense - Enable by default
+#i.e using glitich statistcs as critria to change crsmin
+glitch_based_crsmin=1
+
+# Improved Bluetooth coexistence parameters
+btc_mode=1
+btc_params8=0x4e20
+btc_params1=0x7530
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.AW-CM256SM.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.AW-CM256SM.txt
new file mode 100644
index 000000000..4ca98ee71
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.AW-CM256SM.txt
@@ -0,0 +1,66 @@
+aa2g=1
+aa5g=1
+AvVmid_c0=0,157,1,126,1,126,1,126,1,126
+boardflags=0x00080201
+boardflags2=0x40000000
+boardflags3=0x48200100
+boardrev=0x1304
+boardtype=0x6e4
+deadman_to=481500000
+devid=0x43ab
+dot11agofdmhrbw202gpo=0x1553
+ed_thresh2g=-54
+ed_thresh5g=-54
+extpagain2g=2
+extpagain5g=2
+femctrl=0
+itrsw=1
+ltecxfnsel=0x22
+ltecxgcigpio=0x32
+ltecxmux=0
+ltecxpadnum=0x0504
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=64
+maxp5ga0=80,82,76,77
+mcsbw202gpo=0x99355533
+mcsbw205ghpo=0x99855000
+mcsbw205glpo=0x99755000
+mcsbw205gmpo=0x9df55000
+mcsbw405ghpo=0xd9755000
+mcsbw405glpo=0xb8555000
+mcsbw405gmpo=0xed955000
+mcsbw805ghpo=0xd9555000
+mcsbw805glpo=0xc8555000
+mcsbw805gmpo=0xe9555000
+muxenab=0x10
+nocrc=1
+ofdmlrbw202gpo=0x0033
+pa2ga0=-112,6296,-662
+pa2ga1=-165,3699,-515
+pa5ga0=-143,6016,-683,-141,6013,-678,-137,5988,-670,-136,5982,-670
+pa5ga1=-161,3544,-499,-166,3543,-497,-169,3569,-497,-171,3598,-498
+pdoffset2g40ma0=10
+pdoffset40ma0=0xaaaa
+pdoffset80ma0=0xaaaa
+prodid=0x06e4
+rxchain=1
+rxgains2gelnagaina0=0
+rxgains2gtrelnabypa0=0
+rxgains2gtrisoa0=0
+rxgains5gelnagaina0=0
+rxgains5gtrelnabypa0=0
+rxgains5gtrisoa0=0
+sromrev=11
+swctrlmap_2g=0x00040004,0x00020002,0x00040004,0x010a02,0x1ff
+swctrlmap_5g=0x00100010,0x00200020,0x00100010,0x010a02,0x2f4
+swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000
+swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000
+tssipos2g=1
+tssipos5g=1
+tworangetssi2g=1
+tworangetssi5g=1
+txchain=1
+vcodivmode=1
+vendid=0x14e4
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.bin
new file mode 120000
index 000000000..9c392080f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.clm_blob
new file mode 120000
index 000000000..0ebe01506
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinebook-pro.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinebook-pro.txt
new file mode 120000
index 000000000..4c9a175e5
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinebook-pro.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.AW-CM256SM.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinephone-pro.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinephone-pro.txt
new file mode 120000
index 000000000..4c9a175e5
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,pinephone-pro.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.AW-CM256SM.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,quartz64-b.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,quartz64-b.txt
new file mode 120000
index 000000000..4c9a175e5
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.pine64,quartz64-b.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.AW-CM256SM.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin
new file mode 120000
index 000000000..9c392080f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.clm_blob
new file mode 120000
index 000000000..0ebe01506
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt
new file mode 120000
index 000000000..2aba486e0
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin
new file mode 120000
index 000000000..9c392080f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.clm_blob
new file mode 120000
index 000000000..0ebe01506
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt
new file mode 120000
index 000000000..2aba486e0
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin
new file mode 120000
index 000000000..9c392080f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.clm_blob
new file mode 120000
index 000000000..0ebe01506
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt
new file mode 120000
index 000000000..2aba486e0
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin
new file mode 120000
index 000000000..9c392080f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.clm_blob
new file mode 120000
index 000000000..0ebe01506
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt
new file mode 120000
index 000000000..2aba486e0
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin
new file mode 120000
index 000000000..9c392080f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.clm_blob
new file mode 120000
index 000000000..0ebe01506
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43455-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt
new file mode 120000
index 000000000..2aba486e0
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.txt
@@ -0,0 +1 @@
+brcmfmac43455-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.txt
new file mode 100644
index 000000000..9a20cb7e4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43455-sdio.txt
@@ -0,0 +1,98 @@
+# Cloned from bcm94345wlpagb_p2xx.txt
+NVRAMRev=$Rev: 498373 $
+sromrev=11
+vendid=0x14e4
+devid=0x43ab
+manfid=0x2d0
+prodid=0x06e4
+#macaddr=00:90:4c:c5:12:38
+macaddr=b8:27:eb:74:f2:6c
+nocrc=1
+boardtype=0x6e4
+boardrev=0x1304
+
+#XTAL 37.4MHz
+xtalfreq=37400
+
+btc_mode=1
+#------------------------------------------------------
+#boardflags: 5GHz eTR switch by default
+# 2.4GHz eTR switch by default
+# bit1 for btcoex
+boardflags=0x00480201
+boardflags2=0x40800000
+boardflags3=0x44200100
+phycal_tempdelta=15
+rxchain=1
+txchain=1
+aa2g=1
+aa5g=1
+tssipos5g=1
+tssipos2g=1
+femctrl=0
+AvVmid_c0=1,165,2,100,2,100,2,100,2,100
+pa2ga0=-129,6525,-718
+pa2ga1=-149,4408,-601
+pa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818
+pa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575
+itrsw=1
+pdoffsetcckma0=2
+pdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0
+pdoffset2g40ma0=16
+pdoffset40ma0=0x8888
+pdoffset80ma0=0x8888
+extpagain5g=2
+extpagain2g=2
+tworangetssi2g=1
+tworangetssi5g=1
+# LTECX flags
+# WCI2
+ltecxmux=0
+ltecxpadnum=0x0504
+ltecxfnsel=0x22
+ltecxgcigpio=0x32
+
+maxp2ga0=80
+ofdmlrbw202gpo=0x0022
+dot11agofdmhrbw202gpo=0x4442
+mcsbw202gpo=0x98444422
+mcsbw402gpo=0x98444422
+maxp5ga0=82,82,82,82
+mcsbw205glpo=0xb9555000
+mcsbw205gmpo=0xb9555000
+mcsbw205ghpo=0xb9555000
+mcsbw405glpo=0xb9555000
+mcsbw405gmpo=0xb9555000
+mcsbw405ghpo=0xb9555000
+mcsbw805glpo=0xb9555000
+mcsbw805gmpo=0xb9555000
+mcsbw805ghpo=0xb9555000
+
+swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff
+swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe
+swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3
+swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3
+
+vcodivmode=1
+deadman_to=481500000
+
+ed_thresh2g=-54
+ed_thresh5g=-54
+eu_edthresh2g=-54
+eu_edthresh5g=-54
+ldo1=4
+rawtempsense=0x1ff
+cckPwrIdxCorr=3
+cckTssiDelay=150
+ofdmTssiDelay=150
+txpwr2gAdcScale=1
+txpwr5gAdcScale=1
+dot11b_opts=0x3aa85
+cbfilttype=1
+fdsslevel_ch11=6
+
+# Improved Bluetooth coexistence parameters from Cypress
+btc_mode=1
+btc_params8=0x4e20
+btc_params1=0x7530
+btc_params50=0x972c
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.bin
new file mode 100644
index 000000000..0a9df2a4b
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.clm_blob
new file mode 100644
index 000000000..36b865265
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.bin
new file mode 120000
index 000000000..a8909e119
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.bin
@@ -0,0 +1 @@
+brcmfmac43456-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.clm_blob
new file mode 120000
index 000000000..ec7513b10
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.clm_blob
@@ -0,0 +1 @@
+brcmfmac43456-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.txt
new file mode 120000
index 000000000..94cd555b2
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,4-compute-module.txt
@@ -0,0 +1 @@
+brcmfmac43456-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.bin
new file mode 120000
index 000000000..a8909e119
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.bin
@@ -0,0 +1 @@
+brcmfmac43456-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.clm_blob
new file mode 120000
index 000000000..ec7513b10
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.clm_blob
@@ -0,0 +1 @@
+brcmfmac43456-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.txt
new file mode 120000
index 000000000..94cd555b2
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.raspberrypi,400.txt
@@ -0,0 +1 @@
+brcmfmac43456-sdio.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.txt
new file mode 100644
index 000000000..a34c69167
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43456-sdio.txt
@@ -0,0 +1,97 @@
+# Cloned from bcm94345wlpagb_p2xx.txt
+NVRAMRev=$Rev: 498373 $
+sromrev=11
+vendid=0x14e4
+devid=0x43ab
+manfid=0x2d0
+prodid=0x06e4
+#macaddr=00:90:4c:c5:12:38
+macaddr=b8:27:eb:74:f2:6c
+nocrc=1
+boardtype=0x6e4
+boardrev=0x1304
+
+#XTAL 37.4MHz
+xtalfreq=37400
+
+btc_mode=1
+#------------------------------------------------------
+#boardflags: 5GHz eTR switch by default
+# 2.4GHz eTR switch by default
+# bit1 for btcoex
+boardflags=0x00480201
+boardflags2=0x40800000
+boardflags3=0x44200100
+phycal_tempdelta=15
+rxchain=1
+txchain=1
+aa2g=1
+aa5g=1
+tssipos5g=1
+tssipos2g=1
+femctrl=0
+AvVmid_c0=0,157,1,126,1,126,1,126,1,126
+pa2ga0=-170,5896,-680
+pa2ga1=-156,4032,-547
+pa5ga0=-150,5547,-628,-150,5583,-640,-158,5608,-649,-160,5757,-673
+pa5ga1=-109,3831,-519,-88,3821,-512,-125,3731,-528,-103,3829,-516
+itrsw=1
+pdoffsetcckma0=2
+pdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0
+pdoffset2g40ma0=16
+pdoffset40ma0=0x8888
+pdoffset80ma0=0x8888
+extpagain5g=2
+extpagain2g=2
+tworangetssi2g=1
+tworangetssi5g=1
+# LTECX flags
+# WCI2
+ltecxmux=0
+ltecxpadnum=0x0504
+ltecxfnsel=0x22
+ltecxgcigpio=0x32
+
+maxp2ga0=80
+ofdmlrbw202gpo=0x0022
+dot11agofdmhrbw202gpo=0x4442
+mcsbw202gpo=0x98444422
+mcsbw402gpo=0x98444422
+maxp5ga0=82,82,82,82
+mcsbw205glpo=0xb9555000
+mcsbw205gmpo=0xb9555000
+mcsbw205ghpo=0xb9555000
+mcsbw405glpo=0xb9555000
+mcsbw405gmpo=0xb9555000
+mcsbw405ghpo=0xb9555000
+mcsbw805glpo=0xb9555000
+mcsbw805gmpo=0xb9555000
+mcsbw805ghpo=0xb9555000
+
+swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff
+swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe
+swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3
+swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3
+
+vcodivmode=1
+deadman_to=481500000
+
+ed_thresh2g=-54
+ed_thresh5g=-54
+eu_edthresh2g=-54
+eu_edthresh5g=-54
+ldo1=4
+rawtempsense=0x1ff
+cckPwrIdxCorr=3
+cckTssiDelay=150
+ofdmTssiDelay=150
+txpwr2gAdcScale=1
+txpwr5gAdcScale=1
+dot11b_opts=0x3aa85
+cbfilttype=1
+fdsslevel_ch11=6
+
+# Improved Bluetooth coexistence parameters from Cypress
+btc_mode=1
+btc_params8=0x4e20
+btc_params1=0x7530
diff --git a/package/brcmfmac-firmware/src/brcmfmac4350-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4350-pcie.bin
index 303125197..303125197 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4350-pcie.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4350-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4350c2-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4350c2-pcie.bin
index 256ded123..256ded123 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4350c2-pcie.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4350c2-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.bin
new file mode 120000
index 000000000..083453ec9
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac4354-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.clm_blob
new file mode 120000
index 000000000..cf94fd7ab
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4354-sdio.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac4354-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.bin
new file mode 120000
index 000000000..6cc54b431
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.bin
@@ -0,0 +1 @@
+../cypress/cyfmac4356-pcie.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.clm_blob
new file mode 120000
index 000000000..7a86692d1
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac4356-pcie.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.gpd-win-pocket.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.gpd-win-pocket.txt
new file mode 100644
index 000000000..16254f55a
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-pcie.gpd-win-pocket.txt
@@ -0,0 +1,121 @@
+# SPDX-License-Identifier: GPL-2.0+
+# (C) Copyright 2018 Linaro Ltd
+# NVRAM config file for the Ampak AP6356 4356 WiFi/BT module found on the
+# GPD win / pocket handheld
+aa2g=3
+aa5g=3
+aga0=2
+aga1=2
+agbg0=2
+agbg1=2
+antswitch=0
+boardflags2=0x00802000
+boardflags3=0x0000000a
+boardflags=0x02400201
+boardrev=0x1101
+boardtype=0x073e
+cckbw202gpo=0x0000
+cckbw20ul2gpo=0x0000
+ccode=X2
+devid=0x43a3
+dot11agduphrpo=0x0
+dot11agduplrpo=0x0
+dot11agofdmhrbw202gpo=0x6666
+extpagain2g=2
+extpagain5g=2
+femctrl=10
+macaddr=00:90:4c:c5:12:38
+manfid=0x2d0
+maxp2ga0=80
+maxp2ga1=80
+maxp5ga0=78,78,78,78
+maxp5ga1=78,78,78,78
+mcsbw202gpo=0x99644422
+mcsbw205ghpo=0xdc666663
+mcsbw205glpo=0x88766663
+mcsbw205gmpo=0xd8666663
+mcsbw402gpo=0x99644422
+mcsbw405ghpo=0xaa666663
+mcsbw405glpo=0x88666663
+mcsbw405gmpo=0x88666663
+mcsbw805ghpo=0xdd666665
+mcsbw805glpo=0xbb666665
+mcsbw805gmpo=0xcc666665
+mcslr5ghpo=0x0000
+mcslr5glpo=0x0000
+mcslr5gmpo=0x0000
+nocrc=1
+ofdmlrbw202gpo=0x0022
+otpimagesize=502
+pa2ga0=-147,6192,-705
+pa2ga1=-161,6041,-701
+pa5ga0=-194,6069,-739,-188,6137,-743,-185,5931,-725,-171,5898,-715
+pa5ga1=-190,6248,-757,-190,6275,-759,-190,6225,-757,-184,6131,-746
+paprdis=0
+pdgain2g=4
+pdgain5g=4
+pdoffset40ma0=0x0000
+pdoffset40ma1=0x0000
+pdoffset80ma0=0x0000
+pdoffset80ma1=0x0000
+pdoffsetcckma0=0x4
+pdoffsetcckma1=0x4
+phycal_tempdelta=255
+rawtempsense=0x1ff
+regrev=1
+rssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8
+rssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8
+rssicorrnorm_c0=4,4
+rssicorrnorm_c1=4,4
+rxchain=3
+rxgains2gelnagaina0=0
+rxgains2gelnagaina1=0
+rxgains2gtrelnabypa0=0
+rxgains2gtrelnabypa1=0
+rxgains2gtrisoa0=7
+rxgains2gtrisoa1=7
+rxgains5gelnagaina0=0
+rxgains5gelnagaina1=0
+rxgains5ghelnagaina0=0
+rxgains5ghelnagaina1=0
+rxgains5ghtrelnabypa0=0
+rxgains5ghtrelnabypa1=0
+rxgains5ghtrisoa0=12
+rxgains5ghtrisoa1=11
+rxgains5gmelnagaina0=0
+rxgains5gmelnagaina1=0
+rxgains5gmtrelnabypa0=0
+rxgains5gmtrelnabypa1=0
+rxgains5gmtrisoa0=13
+rxgains5gmtrisoa1=11
+rxgains5gtrelnabypa0=0
+rxgains5gtrelnabypa1=0
+rxgains5gtrisoa0=11
+rxgains5gtrisoa1=10
+sb20in40hrpo=0x0
+sb20in40lrpo=0x0
+sb20in80and160hr5ghpo=0x0
+sb20in80and160hr5glpo=0x0
+sb20in80and160hr5gmpo=0x0
+sb20in80and160lr5ghpo=0x0
+sb20in80and160lr5glpo=0x0
+sb20in80and160lr5gmpo=0x0
+sb40and80hr5ghpo=0x0
+sb40and80hr5glpo=0x0
+sb40and80hr5gmpo=0x0
+sb40and80lr5ghpo=0x0
+sb40and80lr5glpo=0x0
+sb40and80lr5gmpo=0x0
+sromrev=11
+subband5gver=0x4
+tempoffset=255
+temps_hysteresis=15
+temps_period=15
+tempthresh=255
+tssipos2g=1
+tssipos5g=1
+tworangetssi2g=0
+tworangetssi5g=0
+txchain=3
+vendid=0x14e4
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.AP6356S.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.AP6356S.txt
new file mode 100644
index 000000000..4b38c26e4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.AP6356S.txt
@@ -0,0 +1,122 @@
+aa2g=3
+aa5g=3
+aga0=2
+aga1=2
+agbg0=2
+agbg1=2
+antswitch=0
+boardflags=0x02400201
+boardflags2=0x00802000
+boardflags3=0x0000010a
+boardrev=0x1121
+boardtype=0x073e
+cckbw202gpo=0x1222
+cckbw20ul2gpo=0x0000
+ccode=0x5855
+devid=0x43a3
+dot11agduphrpo=0x0
+dot11agduplrpo=0x0
+dot11agofdmhrbw202gpo=0x4444
+extpagain2g=2
+extpagain5g=2
+femctrl=10
+macaddr=00:90:4c:1a:10:01
+manfid=0x2d0
+maxp2ga0=72
+maxp2ga1=71
+maxp5ga0=69,70,69,68
+maxp5ga1=67,67,67,67
+mcsbw202gpo=0x9E644422
+mcsbw205ghpo=0xCC986663
+mcsbw205glpo=0xEEA86661
+mcsbw205gmpo=0xAAA86663
+mcsbw402gpo=0xE9744424
+mcsbw405ghpo=0xEEA86663
+mcsbw405glpo=0xEEB86663
+mcsbw405gmpo=0xECB86663
+mcsbw805ghpo=0xEEA86663
+mcsbw805glpo=0xEEB86663
+mcsbw805gmpo=0xEEA86663
+mcslr5ghpo=0x0000
+mcslr5glpo=0x0000
+mcslr5gmpo=0x0000
+muxenab=0x10
+nocrc=1
+ofdmlrbw202gpo=0x0022
+otpimagesize=502
+pa2ga0=-135,5769,-647
+pa2ga1=-143,6023,-677
+pa5ga0=-183,5746,-697,-172,5801,-685,-176,5707,-680,-180,5445,-659
+pa5ga1=-186,5543,-669,-193,5506,-675,-210,5282,-661,-199,5367,-665
+paprdis=0
+pdgain2g=4
+pdgain5g=4
+pdoffset40ma0=0x0000
+pdoffset40ma1=0x0000
+pdoffset80ma0=0x0000
+pdoffset80ma1=0x0000
+pdoffsetcckma0=0x4
+pdoffsetcckma1=0x4
+phycal_tempdelta=255
+rawtempsense=0x1ff
+regrev=1
+rssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8
+rssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8
+rssicorrnorm_c0=4,4
+rssicorrnorm_c1=4,4
+rxchain=3
+rxgains2gelnagaina0=0
+rxgains2gelnagaina1=0
+rxgains2gtrelnabypa0=0
+rxgains2gtrelnabypa1=0
+rxgains2gtrisoa0=7
+rxgains2gtrisoa1=7
+rxgains5gelnagaina0=0
+rxgains5gelnagaina1=0
+rxgains5ghelnagaina0=0
+rxgains5ghelnagaina1=0
+rxgains5ghtrelnabypa0=0
+rxgains5ghtrelnabypa1=0
+rxgains5ghtrisoa0=12
+rxgains5ghtrisoa1=11
+rxgains5gmelnagaina0=0
+rxgains5gmelnagaina1=0
+rxgains5gmtrelnabypa0=0
+rxgains5gmtrelnabypa1=0
+rxgains5gmtrisoa0=13
+rxgains5gmtrisoa1=11
+rxgains5gtrelnabypa0=0
+rxgains5gtrelnabypa1=0
+rxgains5gtrisoa0=11
+rxgains5gtrisoa1=10
+sb20in40hrpo=0x0
+sb20in40lrpo=0x0
+sb20in80and160hr5ghpo=0x0
+sb20in80and160hr5glpo=0x0
+sb20in80and160hr5gmpo=0x0
+sb20in80and160lr5ghpo=0x0
+sb20in80and160lr5glpo=0x0
+sb20in80and160lr5gmpo=0x0
+sb40and80hr5ghpo=0x0
+sb40and80hr5glpo=0x0
+sb40and80hr5gmpo=0x0
+sb40and80lr5ghpo=0x0
+sb40and80lr5glpo=0x0
+sb40and80lr5gmpo=0x0
+sromrev=11
+subband5gver=0x4
+swctrlmap_2g=0x00001040,0x00004010,0x00004010,0x200010,0xff
+swctrlmap_5g=0x00000202,0x00000101,0x00000101,0x000000,0x47
+swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000
+swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000
+tempoffset=255
+temps_hysteresis=15
+temps_period=15
+tempthresh=255
+tssipos2g=1
+tssipos5g=1
+tworangetssi2g=0
+tworangetssi5g=0
+txchain=3
+vendid=0x14e4
+xtalfreq=37400
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.bin
new file mode 120000
index 000000000..53115e0cc
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac4356-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.clm_blob
new file mode 120000
index 000000000..bac41e636
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac4356-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.firefly,firefly-rk3399.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.firefly,firefly-rk3399.txt
new file mode 120000
index 000000000..dffd0158f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.firefly,firefly-rk3399.txt
@@ -0,0 +1 @@
+brcmfmac4356-sdio.AP6356S.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.khadas,vim2.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.khadas,vim2.txt
new file mode 120000
index 000000000..dffd0158f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.khadas,vim2.txt
@@ -0,0 +1 @@
+brcmfmac4356-sdio.AP6356S.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.txt
new file mode 100644
index 000000000..fca63053f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.txt
@@ -0,0 +1,126 @@
+# Sample variables file for BCM94356Z NGFF 22x30mm iPA, iLNA board with PCIe for production package
+NVRAMRev=$Rev: 492104 $
+#4356 chip = 4354 A2 chip
+sromrev=11
+boardrev=0x1102
+boardtype=0x073e
+boardflags=0x02400201
+#0x2000 enable 2G spur WAR
+boardflags2=0x00802000
+boardflags3=0x0000000a
+#boardflags3 0x00000100 /* to read swctrlmap from nvram*/
+#define BFL3_5G_SPUR_WAR 0x00080000 /* enable spur WAR in 5G band */
+#define BFL3_AvVim 0x40000000 /* load AvVim from nvram */
+macaddr=00:90:4c:1a:10:01
+ccode=0x5854
+regrev=205
+antswitch=0
+pdgain5g=4
+pdgain2g=4
+tworangetssi2g=0
+tworangetssi5g=0
+paprdis=0
+femctrl=10
+vendid=0x14e4
+devid=0x43ec
+manfid=0x2d0
+#prodid=0x052e
+nocrc=1
+otpimagesize=502
+xtalfreq=37400
+rxgains2gelnagaina0=0
+rxgains2gtrisoa0=7
+rxgains2gtrelnabypa0=0
+rxgains5gelnagaina0=0
+rxgains5gtrisoa0=11
+rxgains5gtrelnabypa0=0
+rxgains5gmelnagaina0=0
+rxgains5gmtrisoa0=13
+rxgains5gmtrelnabypa0=0
+rxgains5ghelnagaina0=0
+rxgains5ghtrisoa0=12
+rxgains5ghtrelnabypa0=0
+rxgains2gelnagaina1=0
+rxgains2gtrisoa1=7
+rxgains2gtrelnabypa1=0
+rxgains5gelnagaina1=0
+rxgains5gtrisoa1=10
+rxgains5gtrelnabypa1=0
+rxgains5gmelnagaina1=0
+rxgains5gmtrisoa1=11
+rxgains5gmtrelnabypa1=0
+rxgains5ghelnagaina1=0
+rxgains5ghtrisoa1=11
+rxgains5ghtrelnabypa1=0
+rxchain=3
+txchain=3
+aa2g=3
+aa5g=3
+agbg0=2
+agbg1=2
+aga0=2
+aga1=2
+tssipos2g=1
+extpagain2g=2
+tssipos5g=1
+extpagain5g=2
+tempthresh=255
+tempoffset=255
+rawtempsense=0x1ff
+pa2ga0=-147,6192,-705
+pa2ga1=-161,6041,-701
+pa5ga0=-194,6069,-739,-188,6137,-743,-185,5931,-725,-171,5898,-715
+pa5ga1=-190,6248,-757,-190,6275,-759,-190,6225,-757,-184,6131,-746
+subband5gver=0x4
+pdoffsetcckma0=0x4
+pdoffsetcckma1=0x4
+pdoffset40ma0=0x0000
+pdoffset80ma0=0x0000
+pdoffset40ma1=0x0000
+pdoffset80ma1=0x0000
+maxp2ga0=76
+maxp5ga0=74,74,74,74
+maxp2ga1=76
+maxp5ga1=74,74,74,74
+cckbw202gpo=0x0000
+cckbw20ul2gpo=0x0000
+mcsbw202gpo=0x99644422
+mcsbw402gpo=0x99644422
+dot11agofdmhrbw202gpo=0x6666
+ofdmlrbw202gpo=0x0022
+mcsbw205glpo=0x88766663
+mcsbw405glpo=0x88666663
+mcsbw805glpo=0xbb666665
+mcsbw205gmpo=0xd8666663
+mcsbw405gmpo=0x88666663
+mcsbw805gmpo=0xcc666665
+mcsbw205ghpo=0xdc666663
+mcsbw405ghpo=0xaa666663
+mcsbw805ghpo=0xdd666665
+mcslr5glpo=0x0000
+mcslr5gmpo=0x0000
+mcslr5ghpo=0x0000
+sb20in40hrpo=0x0
+sb20in80and160hr5glpo=0x0
+sb40and80hr5glpo=0x0
+sb20in80and160hr5gmpo=0x0
+sb40and80hr5gmpo=0x0
+sb20in80and160hr5ghpo=0x0
+sb40and80hr5ghpo=0x0
+sb20in40lrpo=0x0
+sb20in80and160lr5glpo=0x0
+sb40and80lr5glpo=0x0
+sb20in80and160lr5gmpo=0x0
+sb40and80lr5gmpo=0x0
+sb20in80and160lr5ghpo=0x0
+sb40and80lr5ghpo=0x0
+dot11agduphrpo=0x0
+dot11agduplrpo=0x0
+phycal_tempdelta=255
+temps_period=15
+temps_hysteresis=15
+rssicorrnorm_c0=4,4
+rssicorrnorm_c1=4,4
+rssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8
+rssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8
+
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.vamrs,rock960.txt b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.vamrs,rock960.txt
new file mode 120000
index 000000000..dffd0158f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4356-sdio.vamrs,rock960.txt
@@ -0,0 +1 @@
+brcmfmac4356-sdio.AP6356S.txt \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcmfmac43569.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43569.bin
index 8323536a7..8323536a7 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43569.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43569.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.bin
new file mode 120000
index 000000000..b807c17a4
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.bin
@@ -0,0 +1 @@
+../cypress/cyfmac43570-pcie.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.clm_blob
new file mode 120000
index 000000000..3290c6c10
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43570-pcie.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac43570-pcie.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4358-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4358-pcie.bin
new file mode 100644
index 000000000..17bdcaf98
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4358-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43602-pcie.ap.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43602-pcie.ap.bin
index b4a589d5a..b4a589d5a 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43602-pcie.ap.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43602-pcie.ap.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43602-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac43602-pcie.bin
index 488b4c04a..488b4c04a 100644
--- a/package/brcmfmac-firmware/src/brcmfmac43602-pcie.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac43602-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4366b-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4366b-pcie.bin
new file mode 100644
index 000000000..7df6d1805
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4366b-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4366c-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4366c-pcie.bin
new file mode 100644
index 000000000..fcd19ac1b
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4366c-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4371-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4371-pcie.bin
index 8b3a51b91..8b3a51b91 100644
--- a/package/brcmfmac-firmware/src/brcmfmac4371-pcie.bin
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4371-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.bin
new file mode 120000
index 000000000..fb5b9c59f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.bin
@@ -0,0 +1 @@
+../cypress/cyfmac4373-sdio.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.clm_blob
new file mode 120000
index 000000000..be67c89aa
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4373-sdio.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac4373-sdio.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac4373.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac4373.bin
new file mode 100644
index 000000000..e85d3fd79
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac4373.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.bin b/package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.bin
new file mode 120000
index 000000000..01e331714
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.bin
@@ -0,0 +1 @@
+../cypress/cyfmac54591-pcie.bin \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.clm_blob b/package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.clm_blob
new file mode 120000
index 000000000..30efcb474
--- /dev/null
+++ b/package/brcmfmac-firmware/src/brcm/brcmfmac54591-pcie.clm_blob
@@ -0,0 +1 @@
+../cypress/cyfmac54591-pcie.clm_blob \ No newline at end of file
diff --git a/package/brcmfmac-firmware/src/brcmfmac43241b0-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac43241b0-sdio.bin
deleted file mode 100644
index 729b89421..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43241b0-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43340-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac43340-sdio.bin
deleted file mode 100644
index 368b0a150..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43340-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43362-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac43362-sdio.bin
deleted file mode 100644
index c11dfb2a6..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43362-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4339-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac4339-sdio.bin
deleted file mode 100644
index 8d1b3819a..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac4339-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43430-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac43430-sdio.bin
deleted file mode 100644
index 4b2945eac..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43430-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt b/package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt
deleted file mode 100644
index 3d917a7fd..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43430-sdio.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-# NVRAM file for BCM943430WLSELG
-# 2.4 GHz, 20 MHz BW mode
-
-# The following parameter values are just placeholders, need to be updated.
-manfid=0x2d0
-prodid=0x0726
-vendid=0x14e4
-devid=0x43e2
-boardtype=0x0726
-boardrev=0x1202
-boardnum=22
-macaddr=00:90:4c:c5:12:38
-sromrev=11
-boardflags=0x00404201
-boardflags3=0x08000000
-xtalfreq=37400
-#xtalfreq=19200
-nocrc=1
-ag0=255
-aa2g=1
-ccode=ALL
-
-pa0itssit=0x20
-extpagain2g=0
-
-#PA parameters for 2.4GHz, measured at CHIP OUTPUT
-pa2ga0=-168,7161,-820
-AvVmid_c0=0x0,0xc8
-cckpwroffset0=5
-
-# PPR params
-maxp2ga0=84
-txpwrbckof=6
-cckbw202gpo=0
-legofdmbw202gpo=0x66111111
-mcsbw202gpo=0x77711111
-propbw202gpo=0xdd
-
-# OFDM IIR :
-ofdmdigfilttype=18
-ofdmdigfilttypebe=18
-# PAPD mode:
-papdmode=1
-papdvalidtest=1
-pacalidx2g=32
-papdepsoffset=-36
-papdendidx=61
-
-il0macaddr=00:90:4c:c5:12:38
-wl0id=0x431b
-
-deadman_to=0xffffffff
-# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG
-muxenab=0x1
-# CLDO PWM voltage settings - 0x4 - 1.1 volt
-#cldo_pwm=0x4
-
-#VCO freq 326.4MHz
-spurconfig=0x3
diff --git a/package/brcmfmac-firmware/src/brcmfmac43455-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac43455-sdio.bin
deleted file mode 100644
index 94f2add70..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43455-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43455-sdio.clm_blob b/package/brcmfmac-firmware/src/brcmfmac43455-sdio.clm_blob
deleted file mode 100644
index 3b9b5bdc1..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43455-sdio.clm_blob
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43455-sdio.txt b/package/brcmfmac-firmware/src/brcmfmac43455-sdio.txt
deleted file mode 100644
index 260c9299c..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43455-sdio.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-# Cloned from bcm94345wlpagb_p2xx.txt
-NVRAMRev=$Rev: 498373 $
-sromrev=11
-vendid=0x14e4
-devid=0x43ab
-manfid=0x2d0
-prodid=0x06e4
-#macaddr=00:90:4c:c5:12:38
-macaddr=b8:27:eb:74:f2:6c
-nocrc=1
-boardtype=0x6e4
-boardrev=0x1304
-
-#XTAL 37.4MHz
-xtalfreq=37400
-
-btc_mode=1
-#------------------------------------------------------
-#boardflags: 5GHz eTR switch by default
-# 2.4GHz eTR switch by default
-# bit1 for btcoex
-boardflags=0x00480201
-boardflags2=0x40800000
-boardflags3=0x48200100
-phycal_tempdelta=15
-rxchain=1
-txchain=1
-aa2g=1
-aa5g=1
-tssipos5g=1
-tssipos2g=1
-femctrl=0
-AvVmid_c0=1,165,2,100,2,100,2,100,2,100
-pa2ga0=-129,6525,-718
-pa2ga1=-149,4408,-601
-pa5ga0=-185,6836,-815,-186,6838,-815,-184,6859,-815,-184,6882,-818
-pa5ga1=-202,4285,-574,-201,4312,-578,-196,4391,-586,-201,4294,-575
-itrsw=1
-pdoffsetcckma0=2
-pdoffset2gperchan=0,-2,1,0,1,0,1,1,1,0,0,-1,-1,0
-pdoffset2g40ma0=16
-pdoffset40ma0=0x8888
-pdoffset80ma0=0x8888
-extpagain5g=2
-extpagain2g=2
-tworangetssi2g=1
-tworangetssi5g=1
-# LTECX flags
-# WCI2
-ltecxmux=0
-ltecxpadnum=0x0504
-ltecxfnsel=0x22
-ltecxgcigpio=0x32
-
-maxp2ga0=80
-ofdmlrbw202gpo=0x0022
-dot11agofdmhrbw202gpo=0x4442
-mcsbw202gpo=0x98444422
-mcsbw402gpo=0x98444422
-maxp5ga0=82,82,82,82
-mcsbw205glpo=0xb9555000
-mcsbw205gmpo=0xb9555000
-mcsbw205ghpo=0xb9555000
-mcsbw405glpo=0xb9555000
-mcsbw405gmpo=0xb9555000
-mcsbw405ghpo=0xb9555000
-mcsbw805glpo=0xb9555000
-mcsbw805gmpo=0xb9555000
-mcsbw805ghpo=0xb9555000
-
-swctrlmap_2g=0x00000000,0x00000000,0x00000000,0x010000,0x3ff
-swctrlmap_5g=0x00100010,0x00200020,0x00200020,0x010000,0x3fe
-swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x3
-swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x3
-
-vcodivmode=1
-deadman_to=481500000
-
-ed_thresh2g=-54
-ed_thresh5g=-54
-eu_edthresh2g=-54
-eu_edthresh5g=-54
-ldo1=4
-rawtempsense=0x1ff
-cckPwrIdxCorr=3
-cckTssiDelay=150
-ofdmTssiDelay=150
-txpwr2gAdcScale=1
-txpwr5gAdcScale=1
-dot11b_opts=0x3aa85
-cbfilttype=1
-fdsslevel_ch11=6
diff --git a/package/brcmfmac-firmware/src/brcmfmac4354-sdio.bin b/package/brcmfmac-firmware/src/brcmfmac4354-sdio.bin
deleted file mode 100644
index 48afad606..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac4354-sdio.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4356-pcie.bin b/package/brcmfmac-firmware/src/brcmfmac4356-pcie.bin
deleted file mode 100644
index 9ed885214..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac4356-pcie.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac43570-pcie.bin b/package/brcmfmac-firmware/src/brcmfmac43570-pcie.bin
deleted file mode 100644
index c0c82d005..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac43570-pcie.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/brcmfmac4366b-pcie.bin b/package/brcmfmac-firmware/src/brcmfmac4366b-pcie.bin
deleted file mode 100644
index 6fc932ed9..000000000
--- a/package/brcmfmac-firmware/src/brcmfmac4366b-pcie.bin
+++ /dev/null
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.bin
new file mode 100644
index 000000000..7a78e15cb
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.clm_blob
new file mode 100644
index 000000000..59f09f6a7
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43012-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43340-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43340-sdio.bin
new file mode 100644
index 000000000..dcf894beb
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43340-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43362-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43362-sdio.bin
new file mode 100644
index 000000000..51d64d63e
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43362-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4339-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac4339-sdio.bin
new file mode 100644
index 000000000..43e86ca2e
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4339-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.bin
new file mode 100644
index 000000000..7a35578b9
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.clm_blob
new file mode 100644
index 000000000..d93449f28
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43430-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-minimal.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-minimal.bin
new file mode 100644
index 000000000..cc9768bde
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-minimal.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-standard.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-standard.bin
new file mode 100644
index 000000000..1e7f61272
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio-standard.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.bin
new file mode 100644
index 000000000..1e7f61272
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.clm_blob
new file mode 100644
index 000000000..c905a503e
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43455-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.bin
new file mode 100644
index 000000000..1e123ba6c
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.clm_blob
new file mode 100644
index 000000000..86d66e367
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4354-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.bin b/package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.bin
new file mode 100644
index 000000000..8904edc24
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.clm_blob
new file mode 100644
index 000000000..c6ff1701f
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4356-pcie.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.bin
new file mode 100644
index 000000000..63896b607
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.clm_blob
new file mode 100644
index 000000000..35ce3751b
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4356-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.bin b/package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.bin
new file mode 100644
index 000000000..97898b548
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.clm_blob
new file mode 100644
index 000000000..f14fd9244
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac43570-pcie.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.bin b/package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.bin
new file mode 100644
index 000000000..00ecde003
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.clm_blob
new file mode 100644
index 000000000..9d0299772
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac4373-sdio.clm_blob
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.bin b/package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.bin
new file mode 100644
index 000000000..70ef9f9e0
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.bin
Binary files differ
diff --git a/package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.clm_blob b/package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.clm_blob
new file mode 100644
index 000000000..61f0d562a
--- /dev/null
+++ b/package/brcmfmac-firmware/src/cypress/cyfmac54591-pcie.clm_blob
Binary files differ
diff --git a/package/btrfs-progs/Makefile b/package/btrfs-progs/Makefile
new file mode 100644
index 000000000..585b02574
--- /dev/null
+++ b/package/btrfs-progs/Makefile
@@ -0,0 +1,37 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= btrfs-progs
+PKG_VERSION:= 6.1.3
+PKG_RELEASE:= 1
+PKG_HASH:= d37fc9ec4fa5778b20aa7548fe706eb3a300338c1473318271ae54024dac7167
+PKG_DESCR:= btrfs progs
+PKG_DEPENDS:= zstd
+PKG_BUILDDEP:= zstd
+PKG_KDEPENDS:= btrfs-fs
+PKG_SECTION:= sys/fs
+PKG_SITES:= https://mirrors.edge.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/
+
+DISTFILES:= $(PKG_NAME)-v$(PKG_VERSION).tar.xz
+WRKDIST= $(WRKDIR)/$(PKG_NAME)-v$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,BTRFS_PROGS,btrfs-progs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+CONFIGURE_ARGS+= --disable-backtrace \
+ --disable-documentation \
+ --disable-python \
+ --disable-libudev
+
+btrfs-progs-install:
+ $(INSTALL_DIR) $(IDIR_BTRFS_PROGS)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libbtrfs*.so* \
+ $(IDIR_BTRFS_PROGS)/usr/lib
+ $(INSTALL_DIR) $(IDIR_BTRFS_PROGS)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/* \
+ $(IDIR_BTRFS_PROGS)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/busybox/Config.in.manual b/package/busybox/Config.in.manual
index 80554efd4..48c6212e0 100644
--- a/package/busybox/Config.in.manual
+++ b/package/busybox/Config.in.manual
@@ -10,219 +10,6 @@ config ADK_PACKAGE_BUSYBOX
WWW: http://www.busybox.net
-choice
-prompt "Choose predefined set of applets"
-depends on ADK_PACKAGE_BUSYBOX
-default ADK_PACKAGE_BUSYBOX_MINIMAL if !ADK_TARGET_WITH_MMU
-
-config ADK_PACKAGE_BUSYBOX_DEFAULT
- bool "activate standard set of applets"
- select BUSYBOX_AWK
- select BUSYBOX_BASENAME
- select BUSYBOX_CLEAR
- select BUSYBOX_CMP
- select BUSYBOX_CAT
- select BUSYBOX_CAL
- select BUSYBOX_CHGRP
- select BUSYBOX_CHMOD
- select BUSYBOX_CHOWN
- select BUSYBOX_CHROOT
- select BUSYBOX_CP
- select BUSYBOX_CUT
- select BUSYBOX_DATE
- select BUSYBOX_DD
- select BUSYBOX_DF
- select BUSYBOX_DIFF
- select BUSYBOX_DIRNAME
- select BUSYBOX_DU
- select BUSYBOX_ECHO
- select BUSYBOX_EGREP if !BUSYBOX_DISABLE_GREP
- select BUSYBOX_ENV
- select BUSYBOX_EXPR
- select BUSYBOX_FDISK if !BUSYBOX_DISABLE_FDISK
- select BUSYBOX_FIND if !BUSYBOX_DISABLE_FIND
- select BUSYBOX_GREP if !BUSYBOX_DISABLE_GREP
- select BUSYBOX_GROUPS
- select BUSYBOX_GUNZIP
- select BUSYBOX_GZIP
- select BUSYBOX_HALT
- select BUSYBOX_HEAD
- select BUSYBOX_ID
- select BUSYBOX_INIT if ADK_RUNTIME_INIT_SYSV
- select BUSYBOX_LESS if !BUSYBOX_DISABLE_LESS
- select BUSYBOX_LN
- select BUSYBOX_LOSETUP
- select BUSYBOX_LS
- select BUSYBOX_MD5SUM
- select BUSYBOX_MKDIR
- select BUSYBOX_MKFIFO
- select BUSYBOX_MKNOD
- select BUSYBOX_MKTEMP
- select BUSYBOX_MV
- select BUSYBOX_NC
- select BUSYBOX_PASSWD
- select BUSYBOX_PRINTF
- select BUSYBOX_PWD
- select BUSYBOX_RDATE if !BUSYBOX_DISABLE_RDATE
- select BUSYBOX_READLINK
- select BUSYBOX_RESET
- select BUSYBOX_RFKILL if !BUSYBOX_DISABLE_RFKILL
- select BUSYBOX_RM
- select BUSYBOX_RMDIR
- select BUSYBOX_RUN_PARTS
- select BUSYBOX_SED if !BUSYBOX_DISABLE_SED
- select BUSYBOX_SEQ
- select BUSYBOX_SLEEP
- select BUSYBOX_SORT
- select BUSYBOX_FEATURE_SORT_BIG
- select BUSYBOX_STAT
- select BUSYBOX_STRINGS
- select BUSYBOX_SU
- select BUSYBOX_SYNC
- select BUSYBOX_TAIL
- select BUSYBOX_FEATURE_FANCY_TAIL
- select BUSYBOX_TAR if !BUSYBOX_DISABLE_TAR
- select BUSYBOX_TEE
- select BUSYBOX_TEST
- select BUSYBOX_TIME
- select BUSYBOX_TOUCH
- select BUSYBOX_TOP
- select BUSYBOX_TR
- select BUSYBOX_TRUE
- select BUSYBOX_UNAME
- select BUSYBOX_VI
- select BUSYBOX_WC
- select BUSYBOX_WHOAMI
- select BUSYBOX_WHO
- select BUSYBOX_WHICH
- select BUSYBOX_XARGS
-
-config ADK_PACKAGE_BUSYBOX_MINIMAL
- bool "activate minimal set of applets"
- select BUSYBOX_AWK
- select BUSYBOX_BASENAME
- select BUSYBOX_CAT
- select BUSYBOX_CHGRP
- select BUSYBOX_CHMOD
- select BUSYBOX_CHOWN
- select BUSYBOX_CHROOT
- select BUSYBOX_CMP
- select BUSYBOX_CP
- select BUSYBOX_CUT
- select BUSYBOX_DATE
- select BUSYBOX_DD
- select BUSYBOX_DF
- select BUSYBOX_DIRNAME
- select BUSYBOX_DIFF
- select BUSYBOX_DU
- select BUSYBOX_ECHO
- select BUSYBOX_ENV
- select BUSYBOX_EXPR
- select BUSYBOX_FIND if !BUSYBOX_DISABLE_FIND
- select BUSYBOX_GREP if !BUSYBOX_DISABLE_GREP
- select BUSYBOX_HALT
- select BUSYBOX_HEAD
- select BUSYBOX_ID
- select BUSYBOX_INIT
- select BUSYBOX_LN
- select BUSYBOX_LS
- select BUSYBOX_MKDIR
- select BUSYBOX_MV
- select BUSYBOX_PRINTF
- select BUSYBOX_PWD
- select BUSYBOX_RM
- select BUSYBOX_READLINK
- select BUSYBOX_RUN_PARTS
- select BUSYBOX_SED if !BUSYBOX_DISABLE_SED
- select BUSYBOX_SORT
- select BUSYBOX_TAIL
- select BUSYBOX_FEATURE_FANCY_TAIL
- select BUSYBOX_TEE
- select BUSYBOX_TEST
- select BUSYBOX_TOUCH
- select BUSYBOX_TRUE
- select BUSYBOX_UNAME
- select BUSYBOX_VI
- select BUSYBOX_WHICH
- select BUSYBOX_WHOAMI
-
-config ADK_PACKAGE_BUSYBOX_ALL
- bool "activate all applets"
- select BUSYBOX_AWK
- select BUSYBOX_BASENAME
- select BUSYBOX_CAL
- select BUSYBOX_CAT
- select BUSYBOX_CHGRP
- select BUSYBOX_CHMOD
- select BUSYBOX_CHOWN
- select BUSYBOX_CHROOT
- select BUSYBOX_CLEAR
- select BUSYBOX_CMP
- select BUSYBOX_CP
- select BUSYBOX_CUT
- select BUSYBOX_DATE
- select BUSYBOX_DD
- select BUSYBOX_DESKTOP
- select BUSYBOX_DF
- select BUSYBOX_DIFF if !BUSYBOX_DISABLE_DIFF
- select BUSYBOX_DIRNAME
- select BUSYBOX_DU
- select BUSYBOX_ECHO
- select BUSYBOX_EGREP if !BUSYBOX_DISABLE_GREP
- select BUSYBOX_ENV
- select BUSYBOX_EXPR
- select BUSYBOX_FDISK if !BUSYBOX_DISABLE_FDISK
- select BUSYBOX_FIND if !BUSYBOX_DISABLE_FIND
- select BUSYBOX_FEATURE_UTMP
- select BUSYBOX_GREP if !BUSYBOX_DISABLE_GREP
- select BUSYBOX_GROUPS
- select BUSYBOX_GUNZIP
- select BUSYBOX_GZIP
- select BUSYBOX_HALT
- select BUSYBOX_HEAD
- select BUSYBOX_ID
- select BUSYBOX_INIT if ADK_RUNTIME_INIT_SYSV
- select BUSYBOX_LESS if !BUSYBOX_DISABLE_LESS
- select BUSYBOX_LN
- select BUSYBOX_LS
- select BUSYBOX_MD5SUM
- select BUSYBOX_MKDIR
- select BUSYBOX_MKFIFO
- select BUSYBOX_MKNOD
- select BUSYBOX_MKTEMP
- select BUSYBOX_MV
- select BUSYBOX_PRINTF
- select BUSYBOX_PWD
- select BUSYBOX_READLINK
- select BUSYBOX_RESET
- select BUSYBOX_RUN_PARTS
- select BUSYBOX_RM
- select BUSYBOX_SED if !BUSYBOX_DISABLE_SED
- select BUSYBOX_SLEEP
- select BUSYBOX_SORT
- select BUSYBOX_STAT
- select BUSYBOX_STRINGS
- select BUSYBOX_SU
- select BUSYBOX_SYNC
- select BUSYBOX_TAIL
- select BUSYBOX_TAR if !BUSYBOX_DISABLE_TAR
- select BUSYBOX_TEE
- select BUSYBOX_FEATURE_FANCY_TAIL
- select BUSYBOX_TRUE
- select BUSYBOX_TEST
- select BUSYBOX_TIME
- select BUSYBOX_TOUCH
- select BUSYBOX_TR
- select BUSYBOX_UNAME
- select BUSYBOX_VI
- select BUSYBOX_WC
- select BUSYBOX_WHICH
- select BUSYBOX_WHO
- select BUSYBOX_WHOAMI
- select BUSYBOX_XARGS
-
-endchoice
-
config ADK_PACKAGE_BUSYBOX_HIDE
bool "hide packages provided by busybox applets"
depends on ADK_PACKAGE_BUSYBOX
diff --git a/package/busybox/Makefile b/package/busybox/Makefile
index 5aad49e2f..78b76ead5 100644
--- a/package/busybox/Makefile
+++ b/package/busybox/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= busybox
-PKG_VERSION:= 1.33.0
+PKG_VERSION:= 1.36.1
PKG_RELEASE:= 1
-PKG_HASH:= d568681c91a85edc6710770cebc1e80e042ad74d305b5c2e6d57a5f3de3b8fbd
+PKG_HASH:= b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314
PKG_DESCR:= core utilities for embedded systems
PKG_SECTION:= base/apps
PKG_URL:= http://www.busybox.net/
@@ -69,7 +69,6 @@ do-build:
do-install:
PATH='$(HOST_PATH)' $(MAKE) ${BB_MAKE_FLAGS} -C ${WRKBUILD} install $(MAKE_TRACE)
$(CP) $(WRKINST)/* $(IDIR_BUSYBOX)/
-ifeq ($(ADK_RUNTIME_INIT_SYSTEMD),)
ifeq ($(BUSYBOX_IFUP),y)
$(INSTALL_DIR) $(IDIR_BUSYBOX)/etc/init.d
ifeq ($(ADK_RUNTIME_WAIT_FOR_ETHERNET),y)
@@ -78,7 +77,6 @@ else
$(INSTALL_BIN) ./files/network $(IDIR_BUSYBOX)/etc/init.d/network
endif
endif
-endif
ifeq ($(ADK_DEBUG),y)
${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
$(IDIR_BUSYBOX)/bin/busybox
diff --git a/package/busybox/config/Config.in b/package/busybox/config/Config.in
index 6f19502f4..d5cbed6a5 100644
--- a/package/busybox/config/Config.in
+++ b/package/busybox/config/Config.in
@@ -371,7 +371,7 @@ config BUSYBOX_STATIC
config BUSYBOX_PIE
bool "Build position independent executable"
- default n
+ default y if !ADK_TARGET_WITH_MMU && ADK_TARGET_BINFMT_ELF
depends on !BUSYBOX_STATIC
help
Hardened code option. PIE binaries are loaded at a different
@@ -382,7 +382,7 @@ config BUSYBOX_PIE
config BUSYBOX_NOMMU
bool "Force NOMMU build"
- default n
+ default y if !ADK_TARGET_WITH_MMU
help
Busybox tries to detect whether architecture it is being
built against supports MMU or not. If this detection fails,
diff --git a/package/busybox/config/archival/Config.in b/package/busybox/config/archival/Config.in
index f2788041a..fe68eeb18 100644
--- a/package/busybox/config/archival/Config.in
+++ b/package/busybox/config/archival/Config.in
@@ -204,6 +204,20 @@ config BUSYBOX_FEATURE_CPIO_P
depends on BUSYBOX_FEATURE_CPIO_O
help
Passthrough mode. Rarely used.
+
+config BUSYBOX_FEATURE_CPIO_IGNORE_DEVNO
+ bool "Support --ignore-devno like GNU cpio"
+ default y
+ depends on BUSYBOX_FEATURE_CPIO_O && BUSYBOX_LONG_OPTS
+ help
+ Optionally ignore device numbers when creating archives.
+
+config BUSYBOX_FEATURE_CPIO_RENUMBER_INODES
+ bool "Support --renumber-inodes like GNU cpio"
+ default y
+ depends on BUSYBOX_FEATURE_CPIO_O && BUSYBOX_LONG_OPTS
+ help
+ Optionally renumber inodes when creating archives.
config BUSYBOX_DPKG
bool "dpkg (43 kb)"
default y
diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in
index 6293694de..00d646599 100644
--- a/package/busybox/config/coreutils/Config.in
+++ b/package/busybox/config/coreutils/Config.in
@@ -6,6 +6,47 @@
menu "Coreutils"
+config BUSYBOX_FEATURE_VERBOSE
+ bool "Support verbose options (usually -v) for various applets"
+ default y
+ help
+ Enable cp -v, rm -v and similar messages.
+ Also enables long option (--verbose) if it exists.
+ Without this option, -v is accepted but ignored.
+
+comment "Common options for date and touch"
+
+config BUSYBOX_FEATURE_TIMEZONE
+ bool "Allow timezone in dates"
+ default y
+ depends on BUSYBOX_DESKTOP
+ help
+ Permit the use of timezones when parsing user-provided data
+ strings, e.g. '1996-04-09 12:45:00 -0500'.
+
+ This requires support for the '%z' extension to strptime() which
+ may not be available in all implementations.
+
+comment "Common options for cp and mv"
+ depends on BUSYBOX_CP || BUSYBOX_MV
+
+config BUSYBOX_FEATURE_PRESERVE_HARDLINKS
+ bool "Preserve hard links"
+ default y
+ depends on BUSYBOX_CP || BUSYBOX_MV
+ help
+ Allow cp and mv to preserve hard links.
+
+comment "Common options for df, du, ls"
+ depends on BUSYBOX_DF || BUSYBOX_DU || BUSYBOX_LS
+
+config BUSYBOX_FEATURE_HUMAN_READABLE
+ bool "Support human readable output (example 13k, 23M, 235G)"
+ default y
+ depends on BUSYBOX_DF || BUSYBOX_DU || BUSYBOX_LS
+ help
+ Allow df, du, and ls to have human readable output.
+
config BUSYBOX_BASENAME
bool "basename (438 bytes)"
default y
@@ -63,8 +104,10 @@ config BUSYBOX_CHROOT
config BUSYBOX_CKSUM
bool "cksum (4.1 kb)"
default y
- help
- cksum is used to calculate the CRC32 checksum of a file.
+
+config BUSYBOX_CRC32
+ bool "crc32 (4.1 kb)"
+ default y
config BUSYBOX_COMM
bool "comm (4.2 kb)"
default y
@@ -95,6 +138,13 @@ config BUSYBOX_CUT
help
cut is used to print selected parts of lines from
each file to stdout.
+
+config BUSYBOX_FEATURE_CUT_REGEX
+ bool "cut -F"
+ default y
+ depends on BUSYBOX_CUT
+ help
+ Allow regex based delimiters.
config BUSYBOX_DATE
bool "date (7 kb)"
default y
@@ -191,6 +241,26 @@ config BUSYBOX_FEATURE_DF_FANCY
-a Show all filesystems
-i Inodes
-B <SIZE> Blocksize
+
+config BUSYBOX_FEATURE_SKIP_ROOTFS
+ bool "Skip rootfs in mount table"
+ default y
+ depends on BUSYBOX_DF
+ help
+ Ignore rootfs entry in mount table.
+
+ In Linux, kernel has a special filesystem, rootfs, which is initially
+ mounted on /. It contains initramfs data, if kernel is configured
+ to have one. Usually, another file system is mounted over / early
+ in boot process, and therefore most tools which manipulate
+ mount table, such as df, will skip rootfs entry.
+
+ However, some systems do not mount anything on /.
+ If you need to configure busybox for one of these systems,
+ you may find it useful to turn this option off to make df show
+ initramfs statistics.
+
+ Otherwise, choose Y.
config BUSYBOX_DIRNAME
bool "dirname (329 bytes)"
default y
@@ -583,7 +653,7 @@ config BUSYBOX_SORT
sort is used to sort lines of text in specified files.
config BUSYBOX_FEATURE_SORT_BIG
- bool "Full SuSv3 compliant sort (support -ktcbdfiogM)"
+ bool "Full SuSv3 compliant sort (support -ktcbdfioghM)"
default y
depends on BUSYBOX_SORT
help
@@ -739,16 +809,8 @@ config BUSYBOX_TOUCH
touch is used to create or change the access and/or
modification timestamp of specified files.
-config BUSYBOX_FEATURE_TOUCH_NODEREF
- bool "Add support for -h"
- default y
- depends on BUSYBOX_TOUCH
- help
- Enable touch to have the -h option.
- This requires libc support for lutimes() function.
-
config BUSYBOX_FEATURE_TOUCH_SUSV3
- bool "Add support for SUSV3 features (-d -t -r)"
+ bool "Add support for SUSV3 features (-a -d -m -t -r)"
default y
depends on BUSYBOX_TOUCH
help
@@ -789,6 +851,11 @@ config BUSYBOX_TRUNCATE
help
truncate truncates files to a given size. If a file does
not exist, it is created unless told otherwise.
+config BUSYBOX_TSORT
+ bool "tsort (0.7 kb)"
+ default y
+ help
+ tsort performs a topological sort.
config BUSYBOX_TTY
bool "tty (3.6 kb)"
default y
@@ -895,34 +962,4 @@ config BUSYBOX_YES
yes is used to repeatedly output a specific string, or
the default string 'y'.
-comment "Common options"
-
-config BUSYBOX_FEATURE_VERBOSE
- bool "Support verbose options (usually -v) for various applets"
- default y
- help
- Enable cp -v, rm -v and similar messages.
- Also enables long option (--verbose) if it exists.
- Without this option, -v is accepted but ignored.
-
-comment "Common options for cp and mv"
- depends on BUSYBOX_CP || BUSYBOX_MV
-
-config BUSYBOX_FEATURE_PRESERVE_HARDLINKS
- bool "Preserve hard links"
- default y
- depends on BUSYBOX_CP || BUSYBOX_MV
- help
- Allow cp and mv to preserve hard links.
-
-comment "Common options for df, du, ls"
- depends on BUSYBOX_DF || BUSYBOX_DU || BUSYBOX_LS
-
-config BUSYBOX_FEATURE_HUMAN_READABLE
- bool "Support human readable output (example 13k, 23M, 235G)"
- default y
- depends on BUSYBOX_DF || BUSYBOX_DU || BUSYBOX_LS
- help
- Allow df, du, and ls to have human readable output.
-
endmenu
diff --git a/package/busybox/config/editors/Config.in b/package/busybox/config/editors/Config.in
index 3e48e371d..2858f60d1 100644
--- a/package/busybox/config/editors/Config.in
+++ b/package/busybox/config/editors/Config.in
@@ -110,6 +110,14 @@ config BUSYBOX_FEATURE_VI_COLON
Enable a limited set of colon commands. This does not
provide an "ex" mode.
+config BUSYBOX_FEATURE_VI_COLON_EXPAND
+ bool "Expand \"%\" and \"#\" in colon commands"
+ default y
+ depends on BUSYBOX_FEATURE_VI_COLON
+ help
+ Expand the special characters \"%\" (current filename)
+ and \"#\" (alternate filename) in colon commands.
+
config BUSYBOX_FEATURE_VI_YANKMARK
bool "Enable yank/put commands and mark cmds"
default y
@@ -217,6 +225,14 @@ config BUSYBOX_FEATURE_VI_UNDO_QUEUE_MAX
Unless you want more (or less) frequent "undo points" while typing,
you should probably leave this unchanged.
+config BUSYBOX_FEATURE_VI_VERBOSE_STATUS
+ bool "Enable verbose status reporting"
+ default y
+ depends on BUSYBOX_VI
+ help
+ Enable more verbose reporting of the results of yank, change,
+ delete, undo and substitution commands.
+
config BUSYBOX_FEATURE_ALLOW_EXEC
bool "Allow vi and awk to execute shell commands"
default y
diff --git a/package/busybox/config/findutils/Config.in b/package/busybox/config/findutils/Config.in
index 8a81483e2..d4aa403a5 100644
--- a/package/busybox/config/findutils/Config.in
+++ b/package/busybox/config/findutils/Config.in
@@ -23,21 +23,53 @@ config BUSYBOX_FEATURE_FIND_PRINT0
interpreted by other programs.
config BUSYBOX_FEATURE_FIND_MTIME
- bool "Enable -mtime: modified time matching"
+ bool "Enable -mtime: modification time matching"
default y
depends on BUSYBOX_FIND
help
Allow searching based on the modification time of
files, in days.
+config BUSYBOX_FEATURE_FIND_ATIME
+ bool "Enable -atime: access time matching"
+ default y
+ depends on BUSYBOX_FEATURE_FIND_MTIME
+ help
+ Allow searching based on the access time of
+ files, in days.
+
+config BUSYBOX_FEATURE_FIND_CTIME
+ bool "Enable -ctime: status change timestamp matching"
+ default y
+ depends on BUSYBOX_FEATURE_FIND_MTIME
+ help
+ Allow searching based on the status change timestamp of
+ files, in days.
+
config BUSYBOX_FEATURE_FIND_MMIN
- bool "Enable -mmin: modified time matching by minutes"
+ bool "Enable -mmin: modification time matching by minutes"
default y
depends on BUSYBOX_FIND
help
Allow searching based on the modification time of
files, in minutes.
+config BUSYBOX_FEATURE_FIND_AMIN
+ bool "Enable -amin: access time matching by minutes"
+ default y
+ depends on BUSYBOX_FEATURE_FIND_MMIN
+ help
+ Allow searching based on the access time of
+ files, in minutes.
+
+config BUSYBOX_FEATURE_FIND_CMIN
+ bool "Enable -cmin: status change timestamp matching by minutes"
+ default y
+ depends on BUSYBOX_FEATURE_FIND_MMIN
+ help
+ Allow searching based on the status change timestamp of
+ files, in minutes.
+
config BUSYBOX_FEATURE_FIND_PERM
bool "Enable -perm: permissions matching"
default y
@@ -79,6 +111,13 @@ config BUSYBOX_FEATURE_FIND_INUM
default y
depends on BUSYBOX_FIND
+config BUSYBOX_FEATURE_FIND_SAMEFILE
+ bool "Enable -samefile: reference file matching"
+ default y
+ depends on BUSYBOX_FIND
+ help
+ Support the 'find -samefile' option for searching by a reference file.
+
config BUSYBOX_FEATURE_FIND_EXEC
bool "Enable -exec: execute commands"
default y
diff --git a/package/busybox/config/klibc-utils/Config.in b/package/busybox/config/klibc-utils/Config.in
index fdaddc397..f2ff057fb 100644
--- a/package/busybox/config/klibc-utils/Config.in
+++ b/package/busybox/config/klibc-utils/Config.in
@@ -13,7 +13,7 @@ config BUSYBOX_MINIPS
Alias to "ps".
config BUSYBOX_NUKE
bool "nuke (2.9 kb)"
- default y
+ default n # off by default: too "accidentally destructive"
help
Alias to "rm -rf".
config BUSYBOX_RESUME
diff --git a/package/busybox/config/libbb/Config.in b/package/busybox/config/libbb/Config.in
index 1dd61c62e..66c135ec6 100644
--- a/package/busybox/config/libbb/Config.in
+++ b/package/busybox/config/libbb/Config.in
@@ -98,51 +98,118 @@ config BUSYBOX_MD5_SMALL
default 1 # all "fast or small" options default to small
range 0 3
help
- Trade binary size versus speed for the md5sum algorithm.
+ Trade binary size versus speed for the md5 algorithm.
Approximate values running uClibc and hashing
linux-2.4.4.tar.bz2 were:
- value user times (sec) text size (386)
- 0 (fastest) 1.1 6144
- 1 1.4 5392
- 2 3.0 5088
- 3 (smallest) 5.1 4912
+ value user times (sec) text size (386)
+ 0 (fastest) 1.1 6144
+ 1 1.4 5392
+ 2 3.0 5088
+ 3 (smallest) 5.1 4912
+
+config BUSYBOX_SHA1_SMALL
+ int "SHA1: Trade bytes for speed (0:fast, 3:slow)"
+ default 3 # all "fast or small" options default to small
+ range 0 3
+ help
+ Trade binary size versus speed for the sha1 algorithm.
+ With FEATURE_COPYBUF_KB=64:
+ throughput MB/s size of sha1_process_block64
+ value 486 x86-64 486 x86-64
+ 0 440 485 3481 3502
+ 1 265 265 641 696
+ 2,3 220 210 342 364
+
+config BUSYBOX_SHA1_HWACCEL
+ bool "SHA1: Use hardware accelerated instructions if possible"
+ default y
+ help
+ On x86, this adds ~590 bytes of code. Throughput
+ is about twice as fast as fully-unrolled generic code.
+
+config BUSYBOX_SHA256_HWACCEL
+ bool "SHA256: Use hardware accelerated instructions if possible"
+ default y
+ help
+ On x86, this adds ~1k bytes of code.
config BUSYBOX_SHA3_SMALL
int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
default 1 # all "fast or small" options default to small
range 0 1
help
- Trade binary size versus speed for the sha3sum algorithm.
+ Trade binary size versus speed for the sha3 algorithm.
SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
64-bit x86: +270 bytes of code, 45% faster
32-bit x86: +450 bytes of code, 75% faster
-config BUSYBOX_FEATURE_FAST_TOP
- bool "Faster /proc scanning code (+100 bytes)"
- default n # all "fast or small" options default to small
+config BUSYBOX_FEATURE_NON_POSIX_CP
+ bool "Non-POSIX, but safer, copying to special nodes"
+ default y
help
- This option makes top and ps ~20% faster (or 20% less CPU hungry),
- but code size is slightly bigger.
+ With this option, "cp file symlink" will delete symlink
+ and create a regular file. This does not conform to POSIX,
+ but prevents a symlink attack.
+ Similarly, "cp file device" will not send file's data
+ to the device. (To do that, use "cat file >device")
-config BUSYBOX_FEATURE_ETC_NETWORKS
- bool "Support /etc/networks"
+config BUSYBOX_FEATURE_VERBOSE_CP_MESSAGE
+ bool "Give more precise messages when copy fails (cp, mv etc)"
default n
help
- Enable support for network names in /etc/networks. This is
- a rarely used feature which allows you to use names
- instead of IP/mask pairs in route command.
+ Error messages with this feature enabled:
-config BUSYBOX_FEATURE_ETC_SERVICES
- bool "Consult /etc/services even for well-known ports"
- default n
+ $ cp file /does_not_exist/file
+ cp: cannot create '/does_not_exist/file': Path does not exist
+ $ cp file /vmlinuz/file
+ cp: cannot stat '/vmlinuz/file': Path has non-directory component
+
+ If this feature is not enabled, they will be, respectively:
+
+ cp: cannot create '/does_not_exist/file': No such file or directory
+ cp: cannot stat '/vmlinuz/file': Not a directory
+
+ This will cost you ~60 bytes.
+
+config BUSYBOX_FEATURE_USE_SENDFILE
+ bool "Use sendfile system call"
+ default y
+ help
+ When enabled, busybox will use the kernel sendfile() function
+ instead of read/write loops to copy data between file descriptors
+ (for example, cp command does this a lot).
+ If sendfile() doesn't work, copying code falls back to read/write
+ loop. sendfile() was originally implemented for faster I/O
+ from files to sockets, but since Linux 2.6.33 it was extended
+ to work for many more file types.
+
+config BUSYBOX_FEATURE_COPYBUF_KB
+ int "Copy buffer size, in kilobytes"
+ range 1 1024
+ default 4
+ help
+ Size of buffer used by cp, mv, install, wget etc.
+ Buffers which are 4 kb or less will be allocated on stack.
+ Bigger buffers will be allocated with mmap, with fallback to 4 kb
+ stack buffer if mmap fails.
+
+config BUSYBOX_MONOTONIC_SYSCALL
+ bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
+ default y
+ help
+ Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
+ time intervals (time, ping, traceroute etc need this).
+ Probably requires Linux 2.6+. If not selected, gettimeofday
+ will be used instead (which gives wrong results if date/time
+ is reset).
+
+config BUSYBOX_IOCTL_HEX2STR_ERROR
+ bool "Use ioctl names rather than hex values in error messages"
+ default y
help
- Look up e.g. "telnet" and "http" in /etc/services file
- instead of assuming ports 23 and 80.
- This is almost never necessary (everybody uses standard ports),
- and it makes sense to avoid reading this file.
- If you disable this option, in the cases where port is explicitly
- specified as a service name (e.g. "telnet HOST PORTNAME"),
- it will still be looked up in /etc/services.
+ Use ioctl names rather than hex values in error messages
+ (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
+ saves about 1400 bytes.
config BUSYBOX_FEATURE_EDITING
bool "Command line editing"
@@ -359,95 +426,24 @@ config BUSYBOX_UNICODE_PRESERVE_BROKEN
at shell prompt will list file named 0xff (single char name
with char value 255), not file named '?'.
-config BUSYBOX_FEATURE_NON_POSIX_CP
- bool "Non-POSIX, but safer, copying to special nodes"
- default y
- help
- With this option, "cp file symlink" will delete symlink
- and create a regular file. This does not conform to POSIX,
- but prevents a symlink attack.
- Similarly, "cp file device" will not send file's data
- to the device. (To do that, use "cat file >device")
-
-config BUSYBOX_FEATURE_VERBOSE_CP_MESSAGE
- bool "Give more precise messages when copy fails (cp, mv etc)"
- default n
- help
- Error messages with this feature enabled:
-
- $ cp file /does_not_exist/file
- cp: cannot create '/does_not_exist/file': Path does not exist
- $ cp file /vmlinuz/file
- cp: cannot stat '/vmlinuz/file': Path has non-directory component
-
- If this feature is not enabled, they will be, respectively:
-
- cp: cannot create '/does_not_exist/file': No such file or directory
- cp: cannot stat '/vmlinuz/file': Not a directory
-
- This will cost you ~60 bytes.
-
-config BUSYBOX_FEATURE_USE_SENDFILE
- bool "Use sendfile system call"
- default y
- help
- When enabled, busybox will use the kernel sendfile() function
- instead of read/write loops to copy data between file descriptors
- (for example, cp command does this a lot).
- If sendfile() doesn't work, copying code falls back to read/write
- loop. sendfile() was originally implemented for faster I/O
- from files to sockets, but since Linux 2.6.33 it was extended
- to work for many more file types.
-
-config BUSYBOX_FEATURE_COPYBUF_KB
- int "Copy buffer size, in kilobytes"
- range 1 1024
- default 4
- help
- Size of buffer used by cp, mv, install, wget etc.
- Buffers which are 4 kb or less will be allocated on stack.
- Bigger buffers will be allocated with mmap, with fallback to 4 kb
- stack buffer if mmap fails.
-
-config BUSYBOX_FEATURE_SKIP_ROOTFS
- bool "Skip rootfs in mount table"
- default y
+choice
+ prompt "Use LOOP_CONFIGURE for losetup and loop mounts"
+ default BUSYBOX_TRY_LOOP_CONFIGURE
help
- Ignore rootfs entry in mount table.
+ LOOP_CONFIGURE is added to Linux 5.8
+ https://lwn.net/Articles/820408/
+ This allows userspace to completely setup a loop device with a single
+ ioctl, removing the in-between state where the device can be partially
+ configured - eg the loop device has a backing file associated with it,
+ but is reading from the wrong offset.
- In Linux, kernel has a special filesystem, rootfs, which is initially
- mounted on /. It contains initramfs data, if kernel is configured
- to have one. Usually, another file system is mounted over / early
- in boot process, and therefore most tools which manipulate
- mount table, such as df, will skip rootfs entry.
+config BUSYBOX_LOOP_CONFIGURE
+ bool "use LOOP_CONFIGURE, needs kernel >= 5.8"
- However, some systems do not mount anything on /.
- If you need to configure busybox for one of these systems,
- you may find it useful to turn this option off to make df show
- initramfs statistics.
+config BUSYBOX_NO_LOOP_CONFIGURE
+ bool "use LOOP_SET_FD + LOOP_SET_STATUS"
- Otherwise, choose Y.
+config BUSYBOX_TRY_LOOP_CONFIGURE
+ bool "try LOOP_CONFIGURE, fall back to LOOP_SET_FD + LOOP_SET_STATUS"
-config BUSYBOX_MONOTONIC_SYSCALL
- bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
- default y
- help
- Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
- time intervals (time, ping, traceroute etc need this).
- Probably requires Linux 2.6+. If not selected, gettimeofday
- will be used instead (which gives wrong results if date/time
- is reset).
-
-config BUSYBOX_IOCTL_HEX2STR_ERROR
- bool "Use ioctl names rather than hex values in error messages"
- default y
- help
- Use ioctl names rather than hex values in error messages
- (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
- saves about 1400 bytes.
-
-config BUSYBOX_FEATURE_HWIB
- bool "Support infiniband HW"
- default y
- help
- Support for printing infiniband addresses in network applets.
+endchoice
diff --git a/package/busybox/config/mailutils/Config.in b/package/busybox/config/mailutils/Config.in
index 1b793ef7c..29890dcbd 100644
--- a/package/busybox/config/mailutils/Config.in
+++ b/package/busybox/config/mailutils/Config.in
@@ -1,6 +1,13 @@
# DO NOT EDIT. This file is generated from Config.src
menu "Mail Utilities"
+config BUSYBOX_FEATURE_MIME_CHARSET
+ string "Default charset"
+ default "us-ascii"
+ depends on BUSYBOX_MAKEMIME || BUSYBOX_REFORMIME || BUSYBOX_SENDMAIL
+ help
+ Default charset of the message.
+
config BUSYBOX_MAKEMIME
bool "makemime (5.4 kb)"
default y
@@ -41,11 +48,4 @@ config BUSYBOX_SENDMAIL
help
Barebones sendmail.
-config BUSYBOX_FEATURE_MIME_CHARSET
- string "Default charset"
- default "us-ascii"
- depends on BUSYBOX_MAKEMIME || BUSYBOX_REFORMIME || BUSYBOX_SENDMAIL
- help
- Default charset of the message.
-
endmenu
diff --git a/package/busybox/config/miscutils/Config.in b/package/busybox/config/miscutils/Config.in
index 549042515..82aeff339 100644
--- a/package/busybox/config/miscutils/Config.in
+++ b/package/busybox/config/miscutils/Config.in
@@ -12,6 +12,12 @@ config BUSYBOX_ADJTIMEX
help
Adjtimex reads and optionally sets adjustment parameters for
the Linux clock adjustment algorithm.
+config BUSYBOX_ASCII
+ bool "ascii"
+ default y
+ help
+ Print ascii table.
+
config BUSYBOX_BBCONFIG
bool "bbconfig (9.7 kb)"
default n
@@ -693,6 +699,13 @@ config BUSYBOX_RX
default y
help
Receive files using the Xmodem protocol.
+config BUSYBOX_SEEDRNG
+ bool "seedrng (1.3 kb)"
+ default n
+ help
+ Seed the kernel RNG from seed files, meant to be called
+ once during startup, once during shutdown, and optionally
+ at some periodic interval in between.
config BUSYBOX_SETFATTR
bool "setfattr (3.7 kb)"
default y
@@ -716,6 +729,11 @@ config BUSYBOX_TIME
The time command runs the specified program with the given arguments.
When the command finishes, time writes a message to standard output
giving timing statistics about this program run.
+config BUSYBOX_TREE
+ bool "tree (0.6 kb)"
+ default y
+ help
+ List files and directories in a tree structure.
config BUSYBOX_TS
bool "ts (450 bytes)"
default y
@@ -783,4 +801,19 @@ config BUSYBOX_WATCHDOG
certain amount of time, the watchdog device assumes the system has
hung, and will cause the hardware to reboot.
+config BUSYBOX_FEATURE_WATCHDOG_OPEN_TWICE
+ bool "Open watchdog device twice, closing it gracefully in between"
+ depends on BUSYBOX_WATCHDOG
+ default n # this behavior was essentially a hack for a broken driver
+ help
+ When enabled, the watchdog device is opened and then immediately
+ magic-closed, before being opened a second time. This may be necessary
+ for some watchdog devices, but can cause spurious warnings in the
+ kernel log if the nowayout feature is enabled. If this workaround
+ is really needed for you machine to work properly, consider whether
+ it should be fixed in the kernel driver instead. Even when disabled,
+ the behaviour is easily emulated with a "printf 'V' > /dev/watchdog"
+ immediately before starting the busybox watchdog daemon. Say n unless
+ you know that you absolutely need this.
+
endmenu
diff --git a/package/busybox/config/networking/Config.in b/package/busybox/config/networking/Config.in
index 4832a82d0..341092334 100644
--- a/package/busybox/config/networking/Config.in
+++ b/package/busybox/config/networking/Config.in
@@ -47,6 +47,32 @@ config BUSYBOX_VERBOSE_RESOLUTION_ERRORS
"can't resolve 'hostname.com'" and want to know more.
This may increase size of your executable a bit.
+config BUSYBOX_FEATURE_ETC_NETWORKS
+ bool "Support /etc/networks"
+ default n
+ help
+ Enable support for network names in /etc/networks. This is
+ a rarely used feature which allows you to use names
+ instead of IP/mask pairs in route command.
+
+config BUSYBOX_FEATURE_ETC_SERVICES
+ bool "Consult /etc/services even for well-known ports"
+ default n
+ help
+ Look up e.g. "telnet" and "http" in /etc/services file
+ instead of assuming ports 23 and 80.
+ This is almost never necessary (everybody uses standard ports),
+ and it makes sense to avoid reading this file.
+ If you disable this option, in the cases where port is explicitly
+ specified as a service name (e.g. "telnet HOST PORTNAME"),
+ it will still be looked up in /etc/services.
+
+config BUSYBOX_FEATURE_HWIB
+ bool "Support infiniband HW"
+ default y
+ help
+ Support for printing infiniband addresses in network applets.
+
config BUSYBOX_FEATURE_TLS_SHA1
bool "In TLS code, support ciphers which use deprecated SHA1"
depends on BUSYBOX_TLS
@@ -173,6 +199,12 @@ config BUSYBOX_HTTPD
help
HTTP server.
+config BUSYBOX_FEATURE_HTTPD_PORT_DEFAULT
+ int "Default port"
+ default 80
+ range 1 65535
+ depends on BUSYBOX_HTTPD
+
config BUSYBOX_FEATURE_HTTPD_RANGES
bool "Support 'Ranges:' header"
default y
@@ -939,6 +971,12 @@ config BUSYBOX_FEATURE_TELNETD_STANDALONE
help
Selecting this will make telnetd able to run standalone.
+config BUSYBOX_FEATURE_TELNETD_PORT_DEFAULT
+ int "Default port"
+ default 23
+ range 1 65535
+ depends on BUSYBOX_FEATURE_TELNETD_STANDALONE
+
config BUSYBOX_FEATURE_TELNETD_INETD_WAIT
bool "Support -w SEC option (inetd wait mode)"
default y
@@ -1086,6 +1124,13 @@ config BUSYBOX_FEATURE_WGET_STATUSBAR
default y
depends on BUSYBOX_WGET
+config BUSYBOX_FEATURE_WGET_FTP
+ bool "Enable FTP protocol (+1k)"
+ default y
+ depends on BUSYBOX_WGET
+ help
+ To support FTPS, enable FEATURE_WGET_HTTPS as well.
+
config BUSYBOX_FEATURE_WGET_AUTHENTICATION
bool "Enable HTTP authentication"
default y
@@ -1114,6 +1159,7 @@ config BUSYBOX_FEATURE_WGET_HTTPS
select BUSYBOX_TLS
help
wget will use internal TLS code to connect to https:// URLs.
+ It also enables FTPS support, but it's not well tested yet.
Note:
On NOMMU machines, ssl_helper applet should be available
in the $PATH for this to work. Make sure to select that applet.
@@ -1202,7 +1248,8 @@ source package/busybox/config/networking/udhcp/Config.in
config BUSYBOX_IFUPDOWN_UDHCPC_CMD_OPTIONS
string "ifup udhcpc command line options"
- default "-R -n"
+ default "-R -n" if BUSYBOX_NOMMU
+ default "-R -n -b"
depends on BUSYBOX_IFUP || BUSYBOX_IFDOWN
help
Command line options to pass to udhcpc from ifup.
diff --git a/package/busybox/config/networking/udhcp/Config.in b/package/busybox/config/networking/udhcp/Config.in
index 52f1ef5b2..111e6b5f5 100644
--- a/package/busybox/config/networking/udhcp/Config.in
+++ b/package/busybox/config/networking/udhcp/Config.in
@@ -93,12 +93,17 @@ config BUSYBOX_FEATURE_UDHCPC_SANITIZEOPT
config BUSYBOX_UDHCPC_DEFAULT_SCRIPT
string "Absolute path to config script"
default "/usr/share/udhcpc/default.script"
- depends on BUSYBOX_UDHCPC || BUSYBOX_UDHCPC6
+ depends on BUSYBOX_UDHCPC
help
This script is called after udhcpc receives an answer. See
examples/udhcp for a working example. Normally it is safe
to leave this untouched.
+config BUSYBOX_UDHCPC6_DEFAULT_SCRIPT
+ string "Absolute path to config script for IPv6"
+ default "/usr/share/udhcpc/default6.script"
+ depends on BUSYBOX_UDHCPC6
+
# udhcpc6 config is inserted here:
config BUSYBOX_UDHCPC6
bool "udhcpc6 (21 kb)"
@@ -142,6 +147,14 @@ config BUSYBOX_FEATURE_UDHCPC6_RFC5970
comment "Common options for DHCP applets"
depends on BUSYBOX_UDHCPD || BUSYBOX_UDHCPC || BUSYBOX_UDHCPC6 || BUSYBOX_DHCPRELAY
+config BUSYBOX_UDHCPC_DEFAULT_INTERFACE
+ string "Default interface name"
+ default "eth0"
+ depends on BUSYBOX_UDHCPC || BUSYBOX_UDHCPC6
+ help
+ The interface that will be used if no other interface is
+ specified on the commandline.
+
config BUSYBOX_FEATURE_UDHCP_PORT
bool "Enable '-P port' option for udhcpd and udhcpc"
default n
diff --git a/package/busybox/config/procps/Config.in b/package/busybox/config/procps/Config.in
index 56086da2c..0c1733b9f 100644
--- a/package/busybox/config/procps/Config.in
+++ b/package/busybox/config/procps/Config.in
@@ -6,6 +6,21 @@
menu "Process Utilities"
+config BUSYBOX_FEATURE_FAST_TOP
+ bool "Faster /proc scanning code (+100 bytes)"
+ default n # all "fast or small" options default to small
+ help
+ This option makes top and ps ~20% faster (or 20% less CPU hungry),
+ but code size is slightly bigger.
+
+config BUSYBOX_FEATURE_SHOW_THREADS
+ bool "Support thread display in ps/pstree/top"
+ default y
+ depends on BUSYBOX_PS || BUSYBOX_TOP || BUSYBOX_PSTREE
+ help
+ Enables the ps -T option, showing of threads in pstree,
+ and 'h' command in top.
+
config BUSYBOX_FREE
bool "free (3.1 kb)"
default y
@@ -259,12 +274,4 @@ config BUSYBOX_WATCH
watch is used to execute a program periodically, showing
output to the screen.
-config BUSYBOX_FEATURE_SHOW_THREADS
- bool "Support thread display in ps/pstree/top"
- default y
- depends on BUSYBOX_PS || BUSYBOX_TOP || BUSYBOX_PSTREE
- help
- Enables the ps -T option, showing of threads in pstree,
- and 'h' command in top.
-
endmenu
diff --git a/package/busybox/config/shell/Config.in b/package/busybox/config/shell/Config.in
index 0ce917dc3..6ffa3b2b0 100644
--- a/package/busybox/config/shell/Config.in
+++ b/package/busybox/config/shell/Config.in
@@ -88,7 +88,7 @@ config BUSYBOX_SHELL_ASH
config BUSYBOX_ASH
bool "ash (78 kb)"
- default n
+ default y
depends on !BUSYBOX_NOMMU
select BUSYBOX_SHELL_ASH
help
@@ -201,6 +201,11 @@ config BUSYBOX_ASH_TEST
default y
depends on BUSYBOX_SHELL_ASH
+config BUSYBOX_ASH_SLEEP
+ bool "sleep builtin"
+ default y
+ depends on BUSYBOX_SHELL_ASH
+
config BUSYBOX_ASH_HELP
bool "help builtin"
default y
@@ -299,11 +304,6 @@ config BUSYBOX_HUSH_BRACE_EXPANSION
help
Enable {abc,def} extension.
-config BUSYBOX_HUSH_LINENO_VAR
- bool "$LINENO variable"
- default y
- depends on BUSYBOX_HUSH_BASH_COMPAT
-
config BUSYBOX_HUSH_BASH_SOURCE_CURDIR
bool "'source' and '.' builtins search current directory after $PATH"
default n # do not encourage non-standard behavior
@@ -311,6 +311,11 @@ config BUSYBOX_HUSH_BASH_SOURCE_CURDIR
help
This is not compliant with standards. Avoid if possible.
+config BUSYBOX_HUSH_LINENO_VAR
+ bool "$LINENO variable (bashism)"
+ default y
+ depends on BUSYBOX_SHELL_HUSH
+
config BUSYBOX_HUSH_INTERACTIVE
bool "Interactive mode"
default y
diff --git a/package/busybox/files/ntpd.init b/package/busybox/files/ntpd.init
index 15c460dcc..0f578574a 100644
--- a/package/busybox/files/ntpd.init
+++ b/package/busybox/files/ntpd.init
@@ -1,6 +1,6 @@
#!/bin/sh
#PKG busybox
-#INIT 60
+#INIT 45
. /etc/rc.conf
case $1 in
diff --git a/package/busybox/patches/002-hwclock-musl.patch b/package/busybox/patches/002-hwclock-musl.patch
new file mode 100644
index 000000000..a5b9ff50d
--- /dev/null
+++ b/package/busybox/patches/002-hwclock-musl.patch
@@ -0,0 +1,31 @@
+diff -Nur busybox-1.36.1.orig/util-linux/hwclock.c busybox-1.36.1/util-linux/hwclock.c
+--- busybox-1.36.1.orig/util-linux/hwclock.c 2021-01-01 11:52:27.000000000 +0100
++++ busybox-1.36.1/util-linux/hwclock.c 2024-04-10 11:18:06.569673535 +0200
+@@ -136,10 +136,24 @@
+ * because "it's deprecated by POSIX, therefore it's fine
+ * if we gratuitously break stuff" :(
+ */
+-#if !defined(SYS_settimeofday) && defined(SYS_settimeofday_time32)
+-# define SYS_settimeofday SYS_settimeofday_time32
+-#endif
++# if !defined(SYS_settimeofday) && defined(SYS_settimeofday_time32)
++# define SYS_settimeofday SYS_settimeofday_time32
++# endif
++# if defined(SYS_settimeofday)
+ int ret = syscall(SYS_settimeofday, NULL, tz);
++# else
++ /* Some new architectures have neither settimeofday nor
++ * settimeofday_time32, and the whole kernel timezone handling appears
++ * to have been dropped due to some oddities in the API. See:
++ *
++ * - glibc's commit c3f9aef063 ("Use clock_settime to implement settimeofday.")
++ * - https://github.com/systemd/systemd/issues/13305
++ * - https://inbox.sourceware.org/libc-alpha/cb015d0d1d29e4b948c7118c5b12ff2bed83a6ec.1561421042.git.alistair.francis@wdc.com/
++ *
++ * So instead just silently drop these calls.
++ */
++ int ret = -ENOSYS;
++# endif
+ #else
+ int ret = settimeofday(NULL, tz);
+ #endif
diff --git a/package/busybox/patches/009-disable-Oz.patch b/package/busybox/patches/009-disable-Oz.patch
new file mode 100644
index 000000000..11830586f
--- /dev/null
+++ b/package/busybox/patches/009-disable-Oz.patch
@@ -0,0 +1,20 @@
+diff -Nur busybox-1.36.1.orig/Makefile.flags busybox-1.36.1/Makefile.flags
+--- busybox-1.36.1.orig/Makefile.flags 2023-01-03 15:14:43.000000000 +0100
++++ busybox-1.36.1/Makefile.flags 2023-07-30 15:24:31.983113101 +0200
+@@ -87,14 +87,14 @@
+ #CFLAGS += $(call cc-option,-Wconversion,)
+
+ ifneq ($(CONFIG_DEBUG),y)
+-CFLAGS += $(call cc-option,-Oz,$(call cc-option,-Os,$(call cc-option,-O2,)))
++CFLAGS += $(call cc-option,-Os,$(call cc-option,-O2,))
+ else
+ CFLAGS += $(call cc-option,-g,)
+ #CFLAGS += "-D_FORTIFY_SOURCE=2"
+ ifeq ($(CONFIG_DEBUG_PESSIMIZE),y)
+ CFLAGS += $(call cc-option,-O0,)
+ else
+-CFLAGS += $(call cc-option,-Oz,$(call cc-option,-Os,$(call cc-option,-O2,)))
++CFLAGS += $(call cc-option,-Os,$(call cc-option,-O2,))
+ endif
+ endif
+ ifeq ($(CONFIG_DEBUG_SANITIZE),y)
diff --git a/package/bzip2/Makefile b/package/bzip2/Makefile
index d5e0fb860..723d1abcc 100644
--- a/package/bzip2/Makefile
+++ b/package/bzip2/Makefile
@@ -31,7 +31,7 @@ $(eval $(call PKG_template,BZIP2,bzip2,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPEN
$(eval $(call PKG_template,LIBBZ2,libbz2,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_LIBBZ2},${PKGSC_LIBBZ2},${PKG_OPTS}))
HOST_STYLE:= manual
-HOST_MAKE_FILE:= Makefile
+HOST_MAKE_FILE:= Makefile-libbz2_so
ifneq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
MAKE_FILE:= Makefile-libbz2_so
@@ -50,8 +50,13 @@ host-build:
PREFIX=${HOST_WRKINST}/usr ${HOST_ALL_TARGET})
bzip2-hostinstall:
+ ${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/include
+ $(CP) ${WRKBUILD}/bzlib.h ${STAGING_HOST_DIR}/usr/include
+ ${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/lib
+ $(CP) ${WRKBUILD}/libbz2.so* ${STAGING_HOST_DIR}/usr/lib
+ (cd ${STAGING_HOST_DIR}/usr/lib; ln -sf libbz2.so.1.0.8 libbz2.so)
${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/bin
- $(INSTALL_BIN) ${WRKBUILD}/bzip2 ${STAGING_HOST_DIR}/usr/bin/bzip2
+ $(INSTALL_BIN) ${WRKBUILD}/bzip2-shared ${STAGING_HOST_DIR}/usr/bin/bzip2
do-install:
${INSTALL_DIR} $(STAGING_TARGET_DIR)/usr/include
diff --git a/package/bzr/Makefile b/package/bzr/Makefile
deleted file mode 100644
index 53f7d00fa..000000000
--- a/package/bzr/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= bzr
-PKG_VERSION:= 2.6.0
-PKG_RELEASE:= 1
-PKG_HASH:= 0994797182eb828867eee81cccc79480bd2946c99304266bc427b902cf91dab0
-PKG_DESCR:= source code management system
-PKG_SECTION:= dev/scm
-PKG_BUILDDEP:= python2
-PKG_DEPENDS:= python2
-PKG_URL:= http://bazaar.canonical.com/en/
-PKG_SITES:= https://launchpad.net/bzr/2.6/2.6.0/+download/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-PKG_HOST_DEPENDS:= !darwin
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,BZR,bzr,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIG_STYLE:= manual
-BUILD_STYLE:= manual
-INSTALL_STYLE:= manual
-
-include $(ADK_TOPDIR)/mk/python.mk
-
-do-build:
- cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py install --prefix=$(WRKINST)/usr build_ext --allow-python-fallback
-
-do-install:
- $(INSTALL_DIR) $(IDIR_BZR)/usr/lib/python$(PYTHON_VERSION)/site-packages
- $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/* \
- $(IDIR_BZR)/usr/lib/python$(PYTHON_VERSION)/site-packages
- $(INSTALL_DIR) $(IDIR_BZR)/usr/bin
- $(INSTALL_BIN) $(WRKBUILD)/bzr $(IDIR_BZR)/usr/bin
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/ca-certificates/Makefile b/package/ca-certificates/Makefile
index 3ee99af45..9316f738e 100644
--- a/package/ca-certificates/Makefile
+++ b/package/ca-certificates/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= ca-certificates
-PKG_VERSION:= 20160104
+PKG_VERSION:= 20230311
PKG_RELEASE:= 1
-PKG_HASH:= 09eb770122e23260316120c0cbbddc8a1d33e7147210ce44e146084d5d5abcdd
+PKG_HASH:= 83de934afa186e279d1ed08ea0d73f5cf43a6fbfb5f00874b6db3711c64576f3
PKG_DESCR:= collection of common ca certificates
PKG_SECTION:= app/crypto
PKG_URL:= http://packages.debian.org/sid/ca-certificates
-PKG_SITES:= http://http.debian.net/debian/pool/main/c/ca-certificates/
+PKG_SITES:= https://snapshot.debian.org/archive/debian/20230317T205011Z/pool/main/c/ca-certificates/
DISTFILES:= $(PKG_NAME)_$(PKG_VERSION).tar.xz
WRKDIST= $(WRKDIR)/ca-certificates
diff --git a/package/ca-certificates/patches/patch-Makefile b/package/ca-certificates/patches/patch-Makefile
index 24e9fab9c..ca81984e3 100644
--- a/package/ca-certificates/patches/patch-Makefile
+++ b/package/ca-certificates/patches/patch-Makefile
@@ -1,6 +1,5 @@
- fix for the completely empty DESTDIR
---- ca-certificates-20090814.orig/Makefile 2009-07-08 23:18:57.000000000 +0200
-+++ ca-certificates-20090814/Makefile 2009-08-22 20:36:42.614405912 +0200
+--- ca-certificates.orig/Makefile 2021-01-19 09:22:26.000000000 +0100
++++ ca-certificates/Makefile 2023-05-26 05:48:59.304310295 +0200
@@ -17,7 +17,7 @@ clean:
install:
diff --git a/package/ca-certificates/patches/patch-mozilla_Makefile b/package/ca-certificates/patches/patch-mozilla_Makefile
new file mode 100644
index 000000000..768f26373
--- /dev/null
+++ b/package/ca-certificates/patches/patch-mozilla_Makefile
@@ -0,0 +1,11 @@
+--- ca-certificates.orig/mozilla/Makefile 2022-01-11 14:34:24.000000000 +0100
++++ ca-certificates/mozilla/Makefile 2023-09-22 10:25:22.731768501 +0200
+@@ -3,7 +3,7 @@
+ #
+
+ all:
+- python3 certdata2pem.py
++ /bin/python3 certdata2pem.py
+
+ clean:
+ -rm -f *.crt
diff --git a/package/ca-certificates/patches/patch-sbin_Makefile b/package/ca-certificates/patches/patch-sbin_Makefile
deleted file mode 100644
index ff59e4856..000000000
--- a/package/ca-certificates/patches/patch-sbin_Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
- fix for the completely empty DESTDIR
---- ca-certificates-20090814.orig/sbin/Makefile 2007-02-02 07:23:19.000000000 +0100
-+++ ca-certificates-20090814/sbin/Makefile 2009-08-22 20:37:17.581921717 +0200
-@@ -8,4 +8,5 @@ all:
- clean:
-
- install:
-+ mkdir -p $(DESTDIR)/usr/sbin
- install -m755 update-ca-certificates $(DESTDIR)/usr/sbin/
diff --git a/package/ccid/Makefile b/package/ccid/Makefile
index e7750ba84..a4943716c 100644
--- a/package/ccid/Makefile
+++ b/package/ccid/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= ccid
-PKG_VERSION:= 1.4.17
+PKG_VERSION:= 1.5.5
PKG_RELEASE:= 1
-PKG_HASH:= ccdab8a9bc1ad288242d5f9ef399405e9cb96fb09caadb43e3649cbaba84c451
+PKG_HASH:= 194708f75fe369d45dd7c15e8b3e8a7db8b49cfc5557574ca2a2e76ef12ca0ca
PKG_DESCR:= generic usb ccid and iccd driver
PKG_SECTION:= app/crypto
PKG_BUILDDEP:= pcsc-lite
-PKG_URL:= http://pcsclite.alioth.debian.org/ccid.html
-PKG_SITES:= http://distfiles.openadk.org/
+PKG_URL:= https://ccid.apdu.fr/
+PKG_SITES:= https://ccid.apdu.fr/files/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
@@ -19,14 +19,15 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,CCID,ccid,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIGURE_ARGS+= --enable-twinserial
+CONFIGURE_ARGS+= --disable-twinserial \
+ --enable-libusb
ccid-install:
$(INSTALL_DIR) $(IDIR_CCID)/etc/reader.conf.d
$(INSTALL_DIR) $(IDIR_CCID)/usr/lib/pcsc/drivers
$(INSTALL_DATA) ./files/gemalto.conf \
$(IDIR_CCID)/etc/reader.conf.d
- $(CP) $(WRKINST)/usr/lib/pcsc/drivers/* \
+ -$(CP) $(WRKINST)/usr/lib/pcsc/drivers/* \
$(IDIR_CCID)/usr/lib/pcsc/drivers
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/ccid/patches/patch-configure b/package/ccid/patches/patch-configure
deleted file mode 100644
index 7235e9ef8..000000000
--- a/package/ccid/patches/patch-configure
+++ /dev/null
@@ -1,21 +0,0 @@
---- ccid-1.4.4.orig/configure 2011-05-13 11:19:09.000000000 +0200
-+++ ccid-1.4.4/configure 2011-07-28 10:54:49.000000000 +0200
-@@ -12207,17 +12207,8 @@ done
- # Select OS specific versions of source files.
-
-
--BUNDLE_HOST=`uname | sed -e s,/,_,`
-+BUNDLE_HOST=Linux
- DYN_LIB_EXT="so"
--case "$BUNDLE_HOST" in
--Darwin)
-- BUNDLE_HOST=MacOS
-- DYN_LIB_EXT="dylib"
-- ;;
--SunOS)
-- BUNDLE_HOST=Solaris
-- ;;
-- esac
-
- # --disable-libusb
- # Check whether --enable-libusb was given.
diff --git a/package/ccid/patches/patch-ltmain_sh b/package/ccid/patches/patch-ltmain_sh
deleted file mode 100644
index 0801e7522..000000000
--- a/package/ccid/patches/patch-ltmain_sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- ccid-1.4.4.orig/ltmain.sh 2011-05-13 11:19:08.000000000 +0200
-+++ ccid-1.4.4/ltmain.sh 2011-07-27 11:54:42.000000000 +0200
-@@ -5840,7 +5840,7 @@ func_mode_link ()
- # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-- -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
-+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- func_append compile_command " $arg"
diff --git a/package/cdrkit/patches/patch-Makefile b/package/cdrkit/patches/patch-Makefile
deleted file mode 100644
index b4b1ce790..000000000
--- a/package/cdrkit/patches/patch-Makefile
+++ /dev/null
@@ -1,465 +0,0 @@
---- cdrkit-1.1.11.orig/Makefile 2007-05-06 12:23:54.000000000 +0200
-+++ cdrkit-1.1.11/Makefile 2015-05-31 21:33:44.000000000 +0200
-@@ -1,72 +1,408 @@
--ifneq ($(CFLAGS),)
--CMAKETWEAKS += ( cd build ; cmake .. -DCMAKE_C_FLAGS="$(CFLAGS)" ) || exit 1;
--endif
-+# CMAKE generated file: DO NOT EDIT!
-+# Generated by "Unix Makefiles" Generator, CMake Version 3.2
-
--ifneq ($(LDFLAGS),)
--CMAKETWEAKS += (cd build ; cmake .. -DCMAKE_EXE_LINKER_FLAGS:STRING="$(LDFLAGS)" -DCMAKE_MODULE_LINKER_FLAGS:STRING="$(LDFLAGS)" -DCMAKE_SHARED_LINKER_FLAGS:STRING="$(LDFLAGS)" ) || exit 1;
--endif
-+# Default target executed when no arguments are given to make.
-+default_target: all
-+.PHONY : default_target
-
--ifneq ($(PREFIX),)
--CMAKETWEAKS += ( cd build ; cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)") || exit 1;
--endif
-+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
-+.NOTPARALLEL:
-
--ifneq ($(MANSUBDIR),)
--CMAKETWEAKS += ( cd build ; cmake .. -DMANSUBDIR="$(MANSUBDIR)" ) || exit 1;
--endif
-+#=============================================================================
-+# Special targets provided by cmake.
-
--default_target: all
-+# Disable implicit rules so canonical targets will work.
-+.SUFFIXES:
-
--DISTNAME=cdrkit-$(shell cat VERSION)
--DEBSRCNAME=cdrkit_$(shell cat VERSION | sed -e "s,pre,~pre,").orig.tar.gz
-+# Remove some rules from gmake that .SUFFIXES does not remove.
-+SUFFIXES =
-
--build/Makefile:
-- @-mkdir build 2>/dev/null
-- cd build && cmake ..
-+.SUFFIXES: .hpux_make_needs_suffix_list
-
--cmakepurge:
-- rm -rf install_manifest.txt progress.make CMakeFiles CMakeCache.txt cmake_install.cmake
-- rm -rf */install_manifest.txt */progress.make */CMakeFiles */CMakeCache.txt */cmake_install.cmake
-- rm -rf */*/install_manifest.txt */*/progress.make */*/CMakeFiles */*/CMakeCache.txt */*/cmake_install.cmake
-- rm */Makefile */*/Makefile
-+# Suppress display of executed commands.
-+$(VERBOSE).SILENT:
-+
-+# A target that is always out of date.
-+cmake_force:
-+.PHONY : cmake_force
-+
-+#=============================================================================
-+# Set environment variables for the build.
-+
-+# The shell in which to execute make rules.
-+SHELL = /bin/sh
-+
-+# The CMake executable.
-+CMAKE_COMMAND = /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake
-+
-+# The command to remove a file.
-+RM = /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -E remove -f
-+
-+# Escaping for special characters.
-+EQUALS = =
-+
-+# The top-level source directory on which CMake was run.
-+CMAKE_SOURCE_DIR = /home/wbx/adk/build_raspberry-pi_uclibc-ng_arm_hard_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11
-+
-+# The top-level build directory on which CMake was run.
-+CMAKE_BINARY_DIR = /home/wbx/adk/build_raspberry-pi_uclibc-ng_arm_hard_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11
-+
-+#=============================================================================
-+# Targets provided globally by CMake.
-+
-+# Special rule for the target install/strip
-+install/strip: preinstall
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
-+ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
-+.PHONY : install/strip
-+
-+# Special rule for the target install/strip
-+install/strip/fast: install/strip
-+.PHONY : install/strip/fast
-+
-+# Special rule for the target edit_cache
-+edit_cache:
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
-+ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-+.PHONY : edit_cache
-+
-+# Special rule for the target edit_cache
-+edit_cache/fast: edit_cache
-+.PHONY : edit_cache/fast
-+
-+# Special rule for the target rebuild_cache
-+rebuild_cache:
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
-+ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-+.PHONY : rebuild_cache
-+
-+# Special rule for the target rebuild_cache
-+rebuild_cache/fast: rebuild_cache
-+.PHONY : rebuild_cache/fast
-+
-+# Special rule for the target install
-+install: preinstall
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
-+ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -P cmake_install.cmake
-+.PHONY : install
-+
-+# Special rule for the target install
-+install/fast: preinstall/fast
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
-+ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -P cmake_install.cmake
-+.PHONY : install/fast
-+
-+# Special rule for the target list_install_components
-+list_install_components:
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
-+.PHONY : list_install_components
-+
-+# Special rule for the target list_install_components
-+list_install_components/fast: list_install_components
-+.PHONY : list_install_components/fast
-+
-+# Special rule for the target install/local
-+install/local: preinstall
-+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
-+ /home/wbx/adk/host_x86_64-linux-gnu/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
-+.PHONY : install/local
-+
-+# Special rule for the target install/local
-+install/local/fast: install/local
-+.PHONY : install/local/fast
-+
-+# The main all target
-+all: cmake_check_build_system
-+ $(CMAKE_COMMAND) -E cmake_progress_start /home/wbx/adk/build_raspberry-pi_uclibc-ng_arm_hard_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11/CMakeFiles /home/wbx/adk/build_raspberry-pi_uclibc-ng_arm_hard_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11/CMakeFiles/progress.marks
-+ $(MAKE) -f CMakeFiles/Makefile2 all
-+ $(CMAKE_COMMAND) -E cmake_progress_start /home/wbx/adk/build_raspberry-pi_uclibc-ng_arm_hard_eabihf/w-cdrkit-1.1.11-1/cdrkit-1.1.11/CMakeFiles 0
-+.PHONY : all
-
-+# The main clean target
- clean:
-- rm -rf build
-+ $(MAKE) -f CMakeFiles/Makefile2 clean
-+.PHONY : clean
-
--tarball:
--# if test "$(shell svn status | grep -v -i make)" ; then echo Uncommited files found. Run \"svn status\" to display them. ; exit 1 ; fi
-- @if test -f ../$(DISTNAME).tar.gz ; then echo ../$(DISTNAME).tar.gz exists, not overwritting ; exit 1; fi
-- -svn up
-- rm -rf tmp
-- mkdir tmp
-- svn export . tmp/$(DISTNAME)
-- rm -rf tmp/$(DISTNAME)/debian
-- tar -f - -c -C tmp $(DISTNAME) | gzip -9 > ../$(DISTNAME).tar.gz
-- rm -rf tmp
-- test -e /etc/debian_version && ln -f ../$(DISTNAME).tar.gz ../$(DEBSRCNAME) || true
-- test -e ../tarballs && ln -f ../$(DISTNAME).tar.gz ../tarballs/$(DEBSRCNAME) || true
-+# The main clean target
-+clean/fast: clean
-+.PHONY : clean/fast
-
--tarball-remove:
-- rm -f ../$(DISTNAME).tar.gz ../tarballs/$(DEBSRCNAME) ../$(DEBSRCNAME)
-+# Prepare targets for installation.
-+preinstall: all
-+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
-+.PHONY : preinstall
-
--SVNBASE=$(shell svn info | grep URL: | cut -f2 -d' ' | xargs dirname)
--release: tarball
-- svn ci
-- svn cp $(SVNBASE)/trunk $(SVNBASE)/tags/release_$(shell cat VERSION)
-+# Prepare targets for installation.
-+preinstall/fast:
-+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
-+.PHONY : preinstall/fast
-
--#%::
--# $(MAKE) $(MAKE_FLAGS) build/Makefile
--# $(CMAKETWEAKS)
--# $(MAKE) -C build $(MAKE_FLAGS) $@
-+# clear depends
-+depend:
-+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-+.PHONY : depend
-
--# needs to be explicite, for PHONY and install (AKA INSTALL) file on cygwin
--install: build/Makefile
-- $(CMAKETWEAKS)
-- $(MAKE) -C build $(MAKE_FLAGS) $@
-+#=============================================================================
-+# Target rules for targets named devdump
-
--all: build/Makefile
-- $(CMAKETWEAKS)
-- $(MAKE) -C build $(MAKE_FLAGS) $@
-+# Build rule for target.
-+devdump: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 devdump
-+.PHONY : devdump
-
--.PHONY: install all
-+# fast build rule for target.
-+devdump/fast:
-+ $(MAKE) -f genisoimage/CMakeFiles/devdump.dir/build.make genisoimage/CMakeFiles/devdump.dir/build
-+.PHONY : devdump/fast
-+
-+#=============================================================================
-+# Target rules for targets named genisoimage
-+
-+# Build rule for target.
-+genisoimage: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 genisoimage
-+.PHONY : genisoimage
-+
-+# fast build rule for target.
-+genisoimage/fast:
-+ $(MAKE) -f genisoimage/CMakeFiles/genisoimage.dir/build.make genisoimage/CMakeFiles/genisoimage.dir/build
-+.PHONY : genisoimage/fast
-+
-+#=============================================================================
-+# Target rules for targets named isodebug
-+
-+# Build rule for target.
-+isodebug: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 isodebug
-+.PHONY : isodebug
-+
-+# fast build rule for target.
-+isodebug/fast:
-+ $(MAKE) -f genisoimage/CMakeFiles/isodebug.dir/build.make genisoimage/CMakeFiles/isodebug.dir/build
-+.PHONY : isodebug/fast
-+
-+#=============================================================================
-+# Target rules for targets named isodump
-+
-+# Build rule for target.
-+isodump: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 isodump
-+.PHONY : isodump
-+
-+# fast build rule for target.
-+isodump/fast:
-+ $(MAKE) -f genisoimage/CMakeFiles/isodump.dir/build.make genisoimage/CMakeFiles/isodump.dir/build
-+.PHONY : isodump/fast
-+
-+#=============================================================================
-+# Target rules for targets named isoinfo
-+
-+# Build rule for target.
-+isoinfo: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 isoinfo
-+.PHONY : isoinfo
-+
-+# fast build rule for target.
-+isoinfo/fast:
-+ $(MAKE) -f genisoimage/CMakeFiles/isoinfo.dir/build.make genisoimage/CMakeFiles/isoinfo.dir/build
-+.PHONY : isoinfo/fast
-+
-+#=============================================================================
-+# Target rules for targets named isovfy
-+
-+# Build rule for target.
-+isovfy: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 isovfy
-+.PHONY : isovfy
-+
-+# fast build rule for target.
-+isovfy/fast:
-+ $(MAKE) -f genisoimage/CMakeFiles/isovfy.dir/build.make genisoimage/CMakeFiles/isovfy.dir/build
-+.PHONY : isovfy/fast
-+
-+#=============================================================================
-+# Target rules for targets named wodim
-+
-+# Build rule for target.
-+wodim: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 wodim
-+.PHONY : wodim
-+
-+# fast build rule for target.
-+wodim/fast:
-+ $(MAKE) -f wodim/CMakeFiles/wodim.dir/build.make wodim/CMakeFiles/wodim.dir/build
-+.PHONY : wodim/fast
-+
-+#=============================================================================
-+# Target rules for targets named wodimstuff
-+
-+# Build rule for target.
-+wodimstuff: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 wodimstuff
-+.PHONY : wodimstuff
-+
-+# fast build rule for target.
-+wodimstuff/fast:
-+ $(MAKE) -f wodim/CMakeFiles/wodimstuff.dir/build.make wodim/CMakeFiles/wodimstuff.dir/build
-+.PHONY : wodimstuff/fast
-+
-+#=============================================================================
-+# Target rules for targets named edc
-+
-+# Build rule for target.
-+edc: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 edc
-+.PHONY : edc
-+
-+# fast build rule for target.
-+edc/fast:
-+ $(MAKE) -f libedc/CMakeFiles/edc.dir/build.make libedc/CMakeFiles/edc.dir/build
-+.PHONY : edc/fast
-+
-+#=============================================================================
-+# Target rules for targets named hfs_iso
-+
-+# Build rule for target.
-+hfs_iso: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 hfs_iso
-+.PHONY : hfs_iso
-+
-+# fast build rule for target.
-+hfs_iso/fast:
-+ $(MAKE) -f libhfs_iso/CMakeFiles/hfs_iso.dir/build.make libhfs_iso/CMakeFiles/hfs_iso.dir/build
-+.PHONY : hfs_iso/fast
-+
-+#=============================================================================
-+# Target rules for targets named paranoia
-+
-+# Build rule for target.
-+paranoia: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 paranoia
-+.PHONY : paranoia
-+
-+# fast build rule for target.
-+paranoia/fast:
-+ $(MAKE) -f libparanoia/CMakeFiles/paranoia.dir/build.make libparanoia/CMakeFiles/paranoia.dir/build
-+.PHONY : paranoia/fast
-+
-+#=============================================================================
-+# Target rules for targets named icedax
-+
-+# Build rule for target.
-+icedax: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 icedax
-+.PHONY : icedax
-+
-+# fast build rule for target.
-+icedax/fast:
-+ $(MAKE) -f icedax/CMakeFiles/icedax.dir/build.make icedax/CMakeFiles/icedax.dir/build
-+.PHONY : icedax/fast
-+
-+#=============================================================================
-+# Target rules for targets named usal
-+
-+# Build rule for target.
-+usal: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 usal
-+.PHONY : usal
-+
-+# fast build rule for target.
-+usal/fast:
-+ $(MAKE) -f libusal/CMakeFiles/usal.dir/build.make libusal/CMakeFiles/usal.dir/build
-+.PHONY : usal/fast
-+
-+#=============================================================================
-+# Target rules for targets named rols
-+
-+# Build rule for target.
-+rols: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 rols
-+.PHONY : rols
-+
-+# fast build rule for target.
-+rols/fast:
-+ $(MAKE) -f librols/CMakeFiles/rols.dir/build.make librols/CMakeFiles/rols.dir/build
-+.PHONY : rols/fast
-+
-+#=============================================================================
-+# Target rules for targets named unls
-+
-+# Build rule for target.
-+unls: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 unls
-+.PHONY : unls
-+
-+# fast build rule for target.
-+unls/fast:
-+ $(MAKE) -f libunls/CMakeFiles/unls.dir/build.make libunls/CMakeFiles/unls.dir/build
-+.PHONY : unls/fast
-+
-+#=============================================================================
-+# Target rules for targets named readom
-+
-+# Build rule for target.
-+readom: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 readom
-+.PHONY : readom
-+
-+# fast build rule for target.
-+readom/fast:
-+ $(MAKE) -f readom/CMakeFiles/readom.dir/build.make readom/CMakeFiles/readom.dir/build
-+.PHONY : readom/fast
-
-+#=============================================================================
-+# Target rules for targets named netscsid
-+
-+# Build rule for target.
-+netscsid: cmake_check_build_system
-+ $(MAKE) -f CMakeFiles/Makefile2 netscsid
-+.PHONY : netscsid
-+
-+# fast build rule for target.
-+netscsid/fast:
-+ $(MAKE) -f netscsid/CMakeFiles/netscsid.dir/build.make netscsid/CMakeFiles/netscsid.dir/build
-+.PHONY : netscsid/fast
-+
-+# Help Target
-+help:
-+ @echo "The following are some of the valid targets for this Makefile:"
-+ @echo "... all (the default if no target is provided)"
-+ @echo "... clean"
-+ @echo "... depend"
-+ @echo "... install/strip"
-+ @echo "... edit_cache"
-+ @echo "... rebuild_cache"
-+ @echo "... install"
-+ @echo "... list_install_components"
-+ @echo "... install/local"
-+ @echo "... isodebug"
-+ @echo "... genisoimage"
-+ @echo "... isodump"
-+ @echo "... isoinfo"
-+ @echo "... devdump"
-+ @echo "... isovfy"
-+ @echo "... wodimstuff"
-+ @echo "... wodim"
-+ @echo "... edc"
-+ @echo "... hfs_iso"
-+ @echo "... paranoia"
-+ @echo "... icedax"
-+ @echo "... usal"
-+ @echo "... rols"
-+ @echo "... unls"
-+ @echo "... readom"
-+ @echo "... netscsid"
-+.PHONY : help
-+
-+
-+
-+#=============================================================================
-+# Special targets to cleanup operation of make.
-+
-+# Special rule to run CMake to check the build system integrity.
-+# No rule that depends on this can have commands that come from listfiles
-+# because they might be regenerated.
-+cmake_check_build_system:
-+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-+.PHONY : cmake_check_build_system
-
diff --git a/package/cdrkit/patches/patch-genisoimage_genisoimage_h b/package/cdrkit/patches/patch-genisoimage_genisoimage_h
new file mode 100644
index 000000000..99f696ded
--- /dev/null
+++ b/package/cdrkit/patches/patch-genisoimage_genisoimage_h
@@ -0,0 +1,11 @@
+--- cdrkit-1.1.11.orig/genisoimage/genisoimage.h 2008-05-25 23:00:55.000000000 +0200
++++ cdrkit-1.1.11/genisoimage/genisoimage.h 2024-02-12 14:32:15.046582134 +0100
+@@ -376,7 +376,7 @@ extern int use_fileversion;
+ extern int split_SL_component;
+ extern int split_SL_field;
+ extern char *trans_tbl;
+-char *outfile;
++extern char *outfile;
+
+ #define JMAX 64 /* maximum Joliet file name length (spec) */
+ #define JLONGMAX 103 /* out of spec Joliet file name length */
diff --git a/package/cfgfs/Makefile b/package/cfgfs/Makefile
index addec9a7f..209b9ff88 100644
--- a/package/cfgfs/Makefile
+++ b/package/cfgfs/Makefile
@@ -4,8 +4,8 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= cfgfs
-PKG_VERSION:= 1.0.10
-PKG_RELEASE:= 4
+PKG_VERSION:= 1.0.12
+PKG_RELEASE:= 1
PKG_DESCR:= compressed config filesystem
PKG_SECTION:= base/adk
PKG_URL:= http://www.openadk.org/
diff --git a/package/cfgfs/src/fwcf.sh b/package/cfgfs/src/fwcf.sh
index c6008e93a..8954c3645 100644
--- a/package/cfgfs/src/fwcf.sh
+++ b/package/cfgfs/src/fwcf.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Copyright (c) 2006-2007
# Thorsten Glaser <tg@mirbsd.de>
-# Copyright (c) 2009-2017
+# Copyright (c) 2009-2024
# Waldemar Brodkorb <wbx@openadk.org>
#
# Provided that these terms and disclaimer and all copyright notices
@@ -43,7 +43,7 @@
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
wd=$(pwd)
cd /
-what='Configuration Filesystem Utility (cfgfs), Version 1.10'
+what='Configuration Filesystem Utility (cfgfs), Version 1.12'
who=$(id -u)
if [ $who -ne 0 ]; then
@@ -56,7 +56,7 @@ usage() {
$what
Usage:
{ halt | poweroff | reboot } [-Ffn] [-d delay]
- cfgfs { commit | erase | setup | status | dump | restore } [flags]
+ cfgfs { commit | erase | setup | status | diff | dump | restore } [flags]
EOF
exit 1
}
@@ -101,7 +101,7 @@ if [[ $me != cfgfs ]]; then
fi
case $1 in
-(commit|erase|setup|status|dump|restore) ;;
+(commit|erase|setup|status|diff|dump|restore) ;;
(*) cat >&2 <<EOF
$what
Syntax:
@@ -109,6 +109,7 @@ Syntax:
$0 erase
$0 setup [-N]
$0 status [-rq]
+ $0 diff [<diff options>]
$0 { dump | restore } [<filename>]
EOF
exit 1 ;;
@@ -139,6 +140,18 @@ if [ -f .cfgfs ]; then
fi
if [ -z $part ]; then
part=$(fdisk -l /dev/sda 2>/dev/null|awk '{if ($2=="*") { print $1" "$9} else {print $1" "$8}}'|grep '^/dev.*88.*'|tail -1|awk '{ print $1 }')
+ # find GPT partition
+ if [ -z $part ]; then
+ partnum=$(gdisk -l $rootdisk 2>/dev/null|fgrep "cfgfs"|awk '{ print $1 }')
+ if [ ! -z $partnum ]; then
+ echo $rootdisk|grep mmcblk >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ part=${rootdisk}p${partnum}
+ else
+ part=${rootdisk}${partnum}
+ fi
+ fi
+ fi
if [ -z $part ]; then
# otherwise search for MTD device with name cfgfs
part=/dev/mtd$(fgrep '"cfgfs"' /proc/mtd 2>/dev/null | sed 's/^mtd\([^:]*\):.*$/\1/')ro
@@ -435,5 +448,42 @@ if test $1 = restore; then
exit 0
fi
+if test $1 = diff; then
+ if test ! -e /tmp/.cfgfs; then
+ cat >&2 <<-EOF
+ cfgfs: error: not yet initialised
+ explanation: "cfgfs setup" was not yet run
+ EOF
+ [[ $1 = -f ]] || exit 11
+ fi
+ shift
+ tempd=/tmp/.cfgfs/temp
+ mount -t tmpfs none $tempd
+ (cd /tmp/.cfgfs/root; tar cf - .) | (cd $tempd; tar xpf - 2>/dev/null)
+ x=$(dd if="$part" bs=4 count=1 2>/dev/null)
+ [[ "$x" = "FWCF" ]] && cfgfs.helper -U $tempd <"$part"
+
+ if test -e $tempd/.cfgfs_deleted; then
+ while IFS= read -r file; do
+ rm -f "$tempd/$file"
+ done <$tempd/.cfgfs_deleted
+ rm -f $tempd/.cfgfs_deleted
+ fi
+ (cd /etc; find . -type f; \
+ cd $tempd; find . -type f \
+ ) | grep -v -e '^./.cfgfs' -e '^./.rnd$' | sort -u | while read f; do
+ f=${f#./}
+ if [ ! -e "/etc/$f" ]; then
+ echo "Deleted: /etc/$f"
+ elif [ ! -e "$tempd/$f" ]; then
+ echo "New: /etc/$f"
+ else
+ diff "$@" "$tempd/$f" "/etc/$f"
+ fi
+ done
+ umount $tempd
+ exit 0
+fi
+
echo 'cfgfs: cannot be reached...'
exit 255
diff --git a/package/cherokee/Makefile b/package/cherokee/Makefile
index 571e3d81e..a701c7fd9 100644
--- a/package/cherokee/Makefile
+++ b/package/cherokee/Makefile
@@ -4,20 +4,24 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= cherokee
-PKG_VERSION:= 1.2.101
+PKG_VERSION:= 1.2.103
PKG_RELEASE:= 1
-PKG_HASH:= ca465ab3772479fc843b38ffc45113bf24d8bfae9185cdd5176b099d5a17feb8
+PKG_HASH:= 7ec379bf7e9d6fdf952d91fadc43eb6ee5295119aea7d8dabbf89f2799a53ae6
PKG_DESCR:= small and fast webserver
PKG_SECTION:= net/http
PKG_URL:= http://www.cherokee-project.com
-PKG_SITES:= http://mirror.aarnet.edu.au/pub/cherokee/1.2/1.2.101/
+PKG_SITES:= https://github.com/cherokee/webserver/archive/
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_CFLINE_CHEROKEE:= depends on ADK_BROKEN
+
+DISTFILES:= v${PKG_VERSION}.zip
+WRKDIST= ${WRKDIR}/webserver-${PKG_VERSION}
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,CHEROKEE,cherokee,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+AUTOTOOL_STYLE:= autogen
CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes \
ac_cv_func_realloc_0_nonnull=yes
CONFIGURE_ARGS+= --enable-static-module=all \
diff --git a/package/cherrypy/Makefile b/package/cherrypy/Makefile
index 8f27f0dc8..602ca0738 100644
--- a/package/cherrypy/Makefile
+++ b/package/cherrypy/Makefile
@@ -9,8 +9,8 @@ PKG_RELEASE:= 1
PKG_HASH:= 5fccc9ad3bf9a1df83bbb934772f34f42571421bdd75f90f74c170b6c0ef13b1
PKG_DESCR:= python web framework
PKG_SECTION:= dev/python
-PKG_DEPENDS:= python2
-PKG_BUILDDEP:= python2
+PKG_DEPENDS:= python3
+PKG_BUILDDEP:= python3
PKG_URL:= http://www.cherrypy.org/
PKG_SITES:= https://pypi.python.org/packages/source/C/CherryPy/
@@ -25,7 +25,7 @@ CONFIG_STYLE:= manual
BUILD_STYLE:= manual
INSTALL_STYLE:= manual
-include $(ADK_TOPDIR)/mk/python.mk
+include $(ADK_TOPDIR)/mk/python3.mk
do-build:
cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py build
@@ -35,6 +35,6 @@ do-install:
$(INSTALL_DIR) $(IDIR_CHERRYPY)/usr/bin
$(INSTALL_DIR) $(IDIR_CHERRYPY)/usr/lib/python$(PYTHON_VERSION)
$(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/* $(IDIR_CHERRYPY)/usr/lib/python$(PYTHON_VERSION)
- $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/cherrypy/cherryd $(IDIR_CHERRYPY)/usr/bin
+ $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/CherryPy-$(PKG_VERSION)-py3.9.egg/cherrypy/cherryd $(IDIR_CHERRYPY)/usr/bin
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/chocolate-doom/Makefile b/package/chocolate-doom/Makefile
new file mode 100644
index 000000000..08ddc55d9
--- /dev/null
+++ b/package/chocolate-doom/Makefile
@@ -0,0 +1,32 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= chocolate-doom
+PKG_VERSION:= 3.0.1
+PKG_RELEASE:= 1
+PKG_HASH:= a54383beef6a52babc5b00d58fcf53a454f012ced7b1936ba359b13f1f10ac66
+PKG_DESCR:= doom
+PKG_SECTION:= app/games
+PKG_DEPENDS:= libsdl2 libsdl2-mixer libsdl2-net
+PKG_BUILDDEP:= sdl2 sdl2-mixer sdl2-net
+PKG_URL:= https://www.chocolate-doom.org
+PKG_SITES:= https://github.com/chocolate-doom/chocolate-doom/archive/refs/tags/
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,CHOCOLATE_DOOM,chocolate-doom,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+AUTOTOOL_STYLE:= autogen
+TARGET_CFLAGS+= -fcommon
+
+chocolate-doom-install:
+ $(INSTALL_DIR) $(IDIR_CHOCOLATE_DOOM)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/chocolate-doom \
+ $(IDIR_CHOCOLATE_DOOM)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/cifs-utils/Makefile b/package/cifs-utils/Makefile
index 1ce067624..37084f9f3 100644
--- a/package/cifs-utils/Makefile
+++ b/package/cifs-utils/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= cifs-utils
-PKG_VERSION:= 6.7
+PKG_VERSION:= 7.0
PKG_RELEASE:= 1
-PKG_HASH:= b2f21612474ab012e75accd167aab607a0614ff67efb56ea0f36789fa785cfab
+PKG_HASH:= 0defaab85bd3ea46ffc45ab41fb0d0ad54d05ae2cfaa7e503de86d4f12bc8161
PKG_DESCR:= network filesystem utilities
PKG_SECTION:= net/fs
PKG_KDEPENDS:= cifs
@@ -20,6 +20,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,CIFS_UTILS,cifs-utils,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
AUTOTOOL_STYLE:= autoreconf
+CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes
CONFIGURE_ARGS+= --disable-cifsupcall \
--disable-cifsidmap \
--disable-cifsacl \
diff --git a/package/cifs-utils/patches/patch-Makefile_am b/package/cifs-utils/patches/patch-Makefile_am
index 81f21cd5a..98d2d616b 100644
--- a/package/cifs-utils/patches/patch-Makefile_am
+++ b/package/cifs-utils/patches/patch-Makefile_am
@@ -1,11 +1,12 @@
---- cifs-utils-6.3.orig/Makefile.am 2014-01-09 17:19:53.000000000 +0100
-+++ cifs-utils-6.3/Makefile.am 2014-05-06 13:53:28.814703381 +0200
-@@ -4,7 +4,7 @@ ACLOCAL_AMFLAGS = -I aclocal
- root_sbindir = $(ROOTSBINDIR)
- root_sbin_PROGRAMS = mount.cifs
- mount_cifs_SOURCES = mount.cifs.c mtab.c resolve_host.c util.c
--mount_cifs_LDADD = $(LIBCAP) $(CAPNG_LDADD) $(RT_LDADD)
-+mount_cifs_LDADD = $(LIBCAP) $(CAPNG_LDADD) $(RT_LDADD) $(LIBOBJS)
+--- cifs-utils-7.0.orig/Makefile.am 2022-08-11 22:40:15.000000000 +0200
++++ cifs-utils-7.0/Makefile.am 2024-01-04 12:50:47.888452316 +0100
+@@ -117,9 +117,6 @@ endif
- man_MANS = mount.cifs.8
- include_HEADERS = cifsidmap.h
+ SUBDIRS = contrib
+
+-install-exec-hook: install-sbinPROGRAMS
+- (cd $(DESTDIR)$(ROOTSBINDIR) && ln -sf mount.cifs mount.smb3)
+-
+ install-data-hook:
+ if CONFIG_MAN
+ ( cd $(DESTDIR)$(man8dir) && ln -sf mount.cifs.8 mount.smb3.8)
diff --git a/package/cifs-utils/patches/patch-cifs_idmap_c b/package/cifs-utils/patches/patch-cifs_idmap_c
deleted file mode 100644
index be55be79f..000000000
--- a/package/cifs-utils/patches/patch-cifs_idmap_c
+++ /dev/null
@@ -1,16 +0,0 @@
---- cifs-utils-6.1.orig/cifs.idmap.c 2013-07-02 21:13:33.000000000 +0200
-+++ cifs-utils-6.1/cifs.idmap.c 2013-10-28 07:33:27.000000000 +0100
-@@ -27,7 +27,13 @@
- #endif /* HAVE_CONFIG_H */
-
- #include <string.h>
-+#ifdef HAVE_GNU_GETOPT_LONG
- #include <getopt.h>
-+#else
-+#include "gnu_getopt.h"
-+#define getopt_long gnu_getopt_long
-+#define option gnu_option
-+#endif
- #include <syslog.h>
- #include <dirent.h>
- #include <sys/types.h>
diff --git a/package/cifs-utils/patches/patch-configure_ac b/package/cifs-utils/patches/patch-configure_ac
deleted file mode 100644
index 7355a238c..000000000
--- a/package/cifs-utils/patches/patch-configure_ac
+++ /dev/null
@@ -1,33 +0,0 @@
---- cifs-utils-6.7.orig/configure.ac 2017-03-02 17:51:05.000000000 +0100
-+++ cifs-utils-6.7/configure.ac 2017-03-27 01:54:09.082783577 +0200
-@@ -93,13 +93,25 @@ AC_CHECK_TYPES([ptrdiff_t, ssize_t, uint
-
- # Checks for library functions.
- AC_FUNC_GETMNTENT
--AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
--AC_FUNC_MALLOC
--AC_FUNC_REALLOC
--AC_FUNC_STRNLEN
-
- # check for required functions
--AC_CHECK_FUNCS([alarm atexit endpwent getmntent getpass gettimeofday inet_ntop memset realpath setenv strchr strcmp strdup strerror strncasecmp strndup strpbrk strrchr strstr strtol strtoul tolower uname], , [AC_MSG_ERROR([necessary functions(s) not found])])
-+AC_CHECK_FUNCS([alarm atexit endpwent getmntent getpass gettimeofday inet_ntop malloc memset realloc realpath setenv strchr strcmp strdup strerror strncasecmp strndup strnlen strpbrk strrchr strstr strtol strtoul tolower uname], , [AC_MSG_ERROR([necessary functions(s) not found])])
-+
-+AC_CHECK_FUNCS([getopt_long], , [AC_MSG_ERROR([getopt_long function not found])])
-+AC_MSG_CHECKING([if getopt_long is GNU specific])
-+AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
-+#include <features.h>
-+#ifndef __GLIBC__
-+#error No GNU extension
-+#endif
-+ ]],[[;]])
-+ ],[
-+ AC_DEFINE(HAVE_GNU_GETOPT_LONG, 1, [Whether getopt_long has GNU extensions])
-+ AC_MSG_RESULT([yes])
-+ ],[
-+ AC_LIBOBJ([gnu_getopt])
-+ AC_MSG_RESULT([no])
-+])
-
- AC_CHECK_FUNCS(clock_gettime, [], [
- AC_CHECK_LIB(rt, clock_gettime, [
diff --git a/package/cifs-utils/patches/patch-mount_cifs_c b/package/cifs-utils/patches/patch-mount_cifs_c
deleted file mode 100644
index 583514808..000000000
--- a/package/cifs-utils/patches/patch-mount_cifs_c
+++ /dev/null
@@ -1,24 +0,0 @@
---- cifs-utils-6.7.orig/mount.cifs.c 2017-03-02 17:51:05.000000000 +0100
-+++ cifs-utils-6.7/mount.cifs.c 2017-03-27 18:57:14.519371156 +0200
-@@ -34,7 +34,13 @@
- #include <sys/utsname.h>
- #include <sys/socket.h>
- #include <arpa/inet.h>
-+#ifdef HAVE_GNU_GETOPT_LONG
- #include <getopt.h>
-+#else
-+#include "gnu_getopt.h"
-+#define getopt_long gnu_getopt_long
-+#define option gnu_option
-+#endif
- #include <errno.h>
- #include <netdb.h>
- #include <string.h>
-@@ -61,7 +67,6 @@
- #include "mount.h"
- #include "util.h"
- #include "resolve_host.h"
--#include "data_blob.h"
-
- #ifndef MS_MOVE
- #define MS_MOVE 8192
diff --git a/package/cifs-utils/patches/patch-mtab_c b/package/cifs-utils/patches/patch-mtab_c
deleted file mode 100644
index 90655935f..000000000
--- a/package/cifs-utils/patches/patch-mtab_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- cifs-utils-6.7.orig/mtab.c 2017-03-02 17:51:05.000000000 +0100
-+++ cifs-utils-6.7/mtab.c 2017-03-27 01:54:09.094784041 +0200
-@@ -36,6 +36,7 @@
- #include <time.h>
- #include <fcntl.h>
- #include <mntent.h>
-+#include <paths.h>
- #include <stdlib.h>
- #include <signal.h>
- #include <paths.h>
diff --git a/package/clamav/Makefile b/package/clamav/Makefile
index 132224245..1812b4dcb 100644
--- a/package/clamav/Makefile
+++ b/package/clamav/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= clamav
-PKG_VERSION:= 0.103.0
+PKG_VERSION:= 0.103.4
PKG_RELEASE:= 1
-PKG_HASH:= 32a9745277bfdda80e77ac9ca2f5990897418e9416880f3c31553ca673e80546
+PKG_HASH:= def0ad15500fa6aff81d8e68b9f83aa75ee5b607a01335c1d26dbcc959932f85
PKG_DESCR:= anti-virus software
PKG_SECTION:= sys/misc
PKG_DEPENDS:= libressl zlib libpcre libncurses libcurl libmspack
diff --git a/package/collectd/Makefile b/package/collectd/Makefile
index 46fa04118..3948ed519 100644
--- a/package/collectd/Makefile
+++ b/package/collectd/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= collectd
-PKG_VERSION:= 5.7.0
+PKG_VERSION:= 5.12.0
PKG_RELEASE:= 1
-PKG_HASH:= 25a05fbdc6baad571554342bbac6141928bf95a47fc60ee3b32e46d0c89ef2b2
+PKG_HASH:= 5bae043042c19c31f77eb8464e56a01a5454e0b39fa07cf7ad0f1bfc9c3a09d6
PKG_DESCR:= system statistics collection daemon
PKG_SECTION:= sys/misc
PKG_BUILDDEP:= libtool
diff --git a/package/coreutils/Makefile b/package/coreutils/Makefile
index f5a1585a2..f27fd4f00 100644
--- a/package/coreutils/Makefile
+++ b/package/coreutils/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= coreutils
-PKG_VERSION:= 9.0
+PKG_VERSION:= 9.4
PKG_RELEASE:= 1
-PKG_HASH:= ce30acdf4a41bc5bb30dd955e9eaa75fa216b4e3deb08889ed32433c7b3b97ce
+PKG_HASH:= ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52
PKG_DESCR:= file, shell and text utilities
PKG_SECTION:= base/apps
PKG_NEEDS:= threads
diff --git a/package/cpio/Makefile b/package/cpio/Makefile
index c1764b566..e1f03e8fa 100644
--- a/package/cpio/Makefile
+++ b/package/cpio/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= cpio
-PKG_VERSION:= 2.11
+PKG_VERSION:= 2.15
PKG_RELEASE:= 1
-PKG_HASH:= 601b1d774cd6e4cd39416203c91ec59dbd65dd27d79d75e1a9b89497ea643978
+PKG_HASH:= efa50ef983137eefc0a02fdb51509d624b5e3295c980aa127ceee4183455499e
PKG_DESCR:= archive utility
PKG_SECTION:= app/archive
PKG_URL:= http://www.gnu.org/software/cpio/
diff --git a/package/cpio/patches/patch-gnu_stdio_in_h b/package/cpio/patches/patch-gnu_stdio_in_h
deleted file mode 100644
index fa9b89fb8..000000000
--- a/package/cpio/patches/patch-gnu_stdio_in_h
+++ /dev/null
@@ -1,13 +0,0 @@
---- cpio-2.11.orig/gnu/stdio.in.h 2010-03-10 10:27:03.000000000 +0100
-+++ cpio-2.11/gnu/stdio.in.h 2013-07-16 12:56:00.000000000 +0200
-@@ -138,8 +138,10 @@ _GL_WARN_ON_USE (fflush, "fflush is not
- /* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
-+/*
- #undef gets
- _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-+*/
-
- #if @GNULIB_FOPEN@
- # if @REPLACE_FOPEN@
diff --git a/package/cpio/patches/patch-src_filetypes_h b/package/cpio/patches/patch-src_filetypes_h
deleted file mode 100644
index f33bfa9f3..000000000
--- a/package/cpio/patches/patch-src_filetypes_h
+++ /dev/null
@@ -1,8 +0,0 @@
---- cpio-2.11.orig/src/filetypes.h 2010-02-12 11:19:23.000000000 +0100
-+++ cpio-2.11/src/filetypes.h 2010-06-08 18:26:43.633473938 +0200
-@@ -82,4 +82,4 @@
- #define lstat stat
- #endif
- int lstat ();
--int stat ();
-+//int stat ();
diff --git a/package/crda/Makefile b/package/crda/Makefile
deleted file mode 100644
index c63608b6e..000000000
--- a/package/crda/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= crda
-PKG_VERSION:= 1.1.3
-PKG_RELEASE:= 1
-PKG_HASH:= aa8a7fe92f0765986c421a5b6768a185375ac210393df0605ee132f6754825f0
-PKG_DESCR:= central regulatory domain agent for wireless networks
-PKG_SECTION:= net/wifi
-PKG_DEPENDS:= libnl
-PKG_BUILDDEP:= libnl
-PKG_URL:= http://wireless.kernel.org/en/developers/Regulatory
-PKG_SITES:= http://linuxwireless.org/download/crda/
-
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2
-
-PKG_FLAVOURS_CRDA:= WITH_UDEV
-PKGFD_WITH_UDEV:= install shipped udev rules
-PKGFS_WITH_UDEV:= udev
-PKGFB_WITH_UDEV:= eudev
-
-PKG_CHOICES_CRDA:= WITH_LIBRESSL WITH_GCRYPT
-PKGCD_WITH_LIBRESSL:= ssl support via libressl library
-PKGCB_WITH_LIBRESSL:= libressl
-PKGCS_WITH_LIBRESSL:= libressl
-PKGCD_WITH_GCRYPT:= ssl support via gcrypt library
-PKGCB_WITH_GCRYPT:= libgcrypt
-PKGCS_WITH_GCRYPT:= libgcrypt
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,CRDA,crda,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-CONFIG_STYLE:= manual
-ALL_TARGET:= all_noverify
-
-ifneq ($(ADK_PACKAGE_CRDA_WITH_LIBRESSL),)
-XAKE_FLAGS+= USE_OPENSSL=1
-endif
-
-crda-install:
- $(INSTALL_DIR) $(IDIR_CRDA)/usr/sbin
- $(INSTALL_BIN) $(WRKINST)/sbin/{crda,regdbdump} \
- $(IDIR_CRDA)/usr/sbin
-ifneq ($(ADK_PACKAGE_CRDA_WITH_UDEV),)
- $(INSTALL_DIR) $(IDIR_CRDA)/lib/udev/rules.d
- $(INSTALL_DATA) $(WRKINST)/lib/udev/rules.d/85-regulatory.rules \
- $(IDIR_CRDA)/lib/udev/rules.d
-endif
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/crda/patches/patch-Makefile b/package/crda/patches/patch-Makefile
deleted file mode 100644
index 752b3aeb5..000000000
--- a/package/crda/patches/patch-Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
---- crda-1.1.3.orig/Makefile 2012-01-19 03:19:09.000000000 +0100
-+++ crda-1.1.3/Makefile 2015-11-14 09:17:04.000000000 +0100
-@@ -103,7 +103,7 @@ $(REG_BIN):
- keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
- $(NQ) ' GEN ' $@
- $(NQ) ' Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem)
-- $(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@
-+ $(Q)PATH="/usr/bin:/usr/local/bin" ./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@
-
- %.o: %.c regdb.h reglib.h
- $(NQ) ' CC ' $@
diff --git a/package/cryptodev-linux/Makefile b/package/cryptodev-linux/Makefile
index cfd060552..d81a1b918 100644
--- a/package/cryptodev-linux/Makefile
+++ b/package/cryptodev-linux/Makefile
@@ -4,7 +4,7 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= cryptodev-linux
-PKG_VERSION:= a705360197260d28535746ae98c461ba2cfb7a9e
+PKG_VERSION:= 5e7121e45ff283d30097da381fd7e97c4bb61364
PKG_GIT:= hash
PKG_RELEASE:= 1
PKG_DESCR:= device that allows access to kernel cryptographic drivers
diff --git a/package/cups/Makefile b/package/cups/Makefile
index 1f4251669..9ecb5b17f 100644
--- a/package/cups/Makefile
+++ b/package/cups/Makefile
@@ -4,20 +4,19 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= cups
-PKG_VERSION:= 1.7.1
-PKG_RELEASE:= 4
-PKG_HASH:= f52bec893d9daf92b6029be79c07e6c516b4c85ffae3e6e01885cc85e9081681
+PKG_VERSION:= 2.3.6
+PKG_RELEASE:= 1
+PKG_HASH:= 3a96912fc88f62c5d8ac9b251bf0652f1cbe7e69cde16919103aea39f31a1a84
PKG_DESCR:= common unix printing system
PKG_SECTION:= net/misc
PKG_DEPENDS:= zlib
-PKG_BUILDDEP:= cups-host zlib
-PKG_NEEDS:= threads c++
+PKG_BUILDDEP:= zlib
+PKG_NEEDS:= threads c++ iconv
PKG_URL:= http://www.cups.org/
-PKG_SITES:= http://www.cups.org/software/${PKG_VERSION}/
+PKG_SITES:= https://github.com/apple/cups/archive/refs/tags/
PKG_OPTS:= dev
-PKG_NOPARALLEL:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}-source.tar.bz2
+DISTFILES:= v${PKG_VERSION}.tar.gz
include ${ADK_TOPDIR}/mk/host.mk
include ${ADK_TOPDIR}/mk/package.mk
@@ -25,35 +24,25 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call HOST_template,CUPS,cups,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,CUPS,cups,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-ifeq ($(ADK_PACKAGE_LIBICONV),y)
-TARGET_LDFLAGS+= -liconv
-endif
-
ifneq ($(ADK_HOST_LINUX),y)
HOST_LINUX_ONLY:= 1
endif
-HOST_LDFLAGS+= -liconv
HOST_CONFIGURE_ARGS+= --disable-tcp-wrappers \
--disable-webif \
--disable-gssapi \
--disable-avahi \
--disable-pam \
--disable-dbus \
- --without-java \
- --without-perl \
- --without-python \
- --without-php \
--disable-gnutls \
- --disable-openssl \
--disable-cdsassl \
--disable-dbus \
--disable-ssl \
+ --disable-systemd \
--with-components=core \
--with-rcdir=$(STAGING_HOST_DIR)/etc
CONFIGURE_ENV+= ac_cv_func_sigset=no \
OPTIM='-fPIC -std=c89' LSB_BUILD=y
-
CONFIGURE_ARGS+= --with-cups-user=cups \
--with-cups-group=cups \
--libdir=/usr/lib \
@@ -76,8 +65,6 @@ CONFIGURE_ARGS+= --with-cups-user=cups \
--with-components=core \
--with-rcdir=$(STAGING_TARGET_DIR)/etc
-FAKE_FLAGS+= DSTROOT="${WRKINST}" STRIP="/bin/true"
-
cups-install:
${INSTALL_DIR} ${IDIR_CUPS}/usr/lib
${CP} ${WRKINST}/usr/lib/libcups*.so* ${IDIR_CUPS}/usr/lib/
diff --git a/package/cups/patches/patch-Makedefs_in b/package/cups/patches/patch-Makedefs_in
deleted file mode 100644
index 1a8f91894..000000000
--- a/package/cups/patches/patch-Makedefs_in
+++ /dev/null
@@ -1,10 +0,0 @@
---- cups-1.7.1.orig/Makedefs.in 2013-07-17 17:21:18.000000000 +0200
-+++ cups-1.7.1/Makedefs.in 2014-01-31 08:40:55.000000000 +0100
-@@ -238,7 +238,6 @@ DBUSDIR = @DBUSDIR@
- # Rules...
- #
-
--.SILENT:
- .SUFFIXES: .1 .1.gz .1m .1m.gz .3 .3.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .gz
-
- .c.o:
diff --git a/package/cups/patches/patch-configure b/package/cups/patches/patch-configure
deleted file mode 100644
index 3a4974140..000000000
--- a/package/cups/patches/patch-configure
+++ /dev/null
@@ -1,14 +0,0 @@
---- cups-1.7.1.orig/configure 2014-01-08 17:26:27.000000000 +0100
-+++ cups-1.7.1/configure 2014-01-31 16:48:50.000000000 +0100
-@@ -2490,9 +2490,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
--uname=`uname`
--uversion=`uname -r | sed -e '1,$s/^[^0-9]*\([0-9]*\)\.\([0-9]*\).*/\1\2/'`
--uarch=`uname -m`
-+uname=Linux
-+uversion=3.0
-
- case "$uname" in
- Darwin*)
diff --git a/package/curl/Makefile b/package/curl/Makefile
index 916567912..f01184500 100644
--- a/package/curl/Makefile
+++ b/package/curl/Makefile
@@ -4,12 +4,11 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= curl
-PKG_VERSION:= 7.79.1
+PKG_VERSION:= 8.6.0
PKG_RELEASE:= 1
-PKG_HASH:= 0606f74b1182ab732a17c11613cbbaf7084f2e6cca432642d0e3ad7c224c3689
+PKG_HASH:= 3ccd55d91af9516539df80625f818c734dc6f2ecf9bada33c76765e99121db15
PKG_DESCR:= client-side url transfer tool
PKG_SECTION:= net/http
-PKG_DEPENDS:= libcurl
PKG_BUILDDEP:= zlib
PKG_NEEDS:= threads
PKG_URL:= https://curl.se/
@@ -17,18 +16,24 @@ PKG_SITES:= https://curl.se/download/
PKG_LIBNAME:= libcurl
PKG_OPTS:= dev
-PKG_SUBPKGS:= CURL LIBCURL
+PKG_SUBPKGS:= LIBCURL CURL
PKGSD_LIBCURL:= client-side url transfer library
PKGSC_LIBCURL:= libs/net
PKGSS_LIBCURL:= zlib
+PKGSD_CURL:= client-side url transfer utiity
+PKGSC_CURL:= net/http
+PKGSS_CURL:= zlib libcurl
-PKG_FLAVOURS_CURL:= WITH_IPV6
+PKG_FLAVOURS_LIBCURL:= WITH_IPV6
PKGFD_WITH_IPV6:= enable ipv6 support
-PKG_CHOICES_CURL:= WITH_LIBRESSL WITH_GNUTLS WITH_WOLFSSL WITHOUT_SSL
+PKG_CHOICES_LIBCURL:= WITH_LIBRESSL WITH_OPENSSL WITH_GNUTLS WITH_WOLFSSL WITHOUT_SSL
PKGCD_WITH_LIBRESSL:= use libressl for crypto
PKGCS_WITH_LIBRESSL:= libressl ca-certificates
PKGCB_WITH_LIBRESSL:= libressl
+PKGCD_WITH_OPENSSL:= use libopenssl for crypto
+PKGCS_WITH_OPENSSL:= libopenssl ca-certificates
+PKGCB_WITH_OPENSSL:= openssl
PKGCD_WITH_GNUTLS:= use gnutls for crypto
PKGCS_WITH_GNUTLS:= libgnutls ca-certificates
PKGCB_WITH_GNUTLS:= gnutls
@@ -41,42 +46,43 @@ include ${ADK_TOPDIR}/mk/host.mk
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call HOST_template,CURL,curl,${PKG_VERSION}-${PKG_RELEASE}))
-$(eval $(call PKG_template,CURL,curl,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,LIBCURL,libcurl,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_LIBCURL},${PKGSD_LIBCURL},${PKGSC_LIBCURL},${PKG_OPTS}))
+$(eval $(call PKG_template,CURL,curl,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-HOST_CONFIGURE_ARGS+= --without-ssl
+HOST_CONFIGURE_ARGS+= --without-ssl \
+ --without-libpsl
-ifeq (${ADK_PACKAGE_CURL_WITH_LIBRESSL},y)
-CONFIGURE_ARGS+= --with-ssl="${STAGING_TARGET_DIR}/usr" \
- --without-gnutls \
- --without-axtls
+ifeq (${ADK_PACKAGE_LIBCURL_WITH_LIBRESSL},y)
+CONFIGURE_ARGS+= --with-openssl="${STAGING_TARGET_DIR}/usr" \
+ --without-gnutls
+endif
+ifeq (${ADK_PACKAGE_LIBCURL_WITH_OPENSSL},y)
+CONFIGURE_ARGS+= --with-openssl="${STAGING_TARGET_DIR}/usr" \
+ --without-gnutls
endif
-ifeq (${ADK_PACKAGE_CURL_WITH_GNUTLS},y)
+ifeq (${ADK_PACKAGE_LIBCURL_WITH_GNUTLS},y)
CONFIGURE_ARGS+= --with-gnutls="${STAGING_TARGET_DIR}/usr" \
- --without-ssl \
- --without-axtls
+ --without-openssl
endif
-ifeq (${ADK_PACKAGE_CURL_WITH_WOLFSSL},y)
+ifeq (${ADK_PACKAGE_LIBCURL_WITH_WOLFSSL},y)
CONFIGURE_ARGS+= --with-cyassl="${STAGING_TARGET_DIR}/usr" \
- --without-ssl \
- --without-gnutls \
- --without-axtls
+ --without-openssl \
+ --without-gnutls
endif
-ifeq (${ADK_PACKAGE_CURL_WITHOUT_SSL},y)
+ifeq (${ADK_PACKAGE_LIBCURL_WITHOUT_SSL},y)
CONFIGURE_ARGS+= --without-ssl \
- --without-gnutls \
- --without-axtls
+ --without-gnutls
endif
-CONFIGURE_ENV+= curl_typeof_curl_socklen_t=socklen_t
+CONFIGURE_ENV+= curl_typeof_curl_socklen_t=socklen_t \
+ LDFLAGS='$(TARGET_LDFLAGS) -latomic'
CONFIGURE_ARGS+= --enable-cookies \
- --enable-crypto-auth \
- --enable-nonblocking \
--enable-file \
--enable-ftp \
--enable-http \
--enable-proxy \
--disable-curldebug \
+ --disable-ntlm \
--disable-ntlm-wb \
--disable-symbol-hiding \
--disable-ares \
@@ -91,13 +97,13 @@ CONFIGURE_ARGS+= --enable-cookies \
--disable-telnet \
--disable-verbose \
--without-libssh2 \
+ --without-libpsl \
--without-librtmp \
- --without-libidn \
--with-ca-path="/etc/ssl/certs" \
--with-random="/dev/urandom" \
--without-ca-bundle
-ifneq (${ADK_PACKAGE_CURL_WITH_IPV6},)
+ifneq (${ADK_PACKAGE_LIBCURL_WITH_IPV6},)
CONFIGURE_ARGS+= --enable-ipv6
else
CONFIGURE_ARGS+= --disable-ipv6
diff --git a/package/cxxtools/Makefile b/package/cxxtools/Makefile
deleted file mode 100644
index 0d02595c8..000000000
--- a/package/cxxtools/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= cxxtools
-PKG_VERSION:= 2.2.1
-PKG_RELEASE:= 2
-PKG_HASH:= 8cebb6d6cda7c93cc4f7c0d552a68d50dd5530b699cf87916bb3b708fdc4e342
-PKG_DESCR:= collection of general-purpose c++ classes
-PKG_NEEDS:= c++
-PKG_SECTION:= libs/misc
-PKG_URL:= http://www.tntnet.org/
-PKG_SITES:= http://www.tntnet.org/download/
-PKG_OPTS:= dev
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,CXXTOOLS,cxxtools,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-
-ifeq ($(ADK_TARGET_ARCH_XTENSA),y)
-CONFIGURE_ARGS+= --with-atomictype=generic
-endif
-ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3),y)
-CONFIGURE_ARGS+= --with-atomictype=pthread
-endif
-ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3P),y)
-CONFIGURE_ARGS+= --with-atomictype=pthread
-endif
-CONFIGURE_ARGS+= --disable-demos \
- --disable-unittest
-
-cxxtools-install:
- ${INSTALL_DIR} ${IDIR_CXXTOOLS}/usr/lib
- ${CP} ${WRKINST}/usr/lib/libcxxtools.so* ${IDIR_CXXTOOLS}/usr/lib
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/dansguardian/Makefile b/package/dansguardian/Makefile
deleted file mode 100644
index 4d27872ed..000000000
--- a/package/dansguardian/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= dansguardian
-PKG_VERSION:= 2.12.0.3
-PKG_RELEASE:= 2
-PKG_HASH:= c74e9a32b97f9a9a056fced3da23fe48fca2bc6aa9af670afe9a53dc819414f5
-PKG_DESCR:= web content filter proxy
-PKG_SECTION:= net/proxy
-PKG_DEPENDS:= libpcre zlib
-PKG_BUILDDEP:= pcre zlib
-PKG_NEEDS:= c++
-PKG_URL:= http://dansguardian.org/
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=dansguardian/}
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,DANSGUARDIAN,dansguardian,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIGURE_ARGS+= --enable-orig-ip \
- --with-proxyuser=proxy \
- --with-proxygroup=proxy
-
-dansguardian-install:
- ${INSTALL_DIR} ${IDIR_DANSGUARDIAN}/usr/sbin \
- ${IDIR_DANSGUARDIAN}/etc/dansguardian \
- ${IDIR_DANSGUARDIAN}/usr/share/dansguardian/languages/ukenglish
- ${CP} ${WRKINST}/usr/share/dansguardian/languages/ukenglish/* \
- ${IDIR_DANSGUARDIAN}/usr/share/dansguardian/languages/ukenglish
- ${CP} ${WRKINST}/usr/share/dansguardian/transparent1x1.gif \
- ${IDIR_DANSGUARDIAN}/usr/share/dansguardian
- ${CP} ${WRKINST}/etc/dansguardian/* \
- ${IDIR_DANSGUARDIAN}/etc/dansguardian
- ${INSTALL_BIN} ${WRKINST}/usr/sbin/dansguardian \
- ${IDIR_DANSGUARDIAN}/usr/sbin/
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/dansguardian/files/dansguardian.init b/package/dansguardian/files/dansguardian.init
deleted file mode 100644
index f8f40a9ca..000000000
--- a/package/dansguardian/files/dansguardian.init
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-#PKG dansguardian
-#INIT 80
-
-. /etc/rc.conf
-
-case $1 in
-autostop) ;;
-autostart)
- test x"${dansguardian:-NO}" = x"NO" && exit 0
- test x"$dansguardian" = x"DAEMON" && test -x /bin/mksh && exec mksh -T- $0 start
- exec sh $0 start
- ;;
-start)
- if [ ! -f /var/log/dansguardian-access.log ];then
- touch /var/log/dansguardian-access.log
- chown proxy:proxy /var/log/dansguardian-access.log
- fi
- /usr/sbin/dansguardian
- ;;
-stop)
- kill $(pgrep -f /usr/sbin/dansguardian)
- ;;
-restart)
- sh $0 stop
- sh $0 start
- ;;
-
-*)
- echo "usage: $0 {start | stop | restart}"
- exit 1
-esac
-exit $?
diff --git a/package/dansguardian/files/dansguardian.postinst b/package/dansguardian/files/dansguardian.postinst
deleted file mode 100644
index 8068f3d34..000000000
--- a/package/dansguardian/files/dansguardian.postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-. $IPKG_INSTROOT/etc/functions.sh
-gid=$(get_next_gid)
-add_user dansguardian $(get_next_uid) $gid /etc/dansguardian
-add_group dansguardian $gid
-add_rcconf dansguardian NO
diff --git a/package/dansguardian/patches/patch-src_ImageContainer_cpp b/package/dansguardian/patches/patch-src_ImageContainer_cpp
deleted file mode 100644
index 27ccecafc..000000000
--- a/package/dansguardian/patches/patch-src_ImageContainer_cpp
+++ /dev/null
@@ -1,10 +0,0 @@
---- dansguardian-2.12.0.3.orig/src/ImageContainer.cpp 2012-09-29 22:06:45.000000000 +0200
-+++ dansguardian-2.12.0.3/src/ImageContainer.cpp 2013-12-07 10:07:04.000000000 +0100
-@@ -16,6 +16,7 @@
- #include <stdexcept>
- #include <cerrno>
- #include <limits.h>
-+#include <string.h>
-
-
- // GLOBALS
diff --git a/package/dansguardian/patches/patch-src_SocketArray_cpp b/package/dansguardian/patches/patch-src_SocketArray_cpp
deleted file mode 100644
index c08c483eb..000000000
--- a/package/dansguardian/patches/patch-src_SocketArray_cpp
+++ /dev/null
@@ -1,10 +0,0 @@
---- dansguardian-2.12.0.3.orig/src/SocketArray.cpp 2011-08-02 15:31:45.000000000 +0200
-+++ dansguardian-2.12.0.3/src/SocketArray.cpp 2013-12-07 10:07:51.000000000 +0100
-@@ -14,6 +14,7 @@
-
- #include <syslog.h>
- #include <cerrno>
-+#include <string.h>
-
-
- // GLOBALS
diff --git a/package/dansguardian/patches/patch-src_UDSocket_cpp b/package/dansguardian/patches/patch-src_UDSocket_cpp
deleted file mode 100644
index 3922e98f1..000000000
--- a/package/dansguardian/patches/patch-src_UDSocket_cpp
+++ /dev/null
@@ -1,10 +0,0 @@
---- dansguardian-2.12.0.3.orig/src/UDSocket.cpp 2012-09-29 22:06:45.000000000 +0200
-+++ dansguardian-2.12.0.3/src/UDSocket.cpp 2013-12-07 10:05:50.000000000 +0100
-@@ -21,6 +21,7 @@
- #include <unistd.h>
- #include <stdexcept>
- #include <stddef.h>
-+#include <string.h>
-
- #ifdef DGDEBUG
- #include <iostream>
diff --git a/package/davfs2/Makefile b/package/davfs2/Makefile
index 79cb2f960..556ccb9f1 100644
--- a/package/davfs2/Makefile
+++ b/package/davfs2/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= davfs2
-PKG_VERSION:= 1.5.2
+PKG_VERSION:= 1.7.0
PKG_RELEASE:= 1
-PKG_HASH:= be34a19ab57a6ea77ecb82083e9e4c1882e12b2de64257de567ad5ee7a17b358
+PKG_HASH:= 251db75a27380cca1330b1b971700c5e5dcc0c90e5a47622285f0140edfe3a2f
PKG_DESCR:= webdav filesystem
PKG_SECTION:= net/fs
PKG_DEPENDS:= fuse-utils neon
@@ -14,7 +14,7 @@ PKG_BUILDDEP:= neon fuse
PKG_URL:= http://savannah.nongnu.org/projects/davfs2/
PKG_SITES:= http://download.savannah.gnu.org/releases/davfs2/
-PKG_LIBC_DEPENDS:= uclibc-ng glibc
+PKG_LIBC_DEPENDS:= glibc
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
@@ -22,7 +22,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,DAVFS2,davfs2,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOLS_STYLE:= autoreconf
+AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --with-neon
CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes
diff --git a/package/davfs2/patches/patch-configure_ac b/package/davfs2/patches/patch-configure_ac
new file mode 100644
index 000000000..c07fcf365
--- /dev/null
+++ b/package/davfs2/patches/patch-configure_ac
@@ -0,0 +1,11 @@
+--- davfs2-1.7.0.orig/configure.ac 2022-09-08 22:17:15.000000000 +0200
++++ davfs2-1.7.0/configure.ac 2024-02-22 09:55:30.529042778 +0100
+@@ -36,7 +36,7 @@ AC_PROG_LN_S
+ # Checks for libraries.
+ AM_GNU_GETTEXT_VERSION(0.19.8)
+ AM_GNU_GETTEXT([external])
+-NE_REQUIRE_VERSIONS([0], [27 28 29 30 31 32])
++NE_REQUIRE_VERSIONS([0], [27 28 29 30 31 32 33])
+ DAV_CHECK_NEON
+
+ # Checks for header files.
diff --git a/package/davfs2/patches/patch-src_Makefile_am b/package/davfs2/patches/patch-src_Makefile_am
deleted file mode 100644
index 318ebd27b..000000000
--- a/package/davfs2/patches/patch-src_Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
---- davfs2-1.5.2.orig/src/Makefile.am 2014-04-22 21:19:02.000000000 +0200
-+++ davfs2-1.5.2/src/Makefile.am 2015-10-20 07:52:29.000000000 +0200
-@@ -32,8 +32,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c
- kernel_interface.h mount_davfs.h webdav.h
- umount_davfs_SOURCES = umount_davfs.c defaults.h
-
--AM_CFLAGS = -Wall -Werror=format-security \
-- -fstack-protector --param=ssp-buffer-size=4
-+AM_CFLAGS = -Wall -Werror=format-security
- DEFS = -DPROGRAM_NAME=\"mount.davfs\" \
- -DDAV_SYS_CONF_DIR=\"$(pkgsysconfdir)\" \
- -DDAV_LOCALSTATE_DIR=\"$(dav_localstatedir)\" \
diff --git a/package/davfs2/patches/patch-src_Makefile_in b/package/davfs2/patches/patch-src_Makefile_in
deleted file mode 100644
index c99e6071d..000000000
--- a/package/davfs2/patches/patch-src_Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
---- davfs2-1.5.2.orig/src/Makefile.in 2014-08-23 20:13:17.000000000 +0200
-+++ davfs2-1.5.2/src/Makefile.in 2016-09-24 10:24:45.225043359 +0200
-@@ -248,8 +248,7 @@ mount_davfs_SOURCES = cache.c dav_coda.c
- kernel_interface.h mount_davfs.h webdav.h
-
- umount_davfs_SOURCES = umount_davfs.c defaults.h
--AM_CFLAGS = -Wall -Werror=format-security \
-- -fstack-protector --param=ssp-buffer-size=4
-+AM_CFLAGS =
-
- all: all-am
-
diff --git a/package/dbus-python/Makefile b/package/dbus-python/Makefile
index 41bddeadd..ead0f05b9 100644
--- a/package/dbus-python/Makefile
+++ b/package/dbus-python/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= dbus-python
-PKG_VERSION:= 1.2.0
-PKG_RELEASE:= 2
-PKG_HASH:= e12c6c8b2bf3a9302f75166952cbe41d6b38c3441bbc6767dbd498942316c6df
+PKG_VERSION:= 1.3.2
+PKG_RELEASE:= 1
+PKG_HASH:= ad67819308618b5069537be237f8e68ca1c7fcc95ee4a121fe6845b1418248f8
PKG_DESCR:= python bindings for dbus
PKG_SECTION:= dev/python
PKG_DEPENDS:= dbus dbus-glib
@@ -20,15 +20,17 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,DBUS_PYTHON,dbus-python,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+include $(ADK_TOPDIR)/mk/python3.mk
+
dbus-python-install:
- $(INSTALL_DIR) $(IDIR_DBUS_PYTHON)/usr/lib/python2.7/site-packages/
- $(CP) $(WRKINST)/usr/lib/python2.7/site-packages/*.so \
- $(IDIR_DBUS_PYTHON)/usr/lib/python2.7/site-packages/
- $(INSTALL_DIR) $(IDIR_DBUS_PYTHON)/usr/lib/python2.7/site-packages/dbus
- $(CP) $(WRKINST)/usr/lib/python2.7/site-packages/dbus/*.py \
- $(IDIR_DBUS_PYTHON)/usr/lib/python2.7/site-packages/dbus/
- $(INSTALL_DIR) $(IDIR_DBUS_PYTHON)/usr/lib/python2.7/site-packages/dbus/mainloop
- $(CP) $(WRKINST)/usr/lib/python2.7/site-packages/dbus/mainloop/*.py \
- $(IDIR_DBUS_PYTHON)/usr/lib/python2.7/site-packages/dbus/mainloop
+ $(INSTALL_DIR) $(IDIR_DBUS_PYTHON)/usr/lib/python$(PYTHON_VERSION)/site-packages/
+ $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/*.so \
+ $(IDIR_DBUS_PYTHON)/usr/lib/python$(PYTHON_VERSION)/site-packages/
+ $(INSTALL_DIR) $(IDIR_DBUS_PYTHON)/usr/lib/python$(PYTHON_VERSION)/site-packages/dbus
+ $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/dbus/*.py \
+ $(IDIR_DBUS_PYTHON)/usr/lib/python$(PYTHON_VERSION)/site-packages/dbus/
+ $(INSTALL_DIR) $(IDIR_DBUS_PYTHON)/usr/lib/python$(PYTHON_VERSION)/site-packages/dbus/mainloop
+ $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/dbus/mainloop/*.py \
+ $(IDIR_DBUS_PYTHON)/usr/lib/python$(PYTHON_VERSION)/site-packages/dbus/mainloop
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/dbus-python/patches/patch-configure b/package/dbus-python/patches/patch-configure
deleted file mode 100644
index f13116469..000000000
--- a/package/dbus-python/patches/patch-configure
+++ /dev/null
@@ -1,11 +0,0 @@
---- dbus-python-1.2.0.orig/configure 2013-05-08 09:48:42.000000000 +0200
-+++ dbus-python-1.2.0/configure 2013-12-13 12:52:44.522656370 +0100
-@@ -11762,7 +11762,7 @@ $as_echo "$as_me: PYTHON_INCLUDES overri
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python headers using $PYTHON-config --includes" >&5
- $as_echo_n "checking for Python headers using $PYTHON-config --includes... " >&6; }
-- PYTHON_INCLUDES=`$PYTHON-config --includes`
-+ PYTHON_INCLUDES=`python-config --includes`
- if test $? = 0; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDES" >&5
- $as_echo "$PYTHON_INCLUDES" >&6; }
diff --git a/package/dbus/Makefile b/package/dbus/Makefile
index c32a5fdcd..90ac2f089 100644
--- a/package/dbus/Makefile
+++ b/package/dbus/Makefile
@@ -5,7 +5,7 @@ include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= dbus
PKG_VERSION:= 1.10.20
-PKG_RELEASE:= 1
+PKG_RELEASE:= 3
PKG_HASH:= e574b9780b5425fde4d973bb596e7ea0f09e00fe2edd662da9016e976c460b48
PKG_DESCR:= desktop bus daemon
PKG_SECTION:= sys/misc
@@ -24,10 +24,6 @@ PKGSD_LIBDBUS:= DBUS library
PKGSC_LIBDBUS:= libs/misc
PKGSS_LIBDBUS:= libexpat libuuid
-PKG_FLAVOURS_DBUS:= WITH_SYSTEMD
-PKGFD_WITH_SYSTEMD:= enable systemd support
-PKGFB_WITH_SYSTEMD:= systemd
-
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,DBUS,dbus,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
@@ -36,20 +32,15 @@ $(eval $(call PKG_template,LIBDBUS,libdbus,${PKG_VERSION}-${PKG_RELEASE},${PKGSS
TARGET_LDFLAGS+= -luuid
AUTOTOOL_STYLE:= autoreconf
-ifeq ($(ADK_PACKAGE_DBUS_WITH_SYSTEMD),y)
-CONFIGURE_ARGS+= --enable-systemd --with-systemdsystemunitdir=/usr/lib/systemd/system
-TARGET_LDFLAGS+= -lsystemd
-else
-CONFIGURE_ARGS+= --disable-systemd
-endif
-
-CONFIGURE_ARGS+= --disable-tests \
+CONFIGURE_ARGS+= --disable-systemd \
+ --disable-tests \
--disable-asserts \
--enable-abstract-sockets \
--with-dbus-user=dbus \
--with-system-socket=/run/dbus/system_bus_socket \
--with-system-pid-file=/run/dbus/dbus.pid \
--disable-verbose-mode \
+ --disable-apparmor \
--disable-kqueue \
--disable-selinux \
--disable-libaudit \
@@ -76,10 +67,6 @@ dbus-install:
${CP} ${WRKINST}/etc/dbus-1 ${IDIR_DBUS}/etc
${CP} ${WRKINST}/usr/share/dbus-1 ${IDIR_DBUS}/usr/share
${CP} ${WRKINST}/usr/bin/dbus-* ${IDIR_DBUS}/usr/bin
-ifeq ($(ADK_PACKAGE_DBUS_WITH_SYSTEMD),y)
- ${INSTALL_DIR} ${IDIR_DBUS}/usr/lib/systemd
- ${CP} ${WRKINST}/usr/lib/systemd/* ${IDIR_DBUS}/usr/lib/systemd
-endif
# workaround for dev subpackage
${INSTALL_DIR} $(IDIR_DBUS_DEV)/usr/include/dbus-1.0/dbus
$(CP) $(WRKBUILD)/dbus/dbus-arch-deps.h \
diff --git a/package/deco/Makefile b/package/deco/Makefile
index 532f9e22a..bb3c1ca08 100644
--- a/package/deco/Makefile
+++ b/package/deco/Makefile
@@ -20,6 +20,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,DECO,deco,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_CFLAGS+= -fcommon
TARGET_LDFLAGS+= -ltinfo
INSTALL_STYLE:= manual
diff --git a/package/dhcp/Makefile b/package/dhcp/Makefile
index d86e13725..a007837d1 100644
--- a/package/dhcp/Makefile
+++ b/package/dhcp/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= dhcp
-PKG_VERSION:= 4.3.5
+PKG_VERSION:= 4.4.3-P1
PKG_RELEASE:= 1
-PKG_HASH:= eb95936bf15d2393c55dd505bc527d1d4408289cec5a9fa8abb99f7577e7f954
+PKG_HASH:= 0ac416bb55997ca8632174fd10737fd61cdb8dba2752160a335775bc21dc73c7
PKG_DESCR:= dhcp server
PKG_SECTION:= net/dns
PKG_URL:= https://www.isc.org/software/dhcp/
-PKG_SITES:= ftp://ftp.isc.org/isc/dhcp/${PKG_VERSION}/
+PKG_SITES:= https://downloads.isc.org/isc/dhcp/$(PKG_VERSION)/
PKG_NOPARALLEL:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/dhcp/patches/patch-bind_Makefile_in b/package/dhcp/patches/patch-bind_Makefile_in
deleted file mode 100644
index 8f686ec26..000000000
--- a/package/dhcp/patches/patch-bind_Makefile_in
+++ /dev/null
@@ -1,13 +0,0 @@
---- dhcp-4.3.5.orig/bind/Makefile.in 2016-09-27 21:54:32.000000000 +0200
-+++ dhcp-4.3.5/bind/Makefile.in 2016-11-26 07:21:39.000000000 +0100
-@@ -30,7 +30,9 @@ bindconfig = --disable-kqueue --disable-
- --without-openssl --without-libxml2 --enable-exportlib \
- --with-gssapi=no --enable-threads=no @BINDCONFIG@ \
- --with-export-includedir=${binddir}/include \
-- --with-export-libdir=${binddir}/lib
-+ --with-export-libdir=${binddir}/lib \
-+ --target=@target_alias@ --host=@host_alias@ \
-+ --build=@build_alias@
-
- @BIND_ATF_FALSE@cleandirs = ./lib ./include
- @BIND_ATF_TRUE@cleandirs = ./lib ./include ./atf
diff --git a/package/dhcp/patches/patch-common_discover_c b/package/dhcp/patches/patch-common_discover_c
deleted file mode 100644
index 372ca8e1c..000000000
--- a/package/dhcp/patches/patch-common_discover_c
+++ /dev/null
@@ -1,13 +0,0 @@
---- dhcp-4.3.5.orig/common/discover.c 2016-09-27 21:16:50.000000000 +0200
-+++ dhcp-4.3.5/common/discover.c 2016-11-26 07:09:35.000000000 +0100
-@@ -692,8 +692,8 @@ next_iface6(struct iface_info *info, int
- for (i=0; i<16; i++) {
- unsigned char byte;
- static const char hex[] = "0123456789abcdef";
-- byte = ((index(hex, buf[i * 2]) - hex) << 4) |
-- (index(hex, buf[i * 2 + 1]) - hex);
-+ byte = ((strchr(hex, buf[i * 2]) - hex) << 4) |
-+ (strchr(hex, buf[i * 2 + 1]) - hex);
- addr.sin6_addr.s6_addr[i] = byte;
- }
- memcpy(&info->addr, &addr, sizeof(addr));
diff --git a/package/dillo/Makefile b/package/dillo/Makefile
index 31316f69c..0535edb69 100644
--- a/package/dillo/Makefile
+++ b/package/dillo/Makefile
@@ -24,6 +24,8 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,DILLO,dillo,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_CFLAGS+= -fcommon
+TARGET_CXXFLAGS+= -fcommon
TARGET_LDFLAGS+= -liconv
CONFIGURE_ENV+= PNG_CONFIG=$(STAGING_TARGET_DIR)/scripts/libpng-config
CONFIGURE_ARGS+= --enable-ssl
diff --git a/package/dillo/patches/patch-dpi_https_c b/package/dillo/patches/patch-dpi_https_c
new file mode 100644
index 000000000..90c91198d
--- /dev/null
+++ b/package/dillo/patches/patch-dpi_https_c
@@ -0,0 +1,14 @@
+--- dillo-3.0.5.orig/dpi/https.c 2015-06-30 16:06:08.000000000 +0200
++++ dillo-3.0.5/dpi/https.c 2024-03-04 08:18:34.867259406 +0100
+@@ -476,7 +476,11 @@ static int handle_certificate_problem(SS
+ case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
+ /*Either self signed and untrusted*/
+ /*Extract CN from certificate name information*/
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ if ((cn = strstr(remote_cert->name, "/CN=")) == NULL) {
++#else
++ if ((cn = strstr(X509_get_subject_name(remote_cert), "/CN=")) == NULL) {
++#endif
+ strcpy(buf, "(no CN given)");
+ } else {
+ char *cn_end;
diff --git a/package/dnsmasq/Makefile b/package/dnsmasq/Makefile
index 7c80b2be3..d204305b0 100644
--- a/package/dnsmasq/Makefile
+++ b/package/dnsmasq/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= dnsmasq
-PKG_VERSION:= 2.81
+PKG_VERSION:= 2.90
PKG_RELEASE:= 1
-PKG_HASH:= 749ca903537c5197c26444ac24b0dce242cf42595fdfe6b9a5b9e4c7ad32f8fb
+PKG_HASH:= 8e50309bd837bfec9649a812e066c09b6988b73d749b7d293c06c57d46a109e4
PKG_DESCR:= lightweight dns, dhcp and tftp server
PKG_SECTION:= net/dns
PKG_KDEPENDS:= inotify-user
diff --git a/package/dosfstools/Makefile b/package/dosfstools/Makefile
index f015fa37a..8238eced9 100644
--- a/package/dosfstools/Makefile
+++ b/package/dosfstools/Makefile
@@ -4,14 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= dosfstools
-PKG_VERSION:= 4.1
+PKG_VERSION:= 4.2
PKG_RELEASE:= 1
-PKG_HASH:= e6b2aca70ccc3fe3687365009dd94a2e18e82b688ed4e260e04b7412471cc173
+PKG_HASH:= 64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527
PKG_DESCR:= utilities to create and check fat filesystems
PKG_SECTION:= sys/fs
-PKG_NEEDS:= iconv
PKG_URL:= http://www.daniel-baumann.ch/software/dosfstools/
-PKG_SITES:= https://github.com/dosfstools/dosfstools/releases/download/v$(PKG_VERSION)/
+PKG_SITES:= https://github.com/dosfstools/dosfstools/releases/download/v4.2/
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_CFLINE_DOSFSTOOLS:= select BUSYBOX_FSCK
diff --git a/package/drbd-utils/Makefile b/package/drbd-utils/Makefile
deleted file mode 100644
index 26445fbe7..000000000
--- a/package/drbd-utils/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= drbd-utils
-PKG_VERSION:= 8.9.6
-PKG_RELEASE:= 1
-PKG_HASH:= 297b77c9b3f88de2e7dae459234f2753ea4fc2805282b2d276e35cf51e292913
-PKG_DESCR:= admin tools for drbd-utils
-PKG_SECTION:= sys/fs
-PKG_SITES:= http://oss.linbit.com/drbd/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,DRBD_UTILS,drbd-utils,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-XAKE_FLAGS+= GENETLINK_H=$(STAGING_TARGET_DIR)/usr/include/linux/genetlink.h
-CONFIGURE_ARGS+= --with-distro=generic \
- --without-manual \
- --with-pacemaker \
- --without-heartbeat \
- --without-km \
- --without-xen \
- --without-udev
-
-drbd-utils-install:
- $(INSTALL_DIR) $(IDIR_DRBD_UTILS)/etc
- $(CP) ./files/drbd.conf $(IDIR_DRBD_UTILS)/etc
- $(INSTALL_DIR) $(IDIR_DRBD_UTILS)/usr/lib/drbd
- $(INSTALL_DIR) $(IDIR_DRBD_UTILS)/usr/sbin
- $(CP) $(WRKINST)/usr/lib/drbd/* \
- $(IDIR_DRBD_UTILS)/usr/lib/drbd/
- $(INSTALL_BIN) $(WRKINST)/usr/sbin/drbd* \
- $(IDIR_DRBD_UTILS)/usr/sbin
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/drbd-utils/files/drbd.conf b/package/drbd-utils/files/drbd.conf
deleted file mode 100644
index 8eb55e497..000000000
--- a/package/drbd-utils/files/drbd.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#resource r1 {
-# protocol C;
-#
-# startup { wfc-timeout 0; degr-wfc-timeout 120; }
-# disk { on-io-error detach; }
-# net { timeout 60; connect-int 10; ping-int 10;
-# max-buffers 2048; max-epoch-size 2048; }
-# syncer { rate 5M; } # sync when r0 and r1 are finished syncing.
-# on alice {
-# address 192.168.1.1:7790;
-# disk /dev/sdb1;
-# device /dev/drbd1;
-# meta-disk "internal";
-# }
-# on bob {
-# address 192.168.1.2:7790;
-# disk "/dev/sdb1";
-# device "/dev/drbd2";
-# meta-disk "internal";
-# }
-#}
diff --git a/package/drbd-utils/files/drbd.conffiles b/package/drbd-utils/files/drbd.conffiles
deleted file mode 100644
index 9096001bf..000000000
--- a/package/drbd-utils/files/drbd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/drbd.conf
diff --git a/package/dropbear/Makefile b/package/dropbear/Makefile
index 050729a5c..fa8eecf66 100644
--- a/package/dropbear/Makefile
+++ b/package/dropbear/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= dropbear
-PKG_VERSION:= 2020.81
+PKG_VERSION:= 2024.84
PKG_RELEASE:= 1
-PKG_HASH:= 48235d10b37775dbda59341ac0c4b239b82ad6318c31568b985730c788aac53b
+PKG_HASH:= 16e22b66b333d6b7e504c43679d04ed6ca30f2838db40a21f935c850dfc01009
PKG_DESCR:= ssh server/client designed for embedded systems
PKG_SECTION:= net/security
PKG_URL:= http://matt.ucc.asn.au/dropbear/
@@ -39,6 +39,7 @@ CONFIGURE_ARGS+= --disable-pam \
--disable-wtmpx \
--disable-loginfunc \
--disable-pututxline \
+ --disable-harden \
--disable-zlib
ifeq (${ADK_PACKAGE_DROPBEAR_WITH_UTMP},)
CONFIGURE_ARGS+= --disable-utmp --disable-pututline
@@ -48,8 +49,8 @@ endif
pre-configure:
- $(SED) 's,^/\* #define PKG_MULTI.*,#define PKG_MULTI,g' $(WRKBUILD)/options.h
- $(SED) 's,^#define DO_HOST_LOOKUP,/* & */,g' $(WRKBUILD)/options.h
+ echo "#define DO_HOST_LOOKUP 0" >>$(WRKBUILD)/localoptions.h
+ echo "#define DROPBEAR_X11FWD 1" >>$(WRKBUILD)/localoptions.h
do-build:
cd ${WRKBUILD} && env ${MAKE_ENV} ${MAKE} \
@@ -75,9 +76,9 @@ do-install:
$(IDIR_DBCONVERT)/usr/bin/dropbearconvert
# ssh pubkey
test -z $(ADK_RUNTIME_SSH_PUBKEY) || ( \
- $(INSTALL_DIR) $(IDIR_DROPBEAR)/etc/dropbear; \
+ $(INSTALL_DIR) $(IDIR_DROPBEAR)/root/.ssh; \
echo $(ADK_RUNTIME_SSH_PUBKEY) \
- >$(IDIR_DROPBEAR)/etc/dropbear/authorized_keys; \
+ >$(IDIR_DROPBEAR)/root/.ssh/authorized_keys; \
)
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/dropbear/files/dropbear.init b/package/dropbear/files/dropbear.init
index 9bf74098e..3e464e34b 100644
--- a/package/dropbear/files/dropbear.init
+++ b/package/dropbear/files/dropbear.init
@@ -24,19 +24,19 @@ start)
test $rv = 0 || exit 1
test -f /etc/dropbear/dropbear_rsa_host_key || exit 1
fi
- if test ! -f /etc/dropbear/dropbear_dss_host_key; then
+ if test ! -f /etc/dropbear/dropbear_ecdsa_host_key; then
# take it easy here, since above already catched the worst cases
if test -x /usr/bin/dropbearkey; then
- echo "dropbear: generating SSH private key (DSS)"
- /usr/bin/dropbearkey -f /etc/dropbear/dropbear_dss_host_key -t dss
+ echo "dropbear: generating SSH private key (ECDSA)"
+ /usr/bin/dropbearkey -f /etc/dropbear/dropbear_ecdsa_host_key -t ecdsa
echo "dropbear: key generation exited with code $?"
fi
fi
- if test ! -f /etc/dropbear/dropbear_ecdsa_host_key; then
+ if test ! -f /etc/dropbear/dropbear_ed25519_host_key; then
# take it easy here, since above already catched the worst cases
if test -x /usr/bin/dropbearkey; then
- echo "dropbear: generating SSH private key (ECDSA)"
- /usr/bin/dropbearkey -f /etc/dropbear/dropbear_ecdsa_host_key -t ecdsa
+ echo "dropbear: generating SSH private key (ED25519)"
+ /usr/bin/dropbearkey -f /etc/dropbear/dropbear_ed25519_host_key -t ed25519
echo "dropbear: key generation exited with code $?"
fi
fi
diff --git a/package/dropbear/files/dropbear.service b/package/dropbear/files/dropbear.service
deleted file mode 100644
index eeb86cfa7..000000000
--- a/package/dropbear/files/dropbear.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Dropbear SSH daemon
-After=syslog.target network.target
-
-[Service]
-EnvironmentFile=-/etc/default/dropbear
-ExecStart=/usr/sbin/dropbear -F -R $DROPBEAR_ARGS
-ExecReload=/bin/kill -HUP $MAINPID
-
-[Install]
-WantedBy=multi-user.target
diff --git a/package/dropbear/patches/patch-Makefile_in b/package/dropbear/patches/patch-Makefile_in
deleted file mode 100644
index b0b77949a..000000000
--- a/package/dropbear/patches/patch-Makefile_in
+++ /dev/null
@@ -1,35 +0,0 @@
---- dropbear-2020.81.orig/Makefile.in 2020-10-29 14:35:50.000000000 +0100
-+++ dropbear-2020.81/Makefile.in 2020-11-04 03:02:49.901343218 +0100
-@@ -106,10 +106,10 @@ AR=@AR@
- RANLIB=@RANLIB@
- STRIP=@STRIP@
- INSTALL=@INSTALL@
--CPPFLAGS=@CPPFLAGS@
--CFLAGS+=-I. -I$(srcdir) $(CPPFLAGS) @CFLAGS@
--LIBS+=@LIBS@
--LDFLAGS=@LDFLAGS@
-+CPPFLAGS=@CPPFLAGS@ -I. -I$(srcdir)
-+LIBS+=@LIBS@ @CRYPTLIB@
-+LDFLAGS+=@LDFLAGS@
-+
-
- EXEEXT=@EXEEXT@
-
-@@ -198,7 +198,7 @@ dropbearkey: $(dropbearkeyobjs)
- dropbearconvert: $(dropbearconvertobjs)
-
- dropbear: $(HEADERS) $(LIBTOM_DEPS) Makefile
-- $(CC) $(LDFLAGS) -o $@$(EXEEXT) $($@objs) $(LIBTOM_LIBS) $(LIBS) @CRYPTLIB@ $(PLUGIN_LIBS)
-+ $(CC) $(LDFLAGS) -o $@$(EXEEXT) $($@objs) $(LIBTOM_LIBS) $(LIBS) $(PLUGIN_LIBS)
-
- dbclient: $(HEADERS) $(LIBTOM_DEPS) Makefile
- $(CC) $(LDFLAGS) -o $@$(EXEEXT) $($@objs) $(LIBTOM_LIBS) $(LIBS)
-@@ -219,7 +219,7 @@ ifeq ($(MULTI),1)
- endif
-
- dropbearmulti$(EXEEXT): $(HEADERS) $(MULTIOBJS) $(LIBTOM_DEPS) Makefile
-- $(CC) $(LDFLAGS) -o $@ $(MULTIOBJS) $(LIBTOM_LIBS) $(LIBS) @CRYPTLIB@
-+ $(CC) $(LDFLAGS) -o $@ $(MULTIOBJS) $(LIBTOM_LIBS) $(LIBS)
-
- multibinary: dropbearmulti$(EXEEXT)
-
diff --git a/package/dropbear/patches/patch-svr-authpubkey_c b/package/dropbear/patches/patch-svr-authpubkey_c
deleted file mode 100644
index f3df0c58f..000000000
--- a/package/dropbear/patches/patch-svr-authpubkey_c
+++ /dev/null
@@ -1,109 +0,0 @@
---- dropbear-2020.81.orig/svr-authpubkey.c 2020-10-29 14:35:50.000000000 +0100
-+++ dropbear-2020.81/svr-authpubkey.c 2020-11-04 03:14:22.641017199 +0100
-@@ -386,26 +386,32 @@ static int checkpubkey(const char* keyal
- goto out;
- }
-
-- /* we don't need to check pw and pw_dir for validity, since
-- * its been done in checkpubkeyperms. */
-- len = strlen(ses.authstate.pw_dir);
-- /* allocate max required pathname storage,
-- * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */
-- filename = m_malloc(len + 22);
-- snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
-- ses.authstate.pw_dir);
-+ /* special case for root authorized_keys in /etc/dropbear/authorized_keys */
-+ if (ses.authstate.pw_uid != 0) {
-+ /* we don't need to check pw and pw_dir for validity, since
-+ * its been done in checkpubkeyperms. */
-+ len = strlen(ses.authstate.pw_dir);
-+ /* allocate max required pathname storage,
-+ * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */
-+ filename = m_malloc(len + 22);
-+ snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
-+ ses.authstate.pw_dir);
-
--#if DROPBEAR_SVR_MULTIUSER
-- /* open the file as the authenticating user. */
-- origuid = getuid();
-- origgid = getgid();
-- if ((setegid(ses.authstate.pw_gid)) < 0 ||
-- (seteuid(ses.authstate.pw_uid)) < 0) {
-- dropbear_exit("Failed to set euid");
-- }
--#endif
-+ /* open the file as the authenticating user. */
-+ origuid = getuid();
-+ origgid = getgid();
-+ if ((setegid(ses.authstate.pw_gid)) < 0 ||
-+ (seteuid(ses.authstate.pw_uid)) < 0) {
-+ dropbear_exit("Failed to set euid");
-+ }
-
-- authfile = fopen(filename, "r");
-+ authfile = fopen(filename, "r");
-+
-+ } else {
-+ origuid = getuid();
-+ origgid = getgid();
-+ authfile = fopen("/etc/dropbear/authorized_keys","r");
-+ }
-
- #if DROPBEAR_SVR_MULTIUSER
- if ((seteuid(origuid)) < 0 ||
-@@ -474,27 +480,37 @@ static int checkpubkeyperms() {
- goto out;
- }
-
-- /* allocate max required pathname storage,
-- * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */
-- len += 22;
-- filename = m_malloc(len);
-- strlcpy(filename, ses.authstate.pw_dir, len);
-+ if (ses.authstate.pw_uid != 0) {
-+ /* allocate max required pathname storage,
-+ * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */
-+ filename = m_malloc(len + 22);
-+ strncpy(filename, ses.authstate.pw_dir, len+1);
-+
-+ /* check ~ */
-+ if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
-
-- /* check ~ */
-- if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
-- goto out;
-- }
-+ /* check ~/.ssh */
-+ strncat(filename, "/.ssh", 5); /* strlen("/.ssh") == 5 */
-+ if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
-
-- /* check ~/.ssh */
-- strlcat(filename, "/.ssh", len);
-- if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
-- goto out;
-- }
-+ /* now check ~/.ssh/authorized_keys */
-+ strncat(filename, "/authorized_keys", 16);
-+ if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
-
-- /* now check ~/.ssh/authorized_keys */
-- strlcat(filename, "/authorized_keys", len);
-- if (checkfileperm(filename) != DROPBEAR_SUCCESS) {
-- goto out;
-+ } else {
-+
-+ if (checkfileperm("/etc/dropbear") != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
-+ if (checkfileperm("/etc/dropbear/authorized_keys") != DROPBEAR_SUCCESS) {
-+ goto out;
-+ }
- }
-
- /* file looks ok, return success */
diff --git a/package/dtc/Makefile b/package/dtc/Makefile
index f822ba8e7..d0a95841a 100644
--- a/package/dtc/Makefile
+++ b/package/dtc/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= dtc
-PKG_VERSION:= 1.6.0
+PKG_VERSION:= 1.7.0
PKG_RELEASE:= 1
-PKG_HASH:= 3d15dee7126a6c4a015ab47ec908cab13e39774b0315efaaebb223cb4a4d349c
+PKG_HASH:= 70d9c156ec86d63de0f7bdae50540ffa492b25ec1d69491c7520845c860b9a62
PKG_DESCR:= compiler for dts files
PKG_SECTION:= sys/misc
HOST_BUILDDEP:= m4-host flex-host bison-host
PKG_URL:= http://www.devicetree.org/Device_Tree_Compiler
-PKG_SITES:= https://github.com/dgibson/dtc/archive/
+PKG_SITES:= https://github.com/dgibson/dtc/archive/refs/tags/
DISTFILES:= v$(PKG_VERSION).tar.gz
@@ -23,6 +23,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,DTC,dtc,$(PKG_VERSION)-$(PKG_RELEASE)))
HOST_STYLE:= manual
+HOST_MAKE_FLAGS+= NO_PYTHON=1
host-build:
(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
diff --git a/package/dtc/patches/patch-Makefile b/package/dtc/patches/patch-Makefile
new file mode 100644
index 000000000..9a4553381
--- /dev/null
+++ b/package/dtc/patches/patch-Makefile
@@ -0,0 +1,11 @@
+--- dtc-1.6.1.orig/Makefile 2021-06-08 09:00:49.000000000 +0200
++++ dtc-1.6.1/Makefile 2022-09-20 08:58:33.198381442 +0200
+@@ -23,7 +23,7 @@ ASSUME_MASK ?= 0
+ CPPFLAGS = -I libfdt -I . -DFDT_ASSUME_MASK=$(ASSUME_MASK)
+ WARNINGS = -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \
+ -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wshadow
+-CFLAGS = -g -Os $(SHAREDLIB_CFLAGS) -Werror $(WARNINGS) $(EXTRA_CFLAGS)
++CFLAGS = -g -Os $(SHAREDLIB_CFLAGS) $(WARNINGS) $(EXTRA_CFLAGS)
+
+ BISON = bison
+ LEX = flex
diff --git a/package/e2fsprogs/Makefile b/package/e2fsprogs/Makefile
index d3e9567e2..3e565c647 100644
--- a/package/e2fsprogs/Makefile
+++ b/package/e2fsprogs/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= e2fsprogs
-PKG_VERSION:= 1.44.2
+PKG_VERSION:= 1.47.0
PKG_RELEASE:= 1
-PKG_HASH:= 8324cf0b6e81805a741d94087b00e99f7e16144f1ee5a413709a1fa6948b126c
+PKG_HASH:= 144af53f2bbd921cef6f8bea88bb9faddca865da3fbc657cc9b4d2001097d5db
PKG_DESCR:= ext2/3/4 filesystem utilities
PKG_SECTION:= sys/fs
PKG_BUILDDEP:= util-linux
@@ -14,23 +14,17 @@ PKG_NEEDS:= threads
PKG_URL:= http://e2fsprogs.sourceforge.net/
PKG_SITES:= https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v$(PKG_VERSION)/
PKG_OPTS:= dev
-PKG_NOPARALLEL:= 1
PKG_CFLINE_E2FSPROGS:= select BUSYBOX_FSCK
PKG_SUBPKGS:= LIBE2FS LIBCOM_ERR LIBSS
PKG_SUBPKGS+= RESIZE2FS TUNE2FS E2FSCK MKE2FS
-PKG_SUBPKGS+= E2FSCK_STATIC TUNE2FS_STATIC
PKGSD_LIBE2FS:= e2fsprogs library
PKGSC_LIBE2FS:= libs/misc
PKGSD_LIBCOM_ERR:= common error library
PKGSC_LIBCOM_ERR:= libs/misc
PKGSD_LIBSS:= subsystem command parsing library
PKGSC_LIBSS:= libs/misc
-PKGSD_E2FSCK_STATIC:= static build of e2fsck
-PKGSC_E2FSCK_STATIC:= sys/fs
-PKGSD_TUNE2FS_STATIC:= static build of tune2fs
-PKGSC_TUNE2FS_STATIC:= sys/fs
PKGSD_RESIZE2FS:= ext2/3/4 resize utility
PKGSC_RESIZE2FS:= sys/fs
PKGSS_RESIZE2FS:= libe2fs libcom-err libblkid
@@ -55,14 +49,13 @@ $(eval $(call PKG_template,TUNE2FS,tune2fs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS
$(eval $(call PKG_template,RESIZE2FS,resize2fs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_RESIZE2FS),$(PKGSD_RESIZE2FS),$(PKGSC_RESIZE2FS)))
$(eval $(call PKG_template,MKE2FS,mke2fs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_MKE2FS),$(PKGSD_MKE2FS),$(PKGSC_MKE2FS)))
$(eval $(call PKG_template,E2FSCK,e2fsck,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_E2FSCK),$(PKGSD_E2FSCK),$(PKGSC_E2FSCK)))
-$(eval $(call PKG_template,E2FSCK_STATIC,e2fsck-static,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_E2FSCK_STATIC},${PKGSC_E2FSCK_STATIC}))
-$(eval $(call PKG_template,TUNE2FS_STATIC,tune2fs-static,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_E2FSCK_STATIC},${PKGSC_E2FSCK_STATIC}))
HOST_CONFIGURE_ARGS+= --disable-rpath \
--disable-nls \
--disable-uuidd \
--disable-defrag \
- --disable-debugfs
+ --disable-debugfs \
+ --with-crond-dir="$(STAGING_HOST_DIR)/etc"
ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
CONFIGURE_ARGS+= --disable-elf-shlibs
@@ -130,17 +123,5 @@ libss-install:
$(CP) $(WRKINST)/usr/lib/libss.so* \
$(IDIR_LIBSS)/usr/lib
-e2fsck-static-install:
- ${MAKE} -C ${WRKBUILD}/e2fsck e2fsck.static
- ${INSTALL_DIR} ${IDIR_E2FSCK_STATIC}/usr/sbin
- ${INSTALL_BIN} ${WRKBUILD}/e2fsck/e2fsck.static \
- ${IDIR_E2FSCK_STATIC}/usr/sbin/e2fsck
-
-tune2fs-static-install:
- ${MAKE} -C ${WRKBUILD}/misc tune2fs.static
- ${INSTALL_DIR} ${IDIR_TUNE2FS_STATIC}/usr/sbin
- ${INSTALL_BIN} ${WRKBUILD}/misc/tune2fs.static \
- ${IDIR_TUNE2FS_STATIC}/usr/sbin/tune2fs
-
include $(ADK_TOPDIR)/mk/host-bottom.mk
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/elinks/Makefile b/package/elinks/Makefile
deleted file mode 100644
index 23d5c25fd..000000000
--- a/package/elinks/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= elinks
-PKG_VERSION:= 0.11.7
-PKG_RELEASE:= 3
-PKG_HASH:= 94dc254cdecddee51819ae17962d9e606690bee3ec43fb43c635cb40197b4bc7
-PKG_DESCR:= advanced text web browser
-PKG_SECTION:= app/browser
-PKG_URL:= http://elinks.or.cz/
-PKG_SITES:= http://elinks.or.cz/download/
-
-PKG_NOPARALLEL:= 1
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-PKG_FLAVOURS_ELINKS:= WITH_IPV6
-PKGFD_WITH_IPV6:= enable IPv6 support
-
-PKG_CHOICES_ELINKS:= WITH_LIBRESSL WITHOUT_SSL
-PKGCD_WITH_LIBRESSL:= use libressl for crypto
-PKGCB_WITH_LIBRESSL:= libressl
-PKGCS_WITH_LIBRESSL:= libressl ca-certificates
-PKGCD_WITHOUT_SSL:= use no ssl
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,ELINKS,elinks,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-INSTALL_STYLE:= manual
-TARGET_CFLAGS+= -fPIC
-CONFIGURE_ENV+= $(shell echo ac_cv_file_./features.conf | tr [:blank:]-/. _)=yes
-CONFIGURE_ENV+= $(shell echo ac_cv_file_${WRKBUILD}/features.conf | tr [:blank:]-/. _)=yes
-CONFIGURE_ARGS+= --enable-small \
- --enable-256-colors \
- --disable-backtrace \
- --disable-data \
- --disable-formhist \
- --disable-leds \
- --disable-mailcap \
- --disable-mouse \
- --disable-smb \
- --disable-uri-rewrite \
- --disable-xbel \
- --without-bzlib \
- --without-gpm \
- --without-idn \
- --without-gnutls \
- --without-libiconv \
- --without-lua \
- --without-spidermonkey \
- --without-x \
- --without-zlib
-MAKE_FLAGS+= CC='${TARGET_CC}'
-
-ifneq (${ADK_PACKAGE_ELINKS_WITH_IPV6},)
-CONFIGURE_ARGS+= --enable-ipv6
-else
-CONFIGURE_ARGS+= --disable-ipv6
-endif
-
-ifeq ($(ADK_PACKAGE_ELINKS_WITH_LIBRESSL),y)
-CONFIGURE_ARGS+= --with-openssl='${STAGING_TARGET_DIR}/usr'
-endif
-ifeq ($(ADK_PACKAGE_ELINKS_WITHOUT_SSL),y)
-CONFIGURE_ARGS+= --without-openssl
-endif
-
-do-install:
- ${INSTALL_DIR} ${IDIR_ELINKS}/usr/bin
- ${INSTALL_BIN} ${WRKBUILD}/src/elinks ${IDIR_ELINKS}/usr/bin/
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/elinks/patches/patch-Makefile_lib b/package/elinks/patches/patch-Makefile_lib
deleted file mode 100644
index 122e6c13d..000000000
--- a/package/elinks/patches/patch-Makefile_lib
+++ /dev/null
@@ -1,11 +0,0 @@
---- elinks-0.11.7.orig/Makefile.lib 2009-08-22 13:15:08.000000000 +0200
-+++ elinks-0.11.7/Makefile.lib 2010-03-06 11:28:58.000000000 +0100
-@@ -43,7 +43,7 @@ quiet_cmd_compile = ' [$(CC_COLOR)C
-
- # Rule to compile a set of .o files into one .o file
- quiet_cmd_ld_objs = " [$(LD_COLOR)LD$(END_COLOR)] $(RELPATH)$@"
-- cmd_ld_objs = $(LD) -r -o $@ $(filter $(OBJS), $^) \
-+ cmd_ld_objs = $(CC) -Wl,-r -nostdlib -o $@ $(filter $(OBJS), $^) \
- $(foreach subdir,$(sort $(filter-out src,$(SUBDIRS))), \
- `test -e $(subdir)/$(LIB_O_NAME) && echo $(subdir)/$(LIB_O_NAME)`)
-
diff --git a/package/elinks/patches/patch-src_network_ssl_ssl_c b/package/elinks/patches/patch-src_network_ssl_ssl_c
deleted file mode 100644
index f55f43ba4..000000000
--- a/package/elinks/patches/patch-src_network_ssl_ssl_c
+++ /dev/null
@@ -1,16 +0,0 @@
---- elinks-0.11.7.orig/src/network/ssl/ssl.c 2009-08-22 13:15:08.000000000 +0200
-+++ elinks-0.11.7/src/network/ssl/ssl.c 2016-09-30 18:47:20.022831750 +0200
-@@ -49,11 +49,8 @@ init_openssl(struct module *module)
- * cannot initialize the PRNG and so every attempt to use SSL fails.
- * It's actually an OpenSSL FAQ, and according to them, it's up to the
- * application coders to seed the RNG. -- William Yodlowsky */
-- if (RAND_egd(RAND_file_name(f_randfile, sizeof(f_randfile))) < 0) {
-- /* Not an EGD, so read and write to it */
-- if (RAND_load_file(f_randfile, -1))
-- RAND_write_file(f_randfile);
-- }
-+ if (RAND_load_file(f_randfile, -1))
-+ RAND_write_file(f_randfile);
-
- SSLeay_add_ssl_algorithms();
- context = SSL_CTX_new(SSLv23_client_method());
diff --git a/package/esmtp/Makefile b/package/esmtp/Makefile
deleted file mode 100644
index 777dd6862..000000000
--- a/package/esmtp/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= esmtp
-PKG_VERSION:= 1.2
-PKG_RELEASE:= 1
-PKG_HASH:= a0d26931bf731f97514da266d079d8bc7d73c65b3499ed080576ab606b21c0ce
-PKG_DESCR:= relay-only mail transfer agent
-PKG_SECTION:= net/mail
-PKG_DEPENDS:= libesmtp flex
-PKG_BUILDDEP:= libesmtp flex
-PKG_URL:= http://esmtp.sourceforge.net/
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=esmtp/}
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,ESMTP,esmtp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-esmtp-install:
- $(INSTALL_DIR) $(IDIR_ESMTP)/usr/{bin,sbin}
- $(INSTALL_BIN) $(WRKINST)/usr/bin/esmtp $(IDIR_ESMTP)/usr/bin
- $(CP) $(WRKINST)/usr/bin/{mailq,newaliases} $(IDIR_ESMTP)/usr/bin/
- $(CP) $(WRKINST)/usr/sbin/sendmail $(IDIR_ESMTP)/usr/sbin/
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/ethtool/Makefile b/package/ethtool/Makefile
index f432bc7d2..5360d31ee 100644
--- a/package/ethtool/Makefile
+++ b/package/ethtool/Makefile
@@ -4,10 +4,12 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= ethtool
-PKG_VERSION:= 4.16
+PKG_VERSION:= 5.15
PKG_RELEASE:= 1
-PKG_HASH:= fe967a6722db2099fa63d847b6628e3e31cf9f53571a37503347dcc3e4015a03
+PKG_HASH:= 686fd6110389d49c2a120f00c3cd5dfe43debada8e021e4270d74bbe452a116d
PKG_DESCR:= display or change ethernet card settings
+PKG_DEPENDS:= libmnl
+PKG_BUILDDEP:= libmnl
PKG_SECTION:= net/misc
PKG_SITES:= https://www.kernel.org/pub/software/network/ethtool/
diff --git a/package/expat/Makefile b/package/expat/Makefile
index 2bb86dd21..986a97218 100644
--- a/package/expat/Makefile
+++ b/package/expat/Makefile
@@ -4,19 +4,17 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= expat
-PKG_VERSION:= 2.2.5
+PKG_VERSION:= 2.6.2
PKG_RELEASE:= 1
-PKG_HASH:= d9dc32efba7e74f788fcc4f212a43216fc37cf5f23f4c2339664d473353aedf6
+PKG_HASH:= ee14b4c5d8908b1bec37ad937607eab183d4d9806a08adee472c3c3121d27364
PKG_DESCR:= xml parsing library
PKG_SECTION:= libs/data
PKG_NEEDS:= c++
PKG_URL:= http://expat.sourceforge.net
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=expat/}
+PKG_SITES:= https://github.com/libexpat/libexpat/releases/download/R_2_6_2/
PKG_LIBNAME:= libexpat
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
include ${ADK_TOPDIR}/mk/host.mk
include ${ADK_TOPDIR}/mk/package.mk
@@ -28,6 +26,8 @@ TARGET_CFLAGS:= $(filter-out -static,$(TARGET_CFLAGS))
TARGET_LDFLAGS:=$(filter-out -static,$(TARGET_LDFLAGS))
endif
+CONFIGURE_ARGS+= --without-docbook
+
libexpat-install:
${INSTALL_DIR} ${IDIR_LIBEXPAT}/usr/lib
${CP} ${WRKINST}/usr/lib/libexpat.so* ${IDIR_LIBEXPAT}/usr/lib/
diff --git a/package/ffmpeg/Makefile b/package/ffmpeg/Makefile
index ddb3e72e3..8c00cdef4 100644
--- a/package/ffmpeg/Makefile
+++ b/package/ffmpeg/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= ffmpeg
-PKG_VERSION:= 3.4.2
-PKG_RELEASE:= 2
-PKG_HASH:= eb0370bf223809b9ebb359fed5318f826ac038ce77933b3afd55ab1a0a21785a
+PKG_VERSION:= 6.1.1
+PKG_RELEASE:= 1
+PKG_HASH:= 5e3133939a61ef64ac9b47ffd29a5ea6e337a4023ef0ad972094b4da844e3a20
PKG_DESCR:= record, convert and stream audio & video
PKG_SECTION:= libs/video
PKG_NEEDS:= threads
@@ -17,13 +17,19 @@ PKG_SITES:= http://www.ffmpeg.org/releases/
PKG_LIBNAME:= libffmpeg
PKG_OPTS:= dev
-PKG_SUBPKGS:= LIBFFMPEG FFSERVER FFPROBE FFMPEG
+PKG_CHOICES_FFMPEG:= WITH_LIBRESSL WITH_OPENSSL
+PKGCD_WITH_LIBRESSL:= use libressl for crypto
+PKGCS_WITH_LIBRESSL:= libressl ca-certificates
+PKGCB_WITH_LIBRESSL:= libressl
+PKGCD_WITH_OPENSSL:= use libopenssl for crypto
+PKGCS_WITH_OPENSSL:= libopenssl ca-certificates
+PKGCB_WITH_OPENSSL:= openssl
+
+
+PKG_SUBPKGS:= LIBFFMPEG FFPROBE FFMPEG
PKGSD_FFMPEG:= video converter
PKGSC_FFMPEG:= mm/video
PKGSS_FFMPEG:= libffmpeg
-PKGSD_FFSERVER:= streaming server
-PKGSC_FFSERVER:= mm/video
-PKGSS_FFSERVER:= libffmpeg
PKGSD_FFPROBE:= simple multimedia stream analyzer
PKGSC_FFPROBE:= mm/video
PKGSS_FFPROBE:= libffmpeg
@@ -97,7 +103,6 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBFFMPEG,libffmpeg,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_FDEPENDS),$(PKGSD_LIBFFMPEG),$(PKGSC_LIBFFMPEG),$(PKG_OPTS)))
$(eval $(call PKG_template,FFMPEG,ffmpeg,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_FFMPEG),$(PKGSC_FFMPEG)))
-$(eval $(call PKG_template,FFSERVER,ffserver,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_FFSERVER),$(PKGSC_FFSERVER)))
$(eval $(call PKG_template,FFPROBE,ffprobe,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_FFPROBE),$(PKGSC_FFPROBE)))
ifeq ($(ADK_DEBUG),y)
@@ -106,6 +111,7 @@ else
TARGET_CFLAGS:= $(subst Os,O2,$(TARGET_CFLAGS))
endif
TARGET_CPPFLAGS+= -D_POSIX_SOURCE -D_GNU_SOURCE
+TARGET_LDFLAGS+= -latomic
ifeq ($(ADK_TARGET_CPU_WITH_MMX),y)
CONFIGURE_CPU_OPTS+= --enable-mmx
@@ -171,6 +177,8 @@ endif
ifeq ($(ADK_TARGET_ARCH_ARM_WITH_NEON),y)
CONFIGURE_CPU_OPTS+= --enable-neon
+else ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
+CONFIGURE_CPU_OPTS+= --enable-neon
else
CONFIGURE_CPU_OPTS+= --disable-neon
endif
@@ -252,14 +260,6 @@ ffmpeg-install:
$(INSTALL_BIN) $(WRKINST)/usr/bin/ffmpeg \
$(IDIR_FFMPEG)/usr/bin
-ffserver-install:
- $(INSTALL_DIR) $(IDIR_FFSERVER)/etc
- $(INSTALL_DATA) $(WRKBUILD)/doc/ffserver.conf \
- $(IDIR_FFSERVER)/etc
- $(INSTALL_DIR) $(IDIR_FFSERVER)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/ffserver \
- $(IDIR_FFSERVER)/usr/bin
-
ffprobe-install:
$(INSTALL_DIR) $(IDIR_FFPROBE)/usr/bin
$(INSTALL_BIN) $(WRKINST)/usr/bin/ffprobe \
diff --git a/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S b/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S
deleted file mode 100644
index 1472699be..000000000
--- a/package/ffmpeg/patches/patch-libavcodec_arm_synth_filter_vfp_S
+++ /dev/null
@@ -1,93 +0,0 @@
---- ffmpeg-3.4.1.orig/libavcodec/arm/synth_filter_vfp.S 2016-03-29 04:25:11.000000000 +0200
-+++ ffmpeg-3.4.1/libavcodec/arm/synth_filter_vfp.S 2017-07-27 02:09:00.326946211 +0200
-@@ -1,6 +1,5 @@
- /*
- * Copyright (c) 2013 RISC OS Open Ltd
-- * Author: Ben Avison <bavison@riscosopen.org>
- *
- * This file is part of FFmpeg.
- *
-@@ -17,6 +16,8 @@
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ * Author: Ben Avison <bavison@riscosopen.org>
- */
-
- #include "libavutil/arm/asm.S"
-@@ -124,7 +125,7 @@ function ff_synth_filter_float_vfp, expo
- push {r3-r7,lr}
- vpush {s16-s31}
- ldr lr, [P_SB_OFF]
-- add a2, ORIG_P_SB, lr, lsl #2 @ calculate synth_buf to pass to imdct_half
-+ add a2, ORIG_P_SB, lr, LSL #2 @ calculate synth_buf to pass to imdct_half
- mov P_SB, a2 @ and keep a copy for ourselves
- bic J_WRAP, lr, #63 @ mangled to make testing for wrap easier in inner loop
- sub lr, lr, #32
-@@ -132,12 +133,12 @@ function ff_synth_filter_float_vfp, expo
- str lr, [P_SB_OFF] @ rotate offset, modulo buffer size, ready for next call
- ldr a3, [sp, #(16+6+2)*4] @ fetch in from stack, to pass to imdct_half
- VFP vmov s16, SCALE @ imdct_half is free to corrupt s0, but it contains one of our arguments in hardfp case
-- bl X(ff_imdct_half_vfp)
-+ bl ff_imdct_half_c
- VFP vmov SCALE, s16
-
-- fmrx OLDFPSCR, FPSCR
-+ vmrs OLDFPSCR, FPSCR
- ldr lr, =0x03030000 @ RunFast mode, short vectors of length 4, stride 1
-- fmxr FPSCR, lr
-+ vmsr FPSCR, lr
- ldr P_SB2_DN, [sp, #16*4]
- ldr P_WIN_DN, [sp, #(16+6+0)*4]
- ldr P_OUT_DN, [sp, #(16+6+1)*4]
-@@ -196,48 +197,10 @@ NOVFP vldr SCALE, [sp, #(16+6+3)*4]
- vstmdb P_SB2_DN!, {VD0-VD3}
- bne 1b
-
-- fmxr FPSCR, OLDFPSCR
-+ vmsr FPSCR, OLDFPSCR
- vpop {s16-s31}
- pop {r3-r7,pc}
- endfunc
-
-- .unreq IMDCT
-- .unreq ORIG_P_SB
-- .unreq P_SB_OFF
-- .unreq I
-- .unreq P_SB2_UP
-- .unreq OLDFPSCR
-- .unreq P_SB2_DN
-- .unreq P_WIN_DN
-- .unreq P_OUT_DN
-- .unreq P_SB
-- .unreq J_WRAP
-- .unreq P_WIN_UP
-- .unreq P_OUT_UP
--
-- .unreq SCALE
-- .unreq SBUF_DAT_REV0
-- .unreq SBUF_DAT_REV1
-- .unreq SBUF_DAT_REV2
-- .unreq SBUF_DAT_REV3
-- .unreq VA0
-- .unreq VA3
-- .unreq VB0
-- .unreq VB3
-- .unreq VC0
-- .unreq VC3
-- .unreq VD0
-- .unreq VD3
-- .unreq SBUF_DAT0
-- .unreq SBUF_DAT1
-- .unreq SBUF_DAT2
-- .unreq SBUF_DAT3
-- .unreq SBUF_DAT_ALT0
-- .unreq SBUF_DAT_ALT1
-- .unreq SBUF_DAT_ALT2
-- .unreq SBUF_DAT_ALT3
-- .unreq WIN_DN_DAT0
-- .unreq WIN_UP_DAT0
--
- .align 3
- zero: .word 0, 0
diff --git a/package/file/Makefile b/package/file/Makefile
index 8a8007765..996be679e 100644
--- a/package/file/Makefile
+++ b/package/file/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= file
-PKG_VERSION:= 5.33
+PKG_VERSION:= 5.45
PKG_RELEASE:= 1
-PKG_HASH:= 1c52c8c3d271cd898d5511c36a68059cda94036111ab293f01f83c3525b737c6
+PKG_HASH:= fc97f51029bb0e2c9f4e3bffefdaf678f0e039ee872b9de5c002a6d09c784d82
PKG_DESCR:= file type guesser
PKG_SECTION:= sys/utils
-PKG_BUILDDEP:= file-host
PKG_DEPENDS:= libmagic magic
+PKG_BUILDDEP:= file-host
PKG_URL:= http://www.darwinsys.com/file
PKG_SITES:= ftp://ftp.astron.com/pub/file/
PKG_LIBNAME:= libmagic
@@ -47,9 +47,9 @@ file-install:
${INSTALL_BIN} ${WRKINST}/usr/bin/file ${IDIR_FILE}/usr/bin
magic-install:
- ${INSTALL_DIR} ${IDIR_LIBMAGIC}/usr/share/misc
+ ${INSTALL_DIR} ${IDIR_MAGIC}/usr/share/misc
${INSTALL_DATA} ${WRKINST}/usr/share/misc/magic.mgc \
- ${IDIR_LIBMAGIC}/usr/share/misc
+ ${IDIR_MAGIC}/usr/share/misc
libmagic-install:
${INSTALL_DIR} ${IDIR_LIBMAGIC}/usr/lib
diff --git a/package/firefox/Makefile b/package/firefox/Makefile
new file mode 100644
index 000000000..eb3cfeb9e
--- /dev/null
+++ b/package/firefox/Makefile
@@ -0,0 +1,54 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= firefox
+PKG_VERSION:= 108.0.1
+PKG_RELEASE:= 1
+PKG_HASH:= 9821ac130dad01383e03276bf6cc92d41329d351da1fa7fa238168f8890611ea
+PKG_DESCR:= www browser
+PKG_SECTION:= app/browser
+PKG_DEPENDS:= pango libfreetype fontconfig libxcomposite libxcursor
+PKG_DEPENDS+= libgtk3 dbus-glib alsa-lib libatk harfbuzz
+PKG_BUILDDEP:= python3-host nodejs-host pango freetype fontconfig libXcomposite
+PKG_BUILDDEP+= libXcursor libgtk3 dbus-glib alsa-lib atk harfbuzz
+PKG_SITES:= https://ftp.mozilla.org/pub/firefox/releases/$(PKG_VERSION)/source/
+
+PKG_ARCH_DEPENDS:= aarch64
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).source.tar.xz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,FIREFOX,firefox,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+ifeq ($(ADK_TARGET_ARCH),aarch64)
+TARGET_NAME:= aarch64-linux-gnu
+endif
+
+CONFIG_STYLE:= minimal
+CONFIGURE_ENV+= CROSS_COMPILE=1 \
+ BINDGEN_CFLAGS="--sysroot /usr/$(TARGET_NAME)" \
+ AS="$(GNU_TARGET_NAME)-gcc"
+CONFIGURE_ARGS+= --prefix=/usr \
+ --target=$(TARGET_NAME) \
+ --with-toolchain-prefix=$(GNU_TARGET_NAME)- \
+ --enable-application=browser \
+ --enable-official-branding \
+ --disable-audio-backends \
+ --without-wasm-sandboxed-libraries \
+ --disable-profiling \
+ --with-clang-path=/usr/bin/clang-13
+
+firefox-install:
+ $(INSTALL_DIR) $(IDIR_FIREFOX)/usr/bin
+ $(INSTALL_DIR) $(IDIR_FIREFOX)/usr/lib/firefox
+ $(CP) $(WRKINST)/usr/bin/firefox \
+ $(IDIR_FIREFOX)/usr/bin
+ $(CP) $(WRKINST)/usr/lib/firefox/* \
+ $(IDIR_FIREFOX)/usr/lib/firefox
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/flac/Makefile b/package/flac/Makefile
index 6ecb5ace9..d6a89159d 100644
--- a/package/flac/Makefile
+++ b/package/flac/Makefile
@@ -4,14 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= flac
-PKG_VERSION:= 1.3.2
+PKG_VERSION:= 1.3.4
PKG_RELEASE:= 1
-PKG_HASH:= 91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f
+PKG_HASH:= 8ff0607e75a322dd7cd6ec48f4f225471404ae2730d0ea945127b1355155e737
PKG_DESCR:= free lossless audio codec utility
PKG_SECTION:= mm/audio
PKG_DEPENDS:= libflac
PKG_URL:= https://xiph.org/flac/
-PKG_SITES:= http://downloads.xiph.org/releases/flac/
+PKG_SITES:= https://ftp.osuosl.org/pub/xiph/releases/flac/
PKG_LIBNAME:= libflac
PKG_OPTS:= dev
@@ -25,6 +25,7 @@ $(eval $(call PKG_template,FLAC,flac,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,LIBFLAC,libflac,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
CONFIGURE_ARGS+= --enable-asm-optimizations \
+ --disable-stack-smash-protection \
--disable-xmms-plugin \
--disable-cpplibs \
--disable-ogg
diff --git a/package/flashrom/Makefile b/package/flashrom/Makefile
new file mode 100644
index 000000000..fc56a3828
--- /dev/null
+++ b/package/flashrom/Makefile
@@ -0,0 +1,30 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${ADK_TOPDIR}/rules.mk
+
+PKG_NAME:= flashrom
+PKG_VERSION:= v1.2
+PKG_RELEASE:= 1
+PKG_HASH:= e1f8d95881f5a4365dfe58776ce821dfcee0f138f75d0f44f8a3cd032d9ea42b
+PKG_DESCR:= utility for identifying, reading, writing, verifying and erasing flash chips.
+PKG_SECTION:= sys/hw
+PKG_DEPENDS:= pciutils libusb zlib
+PKG_BUILDDEP:= pciutils libusb zlib
+PKG_URL:= https://www.flashrom.org/Flashrom
+PKG_SITES:= https://download.flashrom.org/releases/
+
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,FLASHROM,flashrom,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+
+CONFIG_STYLE:= manual
+TARGET_CFLAGS+= -I$(STAGING_TARGET_DIR)/usr/include/libusb-1.0
+
+flashrom-install:
+ ${INSTALL_DIR} ${IDIR_FLASHROM}/usr/sbin
+ ${INSTALL_BIN} ${WRKINST}/usr/local/sbin/flashrom ${IDIR_FLASHROM}/usr/sbin/
+
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/flatbuffers/Makefile b/package/flatbuffers/Makefile
new file mode 100644
index 000000000..f4811d7a8
--- /dev/null
+++ b/package/flatbuffers/Makefile
@@ -0,0 +1,39 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= flatbuffers
+PKG_VERSION:= 2.0.6
+PKG_RELEASE:= 1
+PKG_HASH:= e2dc24985a85b278dd06313481a9ca051d048f9474e0f199e372fea3ea4248c9
+PKG_DESCR:= cross platform serialization library
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= flatbuffers-host
+PKG_URL:= https://github.com/google/flatbuffers
+PKG_SITES:= https://github.com/google/flatbuffers/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,FLATBUFFERS,flatbuffers,$(PKG_VERSION)-${PKG_RELEASE}))
+$(eval $(call PKG_template,FLATBUFFERS,flatbuffers,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+HOST_CONFIG_STYLE:= cmake
+CONFIG_STYLE:= cmake
+
+CMAKE_FLAGS+= -DFLATBUFFERS_BUILD_TESTS=OFF \
+ -DFLATBUFFERS_BUILD_FLATC=OFF \
+ -DFLATBUFFERS_BUILD_FLATHASH=OFF
+
+HOST_CMAKE_FLAGS+= -DFLATBUFFERS_BUILD_TESTS=OFF \
+ -DFLATBUFFERS_BUILD_FLATC=ON \
+ -DFLATBUFFERS_BUILD_FLATHASH=ON
+
+flatbuffers-install:
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/fltk/Makefile b/package/fltk/Makefile
index be3670a46..ce17671e8 100644
--- a/package/fltk/Makefile
+++ b/package/fltk/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= fltk
-PKG_VERSION:= 1.3.3
+PKG_VERSION:= 1.3.8
PKG_RELEASE:= 1
-PKG_HASH:= f8398d98d7221d40e77bc7b19e761adaf2f1ef8bb0c30eceb7beb4f2273d0d97
+PKG_HASH:= f3c1102b07eb0e7a50538f9fc9037c18387165bc70d4b626e94ab725b9d4d1bf
PKG_DESCR:= fast light toolkit
PKG_SECTION:= libs/misc
PKG_DEPENDS:= mesa libx11 libxi freeglut libfreetype
diff --git a/package/fluxbox/Makefile b/package/fluxbox/Makefile
index 54d67f15d..d347fc0fc 100644
--- a/package/fluxbox/Makefile
+++ b/package/fluxbox/Makefile
@@ -5,7 +5,7 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= fluxbox
PKG_VERSION:= 1.3.7
-PKG_RELEASE:= 1
+PKG_RELEASE:= 2
PKG_HASH:= fc8c75fe94c54ed5a5dd3fd4a752109f8949d6df67a48e5b11a261403c382ec0
PKG_DESCR:= window manager featuring tabs and an iconbar
PKG_SECTION:= x11/apps
diff --git a/package/fluxbox/patches/patch-util_fluxbox-remote_cc b/package/fluxbox/patches/patch-util_fluxbox-remote_cc
new file mode 100644
index 000000000..bc76ea43e
--- /dev/null
+++ b/package/fluxbox/patches/patch-util_fluxbox-remote_cc
@@ -0,0 +1,11 @@
+--- fluxbox-1.3.7.orig/util/fluxbox-remote.cc 2015-02-08 11:44:45.377187009 +0100
++++ fluxbox-1.3.7/util/fluxbox-remote.cc 2023-01-13 06:47:39.349301911 +0100
+@@ -73,7 +73,7 @@ int main(int argc, char **argv) {
+ if (strcmp(cmd, "result") == 0) {
+ XTextProperty text_prop;
+ if (XGetTextProperty(disp, root, &text_prop, atom_result) != 0
+- && text_prop.value > 0
++ && text_prop.value != 0
+ && text_prop.nitems > 0) {
+
+ printf("%s", text_prop.value);
diff --git a/package/fmt/Makefile b/package/fmt/Makefile
index 2831edea5..82d25c0cf 100644
--- a/package/fmt/Makefile
+++ b/package/fmt/Makefile
@@ -4,11 +4,12 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= fmt
-PKG_VERSION:= 5.0.0
+PKG_VERSION:= 8.1.1
PKG_RELEASE:= 1
-PKG_HASH:= fc33d64d5aa2739ad2ca1b128628a7fc1b7dca1ad077314f09affc57d59cf88a
+PKG_HASH:= 3d794d3cf67633b34b2771eb9f073bde87e846e0d395d254df7b211ef1ec7346
PKG_DESCR:= modern formatting library
PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= cmake-host
PKG_URL:= http://fmtlib.net/latest/index.html
PKG_SITES:= https://github.com/fmtlib/fmt/archive/
PKG_LIBNAME:= libfmt
diff --git a/package/font-adobe-100dpi/Makefile b/package/font-adobe-100dpi/Makefile
index 1f4a9a1f1..d0cd64f30 100644
--- a/package/font-adobe-100dpi/Makefile
+++ b/package/font-adobe-100dpi/Makefile
@@ -22,9 +22,11 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,FONT_ADOBE_100DPI,font-adobe-100dpi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+XAKE_FLAGS+= DESTDIR=''
+
font-adobe-100dpi-install:
$(INSTALL_DIR) $(IDIR_FONT_ADOBE_100DPI)/usr/share/fonts/X11/100dpi
- $(CP) ${WRKINST}/usr/share/fonts/X11/100dpi/* \
+ $(CP) ${STAGING_TARGET_DIR}/usr/share/fonts/X11/100dpi/* \
$(IDIR_FONT_ADOBE_100DPI)/usr/share/fonts/X11/100dpi
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/font-adobe-75dpi/Makefile b/package/font-adobe-75dpi/Makefile
index e8220968a..68ae9963b 100644
--- a/package/font-adobe-75dpi/Makefile
+++ b/package/font-adobe-75dpi/Makefile
@@ -22,9 +22,11 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,FONT_ADOBE_75DPI,font-adobe-75dpi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+XAKE_FLAGS+= DESTDIR=''
+
font-adobe-75dpi-install:
$(INSTALL_DIR) $(IDIR_FONT_ADOBE_75DPI)/usr/share/fonts/X11/75dpi
- $(CP) ${WRKINST}/usr/share/fonts/X11/75dpi/* \
+ $(CP) ${STAGING_TARGET_DIR}/usr/share/fonts/X11/75dpi/* \
$(IDIR_FONT_ADOBE_75DPI)/usr/share/fonts/X11/75dpi
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/font-util/Makefile b/package/font-util/Makefile
index ec2559275..5b9289f89 100644
--- a/package/font-util/Makefile
+++ b/package/font-util/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= font-util
-PKG_VERSION:= 1.3.1
+PKG_VERSION:= 1.3.2
PKG_RELEASE:= 1
-PKG_HASH:= 34ebb0c9c14e0a392cdd5ea055c92489ad88d55ae148b2f1cfded0f3f63f2b5b
+PKG_HASH:= f115a3735604de1e852a4bf669be0269d8ce8f21f8e0e74ec5934b31dadc1e76
PKG_DESCR:= font utility
PKG_SECTION:= x11/fonts
PKG_URL:= http://www.x.org/
diff --git a/package/font-util/patches/patch-fontutil_pc_in b/package/font-util/patches/patch-fontutil_pc_in
index 4662db361..2b2ed3d53 100644
--- a/package/font-util/patches/patch-fontutil_pc_in
+++ b/package/font-util/patches/patch-fontutil_pc_in
@@ -1,11 +1,14 @@
---- font-util-1.1.1.orig/fontutil.pc.in 2009-10-11 06:32:56.000000000 +0200
-+++ font-util-1.1.1/fontutil.pc.in 2010-12-02 22:28:16.000000000 +0100
-@@ -4,7 +4,7 @@ libdir=@libdir@
+--- font-util-1.3.2.orig/fontutil.pc.in 2019-08-26 00:25:25.000000000 +0200
++++ font-util-1.3.2/fontutil.pc.in 2022-03-01 21:10:24.228234038 +0100
+@@ -2,9 +2,9 @@ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
datarootdir=@datarootdir@
- datadir=@datadir@
+-datadir=@datadir@
++datadir=${prefix}/share
fontrootdir=@fontrootdir@
-mapdir=@MAPDIR@
-+mapdir=${prefix}/../@MAPDIR@
++mapdir=${fontrootdir}/util
Name: FontUtil
Description: Font utilities dirs
diff --git a/package/fontconfig/Makefile b/package/fontconfig/Makefile
index 2642bf634..15e797efc 100644
--- a/package/fontconfig/Makefile
+++ b/package/fontconfig/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= fontconfig
-PKG_VERSION:= 2.12.3
-PKG_RELEASE:= 2
-PKG_HASH:= ffc3cbf6dd9fcd516ee42f48306a715e66698b238933d6fa7cef02ea8b3b818e
+PKG_VERSION:= 2.13.1
+PKG_RELEASE:= 1
+PKG_HASH:= 9f0d852b39d75fc655f9f53850eb32555394f36104a044bb2b2fc9e66dbbfa7f
PKG_DESCR:= library for configuring and customizing font access
PKG_SECTION:= libs/fonts
PKG_DEPENDS:= libxml2
-PKG_BUILDDEP:= freetype libxml2 gperf-host
+PKG_BUILDDEP:= freetype libxml2 gperf-host util-linux
HOST_BUILDDEP:= expat-host
PKG_URL:= http://fontconfig.org/
PKG_SITES:= http://fontconfig.org/release/
@@ -24,6 +24,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call HOST_template,FONTCONFIG,fontconfig,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,FONTCONFIG,fontconfig,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
+AUTOTOOL_STYLE:= autoreconf
HOST_STYLE:= auto
CONFIGURE_ARGS+= --with-arch=${ADK_TARGET_ARCH} \
--enable-libxml2 \
diff --git a/package/fping/Makefile b/package/fping/Makefile
index 613112d88..6340c32bc 100644
--- a/package/fping/Makefile
+++ b/package/fping/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= fping
-PKG_VERSION:= 3.16
+PKG_VERSION:= 5.1
PKG_RELEASE:= 1
-PKG_HASH:= 2f753094e4df3cdb1d99be1687c0fb7d2f14c0d526ebf03158c8c5519bc78f54
+PKG_HASH:= 1ee5268c063d76646af2b4426052e7d81a42b657e6a77d8e7d3d2e60fd7409fe
PKG_DESCR:= program to ping hosts in parallel
PKG_SECTION:= net/debug
PKG_URL:= http://fping.org
diff --git a/package/fprobe/patches/patch-src_fprobe_c b/package/fprobe/patches/patch-src_fprobe_c
new file mode 100644
index 000000000..43197cf64
--- /dev/null
+++ b/package/fprobe/patches/patch-src_fprobe_c
@@ -0,0 +1,20 @@
+--- fprobe-1.1.orig/src/fprobe.c 2005-01-30 09:43:35.000000000 +0100
++++ fprobe-1.1/src/fprobe.c 2024-02-20 07:18:30.403921178 +0100
+@@ -393,7 +393,7 @@ void gettime(struct Time *now)
+ now->usec = t.tv_usec;
+ }
+
+-inline time_t cmpmtime(struct Time *t1, struct Time *t2)
++time_t cmpmtime(struct Time *t1, struct Time *t2)
+ {
+ return (t1->sec - t2->sec) * 1000 + (t1->usec - t2->usec) / 1000;
+ }
+@@ -411,7 +411,7 @@ hash_t hash_flow(struct Flow *flow)
+ else return hash(flow, sizeof(struct Flow_TL));
+ }
+
+-inline void copy_flow(struct Flow *src, struct Flow *dst)
++void copy_flow(struct Flow *src, struct Flow *dst)
+ {
+ dst->sip = src->sip;
+ dst->dip = src->dip;
diff --git a/package/freeradius-server/Makefile b/package/freeradius-server/Makefile
index 5644f8afe..b9c1f12f2 100644
--- a/package/freeradius-server/Makefile
+++ b/package/freeradius-server/Makefile
@@ -4,16 +4,16 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= freeradius-server
-PKG_VERSION:= 3.0.21
+PKG_VERSION:= 3.2.3
PKG_RELEASE:= 1
-PKG_HASH:= 2bf914d471d4409fd72e708e308fa32ca8d01d698c518497a1d4b867d50132ae
+PKG_HASH:= 4bde047122e588c63fe2d599a73f7ab9a863806f9e716e88a3d77080b482c577
PKG_DESCR:= flexible radius server
PKG_SECTION:= net/radius
PKG_DEPENDS:= libltdl libpcre libtalloc libressl libatomic
PKG_BUILDDEP:= libtool pcre talloc libressl
PKG_NEEDS:= threads
PKG_URL:= http://www.freeradius.org/
-PKG_SITES:= ftp://ftp.freeradius.org/pub/radius/
+PKG_SITES:= https://github.com/FreeRADIUS/freeradius-server/releases/download/release_3_2_3/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
@@ -71,7 +71,7 @@ endif
ifneq (${ADK_PACKAGE_FREERADIUS_MOD_SQL_MYSQL},)
PKG_CONFIGURE_LIBS+= -lz
-PKG_CONFIGURE_OPTS+= --with-mysql-include-dir="${STAGING_TARGET_DIR}/usr/include" \
+PKG_CONFIGURE_OPTS+= --with-mysql-include-dir="${STAGING_TARGET_DIR}/usr/include/mysql" \
--with-mysql-lib-dir="${STAGING_TARGET_DIR}/usr/lib/mysql" \
--without-threads \
--with-rlm_sql
@@ -134,14 +134,14 @@ $(eval $(call PKG_mod_template,FREERADIUS_MOD_SQL,rlm_sql,))
$(eval $(call PKG_mod_template,FREERADIUS_MOD_SQL_MYSQL,rlm_sql_mysql,))
$(eval $(call PKG_mod_template,FREERADIUS_MOD_SQL_PGSQL,rlm_sql_postgresql,))
-AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= ${PKG_CONFIGURE_OPTS} \
--libdir=/usr/lib/freeradius \
--libexecdir=/usr/lib/freeradius \
--disable-openssl-version-check \
--with-execinfo-include-dir=/dev/null \
- --with-openssl-includes=${STAGING_TARGET_DIR}/usr/include \
- --with-openssl-libraries=${STAGING_TARGET_DIR}/usr/lib \
+ --with-threads=yes \
+ --with-openssl-include-dir=${STAGING_TARGET_DIR}/usr/include \
+ --with-openssl-lib-dir=${STAGING_TARGET_DIR}/usr/lib \
--with-system-libltld \
--enable-strict-dependencies \
--with-raddbdir=/etc/freeradius \
@@ -157,15 +157,17 @@ CONFIGURE_ARGS+= ${PKG_CONFIGURE_OPTS} \
--without-rlm_eap_sim \
--without-rlm_example \
--without-rlm_ippool \
+ --without-rlm_json \
--without-rlm_krb5 \
--without-rlm_otp \
--without-rlm_smsotp \
--without-rlm_pam \
--without-rlm_perl \
- --without-rlm_python \
+ --without-rlm_python3 \
--without-rlm_radutmp \
--without-rlm_rest \
--without-rlm_ruby \
+ --without-rlm_python \
--without-rlm_smb \
--without-rlm_sqlcounter \
--without-rlm_sql_db2 \
@@ -176,7 +178,9 @@ CONFIGURE_ARGS+= ${PKG_CONFIGURE_OPTS} \
--without-rlm_sql_unixodbc \
--without-rlm_sql_log \
--without-rlm_redis \
+ --without-rlm_cache_redis \
--without-rlm_rediswho \
+ --without-rlm_unbound \
--without-rlm_unix \
--without-rlm_eap_ikev2 \
--without-rlm_eap_tnc \
@@ -187,9 +191,10 @@ CONFIGURE_ARGS+= ${PKG_CONFIGURE_OPTS} \
CONFIGURE_ENV+= ax_cv_cc_builtin_choose_expr=yes \
ax_cv_cc_builtin_types_compatible_p=yes \
ax_cv_cc_builtin_bswap64=yes \
- ax_cv_cc_bounded_attribute=yes
-FAKE_FLAGS+= R="${WRKINST}" \
- INSTALLSTRIP=""
+ ax_cv_cc_bounded_attribute=yes \
+FAKE_FLAGS+= INSTALLSTRIP=""
+MAKE_ENV+= VERBOSE=1 \
+ R="$(WRKINST)"
freeradius-server-install: ${INSTALL_MODS_y} ${INSTALL_MODS_m}
-${INSTALL_DIR} ${IDIR_FREERADIUS_SERVER}/etc/freeradius
diff --git a/package/freeradius-server/patches/patch-acinclude_m4 b/package/freeradius-server/patches/patch-acinclude_m4
deleted file mode 100644
index f1cefae77..000000000
--- a/package/freeradius-server/patches/patch-acinclude_m4
+++ /dev/null
@@ -1,164 +0,0 @@
---- freeradius-server-3.0.8.orig/acinclude.m4 2015-04-22 19:21:34.000000000 +0200
-+++ freeradius-server-3.0.8/acinclude.m4 2015-05-13 22:13:54.000000000 +0200
-@@ -218,22 +218,22 @@ ac_safe=`echo "$1" | sed 'y%./+-%__pm%'`
- old_CPPFLAGS="$CPPFLAGS"
- smart_include=
- dnl # The default directories we search in (in addition to the compilers search path)
--smart_include_dir="/usr/local/include /opt/include"
-+dnl smart_include_dir="/usr/local/include /opt/include"
-
- dnl # Our local versions
- _smart_try_dir=
- _smart_include_dir=
-
- dnl # Add variants with the different prefixes and one with no prefix
--for _prefix in $smart_prefix ""; do
-- for _dir in $smart_try_dir; do
-- _smart_try_dir="${_smart_try_dir} ${_dir}/${_prefix}"
-- done
--
-- for _dir in $smart_include_dir; do
-- _smart_include_dir="${_smart_include_dir} ${_dir}/${_prefix}"
-- done
--done
-+dnl for _prefix in $smart_prefix ""; do
-+dnl for _dir in $smart_try_dir; do
-+dnl _smart_try_dir="${_smart_try_dir} ${_dir}/${_prefix}"
-+dnl done
-+dnl
-+dnl for _dir in $smart_include_dir; do
-+dnl _smart_include_dir="${_smart_include_dir} ${_dir}/${_prefix}"
-+dnl done
-+dnl done
-
- dnl #
- dnl # Try any user-specified directory first otherwise we may pick up
-@@ -262,73 +262,73 @@ fi
- dnl #
- dnl # Try using the default includes (with prefixes).
- dnl #
--if test "x$smart_include" = "x"; then
-- for _prefix in $smart_prefix; do
-- AC_MSG_CHECKING([for ${_prefix}/$1])
--
-- AC_TRY_COMPILE([$2
-- #include <$1>],
-- [int a = 1;],
-- [
-- smart_include="-isystem ${_prefix}/"
-- AC_MSG_RESULT(yes)
-- break
-- ],
-- [
-- smart_include=
-- AC_MSG_RESULT(no)
-- ])
-- done
--fi
-+dnl if test "x$smart_include" = "x"; then
-+dnl for _prefix in $smart_prefix; do
-+dnl AC_MSG_CHECKING([for ${_prefix}/$1])
-+dnl
-+dnl AC_TRY_COMPILE([$2
-+dnl #include <$1>],
-+dnl [int a = 1;],
-+dnl [
-+dnl smart_include="-isystem ${_prefix}/"
-+dnl AC_MSG_RESULT(yes)
-+dnl break
-+dnl ],
-+dnl [
-+dnl smart_include=
-+dnl AC_MSG_RESULT(no)
-+dnl ])
-+dnl done
-+dnl fi
-
- dnl #
- dnl # Try using the default includes (without prefixes).
- dnl #
- if test "x$smart_include" = "x"; then
-- AC_MSG_CHECKING([for $1])
--
-- AC_TRY_COMPILE([$2
-+ AC_MSG_CHECKING([for $1])
-+
-+ AC_TRY_COMPILE([$2
- #include <$1>],
-- [int a = 1;],
-- [
-- smart_include=" "
-- AC_MSG_RESULT(yes)
-- break
-- ],
-- [
-- smart_include=
-+ [int a = 1;],
-+ [
-+ smart_include=" "
-+ AC_MSG_RESULT(yes)
-+ break
-+ ],
-+ [
-+ smart_include=
- AC_MSG_RESULT(no)
-- ])
-+ ])
- fi
-
- dnl #
- dnl # Try to guess possible locations.
- dnl #
--if test "x$smart_include" = "x"; then
--
-- for prefix in $smart_prefix; do
-- FR_LOCATE_DIR(_smart_include_dir,"${_prefix}/${1}")
-- done
-- FR_LOCATE_DIR(_smart_include_dir, $1)
--
-- for try in $_smart_include_dir; do
-- AC_MSG_CHECKING([for $1 in $try])
-- CPPFLAGS="-isystem $try $old_CPPFLAGS"
-- AC_TRY_COMPILE([$2
-- #include <$1>],
-- [int a = 1;],
-- [
-- smart_include="-isystem $try"
-- AC_MSG_RESULT(yes)
-- break
-- ],
-- [
-- smart_include=
-- AC_MSG_RESULT(no)
-- ])
-- done
-- CPPFLAGS="$old_CPPFLAGS"
--fi
-+dnl if test "x$smart_include" = "x"; then
-+dnl
-+dnl for prefix in $smart_prefix; do
-+dnl FR_LOCATE_DIR(_smart_include_dir,"${_prefix}/${1}")
-+dnl done
-+dnl FR_LOCATE_DIR(_smart_include_dir, $1)
-+dnl
-+dnl for try in $_smart_include_dir; do
-+dnl AC_MSG_CHECKING([for $1 in $try])
-+dnl CPPFLAGS="-isystem $try $old_CPPFLAGS"
-+dnl AC_TRY_COMPILE([$2
-+dnl #include <$1>],
-+dnl [int a = 1;],
-+dnl [
-+dnl smart_include="-isystem $try"
-+dnl AC_MSG_RESULT(yes)
-+dnl break
-+dnl ],
-+dnl [
-+dnl smart_include=
-+dnl AC_MSG_RESULT(no)
-+dnl ])
-+dnl done
-+dnl CPPFLAGS="$old_CPPFLAGS"
-+dnl fi
-
- dnl #
- dnl # Found it, set the appropriate variable.
diff --git a/package/freeradius-server/patches/patch-scripts_libtool_mk b/package/freeradius-server/patches/patch-scripts_libtool_mk
index c9f83db69..bcfdeff89 100644
--- a/package/freeradius-server/patches/patch-scripts_libtool_mk
+++ b/package/freeradius-server/patches/patch-scripts_libtool_mk
@@ -1,11 +1,13 @@
---- freeradius-server-3.0.13.orig/scripts/libtool.mk 2017-03-06 14:58:04.000000000 +0100
-+++ freeradius-server-3.0.13/scripts/libtool.mk 2017-03-30 05:46:58.583531343 +0200
-@@ -44,7 +44,7 @@ ifeq "${LIBTOOL}" "JLIBTOOL"
+--- freeradius-server-3.2.3.orig/scripts/libtool.mk 2023-05-26 15:56:52.000000000 +0200
++++ freeradius-server-3.2.3/scripts/libtool.mk 2024-02-27 03:44:17.243010645 +0100
+@@ -48,8 +48,8 @@ ifeq "${LIBTOOL}" "JLIBTOOL"
+ # binary!
${JLIBTOOL}: ${top_makedir}/jlibtool.c
$(Q)mkdir -p $(dir $@)
- $(Q)echo CC jlibtool.c
-- $(Q)${CC} $< -o $@
-+ $(Q)${CC_FOR_BUILD} $< -o $@
+- $(Q)echo CC jlibtool.c
+- $(Q)${CC} $< -o $@ ${JLIBTOOL_DEFS}
++ $(Q)echo CC_FOR_BUILD jlibtool.c
++ ${CC_FOR_BUILD} $< -o $@ ${JLIBTOOL_DEFS}
clean: jlibtool_clean
diff --git a/package/freeradius-server/patches/patch-src_include_threads_h b/package/freeradius-server/patches/patch-src_include_threads_h
index 4626536e4..3011af0a9 100644
--- a/package/freeradius-server/patches/patch-src_include_threads_h
+++ b/package/freeradius-server/patches/patch-src_include_threads_h
@@ -1,10 +1,6 @@
- fix for:
- | src/lib/log.c:37:31: error: 'fr_strerror_buffer' undeclared (first use in this function)
- found in https://github.com/Optware/Optware-ng/commit/6ece960830b3291bc4ad5780cdb49b0a377aab2e
-
---- freeradius-server-3.0.21.orig/src/include/threads.h 2020-03-24 15:55:09.000000000 +0100
-+++ freeradius-server-3.0.21/src/include/threads.h 2021-02-16 03:54:58.449715370 +0100
-@@ -89,7 +89,7 @@ static _t __fr_thread_local_init_##_n(pt
+--- freeradius-server-3.2.3.orig/src/include/threads.h 2023-05-26 15:56:52.000000000 +0200
++++ freeradius-server-3.2.3/src/include/threads.h 2024-02-27 04:03:53.806994686 +0100
+@@ -92,7 +92,7 @@ static _t __fr_thread_local_init_##_n(pt
# define fr_thread_local_get(_n) _n
#elif defined(HAVE_PTHREAD_H)
# include <pthread.h>
@@ -13,7 +9,7 @@
static pthread_key_t __fr_thread_local_key_##_n;\
static pthread_once_t __fr_thread_local_once_##_n = PTHREAD_ONCE_INIT;\
static pthread_destructor_t __fr_thread_local_destructor_##_n = NULL;\
-@@ -100,17 +100,17 @@ static void __fr_thread_local_destroy_##
+@@ -103,17 +103,17 @@ static void __fr_thread_local_destroy_##
static void __fr_thread_local_key_init_##_n(void)\
{\
(void) pthread_key_create(&__fr_thread_local_key_##_n, __fr_thread_local_destroy_##_n);\
@@ -27,10 +23,11 @@
+ (void) pthread_setspecific(__fr_thread_local_key_##_n, &(_n));\
return _n;\
}
- # define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f)
+-# define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f)
-# define fr_thread_local_set(_n, _v) __fr_thread_local_set_##_n(_v)
-# define fr_thread_local_get(_n) __fr_thread_local_get_##_n()
-+# define fr_thread_local_set(_n, _v) ((int)!((_n = _v) || 1))
-+# define fr_thread_local_get(_n) _n
++# define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f)
++# define fr_thread_local_set(_n, _v) ((int)!((_n = _v) || 1))
++# define fr_thread_local_get(_n) _n
#endif
#endif
diff --git a/package/freeswitch/Makefile b/package/freeswitch/Makefile
index e5eeadf33..0d6f067c8 100644
--- a/package/freeswitch/Makefile
+++ b/package/freeswitch/Makefile
@@ -4,22 +4,25 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= freeswitch
-PKG_VERSION:= 1.6.18
+PKG_VERSION:= 1.10.11
PKG_RELEASE:= 1
-PKG_HASH:= ac1b32f61e5c35680c5a2d6f145bc480cf26e6527af07d8b8b9fa2d5280252cd
+PKG_HASH:= 4437edfa08558aa407c9fad5e4eed58f757357c53ca735aed9977e48aa1c53e3
PKG_DESCR:= cross-platform telephony platform
PKG_SECTION:= net/voip
PKG_DEPENDS:= libpcre libcurl zlib libjpeg-turbo libsqlite
-PKG_DEPENDS+= libressl libopus
+PKG_DEPENDS+= libressl libopus spandsp sofia-sip
PKG_BUILDDEP:= util-linux zlib libjpeg-turbo sqlite curl pcre
-PKG_BUILDDEP+= speex libressl opus
+PKG_BUILDDEP+= speex libressl opus spandsp sofia-sip
PKG_URL:= http://www.freeswitch.org/
-PKG_SITES:= http://files.freeswitch.org/freeswitch-releases/
+PKG_SITES:= https://github.com/signalwire/freeswitch/archive/refs/tags/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,FREESWITCH,freeswitch,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+AUTOTOOL_STYLE:= bootstrap
CONFIGURE_ARGS+= --disable-core-libedit-support \
--disable-libvpx
CONFIGURE_ENV+= ac_cv_file__dev_ptmx=yes \
@@ -35,10 +38,15 @@ CONFIGURE_ENV+= ac_cv_file__dev_ptmx=yes \
ac_cv_func_setpgrp_void=yes
pre-configure:
+ $(SED) "/applications\/mod_av/d" $(WRKBUILD)/modules.conf
$(SED) "/applications\/mod_enum/d" $(WRKBUILD)/modules.conf
$(SED) "/applications\/mod_fsv/d" $(WRKBUILD)/modules.conf
+ $(SED) "/applications\/mod_signalwire/d" $(WRKBUILD)/modules.conf
+ $(SED) "/applications\/mod_spandsp/d" $(WRKBUILD)/modules.conf
+ $(SED) "/databases\/mod_pgsql/d" $(WRKBUILD)/modules.conf
$(SED) "/languages\/mod_lua/d" $(WRKBUILD)/modules.conf
$(SED) "/endpoints\/mod_sofia/d" $(WRKBUILD)/modules.conf
+ $(SED) "/endpoints\/mod_verto/d" $(WRKBUILD)/modules.conf
$(SED) "/codecs\/mod_vpx/d" $(WRKBUILD)/modules.conf
$(SED) "/formats\/mod_sndfile/d" $(WRKBUILD)/modules.conf
diff --git a/package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c b/package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c
new file mode 100644
index 000000000..aab43c797
--- /dev/null
+++ b/package/freeswitch/patches/patch-libs_srtp_crypto_hash_hmac_ossl_c
@@ -0,0 +1,22 @@
+--- freeswitch-1.10.11.orig/libs/srtp/crypto/hash/hmac_ossl.c 2023-12-22 19:08:31.000000000 +0100
++++ freeswitch-1.10.11/libs/srtp/crypto/hash/hmac_ossl.c 2024-02-29 00:19:04.687821875 +0100
+@@ -80,7 +80,8 @@ static srtp_err_status_t srtp_hmac_alloc
+
+ /* OpenSSL 1.1.0 made HMAC_CTX an opaque structure, which must be allocated
+ using HMAC_CTX_new. But this function doesn't exist in OpenSSL 1.0.x. */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \
++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)
+ {
+ /* allocate memory for auth and HMAC_CTX structures */
+ uint8_t *pointer;
+@@ -126,7 +127,8 @@ static srtp_err_status_t srtp_hmac_deall
+
+ hmac_ctx = (HMAC_CTX *)a->state;
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || \
++ (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)
+ HMAC_CTX_cleanup(hmac_ctx);
+
+ /* zeroize entire state*/
diff --git a/package/freetype/Makefile b/package/freetype/Makefile
index da2c0a71e..5db6dea81 100644
--- a/package/freetype/Makefile
+++ b/package/freetype/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= freetype
-PKG_VERSION:= 2.7
-PKG_RELEASE:= 1
-PKG_HASH:= 7b657d5f872b0ab56461f3bd310bd1c5ec64619bd15f0d8e08282d494d9cfea4
+PKG_VERSION:= 2.11.1
+PKG_RELEASE:= 2
+PKG_HASH:= f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b
PKG_DESCR:= free, high-quality and portable font engine
PKG_SECTION:= libs/fonts
PKG_DEPENDS:= zlib
@@ -26,12 +26,22 @@ $(eval $(call PKG_template,LIBFREETYPE,libfreetype,${PKG_VERSION}-${PKG_RELEASE}
HOST_STYLE:= auto
HOST_CONFIGURE_ARGS+= --with-zlib \
+ --with-brotli=no \
--without-png \
- --without-bzip2
+ --without-bzip2 \
+ --enable-freetype-config
CONFIGURE_ARGS+= --with-zlib \
--without-png \
--with-harfbuzz=no \
- --without-bzip2
+ --with-brotli=no \
+ --without-bzip2 \
+ --enable-freetype-config
+
+hostpost-install:
+ $(SED) 's:^includedir=.*:includedir="$${prefix}/include":' \
+ -e 's:^libdir=.*:libdir="$${exec_prefix}/lib":' \
+ $(STAGING_HOST_DIR)/usr/bin/freetype-config
+
libfreetype-install:
${INSTALL_DIR} ${IDIR_LIBFREETYPE}/usr/lib
diff --git a/package/freetype/patches/patch-builds_unix_freetype-config_in b/package/freetype/patches/patch-builds_unix_freetype-config_in
deleted file mode 100644
index 74135b0fd..000000000
--- a/package/freetype/patches/patch-builds_unix_freetype-config_in
+++ /dev/null
@@ -1,16 +0,0 @@
---- freetype-2.6.1.orig/builds/unix/freetype-config.in 2015-09-25 07:58:57.000000000 +0200
-+++ freetype-2.6.1/builds/unix/freetype-config.in 2015-10-23 10:37:49.000000000 +0200
-@@ -13,10 +13,10 @@ LC_ALL=C
- export LC_ALL
-
- prefix="%prefix%"
--exec_prefix="%exec_prefix%"
-+exec_prefix="${prefix}/bin"
- exec_prefix_set="no"
--includedir="%includedir%"
--libdir="%libdir%"
-+includedir="${prefix}/include"
-+libdir="${prefix}/lib"
-
- usage()
- {
diff --git a/package/freetype/patches/patch-builds_unix_freetype2_in b/package/freetype/patches/patch-builds_unix_freetype2_in
index 306057eb3..9dc78c081 100644
--- a/package/freetype/patches/patch-builds_unix_freetype2_in
+++ b/package/freetype/patches/patch-builds_unix_freetype2_in
@@ -1,14 +1,13 @@
---- freetype-2.6.1.orig/builds/unix/freetype2.in 2015-09-25 07:58:57.000000000 +0200
-+++ freetype-2.6.1/builds/unix/freetype2.in 2015-10-23 10:43:36.000000000 +0200
-@@ -1,7 +1,8 @@
+--- freetype-2.11.1.orig/builds/unix/freetype2.in 2021-02-13 09:16:54.000000000 +0100
++++ freetype-2.11.1/builds/unix/freetype2.in 2022-03-01 21:51:10.996321135 +0100
+@@ -1,7 +1,7 @@
prefix=%prefix%
-exec_prefix=%exec_prefix%
-libdir=%libdir%
-includedir=%includedir%
-+exec_prefix=${prefix}
-+libdir=${prefix}/lib
-+includedir=${prefix}/include
-+
++exec_prefix=%prefix%
++libdir=%prefix%/lib
++includedir=%prefix%/include
Name: FreeType 2
- URL: http://freetype.org
+ URL: https://freetype.org
diff --git a/package/fribidi/Makefile b/package/fribidi/Makefile
index bef3bb69f..75bd11536 100644
--- a/package/fribidi/Makefile
+++ b/package/fribidi/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= fribidi
-PKG_VERSION:= 1.0.9
+PKG_VERSION:= 1.0.11
PKG_RELEASE:= 1
-PKG_HASH:= c5e47ea9026fb60da1944da9888b4e0a18854a0e2410bbfe7ad90a054d36e0c7
+PKG_HASH:= 30f93e9c63ee627d1a2cedcf59ac34d45bf30240982f99e44c6e015466b4e73d
PKG_DESCR:= unicode bidirectional algorithm
PKG_SECTION:= libs/misc
PKG_URL:= http://www.fribidi.org/
-PKG_SITES:= https://github.com/fribidi/fribidi/releases/download/v1.0.9/
+PKG_SITES:= https://github.com/fribidi/fribidi/releases/download/v1.0.11/
PKG_OPTS:= dev
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/fstrcmp/Makefile b/package/fstrcmp/Makefile
new file mode 100644
index 000000000..23eb0f6f1
--- /dev/null
+++ b/package/fstrcmp/Makefile
@@ -0,0 +1,24 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= fstrcmp
+PKG_VERSION:= 0.7
+PKG_RELEASE:= 1
+PKG_HASH:= e4018e850f80700acee8da296e56e15b1eef711ab15157e542e7d7e1237c3476
+PKG_DESCR:= make fuzzy comparisons of strings
+PKG_SECTION:= libs/misc
+PKG_SITES:= http://fstrcmp.sourceforge.net/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).D001.tar.gz
+WRKDIST= $(WRKDIR)/$(PKG_NAME)-$(PKG_VERSION).D001
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,FSTRCMP,fstrcmp,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+fstrcmp-install:
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/fstrcmp/patches/patch-Makefile_in b/package/fstrcmp/patches/patch-Makefile_in
new file mode 100644
index 000000000..d947c7d30
--- /dev/null
+++ b/package/fstrcmp/patches/patch-Makefile_in
@@ -0,0 +1,11 @@
+--- fstrcmp-0.7.D001.orig/Makefile.in 2014-03-05 01:13:45.000000000 +0100
++++ fstrcmp-0.7.D001/Makefile.in 2022-02-26 01:14:24.379687998 +0100
+@@ -588,7 +588,7 @@ bin/test_user$(EXEEXT): $(test_user_obj)
+ $(LIBTOOL) --mode=link --tag=CC $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ \
+ $(test_user_obj) lib/libfstrcmp.la $(LDFLAGS) $(LIBS)
+
+-all: all-bin all-doc
++all: all-bin
+
+ all-bin: bin/fstrcmp$(EXEEXT) bin/test_prelude$(EXEEXT) bin/test_user$(EXEEXT)
+
diff --git a/package/fuse/Makefile b/package/fuse/Makefile
index d1bf72e2a..48061955f 100644
--- a/package/fuse/Makefile
+++ b/package/fuse/Makefile
@@ -4,14 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= fuse
-PKG_VERSION:= 2.9.4
+PKG_VERSION:= 2.9.9
PKG_RELEASE:= 1
-PKG_HASH:= 6be9c0bff6af8c677414935f31699ea5a7f8f5f791cfa5205be02ea186b97ce1
+PKG_HASH:= d0e69d5d608cc22ff4843791ad097f554dd32540ddc9bed7638cc6fea7c1b4b5
PKG_DESCR:= filesystem in userspace utility
PKG_SECTION:= sys/fs
PKG_DEPENDS:= libfuse
-PKG_URL:= http://fuse.sourceforge.net/
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=${PKG_NAME}/}
+PKG_SITES:= https://github.com/libfuse/libfuse/releases/download/fuse-$(PKG_VERSION)/
PKG_LIBNAME:= libfuse
PKG_OPTS:= dev
@@ -30,7 +29,6 @@ CONFIGURE_ARGS+= --enable-lib \
--enable-util \
--with-libiconv-prefix="${STAGING_TARGET_DIR}/usr" \
--disable-example \
- --disable-auto-modprobe \
--disable-mtab \
--disable-kernel-module
diff --git a/package/fuse/patches/patch-include_fuse_kernel_h b/package/fuse/patches/patch-include_fuse_kernel_h
new file mode 100644
index 000000000..41a1e7c7d
--- /dev/null
+++ b/package/fuse/patches/patch-include_fuse_kernel_h
@@ -0,0 +1,16 @@
+--- fuse-2.9.9.orig/include/fuse_kernel.h 2019-01-04 14:33:33.000000000 +0100
++++ fuse-2.9.9/include/fuse_kernel.h 2024-02-12 17:14:08.594450378 +0100
+@@ -88,12 +88,7 @@
+ #ifndef _LINUX_FUSE_H
+ #define _LINUX_FUSE_H
+
+-#include <sys/types.h>
+-#define __u64 uint64_t
+-#define __s64 int64_t
+-#define __u32 uint32_t
+-#define __s32 int32_t
+-#define __u16 uint16_t
++#include <linux/types.h>
+
+ /*
+ * Version negotiation:
diff --git a/package/fuse3/Makefile b/package/fuse3/Makefile
new file mode 100644
index 000000000..f038dcea7
--- /dev/null
+++ b/package/fuse3/Makefile
@@ -0,0 +1,47 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${ADK_TOPDIR}/rules.mk
+
+PKG_NAME:= fuse3
+PKG_VERSION:= 3.16.2
+PKG_RELEASE:= 1
+PKG_HASH:= 1bc306be1a1f4f6c8965fbdd79c9ccca021fdc4b277d501483a711cbd7dbcd6c
+PKG_DESCR:= filesystem in userspace utility (v3)
+PKG_SECTION:= sys/fs
+PKG_DEPENDS:= libfuse3
+PKG_SITES:= https://github.com/libfuse/libfuse/archive/refs/tags/
+PKG_LIBNAME:= libfuse3
+PKG_OPTS:= dev
+
+DISTFILES:= fuse-${PKG_VERSION}.tar.gz
+WRKDIST= $(WRKDIR)/libfuse-fuse-$(PKG_VERSION)
+
+PKG_SUBPKGS:= FUSE3_UTILS LIBFUSE3
+PKGSD_LIBFUSE3:= filesystem in userspace library (v3)
+PKGSC_LIBFUSE3:= libs/misc
+
+include ${ADK_TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,FUSE3_UTILS,fuse-utils3,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+$(eval $(call PKG_template,LIBFUSE3,libfuse3,${PKG_VERSION}-${PKG_RELEASE},,${PKGSD_LIBFUSE3},${PKGSC_LIBFUSE3},${PKG_OPTS}))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+MESON_FLAGS+= -Dinitscriptdir="" \
+ -Dudevrulesdir=""
+
+fuse3-utils-install:
+ ${INSTALL_DIR} ${IDIR_FUSE_UTILS}/usr/bin
+ ${CP} ${WRKINST}/usr/bin/fusermount3 ${IDIR_FUSE_UTILS}/usr/bin
+
+libfuse3-install:
+ ${INSTALL_DIR} ${IDIR_LIBFUSE}/usr/lib
+ ${CP} ${WRKINST}/usr/lib/libfuse3.so* \
+ ${IDIR_LIBFUSE}/usr/lib
+
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/fuse3/patches/patch-util_install_helper_sh b/package/fuse3/patches/patch-util_install_helper_sh
new file mode 100644
index 000000000..02aa038fc
--- /dev/null
+++ b/package/fuse3/patches/patch-util_install_helper_sh
@@ -0,0 +1,22 @@
+--- libfuse-fuse-3.16.2.orig/util/install_helper.sh 2023-10-10 09:38:49.000000000 +0200
++++ libfuse-fuse-3.16.2/util/install_helper.sh 2024-02-11 19:19:21.423803542 +0100
+@@ -37,19 +37,3 @@ if $useroot; then
+ fi
+ fi
+
+-if [ "${udevrulesdir}" != "" ]; then
+- install -D -m 644 "${MESON_SOURCE_ROOT}/util/udev.rules" \
+- "${DESTDIR}${udevrulesdir}/99-fuse3.rules"
+-fi
+-
+-if [ "$initscriptdir" != "" ]; then
+- install -D -m 755 "${MESON_SOURCE_ROOT}/util/init_script" \
+- "${DESTDIR}${initscriptdir}/fuse3"
+-
+- if test -x /usr/sbin/update-rc.d && test -z "${DESTDIR}"; then
+- /usr/sbin/update-rc.d fuse3 start 34 S . start 41 0 6 . || /bin/true
+- else
+- echo "== FURTHER ACTION REQUIRED =="
+- echo "Make sure that your init system will start the ${DESTDIR}${initscriptdir}/init.d/fuse3 init script"
+- fi
+-fi
diff --git a/package/fuse3/patches/patch-util_meson_build b/package/fuse3/patches/patch-util_meson_build
new file mode 100644
index 000000000..6b8f915f8
--- /dev/null
+++ b/package/fuse3/patches/patch-util_meson_build
@@ -0,0 +1,12 @@
+--- libfuse-fuse-3.16.2.orig/util/meson.build 2023-10-10 09:38:49.000000000 +0200
++++ libfuse-fuse-3.16.2/util/meson.build 2024-02-11 19:25:24.107798622 +0100
+@@ -26,9 +26,3 @@ if udevrulesdir == ''
+ warning('could not determine udevdir, udev.rules will not be installed')
+ endif
+
+-meson.add_install_script('install_helper.sh',
+- join_paths(get_option('prefix'), get_option('sysconfdir')),
+- join_paths(get_option('prefix'), get_option('bindir')),
+- udevrulesdir,
+- '@0@'.format(get_option('useroot')),
+- get_option('initscriptdir'))
diff --git a/package/fwupdate/Makefile b/package/fwupdate/Makefile
index 8cf897ed4..738185fd9 100644
--- a/package/fwupdate/Makefile
+++ b/package/fwupdate/Makefile
@@ -5,7 +5,7 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= fwupdate
PKG_VERSION:= 1.0
-PKG_RELEASE:= 1
+PKG_RELEASE:= 2
PKG_DESCR:= update firmware
PKG_SECTION:= base/adk
PKG_DEPENDS:= mke2fs
@@ -27,5 +27,9 @@ fwupdate-install:
$(INSTALL_DIR) $(IDIR_FWUPDATE)/usr/sbin
$(INSTALL_BIN) $(WRKBUILD)/fwupdate $(IDIR_FWUPDATE)/usr/sbin
$(INSTALL_BIN) $(WRKBUILD)/fwvalidate $(IDIR_FWUPDATE)/usr/sbin
+ $(SED) "s/@@DISK@@/$(ADK_TARGET_ROOTDEV)/g" \
+ $(IDIR_FWUPDATE)/usr/sbin/fwupdate
+ $(SED) "s/@@DISK@@/$(ADK_TARGET_ROOTDEV)/g" \
+ $(IDIR_FWUPDATE)/usr/sbin/fwvalidate
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/fwupdate/files/fwupdate.postinst b/package/fwupdate/files/fwupdate.postinst
new file mode 100644
index 000000000..17871ff30
--- /dev/null
+++ b/package/fwupdate/files/fwupdate.postinst
@@ -0,0 +1,3 @@
+#!/bin/sh
+. $IPKG_INSTROOT/etc/functions.sh
+add_rcconf fwupdate NO
diff --git a/package/fwupdate/files/fwupdate.service b/package/fwupdate/files/fwupdate.service
deleted file mode 100644
index f54519547..000000000
--- a/package/fwupdate/files/fwupdate.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Firmware Update Validation
-After=dropbear.service
-
-[Service]
-ExecStart=/usr/sbin/fwvalidate
-
-[Install]
-WantedBy=multi-user.target
diff --git a/package/fwupdate/src/fwupdate b/package/fwupdate/src/fwupdate
index 1efe08339..68796d7bd 100755
--- a/package/fwupdate/src/fwupdate
+++ b/package/fwupdate/src/fwupdate
@@ -2,8 +2,22 @@
# This file is part of the OpenADK project.
# Do update.
-PART0="/dev/sda2"
-PART1="/dev/sda3"
+GRUB=$(which grub-reboot)
+if [ "${GRUB}" = "/usr/sbin/grub-reboot" ]; then
+ REVERSE=0
+else
+ REVERSE=1
+fi
+
+DISK=@@DISK@@
+
+if [ $REVERSE -eq 1 ]; then
+ PART0="/dev/${DISK}p1"
+ PART1="/dev/${DISK}p2"
+else
+ PART0="/dev/${DISK}2"
+ PART1="/dev/${DISK}3"
+fi
# Name of the archive, which is the firmware. For this file is the checksum calculated and
# checked against the one from the tar archive.
@@ -59,10 +73,12 @@ CURRENT_SYS="$(rdev /|awk '{ print $1 }')"
case "$CURRENT_SYS" in
"$PART0")
MOUNTPART="$PART1"
+ PARTNUM=2
OS=OpenADK2
;;
"$PART1")
MOUNTPART="$PART0"
+ PARTNUM=1
OS=OpenADK1
;;
*)
@@ -130,18 +146,23 @@ fi
cd /
umount $MOUNTPART
-grep /boot /proc/mounts 2>/dev/null
-if [ $? -eq 0 ]; then
- mount -o remount,rw /boot
+if [ $REVERSE -eq 1 ]; then
+ echo "Switch bootable partition to new system"
+ sfdisk -A /dev/$DISK $PARTNUM >/dev/null 2>&1
else
- mount /dev/sda1 /boot
-fi
-grub-reboot $OS
grep /boot /proc/mounts 2>/dev/null
-if [ $? -eq 0 ]; then
- mount -o remount,ro /boot
-else
- umount /boot
+ if [ $? -eq 0 ]; then
+ mount -o remount,rw /boot
+ else
+ mount /dev/sda1 /boot
+ fi
+ grub-reboot $OS
+ grep /boot /proc/mounts 2>/dev/null
+ if [ $? -eq 0 ]; then
+ mount -o remount,ro /boot
+ else
+ umount /boot
+ fi
fi
sync
echo "Reboot now to the updated system $OS"
diff --git a/package/fwupdate/src/fwvalidate b/package/fwupdate/src/fwvalidate
index e87c5beed..f388da784 100755
--- a/package/fwupdate/src/fwvalidate
+++ b/package/fwupdate/src/fwvalidate
@@ -2,8 +2,22 @@
# This file is part of the OpenADK project.
# Validate update.
-PART0="/dev/sda2"
-PART1="/dev/sda3"
+GRUB=$(which grub-reboot)
+if [ "${GRUB}" = "/usr/sbin/grub-reboot" ]; then
+ REVERSE=0
+else
+ REVERSE=1
+fi
+
+DISK=@@DISK@@
+
+if [ $REVERSE -eq 1 ]; then
+ PART0="/dev/${DISK}p1"
+ PART1="/dev/${DISK}p2"
+else
+ PART0="/dev/${DISK}2"
+ PART1="/dev/${DISK}3"
+fi
APPLIANCE_NAME=OpenADK
@@ -43,6 +57,24 @@ chk_initial_save(){
echo "please save configuration"
fi
}
+
+updatebootflag(){
+
+ case "$CURRENT_SYS" in
+ "$PART1")
+ sfdisk -A /dev/$DISK 1
+ ;;
+ "$PART0")
+ sfdisk -A /dev/$DISK 2
+ ;;
+ *)
+ echo "Current partition $CURRENT_SYS not recognized"
+ exit 1
+ ;;
+ esac
+
+}
+
updategrub(){
mount -o remount,rw /boot
@@ -120,12 +152,22 @@ if [ $TESTS -eq $TESTSUM ]; then
logger -t update "All Tests passed."
if [ "x$1" = "x" ]; then
logger -t update "Set default boot partition for bootloader."
+ mount -o remount,rw /
rm /firmware_check
+ mount -o remount,ro /
echo "System check was successful" >> $STAT_FILE
- updategrub
+ if [ $REVERSE -eq 1 ]; then
+ echo "Nothing todo. All fine."
+ logger -t update "Nothing todo. All fine."
+ else
+ updategrub
+ fi
fi
else
- logger -t update "Not all tests passed. The the default system remains on the current partition."
+ if [ $REVERSE -eq 1 ]; then
+ updatebootflag
+ fi
+ logger -t update "Not all tests passed. The default system remains on the current partition."
logger -t update "Please try to reboot the system and repeat the update."
echo "ERROR last system update failed, please reboot and try again." >> $STAT_FILE
exit 1
diff --git a/package/gatling/Makefile b/package/gatling/Makefile
index 300d1690a..356ea4c3a 100644
--- a/package/gatling/Makefile
+++ b/package/gatling/Makefile
@@ -4,16 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= gatling
-PKG_VERSION:= 0.11
+PKG_VERSION:= 0.16
PKG_RELEASE:= 1
-PKG_HASH:= 9e1cb18612905b63755b0f463e6c5268789b3ab47db364bebe1ad077583e7571
+PKG_HASH:= 5f96438ee201d7f1f6c2e0849ff273b196bdc7493f29a719ce8ed08c8be6365b
PKG_DESCR:= small non-forking webserver
PKG_SECTION:= net/http
PKG_BUILDDEP:= libowfat
-PKG_URL:= http://www.fefe.de/gatling/
-PKG_SITES:= http://dl.fefe.de/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
+PKG_NEEDS:= iconv
+PKG_URL:= https://www.fefe.de/gatling/
+PKG_SITES:= https://www.fefe.de/gatling/
include ${ADK_TOPDIR}/mk/package.mk
@@ -24,7 +23,6 @@ INSTALL_STYLE:= manual
MAKE_FILE:= GNUmakefile
ALL_TARGET:= gatling
-TARGET_CPPFLAGS+= -I${STAGING_TARGET_DIR}/usr/include/owfat
XAKE_FLAGS+= CC='${TARGET_CC}' \
CFLAGS='${TARGET_CPPFLAGS} ${TARGET_CFLAGS}' \
ZLIB=0 DIET= prefix='${WRKINST}/usr'
diff --git a/package/gatling/patches/patch-GNUmakefile b/package/gatling/patches/patch-GNUmakefile
index 723400f5a..4c81b6a99 100644
--- a/package/gatling/patches/patch-GNUmakefile
+++ b/package/gatling/patches/patch-GNUmakefile
@@ -1,16 +1,16 @@
$Id$
---- gatling-0.11.orig/GNUmakefile 2008-12-05 13:31:01.000000000 +0100
-+++ gatling-0.11/GNUmakefile 2011-01-15 14:10:40.000000000 +0100
-@@ -17,7 +17,7 @@ CROSS=
- #CROSS=i686-mingw32-
- CC=$(CROSS)gcc
+--- gatling-0.16.orig/GNUmakefile 2020-05-13 15:53:27.000000000 +0200
++++ gatling-0.16/GNUmakefile 2024-02-23 04:29:47.451896784 +0100
+@@ -25,7 +25,7 @@ CC=$(CROSS)gcc
+ endif
+
CFLAGS=-pipe -Wall
-LDFLAGS=
+LDFLAGS?=
- path = $(subst :, ,$(PATH))
- diet_path = $(foreach dir,$(path),$(wildcard $(dir)/diet))
-@@ -147,9 +147,10 @@ havesetresuid.h: trysetresuid.c
+ #CFLAGS+=-DSTATE_DEBUG -DMOREDEBUG -DDEBUG_EVENTS -DSMDEBUG
+
+@@ -194,9 +194,10 @@ havesetresuid.h: trysetresuid.c
dummy.c:
touch $@
diff --git a/package/gatling/patches/patch-http_c b/package/gatling/patches/patch-http_c
new file mode 100644
index 000000000..7e7c9ff93
--- /dev/null
+++ b/package/gatling/patches/patch-http_c
@@ -0,0 +1,19 @@
+--- gatling-0.16.orig/http.c 2020-11-26 16:36:13.000000000 +0100
++++ gatling-0.16/http.c 2024-02-23 05:17:40.115857819 +0100
+@@ -2202,16 +2202,9 @@ static void get_md5_randomness(const uin
+ static int initialized;
+ if (!initialized) {
+ unsigned char buf[16];
+-#if defined(__linux__) || defined(__OpenBSD__)
+- if (getentropy(buf, sizeof buf)) {
+- buffer_putsflush(buffer_2, "getentropy failed (should never happen)\n");
+- // carry on with bad randomness
+- }
+-#else
+ int fd=open("/dev/urandom",O_RDONLY);
+ read(fd,buf,16);
+ close(fd);
+-#endif
+ MD5Init(&md5_ctx);
+ MD5Update(&md5_ctx,buf,16);
+ initialized=1;
diff --git a/package/gcc/Makefile b/package/gcc/Makefile
index d7b2d072a..d08f01926 100644
--- a/package/gcc/Makefile
+++ b/package/gcc/Makefile
@@ -60,7 +60,7 @@ CONFIGURE_ENV+= have_sys_sdt_h=no
CONFIGURE_ARGS+= --host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
- --disable-__cxa_atexit \
+ --enable-__cxa_atexit \
--without-headers \
--libexecdir=/usr/lib \
--disable-libssp \
diff --git a/package/gcr/Makefile b/package/gcr/Makefile
index 438d06c96..97de6c379 100644
--- a/package/gcr/Makefile
+++ b/package/gcr/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gcr
-PKG_VERSION:= 3.20.0
-PKG_EXTRAVER:= 3.20
-PKG_RELEASE:= 2
-PKG_HASH:= 90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379
+PKG_VERSION:= 3.40.0
+PKG_EXTRAVER:= 3.40
+PKG_RELEASE:= 1
+PKG_HASH:= b9d3645a5fd953a54285cc64d4fc046736463dbd4dcc25caf5c7b59bed3027f5
PKG_DESCR:= gnome keyring library
PKG_SECTION:= libs/crypto
-PKG_BUILDDEP:= p11-kit intltool-host libgtk3
+PKG_BUILDDEP:= p11-kit intltool-host libgtk3 meson-host
PKG_URL:= https://wiki.gnome.org/action/show/Projects/GnomeKeyring
PKG_SITES:= http://ftp.acc.umu.se/pub/gnome/sources/gcr/$(PKG_EXTRAVER)/
@@ -18,6 +18,15 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,GCR,gcr,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+MESON_FLAGS+= -Dintrospection=false \
+ -Dgtk_doc=false
+
gcr-install:
$(INSTALL_DIR) $(IDIR_GCR)/usr/lib
$(CP) $(WRKINST)/usr/lib/lib*.so* \
diff --git a/package/gdb/Makefile b/package/gdb/Makefile
index e15d7420d..e4cbe89a9 100644
--- a/package/gdb/Makefile
+++ b/package/gdb/Makefile
@@ -4,14 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= gdb
-PKG_VERSION:= 11.1
+PKG_VERSION:= 14.2
PKG_RELEASE:= 1
-PKG_HASH:= cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94
+PKG_HASH:= 2d4dd8061d8ded12b6c63f55e45344881e8226105f4d2a9b234040efa5ce7772
PKG_DESCR:= program debugger
PKG_SECTION:= app/debug
PKG_SITES:= ${MASTER_SITE_GNU:=gdb/}
-PKG_DEPENDS:= libncurses libreadline zlib libexpat libthread-db libgmp
-PKG_BUILDDEP:= ncurses readline expat zlib gmp
+PKG_DEPENDS:= libncurses libreadline zlib libexpat libthread-db libgmp mpfr
+PKG_BUILDDEP:= ncurses readline expat zlib gmp mpfr
PKG_NEEDS:= c++
PKG_ARCH_DEPENDS:= !cris !avr32 !microblaze
@@ -27,6 +27,7 @@ WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
CONFIGURE_ENV+= host_configargs='--with-libgmp-prefix="${STAGING_TARGET_DIR}/usr"'
# --enable-static is required to build libbfd.a
CONFIGURE_ARGS+= --enable-static \
+ --disable-shared \
--without-uiout \
--disable-tui \
--disable-gdbtk \
@@ -46,6 +47,7 @@ CONFIGURE_ARGS+= --enable-static \
--with-curses \
--with-libexpat-prefix="${STAGING_TARGET_DIR}/usr" \
--with-gmp="${STAGING_TARGET_DIR}/usr" \
+ --with-mpfr="${STAGING_TARGET_DIR}/usr" \
--enable-gdbmi
gdb-install:
diff --git a/package/gdbserver/Makefile b/package/gdbserver/Makefile
index 907140cf4..7238eb306 100644
--- a/package/gdbserver/Makefile
+++ b/package/gdbserver/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= gdbserver
-PKG_VERSION:= 11.1
+PKG_VERSION:= 14.2
PKG_RELEASE:= 1
-PKG_HASH:= cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94
+PKG_HASH:= 2d4dd8061d8ded12b6c63f55e45344881e8226105f4d2a9b234040efa5ce7772
PKG_DESCR:= remote program debugger utility
PKG_SECTION:= app/debug
PKG_NEEDS:= c++
@@ -30,11 +30,11 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,GDBSERVER,gdbserver,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIGURE_ARGS+= --enable-static
-ifneq ($(ADK_TARGET_BINFMT_FLAT)$(ADK_TARGET_USE_STATIC_LIBS_ONLY)$(ADK_TARGET_USE_STATIC_AND_SHARED_LIBS),)
-TARGET_LDFLAGS+= -static-libstdc++
-CONFIGURE_ARGS+= --disable-build-with-cxx --with-libthread-db=$(STAGING_TARGET_DIR)/usr/lib/libthread_db.a --disable-source-highlight
-endif
+CONFIGURE_ARGS+= --enable-static \
+ --disable-gdb \
+ --disable-sim \
+ --without-curses \
+ --without-system-zlib
gdbserver-install:
${INSTALL_DIR} ${IDIR_GDBSERVER}/usr/bin
diff --git a/package/gdbserver/patches/patch-gdb_nat_fork-inferior_c b/package/gdbserver/patches/patch-gdb_nat_fork-inferior_c
new file mode 100644
index 000000000..b1949c798
--- /dev/null
+++ b/package/gdbserver/patches/patch-gdb_nat_fork-inferior_c
@@ -0,0 +1,10 @@
+--- gdb-14.2.orig/gdb/nat/fork-inferior.c 2024-03-03 06:55:00.000000000 +0100
++++ gdb-14.2/gdb/nat/fork-inferior.c 2024-03-22 17:02:35.981582750 +0100
+@@ -27,6 +27,7 @@
+ #include "gdbsupport/pathstuff.h"
+ #include "gdbsupport/signals-state-save-restore.h"
+ #include "gdbsupport/gdb_tilde_expand.h"
++#include "linux-ptrace.h"
+ #include <vector>
+
+ extern char **environ;
diff --git a/package/gdk-pixbuf/Makefile b/package/gdk-pixbuf/Makefile
index 647b01aff..ee6d9c043 100644
--- a/package/gdk-pixbuf/Makefile
+++ b/package/gdk-pixbuf/Makefile
@@ -11,7 +11,7 @@ PKG_HASH:= d55e5b383ee219bd0e23bf6ed4427d56a7db5379729a6e3e0a0e0eba9a8d8879
PKG_DESCR:= image loading and pixel buffer manipulation library
PKG_SECTION:= libs/image
PKG_BUILDDEP:= libjpeg-turbo libtiff glib libpng
-HOST_BUILDDEP:= glib-host libffi-host
+HOST_BUILDDEP:= libiconv-host glib-host libffi-host
PKG_NEEDS:= c++
PKG_SITES:= $(MASTER_SITE_GNOME:=gdk-pixbuf/$(PKG_EXTRAVER)/)
PKG_OPTS:= dev
diff --git a/package/genimage/Makefile b/package/genimage/Makefile
index 4791a76e1..889d77eda 100644
--- a/package/genimage/Makefile
+++ b/package/genimage/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= genimage
-PKG_VERSION:= 9
+PKG_VERSION:= 17
PKG_RELEASE:= 1
-PKG_HASH:= 69f35af7edf6f4dbdac7a18ddc69dcf38c501e43d8b50c524555754c51479078
+PKG_HASH:= a8756e3567a0d4d82c36b08ccc1e088250b9006d5670c6b2b014185e6ec60671
PKG_DESCR:= image creation utility
PKG_SECTION:= dev/tools
HOST_BUILDDEP:= confuse-host
diff --git a/package/gettext/Makefile b/package/gettext/Makefile
index 82439e19e..6594eb995 100644
--- a/package/gettext/Makefile
+++ b/package/gettext/Makefile
@@ -9,6 +9,7 @@ PKG_RELEASE:= 1
PKG_HASH:= 9c1781328238caa1685d7bc7a2e1dcf1c6c134e86b42ed554066734b621bd12f
PKG_DESCR:= i18n tools and libs
PKG_SECTION:= libs/misc
+HOST_BUILDDEP:= automake-host
PKG_URL:= https://www.gnu.org/software/gettext/
PKG_SITES:= http://ftp.gnu.org/pub/gnu/gettext/
PKG_OPTS:= dev
diff --git a/package/git/Makefile b/package/git/Makefile
index db209ca7e..2756d68fb 100644
--- a/package/git/Makefile
+++ b/package/git/Makefile
@@ -4,17 +4,25 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= git
-PKG_VERSION:= 2.31.1
+PKG_VERSION:= 2.44.0
PKG_RELEASE:= 1
-PKG_HASH:= 9f61417a44d5b954a5012b6f34e526a3336dcf5dd720e2bb7ada92ad8b3d6680
+PKG_HASH:= e358738dcb5b5ea340ce900a0015c03ae86e804e7ff64e47aa4631ddee681de3
PKG_DESCR:= fast version control system
PKG_SECTION:= dev/scm
-PKG_BUILDDEP:= curl expat libressl
-PKG_DEPENDS:= libcurl libexpat libressl
+PKG_BUILDDEP:= zlib curl expat
+PKG_DEPENDS:= zlib curl libexpat
PKG_NEEDS:= threads
PKG_URL:= http://git-scm.com/
PKG_SITES:= https://www.kernel.org/pub/software/scm/git/
+PKG_CHOICES_GIT:= WITH_LIBRESSL WITH_OPENSSL
+PKGCD_WITH_LIBRESSL:= use libressl for crypto
+PKGCB_WITH_LIBRESSL:= libressl
+PKGCS_WITH_LIBRESSL:= libressl
+PKGCD_WITH_OPENSSL:= use openssl for crypto
+PKGCB_WITH_OPENSSL:= openssl
+PKGCS_WITH_OPENSSL:= libopenssl
+
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,GIT,git,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
diff --git a/package/glib/Makefile b/package/glib/Makefile
index 5dbfc4745..eb77cf8fe 100644
--- a/package/glib/Makefile
+++ b/package/glib/Makefile
@@ -4,15 +4,16 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= glib
-PKG_VERSION:= 2.56.1
+PKG_VERSION:= 2.78.4
PKG_RELEASE:= 1
-PKG_EXTRAVER:= 2.56
-PKG_HASH:= 40ef3f44f2c651c7a31aedee44259809b6f03d3d20be44545cd7d177221c0b8d
+PKG_EXTRAVER:= 2.78
+PKG_HASH:= 24b8e0672dca120cc32d394bccb85844e732e04fe75d18bb0573b2dbc7548f63
PKG_DESCR:= low-level core library that forms the basis of gtk+
PKG_SECTION:= libs/misc
-PKG_DEPENDS:= libpcre zlib libffi
-PKG_BUILDDEP:= glib-host util-linux libffi zlib dbus pcre
-HOST_BUILDDEP:= pkgconf-host libiconv-host libffi-host python2-host gettext-host util-linux-host
+PKG_DEPENDS:= pcre2 zlib libffi
+PKG_BUILDDEP:= glib-host util-linux libffi zlib dbus pcre2
+HOST_BUILDDEP:= pkgconf-host libiconv-host libffi-host python3-host gettext-host util-linux-host
+HOST_BUILDDEP+= pcre2-host meson-host
PKG_NEEDS:= threads intl iconv
PKG_URL:= http://www.gtk.org/
PKG_SITES:= http://ftp.gnome.org/pub/GNOME/sources/glib/$(PKG_EXTRAVER)/
@@ -24,42 +25,32 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,GLIB,glib,$(PKG_VERSION)-$(PKG_RELEASE)))
$(eval $(call PKG_template,GLIB,glib,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
-ifeq ($(ADK_PACKAGE_LIBICONV),y)
-CONFIGURE_ARGS+= --with-libiconv=yes
-else
-CONFIGURE_ARGS+= --with-libiconv=no
-endif
-CONFIGURE_ARGS+= --disable-mem-pools \
- --disable-rebuilds \
- --disable-fam \
- --disable-dtrace \
- --disable-compile-warnings \
- --with-pcre=system \
- --with-threads=posix
-CONFIGURE_ENV+= glib_cv_long_long_format=ll \
- glib_cv_stack_grows=no \
- glib_cv_have_strlcpy=no \
- glib_cv_uscore=no \
- ac_cv_func_posix_getpwuid_r=yes \
- ac_cv_func_posix_getgrgid_r=yes
+HOSTWRKBUILD= $(WRKSRC)
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
-HOST_STYLE:= auto
-HOST_CPPFLAGS+= -I$(STAGING_HOST_DIR)/usr/include/libmount
-ifneq ($(OS_FOR_BUILD),CYGWIN)
-HOST_CFLAGS+= -fPIC
-endif
-HOST_CONFIGURE_ARGS+= --disable-fam \
- --disable-selinux \
- --disable-dtrace \
- --enable-static \
- --with-pcre=internal \
- --with-libiconv=yes \
- --disable-shared \
- --disable-compile-warnings
+HOST_CONFIG_STYLE:= manual
+HOST_STYLE:= manual
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
-hostpost-install:
- $(CP) $(STAGING_HOST_DIR)/usr/lib/glib-2.0/include/glibconfig.h \
- $(STAGING_HOST_DIR)/usr/include/glib-2.0/
+MESON_FLAGS:= -Dtests=false -Dxattr=false -Doss_fuzz=disabled
+
+host-configure:
+ (cd $(HOSTWRKBUILD) && PATH='$(HOST_PATH)' meson setup --prefix $(STAGING_HOST_DIR)/usr _build)
+
+host-build:
+ (cd $(HOSTWRKBUILD) && PATH='$(HOST_PATH)' meson compile -C _build)
+
+glib-hostinstall:
+ (cd $(HOSTWRKBUILD) && PATH='$(HOST_PATH)' meson install -C _build)
+
+do-configure:
+ (cd $(WRKBUILD) && PATH='$(HOST_PATH)' meson setup --prefix /usr \
+ --libdir lib --cross-file $(STAGING_HOST_DIR)/etc/meson/cross-compilation.conf -Dtests=false _build)
+
+do-build:
+ (cd $(WRKBUILD) && PATH='$(HOST_PATH)' meson compile -C _build)
glib-install:
$(INSTALL_DIR) $(IDIR_GLIB)/usr/lib
diff --git a/package/glib/patches/patch-glib_gnulib_meson_build b/package/glib/patches/patch-glib_gnulib_meson_build
new file mode 100644
index 000000000..4039f468f
--- /dev/null
+++ b/package/glib/patches/patch-glib_gnulib_meson_build
@@ -0,0 +1,12 @@
+--- glib-2.75.2.orig/glib/gnulib/meson.build 2023-01-06 13:49:52.000000000 +0100
++++ glib-2.75.2/glib/gnulib/meson.build 2023-01-22 14:08:55.068305964 +0100
+@@ -312,9 +312,6 @@ endif
+ if not gl_cv_func_frexp_works and gl_cv_func_frexp_broken_beyond_repair
+ error ('frexp() is missing or broken beyond repair, and we have nothing to replace it with')
+ endif
+-if not gl_cv_func_frexpl_works and gl_cv_func_frexpl_broken_beyond_repair
+- error ('frexpl() is missing or broken beyond repair, and we have nothing to replace it with')
+-endif
+
+ math_h_config.set ('REPLACE_FREXP', gl_cv_func_frexp_works ? 0 : 1)
+ math_h_config.set ('REPLACE_FREXPL', gl_cv_func_frexpl_works ? 0 : 1)
diff --git a/package/glib/patches/patch-gobject-2_0_pc_in b/package/glib/patches/patch-gobject-2_0_pc_in
deleted file mode 100644
index 7c00fc7b5..000000000
--- a/package/glib/patches/patch-gobject-2_0_pc_in
+++ /dev/null
@@ -1,10 +0,0 @@
---- glib-2.56.1.orig/gobject-2.0.pc.in 2016-10-22 07:12:49.000000000 +0200
-+++ glib-2.56.1/gobject-2.0.pc.in 2021-11-04 05:31:24.191433397 +0100
-@@ -7,6 +7,6 @@ Name: GObject
- Description: GLib Type, Object, Parameter and Signal Library
- Requires: glib-2.0
- Version: @VERSION@
--Libs: -L${libdir} -lgobject-2.0
-+Libs: -L${libdir} -lgobject-2.0 -lffi
- Libs.private: @LIBFFI_LIBS@
- Cflags:
diff --git a/package/glib/patches/patch-meson_build b/package/glib/patches/patch-meson_build
new file mode 100644
index 000000000..c410eac33
--- /dev/null
+++ b/package/glib/patches/patch-meson_build
@@ -0,0 +1,10 @@
+--- glib-2.75.2.orig/meson.build 2023-01-06 13:49:52.000000000 +0100
++++ glib-2.75.2/meson.build 2023-01-22 14:18:11.633406695 +0100
+@@ -513,6 +513,7 @@ if cc.get_id() == 'gcc' or cc.get_id() =
+ '-Werror=missing-include-dirs',
+ '-Werror=pointer-arith',
+ '-Werror=unused-result',
++ '-Wno-error=format-nonliteral',
+ ]
+
+ warning_c_args = warning_common_args + [
diff --git a/package/glibc/Makefile b/package/glibc/Makefile
index 874ec2f8a..a36c30903 100644
--- a/package/glibc/Makefile
+++ b/package/glibc/Makefile
@@ -23,6 +23,9 @@ $(eval $(call PKG_template,GLIBC,glibc,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPEN
$(eval $(call PKG_template,GLIBC_DEV,glibc-dev,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
$(eval $(call PKG_template,GLIBC_GCONV,glibc-gconv,$(PKG_VERSION)-${PKG_RELEASE},${PKGSS_GLIBC_GCONV},${PKGSD_GLIBC_GCONV},${PKG_SECTION},${PKG_OPTS}))
+GLIBC_CONFOPTS:= --build=$(GNU_HOST_NAME) \
+ --host=$(GNU_TARGET_NAME)
+
GLIBC_ENV:= PATH='${TARGET_PATH}' \
BUILD_CC='${CC_FOR_BUILD}' \
CFLAGS="$(TARGET_CFLAGS)" \
@@ -31,6 +34,7 @@ GLIBC_ENV:= PATH='${TARGET_PATH}' \
CXX="${TARGET_CXX}" \
AR="${TARGET_AR}" \
RANLIB="${TARGET_RANLIB}" \
+ ARCH="${ADK_TARGET_KARCH}" \
libc_cv_forced_unwind=yes \
libc_cv_cc_with_libunwind=yes \
libc_cv_c_cleanup=yes \
@@ -46,15 +50,13 @@ do-install:
ifneq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
${INSTALL_DIR} ${IDIR_GLIBC}/$(ADK_TARGET_LIBC_PATH)
$(CP) $(STAGING_TARGET_DIR)/lib/ld*.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH)
- for file in libc libpthread librt libcrypt libdl libm libanl libnsl libresolv libutil libnss_dns libnss_files; do \
- $(CP) $(STAGING_TARGET_DIR)/$(ADK_TARGET_LIBC_ABI_PATH)/$$file.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
- #$(CP) $(STAGING_TARGET_DIR)/$(ADK_TARGET_LIBC_ABI_PATH)/$$file-$(PKG_GLIBCVER).so $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
+ for file in libc libpthread librt libdl libm libanl libnsl libresolv libutil libnss_dns libnss_files; do \
+ $(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
done
else
${INSTALL_DIR} ${IDIR_GLIBC}/$(ADK_TARGET_LIBC_PATH)
- for file in libnss_dns libnss_files; do \
- $(CP) $(STAGING_TARGET_DIR)/$(ADK_TARGET_LIBC_ABI_PATH)/$$file.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
- $(CP) $(STAGING_TARGET_DIR)/$(ADK_TARGET_LIBC_ABI_PATH)/$$file-$(PKG_GLIBCVER).so $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
+ -for file in libnss_dns libnss_files; do \
+ $(CP) $(STAGING_TARGET_DIR)/lib/$$file.so* $(IDIR_GLIBC)/$(ADK_TARGET_LIBC_PATH); \
done
endif
${INSTALL_DIR} $(IDIR_GLIBC)/usr/bin
@@ -72,11 +74,7 @@ glibc-gconv-install:
glibc-dev-install:
${INSTALL_DIR} $(IDIR_GLIBC_DEV)/$(ADK_TARGET_LIBC_PATH) $(IDIR_GLIBC_DEV)/usr/lib
-ifeq ($(ADK_TARGET_ARCH_RISCV64),y)
- ${CP} ${STAGING_TARGET_DIR}/usr/lib/*/libc.so ${IDIR_GLIBC_DEV}/usr/lib
-else
- ${CP} ${STAGING_TARGET_DIR}/usr/lib/*/libc.so ${IDIR_GLIBC_DEV}/usr/lib
-endif
+ ${CP} ${STAGING_TARGET_DIR}/usr/lib/libc.so ${IDIR_GLIBC_DEV}/usr/lib
ifeq ($(ADK_TARGET_ABI_O32),y)
ifeq ($(ADK_TARGET_BIG_ENDIAN),y)
$(SED) "s#@@ELFTARGET@@#elf32-tradbigmips#" $(IDIR_GLIBC_DEV)/usr/lib/libc.so
diff --git a/package/glu/Makefile b/package/glu/Makefile
index ee8d70b32..ac25d5f29 100644
--- a/package/glu/Makefile
+++ b/package/glu/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= glu
-PKG_VERSION:= 9.0.0
+PKG_VERSION:= 9.0.2
PKG_RELEASE:= 1
-PKG_HASH:= 1f7ad0d379a722fcbd303aa5650c6d7d5544fde83196b42a73d1193568a4df12
+PKG_HASH:= 6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4
PKG_DESCR:= opengl utility library
PKG_SECTION:= libs/video
PKG_BUILDDEP:= mesa
@@ -15,8 +15,6 @@ PKG_SITES:= ftp://ftp.freedesktop.org/pub/mesa/glu/
PKG_LIBNAME:= libglu
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBGLU,libglu,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
diff --git a/package/gmediaserver/Makefile b/package/gmediaserver/Makefile
index 6b44af9c3..3b5a420db 100644
--- a/package/gmediaserver/Makefile
+++ b/package/gmediaserver/Makefile
@@ -5,11 +5,11 @@ include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= gmediaserver
PKG_VERSION:= 0.13.0
-PKG_RELEASE:= 2
+PKG_RELEASE:= 4
PKG_HASH:= 357030911bcce4ac9e47c2c9219b72e88705a8465899d4e0553bce540fb0fd12
PKG_DESCR:= media server
PKG_SECTION:= mm/video
-PKG_DEPENDS:= id3lib libupnp libmagic
+PKG_DEPENDS:= id3lib libupnp libmagic magic
PKG_BUILDDEP:= id3lib libupnp file
PKG_NEEDS:= c++
PKG_URL:= http://www.gnu.org/software/gmediaserver
diff --git a/package/gmediaserver/patches/patch-src_metadata_c b/package/gmediaserver/patches/patch-src_metadata_c
new file mode 100644
index 000000000..86990d3d0
--- /dev/null
+++ b/package/gmediaserver/patches/patch-src_metadata_c
@@ -0,0 +1,78 @@
+ - magic_file() returns strings like 'audio/mpeg; charset=binary',
+ ignore the last part
+ - Add flv and flac file type definitions
+--- gmediaserver-0.13.0.orig/src/metadata.c 2007-10-20 11:41:32.000000000 +0200
++++ gmediaserver-0.13.0/src/metadata.c 2022-03-28 07:44:13.332180349 +0200
+@@ -86,6 +86,8 @@ typedef enum {
+ FILE_JPG,
+ FILE_PNG,
+ FILE_TIFF,
++ FILE_FLV,
++ FILE_FLAC,
+ FILE_UNKNOWN,
+ FILE_TYPES_COUNT,
+ } FileType;
+@@ -122,6 +124,8 @@ static const char *file_type_dlna_pn[] =
+ [FILE_JPG] = "JPEG_TN",
+ [FILE_PNG] = NULL,
+ [FILE_TIFF] = NULL,
++ [FILE_FLV] = NULL,
++ [FILE_FLAC] = NULL,
+ [FILE_UNKNOWN] = NULL,
+ };
+
+@@ -134,6 +138,8 @@ static const char *file_type_mime_types[
+ [FILE_OGG] = "audio/vorbis",
+ [FILE_MPG] = "video/mpeg",
+ [FILE_MP4] = "video/mp4",
++ [FILE_MP4] = "video/x-msvideo",
++ [FILE_MP4] = "video/x-matroska",
+ [FILE_PLS] = "audio/x-scpls",
+ [FILE_M3U] = "audio/m3u",
+ [FILE_EXTM3U] = "audio/m3u",
+@@ -142,6 +148,8 @@ static const char *file_type_mime_types[
+ [FILE_JPG] = "image/jpeg",
+ [FILE_PNG] = "image/png",
+ [FILE_TIFF] = "image/tiff",
++ [FILE_FLV] = "video/x-flv",
++ [FILE_FLAC] = "audio/flac",
+ [FILE_UNKNOWN] = "application/octet-stream",
+ };
+
+@@ -162,6 +170,8 @@ static const char *file_type_names[] = {
+ [FILE_JPG] = "jpg",
+ [FILE_PNG] = "png",
+ [FILE_TIFF] = "tiff",
++ [FILE_FLV] = "flv",
++ [FILE_FLAC] = "flac",
+ [FILE_UNKNOWN] = "unknown",
+ };
+
+@@ -183,6 +193,8 @@ static const char *file_type_descs[] = {
+ [FILE_JPG] = "JPEG image",
+ [FILE_PNG] = "PNG image",
+ [FILE_TIFF] = "TIFF image",
++ [FILE_FLV] = "Flash video",
++ [FILE_FLAC] = "FLAC audio",
+ };
+
+ static ItemClass file_type_item_classes[] = {
+@@ -202,6 +214,8 @@ static ItemClass file_type_item_classes[
+ [FILE_JPG] = ITEM_IMAGE,
+ [FILE_PNG] = ITEM_IMAGE,
+ [FILE_TIFF] = ITEM_IMAGE,
++ [FILE_FLV] = ITEM_VIDEO,
++ [FILE_FLAC] = ITEM_AUDIO,
+ };
+
+ static Entry *scan_entry(const char *fullpath, const char *name, int32_t parent, int indent_size, InodeList *inl);
+@@ -325,6 +339,9 @@ check_file_content_type(const char *full
+ return FILE_UNKNOWN;
+ }
+
++ /* ignore trailing data */
++ *strchrnul(magic, ';') = '\0';
++
+ if (strcmp(magic, "application/octet-stream") != 0
+ && strncmp(magic, "text/plain", 10) != 0) {
+ struct {
diff --git a/package/gmp/patches/patch-longlong_h b/package/gmp/patches/patch-longlong_h
deleted file mode 100644
index dd42a0ebc..000000000
--- a/package/gmp/patches/patch-longlong_h
+++ /dev/null
@@ -1,11 +0,0 @@
---- gmp-5.1.3.orig/longlong.h 2013-09-30 12:18:28.000000000 +0200
-+++ gmp-5.1.3/longlong.h 2014-01-06 16:07:47.886035812 +0100
-@@ -1230,7 +1230,7 @@ extern UWtype __MPN(udiv_qrnnd) (UWtype
- #define UDIV_TIME 100
- #endif /* __mips */
-
--#if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
-+#if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64 && defined (_LP64)
- #if __GMP_GNUC_PREREQ (4,4)
- #define umul_ppmm(w1, w0, u, v) \
- do { \
diff --git a/package/gnupg2/Makefile b/package/gnupg2/Makefile
index b0ffa5f49..a9e5a44c0 100644
--- a/package/gnupg2/Makefile
+++ b/package/gnupg2/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gnupg2
-PKG_VERSION:= 2.3.2
+PKG_VERSION:= 2.4.4
PKG_RELEASE:= 1
-PKG_HASH:= e1d953e0e296072fca284215103ef168885eaac596c4660c5039a36a83e3041b
+PKG_HASH:= 67ebe016ca90fa7688ce67a387ebd82c6261e95897db7b23df24ff335be85bc6
PKG_DESCR:= gnu privacy guard (modern)
PKG_SECTION:= app/crypto
PKG_DEPENDS:= libreadline libncurses libgcrypt libgpg-error libassuan
diff --git a/package/gnutls/Makefile b/package/gnutls/Makefile
index 0465f6c59..69c14f21f 100644
--- a/package/gnutls/Makefile
+++ b/package/gnutls/Makefile
@@ -4,16 +4,16 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gnutls
-PKG_VERSION:= 3.6.16
+PKG_VERSION:= 3.8.3
PKG_RELEASE:= 1
-PKG_HASH:= 1b79b381ac283d8b054368b335c408fedcb9b7144e0c07f531e3537d4328f3b3
+PKG_HASH:= f74fc5954b27d4ec6dfbb11dea987888b5b124289a3703afcada0ee520f4173e
PKG_DESCR:= transport layer security library
PKG_SECTION:= libs/crypto
PKG_DEPENDS:= libgcrypt libtasn1 zlib libnettle libgmp libunistring
PKG_BUILDDEP:= libgcrypt liblzo libtasn1
PKG_BUILDDEP+= zlib ncurses libnettle libunistring
PKG_URL:= http://www.gnutls.org/
-PKG_SITES:= https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/
+PKG_SITES:= https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/
PKG_LIBNAME:= libgnutls
PKG_OPTS:= dev
@@ -41,7 +41,6 @@ CONFIGURE_ARGS+= --disable-rpath \
--disable-doc \
--disable-tests \
--disable-seccomp-tests \
- --with-libunistring-prefix='$(STAGING_TARGET_DIR)/usr' \
--without-libz-prefix \
--without-p11-kit
CONFIGURE_ENV+= ac_cv_prog_AR='$(TARGET_CROSS)ar'
@@ -52,7 +51,7 @@ libgnutls-install:
gnutls-utils-install:
$(INSTALL_DIR) $(IDIR_GNUTLS_UTILS)/usr/bin
- $(CP) $(WRKINST)/usr/bin/{{cert,srp,psk}tool,gnutls-{cli,serv}} \
+ $(CP) $(WRKINST)/usr/bin/{{cert,psk}tool,gnutls-{cli,serv}} \
$(IDIR_GNUTLS_UTILS)/usr/bin
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/gnutls/patches/0001-uclibc.patch b/package/gnutls/patches/0001-uclibc.patch
deleted file mode 100644
index b1b90016a..000000000
--- a/package/gnutls/patches/0001-uclibc.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ur gnutls-3.6.16.orig/gl/fopen.c gnutls-3.6.16/gl/fopen.c
---- gnutls-3.6.16.orig/gl/fopen.c 2021-05-24 10:04:41.000000000 +0200
-+++ gnutls-3.6.16/gl/fopen.c 2021-10-29 14:28:33.850290352 +0200
-@@ -19,12 +19,10 @@
- /* If the user's config.h happens to include <stdio.h>, let it include only
- the system's <stdio.h> here, so that orig_fopen doesn't recurse to
- rpl_fopen. */
--#define __need_FILE
- #include <config.h>
-
- /* Get the original definition of fopen. It might be defined as a macro. */
- #include <stdio.h>
--#undef __need_FILE
-
- static FILE *
- orig_fopen (const char *filename, const char *mode)
-diff -ur gnutls-3.6.16.orig/src/gl/fopen.c gnutls-3.6.16/src/gl/fopen.c
---- gnutls-3.6.16.orig/src/gl/fopen.c 2021-05-24 10:05:13.000000000 +0200
-+++ gnutls-3.6.16/src/gl/fopen.c 2021-10-29 14:28:41.435290892 +0200
-@@ -19,12 +19,10 @@
- /* If the user's config.h happens to include <stdio.h>, let it include only
- the system's <stdio.h> here, so that orig_fopen doesn't recurse to
- rpl_fopen. */
--#define __need_FILE
- #include <config.h>
-
- /* Get the original definition of fopen. It might be defined as a macro. */
- #include <stdio.h>
--#undef __need_FILE
-
- static FILE *
- orig_fopen (const char *filename, const char *mode)
diff --git a/package/gpgme/Makefile b/package/gpgme/Makefile
index 60a741c98..8f531aa16 100644
--- a/package/gpgme/Makefile
+++ b/package/gpgme/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gpgme
-PKG_VERSION:= 1.9.0
+PKG_VERSION:= 1.23.2
PKG_RELEASE:= 1
-PKG_HASH:= 1b29fedb8bfad775e70eafac5b0590621683b2d9869db994568e6401f4034ceb
+PKG_HASH:= 9499e8b1f33cccb6815527a1bc16049d35a6198a6c5fae0185f2bd561bce5224
PKG_DESCR:= easy access to gnupg for applications
PKG_SECTION:= libs/crypto
PKG_DEPENDS:= libgpg-error libassuan
diff --git a/package/gpm/patches/patch-src_headers_daemon_h b/package/gpm/patches/patch-src_headers_daemon_h
new file mode 100644
index 000000000..2ae27b92b
--- /dev/null
+++ b/package/gpm/patches/patch-src_headers_daemon_h
@@ -0,0 +1,11 @@
+--- gpm-1.20.7.orig/src/headers/daemon.h 2012-10-26 23:21:38.000000000 +0200
++++ gpm-1.20.7/src/headers/daemon.h 2024-02-12 15:22:13.446541463 +0100
+@@ -180,7 +180,7 @@ extern struct mouse_features mouse_tabl
+ extern Gpm_Type mice[];
+ extern Gpm_Type *repeated_type;
+
+-time_t last_selection_time;
++extern time_t last_selection_time;
+
+
+
diff --git a/package/gpsd/Makefile b/package/gpsd/Makefile
index b0523f5d9..7b34eb0fa 100644
--- a/package/gpsd/Makefile
+++ b/package/gpsd/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= gpsd
-PKG_VERSION:= 3.16
+PKG_VERSION:= 3.25
PKG_RELEASE:= 1
-PKG_HASH:= 03579af13a4d3fe0c5b79fa44b5f75c9f3cac6749357f1d99ce5d38c09bc2029
+PKG_HASH:= b368b6a305e3f7a6382d23a0cbfc1d78923060b6b7f54cf7987a73c7b4a9afc2
PKG_DESCR:= interface daemon for gps receivers
PKG_SECTION:= sys/hw
PKG_BUILDDEP:= scons-host ncurses
@@ -31,7 +31,7 @@ INSTALL_STYLE:= manual
do-install:
(cd $(WRKBUILD); env PATH='$(TARGET_PATH)' CCFLAGS='' DESTDIR='$(WRKINST)' \
- scons install prefix=/usr platform=linux python=no chrpath=no bluez=no usb=no libgpsmm=no)
+ $(STAGING_HOST_DIR)/usr/bin/python3 $(STAGING_HOST_DIR)/usr/bin/scons install prefix=/usr platform=linux python=no chrpath=no bluez=no usb=no libgpsmm=no)
gpsd-install:
${INSTALL_DIR} ${IDIR_GPSD}/usr/lib ${IDIR_GPSD}/usr/sbin
diff --git a/package/gpsd/patches/patch-SConstruct b/package/gpsd/patches/patch-SConstruct
deleted file mode 100644
index 0937d9f67..000000000
--- a/package/gpsd/patches/patch-SConstruct
+++ /dev/null
@@ -1,12 +0,0 @@
---- gpsd-3.10.orig/SConstruct 2013-11-22 14:10:01.000000000 +0100
-+++ gpsd-3.10/SConstruct 2014-02-07 19:33:32.000000000 +0100
-@@ -231,6 +231,9 @@ for (name, default, help) in pathopts:
-
- env['VERSION'] = gpsd_version
- env['PYTHON'] = sys.executable
-+env['PLATFORM'] = "posix"
-+env['SHLIBSUFFIX'] = ".so"
-+env['SHLINKFLAGS'] = "-shared"
-
- # Set defaults from environment. Note that scons doesn't cope well
- # with multi-word CPPFLAGS/LDFLAGS/SHLINKFLAGS values; you'll have to
diff --git a/package/gpsd/patches/patch-gpsmon_c b/package/gpsd/patches/patch-gpsmon_c
deleted file mode 100644
index ac52866d0..000000000
--- a/package/gpsd/patches/patch-gpsmon_c
+++ /dev/null
@@ -1,13 +0,0 @@
---- gpsd-3.10.orig/gpsmon.c 2013-11-21 09:57:44.000000000 +0100
-+++ gpsd-3.10/gpsmon.c 2014-03-16 09:08:34.000000000 +0100
-@@ -505,6 +505,10 @@ static /*@null@*/ char *curses_get_comma
- static char line[80];
- int c;
-
-+#ifndef __GLIBC__
-+#define CTRL(x) (x&037)
-+#endif
-+
- c = wgetch(cmdwin);
- if (c == CTRL('L')) {
- (void)clearok(stdscr, true);
diff --git a/package/gptfdisk/Makefile b/package/gptfdisk/Makefile
index bd01bc0ac..37d170761 100644
--- a/package/gptfdisk/Makefile
+++ b/package/gptfdisk/Makefile
@@ -9,8 +9,10 @@ PKG_RELEASE:= 1
PKG_HASH:= 864c8aee2efdda50346804d7e6230407d5f42a8ae754df70404dd8b2fdfaeac7
PKG_DESCR:= utilities to create gpt partition tables
PKG_SECTION:= sys/fs
-PKG_BUILDDEP:= util-linux popt
+PKG_DEPENDS:= libncurses libuuid
+PKG_BUILDDEP:= util-linux popt ncurses
HOST_BUILDDEP:= util-linux-host popt-host
+PKG_NEEDS:= c++
PKG_URL:= http://www.rodsbooks.com/gdisk/
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=gptfdisk/}
diff --git a/package/grep/Makefile b/package/grep/Makefile
index 56f668e6c..845ba5685 100644
--- a/package/grep/Makefile
+++ b/package/grep/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= grep
-PKG_VERSION:= 3.0
+PKG_VERSION:= 3.11
PKG_RELEASE:= 1
-PKG_HASH:= e2c81db5056e3e8c5995f0bb5d0d0e1cad1f6f45c3b2fc77b6e81435aed48ab5
+PKG_HASH:= 1db2aedde89d0dea42b16d9528f894c8d15dae4e190b59aecc78f5a951276eab
PKG_DESCR:= global search for a regex
PKG_SECTION:= base/tools
PKG_DEPENDS:= libpcre
@@ -24,8 +24,9 @@ $(eval $(call HOST_template,GREP,grep,$(PKG_VERSION)-${PKG_RELEASE}))
$(eval $(call PKG_template,GREP,grep,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
grep-install:
- $(INSTALL_DIR) $(IDIR_GREP)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/{e,f,}grep $(IDIR_GREP)/usr/bin
+ $(INSTALL_DIR) $(IDIR_GREP)/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/{e,f,}grep \
+ $(IDIR_GREP)/bin
include ${ADK_TOPDIR}/mk/host-bottom.mk
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/grub/Makefile b/package/grub/Makefile
index b36d9f788..519958096 100644
--- a/package/grub/Makefile
+++ b/package/grub/Makefile
@@ -10,7 +10,7 @@ PKG_HASH:= b79ea44af91b93d17cd3fe80bdae6ed43770678a9a5ae192ccea803ebb657ee1
PKG_DESCR:= multiboot boot loader
PKG_SECTION:= base/boot
PKG_BUILDDEP:= bison-host grub-host
-HOST_BUILDDEP:= python2-host
+HOST_BUILDDEP:= python3-host
PKG_URL:= http://www.gnu.org/software/grub
PKG_SITES:= https://ftp.gnu.org/gnu/grub/
PKG_NOPARALLEL:= 1
diff --git a/package/grub/files/grub-dual.cfg b/package/grub/files/grub-dual.cfg
index bae2fa414..46b5451ad 100644
--- a/package/grub/files/grub-dual.cfg
+++ b/package/grub/files/grub-dual.cfg
@@ -40,11 +40,15 @@ function savedefault {
}
menuentry "OpenADK1" {
- set root=(hd0,2)
- linux (hd0,2)/kernel root=/dev/@@ROOTDEV@@2 rootfstype=ext4 rootwait panic=5
+ insmod part_gpt
+ insmod ext2
+ set root=(hd0,gpt2)
+ linux (hd0,2)/boot/kernel root=/dev/@@ROOTDEV@@2 rootfstype=ext4 rootwait panic=5
}
menuentry "OpenADK2" {
- set root=(hd0,3)
- linux (hd0,3)/kernel root=/dev/@@ROOTDEV@@3 rootfstype=ext4 rootwait panic=5
+ insmod part_gpt
+ insmod ext2
+ set root=(hd0,gpt3)
+ linux (hd0,3)/boot/kernel root=/dev/@@ROOTDEV@@3 rootfstype=ext4 rootwait panic=5
}
diff --git a/package/grub/files/grub.cfg b/package/grub/files/grub.cfg
index 8d20ab243..3fdc48eda 100644
--- a/package/grub/files/grub.cfg
+++ b/package/grub/files/grub.cfg
@@ -6,9 +6,9 @@ set default=0
set timeout=3
menuentry "OpenADK" {
- insmod part_msdos
+ insmod part_gpt
insmod ext2
- set root='hd0,msdos1'
+ set root='hd0,gpt2'
echo "Loading OpenADK"
- linux16 /boot/kernel root=/dev/sda1 rootfstype=ext4 rootwait panic=10
+ linux /boot/kernel root=/dev/sda2 rootfstype=ext4 rootwait panic=10
}
diff --git a/package/gst-plugins-base/Makefile b/package/gst-plugins-base/Makefile
index 182ed4656..c612cd63e 100644
--- a/package/gst-plugins-base/Makefile
+++ b/package/gst-plugins-base/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gst-plugins-base
-PKG_VERSION:= 1.8.2
+PKG_VERSION:= 1.19.3
PKG_RELEASE:= 1
-PKG_HASH:= 9d7109c8fb0a5dec8edb17b0053c59a46aba7ddf48dc48ea822ebbbd4339d38d
+PKG_HASH:= e277f198623a26c1b0a1e19734656392e9368bebf3677cd94262a1316a960827
PKG_DESCR:= gstreamer base plugins
PKG_SECTION:= libs/video
PKG_DEPENDS:= gstreamer
@@ -19,8 +19,13 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,GST_PLUGINS_BASE,gst-plugins-base,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
TARGET_CPPFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
-CONFIGURE_ARGS+= --without-x
gst-plugins-base-install:
$(INSTALL_DIR) $(IDIR_GST_PLUGINS_BASE)/usr/lib/gstreamer-1.0/
diff --git a/package/gst-plugins-good/Makefile b/package/gst-plugins-good/Makefile
index 53a6b0943..8feb16c2f 100644
--- a/package/gst-plugins-good/Makefile
+++ b/package/gst-plugins-good/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gst-plugins-good
-PKG_VERSION:= 1.8.2
+PKG_VERSION:= 1.19.3
PKG_RELEASE:= 1
-PKG_HASH:= 8d7549118a3b7a009ece6bb38a05b66709c551d32d2adfd89eded4d1d7a23944
+PKG_HASH:= 79ea32a77fa47e6596530e38113bf97c113fd95658087d9a91ffb8af47d11d07
PKG_DESCR:= gstreamer good plugins
PKG_SECTION:= libs/video
PKG_DEPENDS:= gstreamer
@@ -19,8 +19,13 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,GST_PLUGINS_GOOD,gst-plugins-good,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
TARGET_CPPFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
-CONFIGURE_ARGS+= --without-x
gst-plugins-good-install:
$(INSTALL_DIR) $(IDIR_GST_PLUGINS_GOOD)/usr/lib/gstreamer-1.0/
diff --git a/package/gzip/Makefile b/package/gzip/Makefile
index 7c0ff0341..cd26a977c 100644
--- a/package/gzip/Makefile
+++ b/package/gzip/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= gzip
-PKG_VERSION:= 1.10
+PKG_VERSION:= 1.13
PKG_RELEASE:= 1
-PKG_HASH:= 8425ccac99872d544d4310305f915f5ea81e04d0f437ef1a230dc9d1c819d7c0
+PKG_HASH:= 7454eb6935db17c6655576c2e1b0fabefd38b4d0936e0f87f48cd062ce91a057
PKG_DESCR:= compression utility
PKG_SECTION:= app/archive
PKG_URL:= http://www.gnu.org/software/gzip/
diff --git a/package/harfbuzz/Makefile b/package/harfbuzz/Makefile
index 41711b0e4..118648eab 100644
--- a/package/harfbuzz/Makefile
+++ b/package/harfbuzz/Makefile
@@ -4,19 +4,19 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= harfbuzz
-PKG_VERSION:= 1.4.2
+PKG_VERSION:= 3.4.0
PKG_RELEASE:= 1
-PKG_HASH:= 8f234dcfab000fdec24d43674fffa2fdbdbd654eb176afbde30e8826339cb7b3
+PKG_HASH:= 810bcd3d22fae3c2c18c3688455abc1cd0d7fb2fae25404890b0d77e6443bd0a
PKG_DESCR:= opentype text shaping engine
PKG_SECTION:= libs/fonts
-PKG_SITES:= http://www.freedesktop.org/software/harfbuzz/release/
+PKG_SITES:= https://github.com/harfbuzz/harfbuzz/archive/refs/tags/
PKG_DEPENDS:= cairo icu4c
PKG_BUILDDEP:= cairo icu4c
HOST_BUILDDEP:= cairo-host icu4c-host
PKG_NEEDS:= c++
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
+DISTFILES:= ${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/host.mk
include $(ADK_TOPDIR)/mk/package.mk
@@ -24,8 +24,18 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,HARFBUZZ,harfbuzz,$(PKG_VERSION)-${PKG_RELEASE}))
$(eval $(call PKG_template,HARFBUZZ,harfbuzz,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-HOST_LDFLAGS+= -lpthread -lrt
-HOST_STYLE:= auto
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+HOST_STYLE:= meson
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+MESON_FLAGS+= -Dtests=disabled
+
+host-postinstall:
+ $(CP) $(WRKBUILD)/meson-private/harfbuzz.pc \
+ $(STAGING_HOST_DIR)/usr/lib/pkgconfig/
harfbuzz-install:
$(INSTALL_DIR) $(IDIR_HARFBUZZ)/usr/lib
diff --git a/package/harfbuzz/patches/patch-Makefile_in b/package/harfbuzz/patches/patch-Makefile_in
deleted file mode 100644
index 9ef495e70..000000000
--- a/package/harfbuzz/patches/patch-Makefile_in
+++ /dev/null
@@ -1,11 +0,0 @@
---- harfbuzz-1.2.3.orig/Makefile.in 2016-02-25 04:26:05.967296536 +0100
-+++ harfbuzz-1.2.3/Makefile.in 2016-04-03 19:27:12.062508784 +0200
-@@ -373,7 +373,7 @@ top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- NULL =
- ACLOCAL_AMFLAGS = -I m4
--SUBDIRS = src util test docs win32
-+SUBDIRS = src
- EXTRA_DIST = \
- autogen.sh \
- harfbuzz.doap \
diff --git a/package/harfbuzz/patches/patch-src_harfbuzz_pc_in b/package/harfbuzz/patches/patch-src_harfbuzz_pc_in
deleted file mode 100644
index 291829515..000000000
--- a/package/harfbuzz/patches/patch-src_harfbuzz_pc_in
+++ /dev/null
@@ -1,18 +0,0 @@
---- harfbuzz-1.2.3.orig/src/harfbuzz.pc.in 2016-01-06 13:00:36.113138042 +0100
-+++ harfbuzz-1.2.3/src/harfbuzz.pc.in 2016-03-12 21:55:46.457327612 +0100
-@@ -1,13 +1,10 @@
- prefix=%prefix%
--exec_prefix=%exec_prefix%
--libdir=%libdir%
--includedir=%includedir%
-
- Name: harfbuzz
- Description: HarfBuzz text shaping library
- Version: %VERSION%
-
--Libs: -L${libdir} -lharfbuzz
-+Libs: -L${prefix}/lib -lharfbuzz
- Libs.private: %libs_private%
- Requires.private: %requires_private%
--Cflags: -I${includedir}/harfbuzz
-+Cflags: -I${prefix}/include/harfbuzz
diff --git a/package/haveged/Makefile b/package/haveged/Makefile
index 4e7284017..2779bb55a 100644
--- a/package/haveged/Makefile
+++ b/package/haveged/Makefile
@@ -4,16 +4,16 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= haveged
-PKG_VERSION:= 1.9.1
+PKG_VERSION:= 1.9.18
PKG_RELEASE:= 1
-PKG_HASH:= 9c2363ed9542a6784ff08e247182137e71f2ddb79e8e6c1ac4ad50d21ced3715
+PKG_HASH:= b835fa02b52ee7d06276e028571cadcb14d08f5e5a4b5767adf81451f70561c7
PKG_DESCR:= entropy gathering daemon
PKG_SECTION:= sys/misc
-PKG_SITES:= http://www.issihosts.com/haveged/
+PKG_SITES:= https://github.com/jirka-h/haveged/archive/refs/tags/
PKG_ARCH_DEPENDS:= !arm !mips
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+DISTFILES:= v$(PKG_VERSION).tar.gz
include $(ADK_TOPDIR)/mk/package.mk
@@ -23,7 +23,7 @@ CONFIGURE_ARGS+= --enable-clock_gettime=yes
haveged-install:
$(INSTALL_DIR) $(IDIR_HAVEGED)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libhaveg*.so* \
+ -$(CP) $(WRKINST)/usr/lib/libhaveg*.so* \
$(IDIR_HAVEGED)/usr/lib
$(INSTALL_DIR) $(IDIR_HAVEGED)/usr/sbin
$(INSTALL_BIN) $(WRKINST)/usr/sbin/haveged \
diff --git a/package/hdparm/Makefile b/package/hdparm/Makefile
index 060fe36c0..df273806b 100644
--- a/package/hdparm/Makefile
+++ b/package/hdparm/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= hdparm
-PKG_VERSION:= 9.50
+PKG_VERSION:= 9.63
PKG_RELEASE:= 1
-PKG_HASH:= 0892b44bd817c251264a24f6ecbbb010958033e0395d2030f25f1c5608ac780e
+PKG_HASH:= 70785deaebba5877a89c123568b41dee990da55fc51420f13f609a1072899691
PKG_DESCR:= get/set ata/sata drive parameters
PKG_SECTION:= sys/hw
PKG_URL:= http://sourceforge.net/projects/hdparm
diff --git a/package/heyu/Makefile b/package/heyu/Makefile
index e42604d2f..a3b10f9ce 100644
--- a/package/heyu/Makefile
+++ b/package/heyu/Makefile
@@ -4,18 +4,18 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= heyu
-PKG_VERSION:= 2.6.0
+PKG_VERSION:= 2.10.3
PKG_RELEASE:= 1
-PKG_HASH:= 1284e793520d2e152d9d7032f6727e72fbaaf7c4f4eaf9abea2b85eed090b0d2
+PKG_HASH:= 0c3435ea9cd57cd78c29047b9c961f4bfbec39f42055c9949acd10dd9853b628
PKG_DESCR:= x10 home automation control utility
PKG_SECTION:= sys/serial
PKG_DEPENDS:= setserial
-PKG_URL:= http://heyu.tanj.com/
-PKG_SITES:= http://heyu.tanj.com/download/
+PKG_URL:= https://heyu.org/
+PKG_SITES:= https://github.com/HeyuX10Automation/heyu/archive/refs/tags/
PKG_LIBC_DEPENDS:= uclibc-ng glibc
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tgz
+DISTFILES:= v${PKG_VERSION}.tar.gz
include ${ADK_TOPDIR}/mk/package.mk
diff --git a/package/heyu/patches/patch-tty_c b/package/heyu/patches/patch-tty_c
deleted file mode 100644
index cb8acf6d9..000000000
--- a/package/heyu/patches/patch-tty_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- heyu-2.6.0.orig/tty.c 2009-01-19 03:57:00.000000000 +0100
-+++ heyu-2.6.0/tty.c 2009-05-29 14:08:06.087764489 +0200
-@@ -395,7 +395,7 @@ char *make_lock_name ( char *ttydev )
- struct stat stat_buf;
-
- /* strip the leading path name */
-- ptr = rindex(ttydev, '/');
-+ ptr = strrchr(ttydev, '/');
-
- devstr = dev_string;
-
diff --git a/package/heyu/patches/patch-x10state_c b/package/heyu/patches/patch-x10state_c
deleted file mode 100644
index c56f2489d..000000000
--- a/package/heyu/patches/patch-x10state_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- heyu-2.6.0.orig/x10state.c 2009-04-21 00:45:51.000000000 +0200
-+++ heyu-2.6.0/x10state.c 2009-05-29 14:17:51.812378291 +0200
-@@ -5601,7 +5601,7 @@ char **create_noenv_environment ( LAUNCH
-
- // launcherp = configp->launcherp;
-
-- if ( daemon == D_RELAY || (index >= 0 && launcherp && launcherp->type == L_POWERFAIL) )
-+ if ( daemon == D_RELAY || (launcherp && launcherp->type == L_POWERFAIL) )
- putenv("HEYU_PARENT=RELAY");
- else
- putenv("HEYU_PARENT=ENGINE");
diff --git a/package/hostapd/Makefile b/package/hostapd/Makefile
index 22cfeba7d..2eeaefd20 100644
--- a/package/hostapd/Makefile
+++ b/package/hostapd/Makefile
@@ -4,15 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= hostapd
-PKG_VERSION:= 2.5
+PKG_VERSION:= 2.10
PKG_RELEASE:= 1
-PKG_HASH:= 8e272d954dc0d7026c264b79b15389ec2b2c555b32970de39f506b9f463ec74a
+PKG_HASH:= 206e7c799b678572c2e3d12030238784bc4a9f82323b0156b4c9466f1498915d
PKG_DESCR:= wireless authenticator
PKG_SECTION:= net/wifi
PKG_DEPENDS:= libnl
PKG_BUILDDEP:= libnl
-PKG_URL:= http://hostap.epitest.fi/
-PKG_SITES:= http://hostap.epitest.fi/releases/
+PKG_SITES:= http://w1.fi/releases/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/htop/Makefile b/package/htop/Makefile
index 9d886a855..7ded657a6 100644
--- a/package/htop/Makefile
+++ b/package/htop/Makefile
@@ -4,17 +4,15 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= htop
-PKG_VERSION:= 2.0.1
+PKG_VERSION:= 3.2.2
PKG_RELEASE:= 1
-PKG_HASH:= f410626dfaf6b70fdf73cd7bb33cae768869707028d847fed94a978e974f5666
+PKG_HASH:= bac9e9ab7198256b8802d2e3b327a54804dc2a19b77a5f103645b11c12473dc8
PKG_DESCR:= graphical process manager
PKG_SECTION:= sys/utils
PKG_DEPENDS:= libncurses
PKG_BUILDDEP:= ncurses
PKG_URL:= http://hisham.hm/htop
-PKG_SITES:= http://hisham.hm/htop/releases/$(PKG_VERSION)/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_SITES:= https://github.com/htop-dev/htop/releases/download/$(PKG_VERSION)/
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/httping/Makefile b/package/httping/Makefile
index f6ed4f4df..60c2ab6cf 100644
--- a/package/httping/Makefile
+++ b/package/httping/Makefile
@@ -4,26 +4,28 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= httping
-PKG_VERSION:= 2.4
+PKG_VERSION:= 3.5
PKG_RELEASE:= 1
-PKG_HASH:= dab59f02b08bfbbc978c005bb16d2db6fe21e1fc841fde96af3d497ddfc82084
+PKG_HASH:= 8c081daae31cad586bce7742bd721c2a741d7ce0687fb3a12cafd389b90bf79c
PKG_DESCR:= like ping but for http-requests
PKG_SECTION:= net/http
-PKG_DEPENDS:= libressl
-PKG_BUILDDEP:= libressl
-PKG_SITES:= http://www.vanheusden.com/httping/
+PKG_DEPENDS:= libressl ca-certificates
+PKG_BUILDDEP:= cmake-host libressl
+PKG_NEEDS:= intl
+PKG_SITES:= https://github.com/folkertvanheusden/HTTPing/archive/refs/tags/
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tgz
+DISTFILES:= v${PKG_VERSION}.tar.gz
+WRKDIST= ${WRKDIR}/HTTPing-${PKG_VERSION}
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,HTTPING,httping,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIG_STYLE:= manual
-TARGET_CFLAGS+= -D_GNU_SOURCE
+CONFIG_STYLE:= cmake
+INSTALL_STYLE:= manual
httping-install:
${INSTALL_DIR} ${IDIR_HTTPING}/usr/bin
- ${INSTALL_BIN} ${WRKINST}/usr/bin/httping ${IDIR_HTTPING}/usr/bin/
+ ${INSTALL_BIN} ${WRKBUILD}/httping ${IDIR_HTTPING}/usr/bin/
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/hugo/Makefile b/package/hugo/Makefile
deleted file mode 100644
index ab25a693f..000000000
--- a/package/hugo/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= hugo
-PKG_VERSION:= 0.18.1
-PKG_RELEASE:= 1
-PKG_HASH:= 29db2524a3042f507162164ec3ce9071277a7608547f4ea4f739d63cac4b39e4
-PKG_DESCR:= fast website generator
-PKG_SECTION:= net/http
-PKG_BUILDDEP:= go-host
-PKG_URL:= https://gohugo.io
-PKG_SITES:= https://github.com/spf13/hugo/archive/
-
-DISTFILES:= v$(PKG_VERSION).tar.gz
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,HUGO,hugo,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-CONFIG_STYLE:= manual
-BUILD_STYLE:= manual
-INSTALL_STYLE:= manual
-
-include $(ADK_TOPDIR)/mk/go.mk
-
-do-build:
- (cd $(WRKBUILD) && $(ADK_GO_TARGET_ENV) $(ADK_GO) \
- get -v github.com/spf13/hugo)
-
-hugo-install:
- $(INSTALL_DIR) $(IDIR_HUGO)/usr/bin
- $(INSTALL_BIN) $(ADK_GO_BINPATH)/hugo \
- $(IDIR_HUGO)/usr/bin
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/hush/Makefile b/package/hush/Makefile
index 2e90466e9..dffc690ab 100644
--- a/package/hush/Makefile
+++ b/package/hush/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= hush
-PKG_VERSION:= 1.33.0
+PKG_VERSION:= 1.36.1
PKG_RELEASE:= 1
-PKG_HASH:= d568681c91a85edc6710770cebc1e80e042ad74d305b5c2e6d57a5f3de3b8fbd
+PKG_HASH:= b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314
PKG_DESCR:= hush standalone shell
PKG_SECTION:= base/shells
PKG_URL:= http://www.busybox.net/
diff --git a/package/hush/files/config b/package/hush/files/config
index c4385b11f..7e81b468e 100644
--- a/package/hush/files/config
+++ b/package/hush/files/config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Busybox version: 1.33.0
-# Fri Apr 9 22:37:09 2021
+# Busybox version: 1.36.1
+# Thu Aug 31 12:09:53 2023
#
CONFIG_HAVE_DOT_CONFIG=y
@@ -93,10 +93,16 @@ CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1
+CONFIG_SHA1_SMALL=3
+CONFIG_SHA1_HWACCEL=y
+CONFIG_SHA256_HWACCEL=y
CONFIG_SHA3_SMALL=1
-# CONFIG_FEATURE_FAST_TOP is not set
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-# CONFIG_FEATURE_ETC_SERVICES is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+CONFIG_FEATURE_USE_SENDFILE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
# CONFIG_FEATURE_EDITING_VI is not set
@@ -120,14 +126,9 @@ CONFIG_LAST_SUPPORTED_WCHAR=767
# CONFIG_UNICODE_BIDI_SUPPORT is not set
# CONFIG_UNICODE_NEUTRAL_TABLE is not set
# CONFIG_UNICODE_PRESERVE_BROKEN is not set
-CONFIG_FEATURE_NON_POSIX_CP=y
-# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
-CONFIG_FEATURE_USE_SENDFILE=y
-CONFIG_FEATURE_COPYBUF_KB=4
-CONFIG_FEATURE_SKIP_ROOTFS=y
-CONFIG_MONOTONIC_SYSCALL=y
-CONFIG_IOCTL_HEX2STR_ERROR=y
-CONFIG_FEATURE_HWIB=y
+# CONFIG_LOOP_CONFIGURE is not set
+# CONFIG_NO_LOOP_CONFIGURE is not set
+CONFIG_TRY_LOOP_CONFIGURE=y
#
# Applets
@@ -162,6 +163,8 @@ CONFIG_BZIP2_SMALL=0
# CONFIG_CPIO is not set
# CONFIG_FEATURE_CPIO_O is not set
# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set
+# CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set
# CONFIG_DPKG is not set
# CONFIG_DPKG_DEB is not set
# CONFIG_GZIP is not set
@@ -197,6 +200,14 @@ CONFIG_GZIP_FAST=0
#
# Coreutils
#
+# CONFIG_FEATURE_VERBOSE is not set
+
+#
+# Common options for date and touch
+#
+# CONFIG_FEATURE_TIMEZONE is not set
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+# CONFIG_FEATURE_HUMAN_READABLE is not set
# CONFIG_BASENAME is not set
# CONFIG_CAT is not set
# CONFIG_FEATURE_CATN is not set
@@ -207,11 +218,13 @@ CONFIG_GZIP_FAST=0
# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
# CONFIG_CHROOT is not set
# CONFIG_CKSUM is not set
+# CONFIG_CRC32 is not set
# CONFIG_COMM is not set
# CONFIG_CP is not set
# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
# CONFIG_FEATURE_CP_REFLINK is not set
# CONFIG_CUT is not set
+# CONFIG_FEATURE_CUT_REGEX is not set
# CONFIG_DATE is not set
# CONFIG_FEATURE_DATE_ISOFMT is not set
# CONFIG_FEATURE_DATE_NANO is not set
@@ -223,6 +236,7 @@ CONFIG_GZIP_FAST=0
# CONFIG_FEATURE_DD_STATUS is not set
# CONFIG_DF is not set
# CONFIG_FEATURE_DF_FANCY is not set
+# CONFIG_FEATURE_SKIP_ROOTFS is not set
# CONFIG_DIRNAME is not set
# CONFIG_DOS2UNIX is not set
# CONFIG_UNIX2DOS is not set
@@ -312,13 +326,13 @@ CONFIG_GZIP_FAST=0
# CONFIG_FEATURE_TEST_64 is not set
# CONFIG_TIMEOUT is not set
# CONFIG_TOUCH is not set
-# CONFIG_FEATURE_TOUCH_NODEREF is not set
# CONFIG_FEATURE_TOUCH_SUSV3 is not set
# CONFIG_TR is not set
# CONFIG_FEATURE_TR_CLASSES is not set
# CONFIG_FEATURE_TR_EQUIV is not set
# CONFIG_TRUE is not set
# CONFIG_TRUNCATE is not set
+# CONFIG_TSORT is not set
# CONFIG_TTY is not set
# CONFIG_UNAME is not set
CONFIG_UNAME_OSNAME=""
@@ -339,13 +353,6 @@ CONFIG_UNAME_OSNAME=""
# CONFIG_YES is not set
#
-# Common options
-#
-# CONFIG_FEATURE_VERBOSE is not set
-# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
-# CONFIG_FEATURE_HUMAN_READABLE is not set
-
-#
# Console Utilities
#
# CONFIG_CHVT is not set
@@ -408,6 +415,7 @@ CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_FEATURE_VI_MAX_LEN=0
# CONFIG_FEATURE_VI_8BIT is not set
# CONFIG_FEATURE_VI_COLON is not set
+# CONFIG_FEATURE_VI_COLON_EXPAND is not set
# CONFIG_FEATURE_VI_YANKMARK is not set
# CONFIG_FEATURE_VI_SEARCH is not set
# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
@@ -421,6 +429,7 @@ CONFIG_FEATURE_VI_MAX_LEN=0
# CONFIG_FEATURE_VI_UNDO is not set
# CONFIG_FEATURE_VI_UNDO_QUEUE is not set
CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0
+# CONFIG_FEATURE_VI_VERBOSE_STATUS is not set
# CONFIG_FEATURE_ALLOW_EXEC is not set
#
@@ -429,7 +438,11 @@ CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0
# CONFIG_FIND is not set
# CONFIG_FEATURE_FIND_PRINT0 is not set
# CONFIG_FEATURE_FIND_MTIME is not set
+# CONFIG_FEATURE_FIND_ATIME is not set
+# CONFIG_FEATURE_FIND_CTIME is not set
# CONFIG_FEATURE_FIND_MMIN is not set
+# CONFIG_FEATURE_FIND_AMIN is not set
+# CONFIG_FEATURE_FIND_CMIN is not set
# CONFIG_FEATURE_FIND_PERM is not set
# CONFIG_FEATURE_FIND_TYPE is not set
# CONFIG_FEATURE_FIND_EXECUTABLE is not set
@@ -437,6 +450,7 @@ CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0
# CONFIG_FEATURE_FIND_MAXDEPTH is not set
# CONFIG_FEATURE_FIND_NEWER is not set
# CONFIG_FEATURE_FIND_INUM is not set
+# CONFIG_FEATURE_FIND_SAMEFILE is not set
# CONFIG_FEATURE_FIND_EXEC is not set
# CONFIG_FEATURE_FIND_EXEC_PLUS is not set
# CONFIG_FEATURE_FIND_USER is not set
@@ -719,6 +733,7 @@ CONFIG_DEFAULT_DEPMOD_FILE=""
# Miscellaneous Utilities
#
# CONFIG_ADJTIMEX is not set
+# CONFIG_ASCII is not set
# CONFIG_BBCONFIG is not set
# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
# CONFIG_BC is not set
@@ -799,10 +814,12 @@ CONFIG_FEATURE_LESS_MAXLINES=0
# CONFIG_RFKILL is not set
# CONFIG_RUNLEVEL is not set
# CONFIG_RX is not set
+# CONFIG_SEEDRNG is not set
# CONFIG_SETFATTR is not set
# CONFIG_SETSERIAL is not set
# CONFIG_STRINGS is not set
# CONFIG_TIME is not set
+# CONFIG_TREE is not set
# CONFIG_TS is not set
# CONFIG_TTYSIZE is not set
# CONFIG_UBIATTACH is not set
@@ -814,6 +831,7 @@ CONFIG_FEATURE_LESS_MAXLINES=0
# CONFIG_UBIRENAME is not set
# CONFIG_VOLNAME is not set
# CONFIG_WATCHDOG is not set
+# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set
#
# Networking Utilities
@@ -822,6 +840,9 @@ CONFIG_FEATURE_LESS_MAXLINES=0
# CONFIG_FEATURE_UNIX_LOCAL is not set
# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+# CONFIG_FEATURE_ETC_SERVICES is not set
+# CONFIG_FEATURE_HWIB is not set
# CONFIG_FEATURE_TLS_SHA1 is not set
# CONFIG_ARP is not set
# CONFIG_ARPING is not set
@@ -840,6 +861,7 @@ CONFIG_FEATURE_LESS_MAXLINES=0
# CONFIG_HOSTNAME is not set
# CONFIG_DNSDOMAINNAME is not set
# CONFIG_HTTPD is not set
+CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0
# CONFIG_FEATURE_HTTPD_RANGES is not set
# CONFIG_FEATURE_HTTPD_SETUID is not set
# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
@@ -932,6 +954,7 @@ CONFIG_FEATURE_IP_ROUTE_DIR=""
# CONFIG_FEATURE_TELNET_WIDTH is not set
# CONFIG_TELNETD is not set
# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0
# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
# CONFIG_TFTP is not set
# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
@@ -952,6 +975,7 @@ CONFIG_FEATURE_IP_ROUTE_DIR=""
# CONFIG_WGET is not set
# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
# CONFIG_FEATURE_WGET_STATUSBAR is not set
+# CONFIG_FEATURE_WGET_FTP is not set
# CONFIG_FEATURE_WGET_AUTHENTICATION is not set
# CONFIG_FEATURE_WGET_TIMEOUT is not set
# CONFIG_FEATURE_WGET_HTTPS is not set
@@ -968,11 +992,13 @@ CONFIG_DHCPD_LEASES_FILE=""
# CONFIG_FEATURE_UDHCPC_ARPING is not set
# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set
CONFIG_UDHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC6_DEFAULT_SCRIPT=""
# CONFIG_UDHCPC6 is not set
# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set
# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set
# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set
# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set
+CONFIG_UDHCPC_DEFAULT_INTERFACE=""
# CONFIG_FEATURE_UDHCP_PORT is not set
CONFIG_UDHCP_DEBUG=0
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
@@ -990,17 +1016,19 @@ CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
#
# Mail Utilities
#
+CONFIG_FEATURE_MIME_CHARSET=""
# CONFIG_MAKEMIME is not set
# CONFIG_POPMAILDIR is not set
# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
# CONFIG_REFORMIME is not set
# CONFIG_FEATURE_REFORMIME_COMPAT is not set
# CONFIG_SENDMAIL is not set
-CONFIG_FEATURE_MIME_CHARSET=""
#
# Process Utilities
#
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_SHOW_THREADS is not set
# CONFIG_FREE is not set
# CONFIG_FUSER is not set
# CONFIG_IOSTAT is not set
@@ -1039,7 +1067,6 @@ CONFIG_FEATURE_MIME_CHARSET=""
# CONFIG_UPTIME is not set
# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
# CONFIG_WATCH is not set
-# CONFIG_FEATURE_SHOW_THREADS is not set
#
# Runit Utilities
@@ -1096,6 +1123,7 @@ CONFIG_BASH_IS_HUSH=y
# CONFIG_ASH_ECHO is not set
# CONFIG_ASH_PRINTF is not set
# CONFIG_ASH_TEST is not set
+# CONFIG_ASH_SLEEP is not set
# CONFIG_ASH_HELP is not set
# CONFIG_ASH_GETOPTS is not set
# CONFIG_ASH_CMDCMD is not set
@@ -1104,8 +1132,8 @@ CONFIG_HUSH=y
CONFIG_SHELL_HUSH=y
CONFIG_HUSH_BASH_COMPAT=y
CONFIG_HUSH_BRACE_EXPANSION=y
-CONFIG_HUSH_LINENO_VAR=y
CONFIG_HUSH_BASH_SOURCE_CURDIR=y
+CONFIG_HUSH_LINENO_VAR=y
CONFIG_HUSH_INTERACTIVE=y
CONFIG_HUSH_SAVEHISTORY=y
CONFIG_HUSH_JOB=y
diff --git a/package/hwdata/Makefile b/package/hwdata/Makefile
new file mode 100644
index 000000000..0387cf3c6
--- /dev/null
+++ b/package/hwdata/Makefile
@@ -0,0 +1,51 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= hwdata
+PKG_VERSION:= 0.378
+PKG_RELEASE:= 1
+PKG_HASH:= 098ea8db12a50290f4b23f7f521edf9c5bab25935d2740de17e4a487110b40c8
+PKG_DESCR:= combined repository of pci.ids and usb.ids
+PKG_SECTION:= sys/hw
+PKG_URL:= https://github.com/vcrhonek/hwdata
+PKG_SITES:= https://github.com/vcrhonek/hwdata/archive/refs/tags/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+PKG_SUBPKGS:= HWDATA_NET HWDATA_PCI HWDATA_USB HWDATA_PNP
+PKGSD_HWDATA_NET:= HWDATA files oui.txt and iab.txt
+PKGSD_HWDATA_PCI:= HWDATA file pci.ids
+PKGSD_HWDATA_USB:= HWDATA file usb.ids
+PKGSD_HWDATA_PNP:= HWDATA file pnp.ids
+
+PKG_FLAVOURS_HWDATA:= WITH_GZIP
+PKGFD_WITH_GZIP:= gzip ids before installation
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,HWDATA_NET,hwdata-net,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWDATA_NET),$(PKG_SECTION)))
+$(eval $(call PKG_template,HWDATA_PCI,hwdata-pci,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWDATA_PCI),$(PKG_SECTION)))
+$(eval $(call PKG_template,HWDATA_USB,hwdata-usb,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWDATA_USB),$(PKG_SECTION)))
+$(eval $(call PKG_template,HWDATA_PNP,hwdata-pnp,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWDATA_PNP),$(PKG_SECTION)))
+
+define HWDATA_INSTALL_template
+$(2)-install:
+ $$(INSTALL_DIR) $$(IDIR_$(1))/usr/share/hwdata
+ $$(INSTALL_DATA) $$(patsubst %,$$(WRKINST)/usr/share/hwdata/%,$(3)) \
+ $$(IDIR_$(1))/usr/share/hwdata/
+endef
+
+$(eval $(call HWDATA_INSTALL_template,HWDATA_NET,hwdata-net,oui.txt iab.txt))
+ifeq ($(ADK_PACKAGE_HWDATA_WITH_GZIP),y)
+$(eval $(call HWDATA_INSTALL_template,HWDATA_PCI,hwdata-pci,pci.ids.gz))
+$(eval $(call HWDATA_INSTALL_template,HWDATA_USB,hwdata-usb,usb.ids.gz))
+$(eval $(call HWDATA_INSTALL_template,HWDATA_PNP,hwdata-pnp,pnp.ids.gz))
+else
+$(eval $(call HWDATA_INSTALL_template,HWDATA_PCI,hwdata-pci,pci.ids))
+$(eval $(call HWDATA_INSTALL_template,HWDATA_USB,hwdata-usb,usb.ids))
+$(eval $(call HWDATA_INSTALL_template,HWDATA_PNP,hwdata-pnp,pnp.ids))
+endif
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/hwdata/patches/patch-hwdata_pc_in b/package/hwdata/patches/patch-hwdata_pc_in
new file mode 100644
index 000000000..fe88b5244
--- /dev/null
+++ b/package/hwdata/patches/patch-hwdata_pc_in
@@ -0,0 +1,10 @@
+--- hwdata-0.378.orig/hwdata.pc.in 2024-01-05 12:35:26.000000000 +0100
++++ hwdata-0.378/hwdata.pc.in 2024-01-30 09:39:29.731448151 +0100
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+ datadir=@datadir@
+-pkgdatadir=${pc_sysrootdir}@pkgdatadir@
++pkgdatadir=@pkgdatadir@
+
+ Name: @NAME@
+ Description: Hardware identification and configuration data
diff --git a/package/hwids/Makefile b/package/hwids/Makefile
deleted file mode 100644
index ceeca3a72..000000000
--- a/package/hwids/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= hwids
-PKG_VERSION:= 20150129
-PKG_RELEASE:= 1
-PKG_HASH:= 33a7f4dbf14704076b0fe1d0052e86bb618e386a1ff18107097311df44f979d7
-PKG_DESCR:= combined repository of pci.ids and usb.ids
-PKG_SECTION:= sys/hw
-PKG_URL:= https://github.com/gentoo/hwids
-PKG_SITES:= https://github.com/gentoo/hwids/archive/
-
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
-# typical problem of having tags like '<name>-<version>' in github
-WRKDIST= $(WRKDIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
-
-PKG_SUBPKGS:= HWIDS_NET HWIDS_PCI HWIDS_USB
-PKGSD_HWIDS_NET:= HWIDS files oui.txt and iab.txt
-PKGSD_HWIDS_PCI:= HWIDS file pci.ids
-PKGSD_HWIDS_USB:= HWIDS file usb.ids
-
-PKG_FLAVOURS_HWIDS:= WITH_GZIP
-PKGFD_WITH_GZIP:= gzip pci.ids and usb.ids before installation
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,HWIDS_NET,hwids-net,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWIDS_NET),$(PKG_SECTION)))
-$(eval $(call PKG_template,HWIDS_PCI,hwids-pci,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWIDS_PCI),$(PKG_SECTION)))
-$(eval $(call PKG_template,HWIDS_USB,hwids-usb,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_HWIDS_USB),$(PKG_SECTION)))
-
-CONFIG_STYLE:= manual
-XAKE_FLAGS+= NET=yes \
- PCI=yes \
- UDEV=no \
- USB=yes
-# note: Can't pass GZIP=yes to make, as this will turn it
-# into an env var automatically which makes gzip trip.
-# Therefore assume here that GZIP=yes is the default.
-ifneq ($(ADK_PACKAGE_HWIDS_WITH_GZIP),y)
-XAKE_FLAGS+= GZIP=no
-endif
-
-define HWIDS_INSTALL_template
-$(2)-install:
- $$(INSTALL_DIR) $$(IDIR_$(1))/usr/share/misc
- $$(INSTALL_DATA) $$(patsubst %,$$(WRKINST)/usr/share/misc/%,$(3)) \
- $$(IDIR_$(1))/usr/share/misc/
-endef
-
-$(eval $(call HWIDS_INSTALL_template,HWIDS_NET,hwids-net,oui.txt iab.txt))
-ifeq ($(ADK_PACKAGE_HWIDS_WITH_GZIP),y)
-$(eval $(call HWIDS_INSTALL_template,HWIDS_PCI,hwids-pci,pci.ids.gz))
-$(eval $(call HWIDS_INSTALL_template,HWIDS_USB,hwids-usb,usb.ids.gz))
-else
-$(eval $(call HWIDS_INSTALL_template,HWIDS_PCI,hwids-pci,pci.ids))
-$(eval $(call HWIDS_INSTALL_template,HWIDS_USB,hwids-usb,usb.ids))
-endif
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/icecast/Makefile b/package/icecast/Makefile
index df4fe30b7..08f0e0a45 100644
--- a/package/icecast/Makefile
+++ b/package/icecast/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= icecast
-PKG_VERSION:= 2.3.3
+PKG_VERSION:= 2.4.4
PKG_RELEASE:= 1
-PKG_HASH:= 1b1d06f5f83c9a983cd28cc78aa90e4038f933511b3d20d7fd2cfc116645c36d
+PKG_HASH:= 49b5979f9f614140b6a38046154203ee28218d8fc549888596a683ad604e4d44
PKG_DESCR:= streaming media server
PKG_SECTION:= mm/audio
PKG_DEPENDS:= libcurl libvorbis libxml2 libxslt
@@ -23,6 +23,7 @@ $(eval $(call PKG_template,ICECAST,icecast,${PKG_VERSION}-${PKG_RELEASE},${PKG_D
AUTOTOOL_STYLE:= autoreconf
TARGET_CPPFLAGS+= -I${STAGING_TARGET_DIR}/usr/include/libxml2
+TARGET_LDFLAGS+= -lxml2
CONFIGURE_ARGS+= --disable-yp \
--with-curl="yes" \
--with-curl-config="${STAGING_TARGET_DIR}/usr/bin/curl-config" \
diff --git a/package/ipmitool/Makefile b/package/ipmitool/Makefile
index 2fec3dd77..938a59ed4 100644
--- a/package/ipmitool/Makefile
+++ b/package/ipmitool/Makefile
@@ -4,21 +4,21 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= ipmitool
-PKG_VERSION:= 1.8.15
+PKG_VERSION:= 1.8.19
PKG_RELEASE:= 1
-PKG_HASH:= f0964e644a8e693932a3e8da6929d5598ed24645bacd51fbb1a4a09b5e47cf78
+PKG_HASH:= 48b010e7bcdf93e4e4b6e43c53c7f60aa6873d574cbd45a8d86fa7aaeebaff9c
PKG_DESCR:= utility for controlling ipmi enabled devices
PKG_SECTION:= net/misc
-PKG_URL:= http://ipmitool.sf.net/
-PKG_SITES:= $(MASTER_SITE_SOURCEFORGE:=ipmitool/)
+PKG_SITES:= https://github.com/ipmitool/ipmitool/archive/refs/tags/
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+DISTFILES:= IPMITOOL_1_8_19.tar.gz
+WRKDIST= ${WRKDIR}/$(PKG_NAME)-IPMITOOL_1_8_19
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,IPMITOOL,ipmitool,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes
+AUTOTOOL_STYLE:= bootstrap
ipmitool-install:
$(INSTALL_DIR) $(IDIR_IPMITOOL)/usr/bin
diff --git a/package/iptables-snmp/Makefile b/package/iptables-snmp/Makefile
deleted file mode 100644
index c771132e2..000000000
--- a/package/iptables-snmp/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= iptables-snmp
-PKG_VERSION:= 0.1
-PKG_RELEASE:= 1
-PKG_HASH:= 3275bb3820809a311b9f92ea32f071888b9a92f60c831417490e811f46ec4d54
-PKG_DESCR:= iptables support for net-snmp
-PKG_SECTION:= net/misc
-PKG_BUILDDEP:= net-snmp
-PKG_URL:= http://www.nobiscuit.com/iptables-snmp/
-PKG_SITES:= http://www.nobiscuit.com/iptables-snmp/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-PKG_LIBC_DEPENDS:= uclibc-ng glibc
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,IPTABLES_SNMP,iptables-snmp,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-FAKE_FLAGS+= INSTALL_PREFIX="${WRKINST}"
-
-iptables-snmp-install:
- ${INSTALL_DIR} ${IDIR_IPTABLES_SNMP}/usr/lib
- ${CP} ${WRKINST}/usr/lib/iptables-snmp.so ${IDIR_IPTABLES_SNMP}/usr/lib
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/iptables-snmp/patches/patch-Makefile_in b/package/iptables-snmp/patches/patch-Makefile_in
deleted file mode 100644
index 164003986..000000000
--- a/package/iptables-snmp/patches/patch-Makefile_in
+++ /dev/null
@@ -1,11 +0,0 @@
---- iptables-snmp-0.1.orig/Makefile.in 2005-11-02 13:00:10.000000000 +0100
-+++ iptables-snmp-0.1/Makefile.in 2011-01-12 15:44:48.000000000 +0100
-@@ -67,7 +67,7 @@ OTHER = -Iinclude -DIPTABLES_VERSION=$(
-
- all: iptables-snmp.so
-
--iptables-snmp.so: $(OBJS) libiptc.a Makefile
-+iptables-snmp.so: $(OBJS) Makefile
- $(CC) $(CFLAGS) $(OTHER) $(DFLAGS) -shared -o $@ $(OBJS) $(LDFLAGS)
-
- libiptc.a: $(LIBIPTC_OBJS) Makefile
diff --git a/package/iptables-snmp/patches/patch-iptables-snmp_c b/package/iptables-snmp/patches/patch-iptables-snmp_c
deleted file mode 100644
index c129ff0e9..000000000
--- a/package/iptables-snmp/patches/patch-iptables-snmp_c
+++ /dev/null
@@ -1,12 +0,0 @@
---- iptables-snmp-0.1.orig/iptables-snmp.c 2005-11-02 12:10:54.000000000 +0100
-+++ iptables-snmp-0.1/iptables-snmp.c 2011-01-12 15:46:19.000000000 +0100
-@@ -37,6 +37,9 @@
-
- #include "libiptc/libiptc.h"
-
-+/* For backward compatibility */
-+//typedef struct iptc_handle *iptc_handle_t;
-+
- static oid agent_version_oid[] = {
- BASE_OID, 1, 0, AGENT_VERSION_INDEX
- };
diff --git a/package/iptables-snmp/patches/patch-libiptc_libip6tc_c b/package/iptables-snmp/patches/patch-libiptc_libip6tc_c
deleted file mode 100644
index 68ae9cf7f..000000000
--- a/package/iptables-snmp/patches/patch-libiptc_libip6tc_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- iptables-snmp-0.1.orig/libiptc/libip6tc.c 2005-07-05 00:11:28.000000000 +0200
-+++ iptables-snmp-0.1/libiptc/libip6tc.c 2009-11-13 23:18:45.195701184 +0100
-@@ -111,7 +111,7 @@ typedef unsigned int socklen_t;
- #include "libiptc.c"
-
- #define BIT6(a, l) \
-- ((ntohl(a->in6_u.u6_addr32[(l) / 32]) >> (31 - ((l) & 31))) & 1)
-+ ((ntohl(a->s6_addr32[(l) / 32]) >> (31 - ((l) & 31))) & 1)
-
- int
- ipv6_prefix_length(const struct in6_addr *a)
diff --git a/package/iptables/Makefile b/package/iptables/Makefile
index 141b6b192..f6e0ad777 100644
--- a/package/iptables/Makefile
+++ b/package/iptables/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= iptables
-PKG_VERSION:= 1.8.5
+PKG_VERSION:= 1.8.10
PKG_RELEASE:= 1
-PKG_HASH:= d457d74512e63aa3f50336e0597d4023c0e3c6845594d38532efb6ebcb294309
+PKG_HASH:= 5cc255c189356e317d070755ce9371eb63a1b783c34498fb8c30264f3cc59c9c
PKG_DESCR:= netfilter firewalling software
PKG_SECTION:= net/firewall
PKG_DEPENDS:= libnetfilter_conntrack libmnl libnfnetlink
@@ -17,8 +17,6 @@ PKG_URL:= http://www.netfilter.org/
PKG_SITES:= http://www.netfilter.org/projects/iptables/files/
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,IPTABLES,iptables,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
@@ -31,6 +29,7 @@ iptables-install:
${INSTALL_DIR} ${IDIR_IPTABLES}/{usr/lib,etc/xtables,usr/sbin}
${INSTALL_DATA} ./files/firewall.conf ${IDIR_IPTABLES}/etc
${INSTALL_DATA} ./files/connlabel.conf ${IDIR_IPTABLES}/etc/xtables
+ ${CP} ${WRKINST}/usr/sbin/xtables-legacy-multi ${IDIR_IPTABLES}/usr/sbin
${CP} ${WRKINST}/usr/sbin/iptables ${IDIR_IPTABLES}/usr/sbin
${CP} ${WRKINST}/usr/sbin/ip6tables ${IDIR_IPTABLES}/usr/sbin
${CP} ${WRKINST}/usr/sbin/iptables-{save,restore} \
diff --git a/package/iptraf-ng/Makefile b/package/iptraf-ng/Makefile
new file mode 100644
index 000000000..d6dbecc56
--- /dev/null
+++ b/package/iptraf-ng/Makefile
@@ -0,0 +1,32 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${ADK_TOPDIR}/rules.mk
+
+PKG_NAME:= iptraf-ng
+PKG_GIT:= tag
+PKG_HASH:= cf385d3a0d2344f0159be0ab859651de2f750b661d88d1f22f96b82a7cd4ae13
+PKG_VERSION:= v1.2.1
+PKG_RELEASE:= 1
+PKG_DESCR:= a console-based network monitoring program
+PKG_SECTION:= net/perf
+PKG_DEPENDS:= libncurses
+PKG_BUILDDEP:= ncurses
+PKG_URL:= https://github.com/iptraf-ng/iptraf-ng
+PKG_SITES:= https://github.com/iptraf-ng/iptraf-ng.git
+
+include ${ADK_TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,IPTRAF_NG,iptraf-ng,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+
+CONFIG_STYLE:= manual
+TARGET_LDFLAGS+= -ltinfo -lncurses -lpanel
+XAKE_FLAGS+= PLATFORM="-DPLATFORM=\\\"Linux/${ARCH}\\\"" \
+ TARGET="/usr/bin" \
+ WORKDIR="/var/lib/iptraf-ng" V=1
+
+iptraf-ng-install:
+ ${INSTALL_DIR} ${IDIR_IPTRAF_NG}/usr/sbin
+ ${INSTALL_BIN} ${WRKINST}/usr/sbin/iptraf-ng ${IDIR_IPTRAF_NG}/usr/sbin
+
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/iptraf-ng/patches/patch-Makefile b/package/iptraf-ng/patches/patch-Makefile
new file mode 100644
index 000000000..597248cfe
--- /dev/null
+++ b/package/iptraf-ng/patches/patch-Makefile
@@ -0,0 +1,11 @@
+--- iptraf-ng-v1.2.1.orig/Makefile 2024-02-25 17:52:43.000000000 +0100
++++ iptraf-ng-v1.2.1/Makefile 2024-02-25 17:54:46.973660535 +0100
+@@ -25,7 +25,7 @@ ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS) $(IPT
+ ALL_LDFLAGS = $(LDFLAGS)
+ STRIP ?= strip
+
+-prefix = $(HOME)
++prefix = /usr
+ sbindir_relative = sbin
+ sbindir = $(prefix)/$(sbindir_relative)
+ mandir = $(prefix)/share/man
diff --git a/package/iptraf/patches/patch-src_Makefile b/package/iptraf/patches/patch-src_Makefile
index e03ebb770..031a96362 100644
--- a/package/iptraf/patches/patch-src_Makefile
+++ b/package/iptraf/patches/patch-src_Makefile
@@ -1,6 +1,6 @@
$Id$
--- iptraf-3.0.1.orig/src/Makefile 2005-09-13 11:11:17.000000000 +0200
-+++ iptraf-3.0.1/src/Makefile 2014-06-25 16:51:56.160654472 +0200
++++ iptraf-3.0.1/src/Makefile 2024-02-25 18:13:10.945645560 +0100
@@ -17,8 +17,9 @@ VERSION = -DVERSION=\"$(VERNUMBER)\"
#
BINDIR = ../../iptraf-$(VERNUMBER).bin.$(ARCH)
@@ -34,16 +34,17 @@ $Id$
# You can uncomment this one to disable the backspace key in input fields.
# This means you must use the Del key or Ctrl+H combination to erase the
-@@ -98,7 +101,7 @@ LOCKDIR = /var/run/iptraf
+@@ -98,41 +101,39 @@ LOCKDIR = /var/run/iptraf
# Object file names
OBJS = iptraf.o itrafmon.o packet.o tcptable.o othptab.o ifstats.o deskman.o \
-ipcsum.o hostmon.o fltedit.o tr.o cidr.o \
+ipcsum.o hostmon.o fltedit.o cidr.o \
fltselect.o ipfilter.o fltmgr.o ipfrag.o serv.o servname.o instances.o \
- timer.o revname.o pktsize.o landesc.o isdntab.o options.o promisc.o ifaces.o \
+-timer.o revname.o pktsize.o landesc.o isdntab.o options.o promisc.o ifaces.o \
++timer.o revname.o pktsize.o landesc.o options.o promisc.o ifaces.o \
error.o log.o mode.o getpath.o bar.o parseproto.o
-@@ -106,33 +109,31 @@ error.o log.o mode.o getpath.o bar.o par
+
BINS = iptraf rvnamed rawtime
all: $(BINS)
diff --git a/package/iptraf/patches/patch-src_isdntab_c b/package/iptraf/patches/patch-src_isdntab_c
new file mode 100644
index 000000000..cec46b383
--- /dev/null
+++ b/package/iptraf/patches/patch-src_isdntab_c
@@ -0,0 +1,10 @@
+--- iptraf-3.0.1.orig/src/isdntab.c 2005-09-13 08:42:54.000000000 +0200
++++ iptraf-3.0.1/src/isdntab.c 2024-02-25 18:12:43.421645934 +0100
+@@ -20,7 +20,6 @@ details.
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+-#include <linux/isdn.h>
+ #include "isdntab.h"
+
+
diff --git a/package/iptraf/patches/patch-src_packet_c b/package/iptraf/patches/patch-src_packet_c
index 85c402678..87c1c1ff4 100644
--- a/package/iptraf/patches/patch-src_packet_c
+++ b/package/iptraf/patches/patch-src_packet_c
@@ -1,14 +1,38 @@
--- iptraf-3.0.1.orig/src/packet.c 2007-09-25 11:21:18.000000000 +0200
-+++ iptraf-3.0.1/src/packet.c 2013-03-04 11:42:52.000000000 +0100
-@@ -36,7 +36,6 @@ details.
++++ iptraf-3.0.1/src/packet.c 2024-02-25 18:13:41.165645150 +0100
+@@ -36,8 +36,6 @@ details.
#include <linux/if_ether.h>
#include <linux/netdevice.h>
#include <linux/if_fddi.h>
-#include <linux/if_tr.h>
- #include <linux/isdn.h>
+-#include <linux/isdn.h>
#include <linux/sockios.h>
#include <msgboxes.h>
-@@ -136,9 +135,6 @@ unsigned short getlinktype(unsigned shor
+ #include "deskman.h"
+@@ -107,21 +105,7 @@ unsigned short getlinktype(unsigned shor
+ result = LINK_ETHERNET;
+ else if (strncmp(ifname, "tap", 3) == 0)
+ result = LINK_ETHERNET;
+- else if ((strncmp(ifname, "isdn", 4) == 0) && (isdn_fd != -1)) {
+- isdnent = isdn_table_lookup(isdnlist, ifname, isdn_fd);
+-
+- switch (isdnent->encap) {
+- case ISDN_NET_ENCAP_RAWIP:
+- result = LINK_ISDN_RAWIP;
+- break;
+- case ISDN_NET_ENCAP_CISCOHDLC:
+- result = LINK_ISDN_CISCOHDLC;
+- break;
+- default:
+- result = LINK_INVALID;
+- break;
+- }
+- } else if (accept_unsupported_interfaces)
++ else if (accept_unsupported_interfaces)
+ result = LINK_ETHERNET;
+ break;
+ case ARPHRD_LOOPBACK:
+@@ -136,9 +120,6 @@ unsigned short getlinktype(unsigned shor
case ARPHRD_PPP:
result = LINK_PPP;
break;
@@ -18,7 +42,7 @@
case ARPHRD_IEEE802:
case ARPHRD_IEEE802_TR:
result = LINK_TR;
-@@ -194,36 +190,6 @@ void adjustpacket(char *tpacket, unsigne
+@@ -194,36 +175,6 @@ void adjustpacket(char *tpacket, unsigne
*packet = tpacket + 4;
*readlen -= 4;
break;
@@ -55,3 +79,9 @@
case LINK_IPIP:
*packet = tpacket;
break;
+@@ -463,5 +414,4 @@ void pkt_cleanup(void)
+ close(isdnfd);
+ isdnfd = -1;
+ destroyfraglist();
+- destroy_isdn_table(&isdntable);
+ }
diff --git a/package/irssi/Makefile b/package/irssi/Makefile
index 3af67de8c..66bc9344e 100644
--- a/package/irssi/Makefile
+++ b/package/irssi/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= irssi
-PKG_VERSION:= 1.0.7
+PKG_VERSION:= 1.4.4
PKG_RELEASE:= 1
-PKG_HASH:= 1b386ca026aa1875c380fd00ef1d24b71fb87cdae39ef5349ecca16c4567feac
+PKG_HASH:= fefe9ec8c7b1475449945c934a2360ab12693454892be47a6d288c63eb107ead
PKG_DESCR:= irc text client
PKG_SECTION:= app/chat
PKG_DEPENDS:= glib libncurses
diff --git a/package/iw/Makefile b/package/iw/Makefile
index f2fe9cc44..83e096fc8 100644
--- a/package/iw/Makefile
+++ b/package/iw/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= iw
-PKG_VERSION:= 4.9
+PKG_VERSION:= 5.19
PKG_RELEASE:= 1
-PKG_HASH:= 324cc805fad52cba2c16b9ab569906889fb645cc962aac4cfda1db85d2de97ce
+PKG_HASH:= f167bbe947dd53bb9ebc0c1dcef5db6ad73ac1d6084f2c6f9376c5c360cc4d4e
PKG_DESCR:= tools for setting up wifi cards
PKG_SECTION:= net/wifi
PKG_DEPENDS:= libnl
diff --git a/package/jack/Makefile b/package/jack/Makefile
index bc301976a..1104b7797 100644
--- a/package/jack/Makefile
+++ b/package/jack/Makefile
@@ -9,7 +9,7 @@ PKG_RELEASE:= 2
PKG_DESCR:= audio connection kit (v1)
PKG_SECTION:= mm/audio
PKG_DEPENDS:= alsa-lib libsndfile libsamplerate libdb
-PKG_BUILDDEP:= db python2-host alsa-lib libsndfile libsamplerate
+PKG_BUILDDEP:= db python3-host alsa-lib libsndfile libsamplerate
PKG_NEEDS:= threads c++
PKG_URL:= http://jackaudio.org
PKG_SITES:= https://github.com/jackaudio/jack1.git
diff --git a/package/jack2/Makefile b/package/jack2/Makefile
index 3610d6465..cebf85030 100644
--- a/package/jack2/Makefile
+++ b/package/jack2/Makefile
@@ -4,16 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= jack2
-PKG_VERSION:= 31d4ae97f296fe1c954cbb51e50d5e60578260b8
+PKG_VERSION:= 1.9.22
PKG_RELEASE:= 1
-PKG_GIT:= hash
-PKG_DESCR:= audio connection kit (v2)
+PKG_HASH:= 1e42b9fc4ad7db7befd414d45ab2f8a159c0b30fcd6eee452be662298766a849
PKG_SECTION:= mm/audio
PKG_DEPENDS:= alsa-lib libsndfile libsamplerate
-PKG_BUILDDEP:= python2-host alsa-lib libsndfile libsamplerate
+PKG_BUILDDEP:= python3-host alsa-lib libsndfile libsamplerate
PKG_NEEDS:= threads c++
PKG_URL:= http://jackaudio.org
-PKG_SITES:= https://github.com/jackaudio/jack2.git
+PKG_SITES:= https://github.com/jackaudio/jack2/archive/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/jack2/patches/patch-wscript b/package/jack2/patches/patch-wscript
deleted file mode 100644
index 45e2728a3..000000000
--- a/package/jack2/patches/patch-wscript
+++ /dev/null
@@ -1,23 +0,0 @@
---- jack2-31d4ae97f296fe1c954cbb51e50d5e60578260b8.orig/wscript 2017-06-01 19:03:37.000000000 +0200
-+++ jack2-31d4ae97f296fe1c954cbb51e50d5e60578260b8/wscript 2017-06-01 19:10:22.063929110 +0200
-@@ -506,8 +506,6 @@ def configure(conf):
- if conf.env['BUILD_JACKDBUS'] != True:
- conf.fatal('jackdbus was explicitly requested but cannot be built')
-
-- conf.recurse('example-clients')
--
- # test for the availability of ucontext, and how it should be used
- for t in ("gp_regs", "uc_regs", "mc_gregs", "gregs"):
- fragment = "#include <ucontext.h>\n"
-@@ -1016,11 +1014,6 @@ def build(bld):
-
- build_drivers(bld)
-
-- bld.recurse('example-clients')
-- if bld.env['IS_LINUX']:
-- bld.recurse('man')
-- if not bld.env['IS_WINDOWS']:
-- bld.recurse('tests')
- if bld.env['BUILD_JACKDBUS']:
- bld.recurse('dbus')
-
diff --git a/package/kexec-tools/Makefile b/package/kexec-tools/Makefile
index 5275de348..3e7d88f80 100644
--- a/package/kexec-tools/Makefile
+++ b/package/kexec-tools/Makefile
@@ -5,7 +5,7 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= kexec-tools
PKG_VERSION:= 2.0.23
-PKG_RELEASE:= 1
+PKG_RELEASE:= 2
PKG_HASH:= aa63cd6c7dd95b06ceba6240a7fdc6792789cada75a655e6714987175224241b
PKG_DESCR:= kernel exec tools
PKG_SECTION:= sys/misc
@@ -15,8 +15,6 @@ PKG_KDEPENDS:= kexec
PKG_URL:= http://kernel.org/pub/linux/utils/kernel/kexec/
PKG_SITES:= ${MASTER_SITE_KERNEL:=utils/kernel/kexec/}
-PKG_ARCH_DEPENDS:= !aarch64 !m68k
-
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,KEXEC_TOOLS,kexec-tools,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
diff --git a/package/kismet/Makefile b/package/kismet/Makefile
index 1c1731add..c34a3cd68 100644
--- a/package/kismet/Makefile
+++ b/package/kismet/Makefile
@@ -4,56 +4,33 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= kismet
-PKG_VERSION:= 2013-03-R1b
+PKG_VERSION:= 2023-07-R1
PKG_RELEASE:= 1
-PKG_HASH:= 636d4d7ef8c67ae6ee8d8e1635f5115700eecb9fa4c208afaee30238db527c2c
+PKG_HASH:= f08548e26ca65fa1e567b1debbea1ca4d0e7206bddb96a4f639c90171873e8f7
PKG_DESCR:= wireless network detector, sniffer, and intrusion detection system
PKG_SECTION:= net/wifi
-PKG_DEPENDS:= libpcap libncurses
-PKG_BUILDDEP:= libpcap ncurses
+PKG_BUILDDEP:= libpcap ncurses libwebsockets protobuf protobuf-c sqlite
+PKG_DEPENDS:= libpcap libncurses libwebsockets protobuf protobuf-c libsqlite
PKG_NEEDS:= threads
PKG_URL:= http://www.kismetwireless.net/
-PKG_SITES:= http://www.kismetwireless.net/code/
-
-PKG_SUBPKGS:= KISMET KISMET_CLIENT KISMET_DRONE KISMET_SERVER
-PKGSD_KISMET_CLIENT:= kismet client
-PKGSD_KISMET_SERVER:= kismet server
-PKGSD_KISMET_DRONE:= kismet drone
+PKG_SITES:= https://www.kismetwireless.net/code/
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,KISMET,kismet,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-$(eval $(call PKG_template,KISMET_CLIENT,kismet-client,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_KISMET_CLIENT},${PKG_SECTION}))
-$(eval $(call PKG_template,KISMET_DRONE,kismet-drone,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_KISMET_DRONE},${PKG_SECTION}))
-$(eval $(call PKG_template,KISMET_SERVER,kismet-server,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_KISMET_SERVER},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
TARGET_LDFLAGS+= -lpthread -ltinfo
-CONFIGURE_ARGS+= --sysconfdir=/etc/kismet
-
-pre-build:
- (cd ${WRKBUILD} && ${MAKE} dep);
+CONFIGURE_ARGS+= --sysconfdir=/etc/kismet \
+ --disable-libusb \
+ --disable-python-tools \
+ --disable-wifi-coconut
kismet-install:
${INSTALL_DIR} ${IDIR_KISMET}/usr/bin/
- ${INSTALL_BIN} ${WRKINST}/usr/bin/kismet ${IDIR_KISMET}/usr/bin/kismet
-
-kismet-client-install:
- ${INSTALL_DIR} ${IDIR_KISMET_CLIENT}/usr/bin
- ${INSTALL_BIN} ${WRKINST}/usr/bin/kismet_client \
- ${IDIR_KISMET_CLIENT}/usr/bin/
-
-kismet-drone-install:
- ${INSTALL_DIR} ${IDIR_KISMET_DRONE}/usr/bin
- ${INSTALL_BIN} ${WRKINST}/usr/bin/kismet_drone \
- ${IDIR_KISMET_DRONE}/usr/bin/
-
-kismet-server-install:
- ${INSTALL_DIR} ${IDIR_KISMET_SERVER}/usr/bin
- ${INSTALL_DIR} ${IDIR_KISMET_SERVER}/etc/kismet
- ${INSTALL_BIN} ${WRKINST}/usr/bin/kismet_server \
- ${IDIR_KISMET_SERVER}/usr/bin/
- ${INSTALL_DATA} ${WRKINST}/etc/kismet/kismet.conf \
- ${IDIR_KISMET_SERVER}/etc/kismet
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/kismet \
+ ${IDIR_KISMET}/usr/bin/kismet
+ ${INSTALL_DIR} ${IDIR_KISMET}/etc/kismet
+ ${CP} ${WRKINST}/etc/kismet/kismet*.conf \
+ ${IDIR_KISMET}/etc/kismet/
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/kismet/patches/patch-configure_in b/package/kismet/patches/patch-configure_in
deleted file mode 100644
index cb7d45cbd..000000000
--- a/package/kismet/patches/patch-configure_in
+++ /dev/null
@@ -1,12 +0,0 @@
---- kismet-2013-03-R1b.orig/configure.in 2013-03-27 15:41:48.000000000 +0100
-+++ kismet-2013-03-R1b/configure.in 2013-12-31 23:14:38.000000000 +0100
-@@ -406,9 +406,6 @@ AC_ARG_ENABLE(client,
- )
- AC_SUBST(wantclient)
-
--# Add additional cflags since some distros bury panel.h
--CPPFLAGS="$CPPFLAGS -I/usr/include/ncurses"
--
- termcontrol="none";
-
- if test "$wantclient" = "yes"; then
diff --git a/package/kismet/patches/patch-dumpfile_tuntap_h b/package/kismet/patches/patch-dumpfile_tuntap_h
deleted file mode 100644
index f669446f5..000000000
--- a/package/kismet/patches/patch-dumpfile_tuntap_h
+++ /dev/null
@@ -1,18 +0,0 @@
---- kismet-2013-03-R1b.orig/dumpfile_tuntap.h 2013-03-27 15:41:48.000000000 +0100
-+++ kismet-2013-03-R1b/dumpfile_tuntap.h 2014-01-02 20:53:21.000000000 +0100
-@@ -65,7 +65,15 @@
- #include "dumpfile.h"
-
- #ifdef SYS_LINUX
-+#if defined(__GLIBC__)
- #include <linux/if_tun.h>
-+#else
-+#define IFF_TUN 0x0001
-+#define IFF_TAP 0x0002
-+#define IFF_NO_PI 0x1000
-+#define TUNSETNOCSUM _IOW('T', 200, int)
-+#define TUNSETIFF _IOW('T', 202, int)
-+#endif
-
- // Linux IEEE80211 link typ to set
- #define LNX_LINKTYPE_80211 801
diff --git a/package/kmod/Makefile b/package/kmod/Makefile
index e9fd271f7..c46410927 100644
--- a/package/kmod/Makefile
+++ b/package/kmod/Makefile
@@ -4,13 +4,12 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= kmod
-PKG_VERSION:= 24
+PKG_VERSION:= 31
PKG_RELEASE:= 1
-PKG_HASH:= 610b8d1df172acc39a4fdf1eaa47a57b04873c82f32152e7a62e29b6ff9cb397
+PKG_HASH:= f5a6949043cc72c001b728d8c218609c5a15f3c33d75614b78c79418fcf00d80
PKG_DESCR:= kernel module utils
PKG_SECTION:= sys/utils
PKG_DEPENDS:= libkmod
-PKG_URL:= http://profusion.mobi/index.php
PKG_SITES:= https://www.kernel.org/pub/linux/utils/kernel/kmod/
PKG_LIBNAME:= libkmod
PKG_OPTS:= dev
diff --git a/package/knxd/Makefile b/package/knxd/Makefile
index 661744db3..60ebe9b49 100644
--- a/package/knxd/Makefile
+++ b/package/knxd/Makefile
@@ -3,17 +3,20 @@
include $(ADK_TOPDIR)/rules.mk
-# always use tab spaces as separator, no spaces
PKG_NAME:= knxd
-PKG_VERSION:= v0.14
+PKG_VERSION:= 0.14.61
PKG_RELEASE:= 1
-PKG_GIT:= branch
-PKG_DESCR:= KNX daemon
+PKG_HASH:= b5284c89a55a2c53e0ff769ec4f736fc1ad4b55afdd2a18b9258fa95f708d798
+PKG_DESCR:= knx daemon
PKG_SECTION:= sys/hw
PKG_DEPENDS:= libev
PKG_BUILDDEP:= libev cmake-host
PKG_URL:= https://github.com/knxd/knxd
-PKG_SITES:= https://github.com/knxd/knxd.git
+PKG_SITES:= https://github.com/knxd/knxd/archive/refs/tags/
+
+PKG_CFLINE_KNXD:= depends on ADK_BROKEN
+
+DISTFILES:= $(PKG_VERSION).tar.gz
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/knxd/patches/patch-tools_version_sh b/package/knxd/patches/patch-tools_version_sh
deleted file mode 100644
index ff6a2f836..000000000
--- a/package/knxd/patches/patch-tools_version_sh
+++ /dev/null
@@ -1,10 +0,0 @@
---- knxd-v0.14.orig/tools/version.sh 2020-04-18 16:44:30.000000000 +0200
-+++ knxd-v0.14/tools/version.sh 2020-04-18 19:38:03.451807369 +0200
-@@ -1,5 +1,6 @@
- #!/bin/sh
--sed -ne '1s/.*(\(.*\)).*/\1/' -e '1s/-1$//' -e '1p' debian/changelog | tr -d "\n"
-+#sed -ne '1s/.*(\(.*\)).*/\1/' -e '1s/-1$//' -e '1p' debian/changelog | tr -d "\n"
-+echo "0.14"
- test -d .git || exit
- git=$(git rev-parse --short HEAD)
- lgit=$(git rev-parse --short $(git rev-list -1 HEAD debian/changelog) )
diff --git a/package/kodi/Makefile b/package/kodi/Makefile
index 4e9a57a4c..9fb6deccb 100644
--- a/package/kodi/Makefile
+++ b/package/kodi/Makefile
@@ -4,36 +4,39 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= kodi
-PKG_VERSION:= 18.0a1
+PKG_VERSION:= 21.0b2
PKG_RELEASE:= 1
-PKG_HASH:= 8892498d5248eea29c30db7c128a5910afc60d1b0b894aea472604bb879a0310
+PKG_HASH:= b9d6ecbb8769cdfe00cbbe5da5c330a7624eee50cffb87d87f6271033f1ee74b
PKG_DESCR:= software media player
PKG_SECTION:= mm/video
-PKG_DEPENDS:= python2 libsquish libressl libxz libfmt rapidjson
-PKG_DEPENDS+= libass libmpeg2 libmad libmodplug libcurl
+PKG_DEPENDS:= python3 libsquish libressl libxz libfmt rapidjson
+PKG_DEPENDS+= libass libmpeg2 libmad libmodplug libcurl libxshmfence
PKG_DEPENDS+= libflac libbz2 libtiff libnettle librtmp liblzo
PKG_DEPENDS+= yajl tinyxml libsqlite libpcrecpp libncurses libpng
PKG_DEPENDS+= libpcre libcdio libfreetype libsamplerate libuuid
-PKG_DEPENDS+= taglib libjasper libmp3lame libgpg-error python2-mod-sqlite
-PKG_DEPENDS+= glib libdcadec bcm28xx-vc-gl-libs libffmpeg libxvidcore
-PKG_BUILDDEP:= python2 libass ffmpeg rtmpdump bcm28xx-vc
+PKG_DEPENDS+= taglib libjasper libmp3lame libgpg-error giflib
+PKG_DEPENDS+= glib libdcadec libffmpeg libxvidcore libiconv harfbuzz
+PKG_DEPENDS+= flatbuffers fstrcmp spdlog mesa libinput libxkbcommon
+PKG_DEPENDS+= xkeyboard-config tinyxml2 libdisplay-info libudfread
+PKG_BUILDDEP:= python3 libass ffmpeg rtmpdump libiconv libudfread
PKG_BUILDDEP+= libmpeg2 libmad libjpeg-turbo fmt rapidjson
-PKG_BUILDDEP+= curl flac bzip2 libtiff yajl cmake-host
-PKG_BUILDDEP+= tinyxml sqlite pcre libcdio freetype libpng
-PKG_BUILDDEP+= libsamplerate taglib libjasper
-PKG_BUILDDEP+= glib libmodplug libgpg-error xvidcore
+PKG_BUILDDEP+= curl flac bzip2 libtiff yajl cmake-host libdisplay-info
+PKG_BUILDDEP+= tinyxml tinyxml2 sqlite pcre libcdio freetype libpng
+PKG_BUILDDEP+= libsamplerate taglib libjasper giflib xkeyboard-config
+PKG_BUILDDEP+= glib libmodplug libgpg-error xvidcore libxshmfence
PKG_BUILDDEP+= swig-host liblzo-host libpng-host libjpeg-turbo-host
PKG_BUILDDEP+= zip-host unzip-host giflib-host libsquish libdcadec
-PKG_BUILDDEP+= libcrossguid libressl xz bzip2 liblzo
+PKG_BUILDDEP+= libcrossguid libressl xz bzip2 liblzo harfbuzz
+PKG_BUILDDEP+= flatbuffers fstrcmp spdlog mesa libinput libxkbcommon
PKG_NEEDS:= threads c++ data iconv
PKG_URL:= http://kodi.tv/
PKG_SITES:= https://github.com/xbmc/xbmc/archive/
-DISTFILES:= $(PKG_VERSION)-Leia.tar.gz
-WRKDIST= ${WRKDIR}/xbmc-$(PKG_VERSION)-Leia
+DISTFILES:= $(PKG_VERSION)-Omega.tar.gz
+WRKDIST= ${WRKDIR}/xbmc-$(PKG_VERSION)-Omega
WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
-PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi3p raspberry-pi3p-64
+PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 raspberry-pi4-64 rockpi4-plus raspberry-pi5
PKG_FLAVOURS_KODI:= WITH_ALSA WITH_CEC WITH_PULSEAUDIO WITH_SMB
PKG_FLAVOURS_KODI+= WITH_MICROHTTPD WITH_SSH WITH_AVAHI
@@ -71,7 +74,12 @@ CMAKE_FLAGS+= -DENABLE_CCACHE=OFF \
-DENABLE_DVDCSS=ON \
-DENABLE_INTERNAL_CROSSGUID=OFF \
-DENABLE_INTERNAL_FFMPEG=OFF \
+ -DENABLE_INTERNAL_RapidJSON=OFF \
-DWITH_FFMPEG=$(STAGING_TARGET_DIR)/usr \
+ -DPYTHON_EXECUTABLE=$(STAGING_HOST_DIR)/usr/bin/python3 \
+ -DPYTHON_INCLUDE_DIRS=$(STAGING_TARGET_DIR)/usr/include/python3.11 \
+ -DPYTHON_PATH=$(STAGING_TARGET_DIR)/usr/lib/python3.11 \
+ -DPYTHON_VER=3.11 \
-DKODI_DEPENDSBUILD=OFF \
-DENABLE_OPENSSL=ON \
-DENABLE_MYSQLCLIENT=OFF \
@@ -87,17 +95,31 @@ CMAKE_FLAGS+= -DENABLE_CCACHE=OFF \
-DENABLE_OPTICAL=OFF \
-DENABLE_DBUS=OFF \
-DENABLE_EVENTCLIENTS=OFF \
- -DENABLE_UDEV=OFF \
+ -DENABLE_UDEV=ON \
-DENABLE_PLIST=OFF \
-DNATIVEPREFIX=$(STAGING_HOST_DIR)/usr \
- -DDEPENDS_PATH=$(STAGING_HOST_DIR) \
- -DWITH_TEXTUREPACKER=$(STAGING_HOST_DIR)/usr/bin/TexturePacker
-
-ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
-CMAKE_FLAGS+= -DCORE_PLATFORM_NAME=rbpi \
+ -DDEPENDS_PATH=$(STAGING_TARGET_DIR)/usr \
+ -DWITH_TEXTUREPACKER=$(STAGING_HOST_DIR)/usr/bin/TexturePacker \
+ -DWITH_JSONSCHEMABUILDER=$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder \
+ -DCMAKE_EXE_LINKER_FLAGS=-latomic \
+ -DLIBDVDCSS_URL=$(DL_DIR)/libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz \
+ -DLIBDVDNAV_URL=$(DL_DIR)/libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz \
+ -DLIBDVDREAD_URL=$(DL_DIR)/libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz
+
+ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
+CMAKE_FLAGS+= -DWITH_ARCH=aarch64 \
+ -DWITH_CPU=aarch64 \
+ -DENABLE_NEON=OFF
+endif
+ifeq ($(ADK_TARGET_ARCH_ARM),y)
-DWITH_ARCH=arm \
-DWITH_CPU=arm \
- -DENABLE_NEON=ON \
+ -DENABLE_NEON=ON
+endif
+
+ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
+CMAKE_FLAGS+= -DCORE_PLATFORM_NAME=gbm \
+ -DAPP_RENDER_SYSTEM=gles \
-DENABLE_OPENGL=OFF \
-DENABLE_X11=OFF \
-DENABLE_OPENGLES=ON
@@ -140,19 +162,27 @@ CMAKE_FLAGS+= -DENABLE_SSH=OFF
endif
XAKE_FLAGS+= VERBOSE=1
+TARGET_LDFLAGS+= -latomic -liconv
+
+KODI_LIBDVDCSS_VERSION = 1.4.3-Next-Nexus-Alpha2-2
+KODI_LIBDVDNAV_VERSION = 6.1.1-Next-Nexus-Alpha2-2
+KODI_LIBDVDREAD_VERSION = 6.1.3-Next-Nexus-Alpha2-2
pre-configure:
- (cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder && PATH='$(HOST_PATH)' cmake .)
- PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder
- cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/JsonSchemaBuilder \
- $(STAGING_HOST_DIR)/usr/bin
- (cd $(WRKSRC)/tools/depends/native/TexturePacker && PATH='$(HOST_PATH)' cmake \
- -DCORE_SOURCE_DIR=$(WRKSRC) \
- -DCMAKE_MODULE_PATH=$(WRKSRC)/cmake/modules \
- -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" .)
- PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/TexturePacker
- cp $(WRKSRC)/tools/depends/native/TexturePacker/TexturePacker \
- $(STAGING_HOST_DIR)/usr/bin
+ #(cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src && PATH='$(HOST_PATH)' cmake .)
+ #PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src
+ #cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \
+ # $(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder
+ #(cd $(WRKSRC)/tools/depends/native/TexturePacker/src && PATH='$(HOST_PATH)' cmake \
+ # -DKODI_SOURCE_DIR=$(WRKSRC) \
+ # -DCMAKE_MODULE_PATH=$(WRKSRC)/cmake/modules \
+ # -DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS)" .)
+ #PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/TexturePacker/src
+ #cp $(WRKSRC)/tools/depends/native/TexturePacker/src/TexturePacker \
+ # $(STAGING_HOST_DIR)/usr/bin
+ (cd $(DL_DIR) && wget -O libdvdcss-$(KODI_LIBDVDCSS_VERSION).tar.gz https://github.com/xbmc/libdvdcss/archive/refs/tags/$(KODI_LIBDVDCSS_VERSION).tar.gz)
+ (cd $(DL_DIR) && wget -O libdvdnav-$(KODI_LIBDVDNAV_VERSION).tar.gz https://github.com/xbmc/libdvdnav/archive/refs/tags/$(KODI_LIBDVDNAV_VERSION).tar.gz)
+ (cd $(DL_DIR) && wget -O libdvdread-$(KODI_LIBDVDREAD_VERSION).tar.gz https://github.com/xbmc/libdvdread/archive/refs/tags/$(KODI_LIBDVDREAD_VERSION).tar.gz)
kodi-install:
$(INSTALL_DIR) $(STAGING_TARGET_DIR)/usr/share/kodi
diff --git a/package/kodi/files/kodi.init b/package/kodi/files/kodi.init
index 04ed8ea83..c3dfdf893 100644
--- a/package/kodi/files/kodi.init
+++ b/package/kodi/files/kodi.init
@@ -15,10 +15,10 @@ start)
if [ ! -d /data/kodi ]; then
mkdir /data/kodi
fi
- cd / && /usr/lib/kodi/kodi-rbpi &
+ cd / && /usr/lib/kodi/kodi-gbm &
;;
stop)
- kill $(pgrep -f /usr/lib/kodi/kodi-rbpi)
+ kill $(pgrep -f /usr/lib/kodi/kodi-gbm)
;;
restart)
sh $0 stop
diff --git a/package/kodi/patches/patch-CMakeLists_txt b/package/kodi/patches/patch-CMakeLists_txt
new file mode 100644
index 000000000..7fa65595b
--- /dev/null
+++ b/package/kodi/patches/patch-CMakeLists_txt
@@ -0,0 +1,27 @@
+--- xbmc-21.0b2-Omega.orig/CMakeLists.txt 2023-12-09 22:24:46.000000000 +0100
++++ xbmc-21.0b2-Omega/CMakeLists.txt 2024-01-31 10:45:45.831435209 +0100
+@@ -178,7 +178,6 @@ endforeach()
+ # Required tools. Keep in alphabetical order please
+ set(required_buildtools FlatC
+ JsonSchemaBuilder
+- TexturePacker
+ )
+
+ # Optional build tools
+@@ -468,7 +467,6 @@ endif()
+ add_custom_command(
+ OUTPUT ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${CONFIG_VAR}/gen_skin.timestamp
+ COMMAND ${CMAKE_COMMAND} -DBUNDLEDIR=${_bundle_dir}
+- -DTEXTUREPACKER_EXECUTABLE=$<TARGET_FILE:TexturePacker::TexturePacker::Executable>
+ -P ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/GeneratedPackSkins.cmake
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${CONFIG_VAR}
+ COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${CONFIG_VAR}/gen_skin.timestamp
+@@ -481,7 +479,7 @@ add_custom_target(gen_skin_pack DEPENDS
+
+ # Packaging target. This generates system addon, xbt creation, copy files to build tree
+ add_custom_target(generate-packaging ALL
+- DEPENDS TexturePacker::TexturePacker::Executable export-files gen_skin_pack gen_system_addons)
++ DEPENDS export-files gen_skin_pack gen_system_addons)
+ # Make sure we build any libs before we look to export-files.
+ # We may need to export some shared libs/data (eg Python)
+ add_dependencies(export-files ${GLOBAL_TARGET_DEPS})
diff --git a/package/kodi/patches/patch-cmake_KodiConfig_cmake_in b/package/kodi/patches/patch-cmake_KodiConfig_cmake_in
deleted file mode 100644
index 3ebae759b..000000000
--- a/package/kodi/patches/patch-cmake_KodiConfig_cmake_in
+++ /dev/null
@@ -1,20 +0,0 @@
---- xbmc-18.0a1-Leia.orig/cmake/KodiConfig.cmake.in 2018-03-04 10:21:28.000000000 +0100
-+++ xbmc-18.0a1-Leia/cmake/KodiConfig.cmake.in 2018-05-23 08:10:01.842094111 +0200
-@@ -8,7 +8,7 @@ if(NOT @APP_NAME_UC@_PREFIX)
- set(@APP_NAME_UC@_PREFIX @APP_PREFIX@)
- endif()
- if(NOT @APP_NAME_UC@_INCLUDE_DIR)
-- set(@APP_NAME_UC@_INCLUDE_DIR @APP_INCLUDE_DIR@)
-+ set(@APP_NAME_UC@_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/@APP_INCLUDE_DIR@)
- endif()
- if(NOT @APP_NAME_UC@_LIB_DIR)
- set(@APP_NAME_UC@_LIB_DIR @APP_LIB_DIR@)
-@@ -20,7 +20,7 @@ set(APP_RENDER_SYSTEM @APP_RENDER_SYSTEM
- if(NOT WIN32)
- set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@")
- endif()
--list(APPEND CMAKE_MODULE_PATH @APP_LIB_DIR@ @APP_DATA_DIR@/cmake)
-+list(APPEND CMAKE_MODULE_PATH ${CMAKE_FIND_ROOT_PATH}/@APP_LIB_DIR@ ${CMAKE_FIND_ROOT_PATH}/@APP_DATA_DIR@/cmake)
-
- string(REPLACE ";" " " ARCH_DEFINES "@ARCH_DEFINES@")
- add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON)
diff --git a/package/kodi/patches/patch-tools_depends_native_TexturePacker_CMakeLists_txt b/package/kodi/patches/patch-tools_depends_native_TexturePacker_CMakeLists_txt
deleted file mode 100644
index 2b62c1465..000000000
--- a/package/kodi/patches/patch-tools_depends_native_TexturePacker_CMakeLists_txt
+++ /dev/null
@@ -1,20 +0,0 @@
---- xbmc-18.0a1-Leia.orig/tools/depends/native/TexturePacker/CMakeLists.txt 2018-03-04 10:21:28.000000000 +0100
-+++ xbmc-18.0a1-Leia/tools/depends/native/TexturePacker/CMakeLists.txt 2018-05-26 06:54:36.060611270 +0200
-@@ -33,7 +33,7 @@ set(SOURCES src/md5.cpp
- src/decoder/GifHelper.cpp
- src/decoder/JPGDecoder.cpp
- src/decoder/PNGDecoder.cpp
-- ${CMAKE_SOURCE_DIR}/xbmc/guilib/XBTF.cpp)
-+ ${CORE_SOURCE_DIR}/xbmc/guilib/XBTF.cpp)
-
- set(CMAKE_POSITITION_INDEPENDENT_CODE 1)
-
-@@ -42,7 +42,7 @@ target_include_directories(TexturePacker
- PRIVATE ${PNG_INCLUDE_DIRS}
- ${JPEG_INCLUDE_DIR}
- ${GIF_INCLUDE_DIR}
-- ${CMAKE_SOURCE_DIR}/xbmc
-+ ${CORE_SOURCE_DIR}/xbmc
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- ${CMAKE_CURRENT_SOURCE_DIR}/src/decoder)
- target_link_libraries(TexturePacker
diff --git a/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp b/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp
new file mode 100644
index 000000000..67e51c6e9
--- /dev/null
+++ b/package/kodi/patches/patch-tools_depends_native_TexturePacker_src_decoder_GifHelper_cpp
@@ -0,0 +1,15 @@
+--- xbmc-19.3-Matrix.orig/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp 2021-10-24 12:09:58.000000000 +0200
++++ xbmc-19.3-Matrix/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp 2022-02-26 00:09:15.499548854 +0100
+@@ -18,11 +18,11 @@
+ *
+ */
+
+-#include "GifHelper.h"
+
+ #include <algorithm>
+ #include <cstdlib>
+ #include <cstring>
++#include "GifHelper.h"
+
+ #define UNSIGNED_LITTLE_ENDIAN(lo, hi) ((lo) | ((hi) << 8))
+ #define GIF_MAX_MEMORY 82944000U // about 79 MB, which is equivalent to 10 full hd frames.
diff --git a/package/kodi/patches/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA_cpp b/package/kodi/patches/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA_cpp
deleted file mode 100644
index fa943b89a..000000000
--- a/package/kodi/patches/patch-xbmc_cores_AudioEngine_Sinks_AESinkALSA_cpp
+++ /dev/null
@@ -1,30 +0,0 @@
---- xbmc-18.0a1-Leia.orig/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp 2018-03-04 10:21:28.000000000 +0100
-+++ xbmc-18.0a1-Leia/xbmc/cores/AudioEngine/Sinks/AESinkALSA.cpp 2018-05-26 06:48:45.750618626 +0200
-@@ -1213,7 +1213,8 @@ void CAESinkALSA::EnumerateDevicesEx(AED
- * found by the enumeration process. Skip them as well ("hw", "dmix",
- * "plughw", "dsnoop"). */
-
-- else if (baseName != "default"
-+ else if (true)
-+/* baseName != "default"
- && baseName != "sysdefault"
- && baseName != "surround40"
- && baseName != "surround41"
-@@ -1223,7 +1224,7 @@ void CAESinkALSA::EnumerateDevicesEx(AED
- && baseName != "hw"
- && baseName != "dmix"
- && baseName != "plughw"
-- && baseName != "dsnoop")
-+ && baseName != "dsnoop")*/
- {
- EnumerateDevice(list, name, desc ? desc : name, config);
- }
-@@ -1380,7 +1381,7 @@ void CAESinkALSA::EnumerateDevice(AEDevi
- info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI")
- {
- /* We already know this is HDMI, strip it */
-- info.m_displayName.erase(info.m_displayName.size()-5);
-+ /*info.m_displayName.erase(info.m_displayName.size()-5);*/
- }
-
- /* "CONEXANT Analog", "USB Audio", "HDMI 0", "ALC889 Digital" ... */
diff --git a/package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp b/package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp
new file mode 100644
index 000000000..27c420df8
--- /dev/null
+++ b/package/kodi/patches/patch-xbmc_platform_linux_CPUInfoLinux_cpp
@@ -0,0 +1,31 @@
+--- xbmc-21.0b2-Omega.orig/xbmc/platform/linux/CPUInfoLinux.cpp 2023-12-09 22:24:46.000000000 +0100
++++ xbmc-21.0b2-Omega/xbmc/platform/linux/CPUInfoLinux.cpp 2024-01-30 15:52:43.704683194 +0100
+@@ -19,10 +19,7 @@
+ #include <sstream>
+ #include <vector>
+
+-#if (defined(__arm__) && defined(HAS_NEON)) || defined(__aarch64__)
+-#include <asm/hwcap.h>
+-#include <sys/auxv.h>
+-#elif defined(__i386__) || defined(__x86_64__)
++#if defined(__i386__) || defined(__x86_64__)
+ #include <cpuid.h>
+ #endif
+
+@@ -279,16 +276,6 @@ CCPUInfoLinux::CCPUInfoLinux()
+
+ m_cpuModel = m_cpuModel.substr(0, m_cpuModel.find(char(0))); // remove extra null terminations
+
+-#if defined(HAS_NEON) && defined(__arm__)
+- if (getauxval(AT_HWCAP) & HWCAP_NEON)
+- m_cpuFeatures |= CPU_FEATURE_NEON;
+-#endif
+-
+-#if defined(HAS_NEON) && defined(__aarch64__)
+- if (getauxval(AT_HWCAP) & HWCAP_ASIMD)
+- m_cpuFeatures |= CPU_FEATURE_NEON;
+-#endif
+-
+ // Set MMX2 when SSE is present as SSE is a superset of MMX2 and Intel doesn't set the MMX2 cap
+ if (m_cpuFeatures & CPU_FEATURE_SSE)
+ m_cpuFeatures |= CPU_FEATURE_MMX2;
diff --git a/package/lame/Makefile b/package/lame/Makefile
index e9838154f..40474a7d3 100644
--- a/package/lame/Makefile
+++ b/package/lame/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= lame
-PKG_VERSION:= 3.99
+PKG_VERSION:= 3.100
PKG_RELEASE:= 1
-PKG_HASH:= d71d804c25cac69592939865033787849cef52b6c9b783ed31ea8dcebeadbbba
+PKG_HASH:= ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e
PKG_DESCR:= mp3 encoder
PKG_SECTION:= mm/audio
PKG_DEPENDS:= libncurses
diff --git a/package/lftp/Makefile b/package/lftp/Makefile
index b160c8697..993df08b3 100644
--- a/package/lftp/Makefile
+++ b/package/lftp/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= lftp
-PKG_VERSION:= 4.7.7
+PKG_VERSION:= 4.9.2
PKG_RELEASE:= 1
-PKG_HASH:= 4483df04502660dcc65a11cf09d530e31bea99483d69328c1c5cbaa41d6619b4
+PKG_HASH:= c517c4f4f9c39bd415d7313088a2b1e313b2d386867fe40b7692b83a20f0670d
PKG_DESCR:= ftp and http client
PKG_SECTION:= net/http
PKG_DEPENDS:= libncurses libexpat
diff --git a/package/lftp/patches/patch-src_FileCopy_cc b/package/lftp/patches/patch-src_FileCopy_cc
deleted file mode 100644
index a8b1d0d41..000000000
--- a/package/lftp/patches/patch-src_FileCopy_cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- lftp-4.7.7.orig/src/FileCopy.cc 2017-03-07 08:35:47.000000000 +0100
-+++ lftp-4.7.7/src/FileCopy.cc 2017-06-05 21:33:11.719033961 +0200
-@@ -36,7 +36,7 @@
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
--#include <math.h>
-+#include <cmath>
- #include <stddef.h>
- #include "FileCopy.h"
- #include "url.h"
diff --git a/package/lftp/patches/patch-src_NetAccess_cc b/package/lftp/patches/patch-src_NetAccess_cc
deleted file mode 100644
index 2ed120587..000000000
--- a/package/lftp/patches/patch-src_NetAccess_cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- lftp-4.7.7.orig/src/NetAccess.cc 2016-12-15 13:25:36.000000000 +0100
-+++ lftp-4.7.7/src/NetAccess.cc 2017-06-05 22:14:19.905585919 +0200
-@@ -21,7 +21,7 @@
-
- #include <errno.h>
- #include <assert.h>
--#include <math.h>
-+#include <cmath>
- #include <sys/types.h>
-
- #include "NetAccess.h"
diff --git a/package/lftp/patches/patch-src_ResMgr_cc b/package/lftp/patches/patch-src_ResMgr_cc
deleted file mode 100644
index ad66c2883..000000000
--- a/package/lftp/patches/patch-src_ResMgr_cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- lftp-4.7.7.orig/src/ResMgr.cc 2017-02-07 17:57:49.000000000 +0100
-+++ lftp-4.7.7/src/ResMgr.cc 2017-06-05 21:24:11.348321502 +0200
-@@ -23,7 +23,7 @@
- #include <ctype.h>
- #include <unistd.h>
- #include <stdlib.h>
--#include <math.h>
-+#include <cmath>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <errno.h>
diff --git a/package/lftp/patches/patch-src_Speedometer_cc b/package/lftp/patches/patch-src_Speedometer_cc
deleted file mode 100644
index a5c3ec73e..000000000
--- a/package/lftp/patches/patch-src_Speedometer_cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- lftp-4.7.7.orig/src/Speedometer.cc 2016-02-20 14:57:53.000000000 +0100
-+++ lftp-4.7.7/src/Speedometer.cc 2017-06-05 21:41:06.185512853 +0200
-@@ -18,7 +18,7 @@
- */
-
- #include <config.h>
--#include <math.h>
-+#include <cmath>
- #include <stdlib.h>
- #include "Speedometer.h"
- #include "misc.h"
diff --git a/package/lftp/patches/patch-src_lftp_ssl_cc b/package/lftp/patches/patch-src_lftp_ssl_cc
new file mode 100644
index 000000000..d8569322e
--- /dev/null
+++ b/package/lftp/patches/patch-src_lftp_ssl_cc
@@ -0,0 +1,38 @@
+--- lftp-4.9.2.orig/src/lftp_ssl.cc 2020-01-29 21:36:37.000000000 +0100
++++ lftp-4.9.2/src/lftp_ssl.cc 2024-02-22 14:42:11.060809468 +0100
+@@ -34,7 +34,7 @@
+ #include "misc.h"
+ #include "network.h"
+ #include "buffer.h"
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER
+ #define X509_STORE_CTX_get_by_subject X509_STORE_get_by_subject
+ #endif
+ extern "C" {
+@@ -775,7 +775,7 @@ error:
+ #elif USE_OPENSSL
+ //static int lftp_ssl_passwd_callback(char *buf,int size,int rwflag,void *userdata);
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined (LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000L)
+ // for compatibility with older versions
+ X509_OBJECT *X509_OBJECT_new()
+ {
+@@ -840,7 +840,7 @@ lftp_ssl_openssl_instance::lftp_ssl_open
+ ssl_ctx=SSL_CTX_new();
+ X509_set_default_verify_paths(ssl_ctx->cert);
+ #else
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER
+ SSLeay_add_ssl_algorithms();
+ #endif
+ ssl_ctx=SSL_CTX_new(SSLv23_client_method());
+@@ -1080,7 +1080,7 @@ void lftp_ssl_openssl::copy_sid(const lf
+
+ const char *lftp_ssl_openssl::strerror()
+ {
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || LIBRESSL_VERSION_NUMBER
+ SSL_load_error_strings();
+ #endif
+ int error=ERR_get_error();
diff --git a/package/libXrandr/Makefile b/package/libXrandr/Makefile
index 85340713e..c6169652f 100644
--- a/package/libXrandr/Makefile
+++ b/package/libXrandr/Makefile
@@ -9,7 +9,7 @@ PKG_RELEASE:= 1
PKG_HASH:= 2baa7fb3eca78fe7e11a09b373ba898b717f7eeba4a4bfd68187e04b4789b0d3
PKG_DESCR:= xrandr library
PKG_SECTION:= x11/libs
-PKG_BUILDDEP:= randrproto libXrender
+PKG_BUILDDEP:= randrproto libXrender libXext
PKG_SITES:= http://www.x.org/releases/individual/lib/
PKG_LIBNAME:= libxrandr
PKG_OPTS:= dev
diff --git a/package/libao/Makefile b/package/libao/Makefile
index 1a015e2ce..9f308976b 100644
--- a/package/libao/Makefile
+++ b/package/libao/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libao
-PKG_VERSION:= 1.1.0
+PKG_VERSION:= 1.2.0
PKG_RELEASE:= 1
-PKG_HASH:= 29de5bb9b1726ba890455ef7e562d877df87811febb0d99ee69164b88c171bd4
+PKG_HASH:= 03ad231ad1f9d64b52474392d63c31197b0bc7bd416e58b1c10a329a5ed89caf
PKG_DESCR:= cross platform audio library
PKG_SECTION:= libs/audio
PKG_DEPENDS:= alsa-lib
diff --git a/package/libass/Makefile b/package/libass/Makefile
index 38756fa5d..b7cf2d2f5 100644
--- a/package/libass/Makefile
+++ b/package/libass/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libass
-PKG_VERSION:= 0.13.0
+PKG_VERSION:= 0.17.1
PKG_RELEASE:= 1
-PKG_HASH:= e0071a3b2e95411c8d474014678368e3f0b852f7d663e0564b344e7335eb0671
+PKG_HASH:= f0da0bbfba476c16ae3e1cfd862256d30915911f7abaa1b16ce62ee653192784
PKG_DESCR:= portable subtitle renderer
PKG_SECTION:= libs/video
PKG_DEPENDS:= fribidi fontconfig
diff --git a/package/libassuan/Makefile b/package/libassuan/Makefile
index b46b31ad2..373947719 100644
--- a/package/libassuan/Makefile
+++ b/package/libassuan/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libassuan
-PKG_VERSION:= 2.5.5
+PKG_VERSION:= 2.5.6
PKG_RELEASE:= 1
-PKG_HASH:= 8e8c2fcc982f9ca67dcbb1d95e2dc746b1739a4668bc20b3a3c5be632edb34e4
+PKG_HASH:= e9fd27218d5394904e4e39788f9b1742711c3e6b41689a31aa3380bd5aa4f426
PKG_DESCR:= implementation of assuan protocol
PKG_SECTION:= libs/crypto
PKG_DEPENDS:= libgpg-error
diff --git a/package/libbsd/Makefile b/package/libbsd/Makefile
index b1dfbe191..744c627c6 100644
--- a/package/libbsd/Makefile
+++ b/package/libbsd/Makefile
@@ -4,11 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libbsd
-PKG_VERSION:= 0.10.0
+PKG_VERSION:= 0.11.7
PKG_RELEASE:= 1
-PKG_HASH:= 34b8adc726883d0e85b3118fa13605e179a62b31ba51f676136ecb2d0bc1a887
+PKG_HASH:= 9baa186059ebbf25c06308e9f991fda31f7183c0f24931826d83aa6abd8a0261
PKG_DESCR:= bsd helper functions
PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= libmd
+PKG_DEPENDS:= libmd
PKG_URL:= https://libbsd.freedesktop.org/
PKG_SITES:= https://libbsd.freedesktop.org/releases/
PKG_OPTS:= dev
diff --git a/package/libcap-ng/Makefile b/package/libcap-ng/Makefile
new file mode 100644
index 000000000..48ce9dee5
--- /dev/null
+++ b/package/libcap-ng/Makefile
@@ -0,0 +1,28 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libcap-ng
+PKG_VERSION:= 0.8.4
+PKG_RELEASE:= 1
+PKG_HASH:= 5615c76a61039e283a6bd107c4faf345ae5ad4dcd45907defe5e474d8fdb6fd2
+PKG_DESCR:= capability library
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://github.com/stevegrubb/libcap-ng/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBCAP_NG,libcap-ng,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= autogen
+
+libcap-ng-install:
+ $(INSTALL_DIR) $(IDIR_LIBCAP_NG)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libcap-ng*.so* \
+ $(IDIR_LIBCAP_NG)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libcap-ng/patches/patch-INSTALL b/package/libcap-ng/patches/patch-INSTALL
new file mode 100644
index 000000000..b9ca10914
--- /dev/null
+++ b/package/libcap-ng/patches/patch-INSTALL
@@ -0,0 +1,521 @@
+--- libcap-ng-0.8.4.orig/INSTALL 2023-12-20 16:18:45.000000000 +0100
++++ libcap-ng-0.8.4/INSTALL 2024-02-27 12:31:52.534581269 +0100
+@@ -1,8 +1,8 @@
+ Installation Instructions
+ *************************
+
+-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++ Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
++Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+@@ -12,97 +12,96 @@ without warranty of any kind.
+ Basic Installation
+ ==================
+
+- Briefly, the shell commands `./configure; make; make install' should
+-configure, build, and install this package. The following
+-more-detailed instructions are generic; see the `README' file for
++ Briefly, the shell command './configure && make && make install'
++should configure, build, and install this package. The following
++more-detailed instructions are generic; see the 'README' file for
+ instructions specific to this package. Some packages provide this
+-`INSTALL' file but do not implement all of the features documented
++'INSTALL' file but do not implement all of the features documented
+ below. The lack of an optional feature in a given package is not
+ necessarily a bug. More recommendations for GNU packages can be found
+ in *note Makefile Conventions: (standards)Makefile Conventions.
+
+- The `configure' shell script attempts to guess correct values for
++ The 'configure' shell script attempts to guess correct values for
+ various system-dependent variables used during compilation. It uses
+-those values to create a `Makefile' in each directory of the package.
+-It may also create one or more `.h' files containing system-dependent
+-definitions. Finally, it creates a shell script `config.status' that
++those values to create a 'Makefile' in each directory of the package.
++It may also create one or more '.h' files containing system-dependent
++definitions. Finally, it creates a shell script 'config.status' that
+ you can run in the future to recreate the current configuration, and a
+-file `config.log' containing compiler output (useful mainly for
+-debugging `configure').
++file 'config.log' containing compiler output (useful mainly for
++debugging 'configure').
+
+- It can also use an optional file (typically called `config.cache'
+-and enabled with `--cache-file=config.cache' or simply `-C') that saves
+-the results of its tests to speed up reconfiguring. Caching is
+-disabled by default to prevent problems with accidental use of stale
+-cache files.
++ It can also use an optional file (typically called 'config.cache' and
++enabled with '--cache-file=config.cache' or simply '-C') that saves the
++results of its tests to speed up reconfiguring. Caching is disabled by
++default to prevent problems with accidental use of stale cache files.
+
+ If you need to do unusual things to compile the package, please try
+-to figure out how `configure' could check whether to do them, and mail
+-diffs or instructions to the address given in the `README' so they can
++to figure out how 'configure' could check whether to do them, and mail
++diffs or instructions to the address given in the 'README' so they can
+ be considered for the next release. If you are using the cache, and at
+-some point `config.cache' contains results you don't want to keep, you
++some point 'config.cache' contains results you don't want to keep, you
+ may remove or edit it.
+
+- The file `configure.ac' (or `configure.in') is used to create
+-`configure' by a program called `autoconf'. You need `configure.ac' if
+-you want to change it or regenerate `configure' using a newer version
+-of `autoconf'.
++ The file 'configure.ac' (or 'configure.in') is used to create
++'configure' by a program called 'autoconf'. You need 'configure.ac' if
++you want to change it or regenerate 'configure' using a newer version of
++'autoconf'.
+
+ The simplest way to compile this package is:
+
+- 1. `cd' to the directory containing the package's source code and type
+- `./configure' to configure the package for your system.
++ 1. 'cd' to the directory containing the package's source code and type
++ './configure' to configure the package for your system.
+
+- Running `configure' might take a while. While running, it prints
++ Running 'configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+- 2. Type `make' to compile the package.
++ 2. Type 'make' to compile the package.
+
+- 3. Optionally, type `make check' to run any self-tests that come with
++ 3. Optionally, type 'make check' to run any self-tests that come with
+ the package, generally using the just-built uninstalled binaries.
+
+- 4. Type `make install' to install the programs and any data files and
++ 4. Type 'make install' to install the programs and any data files and
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+- user, and only the `make install' phase executed with root
++ user, and only the 'make install' phase executed with root
+ privileges.
+
+- 5. Optionally, type `make installcheck' to repeat any self-tests, but
++ 5. Optionally, type 'make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+- regular user, particularly if the prior `make install' required
++ regular user, particularly if the prior 'make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
+- source code directory by typing `make clean'. To also remove the
+- files that `configure' created (so you can compile the package for
+- a different kind of computer), type `make distclean'. There is
+- also a `make maintainer-clean' target, but that is intended mainly
++ source code directory by typing 'make clean'. To also remove the
++ files that 'configure' created (so you can compile the package for
++ a different kind of computer), type 'make distclean'. There is
++ also a 'make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+- 7. Often, you can also type `make uninstall' to remove the installed
++ 7. Often, you can also type 'make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+- 8. Some packages, particularly those that use Automake, provide `make
++ 8. Some packages, particularly those that use Automake, provide 'make
+ distcheck', which can by used by developers to test that all other
+- targets like `make install' and `make uninstall' work correctly.
++ targets like 'make install' and 'make uninstall' work correctly.
+ This target is generally not run by end users.
+
+ Compilers and Options
+ =====================
+
+ Some systems require unusual options for compilation or linking that
+-the `configure' script does not know about. Run `./configure --help'
++the 'configure' script does not know about. Run './configure --help'
+ for details on some of the pertinent environment variables.
+
+- You can give `configure' initial values for configuration parameters
+-by setting variables in the command line or in the environment. Here
+-is an example:
++ You can give 'configure' initial values for configuration parameters
++by setting variables in the command line or in the environment. Here is
++an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+@@ -113,21 +112,21 @@ Compiling For Multiple Architectures
+
+ You can compile the package for more than one kind of computer at the
+ same time, by placing the object files for each architecture in their
+-own directory. To do this, you can use GNU `make'. `cd' to the
++own directory. To do this, you can use GNU 'make'. 'cd' to the
+ directory where you want the object files and executables to go and run
+-the `configure' script. `configure' automatically checks for the
+-source code in the directory that `configure' is in and in `..'. This
+-is known as a "VPATH" build.
++the 'configure' script. 'configure' automatically checks for the source
++code in the directory that 'configure' is in and in '..'. This is known
++as a "VPATH" build.
+
+- With a non-GNU `make', it is safer to compile the package for one
++ With a non-GNU 'make', it is safer to compile the package for one
+ architecture at a time in the source code directory. After you have
+-installed the package for one architecture, use `make distclean' before
++installed the package for one architecture, use 'make distclean' before
+ reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+ executables that work on multiple system types--known as "fat" or
+-"universal" binaries--by specifying multiple `-arch' options to the
+-compiler but only a single `-arch' option to the preprocessor. Like
++"universal" binaries--by specifying multiple '-arch' options to the
++compiler but only a single '-arch' option to the preprocessor. Like
+ this:
+
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+@@ -136,100 +135,104 @@ this:
+
+ This is not guaranteed to produce working output in all cases, you
+ may have to build one architecture at a time and combine the results
+-using the `lipo' tool if you have problems.
++using the 'lipo' tool if you have problems.
+
+ Installation Names
+ ==================
+
+- By default, `make install' installs the package's commands under
+-`/usr/local/bin', include files under `/usr/local/include', etc. You
+-can specify an installation prefix other than `/usr/local' by giving
+-`configure' the option `--prefix=PREFIX', where PREFIX must be an
++ By default, 'make install' installs the package's commands under
++'/usr/local/bin', include files under '/usr/local/include', etc. You
++can specify an installation prefix other than '/usr/local' by giving
++'configure' the option '--prefix=PREFIX', where PREFIX must be an
+ absolute file name.
+
+ You can specify separate installation prefixes for
+ architecture-specific files and architecture-independent files. If you
+-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
++pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+ PREFIX as the prefix for installing programs and libraries.
+ Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+-options like `--bindir=DIR' to specify different values for particular
+-kinds of files. Run `configure --help' for a list of the directories
+-you can set and what kinds of files go in them. In general, the
+-default for these options is expressed in terms of `${prefix}', so that
+-specifying just `--prefix' will affect all of the other directory
++options like '--bindir=DIR' to specify different values for particular
++kinds of files. Run 'configure --help' for a list of the directories
++you can set and what kinds of files go in them. In general, the default
++for these options is expressed in terms of '${prefix}', so that
++specifying just '--prefix' will affect all of the other directory
+ specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+-correct locations to `configure'; however, many packages provide one or
++correct locations to 'configure'; however, many packages provide one or
+ both of the following shortcuts of passing variable assignments to the
+-`make install' command line to change installation locations without
++'make install' command line to change installation locations without
+ having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+-affected directory. For example, `make install
++affected directory. For example, 'make install
+ prefix=/alternate/directory' will choose an alternate location for all
+ directory configuration variables that were expressed in terms of
+-`${prefix}'. Any directories that were specified during `configure',
+-but not in terms of `${prefix}', must each be overridden at install
+-time for the entire installation to be relocated. The approach of
+-makefile variable overrides for each directory variable is required by
+-the GNU Coding Standards, and ideally causes no recompilation.
+-However, some platforms have known limitations with the semantics of
+-shared libraries that end up requiring recompilation when using this
+-method, particularly noticeable in packages that use GNU Libtool.
++'${prefix}'. Any directories that were specified during 'configure',
++but not in terms of '${prefix}', must each be overridden at install time
++for the entire installation to be relocated. The approach of makefile
++variable overrides for each directory variable is required by the GNU
++Coding Standards, and ideally causes no recompilation. However, some
++platforms have known limitations with the semantics of shared libraries
++that end up requiring recompilation when using this method, particularly
++noticeable in packages that use GNU Libtool.
+
+- The second method involves providing the `DESTDIR' variable. For
+-example, `make install DESTDIR=/alternate/directory' will prepend
+-`/alternate/directory' before all installation names. The approach of
+-`DESTDIR' overrides is not required by the GNU Coding Standards, and
++ The second method involves providing the 'DESTDIR' variable. For
++example, 'make install DESTDIR=/alternate/directory' will prepend
++'/alternate/directory' before all installation names. The approach of
++'DESTDIR' overrides is not required by the GNU Coding Standards, and
+ does not work on platforms that have drive letters. On the other hand,
+ it does better at avoiding recompilation issues, and works well even
+-when some directory options were not specified in terms of `${prefix}'
+-at `configure' time.
++when some directory options were not specified in terms of '${prefix}'
++at 'configure' time.
+
+ Optional Features
+ =================
+
+ If the package supports it, you can cause programs to be installed
+-with an extra prefix or suffix on their names by giving `configure' the
+-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
++with an extra prefix or suffix on their names by giving 'configure' the
++option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+
+- Some packages pay attention to `--enable-FEATURE' options to
+-`configure', where FEATURE indicates an optional part of the package.
+-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+-is something like `gnu-as' or `x' (for the X Window System). The
+-`README' should mention any `--enable-' and `--with-' options that the
++ Some packages pay attention to '--enable-FEATURE' options to
++'configure', where FEATURE indicates an optional part of the package.
++They may also pay attention to '--with-PACKAGE' options, where PACKAGE
++is something like 'gnu-as' or 'x' (for the X Window System). The
++'README' should mention any '--enable-' and '--with-' options that the
+ package recognizes.
+
+- For packages that use the X Window System, `configure' can usually
++ For packages that use the X Window System, 'configure' can usually
+ find the X include and library files automatically, but if it doesn't,
+-you can use the `configure' options `--x-includes=DIR' and
+-`--x-libraries=DIR' to specify their locations.
++you can use the 'configure' options '--x-includes=DIR' and
++'--x-libraries=DIR' to specify their locations.
+
+ Some packages offer the ability to configure how verbose the
+-execution of `make' will be. For these packages, running `./configure
++execution of 'make' will be. For these packages, running './configure
+ --enable-silent-rules' sets the default to minimal output, which can be
+-overridden with `make V=1'; while running `./configure
++overridden with 'make V=1'; while running './configure
+ --disable-silent-rules' sets the default to verbose, which can be
+-overridden with `make V=0'.
++overridden with 'make V=0'.
+
+ Particular systems
+ ==================
+
+- On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+-CC is not installed, it is recommended to use the following options in
++ On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
++is not installed, it is recommended to use the following options in
+ order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+ and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
++ HP-UX 'make' updates targets which have the same time stamps as their
++prerequisites, which makes it generally unusable when shipped generated
++files such as 'configure' are involved. Use GNU 'make' instead.
++
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+-parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+-a workaround. If GNU CC is not installed, it is therefore recommended
+-to try
++parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
++workaround. If GNU CC is not installed, it is therefore recommended to
++try
+
+ ./configure CC="cc"
+
+@@ -237,26 +240,26 @@ and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+- On Solaris, don't put `/usr/ucb' early in your `PATH'. This
++ On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
+ directory contains several dysfunctional programs; working variants of
+-these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+-in your `PATH', put it _after_ `/usr/bin'.
++these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
++in your 'PATH', put it _after_ '/usr/bin'.
+
+- On Haiku, software installed for all users goes in `/boot/common',
+-not `/usr/local'. It is recommended to use the following options:
++ On Haiku, software installed for all users goes in '/boot/common',
++not '/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
+ Specifying the System Type
+ ==========================
+
+- There may be some features `configure' cannot figure out
++ There may be some features 'configure' cannot figure out
+ automatically, but needs to determine by the type of machine the package
+ will run on. Usually, assuming the package is built to be run on the
+-_same_ architectures, `configure' can figure that out, but if it prints
++_same_ architectures, 'configure' can figure that out, but if it prints
+ a message saying it cannot guess the machine type, give it the
+-`--build=TYPE' option. TYPE can either be a short name for the system
+-type, such as `sun4', or a canonical name which has the form:
++'--build=TYPE' option. TYPE can either be a short name for the system
++type, such as 'sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+@@ -265,101 +268,101 @@ where SYSTEM can have one of these forms
+ OS
+ KERNEL-OS
+
+- See the file `config.sub' for the possible values of each field. If
+-`config.sub' isn't included in this package, then this package doesn't
++ See the file 'config.sub' for the possible values of each field. If
++'config.sub' isn't included in this package, then this package doesn't
+ need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+-use the option `--target=TYPE' to select the type of system they will
++use the option '--target=TYPE' to select the type of system they will
+ produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+ platform different from the build platform, you should specify the
+ "host" platform (i.e., that on which the generated programs will
+-eventually be run) with `--host=TYPE'.
++eventually be run) with '--host=TYPE'.
+
+ Sharing Defaults
+ ================
+
+- If you want to set default values for `configure' scripts to share,
+-you can create a site shell script called `config.site' that gives
+-default values for variables like `CC', `cache_file', and `prefix'.
+-`configure' looks for `PREFIX/share/config.site' if it exists, then
+-`PREFIX/etc/config.site' if it exists. Or, you can set the
+-`CONFIG_SITE' environment variable to the location of the site script.
+-A warning: not all `configure' scripts look for a site script.
++ If you want to set default values for 'configure' scripts to share,
++you can create a site shell script called 'config.site' that gives
++default values for variables like 'CC', 'cache_file', and 'prefix'.
++'configure' looks for 'PREFIX/share/config.site' if it exists, then
++'PREFIX/etc/config.site' if it exists. Or, you can set the
++'CONFIG_SITE' environment variable to the location of the site script.
++A warning: not all 'configure' scripts look for a site script.
+
+ Defining Variables
+ ==================
+
+ Variables not defined in a site shell script can be set in the
+-environment passed to `configure'. However, some packages may run
++environment passed to 'configure'. However, some packages may run
+ configure again during the build, and the customized values of these
+ variables may be lost. In order to avoid this problem, you should set
+-them in the `configure' command line, using `VAR=value'. For example:
++them in the 'configure' command line, using 'VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+-causes the specified `gcc' to be used as the C compiler (unless it is
++causes the specified 'gcc' to be used as the C compiler (unless it is
+ overridden in the site shell script).
+
+-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+-an Autoconf bug. Until the bug is fixed you can use this workaround:
++Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
++Autoconf limitation. Until the limitation is lifted, you can use this
++workaround:
+
+- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
++ CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+-`configure' Invocation
++'configure' Invocation
+ ======================
+
+- `configure' recognizes the following options to control how it
++ 'configure' recognizes the following options to control how it
+ operates.
+
+-`--help'
+-`-h'
+- Print a summary of all of the options to `configure', and exit.
++'--help'
++'-h'
++ Print a summary of all of the options to 'configure', and exit.
+
+-`--help=short'
+-`--help=recursive'
++'--help=short'
++'--help=recursive'
+ Print a summary of the options unique to this package's
+- `configure', and exit. The `short' variant lists options used
+- only in the top level, while the `recursive' variant lists options
+- also present in any nested packages.
++ 'configure', and exit. The 'short' variant lists options used only
++ in the top level, while the 'recursive' variant lists options also
++ present in any nested packages.
+
+-`--version'
+-`-V'
+- Print the version of Autoconf used to generate the `configure'
++'--version'
++'-V'
++ Print the version of Autoconf used to generate the 'configure'
+ script, and exit.
+
+-`--cache-file=FILE'
++'--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+- traditionally `config.cache'. FILE defaults to `/dev/null' to
++ traditionally 'config.cache'. FILE defaults to '/dev/null' to
+ disable caching.
+
+-`--config-cache'
+-`-C'
+- Alias for `--cache-file=config.cache'.
++'--config-cache'
++'-C'
++ Alias for '--cache-file=config.cache'.
+
+-`--quiet'
+-`--silent'
+-`-q'
++'--quiet'
++'--silent'
++'-q'
+ Do not print messages saying which checks are being made. To
+- suppress all normal output, redirect it to `/dev/null' (any error
++ suppress all normal output, redirect it to '/dev/null' (any error
+ messages will still be shown).
+
+-`--srcdir=DIR'
++'--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+- `configure' can determine that directory automatically.
++ 'configure' can determine that directory automatically.
+
+-`--prefix=DIR'
+- Use DIR as the installation prefix. *note Installation Names::
+- for more details, including other options available for fine-tuning
+- the installation locations.
++'--prefix=DIR'
++ Use DIR as the installation prefix. *note Installation Names:: for
++ more details, including other options available for fine-tuning the
++ installation locations.
+
+-`--no-create'
+-`-n'
++'--no-create'
++'-n'
+ Run the configure checks, but stop before creating any output
+ files.
+
+-`configure' also accepts some other, not widely useful, options. Run
+-`configure --help' for more details.
+-
++'configure' also accepts some other, not widely useful, options. Run
++'configure --help' for more details.
diff --git a/package/libcap-ng/patches/patch-autogen_sh b/package/libcap-ng/patches/patch-autogen_sh
new file mode 100644
index 000000000..8efae3587
--- /dev/null
+++ b/package/libcap-ng/patches/patch-autogen_sh
@@ -0,0 +1,9 @@
+--- libcap-ng-0.8.4.orig/autogen.sh 2023-12-20 16:18:45.000000000 +0100
++++ libcap-ng-0.8.4/autogen.sh 2024-02-27 12:33:16.298580133 +0100
+@@ -1,5 +1,5 @@
+ #! /bin/sh
+ set -x -e
+ # --no-recursive is available only in recent autoconf versions
+-touch NEWS
++touch NEWS README
+ autoreconf -fv --install
diff --git a/package/libcdada/Makefile b/package/libcdada/Makefile
new file mode 100644
index 000000000..4b18d20d5
--- /dev/null
+++ b/package/libcdada/Makefile
@@ -0,0 +1,31 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libcdada
+PKG_VERSION:= 0.5.2
+PKG_RELEASE:= 1
+PKG_HASH:= 507f0b7bf8cb7533c22731c64d92737e7536866be7c7dd317b89709cd6529867
+PKG_DESCR:= basic data structures in C
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://github.com/msune/libcdada/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBCDADA,libcdada,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= autogen
+CONFIGURE_ARGS+= --disable-silent-rules \
+ --without-tests \
+ --without-examples
+
+libcdada-install:
+ $(INSTALL_DIR) $(IDIR_LIBCDADA)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libcdada*.so* \
+ $(IDIR_LIBCDADA)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libcdada/patches/patch-configure_ac b/package/libcdada/patches/patch-configure_ac
new file mode 100644
index 000000000..b9d2dd11d
--- /dev/null
+++ b/package/libcdada/patches/patch-configure_ac
@@ -0,0 +1,22 @@
+--- libcdada-0.5.2.orig/configure.ac 2023-11-07 23:04:41.000000000 +0100
++++ libcdada-0.5.2/configure.ac 2024-02-20 07:03:02.007933771 +0100
+@@ -4,7 +4,7 @@ AC_INIT(LIBCDADA, m4_esyscmd_s(cat VERSI
+ AC_CONFIG_AUX_DIR([build-aux])
+ AC_CONFIG_MACRO_DIR([m4])
+
+-AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])
++AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
+
+ AC_GNU_SOURCE
+
+@@ -24,8 +24,8 @@ LT_INIT
+ AC_ENABLE_STATIC
+
+ # Some useful default flags
+-CFLAGS="-std=gnu89 -Werror -Wall $CFLAGS"
+-CXXFLAGS="-Werror -Wall $CXXFLAGS"
++CFLAGS="-std=gnu89 -Wall $CFLAGS"
++CXXFLAGS="-Wall $CXXFLAGS"
+ AC_DEFINE([__STDC_FORMAT_MACROS], [], [Description])
+
+ # Check for Python3
diff --git a/package/libcdio/Makefile b/package/libcdio/Makefile
index fca3550aa..955f44359 100644
--- a/package/libcdio/Makefile
+++ b/package/libcdio/Makefile
@@ -9,6 +9,8 @@ PKG_RELEASE:= 1
PKG_HASH:= 8550e9589dbd594bfac93b81ecf129b1dc9d0d51e90f9696f1b2f9b2af32712b
PKG_DESCR:= library for cd-rom and cd image access
PKG_SECTION:= libs/misc
+PKG_DEPENDS:= ncurses
+PKG_BUILDDEP:= ncurses
PKG_URL:= http://www.gnu.org/software/libcdio
PKG_SITES:= http://ftp.gnu.org/gnu/libcdio/
PKG_OPTS:= dev
diff --git a/package/libcec/Makefile b/package/libcec/Makefile
index 422bf679b..302f03e4e 100644
--- a/package/libcec/Makefile
+++ b/package/libcec/Makefile
@@ -4,24 +4,29 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libcec
-PKG_VERSION:= d156e7cb684f86a9d73f8dcf087d4799c62d9721
+PKG_VERSION:= 6.0.2
PKG_RELEASE:= 1
-PKG_GIT:= hash
+PKG_HASH:= 090696d7a4fb772d7acebbb06f91ab92e025531c7c91824046b9e4e71ecb3377
PKG_DESCR:= control your device with your tv remote control
PKG_SECTION:= libs/video
-PKG_DEPENDS:= libudev libplatform
-PKG_BUILDDEP:= eudev cmake-host platform
+PKG_DEPENDS:= libudev p8-platform
+PKG_BUILDDEP:= eudev cmake-host p8-platform
PKG_URL:= http://libcec.pulse-eight.com/
-PKG_SITES:= https://github.com/Pulse-Eight/libcec.git
+PKG_SITES:= https://github.com/Pulse-Eight/libcec/archive/refs/tags/
PKG_OPTS:= dev
+PKG_DEPENDS_RASPBERRY_PI4:= bcm28xx-vc
+PKG_BUILDDEP_RASPBERRY_PI4:= bcm28xx-vc
PKG_DEPENDS_RASPBERRY_PI3:= bcm28xx-vc
PKG_BUILDDEP_RASPBERRY_PI3:= bcm28xx-vc
PKG_DEPENDS_RASPBERRY_PI2:= bcm28xx-vc
PKG_BUILDDEP_RASPBERRY_PI2:= bcm28xx-vc
PKG_DEPENDS_RASPBERRY_PI:= bcm28xx-vc
PKG_BUILDDEP_RASPBERRY_PI:= bcm28xx-vc
-PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi3p solidrun-imx6
+PKG_SYSTEM_DEPENDS:= raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 solidrun-imx6
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+WRKDIST= $(WRKDIR)/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/libcec/patches/libcec-00-imx6-support.patch b/package/libcec/patches/libcec-00-imx6-support.patch
deleted file mode 100644
index 2c24635c4..000000000
--- a/package/libcec/patches/libcec-00-imx6-support.patch
+++ /dev/null
@@ -1,879 +0,0 @@
-From a7f3315333c1a79259a763c6542a6cd71855b357 Mon Sep 17 00:00:00 2001
-From: Stefan Saraev <stefan@saraev.ca>
-Date: Thu, 7 May 2015 11:35:04 +0300
-Subject: [PATCH] imx support
-
-note. I am NOT the author of the patch. just rebased it
----
- include/cectypes.h | 14 +-
- src/libcec/CECTypeUtils.h | 2 +
- src/libcec/adapter/AdapterFactory.cpp | 29 +-
- src/libcec/adapter/IMX/AdapterMessageQueue.h | 134 +++++++++
- .../adapter/IMX/IMXCECAdapterCommunication.cpp | 328 +++++++++++++++++++++
- .../adapter/IMX/IMXCECAdapterCommunication.h | 119 ++++++++
- src/libcec/adapter/IMX/IMXCECAdapterDetection.cpp | 42 +++
- src/libcec/adapter/IMX/IMXCECAdapterDetection.h | 36 +++
- src/libcec/cmake/CheckPlatformSupport.cmake | 10 +
- src/libcec/cmake/DisplayPlatformSupport.cmake | 6 +
- src/libcec/env.h.in | 3 +
- 11 files changed, 720 insertions(+), 3 deletions(-)
- create mode 100644 src/libcec/adapter/IMX/AdapterMessageQueue.h
- create mode 100644 src/libcec/adapter/IMX/IMXCECAdapterCommunication.cpp
- create mode 100644 src/libcec/adapter/IMX/IMXCECAdapterCommunication.h
- create mode 100644 src/libcec/adapter/IMX/IMXCECAdapterDetection.cpp
- create mode 100644 src/libcec/adapter/IMX/IMXCECAdapterDetection.h
-
-diff --git a/include/cectypes.h b/include/cectypes.h
-index acff259..0cfee8c 100644
---- a/include/cectypes.h
-+++ b/include/cectypes.h
-@@ -309,6 +309,17 @@ namespace CEC {
- #define CEC_EXYNOS_VIRTUAL_COM "Exynos"
-
- /*!
-+ * the path to use for the i.MX CEC wire
-+ */
-+#define CEC_IMX_PATH "/dev/mxc_hdmi_cec"
-+
-+/*!
-+ * the name of the virtual COM port to use for the i.MX CEC wire
-+ */
-+#define CEC_IMX_VIRTUAL_COM "i.MX"
-+
-+
-+/*!
- * Mimimum client version
- */
- #define CEC_MIN_LIB_VERSION 3
-@@ -876,7 +887,8 @@ typedef enum cec_adapter_type
- ADAPTERTYPE_P8_DAUGHTERBOARD = 0x2,
- ADAPTERTYPE_RPI = 0x100,
- ADAPTERTYPE_TDA995x = 0x200,
-- ADAPTERTYPE_EXYNOS = 0x300
-+ ADAPTERTYPE_EXYNOS = 0x300,
-+ ADAPTERTYPE_IMX = 0x400
- } cec_adapter_type;
-
- /** force exporting through swig */
-diff --git a/src/libcec/CECTypeUtils.h b/src/libcec/CECTypeUtils.h
-index fd8046a..48cb215 100644
---- a/src/libcec/CECTypeUtils.h
-+++ b/src/libcec/CECTypeUtils.h
-@@ -765,6 +765,8 @@ namespace CEC
- return "Raspberry Pi";
- case ADAPTERTYPE_TDA995x:
- return "TDA995x";
-+ case ADAPTERTYPE_IMX:
-+ return "i.MX";
- default:
- return "unknown";
- }
-diff --git a/src/libcec/adapter/AdapterFactory.cpp b/src/libcec/adapter/AdapterFactory.cpp
-index da05725..92e378b 100644
---- a/src/libcec/adapter/AdapterFactory.cpp
-+++ b/src/libcec/adapter/AdapterFactory.cpp
-@@ -58,6 +58,11 @@
- #include "Exynos/ExynosCECAdapterCommunication.h"
- #endif
-
-+#if defined(HAVE_IMX_API)
-+#include "IMX/IMXCECAdapterDetection.h"
-+#include "IMX/IMXCECAdapterCommunication.h"
-+#endif
-+
- using namespace CEC;
-
- int8_t CAdapterFactory::FindAdapters(cec_adapter *deviceList, uint8_t iBufSize, const char *strDevicePath /* = NULL */)
-@@ -127,7 +132,22 @@ int8_t CAdapterFactory::DetectAdapters(cec_adapter_descriptor *deviceList, uint8
- #endif
-
-
--#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API)
-+
-+#if defined(HAVE_IMX_API)
-+ if (iAdaptersFound < iBufSize && CIMXCECAdapterDetection::FindAdapter() &&
-+ (!strDevicePath || !strcmp(strDevicePath, CEC_IMX_VIRTUAL_COM)))
-+ {
-+ snprintf(deviceList[iAdaptersFound].strComPath, sizeof(deviceList[iAdaptersFound].strComPath), CEC_IMX_PATH);
-+ snprintf(deviceList[iAdaptersFound].strComName, sizeof(deviceList[iAdaptersFound].strComName), CEC_IMX_VIRTUAL_COM);
-+ deviceList[iAdaptersFound].iVendorId = IMX_ADAPTER_VID;
-+ deviceList[iAdaptersFound].iProductId = IMX_ADAPTER_PID;
-+ deviceList[iAdaptersFound].adapterType = ADAPTERTYPE_IMX;
-+ iAdaptersFound++;
-+ }
-+#endif
-+
-+
-+#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_IMX_API)
- #error "libCEC doesn't have support for any type of adapter. please check your build system or configuration"
- #endif
-
-@@ -151,11 +171,16 @@ IAdapterCommunication *CAdapterFactory::GetInstance(const char *strPort, uint16_
- return new CRPiCECAdapterCommunication(m_lib->m_cec);
- #endif
-
-+#if defined(HAVE_IMX_API)
-+ if (!strcmp(strPort, CEC_IMX_VIRTUAL_COM))
-+ return new CIMXCECAdapterCommunication(m_lib->m_cec);
-+#endif
-+
- #if defined(HAVE_P8_USB)
- return new CUSBCECAdapterCommunication(m_lib->m_cec, strPort, iBaudRate);
- #endif
-
--#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API)
-+#if !defined(HAVE_RPI_API) && !defined(HAVE_P8_USB) && !defined(HAVE_TDA995X_API) && !defined(HAVE_EXYNOS_API) && !defined(HAVE_IMX_API)
- return NULL;
- #endif
- }
-diff --git a/src/libcec/adapter/IMX/AdapterMessageQueue.h b/src/libcec/adapter/IMX/AdapterMessageQueue.h
-new file mode 100644
-index 0000000..af6742c
---- /dev/null
-+++ b/src/libcec/adapter/IMX/AdapterMessageQueue.h
-@@ -0,0 +1,134 @@
-+#pragma once
-+/*
-+ * This file is part of the libCEC(R) library.
-+ *
-+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
-+ * libCEC(R) is an original work, containing original code.
-+ *
-+ * libCEC(R) is a trademark of Pulse-Eight Limited.
-+ *
-+ * This program is dual-licensed; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ *
-+ * Alternatively, you can license this library under a commercial license,
-+ * please contact Pulse-Eight Licensing for more information.
-+ *
-+ * For more information contact:
-+ * Pulse-Eight Licensing <license@pulse-eight.com>
-+ * http://www.pulse-eight.com/
-+ * http://www.pulse-eight.net/
-+ */
-+
-+#include "platform/threads/mutex.h"
-+
-+namespace CEC
-+{
-+ using namespace PLATFORM;
-+
-+ class CAdapterMessageQueueEntry
-+ {
-+ public:
-+ CAdapterMessageQueueEntry(const cec_command &command)
-+ : m_bWaiting(true), m_retval((uint32_t)-1), m_bSucceeded(false)
-+ {
-+ m_hash = hashValue(
-+ uint32_t(command.opcode_set ? command.opcode : CEC_OPCODE_NONE),
-+ command.initiator, command.destination);
-+ }
-+
-+ virtual ~CAdapterMessageQueueEntry(void) {}
-+
-+ /*!
-+ * @brief Query result from worker thread
-+ */
-+ uint32_t Result() const
-+ {
-+ return m_retval;
-+ }
-+
-+ /*!
-+ * @brief Signal waiting threads
-+ */
-+ void Broadcast(void)
-+ {
-+ CLockObject lock(m_mutex);
-+ m_condition.Broadcast();
-+ }
-+
-+ /*!
-+ * @brief Signal waiting thread(s) when message matches this entry
-+ */
-+ bool CheckMatch(uint32_t opcode, cec_logical_address initiator,
-+ cec_logical_address destination, uint32_t response)
-+ {
-+ uint32_t hash = hashValue(opcode, initiator, destination);
-+
-+ if (hash == m_hash)
-+ {
-+ CLockObject lock(m_mutex);
-+
-+ m_retval = response;
-+ m_bSucceeded = true;
-+ m_condition.Signal();
-+ return true;
-+ }
-+
-+ return false;
-+ }
-+
-+ /*!
-+ * @brief Wait for a response to this command.
-+ * @param iTimeout The timeout to use while waiting.
-+ * @return True when a response was received before the timeout passed, false otherwise.
-+ */
-+ bool Wait(uint32_t iTimeout)
-+ {
-+ CLockObject lock(m_mutex);
-+
-+ bool bReturn = m_bSucceeded ? true : m_condition.Wait(m_mutex, m_bSucceeded, iTimeout);
-+ m_bWaiting = false;
-+ return bReturn;
-+ }
-+
-+ /*!
-+ * @return True while a thread is waiting for a signal or isn't waiting yet, false otherwise.
-+ */
-+ bool IsWaiting(void)
-+ {
-+ CLockObject lock(m_mutex);
-+ return m_bWaiting;
-+ }
-+
-+ /*!
-+ * @return Hash value for given cec_command
-+ */
-+ static uint32_t hashValue(uint32_t opcode,
-+ cec_logical_address initiator,
-+ cec_logical_address destination)
-+ {
-+ return 1 | ((uint32_t)initiator << 8) |
-+ ((uint32_t)destination << 16) | ((uint32_t)opcode << 16);
-+ }
-+
-+ private:
-+ bool m_bWaiting; /**< true while a thread is waiting or when it hasn't started waiting yet */
-+ PLATFORM::CCondition<bool> m_condition; /**< the condition to wait on */
-+ PLATFORM::CMutex m_mutex; /**< mutex for changes to this class */
-+ uint32_t m_hash;
-+ uint32_t m_retval;
-+ bool m_bSucceeded;
-+ };
-+
-+};
-diff --git a/src/libcec/adapter/IMX/IMXCECAdapterCommunication.cpp b/src/libcec/adapter/IMX/IMXCECAdapterCommunication.cpp
-new file mode 100644
-index 0000000..2daa8cb
---- /dev/null
-+++ b/src/libcec/adapter/IMX/IMXCECAdapterCommunication.cpp
-@@ -0,0 +1,328 @@
-+/*
-+ * This file is part of the libCEC(R) library.
-+ *
-+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
-+ * libCEC(R) is an original work, containing original code.
-+ *
-+ * libCEC(R) is a trademark of Pulse-Eight Limited.
-+ *
-+ * IMX adpater port is Copyright (C) 2013 by Stephan Rafin
-+ *
-+ * You can redistribute this file and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ *
-+ */
-+
-+#include "env.h"
-+
-+#if defined(HAVE_IMX_API)
-+#include "IMXCECAdapterCommunication.h"
-+
-+#include "CECTypeUtils.h"
-+#include "LibCEC.h"
-+#include "platform/sockets/cdevsocket.h"
-+#include "platform/util/StdString.h"
-+#include "platform/util/buffer.h"
-+
-+/*
-+ * Ioctl definitions from kernel header
-+ */
-+#define HDMICEC_IOC_MAGIC 'H'
-+#define HDMICEC_IOC_SETLOGICALADDRESS _IOW(HDMICEC_IOC_MAGIC, 1, unsigned char)
-+#define HDMICEC_IOC_STARTDEVICE _IO(HDMICEC_IOC_MAGIC, 2)
-+#define HDMICEC_IOC_STOPDEVICE _IO(HDMICEC_IOC_MAGIC, 3)
-+#define HDMICEC_IOC_GETPHYADDRESS _IOR(HDMICEC_IOC_MAGIC, 4, unsigned char[4])
-+
-+#define MAX_CEC_MESSAGE_LEN 17
-+
-+#define MESSAGE_TYPE_RECEIVE_SUCCESS 1
-+#define MESSAGE_TYPE_NOACK 2
-+#define MESSAGE_TYPE_DISCONNECTED 3
-+#define MESSAGE_TYPE_CONNECTED 4
-+#define MESSAGE_TYPE_SEND_SUCCESS 5
-+
-+typedef struct hdmi_cec_event{
-+ int event_type;
-+ int msg_len;
-+ unsigned char msg[MAX_CEC_MESSAGE_LEN];
-+}hdmi_cec_event;
-+
-+
-+using namespace std;
-+using namespace CEC;
-+using namespace PLATFORM;
-+
-+#include "AdapterMessageQueue.h"
-+
-+#define LIB_CEC m_callback->GetLib()
-+
-+// these are defined in nxp private header file
-+#define CEC_MSG_SUCCESS 0x00 /*Message transmisson Succeed*/
-+#define CEC_CSP_OFF_STATE 0x80 /*CSP in Off State*/
-+#define CEC_BAD_REQ_SERVICE 0x81 /*Bad .req service*/
-+#define CEC_MSG_FAIL_UNABLE_TO_ACCESS 0x82 /*Message transmisson failed: Unable to access CEC line*/
-+#define CEC_MSG_FAIL_ARBITRATION_ERROR 0x83 /*Message transmisson failed: Arbitration error*/
-+#define CEC_MSG_FAIL_BIT_TIMMING_ERROR 0x84 /*Message transmisson failed: Bit timming error*/
-+#define CEC_MSG_FAIL_DEST_NOT_ACK 0x85 /*Message transmisson failed: Destination Address not aknowledged*/
-+#define CEC_MSG_FAIL_DATA_NOT_ACK 0x86 /*Message transmisson failed: Databyte not acknowledged*/
-+
-+
-+CIMXCECAdapterCommunication::CIMXCECAdapterCommunication(IAdapterCommunicationCallback *callback) :
-+ IAdapterCommunication(callback)/*,
-+ m_bLogicalAddressChanged(false)*/
-+{
-+ CLockObject lock(m_mutex);
-+
-+ m_iNextMessage = 0;
-+ //m_logicalAddresses.Clear();
-+ m_logicalAddress = CECDEVICE_UNKNOWN;
-+ m_bLogicalAddressRegistered = false;
-+ m_bInitialised = false;
-+ m_dev = new CCDevSocket(CEC_IMX_PATH);
-+}
-+
-+CIMXCECAdapterCommunication::~CIMXCECAdapterCommunication(void)
-+{
-+ Close();
-+
-+ CLockObject lock(m_mutex);
-+ delete m_dev;
-+ m_dev = 0;
-+}
-+
-+bool CIMXCECAdapterCommunication::IsOpen(void)
-+{
-+ return IsInitialised() && m_dev->IsOpen();
-+}
-+
-+bool CIMXCECAdapterCommunication::Open(uint32_t iTimeoutMs, bool UNUSED(bSkipChecks), bool bStartListening)
-+{
-+ if (m_dev->Open(iTimeoutMs))
-+ {
-+ if (!bStartListening || CreateThread()) {
-+ if (m_dev->Ioctl(HDMICEC_IOC_STARTDEVICE, NULL) == 0) {
-+ m_bInitialised = true;
-+ return true;
-+ }
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: Unable to start device\n", __func__);
-+ }
-+ m_dev->Close();
-+ }
-+
-+ return false;
-+}
-+
-+
-+void CIMXCECAdapterCommunication::Close(void)
-+{
-+ StopThread(0);
-+
-+ CLockObject lock(m_mutex);
-+ if (!m_bInitialised) {
-+ return;
-+ }
-+ if (m_dev->Ioctl(HDMICEC_IOC_STOPDEVICE, NULL) != 0) {
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: Unable to stop device\n", __func__);
-+ }
-+ m_dev->Close();
-+ m_bInitialised = false;
-+}
-+
-+
-+std::string CIMXCECAdapterCommunication::GetError(void) const
-+{
-+ std::string strError(m_strError);
-+ return strError;
-+}
-+
-+
-+cec_adapter_message_state CIMXCECAdapterCommunication::Write(
-+ const cec_command &data, bool &UNUSED(bRetry), uint8_t UNUSED(iLineTimeout), bool UNUSED(bIsReply))
-+{
-+ //cec_frame frame;
-+ unsigned char message[MAX_CEC_MESSAGE_LEN];
-+ int msg_len = 1;
-+ cec_adapter_message_state rc = ADAPTER_MESSAGE_STATE_ERROR;
-+
-+ if ((size_t)data.parameters.size + data.opcode_set + 1 > sizeof(message))
-+ {
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: data size too large !", __func__);
-+ return ADAPTER_MESSAGE_STATE_ERROR;
-+ }
-+
-+ message[0] = (data.initiator << 4) | (data.destination & 0x0f);
-+ if (data.opcode_set)
-+ {
-+ message[1] = data.opcode;
-+ msg_len++;
-+ memcpy(&message[2], data.parameters.data, data.parameters.size);
-+ msg_len+=data.parameters.size;
-+ }
-+
-+ if (m_dev->Write(message, msg_len) == msg_len)
-+ {
-+ rc = ADAPTER_MESSAGE_STATE_SENT_ACKED;
-+ }
-+ else
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: sent command error !", __func__);
-+
-+ return rc;
-+}
-+
-+
-+uint16_t CIMXCECAdapterCommunication::GetFirmwareVersion(void)
-+{
-+ /* FIXME add ioctl ? */
-+ return 0;
-+}
-+
-+
-+cec_vendor_id CIMXCECAdapterCommunication::GetVendorId(void)
-+{
-+ return CEC_VENDOR_UNKNOWN;
-+}
-+
-+
-+uint16_t CIMXCECAdapterCommunication::GetPhysicalAddress(void)
-+{
-+ uint32_t info;
-+ uint16_t phy_addr;
-+
-+ if (m_dev->Ioctl(HDMICEC_IOC_GETPHYADDRESS, &info) != 0)
-+ {
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: HDMICEC_IOC_GETPHYADDRESS failed !", __func__);
-+ return CEC_INVALID_PHYSICAL_ADDRESS;
-+ }
-+ /* Rebuild 16 bit raw value from fsl 32 bits value */
-+ phy_addr = ((info & 0x0f) << 12) | (info & 0x0f00) |
-+ ((info & 0x0f0000) >> 12) | ((info & 0x0f000000) >> 24);
-+
-+ return phy_addr;
-+}
-+
-+
-+cec_logical_addresses CIMXCECAdapterCommunication::GetLogicalAddresses(void)
-+{
-+ cec_logical_addresses addresses;
-+ addresses.Clear();
-+
-+ CLockObject lock(m_mutex);
-+ if ((m_logicalAddress & (CECDEVICE_UNKNOWN | CECDEVICE_UNREGISTERED)) == 0)
-+ addresses.Set(m_logicalAddress);
-+
-+ return addresses;
-+}
-+
-+void CIMXCECAdapterCommunication::HandleLogicalAddressLost(cec_logical_address UNUSED(oldAddress))
-+{
-+ UnregisterLogicalAddress();
-+}
-+
-+bool CIMXCECAdapterCommunication::UnregisterLogicalAddress(void)
-+{
-+ CLockObject lock(m_mutex);
-+ if (!m_bLogicalAddressRegistered)
-+ return true;
-+
-+ if (m_dev->Ioctl(HDMICEC_IOC_SETLOGICALADDRESS, (void *)CECDEVICE_BROADCAST) != 0)
-+ {
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: HDMICEC_IOC_SETLOGICALADDRESS failed !", __func__);
-+ return false;
-+ }
-+
-+ m_logicalAddress = CECDEVICE_UNKNOWN;
-+ m_bLogicalAddressRegistered = false;
-+ return true;
-+}
-+
-+bool CIMXCECAdapterCommunication::RegisterLogicalAddress(const cec_logical_address address)
-+{
-+ CLockObject lock(m_mutex);
-+
-+ if (m_logicalAddress == address && m_bLogicalAddressRegistered)
-+ {
-+ return true;
-+ }
-+
-+ if (m_dev->Ioctl(HDMICEC_IOC_SETLOGICALADDRESS, (void *)address) != 0)
-+ {
-+ LIB_CEC->AddLog(CEC_LOG_ERROR, "%s: HDMICEC_IOC_SETLOGICALADDRESS failed !", __func__);
-+ return false;
-+ }
-+
-+ m_logicalAddress = address;
-+ m_bLogicalAddressRegistered = true;
-+ return true;
-+}
-+
-+bool CIMXCECAdapterCommunication::SetLogicalAddresses(const cec_logical_addresses &addresses)
-+{
-+ int log_addr = addresses.primary;
-+
-+ return RegisterLogicalAddress((cec_logical_address)log_addr);
-+}
-+
-+void *CIMXCECAdapterCommunication::Process(void)
-+{
-+ bool bHandled;
-+ hdmi_cec_event event;
-+ int ret;
-+
-+ uint32_t opcode, status;
-+ cec_logical_address initiator, destination;
-+
-+ while (!IsStopped())
-+ {
-+ ret = m_dev->Read((char *)&event, sizeof(event), 5000);
-+ if (ret > 0)
-+ {
-+
-+ initiator = cec_logical_address(event.msg[0] >> 4);
-+ destination = cec_logical_address(event.msg[0] & 0x0f);
-+
-+ //LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: Read data : type : %d initiator %d dest %d", __func__, event.event_type, initiator, destination);
-+ if (event.event_type == MESSAGE_TYPE_RECEIVE_SUCCESS)
-+ /* Message received */
-+ {
-+ cec_command cmd;
-+
-+ cec_command::Format(
-+ cmd, initiator, destination,
-+ ( event.msg_len > 1 ) ? cec_opcode(event.msg[1]) : CEC_OPCODE_NONE);
-+
-+ for( uint8_t i = 2; i < event.msg_len; i++ )
-+ cmd.parameters.PushBack(event.msg[i]);
-+
-+ if (!IsStopped())
-+ m_callback->OnCommandReceived(cmd);
-+ }
-+
-+ if (event.event_type == MESSAGE_TYPE_CONNECTED)
-+ /* HDMI has just been reconnected - Notify phy address*/
-+ {
-+ uint16_t iNewAddress = GetPhysicalAddress();
-+ m_callback->HandlePhysicalAddressChanged(iNewAddress);
-+ }
-+ /* We are not interested in other events */
-+ } /*else {
-+ LIB_CEC->AddLog(CEC_LOG_DEBUG, "%s: Read returned %d", __func__, ret);
-+ }*/
-+
-+ }
-+
-+ return 0;
-+}
-+
-+#endif // HAVE_IMX_API
-diff --git a/src/libcec/adapter/IMX/IMXCECAdapterCommunication.h b/src/libcec/adapter/IMX/IMXCECAdapterCommunication.h
-new file mode 100644
-index 0000000..9e899a3
---- /dev/null
-+++ b/src/libcec/adapter/IMX/IMXCECAdapterCommunication.h
-@@ -0,0 +1,119 @@
-+#pragma once
-+/*
-+ * This file is part of the libCEC(R) library.
-+ *
-+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
-+ * libCEC(R) is an original work, containing original code.
-+ *
-+ * libCEC(R) is a trademark of Pulse-Eight Limited.
-+ *
-+ * IMX adpater port is Copyright (C) 2013 by Stephan Rafin
-+ *
-+ * You can redistribute this file and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ *
-+ */
-+
-+#if defined(HAVE_IMX_API)
-+
-+#include "platform/threads/mutex.h"
-+#include "platform/threads/threads.h"
-+#include "platform/sockets/socket.h"
-+#include "adapter/AdapterCommunication.h"
-+#include <map>
-+
-+#define IMX_ADAPTER_VID 0x0471 /*FIXME TBD*/
-+#define IMX_ADAPTER_PID 0x1001
-+
-+
-+
-+namespace PLATFORM
-+{
-+ class CCDevSocket;
-+};
-+
-+
-+namespace CEC
-+{
-+ class CAdapterMessageQueueEntry;
-+
-+ class CIMXCECAdapterCommunication : public IAdapterCommunication, public PLATFORM::CThread
-+ {
-+ public:
-+ /*!
-+ * @brief Create a new USB-CEC communication handler.
-+ * @param callback The callback to use for incoming CEC commands.
-+ */
-+ CIMXCECAdapterCommunication(IAdapterCommunicationCallback *callback);
-+ virtual ~CIMXCECAdapterCommunication(void);
-+
-+ /** @name IAdapterCommunication implementation */
-+ ///{
-+ bool Open(uint32_t iTimeoutMs = CEC_DEFAULT_CONNECT_TIMEOUT, bool bSkipChecks = false, bool bStartListening = true);
-+ void Close(void);
-+ bool IsOpen(void);
-+ std::string GetError(void) const;
-+ cec_adapter_message_state Write(const cec_command &data, bool &bRetry, uint8_t iLineTimeout, bool bIsReply);
-+
-+ bool SetLineTimeout(uint8_t UNUSED(iTimeout)) { return true; }
-+ bool StartBootloader(void) { return false; }
-+ bool SetLogicalAddresses(const cec_logical_addresses &addresses);
-+ cec_logical_addresses GetLogicalAddresses(void);
-+ bool PingAdapter(void) { return IsInitialised(); }
-+ uint16_t GetFirmwareVersion(void);
-+ uint32_t GetFirmwareBuildDate(void) { return 0; }
-+ bool IsRunningLatestFirmware(void) { return true; }
-+ bool PersistConfiguration(const libcec_configuration & UNUSED(configuration)) { return false; }
-+ bool GetConfiguration(libcec_configuration & UNUSED(configuration)) { return false; }
-+ std::string GetPortName(void) { return std::string("IMX"); }
-+ uint16_t GetPhysicalAddress(void);
-+ bool SetControlledMode(bool UNUSED(controlled)) { return true; }
-+ cec_vendor_id GetVendorId(void);
-+ bool SupportsSourceLogicalAddress(const cec_logical_address address) { return address > CECDEVICE_TV && address <= CECDEVICE_BROADCAST; }
-+ cec_adapter_type GetAdapterType(void) { return ADAPTERTYPE_IMX; }
-+ uint16_t GetAdapterVendorId(void) const { return IMX_ADAPTER_VID; }
-+ uint16_t GetAdapterProductId(void) const { return IMX_ADAPTER_PID; }
-+ void HandleLogicalAddressLost(cec_logical_address UNUSED(oldAddress));
-+ void SetActiveSource(bool UNUSED(bSetTo), bool UNUSED(bClientUnregistered)) {}
-+ bool RegisterLogicalAddress(const cec_logical_address address);
-+ ///}
-+
-+ /** @name PLATFORM::CThread implementation */
-+ ///{
-+ void *Process(void);
-+ ///}
-+
-+ private:
-+ bool IsInitialised(void) const { return m_bInitialised; };
-+ bool UnregisterLogicalAddress(void);
-+
-+ std::string m_strError; /**< current error message */
-+
-+ //cec_logical_addresses m_logicalAddresses;
-+ cec_logical_address m_logicalAddress;
-+
-+ PLATFORM::CMutex m_mutex;
-+ PLATFORM::CCDevSocket *m_dev; /**< the device connection */
-+ bool m_bLogicalAddressRegistered;
-+ bool m_bInitialised;
-+
-+ PLATFORM::CMutex m_messageMutex;
-+ uint32_t m_iNextMessage;
-+ std::map<uint32_t, CAdapterMessageQueueEntry *> m_messages;
-+ };
-+
-+};
-+
-+#endif
-diff --git a/src/libcec/adapter/IMX/IMXCECAdapterDetection.cpp b/src/libcec/adapter/IMX/IMXCECAdapterDetection.cpp
-new file mode 100644
-index 0000000..6c93c45
---- /dev/null
-+++ b/src/libcec/adapter/IMX/IMXCECAdapterDetection.cpp
-@@ -0,0 +1,42 @@
-+/*
-+ * This file is part of the libCEC(R) library.
-+ *
-+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
-+ * libCEC(R) is an original work, containing original code.
-+ *
-+ * libCEC(R) is a trademark of Pulse-Eight Limited.
-+ *
-+ * IMX adpater port is Copyright (C) 2013 by Stephan Rafin
-+ *
-+ * You can redistribute this file and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ *
-+ */
-+
-+#include "env.h"
-+#include <stdio.h>
-+
-+#if defined(HAVE_IMX_API)
-+#include "IMXCECAdapterDetection.h"
-+
-+
-+using namespace CEC;
-+
-+bool CIMXCECAdapterDetection::FindAdapter(void)
-+{
-+ return access(CEC_IMX_PATH, 0) == 0;
-+}
-+
-+#endif
-diff --git a/src/libcec/adapter/IMX/IMXCECAdapterDetection.h b/src/libcec/adapter/IMX/IMXCECAdapterDetection.h
-new file mode 100644
-index 0000000..d54891d
---- /dev/null
-+++ b/src/libcec/adapter/IMX/IMXCECAdapterDetection.h
-@@ -0,0 +1,36 @@
-+#pragma once
-+/*
-+ * This file is part of the libCEC(R) library.
-+ *
-+ * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
-+ * libCEC(R) is an original work, containing original code.
-+ *
-+ * libCEC(R) is a trademark of Pulse-Eight Limited.
-+ *
-+ * IMX adpater port is Copyright (C) 2013 by Stephan Rafin
-+ *
-+ * You can redistribute this file and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ *
-+ *
-+ */
-+
-+namespace CEC
-+{
-+ class CIMXCECAdapterDetection
-+ {
-+ public:
-+ static bool FindAdapter(void);
-+ };
-+}
-diff --git a/src/libcec/cmake/CheckPlatformSupport.cmake b/src/libcec/cmake/CheckPlatformSupport.cmake
-index 828cdb2..8b47795 100644
---- a/src/libcec/cmake/CheckPlatformSupport.cmake
-+++ b/src/libcec/cmake/CheckPlatformSupport.cmake
-@@ -8,6 +8,7 @@
- # HAVE_RANDR 1 if xrandr is supported
- # HAVE_LIBUDEV 1 if udev is supported
- # HAVE_RPI_API 1 if Raspberry Pi is supported
-+# HAVE_IMX_API 1 if i.MX is supported
- # HAVE_TDA995X_API 1 if TDA995X is supported
- # HAVE_EXYNOS_API 1 if Exynos is supported
- # HAVE_P8_USB_DETECT 1 if Pulse-Eight devices can be auto-detected
-@@ -87,6 +88,15 @@ else()
- list(APPEND CEC_SOURCES ${CEC_SOURCES_ADAPTER_RPI})
- endif()
-
-+ # i.MX
-+ if (HAVE_IMX_API)
-+ set(LIB_INFO "${LIB_INFO}, 'IMX'")
-+ set(CEC_SOURCES_ADAPTER_IMX adapter/IMX/IMXCECAdapterDetection.cpp
-+ adapter/IMX/IMXCECAdapterCommunication.cpp)
-+ source_group("Source Files\\adapter\\IMX" FILES ${CEC_SOURCES_ADAPTER_IMX})
-+ list(APPEND CEC_SOURCES ${CEC_SOURCES_ADAPTER_IMX})
-+ endif()
-+
- # TDA995x
- check_include_files("tda998x_ioctl.h;comps/tmdlHdmiCEC/inc/tmdlHdmiCEC_Types.h" HAVE_TDA995X_API)
- if (HAVE_TDA995X_API)
-diff --git a/src/libcec/cmake/DisplayPlatformSupport.cmake b/src/libcec/cmake/DisplayPlatformSupport.cmake
-index feee111..0309c56 100644
---- a/src/libcec/cmake/DisplayPlatformSupport.cmake
-+++ b/src/libcec/cmake/DisplayPlatformSupport.cmake
-@@ -32,6 +32,12 @@ else()
- message(STATUS "Raspberry Pi support: no")
- endif()
-
-+if (HAVE_IMX_API)
-+ message(STATUS "i.MX support: yes")
-+else()
-+ message(STATUS "i.MX support: no")
-+endif()
-+
- if (HAVE_TDA995X_API)
- message(STATUS "TDA995x support: yes")
- else()
-diff --git a/src/libcec/env.h.in b/src/libcec/env.h.in
-index a1a1f26..f90e729 100644
---- a/src/libcec/env.h.in
-+++ b/src/libcec/env.h.in
-@@ -60,6 +60,9 @@
- /* Define to 1 for Raspberry Pi support */
- #cmakedefine HAVE_RPI_API @HAVE_RPI_API@
-
-+/* Define to 1 for IMX support */
-+#cmakedefine HAVE_IMX_API @HAVE_IMX_API@
-+
- /* Define to 1 for TDA995x support */
- #cmakedefine HAVE_TDA995X_API @HAVE_TDA995X_API@
-
---
-2.1.4
-
diff --git a/package/libcec/patches/patch-src_cec-client_CMakeLists_txt b/package/libcec/patches/patch-src_cec-client_CMakeLists_txt
deleted file mode 100644
index c6faee0ef..000000000
--- a/package/libcec/patches/patch-src_cec-client_CMakeLists_txt
+++ /dev/null
@@ -1,10 +0,0 @@
---- libcec-185559110dc88aeca0915a90b3b369d2d42c0f7c.orig/src/cec-client/CMakeLists.txt 2015-05-22 14:47:17.000000000 -0500
-+++ libcec-185559110dc88aeca0915a90b3b369d2d42c0f7c/src/cec-client/CMakeLists.txt 2015-05-22 15:02:00.606971031 -0500
-@@ -44,6 +44,7 @@ if (NOT WIN32)
- # curses
- if (HAVE_CURSES_API)
- target_link_libraries(cec-client curses)
-+ target_link_libraries(cec-client tinfo)
- endif()
-
- # rt
diff --git a/package/libdisplay-info/Makefile b/package/libdisplay-info/Makefile
new file mode 100644
index 000000000..89ee541d8
--- /dev/null
+++ b/package/libdisplay-info/Makefile
@@ -0,0 +1,31 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libdisplay-info
+PKG_VERSION:= 0.1.1
+PKG_RELEASE:= 1
+PKG_HASH:= 0d8731588e9f82a9cac96324a3d7c82e2ba5b1b5e006143fefe692c74069fb60
+PKG_DESCR:= edid and displayid library
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= hwdata
+PKG_SITES:= https://gitlab.freedesktop.org/emersion/libdisplay-info/-/releases/0.1.1/downloads/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBDISPLAY_INFO,libdisplay-info,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+libdisplay-info-install:
+ $(INSTALL_DIR) $(IDIR_LIBDISPLAY_INFO)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libdisplay-info*.so* \
+ $(IDIR_LIBDISPLAY_INFO)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libdrm/Makefile b/package/libdrm/Makefile
index 2124d245d..e5999416b 100644
--- a/package/libdrm/Makefile
+++ b/package/libdrm/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libdrm
-PKG_VERSION:= 2.4.107
+PKG_VERSION:= 2.4.120
PKG_RELEASE:= 1
-PKG_HASH:= c554cef03b033636a975543eab363cc19081cb464595d3da1ec129f87370f888
+PKG_HASH:= 3bf55363f76c7250946441ab51d3a6cc0ae518055c0ff017324ab76cdefb327a
PKG_DESCR:= direct rendering manager library
PKG_SECTION:= libs/video
PKG_BUILDDEP:= meson-host libpthread-stubs cairo libpciaccess
@@ -20,6 +20,8 @@ $(eval $(call PKG_template,LIBDRM,libdrm,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEP
WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+MESON_FLAGS+= -Dvalgrind=disabled
+
CONFIG_STYLE:= meson
BUILD_STYLE:= meson
INSTALL_STYLE:= meson
diff --git a/package/libedit/Makefile b/package/libedit/Makefile
new file mode 100644
index 000000000..71c8e5dae
--- /dev/null
+++ b/package/libedit/Makefile
@@ -0,0 +1,26 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libedit
+PKG_VERSION:= 20230828-3.1
+PKG_RELEASE:= 1
+PKG_HASH:= 4ee8182b6e569290e7d1f44f0f78dac8716b35f656b76528f699c69c98814dad
+PKG_DESCR:= editline library
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://www.thrysoee.dk/editline/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBEDIT,libedit,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+libedit-install:
+ $(INSTALL_DIR) $(IDIR_LIBEDIT)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libedit*.so* \
+ $(IDIR_LIBEDIT)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libedit/patches/patch-src_sys_h b/package/libedit/patches/patch-src_sys_h
new file mode 100644
index 000000000..4ee74acb0
--- /dev/null
+++ b/package/libedit/patches/patch-src_sys_h
@@ -0,0 +1,11 @@
+--- libedit-20230828-3.1.orig/src/sys.h 2023-08-27 09:50:35.000000000 +0200
++++ libedit-20230828-3.1/src/sys.h 2023-12-19 16:51:25.734885959 +0100
+@@ -40,7 +40,7 @@
+ #ifndef _h_sys
+ #define _h_sys
+
+-#if defined(HAVE_SYS_TYPES_H) && defined(__sun)
++#if defined(HAVE_SYS_TYPES_H)
+ #include <sys/types.h>
+ #endif
+
diff --git a/package/libepoxy/Makefile b/package/libepoxy/Makefile
index 2d69a3aa4..fa224ad12 100644
--- a/package/libepoxy/Makefile
+++ b/package/libepoxy/Makefile
@@ -4,22 +4,26 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libepoxy
-PKG_VERSION:= 1.2
+PKG_VERSION:= 1.5.9
PKG_RELEASE:= 1
-PKG_HASH:= 42c328440f60a5795835c5ec4bdfc1329e75bba16b6e22b3a87ed17e9679e8f6
+PKG_HASH:= d168a19a6edfdd9977fef1308ccf516079856a4275cf876de688fb7927e365e4
PKG_DESCR:= opengl function pointer management
PKG_SECTION:= libs/misc
-PKG_BUILDDEP:= util-macros-host mesa
-PKG_SITES:= http://crux.nu/files/
+PKG_DEPENDS:= mesa
+PKG_BUILDDEP:= util-macros-host mesa meson-host
+PKG_SITES:= https://github.com/anholt/libepoxy/releases/download/$(PKG_VERSION)/
PKG_OPTS:= dev
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
-
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBEPOXY,libepoxy,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
-AUTOTOOL_STYLE:= autogen
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
libepoxy-install:
$(INSTALL_DIR) $(IDIR_LIBEPOXY)/usr/lib
diff --git a/package/libesmtp/Makefile b/package/libesmtp/Makefile
index 4b7474cd5..fdfb7bdad 100644
--- a/package/libesmtp/Makefile
+++ b/package/libesmtp/Makefile
@@ -4,40 +4,38 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libesmtp
-PKG_VERSION:= 1.0.6
-PKG_RELEASE:= 2
-PKG_HASH:= d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b
+PKG_VERSION:= 1.1.0
+PKG_RELEASE:= 1
+PKG_HASH:= 32bc3614ca12d21c7d933f32d43410e8744b6f91fdca7732da9877a385e4e6c3
PKG_DESCR:= implements the client side of the smtp protocol
PKG_SECTION:= libs/net
-PKG_URL:= http://www.stafford.uklinux.net/libesmtp/
-PKG_SITES:= http://www.stafford.uklinux.net/libesmtp/
+PKG_URL:= https://libesmtp.github.io/index.html
+PKG_SITES:= https://github.com/libesmtp/libESMTP/archive/refs/tags/
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
+DISTFILES:= v${PKG_VERSION}.tar.gz
+WRKDIST= $(WRKDIR)/libESMTP-$(PKG_VERSION)
-PKG_CHOICES_LIBESMTP:= WITH_LIBRESSL WITHOUT_SSL
-PKGCD_WITH_LIBRESSL:= use libressl for crypto
-PKGCB_WITH_LIBRESSL:= libressl
-PKGCS_WITH_LIBRESSL:= libressl
+PKG_CHOICES_LIBESMTP:= WITH_OPENSSL WITHOUT_SSL
+PKGCD_WITH_OPENSSL:= use openssl for crypto
+PKGCB_WITH_OPENSSL:= openssl
+PKGCS_WITH_OPENSSL:= libopenssl
PKGCD_WITHOUT_SSL:= use no ssl
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBESMTP,libesmtp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-AUTOTOOL_STYLE:= autoreconf
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
-ifeq (${ADK_PACKAGE_LIBESMTP_WITH_LIBRESSL},y)
-CONFIGURE_ARGS+= --with-openssl
-endif
-ifeq (${ADK_PACKAGE_LIBESMTP_WITHOUT_SSL},y)
-CONFIGURE_ARGS+= --without-openssl
-endif
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
libesmtp-install:
- $(INSTALL_DIR) $(IDIR_LIBESMTP)/usr/lib/esmtp-plugins
+ $(INSTALL_DIR) $(IDIR_LIBESMTP)/usr/lib/esmtp-plugins-6.2.0
$(CP) $(WRKINST)/usr/lib/libesmtp.so* $(IDIR_LIBESMTP)/usr/lib/
- $(CP) $(WRKINST)/usr/lib/esmtp-plugins/*.so \
- $(IDIR_LIBESMTP)/usr/lib/esmtp-plugins/
+ $(CP) $(WRKINST)/usr/lib/esmtp-plugins-6.2.0/*.so \
+ $(IDIR_LIBESMTP)/usr/lib/esmtp-plugins-6.2.0/
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/libesmtp/patches/patch-Makefile_am b/package/libesmtp/patches/patch-Makefile_am
deleted file mode 100644
index f2f3d9dac..000000000
--- a/package/libesmtp/patches/patch-Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
- prevent doubly passing our CFLAGS
---- libesmtp-1.0.6.orig/Makefile.am 2010-08-09 22:25:24.000000000 +0200
-+++ libesmtp-1.0.6/Makefile.am 2014-06-05 22:29:30.049704289 +0200
-@@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = gnu dist-bzip2
- INCLUDES = -I$(srcdir) $(VERSION_FLAGS)
- SUBDIRS = @subdirs@ @SASL_PLUGINS@
- DIST_SUBDIRS = @subdirs@ @DIST_PLUGINS@
--AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-+AM_CFLAGS = @EXTRA_CFLAGS@
- ACLOCAL_AMFLAGS = -I m4
-
- lib_LTLIBRARIES = libesmtp.la
diff --git a/package/libesmtp/patches/patch-crammd5_Makefile_am b/package/libesmtp/patches/patch-crammd5_Makefile_am
deleted file mode 100644
index c640852b7..000000000
--- a/package/libesmtp/patches/patch-crammd5_Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
- prevent doubly passing our CFLAGS
---- libesmtp-1.0.6.orig/crammd5/Makefile.am 2010-08-08 17:45:57.000000000 +0200
-+++ libesmtp-1.0.6/crammd5/Makefile.am 2014-06-05 22:29:43.615693205 +0200
-@@ -3,7 +3,7 @@
- libdir = @plugindir@
-
- INCLUDES = -I@srcdir@
--AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-+AM_CFLAGS = @EXTRA_CFLAGS@
-
- lib_LTLIBRARIES = sasl-cram-md5.la
-
diff --git a/package/libesmtp/patches/patch-login_Makefile_am b/package/libesmtp/patches/patch-login_Makefile_am
deleted file mode 100644
index 4ba39571a..000000000
--- a/package/libesmtp/patches/patch-login_Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
- prevent doubly passing our CFLAGS
---- libesmtp-1.0.6.orig/login/Makefile.am 2010-08-08 17:45:56.000000000 +0200
-+++ libesmtp-1.0.6/login/Makefile.am 2014-06-05 22:29:47.310690185 +0200
-@@ -5,7 +5,7 @@ libdir = @plugindir@
- INCLUDES = -I@srcdir@
-
- lib_LTLIBRARIES = sasl-login.la
--AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-+AM_CFLAGS = @EXTRA_CFLAGS@
-
- sasl_login_la_SOURCES = client-login.c
- sasl_login_la_LDFLAGS = -module -avoid-version
diff --git a/package/libesmtp/patches/patch-meson_build b/package/libesmtp/patches/patch-meson_build
new file mode 100644
index 000000000..461311751
--- /dev/null
+++ b/package/libesmtp/patches/patch-meson_build
@@ -0,0 +1,42 @@
+--- libESMTP-1.1.0.orig/meson.build 2021-06-04 18:18:50.000000000 +0200
++++ libESMTP-1.1.0/meson.build 2024-02-24 14:07:23.535476167 +0100
+@@ -63,6 +63,7 @@ add_project_arguments(cc.get_supported_a
+ ################################################################################
+ dldep = cc.find_library('dl')
+ ssldep = dependency('openssl', version : '>=1.1.0', required : get_option('tls'))
++ntlmdep = dependency('openssl', version : '>=1.1.0', required : get_option('ntlm'))
+ threaddep = dependency('threads', required : get_option('pthreads'))
+
+ #XXX add test for libbind9.so
+@@ -71,6 +72,7 @@ lwresdep = cc.find_library('lwres', requ
+ deps = [
+ dldep,
+ ssldep,
++ ntlmdep,
+ threaddep,
+ lwresdep,
+ ]
+@@ -220,8 +222,13 @@ include_dir = include_directories('.')
+ subdir('login')
+ subdir('plain')
+ subdir('crammd5')
+-if ssldep.found()
+- subdir('ntlm')
++
++if ntlmdep.found()
++ if cc.has_header('openssl/md4.h') and cc.has_function('MD4_Init', dependencies : ntlmdep)
++ subdir('ntlm')
++ else
++ error('MD4 is not supported in current openssl, unable to build NTLM plugin')
++ endif
+ endif
+
+ ################################################################################
+@@ -247,4 +254,6 @@ summary({'current:revision:age': libesmt
+ 'STARTTLS': ssldep.found(),
+ 'CHUNKING': get_option('bdat'),
+ 'ETRN': get_option('etrn'),
+- 'XUSR': get_option('xusr')})
++ 'XUSR': get_option('xusr'),
++ 'NTLM': ntlmdep.found()})
++
diff --git a/package/libesmtp/patches/patch-meson_options_txt b/package/libesmtp/patches/patch-meson_options_txt
new file mode 100644
index 000000000..6f4e81431
--- /dev/null
+++ b/package/libesmtp/patches/patch-meson_options_txt
@@ -0,0 +1,7 @@
+--- libESMTP-1.1.0.orig/meson_options.txt 2021-06-04 18:18:50.000000000 +0200
++++ libESMTP-1.1.0/meson_options.txt 2024-02-24 13:55:42.283485679 +0100
+@@ -5,3 +5,4 @@ option('lwres', type : 'feature', value
+ option('bdat', type : 'boolean', value : 'true', description : 'enable SMTP BDAT extension')
+ option('etrn', type : 'boolean', value : 'true', description : 'enable SMTP ETRN extension')
+ option('xusr', type : 'boolean', value : 'true', description : 'enable sendmail XUSR extension')
++option('ntlm', type : 'feature', value : 'disabled', description : 'build with support for NTLM authentication')
diff --git a/package/libesmtp/patches/patch-ntlm_Makefile_am b/package/libesmtp/patches/patch-ntlm_Makefile_am
deleted file mode 100644
index 94928b0a3..000000000
--- a/package/libesmtp/patches/patch-ntlm_Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
- prevent doubly passing our CFLAGS
---- libesmtp-1.0.6.orig/ntlm/Makefile.am 2010-08-08 17:45:56.000000000 +0200
-+++ libesmtp-1.0.6/ntlm/Makefile.am 2014-06-05 22:29:51.995686387 +0200
-@@ -3,7 +3,7 @@
- libdir = @plugindir@
-
- INCLUDES = -I@srcdir@
--AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-+AM_CFLAGS = @EXTRA_CFLAGS@
-
- lib_LTLIBRARIES = sasl-ntlm.la
-
diff --git a/package/libesmtp/patches/patch-ntlm_meson_build b/package/libesmtp/patches/patch-ntlm_meson_build
new file mode 100644
index 000000000..72dbdaccf
--- /dev/null
+++ b/package/libesmtp/patches/patch-ntlm_meson_build
@@ -0,0 +1,11 @@
+--- libESMTP-1.1.0.orig/ntlm/meson.build 2021-06-04 18:18:50.000000000 +0200
++++ libESMTP-1.1.0/ntlm/meson.build 2024-02-24 14:03:10.243479603 +0100
+@@ -5,7 +5,7 @@ sasl_ntlm_sources = [
+ 'ntlmstruct.c',
+ ]
+
+-ntlm_deps = [ ssldep, ]
++ntlm_deps = [ ntlmdep, ]
+
+ sasl_ntlm = shared_module('ntlm', sasl_ntlm_sources,
+ name_prefix : 'sasl-',
diff --git a/package/libesmtp/patches/patch-plain_Makefile_am b/package/libesmtp/patches/patch-plain_Makefile_am
deleted file mode 100644
index a22054804..000000000
--- a/package/libesmtp/patches/patch-plain_Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
- prevent doubly passing our CFLAGS
---- libesmtp-1.0.6.orig/plain/Makefile.am 2010-08-08 17:45:54.000000000 +0200
-+++ libesmtp-1.0.6/plain/Makefile.am 2014-06-05 22:29:56.668682572 +0200
-@@ -3,7 +3,7 @@
- libdir = @plugindir@
-
- INCLUDES = -I@srcdir@
--AM_CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
-+AM_CFLAGS = @EXTRA_CFLAGS@
-
- lib_LTLIBRARIES = sasl-plain.la
-
diff --git a/package/libevdev/Makefile b/package/libevdev/Makefile
new file mode 100644
index 000000000..b78cca1b1
--- /dev/null
+++ b/package/libevdev/Makefile
@@ -0,0 +1,25 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libevdev
+PKG_VERSION:= 1.12.0
+PKG_RELEASE:= 1
+PKG_HASH:= 2f729e3480695791f9482e8388bd723402b89f0eaf118057bbdea3cecee9b237
+PKG_DESCR:= wrapper library for evdev devices
+PKG_SECTION:= libs/misc
+PKG_URL:= add project url
+PKG_SITES:= https://www.freedesktop.org/software/libevdev/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBEVDEV,libevdev,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+libevdev-install:
+ $(INSTALL_DIR) $(IDIR_LIBEVDEV)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libevdev*.so* \
+ $(IDIR_LIBEVDEV)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libevent/Makefile b/package/libevent/Makefile
index bb3ae87d7..68094dd2f 100644
--- a/package/libevent/Makefile
+++ b/package/libevent/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libevent
-PKG_VERSION:= 2.0.22
+PKG_VERSION:= 2.1.12
PKG_RELEASE:= 1
-PKG_HASH:= 71c2c49f0adadacfdbe6332a372c38cf9c8b7895bb73dabeaa53cdcc1d4e1fa3
+PKG_HASH:= 92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb
PKG_DESCR:= event notification library for event-driven network servers
PKG_SECTION:= libs/net
PKG_URL:= http://libevent.org/
@@ -24,6 +24,8 @@ ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
MAKE_FLAGS+= LDFLAGS="$(TARGET_LDFLAGS) -all-static"
endif
+CONFIGURE_ARGS+= --disable-openssl
+
libevent-install:
$(INSTALL_DIR) $(IDIR_LIBEVENT)/usr/lib
$(CP) $(WRKINST)/usr/lib/libevent*.so* $(IDIR_LIBEVENT)/usr/lib
diff --git a/package/libffi/Makefile b/package/libffi/Makefile
index 4fe839dce..80857706b 100644
--- a/package/libffi/Makefile
+++ b/package/libffi/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libffi
-PKG_VERSION:= 3.4.2
+PKG_VERSION:= 3.4.4
PKG_RELEASE:= 1
-PKG_HASH:= 540fb721619a6aba3bdeef7d940d8e9e0e6d2c193595bc243241b77ff9e93620
+PKG_HASH:= d66c56ad259a82cf2a9dfc408b32bf5da52371500b84745f7fb8b645712df676
PKG_DESCR:= foreign function interface library
PKG_SECTION:= libs/misc
HOST_BUILDDEP:= libtool-host
@@ -22,7 +22,6 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call HOST_template,LIBFFI,libffi,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,LIBFFI,libffi,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-AUTOTOOL_STYLE:= autoreconf
HOST_STYLE:= auto
HOST_CONFIGURE_ARGS+= --disable-builddir --with-pic --disable-symvers
CONFIGURE_ARGS+= --disable-builddir --with-pic --disable-symvers
diff --git a/package/libgcc/Makefile b/package/libgcc/Makefile
index e9ae22b86..b00bb59c5 100644
--- a/package/libgcc/Makefile
+++ b/package/libgcc/Makefile
@@ -34,7 +34,7 @@ endif
else
ifeq ($(ADK_TARGET_ARCH_AVR32),)
ifeq ($(ADK_TARGET_BINFMT_FLAT),)
- ${CP} ${STAGING_TARGET_DIR}/usr/lib/libgcc*.so* ${IDIR_LIBGCC}/$(ADK_TARGET_LIBC_PATH)
+ -${CP} ${STAGING_TARGET_DIR}/usr/lib/libgcc*.so* ${IDIR_LIBGCC}/$(ADK_TARGET_LIBC_PATH)
endif
endif
endif
diff --git a/package/libgcrypt/Makefile b/package/libgcrypt/Makefile
index 622eee62e..9ed07ce9c 100644
--- a/package/libgcrypt/Makefile
+++ b/package/libgcrypt/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libgcrypt
-PKG_VERSION:= 1.9.4
+PKG_VERSION:= 1.10.3
PKG_RELEASE:= 1
-PKG_HASH:= ea849c83a72454e3ed4267697e8ca03390aee972ab421e7df69dfe42b65caaf7
+PKG_HASH:= 8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa
PKG_DESCR:= crypto library
PKG_SECTION:= libs/crypto
PKG_DEPENDS:= libgpg-error
diff --git a/package/libgcrypt/patches/patch-cipher_Makefile_am b/package/libgcrypt/patches/patch-cipher_Makefile_am
deleted file mode 100644
index ce89bc118..000000000
--- a/package/libgcrypt/patches/patch-cipher_Makefile_am
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgcrypt-1.9.4.orig/cipher/Makefile.am 2021-08-22 13:55:28.000000000 +0200
-+++ libgcrypt-1.9.4/cipher/Makefile.am 2021-09-20 10:05:44.047879135 +0200
-@@ -146,7 +146,7 @@ gost-sb.h: gost-s-box
-
- gost-s-box: gost-s-box.c
- $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \
-- $(CPPFLAGS_FOR_BUILD)-o $@ $(srcdir)/gost-s-box.c
-+ $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/gost-s-box.c
-
-
- if ENABLE_O_FLAG_MUNGING
diff --git a/package/libgcrypt/patches/patch-cipher_Makefile_in b/package/libgcrypt/patches/patch-cipher_Makefile_in
deleted file mode 100644
index 1f5d7f272..000000000
--- a/package/libgcrypt/patches/patch-cipher_Makefile_in
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgcrypt-1.9.4.orig/cipher/Makefile.in 2021-08-22 18:00:24.000000000 +0200
-+++ libgcrypt-1.9.4/cipher/Makefile.in 2021-09-20 10:06:00.483879720 +0200
-@@ -1370,7 +1370,7 @@ gost-sb.h: gost-s-box
-
- gost-s-box: gost-s-box.c
- $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \
-- $(CPPFLAGS_FOR_BUILD)-o $@ $(srcdir)/gost-s-box.c
-+ $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/gost-s-box.c
-
- # We need to lower the optimization for this module.
- tiger.o: $(srcdir)/tiger.c Makefile
diff --git a/package/libgpg-error/Makefile b/package/libgpg-error/Makefile
index 496e69c82..c9d50ca65 100644
--- a/package/libgpg-error/Makefile
+++ b/package/libgpg-error/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libgpg-error
-PKG_VERSION:= 1.42
+PKG_VERSION:= 1.47
PKG_RELEASE:= 1
-PKG_HASH:= fc07e70f6c615f8c4f590a8e37a9b8dd2e2ca1e9408f8e60459c67452b925e23
+PKG_HASH:= 9e3c670966b96ecc746c28c2c419541e3bcb787d1a73930f5e5f5e1bcbbb9bdb
PKG_DESCR:= helper library for common error codes and descriptions
PKG_SECTION:= libs/misc
PKG_URL:= http://www.gnupg.org/
@@ -54,11 +54,17 @@ ifeq ($(ADK_TARGET_ARCH_SPARC64),y)
LIBGPG_PREFIX:= sparc64-unknown-linux-gnu
endif
ifeq ($(ADK_TARGET_ARCH_X86),y)
-LIBGPG_PREFIX:= i686-pc-linux-gnu
+LIBGPG_PREFIX:= i686-unknown-linux-gnu
endif
ifeq ($(ADK_TARGET_ARCH_X86_64),y)
-LIBGPG_PREFIX:= x86_64-pc-linux-gnu
+LIBGPG_PREFIX:= x86_64-unknown-linux-gnu
endif
+ifeq ($(ADK_TARGET_ARCH_XTENSA),y)
+LIBGPG_PREFIX:= xtensa-unknown-linux-gnu
+endif
+
+CONFIGURE_ARGS+= --disable-tests \
+ --disable-languages
post-extract:
cd $(WRKSRC)/src/syscfg && ( \
diff --git a/package/libgpg-error/patches/patch-src_gen-lock-obj_sh b/package/libgpg-error/patches/patch-src_gen-lock-obj_sh
deleted file mode 100644
index 04961a5ff..000000000
--- a/package/libgpg-error/patches/patch-src_gen-lock-obj_sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgpg-error-1.42.orig/src/gen-lock-obj.sh 2021-03-04 11:05:29.000000000 +0100
-+++ libgpg-error-1.42/src/gen-lock-obj.sh 2021-09-17 16:43:42.304505465 +0200
-@@ -38,7 +38,7 @@
- # AWK=gawk ./gen-lock-obj.sh
- #
-
--if test -n `echo -n`; then
-+if test -n "`echo -n`"; then
- ECHO_C='\c'
- ECHO_N=''
- else
diff --git a/package/libgpg-error/src/src/syscfg/lock-obj-pub.xtensa-unknown-linux-gnu.h b/package/libgpg-error/src/src/syscfg/lock-obj-pub.xtensa-unknown-linux-gnu.h
new file mode 100644
index 000000000..60eadab8e
--- /dev/null
+++ b/package/libgpg-error/src/src/syscfg/lock-obj-pub.xtensa-unknown-linux-gnu.h
@@ -0,0 +1,24 @@
+## lock-obj-pub.or1k-unknown-linux-gnu.h
+## File created by gen-posix-lock-obj - DO NOT EDIT
+## To be included by mkheader into gpg-error.h
+
+typedef struct
+{
+ long _vers;
+ union {
+ volatile char _priv[32];
+ long _x_align;
+ long *_xp_align;
+ } u;
+} gpgrt_lock_t;
+
+#define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0, \
+ 0,0,0,0,0,0,0,0}}}
+##
+## Local Variables:
+## mode: c
+## buffer-read-only: t
+## End:
+##
diff --git a/package/libgtk3/Makefile b/package/libgtk3/Makefile
index 2d90fdf39..e0e087dd7 100644
--- a/package/libgtk3/Makefile
+++ b/package/libgtk3/Makefile
@@ -4,18 +4,19 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libgtk3
-PKG_VERSION:= 3.20.6
-PKG_EXTRAVER:= 3.20
+PKG_VERSION:= 3.24.31
+PKG_EXTRAVER:= 3.24
PKG_RELEASE:= 1
-PKG_HASH:= 3f8016563a96b1cfef4ac9e795647f6316deb2978ff939b19e4e4f8f936fa4b2
+PKG_HASH:= 423c3e7fdb4c459ee889e35fd4d71fd2623562541c1041b11c07e5ad1ff10bf9
PKG_DESCR:= multi-platform toolkit for creating graphical user interfaces
PKG_SECTION:= libs/misc
PKG_DEPENDS:= glib cairo libxi libepoxy pango at-spi2-core
PKG_DEPENDS+= at-spi2-atk libxext libxrender libx11
-PKG_DEPENDS+= libxcomposite libxdamage
+PKG_DEPENDS+= libxcomposite libxdamage fribidi
PKG_BUILDDEP:= cairo atk pango libXext renderproto libXrender
PKG_BUILDDEP+= gdk-pixbuf libXcomposite libXdamage libX11 libXi
PKG_BUILDDEP+= at-spi2-core at-spi2-atk gdk-pixbuf-host libepoxy
+PKG_BUILDDEP+= fribidi
PKG_NEEDS:= c++
PKG_URL:= http://www.gtk.org/
PKG_SITES:= $(MASTER_SITE_GNOME:=gtk+/$(PKG_EXTRAVER)/)
@@ -35,6 +36,7 @@ $(eval $(call PKG_template,LIBGTK3,libgtk3,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_D
HOST_CFLAGS+= -I$(STAGING_HOST_DIR)/usr/include/glib-2.0 -I$(STAGING_HOST_DIR)/usr/include/gdk-pixbuf-2.0
HOST_LDFLAGS+= -lgobject-2.0 -lgmodule-2.0 -pthread -lrt -lglib-2.0 -lgdk_pixbuf-2.0
+CONFIGURE_ENV+= GLIB_COMPILE_RESOURCES=$(STAGING_HOST_DIR)/usr/bin/glib-compile-resources
CONFIGURE_ARGS+= --disable-gtk-doc-html \
--disable-gtk-doc \
--disable-modules \
diff --git a/package/libinih/Makefile b/package/libinih/Makefile
index 81b70f308..d546f244a 100644
--- a/package/libinih/Makefile
+++ b/package/libinih/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libinih
-PKG_VERSION:= r53
+PKG_VERSION:= r58
PKG_RELEASE:= 1
-PKG_HASH:= 01b0366fdfdf6363efc070c2f856f1afa33e7a6546548bada5456ad94a516241
+PKG_HASH:= e79216260d5dffe809bda840be48ab0eec7737b2bb9f02d2275c1b46344ea7b7
PKG_DESCR:= ini parser library
PKG_SECTION:= libs/misc
PKG_BUILDDEP:= meson-host
diff --git a/package/libinput/Makefile b/package/libinput/Makefile
new file mode 100644
index 000000000..8c0c6a759
--- /dev/null
+++ b/package/libinput/Makefile
@@ -0,0 +1,39 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libinput
+PKG_VERSION:= 1.19.2
+PKG_RELEASE:= 1
+PKG_HASH:= 0fc39f0af3ee1a77c60c34bc45391a4d0879169f7c0f7bbbeb5eef590b98b883
+PKG_DESCR:= input library
+PKG_DEPENDS:= mtdev libevdev libudev
+PKG_BUILDDEP:= mtdev libevdev eudev
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://www.freedesktop.org/software/libinput/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBINPUT,libinput,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+MESON_FLAGS+= -Dlibwacom=false \
+ -Dtests=false \
+ -Ddebug-gui=false
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+libinput-install:
+ $(INSTALL_DIR) $(IDIR_LIBINPUT)/usr/share/libinput
+ $(CP) $(WRKINST)/usr/share/libinput/* \
+ $(IDIR_LIBINPUT)/usr/share/libinput/
+ $(INSTALL_DIR) $(IDIR_LIBINPUT)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libinput*.so* \
+ $(IDIR_LIBINPUT)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libjansson/Makefile b/package/libjansson/Makefile
index e75c8b199..c26b28812 100644
--- a/package/libjansson/Makefile
+++ b/package/libjansson/Makefile
@@ -4,16 +4,16 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libjansson
-PKG_VERSION:= 2.5
+PKG_VERSION:= 2.14
PKG_RELEASE:= 1
-PKG_HASH:= dd8bbfb38ad5031ce88e066b14d3b7e9c7113243daa7f4cde1994b7fc90bb1b1
+PKG_HASH:= fba956f27c6ae56ce6dfd52fbf9d20254aad42821f74fa52f83957625294afb9
PKG_DESCR:= json library
PKG_SECTION:= libs/data
PKG_URL:= http://www.digip.org/jansson/
-PKG_SITES:= http://www.digip.org/jansson/releases/
+PKG_SITES:= https://github.com/akheron/jansson/releases/download/v$(PKG_VERSION)/
PKG_OPTS:= dev
-DISTFILES:= jansson-${PKG_VERSION}.tar.gz
+DISTFILES:= jansson-${PKG_VERSION}.tar.bz2
WRKDIST= ${WRKDIR}/jansson-${PKG_VERSION}
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/libksba/Makefile b/package/libksba/Makefile
index 0f95fb5d7..1d0565068 100644
--- a/package/libksba/Makefile
+++ b/package/libksba/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libksba
-PKG_VERSION:= 1.6.0
+PKG_VERSION:= 1.6.5
PKG_RELEASE:= 1
-PKG_HASH:= dad683e6f2d915d880aa4bed5cea9a115690b8935b78a1bbe01669189307a48b
+PKG_HASH:= a564628c574c99287998753f98d750babd91a4e9db451f46ad140466ef2a6d16
PKG_DESCR:= working with X.509 certificates
PKG_SECTION:= libs/crypto
PKG_DEPENDS:= libgpg-error
diff --git a/package/libmd/Makefile b/package/libmd/Makefile
new file mode 100644
index 000000000..f95b7bf0e
--- /dev/null
+++ b/package/libmd/Makefile
@@ -0,0 +1,25 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libmd
+PKG_VERSION:= 1.1.0
+PKG_RELEASE:= 1
+PKG_HASH:= 1bd6aa42275313af3141c7cf2e5b964e8b1fd488025caf2f971f43b00776b332
+PKG_DESCR:= message digest implementations
+PKG_SECTION:= libs/misc
+PKG_URL:= https://www.hadrons.org/software/libmd/
+PKG_SITES:= https://archive.hadrons.org/software/libmd/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBMD,libmd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+libmd-install:
+ $(INSTALL_DIR) $(IDIR_LIBMD)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libmd*.so* \
+ $(IDIR_LIBMD)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libmicrohttpd/Makefile b/package/libmicrohttpd/Makefile
index 6b9590553..f8621deaa 100644
--- a/package/libmicrohttpd/Makefile
+++ b/package/libmicrohttpd/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libmicrohttpd
-PKG_VERSION:= 0.9.52
+PKG_VERSION:= 1.0.0
PKG_RELEASE:= 1
-PKG_HASH:= 54797f6e763d417627f89f60e4ae0a431dab0523f92f83def23ea02d0defafea
+PKG_HASH:= a02792d3cd1520e2ecfed9df642079d44a36ed87167442b28d7ed19e906e3e96
PKG_DESCR:= library make it easy to run an webserver
PKG_SECTION:= libs/net
PKG_URL:= http://www.gnu.org/software/libmicrohttpd/
@@ -19,6 +19,8 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBMICROHTTPD,libmicrohttpd,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
+CONFIGURE_ARGS+= --disable-https
+
libmicrohttpd-install:
$(INSTALL_DIR) $(IDIR_LIBMICROHTTPD)/usr/lib
$(CP) $(WRKINST)/usr/lib/libmicrohttpd*.so* \
diff --git a/package/libmpdclient/Makefile b/package/libmpdclient/Makefile
index 2d9f31c75..e8a456c50 100644
--- a/package/libmpdclient/Makefile
+++ b/package/libmpdclient/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libmpdclient
-PKG_VERSION:= 2.13
+PKG_VERSION:= 2.22
PKG_RELEASE:= 1
-PKG_HASH:= 5115bd52bc20a707c1ecc7587e6389c17305348e2132a66cf767c62fc55ed45d
+PKG_HASH:= eac15b82b5ba5ed0648af580221eb74657394f7fe768e966d9e9ebb27435429f
PKG_DESCR:= library for interfacing music player daemon
PKG_SECTION:= libs/audio
PKG_BUILDDEP:= meson-host
diff --git a/package/libmpdclient/patches/patch-src_socket_c b/package/libmpdclient/patches/patch-src_socket_c
deleted file mode 100644
index 5417eccd7..000000000
--- a/package/libmpdclient/patches/patch-src_socket_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- libmpdclient-2.8.orig/src/socket.c 2010-01-01 15:17:56.000000000 +0100
-+++ libmpdclient-2.8/src/socket.c 2013-09-18 11:03:04.000000000 +0200
-@@ -35,6 +35,7 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <fcntl.h>
-+#include <sys/select.h>
- #include <unistd.h>
-
- #ifdef WIN32
diff --git a/package/libmpdclient/patches/patch-src_sync_c b/package/libmpdclient/patches/patch-src_sync_c
deleted file mode 100644
index b9c5ec10d..000000000
--- a/package/libmpdclient/patches/patch-src_sync_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- libmpdclient-2.8.orig/src/sync.c 2010-01-01 15:17:56.000000000 +0100
-+++ libmpdclient-2.8/src/sync.c 2013-09-18 11:04:49.000000000 +0200
-@@ -34,6 +34,8 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <fcntl.h>
-+#include <time.h>
-+#include <sys/select.h>
- #include <unistd.h>
-
- static bool
diff --git a/package/libnettle/Makefile b/package/libnettle/Makefile
index ece913b1c..c9d3f38e1 100644
--- a/package/libnettle/Makefile
+++ b/package/libnettle/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libnettle
-PKG_VERSION:= 3.7.3
+PKG_VERSION:= 3.9.1
PKG_RELEASE:= 1
-PKG_HASH:= 661f5eb03f048a3b924c3a8ad2515d4068e40f67e774e8a26827658007e3bcf0
+PKG_HASH:= ccfeff981b0ca71bbd6fbcb054f407c60ffb644389a5be80d6716d5b550c6ce3
PKG_DESCR:= crypto library
PKG_SECTION:= libs/crypto
PKG_DEPENDS:= libgmp
diff --git a/package/libnl/patches/patch-autogen_sh b/package/libnl/patches/patch-autogen_sh
new file mode 100644
index 000000000..2888ae770
--- /dev/null
+++ b/package/libnl/patches/patch-autogen_sh
@@ -0,0 +1,7 @@
+--- libnl-libnl3_2_29.orig/autogen.sh Fri Dec 30 15:57:01 2016
++++ libnl-libnl3_2_29/autogen.sh Sat Jan 13 10:02:41 2024
+@@ -12,4 +12,3 @@ cd "$BASEDIR" || die "Could not change into base direc
+ autoreconf -fi || die "Error during autoreconf"
+ rm -Rf autom4te.cache;
+
+-doc/autogen.sh || die "Error during doc/autogen.sh"
diff --git a/package/libnl/patches/patch-lib_utils_c b/package/libnl/patches/patch-lib_utils_c
index 3e14d4739..3d75f7487 100644
--- a/package/libnl/patches/patch-lib_utils_c
+++ b/package/libnl/patches/patch-lib_utils_c
@@ -1,5 +1,5 @@
---- libnl-libnl3_2_29.orig/lib/utils.c 2016-12-30 15:57:01.000000000 +0100
-+++ libnl-libnl3_2_29/lib/utils.c 2017-04-26 20:09:18.137933191 +0200
+--- libnl-libnl3_2_29.orig/lib/utils.c Fri Dec 30 15:57:01 2016
++++ libnl-libnl3_2_29/lib/utils.c Sat Jan 13 09:58:56 2024
@@ -30,7 +30,9 @@
#include <netlink/utils.h>
#include <linux/socket.h>
@@ -10,7 +10,7 @@
/**
* Global variable indicating the desired level of debugging output.
-@@ -123,9 +125,10 @@ int __nl_read_num_str_file(const char *p
+@@ -123,9 +125,10 @@ int __nl_read_num_str_file(const char *path, int (*cb)
const char *nl_strerror_l(int err)
{
diff --git a/package/libnl/patches/patch-src_lib_utils_c b/package/libnl/patches/patch-src_lib_utils_c
index 6d75c3acf..60117cbdc 100644
--- a/package/libnl/patches/patch-src_lib_utils_c
+++ b/package/libnl/patches/patch-src_lib_utils_c
@@ -1,6 +1,6 @@
---- libnl-libnl3_2_29.orig/src/lib/utils.c 2016-12-30 15:57:01.000000000 +0100
-+++ libnl-libnl3_2_29/src/lib/utils.c 2017-04-26 20:09:18.149933980 +0200
-@@ -81,6 +81,7 @@ void nl_cli_fatal(int err, const char *f
+--- libnl-libnl3_2_29.orig/src/lib/utils.c Fri Dec 30 15:57:01 2016
++++ libnl-libnl3_2_29/src/lib/utils.c Sat Jan 13 09:58:56 2024
+@@ -81,6 +81,7 @@ void nl_cli_fatal(int err, const char *fmt, ...)
fprintf(stderr, "\n");
} else {
char *buf;
@@ -8,7 +8,7 @@
locale_t loc = newlocale(LC_MESSAGES_MASK, "", (locale_t)0);
if (loc == (locale_t)0) {
if (errno == ENOENT)
-@@ -91,9 +92,14 @@ void nl_cli_fatal(int err, const char *f
+@@ -91,9 +92,14 @@ void nl_cli_fatal(int err, const char *fmt, ...)
}
if (loc != (locale_t)0)
buf = strerror_l(err, loc);
diff --git a/package/libowfat/Makefile b/package/libowfat/Makefile
index c3ac0c0e9..5939a63aa 100644
--- a/package/libowfat/Makefile
+++ b/package/libowfat/Makefile
@@ -4,13 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libowfat
-PKG_VERSION:= 0.30
+PKG_VERSION:= 0.33
PKG_RELEASE:= 1
-PKG_HASH:= db4a3a853cfbb9e83b27f565b580f6fdc519475b162edc1a656043e1c126e993
+PKG_HASH:= 311ec8b3f4b72bb442e323fb013a98f956fa745547f2bc9456287b20d027cd7d
PKG_DESCR:= owfat library
PKG_SECTION:= libs/misc
-PKG_URL:= http://www.fefe.de/libowfat
-PKG_SITES:= http://www.fefe.de/libowfat/
+PKG_URL:= https://www.fefe.de/libowfat
+PKG_SITES:= https://www.fefe.de/libowfat/
+
+PKG_NOPARALLEL:= 1
include ${ADK_TOPDIR}/mk/package.mk
@@ -18,9 +20,8 @@ CONFIG_STYLE:= manual
TARGET_CFLAGS+= ${TARGET_CPPFLAGS}
MAKE_FILE= GNUmakefile
-MAKE_FLAGS+= DIET= CC='${TARGET_CC}' CROSS=${TARGET_CROSS} \
+MAKE_FLAGS+= DIET= CROSS=${TARGET_CROSS} \
LDFLAGS='${TARGET_LDFLAGS}'
-FAKE_FLAGS+= prefix='${WRKINST}/usr' \
- INCLUDEDIR='${WRKINST}/usr/include/owfat'
+FAKE_FLAGS+= prefix='/usr'
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/libowfat/patches/patch-GNUmakefile b/package/libowfat/patches/patch-GNUmakefile
index fbe2b0a3b..4338cf8da 100644
--- a/package/libowfat/patches/patch-GNUmakefile
+++ b/package/libowfat/patches/patch-GNUmakefile
@@ -1,11 +1,25 @@
---- libowfat-0.30.orig/GNUmakefile 2015-04-10 22:54:57.000000000 +0200
-+++ libowfat-0.30/GNUmakefile 2015-06-05 16:06:19.000000000 +0200
-@@ -18,7 +18,7 @@ all: ent $(LIBS) libowfat.a libsocket t
+--- libowfat-0.33.orig/GNUmakefile 2021-04-24 12:47:51.000000000 +0200
++++ libowfat-0.33/GNUmakefile 2024-02-23 05:07:36.527866006 +0100
+@@ -23,9 +23,9 @@ picx32 piex32:
+
CROSS=
#CROSS=i686-mingw-
- CC=$(CROSS)gcc
--CFLAGS=-pipe -W -Wall -Wextra -O2 -fomit-frame-pointer
+-CC?=gcc
+-AR?=ar
+-RANLIB?=ranlib
++CC=gcc
++AR=ar
++RANLIB=ranlib
+ CCC=$(CROSS)$(CC)
+ WERROR=
+ WARN=-W -Wall -Wextra $(WERROR)
+@@ -41,7 +41,8 @@ OPT_PLUS=-O3 $(NATIVE)
+
+ DEFINE=-D_REENTRANT
+
+-CFLAGS=-pipe $(WARN) $(DEFINE) $(OPT_REG)
+CFLAGS?=
- #CFLAGS=-pipe -Os -march=pentiumpro -mcpu=pentiumpro -fomit-frame-pointer -fschedule-insns2 -Wall
++CFLAGS+=-pipe $(WARN) $(DEFINE) $(OPT_REG)
+ CFLAGS_OPT=-pipe $(WARN) $(DEFINE) $(OPT_PLUS)
- ent: ent.c haveuint128.h
+ #CFLAGS=-pipe -Os -march=pentiumpro -mcpu=pentiumpro -fomit-frame-pointer -fschedule-insns2 -Wall
diff --git a/package/libp11/Makefile b/package/libp11/Makefile
index 19681c0ba..1a6c3ddb0 100644
--- a/package/libp11/Makefile
+++ b/package/libp11/Makefile
@@ -4,15 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libp11
-PKG_VERSION:= 0.2.8
+PKG_VERSION:= 0.4.12
PKG_RELEASE:= 1
-PKG_HASH:= a4121015503ade98074b5e2a2517fc8a139f8b28aed10021db2bb77283f40691
+PKG_HASH:= 1e1a2533b3fcc45fde4da64c9c00261b1047f14c3f911377ebd1b147b3321cfd
PKG_DESCR:= library implementing a small layer on top of pkcs11 api
PKG_SECTION:= libs/crypto
-PKG_DEPENDS:= libltdl libressl
-PKG_BUILDDEP:= libtool libressl
+PKG_DEPENDS:= libltdl libopenssl
+PKG_BUILDDEP:= libtool openssl
PKG_URL:= https://github.com/OpenSC/libp11/wiki
-PKG_SITES:= http://sourceforge.net/projects/opensc/files/libp11/
+PKG_SITES:= https://github.com/OpenSC/libp11/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
PKG_OPTS:= dev
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/libp11/patches/patch-ltmain_sh b/package/libp11/patches/patch-ltmain_sh
deleted file mode 100644
index 409b69508..000000000
--- a/package/libp11/patches/patch-ltmain_sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- libp11-0.2.7.orig/ltmain.sh 2009-10-20 14:38:20.000000000 +0200
-+++ libp11-0.2.7/ltmain.sh 2011-01-15 22:58:43.000000000 +0100
-@@ -4765,7 +4765,7 @@ func_mode_link ()
- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
- # @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-fstack-protector*|-flto)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- func_append compile_command " $arg"
diff --git a/package/libpcap/Makefile b/package/libpcap/Makefile
index 6cac920ee..efc9440da 100644
--- a/package/libpcap/Makefile
+++ b/package/libpcap/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libpcap
-PKG_VERSION:= 1.9.1
+PKG_VERSION:= 1.10.4
PKG_RELEASE:= 1
-PKG_HASH:= 635237637c5b619bcceba91900666b64d56ecb7be63f298f601ec786ce087094
+PKG_HASH:= ed19a0383fad72e3ad435fd239d7cd80d64916b87269550159d20e47160ebe5f
PKG_DESCR:= low-level packet capture library
PKG_SECTION:= libs/net
PKG_URL:= http://www.tcpdump.org/
diff --git a/package/libpciaccess/Makefile b/package/libpciaccess/Makefile
index 13abcdbeb..89e388cd4 100644
--- a/package/libpciaccess/Makefile
+++ b/package/libpciaccess/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libpciaccess
-PKG_VERSION:= 0.13.4
+PKG_VERSION:= 0.16
PKG_RELEASE:= 1
-PKG_HASH:= 74d92bda448e6fdb64fee4e0091255f48d625d07146a121653022ed3a0ca1f2f
+PKG_HASH:= 84413553994aef0070cf420050aa5c0a51b1956b404920e21b81e96db6a61a27
PKG_DESCR:= pci access library
PKG_SECTION:= x11/libs
PKG_SITES:= http://www.x.org/releases/individual/lib/
diff --git a/package/libptytty/Makefile b/package/libptytty/Makefile
new file mode 100644
index 000000000..cb1126ce1
--- /dev/null
+++ b/package/libptytty/Makefile
@@ -0,0 +1,32 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libptytty
+PKG_VERSION:= 2.0
+PKG_RELEASE:= 1
+PKG_HASH:= 8033ed3aadf28759660d4f11f2d7b030acf2a6890cb0f7926fb0cfa6739d31f7
+PKG_DESCR:= pty library
+PKG_SECTION:= libs/misc
+PKG_SITES:= http://dist.schmorp.de/libptytty/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBPTYTTY,libptytty,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+TARGET_CFLAGS+= -lstdc++
+CONFIG_STYLE:= cmake
+CMAKE_FLAGS+= -DTTY_GID_SUPPORT_EXITCODE=0 \
+ -DTTY_GID_SUPPORT_EXITCODE__TRYRUN_OUTPUT=0
+XAKE_FLAGS+= VERBOSE=1
+
+libptytty-install:
+ $(INSTALL_DIR) $(IDIR_LIBPTYTTY)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libptytty*.so* \
+ $(IDIR_LIBPTYTTY)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libptytty/patches/patch-CMakeLists_txt b/package/libptytty/patches/patch-CMakeLists_txt
new file mode 100644
index 000000000..09a108c5a
--- /dev/null
+++ b/package/libptytty/patches/patch-CMakeLists_txt
@@ -0,0 +1,13 @@
+--- libptytty-2.0.orig/CMakeLists.txt 2021-08-04 16:07:44.000000000 +0200
++++ libptytty-2.0/CMakeLists.txt 2024-03-03 19:23:33.085544136 +0100
+@@ -323,10 +323,6 @@ configure_file(
+ libptytty.pc.in
+ libptytty.pc)
+
+-add_executable(c-sample eg/c-sample.c)
+-target_include_directories(c-sample PRIVATE src)
+-target_link_libraries(c-sample ptytty)
+-
+ add_custom_command(
+ OUTPUT ${CMAKE_SOURCE_DIR}/doc/libptytty.3
+ DEPENDS ${CMAKE_SOURCE_DIR}/doc/libptytty.3.pod
diff --git a/package/libressl/Makefile b/package/libressl/Makefile
index 4eeec9cfd..6af4b2c0f 100644
--- a/package/libressl/Makefile
+++ b/package/libressl/Makefile
@@ -4,15 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libressl
-PKG_VERSION:= 3.4.1
-PKG_RELEASE:= 2
-PKG_HASH:= 107ceae6ca800e81cb563584c16afa36d6c7138fade94a2b3e9da65456f7c61c
+PKG_VERSION:= 3.8.3
+PKG_RELEASE:= 1
+PKG_HASH:= a65f40e3ef6e3c9451c8318e6f2c454c367e67f09c0cde1849731a4d6ecc7272
PKG_DESCR:= ssl/tls library
PKG_SECTION:= libs/crypto
PKG_URL:= http://www.libressl.org
PKG_SITES:= http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
PKG_OPTS:= dev
+PKG_ARCH_DEPENDS:= !m68k !xtensa
+
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
PKG_SUBPKGS:= LIBRESSL LIBRESSL_UTIL
@@ -38,13 +40,13 @@ CONFIGURE_ARGS+= --disable-hardening
endif
libressl-install:
+ ${INSTALL_DIR} ${IDIR_LIBRESSL}/etc/ssl
+ ${CP} ${WRKINST}/etc/ssl/openssl.cnf ${IDIR_LIBRESSL}/etc/ssl
$(INSTALL_DIR) $(IDIR_LIBRESSL)/usr/lib
$(CP) $(WRKINST)/usr/lib/lib{crypto,ssl,tls}.so* \
$(IDIR_LIBRESSL)/usr/lib
libressl-util-install:
- ${INSTALL_DIR} ${IDIR_LIBRESSL_UTIL}/etc/ssl
- ${CP} ${WRKINST}/etc/ssl/openssl.cnf ${IDIR_LIBRESSL_UTIL}/etc/ssl
${INSTALL_DIR} ${IDIR_LIBRESSL_UTIL}/usr/bin
${CP} ${WRKINST}/usr/bin/openssl ${IDIR_LIBRESSL_UTIL}/usr/bin
diff --git a/package/libressl/patches/patch-Makefile_in b/package/libressl/patches/patch-Makefile_in
deleted file mode 100644
index 745dc246d..000000000
--- a/package/libressl/patches/patch-Makefile_in
+++ /dev/null
@@ -1,11 +0,0 @@
---- libressl-3.1.2.orig/Makefile.in 2020-05-21 05:00:51.000000000 +0200
-+++ libressl-3.1.2/Makefile.in 2020-06-06 20:50:41.000000000 +0200
-@@ -191,7 +191,7 @@ am__define_uniq_tagged_files = \
- ETAGS = etags
- CTAGS = ctags
- CSCOPE = cscope
--DIST_SUBDIRS = crypto ssl tls include apps man tests
-+DIST_SUBDIRS = crypto ssl tls include apps
- am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/libcrypto.pc.in \
- $(srcdir)/libssl.pc.in $(srcdir)/libtls.pc.in \
- $(srcdir)/openssl.pc.in COPYING ChangeLog INSTALL compile \
diff --git a/package/libseat/Makefile b/package/libseat/Makefile
new file mode 100644
index 000000000..b408fcaf6
--- /dev/null
+++ b/package/libseat/Makefile
@@ -0,0 +1,31 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libseat
+PKG_VERSION:= 0.7.0
+PKG_RELEASE:= 1
+PKG_HASH:= ea6ccbaf86949dba4eda64761b11aa8d05b61fc60f569b0fc05f2c4d06baeb87
+PKG_DESCR:= seat library
+PKG_SECTION:= libs/misc
+PKG_URL:= https://git.sr.ht/~kennylevinsen/seatd
+PKG_SITES:= https://git.sr.ht/~kennylevinsen/seatd
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBSEAT,libseat,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+libseat-install:
+ $(INSTALL_DIR) $(IDIR_LIBSEAT)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libseat*.so* \
+ $(IDIR_LIBSEAT)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libshout/Makefile b/package/libshout/Makefile
index 7a79fb145..f43489234 100644
--- a/package/libshout/Makefile
+++ b/package/libshout/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libshout
-PKG_VERSION:= 2.3.1
+PKG_VERSION:= 2.4.6
PKG_RELEASE:= 1
-PKG_HASH:= cf3c5f6b4a5e3fcfbe09fb7024aa88ad4099a9945f7cb037ec06bcee7a23926e
+PKG_HASH:= 39cbd4f0efdfddc9755d88217e47f8f2d7108fa767f9d58a2ba26a16d8f7c910
PKG_DESCR:= library which can be used to write a source client for streaming
PKG_SECTION:= libs/audio
PKG_DEPENDS:= libvorbis libogg
diff --git a/package/libsndfile/Makefile b/package/libsndfile/Makefile
index 00faca413..bea414e08 100644
--- a/package/libsndfile/Makefile
+++ b/package/libsndfile/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libsndfile
-PKG_VERSION:= 1.0.27
+PKG_VERSION:= 1.0.28
PKG_RELEASE:= 1
-PKG_HASH:= a391952f27f4a92ceb2b4c06493ac107896ed6c76be9a613a4731f076d30fac0
+PKG_HASH:= 1ff33929f042fa333aed1e8923aa628c3ee9e1eb85512686c55092d1e5a9dfa9
PKG_DESCR:= reading and writing files containing sampled sound
PKG_SECTION:= libs/audio
PKG_URL:= http://www.mega-nerd.com/libsndfile/
diff --git a/package/libssh2/Makefile b/package/libssh2/Makefile
index b832133e5..1227c0440 100644
--- a/package/libssh2/Makefile
+++ b/package/libssh2/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libssh2
-PKG_VERSION:= 1.8.0
+PKG_VERSION:= 1.11.0
PKG_RELEASE:= 1
-PKG_HASH:= 39f34e2f6835f4b992cafe8625073a88e5a28ba78f83e8099610a7b3af4676d4
+PKG_HASH:= 3736161e41e2693324deb38c26cfdc3efe6209d634ba4258db1cecff6a5ad461
PKG_DESCR:= client-side c library implementing ssh2 protocol
PKG_SECTION:= libs/crypto
PKG_BUILDDEP:= zlib libressl
diff --git a/package/libtasn1/Makefile b/package/libtasn1/Makefile
index 9b4bc9ec6..e91f75001 100644
--- a/package/libtasn1/Makefile
+++ b/package/libtasn1/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libtasn1
-PKG_VERSION:= 4.12
+PKG_VERSION:= 4.19.0
PKG_RELEASE:= 1
-PKG_HASH:= 6753da2e621257f33f5b051cc114d417e5206a0818fe0b1ecfd6153f70934753
+PKG_HASH:= 1613f0ac1cf484d6ec0ce3b8c06d56263cc7242f1c23b30d82d23de345a63f7a
PKG_DESCR:= asn.1 and der structures manipulation library
PKG_SECTION:= libs/crypto
PKG_URL:= http://www.gnupg.org/
diff --git a/package/libtirpc/Makefile b/package/libtirpc/Makefile
index 2fe3e4a05..5cbddde61 100644
--- a/package/libtirpc/Makefile
+++ b/package/libtirpc/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libtirpc
-PKG_VERSION:= 1.3.1
+PKG_VERSION:= 1.3.4
PKG_RELEASE:= 1
-PKG_HASH:= 245895caf066bec5e3d4375942c8cb4366adad184c29c618d97f724ea309ee17
+PKG_HASH:= 1e0b0c7231c5fa122e06c0609a76723664d068b0dba3b8219b63e6340b347860
PKG_DESCR:= transport independent rpc library
PKG_SECTION:= libs/net
PKG_URL:= http://sourceforge.net/projects/libtirpc/
diff --git a/package/libtirpc/patches/patch-src_clnt_bcast_c b/package/libtirpc/patches/patch-src_clnt_bcast_c
new file mode 100644
index 000000000..86f56c7f2
--- /dev/null
+++ b/package/libtirpc/patches/patch-src_clnt_bcast_c
@@ -0,0 +1,11 @@
+--- libtirpc-1.3.4.orig/src/clnt_bcast.c 2023-10-07 09:54:42.000000000 +0200
++++ libtirpc-1.3.4/src/clnt_bcast.c 2024-02-08 16:26:57.298094444 +0100
+@@ -40,7 +40,7 @@
+ */
+ #include <sys/socket.h>
+ #include <sys/types.h>
+-#include <sys/queue.h>
++#include "queue.h"
+
+ #include <net/if.h>
+ #include <netinet/in.h>
diff --git a/package/libtirpc/patches/patch-src_clnt_fd_locks_h b/package/libtirpc/patches/patch-src_clnt_fd_locks_h
new file mode 100644
index 000000000..6927fca68
--- /dev/null
+++ b/package/libtirpc/patches/patch-src_clnt_fd_locks_h
@@ -0,0 +1,11 @@
+--- libtirpc-1.3.4.orig/src/clnt_fd_locks.h 2023-10-07 09:54:42.000000000 +0200
++++ libtirpc-1.3.4/src/clnt_fd_locks.h 2024-02-08 16:25:34.795598116 +0100
+@@ -30,7 +30,7 @@
+ #ifndef _CLNT_FD_LOCKS_H
+ #define _CLNT_FD_LOCKS_H
+
+-#include <sys/queue.h>
++#include "queue.h"
+ #include <errno.h>
+ #include <reentrant.h>
+ #include <rpc/xdr.h>
diff --git a/package/libtorrent/Makefile b/package/libtorrent/Makefile
index f631b37fd..1ff5c5b01 100644
--- a/package/libtorrent/Makefile
+++ b/package/libtorrent/Makefile
@@ -4,29 +4,30 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libtorrent
-PKG_VERSION:= 0.13.6
+PKG_VERSION:= 0.13.8
PKG_RELEASE:= 1
-PKG_HASH:= 2838a08c96edfd936aff8fbf99ecbb930c2bfca3337dd1482eb5fccdb80d5a04
+PKG_HASH:= ed115a28f4ae8cfcd33b94a597c076ca74fd549867a26e4fac9505c27288e983
PKG_DESCR:= bittorrent library
PKG_SECTION:= libs/net
PKG_DEPENDS:= libsigc++ zlib libressl
PKG_BUILDDEP:= libsigc++ zlib libressl
PKG_NEEDS:= intl
PKG_URL:= https://rakshasa.github.io/rtorrent/
-PKG_SITES:= http://rtorrent.net/downloads/
+PKG_SITES:= https://github.com/rakshasa/rtorrent/releases/download/v0.9.8/
PKG_OPTS:= dev
+PKG_CFLINE_LIBTORRENT:= depends on ADK_BROKEN
+
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,LIBTORRENT,libtorrent,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --enable-aligned \
--without-kqueue \
--disable-instrumentation \
- --with-zlib=$(STAGING_TARGET_DIR)
+ --without-zlib
libtorrent-install:
${INSTALL_DIR} ${IDIR_LIBTORRENT}/usr/lib
diff --git a/package/libtorrent/patches/patch-configure_ac b/package/libtorrent/patches/patch-configure_ac
deleted file mode 100644
index 00e1c2fec..000000000
--- a/package/libtorrent/patches/patch-configure_ac
+++ /dev/null
@@ -1,18 +0,0 @@
---- libtorrent-0.13.6.orig/configure.ac 2015-09-03 20:57:38.000000000 +0200
-+++ libtorrent-0.13.6/configure.ac 2016-05-25 21:29:51.436557128 +0200
-@@ -19,7 +19,6 @@ AC_SUBST(LIBTORRENT_INTERFACE_VERSION_NO
-
- AM_INIT_AUTOMAKE
- AC_CONFIG_HEADERS(config.h)
--AM_PATH_CPPUNIT(1.9.6)
-
- AC_PROG_CXX
-
-@@ -99,7 +98,6 @@ AC_CHECK_FUNCS(posix_memalign)
- TORRENT_CHECK_MADVISE()
- TORRENT_CHECK_CACHELINE()
- TORRENT_CHECK_POPCOUNT()
--TORRENT_CHECK_EXECINFO()
- TORRENT_CHECK_PTHREAD_SETNAME_NP()
- TORRENT_MINCORE()
- TORRENT_OTFD()
diff --git a/package/libtorrent/patches/patch-scripts_ax_check_zlib_m4 b/package/libtorrent/patches/patch-scripts_ax_check_zlib_m4
deleted file mode 100644
index 1e629d011..000000000
--- a/package/libtorrent/patches/patch-scripts_ax_check_zlib_m4
+++ /dev/null
@@ -1,11 +0,0 @@
---- libtorrent-0.13.6.orig/scripts/ax_check_zlib.m4 2015-08-08 17:01:32.000000000 +0200
-+++ libtorrent-0.13.6/scripts/ax_check_zlib.m4 2016-05-25 21:33:01.003893982 +0200
-@@ -79,7 +79,7 @@ AC_ARG_WITH([zlib],
- AC_MSG_RESULT(yes)
- if test -d "$withval"
- then
-- zlib_places="$withval $zlib_places"
-+ zlib_places="$withval"
- else
- AC_MSG_WARN([Sorry, $withval does not exist, checking usual places])
- fi
diff --git a/package/libudfread/Makefile b/package/libudfread/Makefile
new file mode 100644
index 000000000..7426e3ba5
--- /dev/null
+++ b/package/libudfread/Makefile
@@ -0,0 +1,28 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libudfread
+PKG_VERSION:= 1.1.2
+PKG_RELEASE:= 1
+PKG_HASH:= 2bf16726ac98d093156195bb049a663e07d3323e079c26912546f4e05c77bac5
+PKG_DESCR:= udf library
+PKG_SECTION:= libs/misc
+PKG_SITES:= http://mirrors.kodi.tv/build-deps/sources/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBUDFREAD,libudfread,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= bootstrap
+
+libudfread-install:
+ $(INSTALL_DIR) $(IDIR_LIBUDFREAD)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libudfread*.so* \
+ $(IDIR_LIBUDFREAD)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/liburcu/Makefile b/package/liburcu/Makefile
new file mode 100644
index 000000000..60477c389
--- /dev/null
+++ b/package/liburcu/Makefile
@@ -0,0 +1,27 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= liburcu
+PKG_VERSION:= 0.14.0
+PKG_RELEASE:= 1
+PKG_HASH:= ca43bf261d4d392cff20dfae440836603bf009fce24fdc9b2697d837a2239d4f
+PKG_DESCR:= userspace rcu (read-copy-update) libraries
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://lttng.org/files/urcu/
+PKG_OPTS:= dev
+
+DISTFILES:= userspace-rcu-$(PKG_VERSION).tar.bz2
+WRKDIST= ${WRKDIR}/userspace-rcu-${PKG_VERSION}
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBURCU,liburcu,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+liburcu-install:
+ $(INSTALL_DIR) $(IDIR_LIBURCU)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/liburcu*.so* \
+ $(IDIR_LIBURCU)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libvncserver/Makefile b/package/libvncserver/Makefile
new file mode 100644
index 000000000..a3812648c
--- /dev/null
+++ b/package/libvncserver/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libvncserver
+PKG_VERSION:= 0.9.14
+PKG_RELEASE:= 1
+PKG_HASH:= 83104e4f7e28b02f8bf6b010d69b626fae591f887e949816305daebae527c9a5
+PKG_DESCR:= VNC library
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= cmake-host
+PKG_SITES:= https://github.com/LibVNC/libvncserver/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= LibVNCServer-$(PKG_VERSION).tar.gz
+
+WRKDIST= ${WRKDIR}/${PKG_NAME}-LibVNCServer-${PKG_VERSION}
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBVNCSERVER,libvncserver,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+CONFIG_STYLE:= cmake
+
+libvncserver-install:
+ $(INSTALL_DIR) $(IDIR_LIBVNCSERVER)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libvncserver*.so* \
+ $(IDIR_LIBVNCSERVER)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libvncclient*.so* \
+ $(IDIR_LIBVNCSERVER)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libvpx/Makefile b/package/libvpx/Makefile
index 7aa126402..7f31d719c 100644
--- a/package/libvpx/Makefile
+++ b/package/libvpx/Makefile
@@ -4,19 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libvpx
-PKG_VERSION:= 1.6.0
+PKG_VERSION:= 1.14.0
PKG_RELEASE:= 1
-PKG_HASH:= d0afbb5eb1ecae68f8d578abace160a97e2e8a230e3028cf4db115d59a695aad
+PKG_HASH:= 5f21d2db27071c8a46f1725928a10227ae45c5cd1cad3727e4aafbe476e321fa
PKG_DESCR:= vp8/vp9 codec library
PKG_SECTION:= libs/video
PKG_BUILDDEP:= yasm-host
PKG_URL:= http://www.webmproject.org/about/
-PKG_SITES:= http://storage.googleapis.com/downloads.webmproject.org/releases/webm/
+PKG_SITES:= https://github.com/webmproject/libvpx/archive/refs/tags/
PKG_OPTS:= dev
-PKG_ARCH_DEPENDS:= !m68k
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
+DISTFILES:= v${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
@@ -25,6 +23,9 @@ $(eval $(call PKG_template,LIBVPX,libvpx,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEP
CONFIGURE_ENV+= LD=$(TARGET_CC)
CONFIG_STYLE:= minimal
+ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
+CONFIGURE_ARGS+= --target=armv8-linux-gcc
+endif
ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9),y)
CONFIGURE_ARGS+= --target=armv7-linux-gcc
endif
@@ -43,6 +44,9 @@ endif
ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3P),y)
CONFIGURE_ARGS+= --target=armv7-linux-gcc
endif
+ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI4),y)
+CONFIGURE_ARGS+= --target=armv7-linux-gcc
+endif
ifeq ($(ADK_TARGET_SYSTEM_SHARP_ZAURUS),y)
CONFIGURE_ARGS+= --target=armv5te-linux-gcc
endif
diff --git a/package/libvpx/patches/patch-configure b/package/libvpx/patches/patch-configure
deleted file mode 100644
index e3ceac490..000000000
--- a/package/libvpx/patches/patch-configure
+++ /dev/null
@@ -1,18 +0,0 @@
---- libvpx-1.5.0.orig/configure 2015-11-09 23:12:38.000000000 +0100
-+++ libvpx-1.5.0/configure 2015-11-22 16:17:41.869446856 +0100
-@@ -111,6 +111,7 @@ all_platforms="${all_platforms} armv7-wi
- all_platforms="${all_platforms} armv7s-darwin-gcc"
- all_platforms="${all_platforms} mips32-linux-gcc"
- all_platforms="${all_platforms} mips64-linux-gcc"
-+all_platforms="${all_platforms} loongson2f-linux-gcc"
- all_platforms="${all_platforms} sparc-solaris-gcc"
- all_platforms="${all_platforms} x86-android-gcc"
- all_platforms="${all_platforms} x86-darwin8-gcc"
-@@ -242,6 +243,7 @@ ARCH_EXT_LIST="
- dspr2
- msa
- mips64
-+ loongson2f
-
- mmx
- sse
diff --git a/package/libwebp/Makefile b/package/libwebp/Makefile
index 967a686d5..d894f3831 100644
--- a/package/libwebp/Makefile
+++ b/package/libwebp/Makefile
@@ -4,24 +4,24 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libwebp
-PKG_VERSION:= 0.3.1
+PKG_VERSION:= 1.2.2
PKG_RELEASE:= 1
-PKG_HASH:= b37932c625322a69fe4e9b88884b5c7aed2b3eaf9fd5e5b480aee339a92e6ee7
+PKG_HASH:= 51e9297aadb7d9eb99129fe0050f53a11fcce38a0848fb2b0389e385ad93695e
PKG_DESCR:= new image format for the web
PKG_SECTION:= libs/image
+PKG_BUILDDEP:= cmake-host
PKG_URL:= https://developers.google.com/speed/webp/
-PKG_SITES:= https://webp.googlecode.com/files/
+PKG_SITES:= https://github.com/webmproject/libwebp/archive/refs/tags/
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+DISTFILES:= v${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
+CONFIG_STYLE:= cmake
+
$(eval $(call PKG_template,LIBWEBP,libwebp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
libwebp-install:
- $(INSTALL_DIR) $(IDIR_LIBWEBP)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libwebp*.so* \
- $(IDIR_LIBWEBP)/usr/lib
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/libwebsockets/Makefile b/package/libwebsockets/Makefile
new file mode 100644
index 000000000..87eb01678
--- /dev/null
+++ b/package/libwebsockets/Makefile
@@ -0,0 +1,31 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libwebsockets
+PKG_VERSION:= 4.3.3
+PKG_RELEASE:= 1
+PKG_HASH:= 6fd33527b410a37ebc91bb64ca51bdabab12b076bc99d153d7c5dd405e4bdf90
+PKG_DESCR:= lightweight network library
+PKG_SECTION:= libs/net
+PKG_BUILDDEP:= cmake-host zlib libressl
+PKG_DEPENDS:= zlib libressl
+PKG_URL:= https://libwebsockets.org/
+PKG_SITES:= https://github.com/warmcat/libwebsockets/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBWEBSOCKETS,libwebsockets,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+CONFIG_STYLE:= cmake
+
+libwebsockets-install:
+ $(INSTALL_DIR) $(IDIR_LIBWEBSOCKETS)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libwebsockets*.so* \
+ $(IDIR_LIBWEBSOCKETS)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libx264/Makefile b/package/libx264/Makefile
index 18b92ffc1..394cbcd82 100644
--- a/package/libx264/Makefile
+++ b/package/libx264/Makefile
@@ -13,8 +13,6 @@ PKG_URL:= http://www.videolan.org/developers/x264.html
PKG_SITES:= http://git.videolan.org/git/x264.git
PKG_OPTS:= dev
-PKG_BUILDDEP_IBM_X40:= yasm-host
-
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LIBX264,libx264,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
diff --git a/package/libxcb/Makefile b/package/libxcb/Makefile
index a8b52760d..5dbd1b4b5 100644
--- a/package/libxcb/Makefile
+++ b/package/libxcb/Makefile
@@ -4,12 +4,12 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libxcb
-PKG_VERSION:= 1.12
+PKG_VERSION:= 1.16
PKG_RELEASE:= 1
-PKG_HASH:= 092f147149d8a6410647a848378aaae749304d5b73e028ccb8306aa8a9e26f06
+PKG_HASH:= bc0f75f84b28e6496a19a1d094d7e47def861a50cb7cce5b23b62eecdc2a4479
PKG_DESCR:= interface to the x window system protocol
PKG_SECTION:= x11/libs
-PKG_BUILDDEP+= python2 libpthread-stubs libxslt libXau xcb-proto
+PKG_BUILDDEP:= python3 libpthread-stubs libxslt libXau xcb-proto
HOST_BUILDDEP:= libXau-host libpthread-stubs-host xcb-proto-host
PKG_SITES:= http://xcb.freedesktop.org/dist/
PKG_OPTS:= dev
@@ -22,10 +22,10 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,LIBXCB,libxcb,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,LIBXCB,libxcb,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-include $(ADK_TOPDIR)/mk/python.mk
+include $(ADK_TOPDIR)/mk/python3.mk
HOST_STYLE:= auto
-CONFIGURE_ENV+= PYTHON=$(PYTHON)
+CONFIGURE_ENV+= PYTHONPATH=$(PYTHON) PYTHON=python3
libxcb-install:
${INSTALL_DIR} ${IDIR_LIBXCB}/usr/lib
diff --git a/package/libxcrypt/Makefile b/package/libxcrypt/Makefile
new file mode 100644
index 000000000..3d6bb2907
--- /dev/null
+++ b/package/libxcrypt/Makefile
@@ -0,0 +1,30 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libxcrypt
+PKG_VERSION:= 4.4.36
+PKG_RELEASE:= 1
+PKG_HASH:= b979838d5f1f238869d467484793b72b8bca64c4eae696fdbba0a9e0b6c28453
+PKG_DESCR:= crypt library
+PKG_SECTION:= libs/crypto
+PKG_SITES:= https://github.com/besser82/libxcrypt/archive/refs/tags/
+PKG_OPTS:= dev
+
+PKG_LIBC_DEPENDS:= glibc
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBXCRYPT,libxcrypt,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= autogen
+
+libxcrypt-install:
+ $(INSTALL_DIR) $(IDIR_LIBXCRYPT)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/lib*crypt*.so* \
+ $(IDIR_LIBXCRYPT)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libxkbcommon/Makefile b/package/libxkbcommon/Makefile
new file mode 100644
index 000000000..1650043a9
--- /dev/null
+++ b/package/libxkbcommon/Makefile
@@ -0,0 +1,35 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= libxkbcommon
+PKG_VERSION:= 1.5.0
+PKG_RELEASE:= 1
+PKG_HASH:= 560f11c4bbbca10f495f3ef7d3a6aa4ca62b4f8fb0b52e7d459d18a26e46e017
+PKG_DESCR:= library for handling of keyboard descriptions
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= meson-host
+PKG_SITES:= https://xkbcommon.org/download/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBXKBCOMMON,libxkbcommon,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+MESON_FLAGS+= -Denable-docs=false \
+ -Denable-wayland=false \
+ -Dxkb-config-root=/usr/share/X11/xkb
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+libxkbcommon-install:
+ $(INSTALL_DIR) $(IDIR_LIBXKBCOMMON)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libxkbcommon*.so* \
+ $(IDIR_LIBXKBCOMMON)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libxml2/Makefile b/package/libxml2/Makefile
index 5835c98d7..20a1428b7 100644
--- a/package/libxml2/Makefile
+++ b/package/libxml2/Makefile
@@ -4,48 +4,33 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= libxml2
-PKG_VERSION:= 2.9.4
+PKG_VERSION:= 2.10.3
PKG_RELEASE:= 1
-PKG_HASH:= ffb911191e509b966deb55de705387f14156e1a56b21824357cdf0053233633c
+PKG_HASH:= 5d2cc3d78bec3dbe212a9d7fa629ada25a7da928af432c93060ff5c17ee28a9c
PKG_DESCR:= xml parser and toolkit
PKG_SECTION:= libs/data
PKG_DEPENDS:= zlib
-PKG_BUILDDEP:= libxml2-host python2 zlib
-HOST_BUILDDEP:= python2-host
+PKG_BUILDDEP:= libxml2-host python3 zlib
+HOST_BUILDDEP:= python3-host
PKG_URL:= http://www.xmlsoft.org/
-PKG_SITES:= http://xmlsoft.org/sources/
+PKG_SITES:= https://download.gnome.org/sources/libxml2/2.10/
PKG_OPTS:= dev
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
-
-PKG_SUBPKGS:= LIBXML2 LIBXML2_PYTHON
-PKGSD_LIBXML2_PYTHON:= xml python bindings
-PKGSC_LIBXML2_PYTHON:= libs/misc
-PKGSB_LIBXML2_PYTHON:= python2
-PKGSS_LIBXML2_PYTHON:= python2
-
include $(ADK_TOPDIR)/mk/host.mk
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,LIBXML2,libxml2,$(PKG_VERSION)-$(PKG_RELEASE)))
$(eval $(call PKG_template,LIBXML2,libxml2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
-$(eval $(call PKG_template,LIBXML2_PYTHON,libxml2-python,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_LIBXML2_PYTHON),$(PKGSC_LIBXML2_PYTHON)))
-
-include $(ADK_TOPDIR)/mk/python.mk
-TARGET_CPPFLAGS+= -I$(STAGING_TARGET_DIR)/usr/include/python$(PYTHON_VERSION)
-HOST_CPPFLAGS+= -I$(STAGING_HOST_DIR)/usr/include/python$(PYTHON_VERSION)
HOST_STYLE:= auto
-HOST_CONFIGURE_ARGS+= --with-python \
+HOST_CONFIGURE_ARGS+= --without-python \
--with-threads \
--without-iconv \
--without-lzma \
--without-zlib
-AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --without-c14n \
--without-debug \
- --without-docbook \
--with-catalog \
--with-html \
--without-ftp \
@@ -69,17 +54,12 @@ CONFIGURE_ARGS+= --without-c14n \
--with-xinclude \
--with-xpath \
--with-xptr \
- --with-python \
+ --without-python \
--with-zlib='$(STAGING_TARGET_DIR)/usr'
libxml2-install:
$(INSTALL_DIR) $(IDIR_LIBXML2)/usr/lib
$(CP) $(WRKINST)/usr/lib/libxml2.so* $(IDIR_LIBXML2)/usr/lib
-libxml2-python-install:
- $(INSTALL_DIR) $(IDIR_LIBXML2_PYTHON)/usr/lib/python/site-packages
- $(CP) $(WRKINST)/usr/lib/python/site-packages/*.{so,py} \
- $(IDIR_LIBXML2_PYTHON)/usr/lib/python/site-packages
-
include $(ADK_TOPDIR)/mk/host-bottom.mk
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/libxml2/patches/patch-Makefile_am b/package/libxml2/patches/patch-Makefile_am
deleted file mode 100644
index f14a120d9..000000000
--- a/package/libxml2/patches/patch-Makefile_am
+++ /dev/null
@@ -1,14 +0,0 @@
---- libxml2-2.9.2.orig/Makefile.am 2014-10-13 05:02:53.000000000 -0500
-+++ libxml2-2.9.2/Makefile.am 2015-02-11 12:51:49.858163855 -0600
-@@ -2,9 +2,9 @@
-
- ACLOCAL_AMFLAGS = -I m4
-
--SUBDIRS = include . doc example xstc $(PYTHON_SUBDIR)
-+SUBDIRS = include . xstc $(PYTHON_SUBDIR)
-
--DIST_SUBDIRS = include . doc example python xstc
-+DIST_SUBDIRS = include . python xstc
-
- AM_CPPFLAGS = -I$(top_builddir)/include -I$(srcdir)/include
-
diff --git a/package/libxml2/patches/patch-configure_ac b/package/libxml2/patches/patch-configure_ac
deleted file mode 100644
index 6cbef4845..000000000
--- a/package/libxml2/patches/patch-configure_ac
+++ /dev/null
@@ -1,96 +0,0 @@
---- libxml2-2.9.2.orig/configure.ac 2014-10-15 23:06:15.000000000 -0500
-+++ libxml2-2.9.2/configure.ac 2015-02-11 12:53:35.494162888 -0600
-@@ -837,62 +837,13 @@ if test "$with_python" != "no" ; then
- echo Found python in environment PYTHON=$PYTHON
- with_python=`$PYTHON -c "import sys; print(sys.exec_prefix)"`
- else
-- AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
-- fi
-- fi
-- fi
-- fi
-- if test "$PYTHON" != ""
-- then
-- PYTHON_VERSION=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_version())"`
-- PYTHON_INCLUDES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_inc())"`
--# does not work as it produce a /usr/lib/python path instead of/usr/lib64/python
--#
--# PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
-- echo Found Python version $PYTHON_VERSION
-- fi
-- if test "$PYTHON_VERSION" != "" -a "$PYTHON_INCLUDES" = ""
-- then
-- if test -r $with_python/include/python$PYTHON_VERSION/Python.h
-- then
-- PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
-- else
-- if test -r $prefix/include/python$PYTHON_VERSION/Python.h
-- then
-- PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
-- else
-- if test -r /usr/include/python$PYTHON_VERSION/Python.h
-- then
-- PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
-- else
-- if test -r $with_python/include/Python.h
-- then
-- PYTHON_INCLUDES=$with_python/include
-- else
-- echo could not find python$PYTHON_VERSION/Python.h or $with_python/include/Python.h
-- fi
-+ AC_PATH_PROG(PYTHON, python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
- fi
- fi
- fi
- fi
-- if test "$with_python_install_dir" != ""
-- then
-- PYTHON_SITE_PACKAGES="$with_python_install_dir"
-- fi
-- if test "$PYTHON_VERSION" != "" -a "$PYTHON_SITE_PACKAGES" = ""
-- then
-- if test -d $libdir/python$PYTHON_VERSION/site-packages
-- then
-- PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
-- else
-- if test -d $with_python/lib/site-packages
-- then
-- PYTHON_SITE_PACKAGES=$with_python/lib/site-packages
-- else
-- PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"`
-- fi
-- fi
-- fi
-+ PYTHON_INCLUDES=`python$PYTHON_VERSION-config --includes`
-+ PYTHON_SITE_PACKAGES=${prefix}/lib/python$PYTHON_VERSION/site-packages
- pythondir='$(PYTHON_SITE_PACKAGES)'
- PYTHON_LIBS=`python$PYTHON_VERSION-config --ldflags`
- else
-@@ -1065,26 +1016,7 @@ else
- THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS"
- ;;
- *linux*)
-- if test "${GCC}" = "yes" ; then
-- GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`
-- GCC_MAJOR=`echo ${GCC_VERSION} | sed 's+\..*++'`
-- GCC_MEDIUM=`echo ${GCC_VERSION} | sed 's+[[0-9]]*\.++' | sed 's+\..*++'`
-- if test "${THREAD_LIBS}" = "-lpthread" ; then
-- if expr ${GCC_MEDIUM} \> 2 \& ${GCC_MAJOR} = 3 > /dev/null
-- then
-- THREAD_LIBS=""
-- BASE_THREAD_LIBS="-lpthread"
-- else
-- if expr ${GCC_MAJOR} \> 3 > /dev/null
-- then
-- THREAD_LIBS=""
-- BASE_THREAD_LIBS="-lpthread"
-- else
-- echo old GCC disabling weak symbols for pthread
-- fi
-- fi
-- fi
-- fi
-+ THREAD_LIBS="-lpthread"
- ;;
- esac
- if test "$WITH_THREADS" = "1" ; then
diff --git a/package/libxml2/patches/patch-python_Makefile_am b/package/libxml2/patches/patch-python_Makefile_am
deleted file mode 100644
index b3ac2539b..000000000
--- a/package/libxml2/patches/patch-python_Makefile_am
+++ /dev/null
@@ -1,12 +0,0 @@
---- libxml2-2.9.2.orig/python/Makefile.am 2014-10-03 04:00:53.000000000 -0500
-+++ libxml2-2.9.2/python/Makefile.am 2015-02-11 12:53:07.150163147 -0600
-@@ -18,8 +18,7 @@ EXTRA_DIST = \
- if WITH_PYTHON
- AM_CPPFLAGS = \
- -I$(top_builddir)/include \
-- -I$(top_srcdir)/include \
-- -I$(PYTHON_INCLUDES)
-+ -I$(top_srcdir)/include
-
- python_LTLIBRARIES = libxml2mod.la
-
diff --git a/package/libxslt/Makefile b/package/libxslt/Makefile
index 012ade2c1..3c2522122 100644
--- a/package/libxslt/Makefile
+++ b/package/libxslt/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= libxslt
-PKG_VERSION:= 1.1.29
+PKG_VERSION:= 1.1.38
PKG_RELEASE:= 1
-PKG_HASH:= b5976e3857837e7617b29f2249ebb5eeac34e249208d31f1fbf7a6ba7a4090ce
+PKG_HASH:= 1f32450425819a09acaff2ab7a5a7f8a2ec7956e505d7beeb45e843d0e1ecab1
PKG_DESCR:= xslt library
PKG_SECTION:= libs/data
PKG_DEPENDS:= libxml2
@@ -14,11 +14,9 @@ PKG_BUILDDEP:= libxslt-host libxml2
HOST_BUILDDEP:= libxml2-host
PKG_NEEDS:= c++
PKG_URL:= http://xmlsoft.org/XSLT
-PKG_SITES:= http://xmlsoft.org/sources/
+PKG_SITES:= https://download.gnome.org/sources/libxslt/1.1/
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
PKG_SUBPKGS:= LIBXSLT XSLTPROC
PKGSD_XSLTPROC:= xslt processor utility
PKGSC_XSLTPROC:= sys/misc
@@ -30,12 +28,14 @@ $(eval $(call HOST_template,LIBXSLT,libxslt,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,LIBXSLT,libxslt,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
$(eval $(call PKG_template,XSLTPROC,xsltproc,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_XSLTPROC},${PKGSC_XSLTPROC}))
+#AUTOTOOL_STYLE:= autoreconf
+HOST_LDFLAGS+= -lxml2
HOST_CONFIGURE_ARGS+= --without-python \
--without-crypto \
--with-libxml-prefix="${STAGING_HOST_DIR}/usr" \
--with-libxml-include-prefix="${STAGING_HOST_DIR}/usr/include/libxml2" \
--with-libxml-libs-prefix="${STAGING_HOST_DIR}/usr/lib"
-AUTOTOOL_STYLE:= autoreconf
+TARGET_LDFLAGS+= -lxml2
CONFIGURE_ARGS+= --with-libxml-prefix="${STAGING_TARGET_DIR}/usr" \
--with-libxml-include-prefix="${STAGING_TARGET_DIR}/usr/include/libxml2" \
--with-libxml-libs-prefix="${STAGING_TARGET_DIR}/usr/lib" \
diff --git a/package/lighttpd/Makefile b/package/lighttpd/Makefile
index c6865c145..5c126e861 100644
--- a/package/lighttpd/Makefile
+++ b/package/lighttpd/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= lighttpd
-PKG_VERSION:= 1.4.45
+PKG_VERSION:= 1.4.68
PKG_RELEASE:= 1
-PKG_HASH:= 1c97225deea33eefba6d4158c2cef27913d47553263516bbe9d2e2760fc43a3f
+PKG_HASH:= e56f37ae52b63e1ada4d76ce78005affb6e56eea2f6bdb0ce17d6d36e9583384
PKG_DESCR:= lightweight web server
PKG_SECTION:= net/http
PKG_URL:= http://www.lighttpd.net/
@@ -22,9 +22,9 @@ PKGCS_WITH_LIBRESSL:= libressl ca-certificates
PKGCD_WITHOUT_SSL:= use no ssl
PKG_SUBPKGS:= LIGHTTPD LIGHTTPD_MOD_ALIAS LIGHTTPD_MOD_AUTH
-PKG_SUBPKGS+= LIGHTTPD_MOD_CGI LIGHTTPD_MOD_DIRLIST LIGHTTPD_MOD_EVASIVE LIGHTTPD_MOD_EXPIRE LIGHTTPD_MOD_FASTCGI
+PKG_SUBPKGS+= LIGHTTPD_MOD_CGI LIGHTTPD_MOD_DIRLIST LIGHTTPD_MOD_EXPIRE LIGHTTPD_MOD_FASTCGI
PKG_SUBPKGS+= LIGHTTPD_MOD_PROXY LIGHTTPD_MOD_REDIRECT LIGHTTPD_MOD_REWRITE LIGHTTPD_MOD_SETENV
-PKG_SUBPKGS+= LIGHTTPD_MOD_VHOST LIGHTTPD_MOD_SSI LIGHTTPD_MOD_STATUS LIGHTTPD_MOD_USERTRACK
+PKG_SUBPKGS+= LIGHTTPD_MOD_VHOST LIGHTTPD_MOD_SSI LIGHTTPD_MOD_STATUS
PKGSD_LIGHTTPD_MOD_ALIAS:= alias support
PKGSN_LIGHTTPD_MOD_ALIAS:= lighttpd
PKGSD_LIGHTTPD_MOD_AUTH:= authentication support
@@ -35,8 +35,6 @@ PKGSD_LIGHTTPD_MOD_DIRLIST:= Dirlisting support
PKGSB_LIGHTTPD_MOD_DIRLIST:= pcre
PKGSS_LIGHTTPD_MOD_DIRLIST:= libpcre
PKGSN_LIGHTTPD_MOD_DIRLIST:= lighttpd
-PKGSD_LIGHTTPD_MOD_EVASIVE:= Evasive support
-PKGSN_LIGHTTPD_MOD_EVASIVE:= lighttpd
PKGSD_LIGHTTPD_MOD_EXPIRE:= Expire support
PKGSN_LIGHTTPD_MOD_EXPIRE:= lighttpd
PKGSD_LIGHTTPD_MOD_FASTCGI:= FastCGI support
@@ -55,8 +53,6 @@ PKGSD_LIGHTTPD_MOD_SSI:= SSI support
PKGSN_LIGHTTPD_MOD_SSI:= lighttpd
PKGSD_LIGHTTPD_MOD_STATUS:= Status support
PKGSN_LIGHTTPD_MOD_STATUS:= lighttpd
-PKGSD_LIGHTTPD_MOD_USERTRACK:= Usertracking support
-PKGSN_LIGHTTPD_MOD_USERTRACK:= lighttpd
PKGSD_LIGHTTPD_MOD_WEBDAV:= Webdav support
PKGSB_LIGHTTPD_MOD_WEBDAV:= libxml2 sqlite util-linux
PKGSS_LIGHTTPD_MOD_WEBDAV:= libxml2 libsqlite libuuid
@@ -79,7 +75,6 @@ $(eval $(call PKG_template,LIGHTTPD_MOD_ALIAS,lighttpd-mod-alias,$(PKG_VERSION)-
$(eval $(call PKG_template,LIGHTTPD_MOD_AUTH,lighttpd-mod-auth,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_AUTH},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_CGI,lighttpd-mod-cgi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_CGI},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_DIRLIST,lighttpd-mod-dirlist,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_DIRLIST},${PKG_SECTION}))
-$(eval $(call PKG_template,LIGHTTPD_MOD_EVASIVE,lighttpd-mod-evasive,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_EVASIVE},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_EXPIRE,lighttpd-mod-expire,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_EXPIRE},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_FASTCGI,lighttpd-mod-fastcgi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_FASTCGI},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_PROXY,lighttpd-mod-proxy,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_PROXY},${PKG_SECTION}))
@@ -89,13 +84,11 @@ $(eval $(call PKG_template,LIGHTTPD_MOD_SETENV,lighttpd-mod-setenv,$(PKG_VERSION
$(eval $(call PKG_template,LIGHTTPD_MOD_VHOST,lighttpd-mod-vhost,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_VHOST},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_SSI,lighttpd-mod-ssi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_SSI},${PKG_SECTION}))
$(eval $(call PKG_template,LIGHTTPD_MOD_STATUS,lighttpd-mod-status,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_STATUS},${PKG_SECTION}))
-$(eval $(call PKG_template,LIGHTTPD_MOD_USERTRACK,lighttpd-mod-usertrack,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIGHTTPD_MOD_USERTRACK},${PKG_SECTION}))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_ALIAS,alias))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_AUTH,auth))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_CGI,cgi))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_DIRLIST,dirlisting))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_EVASIVE,evasive))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_EXPIRE,expire))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_FASTCGI,fastcgi))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_PROXY,proxy))
@@ -105,7 +98,6 @@ $(eval $(call PKG_mod_template,LIGHTTPD_MOD_SETENV,setenv))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_VHOST,simple_vhost))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_SSI,ssi))
$(eval $(call PKG_mod_template,LIGHTTPD_MOD_STATUS,status))
-$(eval $(call PKG_mod_template,LIGHTTPD_MOD_USERTRACK,usertrack))
CONFIGURE_ARGS+= --libdir=/usr/lib/lighttpd \
--sysconfdir=/etc/lighttpd \
@@ -113,10 +105,8 @@ CONFIGURE_ARGS+= --libdir=/usr/lib/lighttpd \
--without-zlib \
--without-bzip2 \
--without-fam \
- --without-gdbm \
--without-ldap \
--without-lua \
- --without-memcache \
--without-mysql \
--without-webdav-props \
--without-webdav-locks \
diff --git a/package/lirc/Makefile b/package/lirc/Makefile
index b72992549..9f2e886c2 100644
--- a/package/lirc/Makefile
+++ b/package/lirc/Makefile
@@ -4,11 +4,12 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= lirc
-PKG_VERSION:= 0.9.4
+PKG_VERSION:= 0.10.2
PKG_RELEASE:= 1
-PKG_HASH:= dd18a6751674fd61e4a96eebc3b9e5c883389d6230811943513443522dfc5dd0
+PKG_HASH:= 3d44ec8274881cf262f160805641f0827ffcc20ade0d85e7e6f3b90e0d3d222a
PKG_DESCR:= decode and send infra-red signals
PKG_SECTION:= sys/hw
+PKG_BUILDDEP:= libxml2-host libxslt-host
PKG_URL:= http://www.lirc.org/
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=lirc/}
diff --git a/package/logitechmediaserver/Makefile b/package/logitechmediaserver/Makefile
index 5fcd398c3..fdaa45edb 100644
--- a/package/logitechmediaserver/Makefile
+++ b/package/logitechmediaserver/Makefile
@@ -4,10 +4,10 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= logitechmediaserver
-PKG_VERSION:= 7.9.1
-PKG_EXTRAVER:= 1519287262-noCPAN
+PKG_VERSION:= 8.4.1
+PKG_EXTRAVER:= 1708787582-noCPAN
PKG_RELEASE:= 1
-PKG_HASH:= c57cb0158bed9804d30283890df186964ae6ad8fe72e21857b08b6592c00fd5f
+PKG_HASH:= b521bb7e03ee24003e718298cf54c7aac29e59a2da37d55a3380904397341802
PKG_DESCR:= popular media server
PKG_SECTION:= mm/audio
PKG_NEEDS:= data
@@ -19,7 +19,7 @@ PKG_DEPENDS+= p5-dbd-sqlite p5-tie-refhash p5-template-toolkit
PKG_DEPENDS+= p5-class-xsaccessor p5-io-interface p5-anyevent
PKG_BUILDDEP:= perl
PKG_URL:= http://wiki.slimdevices.com/index.php/Logitech_Media_Server
-PKG_SITES:= http://downloads.slimdevices.com/nightly/7.9/sc/a141d03b6489a3a1c65eebc34213e809d1c95df4/
+PKG_SITES:= https://downloads.slimdevices.com/nightly/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}-${PKG_EXTRAVER}.tgz
WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION}-${PKG_EXTRAVER}
diff --git a/package/logitechmediaserver/patches/patch-Slim_Utils_OS_Linux_pm b/package/logitechmediaserver/patches/patch-Slim_Utils_OS_Linux_pm
deleted file mode 100644
index 39d9a53a6..000000000
--- a/package/logitechmediaserver/patches/patch-Slim_Utils_OS_Linux_pm
+++ /dev/null
@@ -1,13 +0,0 @@
---- logitechmediaserver-7.9.1-1502887423-noCPAN.orig/Slim/Utils/OS/Linux.pm 2017-08-09 10:50:44.000000000 +0200
-+++ logitechmediaserver-7.9.1-1502887423-noCPAN/Slim/Utils/OS/Linux.pm 2017-08-17 20:44:24.015911172 +0200
-@@ -47,6 +47,10 @@ sub getFlavor {
-
- return 'Netgear RAIDiator';
-
-+ } elsif (-f '/etc/.adktarget') {
-+
-+ return 'OpenADK';
-+
- } elsif (-f '/etc/squeezeos.version') {
-
- return 'SqueezeOS';
diff --git a/package/logrotate/Makefile b/package/logrotate/Makefile
index 4701a9c0c..166edcbdb 100644
--- a/package/logrotate/Makefile
+++ b/package/logrotate/Makefile
@@ -4,24 +4,19 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= logrotate
-PKG_VERSION:= 3.8.9
+PKG_VERSION:= 3.21.0
PKG_RELEASE:= 1
-PKG_HASH:= 700ed7ce9072a1cca324779a74797dfaefdae37ac50a817134b947c4ded1dfa7
+PKG_HASH:= 8fa12015e3b8415c121fc9c0ca53aa872f7b0702f543afda7e32b6c4900f6516
PKG_DESCR:= logfile rotation utility
PKG_SECTION:= sys/misc
PKG_DEPENDS:= libpopt
PKG_BUILDDEP:= popt
-PKG_SITES:= https://fedorahosted.org/releases/l/o/logrotate/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_SITES:= https://github.com/logrotate/logrotate/releases/download/$(PKG_VERSION)/
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,LOGROTATE,logrotate,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIG_STYLE:= manual
-TARGET_CFLAGS+= -DVERSION=\"$(PKG_VERSION)\"
-
logrotate-install:
${INSTALL_DIR} ${IDIR_LOGROTATE}/usr/sbin
${INSTALL_BIN} ${WRKINST}/usr/sbin/logrotate ${IDIR_LOGROTATE}/usr/sbin
diff --git a/package/logrotate/patches/patch-Makefile b/package/logrotate/patches/patch-Makefile
deleted file mode 100644
index 9b8fec9c3..000000000
--- a/package/logrotate/patches/patch-Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
---- logrotate-3.8.9.orig/Makefile 2015-02-13 07:11:21.000000000 +0100
-+++ logrotate-3.8.9/Makefile 2015-04-02 16:40:24.000000000 +0200
-@@ -1,11 +1,12 @@
- VERSION = $(shell awk '/Version:/ { print $$2 }' logrotate.spec)
--OS_NAME = $(shell uname -s)
--LFS = $(shell echo `getconf LFS_CFLAGS 2>/dev/null`)
--CFLAGS = -Wall -D_GNU_SOURCE -D$(OS_NAME) -DVERSION=\"$(VERSION)\" -DHAVE_STRPTIME=1 -DHAVE_QSORT $(RPM_OPT_FLAGS) $(LFS)
-+OS_NAME = Linux
-+#LFS = $(shell echo `getconf LFS_CFLAGS 2>/dev/null`)
-+CFLAGS ?=
-+CFLAGS += -D_GNU_SOURCE -D$(OS_NAME) -DVERSION=\"$(VERSION)\" -DHAVE_STRPTIME=1 -DHAVE_QSORT $(RPM_OPT_FLAGS) $(LFS)
- PROG = logrotate
- MAN = logrotate.8
- MAN5 = logrotate.conf.5
--LOADLIBES = -lpopt
-+LIBS = -lpopt
- SVNURL= svn+ssh://svn.fedorahosted.org/svn/logrotate
- SVNPUBURL = http://svn.fedorahosted.org/svn/logrotate
- SVNTAG = r$(subst .,-,$(VERSION))
-@@ -64,7 +65,7 @@ endif
- # Red Hat Linux
- ifeq ($(OS_NAME),Linux)
- INSTALL = install
-- BASEDIR = /usr
-+ BASEDIR = $(DESTDIR)/usr
- endif
-
- # FreeBSD
-@@ -124,6 +125,7 @@ show_warning:
- @echo ""
-
- $(PROG): $(OBJS)
-+ $(CC) $(LDFLAGS) -o $(PROG) $^ $(LIBS)
-
- clean:
- rm -f $(OBJS) $(PROG) core* .depend
diff --git a/package/ltp/Makefile b/package/ltp/Makefile
index c13b9489e..1a039c239 100644
--- a/package/ltp/Makefile
+++ b/package/ltp/Makefile
@@ -4,11 +4,15 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= ltp
-PKG_VERSION:= 20210524
+PKG_VERSION:= 20240129
PKG_RELEASE:= 1
PKG_DESCR:= linux test project
-PKG_HASH:= 831678c64b85a8c24957c71632752537b2266890f2d2f352da9ed0ec45458189
-PKG_DEPENDS:= bash mke2fs mkfs
+PKG_HASH:= c302f6b2ca09cbb7835f549777bdb9233fe31f7086d7ad8e65472a0804e3e025
+PKG_DEPENDS:= bash mke2fs mkfs shadow libtirpc libaio
+PKG_DEPENDS+= kmod dosfstools
+PKG_BUILDDEP+= libtirpc libaio
+PKG_KDEPENDS:= coredump bsd-process-acct ikconfig-proc cgroups
+PKG_KDEPENDS+= user-ns net-ns time-ns bpf-syscall blk-dev-loop watch-queue
PKG_NEEDS:= threads
PKG_SECTION:= base/tests
PKG_URL:= http://linux-test-project.github.io
@@ -28,19 +32,12 @@ CONFIGURE_ARGS+= --with-open-posix-testsuite \
--without-power-management-testsuite \
--without-python \
--without-perl \
- --without-expect
+ --without-expect \
+ --disable-metadata
pre-configure:
PATH="$(HOST_PATH)" $(MAKE) -C $(WRKBUILD) autotools
-# bessel float and mallopt not implemented in uClibc-ng
-pre-build:
- -rm ${WRKBUILD}/testcases/misc/math/float/float_bessel.c
- -rm -rf ${WRKBUILD}/testcases/misc/math/float/bessel
- -rm -rf ${WRKBUILD}/testcases/network/{rpc,nfs*}
- -rm -rf ${WRKBUILD}/testcases/kernel/syscalls/profil
- -rm -rf ${WRKBUILD}/testcases/kernel/syscalls/mallopt
-
ltp-install:
$(INSTALL_DIR) $(IDIR_LTP)/opt/ltp/tmp
$(CP) $(WRKINST)/usr/* $(IDIR_LTP)/opt/ltp
diff --git a/package/ltp/patches/patch-Makefile b/package/ltp/patches/patch-Makefile
new file mode 100644
index 000000000..0c47a972d
--- /dev/null
+++ b/package/ltp/patches/patch-Makefile
@@ -0,0 +1,11 @@
+--- ltp-full-20220121.orig/Makefile 2022-01-21 20:33:16.000000000 +0100
++++ ltp-full-20220121/Makefile 2022-02-23 15:14:48.211207957 +0100
+@@ -62,7 +62,7 @@ $(1):: | $$(abs_top_builddir)/$$(basenam
+ endif
+ endef
+
+-COMMON_TARGETS += testcases tools metadata
++COMMON_TARGETS += testcases tools
+
+ # Don't want to nuke the original files if we're installing in-build-tree.
+ ifneq ($(BUILD_TREE_STATE),$(BUILD_TREE_SRCDIR_INSTALL))
diff --git a/package/ltp/patches/patch-runtest_mm b/package/ltp/patches/patch-runtest_mm
deleted file mode 100644
index 968b15e1e..000000000
--- a/package/ltp/patches/patch-runtest_mm
+++ /dev/null
@@ -1,8 +0,0 @@
---- ltp-full-20170929.orig/runtest/mm 2017-09-29 17:11:53.000000000 +0200
-+++ ltp-full-20170929/runtest/mm 2017-10-05 18:58:09.655415743 +0200
-@@ -100,4 +100,4 @@ overcommit_memory06 overcommit_memory -R
-
- max_map_count max_map_count -i 10
-
--min_free_kbytes min_free_kbytes
-+#min_free_kbytes min_free_kbytes
diff --git a/package/ltp/patches/patch-runtest_sched b/package/ltp/patches/patch-runtest_sched
deleted file mode 100644
index 829b1b3dd..000000000
--- a/package/ltp/patches/patch-runtest_sched
+++ /dev/null
@@ -1,13 +0,0 @@
---- ltp-full-20190930.orig/runtest/sched 2019-09-30 13:30:25.000000000 +0200
-+++ ltp-full-20190930/runtest/sched 2019-10-29 14:36:35.718142489 +0100
-@@ -6,8 +6,8 @@ pth_str03 pth_str03
- time-schedule01 time-schedule
- trace_sched01 trace_sched -c 1
-
--hackbench01 hackbench 50 process 1000
--hackbench02 hackbench 20 thread 1000
-+#hackbench01 hackbench 50 process 500
-+#hackbench02 hackbench 20 thread 500
-
- sched_cli_serv run_sched_cliserv.sh
- # Run this stress test for 2 minutes
diff --git a/package/ltp/patches/patch-runtest_syscalls b/package/ltp/patches/patch-runtest_syscalls
deleted file mode 100644
index 3137ed3dc..000000000
--- a/package/ltp/patches/patch-runtest_syscalls
+++ /dev/null
@@ -1,11 +0,0 @@
---- ltp-full-20190930.orig/runtest/syscalls 2019-09-30 13:30:25.000000000 +0200
-+++ ltp-full-20190930/runtest/syscalls 2019-10-29 14:36:35.746144285 +0100
-@@ -330,7 +330,7 @@ fork08 fork08
- fork09 fork09
- fork10 fork10
- fork11 fork11
--fork13 fork13 -i 1000000
-+fork13 fork13 -i 10000
- fork14 fork14
-
- fpathconf01 fpathconf01
diff --git a/package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify02_c b/package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify02_c
deleted file mode 100644
index 0244804de..000000000
--- a/package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify02_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- ltp-full-20190930.orig/testcases/kernel/syscalls/fanotify/fanotify02.c 2019-09-30 13:30:25.000000000 +0200
-+++ ltp-full-20190930/testcases/kernel/syscalls/fanotify/fanotify02.c 2019-10-29 14:36:35.762145321 +0100
-@@ -10,6 +10,7 @@
- #define _GNU_SOURCE
- #include "config.h"
-
-+#define _GNU_SOURCE
- #include <stdio.h>
- #include <sys/stat.h>
- #include <sys/types.h>
diff --git a/package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify04_c b/package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify04_c
deleted file mode 100644
index 89c03fc74..000000000
--- a/package/ltp/patches/patch-testcases_kernel_syscalls_fanotify_fanotify04_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- ltp-full-20190930.orig/testcases/kernel/syscalls/fanotify/fanotify04.c 2019-09-30 13:30:25.000000000 +0200
-+++ ltp-full-20190930/testcases/kernel/syscalls/fanotify/fanotify04.c 2019-10-29 14:36:35.806148130 +0100
-@@ -11,6 +11,7 @@
- #define _GNU_SOURCE
- #include "config.h"
-
-+#define _GNU_SOURCE
- #include <stdio.h>
- #include <sys/stat.h>
- #include <sys/types.h>
diff --git a/package/lttng-tools/Makefile b/package/lttng-tools/Makefile
index f3505fe55..fe9678212 100644
--- a/package/lttng-tools/Makefile
+++ b/package/lttng-tools/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= lttng-tools
-PKG_VERSION:= 2.9.5
+PKG_VERSION:= 2.13.11
PKG_RELEASE:= 1
-PKG_HASH:= 77839eb6fc6c652125f08acfd9369701c2516eb05cc2084160e7efc7a3fb731c
+PKG_HASH:= ac5baeef9fa690936b1ca01ecd1742da762c2c08511ff1b4e923938d94d0f979
PKG_DESCR:= open source tracing framework
PKG_SECTION:= app/debug
PKG_BUILDDEP:= popt libxml2 util-linux userspace-rcu ncurses
@@ -20,7 +20,10 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,LTTNG_TOOLS,lttng-tools,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-CONFIGURE_ARGS+= --without-lttng-ust
+AUTOTOOL_STYLE:= autoreconf
+CONFIGURE_ARGS+= --without-lttng-ust \
+ --disable-tests \
+ --disable-silent-rules
lttng-tools-install:
$(INSTALL_DIR) $(IDIR_LTTNG_TOOLS)/usr/bin
diff --git a/package/lttng-tools/patches/patch-configure_ac b/package/lttng-tools/patches/patch-configure_ac
new file mode 100644
index 000000000..fcde66d8b
--- /dev/null
+++ b/package/lttng-tools/patches/patch-configure_ac
@@ -0,0 +1,19 @@
+--- lttng-tools-2.13.11.orig/configure.ac 2023-08-21 20:32:56.422853499 +0200
++++ lttng-tools-2.13.11/configure.ac 2024-02-18 06:45:39.022802047 +0100
+@@ -884,6 +884,8 @@ AC_ARG_ENABLE([bin-lttng-sessiond], AS_H
+ [Disable the build of lttng-sessiond binaries]))
+ AC_ARG_ENABLE([extras], AS_HELP_STRING([--disable-extras],
+ [Disable the build of the extra components]))
++AC_ARG_ENABLE([tests], AS_HELP_STRING([--disable-tests],
++ [Disable the build of the test components]))
+
+
+ build_lib_consumer=no
+@@ -1035,6 +1037,7 @@ AM_CONDITIONAL([BUILD_BIN_LTTNG_SESSIOND
+
+ # Export the tests and extras build conditions.
+ AS_IF([\
++test "x$enable_tests" != "xno" && \
+ test "x$enable_bin_lttng" != "xno" && \
+ test "x$enable_bin_lttng_consumerd" != "xno" && \
+ test "x$enable_bin_lttng_crash" != "xno" && \
diff --git a/package/lttng-tools/patches/patch-src_bin_lttng-sessiond_thread_c b/package/lttng-tools/patches/patch-src_bin_lttng-sessiond_thread_c
new file mode 100644
index 000000000..53652ccf1
--- /dev/null
+++ b/package/lttng-tools/patches/patch-src_bin_lttng-sessiond_thread_c
@@ -0,0 +1,11 @@
+--- lttng-tools-2.13.11.orig/src/bin/lttng-sessiond/thread.c 2023-08-21 20:32:56.490852554 +0200
++++ lttng-tools-2.13.11/src/bin/lttng-sessiond/thread.c 2024-02-18 06:55:46.482793807 +0100
+@@ -134,7 +134,7 @@ void lttng_thread_put(struct lttng_threa
+ if (!thread) {
+ return;
+ }
+- assert(thread->ref.refcount);
++ //assert(thread->ref.refcount);
+ urcu_ref_put(&thread->ref, lttng_thread_release);
+ }
+
diff --git a/package/lttng-tools/patches/patch-src_common_fd-handle_c b/package/lttng-tools/patches/patch-src_common_fd-handle_c
new file mode 100644
index 000000000..079fcb539
--- /dev/null
+++ b/package/lttng-tools/patches/patch-src_common_fd-handle_c
@@ -0,0 +1,20 @@
+--- lttng-tools-2.13.11.orig/src/common/fd-handle.c 2023-08-21 20:32:56.530851999 +0200
++++ lttng-tools-2.13.11/src/common/fd-handle.c 2024-02-18 06:50:31.478798080 +0100
+@@ -21,7 +21,7 @@ static void fd_handle_release(struct urc
+ int ret;
+ struct fd_handle *handle = container_of(ref, struct fd_handle, ref);
+
+- assert(handle->fd >= 0);
++ //assert(handle->fd >= 0);
+ ret = close(handle->fd);
+ if (ret == -1) {
+ PERROR("Failed to close file descriptor of fd_handle upon release: fd = %d",
+@@ -78,7 +78,7 @@ void fd_handle_put(struct fd_handle *han
+ LTTNG_HIDDEN
+ int fd_handle_get_fd(struct fd_handle *handle)
+ {
+- assert(handle);
++ //assert(handle);
+ return handle->fd;
+ }
+
diff --git a/package/lttng-tools/patches/patch-src_common_shm_c b/package/lttng-tools/patches/patch-src_common_shm_c
new file mode 100644
index 000000000..e55463125
--- /dev/null
+++ b/package/lttng-tools/patches/patch-src_common_shm_c
@@ -0,0 +1,20 @@
+--- lttng-tools-2.13.11.orig/src/common/shm.c 2023-08-21 20:32:56.550851722 +0200
++++ lttng-tools-2.13.11/src/common/shm.c 2024-02-18 06:56:33.822793165 +0100
+@@ -32,7 +32,7 @@ static int get_wait_shm(char *shm_path,
+ int wait_shm_fd, ret;
+ mode_t mode, old_mode;
+
+- assert(shm_path);
++ //assert(shm_path);
+
+ /* Default permissions */
+ mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP;
+@@ -166,7 +166,7 @@ char *shm_ust_get_mmap(char *shm_path, i
+ char *wait_shm_mmap;
+ long sys_page_size;
+
+- assert(shm_path);
++ //assert(shm_path);
+
+ sys_page_size = sysconf(_SC_PAGE_SIZE);
+ if (sys_page_size < 0) {
diff --git a/package/luajit/Makefile b/package/luajit/Makefile
index 4d1612cd1..21fec1a1e 100644
--- a/package/luajit/Makefile
+++ b/package/luajit/Makefile
@@ -4,17 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= luajit
-PKG_VERSION:= 2.0.4
+PKG_VERSION:= 0d313b243194a0b8d2399d8b549ca5a0ff234db5
+PKG_GIT:= hash
PKG_RELEASE:= 1
-PKG_HASH:= 620fa4eb12375021bef6e4f237cbd2dd5d49e56beb414bee052c746beef1807d
PKG_DESCR:= just in time compiler for lua
PKG_SECTION:= dev/lang
PKG_URL:= http://luajit.org/download/
-PKG_SITES:= http://luajit.org/download/
-
-DISTFILES:= LuaJIT-$(PKG_VERSION).tar.gz
-
-WRKDIST= $(WRKDIR)/LuaJIT-$(PKG_VERSION)
+PKG_SITES:= https://luajit.org/git/luajit.git
include $(ADK_TOPDIR)/mk/package.mk
@@ -30,7 +26,7 @@ XAKE_FLAGS+= STATIC_CC="$(TARGET_CC)" \
LDFLAGS='' \
TARGET_CFLAGS='$(TARGET_CFLAGS) -fPIC' \
TARGET_LDFLAGS='$(TARGET_LDFLAGS)' \
- HOST_CC='$(HOST_CC) -m32' \
+ HOST_CC='$(HOST_CC)' \
HOST_CFLAGS='$(HOST_CFLAGS)' \
HOST_LDFLAGS='$(HOST_LDFLAGS)' \
Q=''
diff --git a/package/lvm/Makefile b/package/lvm/Makefile
index 89dfeea12..82ff98a3a 100644
--- a/package/lvm/Makefile
+++ b/package/lvm/Makefile
@@ -5,7 +5,7 @@ include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= lvm
PKG_VERSION:= 2.02.188
-PKG_RELEASE:= 1
+PKG_RELEASE:= 2
PKG_HASH:= 7101e8b0816ad77e4390fed9749a090214ba520061cd083437871e19e50cc9bd
PKG_DESCR:= logical volume management
PKG_SECTION:= sys/fs
@@ -52,6 +52,8 @@ lvm-install:
${INSTALL_DIR} ${IDIR_LVM}/usr/sbin
${INSTALL_BIN} ${WRKINST}/usr/sbin/lvm \
${IDIR_LVM}/usr/sbin
+ ${INSTALL_DIR} ${IDIR_LVM}/etc/
+ ${INSTALL_DATA} ./files/lvm.conf ${IDIR_LVM}/etc/
libdevmapper-install:
${INSTALL_DIR} ${IDIR_LIBDEVMAPPER}/usr/lib
diff --git a/package/lvm/files/lvm.conf b/package/lvm/files/lvm.conf
new file mode 100644
index 000000000..a2e77c05d
--- /dev/null
+++ b/package/lvm/files/lvm.conf
@@ -0,0 +1,4 @@
+devices {
+ # avoid constant cfgfs updates
+ write_cache_state = 0
+}
diff --git a/package/lynx/Makefile b/package/lynx/Makefile
index 8a1e2b2af..f5488dc1f 100644
--- a/package/lynx/Makefile
+++ b/package/lynx/Makefile
@@ -4,19 +4,19 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= lynx
-PKG_VERSION:= 2.8.8
-PKG_RELEASE:= 3
-PKG_HASH:= 234c9dc77d4c4594ad6216d7df4d49eae3019a3880e602f39721b35b97fbc408
+PKG_VERSION:= 2.9.0
+PKG_RELEASE:= 1
+PKG_HASH:= 746c926e28d50571a42d2477f9c50784b27fc8cba4c7db7f3e6c9e00dde89070
PKG_DESCR:= text browser
PKG_SECTION:= app/browser
PKG_DEPENDS:= libncurses zlib libressl
PKG_BUILDDEP:= ncurses zlib libressl
-PKG_URL:= http://lynx.isc.org/
-PKG_SITES:= http://lynx.isc.org/${PKG_NAME}${PKG_VERSION}/
+PKG_URL:= https://lynx.invisible-island.net/
+PKG_SITES:= https://invisible-island.net/archives/lynx/tarballs/
PKG_NOPARALLEL:= 1
DISTFILES:= ${PKG_NAME}${PKG_VERSION}.tar.gz
-WRKDIST= ${WRKDIR}/lynx2-8-8
+WRKDIST= ${WRKDIR}/$(PKG_NAME)$(PKG_VERSION)
include ${ADK_TOPDIR}/mk/package.mk
@@ -24,6 +24,7 @@ $(eval $(call PKG_template,LYNX,lynx,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS
TARGET_CPPFLAGS+= -I${STAGING_TARGET_DIR}/include/openssl
TARGET_CPPFLAGS+= -DUSE_OPENSSL_INCL -DUSE_X509_SUPPORT
+HOST_CFLAGS+= -DUSE_OPENSSL_INCL -DUSE_X509_SUPPORT
CONFIGURE_ENV+= ac_cv_path_TELNET=telnet \
ac_cv_path_TN3270=tn3270 \
diff --git a/package/lynx/patches/patch-WWW_Library_Implementation_HTTP_c b/package/lynx/patches/patch-WWW_Library_Implementation_HTTP_c
deleted file mode 100644
index 8f563a71b..000000000
--- a/package/lynx/patches/patch-WWW_Library_Implementation_HTTP_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- lynx2-8-8.orig/WWW/Library/Implementation/HTTP.c 2014-01-11 20:06:15.000000000 +0100
-+++ lynx2-8-8/WWW/Library/Implementation/HTTP.c 2017-06-05 13:30:53.165071650 +0200
-@@ -720,7 +720,7 @@ static int HTLoadHTTP(const char *arg,
- #elif SSLEAY_VERSION_NUMBER >= 0x0900
- #ifndef USE_NSS_COMPAT_INCL
- if (!try_tls) {
-- handle->options |= SSL_OP_NO_TLSv1;
-+ SSL_set_options(handle, SSL_OP_NO_TLSv1);
- #if OPENSSL_VERSION_NUMBER >= 0x0090806fL && !defined(OPENSSL_NO_TLSEXT)
- } else {
- int ret = (int) SSL_set_tlsext_host_name(handle, ssl_host);
diff --git a/package/lynx/patches/patch-WWW_Library_Implementation_HTUtils_h b/package/lynx/patches/patch-WWW_Library_Implementation_HTUtils_h
deleted file mode 100644
index c8217b70e..000000000
--- a/package/lynx/patches/patch-WWW_Library_Implementation_HTUtils_h
+++ /dev/null
@@ -1,34 +0,0 @@
---- lynx2-8-8.orig/WWW/Library/Implementation/HTUtils.h 2014-02-05 01:50:18.000000000 +0100
-+++ lynx2-8-8/WWW/Library/Implementation/HTUtils.h 2014-03-21 22:14:07.000000000 +0100
-@@ -725,6 +725,8 @@ extern int WWW_TraceMask;
-
- #define SHORTENED_RBIND /* FIXME: do this in configure-script */
-
-+#ifdef DONT_USE_SSL
-+#else
- #ifdef USE_SSL
-
- #define free_func free__func
-@@ -765,6 +767,7 @@ extern int WWW_TraceMask;
-
- #undef free_func
- #endif /* USE_SSL */
-+#endif
-
- #ifdef HAVE_BSD_STDLIB_H
- #include <bsd/stdlib.h> /* prototype for arc4random.h */
-@@ -801,11 +804,14 @@ extern "C" {
-
- extern FILE *TraceFP(void);
-
-+#ifdef DONT_USE_SSL
-+#else
- #ifdef USE_SSL
- extern SSL *HTGetSSLHandle(void);
- extern void HTSSLInitPRNG(void);
- extern int HTGetSSLCharacter(void *handle);
- #endif /* USE_SSL */
-+#endif
-
- #ifdef __cplusplus
- }
diff --git a/package/lynx/patches/patch-makefile_in b/package/lynx/patches/patch-makefile_in
deleted file mode 100644
index 5cb6b5962..000000000
--- a/package/lynx/patches/patch-makefile_in
+++ /dev/null
@@ -1,11 +0,0 @@
---- lynx2-8-8.orig/makefile.in 2014-03-09 22:43:10.000000000 +0100
-+++ lynx2-8-8/makefile.in 2014-03-21 23:17:26.000000000 +0100
-@@ -210,7 +210,7 @@ SRC_CFLAGS = \
- WWWINC=$(WWW_DIR) \
- WWWLIB="../$(WWW_DIR)/libwww.a"
-
--actual_PROG = `echo lynx| sed '$(transform)'`
-+actual_PROG = lynx
- binary_PROG = $(actual_PROG)$x
-
- all lynx$x: cfg_defs.h LYHelp.h
diff --git a/package/lynx/patches/patch-src_chrtrans_makeuctb_c b/package/lynx/patches/patch-src_chrtrans_makeuctb_c
deleted file mode 100644
index 9972a6f8c..000000000
--- a/package/lynx/patches/patch-src_chrtrans_makeuctb_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- lynx2-8-8.orig/src/chrtrans/makeuctb.c 2013-11-29 01:52:56.000000000 +0100
-+++ lynx2-8-8/src/chrtrans/makeuctb.c 2014-03-21 22:12:13.000000000 +0100
-@@ -28,6 +28,7 @@
-
- #define DONT_USE_GETTEXT
- #define DONT_USE_SOCKS5
-+#define DONT_USE_SSL
- #include <UCDefs.h>
- #include <UCkd.h>
-
diff --git a/package/lz4/Makefile b/package/lz4/Makefile
index 605d446d0..148144693 100644
--- a/package/lz4/Makefile
+++ b/package/lz4/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= lz4
-PKG_VERSION:= 1.9.2
+PKG_VERSION:= 1.9.4
PKG_RELEASE:= 1
-PKG_HASH:= 658ba6191fa44c92280d4aa2c271b0f4fbc0e34d249578dd05e50e76d0e5efcc
+PKG_HASH:= 0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b
PKG_DESCR:= compression utility
PKG_SECTION:= app/archive
PKG_DEPENDS:= liblz4
diff --git a/package/lz4/patches/patch-lib_liblz4_pc_in b/package/lz4/patches/patch-lib_liblz4_pc_in
deleted file mode 100644
index 05fc1b2ca..000000000
--- a/package/lz4/patches/patch-lib_liblz4_pc_in
+++ /dev/null
@@ -1,10 +0,0 @@
---- lz4-1.9.2.orig/lib/liblz4.pc.in 2019-08-15 13:59:59.000000000 +0200
-+++ lz4-1.9.2/lib/liblz4.pc.in 2019-10-07 22:01:00.003319055 +0200
-@@ -10,5 +10,5 @@ Name: lz4
- Description: extremely fast lossless compression algorithm library
- URL: http://www.lz4.org/
- Version: @VERSION@
--Libs: -L@LIBDIR@ -llz4
--Cflags: -I@INCLUDEDIR@
-+Libs: -llz4
-+Cflags:
diff --git a/package/lzip/Makefile b/package/lzip/Makefile
index 564e8ee55..90fa5dbab 100644
--- a/package/lzip/Makefile
+++ b/package/lzip/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= lzip
-PKG_VERSION:= 1.21
+PKG_VERSION:= 1.24
PKG_RELEASE:= 1
-PKG_HASH:= e48b5039d3164d670791f9c5dbaa832bf2df080cb1fbb4f33aa7b3300b670d8b
+PKG_HASH:= d42659229b10e066eeb6e81eb673cdd893b672e512d26719c2d95975556ca56c
PKG_DESCR:= compression utility
PKG_SECTION:= app/archive
PKG_NEEDS:= c++
diff --git a/package/lzip/patches/patch-configure b/package/lzip/patches/patch-configure
index 3ac80460f..f7e067a0e 100644
--- a/package/lzip/patches/patch-configure
+++ b/package/lzip/patches/patch-configure
@@ -1,9 +1,9 @@
---- lzip-1.17.orig/configure 2015-07-09 18:58:33.000000000 +0200
-+++ lzip-1.17/configure 2016-09-24 13:07:38.493476268 +0200
-@@ -20,10 +20,10 @@ bindir='$(exec_prefix)/bin'
- datarootdir='$(prefix)/share'
- infodir='$(datarootdir)/info'
- mandir='$(datarootdir)/man'
+--- lzip-1.24.orig/configure 2024-01-26 14:01:44.000000000 +0100
++++ lzip-1.24/configure 2024-02-12 07:10:37.674941547 +0100
+@@ -23,10 +23,10 @@ mandir='$(datarootdir)/man'
+ build=no
+ check=no
+ installdir=
-CXX=g++
-CPPFLAGS=
-CXXFLAGS='-Wall -W -O2'
@@ -12,6 +12,6 @@
+CPPFLAGS?=
+CXXFLAGS?='-Wall -W -O2'
+LDFLAGS?=
+ MAKEINFO=makeinfo
# checking whether we are using GNU C++.
- ${CXX} --version > /dev/null 2>&1
diff --git a/package/m4/Makefile b/package/m4/Makefile
index a6af849a3..6973ed164 100644
--- a/package/m4/Makefile
+++ b/package/m4/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= m4
-PKG_VERSION:= 1.4.18
+PKG_VERSION:= 1.4.19
PKG_RELEASE:= 1
-PKG_HASH:= f2c1e86ca0a404ff281631bdc8377638992744b175afb806e25871a24a934e07
+PKG_HASH:= 63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96
PKG_DESCR:= macro processor
PKG_SECTION:= dev/tools
PKG_BUILDDEP:= m4-host
diff --git a/package/m4/patches/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch b/package/m4/patches/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch
deleted file mode 100644
index 5c5c11b99..000000000
--- a/package/m4/patches/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Mon, 5 Mar 2018 10:56:29 -0800
-Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported by Daniel P. Berrangé in:
-https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html
-* lib/fbufmode.c (fbufmode):
-* lib/fflush.c (clear_ungetc_buffer_preserving_position)
-(disable_seek_optimization, rpl_fflush):
-* lib/fpending.c (__fpending):
-* lib/fpurge.c (fpurge):
-* lib/freadable.c (freadable):
-* lib/freadahead.c (freadahead):
-* lib/freading.c (freading):
-* lib/freadptr.c (freadptr):
-* lib/freadseek.c (freadptrinc):
-* lib/fseeko.c (fseeko):
-* lib/fseterr.c (fseterr):
-* lib/fwritable.c (fwritable):
-* lib/fwriting.c (fwriting):
-Check _IO_EOF_SEEN instead of _IO_ftrylockfile.
-* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]:
-Define if not already defined.
-
-[yann.morin.1998@free.fr: partially backport from upstream gnulib]
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-
----
- lib/fflush.c | 6 +++---
- lib/fpending.c | 2 +-
- lib/fpurge.c | 2 +-
- lib/freadahead.c | 2 +-
- lib/freading.c | 2 +-
- lib/fseeko.c | 4 ++--
- lib/stdio-impl.h | 6 ++++++
- 7 files changed, 15 insertions(+), 9 deletions(-)
-
-diff --git a/lib/fflush.c b/build-aux/gnulib/lib/fflush.c
-index 983ade0ff..a6edfa105 100644
---- a/lib/fflush.c
-+++ b/lib/fflush.c
-@@ -33,7 +33,7 @@
- #undef fflush
-
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-
- /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */
- static void
-@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp)
-
- #endif
-
--#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */)
-
- # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream)
- if (stream == NULL || ! freading (stream))
- return fflush (stream);
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-
- clear_ungetc_buffer_preserving_position (stream);
-
-diff --git a/lib/fpending.c b/build-aux/gnulib/lib/fpending.c
-index c84e3a5b4..789f50e4e 100644
---- a/lib/fpending.c
-+++ b/lib/fpending.c
-@@ -32,7 +32,7 @@ __fpending (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- return fp->_IO_write_ptr - fp->_IO_write_base;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
- /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */
-diff --git a/lib/fpurge.c b/build-aux/gnulib/lib/fpurge.c
-index b1d417c7a..3aedcc373 100644
---- a/lib/fpurge.c
-+++ b/lib/fpurge.c
-@@ -62,7 +62,7 @@ fpurge (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_IO_read_end = fp->_IO_read_ptr;
- fp->_IO_write_ptr = fp->_IO_write_base;
- /* Avoid memory leak when there is an active ungetc buffer. */
-diff --git a/lib/freadahead.c b/build-aux/gnulib/lib/freadahead.c
-index c2ecb5b28..23ec76ee5 100644
---- a/lib/freadahead.c
-+++ b/lib/freadahead.c
-@@ -30,7 +30,7 @@ extern size_t __sreadahead (FILE *);
- size_t
- freadahead (FILE *fp)
- {
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- if (fp->_IO_write_ptr > fp->_IO_write_base)
- return 0;
- return (fp->_IO_read_end - fp->_IO_read_ptr)
-diff --git a/lib/freading.c b/build-aux/gnulib/lib/freading.c
-index 73c28acdd..c24d0c88a 100644
---- a/lib/freading.c
-+++ b/lib/freading.c
-@@ -31,7 +31,7 @@ freading (FILE *fp)
- /* Most systems provide FILE as a struct and the necessary bitmask in
- <stdio.h>, because they need it for implementing getc() and putc() as
- fast macros. */
--# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- return ((fp->_flags & _IO_NO_WRITES) != 0
- || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0
- && fp->_IO_read_base != NULL));
-diff --git a/lib/fseeko.c b/build-aux/gnulib/lib/fseeko.c
-index 0101ab55f..193f4e8ce 100644
---- a/lib/fseeko.c
-+++ b/lib/fseeko.c
-@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- #endif
-
- /* These tests are based on fpurge.c. */
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- if (fp->_IO_read_end == fp->_IO_read_ptr
- && fp->_IO_write_ptr == fp->_IO_write_base
- && fp->_IO_save_base == NULL)
-@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence)
- return -1;
- }
-
--#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
-+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
- fp->_flags &= ~_IO_EOF_SEEN;
- fp->_offset = pos;
- #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
-diff --git a/lib/stdio-impl.h b/build-aux/gnulib/lib/stdio-impl.h
-index 78d896e9f..05c5752a2 100644
---- a/lib/stdio-impl.h
-+++ b/lib/stdio-impl.h
-@@ -18,6 +18,12 @@
- the same implementation of stdio extension API, except that some fields
- have different naming conventions, or their access requires some casts. */
-
-+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this
-+ problem by defining it ourselves. FIXME: Do not rely on glibc
-+ internals. */
-+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
-+# define _IO_IN_BACKUP 0x100
-+#endif
-
- /* BSD stdio derived implementations. */
-
---
-2.14.1
-
diff --git a/package/m4/patches/patch-lib_vasnprintf_c b/package/m4/patches/patch-lib_vasnprintf_c
deleted file mode 100644
index 07b989cc6..000000000
--- a/package/m4/patches/patch-lib_vasnprintf_c
+++ /dev/null
@@ -1,28 +0,0 @@
---- m4-1.4.18.orig/lib/vasnprintf.c 2016-12-31 14:54:42.000000000 +0100
-+++ m4-1.4.18/lib/vasnprintf.c 2018-02-24 20:59:00.000000000 +0100
-@@ -4858,7 +4858,10 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- #endif
- *fbp = dp->conversion;
- #if USE_SNPRINTF
--# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
-+# if ! (((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) \
-+ && !defined __UCLIBC__) \
-+ || (defined __APPLE__ && defined __MACH__) \
-+ || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
- fbp[1] = '%';
- fbp[2] = 'n';
- fbp[3] = '\0';
-@@ -4872,6 +4875,13 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
- in format strings in writable memory may crash the program
- (if compiled with _FORTIFY_SOURCE=2), so we should avoid it
- in this situation. */
-+ /* On Mac OS X 10.3 or newer, we know that snprintf's return
-+ value conforms to ISO C 99: the tests gl_SNPRINTF_RETVAL_C99
-+ and gl_SNPRINTF_TRUNCATION_C99 pass.
-+ Therefore we can avoid using %n in this situation.
-+ On Mac OS X 10.13 or newer, the use of %n in format strings
-+ in writable memory by default crashes the program, so we
-+ should avoid it in this situation. */
- /* On native Windows systems (such as mingw), we can avoid using
- %n because:
- - Although the gl_SNPRINTF_TRUNCATION_C99 test fails,
diff --git a/package/make/Makefile b/package/make/Makefile
index 670bbfe06..ee584771a 100644
--- a/package/make/Makefile
+++ b/package/make/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= make
-PKG_VERSION:= 4.2.1
-PKG_RELEASE:= 2
-PKG_HASH:= e40b8f018c1da64edd1cc9a6fce5fa63b2e707e404e20cad91fbae337c98a5b7
+PKG_VERSION:= 4.4.1
+PKG_RELEASE:= 1
+PKG_HASH:= dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3
PKG_DESCR:= c/c++ code buildtool
PKG_SECTION:= dev/tools
PKG_DEPENDS:= libelf
diff --git a/package/make/patches/patch-configure_ac b/package/make/patches/patch-configure_ac
deleted file mode 100644
index e155851b4..000000000
--- a/package/make/patches/patch-configure_ac
+++ /dev/null
@@ -1,14 +0,0 @@
---- make-4.2.1.orig/configure.ac 2016-06-06 12:27:31.000000000 +0000
-+++ make-4.2.1/configure.ac 2018-02-28 20:57:40.797354623 +0000
-@@ -399,10 +399,9 @@ AC_CACHE_CHECK([if system libc has GNU g
- #include <glob.h>
- #include <fnmatch.h>
-
--#define GLOB_INTERFACE_VERSION 1
- #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
- # include <gnu-versions.h>
--# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
-+# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2
- gnu glob
- # endif
- #endif],
diff --git a/package/mariadb/Makefile b/package/mariadb/Makefile
index f1100af35..33a865c1f 100644
--- a/package/mariadb/Makefile
+++ b/package/mariadb/Makefile
@@ -4,21 +4,23 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mariadb
-PKG_VERSION:= 10.6.4
+PKG_VERSION:= 10.11.7
PKG_RELEASE:= 1
-PKG_HASH:= 75bf9b147a95d38160d01a73b098d50a1960563b46d16a235971fff64d99643c
+PKG_HASH:= 5239a245ed90517e96396605cd01ccd8f73cd7442d1b3076b6ffe258110e5157
PKG_DESCR:= sql client library
PKG_SECTION:= libs/db
-PKG_DEPENDS:= libncurses zlib libevent libpcre boost
-PKG_BUILDDEP:= cmake-host mariadb-host ncurses zlib readline libevent pcre libressl
-PKG_BUILDDEP+= boost
+PKG_DEPENDS:= libncurses zlib libevent libpcre boost libfmt libkrb5
+PKG_BUILDDEP:= cmake-host mariadb-host ncurses zlib readline libevent
+PKG_BUILDDEP+= boost fmt gnutls pcre2 krb5
HOST_BUILDDEP:= cmake-host
PKG_NEEDS:= c++
PKG_URL:= http://www.mariadb.org/
-PKG_SITES= https://distfiles.openadk.org/
+PKG_SITES= https://downloads.mariadb.org/interstitial/mariadb-$(PKG_VERSION)/source/
PKG_LIBNAME:= libmariadbclient
PKG_OPTS:= dev
+PKG_CFLINE_MARIADB:= select ADK_PACKAGE_BOOST_DATE_TIME
+
# atomic ops not implemented
PKG_ARCH_DEPENDS:= !mips
@@ -38,8 +40,8 @@ HOST_ALL_TARGET:= import_executables
CONFIG_STYLE:= cmake
CMAKE_FLAGS+= -DCMAKE_CROSSCOMPILING=ON \
-DIMPORT_EXECUTABLES=${BASE_DIR}/host_build_${GNU_HOST_NAME}/w-$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-host/$(PKG_NAME)-$(PKG_VERSION)/import_executables.cmake \
- -DWITH_SSL=system \
- -DWITHOUT_SERVER=OFF \
+ -DWITHOUT_SERVER=ON \
+ -DWITH_SSL=bundled \
-DWITH_SYSTEMD=auto \
-DSECURITY_HARDENED=OFF \
-DWITHOUT_DYNAMIC_PLUGINS=ON \
@@ -63,6 +65,8 @@ libmariadbclient-install:
${INSTALL_DIR} ${IDIR_LIBMARIADBCLIENT}/usr/lib
${CP} ${WRKINST}/usr/lib/libmysqlclient.so* \
${IDIR_LIBMARIADBCLIENT}/usr/lib
+ ${CP} ${WRKINST}/usr/lib/libmariadb.so* \
+ ${IDIR_LIBMARIADBCLIENT}/usr/lib
include ${ADK_TOPDIR}/mk/host-bottom.mk
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/mbedtls/Makefile b/package/mbedtls/Makefile
index 9771ffc96..9ce0d5468 100644
--- a/package/mbedtls/Makefile
+++ b/package/mbedtls/Makefile
@@ -4,17 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mbedtls
-PKG_VERSION:= 2.3.0
+PKG_VERSION:= 2.28.7
PKG_RELEASE:= 1
-PKG_HASH:= 590734c8bc8b3ac48e9123d44bf03562e91f8dce0d1ac2615c318c077f3215b2
+PKG_HASH:= 1df6073f0cf6a4e1953890bf5e0de2a8c7e6be50d6d6c69fa9fefcb1d14e981a
PKG_DESCR:= embedded ssl/tls library
PKG_SECTION:= libs/crypto
PKG_URL:= https://tls.mbed.org
-PKG_SITES:= https://tls.mbed.org/download/
+PKG_SITES:= https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/
PKG_LIBNAME:= libmbedtls
PKG_OPTS:= dev
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION)-apache.tgz
+DISTFILES:= v$(PKG_VERSION).tar.gz
include $(ADK_TOPDIR)/mk/package.mk
@@ -24,9 +24,7 @@ CONFIG_STYLE:= manual
ALL_TARGET:= lib
TARGET_CFLAGS+= -DSHARED
-libpolarssl-install:
+libmbedtls-install:
$(INSTALL_DIR) $(IDIR_LIBMBEDTLS)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libpolarssl.so* \
- $(IDIR_LIBMBEDTLS)/usr/lib
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/mbedtls/patches/patch-Makefile b/package/mbedtls/patches/patch-Makefile
new file mode 100644
index 000000000..95c3340e1
--- /dev/null
+++ b/package/mbedtls/patches/patch-Makefile
@@ -0,0 +1,35 @@
+--- mbedtls-3.5.2.orig/Makefile 2024-01-24 10:49:11.000000000 +0100
++++ mbedtls-3.5.2/Makefile 2024-02-22 19:10:23.460591189 +0100
+@@ -79,22 +79,22 @@ $(VISUALC_FILES):
+
+ ifndef WINDOWS
+ install: no_test
+- mkdir -p $(DESTDIR)/include/mbedtls
+- cp -rp include/mbedtls $(DESTDIR)/include
+- mkdir -p $(DESTDIR)/include/psa
+- cp -rp include/psa $(DESTDIR)/include
++ mkdir -p $(DESTDIR)/usr/include/mbedtls
++ cp -rp include/mbedtls $(DESTDIR)/usr/include
++ mkdir -p $(DESTDIR)/usr/include/psa
++ cp -rp include/psa $(DESTDIR)/usr/include
+
+- mkdir -p $(DESTDIR)/lib
+- cp -RP library/libmbedtls.* $(DESTDIR)/lib
+- cp -RP library/libmbedx509.* $(DESTDIR)/lib
+- cp -RP library/libmbedcrypto.* $(DESTDIR)/lib
++ mkdir -p $(DESTDIR)/usr/lib
++ cp -RP library/libmbedtls.* $(DESTDIR)/usr/lib
++ cp -RP library/libmbedx509.* $(DESTDIR)/usr/lib
++ cp -RP library/libmbedcrypto.* $(DESTDIR)/usr/lib
+
+- mkdir -p $(DESTDIR)/bin
++ mkdir -p $(DESTDIR)/usr/bin
+ for p in programs/*/* ; do \
+ if [ -x $$p ] && [ ! -d $$p ] ; \
+ then \
+ f=$(PREFIX)`basename $$p` ; \
+- cp $$p $(DESTDIR)/bin/$$f ; \
++ cp $$p $(DESTDIR)/usr/bin/$$f ; \
+ fi \
+ done
+
diff --git a/package/mc/Makefile b/package/mc/Makefile
index 49c0db187..539c292c4 100644
--- a/package/mc/Makefile
+++ b/package/mc/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mc
-PKG_VERSION:= 4.8.23
+PKG_VERSION:= 4.8.31
PKG_RELEASE:= 1
-PKG_HASH:= dd7f7ce74183307b0df25b5c3e60ad3293fd3d3d27d2f37dd7a10efce13dff1c
+PKG_HASH:= 24191cf8667675b8e31fc4a9d18a0a65bdc0598c2c5c4ea092494cd13ab4ab1a
PKG_DESCR:= norton commander clone
PKG_SECTION:= sys/misc
PKG_DEPENDS:= glib libncurses libssh2
@@ -19,11 +19,9 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,MC,mc,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-TARGET_LDFLAGS+= -ltinfo
+TARGET_LDFLAGS+= -ltinfo -lncurses
CONFIGURE_ARGS+= --enable-charset \
- --disable-extcharset \
--disable-background \
- --disable-gcc-warnings \
--disable-glibtest \
--disable-netcode \
--without-libiconv-prefix \
@@ -37,7 +35,7 @@ CONFIGURE_ARGS+= --enable-charset \
--without-ext2undel \
--with-subshell \
--with-screen=ncurses \
- --with-edit
+ --disable-silent-rules
CONFIGURE_ENV+= mc_cv_have_zipinfo=yes \
am_cv_func_iconv=no
@@ -48,7 +46,7 @@ mc-install:
${CP} ${WRKINST}/usr/share/mc/* ${IDIR_MC}/usr/share/mc
${INSTALL_BIN} ${WRKINST}/usr/bin/mc ${IDIR_MC}/usr/bin/
cd ${IDIR_MC}/usr/bin && ln -fs mc mcedit && ln -fs mc mcview
- cd ${WRKINST}/etc/mc && ${CP} mcedit.menu mc.ext sfs.ini \
+ cd ${WRKINST}/etc/mc && ${CP} mcedit.menu sfs.ini \
mc.menu ${IDIR_MC}/etc/mc/
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/mc/patches/patch-lib_tty_tty-ncurses_c b/package/mc/patches/patch-lib_tty_tty-ncurses_c
new file mode 100644
index 000000000..34c0b53df
--- /dev/null
+++ b/package/mc/patches/patch-lib_tty_tty-ncurses_c
@@ -0,0 +1,42 @@
+--- mc-4.8.31.orig/lib/tty/tty-ncurses.c 2024-01-20 20:34:38.000000000 +0100
++++ mc-4.8.31/lib/tty/tty-ncurses.c 2024-02-14 11:53:54.151821148 +0100
+@@ -561,39 +561,11 @@ tty_fill_region (int y, int x, int rows,
+ void
+ tty_colorize_area (int y, int x, int rows, int cols, int color)
+ {
+-#ifdef ENABLE_SHADOWS
+- cchar_t *ctext;
+- wchar_t wch[10]; /* TODO not sure if the length is correct */
+- attr_t attrs;
+- short color_pair;
+-
+- if (!use_colors || !tty_clip (&y, &x, &rows, &cols))
+- return;
+-
+- tty_setcolor (color);
+- ctext = g_malloc (sizeof (cchar_t) * (cols + 1));
+-
+- for (int row = 0; row < rows; row++)
+- {
+- mvin_wchnstr (y + row, x, ctext, cols);
+-
+- for (int col = 0; col < cols; col++)
+- {
+- getcchar (&ctext[col], wch, &attrs, &color_pair, NULL);
+- setcchar (&ctext[col], wch, attrs, color, NULL);
+- }
+-
+- mvadd_wchnstr (y + row, x, ctext, cols);
+- }
+-
+- g_free (ctext);
+-#else
+ (void) y;
+ (void) x;
+ (void) rows;
+ (void) cols;
+ (void) color;
+-#endif /* ENABLE_SHADOWS */
+ }
+
+ /* --------------------------------------------------------------------------------------------- */
diff --git a/package/mdadm/Makefile b/package/mdadm/Makefile
index a514a8969..69d17ee2f 100644
--- a/package/mdadm/Makefile
+++ b/package/mdadm/Makefile
@@ -4,11 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mdadm
-PKG_VERSION:= 4.1
+PKG_VERSION:= 4.2
PKG_RELEASE:= 1
-PKG_HASH:= ab7688842908d3583a704d491956f31324c3a5fc9f6a04653cb75d19f1934f4a
+PKG_HASH:= 461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d
PKG_DESCR:= tool for managing software raid arrays
-PKG_KDEPENDS:= md md-raid0 md-raid1 md-raid456
+PKG_DEPENDS:= libudev
+PKG_BUILDDEP:= eudev
+PKG_KDEPENDS:= blk-dev-md md md-raid0 md-raid1 md-raid456
PKG_SECTION:= sys/fs
PKG_URL:= http://neil.brown.name/blog/mdadm
PKG_SITES:= ${MASTER_SITE_KERNEL:=utils/raid/mdadm/}
diff --git a/package/mdadm/patches/patch-Makefile b/package/mdadm/patches/patch-Makefile
index 9c5057c22..7ce1f18b2 100644
--- a/package/mdadm/patches/patch-Makefile
+++ b/package/mdadm/patches/patch-Makefile
@@ -1,27 +1,23 @@
---- mdadm-4.0.orig/Makefile 2017-01-09 22:46:34.000000000 +0100
-+++ mdadm-4.0/Makefile 2017-06-02 01:53:13.425906734 +0200
-@@ -42,8 +42,8 @@ KLIBC=/home/src/klibc/klibc-0.77
- KLIBC_GCC = gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32
-
- CC ?= $(CROSS_COMPILE)gcc
--CXFLAGS ?= -ggdb
--CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter
-+CXFLAGS ?=
-+CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter
- ifdef WARN_UNUSED
- CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O3
- endif
-@@ -269,9 +269,10 @@ $(MON_OBJS) : $(INCL) mdmon.h
+--- mdadm-4.2.orig/Makefile 2021-12-30 20:43:35.000000000 +0100
++++ mdadm-4.2/Makefile 2024-02-11 17:01:11.419915988 +0100
+@@ -250,7 +250,7 @@ $(MON_OBJS) : $(INCL) mdmon.h
sha1.o : sha1.c sha1.h md5.h
$(CC) $(CFLAGS) -DHAVE_STDINT_H -o sha1.o -c sha1.c
--install : mdadm mdmon install-man install-udev
+-install : install-bin install-man install-udev
++install : install-bin install-udev
+
+ install-static : mdadm.static install-man
+ $(INSTALL) -D $(STRIP) -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm
+@@ -301,8 +301,9 @@ install-systemd: systemd/mdmon@.service
+ if [ -f /etc/SuSE-release -o -n "$(SUSE)" ] ;then $(INSTALL) -D -m 755 systemd/SUSE-mdadm_env.sh $(DESTDIR)$(LIB_DIR)/mdadm_env.sh ;fi
+
+ install-bin: mdadm mdmon
- $(INSTALL) -D $(STRIP) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm
- $(INSTALL) -D $(STRIP) -m 755 mdmon $(DESTDIR)$(BINDIR)/mdmon
-+install : mdadm mdmon install-udev
+ mkdir -p $(DESTDIR)$(BINDIR)
+ $(INSTALL) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm
+ $(INSTALL) -m 755 mdmon $(DESTDIR)$(BINDIR)/mdmon
- install-static : mdadm.static install-man
- $(INSTALL) -D $(STRIP) -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm
+ uninstall:
+ rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 $(DESTDIR)$(MAN8DIR)/mdmon.8 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm
diff --git a/package/mesa-demos/Makefile b/package/mesa-demos/Makefile
index e1addc2ba..fec8cb4d3 100644
--- a/package/mesa-demos/Makefile
+++ b/package/mesa-demos/Makefile
@@ -4,28 +4,39 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mesa-demos
-PKG_VERSION:= 8.2.0
+PKG_VERSION:= 8.5.0
PKG_RELEASE:= 1
-PKG_HASH:= 5f0e76215ffc6acdaa80c7aadf02e448cb95d0ae8f69dbb894382b9c349a19e2
+PKG_HASH:= 2472818cea452a34229d03084e7c81f94267d14a39c5287379de0fb1dc02caab
PKG_DESCR:= opengl demo apps
PKG_SECTION:= mm/video
-PKG_DEPENDS:= mesa
+PKG_DEPENDS:= mesa libglew libglu
PKG_BUILDDEP:= mesa libglew glu
PKG_SITES:= ftp://ftp.freedesktop.org/pub/mesa/demos/${PKG_VERSION}/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-PKG_ARCH_DEPENDS:= x86 x86_64 mips mipsel mips64 mips64el arm
+PKG_ARCH_DEPENDS:= x86 x86_64 mips mipsel mips64 mips64el arm aarch64
-PKG_SUBPKGS:= GLXINFO
+PKG_SUBPKGS:= GLXINFO GLXGEARS
+PKGSD_GLXGEARS:= opengl demo app
PKGSD_GLXINFO:= command-line tool for diagnosing problems with your 3D acceleration card
-PKGSS_GLXINFO:= libxt libxau libxdmcp libxcb libx11 libxext libglew
+PKGSS_GLXINFO:= libxt libxau libxdmcp libxcb libx11 libxext libglew
+PKGSS_GLXINFO+= libxxf86vm
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,GLXINFO,glxinfo,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+$(eval $(call PKG_template,GLXGEARS,glxgears,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIGURE_ARGS+= --disable-egl
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+glxgears-install:
+ $(INSTALL_DIR) $(IDIR_GLXGEARS)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/glxgears \
+ $(IDIR_GLXGEARS)/usr/bin
glxinfo-install:
$(INSTALL_DIR) $(IDIR_GLXINFO)/usr/bin
diff --git a/package/mesa/Makefile b/package/mesa/Makefile
index 9a93ed590..75a10c003 100644
--- a/package/mesa/Makefile
+++ b/package/mesa/Makefile
@@ -4,41 +4,39 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mesa
-PKG_VERSION:= 18.3.6
+PKG_VERSION:= 23.3.3
PKG_RELEASE:= 1
-PKG_HASH:= aaf17638dcf5a90b93b6389e152fdc9ef147768b09598f24d2c5cf482fcfc705
+PKG_HASH:= 518307c0057fa3cee8b58df78be431d4df5aafa7edc60d09278b2d7a0a80f3b4
PKG_DESCR:= 3d graphics library
PKG_SECTION:= libs/video
PKG_DEPENDS:= libxdamage libxfixes libdrm libxxf86vm libexpat
-PKG_DEPENDS+= libxml2 libxml2-python
-PKG_BUILDDEP:= python2 libxml2 libXdamage libXfixes libXrandr
+PKG_DEPENDS+= libxml2
+PKG_BUILDDEP:= python3 libxml2 libXdamage libXfixes libXrandr
PKG_BUILDDEP+= libXxf86vm libdrm dri2proto glproto expat libXext
PKG_BUILDDEP+= eudev dri3proto presentproto xcb-proto libxcb
-PKG_BUILDDEP+= libxshmfence
+PKG_BUILDDEP+= libxshmfence python-mako-host
PKG_NEEDS:= c++
PKG_URL:= http://www.mesa3d.org/
PKG_SITES:= ftp://ftp.freedesktop.org/pub/mesa/
PKG_LIBNAME:= mesa
PKG_OPTS:= dev
-PKG_ARCH_DEPENDS:= x86 x86_64 mips mipsel mips64 mips64el arm
+PKG_ARCH_DEPENDS:= x86 x86_64 mips mipsel mips64 mips64el arm aarch64
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,MESA,mesa,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-DRI_DRIVERS:= swrast
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
-CONFIGURE_ARGS+= --disable-static \
- --disable-gallium-llvm \
- --without-gallium-drivers \
- --enable-dri \
- --enable-dri3 \
- --enable-glx=dri \
- --with-dri-driverdir=/usr/lib/dri \
- --with-dri-drivers=${DRI_DRIVERS}
-CONFIGURE_ENV+= MISSING="echo"
-XAKE_FLAGS+= HOST_CC=${CC_FOR_BUILD}
+MESON_FLAGS+= -Dllvm=disabled \
+ -Dgallium-drivers=swrast,panfrost,vc4,v3d \
+ -Dvulkan-drivers= \
+ -Dgbm=enabled \
+ -Dplatforms=x11
mesa-install:
$(INSTALL_DIR) $(IDIR_MESA)/usr/lib/dri
@@ -48,6 +46,8 @@ mesa-install:
$(IDIR_MESA)/usr/lib
$(CP) $(WRKINST)/usr/lib/libglapi.so* \
$(IDIR_MESA)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libgbm.so* \
+ $(IDIR_MESA)/usr/lib
${CP} $(WRKINST)/usr/lib/dri/*.so \
${IDIR_MESA}/usr/lib/dri/
diff --git a/package/mesa/patches/patch-src_mapi_glapi_glapi_gentable_c b/package/mesa/patches/patch-src_mapi_glapi_glapi_gentable_c
deleted file mode 100644
index af6a53aa7..000000000
--- a/package/mesa/patches/patch-src_mapi_glapi_glapi_gentable_c
+++ /dev/null
@@ -1,14 +0,0 @@
---- mesa-11.0.6.orig/src/mapi/glapi/glapi_gentable.c 2015-11-21 12:45:27.000000000 +0100
-+++ mesa-11.0.6/src/mapi/glapi/glapi_gentable.c 2016-01-05 22:36:19.266092512 +0100
-@@ -35,11 +35,6 @@
- #include <dix-config.h>
- #endif
-
--#if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \
-- || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__))
--#define USE_BACKTRACE
--#endif
--
- #ifdef USE_BACKTRACE
- #include <execinfo.h>
- #endif
diff --git a/package/meson/Makefile b/package/meson/Makefile
index 94716a688..314fac6dc 100644
--- a/package/meson/Makefile
+++ b/package/meson/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= meson
-PKG_VERSION:= 0.60.1
+PKG_VERSION:= 1.3.2
PKG_RELEASE:= 1
-PKG_HASH:= b06f7d621b90e094be0ea2157fa435648e069f19182d8d9402aa039727652b0c
+PKG_HASH:= 683082fb3c5cddf203b21d29bdf4c227e2f7964da5324a15e1a5f7db94322b4b
PKG_DESCR:= build utility
PKG_SECTION:= dev/tools
HOST_BUILDDEP:= python3-host ninja-host
diff --git a/package/meson/src/cross-compilation.conf.in b/package/meson/src/cross-compilation.conf.in
index a636ca329..24ef6ef53 100644
--- a/package/meson/src/cross-compilation.conf.in
+++ b/package/meson/src/cross-compilation.conf.in
@@ -8,12 +8,16 @@ c = '@TARGET_CROSS@gcc'
cpp = '@TARGET_CROSS@g++'
ar = '@TARGET_CROSS@ar'
strip = '@TARGET_CROSS@strip'
-pkgconfig = '@STAGING_HOST_DIR@/usr/bin/pkg-config'
-[properties]
+pkg-config = '@STAGING_HOST_DIR@/usr/bin/pkg-config'
+
+[built-in options]
c_args = [@TARGET_CFLAGS@]
c_link_args = [@TARGET_LDFLAGS@]
cpp_args = [@TARGET_CXXFLAGS@]
cpp_link_args = [@TARGET_LDFLAGS@]
+
+[properties]
+needs_exe_wrapper = true
[host_machine]
system = 'linux'
diff --git a/package/mgetty/Makefile b/package/mgetty/Makefile
index c610f53b7..105da3001 100644
--- a/package/mgetty/Makefile
+++ b/package/mgetty/Makefile
@@ -4,15 +4,16 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mgetty
-PKG_VERSION:= 1.1.36
-PKG_EXTRAVER:= Jun15
+PKG_VERSION:= 1.2.1
PKG_RELEASE:= 1
-PKG_HASH:= 8b8642aa318604ad057ed161cacff5c600296cbfbc9b4d562134ee5c130c80ce
+PKG_HASH:= c8a72f5ca4142e30627ad16725c40692fb09e6284514392b95ac02062cac9a89
PKG_DESCR:= mgetty + sendfax
PKG_SECTION:= sys/misc
-PKG_SITES:= ftp://alpha.greenie.net/pub/mgetty/source/1.1/
+PKG_SITES:= ftp://mgetty.greenie.net/pub/mgetty/source/1.2/
-DISTFILES:= ${PKG_NAME}${PKG_VERSION}-${PKG_EXTRAVER}.tar.gz
+PKG_CFLINE_MGETTY:= depends on ADK_BROKEN
+
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
include ${ADK_TOPDIR}/mk/package.mk
diff --git a/package/mgetty/patches/patch-Makefile b/package/mgetty/patches/patch-Makefile
index 41f1203f0..d121e705a 100644
--- a/package/mgetty/patches/patch-Makefile
+++ b/package/mgetty/patches/patch-Makefile
@@ -1,86 +1,39 @@
---- mgetty-1.1.36.orig/Makefile 2007-06-15 13:15:56.000000000 +0200
-+++ mgetty-1.1.36/Makefile 2011-02-28 21:22:07.000000000 +0100
-@@ -4,7 +4,7 @@
- #
- # this is the C compiler to use (on SunOS, the standard "cc" does not
+--- mgetty-1.2.1.orig/Makefile 2018-09-11 12:38:58.000000000 +0200
++++ mgetty-1.2.1/Makefile 2024-02-13 16:33:13.023498839 +0100
+@@ -6,7 +6,7 @@
# grok my code, so please use gcc there. On ISC 4.0, use "icc".).
--CC=gcc
-+CC?=gcc
- #CC=cc
#
- #### C Compiler Flags ####
-@@ -102,7 +102,7 @@ CC=gcc
+ # if you are cross-compiling, this is the C compiler for the target platform
+-CC=cc
++CC?=cc
+ #CC=gcc
+ #
+ # if you are cross-compiling, *this* needs to be the C compiler that
+@@ -109,7 +109,7 @@ HOSTCC=$(CC)
# USTAT - ustat(), no statfs etc.
#
#CFLAGS=-Wall -O2 -pipe -DSECUREWARE -DUSE_POLL
--CFLAGS=-O2 -Wall -pipe
-+CFLAGS?=-O2 -Wall -pipe
+-CFLAGS=-Wall -O2 -pipe
++CFLAGS?=-Wall -O2 -pipe
#CFLAGS=-O -DSVR4
#CFLAGS=-O -DSVR4 -DSVR42
#CFLAGS=-O -DUSE_POLL
-@@ -143,7 +143,7 @@ CFLAGS=-O2 -Wall -pipe
+@@ -150,7 +150,7 @@ CFLAGS=-Wall -O2 -pipe
# "utmp.o: unresolved symbol _login"
# For Linux, add "-lutil" if the linker complains about "updwtmp".
#
-LDFLAGS=
+LDFLAGS?=
- LIBS=
+ #LIBS=
#LIBS=-lprot -lsocket # SCO Unix
#LIBS=-lsocket
-@@ -164,7 +164,9 @@ LIBS=
+@@ -171,7 +171,8 @@ LIBS=-lutil # FreeBSD or Linux/GNU l
#
# if your systems doesn't have one, use the shell script that I provide
# in "inst.sh" (taken from X11R5). Needed on IRIX5.2
-INSTALL=install -c -o bin -g bin
+STRIP=
+INSTALL=install -c -o root -g root
-+#INSTALL=install -c -o bin -g bin
#INSTALL=install -c -o root -g wheel # NeXT/BSD
#INSTALL=/usr/ucb/install -c -o bin -g bin # AIX, Solaris 2.x
#INSTALL=installbsd -c -o bin -g bin # OSF/1, AIX 4.1, 4.2
-@@ -216,7 +218,7 @@ FAX_SPOOL_OUT=$(FAX_SPOOL)/outgoing
- # (it's possible to run faxrunq(d) as root, but the FAX_OUT_USER
- # MUST NOT BE root or any other privileged account).
- #
--FAX_OUT_USER=fax
-+FAX_OUT_USER=root
- #
- #
- # Where section 1 manual pages should be placed
-@@ -421,7 +423,12 @@ sedscript: mksed
- ./mksed >sedscript
- chmod +x sedscript
-
--mksed: mksed.c policy.h Makefile
-+REALGCC:=/usr/bin/gcc
-+mksed: mksed.c policy.h Makefile
-+ ( echo $(CC_FOR_BUILD); $(MAKE) "CC=$(CC_FOR_BUILD)" "CFLAGS=$(CFLAGS_FOR_BUILD)" mksed-wrong;\
-+ );
-+
-+mksed-wrong: mksed.c policy.h Makefile
- $(CC) $(CFLAGS) -DBINDIR=\"$(BINDIR)\" -DSBINDIR=\"$(SBINDIR)\" \
- -DLIBDIR=\"$(LIBDIR)\" \
- -DCONFDIR=\"$(CONFDIR)\" \
-@@ -586,8 +593,10 @@ install.bin: mgetty sendfax newslock \
- -test -d $(SBINDIR) || ( ./mkidirs $(SBINDIR) ; chmod 755 $(SBINDIR) )
- -mv -f $(SBINDIR)/mgetty $(SBINDIR)/mgetty.old
- -mv -f $(SBINDIR)/sendfax $(SBINDIR)/sendfax.old
-- $(INSTALL) -s -m 700 mgetty $(SBINDIR)
-- $(INSTALL) -s -m 755 sendfax $(SBINDIR)
-+ $(INSTALL) -m 700 mgetty $(SBINDIR)
-+ $(STRIP) $(SBINDIR)/mgetty
-+ $(INSTALL) -m 755 sendfax $(SBINDIR)
-+ $(STRIP) $(SBINDIR)/sendfax
- #
- # data files + directories
- #
-@@ -649,7 +658,8 @@ install.bin: mgetty sendfax newslock \
- if [ ! -z "$(INSTALL_MECHO)" ] ; then \
- cd compat ; \
- $(CC) $(CFLAGS) -o mg.echo mg.echo.c && \
-- $(INSTALL) -s -m 755 mg.echo $(BINDIR) ; \
-+ $(INSTALL) -m 755 mg.echo $(BINDIR) && \
-+ $(STRIP) $(BINDIR)/mg.echo ; \
- fi
-
- #
diff --git a/package/mgetty/patches/patch-g3_Makefile b/package/mgetty/patches/patch-g3_Makefile
deleted file mode 100644
index 3cb6cf24e..000000000
--- a/package/mgetty/patches/patch-g3_Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
---- mgetty-1.1.36.orig/g3/Makefile 2006-02-22 18:25:34.000000000 +0100
-+++ mgetty-1.1.36/g3/Makefile 2009-08-28 15:17:14.239450922 +0200
-@@ -37,7 +37,8 @@ install: all
- # install programs
- #
- for f in $(G3_PROGRAMS) ; do \
-- $(INSTALL) -s -m 755 $$f $(BINDIR) ; \
-+ $(INSTALL) -m 755 $$f $(BINDIR) ; \
-+ $(STRIP) $(BINDIR)/$$f ; \
- done
- #
- # make symlink for "g3topbm" (so third-party fax viewers won't fail)
diff --git a/package/mgetty/patches/patch-g3_g3cat_c b/package/mgetty/patches/patch-g3_g3cat_c
deleted file mode 100644
index 964eea4aa..000000000
--- a/package/mgetty/patches/patch-g3_g3cat_c
+++ /dev/null
@@ -1,38 +0,0 @@
---- mgetty-1.1.36.orig/g3/g3cat.c 2005-02-27 20:03:37.000000000 +0100
-+++ mgetty-1.1.36/g3/g3cat.c 2017-06-03 23:40:23.804404768 +0200
-@@ -44,7 +44,7 @@ static int b_written = 0; /* bytes of a
- /* written */
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void putcode _P2( (code, len), int code, int len )
- {
-@@ -67,7 +67,7 @@ void putcode _P2( (code, len), int code,
- }
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void putwhitespan _P1( (l), int l )
- {
-@@ -98,7 +98,7 @@ void putwhitespan _P1( (l), int l )
- }
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void putblackspan _P1( (l), int l )
- {
-@@ -129,7 +129,7 @@ void putblackspan _P1( (l), int l )
- }
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void puteol _P0( void ) /* write byte-aligned EOL */
- {
diff --git a/package/mgetty/patches/patch-g3_pbm2g3_c b/package/mgetty/patches/patch-g3_pbm2g3_c
deleted file mode 100644
index f56292e84..000000000
--- a/package/mgetty/patches/patch-g3_pbm2g3_c
+++ /dev/null
@@ -1,38 +0,0 @@
---- mgetty-1.1.36.orig/g3/pbm2g3.c 1998-05-07 13:32:04.000000000 +0200
-+++ mgetty-1.1.36/g3/pbm2g3.c 2017-06-03 23:32:07.020481555 +0200
-@@ -40,7 +40,7 @@ static unsigned int out_hibit = 0;
- static int out_byte_tab[ 256 ]; /* for g3 byte reversal */
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void putcode _P2( (code, len), int code, int len )
- {
-@@ -60,7 +60,7 @@ void putcode _P2( (code, len), int code,
- }
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void puteol _P0( void ) /* write byte-aligned EOL */
- {
-@@ -69,7 +69,7 @@ void puteol _P0( void ) /* write byte-
- }
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void putwhitespan _P1( (l), int l )
- {
-@@ -100,7 +100,7 @@ void putwhitespan _P1( (l), int l )
- }
-
- #ifdef __GNUC__
--inline
-+static inline
- #endif
- void putblackspan _P1( (l), int l )
- {
diff --git a/package/mgetty/patches/patch-logfile_c b/package/mgetty/patches/patch-logfile_c
deleted file mode 100644
index e2c4fdc96..000000000
--- a/package/mgetty/patches/patch-logfile_c
+++ /dev/null
@@ -1,17 +0,0 @@
---- mgetty-1.1.36.orig/logfile.c 2005-11-26 14:48:16.000000000 +0100
-+++ mgetty-1.1.36/logfile.c 2009-08-28 15:17:14.239450922 +0200
-@@ -327,12 +327,11 @@ static int first_open = TRUE;
- }
- else /* ERROR or FATAL */
- {
-- fprintf(log_fp, "\n%02d/%02d %02d:%02d:%02d %s %s: %s",
-+ fprintf(log_fp, "\n%02d/%02d %02d:%02d:%02d %s %s: #%d",
- tm->tm_mon+1, tm->tm_mday,
- tm->tm_hour, tm->tm_min, tm->tm_sec,
- log_infix, ws,
-- ( errnr <= sys_nerr ) ? sys_errlist[errnr]:
-- "<error not in list>" );
-+ errnr );
- #ifdef SYSLOG
- syslog( level == L_FATAL? LOG_ALERT: LOG_ERR, "%s: %m", ws );
- #endif
diff --git a/package/midori/Makefile b/package/midori/Makefile
deleted file mode 100644
index 6f45300e0..000000000
--- a/package/midori/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= midori
-PKG_VERSION:= 0.5.11
-PKG_RELEASE:= 2
-PKG_HASH:= 3b8f3a0fe8283fcbb0f9c88b2165e2689d3e18f7c1b5d275fff97cf20e7be198
-PKG_DESCR:= graphical web browser
-PKG_SECTION:= x11/apps
-PKG_DEPENDS:= libnotify webkitgtk gcr pango libatk cairo libsqlite
-PKG_DEPENDS+= gdk-pixbuf libgtk3 p11-kit libxcomposite at-spi2-atk
-PKG_DEPENDS+= libpng icu4c gstreamer gst-plugins-base dbus libgnutls
-PKG_DEPENDS+= libxslt libjpeg-turbo libtasn1 libnettle enchant
-PKG_DEPENDS+= libgmp at-spi2-core libxext
-PKG_BUILDDEP:= cmake-host vala-host libnotify webkitgtk gcr
-PKG_BUILDDEP+= librsvg-host librsvg pango atk cairo sqlite
-PKG_BUILDDEP+= gdk-pixbuf libgtk3 p11-kit libpng icu4c gstreamer
-PKG_BUILDDEP+= libXext
-PKG_URL:= http://www.midori-browser.org
-PKG_SITES:= http://distfiles.openadk.org/
-
-PKG_ARCH_DEPENDS:= !mips
-
-WRKBUILD= ${WRKDIR}/${PKG_NAME}-obj
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,MIDORI,midori,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIG_STYLE:= cmake
-CMAKE_FLAGS+= -DUSE_GTK3=ON \
- -DHALF_BRO_INCOM_WEBKIT2=ON \
- -DENABLE_NLS=OFF \
- -DUSE_ZEITGEIST=OFF
-
-midori-install:
- $(INSTALL_DIR) $(IDIR_MIDORI)/usr/lib
- $(CP) $(WRKINST)/usr/lib/* \
- $(IDIR_MIDORI)/usr/lib
- $(INSTALL_DIR) $(IDIR_MIDORI)/usr/share
- $(CP) $(WRKINST)/usr/share/* \
- $(IDIR_MIDORI)/usr/share
- $(INSTALL_DIR) $(IDIR_MIDORI)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/midori \
- $(IDIR_MIDORI)/usr/bin
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/midori/patches/patch-CMakeLists_txt b/package/midori/patches/patch-CMakeLists_txt
deleted file mode 100644
index 2129969f6..000000000
--- a/package/midori/patches/patch-CMakeLists_txt
+++ /dev/null
@@ -1,13 +0,0 @@
---- midori-0.5.11.orig/CMakeLists.txt 2015-08-30 13:56:26.000000000 +0200
-+++ midori-0.5.11/CMakeLists.txt 2016-04-03 15:01:39.481595419 +0200
-@@ -206,8 +206,8 @@ if (HALF_BRO_INCOM_WEBKIT2)
- elseif (USE_GTK3)
- pkg_check_modules(DEPS_GTK REQUIRED
- gtk+-3.0>=3.10.0
-- webkitgtk-3.0>=1.8.1
-- javascriptcoregtk-3.0
-+ webkitgtk-4.0>=1.8.1
-+ javascriptcoregtk-4.0
- )
- add_definitions("-DGTK_VERSION=\"${DEPS_GTK_gtk+-3.0_VERSION}\"")
- add_definitions("-DWEBKIT_VERSION=\"${DEPS_GTK_webkitgtk-3.0_VERSION}\"")
diff --git a/package/minijail/Makefile b/package/minijail/Makefile
new file mode 100644
index 000000000..4582ff62f
--- /dev/null
+++ b/package/minijail/Makefile
@@ -0,0 +1,38 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= minijail
+PKG_VERSION:= v17
+PKG_RELEASE:= 1
+PKG_HASH:= 1ee5a5916491a32c121c7422b4d8c16481c0396a3acab34bf1c44589dcf810ae
+PKG_DESCR:= sandboxing and containment tool
+PKG_SECTION:= sys/misc
+PKG_DEPENDS:= libcap
+PKG_BUILDDEP:= libcap
+PKG_URL:= https://google.github.io/minijail/
+PKG_SITES:= https://github.com/google/minijail/archive/refs/tags/
+
+DISTFILES:= linux-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/${PKG_NAME}-linux-${PKG_VERSION}
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,MINIJAIL,minijail,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+CONFIG_STYLE:= manual
+INSTALL_STYLE:= manual
+
+minijail-install:
+ $(INSTALL_DIR) $(IDIR_MINIJAIL)/lib
+ $(CP) $(WRKBUILD)/libminijailpreload.so \
+ $(IDIR_MINIJAIL)/lib
+ $(INSTALL_DIR) $(IDIR_MINIJAIL)/lib
+ $(CP) $(WRKBUILD)/libminijail.so \
+ $(IDIR_MINIJAIL)/lib
+ $(INSTALL_DIR) $(IDIR_MINIJAIL)/usr/bin
+ $(INSTALL_BIN) $(WRKBUILD)/minijail0 \
+ $(IDIR_MINIJAIL)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/minijail/patches/patch-common_mk b/package/minijail/patches/patch-common_mk
new file mode 100644
index 000000000..23dc08e77
--- /dev/null
+++ b/package/minijail/patches/patch-common_mk
@@ -0,0 +1,15 @@
+--- minijail-linux-v17.orig/common.mk 2021-08-11 08:01:06.000000000 +0200
++++ minijail-linux-v17/common.mk 2022-01-13 04:53:35.432449083 +0100
+@@ -306,12 +306,6 @@ check_libs_cxx = $(call check_compile,$(
+ check_cc = $(call check_compile_cc,'int main() { return 0; }',$(1),$(2))
+ check_cxx = $(call check_compile_cxx,'int main() { return 0; }',$(1),$(2))
+
+-# Choose the stack protector flags based on whats supported by the compiler.
+-SSP_CFLAGS := $(call check_cc,-fstack-protector-strong)
+-ifeq ($(SSP_CFLAGS),)
+- SSP_CFLAGS := $(call check_cc,-fstack-protector-all)
+-endif
+-
+ # To update these from an including Makefile:
+ # CXXFLAGS += -mahflag # Append to the list
+ # CXXFLAGS := -mahflag $(CXXFLAGS) # Prepend to the list
diff --git a/package/minijail/patches/patch-libminijail_c b/package/minijail/patches/patch-libminijail_c
new file mode 100644
index 000000000..67b06094e
--- /dev/null
+++ b/package/minijail/patches/patch-libminijail_c
@@ -0,0 +1,12 @@
+--- minijail-linux-v17.orig/libminijail.c 2021-08-11 08:01:06.000000000 +0200
++++ minijail-linux-v17/libminijail.c 2022-01-13 04:24:57.190934413 +0100
+@@ -2620,9 +2620,6 @@ static int fd_is_open(int fd)
+ return fcntl(fd, F_GETFD) != -1 || errno != EBADF;
+ }
+
+-static_assert(FD_SETSIZE >= MAX_PRESERVED_FDS * 2 - 1,
+- "If true, ensure_no_fd_conflict will always find an unused fd.");
+-
+ /* If parent_fd will be used by a child fd, move it to an unused fd. */
+ static int ensure_no_fd_conflict(const fd_set *child_fds,
+ int child_fd, int *parent_fd)
diff --git a/package/mongrel2/Makefile b/package/mongrel2/Makefile
index 8fa6393b2..9ae849160 100644
--- a/package/mongrel2/Makefile
+++ b/package/mongrel2/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mongrel2
-PKG_VERSION:= 1.11.0
+PKG_VERSION:= 1.13.0
PKG_RELEASE:= 1
-PKG_HASH:= 917f2ce07c0908cae63ac03f3039815839355d46568581902377ba7e41257bed
+PKG_HASH:= b6f1f50c9f65b605342d8792b1cc8a1c151105339030313b9825b6a68d400c10
PKG_DESCR:= application, language, and network architecture agnostic web server
PKG_SECTION:= net/http
-PKG_BUILDDEP:= zeromq sqlite
-PKG_DEPENDS:= zeromq libsqlite
+PKG_BUILDDEP:= zeromq sqlite-host sqlite mbedtls
+PKG_DEPENDS:= zeromq libsqlite mbedtls
PKG_NEEDS:= threads c++
PKG_URL:= http://mongrel2.org
PKG_SITES:= https://github.com/mongrel2/mongrel2/releases/download/v$(PKG_VERSION)/
diff --git a/package/mongrel2/patches/patch-Makefile b/package/mongrel2/patches/patch-Makefile
index 182389538..14ede92ab 100644
--- a/package/mongrel2/patches/patch-Makefile
+++ b/package/mongrel2/patches/patch-Makefile
@@ -1,30 +1,20 @@
---- mongrel2-v1.11.0.orig/Makefile 2015-12-31 10:25:17.000000000 +0100
-+++ mongrel2-v1.11.0/Makefile 2016-04-25 20:21:46.996240089 +0200
-@@ -1,6 +1,7 @@
--CFLAGS=-g -O2 -Wall -Wextra -Isrc -Isrc/mbedtls/include -pthread -rdynamic -DNDEBUG $(OPTFLAGS) -D_FILE_OFFSET_BITS=64
-+CFLAGS?=
-+CFLAGS+=-Wall -Wextra -Isrc -Isrc/mbedtls/include -pthread -rdynamic -DNDEBUG $(OPTFLAGS) -D_FILE_OFFSET_BITS=64
- LIBS=-lzmq -ldl -lsqlite3 $(OPTLIBS)
+--- mongrel2-v1.13.0.orig/Makefile 2021-12-25 01:03:28.000000000 +0100
++++ mongrel2-v1.13.0/Makefile 2024-02-22 19:19:16.724583955 +0100
+@@ -2,7 +2,7 @@ CFLAGS?=-g -O2
+ CFLAGS += -Wall -Wextra -Wno-implicit-fallthrough -Wno-unused-const-variable -I./src -DNDEBUG -D_FILE_OFFSET_BITS=64 -pthread
+ CFLAGS += ${OPTFLAGS}
+ LIBS+=-lzmq -ldl -lsqlite3 -lmbedtls -lmbedx509 -lmbedcrypto
-PREFIX?=/usr/local
+PREFIX?=/usr
get_objs = $(addsuffix .o,$(basename $(wildcard $(1))))
-@@ -29,7 +30,7 @@ ifdef $($(shell \
- fi ))
- endif
+@@ -18,7 +18,7 @@ TEST_SRC=$(wildcard tests/*_tests.c)
+ TESTS=$(patsubst %.c,%,${TEST_SRC})
+ MAKEOPTS=OPTFLAGS="${CFLAGS} ${NOEXTCFLAGS} ${OPTFLAGS}" LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" DESTDIR="${DESTDIR}" PREFIX="${PREFIX}"
--all: builddirs bin/mongrel2 tests m2sh procer
-+all: builddirs bin/mongrel2 m2sh procer
+-all: bin/mongrel2 tests m2sh procer
++all: bin/mongrel2 m2sh procer
- dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS) -D_FILE_OFFSET_BITS=64
- dev: all
-@@ -160,8 +161,6 @@ install: all
- || ( install -d $(DESTDIR)/$(PREFIX)/bin/ \
- && install bin/mongrel2 $(DESTDIR)/$(PREFIX)/bin/ )
- ${MAKE} ${MAKEOPTS} -C tools/m2sh install
-- ${MAKE} ${MAKEOPTS} -C tools/config_modules install
-- ${MAKE} ${MAKEOPTS} -C tools/filters install
- ${MAKE} ${MAKEOPTS} -C tools/procer install
-
- examples/python/mongrel2/sql/config.sql: src/config/config.sql src/config/mimetypes.sql
+ ${OBJECTS_NOEXT}: CFLAGS += ${NOEXTCFLAGS}
+ ${OBJECTS}: | builddirs
diff --git a/package/mongrel2/patches/patch-tools_m2sh_Makefile b/package/mongrel2/patches/patch-tools_m2sh_Makefile
index c6296496a..abec82a1f 100644
--- a/package/mongrel2/patches/patch-tools_m2sh_Makefile
+++ b/package/mongrel2/patches/patch-tools_m2sh_Makefile
@@ -1,5 +1,5 @@
---- mongrel2-v1.11.0.orig/tools/m2sh/Makefile 2015-12-31 10:25:18.000000000 +0100
-+++ mongrel2-v1.11.0/tools/m2sh/Makefile 2016-04-25 20:14:36.744476585 +0200
+--- mongrel2-v1.13.0.orig/tools/m2sh/Makefile 2021-12-25 01:03:28.000000000 +0100
++++ mongrel2-v1.13.0/tools/m2sh/Makefile 2024-02-22 19:03:20.332596928 +0100
@@ -1,7 +1,8 @@
-CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS)
+CFLAGS?=
@@ -11,17 +11,17 @@
SOURCES=$(wildcard src/*.c src/**/*.c)
OBJECTS=$(patsubst %.c,%.o,${SOURCES})
TEST_SRC=$(wildcard tests/*.c)
-@@ -9,7 +10,7 @@ TESTS=$(patsubst %.c,%,${TEST_SRC})
- LIB_SRC=$(filter-out src/m2sh.c,${SOURCES})
- LIB_OBJ=$(filter-out src/m2sh.o,${OBJECTS})
+@@ -12,7 +13,7 @@ RAGEL_OBJECTS=src/lexer.o src/cli.o
+
+ $(RAGEL_OBJECTS): CFLAGS += -Wno-unused-const-variable -Wimplicit-fallthrough=0 -Wno-unused-parameter
-all: ../lemon/lemon tests build/m2sh
+all: ../lemon/lemon build/m2sh
dev: CFLAGS=-g -Wall -Wextra -Isrc -I../../src $(OPTFLAGS)
dev: all
-@@ -27,7 +28,7 @@ build/m2sh: ../lemon/lemon ../../build/l
- $(CC) $(CFLAGS) -o build/m2sh ${OBJECTS} ../../build/libm2.a $(LIBS)
+@@ -32,7 +33,7 @@ build/m2sh: ../lemon/lemon ../../build/l
+ $(CC) $(CFLAGS) -o build/m2sh ${OBJECTS} ../../build/libm2.a $(LDFLAGS) $(LIBS)
../lemon/lemon: ../lemon/lemon.c
- $(CC) -O2 ../lemon/lemon.c -o ../lemon/lemon
diff --git a/package/monit/Makefile b/package/monit/Makefile
index ace5b354d..2cc22ef74 100644
--- a/package/monit/Makefile
+++ b/package/monit/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= monit
-PKG_VERSION:= 5.23.0
+PKG_VERSION:= 5.33.0
PKG_RELEASE:= 1
-PKG_HASH:= dd39fe3a379c02402ba9c44c201b3ba925ebdc8f04225918820607b6c5d56713
+PKG_HASH:= 1ace889c0183473a9d70160df6533bb6e1338dc1354f5928507803e1e2a863b5
PKG_DESCR:= utility for system services monitoring
PKG_SECTION:= sys/misc
-PKG_DEPENDS:= libressl
-PKG_BUILDDEP:= libressl
+PKG_DEPENDS:= libressl zlib
+PKG_BUILDDEP:= libressl zlib
PKG_NEEDS:= threads
PKG_URL:= http://mmonit.com/monit/
PKG_SITES:= https://mmonit.com/monit/dist/
diff --git a/package/monit/patches/patch-configure b/package/monit/patches/patch-configure
new file mode 100644
index 000000000..5908d3b70
--- /dev/null
+++ b/package/monit/patches/patch-configure
@@ -0,0 +1,49 @@
+--- monit-5.33.0.orig/configure 2023-02-11 11:29:07.000000000 +0100
++++ monit-5.33.0/configure 2024-02-13 16:51:40.139483822 +0100
+@@ -5428,46 +5428,6 @@ else $as_nop
+ :
+ fi
+
+-if test `uname` != "AIX"; then
+- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstack-protector-all" >&5
+-printf %s "checking whether C compiler accepts -fstack-protector-all... " >&6; }
+-if test ${ax_cv_check_cflags___fstack_protector_all+y}
+-then :
+- printf %s "(cached) " >&6
+-else $as_nop
+-
+- ax_check_save_flags=$CFLAGS
+- CFLAGS="$CFLAGS -fstack-protector-all"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-int
+-main (void)
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_compile "$LINENO"
+-then :
+- ax_cv_check_cflags___fstack_protector_all=yes
+-else $as_nop
+- ax_cv_check_cflags___fstack_protector_all=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+- CFLAGS=$ax_check_save_flags
+-fi
+-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstack_protector_all" >&5
+-printf "%s\n" "$ax_cv_check_cflags___fstack_protector_all" >&6; }
+-if test "x$ax_cv_check_cflags___fstack_protector_all" = xyes
+-then :
+- CFLAGS="$CFLAGS -fstack-protector-all"
+-else $as_nop
+- :
+-fi
+-
+-fi
+
+
+ # ------------------------------------------------------------------------
diff --git a/package/monit/patches/patch-libmonit_configure b/package/monit/patches/patch-libmonit_configure
new file mode 100644
index 000000000..f86308419
--- /dev/null
+++ b/package/monit/patches/patch-libmonit_configure
@@ -0,0 +1,49 @@
+--- monit-5.33.0.orig/libmonit/configure 2023-02-11 11:29:10.000000000 +0100
++++ monit-5.33.0/libmonit/configure 2024-02-13 16:56:07.859480191 +0100
+@@ -5130,46 +5130,6 @@ else $as_nop
+ :
+ fi
+
+-if test `uname` != "AIX"; then
+- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fstack-protector-all" >&5
+-printf %s "checking whether C compiler accepts -fstack-protector-all... " >&6; }
+-if test ${ax_cv_check_cflags___fstack_protector_all+y}
+-then :
+- printf %s "(cached) " >&6
+-else $as_nop
+-
+- ax_check_save_flags=$CFLAGS
+- CFLAGS="$CFLAGS -fstack-protector-all"
+- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-int
+-main (void)
+-{
+-
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_compile "$LINENO"
+-then :
+- ax_cv_check_cflags___fstack_protector_all=yes
+-else $as_nop
+- ax_cv_check_cflags___fstack_protector_all=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+- CFLAGS=$ax_check_save_flags
+-fi
+-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fstack_protector_all" >&5
+-printf "%s\n" "$ax_cv_check_cflags___fstack_protector_all" >&6; }
+-if test "x$ax_cv_check_cflags___fstack_protector_all" = xyes
+-then :
+- CFLAGS="$CFLAGS -fstack-protector-all"
+-else $as_nop
+- :
+-fi
+-
+-fi
+
+ # ---------------------------------------------------------------------------
+ # Libtool
diff --git a/package/mopd/Makefile b/package/mopd/Makefile
index e3ffe9dd3..54245dc63 100644
--- a/package/mopd/Makefile
+++ b/package/mopd/Makefile
@@ -15,6 +15,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,MOPD,mopd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+TARGET_CFLAGS+= -fcommon
CONFIG_STYLE:= manual
INSTALL_STYLE:= manual
diff --git a/package/mopd/src/Makefile b/package/mopd/src/Makefile
index 980579251..522884369 100644
--- a/package/mopd/src/Makefile
+++ b/package/mopd/src/Makefile
@@ -12,7 +12,7 @@ MOP_PATH="-DMOP_FILE_PATH=\\\"/tftpboot/mop\\\""
# AOUT_SUPPORT="-DNOAOUT"
AOUT_SUPPORT=""
-CFLAGS="-g ${AOUT_SUPPORT} ${MOP_PATH} ${DEFAULT_HOSTNAME} ${REAL_HOSTNAME}"
+CFLAGS="-fcommon ${AOUT_SUPPORT} ${MOP_PATH} ${DEFAULT_HOSTNAME} ${REAL_HOSTNAME}"
#make file to build linux-mopd
SUBDIRS=common mopd mopchk mopprobe moptrace
diff --git a/package/mosquitto/Makefile b/package/mosquitto/Makefile
index 836e1630b..2cafc703f 100644
--- a/package/mosquitto/Makefile
+++ b/package/mosquitto/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mosquitto
-PKG_VERSION:= 1.4.9
+PKG_VERSION:= 2.0.18
PKG_RELEASE:= 1
-PKG_HASH:= 1df3ae07de40b80a74cd37a7b026895c544cdd3b42c9e0719ae91623aa98c58b
+PKG_HASH:= d665fe7d0032881b1371a47f34169ee4edab67903b2cd2b4c083822823f4448a
PKG_DESCR:= mqtt broker
PKG_SECTION:= net/misc
PKG_DEPENDS:= c-ares libressl
@@ -33,7 +33,7 @@ mosquitto-install:
$(IDIR_MOSQUITTO)/usr/bin
$(INSTALL_BIN) $(WRKINST)/usr/sbin/mosquitto* \
$(IDIR_MOSQUITTO)/usr/sbin
- $(INSTALL_DATA) $(WRKINST)/etc/mosquitto/* \
+ $(INSTALL_DATA) $(WRKINST)/usr/etc/mosquitto/* \
$(IDIR_MOSQUITTO)/etc/mosquitto
$(CP) $(WRKINST)/usr/lib/*.so* \
$(IDIR_MOSQUITTO)/usr/lib
diff --git a/package/motion/Makefile b/package/motion/Makefile
index 4e2c7d4f7..f88db12bd 100644
--- a/package/motion/Makefile
+++ b/package/motion/Makefile
@@ -4,22 +4,24 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= motion
-# actually a svn version from 25.06.2014 checkout
-PKG_VERSION:= 4.0
-PKG_RELEASE:= 2
-PKG_HASH:= ff2931b0af037da126fed3e496430944132528132e71473aae478ff2e7f78e0d
+PKG_VERSION:= 4.6.0
+PKG_RELEASE:= 1
+PKG_HASH:= 9268df31a5ebeaf8daca4747cdcd01c86e223625b6f971e9bcec98edf35ec06f
PKG_DESCR:= webcam motion sensing and logging
PKG_SECTION:= mm/video
-PKG_DEPENDS:= libjpeg-turbo libsdl
-PKG_BUILDDEP:= libjpeg-turbo sdl
+PKG_DEPENDS:= libjpeg-turbo libmicrohttpd
+PKG_BUILDDEP:= libjpeg-turbo libmicrohttpd
PKG_NEEDS:= threads
-PKG_URL:= http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome
-PKG_SITES:= http://distfiles.openadk.org/
+PKG_SITES:= https://github.com/Motion-Project/motion/archive/refs/tags/
+
+DISTFILES:= release-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/${PKG_NAME}-release-${PKG_VERSION}
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,MOTION,motion,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --without-ffmpeg \
--without-jpeg-mmx \
--without-optimizecpu \
diff --git a/package/motion/patches/patch-config_h b/package/motion/patches/patch-config_h
deleted file mode 100644
index 7c6d32ce8..000000000
--- a/package/motion/patches/patch-config_h
+++ /dev/null
@@ -1,33 +0,0 @@
---- motion-4.0.orig/config.h 2011-09-18 22:49:29.000000000 +0200
-+++ motion-4.0/config.h 2012-07-25 14:54:50.000000000 +0200
-@@ -14,7 +14,7 @@
- #define HAVE_LINUX_VIDEODEV2_H 1
-
- /* Define to 1 if you have the <linux/videodev.h> header file. */
--#define HAVE_LINUX_VIDEODEV_H 1
-+/* #undef HAVE_LINUX_VIDEODEV_H */
-
- /* Define to 1 if you have the <memory.h> header file. */
- #define HAVE_MEMORY_H 1
-@@ -89,10 +89,10 @@
- #define SIZEOF_INT 4
-
- /* The size of `int *', as computed by sizeof. */
--#define SIZEOF_INT_P 8
-+#define SIZEOF_INT_P 4
-
- /* The size of `long int', as computed by sizeof. */
--#define SIZEOF_LONG_INT 8
-+#define SIZEOF_LONG_INT 4
-
- /* The size of `long long', as computed by sizeof. */
- #define SIZEOF_LONG_LONG 8
-@@ -101,7 +101,7 @@
- #define SIZEOF_SHORT 2
-
- /* The size of `void *', as computed by sizeof. */
--#define SIZEOF_VOID_P 8
-+#define SIZEOF_VOID_P 4
-
- /* Define to 1 if you have the ANSI C header files. */
- #define STDC_HEADERS 1
diff --git a/package/motion/patches/patch-configure b/package/motion/patches/patch-configure
deleted file mode 100644
index e4f923ce8..000000000
--- a/package/motion/patches/patch-configure
+++ /dev/null
@@ -1,20 +0,0 @@
---- motion-4.0.orig/configure 2011-09-18 22:48:41.000000000 +0200
-+++ motion-4.0/configure 2012-07-25 15:29:03.000000000 +0200
-@@ -2395,7 +2395,7 @@ fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Darwin" >&5
- $as_echo_n "checking for Darwin... " >&6; }
--Darwin=`uname -a | grep "Darwin"`
-+Darwin=
-
- if test "${Darwin}" = ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-@@ -2403,7 +2403,7 @@ $as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for *BSD" >&5
- $as_echo_n "checking for *BSD... " >&6; }
-
-- FreeBSD=`uname -a | grep "BSD"`
-+ FreeBSD=
- if test "${FreeBSD}" = ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
diff --git a/package/motion/patches/patch-motion_init-Debian b/package/motion/patches/patch-motion_init-Debian
deleted file mode 100644
index 18f9ef1a3..000000000
--- a/package/motion/patches/patch-motion_init-Debian
+++ /dev/null
@@ -1,11 +0,0 @@
---- motion-4.0.orig/motion.init-Debian 2011-09-18 22:49:29.000000000 +0200
-+++ motion-4.0/motion.init-Debian 2012-07-25 14:54:50.000000000 +0200
-@@ -6,7 +6,7 @@
-
- NAME=motion
- PATH=/bin:/usr/bin:/sbin:/usr/sbin
--DAEMON=/usr/local/bin/motion
-+DAEMON=/usr/bin/motion
- PIDFILE=/var/run/motion/$NAME.pid
-
-
diff --git a/package/motion/patches/patch-motion_init-FreeBSD_sh b/package/motion/patches/patch-motion_init-FreeBSD_sh
deleted file mode 100644
index 64a47fe11..000000000
--- a/package/motion/patches/patch-motion_init-FreeBSD_sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- motion-4.0.orig/motion.init-FreeBSD.sh 2011-09-18 22:49:29.000000000 +0200
-+++ motion-4.0/motion.init-FreeBSD.sh 2012-07-25 14:54:50.000000000 +0200
-@@ -18,7 +18,7 @@ motion_enable="${motion_enable-NO}"
- name="motion"
- rcvar=`set_rcvar`
-
--command="/usr/local/bin/${name}"
-+command="/usr/bin/${name}"
- pidfile="/var/run/${name}.pid"
- required_files="/usr/local/etc/${name}.conf"
-
diff --git a/package/mpc/Makefile b/package/mpc/Makefile
index 7ccdb9a1e..0ae87e82d 100644
--- a/package/mpc/Makefile
+++ b/package/mpc/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mpc
-PKG_VERSION:= 0.28
+PKG_VERSION:= 0.35
PKG_RELEASE:= 1
-PKG_HASH:= a4337d06c85dc81a638821d30fce8a137a58d13d510be34a11c1cce95cabc547
+PKG_HASH:= 382959c3bfa2765b5346232438650491b822a16607ff5699178aa1386e3878d4
PKG_DESCR:= music player client
PKG_SECTION:= mm/audio
PKG_DEPENDS:= libmpdclient
@@ -18,8 +18,11 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,MPC,mpc,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIGURE_ARGS+= --disable-iconv
-CONFIGURE_ENV+= ac_cv_lib_nsl_gethostbyname=no
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
mpc-install:
$(INSTALL_DIR) $(IDIR_MPC)/usr/bin
diff --git a/package/mpd/Makefile b/package/mpd/Makefile
index 82e02ab0a..424358185 100644
--- a/package/mpd/Makefile
+++ b/package/mpd/Makefile
@@ -4,17 +4,19 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mpd
-PKG_VERSION:= 0.20.13
+PKG_VERSION:= 0.23.15
PKG_RELEASE:= 1
-PKG_HASH:= 46c1c534d80a52de00263e8ef43a6011ff9d765232443749539ef26b1b48ff40
+PKG_HASH:= 550132239ad1acf82ccf8905b56cc13dc2c81a4489b96fba7731b3049907661a
PKG_DESCR:= music player daemon
PKG_SECTION:= mm/audio
-PKG_DEPENDS:= libmpdclient boost libncurses libexpat
-PKG_BUILDDEP:= libmpdclient boost ncurses expat
+PKG_DEPENDS:= libmpdclient boost libncurses libexpat libsqlite libfmt libxcb
+PKG_DEPENDS+= libxau libxdmcp
+PKG_BUILDDEP:= libmpdclient boost ncurses expat sqlite fmt libxcb
+PKG_BUILDDEP+= libXau libXdmcp
PKG_FDEPENDS:= libmpdclient
PKG_NEEDS:= threads c++ data
PKG_URL:= http://www.musicpd.org/
-PKG_SITES:= http://www.musicpd.org/download/mpd/0.20/
+PKG_SITES:= http://www.musicpd.org/download/mpd/0.23/
PKG_FLAVOURS_MPD:= WITH_ALSA WITH_AO WITH_MP3 WITH_MP4
PKG_FLAVOURS_MPD+= WITH_OGG WITH_FLAC WITH_WAV WITH_MMS WITH_FFMPEG
@@ -91,7 +93,7 @@ PKGFD_WITH_CURL:= enable CURL support
PKGFS_WITH_CURL:= libcurl
PKGFB_WITH_CURL:= curl
ifeq ($(ADK_PACKAGE_MPD_WITH_CURL),y)
-PKG_FDEPENDS+= libcurl
+PKG_FDEPENDS+= curl
endif
PKGFD_WITH_SAMPLERATE:= enable samplerate support
@@ -135,142 +137,128 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,MPD,mpd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_FDEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
TARGET_CPPFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
TARGET_CFLAGS+= -std=gnu99
-CONFIGURE_ENV+= ac_cv_lib_nsl_gethostbyname=no
-CONFIGURE_ARGS+= --disable-fifo \
- --disable-oss \
- --disable-icu \
- --disable-bzip2 \
- --disable-libwrap \
- --disable-smbclient \
- --disable-mpc \
- --disable-wavpack \
- --disable-modplug \
- --disable-sqlite \
- --disable-mpg123 \
- --disable-soundcloud \
- --enable-inotify \
- --enable-pipe-output
+
+MESON_FLAGS+= -Dfifo=false \
+ -Doss=disabled
ifneq ($(ADK_PACKAGE_MPD_WITH_JACK),)
-CONFIGURE_ARGS+= --enable-jack
+MESON_FLAGS+= -Djack=enabled
else
-CONFIGURE_ARGS+= --disable-jack
+MESON_FLAGS+= -Djack=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_SNDFILE),)
-CONFIGURE_ARGS+= --enable-sndfile
+MESON_FLAGS+= -Dsndfile=enabled
else
-CONFIGURE_ARGS+= --disable-sndfile
+MESON_FLAGS+= -Dsndfile=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_HTTPD),)
-CONFIGURE_ARGS+= --enable-httpd-output
+MESON_FLAGS+= -Dhttpd=true
else
-CONFIGURE_ARGS+= --disable-httpd-output
+MESON_FLAGS+= -Dhttpd=false
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_AVAHI),)
-CONFIGURE_ARGS+= --with-zeroconf=avahi
+MESON_FLAGS+= -Dzeroconf=avahi
else
-CONFIGURE_ARGS+= --with-zeroconf=no
+MESON_FLAGS+= -Dzeroconf=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_PULSE),)
-CONFIGURE_ARGS+= --enable-pulse
+MESON_FLAGS+= -Dpulse=enabled
else
-CONFIGURE_ARGS+= --disable-pulse
+MESON_FLAGS+= -Dpulse=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_ALSA),)
-CONFIGURE_ARGS+= --enable-alsa
+MESON_FLAGS+= -Dalsa=enabled
else
-CONFIGURE_ARGS+= --disable-alsa
+MESON_FLAGS+= -Dalsa=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_AO),)
-CONFIGURE_ARGS+= --enable-ao
+MESON_FLAGS+= -Dao=enabled
else
-CONFIGURE_ARGS+= --disable-ao
+MESON_FLAGS+= -Dao=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_MP3),)
-CONFIGURE_ARGS+= --enable-id3 --enable-mad
+MESON_FLAGS+= -Dmad=enabled
else
-CONFIGURE_ARGS+= --disable-id3 --disable-mad
+MESON_FLAGS+= -Dmad=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_MP4),)
-CONFIGURE_ARGS+= --enable-aac
+MESON_FLAGS+= -Dfaad=enabled
else
-CONFIGURE_ARGS+= --disable-aac
+MESON_FLAGS+= -Dfaad=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_OGG),)
-CONFIGURE_ARGS+= --enable-vorbis
+MESON_FLAGS+= -Dvorbis=enabled
else
-CONFIGURE_ARGS+= --disable-vorbis
+MESON_FLAGS+= -Dvorbis=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_TREMOR),)
-CONFIGURE_ARGS+= \
- --disable-vorbis \
- --with-tremor \
- --with-tremor-includes=$(STAGING_TARGET_DIR)/usr/include \
- --with-tremor-libraries=$(STAGING_TARGET_DIR)/usr/lib
+MESON_FLAGS+= -Dtremor=enabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_FLAC),)
-CONFIGURE_ARGS+= --enable-flac
+MESON_FLAGS+= -Dflac=enabled
else
-CONFIGURE_ARGS+= --disable-flac
+MESON_FLAGS+= -Dflac=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_WAV),)
-CONFIGURE_ARGS+= --enable-audiofile
+MESON_FLAGS+= -Daudiofile=enabled
else
-CONFIGURE_ARGS+= --disable-audiofile
+MESON_FLAGS+= -Daudiofile=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_SHOUT),)
-CONFIGURE_ARGS+= --enable-shout \
- --enable-lame-encoder \
- --enable-vorbis-encoder
+MESON_FLAGS+= -Dshout=enabled
else
-CONFIGURE_ARGS+= --disable-shout \
- --disable-lame-encoder \
- --disable-vorbis-encoder
+MESON_FLAGS+= -Dshout=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_CURL),)
-CONFIGURE_ARGS+= --enable-curl
+MESON_FLAGS+= -Dcurl=enabled
else
-CONFIGURE_ARGS+= --disable-curl
+MESON_FLAGS+= -Dcurl=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_MMS),)
-CONFIGURE_ARGS+= --enable-mms
+MESON_FLAGS+= -Dmms=enabled
else
-CONFIGURE_ARGS+= --disable-mms
+MESON_FLAGS+= -Dmms=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_FFMPEG),)
-CONFIGURE_ARGS+= --enable-ffmpeg
+MESON_FLAGS+= -Dffmpeg=enabled
else
-CONFIGURE_ARGS+= --disable-ffmpeg
+MESON_FLAGS+= -Dffmpeg=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_SAMPLERATE),)
-CONFIGURE_ARGS+= --enable-lsr
+MESON_FLAGS+= -Dlibsamplerate=enabled
else
-CONFIGURE_ARGS+= --disable-lsr
+MESON_FLAGS+= -Dlibsamplerate=disabled
endif
ifneq ($(ADK_PACKAGE_MPD_WITH_OPUS),)
-CONFIGURE_ARGS+= --enable-opus
+MESON_FLAGS+= -Dopus=enabled
else
-CONFIGURE_ARGS+= --disable-opus
+MESON_FLAGS+= -Dopus=disabled
endif
mpd-install:
diff --git a/package/mpd/files/mpd.conf b/package/mpd/files/mpd.conf
index 4c6cfe471..7e1c947d5 100644
--- a/package/mpd/files/mpd.conf
+++ b/package/mpd/files/mpd.conf
@@ -8,7 +8,6 @@ db_file "/data/mpd/database"
pid_file "/var/run/mpd/mpd.pid"
log_file "syslog"
filesystem_charset "UTF-8"
-id3v1_encoding "UTF-8"
mixer_type "software"
# An example of an ALSA output
diff --git a/package/mpg123/Makefile b/package/mpg123/Makefile
index 9ef90c5cf..dbc9b0033 100644
--- a/package/mpg123/Makefile
+++ b/package/mpg123/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= mpg123
-PKG_VERSION:= 1.25.2
+PKG_VERSION:= 1.32.4
PKG_RELEASE:= 1
-PKG_HASH:= 5314b0fb8ad291bfc79ff4c5c321b971916819a65233ec065434358fcf8aee38
+PKG_HASH:= 5a99664338fb2f751b662f40ee25804d0c9db6b575dcb5ce741c6dc64224a08a
PKG_DESCR:= mp3 console player
PKG_SECTION:= mm/audio
PKG_DEPENDS:= alsa-lib
@@ -21,21 +21,20 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,MPG123,mpg123,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
-
ifeq ($(ADK_TARGET_CPU_X86_I486),y)
CONFIGURE_ARGS+= --with-cpu=i486
endif
ifeq ($(ADK_TARGET_CPU_X86_I586),y)
CONFIGURE_ARGS+= --with-cpu=i586
endif
-ifeq ($(ADK_TARGET_CPU_WITH_NEON),y)
+ifeq ($(ADK_TARGET_ARCH_ARM)$(ADK_TARGET_CPU_WITH_NEON),yy)
CONFIGURE_ARGS+= --with-cpu=neon
endif
+ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
+CONFIGURE_ARGS+= --with-cpu=aarch64
+endif
-TARGET_CPPFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
-CONFIGURE_ARGS+= --disable-shared \
- --with-default-audio=alsa
+CONFIGURE_ARGS+= --with-default-audio=alsa --disable-shared
mpg123-install:
$(INSTALL_DIR) $(IDIR_MPG123)/usr/bin
diff --git a/package/mpg123/patches/patch-configure_ac b/package/mpg123/patches/patch-configure_ac
deleted file mode 100644
index 41a7e658e..000000000
--- a/package/mpg123/patches/patch-configure_ac
+++ /dev/null
@@ -1,11 +0,0 @@
---- mpg123-1.21.0.orig/configure.ac 2014-09-28 16:27:28.000000000 -0500
-+++ mpg123-1.21.0/configure.ac 2015-02-16 13:31:29.910186926 -0600
-@@ -1548,7 +1548,7 @@ do
- HAVE_ALSA=no
- else
-
-- ALSA_LIBS="-lasound"
-+ ALSA_LIBS="-lasound -lpthread"
- # Check for ALSA
- AC_CHECK_LIB( [asound], [snd_pcm_open],
- [ AC_CHECK_HEADER( [alsa/asoundlib.h],
diff --git a/package/mplayer/Makefile b/package/mplayer/Makefile
index 047e07a97..ef821a290 100644
--- a/package/mplayer/Makefile
+++ b/package/mplayer/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mplayer
-PKG_VERSION:= 1.3.0
+PKG_VERSION:= 1.5
PKG_RELEASE:= 1
-PKG_HASH:= 3ad0846c92d89ab2e4e6fb83bf991ea677e7aa2ea775845814cbceb608b09843
+PKG_HASH:= 650cd55bb3cb44c9b39ce36dac488428559799c5f18d16d98edb2b7256cbbf85
PKG_DESCR:= popular video player
PKG_SECTION:= mm/video
PKG_DEPENDS:= alsa-lib libjpeg-turbo libfaad2 libmad libncurses
@@ -23,7 +23,7 @@ PKG_SITES:= http://www.mplayerhq.hu/MPlayer/releases/
DISTFILES:= MPlayer-$(PKG_VERSION).tar.xz
WRKDIST= ${WRKDIR}/MPlayer-${PKG_VERSION}
-PKG_ARCH_DEPENDS:= x86 x86_64 mips arm
+PKG_ARCH_DEPENDS:= x86 x86_64 mips arm aarch64
PKG_FLAVOURS_MPLAYER:= WITH_DIRECTFB
PKGFD_WITH_DIRECTFB:= enable DirectFB video output support
@@ -161,7 +161,6 @@ CONFIGURE_ARGS:= --prefix=/usr \
--disable-live \
--disable-pvr \
--disable-ftp \
- --disable-ivtv \
--disable-freetype \
--disable-mpg123 \
--disable-arts \
diff --git a/package/mplayer/patches/patch-stream_asf_streaming_c b/package/mplayer/patches/patch-stream_asf_streaming_c
deleted file mode 100644
index 4fa3b696b..000000000
--- a/package/mplayer/patches/patch-stream_asf_streaming_c
+++ /dev/null
@@ -1,27 +0,0 @@
---- mplayer-1.0-32749.orig/stream/asf_streaming.c 2011-01-03 11:26:52.000000000 +0100
-+++ mplayer-1.0-32749/stream/asf_streaming.c 2011-07-29 17:54:35.013424616 +0200
-@@ -38,7 +38,6 @@
-
- #include "stream.h"
- #include "libmpdemux/demuxer.h"
--#include "asf_mmst_streaming.h"
- #include "network.h"
- #include "tcp.h"
-
-@@ -87,16 +86,6 @@ static int asf_streaming_start( stream_t
- if( fd==-2 ) return -1;
- }
-
-- //Is protocol mms or mmst?
-- if (!strcasecmp(proto, "mmst") || !strcasecmp(proto, "mms"))
-- {
-- mp_msg(MSGT_NETWORK,MSGL_V,"Trying ASF/TCP...\n");
-- fd = asf_mmst_streaming_start( stream );
-- stream->streaming_ctrl->url->port = port;
-- if( fd>-1 ) return fd;
-- mp_msg(MSGT_NETWORK,MSGL_V," ===> ASF/TCP failed\n");
-- if( fd==-2 ) return -1;
-- }
-
- //Is protocol http, http_proxy, or mms?
- if (!strcasecmp(proto, "http_proxy") || !strcasecmp(proto, "http") ||
diff --git a/package/mtdev/Makefile b/package/mtdev/Makefile
new file mode 100644
index 000000000..b4e2bfd3c
--- /dev/null
+++ b/package/mtdev/Makefile
@@ -0,0 +1,26 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= mtdev
+PKG_VERSION:= 1.1.6
+PKG_RELEASE:= 1
+PKG_HASH:= 1325f389a2f25cd5f5a8ea4d29aad24aa7c3ec30401d679400dd79eb9c0a8dbb
+PKG_DESCR:= library which transforms all variants of kernel MT events
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://bitmath.org/code/mtdev/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,MTDEV,mtdev,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+mtdev-install:
+ $(INSTALL_DIR) $(IDIR_MTDEV)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libmtdev*.so* \
+ $(IDIR_MTDEV)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/mtr/Makefile b/package/mtr/Makefile
index 910dce00b..8076804f6 100644
--- a/package/mtr/Makefile
+++ b/package/mtr/Makefile
@@ -4,17 +4,17 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mtr
-PKG_VERSION:= 0.75
-PKG_RELEASE:= 2
-PKG_HASH:= 1d1a5de6b233289bf17a21e3bf83c82db47d22bb269af986229b788689e1f0f3
+PKG_VERSION:= 0.95
+PKG_RELEASE:= 1
+PKG_HASH:= 12490fb660ba5fb34df8c06a0f62b4f9cbd11a584fc3f6eceda0a99124e8596f
PKG_DESCR:= traceroute/ping tool
PKG_SECTION:= net/debug
PKG_DEPENDS:= libncurses
PKG_BUILDDEP:= ncurses
PKG_URL:= http://www.bitwizard.nl/mtr/
-PKG_SITES:= ftp://ftp.bitwizard.nl/mtr/
+PKG_SITES:= https://github.com/traviscross/mtr/archive/refs/tags/
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+DISTFILES:= v${PKG_VERSION}.tar.gz
PKG_LIBC_DEPENDS:= uclibc-ng glibc
@@ -23,6 +23,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,MTR,mtr,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
TARGET_LDFLAGS+= -ltinfo
+AUTOTOOL_STYLE:= bootstrap
CONFIGURE_ENV+= ac_cv_lib_resolv_res_mkquery=yes
CONFIGURE_ARGS+= --without-gtk
diff --git a/package/mtr/patches/501-dns.patch b/package/mtr/patches/501-dns.patch
deleted file mode 100644
index f1c915580..000000000
--- a/package/mtr/patches/501-dns.patch
+++ /dev/null
@@ -1,511 +0,0 @@
-diff -Naur mtr-0.69.old/dns.c mtr-0.69.new/dns.c
---- mtr-0.69.old/dns.c 2005-01-11 09:32:42.000000000 +0100
-+++ mtr-0.69.new/dns.c 2005-10-03 21:31:27.000000000 +0200
-@@ -853,6 +853,507 @@
- fputs("\r",stderr);
- }
-
-+#ifdef __UCLIBC__
-+
-+static const char digits[] = "0123456789";
-+#define __set_errno(e) (errno = (e))
-+
-+#define NS_PUT16(s, cp) do { \
-+ register u_int16_t t_s = (u_int16_t)(s); \
-+ register u_char *t_cp = (u_char *)(cp); \
-+ *t_cp++ = t_s >> 8; \
-+ *t_cp = t_s; \
-+ (cp) += NS_INT16SZ; \
-+} while (0)
-+
-+
-+
-+#define NS_PUT32(l, cp) do { \
-+ register u_int32_t t_l = (u_int32_t)(l); \
-+ register u_char *t_cp = (u_char *)(cp); \
-+ *t_cp++ = t_l >> 24; \
-+ *t_cp++ = t_l >> 16; \
-+ *t_cp++ = t_l >> 8; \
-+ *t_cp = t_l; \
-+ (cp) += NS_INT32SZ; \
-+} while (0)
-+
-+
-+void
-+ns_put16(u_int src, u_char *dst) {
-+ NS_PUT16(src, dst);
-+}
-+
-+void
-+ns_put32(u_long src, u_char *dst) {
-+ NS_PUT32(src, dst);
-+}
-+
-+void __putshort(u_int16_t src, u_char *dst) { ns_put16(src, dst); }
-+void __putlong(u_int32_t src, u_char *dst) { ns_put32(src, dst); }
-+
-+int
-+mklower(int ch) {
-+ if (ch >= 0x41 && ch <= 0x5A)
-+ return (ch + 0x20);
-+ return (ch);
-+}
-+
-+
-+static int
-+dn_find(const u_char *domain, const u_char *msg,
-+ const u_char * const *dnptrs,
-+ const u_char * const *lastdnptr)
-+{
-+ const u_char *dn, *cp, *sp;
-+ const u_char * const *cpp;
-+ u_int n;
-+
-+ for (cpp = dnptrs; cpp < lastdnptr; cpp++) {
-+ sp = *cpp;
-+ /*
-+ * terminate search on:
-+ * root label
-+ * compression pointer
-+ * unusable offset
-+ */
-+ while (*sp != 0 && (*sp & NS_CMPRSFLGS) == 0 &&
-+ (sp - msg) < 0x4000) {
-+ dn = domain;
-+ cp = sp;
-+ while ((n = *cp++) != 0) {
-+ /*
-+ * check for indirection
-+ */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0: /* normal case, n == len */
-+ if (n != *dn++)
-+ goto next;
-+ for ((void)NULL; n > 0; n--)
-+ if (mklower(*dn++) !=
-+ mklower(*cp++))
-+ goto next;
-+ /* Is next root for both ? */
-+ if (*dn == '\0' && *cp == '\0')
-+ return (sp - msg);
-+ if (*dn)
-+ continue;
-+ goto next;
-+
-+ case NS_CMPRSFLGS: /* indirection */
-+ cp = msg + (((n & 0x3f) << 8) | *cp);
-+ break;
-+
-+ default: /* illegal type */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ }
-+ next:
-+ sp += *sp + 1;
-+ }
-+ }
-+ __set_errno (ENOENT);
-+ return (-1);
-+}
-+
-+
-+int
-+ns_name_pack(const u_char *src, u_char *dst, int dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char *dstp;
-+ const u_char **cpp, **lpp, *eob, *msg;
-+ const u_char *srcp;
-+ int n, l, first = 1;
-+
-+ srcp = src;
-+ dstp = dst;
-+ eob = dstp + dstsiz;
-+ lpp = cpp = NULL;
-+ if (dnptrs != NULL) {
-+ if ((msg = *dnptrs++) != NULL) {
-+ for (cpp = dnptrs; *cpp != NULL; cpp++)
-+ (void)NULL;
-+ lpp = cpp; /* end of list to search */
-+ }
-+ } else
-+ msg = NULL;
-+
-+ /* make sure the domain we are about to add is legal */
-+ l = 0;
-+ do {
-+ n = *srcp;
-+ if ((n & NS_CMPRSFLGS) != 0 && n != 0x41) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ if (n == 0x41)
-+ n = *++srcp / 8;
-+ l += n + 1;
-+ if (l > MAXCDNAME) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ srcp += n + 1;
-+ } while (n != 0);
-+
-+ /* from here on we need to reset compression pointer array on error */
-+ srcp = src;
-+ do {
-+ /* Look to see if we can use pointers. */
-+ n = *srcp;
-+ if (n != 0 && n != 0x41 && msg != NULL) {
-+ l = dn_find(srcp, msg, (const u_char * const *)dnptrs,
-+ (const u_char * const *)lpp);
-+ if (l >= 0) {
-+ if (dstp + 1 >= eob) {
-+ goto cleanup;
-+ }
-+ *dstp++ = (l >> 8) | NS_CMPRSFLGS;
-+ *dstp++ = l % 256;
-+ return (dstp - dst);
-+ }
-+ /* Not found, save it. */
-+ if (lastdnptr != NULL && cpp < lastdnptr - 1 &&
-+ (dstp - msg) < 0x4000 && first) {
-+ *cpp++ = dstp;
-+ *cpp = NULL;
-+ first = 0;
-+ }
-+ }
-+ /* copy label to buffer */
-+ if ((n & NS_CMPRSFLGS) != 0 && n != 0x41) { /* Should not happen. */
-+ goto cleanup;
-+ }
-+ if (n == 0x41) {
-+ n = *++srcp / 8;
-+ if (dstp + 1 >= eob)
-+ goto cleanup;
-+ *dstp++ = 0x41;
-+ }
-+ if (dstp + 1 + n >= eob) {
-+ goto cleanup;
-+ }
-+ memcpy(dstp, srcp, n + 1);
-+ srcp += n + 1;
-+ dstp += n + 1;
-+ } while (n != 0);
-+
-+ if (dstp > eob) {
-+cleanup:
-+ if (msg != NULL)
-+ *lpp = NULL;
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ return (dstp - dst);
-+}
-+
-+
-+int
-+ns_name_pton(const char *src, u_char *dst, size_t dstsiz) {
-+ u_char *label, *bp, *eom;
-+ int c, n, escaped;
-+ char *cp;
-+
-+ escaped = 0;
-+ bp = dst;
-+ eom = dst + dstsiz;
-+ label = bp++;
-+
-+ while ((c = *src++) != 0) {
-+ if (escaped) {
-+ if ((cp = strchr(digits, c)) != NULL) {
-+ n = (cp - digits) * 100;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ n += (cp - digits) * 10;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ n += (cp - digits);
-+ if (n > 255) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ c = n;
-+ } else if (c == '[' && label == bp - 1 && *src == 'x') {
-+ /* Theoretically we would have to handle \[o
-+ as well but we do not since we do not need
-+ it internally. */
-+ *label = 0x41;
-+ label = bp++;
-+ ++src;
-+ while (isxdigit (*src)) {
-+ n = *src > '9' ? *src - 'a' + 10 : *src - '0';
-+ ++src;
-+ if (! isxdigit(*src)) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ n <<= 4;
-+ n += *src > '9' ? *src - 'a' + 10 : *src - '0';
-+ if (bp + 1 >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = n;
-+ ++src;
-+ }
-+ *label = (bp - label - 1) * 8;
-+ if (*src++ != ']' || *src++ != '.') {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ escaped = 0;
-+ label = bp++;
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ continue;
-+ }
-+ escaped = 0;
-+ } else if (c == '\\') {
-+ escaped = 1;
-+ continue;
-+ } else if (c == '.') {
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *label = c;
-+ /* Fully qualified ? */
-+ if (*src == '\0') {
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = '\0';
-+ }
-+ if ((bp - dst) > MAXCDNAME) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ return (1);
-+ }
-+ if (c == 0 || *src == '.') {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ label = bp++;
-+ continue;
-+ }
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = (u_char)c;
-+ }
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *label = c;
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ *bp++ = 0;
-+ }
-+ if ((bp - dst) > MAXCDNAME) { /* src too big */
-+ __set_errno (EMSGSIZE);
-+ return (-1);
-+ }
-+ return (0);
-+}
-+
-+
-+
-+int
-+ns_name_compress(const char *src, u_char *dst, size_t dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char tmp[NS_MAXCDNAME];
-+
-+ if (ns_name_pton(src, tmp, sizeof tmp) == -1)
-+ return (-1);
-+ return (ns_name_pack(tmp, dst, dstsiz, dnptrs, lastdnptr));
-+}
-+
-+
-+int
-+dn_comp(const char *src, u_char *dst, int dstsiz,
-+ u_char **dnptrs, u_char **lastdnptr)
-+{
-+ return (ns_name_compress(src, dst, (size_t)dstsiz,
-+ (const u_char **)dnptrs,
-+ (const u_char **)lastdnptr));
-+}
-+
-+
-+
-+
-+int
-+res_nmkquery(res_state statp,
-+ int op, /* opcode of query */
-+ const char *dname, /* domain name */
-+ int class, int type, /* class and type of query */
-+ const u_char *data, /* resource record data */
-+ int datalen, /* length of data */
-+ const u_char *newrr_in, /* new rr for modify or append */
-+ u_char *buf, /* buffer to put query */
-+ int buflen) /* size of buffer */
-+{
-+ register HEADER *hp;
-+ register u_char *cp;
-+ register int n;
-+ u_char *dnptrs[20], **dpp, **lastdnptr;
-+
-+#ifdef DEBUG
-+ if (statp->options & RES_DEBUG)
-+ printf(";; res_nmkquery(%s, %s, %s, %s)\n",
-+ _res_opcodes[op], dname, p_class(class), p_type(type));
-+#endif
-+ /*
-+ * Initialize header fields.
-+ */
-+ if ((buf == NULL) || (buflen < HFIXEDSZ))
-+ return (-1);
-+ memset(buf, 0, HFIXEDSZ);
-+ hp = (HEADER *) buf;
-+ /* We randomize the IDs every time. The old code just
-+ incremented by one after the initial randomization which
-+ still predictable if the application does multiple
-+ requests. */
-+#if 0
-+ hp->id = htons(++statp->id);
-+#else
-+ hp->id = htons(statp->id);
-+ int randombits;
-+ do
-+ {
-+#ifdef RANDOM_BITS
-+ RANDOM_BITS (randombits);
-+#else
-+ struct timeval tv;
-+ gettimeofday (&tv, NULL);
-+ randombits = (tv.tv_sec << 8) ^ tv.tv_usec;
-+#endif
-+ }
-+ while ((randombits & 0xffff) == 0);
-+ statp->id = (statp->id + randombits) & 0xffff;
-+#endif
-+ hp->opcode = op;
-+ hp->rd = (statp->options & RES_RECURSE) != 0;
-+ hp->rcode = NOERROR;
-+ cp = buf + HFIXEDSZ;
-+ buflen -= HFIXEDSZ;
-+ dpp = dnptrs;
-+ *dpp++ = buf;
-+ *dpp++ = NULL;
-+ lastdnptr = dnptrs + sizeof dnptrs / sizeof dnptrs[0];
-+ /*
-+ * perform opcode specific processing
-+ */
-+ switch (op) {
-+ case QUERY: /*FALLTHROUGH*/
-+ case NS_NOTIFY_OP:
-+ if ((buflen -= QFIXEDSZ) < 0)
-+ return (-1);
-+ if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
-+ return (-1);
-+ cp += n;
-+ buflen -= n;
-+ __putshort(type, cp);
-+ cp += INT16SZ;
-+ __putshort(class, cp);
-+ cp += INT16SZ;
-+ hp->qdcount = htons(1);
-+ if (op == QUERY || data == NULL)
-+ break;
-+ /*
-+ * Make an additional record for completion domain.
-+ */
-+ buflen -= RRFIXEDSZ;
-+ n = dn_comp((char *)data, cp, buflen, dnptrs, lastdnptr);
-+ if (n < 0)
-+ return (-1);
-+ cp += n;
-+ buflen -= n;
-+ __putshort(T_NULL, cp);
-+ cp += INT16SZ;
-+ __putshort(class, cp);
-+ cp += INT16SZ;
-+ __putlong(0, cp);
-+ cp += INT32SZ;
-+ __putshort(0, cp);
-+ cp += INT16SZ;
-+ hp->arcount = htons(1);
-+ break;
-+
-+ case IQUERY:
-+ /*
-+ * Initialize answer section
-+ */
-+ if (buflen < 1 + RRFIXEDSZ + datalen)
-+ return (-1);
-+ *cp++ = '\0'; /* no domain name */
-+ __putshort(type, cp);
-+ cp += INT16SZ;
-+ __putshort(class, cp);
-+ cp += INT16SZ;
-+ __putlong(0, cp);
-+ cp += INT32SZ;
-+ __putshort(datalen, cp);
-+ cp += INT16SZ;
-+ if (datalen) {
-+ memcpy(cp, data, datalen);
-+ cp += datalen;
-+ }
-+ hp->ancount = htons(1);
-+ break;
-+
-+ default:
-+ return (-1);
-+ }
-+ return (cp - buf);
-+}
-+
-+int
-+res_mkquery(int op, /* opcode of query */
-+ const char *dname, /* domain name */
-+ int class, int type, /* class and type of query */
-+ const u_char *data, /* resource record data */
-+ int datalen, /* length of data */
-+ const u_char *newrr_in, /* new rr for modify or append */
-+ u_char *buf, /* buffer to put query */
-+ int buflen) /* size of buffer */
-+{
-+ return (res_nmkquery(&_res, op, dname, class, type,
-+ data, datalen,
-+ newrr_in, buf, buflen));
-+}
-+
-+#endif
-
- void dorequest(char *s,int type,word id)
- {
diff --git a/package/mtr/patches/patch-curses_c b/package/mtr/patches/patch-curses_c
deleted file mode 100644
index 2e04bd4ce..000000000
--- a/package/mtr/patches/patch-curses_c
+++ /dev/null
@@ -1,21 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- mtr-0.75.orig/curses.c 2008-08-19 18:55:48.000000000 +0200
-+++ mtr-0.75/curses.c 2008-10-10 15:04:37.000000000 +0200
-@@ -241,7 +241,7 @@ int mtr_curses_keyaction(void)
- return ActionNone;
- }
- if (tolower(c) == 'j') {
-- if( index(fld_active, 'N') ) {
-+ if( strchr(fld_active, 'N') ) {
- strcpy(fld_active, "DR AGJMXI"); /* GeoMean and jitter */
- } else {
- strcpy(fld_active, "LS NABWV"); /* default */
-@@ -328,7 +328,7 @@ void mtr_curses_hosts(int startstat)
- if (j == -1) continue;
-
- /* temporay hack for stats usec to ms... */
-- if( index( data_fields[j].format, 'f' ) ) {
-+ if( strchr( data_fields[j].format, 'f' ) ) {
- sprintf(buf + hd_len, data_fields[j].format,
- data_fields[j].net_xxx(at) /1000.0 );
- } else {
diff --git a/package/mtr/patches/patch-report_c b/package/mtr/patches/patch-report_c
deleted file mode 100644
index bbae19253..000000000
--- a/package/mtr/patches/patch-report_c
+++ /dev/null
@@ -1,30 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- mtr-0.75.orig/report.c 2008-09-18 14:40:09.000000000 +0200
-+++ mtr-0.75/report.c 2008-10-10 15:05:00.000000000 +0200
-@@ -122,7 +122,7 @@ void report_close(void)
- if (j < 0) continue;
-
- /* 1000.0 is a temporay hack for stats usec to ms, impacted net_loss. */
-- if( index( data_fields[j].format, 'f' ) ) {
-+ if( strchr( data_fields[j].format, 'f' ) ) {
- snprintf( buf + len, sizeof(buf), data_fields[j].format,
- data_fields[j].net_xxx(at) /1000.0 );
- } else {
-@@ -201,7 +201,7 @@ void xml_close(void)
- strcat(name, data_fields[j].format);
- strcat(name, "</%s>\n");
- /* 1000.0 is a temporay hack for stats usec to ms, impacted net_loss. */
-- if( index( data_fields[j].format, 'f' ) ) {
-+ if( strchr( data_fields[j].format, 'f' ) ) {
- printf( name,
- data_fields[j].title,
- data_fields[j].net_xxx(at) /1000.0,
-@@ -280,7 +280,7 @@ void csv_close(void)
- if (j < 0) continue;
-
- /* 1000.0 is a temporay hack for stats usec to ms, impacted net_loss. */
-- if( index( data_fields[j].format, 'f' ) ) {
-+ if( strchr( data_fields[j].format, 'f' ) ) {
- printf( ", %.2f", data_fields[j].net_xxx(at) / 1000.0);
- } else {
- printf( ", %d", data_fields[j].net_xxx(at) );
diff --git a/package/musl/Makefile b/package/musl/Makefile
index 948accabe..4e49aadd9 100644
--- a/package/musl/Makefile
+++ b/package/musl/Makefile
@@ -29,7 +29,7 @@ INSTALL_STYLE:= manual
MUSL_LD_SO:= "`echo 'void main(void) {}' |${TARGET_CC} ${TARGET_CFLAGS} -x c -o \
$(BUILD_DIR)/.musl.tmp - >/dev/null 2>&1 ;\
${TARGET_COMPILER_PREFIX}readelf -l $(BUILD_DIR)/.musl.tmp 2>/dev/null \
- | grep 'program interpreter: /lib/ld-musl' | sed -e 's|.*lib/||'|sed -e 's|]||' ;\
+ | grep 'program interpreter: /lib.*/ld-musl' | sed -e 's|.*lib.*/||'|sed -e 's|]||' ;\
rm $(BUILD_DIR)/.musl.tmp`"
# do nothing, musl is already build in toolchain directory
diff --git a/package/mutt/Makefile b/package/mutt/Makefile
index e268f761e..a8578b6ad 100644
--- a/package/mutt/Makefile
+++ b/package/mutt/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mutt
-PKG_VERSION:= 1.8.3
+PKG_VERSION:= 2.2.12
PKG_RELEASE:= 1
-PKG_HASH:= 9b81746d67ffeca5ea44f60893b70dc93c86d4bc10187d4dd360185e4d42ed42
+PKG_HASH:= 043af312f64b8e56f7fd0bf77f84a205d4c498030bd9586457665c47bb18ce38
PKG_DESCR:= mail client for console
PKG_SECTION:= net/mail
PKG_DEPENDS:= libncurses
diff --git a/package/mympd/Makefile b/package/mympd/Makefile
new file mode 100644
index 000000000..ccef09b13
--- /dev/null
+++ b/package/mympd/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= mympd
+PKG_VERSION:= 14.0.2
+PKG_RELEASE:= 1
+PKG_HASH:= 309476bcc352f5b9ddc365412cb636e41b3a9e675c0ef94c17b982af2dfc3aa8
+PKG_DESCR:= standalone music player daemon web gui
+PKG_SECTION:= net/http
+PKG_DEPENDS:= mpd libopenssl pcre2
+PKG_BUILDDEP:= cmake-host libmpdclient openssl pcre2
+PKG_URL:= https://github.com/jcorporation/myMPD
+PKG_SITES:= https://github.com/jcorporation/myMPD/archive/refs/tags/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/myMPD-${PKG_VERSION}
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,MYMPD,mympd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+CONFIG_STYLE:= cmake
+CMAKE_FLAGS:= -DMYMPD_EMBEDDED_ASSETS=ON
+
+mympd-install:
+ $(INSTALL_DIR) $(IDIR_MYMPD)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/mympd \
+ $(IDIR_MYMPD)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/mympd/files/mympd.init b/package/mympd/files/mympd.init
new file mode 100644
index 000000000..f7eec5b6d
--- /dev/null
+++ b/package/mympd/files/mympd.init
@@ -0,0 +1,31 @@
+#!/bin/sh
+#PKG mympd
+#INIT 90
+
+. /etc/rc.conf
+
+case $1 in
+autostop) ;;
+autostart)
+ test x"${mympd:-NO}" = x"NO" && exit 0
+ test x"$mympd" = x"DAEMON" && test -x /bin/mksh && exec mksh -T- $0 start
+ exec sh $0 start
+ ;;
+start)
+ mkdir -p /var/cache/mympd 2>/dev/null
+ mkdir -p /etc/mympd 2>/dev/null
+ mympd -w /etc/mympd -s &
+ ;;
+stop)
+ kill $(pgrep -f mympd)
+ ;;
+restart)
+ sh $0 stop
+ sh $0 start
+ ;;
+*)
+ echo "Usage: $0 {start | stop | restart}"
+ exit 1
+ ;;
+esac
+exit $?
diff --git a/package/mympd/files/mympd.postinst b/package/mympd/files/mympd.postinst
new file mode 100644
index 000000000..be700987b
--- /dev/null
+++ b/package/mympd/files/mympd.postinst
@@ -0,0 +1,7 @@
+#!/bin/sh
+. $IPKG_INSTROOT/etc/functions.sh
+add_rcconf mympd NO
+gid=$(get_next_gid)
+add_group mympd $gid
+add_user mympd $(get_next_uid) $gid /var/lib/mympd
+
diff --git a/package/mympd/patches/patch-src_compile_time_h_in b/package/mympd/patches/patch-src_compile_time_h_in
new file mode 100644
index 000000000..5868aa338
--- /dev/null
+++ b/package/mympd/patches/patch-src_compile_time_h_in
@@ -0,0 +1,13 @@
+--- myMPD-14.0.2.orig/src/compile_time.h.in 2024-02-11 12:00:47.000000000 +0100
++++ myMPD-14.0.2/src/compile_time.h.in 2024-02-13 06:02:38.922236003 +0100
+@@ -58,8 +58,8 @@
+ #define MPD_VERSION_MIN_PATCH 0
+
+ //default paths from cmake
+-#define MYMPD_DOC_ROOT "${MYMPD_DOC_ROOT}"
+-#define MYMPD_WORK_DIR "${MYMPD_WORK_DIR}"
++#define MYMPD_DOC_ROOT "/srv/mympd"
++#define MYMPD_WORK_DIR "/etc/mympd"
+ #define MYMPD_CACHE_DIR "${MYMPD_CACHE_DIR}"
+ #define MYMPD_LUALIBS_PATH "${MYMPD_LUALIBS_PATH}"
+
diff --git a/package/mympd/patches/patch-src_main_c b/package/mympd/patches/patch-src_main_c
new file mode 100644
index 000000000..971c4f1cd
--- /dev/null
+++ b/package/mympd/patches/patch-src_main_c
@@ -0,0 +1,21 @@
+--- myMPD-14.0.2.orig/src/main.c 2024-02-11 12:00:47.000000000 +0100
++++ myMPD-14.0.2/src/main.c 2024-02-13 05:31:53.330851831 +0100
+@@ -492,12 +492,12 @@ int main(int argc, char **argv) {
+ }
+
+ //set output buffers
+- if (setvbuf(stdout, NULL, _IOLBF, 0) != 0 ||
+- setvbuf(stderr, NULL, _IOLBF, 0) != 0)
+- {
+- MYMPD_LOG_EMERG(NULL, "Could not set stdout and stderr buffer");
+- goto cleanup;
+- }
++ //if (setvbuf(stdout, NULL, _IOLBF, 0) != 0 ||
++ // setvbuf(stderr, NULL, _IOLBF, 0) != 0)
++ //{
++ // MYMPD_LOG_EMERG(NULL, "Could not set stdout and stderr buffer");
++ // goto cleanup;
++ // }
+
+ //init webserver
+ mgr = malloc_assert(sizeof(struct mg_mgr));
diff --git a/package/ncurses/Makefile b/package/ncurses/Makefile
index e0c7e4aa6..915d7f49d 100644
--- a/package/ncurses/Makefile
+++ b/package/ncurses/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= ncurses
-PKG_VERSION:= 6.1
+PKG_VERSION:= 6.4
PKG_RELEASE:= 1
-PKG_HASH:= aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17
+PKG_HASH:= 6931283d9ac87c5073f30b6290c4c75f21632bb4fc3603ac8100812bed248159
PKG_DESCR:= terminal handling library
PKG_SECTION:= libs/misc
PKG_BUILDDEP:= ncurses-host
@@ -66,9 +66,10 @@ ALL_TARGET:= libs
INSTALL_TARGET:= install.libs install.data
# use sth which does not exist
-HOST_ALL_TARGET:= progs
-HOST_INSTALL_TARGET:= install.includes install.progs
-HOST_CONFIGURE_ARGS+= --without-shared \
+#HOST_ALL_TARGET:= progs
+#HOST_INSTALL_TARGET:= install.includes install.progs
+HOST_CFLAGS+= -fPIC
+HOST_CONFIGURE_ARGS+= --with-shared \
--with-build-cc="${HOST_CC}" \
--with-progs \
--with-ticlib \
diff --git a/package/neon/Makefile b/package/neon/Makefile
index 936a1e030..68087268e 100644
--- a/package/neon/Makefile
+++ b/package/neon/Makefile
@@ -4,16 +4,16 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= neon
-PKG_VERSION:= 0.30.1
+PKG_VERSION:= 0.33.0
PKG_RELEASE:= 1
-PKG_HASH:= 00c626c0dc18d094ab374dbd9a354915bfe4776433289386ed489c2ec0845cdd
+PKG_HASH:= 659a5cc9cea05e6e7864094f1e13a77abbbdbab452f04d751a8c16a9447cf4b8
PKG_DESCR:= http and webdav library
PKG_SECTION:= libs/misc
PKG_DEPENDS:= libxml2 zlib libressl
PKG_BUILDDEP:= libxml2 zlib libressl
PKG_NEEDS:= threads
-PKG_URL:= http://webdav.org/neon/
-PKG_SITES:= http://webdav.org/neon/
+PKG_URL:= https://notroj.github.io/neon/
+PKG_SITES:= https://notroj.github.io/neon/
PKG_OPTS:= dev
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/netperf/Makefile b/package/netperf/Makefile
index 713cd4b9a..59781944b 100644
--- a/package/netperf/Makefile
+++ b/package/netperf/Makefile
@@ -18,6 +18,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,NETPERF,netperf,${PKG_VERSION}${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_CFLAGS+= -fcommon
# uClibc setpgrp does not take arguments
CONFIGURE_ENV+= ac_cv_func_setpgrp_void=yes
diff --git a/package/nfs-utils/Makefile b/package/nfs-utils/Makefile
index 86e78db8f..d2bdba4ba 100644
--- a/package/nfs-utils/Makefile
+++ b/package/nfs-utils/Makefile
@@ -4,13 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= nfs-utils
-PKG_VERSION:= 2.5.2
+PKG_VERSION:= 2.6.4
PKG_RELEASE:= 1
-PKG_HASH:= e5ec4f0f29455b0ae03a65ddb1e436bc8e542fd9dc91f3edeb39a15b057d7ddb
+PKG_HASH:= c0ae376ac056011ed0954deba2362d7d8193c653b500b68a543aec512cd2ecfa
PKG_DESCR:= network filesystem utilities
PKG_SECTION:= net/fs
-PKG_DEPENDS:= keyutils libtirpc rpcbind
-PKG_BUILDDEP:= keyutils libtirpc
+PKG_DEPENDS:= keyutils libtirpc rpcbind libmount libuuid libevent sqlite
+PKG_DEPENDS+= libncurses libblkid
+PKG_BUILDDEP:= keyutils libtirpc util-linux libevent sqlite ncurses
PKG_KDEPENDS:= nfs-fs
PKG_NEEDS:= threads
PKG_URL:= http://sourceforge.net/projects/nfs
@@ -58,8 +59,7 @@ CONFIGURE_ARGS+= --without-tcp-wrappers \
--with-rpcgen=internal \
--disable-caps \
--enable-tirpc \
- --with-tirpcinclude=${STAGING_TARGET_DIR}/usr/include/tirpc \
- --disable-uuid
+ --with-tirpcinclude=${STAGING_TARGET_DIR}/usr/include/tirpc
nfs-utils-client-install:
${INSTALL_DIR} ${IDIR_NFS_UTILS_CLIENT}/sbin
diff --git a/package/nfs-utils/files/nfsd.exports b/package/nfs-utils/files/nfsd.exports
index 432ebe177..1a9d3ef90 100644
--- a/package/nfs-utils/files/nfsd.exports
+++ b/package/nfs-utils/files/nfsd.exports
@@ -1,6 +1,6 @@
# on embedded devices with MTD you can _only_ export usb disks or sticks
# for nfsv3
-#/media *(ro,no_root_squash,insecure,no_subtree_check,crossmnt)
+#/media *(ro,fsid=0,no_root_squash,insecure,no_subtree_check,crossmnt)
# for nfsv4, do mount --bind /srv/music /nfs4/music and
# set nfs_server_version 4 in /etc/rc.conf
#/nfs4 hostname(rw,sync,fsid=0,crossmnt,no_subtree_check)
diff --git a/package/nfs-utils/patches/0001-Include-a-local-copy-of-sys-queue.h-instead-of-the-l.patch b/package/nfs-utils/patches/0001-Include-a-local-copy-of-sys-queue.h-instead-of-the-l.patch
deleted file mode 100644
index 8c01a3254..000000000
--- a/package/nfs-utils/patches/0001-Include-a-local-copy-of-sys-queue.h-instead-of-the-l.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From bba2440b57e28d1a63e7bfe635f08908301b1500 Mon Sep 17 00:00:00 2001
-From: OpenADK <wbx@openadk.org>
-Date: Mon, 4 Jan 2021 16:44:11 +0100
-Subject: [PATCH] Include a local copy of sys/queue.h instead of the libc one
-
-Musl seems to not provide this header for whatever reason.
----
- support/include/conffile.h | 2 +-
- utils/mountd/v4root.c | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/support/include/conffile.h b/support/include/conffile.h
-index 7d974fe98f4f3..8d18cace2d5ee 100644
---- a/support/include/conffile.h
-+++ b/support/include/conffile.h
-@@ -33,7 +33,7 @@
- #ifndef _CONFFILE_H_
- #define _CONFFILE_H_
-
--#include <sys/queue.h>
-+#include "queue.h"
- #include <ctype.h>
- #include <stdint.h>
- #include <stdbool.h>
-diff --git a/utils/mountd/v4root.c b/utils/mountd/v4root.c
-index dd9828eb0c114..4ef909f9e9a6c 100644
---- a/utils/mountd/v4root.c
-+++ b/utils/mountd/v4root.c
-@@ -13,7 +13,7 @@
-
- #include <sys/types.h>
- #include <sys/stat.h>
--#include <sys/queue.h>
-+#include "queue.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
diff --git a/package/nfs-utils/patches/0002-drop-not-needed-tools-from-being-compiled.patch b/package/nfs-utils/patches/0002-drop-not-needed-tools-from-being-compiled.patch
deleted file mode 100644
index 257ae1de6..000000000
--- a/package/nfs-utils/patches/0002-drop-not-needed-tools-from-being-compiled.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From ed62ca8e4466dc92f3f176d1cf38c1d99a07a4a5 Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil@nwl.cc>
-Date: Mon, 4 Jan 2021 16:47:28 +0100
-Subject: [PATCH] drop not needed tools from being compiled
-
----
- tools/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 9b4b0803db394..3389f8c44ed0c 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -12,6 +12,6 @@ if CONFIG_NFSDCLD
- OPTDIRS += nfsdclddb
- endif
-
--SUBDIRS = locktest rpcdebug nlmtest mountstats nfs-iostat nfsdclnts $(OPTDIRS)
-+SUBDIRS = $(OPTDIRS)
-
- MAINTAINERCLEANFILES = Makefile.in
diff --git a/package/nfs-utils/patches/0003-Build-tools-with-host-compiler.patch b/package/nfs-utils/patches/0003-Build-tools-with-host-compiler.patch
deleted file mode 100644
index fb81a1ee8..000000000
--- a/package/nfs-utils/patches/0003-Build-tools-with-host-compiler.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 9c48cf1a9e3cbb2dce76696dbf6898eb6886c7b5 Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil@nwl.cc>
-Date: Mon, 4 Jan 2021 16:49:30 +0100
-Subject: [PATCH] Build tools with host compiler
-
----
- tools/rpcgen/Makefile.am | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/tools/rpcgen/Makefile.am b/tools/rpcgen/Makefile.am
-index 457cd5074a1b1..e70af70a7e469 100644
---- a/tools/rpcgen/Makefile.am
-+++ b/tools/rpcgen/Makefile.am
-@@ -1,5 +1,10 @@
- CLEANFILES = *~
-
-+CC=$(CC_FOR_BUILD)
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
-+
- bin_PROGRAMS = rpcgen
- man_MANS = rpcgen.1
-
diff --git a/package/nfs-utils/patches/patch-support_reexport_fsidd_c b/package/nfs-utils/patches/patch-support_reexport_fsidd_c
new file mode 100644
index 000000000..562ed4caa
--- /dev/null
+++ b/package/nfs-utils/patches/patch-support_reexport_fsidd_c
@@ -0,0 +1,10 @@
+--- nfs-utils-2.6.4.orig/support/reexport/fsidd.c 2023-11-17 18:32:39.000000000 +0100
++++ nfs-utils-2.6.4/support/reexport/fsidd.c 2024-01-04 13:47:58.231661971 +0100
+@@ -6,6 +6,7 @@
+ #ifdef HAVE_DLFCN_H
+ #include <dlfcn.h>
+ #endif
++#include <unistd.h>
+ #include <event2/event.h>
+
+ #include "conffile.h"
diff --git a/package/nfs-utils/patches/patch-support_reexport_reexport_c b/package/nfs-utils/patches/patch-support_reexport_reexport_c
new file mode 100644
index 000000000..9a491bdaf
--- /dev/null
+++ b/package/nfs-utils/patches/patch-support_reexport_reexport_c
@@ -0,0 +1,10 @@
+--- nfs-utils-2.6.4.orig/support/reexport/reexport.c 2023-11-17 18:32:39.000000000 +0100
++++ nfs-utils-2.6.4/support/reexport/reexport.c 2024-01-04 13:47:43.771377090 +0100
+@@ -5,6 +5,7 @@
+ #ifdef HAVE_DLFCN_H
+ #include <dlfcn.h>
+ #endif
++#include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/vfs.h>
+ #include <errno.h>
diff --git a/package/nfs-utils/patches/patch-tools_rpcgen_Makefile_am b/package/nfs-utils/patches/patch-tools_rpcgen_Makefile_am
new file mode 100644
index 000000000..83e03f263
--- /dev/null
+++ b/package/nfs-utils/patches/patch-tools_rpcgen_Makefile_am
@@ -0,0 +1,13 @@
+--- nfs-utils-2.6.4.orig/tools/rpcgen/Makefile.am 2023-11-17 18:32:39.000000000 +0100
++++ nfs-utils-2.6.4/tools/rpcgen/Makefile.am 2024-01-04 13:27:43.388279004 +0100
+@@ -1,5 +1,10 @@
+ CLEANFILES = *~
+
++CC=$(CC_FOR_BUILD)
++CFLAGS=$(CFLAGS_FOR_BUILD)
++CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
++LDFLAGS=$(LDFLAGS_FOR_BUILD)
++
+ bin_PROGRAMS = rpcgen
+ man_MANS = rpcgen.1
+
diff --git a/package/nginx/Makefile b/package/nginx/Makefile
index a02d56941..6a13c1277 100644
--- a/package/nginx/Makefile
+++ b/package/nginx/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= nginx
-PKG_VERSION:= 1.21.3
+PKG_VERSION:= 1.25.3
PKG_RELEASE:= 1
-PKG_HASH:= 14774aae0d151da350417efc4afda5cce5035056e71894836797e1f6e2d1175a
+PKG_HASH:= 64c5b975ca287939e828303fa857d22f142b251f17808dfe41733512d9cded86
PKG_DESCR:= powerful http reverse proxy and webserver
PKG_SECTION:= net/http
PKG_BUILDDEP:= pcre zlib
diff --git a/package/nginx/files/nginx.conf b/package/nginx/files/nginx.conf
index ea11ef025..bc80bef6a 100644
--- a/package/nginx/files/nginx.conf
+++ b/package/nginx/files/nginx.conf
@@ -1,4 +1,5 @@
-worker_processes 1;
+user nginx;
+worker_processes 4;
events {
worker_connections 1024;
@@ -16,7 +17,7 @@ http {
root /srv/www/htdocs;
location ~ \.php$ {
- fastcgi_pass unix:/var/run/php5.sock;
+ fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
diff --git a/package/nginx/files/nginx.postinst b/package/nginx/files/nginx.postinst
index 557ccd181..322e99e06 100644
--- a/package/nginx/files/nginx.postinst
+++ b/package/nginx/files/nginx.postinst
@@ -1,3 +1,6 @@
#!/bin/sh
. $IPKG_INSTROOT/etc/functions.sh
+gid=$(get_next_gid)
+add_user nginx $(get_next_uid) $gid /srv/www
+add_group nginx $gid
add_rcconf nginx NO
diff --git a/package/nmap/Makefile b/package/nmap/Makefile
index eb6f34892..d8164a379 100644
--- a/package/nmap/Makefile
+++ b/package/nmap/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= nmap
-PKG_VERSION:= 7.40
+PKG_VERSION:= 7.92
PKG_RELEASE:= 1
-PKG_HASH:= 9e14665fffd054554d129d62c13ad95a7b5c7a046daa2290501909e65f4d3188
+PKG_HASH:= a5479f2f8a6b0b2516767d2f7189c386c1dc858d997167d7ec5cfc798c7571a1
PKG_DESCR:= utility for network exploration or security auditing
PKG_SECTION:= net/security
-PKG_DEPENDS:= libdnet libpcap libpcre
-PKG_BUILDDEP:= libdnet libpcap pcre
+PKG_DEPENDS:= libdnet libpcap libpcre zlib
+PKG_BUILDDEP:= libdnet libpcap pcre zlib
PKG_NEEDS:= c++
PKG_URL:= http://nmap.org/
PKG_SITES:= http://download.insecure.org/nmap/dist/
@@ -26,16 +26,18 @@ TARGET_LDFLAGS+= -lpthread
CONFIGURE_ENV+= ac_cv_dnet_bsd_bpf=no
CONFIGURE_ARGS+= --without-openssl \
--without-zenmap \
+ --without-nping \
--without-ndiff \
--without-liblua \
--with-libpcap="${STAGING_TARGET_DIR}/usr" \
--with-libpcre="${STAGING_TARGET_DIR}/usr" \
+ --with-zlib="${STAGING_TARGET_DIR}/usr" \
--enable-static
nmap-install:
${INSTALL_DIR} ${IDIR_NMAP}/usr/share/nmap
${INSTALL_DIR} ${IDIR_NMAP}/usr/bin
- for file in mac-prefixes os-db protocols rpc service-probes services; do \
+ for file in payloads mac-prefixes os-db protocols rpc service-probes services; do \
${CP} ${WRKINST}/usr/share/nmap/nmap-$$file ${IDIR_NMAP}/usr/share/nmap; \
done
${INSTALL_BIN} ${WRKINST}/usr/bin/nmap ${IDIR_NMAP}/usr/bin/
diff --git a/package/nodejs/Makefile b/package/nodejs/Makefile
index db6b8a1d3..02627aa6a 100644
--- a/package/nodejs/Makefile
+++ b/package/nodejs/Makefile
@@ -4,19 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= nodejs
-PKG_VERSION:= 12.16.2
+PKG_VERSION:= 20.11.1
PKG_RELEASE:= 1
-PKG_HASH:= 48b21340eff95bfc6e7297e4a027f5db74d6d64257c476972a1b2f2fdccc9582
+PKG_HASH:= 4af1ba6ea848cc05908b8a62b02fb27684dd52b2a7988ee82b0cfa72deb90b94
PKG_DESCR:= asynchronous event driven framework
PKG_SECTION:= net/http
PKG_DEPENDS:= zlib
-PKG_BUILDDEP:= python2-host nodejs-host zlib
+PKG_BUILDDEP:= python3-host nodejs-host zlib
PKG_NEEDS:= threads c++
PKG_URL:= https://nodejs.org/
PKG_SITES:= https://nodejs.org/dist/v$(PKG_VERSION)/
-PKG_SYSTEM_DEPENDS:= !mikrotik-rb532
-
DISTFILES:= node-v$(PKG_VERSION).tar.gz
WRKDIST= $(WRKDIR)/node-v$(PKG_VERSION)
@@ -26,17 +24,16 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,NODEJS,nodejs,$(PKG_VERSION)-$(PKG_RELEASE)))
$(eval $(call PKG_template,NODEJS,nodejs,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+HOST_CFLAGS:=
+HOST_CXXFLAGS:=
HOST_STYLE:= manual
CONFIG_STYLE:= manual
host-configure:
(cd $(WRKSRC); \
- PYTHON=$(STAGING_HOST_DIR)/usr/bin/python2 \
- $(STAGING_HOST_DIR)/usr/bin/python2 ./configure \
+ PYTHON=$(STAGING_HOST_DIR)/usr/bin/python3 \
+ $(STAGING_HOST_DIR)/usr/bin/python3 ./configure \
--prefix=/usr \
- --without-snapshot \
- --without-dtrace \
- --without-etw \
--without-intl \
--shared-zlib \
)
@@ -48,17 +45,16 @@ host-build:
nodejs-hostinstall:
cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
${HOST_FAKE_FLAGS} DESTDIR='${STAGING_HOST_DIR}' ${HOST_INSTALL_TARGET} $(MAKE_TRACE)
-# $(INSTALL_BIN) ${WRKBUILD}/out/Release/mkpeephole ${STAGING_HOST_DIR}/usr/bin
+ $(INSTALL_BIN) ${WRKBUILD}/out/Release/node_js2c ${STAGING_HOST_DIR}/usr/bin
+ $(INSTALL_BIN) ${WRKBUILD}/out/Release/bytecode_builtins_list_generator ${STAGING_HOST_DIR}/usr/bin
+ $(INSTALL_BIN) ${WRKBUILD}/out/Release/torque ${STAGING_HOST_DIR}/usr/bin
do-configure:
(cd $(WRKSRC); \
- PYTHON=$(STAGING_HOST_DIR)/usr/bin/python2 \
- $(STAGING_HOST_DIR)/usr/bin/python2 ./configure \
+ PYTHON=$(STAGING_HOST_DIR)/usr/bin/python3 \
+ $(STAGING_HOST_DIR)/usr/bin/python3 ./configure \
--prefix=/usr \
--cross-compiling \
- --without-snapshot \
- --without-dtrace \
- --without-etw \
--without-intl \
--shared-zlib \
)
diff --git a/package/nodejs/patches/patch-deps_v8_src_base_debug_stack_trace_posix_cc b/package/nodejs/patches/patch-deps_v8_src_base_debug_stack_trace_posix_cc
deleted file mode 100644
index 433613981..000000000
--- a/package/nodejs/patches/patch-deps_v8_src_base_debug_stack_trace_posix_cc
+++ /dev/null
@@ -1,11 +0,0 @@
---- node-v8.0.0.orig/deps/v8/src/base/debug/stack_trace_posix.cc 2017-05-30 19:31:35.000000000 +0200
-+++ node-v8.0.0/deps/v8/src/base/debug/stack_trace_posix.cc 2017-06-01 13:30:13.141625623 +0200
-@@ -25,7 +25,7 @@
- #include <string>
- #include <vector>
-
--#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS
-+#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_OS_SOLARIS
- #define HAVE_EXECINFO_H 1
- #endif
-
diff --git a/package/nodejs/patches/patch-deps_v8_src_log-utils_h b/package/nodejs/patches/patch-deps_v8_src_log-utils_h
deleted file mode 100644
index 4447e6403..000000000
--- a/package/nodejs/patches/patch-deps_v8_src_log-utils_h
+++ /dev/null
@@ -1,11 +0,0 @@
---- node-v8.0.0.orig/deps/v8/src/log-utils.h 2017-05-30 19:31:39.000000000 +0200
-+++ node-v8.0.0/deps/v8/src/log-utils.h 2017-06-01 13:28:54.580576740 +0200
-@@ -9,6 +9,8 @@
-
- #include <cstdarg>
-
-+#include <cstdarg>
-+
- #include "src/allocation.h"
- #include "src/base/compiler-specific.h"
- #include "src/base/platform/mutex.h"
diff --git a/package/nut/Makefile b/package/nut/Makefile
index e44867f7f..c77daf708 100644
--- a/package/nut/Makefile
+++ b/package/nut/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= nut
-PKG_VERSION:= 2.7.3
+PKG_VERSION:= 2.8.1
PKG_RELEASE:= 1
-PKG_HASH:= ff44d95d06a51559a0a018eef7f8d17911c1002b6352a7d7580ff75acb12126b
+PKG_HASH:= 7da48ee23b1f0d8d72560bb0af84f5c5ae4dbe35452b84cb49840132e47f099c
PKG_DESCR:= network ups tools
PKG_SECTION:= net/misc
PKG_URL:= http://www.networkupstools.org/
-PKG_SITES:= http://www.networkupstools.org/source/2.7/
+PKG_SITES:= http://www.networkupstools.org/source/2.8/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/olsrd/Makefile b/package/olsrd/Makefile
index fb79c412f..c940d7ac3 100644
--- a/package/olsrd/Makefile
+++ b/package/olsrd/Makefile
@@ -4,16 +4,17 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= olsrd
-PKG_VERSION:= 0.9.0.3
+PKG_VERSION:= 0.9.8
PKG_RELEASE:= 1
-PKG_HASH:= 59d37570c58ec25636a71d5a7cf4460448be693f01d768ae369a7f66e58077fb
+PKG_HASH:= ee9e524224e5d5304dcf61f1dc5485c569da09d382934ff85b233be3e24821a3
PKG_DESCR:= optimized link state routing protocol daemon
PKG_SECTION:= net/wifi
-PKG_URL:= http://www.olsr.org/
-PKG_SITES:= http://www.olsr.org/releases/0.9/
+PKG_BUILDDEP:= gpsd
+PKG_DEPENDS:= gpsd
+PKG_SITES:= https://github.com/OLSR/olsrd/archive/refs/tags/
PKG_NOPARALLEL:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+DISTFILES:= v${PKG_VERSION}.tar.gz
PKG_SUBPKGS:= OLSRD OLSRD_MOD_DYN_GW OLSRD_MOD_HTTPINFO
PKG_SUBPKGS+= OLSRD_MOD_NAMESERVICE OLSRD_MOD_TAS
@@ -53,7 +54,7 @@ CONFIG_STYLE:= manual
TARGET_CFLAGS+= -fPIC -D_GNU_SOURCE
ALL_TARGET+= libs
INSTALL_TARGET+= install_libs
-MAKE_ENV+= OS="linux" DEBUG=0 STRIP="true" OFLAGS="${TARGET_CFLAGS}" prefix="/usr"
+MAKE_ENV+= OS="linux" DEBUG=0 STRIP="true" VERBOSE=1 OFLAGS="${TARGET_CFLAGS}" prefix="/usr"
post-install: ${INSTALL_MODS_y} ${INSTALL_MODS_m}
${INSTALL_DIR} ${IDIR_OLSRD}/usr/sbin ${IDIR_OLSRD}/etc/olsrd
diff --git a/package/olsrd/patches/patch-lib_pud_Makefile b/package/olsrd/patches/patch-lib_pud_Makefile
new file mode 100644
index 000000000..1367cac08
--- /dev/null
+++ b/package/olsrd/patches/patch-lib_pud_Makefile
@@ -0,0 +1,11 @@
+--- olsrd-0.9.8.orig/lib/pud/Makefile 2019-08-11 10:09:47.000000000 +0200
++++ olsrd-0.9.8/lib/pud/Makefile 2024-02-29 11:26:30.299243074 +0100
+@@ -108,7 +108,7 @@ endif
+
+ default_target: nmealib library $(PLUGIN_FULLNAME)
+
+-$(PLUGIN_FULLNAME): $(OBJS) version-script.txt
++$(PLUGIN_FULLNAME): $(OBJS) version-script.txt nmealib
+ ifeq ($(PUD_NMEALIB_STATICALLY_LINKED),)
+ ifeq ($(VERBOSE),0)
+ @echo "[LD] $@ (nmealib dynamically linked)"
diff --git a/package/olsrd/patches/patch-lib_pud_src_gpsdclient_c b/package/olsrd/patches/patch-lib_pud_src_gpsdclient_c
new file mode 100644
index 000000000..fc71997fc
--- /dev/null
+++ b/package/olsrd/patches/patch-lib_pud_src_gpsdclient_c
@@ -0,0 +1,98 @@
+--- olsrd-0.9.8.orig/lib/pud/src/gpsdclient.c 2019-08-11 10:09:47.000000000 +0200
++++ olsrd-0.9.8/lib/pud/src/gpsdclient.c 2024-02-29 11:26:48.195242832 +0100
+@@ -79,6 +79,23 @@ static void gpsdError(const char *s) {
+ syslog(LOG_ERR, "gpsd error: %s", s);
+ }
+
++#if GPSD_API_MAJOR_VERSION >= 9
++static double time_as_double(struct timespec *ts) {
++ return (ts->tv_sec + ts->tv_nsec * 1e-9);
++}
++
++static bool is_online(struct gps_data_t *gpsdata) {
++ return !!gpsdata->online.tv_sec;
++}
++#else
++
++#define time_as_double(x) *(x)
++
++static bool is_online(struct gps_data_t *gpsdata) {
++ return !!gpsdata->online;
++}
++#endif
++
+ /* standard parsing of a GPS data source spec */
+ void gpsdParseSourceSpec(char *arg, GpsDaemon *gpsDaemon) {
+ if (!arg //
+@@ -298,8 +315,8 @@ void nmeaInfoFromGpsd(struct gps_data_t
+ 8, //
+ dev->parity, //
+ dev->stopbits, //
+- dev->cycle, //
+- dev->mincycle);
++ time_as_double(&dev->cycle), //
++ time_as_double(&dev->mincycle));
+
+ connectionTracking->devSeen[i] = true;
+ connectionTracking->dev[i] = *dev;
+@@ -353,11 +370,6 @@ void nmeaInfoFromGpsd(struct gps_data_t
+ );
+
+ gpsdata->set &= ~STATUS_SET; /* always valid */
+- if (gpsdata->status == STATUS_NO_FIX) {
+- nmeaInfoClear(info);
+- nmeaTimeSet(&info->utc, &info->present, NULL);
+- return;
+- }
+
+ if (!gpsdata->set) {
+ return;
+@@ -367,11 +379,18 @@ void nmeaInfoFromGpsd(struct gps_data_t
+ nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_SMASK);
+
+ /* date & time */
++#if GPSD_API_MAJOR_VERSION >= 9
++ if (gpsdata->fix.time.tv_sec > 0) {
++ struct tm *time = gmtime(&gpsdata->fix.time.tv_sec);
++ unsigned int hsec = (unsigned int) (gpsdata->fix.time.tv_nsec / 10000000);
++#else
+ if (!isNaN(gpsdata->fix.time)) {
+ double seconds;
+ double fraction = modf(fabs(gpsdata->fix.time), &seconds);
+ long sec = lrint(seconds);
+ struct tm *time = gmtime(&sec);
++ unsigned int hsec = (unsigned int) lrint(fraction * 100);
++#endif
+ if (time) {
+ info->utc.year = (unsigned int) time->tm_year + 1900;
+ info->utc.mon = (unsigned int) time->tm_mon + 1;
+@@ -379,7 +398,7 @@ void nmeaInfoFromGpsd(struct gps_data_t
+ info->utc.hour = (unsigned int) time->tm_hour;
+ info->utc.min = (unsigned int) time->tm_min;
+ info->utc.sec = (unsigned int) time->tm_sec;
+- info->utc.hsec = (unsigned int) lrint(fraction * 100);
++ info->utc.hsec = hsec;
+
+ nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_UTCDATE | NMEALIB_PRESENT_UTCTIME);
+ }
+@@ -387,7 +406,7 @@ void nmeaInfoFromGpsd(struct gps_data_t
+ gpsdata->set &= ~TIME_SET;
+
+ /* sig & fix */
+- if (!gpsdata->online) {
++ if (!is_online(gpsdata)) {
+ gpsdata->fix.mode = MODE_NO_FIX;
+ }
+
+@@ -454,7 +473,11 @@ void nmeaInfoFromGpsd(struct gps_data_t
+ if ((gpsdata->fix.mode >= MODE_3D) //
+ && !isNaN(gpsdata->fix.altitude)) {
+ info->elevation = gpsdata->fix.altitude;
++#if GPSD_API_MAJOR_VERSION >= 9
++ info->height = gpsdata->fix.geoid_sep;
++#else
+ info->height = gpsdata->separation;
++#endif
+ nmeaInfoSetPresent(&info->present, NMEALIB_PRESENT_ELV | NMEALIB_PRESENT_HEIGHT);
+ }
+ gpsdata->set &= ~ALTITUDE_SET;
diff --git a/package/olsrd/patches/patch-lib_pud_src_gpsdclient_h b/package/olsrd/patches/patch-lib_pud_src_gpsdclient_h
new file mode 100644
index 000000000..635f97740
--- /dev/null
+++ b/package/olsrd/patches/patch-lib_pud_src_gpsdclient_h
@@ -0,0 +1,16 @@
+--- olsrd-0.9.8.orig/lib/pud/src/gpsdclient.h 2019-08-11 10:09:47.000000000 +0200
++++ olsrd-0.9.8/lib/pud/src/gpsdclient.h 2024-02-29 11:24:18.019244869 +0100
+@@ -60,13 +60,6 @@ struct GpsdConnectionState {
+ struct devconfig_t dev[MAXUSERDEVS];
+ };
+
+-/* describe a data source */
+-struct fixsource_t {
+- char spec[PATH_MAX]; /* working space, will be modified */
+- char *server; /* pointer into spec field */
+- char *port; /* pointer into spec field */
+- char *device; /* pointer into spec field */
+-};
+
+ /**
+ * The gpsd daemon spec
diff --git a/package/olsrd/patches/patch-src_cfgparser_local_mk b/package/olsrd/patches/patch-src_cfgparser_local_mk
new file mode 100644
index 000000000..4ef666d99
--- /dev/null
+++ b/package/olsrd/patches/patch-src_cfgparser_local_mk
@@ -0,0 +1,17 @@
+--- olsrd-0.9.8.orig/src/cfgparser/local.mk 2019-08-11 10:09:47.000000000 +0200
++++ olsrd-0.9.8/src/cfgparser/local.mk 2024-02-29 09:47:24.131323729 +0100
+@@ -74,12 +74,8 @@ $(C)oparse.c: $(C)oparse.y $(C)olsrd_con
+ ifeq ($(VERBOSE),0)
+ @echo "[BISON] $@"
+ endif
+- $(MAKECMDPREFIX)$(BISON) -d -o "$@-tmp" "$<"
+- $(MAKECMDPREFIX)sed -e 's/register //' \
+- -e '/^#line/s/$(call quote,$@-tmp)/$(call quote,$@)/' \
+- < "$@-tmp" >"$@"
+- $(MAKECMDPREFIX)mv "$(subst .c,.h,$@-tmp)" "$(subst .c,.h,$@)"
+- $(MAKECMDPREFIX)$(RM) "$@-tmp" "$(subst .c,.h,$@-tmp)"
++ $(MAKECMDPREFIX)$(BISON) -d -o "$@" "$<"
++ $(MAKECMDPREFIX)sed -e 's/register //' "$@" > "$@.o" && mv "$@.o" "$@"
+
+ $(C)oparse.o: CFLAGS := $(filter-out -Wunreachable-code,$(CFLAGS))
+
diff --git a/package/open-iscsi/Makefile b/package/open-iscsi/Makefile
index 5afb377bc..f33b52f1f 100644
--- a/package/open-iscsi/Makefile
+++ b/package/open-iscsi/Makefile
@@ -4,30 +4,34 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= open-iscsi
-PKG_VERSION:= 2.0
-PKG_EXTRAVER:= 871
+PKG_VERSION:= 2.1.9
PKG_RELEASE:= 1
-PKG_HASH:= bcea8746ae82f2ada7bc05d2aa59bcda1ca0d5197f05f2e16744aae59f0a7dcb
+PKG_HASH:= 60e2a1e3058a8af7f702e86a5a0511b05b8754d29d3d2df4e0e301399b5cf70a
PKG_DESCR:= iscsi utilities
+PKG_DEPENDS:= libkmod libressl
+PKG_BUILDDEP:= cmake-host kmod libressl
PKG_SECTION:= sys/fs
-PKG_URL:= http://www.open-iscsi.org/
-PKG_SITES:= http://www.open-iscsi.org/bits/
+PKG_SITES:= https://github.com/open-iscsi/open-iscsi/archive/refs/tags/
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION)-$(PKG_EXTRAVER).tar.gz
-WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION}-${PKG_EXTRAVER}
+DISTFILES:= $(PKG_VERSION).tar.gz
+#WRKDIST= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION}-${PKG_EXTRAVER}
include $(ADK_TOPDIR)/mk/package.mk
-ALL_TARGET:= user
-INSTALL_TARGET:= install_user
-
$(eval $(call PKG_template,OPEN_ISCSI,open-iscsi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIG_STYLE:= manual
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+MESON_FLAGS+= -Dno_systemd=true \
+ -Disns=disabled
open-iscsi-install:
- $(INSTALL_DIR) $(IDIR_OPEN_ISCSI)/sbin $(IDIR_OPEN_ISCSI)/etc/iscsi
- $(INSTALL_BIN) $(WRKINST)/sbin/* $(IDIR_OPEN_ISCSI)/sbin
+ $(INSTALL_DIR) $(IDIR_OPEN_ISCSI)/usr/sbin $(IDIR_OPEN_ISCSI)/etc/iscsi
+ $(INSTALL_BIN) $(WRKINST)/usr/sbin/* $(IDIR_OPEN_ISCSI)/usr/sbin
$(CP) $(WRKINST)/etc/iscsi/* $(IDIR_OPEN_ISCSI)/etc/iscsi
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/open-iscsi/patches/patch-usr_Makefile b/package/open-iscsi/patches/patch-usr_Makefile
deleted file mode 100644
index af7106fd8..000000000
--- a/package/open-iscsi/patches/patch-usr_Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
---- open-iscsi-2.0-871.orig/usr/Makefile 2009-07-11 05:55:58.000000000 +0200
-+++ open-iscsi-2.0-871/usr/Makefile 2010-11-22 23:23:09.000000000 +0100
-@@ -1,6 +1,6 @@
- # This Makefile will work only with GNU make.
-
--OSNAME=$(shell uname -s)
-+OSNAME=Linux
-
- # allow users to override these
- # eg to compile for a kernel that you aren't currently running
-@@ -55,7 +55,7 @@ iscsiadm: $(COMMON_SRCS) $(FW_BOOT_SRCS)
-
- iscsistart: $(IPC_OBJ) $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) $(FW_BOOT_SRCS) \
- iscsistart.o statics.o
-- $(CC) $(CFLAGS) -static $^ -o $@
-+ $(CC) $(CFLAGS) $^ -o $@
- clean:
- rm -f *.o $(PROGRAMS) .depend $(LIBSYS)
-
diff --git a/package/open-iscsi/patches/patch-usr_idbm_c b/package/open-iscsi/patches/patch-usr_idbm_c
deleted file mode 100644
index 38838c9a1..000000000
--- a/package/open-iscsi/patches/patch-usr_idbm_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- open-iscsi-2.0-871.orig/usr/idbm.c 2009-07-11 05:55:58.000000000 +0200
-+++ open-iscsi-2.0-871/usr/idbm.c 2014-01-03 12:44:20.000000000 +0100
-@@ -29,6 +29,7 @@
- #include <limits.h>
- #include <sys/stat.h>
- #include <sys/file.h>
-+#include <fcntl.h>
-
- #include "idbm.h"
- #include "idbm_fields.h"
diff --git a/package/open-iscsi/patches/patch-usr_iscsi_sysfs_c b/package/open-iscsi/patches/patch-usr_iscsi_sysfs_c
deleted file mode 100644
index 42f5d0330..000000000
--- a/package/open-iscsi/patches/patch-usr_iscsi_sysfs_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- open-iscsi-2.0-871.orig/usr/iscsi_sysfs.c 2009-07-11 05:55:58.000000000 +0200
-+++ open-iscsi-2.0-871/usr/iscsi_sysfs.c 2010-11-22 23:16:35.000000000 +0100
-@@ -22,6 +22,7 @@
- #include <string.h>
- #include <errno.h>
- #include <dirent.h>
-+#include <sys/stat.h>
-
- #include "log.h"
- #include "initiator.h"
diff --git a/package/open-iscsi/patches/patch-usr_log_h b/package/open-iscsi/patches/patch-usr_log_h
deleted file mode 100644
index f4a5f9431..000000000
--- a/package/open-iscsi/patches/patch-usr_log_h
+++ /dev/null
@@ -1,17 +0,0 @@
---- open-iscsi-2.0-871.orig/usr/log.h 2009-07-11 05:55:58.000000000 +0200
-+++ open-iscsi-2.0-871/usr/log.h 2010-11-22 22:45:22.000000000 +0100
-@@ -28,14 +28,12 @@
-
- #include "iscsid.h"
-
--#if defined(Linux)
- union semun {
- int val;
- struct semid_ds *buf;
- unsigned short int *array;
- struct seminfo *__buf;
- };
--#endif
- #include <sys/sem.h>
-
- #define DEFAULT_AREA_SIZE 16384
diff --git a/package/open-iscsi/patches/patch-usr_mgmt_ipc_c b/package/open-iscsi/patches/patch-usr_mgmt_ipc_c
deleted file mode 100644
index d1d936e0f..000000000
--- a/package/open-iscsi/patches/patch-usr_mgmt_ipc_c
+++ /dev/null
@@ -1,35 +0,0 @@
---- open-iscsi-2.0-871.orig/usr/mgmt_ipc.c 2009-07-11 05:55:58.000000000 +0200
-+++ open-iscsi-2.0-871/usr/mgmt_ipc.c 2014-01-03 12:35:32.000000000 +0100
-@@ -341,31 +341,7 @@ mgmt_ipc_notify_del_portal(queue_task_t
- static int
- mgmt_peeruser(int sock, char *user)
- {
--#if defined(SO_PEERCRED)
-- /* Linux style: use getsockopt(SO_PEERCRED) */
-- struct ucred peercred;
-- socklen_t so_len = sizeof(peercred);
-- struct passwd *pass;
--
-- errno = 0;
-- if (getsockopt(sock, SOL_SOCKET, SO_PEERCRED, &peercred,
-- &so_len) != 0 || so_len != sizeof(peercred)) {
-- /* We didn't get a valid credentials struct. */
-- log_error("peeruser_unux: error receiving credentials: %m");
-- return 0;
-- }
--
-- pass = getpwuid(peercred.uid);
-- if (pass == NULL) {
-- log_error("peeruser_unix: unknown local user with uid %d",
-- (int) peercred.uid);
-- return 0;
-- }
--
-- strlcpy(user, pass->pw_name, PEERUSER_MAX);
-- return 1;
--
--#elif defined(SCM_CREDS)
-+#if defined(SCM_CREDS)
- struct msghdr msg;
- typedef struct cmsgcred Cred;
- #define cruid cmcred_uid
diff --git a/package/openobex/Makefile b/package/openobex/Makefile
index 18fe0c5c3..b8208e861 100644
--- a/package/openobex/Makefile
+++ b/package/openobex/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= openobex
-PKG_VERSION:= 1.7.1
+PKG_VERSION:= 1.7.2
PKG_RELEASE:= 1
-PKG_HASH:= 3b264665d90901ea4ff720332ffb9b6d1d8f67187463d3a3279caddc7205ea57
+PKG_HASH:= 158860aaea52f0fce0c8e4b64550daaae06df2689e05834697b7e8c7d73dd4fc
PKG_DESCR:= implementation of the obex protocol
PKG_SECTION:= sys/misc
PKG_BUILDDEP:= eudev bluez
diff --git a/package/opensbi/Makefile b/package/opensbi/Makefile
new file mode 100644
index 000000000..be308d3db
--- /dev/null
+++ b/package/opensbi/Makefile
@@ -0,0 +1,29 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= opensbi
+PKG_VERSION:= 1.4
+PKG_RELEASE:= 1
+PKG_HASH:= 319b62a4186fbce9b81a0c5f0ec9f003a10c808397a72138bc9745d9b87b1eb1
+PKG_DESCR:= bootloader for riscv hardware
+PKG_SECTION:= base/boot
+PKG_URL:= https://github.com/riscv-software-src/opensbi
+PKG_SITES:= https://github.com/riscv-software-src/opensbi/archive/refs/tags/
+PKG_ARCH_DEPENDS:= riscv32 riscv64
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,OPENSBI,opensbi,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+MAKE_ENV+= PLATFORM=generic FW_TEXT_START=0x40000000 FW_OPTIONS=0
+CONFIG_STYLE:= manual
+
+opensbi-install:
+ $(CP) $(WRKBUILD)/build/platform/generic/firmware/*.bin \
+ $(FW_DIR)
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/opensc/Makefile b/package/opensc/Makefile
index 863074bee..9f4b1b0f3 100644
--- a/package/opensc/Makefile
+++ b/package/opensc/Makefile
@@ -4,15 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= opensc
-PKG_VERSION:= 0.15.0
+PKG_VERSION:= 0.24.0
PKG_RELEASE:= 1
-PKG_HASH:= 7c8600a37d11f82410699ee5c60bfebc46f6714d0d87b4125dd99215c87d4db8
+PKG_HASH:= 24d03c69287291da32a30c4c38a304ad827f56cb85d83619e1f5403ab6480ef8
PKG_DESCR:= utilities to access smart cards
PKG_SECTION:= app/crypto
PKG_BUILDDEP:= openct pcsc-lite readline libressl
PKG_DEPENDS:= libopensc libopenct pcsc-lite libreadline libressl
PKG_URL:= https://github.com/OpenSC/OpenSC/wiki
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=opensc/}
+PKG_SITES:= https://github.com/OpenSC/OpenSC/releases/download/$(PKG_VERSION)/
PKG_LIBNAME:= libopensc
PKG_OPTS:= dev
@@ -29,10 +29,11 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,OPENSC,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,LIBOPENSC,libopensc,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_LIBOPENSC},${PKGSD_LIBOPENSC},${PKGSC_LIBOPENSC},${PKG_OPTS}))
-AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --disable-man \
--disable-iconv \
--disable-pcsc \
+ --disable-silent-rules \
+ --disable-strict \
--enable-openct
opensc-install:
diff --git a/package/opensips/Makefile b/package/opensips/Makefile
index 1165d4421..57495a60f 100644
--- a/package/opensips/Makefile
+++ b/package/opensips/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= opensips
-PKG_VERSION:= 2.2.3
+PKG_VERSION:= 3.4.4
PKG_RELEASE:= 1
-PKG_HASH:= ccf540f7aae4335a8319b83f6cb87b562e665991fe1c2adc4e8eb4d4f3042dd7
+PKG_HASH:= eab3608a464884fc40f33cc639a5b124dc838799bd4a9701b7a8af49fb937fc7
PKG_DESCR:= high-performance, configurable, free sip server
PKG_SECTION:= net/voip
PKG_DEPENDS:= libressl
@@ -21,8 +21,8 @@ PKG_SUBPKGS+= OPENSIPS_MOD_AUTH_DB OPENSIPS_MOD_AVPOPS OPENSIPS_MOD_DISPATCHER
PKG_SUBPKGS+= OPENSIPS_MOD_DIVERSION OPENSIPS_MOD_FLATSTORE OPENSIPS_MOD_GFLAGS
PKG_SUBPKGS+= OPENSIPS_MOD_GROUP OPENSIPS_MOD_MEDIAPROXY OPENSIPS_MOD_MSILO
PKG_SUBPKGS+= OPENSIPS_MOD_NATHELPER OPENSIPS_MOD_OPTIONS
-PKG_SUBPKGS+= OPENSIPS_MOD_PERMISSIONS OPENSIPS_MOD_PIKE OPENSIPS_MOD_SMS
-PKG_SUBPKGS+= OPENSIPS_MOD_UAC OPENSIPS_MOD_UAC_REDIRECT OPENSIPS_MOD_URI
+PKG_SUBPKGS+= OPENSIPS_MOD_PERMISSIONS OPENSIPS_MOD_PIKE
+PKG_SUBPKGS+= OPENSIPS_MOD_UAC OPENSIPS_MOD_UAC_REDIRECT
PKGSD_OPENSIPS_MOD_ACCOUNTING:= accounting support
PKGSN_OPENSIPS_MOD_ACCOUNTING:= opensips
@@ -54,14 +54,10 @@ PKGSD_OPENSIPS_MOD_PERMISSIONS:= permissions support
PKGSN_OPENSIPS_MOD_PERMISSIONS:= opensips
PKGSD_OPENSIPS_MOD_PIKE:= pike support
PKGSN_OPENSIPS_MOD_PIKE:= opensips
-PKGSD_OPENSIPS_MOD_SMS:= sms support
-PKGSN_OPENSIPS_MOD_SMS:= opensips
PKGSD_OPENSIPS_MOD_UAC:= uac support
PKGSN_OPENSIPS_MOD_UAC:= opensips
PKGSD_OPENSIPS_MOD_UAC_REDIRECT:= uac redirect support
PKGSN_OPENSIPS_MOD_UAC_REDIRECT:= opensips
-PKGSD_OPENSIPS_MOD_URI:= uri support
-PKGSN_OPENSIPS_MOD_URI:= opensips
include $(ADK_TOPDIR)/mk/package.mk
@@ -92,10 +88,8 @@ $(eval $(call PKG_template,OPENSIPS_MOD_NATHELPER,opensips-mod-nathelper,$(PKG_V
$(eval $(call PKG_template,OPENSIPS_MOD_OPTIONS,opensips-mod-options,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,OPENSIPS_MOD_PERMISSIONS,opensips-mod-permissions,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,OPENSIPS_MOD_PIKE,opensips-mod-pike,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-$(eval $(call PKG_template,OPENSIPS_MOD_SMS,opensips-mod-sms,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,OPENSIPS_MOD_UAC,opensips-mod-uac,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,OPENSIPS_MOD_UAC_REDIRECT,opensips-mod-uac-redirect,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-$(eval $(call PKG_template,OPENSIPS_MOD_URI,opensips-mod-uri,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_ACCOUNTING,acc))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_AUTH,auth))
@@ -112,11 +106,9 @@ $(eval $(call PKG_mod_template,OPENSIPS_MOD_NATHELPER,nathelper))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_OPTIONS,options))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_PERMISSIONS,permissions))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_PIKE,pike))
-$(eval $(call PKG_mod_template,OPENSIPS_MOD_SMS,sms))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_SPEEDIAL,speeddial))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_UAC,uac))
$(eval $(call PKG_mod_template,OPENSIPS_MOD_UAC_REDIRECT,uac_redirect))
-$(eval $(call PKG_mod_template,OPENSIPS_MOD_URI,uri))
# Select here the modules for the main package
OPENSIPS_MODULES:= sl tm rr maxfwd usrloc registrar db_text textops exec mi_fifo signaling
@@ -131,7 +123,6 @@ INSTALL_STYLE:= manual
do-build:
PATH='$(HOST_PATH)' $(MAKE) -C $(WRKBUILD) \
prefix=/ \
- extra_defs="-DUSE_PTHREAD_MUTEX" \
TLS=1 \
FREERADIUS=0 \
NICER=0 \
diff --git a/package/openssh/Makefile b/package/openssh/Makefile
index 74f8fe117..7db2873a6 100644
--- a/package/openssh/Makefile
+++ b/package/openssh/Makefile
@@ -4,13 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= openssh
-PKG_VERSION:= 8.8p1
+PKG_VERSION:= 9.7p1
PKG_RELEASE:= 1
-PKG_HASH:= 4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9
+PKG_HASH:= 490426f766d82a2763fcacd8d83ea3d70798750c7bd2aff2e57dc5660f773ffd
PKG_DESCR:= secure shell implementation
PKG_SECTION:= net/security
-PKG_BUILDDEP:= zlib libressl
-PKG_DEPENDS:= zlib libressl
+PKG_BUILDDEP:= zlib
+PKG_BUILDDEP_GLIBC:= libxcrypt
+PKG_DEPENDS:= zlib
PKG_NEEDS:= threads
PKG_URL:= http://www.openssh.com/
PKG_SITES:= http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
@@ -36,6 +37,15 @@ PKGFD_WITH_KRB5:= enable kerberos 5 support
PKGFS_WITH_KRB5:= libkrb5 libcom-err
PKGFB_WITH_KRB5:= krb5
+PKG_CHOICES_OPENSSH:= WITH_LIBRESSL WITH_OPENSSL
+PKGCD_WITH_LIBRESSL:= with libressl
+PKGCS_WITH_LIBRESSL:= libressl
+PKGCB_WITH_LIBRESSL:= libressl
+PKGCD_WITH_OPENSSL:= with openssl
+PKGCS_WITH_OPENSSL:= libopenssl
+PKGCB_WITH_OPENSSL:= openssl
+
+
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,OPENSSH,openssh,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
@@ -62,12 +72,14 @@ CONFIGURE_ARGS+= --without-pie
endif
CONFIGURE_ENV+= LD='${TARGET_CC}' \
+ LDFLAGS='$(TARGET_LDFLAGS) -latomic' \
ac_cv_func_setlogin=no \
ac_cv_have_decl_PR_SET_NO_NEW_PRIVS=no \
ac_cv_lib_nsl_yp_match=no
CONFIGURE_ARGS+= --disable-strip \
--disable-etc-default-login \
--disable-lastlog \
+ --without-hardening \
--with-sandbox=no \
--disable-utmp \
--disable-utmpx \
diff --git a/package/openssl-pkcs11/Makefile b/package/openssl-pkcs11/Makefile
deleted file mode 100644
index b7948e5a1..000000000
--- a/package/openssl-pkcs11/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= openssl-pkcs11
-PKG_VERSION:= 0.1.8
-PKG_RELEASE:= 1
-PKG_HASH:= de7d7e41e7c42deef40c53e10ccc3f88d2c036d6656ecee7e82e8be07b06a2e5
-PKG_DESCR:= pkcs11 engine for openssl
-PKG_SECTION:= app/crypto
-PKG_BUILDDEP:= libp11
-PKG_URL:= http://www.opensc-project.org/engine_pkcs11
-PKG_SITES:= http://www.opensc-project.org/files/engine_pkcs11/
-
-DISTFILES:= engine_pkcs11-${PKG_VERSION}.tar.gz
-WRKDIST= ${WRKDIR}/engine_pkcs11-${PKG_VERSION}
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,OPENSSL_PKCS11,openssl-pkcs11,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIGURE_ARGS+= --with-openssl="${STAGING_TARGET_DIR}/usr"
-
-openssl-pkcs11-install:
- ${INSTALL_DIR} ${IDIR_OPENSSL_PKCS11}/usr/lib/engines
- ${INSTALL_DATA} ${WRKINST}/usr/lib/engines/engine_pkcs11.so \
- ${IDIR_OPENSSL_PKCS11}/usr/lib/engines
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/openssl-pkcs11/patches/patch-ltmain_sh b/package/openssl-pkcs11/patches/patch-ltmain_sh
deleted file mode 100644
index 317a0b26c..000000000
--- a/package/openssl-pkcs11/patches/patch-ltmain_sh
+++ /dev/null
@@ -1,11 +0,0 @@
---- engine_pkcs11-0.1.8.orig/ltmain.sh 2010-01-07 11:21:35.000000000 +0100
-+++ engine_pkcs11-0.1.8/ltmain.sh 2011-01-16 13:57:19.000000000 +0100
-@@ -4765,7 +4765,7 @@ func_mode_link ()
- # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
- # @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
-+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-fstack-protector*|-flto)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- func_append compile_command " $arg"
diff --git a/package/openssl/Makefile b/package/openssl/Makefile
new file mode 100644
index 000000000..406a88681
--- /dev/null
+++ b/package/openssl/Makefile
@@ -0,0 +1,117 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= openssl
+PKG_VERSION:= 3.0.13
+PKG_RELEASE:= 1
+PKG_HASH:= 88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313
+PKG_DESCR:= ssl/tls library
+PKG_SECTION:= libs/crypto
+PKG_URL:= https://www.openssl.org
+PKG_DEPENDS:= zlib
+PKG_BUILDDEP:= zlib
+PKG_SITES:= https://www.openssl.org/source/
+PKG_LIBNAME:= libopenssl
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+PKG_SUBPKGS:= LIBOPENSSL OPENSSL_UTIL
+PKGSD_OPENSSL_UTIL:= openssl command line tool
+PKGSC_OPENSSL_UTIL:= app/crypto
+PKGSS_OPENSSL_UTIL:= libopenssl
+
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,OPENSSL,openssl,${PKG_VERSION}-${PKG_RELEASE}))
+$(eval $(call PKG_template,LIBOPENSSL,libopenssl,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},$(PKG_OPTS)))
+$(eval $(call PKG_template,OPENSSL_UTIL,openssl-util,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_OPENSSL_UTIL},${PKGSD_OPENSSL_UTIL},${PKGSC_OPENSSL_UTIL}))
+
+ifeq ($(ADK_TARGET_USE_STATIC_LIBS),y)
+OPENSSL_OPTIONS:= no-shared zlib no-dso
+else
+OPENSSL_OPTIONS:= shared zlib-dynamic
+endif
+
+OPENSSL_OPTIONS+= threads no-err no-tests no-fuzz-libfuzzer no-fuzz-afl
+OPENSSL_OPTIONS+= no-rc5 no-rc2 no-rc4 no-md2 no-idea
+
+HOST_STYLE:= manual
+CONFIG_STYLE:= manual
+
+INSTALL_TARGET:= install_sw
+FAKE_FLAGS+= INSTALL_PREFIX=${WRKINST}
+
+ifeq ($(ADK_TARGET_ARCH_MICROBLAZE),y)
+TARGET_CFLAGS:= $(subst g3,g,$(TARGET_CFLAGS))
+endif
+ifeq ($(ADK_TARGET_ARCH_XTENSA),y)
+TARGET_CFLAGS:= $(subst g3,g,$(TARGET_CFLAGS))
+endif
+ifeq ($(ADK_TARGET_ARCH_PPC),y)
+TARGET_CFLAGS:= $(subst g3,g,$(TARGET_CFLAGS))
+endif
+
+CONFIG:= linux-generic32
+ifeq ($(ADK_TARGET_ARCH_X86_64),y)
+CONFIG:= linux-x86_64
+endif
+ifeq ($(ADK_TARGET_ARCH_AARCH64),y)
+CONFIG:= linux-aarch64
+endif
+
+ifneq (,$(filter CYGWIN%,${OS_FOR_BUILD}))
+HOSTCONFIG:= Cygwin-x86_64
+endif
+ifeq ($(OS_FOR_BUILD),Darwin)
+HOSTCONFIG:= darwin64-x86_64-cc
+endif
+
+host-configure:
+ifeq ($(HOSTCONFIG),)
+ (cd $(WRKBUILD); ./config --prefix='$(STAGING_HOST_DIR)/usr' -fPIC -ldl)
+else
+ (cd $(WRKBUILD); ./Configure $(HOSTCONFIG) --prefix='$(STAGING_HOST_DIR)/usr')
+endif
+
+host-build:
+ (cd $(WRKBUILD); make)
+
+openssl-hostinstall:
+ (cd $(WRKBUILD); make install)
+
+do-configure:
+ (cd $(WRKBUILD); \
+ PATH='$(TARGET_PATH)' \
+ CROSS_COMPILE='' \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ LDFLAGS="$(TARGET_LDFLAGS) -latomic" \
+ ./Configure $(CONFIG) \
+ --prefix=/usr \
+ --openssldir=/etc/ssl \
+ -I$(STAGING_TARGET_DIR)/usr/include \
+ -L$(STAGING_TARGET_DIR)/usr/lib \
+ -DOPENSSL_SMALL_FOOTPRINT \
+ -DOPENSSL_NO_ASYNC \
+ $(OPENSSL_OPTIONS) \
+ );
+ #$(SED) "s:-O[0-9]:$(TARGET_CFLAGS) -fPIC:" $(WRKBUILD)/Makefile
+
+libopenssl-install:
+ ${INSTALL_DIR} ${IDIR_LIBOPENSSL}/usr/lib
+ ${CP} ${WRKINST}/usr/lib*/lib*.so* ${IDIR_LIBOPENSSL}/usr/lib
+ chmod 644 ${IDIR_LIBOPENSSL}/usr/lib/lib*.so*
+
+openssl-util-install:
+ ${INSTALL_DIR} ${IDIR_OPENSSL_UTIL}/usr/bin
+ ${CP} ${WRKINST}/usr/bin/openssl ${IDIR_OPENSSL_UTIL}/usr/bin
+ ${INSTALL_DIR} ${IDIR_OPENSSL_UTIL}/etc/ssl/{,certs,private}
+ ${CP} ${WRKSRC}/apps/openssl.cnf ${IDIR_OPENSSL_UTIL}/etc/ssl/
+ chmod 0700 ${IDIR_OPENSSL_UTIL}/etc/ssl/private
+
+include $(ADK_TOPDIR)/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/openssl/patches/patch-Configurations_unix-Makefile_tmpl b/package/openssl/patches/patch-Configurations_unix-Makefile_tmpl
new file mode 100644
index 000000000..eb64f9a73
--- /dev/null
+++ b/package/openssl/patches/patch-Configurations_unix-Makefile_tmpl
@@ -0,0 +1,20 @@
+--- openssl-3.0.10.orig/Configurations/unix-Makefile.tmpl 2023-08-01 15:47:24.000000000 +0200
++++ openssl-3.0.10/Configurations/unix-Makefile.tmpl 2023-08-12 19:44:43.932070216 +0200
+@@ -523,7 +523,7 @@ build_all_generated: $(GENERATED_MANDATO
+ @echo " then make will fail..."
+ @ : {- output_on() if $disabled{makedepend}; "" -}
+
+-all: build_sw build_docs
++all: build_sw
+
+ test: tests
+ {- dependmagic('tests'); -}: build_programs_nodep build_modules_nodep link-utils run_tests
+@@ -546,7 +546,7 @@ list-tests:
+ @echo "Tests are not supported with your chosen Configure options"
+ @ : {- output_on() if !$disabled{tests}; "" -}
+
+-install: install_sw install_ssldirs install_docs {- $disabled{fips} ? "" : "install_fips" -}
++install: install_sw install_ssldirs {- $disabled{fips} ? "" : "install_fips" -}
+
+ uninstall: uninstall_docs uninstall_sw {- $disabled{fips} ? "" : "uninstall_fips" -}
+
diff --git a/package/openswan/Makefile b/package/openswan/Makefile
index 5a48daf15..41ec00201 100644
--- a/package/openswan/Makefile
+++ b/package/openswan/Makefile
@@ -4,22 +4,20 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= openswan
-PKG_VERSION:= 2.6.51.5
+PKG_VERSION:= 3.0.0
PKG_RELEASE:= 1
-PKG_HASH:= 4124f4ce970089f301c34b9c48f54b021cf6b2b8813877942337f8022104f70d
+PKG_HASH:= 69fe7a71e54aaf0ea93b874db4963057c1ff4904b3617b36f2c9be2010c23331
PKG_DESCR:= ipsec software
PKG_SECTION:= net/security
PKG_DEPENDS:= libgmp
PKG_BUILDDEP:= gmp
PKG_NEEDS:= threads
PKG_URL:= http://www.openswan.org/
-PKG_SITES:= http://www.openswan.org/download/
+PKG_SITES:= https://github.com/xelerance/Openswan/archive/refs/tags/
PKG_NOPARALLEL:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-# GLOB_BRACE usage
-PKG_LIBC_DEPENDS:= uclibc-ng glibc
+DISTFILES:= v${PKG_VERSION}.tar.gz
+WRKDIST= $(WRKDIR)/Openswan-$(PKG_VERSION)
include ${ADK_TOPDIR}/mk/package.mk
@@ -32,7 +30,9 @@ XAKE_FLAGS+= KERNELSRC="${LINUX_DIR}" \
MODPROBE="insmod" \
OSDEP="linux" \
WERROR="" \
- BUILDENV="linux"
+ BUILDENV="linux" \
+ ARCH=$(ADK_TARGET_KARCH) \
+ V=1
ALL_TARGET:= programs
openswan-install:
diff --git a/package/openswan/patches/patch-Makefile_inc b/package/openswan/patches/patch-Makefile_inc
index 2b3529ed1..ca00c7598 100644
--- a/package/openswan/patches/patch-Makefile_inc
+++ b/package/openswan/patches/patch-Makefile_inc
@@ -1,15 +1,20 @@
---- openswan-2.6.51.5.orig/Makefile.inc 2019-06-14 21:35:45.000000000 +0200
-+++ openswan-2.6.51.5/Makefile.inc 2019-10-07 20:44:06.511702433 +0200
-@@ -194,10 +194,10 @@ BISONOSFLAGS=
- #Example for a cross compile:
- #USERCOMPILE?=-g ${PORTDEFINE} -I/usr/local/arm_tools/arm-elf/inc -L/usr/local/arm_tools/lib/gcc-lib
- GCC_LINT ?= -DGCC_LINT
--USERCOMPILE?=-g -O3 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ${WERROR} $(GCC_LINT) ${USERCOMPILEEXTRA}
-+USERCOMPILE?=-g -fPIC -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ${WERROR} $(GCC_LINT) ${USERCOMPILEEXTRA}
+--- Openswan-3.0.0.orig/Makefile.inc 2021-01-22 19:25:50.000000000 +0100
++++ Openswan-3.0.0/Makefile.inc 2022-03-21 19:40:09.287360911 +0100
+@@ -188,7 +188,7 @@ BISONOSFLAGS=
+ # USER* should be empty for end users/vendors to use
+
+ OPTIMIZE?=-g -O3
+-GCCOPTIONS=${OPTIMIZE} -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ${WERROR} $(GCC_LINT) ${USERCOMPILEEXTRA}
++GCCOPTIONS=${OPTIMIZE} -fPIE -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 ${WERROR} $(GCC_LINT) ${USERCOMPILEEXTRA}
+ # extra compile flags, for userland and kernel stuff, e.g. -g for debug info
+ # you can add to this in the defaults file using +=
+ # -DGCC_LINT uses gcc-specific declarations to improve compile-time diagnostics.
+@@ -199,7 +199,7 @@ GCC_LINT ?= -DGCC_LINT
+ USERCOMPILE?=${GCCOPTIONS}
# on fedora/rhel
#USERCOMPILE?=-g -O2 -g -pipe -Wall -Wp,-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIE -pie -DSUPPORT_BROKEN_ANDROID_ICS
-KLIPSCOMPILE=-O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DCONFIG_KLIPS_ALG -DDISABLE_UDP_CHECKSUM
-+KLIPSCOMPILE=-O2 -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DCONFIG_KLIPS_ALG -DDISABLE_UDP_CHECKSUM
++KLIPSCOMPILE=-O2 -fPIE -Wformat -Wformat-security -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DCONFIG_KLIPS_ALG -DDISABLE_UDP_CHECKSUM
# Additional debugging for developers (warning: can crash openswan!)
#USERCOMPILE?=-g -DLEAK_DETECTIVE ${LIBEFENCE}
# You can also run this before starting openswan on glibc systems:
diff --git a/package/openswan/patches/patch-include_arpa_nameser_h b/package/openswan/patches/patch-include_arpa_nameser_h
deleted file mode 100644
index a59cd15b2..000000000
--- a/package/openswan/patches/patch-include_arpa_nameser_h
+++ /dev/null
@@ -1,128 +0,0 @@
---- openswan-2.6.38.orig/include/arpa/nameser.h 2012-03-23 22:33:43.000000000 +0100
-+++ openswan-2.6.38/include/arpa/nameser.h 2014-03-26 19:50:18.000000000 +0100
-@@ -55,7 +55,6 @@
-
- #include <sys/param.h>
- #include <sys/types.h>
--#include <sys/cdefs.h>
-
- /*
- * Revision information. This is the release date in YYYYMMDD format.
-@@ -505,62 +504,66 @@ typedef enum __ns_cert_types {
- #define ns_makecanon __ns_makecanon
- #define ns_samename __ns_samename
-
--__BEGIN_DECLS
--int ns_msg_getflag __P((ns_msg, int));
--u_int ns_get16 __P((const u_char *));
--u_long ns_get32 __P((const u_char *));
--void ns_put16 __P((u_int, u_char *));
--void ns_put32 __P((u_long, u_char *));
--int ns_initparse __P((const u_char *, int, ns_msg *));
--int ns_skiprr __P((const u_char *, const u_char *, ns_sect, int));
--int ns_parserr __P((ns_msg *, ns_sect, int, ns_rr *));
--int ns_sprintrr __P((const ns_msg *, const ns_rr *,
-- const char *, const char *, char *, size_t));
--int ns_sprintrrf __P((const u_char *, size_t, const char *,
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+int ns_msg_getflag (ns_msg, int);
-+u_int ns_get16 (const u_char *);
-+u_long ns_get32 (const u_char *);
-+void ns_put16 (u_int, u_char *);
-+void ns_put32 (u_long, u_char *);
-+int ns_initparse (const u_char *, int, ns_msg *);
-+int ns_skiprr (const u_char *, const u_char *, ns_sect, int);
-+int ns_parserr (ns_msg *, ns_sect, int, ns_rr *);
-+int ns_sprintrr (const ns_msg *, const ns_rr *,
-+ const char *, const char *, char *, size_t);
-+int ns_sprintrrf (const u_char *, size_t, const char *,
- ns_class, ns_type, u_long, const u_char *,
- size_t, const char *, const char *,
-- char *, size_t));
--int ns_format_ttl __P((u_long, char *, size_t));
--int ns_parse_ttl __P((const char *, u_long *));
--u_int32_t ns_datetosecs __P((const char *cp, int *errp));
--int ns_name_ntol __P((const u_char *, u_char *, size_t));
--int ns_name_ntop __P((const u_char *, char *, size_t));
--int ns_name_pton __P((const char *, u_char *, size_t));
--int ns_name_unpack __P((const u_char *, const u_char *,
-- const u_char *, u_char *, size_t));
--int ns_name_pack __P((const u_char *, u_char *, int,
-- const u_char **, const u_char **));
--int ns_name_uncompress __P((const u_char *, const u_char *,
-- const u_char *, char *, size_t));
--int ns_name_compress __P((const char *, u_char *, size_t,
-- const u_char **, const u_char **));
--int ns_name_skip __P((const u_char **, const u_char *));
--void ns_name_rollback __P((const u_char *, const u_char **,
-- const u_char **));
--int ns_sign __P((u_char *, int *, int, int, void *,
-- const u_char *, int, u_char *, int *, time_t));
--int ns_sign2 __P((u_char *, int *, int, int, void *,
-+ char *, size_t);
-+int ns_format_ttl (u_long, char *, size_t);
-+int ns_parse_ttl (const char *, u_long *);
-+u_int32_t ns_datetosecs (const char *cp, int *errp);
-+int ns_name_ntol (const u_char *, u_char *, size_t);
-+int ns_name_ntop (const u_char *, char *, size_t);
-+int ns_name_pton (const char *, u_char *, size_t);
-+int ns_name_unpack (const u_char *, const u_char *,
-+ const u_char *, u_char *, size_t);
-+int ns_name_pack (const u_char *, u_char *, int,
-+ const u_char **, const u_char **);
-+int ns_name_uncompress (const u_char *, const u_char *,
-+ const u_char *, char *, size_t);
-+int ns_name_compress (const char *, u_char *, size_t,
-+ const u_char **, const u_char **);
-+int ns_name_skip (const u_char **, const u_char *);
-+void ns_name_rollback (const u_char *, const u_char **,
-+ const u_char **);
-+int ns_sign (u_char *, int *, int, int, void *,
-+ const u_char *, int, u_char *, int *, time_t);
-+int ns_sign2 (u_char *, int *, int, int, void *,
- const u_char *, int, u_char *, int *, time_t,
-- u_char **, u_char **));
--int ns_sign_tcp __P((u_char *, int *, int, int,
-- ns_tcp_tsig_state *, int));
--int ns_sign_tcp2 __P((u_char *, int *, int, int,
-+ u_char **, u_char **);
-+int ns_sign_tcp (u_char *, int *, int, int,
-+ ns_tcp_tsig_state *, int);
-+int ns_sign_tcp2 (u_char *, int *, int, int,
- ns_tcp_tsig_state *, int,
-- u_char **, u_char **));
--int ns_sign_tcp_init __P((void *, const u_char *, int,
-- ns_tcp_tsig_state *));
--u_char *ns_find_tsig __P((u_char *, u_char *));
--int ns_verify __P((u_char *, int *, void *,
-+ u_char **, u_char **);
-+int ns_sign_tcp_init (void *, const u_char *, int,
-+ ns_tcp_tsig_state *);
-+u_char *ns_find_tsig (u_char *, u_char *);
-+int ns_verify (u_char *, int *, void *,
- const u_char *, int, u_char *, int *,
-- time_t *, int));
--int ns_verify_tcp __P((u_char *, int *, ns_tcp_tsig_state *, int));
--int ns_verify_tcp_init __P((void *, const u_char *, int,
-- ns_tcp_tsig_state *));
--int ns_samedomain __P((const char *, const char *));
--int ns_subdomain __P((const char *, const char *));
--int ns_makecanon __P((const char *, char *, size_t));
--int ns_samename __P((const char *, const char *));
--__END_DECLS
-+ time_t *, int);
-+int ns_verify_tcp (u_char *, int *, ns_tcp_tsig_state *, int);
-+int ns_verify_tcp_init (void *, const u_char *, int,
-+ ns_tcp_tsig_state *);
-+int ns_samedomain (const char *, const char *);
-+int ns_subdomain (const char *, const char *);
-+int ns_makecanon (const char *, char *, size_t);
-+int ns_samename (const char *, const char *);
-+#ifdef __cplusplus
-+}
-+#endif
-
- #ifdef BIND_4_COMPAT
- #include <arpa/nameser_compat.h>
diff --git a/package/openswan/patches/patch-lib_libalgoparse_kernel_alg_c b/package/openswan/patches/patch-lib_libalgoparse_kernel_alg_c
new file mode 100644
index 000000000..dbb01fb0d
--- /dev/null
+++ b/package/openswan/patches/patch-lib_libalgoparse_kernel_alg_c
@@ -0,0 +1,11 @@
+--- Openswan-3.0.0.orig/lib/libalgoparse/kernel_alg.c 2021-01-22 19:25:50.000000000 +0100
++++ Openswan-3.0.0/lib/libalgoparse/kernel_alg.c 2022-03-22 16:18:54.795141065 +0100
+@@ -27,7 +27,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <unistd.h>
+-#include <sys/queue.h>
++#include "queue.h"
+
+ #include <openswan.h>
+
diff --git a/package/openswan/patches/patch-lib_libalgoparse_klips_interface_c b/package/openswan/patches/patch-lib_libalgoparse_klips_interface_c
new file mode 100644
index 000000000..9f901deef
--- /dev/null
+++ b/package/openswan/patches/patch-lib_libalgoparse_klips_interface_c
@@ -0,0 +1,11 @@
+--- Openswan-3.0.0.orig/lib/libalgoparse/klips_interface.c 2021-01-22 19:25:50.000000000 +0100
++++ Openswan-3.0.0/lib/libalgoparse/klips_interface.c 2022-03-22 16:19:33.414205801 +0100
+@@ -22,7 +22,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <unistd.h>
+-#include <sys/queue.h>
++#include "queue.h"
+
+ #include <openswan.h>
+
diff --git a/package/openswan/patches/patch-lib_libipsecconf_keywords_c b/package/openswan/patches/patch-lib_libipsecconf_keywords_c
new file mode 100644
index 000000000..671e9564b
--- /dev/null
+++ b/package/openswan/patches/patch-lib_libipsecconf_keywords_c
@@ -0,0 +1,11 @@
+--- Openswan-3.0.0.orig/lib/libipsecconf/keywords.c 2021-01-22 19:25:50.000000000 +0100
++++ Openswan-3.0.0/lib/libipsecconf/keywords.c 2022-03-22 16:20:38.212636657 +0100
+@@ -20,7 +20,7 @@
+ *
+ */
+
+-#include <sys/queue.h>
++#include "queue.h"
+ #include <string.h>
+ #include <assert.h>
+ #include <stdlib.h>
diff --git a/package/openswan/patches/patch-lib_libipsecconf_oeconns_c b/package/openswan/patches/patch-lib_libipsecconf_oeconns_c
new file mode 100644
index 000000000..f7e9ca9c9
--- /dev/null
+++ b/package/openswan/patches/patch-lib_libipsecconf_oeconns_c
@@ -0,0 +1,11 @@
+--- Openswan-3.0.0.orig/lib/libipsecconf/oeconns.c 2021-01-22 19:25:50.000000000 +0100
++++ Openswan-3.0.0/lib/libipsecconf/oeconns.c 2022-03-22 16:21:06.271957222 +0100
+@@ -16,7 +16,7 @@
+ #include <string.h>
+ #include <limits.h>
+ #include <assert.h>
+-#include <sys/queue.h>
++#include "queue.h"
+
+ #include "ipsecconf/parser.h"
+ #include "ipsecconf/confread.h"
diff --git a/package/openswan/patches/patch-lib_libopenswan_kernel_alg_c b/package/openswan/patches/patch-lib_libopenswan_kernel_alg_c
deleted file mode 100644
index 36cf64ee4..000000000
--- a/package/openswan/patches/patch-lib_libopenswan_kernel_alg_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- openswan-2.6.38.orig/lib/libopenswan/kernel_alg.c 2012-03-23 22:33:43.000000000 +0100
-+++ openswan-2.6.38/lib/libopenswan/kernel_alg.c 2014-03-26 20:04:18.000000000 +0100
-@@ -27,7 +27,7 @@
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <unistd.h>
--#include <sys/queue.h>
-+#include "queue.h"
-
- #include <openswan.h>
-
diff --git a/package/openswan/patches/patch-lib_liboswlog_oswlog_c b/package/openswan/patches/patch-lib_liboswlog_oswlog_c
new file mode 100644
index 000000000..4fb7e2ef7
--- /dev/null
+++ b/package/openswan/patches/patch-lib_liboswlog_oswlog_c
@@ -0,0 +1,11 @@
+--- Openswan-3.0.0.orig/lib/liboswlog/oswlog.c 2021-01-22 19:25:50.000000000 +0100
++++ Openswan-3.0.0/lib/liboswlog/oswlog.c 2022-03-22 16:21:39.003164693 +0100
+@@ -25,7 +25,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <signal.h> /* used only if MSG_NOSIGNAL not defined */
+-#include <sys/queue.h>
++#include "queue.h"
+ #include <libgen.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
diff --git a/package/openvpn/Makefile b/package/openvpn/Makefile
index 0d2cb25a5..8001a51ca 100644
--- a/package/openvpn/Makefile
+++ b/package/openvpn/Makefile
@@ -4,17 +4,19 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= openvpn
-PKG_VERSION:= 2.4.7
+PKG_VERSION:= 2.6.10
PKG_RELEASE:= 1
-PKG_HASH:= a42f53570f669eaf10af68e98d65b531015ff9e12be7a62d9269ea684652f648
+PKG_HASH:= 1993bbb7b9edb430626eaa24573f881fd3df642f427fcb824b1aed1fca1bcc9b
PKG_DESCR:= vpn solution using ssl/tls
-PKG_DEPENDS:= libressl
-PKG_BUILDDEP:= libressl
+PKG_DEPENDS:= libressl libcap-ng
+PKG_BUILDDEP:= libressl libcap-ng
PKG_KDEPENDS:= tun
PKG_SECTION:= net/security
PKG_URL:= http://openvpn.net/
PKG_SITES:= http://swupdate.openvpn.org/community/releases/
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+
PKG_FLAVOURS_OPENVPN:= WITH_LZO WITH_LZ4 WITH_MANAGEMENT WITH_SMALL
PKGFD_WITH_LZO:= enable lzo compression support
PKGFS_WITH_LZO:= liblzo
diff --git a/package/openvpn/patches/patch-src_openvpn_ssl_openssl_c b/package/openvpn/patches/patch-src_openvpn_ssl_openssl_c
deleted file mode 100644
index efcbc2600..000000000
--- a/package/openvpn/patches/patch-src_openvpn_ssl_openssl_c
+++ /dev/null
@@ -1,29 +0,0 @@
---- openvpn-2.4.7.orig/src/openvpn/ssl_openssl.c 2019-02-20 13:28:23.000000000 +0100
-+++ openvpn-2.4.7/src/openvpn/ssl_openssl.c 2019-10-07 21:44:52.473323073 +0200
-@@ -459,7 +459,7 @@ tls_ctx_restrict_ciphers_tls13(struct tl
- return;
- }
-
--#if (OPENSSL_VERSION_NUMBER < 0x1010100fL)
-+#if (OPENSSL_VERSION_NUMBER < 0x1010100fL) || defined(LIBRESSL_VERSION_NUMBER)
- crypto_msg(M_WARN, "Not compiled with OpenSSL 1.1.1 or higher. "
- "Ignoring TLS 1.3 only tls-ciphersuites '%s' setting.",
- ciphers);
-@@ -1846,7 +1846,7 @@ show_available_tls_ciphers_list(const ch
- crypto_msg(M_FATAL, "Cannot create SSL_CTX object");
- }
-
--#if (OPENSSL_VERSION_NUMBER >= 0x1010100fL)
-+#if (OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(LIBRESSL_VERSION_NUMBER))
- if (tls13)
- {
- SSL_CTX_set_min_proto_version(tls_ctx.ctx, TLS1_3_VERSION);
-@@ -1867,7 +1867,7 @@ show_available_tls_ciphers_list(const ch
- crypto_msg(M_FATAL, "Cannot create SSL object");
- }
-
--#if (OPENSSL_VERSION_NUMBER < 0x1010000fL)
-+#if (OPENSSL_VERSION_NUMBER < 0x1010000fL) || defined(LIBRESSL_VERSION_NUMBER)
- STACK_OF(SSL_CIPHER) *sk = SSL_get_ciphers(ssl);
- #else
- STACK_OF(SSL_CIPHER) *sk = SSL_get1_supported_ciphers(ssl);
diff --git a/package/opkg/Makefile b/package/opkg/Makefile
index da1647322..17f2bf2e2 100644
--- a/package/opkg/Makefile
+++ b/package/opkg/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= opkg
-PKG_VERSION:= 0.4.2
+PKG_VERSION:= 0.6.2
PKG_RELEASE:= 1
-PKG_HASH:= 86887852c43457edfff9d8b6d9520f3f1cdd55f25eb600a6eb31e1c4e151e106
+PKG_HASH:= ac73a90a2549cd04948e563d915912c78e1b8ba0f43af75c5a53fcca474adbd5
PKG_DESCR:= embedded package manager
PKG_DEPENDS:= libcurl libarchive gpgme libressl xz
PKG_BUILDDEP:= curl libarchive gpgme xz libressl
@@ -24,7 +24,6 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,OPKG,opkg,$(PKG_VERSION)-${PKG_RELEASE}))
$(eval $(call PKG_template,OPKG,opkg,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
HOST_CONFIGURE_ARGS+= --disable-openssl \
--disable-gpg \
--disable-xz \
diff --git a/package/opus/Makefile b/package/opus/Makefile
index cae0fca62..0785c74d8 100644
--- a/package/opus/Makefile
+++ b/package/opus/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= opus
-PKG_VERSION:= 1.1.5
+PKG_VERSION:= 1.3.1
PKG_RELEASE:= 1
-PKG_HASH:= eb84981ca0f40a3e5d5e58d2e8582cb2fee05a022825a6dfe14d14b04eb563e4
+PKG_HASH:= 65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d
PKG_DESCR:= open, royalty-free, highly versatile audio codec
PKG_SECTION:= libs/audio
PKG_URL:= http://opus-codec.org/
diff --git a/package/owfs/Makefile b/package/owfs/Makefile
index 71df2bbf6..227fe8b04 100644
--- a/package/owfs/Makefile
+++ b/package/owfs/Makefile
@@ -4,14 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= owfs
-PKG_VERSION:= 3.1p0
+PKG_VERSION:= 3.2p4
PKG_RELEASE:= 1
-PKG_HASH:= 62fca1b3e908cd4515c9eb499bf2b05020bbbea4a5b73611ddc6f205adec7a54
+PKG_HASH:= af0a5035f3f3df876ca15aea13486bfed6b3ef5409dee016db0be67755c35fcc
PKG_DESCR:= software to access 1-wire devices
PKG_SECTION:= sys/hw
PKG_BUILDDEP:= fuse
PKG_URL:= http://owfs.org/
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=owfs/}
+PKG_SITES:= https://github.com/owfs/owfs/releases/download/v$(PKG_VERSION)/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/p5-anyevent/Makefile b/package/p5-anyevent/Makefile
index 8c1577dc5..a8bcb8179 100644
--- a/package/p5-anyevent/Makefile
+++ b/package/p5-anyevent/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= p5-anyevent
-PKG_VERSION:= 7.11
+PKG_VERSION:= 7.17
PKG_RELEASE:= 1
-PKG_HASH:= 8bf1b59860d04daeec4f6f56e3b86b581dfabacbc3ba0442e493e267b4b9f522
+PKG_HASH:= 50beea689c098fe4aaeb83806c40b9fe7f946d5769acf99f849f099091a4b985
PKG_DESCR:= anyevent
PKG_SECTION:= dev/perl
PKG_DEPENDS:= perl
diff --git a/package/p5-sub-name/Makefile b/package/p5-sub-name/Makefile
index fbb246439..f7a55e3ba 100644
--- a/package/p5-sub-name/Makefile
+++ b/package/p5-sub-name/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= p5-sub-name
-PKG_VERSION:= 0.05
+PKG_VERSION:= 0.27
PKG_RELEASE:= 1
-PKG_HASH:= c9d1b805ea1f8e35fdde319468d6378dc1f1123cd8f2b22788238ba842713af1
+PKG_HASH:= ecf36fba1c47ca93e1daa394968ed39c4186867459d9cd173c421e2b972043e8
PKG_DESCR:= rename a sub
PKG_SECTION:= dev/perl
PKG_DEPENDS:= perl
PKG_BUILDDEP:= perl-host perl
-PKG_SITES:= http://cpan.metacpan.org/authors/id/F/FL/FLORA/
+PKG_SITES:= https://cpan.metacpan.org/authors/id/E/ET/ETHER/
DISTFILES:= Sub-Name-${PKG_VERSION}.tar.gz
WRKDIST= ${WRKDIR}/Sub-Name-${PKG_VERSION}
diff --git a/package/p5-xml-parser-expat/Makefile b/package/p5-xml-parser-expat/Makefile
index 16d92ff47..b7fb8244a 100644
--- a/package/p5-xml-parser-expat/Makefile
+++ b/package/p5-xml-parser-expat/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= p5-xml-parser-expat
-PKG_VERSION:= 2.44
+PKG_VERSION:= 2.47
PKG_RELEASE:= 1
-PKG_HASH:= 1ae9d07ee9c35326b3d9aad56eae71a6730a73a116b9fe9e8a4758b7cc033216
+PKG_HASH:= ad4aae643ec784f489b956abe952432871a622d4e2b5c619e8855accbfc4d1d8
PKG_DESCR:= lowlevel access to expat xml parser
PKG_SECTION:= dev/perl
PKG_DEPENDS:= perl libexpat
diff --git a/package/p5-xml-parser/Makefile b/package/p5-xml-parser/Makefile
index 90f0fed30..9783ae0b2 100644
--- a/package/p5-xml-parser/Makefile
+++ b/package/p5-xml-parser/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= p5-xml-parser
-PKG_VERSION:= 2.41
+PKG_VERSION:= 2.47
PKG_RELEASE:= 1
-PKG_HASH:= b48197cd2265a26c5f016489f11a7b450d8833cb8b3d6a46ee15975740894de9
+PKG_HASH:= ad4aae643ec784f489b956abe952432871a622d4e2b5c619e8855accbfc4d1d8
PKG_DESCR:= xml parser
PKG_SECTION:= dev/perl
PKG_DEPENDS:= perl libexpat
diff --git a/package/p5-yaml-xs/Makefile b/package/p5-yaml-xs/Makefile
index 326eb892a..282faaa83 100644
--- a/package/p5-yaml-xs/Makefile
+++ b/package/p5-yaml-xs/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= p5-yaml-xs
-PKG_VERSION:= 0.41
+PKG_VERSION:= 0.89
PKG_RELEASE:= 1
-PKG_HASH:= 9a654427a3a63de434c6d03b18bba144cc7ba0f0e61a7100c6d08d77a90145ce
+PKG_HASH:= 155ab83675345c50add03311acf9dd915955707f909a2abd8b17d7792859b2ec
PKG_DESCR:= yaml serialization using xs and libyaml
PKG_SECTION:= dev/perl
PKG_DEPENDS:= perl
PKG_BUILDDEP:= perl-host perl
-PKG_SITES:= http://cpan.metacpan.org/authors/id/I/IN/INGY/
+PKG_SITES:= https://cpan.metacpan.org/authors/id/T/TI/TINITA/
DISTFILES:= YAML-LibYAML-${PKG_VERSION}.tar.gz
WRKDIST= ${WRKDIR}/YAML-LibYAML-${PKG_VERSION}
diff --git a/package/p8-platform/Makefile b/package/p8-platform/Makefile
new file mode 100644
index 000000000..af0bd5a87
--- /dev/null
+++ b/package/p8-platform/Makefile
@@ -0,0 +1,29 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= p8-platform
+PKG_VERSION:= 2.1.0.1
+PKG_RELEASE:= 1
+PKG_HASH:= 064f8d2c358895c7e0bea9ae956f8d46f3f057772cb97f2743a11d478a0f68a0
+PKG_DESCR:= platform library used by libcec
+PKG_SECTION:= libs/misc
+PKG_URL:= https://github.com/Pulse-Eight/platform
+PKG_SITES:= https://github.com/Pulse-Eight/platform/archive/refs/tags/
+PKG_LIBNAME:= libplatform
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+WRKDIST= $(WRKDIR)/platform-$(PKG_NAME)-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,P8_PLATFORM,p8-platform,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+CONFIG_STYLE:= cmake
+
+p8-platform-install:
+ :
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/pango/Makefile b/package/pango/Makefile
index 352edeb4d..44fac2f88 100644
--- a/package/pango/Makefile
+++ b/package/pango/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= pango
-PKG_VERSION:= 1.40.3
-PKG_EXTRAVER:= 1.40
+PKG_VERSION:= 1.50.4
+PKG_EXTRAVER:= 1.50
PKG_RELEASE:= 1
-PKG_HASH:= abba8b5ce728520c3a0f1535eab19eac3c14aeef7faa5aded90017ceac2711d3
+PKG_HASH:= f4ad63e87dc2b145300542a4fb004d07a9f91b34152fae0ddbe50ecdd851c162
PKG_DESCR:= library for laying out and rendering of text
PKG_SECTION:= libs/fonts
-PKG_BUILDDEP:= libXft glib cairo harfbuzz fontconfig
-HOST_BUILDDEP:= cairo-host harfbuzz-host
+PKG_BUILDDEP:= libXft glib cairo harfbuzz fontconfig fribidi
+HOST_BUILDDEP:= cairo-host harfbuzz-host glib-host meson-host
PKG_NEEDS:= c++
PKG_URL:= http://www.pango.org/
PKG_SITES:= $(MASTER_SITE_GNOME:=pango/$(PKG_EXTRAVER)/)
@@ -23,10 +23,12 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,PANGO,pango,$(PKG_VERSION)-$(PKG_RELEASE)))
$(eval $(call PKG_template,PANGO,pango,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
-HOST_LDFLAGS+= -lffi
-HOST_STYLE:= auto
-AUTOTOOLS_STYLE:= autoreconf
-CONFIGURE_ARGS+= --disable-man
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+HOST_STYLE:= meson
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
pango-install:
$(INSTALL_DIR) $(IDIR_PANGO)/etc/pango $(IDIR_PANGO)/usr/lib
diff --git a/package/parted/Makefile b/package/parted/Makefile
index b78783971..d439d93de 100644
--- a/package/parted/Makefile
+++ b/package/parted/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= parted
-PKG_VERSION:= 3.3
-PKG_RELEASE:= 5
-PKG_HASH:= 57e2b4bd87018625c515421d4524f6e3b55175b472302056391c5f7eccb83d44
+PKG_VERSION:= 3.6
+PKG_RELEASE:= 1
+PKG_HASH:= 3b43dbe33cca0f9a18601ebab56b7852b128ec1a3df3a9b30ccde5e73359e612
PKG_DESCR:= partition table editor
PKG_SECTION:= sys/fs
PKG_DEPENDS:= libblkid libuuid libncurses
diff --git a/package/pciutils/Makefile b/package/pciutils/Makefile
index 3720f55f8..58a44a037 100644
--- a/package/pciutils/Makefile
+++ b/package/pciutils/Makefile
@@ -5,7 +5,7 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= pciutils
PKG_VERSION:= 3.5.1
-PKG_RELEASE:= 2
+PKG_RELEASE:= 3
PKG_HASH:= 2bf3a4605a562fb6b8b7673bff85a474a5cf383ed7e4bd8886b4f0939013d42f
PKG_DESCR:= pci utilities
PKG_SECTION:= sys/hw
@@ -13,7 +13,6 @@ PKG_DEPENDS:= zlib
PKG_BUILDDEP:= zlib
PKG_URL:= http://www.kernel.org/pub/software/utils/pciutils/
PKG_SITES:= http://www.kernel.org/pub/software/utils/pciutils/
-PKG_BB:= 1
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/pcre/Makefile b/package/pcre/Makefile
index 435d5dcb2..c9814fbae 100644
--- a/package/pcre/Makefile
+++ b/package/pcre/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= pcre
-PKG_VERSION:= 8.41
+PKG_VERSION:= 8.45
PKG_RELEASE:= 1
-PKG_HASH:= 244838e1f1d14f7e2fa7681b857b3a8566b74215f28133f14a8f5e59241b682c
+PKG_HASH:= 4e6ce03e0336e8b4a3d6c2b70b1c5e18590a5673a98186da90d4f33c23defc09
PKG_DESCR:= perl compatible regular expression library
PKG_SECTION:= libs/misc
PKG_URL:= http://www.pcre.org/
diff --git a/package/pcre2/Makefile b/package/pcre2/Makefile
new file mode 100644
index 000000000..3bd0d9935
--- /dev/null
+++ b/package/pcre2/Makefile
@@ -0,0 +1,40 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= pcre2
+PKG_VERSION:= 10.42
+PKG_RELEASE:= 1
+PKG_HASH:= a8e52a9bd1bca8f51c5c24823adc2a99acb12288e289a6507090c1a4a4815010
+PKG_DESCR:= perl compatible regular expression library
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= cmake-host
+HOST_BUILDDEP:= cmake-host
+PKG_SITES:= https://github.com/PCRE2Project/pcre2/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/$(PKG_NAME)-$(PKG_NAME)-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,PCRE2,pcre2,${PKG_VERSION}-${PKG_RELEASE}))
+$(eval $(call PKG_template,PCRE2,pcre2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+HOST_STYLE:= cmake
+CONFIG_STYLE:= cmake
+CMAKE_FLAGS+= -DBUILD_SHARED_LIBS=ON
+
+pcre2-hostinstall:
+ cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -j${ADK_MAKE_JOBS} -f ${MAKE_FILE} \
+ ${HOST_FAKE_FLAGS} ${HOST_INSTALL_TARGET}
+
+pcre2-install:
+ $(INSTALL_DIR) $(IDIR_PCRE2)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libpcre2*.so* \
+ $(IDIR_PCRE2)/usr/lib
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/pdnsd/Makefile b/package/pdnsd/Makefile
deleted file mode 100644
index 0cc15e88f..000000000
--- a/package/pdnsd/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= pdnsd
-PKG_VERSION:= 1.2.9a
-PKG_RELEASE:= 1
-PKG_HASH:= bb5835d0caa8c4b31679d6fd6a1a090b71bdf70950db3b1d0cea9cf9cb7e2a7b
-PKG_DESCR:= proxy dns server
-PKG_SECTION:= net/dns
-PKG_NEEDS:= threads
-PKG_URL:= http://members.home.nl/p.a.rombouts/pdnsd/index.html
-PKG_SITES:= http://members.home.nl/p.a.rombouts/pdnsd/releases/
-
-PKG_FLAVOURS_PDNSD:= WITH_IPV6
-PKGFD_WITH_IPV6:= enable IPv6 support
-
-PKG_HOST_DEPENDS:= !netbsd
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}-par.tar.gz
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,PDNSD,pdnsd,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIGURE_ARGS+= --with-target=Linux
-
-ifneq (${ADK_PACKAGE_PDNSD_WITH_IPV6},)
-CONFIGURE_ARGS+= --enable-ipv6
-else
-CONFIGURE_ARGS+= --disable-ipv6
-endif
-
-pdnsd-install:
- $(INSTALL_DIR) $(IDIR_PDNSD)/etc
- ${INSTALL_DATA} ./files/pdnsd.conf ${IDIR_PDNSD}/etc/
- $(INSTALL_DIR) $(IDIR_PDNSD)/usr/sbin
- $(INSTALL_BIN) $(WRKINST)/usr/sbin/pdnsd{,-ctl} $(IDIR_PDNSD)/usr/sbin/
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/pdnsd/files/pdnsd.conf b/package/pdnsd/files/pdnsd.conf
deleted file mode 100644
index 73690524a..000000000
--- a/package/pdnsd/files/pdnsd.conf
+++ /dev/null
@@ -1,36 +0,0 @@
-global {
- perm_cache = 1024;
- cache_dir = "/var/cache/pdnsd"; # do not change this!
- run_as = "nobody";
- strict_setuid = on;
- server_ip = 127.0.0.1; # Use eth0 here if you want to allow other
- # machines on your network to query pdnsd.
- status_ctl = on;
-# paranoid=on; # This option reduces the chance of cache poisoning
- # but may make pdnsd less efficient, unfortunately.
- query_method=udp_tcp;
- min_ttl=15m; # Retain cached entries at least 15 minutes.
- max_ttl=1w; # One week.
- timeout=10; # Global timeout option (10 seconds).
- proc_limit = 20;
-}
-
-# serve local host definitions
-source {
- owner = "localhost";
- serve_aliases = off; # skip everything after the first host for an IP
- file = "/etc/hosts";
-}
-
-# for dns servers via dhcp
-#server {
-# label = "dhcp";
-# file = "/var/resolv.conf";
-# exclude = ".lan";
-# policy = fqdn_only;
-# timeout = 4;
-# uptest = if;
-# interface = "eth0";
-# interval = 60;
-#}
-
diff --git a/package/pdnsd/files/pdnsd.conffiles b/package/pdnsd/files/pdnsd.conffiles
deleted file mode 100644
index c2ae46acb..000000000
--- a/package/pdnsd/files/pdnsd.conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/pdnsd.conf
diff --git a/package/pdnsd/files/pdnsd.init b/package/pdnsd/files/pdnsd.init
deleted file mode 100644
index 5d6111e69..000000000
--- a/package/pdnsd/files/pdnsd.init
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#PKG pdnsd
-#INIT 60
-. /etc/rc.conf
-
-case $1 in
-autostop) ;;
-autostart)
- test x"${pdnsd:-NO}" = x"NO" && exit 0
- test x"$pdnsd" = x"DAEMON" && test -x /bin/mksh && exec mksh -T- $0 start
- exec sh $0 start
- ;;
-start)
- [ -f /etc/pdnsd.conf ] || exit
- mkdir -p /var/cache/pdnsd
- touch /var/cache/pdnsd/pdnsd.cache
- # this allows for strict_setuid
- chown -R nobody:nogroup /var/cache/pdnsd
- /usr/sbin/pdnsd -d
- ;;
-stop)
- kill $(pgrep -f /usr/sbin/pdnsd)
- ;;
-restart)
- sh $0 stop
- sleep 1
- sh $0 start
- ;;
-*)
- echo "Usage: $0 {start | stop | restart}"
- exit 1
- ;;
-esac
-exit $?
diff --git a/package/pdnsd/files/pdnsd.postinst b/package/pdnsd/files/pdnsd.postinst
deleted file mode 100644
index 98ba25099..000000000
--- a/package/pdnsd/files/pdnsd.postinst
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-. $IPKG_INSTROOT/etc/functions.sh
-add_rcconf pdnsd NO
diff --git a/package/perl/Makefile b/package/perl/Makefile
index d54bd3a84..788d08745 100644
--- a/package/perl/Makefile
+++ b/package/perl/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= perl
-PKG_VERSION:= 5.32.1
+PKG_VERSION:= 5.38.2
PKG_RELEASE:= 1
-PKG_HASH:= 57cc47c735c8300a8ce2fa0643507b44c4ae59012bfdad0121313db639e02309
+PKG_HASH:= d91115e90b896520e83d4de6b52f8254ef2b70a8d545ffab33200ea9f1cf29e8
PKG_DESCR:= perl interpreter
PKG_SECTION:= dev/lang
PKG_NEEDS:= threads
@@ -14,7 +14,7 @@ PKG_URL:= http://www.perl.org/
PKG_SITES:= http://www.cpan.org/src/
PKG_NOPARALLEL:= 1
-PC_VERSION:= 1.3.5
+PC_VERSION:= 1.5.2
PC_SITE:= https://github.com/arsv/perl-cross/releases/download/$(PC_VERSION)
include ${ADK_TOPDIR}/mk/host.mk
@@ -55,6 +55,7 @@ pre-configure:
cd $(DL_DIR); wget $(PC_SITE)/perl-cross-$(PC_VERSION).tar.gz; \
fi)
(cd $(WRKSRC); tar --strip-components=1 -xf $(DL_DIR)/perl-cross-$(PC_VERSION).tar.gz)
+ $(CP) $(SCRIPT_DIR)/config.* $(WRKSRC)/cnf
perl-install:
${INSTALL_DIR} ${IDIR_PERL}/usr/bin
diff --git a/package/php/Makefile b/package/php/Makefile
index 83aa35b0d..7b9a1e81b 100644
--- a/package/php/Makefile
+++ b/package/php/Makefile
@@ -4,13 +4,11 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= php
-PKG_VERSION:= 7.4.25
+PKG_VERSION:= 8.3.2
PKG_RELEASE:= 1
-PKG_HASH:= 12a758f1d7fee544387a28d3cf73226f47e3a52fb3049f07fcc37d156d393c0a
+PKG_HASH:= 4ffa3e44afc9c590e28dc0d2d31fc61f0139f8b335f11880a121b9f9b9f0634e
PKG_DESCR:= php language interpreter
PKG_SECTION:= dev/lang
-PKG_BUILDDEP:= libpng
-PKG_DEPENDS:= libpng
PKG_NEEDS:= threads
PHP_URL:= http://www.php.net/
PKG_SITES:= http://de2.php.net/distributions/
@@ -25,7 +23,7 @@ PKGSN_PHP_CLI:= php
PKG_FLAVOURS_PHP:= MOD_BZ2 MOD_CURL MOD_FTP MOD_GD MOD_GMP MOD_MARIADB
PKG_FLAVOURS_PHP+= MOD_SSL MOD_SESSION MOD_SNMP MOD_SQLITE
-PKG_FLAVOURS_PHP+= MOD_SOCKETS MOD_XML MOD_SIMPLEXML MOD_ZLIB MOD_JSON
+PKG_FLAVOURS_PHP+= MOD_SOCKETS MOD_XML MOD_SIMPLEXML MOD_ZLIB
PKG_FLAVOURS_PHP+= MOD_LDAP MOD_PCNTL
PKGFD_MOD_BZ2:= bzip2 support
@@ -39,12 +37,11 @@ PKGFD_MOD_GD:= gd support
PKGFD_MOD_GMP:= gmp support
PKGFB_MOD_GMP:= gmp
PKGFS_MOD_GMP:= libgmp
-PKGFD_MOD_JSON:= json support
PKGFD_MOD_LDAP:= ldap support
PKGFB_MOD_LDAP:= openldap
PKGFS_MOD_LDAP:= libopenldap
PKGFD_MOD_MARIADB:= mariadb support
-PKGFS_MOD_MARIADB:= libmariadb
+PKGFS_MOD_MARIADB:= libmariadbclient
PKGFB_MOD_MARIADB:= mariadb
PKGFD_MOD_SSL:= ssl support
PKGFB_MOD_SSL:= libressl
@@ -135,11 +132,6 @@ PKG_CONFIGURE_OPTS+= --with-gmp=shared,"$(STAGING_TARGET_DIR)/usr"
else
PKG_CONFIGURE_OPTS+= --without-gmp
endif
-ifneq ($(ADK_PACKAGE_PHP_MOD_JSON),)
-PKG_CONFIGURE_OPTS+= --enable-json=shared,"$(STAGING_TARGET_DIR)/usr"
-else
-PKG_CONFIGURE_OPTS+= --disable-json
-endif
ifneq ($(ADK_PACKAGE_PHP_MOD_LDAP),)
PKG_CONFIGURE_OPTS+= --with-ldap=shared,"$(STAGING_TARGET_DIR)/usr" \
--with-ldap-sasl="$(STAGING_TARGET_DIR)/usr"
@@ -193,9 +185,9 @@ else
PKG_CONFIGURE_OPTS+= --disable-xml
endif
ifneq ($(ADK_PACKAGE_PHP_MOD_SIMPLEXML),)
-PKG_CONFIGURE_OPTS+= --enable-simplexml=shared --enable-libxml
+PKG_CONFIGURE_OPTS+= --enable-simplexml=shared
else
-PKG_CONFIGURE_OPTS+= --disable-simplexml --disable-libxml
+PKG_CONFIGURE_OPTS+= --disable-simplexml
endif
ifneq ($(ADK_PACKAGE_PHP_MOD_ZLIB),)
PKG_CONFIGURE_OPTS+= --with-zlib=shared,"$(STAGING_TARGET_DIR)/usr"
@@ -208,7 +200,6 @@ $(eval $(call PKG_template,PHP_MOD_CURL,php-mod-curl,$(PKG_VERSION)-${PKG_RELEAS
$(eval $(call PKG_template,PHP_MOD_FTP,php-mod-ftp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,PHP_MOD_GD,php-mod-gd,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,PHP_MOD_GMP,php-mod-gmp,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-$(eval $(call PKG_template,PHP_MOD_JSON,php-mod-json,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,PHP_MOD_LDAP,php-mod-ldap,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,PHP_MOD_MARIADB,php-mod-mariadb,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,PHP_MOD_OPENSSL,php-mod-openssl,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
@@ -225,7 +216,6 @@ $(eval $(call PKG_mod_template,PHP_MOD_CURL,curl))
$(eval $(call PKG_mod_template,PHP_MOD_FTP,ftp))
$(eval $(call PKG_mod_template,PHP_MOD_GD,gd))
$(eval $(call PKG_mod_template,PHP_MOD_GMP,gmp))
-$(eval $(call PKG_mod_template,PHP_MOD_JSON,json))
$(eval $(call PKG_mod_template,PHP_MOD_LDAP,ldap))
$(eval $(call PKG_mod_template,PHP_MOD_MARIADB,pdo_mysql))
$(eval $(call PKG_mod_template,PHP_MOD_OPENSSL,openssl))
diff --git a/package/php/files/php.init b/package/php/files/php.init
index 5168bdd3e..a113500b6 100644
--- a/package/php/files/php.init
+++ b/package/php/files/php.init
@@ -16,14 +16,14 @@ start)
if [ -x /usr/bin/php-cgi ];then
/usr/bin/php-cgi -b /var/run/php5.sock &
else
- /usr/bin/php-fpm -D
+ /usr/bin/php -D
fi
;;
stop)
if [ -x /usr/bin/php-cgi ];then
pkill php-cgi
else
- pkill php-fpm
+ pkill php
fi
;;
restart)
diff --git a/package/php/patches/patch-ext_standard_crc32_c b/package/php/patches/patch-ext_standard_crc32_c
deleted file mode 100644
index 2d55e1ed5..000000000
--- a/package/php/patches/patch-ext_standard_crc32_c
+++ /dev/null
@@ -1,73 +0,0 @@
---- php-7.4.25.orig/ext/standard/crc32.c 2021-10-19 17:18:19.000000000 +0200
-+++ php-7.4.25/ext/standard/crc32.c 2021-10-29 14:58:12.777563842 +0200
-@@ -20,56 +20,6 @@
- #include "basic_functions.h"
- #include "crc32.h"
-
--#if HAVE_AARCH64_CRC32
--# include <arm_acle.h>
--# if defined(__linux__)
--# include <sys/auxv.h>
--# include <asm/hwcap.h>
--# endif
--
--static inline int has_crc32_insn() {
-- /* Only go through the runtime detection once. */
-- static int res = -1;
-- if (res != -1)
-- return res;
--# if defined(HWCAP_CRC32)
-- res = getauxval(AT_HWCAP) & HWCAP_CRC32;
-- return res;
--# elif defined(HWCAP2_CRC32)
-- res = getauxval(AT_HWCAP2) & HWCAP2_CRC32;
-- return res;
--# else
-- res = 0;
-- return res;
--# endif
--}
--
--# pragma GCC push_options
--# pragma GCC target ("+nothing+crc")
--static uint32_t crc32_aarch64(uint32_t crc, char *p, size_t nr) {
-- while (nr >= sizeof(uint64_t)) {
-- crc = __crc32d(crc, *(uint64_t *)p);
-- p += sizeof(uint64_t);
-- nr -= sizeof(uint64_t);
-- }
-- if (nr >= sizeof(int32_t)) {
-- crc = __crc32w(crc, *(uint32_t *)p);
-- p += sizeof(uint32_t);
-- nr -= sizeof(uint32_t);
-- }
-- if (nr >= sizeof(int16_t)) {
-- crc = __crc32h(crc, *(uint16_t *)p);
-- p += sizeof(uint16_t);
-- nr -= sizeof(uint16_t);
-- }
-- if (nr) {
-- crc = __crc32b(crc, *p);
-- }
-- return crc;
--}
--# pragma GCC pop_options
--#endif
--
- /* {{{ proto string crc32(string str)
- Calculate the crc32 polynomial of a string */
- PHP_NAMED_FUNCTION(php_if_crc32)
-@@ -85,13 +35,6 @@ PHP_NAMED_FUNCTION(php_if_crc32)
-
- crc = crcinit^0xFFFFFFFF;
-
--#if HAVE_AARCH64_CRC32
-- if (has_crc32_insn()) {
-- crc = crc32_aarch64(crc, p, nr);
-- RETURN_LONG(crc^0xFFFFFFFF);
-- }
--#endif
--
- for (; nr--; ++p) {
- crc = ((crc >> 8) & 0x00FFFFFF) ^ crc32tab[(crc ^ (*p)) & 0xFF ];
- }
diff --git a/package/picocom/Makefile b/package/picocom/Makefile
index 6e06e23b7..e1a3e146a 100644
--- a/package/picocom/Makefile
+++ b/package/picocom/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= picocom
-PKG_VERSION:= 2.1
+PKG_VERSION:= 3.1
PKG_RELEASE:= 1
-PKG_HASH:= 6b152fc5f816eaef6b86336a4cec7cf1496b7c712061e5aea5a36f143a0b09ed
+PKG_HASH:= e6761ca932ffc6d09bd6b11ff018bdaf70b287ce518b3282d29e0270e88420bb
PKG_DESCR:= minimal dumb-terminal emulation program
PKG_SECTION:= sys/serial
PKG_URL:= https://github.com/npat-efault/picocom/
diff --git a/package/picocom/patches/patch-Makefile b/package/picocom/patches/patch-Makefile
deleted file mode 100644
index 5d6911113..000000000
--- a/package/picocom/patches/patch-Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
---- picocom-2.1.orig/Makefile 2015-10-15 23:25:02.000000000 +0200
-+++ picocom-2.1/Makefile 2016-09-23 15:45:44.240688077 +0200
-@@ -1,12 +1,12 @@
-
- VERSION = 2.1
-
--#CC = gcc
-+CC ?= gcc
- CPPFLAGS = -DVERSION_STR=\"$(VERSION)\"
--CFLAGS = -Wall -g
-+CFLAGS ?= -Wall -g
-
- LD = $(CC)
--LDFLAGS = -g
-+LDFLAGS ?= -g
- LDLIBS =
-
- all: picocom
diff --git a/package/picocom/patches/patch-linenoise-1_0_Makefile b/package/picocom/patches/patch-linenoise-1_0_Makefile
deleted file mode 100644
index d7c7a6526..000000000
--- a/package/picocom/patches/patch-linenoise-1_0_Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
---- picocom-2.1.orig/linenoise-1.0/Makefile 2015-10-15 23:25:02.000000000 +0200
-+++ picocom-2.1/linenoise-1.0/Makefile 2016-09-23 15:44:57.086909523 +0200
-@@ -1,7 +1,7 @@
- linenoise_example: linenoise.h linenoise.c
-
- linenoise_example: linenoise.c example.c
-- $(CC) -Wall -W -Os -g -o linenoise_example linenoise.c example.c
-+ $(CC) $(CFLAGS) -o linenoise_example linenoise.c example.c
-
- clean:
- rm -f linenoise_example
diff --git a/package/pkgconf/Makefile b/package/pkgconf/Makefile
index bded34468..77dbba517 100644
--- a/package/pkgconf/Makefile
+++ b/package/pkgconf/Makefile
@@ -4,16 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= pkgconf
-PKG_VERSION:= 0.9.6
-PKG_RELEASE:= 1
-PKG_HASH:= 8f5f48e52ddef0c3cbffe93f32d5148041e0030b8798b49b0b5fe72f4968d7ec
+PKG_VERSION:= 1.1.0
+PKG_RELEASE:= 2
+PKG_HASH:= 5f1ef65d73a880fa5e7012102a17f7b32010e5e46139aed85851a541ba828a63
PKG_DESCR:= smart pkg-config replacement
PKG_SECTION:= dev/tools
HOST_BUILDDEP:= sed-host
-PKG_URL:= https://github.com/pkgconf/pkgconf
-PKG_SITES:= http://rabbit.dereferenced.org/~nenolod/distfiles/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_URL:= http://pkgconf.org/
+PKG_SITES:= https://distfiles.dereferenced.org/pkgconf/
include $(ADK_TOPDIR)/mk/host.mk
include $(ADK_TOPDIR)/mk/package.mk
@@ -31,6 +29,9 @@ endif
(cd $(STAGING_HOST_DIR)/usr/bin && ln -sf pkg-config $(GNU_TARGET_NAME)-pkg-config)
pkgconf-install:
+ $(INSTALL_DIR) $(IDIR_PKGCONF)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libpkgconf*so* \
+ $(IDIR_PKGCONF)/usr/lib
$(INSTALL_DIR) $(IDIR_PKGCONF)/usr/bin
$(INSTALL_BIN) $(WRKINST)/usr/bin/pkgconf \
$(IDIR_PKGCONF)/usr/bin
diff --git a/package/platform/Makefile b/package/platform/Makefile
deleted file mode 100644
index c23c3e21a..000000000
--- a/package/platform/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= platform
-PKG_VERSION:= aafa6e9f3b86f2258f5f75809849743b1779072b
-PKG_RELEASE:= 1
-PKG_GIT:= hash
-PKG_DESCR:= platform library used by libcec
-PKG_SECTION:= libs/misc
-PKG_URL:= https://github.com/Pulse-Eight/platform
-PKG_SITES:= https://github.com/Pulse-Eight/platform.git
-PKG_LIBNAME:= libplatform
-PKG_OPTS:= dev
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,LIBPLATFORM,libplatform,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
-
-CONFIG_STYLE:= cmake
-
-libplatform-install:
- :
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/pmacct/Makefile b/package/pmacct/Makefile
index bfba469b8..1368c276c 100644
--- a/package/pmacct/Makefile
+++ b/package/pmacct/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= pmacct
-PKG_VERSION:= 0.12.5
+PKG_VERSION:= 1.7.8
PKG_RELEASE:= 1
-PKG_HASH:= 5252d7df24e9baefcc5a36ed66e9cac5ae505c9d502c8cffb96e6808acbb2fe8
+PKG_HASH:= 4df50a3c6c7bdace3345bbf3bd4f6fa7a6722ec1fb45dfd266ad956b327da98a
PKG_DESCR:= ip accounting tools
PKG_SECTION:= net/acct
-PKG_DEPENDS:= libpcap
-PKG_BUILDDEP:= libpcap
+PKG_DEPENDS:= libpcap libcdada
+PKG_BUILDDEP:= libpcap libcdada
PKG_URL:= http://www.pmacct.net/
PKG_SITES:= http://www.pmacct.net/
@@ -26,7 +26,8 @@ $(eval $(call PKG_template,SFACCTD,sfacctd,$(PKG_VERSION)-${PKG_RELEASE},${PKG_D
$(eval $(call PKG_template,PMACCT_CLIENT,pmacct-client,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
CONFIGURE_ARGS+= --with-pcap-includes="$(STAGING_TARGET_DIR)/usr/include" \
- --with-pcap-libs="$(STAGING_TARGET_DIR)/usr/lib"
+ --with-pcap-libs="$(STAGING_TARGET_DIR)/usr/lib" \
+ --without-external-deps
sfacctd-install:
${INSTALL_DIR} $(IDIR_SFACCTD)/usr/sbin
diff --git a/package/pmacct/patches/patch-configure b/package/pmacct/patches/patch-configure
deleted file mode 100644
index 0c7310ba6..000000000
--- a/package/pmacct/patches/patch-configure
+++ /dev/null
@@ -1,41 +0,0 @@
---- pmacct-0.12.5.orig/configure 2010-12-28 17:26:21.000000000 +0100
-+++ pmacct-0.12.5/configure 2011-01-21 21:15:15.478658080 +0100
-@@ -1006,7 +1006,6 @@ fi
-
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
--CFLAGS=
- echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
- echo "configure:1012: checking whether ${CC-cc} accepts -g" >&5
- if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-@@ -1022,22 +1021,6 @@ rm -f conftest*
-
- fi
-
--echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
--if test "$ac_test_CFLAGS" = set; then
-- CFLAGS="$ac_save_CFLAGS"
--elif test $ac_cv_prog_cc_g = yes; then
-- if test "$GCC" = yes; then
-- CFLAGS="-g -O2"
-- else
-- CFLAGS="-g"
-- fi
--else
-- if test "$GCC" = yes; then
-- CFLAGS="-O2"
-- else
-- CFLAGS=
-- fi
--fi
-
- host_os=`uname`
- host_cpu=`uname -m`
-@@ -1083,7 +1066,6 @@ fi
-
-
- if test "x$ac_cv_prog_gcc" = xyes ; then
-- CFLAGS="-O2"
- case "$host_os" in
- IRIX*)
- CFLAGS="-mabi=n32 -fno-builtins ${CFLAGS}"
diff --git a/package/popt/Makefile b/package/popt/Makefile
index 0a36d6b81..bd1746a90 100644
--- a/package/popt/Makefile
+++ b/package/popt/Makefile
@@ -4,12 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= popt
-PKG_VERSION:= 1.18
+PKG_VERSION:= 1.19
PKG_RELEASE:= 1
-PKG_HASH:= 36245242c59b5a33698388e415a3e1efa2d48fc4aead91aeb2810b4c0744f4e3
+PKG_HASH:= 6eb40d650526cb9fe63eb4415bcecdf9cf306f7556e77eff689abc5a44670060
PKG_DESCR:= command line option parsing library
PKG_SECTION:= libs/misc
PKG_URL:= http://rpm5.org/
+PKG_BUILDDEP:= gettext-host
+HOST_BUILDDEP:= gettext-host libtool-host
PKG_SITES:= https://github.com/rpm-software-management/popt/archive/refs/tags/
PKG_LIBNAME:= libpopt
PKG_OPTS:= dev
diff --git a/package/popt/patches/patch-Makefile_am b/package/popt/patches/patch-Makefile_am
new file mode 100644
index 000000000..0c25da403
--- /dev/null
+++ b/package/popt/patches/patch-Makefile_am
@@ -0,0 +1,11 @@
+--- popt-popt-1.19-release.orig/Makefile.am 2022-09-16 09:05:46.000000000 +0200
++++ popt-popt-1.19-release/Makefile.am 2022-09-21 02:11:30.830446841 +0200
+@@ -4,7 +4,7 @@ MCCABE = pmccabe
+
+ EXTRA_DIST = autogen.sh CREDITS $(man_MANS) ci/Dockerfile build-aux popt.pdf
+
+-SUBDIRS = src po tests
++SUBDIRS = src
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = popt.pc
diff --git a/package/protobuf-c/Makefile b/package/protobuf-c/Makefile
new file mode 100644
index 000000000..f2a218e4f
--- /dev/null
+++ b/package/protobuf-c/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= protobuf-c
+PKG_VERSION:= 1.5.0
+PKG_RELEASE:= 1
+PKG_HASH:= d4cb022d55f49796959b07a9d83040822e39129bc0eb28f4e8301da17d758f62
+PKG_DESCR:= protocol buffers implementation in c
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= protobuf-c-host
+PKG_SITES:= https://github.com/protobuf-c/protobuf-c/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,PROTOBUF_C,protobuf-c,$(PKG_VERSION)-$(PKG_RELEASE)))
+$(eval $(call PKG_template,PROTOBUF_C,protobuf-c,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= autogen
+CONFIGURE_ENV+= PROTOC="$(STAGING_HOST_DIR)/usr/bin/protoc"
+
+protobuf-c-install:
+ $(INSTALL_DIR) $(IDIR_PROTOBUF_C)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libprotobuf-c*.so* \
+ $(IDIR_PROTOBUF_C)/usr/lib
+
+include $(ADK_TOPDIR)/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/protobuf/Makefile b/package/protobuf/Makefile
index 780618167..10920ae2f 100644
--- a/package/protobuf/Makefile
+++ b/package/protobuf/Makefile
@@ -4,12 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= protobuf
-PKG_VERSION:= 3.1.0
+PKG_VERSION:= 3.19.4
PKG_RELEASE:= 1
-PKG_HASH:= fb2a314f4be897491bb2446697be693d489af645cb0e165a85e7e64e07eb134d
+PKG_HASH:= 3bd7828aa5af4b13b99c191e8b1e884ebfa9ad371b0ce264605d347f135d2568
PKG_DESCR:= extensible mechanism for serializing structured data
PKG_SECTION:= libs/misc
PKG_URL:= https://developers.google.com/protocol-buffers/
+PKG_BUILDDEP:= protobuf-host
+PKG_NEEDS:= c++
PKG_SITES:= https://github.com/google/protobuf/archive/
PKG_OPTS:= dev
diff --git a/package/proxychains-ng/Makefile b/package/proxychains-ng/Makefile
new file mode 100644
index 000000000..ac09b78fb
--- /dev/null
+++ b/package/proxychains-ng/Makefile
@@ -0,0 +1,32 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= proxychains-ng
+PKG_VERSION:= 4.17
+PKG_RELEASE:= 1
+PKG_HASH:= 1a2dc68fcbcb2546a07a915343c1ffc75845f5d9cc3ea5eb3bf0b62a66c0196f
+PKG_DESCR:= socks proxy
+PKG_SECTION:= net/proxy
+PKG_SITES:= https://github.com/rofl0r/proxychains-ng/archive/refs/tags/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,PROXYCHAINS_NG,proxychains-ng,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+proxychains-ng-install:
+ $(INSTALL_DIR) $(IDIR_PROXYCHAINS_NG)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/proxychains4* \
+ $(IDIR_PROXYCHAINS_NG)/usr/bin
+ $(INSTALL_DIR) $(IDIR_PROXYCHAINS_NG)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libproxychains4.so \
+ $(IDIR_PROXYCHAINS_NG)/usr/lib
+ $(INSTALL_DIR) $(IDIR_PROXYCHAINS_NG)/etc
+ $(CP) $(WRKBUILD)/src/proxychains.conf \
+ $(IDIR_PROXYCHAINS_NG)/etc
+
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/pulseaudio/Makefile b/package/pulseaudio/Makefile
index 68030d227..f0ff6e102 100644
--- a/package/pulseaudio/Makefile
+++ b/package/pulseaudio/Makefile
@@ -4,16 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= pulseaudio
-PKG_VERSION:= 10.0
+PKG_VERSION:= 15.0
PKG_RELEASE:= 1
-PKG_HASH:= a3186824de9f0d2095ded5d0d0db0405dc73133983c2fbb37291547e37462f57
+PKG_HASH:= a40b887a3ba98cc26976eb11bdb6613988f145b19024d1b6555c6a03c9cba1a0
PKG_DESCR:= sound system
PKG_SECTION:= mm/audio
PKG_DEPENDS:= libltdl json-c libsndfile libspeex libncurses
PKG_DEPENDS+= libflac libvorbis libogg libuuid libsndfile
-PKG_DEPENDS+= alsa-lib
-PKG_BUILDDEP:= libtool json-c libsndfile speex
+PKG_DEPENDS+= alsa-lib libICE libSM libxtst glib
+PKG_BUILDDEP:= libtool json-c libsndfile speex check meson-host
PKG_BUILDDEP+= flac libvorbis libogg util-linux ncurses alsa-lib
+PKG_BUILDDEP+= libICE libSM libXtst glib
PKG_NEEDS:= threads
PKG_URL:= http://www.freedesktop.org/wiki/Software/PulseAudio/
PKG_SITES:= http://freedesktop.org/software/pulseaudio/releases/
@@ -23,40 +24,18 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,PULSEAUDIO,pulseaudio,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-TARGET_CPPFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
-# use libtool from host directory
-AUTOTOOL_STYLE:= autoreconf
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
-ifeq ($(ADK_TARGET_ARCH_ARM_WITH_NEON),y)
-CONFIGURE_ARGS+= --enable-neon-opt
-else
-CONFIGURE_ARGS+= --disable-neon-opt
-endif
+TARGET_CPPFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
-CONFIGURE_ARGS+= --disable-manpages \
- --disable-tests \
- --disable-x11 \
- --disable-avahi \
- --disable-lirc \
- --disable-openssl \
- --disable-orc \
- --disable-tcpwrap \
- --disable-oss-output \
- --disable-oss-wrapper \
- --disable-esound \
- --disable-jack \
- --disable-gconf \
- --disable-udev \
- --disable-rpath \
- --disable-dbus \
- --disable-hal-compat \
- --disable-samplerate \
- --without-caps \
- --with-database=simple \
- --enable-alsa \
- --with-speex \
- --with-access-group=audio
+MESON_FLAGS+= -Ddatabase=simple \
+ -Ddoxygen=false \
+ -Dgcov=false \
+ -Dtests=false
pulseaudio-install:
$(INSTALL_DIR) $(IDIR_PULSEAUDIO)/etc/pulse
diff --git a/package/pulseaudio/patches/patch-Makefile_am b/package/pulseaudio/patches/patch-Makefile_am
deleted file mode 100644
index 11132dad5..000000000
--- a/package/pulseaudio/patches/patch-Makefile_am
+++ /dev/null
@@ -1,11 +0,0 @@
---- pulseaudio-10.0.orig/Makefile.am 2017-01-18 04:45:11.000000000 +0100
-+++ pulseaudio-10.0/Makefile.am 2017-06-06 19:51:59.372820444 +0200
-@@ -42,7 +42,7 @@ EXTRA_DIST = \
- src/daemon/.gitignore \
- src/pulse/.gitignore
-
--SUBDIRS = src doxygen man po
-+SUBDIRS = src
-
- MAINTAINERCLEANFILES =
- noinst_DATA =
diff --git a/package/pulseaudio/patches/patch-configure_ac b/package/pulseaudio/patches/patch-configure_ac
deleted file mode 100644
index 2ba044a9b..000000000
--- a/package/pulseaudio/patches/patch-configure_ac
+++ /dev/null
@@ -1,55 +0,0 @@
---- pulseaudio-10.0.orig/configure.ac 2017-01-13 04:02:18.000000000 +0100
-+++ pulseaudio-10.0/configure.ac 2017-06-06 20:05:26.400612037 +0200
-@@ -97,24 +97,8 @@ AS_IF([test "x$M4" = "xno"], AC_MSG_ERRO
-
- PKG_PROG_PKG_CONFIG
-
--# gettext
--
--if test "x$enable_nls" != "xno"; then
--IT_PROG_INTLTOOL([0.35.0])
--
--AM_GNU_GETTEXT_VERSION([0.18.1])
--AM_GNU_GETTEXT([external])
--
--GETTEXT_PACKAGE=pulseaudio
--AC_SUBST([GETTEXT_PACKAGE])
--AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
--else
--# workaround till an intltool m4 bug is fixed upstream
--# (https://bugs.launchpad.net/intltool/+bug/904647)
- USE_NLS=no
- AC_SUBST(USE_NLS)
--fi
--
-
- #### Determine host OS ####
-
-@@ -1486,27 +1470,10 @@ AM_CONDITIONAL([FORCE_PREOPEN], [test "x
- AC_CONFIG_FILES([
- Makefile
- src/Makefile
--man/Makefile
- libpulse.pc
- libpulse-simple.pc
- libpulse-mainloop-glib.pc
--doxygen/Makefile
--doxygen/doxygen.conf
- src/pulse/version.h
--po/Makefile.in
--man/pulseaudio.1.xml
--man/esdcompat.1.xml
--man/pax11publish.1.xml
--man/pacat.1.xml
--man/pacmd.1.xml
--man/pactl.1.xml
--man/pasuspender.1.xml
--man/padsp.1.xml
--man/pulse-daemon.conf.5.xml
--man/pulse-client.conf.5.xml
--man/default.pa.5.xml
--man/pulse-cli-syntax.5.xml
--man/start-pulseaudio-x11.1.xml
- ])
-
- AC_CONFIG_FILES([src/esdcompat:src/daemon/esdcompat.in], [chmod +x src/esdcompat])
diff --git a/package/py-spidev/Makefile b/package/py-spidev/Makefile
index 00ee559c4..aa9a6ea84 100644
--- a/package/py-spidev/Makefile
+++ b/package/py-spidev/Makefile
@@ -9,8 +9,8 @@ PKG_RELEASE:= 1
PKG_GIT:= hash
PKG_DESCR:= module for interfacing with spi devices from user space via the spidev linux kernel driver
PKG_SECTION:= dev/python
-PKG_DEPENDS:= python2
-PKG_BUILDDEP:= python2
+PKG_DEPENDS:= python3
+PKG_BUILDDEP:= python3
PKG_URL:= https://github.com/doceme/py-spidev
PKG_SITES:= https://github.com/doceme/py-spidev.git
@@ -18,7 +18,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,PY_SPIDEV,py-spidev,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-include $(ADK_TOPDIR)/mk/python.mk
+include $(ADK_TOPDIR)/mk/python3.mk
CONFIG_STYLE:= manual
BUILD_STYLE:= manual
diff --git a/package/pycurl/Makefile b/package/pycurl/Makefile
index ddcce6c05..ee3c67b61 100644
--- a/package/pycurl/Makefile
+++ b/package/pycurl/Makefile
@@ -4,15 +4,15 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= pycurl
-PKG_VERSION:= 7.19.0.2
+PKG_VERSION:= 7.45.2
PKG_RELEASE:= 1
-PKG_HASH:= 7a9e793b9181654d5eef3f6d22c244c57d2b51d38feb4c1b71d68efda99b0547
+PKG_HASH:= 5730590be0271364a5bddd9e245c9cc0fb710c4cbacbdd95264a3122d23224ca
PKG_DESCR:= python module for fetching of files
PKG_SECTION:= dev/python
-PKG_BUILDDEP:= python2 curl
-PKG_DEPENDS:= python2 libcurl
-PKG_URL:= http://pycurl.sourceforge.net/
-PKG_SITES:= http://pycurl.sourceforge.net/download/
+PKG_BUILDDEP:= python3 curl
+PKG_DEPENDS:= python3 libcurl
+PKG_URL:= http://pycurl.io/
+PKG_SITES:= https://files.pythonhosted.org/packages/a8/af/24d3acfa76b867dbd8f1166853c18eefc890fc5da03a48672b38ea77ddae/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
@@ -28,7 +28,7 @@ TARGET_CFLAGS+= -fPIC
MAKE_ENV+= LDSHARED="$(TARGET_CC) -shared"
CURL_CONFIG:= $(STAGING_TARGET_DIR)/usr/bin/curl-config
-include $(ADK_TOPDIR)/mk/python.mk
+include $(ADK_TOPDIR)/mk/python3.mk
do-build:
(cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py --curl-config=$(CURL_CONFIG) build)
diff --git a/package/pycurl/patches/patch-setup_py b/package/pycurl/patches/patch-setup_py
deleted file mode 100644
index 26280ec36..000000000
--- a/package/pycurl/patches/patch-setup_py
+++ /dev/null
@@ -1,12 +0,0 @@
---- pycurl-7.19.0.orig/setup.py 2008-09-09 19:40:34.000000000 +0200
-+++ pycurl-7.19.0/setup.py 2011-10-14 17:59:41.000000000 +0200
-@@ -115,9 +115,6 @@ else:
- define_macros.append(('HAVE_CURL_SSL', 1))
- if not libraries:
- libraries.append("curl")
-- # Add extra compile flag for MacOS X
-- if sys.platform[:-1] == "darwin":
-- extra_link_args.append("-flat_namespace")
-
-
- ###############################################################################
diff --git a/package/pyrex/Makefile b/package/pyrex/Makefile
deleted file mode 100644
index ffb37b511..000000000
--- a/package/pyrex/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= Pyrex
-PKG_VERSION:= 0.9.9
-PKG_RELEASE:= 3
-PKG_HASH:= 5f87df06831d0b3412eb4bc9d3fc2ee7bfae1b913d7da8c23ab2bf5699fb6b50
-PKG_DESCR:= mixes python and c data types
-PKG_SECTION:= dev/python
-PKG_DEPENDS:= python2
-PKG_URL:= http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
-PKG_SITES:= http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,PYREX,pyrex,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIG_STYLE:= manual
-BUILD_STYLE:= manual
-INSTALL_STYLE:= manual
-
-include $(ADK_TOPDIR)/mk/python.mk
-
-do-build:
- cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py build
- cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py install --prefix="$(STAGING_HOST_DIR)/usr"
- cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py install --prefix="$(WRKINST)/usr"
-
-do-install:
- $(INSTALL_DIR) $(IDIR_PYREX)/usr/lib/python$(PYTHON_VERSION)
- $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/* \
- $(IDIR_PYREX)/usr/lib/python$(PYTHON_VERSION)
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/python-mako/Makefile b/package/python-mako/Makefile
new file mode 100644
index 000000000..bb069a434
--- /dev/null
+++ b/package/python-mako/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= python-mako
+PKG_VERSION:= 1.2.4
+PKG_RELEASE:= 1
+PKG_HASH:= d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34
+PKG_DESCR:= fast, expressive, extensible templating engine
+PKG_SECTION:= dev/tools
+PKG_BUILDDEP:= python3-host
+PKG_SITES:= https://files.pythonhosted.org/packages/05/5f/2ba6e026d33a0e6ddc1dddf9958677f76f5f80c236bd65309d280b166d3e/
+
+DISTFILES:= Mako-$(PKG_VERSION).tar.gz
+
+WRKDIST= $(WRKDIR)/Mako-$(PKG_VERSION)
+
+include ${ADK_TOPDIR}/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,PYTHON_MAKO,python-mako,${PKG_VERSION}-${PKG_RELEASE}))
+
+include $(ADK_TOPDIR)/mk/python3.mk
+
+HOST_STYLE:= manual
+
+python-mako-hostinstall:
+ (cd $(WRKBUILD); PATH='$(HOST_PATH)' python3 ./setup.py install \
+ --prefix=$(STAGING_HOST_DIR)/usr)
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/python-setuptools/Makefile b/package/python-setuptools/Makefile
new file mode 100644
index 000000000..4a05cb202
--- /dev/null
+++ b/package/python-setuptools/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= python-setuptools
+PKG_VERSION:= 69.0.3
+PKG_RELEASE:= 1
+PKG_HASH:= be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78
+PKG_DESCR:= python setuptools
+PKG_SECTION:= dev/tools
+PKG_BUILDDEP:= python3-host
+PKG_SITES:= https://files.pythonhosted.org/packages/fc/c9/b146ca195403e0182a374e0ea4dbc69136bad3cd55bc293df496d625d0f7/
+
+DISTFILES:= setuptools-$(PKG_VERSION).tar.gz
+
+WRKDIST= $(WRKDIR)/setuptools-$(PKG_VERSION)
+
+include ${ADK_TOPDIR}/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,PYTHON_SETUPTOOLS,python-setuptools,${PKG_VERSION}-${PKG_RELEASE}))
+
+include $(ADK_TOPDIR)/mk/python3.mk
+
+HOST_STYLE:= manual
+
+python-setuptools-hostinstall:
+ (cd $(WRKBUILD); PATH='$(HOST_PATH)' python3 ./setup.py install \
+ --prefix=$(STAGING_HOST_DIR)/usr)
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/python2/Makefile b/package/python2/Makefile
deleted file mode 100644
index 358866b0f..000000000
--- a/package/python2/Makefile
+++ /dev/null
@@ -1,150 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= python2
-PKG_VERSION:= 2.7.14
-PKG_RELEASE:= 1
-PKG_HASH:= 304c9b202ea6fbd0a4a8e0ad3733715fbd4749f2204a9173a58ec53c32ea73e8
-PKG_DESCR:= python2 script interpreter
-PKG_SECTION:= dev/lang
-PKG_DEPENDS:= libffi
-PKG_BUILDDEP:= libffi python2-host
-HOST_BUILDDEP:= libffi-host libressl-host
-PKG_NEEDS:= threads
-PKG_URL:= http://www.python.org/
-PKG_SITES:= http://www.python.org/ftp/python/${PKG_VERSION}/
-PKG_OPTS:= dev
-
-DISTFILES:= Python-${PKG_VERSION}.tgz
-WRKDIST= ${WRKDIR}/Python-${PKG_VERSION}
-
-PKG_FLAVOURS_PYTHON2:= MOD_ZLIB MOD_BZ2 MOD_EXPAT MOD_SQLITE MOD_GDBM
-PKG_FLAVOURS_PYTHON2+= MOD_NCURSES MOD_SSL MOD_READLINE
-
-PKGFD_MOD_ZLIB:= zlib support
-PKGFB_MOD_ZLIB:= zlib
-PKGFS_MOD_ZLIB:= zlib
-PKGFD_MOD_BZ2:= bzip2 support
-PKGFB_MOD_BZ2:= bzip2
-PKGFS_MOD_BZ2:= libbz2
-PKGFD_MOD_EXPAT:= xml support
-PKGFB_MOD_EXPAT:= expat
-PKGFS_MOD_EXPAT:= libexpat
-PKGFD_MOD_SQLITE:= sqlite support
-PKGFB_MOD_SQLITE:= sqlite
-PKGFS_MOD_SQLITE:= libsqlite
-PKGFD_MOD_GDBM:= gdbm support
-PKGFB_MOD_GDBM:= gdbm
-PKGFS_MOD_GDBM:= libgdbm
-PKGFD_MOD_NCURSES:= ncurses support
-PKGFB_MOD_NCURSES:= ncurses
-PKGFS_MOD_NCURSES:= libncurses
-PKGFD_MOD_READLINE:= readline support
-PKGFB_MOD_READLINE:= readline
-PKGFS_MOD_READLINE:= libreadline
-PKGFD_MOD_SSL:= ssl support
-PKGFB_MOD_SSL:= libressl
-PKGFS_MOD_SSL:= libressl
-
-include ${ADK_TOPDIR}/mk/host.mk
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call HOST_template,PYTHON2,python2,${PKG_VERSION}-${PKG_RELEASE}))
-$(eval $(call PKG_template,PYTHON2,python2,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-
-define PKG_mod_template
-
-INSTALL_MODS_$${ADK_PACKAGE_${1}}+= ${2}-install
-
-${2}-install:
- ${INSTALL_DIR} $$(IDIR_$(1))/usr/lib/python2.7/lib-dynload
- for m in ${2}; do \
- ${INSTALL_DATA} $(WRKINST)/usr/lib/python2.7/lib-dynload/$$$${m}*.so $$(IDIR_$(1))/usr/lib/python2.7/lib-dynload ;\
- done
-endef
-
-$(eval $(call PKG_template,PYTHON2_MOD_ZLIB,python2-mod-zlib,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_ZLIB},${PKGFD_MOD_ZLIB},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_BZ2,python2-mod-bz2,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_BZ2},${PKGFD_MOD_BZ2},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_EXPAT,python2-mod-expat,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_EXPAT},${PKGFD_MOD_EXPAT},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_SQLITE,python2-mod-sqlite,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_SQLITE},${PKGFD_MOD_SQLITE},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_GDBM,python2-mod-gdbm,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_GDBM},${PKGFD_MOD_GDBM},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_NCURSES,python2-mod-ncurses,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_NCURSES},${PKGFD_MOD_NCURSES},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_SSL,python2-mod-ssl,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_SSL},${PKGFD_MOD_SSL},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON2_MOD_READLINE,python2-mod-readline,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_READLINE},${PKGFD_MOD_READLINE},${PKG_SECTION}))
-
-$(eval $(call PKG_mod_template,PYTHON2_MOD_ZLIB,zlib))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_BZ2,bz2))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_EXPAT,pyexpat))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_SQLITE,_sqlite))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_GDBM,gdbm))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_NCURSES,_curses))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_SSL,_ssl))
-$(eval $(call PKG_mod_template,PYTHON2_MOD_READLINE,readline))
-
-ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
-CONFIGURE_ARGS+= --disable-shared
-endif
-
-HOST_CFLAGS+= -fPIC
-
-AUTOTOOL_STYLE:= autoreconf
-CONFIGURE_ENV+= ac_cv_have_long_long_format=yes \
- ac_cv_file__dev_ptmx=yes \
- ac_cv_file__dev_ptc=no
-CONFIGURE_ARGS+= --with-threads \
- --disable-toolbox-glue \
- --disable-ipv6 \
- --with-system-ffi \
- --without-cxx-main
-
-HOST_CONFIGURE_ENV+= MACOSX_DEPLOYMENT_TARGET=10.9
-HOST_CONFIGURE_ARGS+= --with-threads \
- --with-system-ffi \
- --disable-ipv6 \
- --disable-toolbox-glue \
- --without-cxx-main
-
-hostpre-configure:
- $(CP) $(ADK_TOPDIR)/package/python2/files/patch-Lib_distutils_sysconfig_py $(WRKBUILD)
- $(SED) "s#@@STAGING_TARGET_DIR@@#$(STAGING_TARGET_DIR)#" $(WRKBUILD)/patch-Lib_distutils_sysconfig_py
- $(SED) "s#@@STAGING_HOST_DIR@@#$(STAGING_HOST_DIR)#" $(WRKBUILD)/patch-Lib_distutils_sysconfig_py
- (cd $(WRKBUILD) && ${PATCHP0} < patch-Lib_distutils_sysconfig_py)
- $(SED) "s#@EXENAME@#$(STAGING_HOST_DIR)/usr/bin/python#" \
- $(WRKBUILD)/Misc/python-config.in
-
-hostpost-install:
- $(CP) $(ADK_TOPDIR)/package/python2/files/python-config.patch $(WRKBUILD)/
- $(SED) "s#@@STAGING_TARGET_DIR@@#$(STAGING_TARGET_DIR)#" $(WRKBUILD)/python-config.patch
- $(SED) "s#@@STAGING_HOST_DIR@@#$(STAGING_HOST_DIR)#" $(WRKBUILD)/python-config.patch
- (cd $(STAGING_HOST_DIR)/usr/bin && \
- ${PATCHP0} < $(WRKBUILD)/python-config.patch)
-
-pre-configure:
- $(CP) $(ADK_TOPDIR)/package/python2/files/patch-Lib_distutils_sysconfig_py $(WRKBUILD)
- $(SED) "s#@@STAGING_TARGET_DIR@@#$(STAGING_TARGET_DIR)#" $(WRKBUILD)/patch-Lib_distutils_sysconfig_py
- $(SED) "s#@@STAGING_HOST_DIR@@#$(STAGING_HOST_DIR)#" $(WRKBUILD)/patch-Lib_distutils_sysconfig_py
- (cd $(WRKBUILD) && ${PATCHP0} <$(WRKBUILD)/patch-Lib_distutils_sysconfig_py)
- $(SED) "s#@EXENAME@#$(STAGING_HOST_DIR)/usr/bin/python#" \
- $(WRKBUILD)/Misc/python-config.in
-
-ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
-python2-install:
-else
-python2-install: ${INSTALL_MODS_y} ${INSTALL_MODS_m}
-endif
- ${INSTALL_DIR} ${IDIR_PYTHON2}/usr/bin ${IDIR_PYTHON2}/usr/lib
- ${INSTALL_DIR} ${IDIR_PYTHON2}/usr/include/python2.7
- ${INSTALL_BIN} ${WRKINST}/usr/bin/python ${IDIR_PYTHON2}/usr/bin
- ${INSTALL_DIR} ${IDIR_PYTHON2}/usr/lib/python2.7
- ${CP} ${WRKINST}/usr/lib/libpython*.* ${IDIR_PYTHON2}/usr/lib
- ${CP} ${WRKINST}/usr/lib/python2.7/* ${IDIR_PYTHON2}/usr/lib/python2.7
- ${CP} ${WRKINST}/usr/include/python2.7/pyconfig.h \
- ${IDIR_PYTHON2}/usr/include/python2.7
- @-for i in zlib bz2 _curses _ssl gdbm _sqlite pyexpat readline; do \
- rm ${IDIR_PYTHON2}/usr/lib/python2.7/lib-dynload/$${i}*so 2>/dev/null; \
- done
-
-include ${ADK_TOPDIR}/mk/host-bottom.mk
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/python2/files/patch-Lib_distutils_sysconfig_py b/package/python2/files/patch-Lib_distutils_sysconfig_py
deleted file mode 100644
index cbd51020d..000000000
--- a/package/python2/files/patch-Lib_distutils_sysconfig_py
+++ /dev/null
@@ -1,10 +0,0 @@
---- Lib.orig/distutils/sysconfig.py 2013-05-12 05:32:42.000000000 +0200
-+++ Lib/distutils/sysconfig.py 2013-11-03 18:03:53.000000000 +0100
-@@ -76,6 +76,7 @@ def get_python_inc(plat_specific=0, pref
- """
- if prefix is None:
- prefix = plat_specific and EXEC_PREFIX or PREFIX
-+ prefix = re.sub('@@STAGING_HOST_DIR@@', '@@STAGING_TARGET_DIR@@', prefix)
-
- if os.name == "posix":
- if python_build:
diff --git a/package/python2/files/python-config.patch b/package/python2/files/python-config.patch
deleted file mode 100644
index 0a6ff7145..000000000
--- a/package/python2/files/python-config.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- python2.7-config.orig 2013-12-11 12:40:37.244519764 +0100
-+++ python2.7-config 2013-12-11 12:41:43.279093075 +0100
-@@ -3,6 +3,7 @@
- import sys
- import os
- import getopt
-+import re
- from distutils import sysconfig
-
- valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
-@@ -37,8 +38,8 @@
- print sysconfig.EXEC_PREFIX
-
- elif opt in ('--includes', '--cflags'):
-- flags = ['-I' + sysconfig.get_python_inc(),
-- '-I' + sysconfig.get_python_inc(plat_specific=True)]
-+ flags = ['-I' + re.sub('@@STAGING_TARGET_DIR@@', '@@STAGING_HOST_DIR@@', sysconfig.get_python_inc()),
-+ '-I' + re.sub('@@STAGING_TARGET_DIR@@', '@@STAGING_HOST_DIR@@', sysconfig.get_python_inc(plat_specific=True))]
- if opt == '--cflags':
- flags.extend(getvar('CFLAGS').split())
- print ' '.join(flags)
diff --git a/package/python2/patches/0001-2.7-bpo-33127-Compatibility-patch-for-LibreSSL-2.7.0.patch b/package/python2/patches/0001-2.7-bpo-33127-Compatibility-patch-for-LibreSSL-2.7.0.patch
deleted file mode 100644
index e5759db40..000000000
--- a/package/python2/patches/0001-2.7-bpo-33127-Compatibility-patch-for-LibreSSL-2.7.0.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From edd541897b9c28ee0d0f0131746aa5f19665a104 Mon Sep 17 00:00:00 2001
-From: Christian Heimes <christian@python.org>
-Date: Sat, 24 Mar 2018 19:34:15 +0100
-Subject: [PATCH] [2.7] bpo-33127: Compatibility patch for LibreSSL 2.7.0
- (GH-6210) (GH-6215)
-
-LibreSSL 2.7 introduced OpenSSL 1.1.0 API. The ssl module now detects
-LibreSSL 2.7 and only provides API shims for OpenSSL < 1.1.0 and
-LibreSSL < 2.7.
-
-Documentation updates and fixes for failing tests will be provided in
-another patch set.
-
-Signed-off-by: Christian Heimes <christian@python.org>.
-(cherry picked from commit 4ca0739c9d97ac7cd45499e0d31be68dc659d0e1)
-
-Co-authored-by: Christian Heimes <christian@python.org>
----
- .../2018-03-24-15-08-24.bpo-33127.olJmHv.rst | 1 +
- Modules/_ssl.c | 24 ++++++++++++++--------
- Tools/ssl/multissltests.py | 3 ++-
- 3 files changed, 19 insertions(+), 9 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst
-
-diff --git a/Modules/_ssl.c b/Modules/_ssl.c
-index da8b20f54f..d0ce913d3d 100644
---- a/Modules/_ssl.c
-+++ b/Modules/_ssl.c
-@@ -102,6 +102,12 @@ struct py_ssl_library_code {
-
- #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
- # define OPENSSL_VERSION_1_1 1
-+# define PY_OPENSSL_1_1_API 1
-+#endif
-+
-+/* LibreSSL 2.7.0 provides necessary OpenSSL 1.1.0 APIs */
-+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL
-+# define PY_OPENSSL_1_1_API 1
- #endif
-
- /* Openssl comes with TLSv1.1 and TLSv1.2 between 1.0.0h and 1.0.1
-@@ -149,16 +155,18 @@ struct py_ssl_library_code {
- #define INVALID_SOCKET (-1)
- #endif
-
--#ifdef OPENSSL_VERSION_1_1
--/* OpenSSL 1.1.0+ */
--#ifndef OPENSSL_NO_SSL2
--#define OPENSSL_NO_SSL2
--#endif
--#else /* OpenSSL < 1.1.0 */
--#if defined(WITH_THREAD)
-+/* OpenSSL 1.0.2 and LibreSSL needs extra code for locking */
-+#if !defined(OPENSSL_VERSION_1_1) && defined(WITH_THREAD)
- #define HAVE_OPENSSL_CRYPTO_LOCK
- #endif
-
-+#if defined(OPENSSL_VERSION_1_1) && !defined(OPENSSL_NO_SSL2)
-+#define OPENSSL_NO_SSL2
-+#endif
-+
-+#ifndef PY_OPENSSL_1_1_API
-+/* OpenSSL 1.1 API shims for OpenSSL < 1.1.0 and LibreSSL < 2.7.0 */
-+
- #define TLS_method SSLv23_method
-
- static int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne)
-@@ -201,7 +209,7 @@ static X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *store)
- {
- return store->param;
- }
--#endif /* OpenSSL < 1.1.0 or LibreSSL */
-+#endif /* OpenSSL < 1.1.0 or LibreSSL < 2.7.0 */
-
-
- enum py_ssl_error {
---
-2.16.1
-
diff --git a/package/python2/patches/patch-Makefile_pre_in b/package/python2/patches/patch-Makefile_pre_in
deleted file mode 100644
index bcb0e1f6b..000000000
--- a/package/python2/patches/patch-Makefile_pre_in
+++ /dev/null
@@ -1,40 +0,0 @@
---- Python-2.7.13.orig/Makefile.pre.in 2016-12-17 21:05:06.000000000 +0100
-+++ Python-2.7.13/Makefile.pre.in 2017-03-16 19:38:14.000000000 +0100
-@@ -545,7 +545,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.tx
- esac; \
- $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \
- _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
-- $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
-+ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py build
-
- # Build static library
- # avoid long command lines, same as LIBRARY_OBJS
-@@ -1120,28 +1120,6 @@ libinstall: build_all $(srcdir)/Lib/$(PL
- $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
- $(DESTDIR)$(LIBDEST)/distutils/tests ; \
- fi
-- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST) -f \
-- -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
-- $(DESTDIR)$(LIBDEST)
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
-- -d $(LIBDEST)/site-packages -f \
-- -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
-- -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
-- $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt
-
- # Create the PLATDIR source directory, if one wasn't distributed..
- $(srcdir)/Lib/$(PLATDIR):
diff --git a/package/python2/patches/patch-configure_ac b/package/python2/patches/patch-configure_ac
deleted file mode 100644
index 1a09f6eed..000000000
--- a/package/python2/patches/patch-configure_ac
+++ /dev/null
@@ -1,22 +0,0 @@
---- Python-2.7.13.orig/configure.ac 2016-12-17 21:05:07.000000000 +0100
-+++ Python-2.7.13/configure.ac 2017-03-16 19:29:41.000000000 +0100
-@@ -22,7 +22,7 @@ rm -f pybuilddir.txt
- if test "$cross_compiling" = yes; then
- AC_MSG_CHECKING([for python interpreter for cross build])
- if test -z "$PYTHON_FOR_BUILD"; then
-- for interp in python$PACKAGE_VERSION python2 python; do
-+ for interp in python; do
- which $interp >/dev/null 2>&1 || continue
- if $interp -c 'import sys;sys.exit(not (sys.version_info@<:@:2@:>@ >= (2,7) and sys.version_info@<:@0@:>@ < 3))'; then
- break
-@@ -1079,9 +1079,7 @@ then
- if test "$Py_DEBUG" = 'true' ; then
- # Optimization messes up debuggers, so turn it off for
- # debug builds.
-- OPT="-g -O0 -Wall $STRICT_PROTO"
-- else
-- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO"
-+ OPT="$STRICT_PROTO"
- fi
- ;;
- *)
diff --git a/package/python2/patches/patch-setup_py b/package/python2/patches/patch-setup_py
deleted file mode 100644
index bf8e90c9d..000000000
--- a/package/python2/patches/patch-setup_py
+++ /dev/null
@@ -1,115 +0,0 @@
---- Python-2.7.13.orig/setup.py 2016-12-17 21:05:07.000000000 +0100
-+++ Python-2.7.13/setup.py 2017-03-16 19:45:12.000000000 +0100
-@@ -74,7 +74,7 @@ def find_file(filename, std_dirs, paths)
- 'paths' is a list of additional locations to check; if the file is
- found in one of them, the resulting list will contain the directory.
- """
-- if host_platform == 'darwin':
-+ if host_platform == 'darwin' and not cross_compiling:
- # Honor the MacOSX SDK setting when one was specified.
- # An SDK is a directory with the same structure as a real
- # system, but with only header files and libraries.
-@@ -84,7 +84,7 @@ def find_file(filename, std_dirs, paths)
- for dir in std_dirs:
- f = os.path.join(dir, filename)
-
-- if host_platform == 'darwin' and is_macosx_sdk_path(dir):
-+ if host_platform == 'darwin' and is_macosx_sdk_path(dir) and not cross_compiling:
- f = os.path.join(sysroot, dir[1:], filename)
-
- if os.path.exists(f): return []
-@@ -93,7 +93,7 @@ def find_file(filename, std_dirs, paths)
- for dir in paths:
- f = os.path.join(dir, filename)
-
-- if host_platform == 'darwin' and is_macosx_sdk_path(dir):
-+ if host_platform == 'darwin' and is_macosx_sdk_path(dir) and not cross_compiling:
- f = os.path.join(sysroot, dir[1:], filename)
-
- if os.path.exists(f):
-@@ -107,7 +107,7 @@ def find_library_file(compiler, libname,
- if result is None:
- return None
-
-- if host_platform == 'darwin':
-+ if host_platform == 'darwin' and not cross_compiling:
- sysroot = macosx_sdk_root()
-
- # Check whether the found file is in one of the standard directories
-@@ -116,7 +116,7 @@ def find_library_file(compiler, libname,
- # Ensure path doesn't end with path separator
- p = p.rstrip(os.sep)
-
-- if host_platform == 'darwin' and is_macosx_sdk_path(p):
-+ if host_platform == 'darwin' and is_macosx_sdk_path(p) and not cross_compiling:
- # Note that, as of Xcode 7, Apple SDKs may contain textual stub
- # libraries with .tbd extensions rather than the normal .dylib
- # shared libraries installed in /. The Apple compiler tool
-@@ -145,7 +145,7 @@ def find_library_file(compiler, libname,
- # Ensure path doesn't end with path separator
- p = p.rstrip(os.sep)
-
-- if host_platform == 'darwin' and is_macosx_sdk_path(p):
-+ if host_platform == 'darwin' and is_macosx_sdk_path(p) and not cross_compiling:
- if os.path.join(sysroot, p[1:]) == dirname:
- return [ p ]
-
-@@ -178,6 +178,7 @@ class PyBuildExt(build_ext):
-
- def build_extensions(self):
-
-+ self.compiler.library_dirs = []
- # Detect which modules should be compiled
- missing = self.detect_modules()
-
-@@ -299,6 +300,7 @@ class PyBuildExt(build_ext):
-
- def build_extension(self, ext):
-
-+
- if ext.name == '_ctypes':
- if not self.configure_ctypes(ext):
- return
-@@ -460,7 +462,8 @@ class PyBuildExt(build_ext):
- add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- if cross_compiling:
- self.add_gcc_paths()
-- self.add_multiarch_paths()
-+ if not cross_compiling:
-+ self.add_multiarch_paths()
-
- # Add paths specified in the environment variables LDFLAGS and
- # CPPFLAGS for header and library files.
-@@ -497,7 +500,8 @@ class PyBuildExt(build_ext):
- add_dir_to_list(dir_list, directory)
-
- if os.path.normpath(sys.prefix) != '/usr' \
-- and not sysconfig.get_config_var('PYTHONFRAMEWORK'):
-+ and not sysconfig.get_config_var('PYTHONFRAMEWORK') \
-+ and not cross_compiling:
- # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework
- # (PYTHONFRAMEWORK is set) to avoid # linking problems when
- # building a framework with different architectures than
-@@ -515,8 +519,13 @@ class PyBuildExt(build_ext):
- # lib_dirs and inc_dirs are used to search for files;
- # if a file is found in one of those directories, it can
- # be assumed that no additional -I,-L directives are needed.
-+ if cross_compiling:
-+ add_dir_to_list(self.compiler.library_dirs,
-+ sysconfig.get_config_var('srcdir'))
-+
- inc_dirs = self.compiler.include_dirs[:]
- lib_dirs = self.compiler.library_dirs[:]
-+
- if not cross_compiling:
- for d in (
- '/usr/include',
-@@ -550,7 +559,7 @@ class PyBuildExt(build_ext):
- if host_platform == 'hp-ux11':
- lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32']
-
-- if host_platform == 'darwin':
-+ if host_platform == 'darwin' and not cross_compiling:
- # This should work on any unixy platform ;-)
- # If the user has bothered specifying additional -I and -L flags
- # in OPT and LDFLAGS we might as well use them here.
diff --git a/package/python3/Makefile b/package/python3/Makefile
index 7c50448ad..060ca4003 100644
--- a/package/python3/Makefile
+++ b/package/python3/Makefile
@@ -4,24 +4,20 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= python3
-PKG_VERSION:= 3.9.7
+PKG_VERSION:= 3.11.8
PKG_RELEASE:= 1
-PKG_HASH:= f8145616e68c00041d1a6399b76387390388f8359581abc24432bb969b5e3c57
-PKG_DESCR:= python3 scripting language
+PKG_HASH:= 9e06008c8901924395bc1da303eac567a729ae012baa182ab39269f650383bb3
+PKG_DESCR:= python scripting language
PKG_SECTION:= dev/lang
-PKG_DEPENDS:= libffi zlib
-PKG_BUILDDEP:= python3-host libffi zlib
-HOST_BUILDDEP:= libffi-host libressl-host zlib-host
+PKG_DEPENDS:= libffi zlib libexpat
+PKG_BUILDDEP:= python3-host libffi zlib expat
+HOST_BUILDDEP:= libffi-host libressl-host zlib-host bzip2-host ncurses-host sqlite-host
PKG_NEEDS:= threads
PKG_URL:= http://www.python.org/
PKG_SITES:= http://legacy.python.org/ftp/python/${PKG_VERSION}/
-PKG_HOST_DEPENDS:= !netbsd !openbsd !cygwin
-
-PKG_FLAVOURS_PYTHON3:= MOD_ZLIB MOD_BZ2 MOD_EXPAT MOD_SQLITE MOD_GDBM
-PKG_FLAVOURS_PYTHON3+= MOD_NCURSES MOD_SSL
-# disabled
-#MOD_READLINE
+PKG_FLAVOURS_PYTHON3:= MOD_ZLIB MOD_BZ2 MOD_SQLITE MOD_GDBM
+PKG_FLAVOURS_PYTHON3+= MOD_NCURSES MOD_SSL MOD_READLINE
PKGFD_MOD_ZLIB:= zlib support
PKGFB_MOD_ZLIB:= zlib
@@ -29,9 +25,6 @@ PKGFS_MOD_ZLIB:= zlib
PKGFD_MOD_BZ2:= bzip2 support
PKGFB_MOD_BZ2:= bzip2
PKGFS_MOD_BZ2:= libbz2
-PKGFD_MOD_EXPAT:= xml support
-PKGFB_MOD_EXPAT:= expat
-PKGFS_MOD_EXPAT:= libexpat
PKGFD_MOD_SQLITE:= sqlite support
PKGFB_MOD_SQLITE:= sqlite
PKGFS_MOD_SQLITE:= libsqlite
@@ -59,9 +52,9 @@ define PKG_mod_template
INSTALL_MODS_$${ADK_PACKAGE_${1}}+= ${2}-install
${2}-install:
- ${INSTALL_DIR} $$(IDIR_$(1))/usr/lib/python3.9/lib-dynload
+ ${INSTALL_DIR} $$(IDIR_$(1))/usr/lib/python3.11/lib-dynload
for m in ${2}; do \
- ${INSTALL_DATA} $(WRKINST)/usr/lib/python3.9/lib-dynload/$$$${m}*.so $$(IDIR_$(1))/usr/lib/python3.9/lib-dynload ;\
+ ${INSTALL_DATA} $(WRKINST)/usr/lib/python3.11/lib-dynload/$$$${m}*.so $$(IDIR_$(1))/usr/lib/python3.11/lib-dynload ;\
done
endef
@@ -71,48 +64,48 @@ $(eval $(call PKG_template,PYTHON3,python3,${PKG_VERSION}-${PKG_RELEASE},${PKG_D
$(eval $(call PKG_template,PYTHON3_MOD_ZLIB,python3-mod-zlib,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_ZLIB},${PKGFD_MOD_ZLIB},${PKG_SECTION}))
$(eval $(call PKG_template,PYTHON3_MOD_BZ2,python3-mod-bz2,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_BZ2},${PKGFD_MOD_BZ2},${PKG_SECTION}))
-$(eval $(call PKG_template,PYTHON3_MOD_EXPAT,python3-mod-expat,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_EXPAT},${PKGFD_MOD_EXPAT},${PKG_SECTION}))
$(eval $(call PKG_template,PYTHON3_MOD_SQLITE,python3-mod-sqlite,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_SQLITE},${PKGFD_MOD_SQLITE},${PKG_SECTION}))
$(eval $(call PKG_template,PYTHON3_MOD_GDBM,python3-mod-gdbm,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_GDBM},${PKGFD_MOD_GDBM},${PKG_SECTION}))
$(eval $(call PKG_template,PYTHON3_MOD_NCURSES,python3-mod-ncurses,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_NCURSES},${PKGFD_MOD_NCURSES},${PKG_SECTION}))
$(eval $(call PKG_template,PYTHON3_MOD_SSL,python3-mod-ssl,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_SSL},${PKGFD_MOD_SSL},${PKG_SECTION}))
-#$(eval $(call PKG_template,PYTHON3_MOD_READLINE,python3-mod-readline,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_READLINE},${PKGFD_MOD_READLINE},${PKG_SECTION}))
+$(eval $(call PKG_template,PYTHON3_MOD_READLINE,python3-mod-readline,$(PKG_VERSION)-${PKG_RELEASE},${PKGFS_MOD_READLINE},${PKGFD_MOD_READLINE},${PKG_SECTION}))
$(eval $(call PKG_mod_template,PYTHON3_MOD_ZLIB,zlib))
$(eval $(call PKG_mod_template,PYTHON3_MOD_BZ2,_bz2))
-$(eval $(call PKG_mod_template,PYTHON3_MOD_EXPAT,pyexpat))
$(eval $(call PKG_mod_template,PYTHON3_MOD_SQLITE,_sqlite))
$(eval $(call PKG_mod_template,PYTHON3_MOD_GDBM,_gdbm))
$(eval $(call PKG_mod_template,PYTHON3_MOD_NCURSES,_curses))
$(eval $(call PKG_mod_template,PYTHON3_MOD_SSL,_ssl))
-#$(eval $(call PKG_mod_template,PYTHON3_MOD_READLINE,readline))
+$(eval $(call PKG_mod_template,PYTHON3_MOD_READLINE,readline))
MAKE_ENV+= HOSTPGEN=$(STAGING_HOST_DIR)/usr/bin/pgen3
FAKE_FLAGS+= ENSUREPIP=no
-CONFIGURE_ARGS:= --with-threads \
- --with-system-ffi \
- --with-system-expat \
+CONFIGURE_ARGS:= --with-system-expat \
--disable-ipv6 \
- --without-cxx-main
+ --with-build-python
CONFIGURE_ENV+= ac_cv_have_long_long_format=yes \
ac_cv_file__dev_ptmx=yes \
- ac_cv_file__dev_ptc=no
+ ac_cv_file__dev_ptc=no \
+ ac_cv_header_libintl_h=no
-HOST_CONFIGURE_ARGS+= --without-cxx-main \
- --with-threads
+ifeq ($(ADK_TARGET_BIG_ENDIAN),y)
+CONFIGURE_ENV+= ax_cv_c_float_words_bigendian=yes
+else
+CONFIGURE_ENV+= ax_cv_c_float_words_bigendian=no
+endif
python3-install: ${INSTALL_MODS_y} ${INSTALL_MODS_m}
${INSTALL_DIR} ${IDIR_PYTHON3}/usr/bin ${IDIR_PYTHON3}/usr/lib
- ${INSTALL_DIR} ${IDIR_PYTHON3}/usr/lib/python3.9
- ${INSTALL_DIR} ${IDIR_PYTHON3}/usr/include/python3.9
+ ${INSTALL_DIR} ${IDIR_PYTHON3}/usr/lib/python3.11
+ ${INSTALL_DIR} ${IDIR_PYTHON3}/usr/include/python3.11
${INSTALL_BIN} ${WRKINST}/usr/bin/python3 ${IDIR_PYTHON3}/usr/bin
${CP} ${WRKINST}/usr/lib/libpython*.so* ${IDIR_PYTHON3}/usr/lib
- ${CP} ${WRKINST}/usr/lib/python3.9/* ${IDIR_PYTHON3}/usr/lib/python3.9
- ${CP} ${WRKINST}/usr/include/python3.9/pyconfig.h \
- ${IDIR_PYTHON3}/usr/include/python3.9
+ ${CP} ${WRKINST}/usr/lib/python3.11/* ${IDIR_PYTHON3}/usr/lib/python3.11
+ ${CP} ${WRKINST}/usr/include/python3.11/pyconfig.h \
+ ${IDIR_PYTHON3}/usr/include/python3.11
@-for i in zlib _bz2 _curses _ssl _gdbm _sqlite pyexpat readline; do \
- rm ${IDIR_PYTHON3}/usr/lib/python3.8/lib-dynload/$${i}*so; \
+ rm ${IDIR_PYTHON3}/usr/lib/python3.11/lib-dynload/$${i}*so; \
done
include ${ADK_TOPDIR}/mk/host-bottom.mk
diff --git a/package/python3/patches/patch-setup_py b/package/python3/patches/patch-setup_py
deleted file mode 100644
index 90acd7eea..000000000
--- a/package/python3/patches/patch-setup_py
+++ /dev/null
@@ -1,11 +0,0 @@
---- Python-3.8.2.orig/setup.py 2020-02-24 22:36:25.000000000 +0100
-+++ Python-3.8.2/setup.py 2020-04-15 22:28:11.208150620 +0200
-@@ -654,7 +654,7 @@ class PyBuildExt(build_ext):
- # only change this for cross builds for 3.3, issues on Mageia
- if CROSS_COMPILING:
- self.add_cross_compiling_paths()
-- self.add_multiarch_paths()
-+# self.add_multiarch_paths()
- self.add_ldflags_cppflags()
-
- def init_inc_lib_dirs(self):
diff --git a/package/quagga/Makefile b/package/quagga/Makefile
index 95cf6e288..e5628ff13 100644
--- a/package/quagga/Makefile
+++ b/package/quagga/Makefile
@@ -4,16 +4,16 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= quagga
-PKG_VERSION:= 1.2.0
+PKG_VERSION:= 1.2.4
PKG_RELEASE:= 1
-PKG_HASH:= 1043644d37975d9f920b76c593368cbe36ca43e27eb57cff316ee80ccb31dce3
+PKG_HASH:= e364c082c3309910e1eb7b068bf39ee298e2f2f3f31a6431a5c115193bd653d3
PKG_DESCR:= routing software package
PKG_SECTION:= net/route
PKG_BUILDDEP:= readline ncurses c-ares
PKG_DEPENDS:= c-ares
PKG_NEEDS:= threads
PKG_URL:= http://www.quagga.net/
-PKG_SITES:= http://download.savannah.gnu.org/releases/quagga/
+PKG_SITES:= https://github.com/Quagga/quagga/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
@@ -44,6 +44,7 @@ $(eval $(call PKG_template,QUAGGA_RIPNGD,quagga-ripngd,$(PKG_VERSION)-$(PKG_RELE
$(eval $(call PKG_template,QUAGGA_RIPD,quagga-ripd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_QUAGGA_RIPD),$(PKG_SECTION)))
$(eval $(call PKG_template,QUAGGA_VTYSH,quagga-vtysh,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKGSD_QUAGGA_VTYSH),$(PKG_SECTION)))
+TARGET_CFLAGS+= -fcommon
CONFIGURE_ENV+= quagga_cv_ipforward_method="proc"
CONFIGURE_ARGS+= --localstatedir=/var/run/quagga \
--sysconfdir=/etc/quagga \
diff --git a/package/rdesktop/Makefile b/package/rdesktop/Makefile
index 98ccc84ca..2cd7636bc 100644
--- a/package/rdesktop/Makefile
+++ b/package/rdesktop/Makefile
@@ -4,25 +4,25 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= rdesktop
-PKG_VERSION:= 1.8.1
+PKG_VERSION:= 1.9.0
PKG_RELEASE:= 1
-PKG_HASH:= 76cc834b89c34d8332f3cb3889483b2ae4d4e8118eeb45a8967c77dd18228246
+PKG_HASH:= d547c2e6f3e4c818a7e69a0f39adb39fac303633e0c25aa804bb588507ffc230
PKG_DESCR:= client for windows terminal services
PKG_SECTION:= x11/apps
-PKG_DEPENDS:= libsamplerate alsa-lib libao libressl
-PKG_BUILDDEP:= libsamplerate alsa-lib libao libressl
+PKG_DEPENDS:= libsamplerate alsa-lib libao libgnutls
+PKG_BUILDDEP:= libsamplerate alsa-lib libao gnutls
PKG_URL:= http://www.rdesktop.org/
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=rdesktop/}
+PKG_SITES:= https://github.com/rdesktop/rdesktop/archive/refs/tags/
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+DISTFILES:= v${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,RDESKTOP,rdesktop,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
TARGET_CFLAGS+= -D_GNU_SOURCE -D_POSIX_SOURCE
-CONFIGURE_ARGS+= --with-openssl="${STAGING_TARGET_DIR}/usr" \
- --disable-smartcard \
+AUTOTOOL_STYLE:= bootstrap
+CONFIGURE_ARGS+= --disable-smartcard \
--disable-credssp
rdesktop-install:
diff --git a/package/rpcbind/Makefile b/package/rpcbind/Makefile
index ec4604c58..b0c175a04 100644
--- a/package/rpcbind/Makefile
+++ b/package/rpcbind/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= rpcbind
-PKG_VERSION:= 0.2.4
-PKG_RELEASE:= 2
-PKG_HASH:= 074a9a530dc7c11e0d905aa59bcb0847c009313f02e98d3d798aa9568f414c66
+PKG_VERSION:= 1.2.6
+PKG_RELEASE:= 1
+PKG_HASH:= 5613746489cae5ae23a443bb85c05a11741a5f12c8f55d2bb5e83b9defeee8de
PKG_DESCR:= converts rpc program numbers into universal addresses
PKG_SECTION:= net/misc
PKG_DEPENDS:= libtirpc
@@ -27,8 +27,9 @@ CONFIGURE_ARGS+= --disable-libwrap \
rpcbind-install:
$(INSTALL_DIR) $(IDIR_RPCBIND)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/rpcbind \
- $(IDIR_RPCBIND)/usr/bin
+ $(INSTALL_DIR) $(IDIR_RPCBIND)/usr/sbin
+ $(INSTALL_BIN) $(WRKINST)/usr/sbin/rpcbind \
+ $(IDIR_RPCBIND)/usr/sbin
$(INSTALL_BIN) $(WRKINST)/usr/bin/rpcinfo \
$(IDIR_RPCBIND)/usr/bin
diff --git a/package/rpcbind/files/rpcbind.init b/package/rpcbind/files/rpcbind.init
index 42c527c90..efc957fd3 100644
--- a/package/rpcbind/files/rpcbind.init
+++ b/package/rpcbind/files/rpcbind.init
@@ -11,10 +11,10 @@ autostart)
exec sh $0 start
;;
start)
- /usr/bin/rpcbind
+ /usr/sbin/rpcbind
;;
stop)
- kill $(pgrep -f /usr/bin/rpcbind)
+ kill $(pgrep -f /usr/sbin/rpcbind)
;;
restart)
sh $0 stop
diff --git a/package/rpcbind/patches/patch-src_security_c b/package/rpcbind/patches/patch-src_security_c
deleted file mode 100644
index c183919c9..000000000
--- a/package/rpcbind/patches/patch-src_security_c
+++ /dev/null
@@ -1,50 +0,0 @@
---- rpcbind-0.2.4.orig/src/security.c 2016-11-28 21:47:28.000000000 +0100
-+++ rpcbind-0.2.4/src/security.c 2016-12-31 16:11:48.723119783 +0100
-@@ -22,14 +22,6 @@
- /*
- * XXX for special case checks in check_callit.
- */
--#ifdef HAVE_RPCSVC_MOUNT_H
--#include <rpcsvc/mount.h>
--#include <rpcsvc/rquota.h>
--#include <rpcsvc/nfs_prot.h>
--#include <rpcsvc/yp.h>
--#include <rpcsvc/ypclnt.h>
--#include <rpcsvc/yppasswd.h>
--#else
- # define MOUNTPROC_MNT 1
- # define MOUNTPROC_UMNT 3
- # define NFS_PROGRAM 100003
-@@ -44,7 +36,6 @@
- # define YPPROC_FIRST 4
- # define YPPROC_NEXT 5
- # define YPPROC_ALL 8
--#endif
-
- #include "rpcbind.h"
-
-@@ -327,24 +318,9 @@ check_callit(SVCXPRT *xprt, struct r_rmt
- args->rmt_proc != MOUNTPROC_UMNT)
- break;
- goto deny;
-- case YPBINDPROG:
-- if (args->rmt_proc != YPBINDPROC_SETDOM)
-- break;
-- /* FALLTHROUGH */
-- case YPPASSWDPROG:
- case NFS_PROGRAM:
- case RQUOTAPROG:
- goto deny;
-- case YPPROG:
-- switch (args->rmt_proc) {
-- case YPPROC_ALL:
-- case YPPROC_MATCH:
-- case YPPROC_FIRST:
-- case YPPROC_NEXT:
-- goto deny;
-- default:
-- break;
-- }
- default:
- break;
- }
diff --git a/package/rrdtool/Makefile b/package/rrdtool/Makefile
index 7bf566a0d..bc46647f4 100644
--- a/package/rrdtool/Makefile
+++ b/package/rrdtool/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= rrdtool
-PKG_VERSION:= 1.6.0
+PKG_VERSION:= 1.8.0
PKG_RELEASE:= 1
-PKG_HASH:= cd948e89cd2d8825fab4a6fb0323f810948d934af7d92c9ee8b5e9e1350e52d7
+PKG_HASH:= bd37614137d7a8dc523359648eb2a81631a34fd91a82ed5581916a52c08433f4
PKG_DESCR:= round robin database management library
PKG_SECTION:= libs/misc
PKG_DEPENDS:= libart libfreetype libpng zlib
@@ -14,7 +14,7 @@ PKG_DEPENDS+= glib cairo pango
PKG_BUILDDEP:= libxml2 cgilib freetype libart libpng
PKG_BUILDDEP+= glib cairo pango
PKG_URL:= http://oss.oetiker.ch/
-PKG_SITES:= http://oss.oetiker.ch/rrdtool/pub/
+PKG_SITES:= https://github.com/oetiker/rrdtool-1.x/releases/download/v$(PKG_VERSION)/
PKG_LIBNAME:= librrd
PKG_OPTS:= dev
@@ -41,7 +41,9 @@ CONFIGURE_ARGS+= --enable-rrdcgi \
--disable-ruby \
--disable-tcl \
--disable-python \
- --disable-libwrap
+ --disable-libwrap \
+ --disable-docs \
+ --disable-examples
TARGET_CPPFLAGS+= -I${STAGING_TARGET_DIR}/usr/include/freetype2
TARGET_LDFLAGS+= -lglib-2.0 -lm
diff --git a/package/rsync/Makefile b/package/rsync/Makefile
index 52e9b6f2c..9971074f3 100644
--- a/package/rsync/Makefile
+++ b/package/rsync/Makefile
@@ -4,12 +4,12 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= rsync
-PKG_VERSION:= 3.2.3
+PKG_VERSION:= 3.2.7
PKG_RELEASE:= 1
-PKG_HASH:= becc3c504ceea499f4167a260040ccf4d9f2ef9499ad5683c179a697146ce50e
+PKG_HASH:= 4e7d9d3f6ed10878c58c5fb724a67dacf4b6aac7340b13e488fb2dc41346f2bb
PKG_DESCR:= utility that provides fast incremental file transfer
PKG_SECTION:= net/misc
-PKG_DEPENDS:= libpopt
+PKG_DEPENDS:= libpopt libressl
PKG_BUILDDEP:= popt libressl
HOST_BUILDDEP:= libressl-host
PKG_URL:= http://rsync.samba.org/
diff --git a/package/rtorrent/Makefile b/package/rtorrent/Makefile
index 8777baf87..56034a7f9 100644
--- a/package/rtorrent/Makefile
+++ b/package/rtorrent/Makefile
@@ -15,6 +15,8 @@ PKG_NEEDS:= c++
PKG_URL:= https://rakshasa.github.io/rtorrent/
PKG_SITES:= http://rtorrent.net/downloads/
+PKG_CFLINE_RTORRENT:= depends on ADK_BROKEN
+
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
include ${ADK_TOPDIR}/mk/package.mk
diff --git a/package/ruby/Makefile b/package/ruby/Makefile
index b5e7689ce..f0a55595b 100644
--- a/package/ruby/Makefile
+++ b/package/ruby/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= ruby
-PKG_VERSION:= 3.0.2
+PKG_VERSION:= 3.3.0
PKG_RELEASE:= 1
-PKG_HASH:= 570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40
+PKG_HASH:= 676b65a36e637e90f982b57b059189b3276b9045034dcd186a7e9078847b975b
PKG_DESCR:= scripting language
PKG_SECTION:= dev/lang
PKG_DEPENDS:= libressl zlib
@@ -14,7 +14,7 @@ PKG_BUILDDEP:= ruby-host libressl zlib
HOST_BUILDDEP:= libressl-host
PKG_NEEDS:= threads
PKG_URL:= http://www.ruby-lang.org/
-PKG_SITES:= http://ftp.ruby-lang.org/pub/ruby/3.0/
+PKG_SITES:= http://ftp.ruby-lang.org/pub/ruby/3.3/
include ${ADK_TOPDIR}/mk/host.mk
include ${ADK_TOPDIR}/mk/package.mk
@@ -22,10 +22,12 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call HOST_template,RUBY,ruby,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,RUBY,ruby,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
# uClibc setpgrp does not take arguments
CONFIGURE_ENV+= ac_cv_func_setpgrp_void=yes \
stack_protector=no \
+ ac_cv_func_finite=yes \
+ ac_cv_func_isinf=yes \
+ ac_cv_func_isnan=yes \
rb_cv_binary_elf=yes
CONFIGURE_ARGS+= --disable-install-doc \
--with-out-ext=fiddle \
@@ -37,8 +39,9 @@ ALL_TARGET:= main
INSTALL_TARGET:= install-nodoc
HOST_CONFIGURE_ARGS+= --disable-install-doc \
+ --disable-yjit \
--disable-shared \
- --with-out-ext=curses,readline \
+ --with-out-ext=curses,readline,openssl \
--disable-rubygems
HOST_ALL_TARGET:= main
HOST_INSTALL_TARGET:= install-nodoc
diff --git a/package/ruby/patches/0001-fix-default-coroutine-selection.patch b/package/ruby/patches/0001-fix-default-coroutine-selection.patch
deleted file mode 100644
index ea84aa9bc..000000000
--- a/package/ruby/patches/0001-fix-default-coroutine-selection.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-fixed default coroutine selection for musl/uclibc
-
-https://github.com/ruby/ruby/pull/3567/commits/b570e7de87aaad8c903176d835e8124127f627b3
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
-
-diff -Nur ruby-3.0.0.orig/configure.ac ruby-3.0.0/configure.ac
---- ruby-3.0.0.orig/configure.ac 2020-12-25 04:33:01.000000000 +0100
-+++ ruby-3.0.0/configure.ac 2021-02-22 13:00:53.990314464 +0100
-@@ -2441,7 +2441,10 @@
- rb_cv_coroutine=copy
- ],
- [
-- rb_cv_coroutine=ucontext
-+ AC_CHECK_FUNCS([getcontext swapcontext makecontext],
-+ [rb_cv_coroutine=ucontext],
-+ [rb_cv_coroutine=copy; break]
-+ )
- ]
- )
- AC_MSG_RESULT(${rb_cv_coroutine})
diff --git a/package/rxvt-unicode/Makefile b/package/rxvt-unicode/Makefile
index 04e3c0c25..8b977427d 100644
--- a/package/rxvt-unicode/Makefile
+++ b/package/rxvt-unicode/Makefile
@@ -4,13 +4,15 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= rxvt-unicode
-PKG_VERSION:= 9.21
+PKG_VERSION:= 9.30
PKG_RELEASE:= 1
-PKG_HASH:= 75270ed72bc5895a64a1d7392bf45a622204192371c3965bd3dd978dc088956b
+PKG_HASH:= fe1c93d12f385876457a989fc3ae05c0915d2692efc59289d0f70fabe5b44d2d
PKG_DESCR:= terminal emulator with unicode support
PKG_SECTION:= x11/apps
-PKG_DEPENDS:= libx11 fontconfig libxft libxml2 gdk-pixbuf
-PKG_BUILDDEP:= libX11 fontconfig libXft libxml2 gdk-pixbuf
+PKG_DEPENDS:= libx11 fontconfig libxft libxml2 gdk-pixbuf libptytty
+PKG_DEPENDS+= libffi libmount
+PKG_BUILDDEP:= libX11 fontconfig libXft libxml2 gdk-pixbuf libptytty
+PKG_BUILDDEP+= libffi util-linux
PKG_NEEDS:= c++
PKG_URL:= http://software.schmorp.de/pkg/rxvt-unicode.html
PKG_SITES:= http://dist.schmorp.de/rxvt-unicode/
@@ -22,9 +24,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,RXVT_UNICODE,rxvt-unicode,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
TARGET_LDFLAGS+= -lpthread
-CONFIGURE_ARGS+= --disable-perl \
- --disable-utmp \
- --disable-afterimage
+CONFIGURE_ARGS+= --disable-perl
rxvt-unicode-install:
$(INSTALL_DIR) $(IDIR_RXVT_UNICODE)/usr/bin
diff --git a/package/samba/Makefile b/package/samba/Makefile
index e21f06ed2..e47d34af3 100644
--- a/package/samba/Makefile
+++ b/package/samba/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= samba
-PKG_VERSION:= 4.13.2
+PKG_VERSION:= 4.19.4
PKG_RELEASE:= 1
-PKG_HASH:= 276464396a05d88b775bda01ac2eb1e5a636ccf7010b0fd28efc3d85583af2b4
+PKG_HASH:= 4026d93b866db198c8ca1685b0f5d52793f65c6e63cb364163af661fdff0968c
PKG_DESCR:= file and print server
PKG_SECTION:= net/fs
PKG_DEPENDS:= libuuid libpopt libgnutls libtirpc
PKG_DEPENDS+= libtalloc libkrb5
-PKG_BUILDDEP:= util-linux talloc p5-parse-yapp-host
+PKG_BUILDDEP:= util-linux talloc p5-parse-yapp-host gnutls krb5
PKG_NEEDS:= threads intl
PKG_URL:= http://www.samba.org/
PKG_SITES:= http://samba.org/samba/ftp/stable/
@@ -28,11 +28,12 @@ CONFIGURE_ARGS+= --enable-fhs \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
- --with-privatedir=/etc/samba \
+ --with-privatedir=/var/lib/samba \
--cross-compile \
--cross-answers=$(WRKSRC)/cache.txt \
--hostcc=gcc \
--with-system-mitkrb5 \
+ --without-libunwind \
--without-pie \
--without-gettext \
--without-relro \
diff --git a/package/samba/files/cache.txt b/package/samba/files/cache.txt
index f750653d9..9ab9fcd5b 100644
--- a/package/samba/files/cache.txt
+++ b/package/samba/files/cache.txt
@@ -37,7 +37,12 @@ Checking value of NSIG: "65"
Checking value of _NSIG: "65"
Checking value of SIGRTMAX: "64"
Checking value of SIGRTMIN: "34"
-Checking whether the WRFILE -keytab is supported: OK
-Checking errno of iconv for illegal multibyte sequence: OK
-Checking value of GNUTLS_CIPHER_AES_128_CFB8: "29"
-Checking value of GNUTLS_MAC_AES_CMAC_128: "203"
+Checking errno of iconv for illegal multibyte sequence: "0"
+checking for clnt_create(): OK
+Checking for a 64-bit host to support lmdb: NO
+Checking value of GNUTLS_CIPHER_AES_128_CFB8: 29
+Checking value of GNUTLS_MAC_AES_CMAC_128: 203
+Checking whether fcntl supports flags to send direct I/O availability signals: OK
+Checking for gnutls fips mode support: NO
+Checking for readlink breakage: NO
+Checking whether the WRFILE -keytab is supported: NO
diff --git a/package/samba/files/samba.init b/package/samba/files/samba.init
index 21b983530..8b9e7e375 100644
--- a/package/samba/files/samba.init
+++ b/package/samba/files/samba.init
@@ -11,12 +11,13 @@ autostart)
exec sh $0 start
;;
start)
- [ -d /var/lib/samba ] || mkdir -p /var/lib/samba
+ [ -d /var/lib/samba/msg.sock ] || mkdir -p /var/lib/samba/msg.sock
[ -d /var/run/samba ] || mkdir -p /var/run/samba
[ -d /var/log/samba ] || mkdir -p /var/log/samba
[ -d /var/cache/samba ] || mkdir -p /var/cache/samba
[ -d /var/lock/samba ] || mkdir -p /var/lock/samba
- /usr/sbin/nmbd -D
+ chmod 700 /var/lib/samba/msg.sock
+ /usr/sbin/nmbd -D
/usr/sbin/smbd -D
;;
stop)
diff --git a/package/samba/patches/patch-nsswitch_wins_c b/package/samba/patches/patch-nsswitch_wins_c
deleted file mode 100644
index 92aa624f5..000000000
--- a/package/samba/patches/patch-nsswitch_wins_c
+++ /dev/null
@@ -1,17 +0,0 @@
---- samba-4.6.6.orig/nsswitch/wins.c 2017-01-09 09:12:30.000000000 +0100
-+++ samba-4.6.6/nsswitch/wins.c 2017-08-02 22:28:16.616627669 +0200
-@@ -39,6 +39,14 @@ static pthread_mutex_t wins_nss_mutex =
- #define INADDRSZ 4
- #endif
-
-+#ifndef NETDB_INTERNAL
-+#define NETDB_INTERNAL -1
-+#endif
-+
-+#ifndef NETDB_SUCCESS
-+#define NETDB_SUCCESS 0
-+#endif
-+
- NSS_STATUS _nss_wins_gethostbyname_r(const char *hostname,
- struct hostent *he,
- char *buffer,
diff --git a/package/samba/patches/patch-source3_lib_util_c b/package/samba/patches/patch-source3_lib_util_c
deleted file mode 100644
index 5755bb837..000000000
--- a/package/samba/patches/patch-source3_lib_util_c
+++ /dev/null
@@ -1,18 +0,0 @@
---- samba-4.6.6.orig/source3/lib/util.c 2017-02-09 08:45:27.000000000 +0100
-+++ samba-4.6.6/source3/lib/util.c 2017-08-02 21:54:59.695281066 +0200
-@@ -565,6 +565,7 @@ char *get_mydnsdomname(TALLOC_CTX *ctx)
- }
- }
-
-+#if 0
- #if (defined(HAVE_NETGROUP) && defined(WITH_AUTOMOUNT))
- /******************************************************************
- Remove any mount options such as -rsize=2048,wsize=2048 etc.
-@@ -687,6 +688,7 @@ char *automount_lookup(TALLOC_CTX *ctx,
- }
- #endif /* WITH_NISPLUS_HOME */
- #endif
-+#endif
-
- bool process_exists(const struct server_id pid)
- {
diff --git a/package/sane-backends/Makefile b/package/sane-backends/Makefile
index fea9bd975..77d28add4 100644
--- a/package/sane-backends/Makefile
+++ b/package/sane-backends/Makefile
@@ -4,15 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= sane-backends
-PKG_VERSION:= 1.0.22
-PKG_RELEASE:= 3
-PKG_HASH:= 9f84a16800497f0b79a278531bb1a0f438de6ce8cf509fefc65a252e29f90c54
+PKG_VERSION:= 1.2.1
+PKG_RELEASE:= 1
+PKG_HASH:= f832395efcb90bb5ea8acd367a820c393dda7e0dd578b16f48928b8f5bdd0524
PKG_DESCR:= scanner access now easy
PKG_SECTION:= sys/misc
PKG_BUILDDEP:= libusb libusb-compat
PKG_NEEDS:= threads
PKG_URL:= http://www.sane-project.org/
-PKG_SITES:= ftp://ftp2.sane-project.org/pub/sane/${PKG_NAME}-${PKG_VERSION}/
+PKG_SITES:= https://gitlab.com/sane-project/backends/uploads/110fc43336d0fb5e514f1fdc7360dd87/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
@@ -226,7 +226,9 @@ $(eval $(call PKG_mod_template,SANE_BACKEND_UMAX_PP,umax_pp))
$(eval $(call PKG_mod_template,SANE_BACKEND_UMAX,umax))
TARGET_CFLAGS+= -D_GNU_SOURCE
-CONFIGURE_ENV+= ac_cv_func_ioperm=no have_libv4l1=no
+CONFIGURE_ENV+= ac_cv_func_ioperm=no \
+ have_libv4l1=no \
+ ac_cv_func_mmap_fixed_mapped=yes
CONFIGURE_ARGS+= --disable-translations \
--without-gphoto2 \
--enable-libusb
diff --git a/package/sane-backends/patches/patch-Makefile_in b/package/sane-backends/patches/patch-Makefile_in
deleted file mode 100644
index b1796c56f..000000000
--- a/package/sane-backends/patches/patch-Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.22.orig/Makefile.in 2011-01-30 19:50:56.000000000 +0100
-+++ sane-backends-1.0.22/Makefile.in 2011-10-01 19:26:02.309066938 +0200
-@@ -293,7 +293,7 @@ target_alias = @target_alias@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--SUBDIRS = include lib sanei backend frontend tools doc po
-+SUBDIRS = include lib sanei backend frontend
- DIST_SUBDIRS = include lib sanei backend frontend tools doc po japi testsuite
- dist_doc_DATA = AUTHORS ChangeLog COPYING LICENSE NEWS PROBLEMS PROJECTS \
- README README.aix README.beos README.darwin README.djpeg README.freebsd \
diff --git a/package/sane-backends/patches/patch-backend_canon630u-common_c b/package/sane-backends/patches/patch-backend_canon630u-common_c
deleted file mode 100644
index d9acb4bf1..000000000
--- a/package/sane-backends/patches/patch-backend_canon630u-common_c
+++ /dev/null
@@ -1,12 +0,0 @@
---- sane-backends-1.0.22.orig/backend/canon630u-common.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/canon630u-common.c 2014-03-18 08:33:31.000000000 +0100
-@@ -58,9 +58,7 @@
- #include <unistd.h> /* usleep */
- #include <time.h>
- #include <math.h> /* exp() */
--#ifdef HAVE_OS2_H
- #include <sys/types.h> /* mode_t */
--#endif
- #include <sys/stat.h>
- #include "lm9830.h"
-
diff --git a/package/sane-backends/patches/patch-backend_epson2-commands_c b/package/sane-backends/patches/patch-backend_epson2-commands_c
deleted file mode 100644
index 3b2c46841..000000000
--- a/package/sane-backends/patches/patch-backend_epson2-commands_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/epson2-commands.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/epson2-commands.c 2014-03-18 08:34:27.000000000 +0100
-@@ -19,6 +19,7 @@
-
- #include "sane/config.h"
-
-+#include <sys/types.h>
- #include <byteorder.h>
- #include <math.h>
-
diff --git a/package/sane-backends/patches/patch-backend_genesys_c b/package/sane-backends/patches/patch-backend_genesys_c
deleted file mode 100644
index fc0398856..000000000
--- a/package/sane-backends/patches/patch-backend_genesys_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/genesys.c 2011-02-14 00:10:18.000000000 +0100
-+++ sane-backends-1.0.22/backend/genesys.c 2014-03-18 08:36:00.000000000 +0100
-@@ -65,6 +65,7 @@
- #include <errno.h>
- #include <string.h>
- #include <stdlib.h>
-+#include <sys/types.h>
- #include <unistd.h>
- #include <math.h>
-
diff --git a/package/sane-backends/patches/patch-backend_genesys_h b/package/sane-backends/patches/patch-backend_genesys_h
deleted file mode 100644
index efc830be1..000000000
--- a/package/sane-backends/patches/patch-backend_genesys_h
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/genesys.h 2011-01-16 02:01:28.000000000 +0100
-+++ sane-backends-1.0.22/backend/genesys.h 2014-03-18 08:36:42.000000000 +0100
-@@ -52,6 +52,7 @@
- */
- #undef UNIT_TESTING
-
-+#include <sys/types.h>
- #include "genesys_low.h"
-
- #define FREE_IFNOT_NULL(x) if(x!=NULL) { free(x); x=NULL;}
diff --git a/package/sane-backends/patches/patch-backend_genesys_low_c b/package/sane-backends/patches/patch-backend_genesys_low_c
deleted file mode 100644
index 430ab3791..000000000
--- a/package/sane-backends/patches/patch-backend_genesys_low_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/genesys_low.c 2011-02-14 00:10:18.000000000 +0100
-+++ sane-backends-1.0.22/backend/genesys_low.c 2014-03-18 08:37:27.000000000 +0100
-@@ -46,6 +46,7 @@
- #include <errno.h>
- #include <string.h>
- #include <stdlib.h>
-+#include <sys/types.h>
- #include <unistd.h>
- #include <math.h>
-
diff --git a/package/sane-backends/patches/patch-backend_hp3900_rts8822_c b/package/sane-backends/patches/patch-backend_hp3900_rts8822_c
deleted file mode 100644
index 59b9b5a9b..000000000
--- a/package/sane-backends/patches/patch-backend_hp3900_rts8822_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/hp3900_rts8822.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/hp3900_rts8822.c 2014-03-18 08:38:21.000000000 +0100
-@@ -64,6 +64,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h> /* bzero() */
-+#include <sys/types.h>
- #include <time.h> /* clock() */
- #include <math.h> /* truncf() */
- #include <ctype.h> /* tolower() */
diff --git a/package/sane-backends/patches/patch-backend_hp5400_sanei_c b/package/sane-backends/patches/patch-backend_hp5400_sanei_c
deleted file mode 100644
index 7f340d607..000000000
--- a/package/sane-backends/patches/patch-backend_hp5400_sanei_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/hp5400_sanei.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/hp5400_sanei.c 2014-03-18 08:39:35.000000000 +0100
-@@ -56,6 +56,7 @@
- #include "hp5400_xfer.h"
- #include "hp5400_debug.h"
- #include <stdio.h>
-+#include <sys/types.h>
- #include "../include/sane/sanei_usb.h"
-
- #define CMD_INITBULK1 0x0087 /* send 0x14 */
diff --git a/package/sane-backends/patches/patch-backend_hp5590_low_c b/package/sane-backends/patches/patch-backend_hp5590_low_c
deleted file mode 100644
index 7812886dc..000000000
--- a/package/sane-backends/patches/patch-backend_hp5590_low_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/hp5590_low.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/hp5590_low.c 2014-03-18 08:38:55.000000000 +0100
-@@ -46,6 +46,7 @@
-
- #include <stdio.h>
- #include <string.h>
-+#include <sys/types.h>
- #include <errno.h>
- #ifdef HAVE_NETINET_IN_H
- # include <netinet/in.h>
diff --git a/package/sane-backends/patches/patch-backend_kvs20xx_opt_c b/package/sane-backends/patches/patch-backend_kvs20xx_opt_c
deleted file mode 100644
index 253699d14..000000000
--- a/package/sane-backends/patches/patch-backend_kvs20xx_opt_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/kvs20xx_opt.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/kvs20xx_opt.c 2014-03-18 08:41:24.000000000 +0100
-@@ -8,6 +8,7 @@
-
- #include "../include/sane/config.h"
-
-+#include <sys/types.h>
- #include <string.h>
-
- #define DEBUG_DECLARE_ONLY
diff --git a/package/sane-backends/patches/patch-backend_microtek_c b/package/sane-backends/patches/patch-backend_microtek_c
deleted file mode 100644
index dde369f2d..000000000
--- a/package/sane-backends/patches/patch-backend_microtek_c
+++ /dev/null
@@ -1,11 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.22.orig/backend/microtek.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/microtek.c 2011-10-01 19:26:01.659066938 +0200
-@@ -59,6 +59,7 @@
-
- #include "../include/sane/config.h"
-
-+#include <stdarg.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
diff --git a/package/sane-backends/patches/patch-backend_pixma_bjnp_c b/package/sane-backends/patches/patch-backend_pixma_bjnp_c
deleted file mode 100644
index 5d347c00e..000000000
--- a/package/sane-backends/patches/patch-backend_pixma_bjnp_c
+++ /dev/null
@@ -1,22 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.22.orig/backend/pixma_bjnp.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/pixma_bjnp.c 2011-10-01 19:26:01.699066938 +0200
-@@ -59,9 +59,6 @@
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
--#ifdef HAVE_SYS_TIME_H
--#include <sys/timeb.h>
--#endif
-
- /*
- * networking stuff
-@@ -196,7 +193,7 @@ truncate_hostname (char *hostname, char
- {
- /* this is a hostname, not an ip-address, so remove domain part of the name */
-
-- if ((dot = index (short_hostname, '.')) != NULL)
-+ if ((dot = strchr(short_hostname, '.')) != NULL)
- *dot = '\0';
- }
- return short_hostname;
diff --git a/package/sane-backends/patches/patch-backend_pixma_common_h b/package/sane-backends/patches/patch-backend_pixma_common_h
deleted file mode 100644
index 822cc888e..000000000
--- a/package/sane-backends/patches/patch-backend_pixma_common_h
+++ /dev/null
@@ -1,13 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.20.orig/backend/pixma_common.h 2009-02-05 15:36:36.000000000 +0100
-+++ sane-backends-1.0.20/backend/pixma_common.h 2009-05-11 21:00:58.000000000 +0200
-@@ -220,8 +220,8 @@ void pixma_hexdump (int level, const voi
- void pixma_dump (int level, const char *type, const void *data, int len,
- int size, int max);
- # define DEBUG_DECLARE_ONLY
--# include "../include/sane/sanei_debug.h"
- #endif /* NDEBUG */
- /** @} end of group debug */
-+# include "../include/sane/sanei_debug.h"
-
- #endif
diff --git a/package/sane-backends/patches/patch-backend_pixma_imageclass_c b/package/sane-backends/patches/patch-backend_pixma_imageclass_c
deleted file mode 100644
index cb265aedb..000000000
--- a/package/sane-backends/patches/patch-backend_pixma_imageclass_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.22.orig/backend/pixma_imageclass.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/pixma_imageclass.c 2011-10-01 19:26:01.779066938 +0200
-@@ -161,8 +161,6 @@ query_status (pixma_t * s)
- if (error >= 0)
- {
- memcpy (mf->current_status, data, 12);
-- DBG (3, "Current status: paper=%u cal=%u lamp=%u\n",
-- data[1], data[8], data[7]);
- PDBG (pixma_dbg (3, "Current status: paper=%u cal=%u lamp=%u\n",
- data[1], data[8], data[7]));
- }
diff --git a/package/sane-backends/patches/patch-backend_rts88xx_lib_c b/package/sane-backends/patches/patch-backend_rts88xx_lib_c
deleted file mode 100644
index 060f0a10e..000000000
--- a/package/sane-backends/patches/patch-backend_rts88xx_lib_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/rts88xx_lib.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/rts88xx_lib.c 2014-03-18 08:42:41.000000000 +0100
-@@ -54,6 +54,7 @@
-
- #include <stdio.h>
- #include <sys/time.h>
-+#include <sys/types.h>
-
- #include "../include/_stdint.h"
-
diff --git a/package/sane-backends/patches/patch-backend_sm3600-scanutil_c b/package/sane-backends/patches/patch-backend_sm3600-scanutil_c
deleted file mode 100644
index 436102a18..000000000
--- a/package/sane-backends/patches/patch-backend_sm3600-scanutil_c
+++ /dev/null
@@ -1,11 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.22.orig/backend/sm3600-scanutil.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/sm3600-scanutil.c 2011-10-01 19:26:01.819066938 +0200
-@@ -47,6 +47,7 @@ $Id$
-
- ====================================================================== */
-
-+#include <stdarg.h>
- #include <unistd.h>
- #include "sm3600-scantool.h"
-
diff --git a/package/sane-backends/patches/patch-backend_umax1220u-common_c b/package/sane-backends/patches/patch-backend_umax1220u-common_c
deleted file mode 100644
index 8889f7795..000000000
--- a/package/sane-backends/patches/patch-backend_umax1220u-common_c
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- sane-backends-1.0.20.orig/backend/umax1220u-common.c 2006-04-17 14:46:41.000000000 +0200
-+++ sane-backends-1.0.20/backend/umax1220u-common.c 2009-05-11 21:17:47.000000000 +0200
-@@ -556,7 +556,7 @@ cwritev (UMAX_Handle * scan, UMAX_Cmd cm
- /* Read the opcode back */
-
- CHK (cread (scan, cmd, len, buf, NULL));
-- if (bcmp (buf, data, len))
-+ if (memcmp (buf, data, len))
- {
- DBG (1, "cwritev: verification failed\n");
- return SANE_STATUS_IO_ERROR;
diff --git a/package/sane-backends/patches/patch-backend_xerox_mfp_c b/package/sane-backends/patches/patch-backend_xerox_mfp_c
deleted file mode 100644
index d58262197..000000000
--- a/package/sane-backends/patches/patch-backend_xerox_mfp_c
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/backend/xerox_mfp.c 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/backend/xerox_mfp.c 2014-03-18 08:44:56.000000000 +0100
-@@ -22,6 +22,7 @@
- #include <math.h>
- #include <unistd.h>
- #include <sys/time.h>
-+#include <sys/types.h>
- #include "../include/sane/sane.h"
- #include "../include/sane/sanei.h"
- #include "../include/sane/saneopts.h"
diff --git a/package/sane-backends/patches/patch-configure b/package/sane-backends/patches/patch-configure
deleted file mode 100644
index d8d5aca8d..000000000
--- a/package/sane-backends/patches/patch-configure
+++ /dev/null
@@ -1,90 +0,0 @@
---- sane-backends-1.0.22.orig/configure 2011-02-14 02:27:52.000000000 +0100
-+++ sane-backends-1.0.22/configure 2011-10-01 19:32:51.919066675 +0200
-@@ -7529,77 +7529,7 @@ done
-
-
-
--
--
--
--pkg_failed=no
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBV4L" >&5
--$as_echo_n "checking for LIBV4L... " >&6; }
--
--if test -n "$LIBV4L_CFLAGS"; then
-- pkg_cv_LIBV4L_CFLAGS="$LIBV4L_CFLAGS"
-- elif test -n "$PKG_CONFIG"; then
-- if test -n "$PKG_CONFIG" && \
-- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libv4l1\""; } >&5
-- ($PKG_CONFIG --exists --print-errors "libv4l1") 2>&5
-- ac_status=$?
-- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-- test $ac_status = 0; }; then
-- pkg_cv_LIBV4L_CFLAGS=`$PKG_CONFIG --cflags "libv4l1" 2>/dev/null`
--else
-- pkg_failed=yes
--fi
-- else
-- pkg_failed=untried
--fi
--if test -n "$LIBV4L_LIBS"; then
-- pkg_cv_LIBV4L_LIBS="$LIBV4L_LIBS"
-- elif test -n "$PKG_CONFIG"; then
-- if test -n "$PKG_CONFIG" && \
-- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libv4l1\""; } >&5
-- ($PKG_CONFIG --exists --print-errors "libv4l1") 2>&5
-- ac_status=$?
-- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-- test $ac_status = 0; }; then
-- pkg_cv_LIBV4L_LIBS=`$PKG_CONFIG --libs "libv4l1" 2>/dev/null`
--else
-- pkg_failed=yes
--fi
-- else
-- pkg_failed=untried
--fi
--
--
--
--if test $pkg_failed = yes; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--$as_echo "no" >&6; }
--
--if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-- _pkg_short_errors_supported=yes
--else
-- _pkg_short_errors_supported=no
--fi
-- if test $_pkg_short_errors_supported = yes; then
-- LIBV4L_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libv4l1" 2>&1`
-- else
-- LIBV4L_PKG_ERRORS=`$PKG_CONFIG --print-errors "libv4l1" 2>&1`
-- fi
-- # Put the nasty error message in config.log where it belongs
-- echo "$LIBV4L_PKG_ERRORS" >&5
--
-- have_libv4l1=no
--elif test $pkg_failed = untried; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--$as_echo "no" >&6; }
-- have_libv4l1=no
--else
-- LIBV4L_CFLAGS=$pkg_cv_LIBV4L_CFLAGS
-- LIBV4L_LIBS=$pkg_cv_LIBV4L_LIBS
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
--$as_echo "yes" >&6; }
-- have_libv4l1=yes
--fi
-+have_libv4l1=no
-
-
-
-@@ -16874,7 +16804,7 @@ ALL_BACKENDS="abaton agfafocus apple art
- leo lexmark ma1509 magicolor \
- matsushita microtek microtek2 mustek mustek_pp \
- mustek_usb mustek_usb2 nec net niash pie pint \
-- pixma plustek plustek_pp qcam ricoh rts8891 s9036 \
-+ pixma plustek plustek_pp ricoh rts8891 s9036 \
- sceptre sharp sm3600 sm3840 snapscan sp15c st400 \
- stv680 tamarack teco1 teco2 teco3 test u12 umax
- umax_pp umax1220u v4l xerox_mfp p5"
diff --git a/package/sane-backends/patches/patch-configure_in b/package/sane-backends/patches/patch-configure_in
deleted file mode 100644
index fbc410c70..000000000
--- a/package/sane-backends/patches/patch-configure_in
+++ /dev/null
@@ -1,11 +0,0 @@
---- sane-backends-1.0.22.orig/configure.in 2011-02-14 00:27:15.000000000 +0100
-+++ sane-backends-1.0.22/configure.in 2011-10-01 19:26:02.249066938 +0200
-@@ -559,7 +559,7 @@ ALL_BACKENDS="abaton agfafocus apple art
- leo lexmark ma1509 magicolor \
- matsushita microtek microtek2 mustek mustek_pp \
- mustek_usb mustek_usb2 nec net niash pie pint \
-- pixma plustek plustek_pp qcam ricoh rts8891 s9036 \
-+ pixma plustek plustek_pp ricoh rts8891 s9036 \
- sceptre sharp sm3600 sm3840 snapscan sp15c st400 \
- stv680 tamarack teco1 teco2 teco3 test u12 umax
- umax_pp umax1220u v4l xerox_mfp p5"
diff --git a/package/sane-backends/patches/patch-include_sane_sanei_tcp_h b/package/sane-backends/patches/patch-include_sane_sanei_tcp_h
deleted file mode 100644
index 4ba390003..000000000
--- a/package/sane-backends/patches/patch-include_sane_sanei_tcp_h
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/include/sane/sanei_tcp.h 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/include/sane/sanei_tcp.h 2014-03-18 08:31:07.000000000 +0100
-@@ -20,6 +20,7 @@
-
- #include <sane/sane.h>
-
-+#include <sys/types.h>
- #include <netinet/in.h>
- #include <netdb.h>
-
diff --git a/package/sane-backends/patches/patch-include_sane_sanei_udp_h b/package/sane-backends/patches/patch-include_sane_sanei_udp_h
deleted file mode 100644
index 3d70edada..000000000
--- a/package/sane-backends/patches/patch-include_sane_sanei_udp_h
+++ /dev/null
@@ -1,10 +0,0 @@
---- sane-backends-1.0.22.orig/include/sane/sanei_udp.h 2010-12-02 00:49:58.000000000 +0100
-+++ sane-backends-1.0.22/include/sane/sanei_udp.h 2014-03-18 08:31:40.000000000 +0100
-@@ -20,6 +20,7 @@
-
- #include <sane/sane.h>
-
-+#include <sys/types.h>
- #include <netinet/in.h>
- #include <netdb.h>
-
diff --git a/package/scons/Makefile b/package/scons/Makefile
index 7acc52c1a..b33c67318 100644
--- a/package/scons/Makefile
+++ b/package/scons/Makefile
@@ -4,19 +4,21 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= scons
-PKG_VERSION:= 2.3.0
-PKG_RELEASE:= 2
-PKG_HASH:= 9442069999cf4b2caa94a5886ab4c2c71de1718ed5e9176c18e2b6dbca463b4b
+PKG_VERSION:= 3.1.2
+PKG_RELEASE:= 1
+PKG_HASH:= 7801f3f62f654528e272df780be10c0e9337e897650b62ddcee9f39fde13f8fb
PKG_DESCR:= software construction tool
PKG_SECTION:= dev/tools
-HOST_BUILDDEP:= python2-host
+HOST_BUILDDEP:= python3-host
PKG_URL:= http://www.scons.org
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=scons/}
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+DISTFILES:= $(PKG_NAME)-${PKG_VERSION}.tar.gz
PKG_CFLINE_SCONS:= depends on ADK_HOST_ONLY
+#WRKDIST= ${WRKDIR}/SCons-${PKG_VERSION}
+
include $(ADK_TOPDIR)/mk/host.mk
include $(ADK_TOPDIR)/mk/package.mk
@@ -26,7 +28,7 @@ HOST_STYLE:= manual
scons-hostinstall:
(cd $(WRKBUILD); PATH='$(HOST_PATH)' python setup.py install \
- --prefix=$(STAGING_HOST_DIR)/usr)
+ --prefix=$(STAGING_HOST_DIR)/usr --install-lib=$(STAGING_HOST_DIR)/usr/lib/scons-$(PKG_VERSION))
include ${ADK_TOPDIR}/mk/host-bottom.mk
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/screen/Makefile b/package/screen/Makefile
index 209d211b6..1756f3166 100644
--- a/package/screen/Makefile
+++ b/package/screen/Makefile
@@ -4,13 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= screen
-PKG_VERSION:= 4.7.0
+PKG_VERSION:= 4.9.0
PKG_RELEASE:= 1
-PKG_HASH:= da775328fa783bd2a787d722014dbd99c6093effc11f337827604c2efc5d20c1
+PKG_HASH:= f9335281bb4d1538ed078df78a20c2f39d3af9a4e91c57d084271e0289c730f4
PKG_DESCR:= window manager for the terminal session
PKG_SECTION:= sys/utils
PKG_DEPENDS:= libncurses libelf
PKG_BUILDDEP:= ncurses libelf
+PKG_NEEDS:= mmu
PKG_URL:= http://www.gnu.org/software/screen/
PKG_SITES:= ${MASTER_SITE_GNU:=screen/}
@@ -20,6 +21,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,SCREEN,screen,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+AUTOTOOL_STYLE:= autoreconf
TARGET_LDFLAGS+= -ltinfo
CONFIGURE_ENV+= $(foreach flag,rename fchmod fchown strerror lstat _exit utimes vsnprintf getcwd setlocale strftime,ac_cv_func_${flag}=yes)
CONFIGURE_ARGS+= --with-sys-screenrc=/etc/screenrc
diff --git a/package/sdl/Makefile b/package/sdl/Makefile
deleted file mode 100644
index 351a65f01..000000000
--- a/package/sdl/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= sdl
-PKG_VERSION:= 1.2.15
-PKG_RELEASE:= 1
-PKG_HASH:= d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00
-PKG_DESCR:= simple directmedia layer
-PKG_SECTION:= libs/misc
-PKG_DEPENDS:= libusb alsa-lib libx11 libxext
-PKG_BUILDDEP:= sdl-host libusb alsa-lib libX11 libXext
-PKG_NEEDS:= threads
-PKG_URL:= http://www.libsdl.org/
-PKG_SITES:= http://www.libsdl.org/release/
-PKG_LIBNAME:= libsdl
-PKG_OPTS:= dev
-
-PKG_FLAVOURS_LIBSDL:= WITH_TSLIB
-PKGFD_WITH_TSLIB:= enable touchscreen support
-PKGFS_WITH_TSLIB:= tslib
-PKGFB_WITH_TSLIB:= tslib
-
-DISTFILES:= SDL-${PKG_VERSION}.tar.gz
-WRKDIST= ${WRKDIR}/SDL-${PKG_VERSION}
-
-include $(ADK_TOPDIR)/mk/host.mk
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call HOST_template,LIBSDL,libsdl,$(PKG_VERSION)-${PKG_RELEASE}))
-$(eval $(call PKG_template,LIBSDL,libsdl,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-
-HOST_STYLE:= auto
-HOST_CONFIGURE_ARGS+= --without-x \
- --enable-shared \
- --disable-cdrom \
- --disable-joystick \
- --disable-audio \
- --disable-video \
- --disable-assembly \
- --disable-input-tslib \
- --disable-video-directfb \
- --disable-video-cocoa \
- --disable-video-opengl
-
-ifeq ($(ADK_PACKAGE_SDL_WITH_TSLIB),y)
-CONFIGURE_ARGS+= --enable-input-tslib
-endif
-CONFIGURE_ARGS+= --disable-esd \
- --disable-oss \
- --enable-alsa \
- --enable-video-fbcon \
- --disable-video-directfb \
- --disable-video-opengl \
- --disable-video-ps2gs \
- --disable-video-ps3 \
- --with-x
-
-libsdl-install:
- $(INSTALL_DIR) $(IDIR_LIBSDL)/usr/lib
- $(CP) ${WRKINST}/usr/lib/libSDL*.so* $(IDIR_LIBSDL)/usr/lib
-
-include ${ADK_TOPDIR}/mk/host-bottom.mk
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/sdl2-mixer/Makefile b/package/sdl2-mixer/Makefile
new file mode 100644
index 000000000..f77239a75
--- /dev/null
+++ b/package/sdl2-mixer/Makefile
@@ -0,0 +1,29 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= sdl2-mixer
+PKG_VERSION:= 2.6.3
+PKG_RELEASE:= 1
+PKG_HASH:= 7a6ba86a478648ce617e3a5e9277181bc67f7ce9876605eea6affd4a0d6eea8f
+PKG_DESCR:= simple directmedia layer mixer 2
+PKG_SECTION:= libs/misc
+PKG_URL:= http://www.libsdl.org/
+PKG_SITES:= http://www.libsdl.org/projects/SDL_mixer/release/
+PKG_LIBNAME:= libsdl2-mixer
+PKG_OPTS:= dev
+
+DISTFILES:= SDL2_mixer-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/SDL2_mixer-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBSDL2_MIXER,libsdl2-mixer,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+libsdl2-mixer-install:
+ $(INSTALL_DIR) $(IDIR_LIBSDL2_MIXER)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libSDL2*.so* \
+ $(IDIR_LIBSDL2_MIXER)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/sdl2-net/Makefile b/package/sdl2-net/Makefile
new file mode 100644
index 000000000..94691a884
--- /dev/null
+++ b/package/sdl2-net/Makefile
@@ -0,0 +1,29 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= sdl2-net
+PKG_VERSION:= 2.2.0
+PKG_RELEASE:= 1
+PKG_HASH:= 4e4a891988316271974ff4e9585ed1ef729a123d22c08bd473129179dc857feb
+PKG_DESCR:= simple directmedia layer net 2
+PKG_SECTION:= libs/misc
+PKG_URL:= http://www.libsdl.org/
+PKG_SITES:= http://www.libsdl.org/projects/SDL_net/release/
+PKG_LIBNAME:= libsdl2-net
+PKG_OPTS:= dev
+
+DISTFILES:= SDL2_net-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/SDL2_net-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBSDL2_NET,libsdl2-net,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+libsdl2-net-install:
+ $(INSTALL_DIR) $(IDIR_LIBSDL2_NET)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libSDL2*.so* \
+ $(IDIR_LIBSDL2_NET)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/sdl2/Makefile b/package/sdl2/Makefile
new file mode 100644
index 000000000..3e3b3e091
--- /dev/null
+++ b/package/sdl2/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= sdl2
+PKG_VERSION:= 2.28.5
+PKG_RELEASE:= 1
+PKG_HASH:= 9f0556e4a24ef5b267010038ad9e9948b62f236d5bcc4b22179f95ef62d84023
+PKG_DESCR:= simple directmedia layer 2
+PKG_SECTION:= libs/misc
+PKG_URL:= http://www.libsdl.org/
+PKG_SITES:= https://github.com/libsdl-org/SDL/archive/refs/tags/
+PKG_BUILDDEP:= mesa libdrm alsa-lib DirectFB
+PKG_DEPENDS:= mesa libdrm alsa-lib directfb
+PKG_LIBNAME:= libsdl2
+PKG_OPTS:= dev
+
+DISTFILES:= release-$(PKG_VERSION).tar.gz
+WRKDIST= ${WRKDIR}/SDL-release-$(PKG_VERSION)
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,LIBSDL2,libsdl2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+CONFIGURE_ARGS+= --enable-video-directfb
+
+libsdl2-install:
+ $(INSTALL_DIR) $(IDIR_LIBSDL2)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libSDL2*.so* \
+ $(IDIR_LIBSDL2)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/section.lst b/package/section.lst
index 724fbdf32..a1fead9bb 100644
--- a/package/section.lst
+++ b/package/section.lst
@@ -19,6 +19,7 @@ app/chat Chat
app/crypto Cryptography
app/debug Debugging and Analyzing
app/editor Editor and Pager
+app/games Games
app/p2p P2P
net/acct IP Accounting
net/dns DNS and DHCP
diff --git a/package/serdisplib/Makefile b/package/serdisplib/Makefile
index 804eb68f8..9a3a9cde2 100644
--- a/package/serdisplib/Makefile
+++ b/package/serdisplib/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= serdisplib
-PKG_VERSION:= 1.97.8
+PKG_VERSION:= 2.02
PKG_RELEASE:= 1
-PKG_HASH:= b64738f2fd6a28f6d659945282a4a95eeaaabb0a5867f8a87b8cceb01ce1d029
+PKG_HASH:= 447b74007dc157b0378044245649850b26432b9185b6540ff681fcb0765c4d8b
PKG_DESCR:= display drivers (serial, parallel, usb)
PKG_SECTION:= sys/serial
PKG_DEPENDS:= libusb-compat
@@ -22,7 +22,6 @@ $(eval $(call PKG_template,SERDISPLIB,serdisplib,${PKG_VERSION}-${PKG_RELEASE},$
INSTALL_STYLE:= manual
-CONFIGURE_ENV+= PACKAGE_VERSION_MAJOR=1 PACKAGE_VERSION_MINOR=97
CONFIGURE_ARGS+= --enable-libusb
TARGET_CFLAGS+= ${TARGET_CPPFLAGS}
diff --git a/package/serdisplib/patches/patch-Makefile_in b/package/serdisplib/patches/patch-Makefile_in
deleted file mode 100644
index a140feb5e..000000000
--- a/package/serdisplib/patches/patch-Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id$
---- serdisplib-1.97.8.orig/Makefile.in 2008-07-30 23:05:37.000000000 +0200
-+++ serdisplib-1.97.8/Makefile.in 2009-05-30 18:04:39.430445031 +0200
-@@ -20,7 +20,7 @@ CC = @CC@
- MAKE=@MAKE@
-
-
--subdirs = src tools
-+subdirs = src
-
-
- all:
diff --git a/package/serdisplib/patches/patch-configure b/package/serdisplib/patches/patch-configure
deleted file mode 100644
index b4ea718bd..000000000
--- a/package/serdisplib/patches/patch-configure
+++ /dev/null
@@ -1,22 +0,0 @@
-$Id$
---- serdisplib-1.97.8.orig/configure 2008-07-19 00:40:38.000000000 +0200
-+++ serdisplib-1.97.8/configure 2009-05-30 18:04:39.526453915 +0200
-@@ -2661,18 +2661,6 @@ echo "${ECHO_T}no" >&6
- fi
-
-
--# split version information
--PACKAGE_VERSION_TEMP=${PACKAGE_VERSION/\./\ }
--PACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_TEMP/\ *}
--PACKAGE_VERSION_MINTEMP=${PACKAGE_VERSION_TEMP/*\ }
--if test "${PACKAGE_VERSION_TEMP/*\.*/\.}" = "\."; then
-- PACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINTEMP/\.*}
-- PACKAGE_VERSION_SUBMINOR=${PACKAGE_VERSION_MINTEMP/*\.}
--else
-- PACKAGE_VERSION_MINOR=$PACKAGE_VERSION_MINTEMP
-- PACKAGE_VERSION_SUBMINOR=""
--fi
--
-
-
-
diff --git a/package/serdisplib/patches/patch-include_serdisplib_serdisp_control_h b/package/serdisplib/patches/patch-include_serdisplib_serdisp_control_h
deleted file mode 100644
index d8c819a34..000000000
--- a/package/serdisplib/patches/patch-include_serdisplib_serdisp_control_h
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- serdisplib-1.97.8.orig/include/serdisplib/serdisp_control.h 2008-07-31 00:55:12.000000000 +0200
-+++ serdisplib-1.97.8/include/serdisplib/serdisp_control.h 2009-05-31 16:24:16.000000000 +0200
-@@ -42,7 +42,7 @@
-
- #define SERDISP_VERSION_MAJOR 1 /**< \brief major version of serdisplib \hideinitializer */
- #define SERDISP_VERSION_MINOR 97 /**< \brief minor version of serdisplib \hideinitializer */
--#define SERDISP_VERSION_EXTRA 8 /**< \brief extra version postfix (ignored) \hideinitializer */
-+#define SERDISP_VERSION_EXTRA /**< \brief extra version postfix (ignored) \hideinitializer */
-
- /** \hideinitializer
- * \brief calculates a serdisplib version code
diff --git a/package/serdisplib/patches/patch-src_Makefile_in b/package/serdisplib/patches/patch-src_Makefile_in
deleted file mode 100644
index ad9c6a9c7..000000000
--- a/package/serdisplib/patches/patch-src_Makefile_in
+++ /dev/null
@@ -1,12 +0,0 @@
-$Id$
---- serdisplib-1.97.8.orig/src/Makefile.in 2008-07-30 23:05:37.000000000 +0200
-+++ serdisplib-1.97.8/src/Makefile.in 2009-05-30 18:04:39.534451861 +0200
-@@ -126,7 +126,7 @@ endif
-
- .SUFFIXES : .c .o
-
--all: libraries programs
-+all: libraries
-
- libraries: library.static library.shared
-
diff --git a/package/serdisplib/patches/patch-src_serdisp_connect_c b/package/serdisplib/patches/patch-src_serdisp_connect_c
deleted file mode 100644
index fae45be6f..000000000
--- a/package/serdisplib/patches/patch-src_serdisp_connect_c
+++ /dev/null
@@ -1,21 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- serdisplib-1.97.8.orig/src/serdisp_connect.c 2008-07-20 09:50:41.000000000 +0200
-+++ serdisplib-1.97.8/src/serdisp_connect.c 2009-05-31 16:27:03.000000000 +0200
-@@ -304,7 +304,7 @@ serdisp_CONN_t* SDCONN_open(const char s
- sdcd->sdcdev = (sdcdev == 0 || strlen((char*)sdcdev) > 0) ? (char*)sdcdev : SERDISP_DEFAULTDEVICE;
-
- /* split into protocol and device name */
-- idx = index(sdcd->sdcdev, ':');
-+ idx = strchr(sdcd->sdcdev, ':');
- if (!idx) {
- devname = sdcd->sdcdev;
- /* look if a default connection type can be found for given device */
-@@ -1405,7 +1405,7 @@ serdisp_CONN_t* SDCONN_import_PP(int dir
- int SDCONN_getsignalindex(const char str[], short conntype, short hardwaretype) {
- int i;
- int n = strlen(str);
-- char* idxpos = index(str, ',');
-+ char* idxpos = strchr(str, ',');
-
- if (idxpos)
- n = serdisp_ptrstrlen(idxpos, str);
diff --git a/package/serdisplib/patches/patch-src_serdisp_connect_usb_c b/package/serdisplib/patches/patch-src_serdisp_connect_usb_c
deleted file mode 100644
index c400ce875..000000000
--- a/package/serdisplib/patches/patch-src_serdisp_connect_usb_c
+++ /dev/null
@@ -1,39 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- serdisplib-1.97.8.orig/src/serdisp_connect_usb.c 2008-07-30 23:44:23.000000000 +0200
-+++ serdisplib-1.97.8/src/serdisp_connect_usb.c 2009-05-31 16:28:11.000000000 +0200
-@@ -220,7 +220,7 @@ serdisp_CONN_t* SDCONNusb_open(const cha
- #endif
-
- devname = (char*)sdcdev;
-- idx = index(devname, ':');
-+ idx = strchr(devname, ':');
-
- if (serdisp_ptrdistance(idx, devname) >= 18) {
- sd_error(SERDISP_ENXIO, "%s(): invalid protocol (too long)", __func__);
-@@ -230,7 +230,7 @@ serdisp_CONN_t* SDCONNusb_open(const cha
- sdtools_strncpy(protocol, devname, serdisp_ptrdistance(idx, devname));
- devname = (idx+1);
-
-- idx = index(devname, ':');
-+ idx = strchr(devname, ':');
-
- if (idx) {
- if (serdisp_ptrdistance(idx, devname) >= 8) {
-@@ -242,7 +242,7 @@ serdisp_CONN_t* SDCONNusb_open(const cha
- occurrence = (int)strtol(buffer, 0, 10);
- }
-
-- idx = index(devname, '/');
-+ idx = strchr(devname, '/');
- if (idx && serdisp_ptrdistance(idx, devname) < 7) {
- sdtools_strncpy(buffer, devname, serdisp_ptrdistance(idx, devname));
- vendorID = (int)strtol(buffer, &endptr, 16);
-@@ -254,7 +254,7 @@ serdisp_CONN_t* SDCONNusb_open(const cha
-
-
- if (vendorID != -1) {
-- idx = index(devname, '/');
-+ idx = strchr(devname, '/');
- if (!idx) idx = devname + strlen(devname);
- if (serdisp_ptrdistance(idx, devname) < 7) {
- sdtools_strncpy(buffer, devname, serdisp_ptrdistance(idx, devname));
diff --git a/package/serdisplib/patches/patch-src_serdisp_control_c b/package/serdisplib/patches/patch-src_serdisp_control_c
deleted file mode 100644
index f881ab3fe..000000000
--- a/package/serdisplib/patches/patch-src_serdisp_control_c
+++ /dev/null
@@ -1,48 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- serdisplib-1.97.8.orig/src/serdisp_control.c 2008-07-30 01:04:44.000000000 +0200
-+++ serdisplib-1.97.8/src/serdisp_control.c 2009-05-30 18:07:14.100111588 +0200
-@@ -450,7 +450,7 @@ serdisp_t* serdisp_init(serdisp_CONN_t*
- }
-
- if (found) {
-- char* idxpos = index(patternptr, '=');
-+ char* idxpos = strchr(patternptr, '=');
- int keylen = patternlen;
-
- /* '=' found and position not outside patternlen? */
-@@ -568,7 +568,7 @@ serdisp_t* serdisp_init(serdisp_CONN_t*
- * \since 1.98
- */
- long serdisp_getversioncode(void) {
-- return (long) SERDISP_VERSION_CODE;
-+ return (long)SERDISP_VERSION_CODE;
- }
-
-
-@@ -1831,7 +1831,7 @@ int serdisp_setupwirings(serdisp_t* dd,
- while( (patternptr = sdtools_nextpattern(patternptr, ',', &patternlen, &patternborder)) ) {
- char* valueptr = 0;
- int valuelen = 0;
-- char* idxpos = index(patternptr, ':');
-+ char* idxpos = strchr(patternptr, ':');
- int keylen = patternlen;
-
- int tabidxkey = 0, tabidxvalue;
-@@ -2003,7 +2003,7 @@ int serdisp_setupoptions(serdisp_t* dd,
- while( (optionptr = sdtools_nextpattern(optionptr, ';', &optionlen, &optionborder)) ) {
- char* valueptr = 0;
- int valuelen = 0;
-- char* idxpos = index(optionptr, '=');
-+ char* idxpos = strchr(optionptr, '=');
- int keylen = optionlen;
-
- int stdoptidx; /* index of an option found in standard options */
-@@ -2072,7 +2072,7 @@ int serdisp_setupoptions(serdisp_t* dd,
- int definefound = 0;
-
- while( !definefound && (defineptr = sdtools_nextpattern(defineptr, ',', &definelen, &defineborder)) ) {
-- char* defineidxpos = index(defineptr, '=');
-+ char* defineidxpos = strchr(defineptr, '=');
- int definekeylen = definelen;
- char* definevalueptr = 0;
- int definevaluelen = 0;
diff --git a/package/serdisplib/patches/patch-src_serdisp_tools_c b/package/serdisplib/patches/patch-src_serdisp_tools_c
deleted file mode 100644
index 6b972fafc..000000000
--- a/package/serdisplib/patches/patch-src_serdisp_tools_c
+++ /dev/null
@@ -1,30 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- serdisplib-1.97.8.orig/src/serdisp_tools.c 2008-07-17 01:44:52.000000000 +0200
-+++ serdisplib-1.97.8/src/serdisp_tools.c 2009-05-31 16:26:39.000000000 +0200
-@@ -688,7 +688,7 @@ int sdtools_isinelemlist(const char* ele
-
- if (strlen(lefttrimmedelemlist) == 0) return -1;
-
-- indexpos = index(lefttrimmedelemlist, ',');
-+ indexpos = strchr(lefttrimmedelemlist, ',');
-
- /* this should never occur but to be sure: catch it and return 0 in such a case (invalid elemlist!) */
- if (indexpos == lefttrimmedelemlist)
-@@ -762,7 +762,7 @@ char* sdtools_nextpattern(const char* st
- char* idxpos;
-
- if (*len >= 0) { /* *len < 0: return first parameter, else: not first parameter */
-- idxpos = index(strstart, delim);
-+ idxpos = strchr(strstart, delim);
- if ( !idxpos || (((long)idxpos) >= (((long)strstart) + *border)) ) {
- /* no more delim or found delim out of view => no more param */
- *len = -1; *border = 0;
-@@ -783,7 +783,7 @@ char* sdtools_nextpattern(const char* st
- *border -= n;
- *len -= n;
-
-- idxpos = index(strstart, delim);
-+ idxpos = strchr(strstart, delim);
-
- if ( idxpos && ((long)idxpos < ((long)strstart + (*border))) ) {
- *len = serdisp_ptrstrlen(idxpos, strstart);
diff --git a/package/shadow/Makefile b/package/shadow/Makefile
new file mode 100644
index 000000000..bdcf45944
--- /dev/null
+++ b/package/shadow/Makefile
@@ -0,0 +1,32 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= shadow
+PKG_VERSION:= 4.14.3
+PKG_RELEASE:= 1
+PKG_HASH:= 6969279236fe3152768573a38c9f83cb9ca109851a5a990aec1fc672ac2cfcd2
+PKG_DESCR:= utilities to deal with user accounts
+PKG_BUILDDEP_GLIBC:= libxcrypt
+PKG_SECTION:= sys/utils
+PKG_SITES:= https://github.com/shadow-maint/shadow/releases/download/$(PKG_VERSION)/
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,SHADOW,shadow,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+CONFIGURE_ARGS+= --without-libbsd
+
+shadow-install:
+ $(INSTALL_DIR) $(IDIR_SHADOW)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/* \
+ $(IDIR_SHADOW)/usr/bin
+ $(INSTALL_DIR) $(IDIR_SHADOW)/usr/sbin
+ $(INSTALL_BIN) $(WRKINST)/usr/sbin/* \
+ $(IDIR_SHADOW)/usr/sbin
+ $(INSTALL_DIR) $(IDIR_SHADOW)/lib
+ $(CP) $(WRKINST)/lib/*.so* \
+ $(IDIR_SHADOW)/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/shairport-sync/Makefile b/package/shairport-sync/Makefile
index c85f46ca1..75c6801f8 100644
--- a/package/shairport-sync/Makefile
+++ b/package/shairport-sync/Makefile
@@ -4,7 +4,7 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= shairport-sync
-PKG_VERSION:= 3.3.6
+PKG_VERSION:= 3.3.8
PKG_RELEASE:= 1
PKG_GIT:= tag
PKG_DESCR:= airplay daemon
diff --git a/package/simpleinit/files/rc b/package/simpleinit/files/rc
index e5d4f67d6..08d67601a 100755
--- a/package/simpleinit/files/rc
+++ b/package/simpleinit/files/rc
@@ -1,9 +1,8 @@
#!/bin/sh
echo Starting OpenADK
-hostname openadk
mount -t proc proc /proc
mount -t sysfs sys /sys
-mkdir -m 755 /dev/pts
+mkdir /dev/pts
mount -t devpts devpts /dev/pts
mount -t tmpfs tmpfs /tmp
chmod 1777 /tmp
diff --git a/package/siproxd/Makefile b/package/siproxd/Makefile
index d57ea8888..5442790d2 100644
--- a/package/siproxd/Makefile
+++ b/package/siproxd/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= siproxd
-PKG_VERSION:= 0.8.1
+PKG_VERSION:= 0.8.3
PKG_RELEASE:= 1
-PKG_HASH:= df2df04faf5bdb4980cbdfd5516a47898fc47ca1ebc2c628aa48305b20a09dad
+PKG_HASH:= 9a6d7a6bb6fff162775b1e1fb7018de9c69642cbf8626185dc6ffceeeba07736
PKG_DESCR:= session initiation protocol proxy
PKG_SECTION:= net/voip
PKG_DEPENDS:= libosip2
diff --git a/package/sipsak/Makefile b/package/sipsak/Makefile
index 1903793ed..e55f9bc2b 100644
--- a/package/sipsak/Makefile
+++ b/package/sipsak/Makefile
@@ -4,15 +4,14 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= sipsak
-PKG_VERSION:= 0.9.6
-PKG_RELEASE:= 2
-PKG_HASH:= 5064c56d482a080b6a4aea71821b78c21b59d44f6d1aa14c27429441917911a9
+PKG_VERSION:= 0.9.8.1
+PKG_RELEASE:= 1
+PKG_HASH:= c6faa022cd8c002165875d4aac83b7a2b59194f0491802924117fc6ac980c778
PKG_DESCR:= sip stress and diagnostics utility
PKG_SECTION:= net/voip
-PKG_URL:= http://sourceforge.net/projects/sipsak.berlios/
-PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=sipsak.berlios/}
+PKG_SITES:= https://github.com/nils-ohlmeier/sipsak/releases/download/$(PKG_VERSION)/
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION)-1.tar.gz
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_CHOICES_SIPSAK:= WITH_LIBRESSL WITHOUT_SSL
PKGCD_WITH_LIBRESSL:= use libressl for crypto
@@ -24,6 +23,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,SIPSAK,sipsak,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes
CONFIGURE_ARGS+= --disable-gnutls
diff --git a/package/sipsak/patches/patch-configure b/package/sipsak/patches/patch-configure
deleted file mode 100644
index 128845ab3..000000000
--- a/package/sipsak/patches/patch-configure
+++ /dev/null
@@ -1,9009 +0,0 @@
---- sipsak-0.9.6.orig/configure 2006-01-28 22:11:34.000000000 +0100
-+++ sipsak-0.9.6/configure 2016-09-23 18:46:18.305339828 +0200
-@@ -1,27 +1,56 @@
- #! /bin/sh
- # Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.59 for sipsak 0.9.6.
-+# Generated by GNU Autoconf 2.61 for sipsak 0.9.6.
- #
- # Report bugs to <nils@sipsak.org>.
- #
--# Copyright (C) 2003 Free Software Foundation, Inc.
-+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
- # This configure script is free software; the Free Software Foundation
- # gives unlimited permission to copy, distribute and modify it.
- ## --------------------- ##
- ## M4sh Initialization. ##
- ## --------------------- ##
-
--# Be Bourne compatible
-+# Be more Bourne compatible
-+DUALCASE=1; export DUALCASE # for MKS sh
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
--elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-- set -o posix
-+ setopt NO_GLOB_SUBST
-+else
-+ case `(set -o) 2>/dev/null` in
-+ *posix*) set -o posix ;;
-+esac
-+
-+fi
-+
-+
-+
-+
-+# PATH needs CR
-+# Avoid depending upon Character Ranges.
-+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-+as_cr_digits='0123456789'
-+as_cr_alnum=$as_cr_Letters$as_cr_digits
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
- fi
--DUALCASE=1; export DUALCASE # for MKS sh
-
- # Support unset when possible.
- if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-@@ -31,8 +60,43 @@ else
- fi
-
-
-+# IFS
-+# We need space, tab and new line, in precisely that order. Quoting is
-+# there to prevent editors from complaining about space-tab.
-+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-+# splitting by setting IFS to empty value.)
-+as_nl='
-+'
-+IFS=" "" $as_nl"
-+
-+# Find who we are. Look in the path if we contain no directory separator.
-+case $0 in
-+ *[\\/]* ) as_myself=$0 ;;
-+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-+done
-+IFS=$as_save_IFS
-+
-+ ;;
-+esac
-+# We did not find ourselves, most probably we were run as `sh COMMAND'
-+# in which case we are not to be found in the path.
-+if test "x$as_myself" = x; then
-+ as_myself=$0
-+fi
-+if test ! -f "$as_myself"; then
-+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-+ { (exit 1); exit 1; }
-+fi
-+
- # Work around bugs in pre-3.0 UWIN ksh.
--$as_unset ENV MAIL MAILPATH
-+for as_var in ENV MAIL MAILPATH
-+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-+done
- PS1='$ '
- PS2='> '
- PS4='+ '
-@@ -46,18 +110,19 @@ do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
-- $as_unset $as_var
-+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
- done
-
- # Required to use basename.
--if expr a : '\(a\)' >/dev/null 2>&1; then
-+if expr a : '\(a\)' >/dev/null 2>&1 &&
-+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
- else
- as_expr=false
- fi
-
--if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
- else
- as_basename=false
-@@ -65,157 +130,388 @@ fi
-
-
- # Name of the executable.
--as_me=`$as_basename "$0" ||
-+as_me=`$as_basename -- "$0" ||
- $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
-- X"$0" : 'X\(/\)$' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
- echo X/"$0" |
-- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-- /^X\/\(\/\/\)$/{ s//\1/; q; }
-- /^X\/\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-+ sed '/^.*\/\([^/][^/]*\)\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\/\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\/\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
-
-+# CDPATH.
-+$as_unset CDPATH
-
--# PATH needs CR, and LINENO needs CR and PATH.
--# Avoid depending upon Character Ranges.
--as_cr_letters='abcdefghijklmnopqrstuvwxyz'
--as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
--as_cr_Letters=$as_cr_letters$as_cr_LETTERS
--as_cr_digits='0123456789'
--as_cr_alnum=$as_cr_Letters$as_cr_digits
-
--# The user is always right.
--if test "${PATH_SEPARATOR+set}" != set; then
-- echo "#! /bin/sh" >conf$$.sh
-- echo "exit 0" >>conf$$.sh
-- chmod +x conf$$.sh
-- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-- PATH_SEPARATOR=';'
-- else
-- PATH_SEPARATOR=:
-- fi
-- rm -f conf$$.sh
-+if test "x$CONFIG_SHELL" = x; then
-+ if (eval ":") 2>/dev/null; then
-+ as_have_required=yes
-+else
-+ as_have_required=no
- fi
-
-+ if test $as_have_required = yes && (eval ":
-+(as_func_return () {
-+ (exit \$1)
-+}
-+as_func_success () {
-+ as_func_return 0
-+}
-+as_func_failure () {
-+ as_func_return 1
-+}
-+as_func_ret_success () {
-+ return 0
-+}
-+as_func_ret_failure () {
-+ return 1
-+}
-+
-+exitcode=0
-+if as_func_success; then
-+ :
-+else
-+ exitcode=1
-+ echo as_func_success failed.
-+fi
-
-- as_lineno_1=$LINENO
-- as_lineno_2=$LINENO
-- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-- test "x$as_lineno_1" != "x$as_lineno_2" &&
-- test "x$as_lineno_3" = "x$as_lineno_2" || {
-- # Find who we are. Look in the path if we contain no path at all
-- # relative or not.
-- case $0 in
-- *[\\/]* ) as_myself=$0 ;;
-- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
--done
-+if as_func_failure; then
-+ exitcode=1
-+ echo as_func_failure succeeded.
-+fi
-
-- ;;
-- esac
-- # We did not find ourselves, most probably we were run as `sh COMMAND'
-- # in which case we are not to be found in the path.
-- if test "x$as_myself" = x; then
-- as_myself=$0
-- fi
-- if test ! -f "$as_myself"; then
-- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-- { (exit 1); exit 1; }; }
-- fi
-- case $CONFIG_SHELL in
-- '')
-+if as_func_ret_success; then
-+ :
-+else
-+ exitcode=1
-+ echo as_func_ret_success failed.
-+fi
-+
-+if as_func_ret_failure; then
-+ exitcode=1
-+ echo as_func_ret_failure succeeded.
-+fi
-+
-+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-+ :
-+else
-+ exitcode=1
-+ echo positional parameters were not saved.
-+fi
-+
-+test \$exitcode = 0) || { (exit 1); exit 1; }
-+
-+(
-+ as_lineno_1=\$LINENO
-+ as_lineno_2=\$LINENO
-+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-+") 2> /dev/null; then
-+ :
-+else
-+ as_candidate_shells=
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
- for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
- do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
-- for as_base in sh bash ksh sh5; do
-- case $as_dir in
-+ case $as_dir in
- /*)
-- if ("$as_dir/$as_base" -c '
-+ for as_base in sh bash ksh sh5; do
-+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-+ done;;
-+ esac
-+done
-+IFS=$as_save_IFS
-+
-+
-+ for as_shell in $as_candidate_shells $SHELL; do
-+ # Try only shells that exist, to save several forks.
-+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-+ { ("$as_shell") 2> /dev/null <<\_ASEOF
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+ emulate sh
-+ NULLCMD=:
-+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # is contrary to our usage. Disable this feature.
-+ alias -g '${1+"$@"}'='"$@"'
-+ setopt NO_GLOB_SUBST
-+else
-+ case `(set -o) 2>/dev/null` in
-+ *posix*) set -o posix ;;
-+esac
-+
-+fi
-+
-+
-+:
-+_ASEOF
-+}; then
-+ CONFIG_SHELL=$as_shell
-+ as_have_required=yes
-+ if { "$as_shell" 2> /dev/null <<\_ASEOF
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+ emulate sh
-+ NULLCMD=:
-+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # is contrary to our usage. Disable this feature.
-+ alias -g '${1+"$@"}'='"$@"'
-+ setopt NO_GLOB_SUBST
-+else
-+ case `(set -o) 2>/dev/null` in
-+ *posix*) set -o posix ;;
-+esac
-+
-+fi
-+
-+
-+:
-+(as_func_return () {
-+ (exit $1)
-+}
-+as_func_success () {
-+ as_func_return 0
-+}
-+as_func_failure () {
-+ as_func_return 1
-+}
-+as_func_ret_success () {
-+ return 0
-+}
-+as_func_ret_failure () {
-+ return 1
-+}
-+
-+exitcode=0
-+if as_func_success; then
-+ :
-+else
-+ exitcode=1
-+ echo as_func_success failed.
-+fi
-+
-+if as_func_failure; then
-+ exitcode=1
-+ echo as_func_failure succeeded.
-+fi
-+
-+if as_func_ret_success; then
-+ :
-+else
-+ exitcode=1
-+ echo as_func_ret_success failed.
-+fi
-+
-+if as_func_ret_failure; then
-+ exitcode=1
-+ echo as_func_ret_failure succeeded.
-+fi
-+
-+if ( set x; as_func_ret_success y && test x = "$1" ); then
-+ :
-+else
-+ exitcode=1
-+ echo positional parameters were not saved.
-+fi
-+
-+test $exitcode = 0) || { (exit 1); exit 1; }
-+
-+(
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
-- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
-- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
-- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-- CONFIG_SHELL=$as_dir/$as_base
-- export CONFIG_SHELL
-- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-- fi;;
-- esac
-- done
--done
--;;
-- esac
-+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-+
-+_ASEOF
-+}; then
-+ break
-+fi
-+
-+fi
-+
-+ done
-+
-+ if test "x$CONFIG_SHELL" != x; then
-+ for as_var in BASH_ENV ENV
-+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-+ done
-+ export CONFIG_SHELL
-+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-+fi
-+
-+
-+ if test $as_have_required = no; then
-+ echo This script requires a shell more modern than all the
-+ echo shells that I found on your system. Please install a
-+ echo modern shell, or manually run the script under such a
-+ echo shell if you do have one.
-+ { (exit 1); exit 1; }
-+fi
-+
-+
-+fi
-+
-+fi
-+
-+
-+
-+(eval "as_func_return () {
-+ (exit \$1)
-+}
-+as_func_success () {
-+ as_func_return 0
-+}
-+as_func_failure () {
-+ as_func_return 1
-+}
-+as_func_ret_success () {
-+ return 0
-+}
-+as_func_ret_failure () {
-+ return 1
-+}
-+
-+exitcode=0
-+if as_func_success; then
-+ :
-+else
-+ exitcode=1
-+ echo as_func_success failed.
-+fi
-+
-+if as_func_failure; then
-+ exitcode=1
-+ echo as_func_failure succeeded.
-+fi
-+
-+if as_func_ret_success; then
-+ :
-+else
-+ exitcode=1
-+ echo as_func_ret_success failed.
-+fi
-+
-+if as_func_ret_failure; then
-+ exitcode=1
-+ echo as_func_ret_failure succeeded.
-+fi
-+
-+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-+ :
-+else
-+ exitcode=1
-+ echo positional parameters were not saved.
-+fi
-+
-+test \$exitcode = 0") || {
-+ echo No shell found that supports shell functions.
-+ echo Please tell autoconf@gnu.org about your system,
-+ echo including any error possibly output before this
-+ echo message
-+}
-+
-+
-+
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
-- # line-number line before each line; the second 'sed' does the real
-- # work. The second script uses 'N' to pair each line-number line
-- # with the numbered line, and appends trailing '-' during
-- # substitution so that $LINENO is not a special case at line end.
-+ # line-number line after each line using $LINENO; the second 'sed'
-+ # does the real work. The second script uses 'N' to pair each
-+ # line-number line with the line containing $LINENO, and appends
-+ # trailing '-' during substitution so that $LINENO is not a special
-+ # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-- sed '=' <$as_myself |
-+ # scripts with optimization help from Paolo Bonzini. Blame Lee
-+ # E. McMahon (1931-1989) for sed's syntax. :-)
-+ sed -n '
-+ p
-+ /[$]LINENO/=
-+ ' <$as_myself |
- sed '
-+ s/[$]LINENO.*/&-/
-+ t lineno
-+ b
-+ :lineno
- N
-- s,$,-,
-- : loop
-- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ :loop
-+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
-- s,-$,,
-- s,^['$as_cr_digits']*\n,,
-+ s/-\n.*//
- ' >$as_me.lineno &&
-- chmod +x $as_me.lineno ||
-+ chmod +x "$as_me.lineno" ||
- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
-- # original and so on. Autoconf is especially sensible to this).
-- . ./$as_me.lineno
-+ # original and so on. Autoconf is especially sensitive to this).
-+ . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
- }
-
-
--case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-- *c*,-n*) ECHO_N= ECHO_C='
--' ECHO_T=' ' ;;
-- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-+ as_dirname=dirname
-+else
-+ as_dirname=false
-+fi
-+
-+ECHO_C= ECHO_N= ECHO_T=
-+case `echo -n x` in
-+-n*)
-+ case `echo 'x\c'` in
-+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
-+ *) ECHO_C='\c';;
-+ esac;;
-+*)
-+ ECHO_N='-n';;
- esac
-
--if expr a : '\(a\)' >/dev/null 2>&1; then
-+if expr a : '\(a\)' >/dev/null 2>&1 &&
-+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
- else
- as_expr=false
- fi
-
- rm -f conf$$ conf$$.exe conf$$.file
-+if test -d conf$$.dir; then
-+ rm -f conf$$.dir/conf$$.file
-+else
-+ rm -f conf$$.dir
-+ mkdir conf$$.dir
-+fi
- echo >conf$$.file
- if ln -s conf$$.file conf$$ 2>/dev/null; then
-- # We could just check for DJGPP; but this test a) works b) is more generic
-- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-- if test -f conf$$.exe; then
-- # Don't use ln at all; we don't have any links
-+ as_ln_s='ln -s'
-+ # ... but there are two gotchas:
-+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-+ # In both cases, we have to default to `cp -p'.
-+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
-- else
-- as_ln_s='ln -s'
-- fi
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
--rm -f conf$$ conf$$.exe conf$$.file
-+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-+rmdir conf$$.dir 2>/dev/null
-
- if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-@@ -224,7 +520,28 @@ else
- as_mkdir_p=false
- fi
-
--as_executable_p="test -f"
-+if test -x / >/dev/null 2>&1; then
-+ as_test_x='test -x'
-+else
-+ if ls -dL / >/dev/null 2>&1; then
-+ as_ls_L_option=L
-+ else
-+ as_ls_L_option=
-+ fi
-+ as_test_x='
-+ eval sh -c '\''
-+ if test -d "$1"; then
-+ test -d "$1/.";
-+ else
-+ case $1 in
-+ -*)set "./$1";;
-+ esac;
-+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-+ ???[sx]*):;;*)false;;esac;fi
-+ '\'' sh
-+ '
-+fi
-+as_executable_p=$as_test_x
-
- # Sed expression to map a string onto a valid CPP name.
- as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-@@ -233,39 +550,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
- as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
--# IFS
--# We need space, tab and new line, in precisely that order.
--as_nl='
--'
--IFS=" $as_nl"
--
--# CDPATH.
--$as_unset CDPATH
-
-+exec 7<&0 </dev/null 6>&1
-
- # Name of the host.
- # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
- # so uname gets run too.
- ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
--exec 6>&1
--
- #
- # Initializations.
- #
- ac_default_prefix=/usr/local
-+ac_clean_files=
- ac_config_libobj_dir=.
-+LIBOBJS=
- cross_compiling=no
- subdirs=
- MFLAGS=
- MAKEFLAGS=
- SHELL=${CONFIG_SHELL-/bin/sh}
-
--# Maximum number of lines to put in a shell here document.
--# This variable seems obsolete. It should probably be removed, and
--# only ac_max_sed_lines should be used.
--: ${ac_max_here_lines=38}
--
- # Identity of this package.
- PACKAGE_NAME='sipsak'
- PACKAGE_TARNAME='sipsak'
-@@ -277,42 +582,146 @@ ac_unique_file="sipsak.c"
- # Factoring default headers for most tests.
- ac_includes_default="\
- #include <stdio.h>
--#if HAVE_SYS_TYPES_H
-+#ifdef HAVE_SYS_TYPES_H
- # include <sys/types.h>
- #endif
--#if HAVE_SYS_STAT_H
-+#ifdef HAVE_SYS_STAT_H
- # include <sys/stat.h>
- #endif
--#if STDC_HEADERS
-+#ifdef STDC_HEADERS
- # include <stdlib.h>
- # include <stddef.h>
- #else
--# if HAVE_STDLIB_H
-+# ifdef HAVE_STDLIB_H
- # include <stdlib.h>
- # endif
- #endif
--#if HAVE_STRING_H
--# if !STDC_HEADERS && HAVE_MEMORY_H
-+#ifdef HAVE_STRING_H
-+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
- # include <memory.h>
- # endif
- # include <string.h>
- #endif
--#if HAVE_STRINGS_H
-+#ifdef HAVE_STRINGS_H
- # include <strings.h>
- #endif
--#if HAVE_INTTYPES_H
-+#ifdef HAVE_INTTYPES_H
- # include <inttypes.h>
--#else
--# if HAVE_STDINT_H
--# include <stdint.h>
--# endif
- #endif
--#if HAVE_UNISTD_H
-+#ifdef HAVE_STDINT_H
-+# include <stdint.h>
-+#endif
-+#ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif"
-
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE DISTCC build build_cpu build_vendor build_os host host_cpu host_vendor host_os CPP EGREP LIBOBJS DISABLE_GNUTLS LIBGNUTLS_CONFIG LIBGNUTLS_CFLAGS LIBGNUTLS_LIBS SIPSAK_HAVE_ARES LTLIBOBJS'
-+ac_subst_vars='SHELL
-+PATH_SEPARATOR
-+PACKAGE_NAME
-+PACKAGE_TARNAME
-+PACKAGE_VERSION
-+PACKAGE_STRING
-+PACKAGE_BUGREPORT
-+exec_prefix
-+prefix
-+program_transform_name
-+bindir
-+sbindir
-+libexecdir
-+datarootdir
-+datadir
-+sysconfdir
-+sharedstatedir
-+localstatedir
-+includedir
-+oldincludedir
-+docdir
-+infodir
-+htmldir
-+dvidir
-+pdfdir
-+psdir
-+libdir
-+localedir
-+mandir
-+DEFS
-+ECHO_C
-+ECHO_N
-+ECHO_T
-+LIBS
-+build_alias
-+host_alias
-+target_alias
-+INSTALL_PROGRAM
-+INSTALL_SCRIPT
-+INSTALL_DATA
-+CYGPATH_W
-+PACKAGE
-+VERSION
-+ACLOCAL
-+AUTOCONF
-+AUTOMAKE
-+AUTOHEADER
-+MAKEINFO
-+install_sh
-+STRIP
-+INSTALL_STRIP_PROGRAM
-+mkdir_p
-+AWK
-+SET_MAKE
-+am__leading_dot
-+AMTAR
-+am__tar
-+am__untar
-+MAINTAINER_MODE_TRUE
-+MAINTAINER_MODE_FALSE
-+MAINT
-+CC
-+CFLAGS
-+LDFLAGS
-+CPPFLAGS
-+ac_ct_CC
-+EXEEXT
-+OBJEXT
-+DEPDIR
-+am__include
-+am__quote
-+AMDEP_TRUE
-+AMDEP_FALSE
-+AMDEPBACKSLASH
-+CCDEPMODE
-+am__fastdepCC_TRUE
-+am__fastdepCC_FALSE
-+DISTCC
-+build
-+build_cpu
-+build_vendor
-+build_os
-+host
-+host_cpu
-+host_vendor
-+host_os
-+CPP
-+GREP
-+EGREP
-+LIBOBJS
-+DISABLE_GNUTLS
-+LIBGNUTLS_CONFIG
-+LIBGNUTLS_CFLAGS
-+LIBGNUTLS_LIBS
-+SIPSAK_HAVE_ARES
-+LTLIBOBJS'
- ac_subst_files=''
-+ ac_precious_vars='build_alias
-+host_alias
-+target_alias
-+CC
-+CFLAGS
-+LDFLAGS
-+LIBS
-+CPPFLAGS
-+CPP'
-+
-
- # Initialize some variables set by options.
- ac_init_help=
-@@ -339,34 +748,48 @@ x_libraries=NONE
- # and all the variables that are supposed to be based on exec_prefix
- # by default will actually change.
- # Use braces instead of parens because sh, perl, etc. also accept them.
-+# (The list follows the same order as the GNU Coding Standards.)
- bindir='${exec_prefix}/bin'
- sbindir='${exec_prefix}/sbin'
- libexecdir='${exec_prefix}/libexec'
--datadir='${prefix}/share'
-+datarootdir='${prefix}/share'
-+datadir='${datarootdir}'
- sysconfdir='${prefix}/etc'
- sharedstatedir='${prefix}/com'
- localstatedir='${prefix}/var'
--libdir='${exec_prefix}/lib'
- includedir='${prefix}/include'
- oldincludedir='/usr/include'
--infodir='${prefix}/info'
--mandir='${prefix}/man'
-+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-+infodir='${datarootdir}/info'
-+htmldir='${docdir}'
-+dvidir='${docdir}'
-+pdfdir='${docdir}'
-+psdir='${docdir}'
-+libdir='${exec_prefix}/lib'
-+localedir='${datarootdir}/locale'
-+mandir='${datarootdir}/man'
-
- ac_prev=
-+ac_dashdash=
- for ac_option
- do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
-- eval "$ac_prev=\$ac_option"
-+ eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
-- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-+ case $ac_option in
-+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-+ *) ac_optarg=yes ;;
-+ esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
-- case $ac_option in
-+ case $ac_dashdash$ac_option in
-+ --)
-+ ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
-@@ -388,33 +811,45 @@ do
- --config-cache | -C)
- cache_file=config.cache ;;
-
-- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-+ -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
-- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-- | --da=*)
-+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
-+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-+ | --dataroo | --dataro | --datar)
-+ ac_prev=datarootdir ;;
-+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-+ datarootdir=$ac_optarg ;;
-+
- -disable-* | --disable-*)
- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
-- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-- eval "enable_$ac_feature=no" ;;
-+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-+ eval enable_$ac_feature=no ;;
-+
-+ -docdir | --docdir | --docdi | --doc | --do)
-+ ac_prev=docdir ;;
-+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-+ docdir=$ac_optarg ;;
-+
-+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-+ ac_prev=dvidir ;;
-+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-+ dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { (exit 1); exit 1; }; }
-- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-- case $ac_option in
-- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-- *) ac_optarg=yes ;;
-- esac
-- eval "enable_$ac_feature='$ac_optarg'" ;;
-+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-+ eval enable_$ac_feature=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-@@ -441,6 +876,12 @@ do
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
-+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-+ ac_prev=htmldir ;;
-+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-+ | --ht=*)
-+ htmldir=$ac_optarg ;;
-+
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
-@@ -465,13 +906,16 @@ do
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
-+ -localedir | --localedir | --localedi | --localed | --locale)
-+ ac_prev=localedir ;;
-+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-+ localedir=$ac_optarg ;;
-+
- -localstatedir | --localstatedir | --localstatedi | --localstated \
-- | --localstate | --localstat | --localsta | --localst \
-- | --locals | --local | --loca | --loc | --lo)
-+ | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-@@ -536,6 +980,16 @@ do
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
-+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-+ ac_prev=pdfdir ;;
-+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-+ pdfdir=$ac_optarg ;;
-+
-+ -psdir | --psdir | --psdi | --psd | --ps)
-+ ac_prev=psdir ;;
-+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-+ psdir=$ac_optarg ;;
-+
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-@@ -588,24 +1042,20 @@ do
- -with-* | --with-*)
- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
-- ac_package=`echo $ac_package| sed 's/-/_/g'`
-- case $ac_option in
-- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-- *) ac_optarg=yes ;;
-- esac
-- eval "with_$ac_package='$ac_optarg'" ;;
-+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-+ eval with_$ac_package=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
-- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid package name: $ac_package" >&2
- { (exit 1); exit 1; }; }
-- ac_package=`echo $ac_package | sed 's/-/_/g'`
-- eval "with_$ac_package=no" ;;
-+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-+ eval with_$ac_package=no ;;
-
- --x)
- # Obsolete; use --with-x.
-@@ -636,8 +1086,7 @@ Try \`$0 --help' for more information."
- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { (exit 1); exit 1; }; }
-- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-- eval "$ac_envvar='$ac_optarg'"
-+ eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
-@@ -657,27 +1106,19 @@ if test -n "$ac_prev"; then
- { (exit 1); exit 1; }; }
- fi
-
--# Be sure to have absolute paths.
--for ac_var in exec_prefix prefix
--do
-- eval ac_val=$`echo $ac_var`
-- case $ac_val in
-- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-- { (exit 1); exit 1; }; };;
-- esac
--done
--
--# Be sure to have absolute paths.
--for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-- localstatedir libdir includedir oldincludedir infodir mandir
-+# Be sure to have absolute directory names.
-+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
-+ datadir sysconfdir sharedstatedir localstatedir includedir \
-+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-+ libdir localedir mandir
- do
-- eval ac_val=$`echo $ac_var`
-+ eval ac_val=\$$ac_var
- case $ac_val in
-- [\\/$]* | ?:[\\/]* ) ;;
-- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-- { (exit 1); exit 1; }; };;
-+ [\\/$]* | ?:[\\/]* ) continue;;
-+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
-+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-+ { (exit 1); exit 1; }; }
- done
-
- # There might be people who depend on the old broken behavior: `$host'
-@@ -704,22 +1145,43 @@ test -n "$host_alias" && ac_tool_prefix=
- test "$silent" = yes && exec 6>/dev/null
-
-
-+ac_pwd=`pwd` && test -n "$ac_pwd" &&
-+ac_ls_di=`ls -di .` &&
-+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-+ { echo "$as_me: error: Working directory cannot be determined" >&2
-+ { (exit 1); exit 1; }; }
-+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-+ { echo "$as_me: error: pwd does not report name of working directory" >&2
-+ { (exit 1); exit 1; }; }
-+
-+
- # Find the source files, if location was not specified.
- if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
-- # Try the directory containing this script, then its parent.
-- ac_confdir=`(dirname "$0") 2>/dev/null ||
-+ # Try the directory containing this script, then the parent directory.
-+ ac_confdir=`$as_dirname -- "$0" ||
- $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
-- X"$0" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$0" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
-@@ -728,50 +1190,31 @@ else
- ac_srcdir_defaulted=no
- fi
- if test ! -r "$srcdir/$ac_unique_file"; then
-- if test "$ac_srcdir_defaulted" = yes; then
-- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-- { (exit 1); exit 1; }; }
-- else
-- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
- { (exit 1); exit 1; }; }
-- fi
- fi
--(cd $srcdir && test -r "./$ac_unique_file") 2>/dev/null ||
-- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
-+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-+ac_abs_confdir=`(
-+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
- { (exit 1); exit 1; }; }
--srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
--ac_env_build_alias_set=${build_alias+set}
--ac_env_build_alias_value=$build_alias
--ac_cv_env_build_alias_set=${build_alias+set}
--ac_cv_env_build_alias_value=$build_alias
--ac_env_host_alias_set=${host_alias+set}
--ac_env_host_alias_value=$host_alias
--ac_cv_env_host_alias_set=${host_alias+set}
--ac_cv_env_host_alias_value=$host_alias
--ac_env_target_alias_set=${target_alias+set}
--ac_env_target_alias_value=$target_alias
--ac_cv_env_target_alias_set=${target_alias+set}
--ac_cv_env_target_alias_value=$target_alias
--ac_env_CC_set=${CC+set}
--ac_env_CC_value=$CC
--ac_cv_env_CC_set=${CC+set}
--ac_cv_env_CC_value=$CC
--ac_env_CFLAGS_set=${CFLAGS+set}
--ac_env_CFLAGS_value=$CFLAGS
--ac_cv_env_CFLAGS_set=${CFLAGS+set}
--ac_cv_env_CFLAGS_value=$CFLAGS
--ac_env_LDFLAGS_set=${LDFLAGS+set}
--ac_env_LDFLAGS_value=$LDFLAGS
--ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
--ac_cv_env_LDFLAGS_value=$LDFLAGS
--ac_env_CPPFLAGS_set=${CPPFLAGS+set}
--ac_env_CPPFLAGS_value=$CPPFLAGS
--ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
--ac_cv_env_CPPFLAGS_value=$CPPFLAGS
--ac_env_CPP_set=${CPP+set}
--ac_env_CPP_value=$CPP
--ac_cv_env_CPP_set=${CPP+set}
--ac_cv_env_CPP_value=$CPP
-+ pwd)`
-+# When building in place, set srcdir=.
-+if test "$ac_abs_confdir" = "$ac_pwd"; then
-+ srcdir=.
-+fi
-+# Remove unnecessary trailing slashes from srcdir.
-+# Double slashes in file names in object file debugging info
-+# mess up M-x gdb in Emacs.
-+case $srcdir in
-+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-+esac
-+for ac_var in $ac_precious_vars; do
-+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
-+ eval ac_env_${ac_var}_value=\$${ac_var}
-+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
-+done
-
- #
- # Report the --help message.
-@@ -800,9 +1243,6 @@ Configuration:
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
--_ACEOF
--
-- cat <<_ACEOF
- Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
-@@ -820,15 +1260,22 @@ Fine tuning of the installation director
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
-- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
-- --infodir=DIR info documentation [PREFIX/info]
-- --mandir=DIR man documentation [PREFIX/man]
-+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
-+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
-+ --infodir=DIR info documentation [DATAROOTDIR/info]
-+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
-+ --mandir=DIR man documentation [DATAROOTDIR/man]
-+ --docdir=DIR documentation root [DATAROOTDIR/doc/sipsak]
-+ --htmldir=DIR html documentation [DOCDIR]
-+ --dvidir=DIR dvi documentation [DOCDIR]
-+ --pdfdir=DIR pdf documentation [DOCDIR]
-+ --psdir=DIR ps documentation [DOCDIR]
- _ACEOF
-
- cat <<\_ACEOF
-@@ -871,8 +1318,9 @@ Some influential environment variables:
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
-- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
-- headers in a nonstandard directory <include dir>
-+ LIBS libraries to pass to the linker, e.g. -l<library>
-+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
-+ you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
-
- Use these variables to override the choices made by `configure' or to help
-@@ -880,120 +1328,86 @@ it to find libraries and programs with n
-
- Report bugs to <nils@sipsak.org>.
- _ACEOF
-+ac_status=$?
- fi
-
- if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
-- ac_popdir=`pwd`
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-- test -d $ac_dir || continue
-+ test -d "$ac_dir" || continue
- ac_builddir=.
-
--if test "$ac_dir" != .; then
-+case "$ac_dir" in
-+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-+*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-- # A "../" for each directory in $ac_dir_suffix.
-- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
--else
-- ac_dir_suffix= ac_top_builddir=
--fi
-+ # A ".." for each directory in $ac_dir_suffix.
-+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-+ case $ac_top_builddir_sub in
-+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-+ esac ;;
-+esac
-+ac_abs_top_builddir=$ac_pwd
-+ac_abs_builddir=$ac_pwd$ac_dir_suffix
-+# for backward compatibility:
-+ac_top_builddir=$ac_top_build_prefix
-
- case $srcdir in
-- .) # No --srcdir option. We are building in place.
-+ .) # We are building in place.
- ac_srcdir=.
-- if test -z "$ac_top_builddir"; then
-- ac_top_srcdir=.
-- else
-- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-- fi ;;
-- [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_top_srcdir=$ac_top_builddir_sub
-+ ac_abs_top_srcdir=$ac_pwd ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
-- ac_top_srcdir=$srcdir ;;
-- *) # Relative path.
-- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-- ac_top_srcdir=$ac_top_builddir$srcdir ;;
--esac
--
--# Do not use `cd foo && pwd` to compute absolute paths, because
--# the directories may not exist.
--case `pwd` in
--.) ac_abs_builddir="$ac_dir";;
--*)
-- case "$ac_dir" in
-- .) ac_abs_builddir=`pwd`;;
-- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-- *) ac_abs_builddir=`pwd`/"$ac_dir";;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_top_builddir=${ac_top_builddir}.;;
--*)
-- case ${ac_top_builddir}. in
-- .) ac_abs_top_builddir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_srcdir=$ac_srcdir;;
--*)
-- case $ac_srcdir in
-- .) ac_abs_srcdir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_top_srcdir=$ac_top_srcdir;;
--*)
-- case $ac_top_srcdir in
-- .) ac_abs_top_srcdir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-- esac;;
-+ ac_top_srcdir=$srcdir
-+ ac_abs_top_srcdir=$srcdir ;;
-+ *) # Relative name.
-+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_build_prefix$srcdir
-+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
- esac
-+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-- cd $ac_dir
-- # Check for guested configure; otherwise get Cygnus style configure.
-- if test -f $ac_srcdir/configure.gnu; then
-- echo
-- $SHELL $ac_srcdir/configure.gnu --help=recursive
-- elif test -f $ac_srcdir/configure; then
-- echo
-- $SHELL $ac_srcdir/configure --help=recursive
-- elif test -f $ac_srcdir/configure.ac ||
-- test -f $ac_srcdir/configure.in; then
-- echo
-- $ac_configure --help
-+ cd "$ac_dir" || { ac_status=$?; continue; }
-+ # Check for guested configure.
-+ if test -f "$ac_srcdir/configure.gnu"; then
-+ echo &&
-+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-+ elif test -f "$ac_srcdir/configure"; then
-+ echo &&
-+ $SHELL "$ac_srcdir/configure" --help=recursive
- else
- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-- fi
-- cd $ac_popdir
-+ fi || ac_status=$?
-+ cd "$ac_pwd" || { ac_status=$?; break; }
- done
- fi
-
--test -n "$ac_init_help" && exit 0
-+test -n "$ac_init_help" && exit $ac_status
- if $ac_init_version; then
- cat <<\_ACEOF
- sipsak configure 0.9.6
--generated by GNU Autoconf 2.59
-+generated by GNU Autoconf 2.61
-
--Copyright (C) 2003 Free Software Foundation, Inc.
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
- This configure script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it.
- _ACEOF
-- exit 0
-+ exit
- fi
--exec 5>config.log
--cat >&5 <<_ACEOF
-+cat >config.log <<_ACEOF
- This file contains any messages produced by compilers while
- running configure, to aid debugging if configure makes a mistake.
-
- It was created by sipsak $as_me 0.9.6, which was
--generated by GNU Autoconf 2.59. Invocation command line was
-+generated by GNU Autoconf 2.61. Invocation command line was
-
- $ $0 $@
-
- _ACEOF
-+exec 5>>config.log
- {
- cat <<_ASUNAME
- ## --------- ##
-@@ -1012,7 +1426,7 @@ uname -v = `(uname -v) 2>/dev/null || ec
- /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
- /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
- /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
--hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
- /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
- /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
- /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-@@ -1026,6 +1440,7 @@ do
- test -z "$as_dir" && as_dir=.
- echo "PATH: $as_dir"
- done
-+IFS=$as_save_IFS
-
- } >&5
-
-@@ -1047,7 +1462,6 @@ _ACEOF
- ac_configure_args=
- ac_configure_args0=
- ac_configure_args1=
--ac_sep=
- ac_must_keep_next=false
- for ac_pass in 1 2
- do
-@@ -1058,7 +1472,7 @@ do
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
-- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-+ *\'*)
- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
-@@ -1080,9 +1494,7 @@ do
- -* ) ac_must_keep_next=true ;;
- esac
- fi
-- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-- # Get rid of the leading space.
-- ac_sep=" "
-+ ac_configure_args="$ac_configure_args '$ac_arg'"
- ;;
- esac
- done
-@@ -1093,8 +1505,8 @@ $as_unset ac_configure_args1 || test "${
- # When interrupted or exit'd, cleanup temporary files, and complete
- # config.log. We remove comments because anyway the quotes in there
- # would cause problems or look ugly.
--# WARNING: Be sure not to use single quotes in there, as some shells,
--# such as our DU 5.0 friend, will then `close' the trap.
-+# WARNING: Use '\'' to represent an apostrophe within the trap.
-+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
- trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
-@@ -1107,20 +1519,34 @@ trap 'exit_status=$?
- _ASBOX
- echo
- # The following way of writing the cache mishandles newlines in values,
--{
-+(
-+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-+ eval ac_val=\$$ac_var
-+ case $ac_val in #(
-+ *${as_nl}*)
-+ case $ac_var in #(
-+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-+ esac
-+ case $ac_var in #(
-+ _ | IFS | as_nl) ;; #(
-+ *) $as_unset $ac_var ;;
-+ esac ;;
-+ esac
-+ done
- (set) 2>&1 |
-- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-- *ac_space=\ *)
-+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-+ *${as_nl}ac_space=\ *)
- sed -n \
-- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-- ;;
-+ "s/'\''/'\''\\\\'\'''\''/g;
-+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-+ ;; #(
- *)
-- sed -n \
-- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
-- esac;
--}
-+ esac |
-+ sort
-+)
- echo
-
- cat <<\_ASBOX
-@@ -1131,22 +1557,28 @@ _ASBOX
- echo
- for ac_var in $ac_subst_vars
- do
-- eval ac_val=$`echo $ac_var`
-- echo "$ac_var='"'"'$ac_val'"'"'"
-+ eval ac_val=\$$ac_var
-+ case $ac_val in
-+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-+ esac
-+ echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- cat <<\_ASBOX
--## ------------- ##
--## Output files. ##
--## ------------- ##
-+## ------------------- ##
-+## File substitutions. ##
-+## ------------------- ##
- _ASBOX
- echo
- for ac_var in $ac_subst_files
- do
-- eval ac_val=$`echo $ac_var`
-- echo "$ac_var='"'"'$ac_val'"'"'"
-+ eval ac_val=\$$ac_var
-+ case $ac_val in
-+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-+ esac
-+ echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-@@ -1158,26 +1590,24 @@ _ASBOX
- ## ----------- ##
- _ASBOX
- echo
-- sed "/^$/d" confdefs.h | sort
-+ cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- echo "$as_me: caught signal $ac_signal"
- echo "$as_me: exit $exit_status"
- } >&5
-- rm -f core *.core &&
-- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
-+ rm -f core *.core core.conftest.* &&
-+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-- ' 0
-+' 0
- for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
- done
- ac_signal=0
-
- # confdefs.h avoids OS command line length limits that DEFS can exceed.
--rm -rf conftest* confdefs.h
--# AIX cpp loses on an empty file, so make sure it contains at least a newline.
--echo >confdefs.h
-+rm -f -r conftest* confdefs.h
-
- # Predefined preprocessor variables.
-
-@@ -1208,14 +1638,17 @@ _ACEOF
-
- # Let the site file select an alternate cache file if it wants to.
- # Prefer explicitly selected file to automatically selected ones.
--if test -z "$CONFIG_SITE"; then
-- if test "x$prefix" != xNONE; then
-- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-- else
-- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-- fi
-+if test -n "$CONFIG_SITE"; then
-+ set x "$CONFIG_SITE"
-+elif test "x$prefix" != xNONE; then
-+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
-+else
-+ set x "$ac_default_prefix/share/config.site" \
-+ "$ac_default_prefix/etc/config.site"
- fi
--for ac_site_file in $CONFIG_SITE; do
-+shift
-+for ac_site_file
-+do
- if test -r "$ac_site_file"; then
- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
- echo "$as_me: loading site script $ac_site_file" >&6;}
-@@ -1231,8 +1664,8 @@ if test -r "$cache_file"; then
- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
- echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
-- [\\/]* | ?:[\\/]* ) . $cache_file;;
-- *) . ./$cache_file;;
-+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
-+ *) . "./$cache_file";;
- esac
- fi
- else
-@@ -1244,12 +1677,11 @@ fi
- # Check that the precious variables saved in the cache have kept the same
- # value.
- ac_cache_corrupted=false
--for ac_var in `(set) 2>&1 |
-- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
-+for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
-- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
-- eval ac_new_val="\$ac_env_${ac_var}_value"
-+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
-+ eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-@@ -1274,8 +1706,7 @@ echo "$as_me: current value: $ac_new_v
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
-- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
-@@ -1292,12 +1723,6 @@ echo "$as_me: error: run \`make distclea
- { (exit 1); exit 1; }; }
- fi
-
--ac_ext=c
--ac_cpp='$CPP $CPPFLAGS'
--ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
--ac_compiler_gnu=$ac_cv_c_compiler_gnu
--
-
-
-
-@@ -1322,33 +1747,44 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
- am__api_version="1.9"
- ac_aux_dir=
--for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-- if test -f $ac_dir/install-sh; then
-+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-+ if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
-- elif test -f $ac_dir/install.sh; then
-+ elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
-- elif test -f $ac_dir/shtool; then
-+ elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
- done
- if test -z "$ac_aux_dir"; then
-- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
--echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
-+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
- { (exit 1); exit 1; }; }
- fi
--ac_config_guess="$SHELL $ac_aux_dir/config.guess"
--ac_config_sub="$SHELL $ac_aux_dir/config.sub"
--ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-+
-+# These three variables are undocumented and unsupported,
-+# and are intended to be withdrawn in a future Autoconf release.
-+# They can cause serious problems if a builder's source tree is in a directory
-+# whose full name contains unusual characters.
-+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-+
-
- # Find a good install program. We prefer a C program (faster),
- # so one script is as good as another. But avoid the broken or
-@@ -1363,8 +1799,8 @@ ac_configure="$SHELL $ac_aux_dir/configu
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # OS/2's system install, which has a completely different semantic
- # ./install, which can be erroneously created by make from ./install.sh.
--echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
--echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
- if test -z "$INSTALL"; then
- if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-@@ -1386,7 +1822,7 @@ case $as_dir/ in
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
-@@ -1405,21 +1841,22 @@ case $as_dir/ in
- ;;
- esac
- done
-+IFS=$as_save_IFS
-
-
- fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
-- # As a last resort, use the slow shell script. We don't cache a
-- # path for INSTALL within a source directory, because that will
-+ # As a last resort, use the slow shell script. Don't cache a
-+ # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
-- # removed, or if the path is relative.
-+ # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
- fi
--echo "$as_me:$LINENO: result: $INSTALL" >&5
--echo "${ECHO_T}$INSTALL" >&6
-+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-+echo "${ECHO_T}$INSTALL" >&6; }
-
- # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
- # It thinks the first close brace ends the variable substitution.
-@@ -1429,8 +1866,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
-
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
--echo "$as_me:$LINENO: checking whether build environment is sane" >&5
--echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
- # Just in case
- sleep 1
- echo timestamp > conftest.file
-@@ -1472,20 +1909,20 @@ echo "$as_me: error: newly created file
- Check your system clock" >&2;}
- { (exit 1); exit 1; }; }
- fi
--echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-+{ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6; }
- test "$program_prefix" != NONE &&
-- program_transform_name="s,^,$program_prefix,;$program_transform_name"
-+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
- # Use a double $ so make ignores it.
- test "$program_suffix" != NONE &&
-- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
-+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
- # Double any \ or $. echo might interpret backslashes.
- # By default was `s,x,x', remove it if useless.
- cat <<\_ACEOF >conftest.sed
- s/[\\$]/&&/g;s/;s,x,x,$//
- _ACEOF
- program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
--rm conftest.sed
-+rm -f conftest.sed
-
- # expand $ac_aux_dir to an absolute path
- am_aux_dir=`cd $ac_aux_dir && pwd`
-@@ -1537,8 +1974,8 @@ for ac_prog in gawk mawk nawk awk
- do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_AWK+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1551,54 +1988,57 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_AWK="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- AWK=$ac_cv_prog_AWK
- if test -n "$AWK"; then
-- echo "$as_me:$LINENO: result: $AWK" >&5
--echo "${ECHO_T}$AWK" >&6
-+ { echo "$as_me:$LINENO: result: $AWK" >&5
-+echo "${ECHO_T}$AWK" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- test -n "$AWK" && break
- done
-
--echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
--echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
--set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
--if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
-+set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.make <<\_ACEOF
-+SHELL = /bin/sh
- all:
-- @echo 'ac_maketemp="$(MAKE)"'
-+ @echo '@@@%%%=$(MAKE)=@@@%%%'
- _ACEOF
- # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
--eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
--if test -n "$ac_maketemp"; then
-- eval ac_cv_prog_make_${ac_make}_set=yes
--else
-- eval ac_cv_prog_make_${ac_make}_set=no
--fi
-+case `${MAKE-make} -f conftest.make 2>/dev/null` in
-+ *@@@%%%=?*=@@@%%%*)
-+ eval ac_cv_prog_make_${ac_make}_set=yes;;
-+ *)
-+ eval ac_cv_prog_make_${ac_make}_set=no;;
-+esac
- rm -f conftest.make
- fi
--if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-+ { echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6; }
- SET_MAKE=
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
- fi
-
-@@ -1669,8 +2109,8 @@ if test "$cross_compiling" != no; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
- set dummy ${ac_tool_prefix}strip; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1683,32 +2123,34 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- STRIP=$ac_cv_prog_STRIP
- if test -n "$STRIP"; then
-- echo "$as_me:$LINENO: result: $STRIP" >&5
--echo "${ECHO_T}$STRIP" >&6
-+ { echo "$as_me:$LINENO: result: $STRIP" >&5
-+echo "${ECHO_T}$STRIP" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- fi
- if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
- set dummy strip; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1721,27 +2163,41 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_STRIP="strip"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
-- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
- fi
- fi
- ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
- if test -n "$ac_ct_STRIP"; then
-- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
--echo "${ECHO_T}$ac_ct_STRIP" >&6
-+ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-- STRIP=$ac_ct_STRIP
-+ if test "x$ac_ct_STRIP" = x; then
-+ STRIP=":"
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-+whose name does not start with the host triplet. If you think this
-+configuration is useful to you, please write to autoconf@gnu.org." >&5
-+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-+whose name does not start with the host triplet. If you think this
-+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ STRIP=$ac_ct_STRIP
-+ fi
- else
- STRIP="$ac_cv_prog_STRIP"
- fi
-@@ -1761,17 +2217,17 @@ am__tar='${AMTAR} chof - "$$tardir"'; am
-
-
-
--echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
--echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
-- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
-+{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
-+ # Check whether --enable-maintainer-mode was given.
- if test "${enable_maintainer_mode+set}" = set; then
-- enableval="$enable_maintainer_mode"
-- USE_MAINTAINER_MODE=$enableval
-+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
- else
- USE_MAINTAINER_MODE=no
--fi;
-- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
--echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
-+fi
-+
-+ { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
-
-
- if test $USE_MAINTAINER_MODE = yes; then
-@@ -1786,7 +2242,7 @@ fi
-
-
-
-- ac_config_headers="$ac_config_headers config.h"
-+ac_config_headers="$ac_config_headers config.h"
-
-
- # Checks for programs.
-@@ -1798,8 +2254,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
- set dummy ${ac_tool_prefix}gcc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1812,32 +2268,34 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
-+ { echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- fi
- if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
- set dummy gcc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1850,36 +2308,51 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="gcc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- ac_ct_CC=$ac_cv_prog_ac_ct_CC
- if test -n "$ac_ct_CC"; then
-- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6
-+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-- CC=$ac_ct_CC
-+ if test "x$ac_ct_CC" = x; then
-+ CC=""
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-+whose name does not start with the host triplet. If you think this
-+configuration is useful to you, please write to autoconf@gnu.org." >&5
-+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-+whose name does not start with the host triplet. If you think this
-+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ CC=$ac_ct_CC
-+ fi
- else
- CC="$ac_cv_prog_CC"
- fi
-
- if test -z "$CC"; then
-- if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
- set dummy ${ac_tool_prefix}cc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1892,74 +2365,34 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
--else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
--fi
--
--fi
--if test -z "$ac_cv_prog_CC"; then
-- ac_ct_CC=$CC
-- # Extract the first word of "cc", so it can be a program name with args.
--set dummy cc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
--if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-- echo $ECHO_N "(cached) $ECHO_C" >&6
--else
-- if test -n "$ac_ct_CC"; then
-- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
--else
--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_prog_ac_ct_CC="cc"
-- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
--done
--
--fi
--fi
--ac_ct_CC=$ac_cv_prog_ac_ct_CC
--if test -n "$ac_ct_CC"; then
-- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6
-+ { echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-- CC=$ac_ct_CC
--else
-- CC="$ac_cv_prog_CC"
--fi
-
-+ fi
- fi
- if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
- set dummy cc; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -1973,7 +2406,7 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
-@@ -1984,6 +2417,7 @@ do
- fi
- done
- done
-+IFS=$as_save_IFS
-
- if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
-@@ -2001,22 +2435,23 @@ fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
-+ { echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- fi
- if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
-- for ac_prog in cl
-+ for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
- set dummy $ac_tool_prefix$ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -2029,36 +2464,38 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- CC=$ac_cv_prog_CC
- if test -n "$CC"; then
-- echo "$as_me:$LINENO: result: $CC" >&5
--echo "${ECHO_T}$CC" >&6
-+ { echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- test -n "$CC" && break
- done
- fi
- if test -z "$CC"; then
- ac_ct_CC=$CC
-- for ac_prog in cl
-+ for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -2071,29 +2508,45 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- fi
- fi
- ac_ct_CC=$ac_cv_prog_ac_ct_CC
- if test -n "$ac_ct_CC"; then
-- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
--echo "${ECHO_T}$ac_ct_CC" >&6
-+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- test -n "$ac_ct_CC" && break
- done
-
-- CC=$ac_ct_CC
-+ if test "x$ac_ct_CC" = x; then
-+ CC=""
-+ else
-+ case $cross_compiling:$ac_tool_warned in
-+yes:)
-+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-+whose name does not start with the host triplet. If you think this
-+configuration is useful to you, please write to autoconf@gnu.org." >&5
-+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-+whose name does not start with the host triplet. If you think this
-+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-+ac_tool_warned=yes ;;
-+esac
-+ CC=$ac_ct_CC
-+ fi
- fi
-
- fi
-@@ -2106,21 +2559,35 @@ See \`config.log' for more details." >&2
- { (exit 1); exit 1; }; }
-
- # Provide some information about the compiler.
--echo "$as_me:$LINENO:" \
-- "checking for C compiler version" >&5
-+echo "$as_me:$LINENO: checking for C compiler version" >&5
- ac_compiler=`set X $ac_compile; echo $2`
--{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-- (eval $ac_compiler --version </dev/null >&5) 2>&5
-+{ (ac_try="$ac_compiler --version >&5"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compiler --version >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
--{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-- (eval $ac_compiler -v </dev/null >&5) 2>&5
-+{ (ac_try="$ac_compiler -v >&5"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compiler -v >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
--{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-- (eval $ac_compiler -V </dev/null >&5) 2>&5
-+{ (ac_try="$ac_compiler -V >&5"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compiler -V >&5") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-@@ -2145,47 +2612,77 @@ ac_clean_files="$ac_clean_files a.out a.
- # Try to create an executable without -o first, disregard a.out.
- # It will help us diagnose broken compilers, and finding out an intuition
- # of exeext.
--echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
--echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
- ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
--if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
-- (eval $ac_link_default) 2>&5
-+#
-+# List of possible output files, starting from the most likely.
-+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-+# only as a last resort. b.out is created by i960 compilers.
-+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-+#
-+# The IRIX 6 linker writes into existing files which may not be
-+# executable, retaining their permissions. Remove them first so a
-+# subsequent execution test works.
-+ac_rmfiles=
-+for ac_file in $ac_files
-+do
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
-+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-+ esac
-+done
-+rm -f $ac_rmfiles
-+
-+if { (ac_try="$ac_link_default"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link_default") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
-- # Find the output, starting from the most likely. This scheme is
--# not robust to junk in `.', hence go to wildcards (a.*) only as a last
--# resort.
--
--# Be careful to initialize this variable, since it used to be cached.
--# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
--ac_cv_exeext=
--# b.out is created by i960 compilers.
--for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
-+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-+# in a Makefile. We should not override ac_cv_exeext if it was cached,
-+# so that the user can short-circuit this test for compilers unknown to
-+# Autoconf.
-+for ac_file in $ac_files ''
- do
- test -f "$ac_file" || continue
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
-- ;;
-- conftest.$ac_ext )
-- # This is the source file.
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
-- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-- # FIXME: I believe we export ac_cv_exeext for Libtool,
-- # but it would be cool to find out if it's true. Does anybody
-- # maintain Libtool? --akim.
-- export ac_cv_exeext
-+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-+ then :; else
-+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-+ fi
-+ # We set ac_cv_exeext here because the later test for it is not
-+ # safe: cross compilers may not add the suffix if given an `-o'
-+ # argument, so we may need to know it at that point already.
-+ # Even if this section looks crufty: it has the advantage of
-+ # actually working.
- break;;
- * )
- break;;
- esac
- done
-+test "$ac_cv_exeext" = no && ac_cv_exeext=
-+
- else
-+ ac_file=''
-+fi
-+
-+{ echo "$as_me:$LINENO: result: $ac_file" >&5
-+echo "${ECHO_T}$ac_file" >&6; }
-+if test -z "$ac_file"; then
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-@@ -2197,19 +2694,21 @@ See \`config.log' for more details." >&2
- fi
-
- ac_exeext=$ac_cv_exeext
--echo "$as_me:$LINENO: result: $ac_file" >&5
--echo "${ECHO_T}$ac_file" >&6
-
--# Check the compiler produces executables we can run. If not, either
-+# Check that the compiler produces executables we can run. If not, either
- # the compiler is broken, or we cross compile.
--echo "$as_me:$LINENO: checking whether the C compiler works" >&5
--echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
- # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
- # If not cross compiling, check that we can run a simple program.
- if test "$cross_compiling" != yes; then
- if { ac_try='./$ac_file'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+ { (case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-@@ -2228,22 +2727,27 @@ See \`config.log' for more details." >&2
- fi
- fi
- fi
--echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-+{ echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6; }
-
- rm -f a.out a.exe conftest$ac_cv_exeext b.out
- ac_clean_files=$ac_clean_files_save
--# Check the compiler produces executables we can run. If not, either
-+# Check that the compiler produces executables we can run. If not, either
- # the compiler is broken, or we cross compile.
--echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
--echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
--echo "$as_me:$LINENO: result: $cross_compiling" >&5
--echo "${ECHO_T}$cross_compiling" >&6
-+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-+echo "${ECHO_T}$cross_compiling" >&6; }
-
--echo "$as_me:$LINENO: checking for suffix of executables" >&5
--echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
-@@ -2254,9 +2758,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_l
- for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-- export ac_cv_exeext
- break;;
- * ) break;;
- esac
-@@ -2270,14 +2773,14 @@ See \`config.log' for more details." >&2
- fi
-
- rm -f conftest$ac_cv_exeext
--echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
--echo "${ECHO_T}$ac_cv_exeext" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-+echo "${ECHO_T}$ac_cv_exeext" >&6; }
-
- rm -f conftest.$ac_ext
- EXEEXT=$ac_cv_exeext
- ac_exeext=$EXEEXT
--echo "$as_me:$LINENO: checking for suffix of object files" >&5
--echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
- if test "${ac_cv_objext+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -2297,14 +2800,20 @@ main ()
- }
- _ACEOF
- rm -f conftest.o conftest.obj
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>&5
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then
-- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
-+ for ac_file in conftest.o conftest.obj conftest.*; do
-+ test -f "$ac_file" || continue;
- case $ac_file in
-- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-@@ -2322,12 +2831,12 @@ fi
-
- rm -f conftest.$ac_cv_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
--echo "${ECHO_T}$ac_cv_objext" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-+echo "${ECHO_T}$ac_cv_objext" >&6; }
- OBJEXT=$ac_cv_objext
- ac_objext=$OBJEXT
--echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
--echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
- if test "${ac_cv_c_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -2350,50 +2859,49 @@ main ()
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_compiler_gnu=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_compiler_gnu=no
-+ ac_compiler_gnu=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
- fi
--echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
--echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
- GCC=`test $ac_compiler_gnu = yes && echo yes`
- ac_test_CFLAGS=${CFLAGS+set}
- ac_save_CFLAGS=$CFLAGS
--CFLAGS="-g"
--echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
--echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
- if test "${ac_cv_prog_cc_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- cat >conftest.$ac_ext <<_ACEOF
-+ ac_save_c_werror_flag=$ac_c_werror_flag
-+ ac_c_werror_flag=yes
-+ ac_cv_prog_cc_g=no
-+ CFLAGS="-g"
-+ cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
-@@ -2409,38 +2917,118 @@ main ()
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
-+ ac_cv_prog_cc_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ CFLAGS=""
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_c_werror_flag=$ac_save_c_werror_flag
-+ CFLAGS="-g"
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_prog_cc_g=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_prog_cc_g=no
-+
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
--echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+ ac_c_werror_flag=$ac_save_c_werror_flag
-+fi
-+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
- elif test $ac_cv_prog_cc_g = yes; then
-@@ -2456,12 +3044,12 @@ else
- CFLAGS=
- fi
- fi
--echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
--echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
--if test "${ac_cv_prog_cc_stdc+set}" = set; then
-+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-+if test "${ac_cv_prog_cc_c89+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_cv_prog_cc_stdc=no
-+ ac_cv_prog_cc_c89=no
- ac_save_CC=$CC
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -2495,12 +3083,17 @@ static char *f (char * (*g) (char **, in
- /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
-- as 'x'. The following induces an error, until -std1 is added to get
-+ as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
-- that's true only with -std1. */
-+ that's true only with -std. */
- int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-+ inside strings and character constants. */
-+#define FOO(x) 'x'
-+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-+
- int test (int i, double x);
- struct s1 {int (*f) (int a);};
- struct s2 {int (*f) (double a);};
-@@ -2515,205 +3108,57 @@ return f (e, argv, 0) != argv[0] || f
- return 0;
- }
- _ACEOF
--# Don't try gcc -ansi; that turns off useful extensions and
--# breaks some systems' header files.
--# AIX -qlanglvl=ansi
--# Ultrix and OSF/1 -std1
--# HP-UX 10.20 and later -Ae
--# HP-UX older versions -Aa -D_HPUX_SOURCE
--# SVR4 -Xc -D__EXTENSIONS__
--for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
- do
- CC="$ac_save_CC $ac_arg"
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-- ac_cv_prog_cc_stdc=$ac_arg
--break
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
-+ ac_cv_prog_cc_c89=$ac_arg
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-+
- fi
--rm -f conftest.err conftest.$ac_objext
-+
-+rm -f core conftest.err conftest.$ac_objext
-+ test "x$ac_cv_prog_cc_c89" != "xno" && break
- done
--rm -f conftest.$ac_ext conftest.$ac_objext
-+rm -f conftest.$ac_ext
- CC=$ac_save_CC
-
- fi
--
--case "x$ac_cv_prog_cc_stdc" in
-- x|xno)
-- echo "$as_me:$LINENO: result: none needed" >&5
--echo "${ECHO_T}none needed" >&6 ;;
-+# AC_CACHE_VAL
-+case "x$ac_cv_prog_cc_c89" in
-+ x)
-+ { echo "$as_me:$LINENO: result: none needed" >&5
-+echo "${ECHO_T}none needed" >&6; } ;;
-+ xno)
-+ { echo "$as_me:$LINENO: result: unsupported" >&5
-+echo "${ECHO_T}unsupported" >&6; } ;;
- *)
-- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
--echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
-- CC="$CC $ac_cv_prog_cc_stdc" ;;
-+ CC="$CC $ac_cv_prog_cc_c89"
-+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
- esac
-
--# Some people use a C++ compiler to compile C. Since we use `exit',
--# in C++ we need to declare it. In case someone uses the same compiler
--# for both compiling C and C++ we need to have the C++ compiler decide
--# the declaration of exit, since it's the most demanding environment.
--cat >conftest.$ac_ext <<_ACEOF
--#ifndef __cplusplus
-- choke me
--#endif
--_ACEOF
--rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-- ac_status=$?
-- grep -v '^ *+' conftest.er1 >conftest.err
-- rm -f conftest.er1
-- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-- for ac_declaration in \
-- '' \
-- 'extern "C" void std::exit (int) throw (); using std::exit;' \
-- 'extern "C" void std::exit (int); using std::exit;' \
-- 'extern "C" void exit (int) throw ();' \
-- 'extern "C" void exit (int);' \
-- 'void exit (int);'
--do
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--$ac_declaration
--#include <stdlib.h>
--int
--main ()
--{
--exit (42);
-- ;
-- return 0;
--}
--_ACEOF
--rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-- ac_status=$?
-- grep -v '^ *+' conftest.er1 >conftest.err
-- rm -f conftest.er1
-- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-- :
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
-
--continue
--fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-- cat >conftest.$ac_ext <<_ACEOF
--/* confdefs.h. */
--_ACEOF
--cat confdefs.h >>conftest.$ac_ext
--cat >>conftest.$ac_ext <<_ACEOF
--/* end confdefs.h. */
--$ac_declaration
--int
--main ()
--{
--exit (42);
-- ;
-- return 0;
--}
--_ACEOF
--rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-- ac_status=$?
-- grep -v '^ *+' conftest.er1 >conftest.err
-- rm -f conftest.er1
-- cat conftest.err >&5
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-- break
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--done
--rm -f conftest*
--if test -n "$ac_declaration"; then
-- echo '#ifdef __cplusplus' >>confdefs.h
-- echo $ac_declaration >>confdefs.h
-- echo '#endif' >>confdefs.h
--fi
--
--else
-- echo "$as_me: failed program was:" >&5
--sed 's/^/| /' conftest.$ac_ext >&5
--
--fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-@@ -2721,7 +3166,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- DEPDIR="${am__leading_dot}deps"
-
-- ac_config_commands="$ac_config_commands depfiles"
-+ac_config_commands="$ac_config_commands depfiles"
-
-
- am_make=${MAKE-make}
-@@ -2731,8 +3176,8 @@ am__doit:
- .PHONY: am__doit
- END
- # If we don't find an include directive, just comment out the code.
--echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
--echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
- am__include="#"
- am__quote=
- _am_result=none
-@@ -2759,15 +3204,15 @@ if test "$am__include" = "#"; then
- fi
-
-
--echo "$as_me:$LINENO: result: $_am_result" >&5
--echo "${ECHO_T}$_am_result" >&6
-+{ echo "$as_me:$LINENO: result: $_am_result" >&5
-+echo "${ECHO_T}$_am_result" >&6; }
- rm -f confinc confmf
-
--# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
-+# Check whether --enable-dependency-tracking was given.
- if test "${enable_dependency_tracking+set}" = set; then
-- enableval="$enable_dependency_tracking"
-+ enableval=$enable_dependency_tracking;
-+fi
-
--fi;
- if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
-@@ -2787,8 +3232,8 @@ fi
-
- depcc="$CC" am_compiler_list=
-
--echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
--echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
- if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -2877,8 +3322,8 @@ else
- fi
-
- fi
--echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
--echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
-+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
- CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
-
-@@ -2902,10 +3347,10 @@ fi
-
- ssp_cc=yes
- if test "X$CC" != "X"; then
-- echo "$as_me:$LINENO: checking whether ${CC} accepts -fstack-protector" >&5
--echo $ECHO_N "checking whether ${CC} accepts -fstack-protector... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking whether ${CC} accepts -fstack-protector" >&5
-+echo $ECHO_N "checking whether ${CC} accepts -fstack-protector... $ECHO_C" >&6; }
- ssp_old_cflags="$CFLAGS"
-- CFLAGS="$CFLAGS -fstack-protector"
-+ CFLAGS="$CFLAGS"
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -2922,35 +3367,31 @@ main ()
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- :
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ssp_cc=no
-+ ssp_cc=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- echo $ssp_cc
- if test "X$ssp_cc" = "Xno"; then
- CFLAGS="$ssp_old_cflags"
-@@ -2964,12 +3405,11 @@ _ACEOF
- fi
-
-
-- echo "$as_me:$LINENO: checking for distcc" >&5
--echo $ECHO_N "checking for distcc... $ECHO_C" >&6
-- # Check whether --enable-distcc or --disable-distcc was given.
-+ { echo "$as_me:$LINENO: checking for distcc" >&5
-+echo $ECHO_N "checking for distcc... $ECHO_C" >&6; }
-+ # Check whether --enable-distcc was given.
- if test "${enable_distcc+set}" = set; then
-- enableval="$enable_distcc"
--
-+ enableval=$enable_distcc;
- distcc_dirs="/ /usr /usr/local /usr/local/gnu /usr/gnu"
- for dir in $distcc_dirs; do
- if test -x "$dir/bin/distcc"; then
-@@ -2983,16 +3423,17 @@ if test "${enable_distcc+set}" = set; th
- echo "$as_me: error: not found" >&2;}
- { (exit 1); exit 1; }; }
- else
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-+ { echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6; }
-
- fi
-
- else
-- echo "$as_me:$LINENO: result: not requested" >&5
--echo "${ECHO_T}not requested" >&6
-+ { echo "$as_me:$LINENO: result: not requested" >&5
-+echo "${ECHO_T}not requested" >&6; }
-+
-+fi
-
--fi;
-
-
- # Find a good install program. We prefer a C program (faster),
-@@ -3008,8 +3449,8 @@ fi;
- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
- # OS/2's system install, which has a completely different semantic
- # ./install, which can be erroneously created by make from ./install.sh.
--echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
--echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
- if test -z "$INSTALL"; then
- if test "${ac_cv_path_install+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-@@ -3031,7 +3472,7 @@ case $as_dir/ in
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
-@@ -3050,21 +3491,22 @@ case $as_dir/ in
- ;;
- esac
- done
-+IFS=$as_save_IFS
-
-
- fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
-- # As a last resort, use the slow shell script. We don't cache a
-- # path for INSTALL within a source directory, because that will
-+ # As a last resort, use the slow shell script. Don't cache a
-+ # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
-- # removed, or if the path is relative.
-+ # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
- fi
--echo "$as_me:$LINENO: result: $INSTALL" >&5
--echo "${ECHO_T}$INSTALL" >&6
-+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-+echo "${ECHO_T}$INSTALL" >&6; }
-
- # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
- # It thinks the first close brace ends the variable substitution.
-@@ -3077,57 +3519,86 @@ test -z "$INSTALL_DATA" && INSTALL_DATA=
-
- # Checks for libraries.
- # Make sure we can run config.sub.
--$ac_config_sub sun4 >/dev/null 2>&1 ||
-- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
--echo "$as_me: error: cannot run $ac_config_sub" >&2;}
-+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-+ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
- { (exit 1); exit 1; }; }
-
--echo "$as_me:$LINENO: checking build system type" >&5
--echo $ECHO_N "checking build system type... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking build system type" >&5
-+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
- if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_cv_build_alias=$build_alias
--test -z "$ac_cv_build_alias" &&
-- ac_cv_build_alias=`$ac_config_guess`
--test -z "$ac_cv_build_alias" &&
-+ ac_build_alias=$build_alias
-+test "x$ac_build_alias" = x &&
-+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-+test "x$ac_build_alias" = x &&
- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
- echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
--ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
--echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
-+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
- fi
--echo "$as_me:$LINENO: result: $ac_cv_build" >&5
--echo "${ECHO_T}$ac_cv_build" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-+echo "${ECHO_T}$ac_cv_build" >&6; }
-+case $ac_cv_build in
-+*-*-*) ;;
-+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-+echo "$as_me: error: invalid value of canonical build" >&2;}
-+ { (exit 1); exit 1; }; };;
-+esac
- build=$ac_cv_build
--build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
--build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
--build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+ac_save_IFS=$IFS; IFS='-'
-+set x $ac_cv_build
-+shift
-+build_cpu=$1
-+build_vendor=$2
-+shift; shift
-+# Remember, the first character of IFS is used to create $*,
-+# except with old shells:
-+build_os=$*
-+IFS=$ac_save_IFS
-+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
--echo "$as_me:$LINENO: checking host system type" >&5
--echo $ECHO_N "checking host system type... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking host system type" >&5
-+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
- if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- ac_cv_host_alias=$host_alias
--test -z "$ac_cv_host_alias" &&
-- ac_cv_host_alias=$ac_cv_build_alias
--ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
--echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
-+ if test "x$host_alias" = x; then
-+ ac_cv_host=$ac_cv_build
-+else
-+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-+fi
-
- fi
--echo "$as_me:$LINENO: result: $ac_cv_host" >&5
--echo "${ECHO_T}$ac_cv_host" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-+echo "${ECHO_T}$ac_cv_host" >&6; }
-+case $ac_cv_host in
-+*-*-*) ;;
-+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-+echo "$as_me: error: invalid value of canonical host" >&2;}
-+ { (exit 1); exit 1; }; };;
-+esac
- host=$ac_cv_host
--host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
--host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
--host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+ac_save_IFS=$IFS; IFS='-'
-+set x $ac_cv_host
-+shift
-+host_cpu=$1
-+host_vendor=$2
-+shift; shift
-+# Remember, the first character of IFS is used to create $*,
-+# except with old shells:
-+host_os=$*
-+IFS=$ac_save_IFS
-+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-@@ -3147,8 +3618,8 @@ ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
- ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
--echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
--echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
- # On Suns, sometimes $CPP names a directory.
- if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-@@ -3182,24 +3653,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- #endif
- Syntax error
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- :
- else
- echo "$as_me: failed program was:" >&5
-@@ -3208,9 +3677,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
- # Broken: fails on valid input.
- continue
- fi
-+
- rm -f conftest.err conftest.$ac_ext
-
-- # OK, works on sane cases. Now check whether non-existent headers
-+ # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -3220,24 +3690,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <ac_nonexistent.h>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- # Broken: success on invalid input.
- continue
- else
-@@ -3248,6 +3716,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
- ac_preproc_ok=:
- break
- fi
-+
- rm -f conftest.err conftest.$ac_ext
-
- done
-@@ -3265,8 +3734,8 @@ fi
- else
- ac_cv_prog_CPP=$CPP
- fi
--echo "$as_me:$LINENO: result: $CPP" >&5
--echo "${ECHO_T}$CPP" >&6
-+{ echo "$as_me:$LINENO: result: $CPP" >&5
-+echo "${ECHO_T}$CPP" >&6; }
- ac_preproc_ok=false
- for ac_c_preproc_warn_flag in '' yes
- do
-@@ -3289,24 +3758,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- #endif
- Syntax error
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- :
- else
- echo "$as_me: failed program was:" >&5
-@@ -3315,9 +3782,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
- # Broken: fails on valid input.
- continue
- fi
-+
- rm -f conftest.err conftest.$ac_ext
-
-- # OK, works on sane cases. Now check whether non-existent headers
-+ # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -3327,24 +3795,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <ac_nonexistent.h>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- # Broken: success on invalid input.
- continue
- else
-@@ -3355,6 +3821,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
- ac_preproc_ok=:
- break
- fi
-+
- rm -f conftest.err conftest.$ac_ext
-
- done
-@@ -3377,23 +3844,170 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
--echo "$as_me:$LINENO: checking for egrep" >&5
--echo $ECHO_N "checking for egrep... $ECHO_C" >&6
--if test "${ac_cv_prog_egrep+set}" = set; then
-+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-+if test "${ac_cv_path_GREP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-- then ac_cv_prog_egrep='grep -E'
-- else ac_cv_prog_egrep='egrep'
-+ # Extract the first word of "grep ggrep" to use in msg output
-+if test -z "$GREP"; then
-+set dummy grep ggrep; ac_prog_name=$2
-+if test "${ac_cv_path_GREP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_path_GREP_found=false
-+# Loop through the user's path and test for each of PROGNAME-LIST
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_prog in grep ggrep; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-+ # Check for GNU ac_path_GREP and select it if it is found.
-+ # Check for GNU $ac_path_GREP
-+case `"$ac_path_GREP" --version 2>&1` in
-+*GNU*)
-+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-+*)
-+ ac_count=0
-+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
-+ while :
-+ do
-+ cat "conftest.in" "conftest.in" >"conftest.tmp"
-+ mv "conftest.tmp" "conftest.in"
-+ cp "conftest.in" "conftest.nl"
-+ echo 'GREP' >> "conftest.nl"
-+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-+ ac_count=`expr $ac_count + 1`
-+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
-+ # Best one so far, save it but keep looking for a better one
-+ ac_cv_path_GREP="$ac_path_GREP"
-+ ac_path_GREP_max=$ac_count
- fi
-+ # 10*(2^10) chars as input seems more than enough
-+ test $ac_count -gt 10 && break
-+ done
-+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-+esac
-+
-+
-+ $ac_path_GREP_found && break 3
-+ done
-+done
-+
-+done
-+IFS=$as_save_IFS
-+
-+
- fi
--echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
--echo "${ECHO_T}$ac_cv_prog_egrep" >&6
-- EGREP=$ac_cv_prog_egrep
-
-+GREP="$ac_cv_path_GREP"
-+if test -z "$GREP"; then
-+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-
--echo "$as_me:$LINENO: checking for ANSI C header files" >&5
--echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-+else
-+ ac_cv_path_GREP=$GREP
-+fi
-+
-+
-+fi
-+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
-+ GREP="$ac_cv_path_GREP"
-+
-+
-+{ echo "$as_me:$LINENO: checking for egrep" >&5
-+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-+if test "${ac_cv_path_EGREP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-+ then ac_cv_path_EGREP="$GREP -E"
-+ else
-+ # Extract the first word of "egrep" to use in msg output
-+if test -z "$EGREP"; then
-+set dummy egrep; ac_prog_name=$2
-+if test "${ac_cv_path_EGREP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_path_EGREP_found=false
-+# Loop through the user's path and test for each of PROGNAME-LIST
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_prog in egrep; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-+ # Check for GNU ac_path_EGREP and select it if it is found.
-+ # Check for GNU $ac_path_EGREP
-+case `"$ac_path_EGREP" --version 2>&1` in
-+*GNU*)
-+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-+*)
-+ ac_count=0
-+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
-+ while :
-+ do
-+ cat "conftest.in" "conftest.in" >"conftest.tmp"
-+ mv "conftest.tmp" "conftest.in"
-+ cp "conftest.in" "conftest.nl"
-+ echo 'EGREP' >> "conftest.nl"
-+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-+ ac_count=`expr $ac_count + 1`
-+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-+ # Best one so far, save it but keep looking for a better one
-+ ac_cv_path_EGREP="$ac_path_EGREP"
-+ ac_path_EGREP_max=$ac_count
-+ fi
-+ # 10*(2^10) chars as input seems more than enough
-+ test $ac_count -gt 10 && break
-+ done
-+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-+esac
-+
-+
-+ $ac_path_EGREP_found && break 3
-+ done
-+done
-+
-+done
-+IFS=$as_save_IFS
-+
-+
-+fi
-+
-+EGREP="$ac_cv_path_EGREP"
-+if test -z "$EGREP"; then
-+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+else
-+ ac_cv_path_EGREP=$EGREP
-+fi
-+
-+
-+ fi
-+fi
-+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
-+ EGREP="$ac_cv_path_EGREP"
-+
-+
-+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
- if test "${ac_cv_header_stdc+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -3417,35 +4031,31 @@ main ()
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_header_stdc=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_header_stdc=no
-+ ac_cv_header_stdc=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
- if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-@@ -3501,6 +4111,7 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <ctype.h>
-+#include <stdlib.h>
- #if ((' ' & 0x0FF) == 0x020)
- # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
- # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-@@ -3520,18 +4131,27 @@ main ()
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
-- exit(2);
-- exit (0);
-+ return 2;
-+ return 0;
- }
- _ACEOF
- rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+ { (case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-@@ -3544,12 +4164,14 @@ sed 's/^/| /' conftest.$ac_ext >&5
- ( exit $ac_status )
- ac_cv_header_stdc=no
- fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
- fi
-+
-+
- fi
- fi
--echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
--echo "${ECHO_T}$ac_cv_header_stdc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
- if test $ac_cv_header_stdc = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -3572,9 +4194,9 @@ for ac_header in sys/types.h sys/stat.h
- inttypes.h stdint.h unistd.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -3588,38 +4210,35 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--eval "$as_ac_Header=no"
-+ eval "$as_ac_Header=no"
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-@@ -3651,18 +4270,19 @@ done
- for ac_header in ctype.h errno.h arpa/inet.h netdb.h netinet/in.h netinet/in_systm.h limits.h sys/poll.h regex.h signal.h stdlib.h stdio.h string.h sys/param.h sys/socket.h sys/time.h unistd.h sys/utsname.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -3673,41 +4293,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -3716,24 +4332,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -3741,9 +4355,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -3767,25 +4382,24 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
-@@ -3805,18 +4419,19 @@ done
- for ac_header in getopt.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -3827,41 +4442,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -3870,24 +4481,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -3895,9 +4504,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -3921,25 +4531,24 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
-@@ -3951,8 +4560,8 @@ fi
-
- done
-
--echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
--echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
-+echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6; }
- if test "${ac_cv_header_sys_wait_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -3965,7 +4574,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #include <sys/types.h>
- #include <sys/wait.h>
- #ifndef WEXITSTATUS
--# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-+# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
- #endif
- #ifndef WIFEXITED
- # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-@@ -3982,38 +4591,34 @@ main ()
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_header_sys_wait_h=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_header_sys_wait_h=no
-+ ac_cv_header_sys_wait_h=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
--echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
-+echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6; }
- if test $ac_cv_header_sys_wait_h = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -4022,8 +4627,8 @@ _ACEOF
-
- fi
-
--echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
--echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-+echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
- if test "${ac_cv_header_time+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -4047,38 +4652,34 @@ return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_header_time=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_header_time=no
-+ ac_cv_header_time=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
--echo "${ECHO_T}$ac_cv_header_time" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-+echo "${ECHO_T}$ac_cv_header_time" >&6; }
- if test $ac_cv_header_time = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -4094,9 +4695,9 @@ fi
- for ac_header in netinet/ip.h netinet/udp.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -4115,38 +4716,35 @@ cat >>conftest.$ac_ext <<_ACEOF
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--eval "$as_ac_Header=no"
-+ eval "$as_ac_Header=no"
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-@@ -4162,9 +4760,9 @@ done
- for ac_header in netinet/ip_icmp.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -4186,38 +4784,35 @@ cat >>conftest.$ac_ext <<_ACEOF
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- eval "$as_ac_Header=yes"
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--eval "$as_ac_Header=no"
-+ eval "$as_ac_Header=no"
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-@@ -4232,18 +4827,19 @@ done
- for ac_header in cygwin/icmp.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -4254,41 +4850,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -4297,24 +4889,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -4322,9 +4912,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -4348,25 +4939,24 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
-@@ -4380,8 +4970,8 @@ done
-
-
- # Checks for typedefs, structures, and compiler characteristics.
--echo "$as_me:$LINENO: checking for size_t" >&5
--echo $ECHO_N "checking for size_t... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for size_t" >&5
-+echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
- if test "${ac_cv_type_size_t+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -4392,62 +4982,59 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- $ac_includes_default
-+typedef size_t ac__type_new_;
- int
- main ()
- {
--if ((size_t *) 0)
-+if ((ac__type_new_ *) 0)
- return 0;
--if (sizeof (size_t))
-+if (sizeof (ac__type_new_))
- return 0;
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_type_size_t=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_type_size_t=no
-+ ac_cv_type_size_t=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
--echo "${ECHO_T}$ac_cv_type_size_t" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-+echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
- if test $ac_cv_type_size_t = yes; then
- :
- else
-
- cat >>confdefs.h <<_ACEOF
--#define size_t unsigned
-+#define size_t unsigned int
- _ACEOF
-
- fi
-
--echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
--echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-+echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
- if test "${ac_cv_header_time+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -4471,38 +5058,34 @@ return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_header_time=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_header_time=no
-+ ac_cv_header_time=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
--echo "${ECHO_T}$ac_cv_header_time" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-+echo "${ECHO_T}$ac_cv_header_time" >&6; }
- if test $ac_cv_header_time = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -4517,18 +5100,19 @@ fi
- for ac_header in stdlib.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -4539,41 +5123,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -4582,24 +5162,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -4607,9 +5185,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -4633,25 +5212,24 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
-@@ -4663,8 +5241,8 @@ fi
-
- done
-
--echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
--echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
-+echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; }
- if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -4677,7 +5255,7 @@ _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
--#if STDC_HEADERS || HAVE_STDLIB_H
-+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
- # include <stdlib.h>
- #else
- char *malloc ();
-@@ -4686,19 +5264,28 @@ char *malloc ();
- int
- main ()
- {
--exit (malloc (0) ? 0 : 1);
-+return ! malloc (0);
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+ { (case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-@@ -4711,11 +5298,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
- ( exit $ac_status )
- ac_cv_func_malloc_0_nonnull=no
- fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
- fi
-+
-+
- fi
--echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
--echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
-+echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; }
- if test $ac_cv_func_malloc_0_nonnull = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -4727,12 +5316,10 @@ else
- #define HAVE_MALLOC 0
- _ACEOF
-
-- case $LIBOBJS in
-- "malloc.$ac_objext" | \
-- *" malloc.$ac_objext" | \
-- "malloc.$ac_objext "* | \
-+ case " $LIBOBJS " in
- *" malloc.$ac_objext "* ) ;;
-- *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;;
-+ *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
-+ ;;
- esac
-
-
-@@ -4749,18 +5336,19 @@ fi
- for ac_header in sys/select.h sys/socket.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -4771,41 +5359,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -4814,24 +5398,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -4839,9 +5421,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -4865,25 +5448,24 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
-@@ -4895,13 +5477,13 @@ fi
-
- done
-
--echo "$as_me:$LINENO: checking types of arguments for select" >&5
--echo $ECHO_N "checking types of arguments for select... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking types of arguments for select" >&5
-+echo $ECHO_N "checking types of arguments for select... $ECHO_C" >&6; }
- if test "${ac_cv_func_select_args+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- for ac_arg234 in 'fd_set *' 'int *' 'void *'; do
-- for ac_arg1 in 'int' 'size_t' 'unsigned long' 'unsigned'; do
-+ for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do
- for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
-@@ -4910,10 +5492,10 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- $ac_includes_default
--#if HAVE_SYS_SELECT_H
-+#ifdef HAVE_SYS_SELECT_H
- # include <sys/select.h>
- #endif
--#if HAVE_SYS_SOCKET_H
-+#ifdef HAVE_SYS_SOCKET_H
- # include <sys/socket.h>
- #endif
-
-@@ -4928,34 +5510,31 @@ extern int select ($ac_arg1,
- }
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-+
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
- done
- done
-@@ -4963,8 +5542,8 @@ done
- : ${ac_cv_func_select_args='int,int *,struct timeval *'}
-
- fi
--echo "$as_me:$LINENO: result: $ac_cv_func_select_args" >&5
--echo "${ECHO_T}$ac_cv_func_select_args" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_func_select_args" >&5
-+echo "${ECHO_T}$ac_cv_func_select_args" >&6; }
- ac_save_IFS=$IFS; IFS=','
- set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'`
- IFS=$ac_save_IFS
-@@ -5005,9 +5584,9 @@ rm -f conftest*
- for ac_func in getchar gethostbyname gethostname getopt getpid gettimeofday memset ntohs regcomp select socket strchr strcmp strstr strtol uname
- do
- as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
--echo "$as_me:$LINENO: checking for $ac_func" >&5
--echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
--if eval "test \"\${$as_ac_var+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -5033,68 +5612,60 @@ cat >>conftest.$ac_ext <<_ACEOF
-
- #undef $ac_func
-
--/* Override any gcc2 internal prototype to avoid an error. */
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
- #ifdef __cplusplus
- extern "C"
--{
- #endif
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
- char $ac_func ();
- /* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
--#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+#if defined __stub_$ac_func || defined __stub___$ac_func
- choke me
--#else
--char (*f) () = $ac_func;
--#endif
--#ifdef __cplusplus
--}
- #endif
-
- int
- main ()
- {
--return f != $ac_func;
-+return $ac_func ();
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- eval "$as_ac_var=yes"
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--eval "$as_ac_var=no"
-+ eval "$as_ac_var=no"
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_var'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-@@ -5116,9 +5687,9 @@ done
- for ac_func in calloc getdomainname getopt_long inet_ntop strncasecmp strcasestr
- do
- as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
--echo "$as_me:$LINENO: checking for $ac_func" >&5
--echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
--if eval "test \"\${$as_ac_var+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- cat >conftest.$ac_ext <<_ACEOF
-@@ -5144,68 +5715,60 @@ cat >>conftest.$ac_ext <<_ACEOF
-
- #undef $ac_func
-
--/* Override any gcc2 internal prototype to avoid an error. */
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
- #ifdef __cplusplus
- extern "C"
--{
- #endif
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
- char $ac_func ();
- /* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
--#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+#if defined __stub_$ac_func || defined __stub___$ac_func
- choke me
--#else
--char (*f) () = $ac_func;
--#endif
--#ifdef __cplusplus
--}
- #endif
-
- int
- main ()
- {
--return f != $ac_func;
-+return $ac_func ();
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- eval "$as_ac_var=yes"
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--eval "$as_ac_var=no"
-+ eval "$as_ac_var=no"
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_var'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-@@ -5216,30 +5779,30 @@ done
-
-
-
--echo "$as_me:$LINENO: checking disabled gnutls" >&5
--echo $ECHO_N "checking disabled gnutls... $ECHO_C" >&6
--# Check whether --enable-gnutls or --disable-gnutls was given.
-+{ echo "$as_me:$LINENO: checking disabled gnutls" >&5
-+echo $ECHO_N "checking disabled gnutls... $ECHO_C" >&6; }
-+# Check whether --enable-gnutls was given.
- if test "${enable_gnutls+set}" = set; then
-- enableval="$enable_gnutls"
--
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-+ enableval=$enable_gnutls;
-+ { echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6; }
- DISABLE_GNUTLS=yes
-
-
- else
-- echo "$as_me:$LINENO: result: not requested" >&5
--echo "${ECHO_T}not requested" >&6
-+ { echo "$as_me:$LINENO: result: not requested" >&5
-+echo "${ECHO_T}not requested" >&6; }
-
--fi;
-+fi
-
--# Check whether --with-libgnutls-prefix or --without-libgnutls-prefix was given.
-+
-+# Check whether --with-libgnutls-prefix was given.
- if test "${with_libgnutls_prefix+set}" = set; then
-- withval="$with_libgnutls_prefix"
-- libgnutls_config_prefix="$withval"
-+ withval=$with_libgnutls_prefix; libgnutls_config_prefix="$withval"
- else
- libgnutls_config_prefix=""
--fi;
-+fi
-+
-
- if test x$libgnutls_config_prefix != x ; then
- if test x${LIBGNUTLS_CONFIG+set} != xset ; then
-@@ -5250,8 +5813,8 @@ fi;
- if test "$DISABLE_GNUTLS" != "yes"; then
- # Extract the first word of "libgnutls-config", so it can be a program name with args.
- set dummy libgnutls-config; ac_word=$2
--echo "$as_me:$LINENO: checking for $ac_word" >&5
--echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
- if test "${ac_cv_path_LIBGNUTLS_CONFIG+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -5266,32 +5829,33 @@ do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
-- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
- ac_cv_path_LIBGNUTLS_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
- done
- done
-+IFS=$as_save_IFS
-
- test -z "$ac_cv_path_LIBGNUTLS_CONFIG" && ac_cv_path_LIBGNUTLS_CONFIG="no"
- ;;
- esac
- fi
- LIBGNUTLS_CONFIG=$ac_cv_path_LIBGNUTLS_CONFIG
--
- if test -n "$LIBGNUTLS_CONFIG"; then
-- echo "$as_me:$LINENO: result: $LIBGNUTLS_CONFIG" >&5
--echo "${ECHO_T}$LIBGNUTLS_CONFIG" >&6
-+ { echo "$as_me:$LINENO: result: $LIBGNUTLS_CONFIG" >&5
-+echo "${ECHO_T}$LIBGNUTLS_CONFIG" >&6; }
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
-
-+
- fi
- min_libgnutls_version=1.0.0
-- echo "$as_me:$LINENO: checking for libgnutls - version >= $min_libgnutls_version" >&5
--echo $ECHO_N "checking for libgnutls - version >= $min_libgnutls_version... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for libgnutls - version >= $min_libgnutls_version" >&5
-+echo $ECHO_N "checking for libgnutls - version >= $min_libgnutls_version... $ECHO_C" >&6; }
- no_libgnutls=""
- if test "$DISABLE_GNUTLS" = "yes"; then
- LIBGNUTLS_CONFIG=no
-@@ -5375,13 +5939,22 @@ main ()
-
- _ACEOF
- rm -f conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>&5
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-+ { (case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_try") 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
-@@ -5394,15 +5967,17 @@ sed 's/^/| /' conftest.$ac_ext >&5
- ( exit $ac_status )
- no_libgnutls=yes
- fi
--rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
- fi
-+
-+
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
-
- if test "x$no_libgnutls" = x ; then
-- echo "$as_me:$LINENO: result: yes" >&5
--echo "${ECHO_T}yes" >&6
-+ { echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6; }
-
- cat >>confdefs.h <<\_ACEOF
- #define HAVE_GNUTLS 1
-@@ -5415,8 +5990,8 @@ _ACEOF
- if test -f conf.libgnutlstest ; then
- :
- else
-- echo "$as_me:$LINENO: result: no" >&5
--echo "${ECHO_T}no" >&6
-+ { echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6; }
- fi
- if test "$LIBGNUTLS_CONFIG" != "no" ; then
- if test -f conf.libgnutlstest ; then
-@@ -5446,27 +6021,23 @@ main ()
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding LIBGNUTLS or finding the wrong"
- echo "*** version of LIBGNUTLS. If it is not finding LIBGNUTLS, you'll need to set your"
-@@ -5481,12 +6052,13 @@ else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
-- echo "*** The test program failed to compile or link. See the file config.log for the"
-+ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means LIBGNUTLS was incorrectly installed"
- echo "*** or that you have moved LIBGNUTLS since it was installed. In the latter case, you"
- echo "*** may want to edit the libgnutls-config script: $LIBGNUTLS_CONFIG"
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
-@@ -5506,18 +6078,19 @@ if test "X$LIBGNUTLS_LIBS" == "X";then
- for ac_header in openssl/md5.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -5528,41 +6101,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -5571,24 +6140,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -5596,9 +6163,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -5622,33 +6190,32 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
- _ACEOF
-- echo "$as_me:$LINENO: checking for MD5_Init in -lcrypto" >&5
--echo $ECHO_N "checking for MD5_Init in -lcrypto... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for MD5_Init in -lcrypto" >&5
-+echo $ECHO_N "checking for MD5_Init in -lcrypto... $ECHO_C" >&6; }
- if test "${ac_cv_lib_crypto_MD5_Init+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -5661,56 +6228,53 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-
--/* Override any gcc2 internal prototype to avoid an error. */
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
- #ifdef __cplusplus
- extern "C"
- #endif
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
- char MD5_Init ();
- int
- main ()
- {
--MD5_Init ();
-+return MD5_Init ();
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- ac_cv_lib_crypto_MD5_Init=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_lib_crypto_MD5_Init=no
-+ ac_cv_lib_crypto_MD5_Init=no
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
--echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_MD5_Init" >&5
--echo "${ECHO_T}$ac_cv_lib_crypto_MD5_Init" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_MD5_Init" >&5
-+echo "${ECHO_T}$ac_cv_lib_crypto_MD5_Init" >&6; }
- if test $ac_cv_lib_crypto_MD5_Init = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -5732,18 +6296,19 @@ fi
- for ac_header in openssl/sha.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -5754,41 +6319,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -5797,24 +6358,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -5822,9 +6381,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -5848,33 +6408,32 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
- #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
- _ACEOF
-- echo "$as_me:$LINENO: checking for SHA1_Init in -lcrypto" >&5
--echo $ECHO_N "checking for SHA1_Init in -lcrypto... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for SHA1_Init in -lcrypto" >&5
-+echo $ECHO_N "checking for SHA1_Init in -lcrypto... $ECHO_C" >&6; }
- if test "${ac_cv_lib_crypto_SHA1_Init+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -5887,56 +6446,53 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-
--/* Override any gcc2 internal prototype to avoid an error. */
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
- #ifdef __cplusplus
- extern "C"
- #endif
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
- char SHA1_Init ();
- int
- main ()
- {
--SHA1_Init ();
-+return SHA1_Init ();
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- ac_cv_lib_crypto_SHA1_Init=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_lib_crypto_SHA1_Init=no
-+ ac_cv_lib_crypto_SHA1_Init=no
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
--echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SHA1_Init" >&5
--echo "${ECHO_T}$ac_cv_lib_crypto_SHA1_Init" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SHA1_Init" >&5
-+echo "${ECHO_T}$ac_cv_lib_crypto_SHA1_Init" >&6; }
- if test $ac_cv_lib_crypto_SHA1_Init = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -5954,8 +6510,8 @@ done
-
-
-
-- echo "$as_me:$LINENO: checking for ares_version.h" >&5
--echo $ECHO_N "checking for ares_version.h... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for ares_version.h" >&5
-+echo $ECHO_N "checking for ares_version.h... $ECHO_C" >&6; }
-
- ares_incdir=NONE
- ares_libdir=NONE
-@@ -5973,14 +6529,14 @@ echo $ECHO_N "checking for ares_version.
- done
-
- if test "$ares_incdir" = "NONE"; then
-- echo "$as_me:$LINENO: result: not found" >&5
--echo "${ECHO_T}not found" >&6
-+ { echo "$as_me:$LINENO: result: not found" >&5
-+echo "${ECHO_T}not found" >&6; }
- else
-- echo "$as_me:$LINENO: result: found at $ares_incdir" >&5
--echo "${ECHO_T}found at $ares_incdir" >&6
-+ { echo "$as_me:$LINENO: result: found at $ares_incdir" >&5
-+echo "${ECHO_T}found at $ares_incdir" >&6; }
-
-- echo "$as_me:$LINENO: checking for c-ares lib" >&5
--echo $ECHO_N "checking for c-ares lib... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for c-ares lib" >&5
-+echo $ECHO_N "checking for c-ares lib... $ECHO_C" >&6; }
-
- for dir in $ares_libdirs; do
- for extension in $ares_libexten; do
-@@ -5997,15 +6553,15 @@ echo $ECHO_N "checking for c-ares lib...
- done
-
- if test "$ares_libdir" = "NONE"; then
-- echo "$as_me:$LINENO: result: not found" >&5
--echo "${ECHO_T}not found" >&6
-+ { echo "$as_me:$LINENO: result: not found" >&5
-+echo "${ECHO_T}not found" >&6; }
- else
-- echo "$as_me:$LINENO: result: found at $ares_libdir" >&5
--echo "${ECHO_T}found at $ares_libdir" >&6
-+ { echo "$as_me:$LINENO: result: found at $ares_libdir" >&5
-+echo "${ECHO_T}found at $ares_libdir" >&6; }
- fi
-
-- echo "$as_me:$LINENO: checking for ares_version in -lcares" >&5
--echo $ECHO_N "checking for ares_version in -lcares... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for ares_version in -lcares" >&5
-+echo $ECHO_N "checking for ares_version in -lcares... $ECHO_C" >&6; }
- if test "${ac_cv_lib_cares_ares_version+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -6018,56 +6574,53 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-
--/* Override any gcc2 internal prototype to avoid an error. */
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
- #ifdef __cplusplus
- extern "C"
- #endif
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
- char ares_version ();
- int
- main ()
- {
--ares_version ();
-+return ares_version ();
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- ac_cv_lib_cares_ares_version=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_lib_cares_ares_version=no
-+ ac_cv_lib_cares_ares_version=no
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
--echo "$as_me:$LINENO: result: $ac_cv_lib_cares_ares_version" >&5
--echo "${ECHO_T}$ac_cv_lib_cares_ares_version" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_lib_cares_ares_version" >&5
-+echo "${ECHO_T}$ac_cv_lib_cares_ares_version" >&6; }
- if test $ac_cv_lib_cares_ares_version = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -6085,8 +6638,8 @@ fi
-
- if test "X$SIPSAK_HAVE_ARES" == "X"; then
-
-- echo "$as_me:$LINENO: checking for ruli.h" >&5
--echo $ECHO_N "checking for ruli.h... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for ruli.h" >&5
-+echo $ECHO_N "checking for ruli.h... $ECHO_C" >&6; }
-
- ruli_incdir=NONE
- ruli_libdir=NONE
-@@ -6103,14 +6656,14 @@ echo $ECHO_N "checking for ruli.h... $EC
- done
-
- if test "$ruli_incdir" = "NONE"; then
-- echo "$as_me:$LINENO: result: not found" >&5
--echo "${ECHO_T}not found" >&6
-+ { echo "$as_me:$LINENO: result: not found" >&5
-+echo "${ECHO_T}not found" >&6; }
- else
-- echo "$as_me:$LINENO: result: found at $ruli_incdir" >&5
--echo "${ECHO_T}found at $ruli_incdir" >&6
-+ { echo "$as_me:$LINENO: result: found at $ruli_incdir" >&5
-+echo "${ECHO_T}found at $ruli_incdir" >&6; }
-
-- echo "$as_me:$LINENO: checking for libruli" >&5
--echo $ECHO_N "checking for libruli... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for libruli" >&5
-+echo $ECHO_N "checking for libruli... $ECHO_C" >&6; }
-
- for dir in $ruli_libdirs; do
- for extension in $ruli_libexten; do
-@@ -6126,15 +6679,15 @@ echo $ECHO_N "checking for libruli... $E
- done
-
- if test "$ruli_libdir" = "NONE"; then
-- echo "$as_me:$LINENO: result: not found" >&5
--echo "${ECHO_T}not found" >&6
-+ { echo "$as_me:$LINENO: result: not found" >&5
-+echo "${ECHO_T}not found" >&6; }
- else
-- echo "$as_me:$LINENO: result: found at $ruli_libdir" >&5
--echo "${ECHO_T}found at $ruli_libdir" >&6
-+ { echo "$as_me:$LINENO: result: found at $ruli_libdir" >&5
-+echo "${ECHO_T}found at $ruli_libdir" >&6; }
- fi
-
-- echo "$as_me:$LINENO: checking for ruli_sync_query in -lruli" >&5
--echo $ECHO_N "checking for ruli_sync_query in -lruli... $ECHO_C" >&6
-+ { echo "$as_me:$LINENO: checking for ruli_sync_query in -lruli" >&5
-+echo $ECHO_N "checking for ruli_sync_query in -lruli... $ECHO_C" >&6; }
- if test "${ac_cv_lib_ruli_ruli_sync_query+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -6147,56 +6700,53 @@ cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
-
--/* Override any gcc2 internal prototype to avoid an error. */
-+/* Override any GCC internal prototype to avoid an error.
-+ Use char because int might match the return type of a GCC
-+ builtin and then its argument prototype would still apply. */
- #ifdef __cplusplus
- extern "C"
- #endif
--/* We use char because int might match the return type of a gcc2
-- builtin and then its argument prototype would still apply. */
- char ruli_sync_query ();
- int
- main ()
- {
--ruli_sync_query ();
-+return ruli_sync_query ();
- ;
- return 0;
- }
- _ACEOF
- rm -f conftest.$ac_objext conftest$ac_exeext
--if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-- (eval $ac_link) 2>conftest.er1
-+if { (ac_try="$ac_link"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest$ac_exeext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest$ac_exeext &&
-+ $as_test_x conftest$ac_exeext; then
- ac_cv_lib_ruli_ruli_sync_query=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_cv_lib_ruli_ruli_sync_query=no
-+ ac_cv_lib_ruli_ruli_sync_query=no
- fi
--rm -f conftest.err conftest.$ac_objext \
-+
-+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
- LIBS=$ac_check_lib_save_LIBS
- fi
--echo "$as_me:$LINENO: result: $ac_cv_lib_ruli_ruli_sync_query" >&5
--echo "${ECHO_T}$ac_cv_lib_ruli_ruli_sync_query" >&6
-+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ruli_ruli_sync_query" >&5
-+echo "${ECHO_T}$ac_cv_lib_ruli_ruli_sync_query" >&6; }
- if test $ac_cv_lib_ruli_ruli_sync_query = yes; then
-
- cat >>confdefs.h <<\_ACEOF
-@@ -6215,18 +6765,19 @@ else
- for ac_header in arpa/nameser.h
- do
- as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-- echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
- else
- # Is the header compilable?
--echo "$as_me:$LINENO: checking $ac_header usability" >&5
--echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -6237,41 +6788,37 @@ $ac_includes_default
- #include <$ac_header>
- _ACEOF
- rm -f conftest.$ac_objext
--if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-- (eval $ac_compile) 2>conftest.er1
-+if { (ac_try="$ac_compile"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_compile") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } &&
-- { ac_try='test -z "$ac_c_werror_flag"
-- || test ! -s conftest.err'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; } &&
-- { ac_try='test -s conftest.$ac_objext'
-- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-- (eval $ac_try) 2>&5
-- ac_status=$?
-- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); }; }; then
-+ (exit $ac_status); } && {
-+ test -z "$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ } && test -s conftest.$ac_objext; then
- ac_header_compiler=yes
- else
- echo "$as_me: failed program was:" >&5
- sed 's/^/| /' conftest.$ac_ext >&5
-
--ac_header_compiler=no
-+ ac_header_compiler=no
- fi
--rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
--echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6; }
-
- # Is the header present?
--echo "$as_me:$LINENO: checking $ac_header presence" >&5
--echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h. */
- _ACEOF
-@@ -6280,24 +6827,22 @@ cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
- #include <$ac_header>
- _ACEOF
--if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+if { (ac_try="$ac_cpp conftest.$ac_ext"
-+case "(($ac_try" in
-+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-+ *) ac_try_echo=$ac_try;;
-+esac
-+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
-- (exit $ac_status); } >/dev/null; then
-- if test -s conftest.err; then
-- ac_cpp_err=$ac_c_preproc_warn_flag
-- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-- else
-- ac_cpp_err=
-- fi
--else
-- ac_cpp_err=yes
--fi
--if test -z "$ac_cpp_err"; then
-+ (exit $ac_status); } >/dev/null && {
-+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-+ test ! -s conftest.err
-+ }; then
- ac_header_preproc=yes
- else
- echo "$as_me: failed program was:" >&5
-@@ -6305,9 +6850,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
- fi
-+
- rm -f conftest.err conftest.$ac_ext
--echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
--echo "${ECHO_T}$ac_header_preproc" >&6
-+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6; }
-
- # So? What about this header?
- case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-@@ -6331,25 +6877,24 @@ echo "$as_me: WARNING: $ac_header: s
- echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
- echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-- (
-- cat <<\_ASBOX
-+ ( cat <<\_ASBOX
- ## ------------------------------ ##
- ## Report this to nils@sipsak.org ##
- ## ------------------------------ ##
- _ASBOX
-- ) |
-- sed "s/^/$as_me: WARNING: /" >&2
-+ ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
- esac
--echo "$as_me:$LINENO: checking for $ac_header" >&5
--echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
--if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
- else
- eval "$as_ac_Header=\$ac_header_preproc"
- fi
--echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
--echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+ac_res=`eval echo '${'$as_ac_Header'}'`
-+ { echo "$as_me:$LINENO: result: $ac_res" >&5
-+echo "${ECHO_T}$ac_res" >&6; }
-
- fi
- if test `eval echo '${'$as_ac_Header'}'` = yes; then
-@@ -6366,11 +6911,11 @@ fi
-
- # Check for T1 timer value
- def_timeout=500
-- # Check whether --enable-timeout or --disable-timeout was given.
-+ # Check whether --enable-timeout was given.
- if test "${enable_timeout+set}" = set; then
-- enableval="$enable_timeout"
-- def_timeout=$enableval
--fi;
-+ enableval=$enable_timeout; def_timeout=$enableval
-+fi
-+
- if test "X$def_timeout" = "Xno"; then
- # no timeout makes no sense
- def_timeout=500
-@@ -6382,7 +6927,7 @@ _ACEOF
-
-
-
-- ac_config_files="$ac_config_files Makefile"
-+ac_config_files="$ac_config_files Makefile"
-
- cat >confcache <<\_ACEOF
- # This file is a shell script that caches the results of configure
-@@ -6402,39 +6947,58 @@ _ACEOF
-
- # The following way of writing the cache mishandles newlines in values,
- # but we know of no workaround that is simple, portable, and efficient.
--# So, don't put newlines in cache variables' values.
-+# So, we kill variables containing newlines.
- # Ultrix sh set writes to stderr and can't be redirected directly,
- # and sets the high bit in the cache file unless we assign to the vars.
--{
-+(
-+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-+ eval ac_val=\$$ac_var
-+ case $ac_val in #(
-+ *${as_nl}*)
-+ case $ac_var in #(
-+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-+ esac
-+ case $ac_var in #(
-+ _ | IFS | as_nl) ;; #(
-+ *) $as_unset $ac_var ;;
-+ esac ;;
-+ esac
-+ done
-+
- (set) 2>&1 |
-- case `(ac_space=' '; set | grep ac_space) 2>&1` in
-- *ac_space=\ *)
-+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
-+ *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-- ;;
-+ ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
-- sed -n \
-- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
-- esac;
--} |
-+ esac |
-+ sort
-+) |
- sed '
-+ /^ac_cv_env_/b end
- t clear
-- : clear
-+ :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
-- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-- : end' >>confcache
--if diff $cache_file confcache >/dev/null 2>&1; then :; else
-- if test -w $cache_file; then
-- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-+ :end' >>confcache
-+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-+ if test -w "$cache_file"; then
-+ test "x$cache_file" != "x/dev/null" &&
-+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-+echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
- else
-- echo "not updating unwritable cache $cache_file"
-+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-+echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
- fi
- rm -f confcache
-@@ -6443,32 +7007,18 @@ test "x$prefix" = xNONE && prefix=$ac_de
- # Let make expand exec_prefix.
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
--# VPATH may cause trouble with some makes, so we remove $(srcdir),
--# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
--# trailing colons and then remove the whole line if VPATH becomes empty
--# (actually we leave an empty line to preserve line numbers).
--if test "x$srcdir" = x.; then
-- ac_vpsub='/^[ ]*VPATH[ ]*=/{
--s/:*\$(srcdir):*/:/;
--s/:*\${srcdir}:*/:/;
--s/:*@srcdir@:*/:/;
--s/^\([^=]*=[ ]*\):*/\1/;
--s/:*$//;
--s/^[^=]*=[ ]*$//;
--}'
--fi
--
- DEFS=-DHAVE_CONFIG_H
-
- ac_libobjs=
- ac_ltlibobjs=
- for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
-- ac_i=`echo "$ac_i" |
-- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
-- # 2. Add them.
-- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
-- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
-+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-+ ac_i=`echo "$ac_i" | sed "$ac_script"`
-+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
-+ # will be set to the directory where LIBOBJS objects are built.
-+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
- done
- LIBOBJS=$ac_libobjs
-
-@@ -6520,17 +7070,45 @@ cat >>$CONFIG_STATUS <<\_ACEOF
- ## M4sh Initialization. ##
- ## --------------------- ##
-
--# Be Bourne compatible
-+# Be more Bourne compatible
-+DUALCASE=1; export DUALCASE # for MKS sh
- if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
--elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-- set -o posix
-+ setopt NO_GLOB_SUBST
-+else
-+ case `(set -o) 2>/dev/null` in
-+ *posix*) set -o posix ;;
-+esac
-+
-+fi
-+
-+
-+
-+
-+# PATH needs CR
-+# Avoid depending upon Character Ranges.
-+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-+as_cr_digits='0123456789'
-+as_cr_alnum=$as_cr_Letters$as_cr_digits
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
- fi
--DUALCASE=1; export DUALCASE # for MKS sh
-
- # Support unset when possible.
- if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-@@ -6540,8 +7118,43 @@ else
- fi
-
-
-+# IFS
-+# We need space, tab and new line, in precisely that order. Quoting is
-+# there to prevent editors from complaining about space-tab.
-+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-+# splitting by setting IFS to empty value.)
-+as_nl='
-+'
-+IFS=" "" $as_nl"
-+
-+# Find who we are. Look in the path if we contain no directory separator.
-+case $0 in
-+ *[\\/]* ) as_myself=$0 ;;
-+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-+done
-+IFS=$as_save_IFS
-+
-+ ;;
-+esac
-+# We did not find ourselves, most probably we were run as `sh COMMAND'
-+# in which case we are not to be found in the path.
-+if test "x$as_myself" = x; then
-+ as_myself=$0
-+fi
-+if test ! -f "$as_myself"; then
-+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-+ { (exit 1); exit 1; }
-+fi
-+
- # Work around bugs in pre-3.0 UWIN ksh.
--$as_unset ENV MAIL MAILPATH
-+for as_var in ENV MAIL MAILPATH
-+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-+done
- PS1='$ '
- PS2='> '
- PS4='+ '
-@@ -6555,18 +7168,19 @@ do
- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
- eval $as_var=C; export $as_var
- else
-- $as_unset $as_var
-+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
- fi
- done
-
- # Required to use basename.
--if expr a : '\(a\)' >/dev/null 2>&1; then
-+if expr a : '\(a\)' >/dev/null 2>&1 &&
-+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
- else
- as_expr=false
- fi
-
--if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
- else
- as_basename=false
-@@ -6574,159 +7188,120 @@ fi
-
-
- # Name of the executable.
--as_me=`$as_basename "$0" ||
-+as_me=`$as_basename -- "$0" ||
- $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
-- X"$0" : 'X\(/\)$' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
- echo X/"$0" |
-- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-- /^X\/\(\/\/\)$/{ s//\1/; q; }
-- /^X\/\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
--
--
--# PATH needs CR, and LINENO needs CR and PATH.
--# Avoid depending upon Character Ranges.
--as_cr_letters='abcdefghijklmnopqrstuvwxyz'
--as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
--as_cr_Letters=$as_cr_letters$as_cr_LETTERS
--as_cr_digits='0123456789'
--as_cr_alnum=$as_cr_Letters$as_cr_digits
-+ sed '/^.*\/\([^/][^/]*\)\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\/\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\/\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
-
--# The user is always right.
--if test "${PATH_SEPARATOR+set}" != set; then
-- echo "#! /bin/sh" >conf$$.sh
-- echo "exit 0" >>conf$$.sh
-- chmod +x conf$$.sh
-- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-- PATH_SEPARATOR=';'
-- else
-- PATH_SEPARATOR=:
-- fi
-- rm -f conf$$.sh
--fi
-+# CDPATH.
-+$as_unset CDPATH
-
-
-- as_lineno_1=$LINENO
-- as_lineno_2=$LINENO
-- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-- test "x$as_lineno_1" != "x$as_lineno_2" &&
-- test "x$as_lineno_3" = "x$as_lineno_2" || {
-- # Find who we are. Look in the path if we contain no path at all
-- # relative or not.
-- case $0 in
-- *[\\/]* ) as_myself=$0 ;;
-- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
--done
-
-- ;;
-- esac
-- # We did not find ourselves, most probably we were run as `sh COMMAND'
-- # in which case we are not to be found in the path.
-- if test "x$as_myself" = x; then
-- as_myself=$0
-- fi
-- if test ! -f "$as_myself"; then
-- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
--echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-- { (exit 1); exit 1; }; }
-- fi
-- case $CONFIG_SHELL in
-- '')
-- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for as_base in sh bash ksh sh5; do
-- case $as_dir in
-- /*)
-- if ("$as_dir/$as_base" -c '
- as_lineno_1=$LINENO
- as_lineno_2=$LINENO
-- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
- test "x$as_lineno_1" != "x$as_lineno_2" &&
-- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
-- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-- CONFIG_SHELL=$as_dir/$as_base
-- export CONFIG_SHELL
-- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-- fi;;
-- esac
-- done
--done
--;;
-- esac
-+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
- # uniformly replaced by the line number. The first 'sed' inserts a
-- # line-number line before each line; the second 'sed' does the real
-- # work. The second script uses 'N' to pair each line-number line
-- # with the numbered line, and appends trailing '-' during
-- # substitution so that $LINENO is not a special case at line end.
-+ # line-number line after each line using $LINENO; the second 'sed'
-+ # does the real work. The second script uses 'N' to pair each
-+ # line-number line with the line containing $LINENO, and appends
-+ # trailing '-' during substitution so that $LINENO is not a special
-+ # case at line end.
- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-- sed '=' <$as_myself |
-+ # scripts with optimization help from Paolo Bonzini. Blame Lee
-+ # E. McMahon (1931-1989) for sed's syntax. :-)
-+ sed -n '
-+ p
-+ /[$]LINENO/=
-+ ' <$as_myself |
- sed '
-+ s/[$]LINENO.*/&-/
-+ t lineno
-+ b
-+ :lineno
- N
-- s,$,-,
-- : loop
-- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ :loop
-+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
-- s,-$,,
-- s,^['$as_cr_digits']*\n,,
-+ s/-\n.*//
- ' >$as_me.lineno &&
-- chmod +x $as_me.lineno ||
-- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
--echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-+ chmod +x "$as_me.lineno" ||
-+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
- { (exit 1); exit 1; }; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
-- # original and so on. Autoconf is especially sensible to this).
-- . ./$as_me.lineno
-+ # original and so on. Autoconf is especially sensitive to this).
-+ . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
- }
-
-
--case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-- *c*,-n*) ECHO_N= ECHO_C='
--' ECHO_T=' ' ;;
-- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-+ as_dirname=dirname
-+else
-+ as_dirname=false
-+fi
-+
-+ECHO_C= ECHO_N= ECHO_T=
-+case `echo -n x` in
-+-n*)
-+ case `echo 'x\c'` in
-+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
-+ *) ECHO_C='\c';;
-+ esac;;
-+*)
-+ ECHO_N='-n';;
- esac
-
--if expr a : '\(a\)' >/dev/null 2>&1; then
-+if expr a : '\(a\)' >/dev/null 2>&1 &&
-+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
- else
- as_expr=false
- fi
-
- rm -f conf$$ conf$$.exe conf$$.file
-+if test -d conf$$.dir; then
-+ rm -f conf$$.dir/conf$$.file
-+else
-+ rm -f conf$$.dir
-+ mkdir conf$$.dir
-+fi
- echo >conf$$.file
- if ln -s conf$$.file conf$$ 2>/dev/null; then
-- # We could just check for DJGPP; but this test a) works b) is more generic
-- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-- if test -f conf$$.exe; then
-- # Don't use ln at all; we don't have any links
-+ as_ln_s='ln -s'
-+ # ... but there are two gotchas:
-+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-+ # In both cases, we have to default to `cp -p'.
-+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
-- else
-- as_ln_s='ln -s'
-- fi
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -p'
- fi
--rm -f conf$$ conf$$.exe conf$$.file
-+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-+rmdir conf$$.dir 2>/dev/null
-
- if mkdir -p . 2>/dev/null; then
- as_mkdir_p=:
-@@ -6735,7 +7310,28 @@ else
- as_mkdir_p=false
- fi
-
--as_executable_p="test -f"
-+if test -x / >/dev/null 2>&1; then
-+ as_test_x='test -x'
-+else
-+ if ls -dL / >/dev/null 2>&1; then
-+ as_ls_L_option=L
-+ else
-+ as_ls_L_option=
-+ fi
-+ as_test_x='
-+ eval sh -c '\''
-+ if test -d "$1"; then
-+ test -d "$1/.";
-+ else
-+ case $1 in
-+ -*)set "./$1";;
-+ esac;
-+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-+ ???[sx]*):;;*)false;;esac;fi
-+ '\'' sh
-+ '
-+fi
-+as_executable_p=$as_test_x
-
- # Sed expression to map a string onto a valid CPP name.
- as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-@@ -6744,31 +7340,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
- as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
--# IFS
--# We need space, tab and new line, in precisely that order.
--as_nl='
--'
--IFS=" $as_nl"
--
--# CDPATH.
--$as_unset CDPATH
--
- exec 6>&1
-
--# Open the log real soon, to keep \$[0] and so on meaningful, and to
-+# Save the log message, to keep $[0] and so on meaningful, and to
- # report actual input values of CONFIG_FILES etc. instead of their
--# values after options handling. Logging --version etc. is OK.
--exec 5>>config.log
--{
-- echo
-- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
--## Running $as_me. ##
--_ASBOX
--} >&5
--cat >&5 <<_CSEOF
--
-+# values after options handling.
-+ac_log="
- This file was extended by sipsak $as_me 0.9.6, which was
--generated by GNU Autoconf 2.59. Invocation command line was
-+generated by GNU Autoconf 2.61. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
-@@ -6776,30 +7355,20 @@ generated by GNU Autoconf 2.59. Invocat
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
--_CSEOF
--echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
--echo >&5
-+on `(hostname || uname -n) 2>/dev/null | sed 1q`
-+"
-+
- _ACEOF
-
-+cat >>$CONFIG_STATUS <<_ACEOF
- # Files that config.status was made for.
--if test -n "$ac_config_files"; then
-- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
--fi
--
--if test -n "$ac_config_headers"; then
-- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
--fi
--
--if test -n "$ac_config_links"; then
-- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
--fi
-+config_files="$ac_config_files"
-+config_headers="$ac_config_headers"
-+config_commands="$ac_config_commands"
-
--if test -n "$ac_config_commands"; then
-- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
--fi
-+_ACEOF
-
- cat >>$CONFIG_STATUS <<\_ACEOF
--
- ac_cs_usage="\
- \`$as_me' instantiates files from templates according to the
- current configuration.
-@@ -6807,7 +7376,7 @@ current configuration.
- Usage: $0 [OPTIONS] [FILE]...
-
- -h, --help print this help, then exit
-- -V, --version print version number, then exit
-+ -V, --version print version number and configuration settings, then exit
- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
-@@ -6826,19 +7395,21 @@ Configuration commands:
- $config_commands
-
- Report bugs to <bug-autoconf@gnu.org>."
--_ACEOF
-
-+_ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
- ac_cs_version="\\
- sipsak config.status 0.9.6
--configured by $0, generated by GNU Autoconf 2.59,
-- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-+configured by $0, generated by GNU Autoconf 2.61,
-+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
--Copyright (C) 2003 Free Software Foundation, Inc.
-+Copyright (C) 2006 Free Software Foundation, Inc.
- This config.status script is free software; the Free Software Foundation
- gives unlimited permission to copy, distribute and modify it."
--srcdir=$srcdir
--INSTALL="$INSTALL"
-+
-+ac_pwd='$ac_pwd'
-+srcdir='$srcdir'
-+INSTALL='$INSTALL'
- _ACEOF
-
- cat >>$CONFIG_STATUS <<\_ACEOF
-@@ -6849,39 +7420,24 @@ while test $# != 0
- do
- case $1 in
- --*=*)
-- ac_option=`expr "x$1" : 'x\([^=]*\)='`
-- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
-+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
-+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
-- -*)
-+ *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
-- *) # This is not an option, so the user has probably given explicit
-- # arguments.
-- ac_option=$1
-- ac_need_defaults=false;;
- esac
-
- case $ac_option in
- # Handling of the options.
--_ACEOF
--cat >>$CONFIG_STATUS <<\_ACEOF
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
-- --version | --vers* | -V )
-- echo "$ac_cs_version"; exit 0 ;;
-- --he | --h)
-- # Conflict between --help and --header
-- { { echo "$as_me:$LINENO: error: ambiguous option: $1
--Try \`$0 --help' for more information." >&5
--echo "$as_me: error: ambiguous option: $1
--Try \`$0 --help' for more information." >&2;}
-- { (exit 1); exit 1; }; };;
-- --help | --hel | -h )
-- echo "$ac_cs_usage"; exit 0 ;;
-- --debug | --d* | -d )
-+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-+ echo "$ac_cs_version"; exit ;;
-+ --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
-@@ -6891,18 +7447,24 @@ Try \`$0 --help' for more information."
- $ac_shift
- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
- ac_need_defaults=false;;
-+ --he | --h)
-+ # Conflict between --help and --header
-+ { echo "$as_me: error: ambiguous option: $1
-+Try \`$0 --help' for more information." >&2
-+ { (exit 1); exit 1; }; };;
-+ --help | --hel | -h )
-+ echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
-- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
--Try \`$0 --help' for more information." >&5
--echo "$as_me: error: unrecognized option: $1
--Try \`$0 --help' for more information." >&2;}
-+ -*) { echo "$as_me: error: unrecognized option: $1
-+Try \`$0 --help' for more information." >&2
- { (exit 1); exit 1; }; } ;;
-
-- *) ac_config_targets="$ac_config_targets $1" ;;
-+ *) ac_config_targets="$ac_config_targets $1"
-+ ac_need_defaults=false ;;
-
- esac
- shift
-@@ -6918,37 +7480,49 @@ fi
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
- if \$ac_cs_recheck; then
-- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-+ CONFIG_SHELL=$SHELL
-+ export CONFIG_SHELL
-+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- fi
-
- _ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+exec 5>>config.log
-+{
-+ echo
-+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-+## Running $as_me. ##
-+_ASBOX
-+ echo "$ac_log"
-+} >&5
-
-+_ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
- #
--# INIT-COMMANDS section.
-+# INIT-COMMANDS
- #
--
- AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
- _ACEOF
-
--
--
- cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+# Handling of arguments.
- for ac_config_target in $ac_config_targets
- do
-- case "$ac_config_target" in
-- # Handling of arguments.
-- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ case $ac_config_target in
-+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-+
- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
- echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
- { (exit 1); exit 1; }; };;
- esac
- done
-
-+
- # If the user did not use the arguments to specify the items to instantiate,
- # then the envvar interface is used. Set only those that are not.
- # We use the long form for the default assignment because of an extremely
-@@ -6960,592 +7534,539 @@ if $ac_need_defaults; then
- fi
-
- # Have a temporary directory for convenience. Make it in the build tree
--# simply because there is no reason to put it here, and in addition,
-+# simply because there is no reason against having it here, and in addition,
- # creating and moving files from /tmp can sometimes cause problems.
--# Create a temporary directory, and hook for its removal unless debugging.
-+# Hook for its removal unless debugging.
-+# Note that there is a small window in which the directory will not be cleaned:
-+# after its creation but before its name has been assigned to `$tmp'.
- $debug ||
- {
-- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ tmp=
-+ trap 'exit_status=$?
-+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-+' 0
- trap '{ (exit 1); exit 1; }' 1 2 13 15
- }
--
- # Create a (secure) tmp directory for tmp files.
-
- {
-- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
- } ||
- {
-- tmp=./confstat$$-$RANDOM
-- (umask 077 && mkdir $tmp)
-+ tmp=./conf$$-$RANDOM
-+ (umask 077 && mkdir "$tmp")
- } ||
- {
- echo "$me: cannot create a temporary directory in ." >&2
- { (exit 1); exit 1; }
- }
-
--_ACEOF
--
--cat >>$CONFIG_STATUS <<_ACEOF
--
- #
--# CONFIG_FILES section.
-+# Set up the sed scripts for CONFIG_FILES section.
- #
-
- # No need to generate the scripts if there are no CONFIG_FILES.
- # This happens for instance when ./config.status config.h
--if test -n "\$CONFIG_FILES"; then
-- # Protect against being on the right side of a sed subst in config.status.
-- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
--s,@SHELL@,$SHELL,;t t
--s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
--s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
--s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
--s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
--s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
--s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
--s,@exec_prefix@,$exec_prefix,;t t
--s,@prefix@,$prefix,;t t
--s,@program_transform_name@,$program_transform_name,;t t
--s,@bindir@,$bindir,;t t
--s,@sbindir@,$sbindir,;t t
--s,@libexecdir@,$libexecdir,;t t
--s,@datadir@,$datadir,;t t
--s,@sysconfdir@,$sysconfdir,;t t
--s,@sharedstatedir@,$sharedstatedir,;t t
--s,@localstatedir@,$localstatedir,;t t
--s,@libdir@,$libdir,;t t
--s,@includedir@,$includedir,;t t
--s,@oldincludedir@,$oldincludedir,;t t
--s,@infodir@,$infodir,;t t
--s,@mandir@,$mandir,;t t
--s,@build_alias@,$build_alias,;t t
--s,@host_alias@,$host_alias,;t t
--s,@target_alias@,$target_alias,;t t
--s,@DEFS@,$DEFS,;t t
--s,@ECHO_C@,$ECHO_C,;t t
--s,@ECHO_N@,$ECHO_N,;t t
--s,@ECHO_T@,$ECHO_T,;t t
--s,@LIBS@,$LIBS,;t t
--s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
--s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
--s,@INSTALL_DATA@,$INSTALL_DATA,;t t
--s,@CYGPATH_W@,$CYGPATH_W,;t t
--s,@PACKAGE@,$PACKAGE,;t t
--s,@VERSION@,$VERSION,;t t
--s,@ACLOCAL@,$ACLOCAL,;t t
--s,@AUTOCONF@,$AUTOCONF,;t t
--s,@AUTOMAKE@,$AUTOMAKE,;t t
--s,@AUTOHEADER@,$AUTOHEADER,;t t
--s,@MAKEINFO@,$MAKEINFO,;t t
--s,@install_sh@,$install_sh,;t t
--s,@STRIP@,$STRIP,;t t
--s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
--s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
--s,@mkdir_p@,$mkdir_p,;t t
--s,@AWK@,$AWK,;t t
--s,@SET_MAKE@,$SET_MAKE,;t t
--s,@am__leading_dot@,$am__leading_dot,;t t
--s,@AMTAR@,$AMTAR,;t t
--s,@am__tar@,$am__tar,;t t
--s,@am__untar@,$am__untar,;t t
--s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
--s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
--s,@MAINT@,$MAINT,;t t
--s,@CC@,$CC,;t t
--s,@CFLAGS@,$CFLAGS,;t t
--s,@LDFLAGS@,$LDFLAGS,;t t
--s,@CPPFLAGS@,$CPPFLAGS,;t t
--s,@ac_ct_CC@,$ac_ct_CC,;t t
--s,@EXEEXT@,$EXEEXT,;t t
--s,@OBJEXT@,$OBJEXT,;t t
--s,@DEPDIR@,$DEPDIR,;t t
--s,@am__include@,$am__include,;t t
--s,@am__quote@,$am__quote,;t t
--s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
--s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
--s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
--s,@CCDEPMODE@,$CCDEPMODE,;t t
--s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
--s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
--s,@DISTCC@,$DISTCC,;t t
--s,@build@,$build,;t t
--s,@build_cpu@,$build_cpu,;t t
--s,@build_vendor@,$build_vendor,;t t
--s,@build_os@,$build_os,;t t
--s,@host@,$host,;t t
--s,@host_cpu@,$host_cpu,;t t
--s,@host_vendor@,$host_vendor,;t t
--s,@host_os@,$host_os,;t t
--s,@CPP@,$CPP,;t t
--s,@EGREP@,$EGREP,;t t
--s,@LIBOBJS@,$LIBOBJS,;t t
--s,@DISABLE_GNUTLS@,$DISABLE_GNUTLS,;t t
--s,@LIBGNUTLS_CONFIG@,$LIBGNUTLS_CONFIG,;t t
--s,@LIBGNUTLS_CFLAGS@,$LIBGNUTLS_CFLAGS,;t t
--s,@LIBGNUTLS_LIBS@,$LIBGNUTLS_LIBS,;t t
--s,@SIPSAK_HAVE_ARES@,$SIPSAK_HAVE_ARES,;t t
--s,@LTLIBOBJS@,$LTLIBOBJS,;t t
--CEOF
-+if test -n "$CONFIG_FILES"; then
-
- _ACEOF
-
-- cat >>$CONFIG_STATUS <<\_ACEOF
-- # Split the substitutions into bite-sized pieces for seds with
-- # small command number limits, like on Digital OSF/1 and HP-UX.
-- ac_max_sed_lines=48
-- ac_sed_frag=1 # Number of current file.
-- ac_beg=1 # First line for current file.
-- ac_end=$ac_max_sed_lines # Line after last line for current file.
-- ac_more_lines=:
-- ac_sed_cmds=
-- while $ac_more_lines; do
-- if test $ac_beg -gt 1; then
-- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-- else
-- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-- fi
-- if test ! -s $tmp/subs.frag; then
-- ac_more_lines=false
-- else
-- # The purpose of the label and of the branching condition is to
-- # speed up the sed processing (if there are no `@' at all, there
-- # is no need to browse any of the substitutions).
-- # These are the two extra sed commands mentioned above.
-- (echo ':t
-- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-- if test -z "$ac_sed_cmds"; then
-- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-- else
-- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-- fi
-- ac_sed_frag=`expr $ac_sed_frag + 1`
-- ac_beg=$ac_end
-- ac_end=`expr $ac_end + $ac_max_sed_lines`
-- fi
-- done
-- if test -z "$ac_sed_cmds"; then
-- ac_sed_cmds=cat
-+
-+
-+ac_delim='%!_!# '
-+for ac_last_try in false false false false false :; do
-+ cat >conf$$subs.sed <<_ACEOF
-+SHELL!$SHELL$ac_delim
-+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-+exec_prefix!$exec_prefix$ac_delim
-+prefix!$prefix$ac_delim
-+program_transform_name!$program_transform_name$ac_delim
-+bindir!$bindir$ac_delim
-+sbindir!$sbindir$ac_delim
-+libexecdir!$libexecdir$ac_delim
-+datarootdir!$datarootdir$ac_delim
-+datadir!$datadir$ac_delim
-+sysconfdir!$sysconfdir$ac_delim
-+sharedstatedir!$sharedstatedir$ac_delim
-+localstatedir!$localstatedir$ac_delim
-+includedir!$includedir$ac_delim
-+oldincludedir!$oldincludedir$ac_delim
-+docdir!$docdir$ac_delim
-+infodir!$infodir$ac_delim
-+htmldir!$htmldir$ac_delim
-+dvidir!$dvidir$ac_delim
-+pdfdir!$pdfdir$ac_delim
-+psdir!$psdir$ac_delim
-+libdir!$libdir$ac_delim
-+localedir!$localedir$ac_delim
-+mandir!$mandir$ac_delim
-+DEFS!$DEFS$ac_delim
-+ECHO_C!$ECHO_C$ac_delim
-+ECHO_N!$ECHO_N$ac_delim
-+ECHO_T!$ECHO_T$ac_delim
-+LIBS!$LIBS$ac_delim
-+build_alias!$build_alias$ac_delim
-+host_alias!$host_alias$ac_delim
-+target_alias!$target_alias$ac_delim
-+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-+INSTALL_DATA!$INSTALL_DATA$ac_delim
-+CYGPATH_W!$CYGPATH_W$ac_delim
-+PACKAGE!$PACKAGE$ac_delim
-+VERSION!$VERSION$ac_delim
-+ACLOCAL!$ACLOCAL$ac_delim
-+AUTOCONF!$AUTOCONF$ac_delim
-+AUTOMAKE!$AUTOMAKE$ac_delim
-+AUTOHEADER!$AUTOHEADER$ac_delim
-+MAKEINFO!$MAKEINFO$ac_delim
-+install_sh!$install_sh$ac_delim
-+STRIP!$STRIP$ac_delim
-+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-+mkdir_p!$mkdir_p$ac_delim
-+AWK!$AWK$ac_delim
-+SET_MAKE!$SET_MAKE$ac_delim
-+am__leading_dot!$am__leading_dot$ac_delim
-+AMTAR!$AMTAR$ac_delim
-+am__tar!$am__tar$ac_delim
-+am__untar!$am__untar$ac_delim
-+MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
-+MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
-+MAINT!$MAINT$ac_delim
-+CC!$CC$ac_delim
-+CFLAGS!$CFLAGS$ac_delim
-+LDFLAGS!$LDFLAGS$ac_delim
-+CPPFLAGS!$CPPFLAGS$ac_delim
-+ac_ct_CC!$ac_ct_CC$ac_delim
-+EXEEXT!$EXEEXT$ac_delim
-+OBJEXT!$OBJEXT$ac_delim
-+DEPDIR!$DEPDIR$ac_delim
-+am__include!$am__include$ac_delim
-+am__quote!$am__quote$ac_delim
-+AMDEP_TRUE!$AMDEP_TRUE$ac_delim
-+AMDEP_FALSE!$AMDEP_FALSE$ac_delim
-+AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
-+CCDEPMODE!$CCDEPMODE$ac_delim
-+am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
-+am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
-+DISTCC!$DISTCC$ac_delim
-+build!$build$ac_delim
-+build_cpu!$build_cpu$ac_delim
-+build_vendor!$build_vendor$ac_delim
-+build_os!$build_os$ac_delim
-+host!$host$ac_delim
-+host_cpu!$host_cpu$ac_delim
-+host_vendor!$host_vendor$ac_delim
-+host_os!$host_os$ac_delim
-+CPP!$CPP$ac_delim
-+GREP!$GREP$ac_delim
-+EGREP!$EGREP$ac_delim
-+LIBOBJS!$LIBOBJS$ac_delim
-+DISABLE_GNUTLS!$DISABLE_GNUTLS$ac_delim
-+LIBGNUTLS_CONFIG!$LIBGNUTLS_CONFIG$ac_delim
-+LIBGNUTLS_CFLAGS!$LIBGNUTLS_CFLAGS$ac_delim
-+LIBGNUTLS_LIBS!$LIBGNUTLS_LIBS$ac_delim
-+SIPSAK_HAVE_ARES!$SIPSAK_HAVE_ARES$ac_delim
-+LTLIBOBJS!$LTLIBOBJS$ac_delim
-+_ACEOF
-+
-+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 96; then
-+ break
-+ elif $ac_last_try; then
-+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-+ { (exit 1); exit 1; }; }
-+ else
-+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
--fi # test -n "$CONFIG_FILES"
-+done
-+
-+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-+if test -n "$ac_eof"; then
-+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-+ ac_eof=`expr $ac_eof + 1`
-+fi
-
-+cat >>$CONFIG_STATUS <<_ACEOF
-+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
- _ACEOF
-+sed '
-+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-+s/^/s,@/; s/!/@,|#_!!_#|/
-+:n
-+t n
-+s/'"$ac_delim"'$/,g/; t
-+s/$/\\/; p
-+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-+' >>$CONFIG_STATUS <conf$$subs.sed
-+rm -f conf$$subs.sed
-+cat >>$CONFIG_STATUS <<_ACEOF
-+CEOF$ac_eof
-+_ACEOF
-+
-+
-+# VPATH may cause trouble with some makes, so we remove $(srcdir),
-+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-+# trailing colons and then remove the whole line if VPATH becomes empty
-+# (actually we leave an empty line to preserve line numbers).
-+if test "x$srcdir" = x.; then
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
-+s/:*\$(srcdir):*/:/
-+s/:*\${srcdir}:*/:/
-+s/:*@srcdir@:*/:/
-+s/^\([^=]*=[ ]*\):*/\1/
-+s/:*$//
-+s/^[^=]*=[ ]*$//
-+}'
-+fi
-+
- cat >>$CONFIG_STATUS <<\_ACEOF
--for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-- case $ac_file in
-- - | *:- | *:-:* ) # input from stdin
-- cat >$tmp/stdin
-- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-- * ) ac_file_in=$ac_file.in ;;
-+fi # test -n "$CONFIG_FILES"
-+
-+
-+for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
-+do
-+ case $ac_tag in
-+ :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
-+ case $ac_mode$ac_tag in
-+ :[FHL]*:*);;
-+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-+ { (exit 1); exit 1; }; };;
-+ :[FH]-) ac_tag=-:-;;
-+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-+ esac
-+ ac_save_IFS=$IFS
-+ IFS=:
-+ set x $ac_tag
-+ IFS=$ac_save_IFS
-+ shift
-+ ac_file=$1
-+ shift
-
-- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-+ case $ac_mode in
-+ :L) ac_source=$1;;
-+ :[FH])
-+ ac_file_inputs=
-+ for ac_f
-+ do
-+ case $ac_f in
-+ -) ac_f="$tmp/stdin";;
-+ *) # Look for the file first in the build tree, then in the source tree
-+ # (if the path is not absolute). The absolute path cannot be DOS-style,
-+ # because $ac_f cannot contain `:'.
-+ test -f "$ac_f" ||
-+ case $ac_f in
-+ [\\/$]*) false;;
-+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-+ esac ||
-+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-+ { (exit 1); exit 1; }; };;
-+ esac
-+ ac_file_inputs="$ac_file_inputs $ac_f"
-+ done
-+
-+ # Let's still pretend it is `configure' which instantiates (i.e., don't
-+ # use $as_me), people would be surprised to read:
-+ # /* config.h. Generated by config.status. */
-+ configure_input="Generated from "`IFS=:
-+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
-+ if test x"$ac_file" != x-; then
-+ configure_input="$ac_file. $configure_input"
-+ { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-+ fi
-+
-+ case $ac_tag in
-+ *:-:* | *:-) cat >"$tmp/stdin";;
-+ esac
-+ ;;
-+ esac
-+
-+ ac_dir=`$as_dirname -- "$ac_file" ||
- $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
-- X"$ac_file" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$ac_file" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-- { if $as_mkdir_p; then
-- mkdir -p "$ac_dir"
-- else
-- as_dir="$ac_dir"
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
-+ { as_dir="$ac_dir"
-+ case $as_dir in #(
-+ -*) as_dir=./$as_dir;;
-+ esac
-+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
-- while test ! -d "$as_dir"; do
-- as_dirs="$as_dir $as_dirs"
-- as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+ while :; do
-+ case $as_dir in #(
-+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-+ *) as_qdir=$as_dir;;
-+ esac
-+ as_dirs="'$as_qdir' $as_dirs"
-+ as_dir=`$as_dirname -- "$as_dir" ||
- $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
-- X"$as_dir" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$as_dir" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
-+ test -d "$as_dir" && break
- done
-- test ! -n "$as_dirs" || mkdir $as_dirs
-- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
--echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-+ test -z "$as_dirs" || eval "mkdir $as_dirs"
-+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-+echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
--
- ac_builddir=.
-
--if test "$ac_dir" != .; then
-+case "$ac_dir" in
-+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-+*)
- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-- # A "../" for each directory in $ac_dir_suffix.
-- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
--else
-- ac_dir_suffix= ac_top_builddir=
--fi
-+ # A ".." for each directory in $ac_dir_suffix.
-+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
-+ case $ac_top_builddir_sub in
-+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-+ esac ;;
-+esac
-+ac_abs_top_builddir=$ac_pwd
-+ac_abs_builddir=$ac_pwd$ac_dir_suffix
-+# for backward compatibility:
-+ac_top_builddir=$ac_top_build_prefix
-
- case $srcdir in
-- .) # No --srcdir option. We are building in place.
-+ .) # We are building in place.
- ac_srcdir=.
-- if test -z "$ac_top_builddir"; then
-- ac_top_srcdir=.
-- else
-- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-- fi ;;
-- [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_top_srcdir=$ac_top_builddir_sub
-+ ac_abs_top_srcdir=$ac_pwd ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
-- ac_top_srcdir=$srcdir ;;
-- *) # Relative path.
-- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-- ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+ ac_top_srcdir=$srcdir
-+ ac_abs_top_srcdir=$srcdir ;;
-+ *) # Relative name.
-+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_build_prefix$srcdir
-+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
- esac
-+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
--# Do not use `cd foo && pwd` to compute absolute paths, because
--# the directories may not exist.
--case `pwd` in
--.) ac_abs_builddir="$ac_dir";;
--*)
-- case "$ac_dir" in
-- .) ac_abs_builddir=`pwd`;;
-- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-- *) ac_abs_builddir=`pwd`/"$ac_dir";;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_top_builddir=${ac_top_builddir}.;;
--*)
-- case ${ac_top_builddir}. in
-- .) ac_abs_top_builddir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_srcdir=$ac_srcdir;;
--*)
-- case $ac_srcdir in
-- .) ac_abs_srcdir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_top_srcdir=$ac_top_srcdir;;
--*)
-- case $ac_top_srcdir in
-- .) ac_abs_top_srcdir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-- esac;;
--esac
-
-+ case $ac_mode in
-+ :F)
-+ #
-+ # CONFIG_FILE
-+ #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
-+_ACEOF
-
-- if test x"$ac_file" != x-; then
-- { echo "$as_me:$LINENO: creating $ac_file" >&5
--echo "$as_me: creating $ac_file" >&6;}
-- rm -f "$ac_file"
-- fi
-- # Let's still pretend it is `configure' which instantiates (i.e., don't
-- # use $as_me), people would be surprised to read:
-- # /* config.h. Generated by config.status. */
-- if test x"$ac_file" = x-; then
-- configure_input=
-- else
-- configure_input="$ac_file. "
-- fi
-- configure_input=$configure_input"Generated from `echo $ac_file_in |
-- sed 's,.*/,,'` by configure."
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+# If the template does not know about datarootdir, expand it.
-+# FIXME: This hack should be removed a few years after 2.60.
-+ac_datarootdir_hack=; ac_datarootdir_seen=
-
-- # First look for the input files in the build tree, otherwise in the
-- # src tree.
-- ac_file_inputs=`IFS=:
-- for f in $ac_file_in; do
-- case $f in
-- -) echo $tmp/stdin ;;
-- [\\/$]*)
-- # Absolute (can't be DOS-style, as IFS=:)
-- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
--echo "$as_me: error: cannot find input file: $f" >&2;}
-- { (exit 1); exit 1; }; }
-- echo "$f";;
-- *) # Relative
-- if test -f "$f"; then
-- # Build tree
-- echo "$f"
-- elif test -f "$srcdir/$f"; then
-- # Source tree
-- echo "$srcdir/$f"
-- else
-- # /dev/null tree
-- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
--echo "$as_me: error: cannot find input file: $f" >&2;}
-- { (exit 1); exit 1; }; }
-- fi;;
-- esac
-- done` || { (exit 1); exit 1; }
-+case `sed -n '/datarootdir/ {
-+ p
-+ q
-+}
-+/@datadir@/p
-+/@docdir@/p
-+/@infodir@/p
-+/@localedir@/p
-+/@mandir@/p
-+' $ac_file_inputs` in
-+*datarootdir*) ac_datarootdir_seen=yes;;
-+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
- _ACEOF
- cat >>$CONFIG_STATUS <<_ACEOF
-+ ac_datarootdir_hack='
-+ s&@datadir@&$datadir&g
-+ s&@docdir@&$docdir&g
-+ s&@infodir@&$infodir&g
-+ s&@localedir@&$localedir&g
-+ s&@mandir@&$mandir&g
-+ s&\\\${datarootdir}&$datarootdir&g' ;;
-+esac
-+_ACEOF
-+
-+# Neutralize VPATH when `$srcdir' = `.'.
-+# Shell code in configure.ac might set extrasub.
-+# FIXME: do we really want to maintain this feature?
-+cat >>$CONFIG_STATUS <<_ACEOF
- sed "$ac_vpsub
- $extrasub
- _ACEOF
- cat >>$CONFIG_STATUS <<\_ACEOF
- :t
- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
--s,@configure_input@,$configure_input,;t t
--s,@srcdir@,$ac_srcdir,;t t
--s,@abs_srcdir@,$ac_abs_srcdir,;t t
--s,@top_srcdir@,$ac_top_srcdir,;t t
--s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
--s,@builddir@,$ac_builddir,;t t
--s,@abs_builddir@,$ac_abs_builddir,;t t
--s,@top_builddir@,$ac_top_builddir,;t t
--s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
--s,@INSTALL@,$ac_INSTALL,;t t
--" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-- rm -f $tmp/stdin
-- if test x"$ac_file" != x-; then
-- mv $tmp/out $ac_file
-- else
-- cat $tmp/out
-- rm -f $tmp/out
-- fi
--
--done
--_ACEOF
--cat >>$CONFIG_STATUS <<\_ACEOF
--
--#
--# CONFIG_HEADER section.
--#
-+s&@configure_input@&$configure_input&;t t
-+s&@top_builddir@&$ac_top_builddir_sub&;t t
-+s&@srcdir@&$ac_srcdir&;t t
-+s&@abs_srcdir@&$ac_abs_srcdir&;t t
-+s&@top_srcdir@&$ac_top_srcdir&;t t
-+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-+s&@builddir@&$ac_builddir&;t t
-+s&@abs_builddir@&$ac_abs_builddir&;t t
-+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-+s&@INSTALL@&$ac_INSTALL&;t t
-+$ac_datarootdir_hack
-+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed 's/|#_!!_#|//g' >$tmp/out
-
--# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
--# NAME is the cpp macro being defined and VALUE is the value it is being given.
--#
--# ac_d sets the value in "#define NAME VALUE" lines.
--ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
--ac_dB='[ ].*$,\1#\2'
--ac_dC=' '
--ac_dD=',;t'
--# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
--ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
--ac_uB='$,\1#\2define\3'
--ac_uC=' '
--ac_uD=',;t'
-+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-+which seems to be undefined. Please make sure it is defined." >&5
-+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-+which seems to be undefined. Please make sure it is defined." >&2;}
-
--for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-+ rm -f "$tmp/stdin"
- case $ac_file in
-- - | *:- | *:-:* ) # input from stdin
-- cat >$tmp/stdin
-- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-- * ) ac_file_in=$ac_file.in ;;
-+ -) cat "$tmp/out"; rm -f "$tmp/out";;
-+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
- esac
--
-- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
--echo "$as_me: creating $ac_file" >&6;}
--
-- # First look for the input files in the build tree, otherwise in the
-- # src tree.
-- ac_file_inputs=`IFS=:
-- for f in $ac_file_in; do
-- case $f in
-- -) echo $tmp/stdin ;;
-- [\\/$]*)
-- # Absolute (can't be DOS-style, as IFS=:)
-- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
--echo "$as_me: error: cannot find input file: $f" >&2;}
-- { (exit 1); exit 1; }; }
-- # Do quote $f, to prevent DOS paths from being IFS'd.
-- echo "$f";;
-- *) # Relative
-- if test -f "$f"; then
-- # Build tree
-- echo "$f"
-- elif test -f "$srcdir/$f"; then
-- # Source tree
-- echo "$srcdir/$f"
-- else
-- # /dev/null tree
-- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
--echo "$as_me: error: cannot find input file: $f" >&2;}
-- { (exit 1); exit 1; }; }
-- fi;;
-- esac
-- done` || { (exit 1); exit 1; }
-- # Remove the trailing spaces.
-- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
--
-+ ;;
-+ :H)
-+ #
-+ # CONFIG_HEADER
-+ #
- _ACEOF
-
--# Transform confdefs.h into two sed scripts, `conftest.defines' and
--# `conftest.undefs', that substitutes the proper values into
--# config.h.in to produce config.h. The first handles `#define'
--# templates, and the second `#undef' templates.
--# And first: Protect against being on the right side of a sed subst in
--# config.status. Protect against being in an unquoted here document
--# in config.status.
--rm -f conftest.defines conftest.undefs
--# Using a here document instead of a string reduces the quoting nightmare.
--# Putting comments in sed scripts is not portable.
--#
--# `end' is used to avoid that the second main sed command (meant for
--# 0-ary CPP macros) applies to n-ary macro definitions.
--# See the Autoconf documentation for `clear'.
--cat >confdef2sed.sed <<\_ACEOF
--s/[\\&,]/\\&/g
--s,[\\$`],\\&,g
--t clear
--: clear
--s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
--t end
--s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
--: end
--_ACEOF
--# If some macros were called several times there might be several times
--# the same #defines, which is useless. Nevertheless, we may not want to
--# sort them, since we want the *last* AC-DEFINE to be honored.
--uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
--sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
--rm -f confdef2sed.sed
-+# Transform confdefs.h into a sed script `conftest.defines', that
-+# substitutes the proper values into config.h.in to produce config.h.
-+rm -f conftest.defines conftest.tail
-+# First, append a space to every undef/define line, to ease matching.
-+echo 's/$/ /' >conftest.defines
-+# Then, protect against being on the right side of a sed subst, or in
-+# an unquoted here document, in config.status. If some macros were
-+# called several times there might be several #defines for the same
-+# symbol, which is useless. But do not sort them, since the last
-+# AC_DEFINE must be honored.
-+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-+# NAME is the cpp macro being defined, VALUE is the value it is being given.
-+# PARAMS is the parameter list in the macro definition--in most cases, it's
-+# just an empty string.
-+ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
-+ac_dB='\\)[ (].*,\\1define\\2'
-+ac_dC=' '
-+ac_dD=' ,'
-
--# This sed command replaces #undef with comments. This is necessary, for
-+uniq confdefs.h |
-+ sed -n '
-+ t rset
-+ :rset
-+ s/^[ ]*#[ ]*define[ ][ ]*//
-+ t ok
-+ d
-+ :ok
-+ s/[\\&,]/\\&/g
-+ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
-+ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
-+ ' >>conftest.defines
-+
-+# Remove the space that was appended to ease matching.
-+# Then replace #undef with comments. This is necessary, for
- # example, in the case of _POSIX_SOURCE, which is predefined and required
- # on some systems where configure will not decide to define it.
--cat >>conftest.undefs <<\_ACEOF
--s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
--_ACEOF
-+# (The regexp can be short, since the line contains either #define or #undef.)
-+echo 's/ $//
-+s,^[ #]*u.*,/* & */,' >>conftest.defines
-
--# Break up conftest.defines because some shells have a limit on the size
--# of here documents, and old seds have small limits too (100 cmds).
--echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
--echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
--echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
--echo ' :' >>$CONFIG_STATUS
--rm -f conftest.tail
--while grep . conftest.defines >/dev/null
-+# Break up conftest.defines:
-+ac_max_sed_lines=50
-+
-+# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-+# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-+# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-+# et cetera.
-+ac_in='$ac_file_inputs'
-+ac_out='"$tmp/out1"'
-+ac_nxt='"$tmp/out2"'
-+
-+while :
- do
-- # Write a limited-size here document to $tmp/defines.sed.
-- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
-- # Speed up: don't consider the non `#define' lines.
-- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
-- # Work around the forget-to-reset-the-flag bug.
-- echo 't clr' >>$CONFIG_STATUS
-- echo ': clr' >>$CONFIG_STATUS
-- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-+ # Write a here document:
-+ cat >>$CONFIG_STATUS <<_ACEOF
-+ # First, check the format of the line:
-+ cat >"\$tmp/defines.sed" <<\\CEOF
-+/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
-+/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
-+b
-+:def
-+_ACEOF
-+ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
- echo 'CEOF
-- sed -f $tmp/defines.sed $tmp/in >$tmp/out
-- rm -f $tmp/in
-- mv $tmp/out $tmp/in
--' >>$CONFIG_STATUS
-- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-+ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
-+ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
-+ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
-+ grep . conftest.tail >/dev/null || break
- rm -f conftest.defines
- mv conftest.tail conftest.defines
- done
--rm -f conftest.defines
--echo ' fi # grep' >>$CONFIG_STATUS
--echo >>$CONFIG_STATUS
--
--# Break up conftest.undefs because some shells have a limit on the size
--# of here documents, and old seds have small limits too (100 cmds).
--echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
--rm -f conftest.tail
--while grep . conftest.undefs >/dev/null
--do
-- # Write a limited-size here document to $tmp/undefs.sed.
-- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
-- # Speed up: don't consider the non `#undef'
-- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
-- # Work around the forget-to-reset-the-flag bug.
-- echo 't clr' >>$CONFIG_STATUS
-- echo ': clr' >>$CONFIG_STATUS
-- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-- echo 'CEOF
-- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-- rm -f $tmp/in
-- mv $tmp/out $tmp/in
--' >>$CONFIG_STATUS
-- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-- rm -f conftest.undefs
-- mv conftest.tail conftest.undefs
--done
--rm -f conftest.undefs
-+rm -f conftest.defines conftest.tail
-
-+echo "ac_result=$ac_in" >>$CONFIG_STATUS
- cat >>$CONFIG_STATUS <<\_ACEOF
-- # Let's still pretend it is `configure' which instantiates (i.e., don't
-- # use $as_me), people would be surprised to read:
-- # /* config.h. Generated by config.status. */
-- if test x"$ac_file" = x-; then
-- echo "/* Generated by configure. */" >$tmp/config.h
-- else
-- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
-- fi
-- cat $tmp/in >>$tmp/config.h
-- rm -f $tmp/in
- if test x"$ac_file" != x-; then
-- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-+ echo "/* $configure_input */" >"$tmp/config.h"
-+ cat "$ac_result" >>"$tmp/config.h"
-+ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
- echo "$as_me: $ac_file is unchanged" >&6;}
- else
-- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
--$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-- X"$ac_file" : 'X\(//\)[^/]' \| \
-- X"$ac_file" : 'X\(//\)$' \| \
-- X"$ac_file" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
--echo X"$ac_file" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-- { if $as_mkdir_p; then
-- mkdir -p "$ac_dir"
-- else
-- as_dir="$ac_dir"
-- as_dirs=
-- while test ! -d "$as_dir"; do
-- as_dirs="$as_dir $as_dirs"
-- as_dir=`(dirname "$as_dir") 2>/dev/null ||
--$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-- X"$as_dir" : 'X\(//\)[^/]' \| \
-- X"$as_dir" : 'X\(//\)$' \| \
-- X"$as_dir" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
--echo X"$as_dir" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-- done
-- test ! -n "$as_dirs" || mkdir $as_dirs
-- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
--echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-- { (exit 1); exit 1; }; }; }
--
- rm -f $ac_file
-- mv $tmp/config.h $ac_file
-+ mv "$tmp/config.h" $ac_file
- fi
- else
-- cat $tmp/config.h
-- rm -f $tmp/config.h
-+ echo "/* $configure_input */"
-+ cat "$ac_result"
- fi
-+ rm -f "$tmp/out12"
- # Compute $ac_file's index in $config_headers.
- _am_stamp_count=1
- for _am_header in $config_headers :; do
-@@ -7556,135 +8077,39 @@ for _am_header in $config_headers :; do
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
- done
--echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
-+echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
- $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X$ac_file : 'X\(//\)[^/]' \| \
- X$ac_file : 'X\(//\)$' \| \
-- X$ac_file : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
- echo X$ac_file |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`/stamp-h$_am_stamp_count
--done
--_ACEOF
--cat >>$CONFIG_STATUS <<\_ACEOF
--
--#
--# CONFIG_COMMANDS section.
--#
--for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
--$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-- X"$ac_dest" : 'X\(//\)[^/]' \| \
-- X"$ac_dest" : 'X\(//\)$' \| \
-- X"$ac_dest" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
--echo X"$ac_dest" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-- { if $as_mkdir_p; then
-- mkdir -p "$ac_dir"
-- else
-- as_dir="$ac_dir"
-- as_dirs=
-- while test ! -d "$as_dir"; do
-- as_dirs="$as_dir $as_dirs"
-- as_dir=`(dirname "$as_dir") 2>/dev/null ||
--$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-- X"$as_dir" : 'X\(//\)[^/]' \| \
-- X"$as_dir" : 'X\(//\)$' \| \
-- X"$as_dir" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
--echo X"$as_dir" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-- done
-- test ! -n "$as_dirs" || mkdir $as_dirs
-- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
--echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-- { (exit 1); exit 1; }; }; }
--
-- ac_builddir=.
--
--if test "$ac_dir" != .; then
-- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-- # A "../" for each directory in $ac_dir_suffix.
-- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
--else
-- ac_dir_suffix= ac_top_builddir=
--fi
--
--case $srcdir in
-- .) # No --srcdir option. We are building in place.
-- ac_srcdir=.
-- if test -z "$ac_top_builddir"; then
-- ac_top_srcdir=.
-- else
-- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-- fi ;;
-- [\\/]* | ?:[\\/]* ) # Absolute path.
-- ac_srcdir=$srcdir$ac_dir_suffix;
-- ac_top_srcdir=$srcdir ;;
-- *) # Relative path.
-- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-- ac_top_srcdir=$ac_top_builddir$srcdir ;;
--esac
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`/stamp-h$_am_stamp_count
-+ ;;
-
--# Do not use `cd foo && pwd` to compute absolute paths, because
--# the directories may not exist.
--case `pwd` in
--.) ac_abs_builddir="$ac_dir";;
--*)
-- case "$ac_dir" in
-- .) ac_abs_builddir=`pwd`;;
-- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-- *) ac_abs_builddir=`pwd`/"$ac_dir";;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_top_builddir=${ac_top_builddir}.;;
--*)
-- case ${ac_top_builddir}. in
-- .) ac_abs_top_builddir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_srcdir=$ac_srcdir;;
--*)
-- case $ac_srcdir in
-- .) ac_abs_srcdir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-- esac;;
--esac
--case $ac_abs_builddir in
--.) ac_abs_top_srcdir=$ac_top_srcdir;;
--*)
-- case $ac_top_srcdir in
-- .) ac_abs_top_srcdir=$ac_abs_builddir;;
-- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-- esac;;
--esac
-+ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-+echo "$as_me: executing $ac_file commands" >&6;}
-+ ;;
-+ esac
-
-
-- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
--echo "$as_me: executing $ac_dest commands" >&6;}
-- case $ac_dest in
-- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-+ case $ac_file$ac_mode in
-+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
-@@ -7694,18 +8119,29 @@ echo "$as_me: executing $ac_dest command
- # each Makefile.in and add a new line on top of each file to say so.
- # So let's grep whole file.
- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-- dirpart=`(dirname "$mf") 2>/dev/null ||
-+ dirpart=`$as_dirname -- "$mf" ||
- $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
-- X"$mf" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$mf" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
- else
- continue
- fi
-@@ -7727,53 +8163,79 @@ echo X"$mf" |
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
-- fdir=`(dirname "$file") 2>/dev/null ||
-+ fdir=`$as_dirname -- "$file" ||
- $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
-- X"$file" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$file" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-- { if $as_mkdir_p; then
-- mkdir -p $dirpart/$fdir
-- else
-- as_dir=$dirpart/$fdir
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
-+ { as_dir=$dirpart/$fdir
-+ case $as_dir in #(
-+ -*) as_dir=./$as_dir;;
-+ esac
-+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
- as_dirs=
-- while test ! -d "$as_dir"; do
-- as_dirs="$as_dir $as_dirs"
-- as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+ while :; do
-+ case $as_dir in #(
-+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-+ *) as_qdir=$as_dir;;
-+ esac
-+ as_dirs="'$as_qdir' $as_dirs"
-+ as_dir=`$as_dirname -- "$as_dir" ||
- $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
-- X"$as_dir" : 'X\(/\)' \| \
-- . : '\(.\)' 2>/dev/null ||
-+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$as_dir" |
-- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-- /^X\(\/\/\)$/{ s//\1/; q; }
-- /^X\(\/\).*/{ s//\1/; q; }
-- s/.*/./; q'`
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)[^/].*/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\/\)$/{
-+ s//\1/
-+ q
-+ }
-+ /^X\(\/\).*/{
-+ s//\1/
-+ q
-+ }
-+ s/.*/./; q'`
-+ test -d "$as_dir" && break
- done
-- test ! -n "$as_dirs" || mkdir $as_dirs
-- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
--echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
-+ test -z "$as_dirs" || eval "mkdir $as_dirs"
-+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-+echo "$as_me: error: cannot create directory $as_dir" >&2;}
- { (exit 1); exit 1; }; }; }
--
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
- ;;
-+
- esac
--done
--_ACEOF
-+done # for ac_tag
-
--cat >>$CONFIG_STATUS <<\_ACEOF
-
- { (exit 0); exit 0; }
- _ACEOF
diff --git a/package/sipsak/patches/patch-configure_ac b/package/sipsak/patches/patch-configure_ac
new file mode 100644
index 000000000..665ce59b2
--- /dev/null
+++ b/package/sipsak/patches/patch-configure_ac
@@ -0,0 +1,10 @@
+--- sipsak-0.9.8.1.orig/configure.ac 2021-01-08 06:31:40.000000000 +0100
++++ sipsak-0.9.8.1/configure.ac 2024-02-29 01:40:07.115755921 +0100
+@@ -14,7 +14,6 @@ AC_PROG_CC
+ if test "x$GCC" = "xyes"; then
+ CFLAGS="$CFLAGS -Wall"
+ fi
+-SIPSAK_GCC_STACK_PROTECT_CC
+ CHECK_PROG_DISTCC
+
+ AC_PROG_INSTALL
diff --git a/package/sipsak/patches/patch-header_f_c b/package/sipsak/patches/patch-header_f_c
deleted file mode 100644
index ed142ade5..000000000
--- a/package/sipsak/patches/patch-header_f_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- sipsak-0.9.6.orig/header_f.c 2006-01-28 22:11:50.000000000 +0100
-+++ sipsak-0.9.6/header_f.c 2016-09-23 18:49:25.092385094 +0200
-@@ -604,7 +604,7 @@ void print_message_line(char *message)
- }
-
- /* return pointer to the beginning of the message body */
--inline char* get_body(char *mes) {
-+char* get_body(char *mes) {
- char *cr;
-
- if ((cr = strstr(mes, "\r\n\r\n")) != NULL) {
diff --git a/package/sipsak/patches/patch-header_f_h b/package/sipsak/patches/patch-header_f_h
deleted file mode 100644
index 922599d28..000000000
--- a/package/sipsak/patches/patch-header_f_h
+++ /dev/null
@@ -1,9 +0,0 @@
---- sipsak-0.9.6.orig/header_f.h 2006-01-28 22:11:50.000000000 +0100
-+++ sipsak-0.9.6/header_f.h 2016-09-23 18:49:14.964003070 +0200
-@@ -61,5 +61,5 @@ void new_transaction(char *message);
-
- void print_message_line(char *message);
-
--inline char* get_body(char *mes);
-+char* get_body(char *mes);
- #endif
diff --git a/package/sngrep/Makefile b/package/sngrep/Makefile
index f87eb7292..c4689be62 100644
--- a/package/sngrep/Makefile
+++ b/package/sngrep/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= sngrep
-PKG_VERSION:= 1.4.3
+PKG_VERSION:= 1.4.10
PKG_RELEASE:= 1
-PKG_HASH:= 7385ac202de6d6a1feffb2fd514600563133d9dfa7fb47be052de839abcc1d52
+PKG_HASH:= cedbe521c9730deda004bff71e88c8c56ae66d3d147ddc6f5f965df2ca67a8df
PKG_DESCR:= displaying sip calls message flows from terminal
PKG_SECTION:= net/debug
PKG_BUILDDEP:= libpcap ncurses
diff --git a/package/snort/Makefile b/package/snort/Makefile
index 73cde0a4d..1c044e190 100644
--- a/package/snort/Makefile
+++ b/package/snort/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= snort
-PKG_VERSION:= 2.9.14.1
+PKG_VERSION:= 2.9.20
PKG_RELEASE:= 1
-PKG_HASH:= 2472989da3aace000d1ea5931ece68f8e5cc0c511e272d65182113a2481e822d
+PKG_HASH:= 29400e13f53b1831e0b8b10ec1224a1cbaa6dc1533a5322a20dd80bb84b4981c
PKG_DESCR:= flexible network intrusion detection system
PKG_SECTION:= net/security
PKG_DEPENDS:= libnet libpcap libpcre libtirpc daq
diff --git a/package/socat/Makefile b/package/socat/Makefile
index 9ffac2fd9..5cfdef06a 100644
--- a/package/socat/Makefile
+++ b/package/socat/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= socat
-PKG_VERSION:= 1.7.3.2
+PKG_VERSION:= 1.7.4.3
PKG_RELEASE:= 1
-PKG_HASH:= ce3efc17e3e544876ebce7cd6c85b3c279fda057b2857fcaaf67b9ab8bdaf034
+PKG_HASH:= d697245144731423ddbbceacabbd29447089ea223e9a439b28f9ff90d0dd216e
PKG_DESCR:= multipurpose relay
PKG_SECTION:= net/misc
PKG_NEEDS:= threads
diff --git a/package/sofia-sip/Makefile b/package/sofia-sip/Makefile
new file mode 100644
index 000000000..7e94193dc
--- /dev/null
+++ b/package/sofia-sip/Makefile
@@ -0,0 +1,28 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= sofia-sip
+PKG_VERSION:= 1.13.17
+PKG_RELEASE:= 1
+PKG_HASH:= daca3d961b6aa2974ad5d3be69ed011726c3e4d511b2a0d4cb6d878821a2de7a
+PKG_DESCR:= sip library
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://github.com/freeswitch/sofia-sip/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,SOFIA_SIP,sofia-sip,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= bootstrap
+
+sofia-sip-install:
+ $(INSTALL_DIR) $(IDIR_SOFIA_SIP)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libsofia-sip*.so* \
+ $(IDIR_SOFIA_SIP)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/spandsp/Makefile b/package/spandsp/Makefile
new file mode 100644
index 000000000..a54a2fb9e
--- /dev/null
+++ b/package/spandsp/Makefile
@@ -0,0 +1,30 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= spandsp
+PKG_VERSION:= 7b0b8cf3d42b725405bcc63145de5e280265ce4e
+PKG_GIT:= hash
+PKG_RELEASE:= 1
+PKG_DESCR:= dsp library
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP:= libtiff
+PKG_DEPENDS:= libtiff
+PKG_SITES:= https://github.com/freeswitch/spandsp.git
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,SPANDSP,spandsp,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+AUTOTOOL_STYLE:= autogen
+CONFIGURE_ENV+= ac_cv_func_realloc_0_nonnull=yes
+CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes
+
+spandsp-install:
+ $(INSTALL_DIR) $(IDIR_SPANDSP)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libspandsp*.so* \
+ $(IDIR_SPANDSP)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/spdlog/Makefile b/package/spdlog/Makefile
new file mode 100644
index 000000000..3d96eecb9
--- /dev/null
+++ b/package/spdlog/Makefile
@@ -0,0 +1,31 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= spdlog
+PKG_VERSION:= 1.9.2
+PKG_RELEASE:= 1
+PKG_HASH:= 6fff9215f5cb81760be4cc16d033526d1080427d236e86d70bb02994f85e3d38
+PKG_DESCR:= very fast, header-only/compiled, C++ logging library
+PKG_BUILDDEP:= fmt
+PKG_SECTION:= libs/misc
+PKG_SITES:= https://github.com/gabime/spdlog/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,SPDLOG,spdlog,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+CONFIG_STYLE:= cmake
+CMAKE_FLAGS+= -DSPDLOG_BUILD_TESTS=OFF \
+ -DSPDLOG_BUILD_EXAMPLE=OFF \
+ -DSPDLOG_BUILD_BENCH=OFF \
+ -DSPDLOG_FMT_EXTERNAL=ON
+
+
+spdlog-install:
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/sqlite/Makefile b/package/sqlite/Makefile
index cf035471f..b9d695fbb 100644
--- a/package/sqlite/Makefile
+++ b/package/sqlite/Makefile
@@ -4,28 +4,30 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= sqlite
-PKG_VERSION:= 3.15.0
+PKG_VERSION:= 3.37.1
PKG_RELEASE:= 1
-PKG_HASH:= 77162da9b4a0336d7e77d5252b690662850f62b47c12d9125f74ab9de78ded27
+PKG_HASH:= 40f22a13bf38bbcd4c7ac79bcfb42a72d5aa40930c1f3f822e30ccce295f0f2e
PKG_DESCR:= embeddable sql database cli
PKG_SECTION:= sys/misc
PKG_BUILDDEP:= ncurses readline
-PKG_DEPENDS:= libsqlite
+PKG_DEPENDS:= libsqlite libreadline libncurses
PKG_URL:= http://www.sqlite.org/
-PKG_SITES:= http://www.sqlite.org/2016/
+PKG_SITES:= http://www.sqlite.org/2021/
PKG_LIBNAME:= libsqlite
PKG_OPTS:= dev
PKG_NOPARALLEL:= 1
-DISTFILES:= sqlite-autoconf-3150000.tar.gz
-WRKDIST= ${WRKDIR}/sqlite-autoconf-3150000
+DISTFILES:= sqlite-autoconf-3370100.tar.gz
+WRKDIST= ${WRKDIR}/sqlite-autoconf-3370100
PKG_SUBPKGS:= SQLITE_CLI LIBSQLITE
PKGSD_LIBSQLITE:= emeddable sql library
PKGSC_LIBSQLITE:= libs/db
+include ${ADK_TOPDIR}/mk/host.mk
include ${ADK_TOPDIR}/mk/package.mk
+$(eval $(call HOST_template,SQLITE,sqlite,${PKG_VERSION}-${PKG_RELEASE}))
$(eval $(call PKG_template,LIBSQLITE,libsqlite,${PKG_VERSION}-${PKG_RELEASE},${PKGSS_LIBSQLITE},${PKGSD_LIBSQLITE},${PKGSC_LIBSQLITE},${PKG_OPTS}))
$(eval $(call PKG_template,SQLITE_CLI,sqlite-cli,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
@@ -57,4 +59,5 @@ sqlite-cli-install:
${INSTALL_DIR} ${IDIR_SQLITE_CLI}/usr/bin
${INSTALL_BIN} ${WRKINST}/usr/bin/sqlite3 ${IDIR_SQLITE_CLI}/usr/bin
+include ${ADK_TOPDIR}/mk/host-bottom.mk
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/squid/Makefile b/package/squid/Makefile
index 3a57eb39d..93fa2c328 100644
--- a/package/squid/Makefile
+++ b/package/squid/Makefile
@@ -4,16 +4,16 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= squid
-PKG_VERSION:= 5.2
+PKG_VERSION:= 6.1
PKG_RELEASE:= 1
-PKG_HASH:= ea921f055c6cc4b3c6542d995f5a7c5980f2f91adaaa10fe8260d0f1527aaf80
+PKG_HASH:= 6b029096cf531fc7bf83a305efeb0fdb2628cd42a4d20a61e0ab22e85a39c4e7
PKG_DESCR:= web and cache proxy
PKG_SECTION:= net/proxy
PKG_DEPENDS:= libltdl
PKG_BUILDDEP:= libtool
PKG_NEEDS:= threads c++
PKG_URL:= http://www.squid-cache.org/
-PKG_SITES:= http://www.squid-cache.org/Versions/v5/
+PKG_SITES:= http://www.squid-cache.org/Versions/v6/
PKG_SUBPKGS:= SQUID SQUID_MOD_BASIC_AUTH_GETPWNAM SQUID_MOD_BASIC_AUTH_NCSA
PKG_SUBPKGS+= SQUID_MOD_BASIC_AUTH_SMB SQUID_MOD_DIGEST_AUTH_FILE
@@ -112,34 +112,17 @@ $(eval $(call PKG_mod_template,SQUID_MOD_NTLM_AUTH_FAKE,ntlm_fake_auth))
TARGET_LDFLAGS+= -lpthread
HOST_CXXFLAGS+= -static-libstdc++
-CONFIGURE_ENV+= ac_cv_sizeof_void_p=4 \
- ac_cv_sizeof_short=2 \
- ac_cv_sizeof_int=4 \
- ac_cv_sizeof_long=4 \
- ac_cv_sizeof_long_long=8 \
- ac_cv_sizeof___int64=0 \
- ac_cv_sizeof_int16_t=2 \
- ac_cv_sizeof_uint16_t=2 \
- ac_cv_sizeof_u_int16_t=2 \
- ac_cv_sizeof_int32_t=4 \
- ac_cv_sizeof_uint32_t=4 \
- ac_cv_sizeof_u_int32_t=4 \
- ac_cv_sizeof_int64_t=8 \
- ac_cv_sizeof_uint64_t=8 \
- ac_cv_sizeof_u_int64_t=8 \
- ac_cv_func_setresuid=no \
- ac_cv_func_va_copy=no \
- ac_cv_func___va_copy=no \
+CONFIGURE_ENV+= ac_cv_func_setresuid=yes \
+ ac_cv_func_va_copy=yes \
+ ac_cv_func___va_copy=yes \
ac_cv_epoll_works=yes \
- ac_cv_lib_nsl_main=no \
ac_cv_func_strnstr=no \
- squid_cv_pf_inet6=yes \
- squid_cv_gnu_atomics=yes \
ac_cv_have_squid=yes
XAKE_FLAGS+= MKDIR_P="mkdir -p"
CONFIGURE_ARGS+= --datadir=/usr/share/squid \
--libexecdir=/usr/lib/squid \
--sysconfdir=/etc/squid \
+ --disable-arch-native \
--with-gnu-ld \
--enable-x-accelerator-vary \
--with-pthreads \
@@ -179,8 +162,6 @@ squid-install: ${INSTALL_MODS_y} ${INSTALL_MODS_m}
${IDIR_SQUID}/etc/squid/
${INSTALL_DATA} ./files/squid.conf ${IDIR_SQUID}/etc/squid/
${INSTALL_DIR} ${IDIR_SQUID}/usr/share/squid/errors
- ${CP} ${WRKINST}/usr/share/squid/errors/en \
- ${IDIR_SQUID}/usr/share/squid/errors
${CP} ${WRKINST}/usr/share/squid/errors/templates \
${IDIR_SQUID}/usr/share/squid/errors
${CP} ${WRKINST}/usr/share/squid/icons ${IDIR_SQUID}/usr/share/squid/
diff --git a/package/strace/Makefile b/package/strace/Makefile
index 4bcee572d..dc4541f9c 100644
--- a/package/strace/Makefile
+++ b/package/strace/Makefile
@@ -4,15 +4,15 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= strace
-PKG_VERSION:= 5.14
+PKG_VERSION:= 6.8
PKG_RELEASE:= 1
-PKG_HASH:= 901bee6db5e17debad4530dd9ffb4dc9a96c4a656edbe1c3141b7cb307b11e73
+PKG_HASH:= ba6950a96824cdf93a584fa04f0a733896d2a6bc5f0ad9ffe505d9b41e970149
PKG_DESCR:= system call trace program
PKG_SECTION:= app/debug
PKG_URL:= https://strace.io
PKG_SITES:= https://strace.io/files/$(PKG_VERSION)/
-PKG_ARCH_DEPENDS:= !h8300 !nds32
+PKG_ARCH_DEPENDS:= !h8300 !nds32 !cris
include ${ADK_TOPDIR}/mk/package.mk
@@ -33,6 +33,7 @@ ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
TARGET_LDFLAGS+= -pthread
endif
+AUTOTOOL_STYLE:= autoreconf
CONFIGURE_ARGS+= --enable-mpers=check
INSTALL_STYLE:= manual
diff --git a/package/strace/patches/riscv32.patch b/package/strace/patches/riscv32.patch
new file mode 100644
index 000000000..b3492845b
--- /dev/null
+++ b/package/strace/patches/riscv32.patch
@@ -0,0 +1,282 @@
+# --- T2-COPYRIGHT-NOTE-BEGIN ---
+# T2 SDE: package/*/strace/riscv32.patch
+# Copyright (C) 2021 - 2022 The T2 SDE Project
+#
+# This Copyright note is generated by scripts/Create-CopyPatch,
+# more information can be found in the files COPYING and README.
+#
+# This patch file is dual-licensed. It is available under the license the
+# patched project is licensed under, as long as it is an OpenSource license
+# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
+# of the GNU General Public License version 2 as used by the T2 SDE.
+# --- T2-COPYRIGHT-NOTE-END ---
+
+Signed-off-by: Alistair Francis <alistair.francis at wdc.com>
+---
+ Makefile.am | 20 ++++++++--------
+ configure.ac | 6 ++++-
+ dist/INSTALL | 2 +-
+ src/linux/{riscv64 => riscv}/arch_defs_.h | 16 +++++++++++++
+ src/linux/{riscv64 => riscv}/arch_regs.c | 0
+ src/linux/riscv/asm_stat.h | 26 +++++++++++++++++++++
+ src/linux/{riscv64 => riscv}/get_error.c | 0
+ src/linux/{riscv64 => riscv}/get_scno.c | 0
+ src/linux/{riscv64 => riscv}/get_syscall_args.c | 0
+ src/linux/{riscv64 => riscv}/ioctls_arch0.h | 0
+ src/linux/riscv/ioctls_inc0.h | 7 ++++++
+ src/linux/{riscv64 => riscv}/raw_syscall.h | 0
+ src/linux/{riscv64 => riscv}/set_error.c | 0
+ src/linux/{riscv64 => riscv}/set_scno.c | 0
+ src/linux/{riscv64 => riscv}/syscallent.h | 8 ++++++-
+ src/linux/riscv64/ioctls_inc0.h | 1 -
+ src/riscv.c | 4 ++--
+ 17 files changed, 74 insertions(+), 16 deletions(-)
+ create mode 100644 src/linux/riscv/arch_defs_.h
+ rename src/linux/{riscv64 => src/riscv}/arch_regs.c (100%)
+ create mode 100644 src/linux/riscv/asm_stat.h
+ rename src/linux/{riscv64 => src/riscv}/get_error.c (100%)
+ rename src/linux/{riscv64 => src/riscv}/get_scno.c (100%)
+ rename src/linux/{riscv64 => src/riscv}/get_syscall_args.c (100%)
+ rename src/linux/{riscv64 => src/riscv}/ioctls_arch0.h (100%)
+ create mode 100644 src/linux/riscv/ioctls_inc0.h
+ rename src/linux/{riscv64 => src/riscv}/raw_syscall.h (100%)
+ rename src/linux/{riscv64 => src/riscv}/set_error.c (100%)
+ rename src/linux/{riscv64 => src/riscv}/set_scno.c (100%)
+ rename src/linux/{riscv64 => src/riscv}/syscallent.h (64%)
+ delete mode 100644 src/linux/riscv64/ioctls_inc0.h
+
+diff --git a/Makefile.am b/Makefile.am
+index 9c62218f..4955654b 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -802,19 +802,19 @@ extrA_DIST =
+ linux/powerpc64le/set_scno.c \
+ linux/powerpc64le/syscallent.h \
+ linux/powerpc64le/userent.h \
+- linux/riscv64/arch_defs_.h \
+- linux/riscv64/arch_prstatus_regset.c \
+- linux/riscv64/arch_prstatus_regset.h \
+- linux/riscv64/arch_regs.c \
+- linux/riscv64/get_error.c \
+- linux/riscv64/get_scno.c \
+- linux/riscv64/get_syscall_args.c \
+- linux/riscv64/ioctls_arch0.h \
+- linux/riscv64/ioctls_inc0.h \
+- linux/riscv64/raw_syscall.h \
+- linux/riscv64/set_error.c \
+- linux/riscv64/set_scno.c \
+- linux/riscv64/syscallent.h \
++ linux/riscv/arch_defs_.h \
++ linux/riscv/arch_prstatus_regset.c \
++ linux/riscv/arch_prstatus_regset.h \
++ linux/riscv/arch_regs.c \
++ linux/riscv/get_error.c \
++ linux/riscv/get_scno.c \
++ linux/riscv/get_syscall_args.c \
++ linux/riscv/ioctls_arch0.h \
++ linux/riscv/ioctls_inc0.h \
++ linux/riscv/raw_syscall.h \
++ linux/riscv/set_error.c \
++ linux/riscv/set_scno.c \
++ linux/riscv/syscallent.h \
+ linux/s390/arch_defs_.h \
+ linux/s390/arch_prstatus_regset.c \
+ linux/s390/arch_prstatus_regset.h \
+diff --git a/configure.ac b/configure.ac
+index dd4f13f4..4a53681c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -157,9 +157,12 @@
+ esac
+ fi
+ ;;
++riscv32*)
++ arch=riscv
++ AC_DEFINE([RISCV32], 1, [Define for the RISC-V 32-bit architecture])
++ ;;
+ riscv64*)
+- arch=riscv64
+- karch=riscv
++ arch=riscv
+ AC_DEFINE([RISCV64], 1, [Define for the RISC-V 64-bit architecture])
+ ;;
+ s390)
+diff --git a/dist/INSTALL b/dist/INSTALL
+index 0d22512b..19e059cf 100644
+--- a/INSTALL
++++ b/INSTALL
+@@ -63,7 +63,7 @@ Taking the aforementioned into account, there are the following requirements:
+
+ - gawk (at least version 3)
+ - Ability to compile for m32 personality (on architectures where it is supported)
+- - On x86_64, x32, powerpc64, sparc64, riscv64, tile64: gcc -m32
++ - On x86_64, x32, powerpc64, sparc64, riscv32, riscv64, tile64: gcc -m32
+ - s390x: gcc -m31
+ - AArch64: a separate compiler for armv7 EABI
+ - See information about configuration in "1.3.2. AArch64: AArch32 support"
+diff --git a/src/linux/riscv64/arch_defs_.h b/src/linux/riscv/arch_defs_.h
+similarity index 20%
+rename from src/linux/riscv64/arch_defs_.h
+rename to src/linux/riscv/arch_defs_.h
+index 0d22512b..19e059cf 100644
+--- a/src/linux/riscv64/arch_defs_.h
++++ b/src/linux/riscv/arch_defs_.h
+@@ -1 +1,8 @@
+-#define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_RISCV64, 0 }
++#if defined(RISCV32)
++# define ARCH_TIMESIZE 64
++# define HAVE_ARCH_TIME32_SYSCALLS 0
++# define HAVE_ARCH_OLD_TIME64_SYSCALLS 0
++# define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_RISCV32, 0 }
++#else
++# define PERSONALITY0_AUDIT_ARCH { AUDIT_ARCH_RISCV64, 0 }
++#endif
+diff --git a/src/linux/riscv64/arch_regs.c b/src/linux/riscv/arch_regs.c
+similarity index 100%
+rename from src/linux/riscv64/arch_regs.c
+rename to src/linux/riscv/arch_regs.c
+diff --git a/src/linux/riscv/asm_stat.h b/src/linux/riscv/asm_stat.h
+new file mode 100644
+index 00000000..73341454
+--- /dev/null
++++ b/src/linux/riscv/asm_stat.h
+@@ -0,0 +1,26 @@
++/*
++ * Copyright (c) 2020 The strace developers.
++ * All rights reserved.
++ *
++ * SPDX-License-Identifier: LGPL-2.1-or-later
++ */
++
++#ifndef STRACE_RISCV_ASM_STAT_H
++# define STRACE_RISCV_ASM_STAT_H
++
++# include "linux/generic/asm_stat.h"
++
++# if defined(RISCV32)
++# undef dev_t
++# undef ino_t
++# undef off64_t
++# undef off_t
++# undef time_t
++
++# define dev_t __kernel_loff_t
++# define ino_t __kernel_loff_t
++# define off64_t __kernel_off64_t
++# define off_t __kernel_off64_t
++# define time_t __kernel_time64_t
++# endif /* defined(RISCV32) */
++#endif /* !STRACE_RISCV_ASM_STAT_H */
+diff --git a/src/linux/riscv64/arch_prstatus_regset.h b/src/linux/riscv/arch_prstatus_regset.h
+similarity index 100%
+rename from src/linux/riscv64/arch_prstatus_regset.h
+rename to src/linux/riscv/arch_prstatus_regset.h
+diff --git a/src/linux/riscv64/arch_prstatus_regset.c b/src/linux/riscv/arch_prstatus_regset.c
+similarity index 100%
+rename from src/linux/riscv64/arch_prstatus_regset.c
+rename to src/linux/riscv/arch_prstatus_regset.c
+diff --git a/src/linux/riscv64/get_error.c b/src/linux/riscv/get_error.c
+similarity index 100%
+rename from src/linux/riscv64/get_error.c
+rename to src/linux/riscv/get_error.c
+diff --git a/src/linux/riscv64/get_scno.c b/src/linux/riscv/get_scno.c
+similarity index 100%
+rename from src/linux/riscv64/get_scno.c
+rename to src/linux/riscv/get_scno.c
+diff --git a/src/linux/riscv64/get_syscall_args.c b/src/linux/riscv/get_syscall_args.c
+similarity index 100%
+rename from src/linux/riscv64/get_syscall_args.c
+rename to src/linux/riscv/get_syscall_args.c
+diff --git a/src/linux/riscv64/ioctls_arch0.h b/src/linux/riscv/ioctls_arch0.h
+similarity index 100%
+rename from src/linux/riscv64/ioctls_arch0.h
+rename to src/linux/riscv/ioctls_arch0.h
+diff --git a/src/linux/riscv/ioctls_inc0.h b/src/linux/riscv/ioctls_inc0.h
+new file mode 100644
+index 00000000..cc39332f
+--- /dev/null
++++ b/src/linux/riscv/ioctls_inc0.h
+@@ -0,0 +1,7 @@
++#if defined(RISCV64)
++# include "../64/ioctls_inc.h"
++#elif defined(RISCV32)
++# include "../32/ioctls_inc.h"
++#else
++# error "Unsupported RISC-V xlen"
++#endif
+diff --git a/src/linux/riscv64/raw_syscall.h b/src/linux/riscv/raw_syscall.h
+similarity index 100%
+rename from src/linux/riscv64/raw_syscall.h
+rename to src/linux/riscv/raw_syscall.h
+diff --git a/src/linux/riscv64/set_error.c b/src/linux/riscv/set_error.c
+similarity index 100%
+rename from src/linux/riscv64/set_error.c
+rename to src/linux/riscv/set_error.c
+diff --git a/src/linux/riscv64/set_scno.c b/src/linux/riscv/set_scno.c
+similarity index 100%
+rename from src/linux/riscv64/set_scno.c
+rename to src/linux/riscv/set_scno.c
+diff --git a/src/linux/riscv64/syscallent.h b/src/linux/riscv/syscallent.h
+similarity index 64%
+rename from src/linux/riscv64/syscallent.h
+rename to src/linux/riscv/syscallent.h
+index 60c6ce58..c8fb3b8f 100644
+--- a/src/linux/riscv64/syscallent.h
++++ b/src/linux/riscv/syscallent.h
+@@ -5,7 +5,13 @@
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+-#include "../64/syscallent.h"
++#if defined(RISCV64)
++# include "../64/syscallent.h"
++#elif defined(RISCV32)
++# include "../32/syscallent.h"
++#else
++# error "Unsupported RISC-V xlen"
++#endif
+
+ /* #define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15) */
+ [259] = { 3, TM, SEN(riscv_flush_icache), "riscv_flush_icache" },
+diff --git a/src/linux/riscv64/ioctls_inc0.h b/src/linux/riscv64/ioctls_inc0.h
+deleted file mode 100644
+index f9939faa..00000000
+--- a/src/linux/riscv64/ioctls_inc0.h
++++ /dev/null
+@@ -1 +0,0 @@
+-#include "../64/ioctls_inc.h"
+diff --git a/riscv.c b/riscv.c
+index 825eb293..20094ba5 100644
+--- a/src/riscv.c
++++ b/src/riscv.c
+@@ -9,7 +9,7 @@
+
+ #include "defs.h"
+
+-#ifdef RISCV64
++#if defined(RISCV64) || defined(RISCV32)
+
+ # include "xlat/riscv_flush_icache_flags.h"
+
+@@ -30,4 +30,4 @@ SYS_FUNC(riscv_flush_icache)
+ return RVAL_DECODED;
+ }
+
+-#endif /* RISCV64 */
++#endif /* defined(RISCV64) || defined(RISCV32) */
+--
+2.25.0
+
+--- strace-5.10/src/config.h.in.vanilla 2021-02-13 16:11:28.950662094 +0100
++++ strace-5.10/src/config.h.in 2021-02-13 16:12:01.681663752 +0100
+@@ -3776,6 +3779,9 @@
+ /* Define for the little endian PowerPC64 architecture. */
+ #undef POWERPC64LE
+
++/* Define for the RISC-V 32-bit architecture */
++#undef RISCV32
++
+ /* Define for the RISC-V 64-bit architecture */
+ #undef RISCV64
+
+
diff --git a/package/stress-ng/Makefile b/package/stress-ng/Makefile
index aece6e635..d9758801c 100644
--- a/package/stress-ng/Makefile
+++ b/package/stress-ng/Makefile
@@ -13,6 +13,8 @@ PKG_SITES:= http://kernel.ubuntu.com/~cking/tarballs/stress-ng/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_CFLINE_STRESS_NG:= depends on ADK_BROKEN
+
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,STRESS_NG,stress-ng,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
diff --git a/package/strongswan/Makefile b/package/strongswan/Makefile
index 0ae988fe6..790700436 100644
--- a/package/strongswan/Makefile
+++ b/package/strongswan/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= strongswan
-PKG_VERSION:= 5.8.1
+PKG_VERSION:= 5.9.5
PKG_RELEASE:= 1
-PKG_HASH:= d86490a09160016d1c1a20020fef832559a22531eb9a1b1659256e3ca1c8c97d
+PKG_HASH:= 6db028c9033dfd7cab578ca7e4b0075922cffec7af8bffc7d67cac67f348a5be
PKG_DESCR:= ipsec based vpn software
PKG_SECTION:= net/security
PKG_KDEPENDS:= net-key inet-esp xfrm-user inet-xfrm-mode-transport
diff --git a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c
index 2c88daa81..44915d63c 100644
--- a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c
+++ b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c
@@ -1,6 +1,6 @@
---- strongswan-5.8.1.orig/src/libstrongswan/plugins/openssl/openssl_plugin.c 2019-08-27 15:26:53.000000000 +0200
-+++ strongswan-5.8.1/src/libstrongswan/plugins/openssl/openssl_plugin.c 2019-10-08 02:05:20.954742229 +0200
-@@ -310,7 +310,7 @@ static private_key_t *openssl_private_ke
+--- strongswan-5.9.5.orig/src/libstrongswan/plugins/openssl/openssl_plugin.c 2022-01-08 12:54:02.000000000 +0100
++++ strongswan-5.9.5/src/libstrongswan/plugins/openssl/openssl_plugin.c 2022-03-21 16:41:08.736944525 +0100
+@@ -329,7 +329,7 @@ static private_key_t *openssl_private_ke
case EVP_PKEY_EC:
return openssl_ec_private_key_create(key, FALSE);
#endif
@@ -9,7 +9,7 @@
case EVP_PKEY_ED25519:
case EVP_PKEY_ED448:
return openssl_ed_private_key_create(key, FALSE);
-@@ -462,7 +462,7 @@ static private_key_t *openssl_private_ke
+@@ -481,7 +481,7 @@ static private_key_t *openssl_private_ke
case EVP_PKEY_EC:
return openssl_ec_private_key_create(key, TRUE);
#endif
@@ -18,7 +18,7 @@
case EVP_PKEY_ED25519:
case EVP_PKEY_ED448:
return openssl_ed_private_key_create(key, TRUE);
-@@ -814,7 +814,7 @@ plugin_t *openssl_plugin_create()
+@@ -980,7 +980,7 @@ plugin_t *openssl_plugin_create()
},
);
diff --git a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c.orig b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c.orig
index 401bd7a64..2c88daa81 100644
--- a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c.orig
+++ b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_plugin_c.orig
@@ -1,6 +1,24 @@
---- strongswan-5.5.0.orig/src/libstrongswan/plugins/openssl/openssl_plugin.c 2016-06-30 16:20:10.000000000 +0200
-+++ strongswan-5.5.0/src/libstrongswan/plugins/openssl/openssl_plugin.c 2016-09-30 05:36:45.015692462 +0200
-@@ -573,7 +573,7 @@ plugin_t *openssl_plugin_create()
+--- strongswan-5.8.1.orig/src/libstrongswan/plugins/openssl/openssl_plugin.c 2019-08-27 15:26:53.000000000 +0200
++++ strongswan-5.8.1/src/libstrongswan/plugins/openssl/openssl_plugin.c 2019-10-08 02:05:20.954742229 +0200
+@@ -310,7 +310,7 @@ static private_key_t *openssl_private_ke
+ case EVP_PKEY_EC:
+ return openssl_ec_private_key_create(key, FALSE);
+ #endif
+-#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_EC)
++#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_EC) && !defined(LIBRESSL_VERSION_NUMBER)
+ case EVP_PKEY_ED25519:
+ case EVP_PKEY_ED448:
+ return openssl_ed_private_key_create(key, FALSE);
+@@ -462,7 +462,7 @@ static private_key_t *openssl_private_ke
+ case EVP_PKEY_EC:
+ return openssl_ec_private_key_create(key, TRUE);
+ #endif
+-#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_EC)
++#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_EC) && !defined(LIBRESSL_VERSION_NUMBER)
+ case EVP_PKEY_ED25519:
+ case EVP_PKEY_ED448:
+ return openssl_ed_private_key_create(key, TRUE);
+@@ -814,7 +814,7 @@ plugin_t *openssl_plugin_create()
},
);
diff --git a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_private_key_c b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_private_key_c
new file mode 100644
index 000000000..1e459f0ef
--- /dev/null
+++ b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_private_key_c
@@ -0,0 +1,11 @@
+--- strongswan-5.9.5.orig/src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c 2021-12-29 12:08:27.000000000 +0100
++++ strongswan-5.9.5/src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c 2022-03-21 16:48:57.605794714 +0100
+@@ -280,7 +280,7 @@ METHOD(private_key_t, sign, bool,
+ return build_emsa_pkcs1_signature(this, NID_sha384, data, signature);
+ case SIGN_RSA_EMSA_PKCS1_SHA2_512:
+ return build_emsa_pkcs1_signature(this, NID_sha512, data, signature);
+-#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3)
++#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3) && !defined(LIBRESSL_VERSION_NUMBER)
+ case SIGN_RSA_EMSA_PKCS1_SHA3_224:
+ return build_emsa_pkcs1_signature(this, NID_sha3_224, data, signature);
+ case SIGN_RSA_EMSA_PKCS1_SHA3_256:
diff --git a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_public_key_c b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_public_key_c
new file mode 100644
index 000000000..3571cad01
--- /dev/null
+++ b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_rsa_public_key_c
@@ -0,0 +1,11 @@
+--- strongswan-5.9.5.orig/src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c 2021-12-29 12:08:27.000000000 +0100
++++ strongswan-5.9.5/src/libstrongswan/plugins/openssl/openssl_rsa_public_key.c 2022-03-21 16:49:30.581005593 +0100
+@@ -281,7 +281,7 @@ METHOD(public_key_t, verify, bool,
+ return verify_emsa_pkcs1_signature(this, NID_sha384, data, signature);
+ case SIGN_RSA_EMSA_PKCS1_SHA2_512:
+ return verify_emsa_pkcs1_signature(this, NID_sha512, data, signature);
+-#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3)
++#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_SHA3) && !defined(LIBRESSL_VERSION_NUMBER)
+ case SIGN_RSA_EMSA_PKCS1_SHA3_224:
+ return verify_emsa_pkcs1_signature(this, NID_sha3_224, data, signature);
+ case SIGN_RSA_EMSA_PKCS1_SHA3_256:
diff --git a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_x_diffie_hellman_c b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_x_diffie_hellman_c
index f4738c4ca..d5dc7efa0 100644
--- a/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_x_diffie_hellman_c
+++ b/package/strongswan/patches/patch-src_libstrongswan_plugins_openssl_openssl_x_diffie_hellman_c
@@ -1,5 +1,5 @@
---- strongswan-5.8.1.orig/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c 2018-12-14 16:48:24.000000000 +0100
-+++ strongswan-5.8.1/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c 2019-10-08 02:05:54.116867134 +0200
+--- strongswan-5.9.5.orig/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c 2022-01-08 12:54:02.000000000 +0100
++++ strongswan-5.9.5/src/libstrongswan/plugins/openssl/openssl_x_diffie_hellman.c 2022-03-21 16:41:08.744944336 +0100
@@ -17,7 +17,7 @@
/* basic support for X25519 was added with 1.1.0a, but we require features (e.g.
@@ -8,4 +8,4 @@
+#if OPENSSL_VERSION_NUMBER >= 0x1010100fL && !defined(OPENSSL_NO_ECDH) && !defined(LIBRESSL_VERSION_NUMBER)
#include "openssl_x_diffie_hellman.h"
-
+ #include "openssl_util.h"
diff --git a/package/strongswan/patches/patch-src_starter_netkey_c b/package/strongswan/patches/patch-src_starter_netkey_c
deleted file mode 100644
index adb7e09eb..000000000
--- a/package/strongswan/patches/patch-src_starter_netkey_c
+++ /dev/null
@@ -1,18 +0,0 @@
---- strongswan-5.5.0.orig/src/starter/netkey.c 2016-04-22 22:01:35.000000000 +0200
-+++ strongswan-5.5.0/src/starter/netkey.c 2016-09-30 05:30:43.681874545 +0200
-@@ -42,6 +42,7 @@ bool starter_netkey_init(void)
- }
-
- /* make sure that all required IPsec modules are loaded */
-+ /*
- if (stat(PROC_MODULES, &stb) == 0)
- {
- ignore_result(system("modprobe -qv ah4"));
-@@ -50,6 +51,7 @@ bool starter_netkey_init(void)
- ignore_result(system("modprobe -qv xfrm4_tunnel"));
- ignore_result(system("modprobe -qv xfrm_user"));
- }
-+ */
-
- DBG2(DBG_APP, "found netkey IPsec stack");
- return TRUE;
diff --git a/package/subversion/Makefile b/package/subversion/Makefile
index 6dee93e16..0c42d76a1 100644
--- a/package/subversion/Makefile
+++ b/package/subversion/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= subversion
-PKG_VERSION:= 1.9.5
+PKG_VERSION:= 1.14.1
PKG_RELEASE:= 1
-PKG_HASH:= 280ba586c5d51d7b976b65d22d5e8e42f3908ed1c968d71120dcf534ce857a83
+PKG_HASH:= dee2796abaa1f5351e6cc2a60b1917beb8238af548b20d3e1ec22760ab2f0cad
PKG_DESCR:= revision control program
PKG_SECTION:= dev/scm
-PKG_DEPENDS:= zlib apr apr-util libexpat libsqlite neon
-PKG_BUILDDEP:= apr-util expat apr zlib sqlite neon
+PKG_DEPENDS:= zlib apr apr-util libexpat libsqlite neon liblz4
+PKG_BUILDDEP:= apr-util expat apr zlib sqlite neon lz4
PKG_URL:= http://subversion.apache.org/
PKG_SITES:= http://artfiles.org/apache.org/subversion/
@@ -23,6 +23,7 @@ $(eval $(call PKG_template,SUBVERSION,subversion,${PKG_VERSION}-${PKG_RELEASE},$
TARGET_LDFLAGS+= -ltinfo
CONFIGURE_ARGS+= --with-apr=${STAGING_TARGET_DIR}/usr/bin/apr-1-config \
--with-apr-util=${STAGING_TARGET_DIR}/usr/bin/apr-1-config \
+ --with-utf8proc=internal \
--disable-mod-activation \
--disable-keychain \
--without-apxs \
diff --git a/package/sudo/Makefile b/package/sudo/Makefile
index 5650afe6d..a4c5624dc 100644
--- a/package/sudo/Makefile
+++ b/package/sudo/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= sudo
-PKG_VERSION:= 1.9.8p2
+PKG_VERSION:= 1.9.15p5
PKG_RELEASE:= 1
-PKG_HASH:= 9e3b8b8da7def43b6e60c257abe80467205670fd0f7c081de1423c414b680f2d
+PKG_HASH:= 558d10b9a1991fb3b9fa7fa7b07ec4405b7aefb5b3cb0b0871dbc81e3a88e558
PKG_DESCR:= su do
PKG_SECTION:= sys/misc
PKG_NEEDS:= mmu
diff --git a/package/supl/Makefile b/package/supl/Makefile
deleted file mode 100644
index 9d5dc4ad9..000000000
--- a/package/supl/Makefile
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= supl
-PKG_VERSION:= 1.0.6
-PKG_RELEASE:= 1
-PKG_HASH:= 068dc47ce818ce5634f09a88159df85a6ce3456e2467b11b8c5f8543a99bb347
-PKG_DESCR:= tools for accessing sup/rrlp server
-PKG_SECTION:= net/misc
-PKG_DEPENDS:= libressl
-PKG_BUILDDEP:= libressl
-PKG_URL:= http://www.tajuma.com/supl/
-PKG_SITES:= $(MASTER_SITE_SOURCEFORGE:=supl/)
-
-DISTFILES:= $(PKG_NAME)_$(PKG_VERSION).tar.gz
-WRKDIST= $(WRKDIR)/trunk
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,SUPL,supl,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-CONFIG_STYLE:= minimal
-CONFIGURE_ARGS+= --prefix="$(WRKINST)/usr" \
- --precompiled-asn1=yes
-
-supl-install:
- $(INSTALL_DIR) $(IDIR_SUPL)/usr/{bin,lib}
- $(INSTALL_BIN) $(WRKINST)/usr/bin/supl-{cert,client,proxy} \
- $(IDIR_SUPL)/usr/bin
- $(CP) $(WRKINST)/usr/lib/lib{asnrrlp,asnsupl,supl}.so* \
- $(IDIR_SUPL)/usr/lib
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/supl/patches/patch-configure b/package/supl/patches/patch-configure
deleted file mode 100644
index 1c8f24d49..000000000
--- a/package/supl/patches/patch-configure
+++ /dev/null
@@ -1,11 +0,0 @@
---- trunk.orig/configure 2011-10-25 21:41:03.000000000 +0200
-+++ trunk/configure 2015-02-27 19:33:11.000000000 +0100
-@@ -91,7 +91,7 @@ cat <<EOF > config.mk
- # Modifications to this file are lost if ./configure is ran again.
-
- CONF_VERSION = 1.0.5
--CONF_CFLAGS = -Wall -O2 $var_debug
-+CONF_CFLAGS = -Wall $var_debug
- CONF_ASN_CFLAGS = $var_asn1_debug
- CONF_PREFIX = $var_prefix
- CONF_PRECOMPILED_ASN = $var_precompiled_asn
diff --git a/package/supl/patches/patch-src_Makefile b/package/supl/patches/patch-src_Makefile
deleted file mode 100644
index cec5a4771..000000000
--- a/package/supl/patches/patch-src_Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
- - use pkg-config everywhere, otherwise libs are not found
---- trunk.orig/src/Makefile 2011-10-17 20:09:22.000000000 +0200
-+++ trunk/src/Makefile 2015-02-09 16:48:37.244935714 +0100
-@@ -21,10 +21,10 @@ DIST = Makefile $(PROGRAM_SOURCE) $(SUPL
- all: supl-client supl-proxy supl-cert
-
- supl-client: libsupl.so supl-client.o
-- $(CC) -o $@ supl-client.o -L. -lsupl -lssl -lm
-+ $(CC) -o $@ supl-client.o -L. -lsupl $(shell pkg-config --libs openssl) -lm
-
- supl-proxy: libsupl.so supl-proxy.o
-- $(CC) -o $@ supl-proxy.o -L. -lsupl -lssl -lm
-+ $(CC) -o $@ supl-proxy.o -L. -lsupl $(shell pkg-config --libs openssl) -lm
-
- supl-cert: supl-cert.o
- $(CC) -o $@ supl-cert.o $(shell pkg-config --libs openssl) -lm
diff --git a/package/supl/patches/patch-src_supl-client_c b/package/supl/patches/patch-src_supl-client_c
deleted file mode 100644
index 15e2fa727..000000000
--- a/package/supl/patches/patch-src_supl-client_c
+++ /dev/null
@@ -1,40 +0,0 @@
- - implement bind to device functionality
---- trunk.orig/src/supl-client.c 2011-10-21 20:51:38.000000000 +0200
-+++ trunk/src/supl-client.c 2013-04-24 18:55:01.937252375 +0200
-@@ -252,6 +252,7 @@ static char *usage_str =
- " --cell gsm:mcc,mns:lac,ci|wcdma:mcc,msn,uc set current gsm/wcdma cell id\n"
- " --cell gsm:mcc,mns:lac,ci:lat,lon,uncert set known gsm cell id with position\n"
- " --format|-f human machine parseable output\n"
-+" --interface|-i iface bind to this interface\n"
- " --debug|-d <n> 1 == RRLP, 2 == SUPL, 4 == DEBUG\n"
- " --debug-file file write debug to file\n"
- " --help|-h show this help\n"
-@@ -267,6 +268,7 @@ static struct option long_opts[] = {
- { "cell", 1, 0, 0 },
- { "debug", 1, 0, 'd' },
- { "format", 1, 0, 'f' },
-+ { "interface", 1, 0, 0},
- { "test", 1, 0, 't' },
- { "set-pos", 1, 0, 0 },
- { "pos-helper", 1, 0, 0 },
-@@ -310,7 +312,7 @@ int main(int argc, char *argv[]) {
- int opt_index;
- int c;
-
-- c = getopt_long(argc, argv, "ad:f:t:", long_opts, &opt_index);
-+ c = getopt_long(argc, argv, "ad:f:i:t:", long_opts, &opt_index);
- if (c == -1) break;
- switch (c) {
- case 0:
-@@ -374,6 +376,11 @@ int main(int argc, char *argv[]) {
- }
- break;
-
-+ case 'i':
-+ strncpy(ctx.iface, optarg, IFNAMSIZ);
-+ ctx.iface[IFNAMSIZ] = 0;
-+ break;
-+
- case 'd':
- {
- int debug = atoi(optarg);
diff --git a/package/supl/patches/patch-src_supl_c b/package/supl/patches/patch-src_supl_c
deleted file mode 100644
index 26ab45b18..000000000
--- a/package/supl/patches/patch-src_supl_c
+++ /dev/null
@@ -1,46 +0,0 @@
- - implement bind to device functionality
---- trunk.orig/src/supl.c 2011-10-27 20:41:19.000000000 +0200
-+++ trunk/src/supl.c 2013-04-24 18:56:17.742529773 +0200
-@@ -41,7 +41,7 @@ static struct supl_debug_s {
- } debug;
- #endif
-
--static int server_connect(char *server);
-+static int server_connect(char *server, char *iface);
- static int pdu_make_ulp_start(supl_ctx_t *ctx, supl_ulp_t *pdu);
- static int pdu_make_ulp_pos_init(supl_ctx_t *ctx, supl_ulp_t *pdu);
- static int pdu_make_ulp_rrlp_ack(supl_ctx_t *ctx, supl_ulp_t *pdu, PDU_t *rrlp);
-@@ -236,7 +236,7 @@ int EXPORT supl_server_connect(supl_ctx_
- if (!ctx->ssl) return E_SUPL_CONNECT;
-
- if (server) {
-- ctx->fd = server_connect(server);
-+ ctx->fd = server_connect(server, ctx->iface);
- if (ctx->fd == -1) return E_SUPL_CONNECT;
- }
-
-@@ -266,7 +266,7 @@ void EXPORT supl_close(supl_ctx_t *ctx)
- }
-
-
--static int server_connect(char *server) {
-+static int server_connect(char *server, char *iface) {
- int fd = -1;
- struct addrinfo *ailist, *aip;
- struct addrinfo hint;
-@@ -283,6 +283,15 @@ static int server_connect(char *server)
- if ((fd = socket(aip->ai_family, SOCK_STREAM, 0)) < 0) {
- err = errno;
- }
-+
-+ if (strlen(iface)) {
-+ struct ifreq ifr;
-+ strncpy(ifr.ifr_name, iface, IFNAMSIZ);
-+ ifr.ifr_name[IFNAMSIZ - 1] = 0;
-+ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)))
-+ fprintf(stderr, "Error: binding to device %s failed\n", iface);
-+ }
-+
- if (connect(fd, aip->ai_addr, aip->ai_addrlen) != 0) {
- return -1;
- }
diff --git a/package/supl/patches/patch-src_supl_h b/package/supl/patches/patch-src_supl_h
deleted file mode 100644
index c2e9e8da4..000000000
--- a/package/supl/patches/patch-src_supl_h
+++ /dev/null
@@ -1,19 +0,0 @@
- - implement bind to device functionality
---- trunk.orig/src/supl.h 2011-10-21 20:08:29.000000000 +0200
-+++ trunk/src/supl.h 2013-04-24 18:52:14.916232733 +0200
-@@ -19,6 +19,7 @@
- #include <openssl/ssl.h>
- #include <PDU.h>
- #include <ULP-PDU.h>
-+#include <net/if.h>
-
- #define SUPL_PORT "7275"
-
-@@ -204,6 +205,7 @@ typedef struct supl_ctx_s {
- size_t size;
- } slp_session_id;
-
-+ char iface[IFNAMSIZ + 1];
- } supl_ctx_t;
-
- int supl_ctx_new(supl_ctx_t *ctx);
diff --git a/package/sysdig/Makefile b/package/sysdig/Makefile
deleted file mode 100644
index ddc36cd53..000000000
--- a/package/sysdig/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= sysdig
-PKG_VERSION:= ce24a1dd0925c0ed5df9c3e3e290817f536715cf
-PKG_GIT:= hash
-PKG_RELEASE:= 1
-PKG_DESCR:= system troubleshooting tool
-PKG_SECTION:= app/debug
-PKG_DEPENDS:= zlib jsoncpp luajit jq libressl libcurl
-PKG_BUILDDEP:= cmake-host zlib jsoncpp luajit jq libressl
-PKG_BUILDDEP+= curl
-PKG_KDEPENDS:= ftrace generic-tracer function-tracer
-PKG_NEEDS:= c++
-PKG_URL:= http://www.sysdig.org/
-PKG_SITES:= https://github.com/draios/sysdig.git
-
-PKG_SYSTEM_DEPENDS:= !mikrotik-rb532
-
-include $(ADK_TOPDIR)/mk/package.mk
-include $(ADK_TOPDIR)/mk/$(ADK_TARGET_OS)-ver.mk
-
-$(eval $(call PKG_template,SYSDIG,sysdig,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
-CONFIG_STYLE:= cmake
-CMAKE_FLAGS:= -DUSE_BUNDLED_DEPS=OFF -DUSE_BUNDLED_B64=ON
-XAKE_FLAGS+= KERNELDIR="$(LINUX_DIR)" \
- ARCH=$(ADK_TARGET_ARCH)
-
-sysdig-install:
- $(INSTALL_DIR) $(IDIR_SYSDIG)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/sysdig \
- $(IDIR_SYSDIG)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/csysdig \
- $(IDIR_SYSDIG)/usr/bin
- $(INSTALL_DIR) $(IDIR_SYSDIG)/usr/share
- $(CP) $(WRKINST)/usr/share/* \
- $(IDIR_SYSDIG)/usr/share
- ${INSTALL_DIR} ${IDIR_SYSDIG}/etc/modules.d/
- echo "sysdig-probe" > ${IDIR_SYSDIG}/etc/modules.d/90-sysdig
- ${INSTALL_DIR} ${IDIR_SYSDIG}/lib/modules/${KERNEL_VERSION}/
- ${INSTALL_DATA} ${WRKBUILD}/driver/sysdig-probe.ko \
- ${IDIR_SYSDIG}/lib/modules/${KERNEL_VERSION}
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/syslog-ng/Makefile b/package/syslog-ng/Makefile
index 81ac044f3..b2ce09edf 100644
--- a/package/syslog-ng/Makefile
+++ b/package/syslog-ng/Makefile
@@ -4,12 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= syslog-ng
-PKG_VERSION:= 3.14.1
+PKG_VERSION:= 4.6.0
PKG_RELEASE:= 1
-PKG_HASH:= 235b1ac46fe4f3b06b3e945d000276f07deb8243be05d63c04aff06ab6123b64
+PKG_HASH:= a5f8b089887767b5e87f523562fc3c6d5ef4dd320fc9b1f44953cb2d6bd50026
PKG_DESCR:= powerful syslog daemon
PKG_SECTION:= sys/misc
-PKG_BUILDDEP:= cmake-host glib ivykis libressl json-c libnet flex
+PKG_BUILDDEP:= cmake-host glib ivykis libressl json-c libnet
+PKG_BUILDDEP+= pcre flex
PKG_DEPENDS:= glib ivykis libressl json-c libnet
PKG_URL:= http://www.balabit.com/
PKG_SITES:= https://github.com/balabit/syslog-ng/archive/
@@ -26,7 +27,11 @@ CMAKE_FLAGS+= -DSYSLOG_NG_ENABLE_SYSTEMD=OFF \
-DSYSLOG_NG_ENABLE_TCP_WRAPPER=OFF \
-DENABLE_CURL=OFF \
-DENABLE_JAVA=OFF \
- -DENABLE_JAVA_MODULES=OFF
+ -DENABLE_PYTHON=OFF \
+ -DENABLE_JAVA_MODULES=OFF \
+ -DBUILD_TESTING=OFF \
+ -DENABLE_AFSNMP=OFF \
+ -DENABLE_EXAMPLE_MODULES=OFF
syslog-ng-install:
${INSTALL_DIR} ${IDIR_SYSLOG_NG}/usr/sbin \
diff --git a/package/syslog-ng/patches/patch-CMakeLists_txt b/package/syslog-ng/patches/patch-CMakeLists_txt
new file mode 100644
index 000000000..a5cd89d57
--- /dev/null
+++ b/package/syslog-ng/patches/patch-CMakeLists_txt
@@ -0,0 +1,10 @@
+--- syslog-ng-syslog-ng-4.6.0.orig/CMakeLists.txt 2024-01-25 10:09:33.000000000 +0100
++++ syslog-ng-syslog-ng-4.6.0/CMakeLists.txt 2024-02-13 15:32:51.471547962 +0100
+@@ -474,7 +474,6 @@ add_subdirectory(syslog-ng)
+ add_subdirectory(syslog-ng-ctl)
+ add_subdirectory(persist-tool)
+ add_subdirectory(tests)
+-add_subdirectory(libtest)
+
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/syslog-ng-config.h.in ${CMAKE_CURRENT_BINARY_DIR}/syslog-ng-config.h)
+
diff --git a/package/sysstat/Makefile b/package/sysstat/Makefile
index bfba99de8..fb98f7d2b 100644
--- a/package/sysstat/Makefile
+++ b/package/sysstat/Makefile
@@ -4,17 +4,21 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= sysstat
-PKG_VERSION:= 11.4.4
+PKG_VERSION:= 12.7.5
PKG_RELEASE:= 1
-PKG_HASH:= 6585f08e24347d2d6462aee6ef97e80fe4cc869605193184500df0f80fa61cc8
+PKG_HASH:= a4d30e37c0c894214b941b51184723e19d492118c946cfdeac74b6d1f0068016
PKG_DESCR:= system monitoring and performance analysis
PKG_SECTION:= sys/utils
-PKG_SITES:= http://pagesperso-orange.fr/sebastien.godard/
+PKG_SITES:= https://github.com/sysstat/sysstat/archive/refs/tags/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,SYSSTAT,sysstat,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+CONFIGURE_ENV+= sa_lib_dir=/usr/lib/sa
+
sysstat-install:
${INSTALL_DIR} ${IDIR_SYSSTAT}/usr/lib/sa
${INSTALL_DIR} ${IDIR_SYSSTAT}/usr/bin
diff --git a/package/sysstat/patches/patch-Makefile b/package/sysstat/patches/patch-Makefile
deleted file mode 100644
index 21cc0e994..000000000
--- a/package/sysstat/patches/patch-Makefile
+++ /dev/null
@@ -1,79 +0,0 @@
-$Id$
-
- removes manpages, some chown-stuff and the cron-stuff (no need for it)
- fixes cross-compilation
-
---- sysstat-7.0.3.orig/Makefile Sun Oct 22 16:27:03 2006
-+++ sysstat-7.0.3/Makefile Fri May 18 18:31:06 2007
-@@ -7,7 +7,7 @@ VERSION = 7.0.3
- include build/CONFIG
-
- # Compiler to use
--CC = gcc
-+CC ?= gcc
- # Other commands
- SED = sed
- CHMOD = chmod
-@@ -37,8 +37,9 @@ NLS_DIR = $(PREFIX)/share/locale
- SYSCONFIG_DIR = /etc/sysconfig
-
- # Compiler flags
--CFLAGS = -Wall -Wstrict-prototypes -pipe -O2 -fno-strength-reduce
--LFLAGS = -s
-+CFLAGS ?= -O2 -pipe
-+CFLAGS += -Wall -Wstrict-prototypes -fno-strength-reduce
-+LFLAGS = -s ${LDFLAGS}
- # SAS_DFLAGS may also contain SMP_RACE definition
- SAS_DFLAGS += -DSA_DIR=\"$(SA_DIR)\" -DSADC_PATH=\"$(SADC_PATH)\"
-
-@@ -179,10 +180,8 @@ endif
- .PHONY: clean distclean config install install_base install_all uninstall \
- uninstall_base uninstall_all dist bdist
-
--install_base: all man/sadc.8 man/sar.1 man/sadf.1 man/sa1.8 man/sa2.8 man/iostat.1
-+install_base: all
- mkdir -p $(DESTDIR)$(SA_LIB_DIR)
-- mkdir -p $(DESTDIR)$(MAN1_DIR)
-- mkdir -p $(DESTDIR)$(MAN8_DIR)
- mkdir -p $(DESTDIR)$(SA_DIR)
- ifeq ($(CLEAN_SA_DIR),y)
- rm -f $(DESTDIR)$(SA_DIR)/sa??
-@@ -191,19 +190,12 @@ endif
- mkdir -p $(DESTDIR)$(DOC_DIR)
- mkdir -p $(DESTDIR)$(SYSCONFIG_DIR)
- install -m 755 sa1 $(DESTDIR)$(SA_LIB_DIR)
-- install -m 644 $(MANGRPARG) man/sa1.8 $(DESTDIR)$(MAN8_DIR)
- install -m 755 sa2 $(DESTDIR)$(SA_LIB_DIR)
-- install -m 644 $(MANGRPARG) man/sa2.8 $(DESTDIR)$(MAN8_DIR)
- install -m 755 sadc $(DESTDIR)$(SA_LIB_DIR)
-- install -m 644 $(MANGRPARG) man/sadc.8 $(DESTDIR)$(MAN8_DIR)
- install -m 755 sar $(DESTDIR)$(BIN_DIR)
-- install -m 644 $(MANGRPARG) man/sar.1 $(DESTDIR)$(MAN1_DIR)
- install -m 755 sadf $(DESTDIR)$(BIN_DIR)
-- install -m 644 $(MANGRPARG) man/sadf.1 $(DESTDIR)$(MAN1_DIR)
- install -m 755 iostat $(DESTDIR)$(BIN_DIR)
-- install -m 644 $(MANGRPARG) man/iostat.1 $(DESTDIR)$(MAN1_DIR)
- install -m 755 mpstat $(DESTDIR)$(BIN_DIR)
-- install -m 644 $(MANGRPARG) man/mpstat.1 $(DESTDIR)$(MAN1_DIR)
- install -m 644 sysstat.ioconf $(DESTDIR)$(SYSCONFIG_DIR);
- install -m 644 CHANGES $(DESTDIR)$(DOC_DIR)
- install -m 644 COPYING $(DESTDIR)$(DOC_DIR)
-@@ -243,18 +235,6 @@ ifdef REQUIRE_NLS
- endif
-
- install_all: install_base
-- $(CHOWN) $(CRON_OWNER) $(DESTDIR)$(SA_DIR)
-- if [ -d $(DESTDIR)/etc/cron.d ]; then \
-- install -m 644 sysstat.crond $(DESTDIR)/etc/cron.d/sysstat; \
-- elif [ -d $(DESTDIR)/etc/cron.hourly -a -d $(DESTDIR)/etc/cron.daily ]; then \
-- install -m 755 sysstat.cron.hourly $(DESTDIR)/etc/cron.hourly/sysstat; \
-- install -m 755 sysstat.cron.daily $(DESTDIR)/etc/cron.daily/sysstat; \
-- else \
-- su $(CRON_OWNER) -c "crontab -l > /tmp/crontab-$(CRON_OWNER).save"; \
-- $(CP) -a /tmp/crontab-$(CRON_OWNER).save ./crontab-$(CRON_OWNER).`date '+%Y%m%d.%H%M%S'`.save; \
-- echo "USER PREVIOUS CRONTAB SAVED IN CURRENT DIRECTORY (USING .save SUFFIX)."; \
-- su $(CRON_OWNER) -c "crontab crontab"; \
-- fi
- if [ -d $(DESTDIR)$(INIT_DIR) ]; then \
- install -m 755 sysstat $(DESTDIR)$(INIT_DIR)/sysstat; \
- if [ -x $(CHKCONFIG) ]; then \
diff --git a/package/systemd/Makefile b/package/systemd/Makefile
deleted file mode 100644
index 09834cdfa..000000000
--- a/package/systemd/Makefile
+++ /dev/null
@@ -1,155 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= systemd
-PKG_VERSION:= 249
-PKG_RELEASE:= 1
-PKG_HASH:= 174091ce5f2c02123f76d546622b14078097af105870086d18d55c1c2667d855
-PKG_DESCR:= system and service manager
-PKG_SECTION:= base/init
-PKG_DEPENDS:= libcap libmount libuuid libblkid libncurses libkmod
-PKG_BUILDDEP:= intltool-host gperf-host libcap util-linux
-PKG_BUILDDEP+= python3-host gettext-host kmod meson-host ninja-host
-PKG_BUILDDEP+= python3-jinja2-host
-PKG_KDEPENDS:= inotify-user cgroups namespaces fhandle tmpfs-posix-acl tmpfs-xattr
-PKG_KDEPENDS+= uts-ns autofs4-fs fanotify
-PKG_LIBC_DEPENDS:= glibc
-PKG_NEEDS:= locale intl
-PKG_URL:= https://wiki.freedesktop.org/www/Software/systemd/
-PKG_SITES:= https://github.com/systemd/systemd/archive/
-
-PKG_CFLINE_SYSTEMD:= select BUSYBOX_SULOGIN if ADK_RUNTIME_BASE_BUSYBOX
-
-PKG_FLAVOURS_SYSTEMD:= WITH_PAM WITH_XZ WITH_ZLIB
-PKGFD_WITH_PAM:= enable pam support
-PKGFS_WITH_PAM:= pam
-PKGFB_WITH_PAM:= pam
-PKGFD_WITH_XZ:= enable xz support
-PKGFS_WITH_XZ:= xz
-PKGFB_WITH_XZ:= xz
-PKGFD_WITH_ZLIB:= enable zlib support
-PKGFS_WITH_ZLIB:= zlib
-PKGFB_WITH_ZLIB:= zlib
-
-DISTFILES:= v$(PKG_VERSION).tar.gz
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,SYSTEMD,systemd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
-
-CONFIG_STYLE:= meson
-BUILD_STYLE:= meson
-INSTALL_STYLE:= meson
-
-MESON_FLAGS+= -Drootlibdir='/usr/lib' \
- -Dsysvinit-path='' \
- -Dsplit-bin=true \
- -Dsplit-usr=true \
- -Dman=false \
- -Dima=false \
- -Dlibcryptsetup=false \
- -Defi=false \
- -Dgnu-efi=false \
- -Dldconfig=false \
- -Ddefault-dnssec=no \
- -Dtests=false \
- -Dkmod-path=/usr/bin/kmod \
- -Dkexec-path=/usr/sbin/kexec \
- -Dsulogin-path=/sbin/sulogin \
- -Dmount-path=/bin/mount \
- -Dumount-path=/bin/umount \
- -Dacl=false \
- -Daudit=false \
- -Didn=false \
- -Dmode=release \
- -Dnss-systemd=true \
- -Dresolve=false \
- -Dseccomp=false \
- -Dxkbcommon=false \
- -Dbzip2=false \
- -Dlz4=false \
- -Dlibcurl=false \
- -Dgcrypt=false \
- -Dqrencode=false \
- -Dmicrohttpd=false \
- -Dselinux=false \
- -Dhwdb=false \
- -Dportabled=false \
- -Dbinfmt=false \
- -Dvconsole=false \
- -Dquotacheck=false \
- -Dbacklight=false \
- -Drfkill=false \
- -Dmachined=false \
- -Dimportd=false \
- -Dhostnamed=false \
- -Dlocaled=false \
- -Dcoredump=false \
- -Dsmack=false \
- -Dsysusers=false \
- -Dhibernate=false \
- -Dpolkit=true \
- -Dnetworkd=true \
- -Dtimesyncd=true \
- -Dtmpfiles=true \
- -Dnss-systemd=true \
- -Dfirstboot=true \
- -Drandomseed=true \
- -Dlogind=true \
- -Dtimedated=true
-
-
-ifeq ($(ADK_PACKAGE_SYSTEMD_WITH_PAM),y)
-MESON_FLAGS+= -Dpam=true
-else
-MESON_FLAGS+= -Dpam=false
-endif
-
-ifeq ($(ADK_PACKAGE_SYSTEMD_WITH_XZ),y)
-MESON_FLAGS+= -Dxz=true
-else
-MESON_FLAGS+= -Dxz=false
-endif
-
-ifeq ($(ADK_PACKAGE_SYSTEMD_WITH_ZLIB),y)
-MESON_FLAGS+= -Dzlib=true
-else
-MESON_FLAGS+= -Dzlib=false
-endif
-
-systemd-install:
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/etc
- touch $(IDIR_SYSTEMD)/etc/machine-id
- $(CP) $(WRKINST)/etc/* \
- $(IDIR_SYSTEMD)/etc
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/lib/systemd
- $(CP) $(WRKINST)/lib/systemd/* \
- $(IDIR_SYSTEMD)/lib/systemd
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/usr/lib
- $(CP) $(WRKINST)/usr/lib/*.so* \
- $(IDIR_SYSTEMD)/usr/lib
- $(CP) $(WRKINST)/usr/lib/{systemd,kernel,sysctl.d,tmpfiles.d} \
- $(IDIR_SYSTEMD)/usr/lib
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/sbin
- $(CP) $(WRKINST)/sbin/* \
- $(IDIR_SYSTEMD)/sbin
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/bin
- $(CP) $(WRKINST)/bin/* \
- $(IDIR_SYSTEMD)/bin
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/usr/bin
- $(CP) $(WRKINST)/usr/bin/* \
- $(IDIR_SYSTEMD)/usr/bin
- $(INSTALL_DIR) $(IDIR_SYSTEMD)/usr/share
- $(CP) $(WRKINST)/usr/share/* \
- $(IDIR_SYSTEMD)/usr/share
- $(CP) ./files/*.network \
- $(IDIR_SYSTEMD)/etc/systemd/network
- (cd $(IDIR_SYSTEMD)/lib/systemd/system && ln -sf multi-user.target default.target)
- $(CP) $(WRKBUILD)/systemd $(IDIR_SYSTEMD)/usr/lib/systemd/
- mv $(IDIR_SYSTEMD)/lib/systemd/libsystemd-shared-249.so $(IDIR_SYSTEMD)/lib
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/systemd/files/systemd.postinst b/package/systemd/files/systemd.postinst
deleted file mode 100644
index 76e213117..000000000
--- a/package/systemd/files/systemd.postinst
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-. $IPKG_INSTROOT/etc/functions.sh
-gid=$(get_next_gid)
-add_group utmp $gid
-gid=$(get_next_gid)
-add_group systemd-journal $gid
-gid=$(get_next_gid)
-add_group systemd-bus-proxy $gid
-add_user systemd-bus-proxy $(get_next_uid) $gid /
-gid=$(get_next_gid)
-add_group systemd-journal-gateway $gid
-add_user systemd-journal-gateway $(get_next_uid) $gid /
-gid=$(get_next_gid)
-add_group systemd-journal-remote $gid
-add_user systemd-journal-remote $(get_next_uid) $gid /
-gid=$(get_next_gid)
-add_group systemd-journal-upload $gid
-add_user systemd-journal-upload $(get_next_uid) $gid /
-gid=$(get_next_gid)
-add_group systemd-network $gid
-add_user systemd-network $(get_next_uid) $gid /
-gid=$(get_next_gid)
-add_group systemd-resolve $gid
-add_user systemd-resolve $(get_next_uid) $gid /
-gid=$(get_next_gid)
-add_group systemd-timesync $gid
-add_user systemd-timesync $(get_next_uid) $gid /
diff --git a/package/systemd/files/wired.network b/package/systemd/files/wired.network
deleted file mode 100644
index 9613cc040..000000000
--- a/package/systemd/files/wired.network
+++ /dev/null
@@ -1,5 +0,0 @@
-[Match]
-Name=en*
-
-[Network]
-DHCP=ipv4
diff --git a/package/taglib/Makefile b/package/taglib/Makefile
index b79595790..9297caf75 100644
--- a/package/taglib/Makefile
+++ b/package/taglib/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= taglib
-PKG_VERSION:= 1.9.1
+PKG_VERSION:= 1.13.1
PKG_RELEASE:= 1
-PKG_HASH:= 72d371cd1419a87ae200447a53bff2be219283071e80fd12337928cc967dc71a
+PKG_HASH:= c8da2b10f1bfec2cd7dbfcd33f4a2338db0765d851a50583d410bacf055cfd0b
PKG_DESCR:= audio meta-data library
PKG_SECTION:= libs/audio
PKG_DEPENDS:= zlib
@@ -31,7 +31,7 @@ do-configure:
taglib-install:
$(INSTALL_DIR) $(IDIR_TAGLIB)/usr/lib
- $(CP) $(WRKINST)/usr/lib/libtag*.so* \
+ -$(CP) $(WRKINST)/usr/lib/libtag*.so* \
$(IDIR_TAGLIB)/usr/lib
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/taglib/patches/patch-taglib_pc_cmake b/package/taglib/patches/patch-taglib_pc_cmake
deleted file mode 100644
index 2a468ba8c..000000000
--- a/package/taglib/patches/patch-taglib_pc_cmake
+++ /dev/null
@@ -1,19 +0,0 @@
---- taglib-1.8.orig/taglib.pc.cmake 2012-09-06 20:03:15.000000000 +0200
-+++ taglib-1.8/taglib.pc.cmake 2013-07-31 11:57:48.000000000 +0200
-@@ -1,11 +1,11 @@
- prefix=${CMAKE_INSTALL_PREFIX}
--exec_prefix=${CMAKE_INSTALL_PREFIX}
--libdir=${LIB_INSTALL_DIR}
--includedir=${INCLUDE_INSTALL_DIR}
-+exec_prefix=$prefix
-+libdir=$prefix/lib
-+includedir=$prefix/include
-
- Name: TagLib
- Description: Audio meta-data library
- Requires:
- Version: ${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION}
--Libs: -L${LIB_INSTALL_DIR} -ltag
--Cflags: -I${INCLUDE_INSTALL_DIR}/taglib
-+Libs: -ltag
-+Cflags:
diff --git a/package/talloc/Makefile b/package/talloc/Makefile
index 865a95b47..a296a7306 100644
--- a/package/talloc/Makefile
+++ b/package/talloc/Makefile
@@ -4,12 +4,12 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= talloc
-PKG_VERSION:= 2.1.9
+PKG_VERSION:= 2.4.2
PKG_RELEASE:= 1
-PKG_HASH:= f0aad4cb88a3322207c82136ddc07bed48a37c2c21f82962d6c5ccb422711062
+PKG_HASH:= 85ecf9e465e20f98f9950a52e9a411e14320bc555fa257d87697b7e7a9b1d8a6
PKG_DESCR:= memory allocation library
PKG_SECTION:= libs/misc
-PKG_BUILDDEP:= python2-host python2
+PKG_BUILDDEP:= python3-host python3
PKG_URL:= https://talloc.samba.org/talloc/doc/html/index.html
PKG_SITES:= https://www.samba.org/ftp/talloc/
PKG_LIBNAME:= libtalloc
@@ -23,6 +23,7 @@ $(eval $(call PKG_template,LIBTALLOC,libtalloc,$(PKG_VERSION)-$(PKG_RELEASE),$(P
CONFIG_STYLE:= minimal
CONFIGURE_ARGS+= --prefix=/usr \
+ --disable-python \
--cross-compile \
--cross-answers=$(WRKSRC)/cache.txt \
--hostcc=gcc
diff --git a/package/tar/Makefile b/package/tar/Makefile
index 57b9d3ad3..7d1bb84c4 100644
--- a/package/tar/Makefile
+++ b/package/tar/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= tar
-PKG_VERSION:= 1.29
+PKG_VERSION:= 1.35
PKG_RELEASE:= 1
-PKG_HASH:= 402dcfd0022fd7a1f2c5611f5c61af1cd84910a760a44a688e18ddbff4e9f024
+PKG_HASH:= 4d62ff37342ec7aed748535323930c7cf94acf71c3591882b26a7ea50f3edc16
PKG_DESCR:= archiving application
PKG_SECTION:= app/archive
PKG_URL:= http://mirrors.kernel.org/gnu/tar/
diff --git a/package/tcpdump/Makefile b/package/tcpdump/Makefile
index 47cc97584..1bfaaa7b7 100644
--- a/package/tcpdump/Makefile
+++ b/package/tcpdump/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= tcpdump
-PKG_VERSION:= 4.9.3
+PKG_VERSION:= 4.99.4
PKG_RELEASE:= 1
-PKG_HASH:= 2cd47cb3d460b6ff75f4a9940f594317ad456cfbf2bd2c8e5151e16559db6410
+PKG_HASH:= 0232231bb2f29d6bf2426e70a08a7e0c63a0d59a9b44863b7f5e2357a6e49fea
PKG_DESCR:= tool for network monitoring and data acquisition
PKG_SECTION:= net/debug
PKG_DEPENDS:= libpcap
@@ -39,7 +39,7 @@ XAKE_FLAGS+= CCOPT="${TARGET_CFLAGS}" \
INCLS="-I. -I${STAGING_TARGET_DIR}/usr/include"
tcpdump-install:
- ${INSTALL_DIR} ${IDIR_TCPDUMP}/usr/sbin
- ${INSTALL_BIN} ${WRKINST}/usr/sbin/tcpdump ${IDIR_TCPDUMP}/usr/sbin
+ ${INSTALL_DIR} ${IDIR_TCPDUMP}/usr/bin
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/tcpdump ${IDIR_TCPDUMP}/usr/bin
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/tcsh/Makefile b/package/tcsh/Makefile
index 74e319ffd..b98f6136b 100644
--- a/package/tcsh/Makefile
+++ b/package/tcsh/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= tcsh
-PKG_VERSION:= 6.19.00
+PKG_VERSION:= 6.24.10
PKG_RELEASE:= 1
-PKG_HASH:= 12e271e0b89e4259d9d6e8d525322e77340e7244cfbd199a591e5f8146285c49
+PKG_HASH:= 13475c0fbeb74139d33ed793bf00ffbbb2ac2dc9fb1d44467a410760aba36664
PKG_DESCR:= alternative csh
PKG_SECTION:= base/shells
PKG_DEPENDS:= libncurses
diff --git a/package/tcsh/patches/patch-Makefile_in b/package/tcsh/patches/patch-Makefile_in
index d573b8df2..300c1632b 100644
--- a/package/tcsh/patches/patch-Makefile_in
+++ b/package/tcsh/patches/patch-Makefile_in
@@ -1,11 +1,11 @@
---- tcsh-6.19.00.orig/Makefile.in 2014-07-25 00:52:13.000000000 +0200
-+++ tcsh-6.19.00/Makefile.in 2015-11-07 23:08:07.000000000 +0100
-@@ -449,7 +449,7 @@ pure:$(P) ${OBJS}
+--- tcsh-6.24.10.orig/Makefile.in 2023-04-14 13:52:38.000000000 +0200
++++ tcsh-6.24.10/Makefile.in 2024-02-11 09:31:36.700281877 +0100
+@@ -506,7 +506,7 @@ pure:$(P) ${OBJS}
+ # emxbind tcsh
- gethost: gethost.c sh.err.h tc.const.h sh.h
- rm -f gethost
-- ${CC_FOR_GETHOST} -o gethost ${CPPFLAGS} ${CFLAGS} $(srcdir)/gethost.c
-+ ${CC_FOR_GETHOST} -o gethost $(srcdir)/gethost.c
+ gethost.${SUF}: gethost.c sh.err.h tc.const.h sh.h
+- ${CC_FOR_GETHOST} ${CF} ${CPPFLAGS} ${CFLAGS} $(srcdir)/gethost.c
++ ${CC_FOR_GETHOST} ${CF} $(srcdir)/gethost.c
- tc.defs.c: gethost host.defs
- @rm -f $@.tmp
+ gethost: gethost.${SUF}
+ rm -f gethost
diff --git a/package/tcsh/patches/patch-sh_h b/package/tcsh/patches/patch-sh_h
deleted file mode 100644
index 2882aefe9..000000000
--- a/package/tcsh/patches/patch-sh_h
+++ /dev/null
@@ -1,23 +0,0 @@
---- tcsh-6.19.00.orig/sh.h 2015-05-10 15:29:28.000000000 +0200
-+++ tcsh-6.19.00/sh.h 2015-11-07 23:06:35.000000000 +0100
-@@ -366,7 +366,7 @@ typedef long tcsh_number_t;
- # include <sys/filio.h>
- #endif /* (!FIOCLEX && SUNOS4) || (SYSVREL == 4 && !_SEQUENT_ && !SCO && !_SX ) */
-
--#if !defined(_MINIX) && !defined(supermax) && !defined(WINNT_NATIVE) && !defined(IRIS4D)
-+#if !defined(_MINIX) && !defined(supermax) && !defined(WINNT_NATIVE) && !defined(IRIS4D) && !defined(__FreeBSD__)
- # include <sys/file.h>
- #endif /* !_MINIX && !supermax && !WINNT_NATIVE && !defined(IRIS4D) */
-
-@@ -400,9 +400,11 @@ typedef long tcsh_number_t;
- #include <pwd.h>
- #include <grp.h>
- #endif /* WINNT_NATIVE */
-+#if !defined(BSD)
- #ifdef HAVE_SHADOW_H
- # include <shadow.h>
- #endif /* HAVE_SHADOW_H */
-+#endif
- #ifdef HAVE_AUTH_H
- # include <auth.h>
- #endif /* HAVE_AUTH_H */
diff --git a/package/tcsh/patches/patch-sh_proc_c b/package/tcsh/patches/patch-sh_proc_c
deleted file mode 100644
index 9b5e277ba..000000000
--- a/package/tcsh/patches/patch-sh_proc_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- tcsh-6.19.00.orig/sh.proc.c 2015-02-22 22:40:14.000000000 +0100
-+++ tcsh-6.19.00/sh.proc.c 2015-11-07 23:06:36.000000000 +0100
-@@ -47,7 +47,7 @@ RCSID("$tcsh: sh.proc.c,v 3.127 2015/02/
- # define HZ 16
- #endif /* aiws */
-
--#if defined(_BSD) || (defined(IRIS4D) && __STDC__) || defined(__lucid) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
-+#if defined(_BSD) || (defined(IRIS4D) && __STDC__) || defined(__lucid) || defined(__GNU__) || defined(__GLIBC__)
- # if !defined(__ANDROID__)
- # define BSDWAIT
- # endif
diff --git a/package/tinyproxy/Makefile b/package/tinyproxy/Makefile
index 933fb95e4..47894b558 100644
--- a/package/tinyproxy/Makefile
+++ b/package/tinyproxy/Makefile
@@ -4,33 +4,30 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= tinyproxy
-PKG_VERSION:= 1.8.4
+PKG_VERSION:= 1.11.0
PKG_RELEASE:= 1
-PKG_HASH:= 1999c88c43e31ff4cb5e8379b76776a65fa3d326eea868cb5f88ef58a8f631de
+PKG_HASH:= c1ec81cfc4c551d2c24e0227a5aeeaad8723bd9a39b61cd729e516b82eaa3f32
PKG_DESCR:= lightweight http and https proxy
PKG_SECTION:= net/proxy
PKG_URL:= https://tinyproxy.github.io
-PKG_SITES:= https://github.com/tinyproxy/tinyproxy/archive/
-
-DISTFILES:= $(PKG_VERSION).tar.gz
+PKG_SITES:= https://github.com/tinyproxy/tinyproxy/releases/download/$(PKG_VERSION)/
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,TINYPROXY,tinyproxy,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-AUTOTOOL_STYLE:= autoreconf
-CONFIGURE_ARGS+= --disable-regexcheck
+CONFIGURE_ARGS+= --disable-manpage_support
CONFIGURE_ENV+= ac_cv_func_malloc_0_nonnull=yes \
ac_cv_func_realloc_0_nonnull=yes
tinyproxy-install:
- $(INSTALL_DIR) $(IDIR_TINYPROXY)/usr/sbin
- $(INSTALL_DIR) $(IDIR_TINYPROXY)/etc
+ $(INSTALL_DIR) $(IDIR_TINYPROXY)/usr/bin
+ $(INSTALL_DIR) $(IDIR_TINYPROXY)/etc/tinyproxy
$(INSTALL_DIR) $(IDIR_TINYPROXY)/usr/share/tinyproxy
$(INSTALL_DATA) ./files/tinyproxy.conf \
- $(IDIR_TINYPROXY)/etc
- $(INSTALL_BIN) $(WRKINST)/usr/sbin/tinyproxy \
- $(IDIR_TINYPROXY)/usr/sbin/
+ $(IDIR_TINYPROXY)/etc/tinyproxy/
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/tinyproxy \
+ $(IDIR_TINYPROXY)/usr/bin/
$(INSTALL_DATA) $(WRKINST)/usr/share/tinyproxy/{default,stats,debug}.html \
$(IDIR_TINYPROXY)/usr/share/tinyproxy/
diff --git a/package/tinyproxy/files/tinyproxy.conf b/package/tinyproxy/files/tinyproxy.conf
index 798231b12..c9ee8d178 100644
--- a/package/tinyproxy/files/tinyproxy.conf
+++ b/package/tinyproxy/files/tinyproxy.conf
@@ -137,28 +137,6 @@ PidFile "/var/run/tinyproxy/tinyproxy.pid"
MaxClients 100
#
-# These settings set the upper and lower limit for the number of
-# spare servers which should be available. If the number of spare servers
-# falls below MinSpareServers then new ones will be created. If the number
-# of servers exceeds MaxSpareServers then the extras will be killed off.
-#
-MinSpareServers 5
-MaxSpareServers 20
-
-#
-# Number of servers to start initially.
-#
-StartServers 10
-
-#
-# MaxRequestsPerChild is the number of connections a thread will handle
-# before it is killed. In practise this should be set to 0, which disables
-# thread reaping. If you do notice problems with memory leakage, then set
-# this to something like 10000
-#
-MaxRequestsPerChild 0
-
-#
# The following is the authorization controls. If there are any access
# control keywords then the default action is to DENY. Otherwise, the
# default action is ALLOW.
diff --git a/package/tinyproxy/files/tinyproxy.init b/package/tinyproxy/files/tinyproxy.init
index e0a8b9a81..9a140db56 100644
--- a/package/tinyproxy/files/tinyproxy.init
+++ b/package/tinyproxy/files/tinyproxy.init
@@ -13,10 +13,10 @@ autostart)
start)
mkdir -p /var/run/tinyproxy
chown tinyproxy.tinyproxy /var/run/tinyproxy
- /usr/sbin/tinyproxy
+ /usr/bin/tinyproxy
;;
stop)
- kill $(pgrep -f /usr/sbin/tinyproxy)
+ kill $(pgrep -f /usr/bin/tinyproxy)
;;
restart)
sh $0 stop
diff --git a/package/tinyproxy/patches/patch-Makefile_am b/package/tinyproxy/patches/patch-Makefile_am
deleted file mode 100644
index 443ae2e78..000000000
--- a/package/tinyproxy/patches/patch-Makefile_am
+++ /dev/null
@@ -1,10 +0,0 @@
---- tinyproxy-1.8.3.orig/Makefile.am 2011-08-16 14:14:34.000000000 +0200
-+++ tinyproxy-1.8.3/Makefile.am 2014-04-07 08:43:20.000000000 +0200
-@@ -2,7 +2,6 @@ SUBDIRS = \
- src \
- data \
- etc \
-- docs \
- m4macros \
- tests
-
diff --git a/package/tinyproxy/patches/patch-configure_ac b/package/tinyproxy/patches/patch-configure_ac
deleted file mode 100644
index b3fd83dc9..000000000
--- a/package/tinyproxy/patches/patch-configure_ac
+++ /dev/null
@@ -1,27 +0,0 @@
---- tinyproxy-1.8.3.orig/configure.ac 2011-08-16 14:14:58.000000000 +0200
-+++ tinyproxy-1.8.3/configure.ac 2014-04-07 08:43:06.000000000 +0200
-@@ -282,24 +282,12 @@ AC_SUBST(CPPFLAGS)
- AC_SUBST(LIBS)
- AC_SUBST(ADDITIONAL_OBJECTS)
-
--# Check for asciidoc
--AC_PATH_PROG(A2X, a2x, no)
--AM_CONDITIONAL(HAVE_A2X, test "x$A2X" != "xno")
--if test x"$A2X" = x"no"; then
-- AC_MSG_ERROR([Test for asciidoc failed. See the file 'INSTALL' for help.])
--fi
--
- AC_CONFIG_FILES([
- Makefile
- src/Makefile
- data/Makefile
- data/templates/Makefile
- etc/Makefile
--docs/Makefile
--docs/man5/Makefile
--docs/man5/tinyproxy.conf.txt
--docs/man8/Makefile
--docs/man8/tinyproxy.txt
- m4macros/Makefile
- tests/Makefile
- tests/scripts/Makefile
diff --git a/package/tinyxml2/Makefile b/package/tinyxml2/Makefile
new file mode 100644
index 000000000..e1555bcec
--- /dev/null
+++ b/package/tinyxml2/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= tinyxml2
+PKG_VERSION:= 10.0.0
+PKG_RELEASE:= 1
+PKG_HASH:= 3bdf15128ba16686e69bce256cc468e76c7b94ff2c7f391cc5ec09e40bff3839
+PKG_DESCR:= small xml library
+PKG_SECTION:= libs/misc
+PKG_BUILDDEP+= meson-host
+PKG_SITES:= https://github.com/leethomason/tinyxml2/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,TINYXML2,tinyxml2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+tinyxml2-install:
+ $(INSTALL_DIR) $(IDIR_TINYXML2)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libtinyxml2*.so* \
+ $(IDIR_TINYXML2)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/tmux/Makefile b/package/tmux/Makefile
index e208b566f..bd8d418f4 100644
--- a/package/tmux/Makefile
+++ b/package/tmux/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= tmux
-PKG_VERSION:= 2.9
+PKG_VERSION:= 3.2a
PKG_RELEASE:= 1
-PKG_HASH:= 34901232f486fd99f3a39e864575e658b5d49f43289ccc6ee57c365f2e2c2980
+PKG_HASH:= 551553a4f82beaa8dadc9256800bcc284d7c000081e47aa6ecbb6ff36eacd05f
PKG_DESCR:= terminal multiplexer
PKG_SECTION:= sys/utils
PKG_BUILDDEP:= libevent ncurses
PKG_DEPENDS:= libevent libncurses
-PKG_NEEDS:= threads
+PKG_NEEDS:= threads locale
PKG_URL:= http://tmux.github.io
PKG_SITES:= https://github.com/tmux/tmux/releases/download/$(PKG_VERSION)/
@@ -21,6 +21,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,TMUX,tmux,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+AUTOTOOL_STYLE:= autoreconf
TARGET_LDFLAGS+= -ltinfo
CONFIGURE_ARGS+= --disable-static
diff --git a/package/tmux/patches/patch-configure_ac b/package/tmux/patches/patch-configure_ac
new file mode 100644
index 000000000..1d70b17ca
--- /dev/null
+++ b/package/tmux/patches/patch-configure_ac
@@ -0,0 +1,22 @@
+--- tmux-3.2a.orig/configure.ac 2021-06-10 10:20:51.000000000 +0200
++++ tmux-3.2a/configure.ac 2022-03-16 12:00:53.916934376 +0100
+@@ -150,18 +150,10 @@ AC_REPLACE_FUNCS([ \
+ strlcpy \
+ strndup \
+ strsep \
++ strtonum \
+ ])
+ AC_FUNC_STRNLEN
+
+-# Check if strtonum works.
+-AC_MSG_CHECKING([for working strtonum])
+-AC_RUN_IFELSE([AC_LANG_PROGRAM(
+- [#include <stdlib.h>],
+- [return (strtonum("0", 0, 1, NULL) == 0 ? 0 : 1);]
+- )],
+- [AC_DEFINE(HAVE_STRTONUM) AC_MSG_RESULT(yes)],
+- [AC_LIBOBJ(strtonum) AC_MSG_RESULT(no)]
+-)
+
+ # Clang sanitizers wrap reallocarray even if it isn't available on the target
+ # system. When compiled it always returns NULL and crashes the program. To
diff --git a/package/tntnet/Makefile b/package/tntnet/Makefile
deleted file mode 100644
index 03d3b558e..000000000
--- a/package/tntnet/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= tntnet
-PKG_VERSION:= 2.2.1
-PKG_RELEASE:= 2
-PKG_HASH:= c83170d08ef04c5868051e1c28c74b9562fe71e9e8263828e755ad5bd3547521
-PKG_DESCR:= small c++ application server
-PKG_SECTION:= net/http
-PKG_DEPENDS:= cxxtools zlib
-PKG_BUILDDEP:= cxxtools zlib
-PKG_NEEDS:= threads c++
-PKG_URL:= http://www.tntnet.org/
-PKG_SITES:= http://www.tntnet.org/download/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-PKG_CHOICES_TNTNET:= WITH_LIBRESSL WITH_GNUTLS WITHOUT_SSL
-PKGCD_WITH_LIBRESSL:= use libressl for crypto
-PKGCS_WITH_LIBRESSL:= libressl
-PKGCB_WITH_LIBRESSL:= libressl
-PKGCD_WITH_GNUTLS:= use gnutls for crypto
-PKGCS_WITH_GNUTLS:= libgnutls
-PKGCB_WITH_GNUTLS:= gnutls
-PKGCD_WITHOUT_SSL:= use no ssl
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,TNTNET,tntnet,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-ifeq (${ADK_PACKAGE_TNTNET_WITHOUT_SSL},y)
-CONFIGURE_ARGS+= --with-ssl=no
-endif
-ifeq (${ADK_PACKAGE_TNTNET_WITH_LIBRESSL},y)
-CONFIGURE_ARGS+= --with-ssl=openssl
-endif
-ifeq (${ADK_PACKAGE_TNTNET_WITH_GNUTLS},y)
-CONFIGURE_ARGS+= --with-ssl=gnutls
-endif
-
-CONFIGURE_ARGS+= --without-epoll \
- --without-sdk \
- --without-cgi \
- --disable-unittest \
- --disable-locale \
- --without-sendfile
-CONFIGURE_ENV+= CXXFLAGS='${TARGET_CXXFLAGS}' \
- ac_cv_path_cxxtools_config=${STAGING_TARGET_DIR}/usr/bin
-
-
-tntnet-install:
- ${INSTALL_DIR} ${IDIR_TNTNET}/www
- ${INSTALL_DIR} ${IDIR_TNTNET}/etc/tntnet
- ${INSTALL_DIR} ${IDIR_TNTNET}/usr/bin
- ${INSTALL_DIR} ${IDIR_TNTNET}/usr/lib/tntnet
- ${INSTALL_DATA} ./files/tntnet.{xml,properties} \
- ${IDIR_TNTNET}/etc/tntnet
- ${INSTALL_DATA} ./files/mime.conf \
- ${IDIR_TNTNET}/etc/tntnet
- ${CP} ${WRKINST}/usr/bin/tntnet ${IDIR_TNTNET}/usr/bin
- ${CP} ${WRKINST}/usr/lib/tntnet/tntnet.so* \
- ${IDIR_TNTNET}/usr/lib/tntnet
- ${CP} ${WRKINST}/usr/lib/libtntnet.so* \
- ${IDIR_TNTNET}/usr/lib
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/tntnet/files/mime.conf b/package/tntnet/files/mime.conf
deleted file mode 100644
index bab84a83d..000000000
--- a/package/tntnet/files/mime.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-DefaultType text/html
-AddType text/plain .txt
-AddType text/html .html .htm .xhtml
-AddType image/png .png
-AddType image/gif .gif
-AddType image/bmp .bmp
-AddType application/x-tar .tgz
-AddType image/jpeg .jpeg .jpg
-AddType image/tif .tif .tiff
-AddType text/css .css
-AddType text/plain .asc
-AddType text/rtf .rtf
-AddType video/mpeg .mpeg .mpg .mpe
-AddType application/x-javascript .js
-AddType application/msword .doc .dot
-AddType application/pdf .pdf
-AddType application/postscript .ps .ai .eps
-AddType application/vnd.ms-excel .xls .xlb
-AddType application/vnd.ms-powerpoint .ppt .pps .pot
-AddType application/zip .zip
-AddType application/x-gtar .gtar .tgz .taz
-AddType application/x-java-archive .jar
diff --git a/package/tntnet/files/tntnet.conffiles b/package/tntnet/files/tntnet.conffiles
deleted file mode 100644
index def08bf81..000000000
--- a/package/tntnet/files/tntnet.conffiles
+++ /dev/null
@@ -1,3 +0,0 @@
-/etc/tntnet/tntnet.conf
-/etc/tntnet/tntnet.properties
-/etc/tntnet/mime.conf
diff --git a/package/tntnet/files/tntnet.init b/package/tntnet/files/tntnet.init
deleted file mode 100644
index 01bb7a00b..000000000
--- a/package/tntnet/files/tntnet.init
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-#PKG tntnet
-#INIT 90
-. /etc/rc.conf
-
-case $1 in
-autostop) ;;
-autostart)
- test x"${tntnet:-NO}" = x"NO" && exit 0
- test x"$tntnet" = x"DAEMON" && test -x /bin/mksh && exec mksh -T- $0 start
- exec sh $0 start
- ;;
-start)
- /usr/bin/tntnet /etc/tntnet/tntnet.conf
- ;;
-stop)
- kill $(pgrep -f /usr/bin/tntnet)
- ;;
-restart)
- sh $0 stop
- sh $0 start
- ;;
-*)
- echo "usage: $0 {start | stop | restart}"
- ;;
-esac
-exit $?
diff --git a/package/tntnet/files/tntnet.postinst b/package/tntnet/files/tntnet.postinst
deleted file mode 100644
index 7bdfea5bd..000000000
--- a/package/tntnet/files/tntnet.postinst
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-. $IPKG_INSTROOT/etc/functions.sh
-add_rcconf tntnet NO
-gid=$(get_next_gid)
-add_group tntnet $gid
-add_user tntnet $(get_next_uid) $gid /www
diff --git a/package/tntnet/files/tntnet.properties b/package/tntnet/files/tntnet.properties
deleted file mode 100644
index 3e1006411..000000000
--- a/package/tntnet/files/tntnet.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# sample logging-properties for application tntnet
-# put this in tntnet.properties and use:
-# log_init("tntnet.properties");
-# in your application to initialize logging
-#
-# define categories with:
-# log_define("some.category")
-# this defines a static function, so you must put it outside other functions.
-# you can define a category per file or a category per namespace.
-#
-# print logging-messages with:
-# log_fatal("some fatal message");
-# log_error("some error message");
-# log_warn("some warn message");
-# log_info("some info message");
-# log_debug("some debug message");
-#
-rootLogger=INFO
-
-# define logger-categories
-logger.tntnet=INFO
-
-file=/var/log/tntnet.log
-maxfilesize=1MB
-maxbackupindex=10
-flushdelay=100 # delay write in milliseconds
-#host=localhost:1234 # send log-messages with udp
-#disabled=1 # disable logging
-#logprocess=1 # log in separate process
-#logprocesuser=someuser # change to user in log process
-#logprocesgroup=somegroup # change to group in log process
diff --git a/package/tntnet/files/tntnet.xml b/package/tntnet/files/tntnet.xml
deleted file mode 100644
index 2d4f160d1..000000000
--- a/package/tntnet/files/tntnet.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<tntnet>
- <mappings>
- <mapping>
- <target>static@tntnet</target>
- <url>(.*)/$</url>
- <pathinfo>/$1/index.html</pathinfo>
- </mapping>
- <mapping>
- <target>static@tntnet</target>
- <url>^/(.*)$</url>
- <pathinfo>/$1</pathinfo>
- </mapping>
- </mappings>
-
- <listeners>
- <listener>
- <ip>0.0.0.0</ip>
- <port>80</port>
- </listener>
- </listeners>
-
- <daemon>1</daemon>
- <user>tntnet</user>
- <group>tntnet</group>
- <maxRequestSize>1048576</maxRequestSize>
- <pidFile>/var/run/tntnet.pid</pidFile>
- <minThreads>2</minThreads>
- <maxThreads>4</maxThreads>
- <documentRoot>/www</documentRoot>
- <compPath>
- <entry>/usr/lib/tntnet</entry>
- </compPath>
- <logging>
- <rootlogger>INFO</rootlogger>
- <loggers>
- <logger>
- <category>tntnet</category>
- <level>INFO</level>
- </logger>
- </loggers>
- <!-- <file>tntnet.log</file> --> <!--uncomment if you want to log to a file -->
- <!-- <maxfilesize>1MB</maxfilesize> -->
- <!-- <maxbackupindex>2</maxbackupindex> -->
- <!-- <host>localhost:1234</host> --> <!-- # send log-messages with udp -->
- </logging>
-
- <include>/etc/tntnet/mime.conf</include>
-</tntnet>
diff --git a/package/tntnet/patches/patch-framework_common_gnutls_cpp b/package/tntnet/patches/patch-framework_common_gnutls_cpp
deleted file mode 100644
index 51037f74a..000000000
--- a/package/tntnet/patches/patch-framework_common_gnutls_cpp
+++ /dev/null
@@ -1,10 +0,0 @@
---- tntnet-2.2.1.orig/framework/common/gnutls.cpp 2013-12-26 15:08:34.000000000 +0100
-+++ tntnet-2.2.1/framework/common/gnutls.cpp 2014-05-20 06:44:01.000000000 +0200
-@@ -35,6 +35,7 @@
- #include <sys/poll.h>
- #include <errno.h>
- #include <cxxtools/ioerror.h>
-+#include <unistd.h>
-
- log_define("tntnet.ssl")
-
diff --git a/package/toolbox/src/Makefile b/package/toolbox/src/Makefile
index 50afea707..65009b6ef 100644
--- a/package/toolbox/src/Makefile
+++ b/package/toolbox/src/Makefile
@@ -57,7 +57,7 @@
SUBDIR+= lsof
SUBDIR+= md5
SUBDIR+= mkdir
- SUBDIR+= mknod
+# SUBDIR+= mknod # does not compile with glibc
SUBDIR+= mount
SUBDIR+= mv
SUBDIR+= netstat
diff --git a/package/tor/Makefile b/package/tor/Makefile
index faa4cf0ae..fc690de3d 100644
--- a/package/tor/Makefile
+++ b/package/tor/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= tor
-PKG_VERSION:= 0.4.6.8
+PKG_VERSION:= 0.4.8.10
PKG_RELEASE:= 1
-PKG_HASH:= 15ce1a37b4cc175b07761e00acdcfa2c08f0d23d6c3ab9c97c464bd38cc5476a
+PKG_HASH:= e628b4fab70edb4727715b23cf2931375a9f7685ac08f2c59ea498a178463a86
PKG_DESCR:= anonymous internet communication system
PKG_SECTION:= net/proxy
-PKG_DEPENDS:= libevent zlib libressl xz
-PKG_BUILDDEP:= libevent zlib libressl xz
+PKG_DEPENDS:= libevent zlib libressl
+PKG_BUILDDEP:= libevent zlib libressl
PKG_NEEDS:= threads
PKG_URL:= https://www.torproject.org/
PKG_SITES:= https://www.torproject.org/dist/
@@ -21,7 +21,6 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,TOR,tor,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
# -DNDEBUG not supported
TARGET_CPPFLAGS:=
CONFIGURE_ENV+= ac_cv_libevent_normal=yes \
diff --git a/package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_c b/package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_c
new file mode 100644
index 000000000..e15990084
--- /dev/null
+++ b/package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_c
@@ -0,0 +1,14 @@
+--- tor-0.4.8.10.orig/src/lib/crypt_ops/crypto_openssl_mgt.c 2023-12-08 19:49:19.000000000 +0100
++++ tor-0.4.8.10/src/lib/crypt_ops/crypto_openssl_mgt.c 2024-04-07 11:39:44.453246186 +0200
+@@ -40,6 +40,11 @@ ENABLE_GCC_WARNING("-Wredundant-decls")
+
+ #include <string.h>
+
++#ifdef OPENSSL_NO_ENGINE
++/* Android's OpenSSL seems to have removed all of its Engine support. */
++#define DISABLE_ENGINES
++#endif
++
+ #ifndef NEW_THREAD_API
+ /** A number of preallocated mutexes for use by OpenSSL. */
+ static tor_mutex_t **openssl_mutexes_ = NULL;
diff --git a/package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_h b/package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_h
new file mode 100644
index 000000000..49f6d2314
--- /dev/null
+++ b/package/tor/patches/patch-src_lib_crypt_ops_crypto_openssl_mgt_h
@@ -0,0 +1,14 @@
+--- tor-0.4.8.10.orig/src/lib/crypt_ops/crypto_openssl_mgt.h 2023-12-08 19:49:19.000000000 +0100
++++ tor-0.4.8.10/src/lib/crypt_ops/crypto_openssl_mgt.h 2024-04-07 11:39:44.453246186 +0200
+@@ -49,11 +49,6 @@
+ #define OPENSSL_V_SERIES(a,b,c) \
+ OPENSSL_VER((a),(b),(c),0,0)
+
+-#ifdef OPENSSL_NO_ENGINE
+-/* Android's OpenSSL seems to have removed all of its Engine support. */
+-#define DISABLE_ENGINES
+-#endif
+-
+ #if OPENSSL_VERSION_NUMBER >= OPENSSL_VER(1,1,0,0,5)
+ /* OpenSSL as of 1.1.0pre4 has an "new" thread API, which doesn't require
+ * setting up various callbacks.
diff --git a/package/trafshow/Makefile b/package/trafshow/Makefile
deleted file mode 100644
index be8a9c09b..000000000
--- a/package/trafshow/Makefile
+++ /dev/null
@@ -1,31 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include ${ADK_TOPDIR}/rules.mk
-
-PKG_NAME:= trafshow
-PKG_VERSION:= 5.2.3
-PKG_RELEASE:= 2
-PKG_HASH:= ea7e22674a66afcc7174779d0f803c1f25b42271973b4f75fab293b8d7db11fc
-PKG_DESCR:= traffic analyzing tool
-PKG_SECTION:= net/perf
-PKG_BUILDDEP:= libpcap ncurses
-PKG_DEPENDS:= libpcap libncurses
-PKG_NEEDS:= threads
-PKG_SITES:= http://distfiles.openadk.org/
-PKG_NOPARALLEL:= 1
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tgz
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,TRAFSHOW,trafshow,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-TARGET_CPPFLAGS+= -DHAVE_SOCKADDR_STORAGE -DHAVE_HAS_COLORS -D_GNU_SOURCE
-TARGET_LDFLAGS+= -ltinfo
-
-trafshow-install:
- ${INSTALL_DIR} ${IDIR_TRAFSHOW}/usr/bin
- ${INSTALL_BIN} ${WRKINST}/usr/bin/trafshow ${IDIR_TRAFSHOW}/usr/bin/
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/trafshow/patches/patch-Makefile_in b/package/trafshow/patches/patch-Makefile_in
deleted file mode 100644
index f3f681f14..000000000
--- a/package/trafshow/patches/patch-Makefile_in
+++ /dev/null
@@ -1,54 +0,0 @@
---- trafshow-5.2.3.orig/Makefile.in 2004-06-15 10:29:14.000000000 +0200
-+++ trafshow-5.2.3/Makefile.in 2011-01-21 23:49:58.988658729 +0100
-@@ -28,21 +28,22 @@ MANDEST = @mandir@
-
- PROG = trafshow
- CC = @PTHREAD_CC@
--CFLAGS = @CFLAGS@ -Wall -I. @DEFS@ @PTHREAD_CFLAGS@
-+CFLAGS = @CFLAGS@ -Wall @PTHREAD_CFLAGS@
-+CPPFLAGS = -I. @DEFS@ @CPPFLAGS@
- YACC = @YACC@
- YFLAGS = -d -p `echo $@ | sed -e 's/\..*/_/'`
- LEX = @LEX@
- LEXLIB = @LEXLIB@
- LFLAGS =
- LDFLAGS = @LDFLAGS@
--LIBS = @PTHREAD_LIBS@ @LIBS@
-+LIBS = @PTHREAD_LIBS@ @LIBS@ -pthread
-
- # Explicitly define compilation rule since SunOS 4's make doesn't like gcc.
- # Also, gcc does not remove the .o before forking 'as', which can be a
- # problem if you don't own the file but can write to the directory.
- .c.o:
- @rm -f $@
-- $(CC) $(CFLAGS) -c $*.c
-+ $(CC) $(CPPFLAGS) $(CFLAGS) -c $*.c
-
- CSRC = trafshow.c screen.c colormask.c getkey.c selector.c \
- events.c session.c show_if.c show_stat.c show_dump.c \
-@@ -59,9 +60,11 @@ OBJ = $(CSRC:.c=.o) $(YSRC:.y=.o) $(LSRC
-
- CLEANFILES = $(PROG) $(OBJ) $(GENSRC) y.tab.h
-
-+all: $(PROG)
-+
- $(PROG): $(OBJ)
- @rm -f $@
-- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
-+ $(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
-
- $(OBJ): config.h trafshow.h Makefile
- version.o: version.c
-@@ -73,9 +76,9 @@ version.c: VERSION Makefile
- @echo 'char compiled[] = "$(CC) $(CFLAGS) $(LIBS)";' >> $@
-
- install:
-- ./install-sh -c -s -m 555 -o bin -g bin $(PROG) $(BINDEST)/$(PROG)
-- ./install-sh -c -m 444 -o bin -g bin $(PROG).1 $(MANDEST)/man1/$(PROG).1
-- [ -f /etc/$(PROG) ] || ./install-sh -c -m 444 .trafshow /etc/$(PROG)
-+ ./install-sh -c -m 755 $(PROG) $(DESTDIR)$(BINDEST)/$(PROG)
-+ ./install-sh -c -m 644 $(PROG).1 $(DESTDIR)$(MANDEST)/man1/$(PROG).1
-+ ./install-sh -c -m 644 .trafshow $(DESTDIR)/etc/$(PROG)
-
- clean:
- rm -f $(CLEANFILES)
diff --git a/package/trafshow/patches/patch-domain_resolver_c b/package/trafshow/patches/patch-domain_resolver_c
deleted file mode 100644
index dfa619116..000000000
--- a/package/trafshow/patches/patch-domain_resolver_c
+++ /dev/null
@@ -1,680 +0,0 @@
-$Id$
---- trafshow-5.2.3.orig/domain_resolver.c 2006-01-08 06:59:23.000000000 +0100
-+++ trafshow-5.2.3/domain_resolver.c 2007-02-04 19:40:27.000000000 +0100
-@@ -28,6 +28,676 @@
- #include <resolv.h>
- #endif
-
-+/*
-+ * Copyright (c) 1985, 1993
-+ * The Regents of the University of California. All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 4. Neither the name of the University nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ */
-+
-+/*
-+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies, and that
-+ * the name of Digital Equipment Corporation not be used in advertising or
-+ * publicity pertaining to distribution of the document or software without
-+ * specific, written prior permission.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
-+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
-+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ */
-+
-+/*
-+ * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
-+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
-+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ */
-+
-+/*
-+ * Copyright (c) 1996,1999 by Internet Software Consortium.
-+ *
-+ * Permission to use, copy, modify, and distribute this software for any
-+ * purpose with or without fee is hereby granted, provided that the above
-+ * copyright notice and this permission notice appear in all copies.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
-+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
-+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-+ * SOFTWARE.
-+ */
-+
-+/*
-+ *
-+ * DNS helper functions not implemented in uclibc
-+ *
-+ */
-+
-+#include <ctype.h>
-+#include <unistd.h>
-+
-+static const char digits[] = "0123456789";
-+
-+/* Forward. */
-+
-+static int special(int);
-+static int printable(int);
-+static int dn_find(const u_char *, const u_char *,
-+ const u_char * const *,
-+ const u_char * const *);
-+
-+
-+/*
-+ * ns_name_ntop(src, dst, dstsiz)
-+ * Convert an encoded domain name to printable ascii as per RFC1035.
-+ * return:
-+ * Number of bytes written to buffer, or -1 (with errno set)
-+ * notes:
-+ * The root is returned as "."
-+ * All other domains are returned in non absolute form
-+ */
-+int
-+ns_name_ntop(const u_char *src, char *dst, size_t dstsiz) {
-+ const u_char *cp;
-+ char *dn, *eom;
-+ u_char c;
-+ u_int n;
-+
-+ cp = src;
-+ dn = dst;
-+ eom = dst + dstsiz;
-+
-+ while ((n = *cp++) != 0) {
-+ if ((n & NS_CMPRSFLGS) != 0) {
-+ /* Some kind of compression pointer. */
-+ return (-1);
-+ }
-+ if (dn != dst) {
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '.';
-+ }
-+ if (dn + n >= eom) {
-+ return (-1);
-+ }
-+ for ((void)NULL; n > 0; n--) {
-+ c = *cp++;
-+ if (special(c)) {
-+ if (dn + 1 >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '\\';
-+ *dn++ = (char)c;
-+ } else if (!printable(c)) {
-+ if (dn + 3 >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '\\';
-+ *dn++ = digits[c / 100];
-+ *dn++ = digits[(c % 100) / 10];
-+ *dn++ = digits[c % 10];
-+ } else {
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = (char)c;
-+ }
-+ }
-+ }
-+ if (dn == dst) {
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '.';
-+ }
-+ if (dn >= eom) {
-+ return (-1);
-+ }
-+ *dn++ = '\0';
-+ return (dn - dst);
-+}
-+
-+/*
-+ * ns_name_pton(src, dst, dstsiz)
-+ * Convert a ascii string into an encoded domain name as per RFC1035.
-+ * return:
-+ * -1 if it fails
-+ * 1 if string was fully qualified
-+ * 0 is string was not fully qualified
-+ * notes:
-+ * Enforces label and domain length limits.
-+ */
-+
-+int
-+ns_name_pton(const char *src, u_char *dst, size_t dstsiz) {
-+ u_char *label, *bp, *eom;
-+ int c, n, escaped;
-+ char *cp;
-+
-+ escaped = 0;
-+ bp = dst;
-+ eom = dst + dstsiz;
-+ label = bp++;
-+
-+ while ((c = *src++) != 0) {
-+ if (escaped) {
-+ if ((cp = strchr(digits, c)) != NULL) {
-+ n = (cp - digits) * 100;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ return (-1);
-+ }
-+ n += (cp - digits) * 10;
-+ if ((c = *src++) == 0 ||
-+ (cp = strchr(digits, c)) == NULL) {
-+ return (-1);
-+ }
-+ n += (cp - digits);
-+ if (n > 255) {
-+ return (-1);
-+ }
-+ c = n;
-+ }
-+ escaped = 0;
-+ } else if (c == '\\') {
-+ escaped = 1;
-+ continue;
-+ } else if (c == '.') {
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ return (-1);
-+ }
-+ *label = c;
-+ /* Fully qualified ? */
-+ if (*src == '\0') {
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ return (-1);
-+ }
-+ *bp++ = '\0';
-+ }
-+ if ((bp - dst) > MAXCDNAME) {
-+ return (-1);
-+ }
-+ return (1);
-+ }
-+ if (c == 0 || *src == '.') {
-+ return (-1);
-+ }
-+ label = bp++;
-+ continue;
-+ }
-+ if (bp >= eom) {
-+ return (-1);
-+ }
-+ *bp++ = (u_char)c;
-+ }
-+ c = (bp - label - 1);
-+ if ((c & NS_CMPRSFLGS) != 0) { /* Label too big. */
-+ return (-1);
-+ }
-+ if (label >= eom) {
-+ return (-1);
-+ }
-+ *label = c;
-+ if (c != 0) {
-+ if (bp >= eom) {
-+ return (-1);
-+ }
-+ *bp++ = 0;
-+ }
-+ if ((bp - dst) > MAXCDNAME) { /* src too big */
-+ return (-1);
-+ }
-+ return (0);
-+}
-+
-+/*
-+ * ns_name_ntol(src, dst, dstsiz)
-+ * Convert a network strings labels into all lowercase.
-+ * return:
-+ * Number of bytes written to buffer, or -1 (with errno set)
-+ * notes:
-+ * Enforces label and domain length limits.
-+ */
-+
-+int
-+ns_name_ntol(const u_char *src, u_char *dst, size_t dstsiz) {
-+ const u_char *cp;
-+ u_char *dn, *eom;
-+ u_char c;
-+ u_int n;
-+
-+ cp = src;
-+ dn = dst;
-+ eom = dst + dstsiz;
-+
-+ while ((n = *cp++) != 0) {
-+ if ((n & NS_CMPRSFLGS) != 0) {
-+ /* Some kind of compression pointer. */
-+ return (-1);
-+ }
-+ *dn++ = n;
-+ if (dn + n >= eom) {
-+ return (-1);
-+ }
-+ for ((void)NULL; n > 0; n--) {
-+ c = *cp++;
-+ if (isupper(c))
-+ *dn++ = tolower(c);
-+ else
-+ *dn++ = c;
-+ }
-+ }
-+ *dn++ = '\0';
-+ return (dn - dst);
-+}
-+
-+/*
-+ * ns_name_unpack(msg, eom, src, dst, dstsiz)
-+ * Unpack a domain name from a message, source may be compressed.
-+ * return:
-+ * -1 if it fails, or consumed octets if it succeeds.
-+ */
-+int
-+ns_name_unpack(const u_char *msg, const u_char *eom, const u_char *src,
-+ u_char *dst, size_t dstsiz)
-+{
-+ const u_char *srcp, *dstlim;
-+ u_char *dstp;
-+ int n, len, checked;
-+
-+ len = -1;
-+ checked = 0;
-+ dstp = dst;
-+ srcp = src;
-+ dstlim = dst + dstsiz;
-+ if (srcp < msg || srcp >= eom) {
-+ return (-1);
-+ }
-+ /* Fetch next label in domain name. */
-+ while ((n = *srcp++) != 0) {
-+ /* Check for indirection. */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0:
-+ /* Limit checks. */
-+ if (dstp + n + 1 >= dstlim || srcp + n >= eom) {
-+ return (-1);
-+ }
-+ checked += n + 1;
-+ *dstp++ = n;
-+ memcpy(dstp, srcp, n);
-+ dstp += n;
-+ srcp += n;
-+ break;
-+
-+ case NS_CMPRSFLGS:
-+ if (srcp >= eom) {
-+ return (-1);
-+ }
-+ if (len < 0)
-+ len = srcp - src + 1;
-+ srcp = msg + (((n & 0x3f) << 8) | (*srcp & 0xff));
-+ if (srcp < msg || srcp >= eom) { /* Out of range. */
-+ return (-1);
-+ }
-+ checked += 2;
-+ /*
-+ * Check for loops in the compressed name;
-+ * if we've looked at the whole message,
-+ * there must be a loop.
-+ */
-+ if (checked >= eom - msg) {
-+ return (-1);
-+ }
-+ break;
-+
-+ default:
-+ return (-1); /* flag error */
-+ }
-+ }
-+ *dstp = '\0';
-+ if (len < 0)
-+ len = srcp - src;
-+ return (len);
-+}
-+
-+/*
-+ * ns_name_pack(src, dst, dstsiz, dnptrs, lastdnptr)
-+ * Pack domain name 'domain' into 'comp_dn'.
-+ * return:
-+ * Size of the compressed name, or -1.
-+ * notes:
-+ * 'dnptrs' is an array of pointers to previous compressed names.
-+ * dnptrs[0] is a pointer to the beginning of the message. The array
-+ * ends with NULL.
-+ * 'lastdnptr' is a pointer to the end of the array pointed to
-+ * by 'dnptrs'.
-+ * Side effects:
-+ * The list of pointers in dnptrs is updated for labels inserted into
-+ * the message as we compress the name. If 'dnptr' is NULL, we don't
-+ * try to compress names. If 'lastdnptr' is NULL, we don't update the
-+ * list.
-+ */
-+int
-+ns_name_pack(const u_char *src, u_char *dst, int dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char *dstp;
-+ const u_char **cpp, **lpp, *eob, *msg;
-+ const u_char *srcp;
-+ int n, l, first = 1;
-+
-+ srcp = src;
-+ dstp = dst;
-+ eob = dstp + dstsiz;
-+ lpp = cpp = NULL;
-+ if (dnptrs != NULL) {
-+ if ((msg = *dnptrs++) != NULL) {
-+ for (cpp = dnptrs; *cpp != NULL; cpp++)
-+ (void)NULL;
-+ lpp = cpp; /* end of list to search */
-+ }
-+ } else
-+ msg = NULL;
-+
-+ /* make sure the domain we are about to add is legal */
-+ l = 0;
-+ do {
-+ n = *srcp;
-+ if ((n & NS_CMPRSFLGS) != 0) {
-+ return (-1);
-+ }
-+ l += n + 1;
-+ if (l > MAXCDNAME) {
-+ return (-1);
-+ }
-+ srcp += n + 1;
-+ } while (n != 0);
-+
-+ /* from here on we need to reset compression pointer array on error */
-+ srcp = src;
-+ do {
-+ /* Look to see if we can use pointers. */
-+ n = *srcp;
-+ if (n != 0 && msg != NULL) {
-+ l = dn_find(srcp, msg, (const u_char * const *)dnptrs,
-+ (const u_char * const *)lpp);
-+ if (l >= 0) {
-+ if (dstp + 1 >= eob) {
-+ goto cleanup;
-+ }
-+ *dstp++ = (l >> 8) | NS_CMPRSFLGS;
-+ *dstp++ = l % 256;
-+ return (dstp - dst);
-+ }
-+ /* Not found, save it. */
-+ if (lastdnptr != NULL && cpp < lastdnptr - 1 &&
-+ (dstp - msg) < 0x4000 && first) {
-+ *cpp++ = dstp;
-+ *cpp = NULL;
-+ first = 0;
-+ }
-+ }
-+ /* copy label to buffer */
-+ if (n & NS_CMPRSFLGS) { /* Should not happen. */
-+ goto cleanup;
-+ }
-+ if (dstp + 1 + n >= eob) {
-+ goto cleanup;
-+ }
-+ memcpy(dstp, srcp, n + 1);
-+ srcp += n + 1;
-+ dstp += n + 1;
-+ } while (n != 0);
-+
-+ if (dstp > eob) {
-+cleanup:
-+ if (msg != NULL)
-+ *lpp = NULL;
-+ return (-1);
-+ }
-+ return (dstp - dst);
-+}
-+
-+/*
-+ * ns_name_uncompress(msg, eom, src, dst, dstsiz)
-+ * Expand compressed domain name to presentation format.
-+ * return:
-+ * Number of bytes read out of `src', or -1 (with errno set).
-+ * note:
-+ * Root domain returns as "." not "".
-+ */
-+int
-+ns_name_uncompress(const u_char *msg, const u_char *eom, const u_char *src,
-+ char *dst, size_t dstsiz)
-+{
-+ u_char tmp[NS_MAXCDNAME];
-+ int n;
-+
-+ if ((n = ns_name_unpack(msg, eom, src, tmp, sizeof tmp)) == -1)
-+ return (-1);
-+ if (ns_name_ntop(tmp, dst, dstsiz) == -1)
-+ return (-1);
-+ return (n);
-+}
-+
-+/*
-+ * ns_name_compress(src, dst, dstsiz, dnptrs, lastdnptr)
-+ * Compress a domain name into wire format, using compression pointers.
-+ * return:
-+ * Number of bytes consumed in `dst' or -1 (with errno set).
-+ * notes:
-+ * 'dnptrs' is an array of pointers to previous compressed names.
-+ * dnptrs[0] is a pointer to the beginning of the message.
-+ * The list ends with NULL. 'lastdnptr' is a pointer to the end of the
-+ * array pointed to by 'dnptrs'. Side effect is to update the list of
-+ * pointers for labels inserted into the message as we compress the name.
-+ * If 'dnptr' is NULL, we don't try to compress names. If 'lastdnptr'
-+ * is NULL, we don't update the list.
-+ */
-+int
-+ns_name_compress(const char *src, u_char *dst, size_t dstsiz,
-+ const u_char **dnptrs, const u_char **lastdnptr)
-+{
-+ u_char tmp[NS_MAXCDNAME];
-+
-+ if (ns_name_pton(src, tmp, sizeof tmp) == -1)
-+ return (-1);
-+ return (ns_name_pack(tmp, dst, dstsiz, dnptrs, lastdnptr));
-+}
-+
-+/*
-+ * special(ch)
-+ * Thinking in noninternationalized USASCII (per the DNS spec),
-+ * is this characted special ("in need of quoting") ?
-+ * return:
-+ * boolean.
-+ */
-+static int
-+special(int ch) {
-+ switch (ch) {
-+ case 0x22: /* '"' */
-+ case 0x2E: /* '.' */
-+ case 0x3B: /* ';' */
-+ case 0x5C: /* '\\' */
-+ /* Special modifiers in zone files. */
-+ case 0x40: /* '@' */
-+ case 0x24: /* '$' */
-+ return (1);
-+ default:
-+ return (0);
-+ }
-+}
-+
-+/*
-+ * printable(ch)
-+ * Thinking in noninternationalized USASCII (per the DNS spec),
-+ * is this character visible and not a space when printed ?
-+ * return:
-+ * boolean.
-+ */
-+static int
-+printable(int ch) {
-+ return (ch > 0x20 && ch < 0x7f);
-+}
-+
-+/*
-+ * Thinking in noninternationalized USASCII (per the DNS spec),
-+ * convert this character to lower case if it's upper case.
-+ */
-+static int
-+mklower(int ch) {
-+ if (ch >= 0x41 && ch <= 0x5A)
-+ return (ch + 0x20);
-+ return (ch);
-+}
-+
-+/*
-+ * dn_find(domain, msg, dnptrs, lastdnptr)
-+ * Search for the counted-label name in an array of compressed names.
-+ * return:
-+ * offset from msg if found, or -1.
-+ * notes:
-+ * dnptrs is the pointer to the first name on the list,
-+ * not the pointer to the start of the message.
-+ */
-+static int
-+dn_find(const u_char *domain, const u_char *msg,
-+ const u_char * const *dnptrs,
-+ const u_char * const *lastdnptr)
-+{
-+ const u_char *dn, *cp, *sp;
-+ const u_char * const *cpp;
-+ u_int n;
-+
-+ for (cpp = dnptrs; cpp < lastdnptr; cpp++) {
-+ sp = *cpp;
-+ /*
-+ * terminate search on:
-+ * root label
-+ * compression pointer
-+ * unusable offset
-+ */
-+ while (*sp != 0 && (*sp & NS_CMPRSFLGS) == 0 &&
-+ (sp - msg) < 0x4000) {
-+ dn = domain;
-+ cp = sp;
-+ while ((n = *cp++) != 0) {
-+ /*
-+ * check for indirection
-+ */
-+ switch (n & NS_CMPRSFLGS) {
-+ case 0: /* normal case, n == len */
-+ if (n != *dn++)
-+ goto next;
-+ for ((void)NULL; n > 0; n--)
-+ if (mklower(*dn++) !=
-+ mklower(*cp++))
-+ goto next;
-+ /* Is next root for both ? */
-+ if (*dn == '\0' && *cp == '\0')
-+ return (sp - msg);
-+ if (*dn)
-+ continue;
-+ goto next;
-+
-+ case NS_CMPRSFLGS: /* indirection */
-+ cp = msg + (((n & 0x3f) << 8) | *cp);
-+ break;
-+
-+ default: /* illegal type */
-+ return (-1);
-+ }
-+ }
-+ next:
-+ sp += *sp + 1;
-+ }
-+ }
-+ return (-1);
-+}
-+
-+/*
-+ * Expand compressed domain name 'comp_dn' to full domain name.
-+ * 'msg' is a pointer to the begining of the message,
-+ * 'eomorig' points to the first location after the message,
-+ * 'exp_dn' is a pointer to a buffer of size 'length' for the result.
-+ * Return size of compressed name or -1 if there was an error.
-+ */
-+int
-+dn_expand(const u_char *msg, const u_char *eom, const u_char *src,
-+ char *dst, int dstsiz)
-+{
-+ int n = ns_name_uncompress(msg, eom, src, dst, (size_t)dstsiz);
-+
-+ if (n > 0 && dst[0] == '.')
-+ dst[0] = '\0';
-+ return (n);
-+}
-+
-+/*
-+ * Pack domain name 'exp_dn' in presentation form into 'comp_dn'.
-+ * Return the size of the compressed name or -1.
-+ * 'length' is the size of the array pointed to by 'comp_dn'.
-+ */
-+int
-+dn_comp(const char *src, u_char *dst, int dstsiz,
-+ u_char **dnptrs, u_char **lastdnptr)
-+{
-+ return (ns_name_compress(src, dst, (size_t)dstsiz,
-+ (const u_char **)dnptrs,
-+ (const u_char **)lastdnptr));
-+}
-+
-+
- #include "domain_resolver.h"
- #include "session.h"
- #include "util.h"
diff --git a/package/trafshow/patches/patch-session_c b/package/trafshow/patches/patch-session_c
deleted file mode 100644
index cee3cb266..000000000
--- a/package/trafshow/patches/patch-session_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- trafshow-5.2.3.orig/session.c 2006-01-08 06:58:08.000000000 +0100
-+++ trafshow-5.2.3/session.c 2010-02-05 22:59:54.974334342 +0100
-@@ -40,7 +40,7 @@
- #define ASYNC_MODE FNDELAY
- #elif O_ASYNC
- #define ASYNC_MODE O_ASYNC
--#elif
-+#else
- #error the fcntl argument to turn ON/OFF non-blocking I/O is unknown
- #endif
-
diff --git a/package/transmission/Makefile b/package/transmission/Makefile
index 8fed6d204..3ba43fb1d 100644
--- a/package/transmission/Makefile
+++ b/package/transmission/Makefile
@@ -4,24 +4,22 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= transmission
-PKG_VERSION:= 2.92
+PKG_VERSION:= 4.0.5
PKG_RELEASE:= 1
-PKG_HASH:= 3a8d045c306ad9acb7bf81126939b9594553a388482efa0ec1bfb67b22acd35f
+PKG_HASH:= fd68ff114a479200043c30c7e69dba4c1932f7af36ca4c5b5d2edcb5866e6357
PKG_DESCR:= torrent client
PKG_SECTION:= app/p2p
PKG_DEPENDS:= libressl libevent libcurl
-PKG_BUILDDEP:= libressl libevent curl
+PKG_BUILDDEP:= cmake-host libressl libevent curl
PKG_NEEDS:= threads c++
PKG_URL:= http://www.transmissionbt.com
-PKG_SITES:= http://download.transmissionbt.com/files/
+PKG_SITES:= https://github.com/transmission/transmission/releases/download/$(PKG_VERSION)/
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,TRANSMISSION,transmission,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-TARGET_LDFLAGS+= -liconv
-
-CONFIGURE_ARGS+= --without-gtk
+CONFIG_STYLE:= cmake
transmission-install:
$(INSTALL_DIR) $(IDIR_TRANSMISSION)/usr/share
diff --git a/package/trinity/Makefile b/package/trinity/Makefile
deleted file mode 100644
index cf12729eb..000000000
--- a/package/trinity/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= trinity
-PKG_VERSION:= 1.6
-PKG_RELEASE:= 1
-PKG_HASH:= e40efa320ddc814943e90be0386b5052ce0bbbc457b3f308fa973669d393a6d9
-PKG_DESCR:= linux system call fuzz tester
-PKG_SECTION:= base/tests
-PKG_URL:= http://codemonkey.org.uk/projects/trinity/
-PKG_SITES:= http://codemonkey.org.uk/projects/trinity/
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,TRINITY,trinity,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-XAKE_FLAGS+= CROSS_COMPILE=
-CONFIG_STYLE:= minimal
-CONFIGURE_PROG:= configure.sh
-
-trinity-install:
- $(INSTALL_DIR) $(IDIR_TRINITY)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/trinity \
- $(IDIR_TRINITY)/usr/bin
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/trinity/patches/patch-Makefile b/package/trinity/patches/patch-Makefile
deleted file mode 100644
index aa85e30f1..000000000
--- a/package/trinity/patches/patch-Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
---- trinity-1.6.orig/Makefile 2015-11-03 18:05:50.000000000 +0100
-+++ trinity-1.6/Makefile 2016-02-25 00:24:11.000000000 +0100
-@@ -1,6 +1,6 @@
- VERSION="1.6"
-
--INSTALL_PREFIX ?= $(DESTDIR)
-+INSTALL_PREFIX ?= $(DESTDIR)/usr
- INSTALL_PREFIX ?= $(HOME)
- NR_CPUS := $(shell grep ^processor /proc/cpuinfo | /usr/bin/wc -l)
-
diff --git a/package/trinity/patches/patch-syscalls_prctl_c b/package/trinity/patches/patch-syscalls_prctl_c
deleted file mode 100644
index 9adbe22f8..000000000
--- a/package/trinity/patches/patch-syscalls_prctl_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- trinity-1.6.orig/syscalls/prctl.c 2015-11-03 18:05:50.000000000 +0100
-+++ trinity-1.6/syscalls/prctl.c 2016-02-25 00:26:56.000000000 +0100
-@@ -34,7 +34,7 @@ static int prctl_opts[] = {
- PR_GET_NO_NEW_PRIVS, PR_GET_TID_ADDRESS, PR_SET_THP_DISABLE, PR_GET_THP_DISABLE,
- PR_MPX_ENABLE_MANAGEMENT, PR_MPX_DISABLE_MANAGEMENT,
- #ifdef __mips__
-- GET_FP_MODE, SET_FP_MODE,
-+ PR_GET_FP_MODE, PR_SET_FP_MODE,
- #endif
- PR_CAP_AMBIENT,
- };
diff --git a/package/tvheadend/Makefile b/package/tvheadend/Makefile
index 5557d16ec..2d86705e8 100644
--- a/package/tvheadend/Makefile
+++ b/package/tvheadend/Makefile
@@ -4,7 +4,7 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= tvheadend
-PKG_VERSION:= f46a6c2dc93460d7c2909ebbec42a3ac2557ccb2
+PKG_VERSION:= a9c6db8acbd85297238771b8b4430435b7994928
PKG_GIT:= hash
PKG_RELEASE:= 1
PKG_DESCR:= tv streaming server
@@ -23,7 +23,12 @@ XAKE_FLAGS+= LDLIBS=-liconv
endif
CONFIGURE_ARGS+= --disable-bundle \
- --disable-ffmpeg_static
+ --disable-ffmpeg_static \
+ --disable-execinfo \
+ --disable-libvpx \
+ --disable-libx264 \
+ --disable-libx265 \
+ --nowerror
tvheadend-install:
$(INSTALL_DIR) $(IDIR_TVHEADEND)/usr/bin
diff --git a/package/tvheadend/patches/patch-configure b/package/tvheadend/patches/patch-configure
new file mode 100644
index 000000000..97882365d
--- /dev/null
+++ b/package/tvheadend/patches/patch-configure
@@ -0,0 +1,22 @@
+--- tvheadend-a9c6db8acbd85297238771b8b4430435b7994928.orig/configure 2024-03-03 05:21:25.000000000 +0100
++++ tvheadend-a9c6db8acbd85297238771b8b4430435b7994928/configure 2024-03-03 05:37:39.643872622 +0100
+@@ -28,8 +28,8 @@ OPTIONS=(
+ "satip_server:yes"
+ "satip_client:yes"
+ "hdhomerun_client:no"
+- "hdhomerun_server:yes"
+- "hdhomerun_static:yes"
++ "hdhomerun_server:no"
++ "hdhomerun_static:no"
+ "iptv:yes"
+ "tsfile:yes"
+ "dvbscan:yes"
+@@ -63,7 +63,7 @@ OPTIONS=(
+ "pcre2:auto"
+ "uriparser:auto"
+ "ccache:auto"
+- "tvhcsa:auto"
++ "tvhcsa:no"
+ "bundle:no"
+ "pngquant:no"
+ "kqueue:no"
diff --git a/package/tvheadend/patches/patch-configure.orig b/package/tvheadend/patches/patch-configure.orig
new file mode 100644
index 000000000..3c8ed25ed
--- /dev/null
+++ b/package/tvheadend/patches/patch-configure.orig
@@ -0,0 +1,11 @@
+--- tvheadend-a9c6db8acbd85297238771b8b4430435b7994928.orig/configure 2024-03-03 05:21:25.000000000 +0100
++++ tvheadend-a9c6db8acbd85297238771b8b4430435b7994928/configure 2024-03-03 05:35:58.519873994 +0100
+@@ -63,7 +63,7 @@ OPTIONS=(
+ "pcre2:auto"
+ "uriparser:auto"
+ "ccache:auto"
+- "tvhcsa:auto"
++ "tvhcsa:no"
+ "bundle:no"
+ "pngquant:no"
+ "kqueue:no"
diff --git a/package/twm/Makefile b/package/twm/Makefile
index a59d0e20d..7bf5925fa 100644
--- a/package/twm/Makefile
+++ b/package/twm/Makefile
@@ -9,8 +9,8 @@ PKG_RELEASE:= 1
PKG_HASH:= a0d3f2a9689594220220d32c3cd674056b91dbf7c6c352efe1ffb72d65c66f76
PKG_DESCR:= simple window manager
PKG_SECTION:= x11/apps
-PKG_DEPENDS:= xorg-server
-PKG_BUILDDEP:= xorg-server
+PKG_DEPENDS:= xorg-server libx11 libxext libxt libxmu libice libsm
+PKG_BUILDDEP:= xorg-server libX11 libXext libXt libXmu libICE libSM
PKG_NEEDS:= c++
PKG_URL:= http://xorg.freedesktop.org/
PKG_SITES:= http://xorg.freedesktop.org/archive/individual/app/
diff --git a/package/tzdata/Makefile b/package/tzdata/Makefile
index d838eabf8..a1e7de77b 100644
--- a/package/tzdata/Makefile
+++ b/package/tzdata/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= tzdata
-PKG_VERSION:= 2019c
+PKG_VERSION:= 2021e
PKG_RELEASE:= 1
-PKG_HASH:= 79c7806dab09072308da0e3d22c37d3b245015a591891ea147d3b133b60ffc7c f6ebd3668e02d5ed223d3b7b1947561bf2d2da2f4bd1db61efefd9e06c167ed4
+PKG_HASH:= 07ec42b737d0d3c6be9c337f8abb5f00554a0f9cc4fcf01a703d69403b6bb2b1 584666393a5424d13d27ec01183da17703273664742e049d4f62f62dab631775
PKG_DESCR:= timezone data (/usr/share/zoneinfo)
PKG_SECTION:= base/apps
PKG_URL:= http://www.iana.org/time-zones/
diff --git a/package/tzdata/patches/patch-Makefile b/package/tzdata/patches/patch-Makefile
index faf30fcd9..9083a7597 100644
--- a/package/tzdata/patches/patch-Makefile
+++ b/package/tzdata/patches/patch-Makefile
@@ -1,6 +1,6 @@
---- w-tzdata-2019c-1.orig/Makefile 2019-07-01 09:06:38.000000000 +0200
-+++ w-tzdata-2019c-1/Makefile 2020-02-04 09:33:12.012662611 +0100
-@@ -365,7 +365,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fn
+--- w-tzdata-2021e-1.orig/Makefile 2021-09-25 16:47:39.000000000 +0200
++++ w-tzdata-2021e-1/Makefile 2022-01-09 06:05:17.958089388 +0100
+@@ -370,7 +370,7 @@ GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fn
# January's first Monday when a "%V" format is used and January 1
# falls on a Friday, Saturday, or Sunday.
@@ -9,7 +9,7 @@
# Linker flags. Default to $(LFLAGS) for backwards compatibility
# to release 2012h and earlier.
-@@ -380,7 +380,7 @@ LEAPSECONDS=
+@@ -385,7 +385,7 @@ LEAPSECONDS=
# The zic command and its arguments.
zic= ./zic
@@ -18,8 +18,8 @@
# To shrink the size of installed TZif files,
# append "-r @N" to omit data before N-seconds-after-the-Epoch.
-@@ -579,7 +579,7 @@ SHELL= /bin/sh
- all: tzselect yearistype zic zdump libtz.a $(TABDATA) \
+@@ -562,7 +562,7 @@ SHELL= /bin/sh
+ all: tzselect zic zdump libtz.a $(TABDATA) \
vanguard.zi main.zi rearguard.zi
-ALL: all date $(ENCHILADA)
@@ -27,7 +27,7 @@
install: all $(DATA) $(REDO) $(MANS)
mkdir -p '$(DESTDIR)$(BINDIR)' \
-@@ -646,6 +646,12 @@ zdump: $(TZDOBJS)
+@@ -637,6 +637,12 @@ zdump: $(TZDOBJS)
zic: $(TZCOBJS)
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(TZCOBJS) $(LDLIBS)
@@ -37,6 +37,6 @@
+ $(CC_FOR_BUILD) -c $(CFLAGS_FOR_BUILD) asctime.c -o asctime_build.o
+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o $@ zic_build.o localtime_build.o asctime_build.o
+
- yearistype: yearistype.sh
- cp yearistype.sh yearistype
- chmod +x yearistype
+ leapseconds: $(LEAP_DEPS)
+ $(AWK) -v EXPIRES_LINE=$(EXPIRES_LINE) \
+ -f leapseconds.awk leap-seconds.list >$@.out
diff --git a/package/u-boot-h8300/Makefile b/package/u-boot-h8300/Makefile
index e26b4fd59..bfd0824df 100644
--- a/package/u-boot-h8300/Makefile
+++ b/package/u-boot-h8300/Makefile
@@ -4,6 +4,7 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= u-boot
+# last working hash fa0e8426833edc1be3c2ea3acaf248157048a15a
PKG_VERSION:= h8300
PKG_GIT:= branch
PKG_RELEASE:= 1
@@ -13,7 +14,6 @@ HOST_BUILDDEP:= libressl-host dtc-host
PKG_BUILDDEP:= u-boot-h8300-host
PKG_SITES:= git://git.pf.osdn.jp/gitroot/y/ys/ysato/uboot.git
-
PKG_SYSTEM_DEPENDS:= hitachi-edosk2674
include $(ADK_TOPDIR)/mk/host.mk
@@ -23,7 +23,6 @@ $(eval $(call HOST_template,U_BOOT,u-boot,$(PKG_VERSION)-$(PKG_RELEASE)))
$(eval $(call PKG_template,U_BOOT,u-boot,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
UBOOT:= u-boot.bin
-CONFIG:= clearfog_defconfig
HOST_MAKE_FLAGS+= HOSTCFLAGS="$(HOST_CPPFLAGS) $(HOST_CFLAGS)" \
HOSTLDFLAGS="$(HOST_LDFLAGS) -ldl"
diff --git a/package/u-boot-h8300/patches/dtc.patch b/package/u-boot-h8300/patches/dtc.patch
new file mode 100644
index 000000000..725c3af2f
--- /dev/null
+++ b/package/u-boot-h8300/patches/dtc.patch
@@ -0,0 +1,11 @@
+diff -Nur u-boot-h8300.orig/scripts/dtc/dtc-lexer.l u-boot-h8300/scripts/dtc/dtc-lexer.l
+--- u-boot-h8300.orig/scripts/dtc/dtc-lexer.l 2022-02-11 13:17:30.000000000 +0100
++++ u-boot-h8300/scripts/dtc/dtc-lexer.l 2022-02-11 13:42:14.302389873 +0100
+@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
+ #include "srcpos.h"
+ #include "dtc-parser.tab.h"
+
+-YYLTYPE yylloc;
+ extern bool treesource_error;
+
+ /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
diff --git a/package/u-boot-h8300/patches/patch-include_image_h b/package/u-boot-h8300/patches/patch-include_image_h
new file mode 100644
index 000000000..e087a033d
--- /dev/null
+++ b/package/u-boot-h8300/patches/patch-include_image_h
@@ -0,0 +1,13 @@
+--- u-boot-h8300.orig/include/image.h 2022-02-11 13:17:30.000000000 +0100
++++ u-boot-h8300/include/image.h 2022-02-13 01:58:23.457168935 +0100
+@@ -194,9 +194,9 @@ enum {
+ IH_ARCH_ARM64, /* ARM64 */
+ IH_ARCH_ARC, /* Synopsys DesignWare ARC */
+ IH_ARCH_X86_64, /* AMD x86_64, Intel and Via */
++ IH_ARCH_H8300, /* H8/300 */
+ IH_ARCH_XTENSA, /* Xtensa */
+ IH_ARCH_RISCV, /* RISC-V */
+- IH_ARCH_H8300, /* H8/300 */
+ IH_ARCH_COUNT,
+ };
+
diff --git a/package/u-boot/Makefile b/package/u-boot/Makefile
index da6389972..704465fe9 100644
--- a/package/u-boot/Makefile
+++ b/package/u-boot/Makefile
@@ -4,19 +4,19 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= u-boot
-PKG_VERSION:= 2021.10
+PKG_VERSION:= 2024.04
PKG_RELEASE:= 1
-PKG_HASH:= cde723e19262e646f2670d25e5ec4b1b368490de950d4e26275a988c36df0bd4
+PKG_HASH:= 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a
PKG_DESCR:= portable bootloader
PKG_SECTION:= base/boot
-HOST_BUILDDEP:= libressl-host dtc-host
-PKG_BUILDDEP:= python3-host swig-host u-boot-host
+HOST_BUILDDEP:= libressl-host dtc-host swig-host python3-host python-setuptools-host
+PKG_BUILDDEP:= python3-host python-setuptools-host swig-host u-boot-host
PKG_URL:= http://www.denx.de/wiki/U-Boot
PKG_SITES:= ftp://ftp.denx.de/pub/u-boot/
DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SYSTEM_DEPENDS:= beaglebone-black orange-pi0 raspberry-pi raspberry-pi2 raspberry-pi3 banana-pro solidrun-imx6 solidrun-clearfog raspberry-pi3-64 raspberry-pi3p raspberry-pi3p-64 phytec-imx6 pcduino-3b
+PKG_SYSTEM_DEPENDS:= banana-p2-zero beaglebone-black orange-pi0 raspberry-pi raspberry-pi2 raspberry-pi3 banana-pro solidrun-imx6 solidrun-clearfog raspberry-pi3-64 raspberry-pi3p raspberry-pi3p-64 rockpi4-plus phytec-imx6 pcduino-3b imgtec-ci20 st-stm32f746g starfive-visionfive2
include $(ADK_TOPDIR)/mk/host.mk
include $(ADK_TOPDIR)/mk/package.mk
@@ -58,10 +58,18 @@ endif
ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64),y)
CONFIG:= rpi_3_defconfig
endif
+ifeq ($(ADK_TARGET_SYSTEM_ROCKPI4_PLUS),y)
+CONFIG:= rock-pi-4-rk3399_defconfig
+UBOOT:= u-boot.itb
+endif
ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y)
CONFIG:= Bananapro_defconfig
UBOOT:= u-boot-sunxi-with-spl.bin
endif
+ifeq ($(ADK_TARGET_SYSTEM_BANANA_P2_ZERO),y)
+CONFIG:= bananapi_m2_p2_zero_defconfig
+UBOOT:= u-boot-sunxi-with-spl.bin
+endif
ifeq ($(ADK_TARGET_SYSTEM_ORANGE_PI0),y)
CONFIG:= orangepi_zero_defconfig
UBOOT:= u-boot-sunxi-with-spl.bin
@@ -70,6 +78,18 @@ ifeq ($(ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK),y)
CONFIG:= am335x_evm_defconfig
UBOOT:= u-boot.img
endif
+ifeq ($(ADK_TARGET_SYSTEM_IMGTEC_CI20),y)
+CONFIG:= ci20_mmc_defconfig
+UBOOT:= u-boot-dtb.img
+endif
+ifeq ($(ADK_TARGET_SYSTEM_ST_STM32F746G),y)
+CONFIG:= stm32f746-disco_defconfig
+UBOOT:= u-boot-dtb.bin
+endif
+ifeq ($(ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2),y)
+CONFIG:= starfive_visionfive2_defconfig
+UBOOT:= u-boot.itb
+endif
HOST_MAKE_FLAGS+= HOSTCFLAGS="$(HOST_CPPFLAGS) $(HOST_CFLAGS)" \
HOSTLDFLAGS="$(HOST_LDFLAGS) -ldl"
@@ -78,6 +98,10 @@ CONFIG_STYLE:= manual
BUILD_STYLE:= manual
INSTALL_STYLE:= manual
+ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
+EXTRA_CFLAGS:= -mno-fdpic
+endif
+
host-build:
(cd $(WRKBUILD) && env $(HOST_MAKE_ENV) $(MAKE) -f $(MAKE_FILE) \
$(HOST_MAKE_FLAGS) sandbox_defconfig )
@@ -93,28 +117,42 @@ do-configure:
do-build:
(cd $(WRKBUILD) && env \
+ PKG_CONFIG="$(STAGING_HOST_DIR)/usr/bin/pkg-config" \
+ PKG_CONFIG_LIBDIR="$(STAGING_HOST_DIR)/lib/pkgconfig:$(STAGING_HOST_DIR)/share/pkgconfig" \
+ KBUILD_VERBOSE=1 \
+ KCFLAGS='$(EXTRA_CFLAGS)' \
PATH='$(HOST_PATH)' \
CROSS_COMPILE='$(TARGET_CROSS)' \
+ OPENSBI="$(FW_DIR)/fw_dynamic.bin" \
$(MAKE))
-ifneq ($(OS_FOR_BUILD),Darwin)
(cd $(WRKBUILD) && env \
PATH='$(HOST_PATH)' \
CROSS_COMPILE='$(TARGET_CROSS)' \
- $(MAKE) env)
-endif
+ $(MAKE) envtools)
u-boot-install:
$(CP) $(WRKBUILD)/$(UBOOT) $(FW_DIR)
$(INSTALL_DIR) $(IDIR_U_BOOT)/etc
$(CP) ./files/fw_env.config $(IDIR_U_BOOT)/etc
-ifneq ($(OS_FOR_BUILD),Darwin)
$(INSTALL_DIR) $(IDIR_U_BOOT)/usr/bin
- $(INSTALL_BIN) ./files/uboot_print_env $(IDIR_U_BOOT)/usr/bin
- $(INSTALL_BIN) ./files/uboot_set_env $(IDIR_U_BOOT)/usr/bin
+ $(INSTALL_BIN) $(WRKBUILD)/tools/env/fw_printenv \
+ $(IDIR_U_BOOT)/usr/bin
+ cd $(IDIR_U_BOOT)/usr/bin && ln -fs fw_printenv fw_setenv
+ifeq ($(ADK_TARGET_SYSTEM_ROCKPI4_PLUS),y)
+ $(CP) $(WRKBUILD)/idbloader.img $(FW_DIR)
+endif
+ifeq ($(ADK_TARGET_SYSTEM_IMGTEC_CI20),y)
+ $(CP) $(WRKBUILD)/spl/u-boot-spl.bin $(FW_DIR)
endif
ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y)
$(INSTALL_BIN) ./files/boot.script.bpi $(FW_DIR)
endif
+ifeq ($(ADK_TARGET_SYSTEM_BANANA_P2_ZERO),y)
+ $(INSTALL_BIN) ./files/boot.script.bpizero $(FW_DIR)
+endif
+ifeq ($(ADK_TARGET_SYSTEM_ROCKPI4_PLUS),y)
+ $(INSTALL_BIN) ./files/boot.script.rockpi4 $(FW_DIR)
+endif
ifeq ($(ADK_TARGET_SYSTEM_ORANGE_PI0),y)
$(INSTALL_BIN) ./files/boot.script.opi $(FW_DIR)
endif
@@ -133,6 +171,9 @@ ifeq ($(ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK),y)
$(CP) ./files/uEnv.txt.bbb $(FW_DIR)/uEnv.txt
$(INSTALL_BIN) $(WRKBUILD)/MLO $(FW_DIR)
endif
+ifeq ($(ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2),y)
+ $(CP) $(WRKBUILD)/spl/u-boot-spl.bin.normal.out $(FW_DIR)
+endif
include $(ADK_TOPDIR)/mk/host-bottom.mk
include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/u-boot/files/boot.script.bpizero b/package/u-boot/files/boot.script.bpizero
new file mode 100644
index 000000000..1d7893b49
--- /dev/null
+++ b/package/u-boot/files/boot.script.bpizero
@@ -0,0 +1,4 @@
+setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait
+ext4load mmc 0:1 $fdt_addr_r boot/${fdtfile}
+ext4load mmc 0:1 $kernel_addr_r boot/kernel
+bootz $kernel_addr_r - $fdt_addr_r
diff --git a/package/u-boot/files/boot.script.imx6 b/package/u-boot/files/boot.script.imx6
index 24d1b2a93..0a4ff9fd9 100644
--- a/package/u-boot/files/boot.script.imx6
+++ b/package/u-boot/files/boot.script.imx6
@@ -1,4 +1,4 @@
-setenv bootargs 'console=ttymxc0,115200 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 root=/dev/mmcblk0p1'
-ext4load mmc 0:1 0x18000000 boot/${fdtfile}
-ext4load mmc 0:1 0x10800000 boot/kernel
+setenv bootargs 'console=ttymxc0,115200 video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32 root=/dev/mmcblk1p1 rootwait'
+ext4load mmc 1:1 0x18000000 boot/${fdtfile}
+ext4load mmc 1:1 0x10800000 boot/kernel
bootz 0x10800000 - 0x18000000
diff --git a/package/u-boot/files/boot.script.rockpi4 b/package/u-boot/files/boot.script.rockpi4
new file mode 100644
index 000000000..c74916170
--- /dev/null
+++ b/package/u-boot/files/boot.script.rockpi4
@@ -0,0 +1,4 @@
+setenv bootargs console=tty0 console=ttyS2,115200 root=/dev/mmcblk0p1 rootwait
+ext4load mmc 1:1 $kernel_addr_r boot/kernel
+ext4load mmc 1:1 $fdt_addr_r boot/rk3399-rock-pi-4b-plus.dtb
+booti $kernel_addr_r - $fdt_addr_r
diff --git a/package/u-boot/files/fw_env.config b/package/u-boot/files/fw_env.config
index 5571d60e0..8fd738b4e 100644
--- a/package/u-boot/files/fw_env.config
+++ b/package/u-boot/files/fw_env.config
@@ -1 +1 @@
-/mnt/uboot.env 0x0000 0x4000
+/dev/mmcblk1 0x3F8000 0x8000
diff --git a/package/u-boot/files/uboot_print_env b/package/u-boot/files/uboot_print_env
deleted file mode 100755
index 7231e1a47..000000000
--- a/package/u-boot/files/uboot_print_env
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-mount -r /dev/mmcblk0p1 /mnt
-fw_printenv "$@"
-umount /mnt
diff --git a/package/u-boot/files/uboot_set_env b/package/u-boot/files/uboot_set_env
deleted file mode 100755
index 7b5a33ccc..000000000
--- a/package/u-boot/files/uboot_set_env
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-mount /dev/mmcblk0p1 /mnt
-fw_setenv "$@"
-umount /mnt
diff --git a/package/u-boot/patches/patch-configs_bananapi_m2_p2_zero_defconfig b/package/u-boot/patches/patch-configs_bananapi_m2_p2_zero_defconfig
new file mode 100644
index 000000000..c9761d409
--- /dev/null
+++ b/package/u-boot/patches/patch-configs_bananapi_m2_p2_zero_defconfig
@@ -0,0 +1,18 @@
+--- u-boot-2022.10.orig/configs/bananapi_m2_p2_zero_defconfig 1970-01-01 00:00:00.000000000 +0100
++++ u-boot-2022.10/configs/bananapi_m2_p2_zero_defconfig 2022-12-25 07:59:45.852731211 +0100
+@@ -0,0 +1,15 @@
++CONFIG_ARM=y
++CONFIG_ARCH_SUNXI=y
++# CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-bananapi-m2-plus-v1.2"
++CONFIG_DEFAULT_DEVICE_TREE="sun8i-h2-plus-bananapi-m2-zero"
++CONFIG_SPL=y
++CONFIG_MACH_SUN8I_H3=y
++CONFIG_DRAM_CLK=408
++CONFIG_MMC0_CD_PIN=""
++CONFIG_MMC_SUNXI_SLOT_EXTRA=2
++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
++CONFIG_PREBOOT=""
++# CONFIG_SYS_DEVICE_NULLDEV is not set
++CONFIG_SPL_STACK=0x8000
++CONFIG_SYS_PBSIZE=1024
++CONFIG_SUN8I_EMAC=y
diff --git a/package/u-boot/patches/patch-configs_rock-pi-4-rk3399_defconfig b/package/u-boot/patches/patch-configs_rock-pi-4-rk3399_defconfig
new file mode 100644
index 000000000..818529353
--- /dev/null
+++ b/package/u-boot/patches/patch-configs_rock-pi-4-rk3399_defconfig
@@ -0,0 +1,11 @@
+--- u-boot-2023.07.02.orig/configs/rock-pi-4-rk3399_defconfig 2023-07-11 17:20:44.000000000 +0200
++++ u-boot-2023.07.02/configs/rock-pi-4-rk3399_defconfig 2023-09-29 15:54:05.235780393 +0200
+@@ -70,7 +70,7 @@ CONFIG_REGULATOR_PWM=y
+ CONFIG_REGULATOR_RK8XX=y
+ CONFIG_PWM_ROCKCHIP=y
+ CONFIG_RAM_ROCKCHIP_LPDDR4=y
+-CONFIG_BAUDRATE=1500000
++CONFIG_BAUDRATE=115200
+ CONFIG_DEBUG_UART_SHIFT=2
+ CONFIG_SYS_NS16550_MEM32=y
+ CONFIG_SYSRESET=y
diff --git a/package/u-boot/patches/patch-configs_rock-pi-4c-rk3399_defconfig b/package/u-boot/patches/patch-configs_rock-pi-4c-rk3399_defconfig
new file mode 100644
index 000000000..87e4bd238
--- /dev/null
+++ b/package/u-boot/patches/patch-configs_rock-pi-4c-rk3399_defconfig
@@ -0,0 +1,11 @@
+--- u-boot-2023.07.02.orig/configs/rock-pi-4c-rk3399_defconfig 2023-07-11 17:20:44.000000000 +0200
++++ u-boot-2023.07.02/configs/rock-pi-4c-rk3399_defconfig 2023-09-29 15:54:16.927583546 +0200
+@@ -67,7 +67,7 @@ CONFIG_REGULATOR_PWM=y
+ CONFIG_REGULATOR_RK8XX=y
+ CONFIG_PWM_ROCKCHIP=y
+ CONFIG_RAM_ROCKCHIP_LPDDR4=y
+-CONFIG_BAUDRATE=1500000
++CONFIG_BAUDRATE=115200
+ CONFIG_DEBUG_UART_SHIFT=2
+ CONFIG_SYS_NS16550_MEM32=y
+ CONFIG_SYSRESET=y
diff --git a/package/u-boot/patches/patch-tools_Makefile b/package/u-boot/patches/patch-tools_Makefile
new file mode 100644
index 000000000..fc284ad58
--- /dev/null
+++ b/package/u-boot/patches/patch-tools_Makefile
@@ -0,0 +1,11 @@
+--- u-boot-2024.01.orig/tools/Makefile 2024-01-08 16:37:48.000000000 +0100
++++ u-boot-2024.01/tools/Makefile 2024-01-17 17:56:21.004096375 +0100
+@@ -250,7 +250,7 @@ HOSTLDLIBS_mkeficapsule += \
+ $(shell pkg-config --libs gnutls 2> /dev/null || echo "-lgnutls")
+ HOSTLDLIBS_mkeficapsule += \
+ $(shell pkg-config --libs uuid 2> /dev/null || echo "-luuid")
+-hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule
++#hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule
+
+ mkfwumdata-objs := mkfwumdata.o generated/lib/crc32.o
+ HOSTLDLIBS_mkfwumdata += -luuid
diff --git a/package/u-boot/src/bl31.elf b/package/u-boot/src/bl31.elf
new file mode 100644
index 000000000..24cb666c7
--- /dev/null
+++ b/package/u-boot/src/bl31.elf
Binary files differ
diff --git a/package/uacme/Makefile b/package/uacme/Makefile
new file mode 100644
index 000000000..6db80991e
--- /dev/null
+++ b/package/uacme/Makefile
@@ -0,0 +1,30 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= uacme
+PKG_VERSION:= 1.7.4
+PKG_RELEASE:= 1
+PKG_HASH:= 0fd3e35218d575321e70dc3489ec3463d015c56c138e99e5add32ab7e5a48d09
+PKG_DESCR:= acme client written in c
+PKG_BUILDDEP:= curl gnutls
+PKG_DEPENDS:= libcurl libgnutls
+PKG_SECTION:= app/crypto
+PKG_SITES:= https://github.com/ndilieto/uacme/archive/refs/tags/
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,UACME,uacme,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+AUTOTOOL_STYLE:= autoreconf
+CONFIGURE_ARGS+= --disable-docs
+
+uacme-install:
+ $(INSTALL_DIR) $(IDIR_UACME)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/uacme \
+ $(IDIR_UACME)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/uclibc-ng-test/Makefile b/package/uclibc-ng-test/Makefile
index 09472778b..44a7e9cde 100644
--- a/package/uclibc-ng-test/Makefile
+++ b/package/uclibc-ng-test/Makefile
@@ -14,14 +14,18 @@ PKG_SITES:= https://git.uclibc-ng.org/git/uclibc-ng-test.git
PKG_NOPARALLEL:= 1
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
+
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,UCLIBC_NG_TEST,uclibc-ng-test,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
CONFIG_STYLE:= manual
-# disable math tests
-XAKE_FLAGS+= NO_MATH=1
+XAKE_FLAGS+= V=1
+ifeq ($(ADK_TARGET_LIB_GLIBC),y)
+XAKE_FLAGS+= NO_CRYPT=1
+endif
ifeq ($(ADK_TARGET_LIB_MUSL),y)
XAKE_FLAGS+= NO_MATH=1
endif
@@ -40,11 +44,18 @@ endif
ifeq ($(ADK_TARGET_LIBC_WITH_LOCALE),)
XAKE_FLAGS+= NO_LOCALE=1
endif
+ifeq ($(ADK_TARGET_ARCH_KVX),y)
+XAKE_FLAGS+= NO_TLS=1
+endif
+ifeq ($(ADK_TARGET_WITH_MMU),)
+XAKE_FLAGS+= NO_NPTL=1
+endif
uclibc-ng-test-install:
${INSTALL_DIR} ${IDIR_UCLIBC_NG_TEST}/etc
echo '00:11:22:33:44:55 teeth' > ${IDIR_UCLIBC_NG_TEST}/etc/ethers
${INSTALL_DIR} ${IDIR_UCLIBC_NG_TEST}/usr/lib
${CP} $(WRKINST)/usr/lib/* ${IDIR_UCLIBC_NG_TEST}/usr/lib/
+ -find $(IDIR_UCLIBC_NG_TEST) -name \*.gdb -delete
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/uclibc-ng/Makefile b/package/uclibc-ng/Makefile
index ccc5846a1..c1f2215c4 100644
--- a/package/uclibc-ng/Makefile
+++ b/package/uclibc-ng/Makefile
@@ -31,6 +31,10 @@ uclibc-ng-install:
-$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc*.so* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-$(CP) $(STAGING_TARGET_DIR)/lib/libc.so.* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-$(CP) $(STAGING_TARGET_DIR)/lib/libuClibc-*.so $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
+ifeq ($(ADK_TARGET_BINFMT_ELF)$(ADK_TARGET_WITH_MMU),y)
+ $(CP) $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)/${PKG_NAME}-${PKG_VERSION}/lib/ld*-uClibc*.so* \
+ $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
+endif
ifeq ($(ADK_TARGET_ARCH_CSKY),y)
cd $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH) && \
ln -sf ld-uClibc.so.0 ld.so.1
@@ -46,13 +50,15 @@ endif
uclibc-ng-dev-install:
${INSTALL_DIR} ${IDIR_UCLIBC_NG_DEV}/usr/lib ${IDIR_UCLIBC_NG_DEV}/$(ADK_TARGET_LIBC_PATH)
+ ${INSTALL_DIR} ${IDIR_UCLIBC_NG_DEV}/usr/include
-${CP} ${STAGING_TARGET_DIR}/usr/lib/libc.so ${IDIR_UCLIBC_NG_DEV}/usr/lib
-${CP} ${STAGING_TARGET_DIR}/usr/lib/uclibc_nonshared.a ${IDIR_UCLIBC_NG_DEV}/usr/lib
+ -${CP} ${STAGING_TARGET_DIR}/usr/lib/libpthread_nonshared.a ${IDIR_UCLIBC_NG_DEV}/usr/lib
${CP} ${STAGING_TARGET_DIR}/usr/lib/crt*.o ${IDIR_UCLIBC_NG_DEV}/usr/lib
${KERNEL_MAKE} INSTALL_HDR_PATH=$(IDIR_UCLIBC_NG_DEV)/usr headers_install
$(MAKE) -C $(TOOLCHAIN_BUILD_DIR)/w-$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)/${PKG_NAME}-${PKG_VERSION} \
PREFIX=$(IDIR_UCLIBC_NG_DEV)/ \
- DEVEL_PREFIX=/usr \
+ DEVEL_PREFIX=/usr/ \
RUNTIME_PREFIX=$(IDIR_UCLIBC_NG_DEV)/ \
HOSTCC="$(CC_FOR_BUILD)" \
CPU_CFLAGS="$(TARGET_CFLAGS)" \
diff --git a/package/udp-broadcast-relay/Makefile b/package/udp-broadcast-relay/Makefile
index adfeafa79..0ce033403 100644
--- a/package/udp-broadcast-relay/Makefile
+++ b/package/udp-broadcast-relay/Makefile
@@ -4,15 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= udp-broadcast-relay
-PKG_VERSION:= 0.3
+PKG_VERSION:= 9a0f13b4b5938bfe0af0d0d4e99dfc127c068e28
PKG_RELEASE:= 1
-PKG_HASH:= 86acb9a359cad1961bdd4be9ae425222c19fd70fc31c730bd2b96629eaba2177
+PKG_GIT:= hash
PKG_DESCR:= listens for packets on a specified udp broadcast port
PKG_SECTION:= net/misc
PKG_URL:= http://www.joachim-breitner.de/udp-broadcast-relay/
-PKG_SITES:= http://www.joachim-breitner.de/udp-broadcast-relay/files/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_SITES:= https://github.com/nomeata/udp-broadcast-relay.git
include ${ADK_TOPDIR}/mk/package.mk
diff --git a/package/udp-broadcast-relay/patches/patch-main_c b/package/udp-broadcast-relay/patches/patch-main_c
deleted file mode 100644
index f57fb0409..000000000
--- a/package/udp-broadcast-relay/patches/patch-main_c
+++ /dev/null
@@ -1,32 +0,0 @@
-$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
---- udp-broadcast-relay-0.3.orig/main.c 2003-09-28 16:43:32.000000000 +0200
-+++ udp-broadcast-relay-0.3/main.c 2008-10-15 16:04:02.000000000 +0200
-@@ -220,8 +220,8 @@ main(int argc,char **argv)
- }
-
- /* Save the address for later use */
-- bcopy( (struct sockaddr_in *)&reqbuf.ifr_addr,
-- &ifs[maxifs].dstaddr,
-+ memcpy( &ifs[maxifs].dstaddr,
-+ (struct sockaddr_in *)&reqbuf.ifr_addr,
- sizeof(struct sockaddr_in) );
-
- DPRINT("%s: %i / %s\n",
-@@ -349,7 +349,7 @@ main(int argc,char **argv)
- DPRINT("From:\t\t%s:%d\n",inet_ntoa(rcv_addr.sin_addr),rcv_addr.sin_port);
-
- /* copy sender's details into our datagram as the source addr */
-- bcopy(&(rcv_addr.sin_addr.s_addr),(gram+12),4);
-+ memcpy((gram+12),&(rcv_addr.sin_addr.s_addr),4);
- *(u_short*)(gram+20)=(u_short)rcv_addr.sin_port;
-
- /* set the length of the packet */
-@@ -362,7 +362,7 @@ main(int argc,char **argv)
- if (ifs[x].ifindex == rcv_ifindex) continue; /* no bounces, please */
-
- /* Set destination addr ip - port is set already*/
-- bcopy(&(ifs[x].dstaddr.sin_addr.s_addr),(gram+16),4);
-+ memcpy((gram+16),&(ifs[x].dstaddr.sin_addr.s_addr),4);
-
- DPRINT ("Sent to %s:%d on interface %i\n",
- inet_ntoa(ifs[x].dstaddr.sin_addr), /* dst ip */
diff --git a/package/urlgrabber/Makefile b/package/urlgrabber/Makefile
deleted file mode 100644
index 1b2a32726..000000000
--- a/package/urlgrabber/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= urlgrabber
-PKG_VERSION:= 3.10
-PKG_RELEASE:= 1
-PKG_HASH:= 151474dcba8ad99a98eb1f18873bd888e8bfd68fd71a280991899e932689dc89
-PKG_DESCR:= python module for fetching of files
-PKG_SECTION:= dev/python
-PKG_BUILDDEP:= pycurl
-PKG_DEPENDS:= pycurl
-PKG_URL:= http://urlgrabber.baseurl.org/
-PKG_SITES:= http://urlgrabber.baseurl.org/download/
-
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,URLGRABBER,urlgrabber,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIG_STYLE:= manual
-BUILD_STYLE:= manual
-INSTALL_STYLE:= manual
-
-include $(ADK_TOPDIR)/mk/python.mk
-
-do-build:
- (cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py build)
- (cd $(WRKBUILD); env PYTHONPATH=$(PYTHON_LIBDIR) $(PYTHON) ./setup.py install --prefix="$(WRKINST)/usr")
-
-do-install:
- $(INSTALL_DIR) $(IDIR_URLGRABBER)/usr/lib/python$(PYTHON_VERSION)/site-packages
- $(CP) $(WRKINST)/usr/lib/python$(PYTHON_VERSION)/site-packages/* \
- $(IDIR_URLGRABBER)/usr/lib/python$(PYTHON_VERSION)/site-packages
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/urlgrabber/patches/patch-setup_py b/package/urlgrabber/patches/patch-setup_py
deleted file mode 100644
index f33080823..000000000
--- a/package/urlgrabber/patches/patch-setup_py
+++ /dev/null
@@ -1,24 +0,0 @@
---- urlgrabber-3.9.1.orig/setup.py 2009-02-23 22:37:16.000000000 +0100
-+++ urlgrabber-3.9.1/setup.py 2013-02-11 13:46:37.000000000 +0100
-@@ -1,16 +1,16 @@
- # urlgrabber distutils setup
- import re as _re
--import urlgrabber as _urlgrabber
-+#import urlgrabber as _urlgrabber
-
- name = "urlgrabber"
- description = "A high-level cross-protocol url-grabber"
--long_description = _urlgrabber.__doc__
-+long_description = "A high-level cross-protocol url-grabber"
- license = "LGPL"
--version = _urlgrabber.__version__
--_authors = _re.split(r',\s+', _urlgrabber.__author__)
-+version = "3.9.1"
-+_authors = _re.split(r',\s+', 'Michael D. Stenner, Ryan Tomayko')
- author = ', '.join([_re.sub(r'\s+<.*', r'', _) for _ in _authors])
- author_email = ', '.join([_re.sub(r'(^.*<)|(>.*$)', r'', _) for _ in _authors])
--url = _urlgrabber.__url__
-+url = "http://linux.duke.edu/projects/urlgrabber/"
-
- packages = ['urlgrabber']
- package_dir = {'urlgrabber':'urlgrabber'}
diff --git a/package/util-linux/Makefile b/package/util-linux/Makefile
index f69ca613c..7d2510443 100644
--- a/package/util-linux/Makefile
+++ b/package/util-linux/Makefile
@@ -4,14 +4,14 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= util-linux
-PKG_VERSION:= 2.36
+PKG_VERSION:= 2.39.3
PKG_RELEASE:= 1
-PKG_HASH:= 9e4b1c67eb13b9b67feb32ae1dc0d50e08ce9e5d82e1cccd0ee771ad2fa9e0b1
+PKG_HASH:= 7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f
PKG_DESCR:= basic utilities
PKG_SECTION:= base/apps
PKG_BUILDDEP:= ncurses
PKG_NEEDS:= threads
-PKG_SITES:= http://www.kernel.org/pub/linux/utils/util-linux/v$(PKG_VERSION)/
+PKG_SITES:= http://www.kernel.org/pub/linux/utils/util-linux/v2.39/
PKG_OPTS:= dev
PKG_SUBPKGS:= FDISK AGETTY SFDISK SWAP_UTILS LOSETUP MCOOKIE MOUNT
@@ -151,8 +151,8 @@ mount-install:
$(INSTALL_BIN) $(WRKINST)/usr/bin/{u,}mount $(IDIR_MOUNT)/bin
mcookie-install:
- $(INSTALL_DIR) $(IDIR_MCOOKIE)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/mcookie $(IDIR_MCOOKIE)/usr/bin
+ $(INSTALL_DIR) $(IDIR_MCOOKIE)/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/mcookie $(IDIR_MCOOKIE)/bin
libuuid-install:
$(INSTALL_DIR) $(IDIR_LIBUUID)/usr/lib
diff --git a/package/v4l-utils/Makefile b/package/v4l-utils/Makefile
index 936b26546..a18b8574c 100644
--- a/package/v4l-utils/Makefile
+++ b/package/v4l-utils/Makefile
@@ -4,19 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= v4l-utils
-PKG_VERSION:= 1.10.1
+PKG_VERSION:= 1.26.1
PKG_RELEASE:= 1
-PKG_HASH:= 6147ccc29fe7dd3c5c3994d613c4f2a099bac8b44694a96e5cf4d7caca8336c0
+PKG_HASH:= 4a71608c0ef7df2931176989e6d32b445c0bdc1030a2376d929c8ca6e550ec4e
PKG_DESCR:= video4linux utilities
PKG_SECTION:= mm/video
PKG_BUILDDEP:= libjpeg-turbo
-PKG_SITES:= http://linuxtv.org/downloads/v4l-utils/
+PKG_SITES:= https://www.linuxtv.org/downloads/v4l-utils/
+PKG_NEEDS:= intl
PKG_LIBNAME:= libv4l
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
-PKG_LIBC_DEPENDS:= glibc
PKG_SUBPKGS:= V4L_UTILS LIBV4L
PKGSC_LIBV4L:= libs/video
PKGSD_LIBV4L:= Video4Linux2 libraries
@@ -26,8 +24,14 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,V4L_UTILS,v4l-utils,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
$(eval $(call PKG_template,LIBV4L,libv4l,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIBV4L},${PKGSC_LIBV4L},${PKG_OPTS}))
-CONFIGURE_ARGS+= --disable-qv4l2
TARGET_CPPFLAGS+= -DLINUX_I2C_DEV_H
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+MESON_FLAGS+= -Dgconv=disabled
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
v4l-utils-install:
$(INSTALL_DIR) $(IDIR_V4L_UTILS)/usr/bin
diff --git a/package/v4l-utils/patches/patch-utils_rds_rds-saa6588_c b/package/v4l-utils/patches/patch-utils_rds_rds-saa6588_c
deleted file mode 100644
index ddd779080..000000000
--- a/package/v4l-utils/patches/patch-utils_rds_rds-saa6588_c
+++ /dev/null
@@ -1,15 +0,0 @@
---- v4l-utils-0.9.3.orig/utils/rds/rds-saa6588.c 2012-05-10 20:10:34.000000000 +0200
-+++ v4l-utils-0.9.3/utils/rds/rds-saa6588.c 2013-07-12 17:53:04.000000000 +0200
-@@ -12,8 +12,12 @@
- #include <errno.h>
- #include <sys/ioctl.h>
- #include <linux/types.h>
-+#ifdef LINUX_I2C_DEV_H
-+#include <linux/i2c-dev.h>
-+#else
- #include <linux/i2c.h>
- #include <linux/i2c-dev.h>
-+#endif
-
- int debug;
-
diff --git a/package/valgrind/Makefile b/package/valgrind/Makefile
index 6e3f3b4d3..10e7b35fc 100644
--- a/package/valgrind/Makefile
+++ b/package/valgrind/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= valgrind
-PKG_VERSION:= 3.13.0
+PKG_VERSION:= 3.22.0
PKG_RELEASE:= 1
-PKG_HASH:= d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b
+PKG_HASH:= c811db5add2c5f729944caf47c4e7a65dcaabb9461e472b578765dd7bf6d2d4c
PKG_DESCR:= memory management debugging tool
PKG_SECTION:= app/debug
PKG_URL:= http://valgrind.org/
@@ -20,7 +20,6 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,VALGRIND,valgrind,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
ifeq ($(ADK_TARGET_LIB_MUSL),y)
TARGET_CPPFLAGS+= -D__MUSL__
endif
@@ -28,12 +27,22 @@ CONFIGURE_ENV+= ac_cv_file__proc_self_fd=yes \
ac_cv_file__proc_self_exe=yes \
ac_cv_file__proc_self_maps=yes
+ifeq ($(ADK_TARGET_ARCH_ARM),y)
+CONFIGURE_ARGS+= --host=$(patsubst arm-%,armv7-%,$(GNU_TARGET_NAME))
+endif
+
valgrind-install:
$(INSTALL_DIR) $(IDIR_VALGRIND)/usr/bin
$(INSTALL_DIR) $(IDIR_VALGRIND)/usr/lib/valgrind
+ $(INSTALL_DIR) $(IDIR_VALGRIND)/usr/libexec/valgrind
$(INSTALL_BIN) $(WRKINST)/usr/bin/valgrind $(IDIR_VALGRIND)/usr/bin/
+ $(INSTALL_BIN) $(WRKBUILD)/memcheck/memcheck-*-linux \
+ $(IDIR_VALGRIND)/usr/libexec/valgrind
+ $(CP) $(WRKINST)/usr/libexec/valgrind/default.supp \
+ $(IDIR_VALGRIND)/usr/libexec/valgrind
+ $(CP) $(WRKINST)/usr/libexec/valgrind/*.so \
+ $(IDIR_VALGRIND)/usr/libexec/valgrind
$(CP) $(WRKINST)/usr/lib/valgrind/* \
$(IDIR_VALGRIND)/usr/lib/valgrind
- touch $(IDIR_VALGRIND)/usr/lib/valgrind/default.supp
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/vilistextum/Makefile b/package/vilistextum/Makefile
index eaacb135d..400997d23 100644
--- a/package/vilistextum/Makefile
+++ b/package/vilistextum/Makefile
@@ -17,6 +17,8 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,VILISTEXTUM,vilistextum,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_CFLAGS+= -fcommon
+
vilistextum-install:
${INSTALL_DIR} ${IDIR_VILISTEXTUM}/usr/bin
${INSTALL_BIN} ${WRKINST}/usr/bin/vilistextum \
diff --git a/package/vim/Makefile b/package/vim/Makefile
index 3cf92eab3..7169cf883 100644
--- a/package/vim/Makefile
+++ b/package/vim/Makefile
@@ -4,18 +4,19 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= vim
-PKG_VERSION:= 8.2
+PKG_VERSION:= 9.1
+PKG_EXTRAVER:= 0041
PKG_RELEASE:= 1
-PKG_HASH:= f087f821831b4fece16a0461d574ccd55a8279f64d635510a1e10225966ced3b
+PKG_HASH:= 1531eb2f9a42e3e5a0c5579e26d9a376bd85f7062701c727af482d8597c59592
PKG_DESCR:= very popular text editor
PKG_SECTION:= app/editor
PKG_DEPENDS:= libncurses
PKG_BUILDDEP:= ncurses
PKG_URL:= http://www.vim.org/
-PKG_SITES:= ftp://ftp.vim.org/pub/vim/unix/
+PKG_SITES:= https://github.com/vim/vim/archive/refs/tags/
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-WRKDIST= ${WRKDIR}/vim82
+DISTFILES:= v${PKG_VERSION}.${PKG_EXTRAVER}.tar.gz
+WRKDIST= ${WRKDIR}/$(PKG_NAME)-$(PKG_VERSION).$(PKG_EXTRAVER)
WRKSRC= ${WRKDIST}/src
include ${ADK_TOPDIR}/mk/package.mk
@@ -40,10 +41,7 @@ CONFIGURE_ARGS+= --disable-darwin \
--disable-tclinterp \
--disable-rubyinterp \
--disable-cscope \
- --disable-workshop \
--disable-netbeans \
- --disable-sniff \
- --disable-hangulinput \
--disable-xim \
--disable-fontset \
--disable-gui \
@@ -61,9 +59,9 @@ vim-install:
${INSTALL_DIR} ${IDIR_VIM}/usr/bin
${INSTALL_DIR} ${IDIR_VIM}/usr/share/vim
${CP} ${WRKINST}/usr/bin/{ex,vim,view} ${IDIR_VIM}/usr/bin
- ${CP} ${WRKINST}/usr/share/vim/vim82/defaults.vim \
+ ${CP} ${WRKINST}/usr/share/vim/vim91/defaults.vim \
${IDIR_VIM}/usr/share/vim/
- ${CP} ${WRKINST}/usr/share/vim/vim82/vimrc_example.vim \
+ ${CP} ${WRKINST}/usr/share/vim/vim91/vimrc_example.vim \
${IDIR_VIM}/usr/share/vim/vimrc
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/vlc/Makefile b/package/vlc/Makefile
index a5395b879..ccf59458d 100644
--- a/package/vlc/Makefile
+++ b/package/vlc/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= vlc
-PKG_VERSION:= 2.2.6
+PKG_VERSION:= 3.0.20
PKG_RELEASE:= 1
-PKG_HASH:= c403d3accd9a400eb2181c958f3e7bc5524fe5738425f4253d42883b425a42a8
+PKG_HASH:= adc7285b4d2721cddf40eb5270cada2aaa10a334cb546fd55a06353447ba29b5
PKG_DESCR:= popular media player
PKG_SECTION:= mm/video
PKG_DEPENDS:= libffmpeg xcb-util libgcrypt alsa-lib
@@ -16,16 +16,13 @@ PKG_URL:= http://www.videolan.org/vlc/
PKG_SITES:= http://download.videolan.org/pub/videolan/vlc/$(PKG_VERSION)/
PKG_FLAVOURS_VLC:= WITH_BLURAY WITH_MAD WITH_OGG WITH_OPUS WITH_SPEEX WITH_THEORA
-PKG_FLAVOURS_VLC+= WITH_VPX WITH_MATROSKA
+PKG_FLAVOURS_VLC+= WITH_VPX WITH_X264
PKGFD_WITH_BLURAY:= enable bluray support
PKGFB_WITH_BLURAY:= libbluray
PKGFS_WITH_BLURAY:= libbluray
PKGFD_WITH_MAD:= enable mp3 support
PKGFB_WITH_MAD:= libmad
PKGFS_WITH_MAD:= libmad
-PKGFD_WITH_MATROSKA:= enable matroska support
-PKGFB_WITH_MATROSKA:= libmatroska
-PKGFS_WITH_MATROSKA:= libmatroska
PKGFD_WITH_OGG:= enable ogg support
PKGFB_WITH_OGG:= libogg
PKGFS_WITH_OGG:= libogg
@@ -41,6 +38,9 @@ PKGFS_WITH_THEORA:= libtheora
PKGFD_WITH_VPX:= enable vpx support
PKGFB_WITH_VPX:= libvpx
PKGFS_WITH_VPX:= libvpx
+PKGFD_WITH_X264:= enable h264 support
+PKGFB_WITH_X264:= libx264
+PKGFS_WITH_X264:= libx264
include $(ADK_TOPDIR)/mk/package.mk
@@ -66,7 +66,10 @@ CONFIGURE_ARGS+= --disable-lua \
--enable-libgcrypt \
--disable-optimizations \
--disable-static \
- --disable-avcodec
+ --disable-swscale \
+ --disable-avformat \
+ --disable-avcodec \
+ --disable-mpg123
ifeq ($(ADK_TARGET_ARCH_ARM_WITH_NEON),)
CONFIGURE_ARGS+= --disable-neon
@@ -82,11 +85,6 @@ CONFIGURE_ARGS+= --enable-mad
else
CONFIGURE_ARGS+= --disable-mad
endif
-ifneq ($(ADK_PACKAGE_VLC_WITH_MATROSKA),)
-CONFIGURE_ARGS+= --enable-mkv
-else
-CONFIGURE_ARGS+= --disable-mkv
-endif
ifneq ($(ADK_PACKAGE_VLC_WITH_OGG),)
CONFIGURE_ARGS+= --enable-ogg
else
@@ -112,6 +110,11 @@ CONFIGURE_ARGS+= --enable-vpx
else
CONFIGURE_ARGS+= --disable-vpx
endif
+ifneq ($(ADK_PACKAGE_VLC_WITH_X264),)
+CONFIGURE_ARGS+= --enable-x264
+else
+CONFIGURE_ARGS+= --disable-x264
+endif
vlc-install:
$(INSTALL_DIR) $(IDIR_VLC)/usr/bin
diff --git a/package/vlc/patches/patch-Makefile_am b/package/vlc/patches/patch-Makefile_am
deleted file mode 100644
index b41062e43..000000000
--- a/package/vlc/patches/patch-Makefile_am
+++ /dev/null
@@ -1,11 +0,0 @@
---- vlc-2.2.4.orig/Makefile.am 2015-10-21 19:48:45.000000000 +0200
-+++ vlc-2.2.4/Makefile.am 2016-09-24 20:37:45.255479549 +0200
-@@ -933,7 +933,7 @@ libvlc: libvlccore
- cd lib && $(MAKE) $(AM_MAKEFLAGS) libvlc.la
-
- core: libvlc vlc$(EXEEXT)
-- cd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT) vlc-static$(EXEEXT)
-+ cd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT)
-
- doc:
- cd doc && $(MAKE) $(AM_MAKEFLAGS) doc
diff --git a/package/vlc/patches/patch-bin_Makefile_am b/package/vlc/patches/patch-bin_Makefile_am
deleted file mode 100644
index 5a3ea1bb2..000000000
--- a/package/vlc/patches/patch-bin_Makefile_am
+++ /dev/null
@@ -1,11 +0,0 @@
---- vlc-2.2.4.orig/bin/Makefile.am 2015-02-02 20:42:28.000000000 +0100
-+++ vlc-2.2.4/bin/Makefile.am 2016-09-24 20:37:45.251479394 +0200
-@@ -1,7 +1,7 @@
- # Building vlc
- #
- bin_PROGRAMS = vlc
--noinst_PROGRAMS = vlc-static
-+noinst_PROGRAMS =
- noinst_DATA =
- vlclib_PROGRAMS = vlc-cache-gen
- EXTRA_PROGRAMS = vlc-wrapper
diff --git a/package/vlc/patches/patch-configure_ac b/package/vlc/patches/patch-configure_ac
index ff67e1512..ead8c4c7e 100644
--- a/package/vlc/patches/patch-configure_ac
+++ b/package/vlc/patches/patch-configure_ac
@@ -1,122 +1,11 @@
---- vlc-2.2.6.orig/configure.ac 2017-05-24 12:40:16.000000000 +0200
-+++ vlc-2.2.6/configure.ac 2017-06-06 22:52:45.841013479 +0200
-@@ -24,7 +24,7 @@ AC_CANONICAL_BUILD
- AC_CANONICAL_HOST
- AC_PRESERVE_HELP_ORDER
-
--AM_INIT_AUTOMAKE(tar-ustar color-tests foreign)
-+AM_INIT_AUTOMAKE(tar-ustar color-tests foreign subdir-objects)
- AC_CONFIG_HEADERS([config.h])
-
- # Disable with "./configure --disable-silent-rules" or "make V=1"
-@@ -121,6 +121,7 @@ case "${host_os}" in
- ;;
- linux*)
- SYS=linux
-+ AC_CHECK_LIB([rt], [posix_spawnp], [VLC_ADD_LIBS([libvlccore],[-lrt])], [], [])
- ;;
- bsdi*)
- SYS=bsdi
-@@ -537,7 +538,7 @@ need_libc=false
+--- vlc-3.0.20.orig/configure.ac 2023-10-30 08:25:45.000000000 +0100
++++ vlc-3.0.20/configure.ac 2024-03-03 07:55:57.955760063 +0100
+@@ -631,7 +631,7 @@ dnl Check for system libs needed
+ need_libc=false
dnl Check for usual libc functions
- AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
--AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale])
-+AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale strerror_l stricmp strnicmp strptime uselocale])
- AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp])
- AC_CHECK_FUNCS(fdatasync,,
- [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
-@@ -867,7 +868,7 @@ dnl
- dnl Compiler warnings
- dnl
-
--RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration])
-+RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var])
- RDC_PROG_CC_FLAGS([-pipe])
- AC_LANG_PUSH([C++])
- RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var])
-@@ -2318,7 +2319,7 @@ AC_ARG_ENABLE(avcodec,
- AS_IF([test "${enable_avcodec}" != "no"], [
- PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [
- PKG_CHECK_EXISTS([libavutil < 55],, [
-- AC_MSG_ERROR([libavutil versions 55 and later are not supported.])
-+ AC_MSG_WARN([libavutil versions 55 and later are not supported.])
- ])
- VLC_SAVE_FLAGS
- CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
-@@ -2328,7 +2329,7 @@ AS_IF([test "${enable_avcodec}" != "no"]
- VLC_RESTORE_FLAGS
- have_avcodec="yes"
- ],[
-- AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
-+ AC_MSG_WARN([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.])
- ])
- ], [
- have_avcodec="no"
-@@ -2377,7 +2378,7 @@ AS_IF([test "${have_vaapi}" = "yes" -a "
- case "${avfork}" in
- ffmpeg)
- PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [
-- AC_MSG_ERROR([VA API requires FFmpeg libavcodec < 57.10 or libav.])
-+ AC_MSG_WARN([VA API requires FFmpeg libavcodec < 57.10 or libav.])
- ])
- ;;
- esac
-@@ -2411,7 +2412,7 @@ AS_IF([test "${enable_dxva2}" != "no"],
- case "${avfork}" in
- ffmpeg)
- PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [
-- AC_MSG_ERROR([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.])
-+ AC_MSG_WARN([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.])
- ])
- ;;
- esac
-@@ -2503,7 +2504,7 @@ AS_IF([test "${enable_avformat}" != "no"
- ])
- VLC_RESTORE_FLAGS
- ],[
-- AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
-+ AC_MSG_WARN([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.])
- ])
- ])
- AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"])
-@@ -2532,7 +2533,7 @@ then
- ])
- VLC_RESTORE_FLAGS
- ],[
-- AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
-+ AC_MSG_WARN([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.])
- ])
- fi
-
-@@ -3175,7 +3176,7 @@ AS_IF([test "${have_vdpau}" = "yes" -a "
- libav) av_vdpau_ver="55.26.0" ;;
- ffmpeg) av_vdpau_ver="55.42.100"
- PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [
-- AC_MSG_ERROR([VDPAU requires FFmpeg libavcodec < 57.10 or libav.])
-+ AC_MSG_WARN([VDPAU requires FFmpeg libavcodec < 57.10 or libav.])
- ])
- ;;
- esac
-@@ -4056,16 +4057,17 @@ dnl
- AC_ARG_ENABLE(libgcrypt,
- [ --disable-libgcrypt gcrypt support (default enabled)])
- AS_IF([test "${enable_libgcrypt}" != "no"], [
-+ AC_PATH_PROG([GCRYPT_CONFIG],[libgcrypt-config],[libgcrypt-config])
- AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [
-- libgcrypt-config --version >/dev/null || \
-+ ${GCRYPT_CONFIG} --version >/dev/null || \
- AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found])
- AC_CHECK_LIB(gcrypt, gcry_control, [
- have_libgcrypt="yes"
-- GCRYPT_CFLAGS="`libgcrypt-config --cflags`"
-- GCRYPT_LIBS="`libgcrypt-config --libs`"
-+ GCRYPT_CFLAGS="`${GCRYPT_CONFIG} --cflags`"
-+ GCRYPT_LIBS="`${GCRYPT_CONFIG} --libs`"
- ], [
- AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.])
-- ], [`libgcrypt-config --libs`])
-+ ], [`${GCRYPT_CONFIG} --libs`])
- ], [
- AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.])
- ], [#include <gcrypt.h>]
+-AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale])
++AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale strerror_l stricmp strnicmp strptime uselocale])
+ AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf])
+ AC_REPLACE_FUNCS([gettimeofday])
+ AC_CHECK_FUNC(fdatasync,,
diff --git a/package/vlc/patches/patch-include_vlc_fixups_h b/package/vlc/patches/patch-include_vlc_fixups_h
deleted file mode 100644
index 968f8d8eb..000000000
--- a/package/vlc/patches/patch-include_vlc_fixups_h
+++ /dev/null
@@ -1,15 +0,0 @@
---- vlc-2.2.6.orig/include/vlc_fixups.h 2015-04-13 21:54:35.000000000 +0200
-+++ vlc-2.2.6/include/vlc_fixups.h 2017-06-06 22:56:59.837313883 +0200
-@@ -239,8 +239,10 @@ static inline locale_t newlocale(int mas
- }
- #endif
-
--#if !defined (HAVE_STATIC_ASSERT)
--# define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); }))
-+#if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert)
-+# define STATIC_ASSERT_CONCAT_(a, b) a##b
-+# define STATIC_ASSERT_CONCAT(a, b) STATIC_ASSERT_CONCAT_(a, b)
-+# define _Static_assert(x, s) extern char STATIC_ASSERT_CONCAT(static_assert_, __LINE__)[sizeof(struct { unsigned:-!(x); })]
- # define static_assert _Static_assert
- #endif
-
diff --git a/package/vlc/patches/patch-modules_codec_avcodec_audio_c b/package/vlc/patches/patch-modules_codec_avcodec_audio_c
deleted file mode 100644
index 9dfaff716..000000000
--- a/package/vlc/patches/patch-modules_codec_avcodec_audio_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- vlc-2.2.4.orig/modules/codec/avcodec/audio.c 2016-01-18 21:49:57.000000000 +0100
-+++ vlc-2.2.4/modules/codec/avcodec/audio.c 2016-09-24 20:35:02.681191261 +0200
-@@ -39,7 +39,7 @@
- #include <libavcodec/avcodec.h>
- #include <libavutil/mem.h>
-
--#include <libavutil/audioconvert.h>
-+#include <libavutil/channel_layout.h>
-
- #include "avcodec.h"
-
diff --git a/package/vlc/patches/patch-modules_codec_avcodec_encoder_c b/package/vlc/patches/patch-modules_codec_avcodec_encoder_c
deleted file mode 100644
index 3766addf8..000000000
--- a/package/vlc/patches/patch-modules_codec_avcodec_encoder_c
+++ /dev/null
@@ -1,92 +0,0 @@
---- vlc-2.2.4.orig/modules/codec/avcodec/encoder.c 2015-10-21 19:48:45.000000000 +0200
-+++ vlc-2.2.4/modules/codec/avcodec/encoder.c 2016-09-24 20:35:02.681191261 +0200
-@@ -41,7 +41,7 @@
- #include <vlc_cpu.h>
-
- #include <libavcodec/avcodec.h>
--#include <libavutil/audioconvert.h>
-+#include <libavutil/channel_layout.h>
-
- #include "avcodec.h"
- #include "avcommon.h"
-@@ -311,7 +311,7 @@ int OpenEncoder( vlc_object_t *p_this )
- else if( !GetFfmpegCodec( p_enc->fmt_out.i_codec, &i_cat, &i_codec_id,
- &psz_namecodec ) )
- {
-- if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == PIX_FMT_NONE )
-+ if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == AV_PIX_FMT_NONE )
- return VLC_EGENERIC; /* handed chroma output */
-
- i_cat = VIDEO_ES;
-@@ -555,7 +555,7 @@ int OpenEncoder( vlc_object_t *p_this )
-
- if( p_codec->pix_fmts )
- {
-- const enum PixelFormat *p = p_codec->pix_fmts;
-+ const enum AVPixelFormat *p = p_codec->pix_fmts;
- for( ; *p != -1; p++ )
- {
- if( *p == p_context->pix_fmt ) break;
-@@ -1017,7 +1017,7 @@ errmsg:
- }
- }
-
-- p_sys->frame = avcodec_alloc_frame();
-+ p_sys->frame = av_frame_alloc();
- if( !p_sys->frame )
- {
- goto error;
-@@ -1048,7 +1048,7 @@ static void vlc_av_packet_Release(block_
- {
- vlc_av_packet_t *b = (void *) block;
-
-- av_free_packet(&b->packet);
-+ av_packet_unref(&b->packet);
- free(b);
- }
-
-@@ -1088,7 +1088,7 @@ static block_t *EncodeVideo( encoder_t *
- AVFrame *frame = NULL;
- if( likely(p_pict) ) {
- frame = p_sys->frame;
-- avcodec_get_frame_defaults( frame );
-+ av_frame_unref( frame );
- for( i_plane = 0; i_plane < p_pict->i_planes; i_plane++ )
- {
- p_sys->frame->data[i_plane] = p_pict->p[i_plane].p_pixels;
-@@ -1188,7 +1188,7 @@ static block_t *EncodeVideo( encoder_t *
- av_pkt.duration / p_sys->p_context->time_base.den, p_sys->p_context );
- if( unlikely(p_block == NULL) )
- {
-- av_free_packet( &av_pkt );
-+ av_packet_unref( &av_pkt );
- return NULL;
- }
-
-@@ -1329,7 +1329,7 @@ static block_t *handle_delay_buffer( enc
- //How much we need to copy from new packet
- const int leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes;
-
-- avcodec_get_frame_defaults( p_sys->frame );
-+ av_frame_unref( p_sys->frame );
- p_sys->frame->format = p_sys->p_context->sample_fmt;
- p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
-
-@@ -1451,7 +1451,7 @@ static block_t *EncodeAudio( encoder_t *
- while( ( p_aout_buf->i_nb_samples >= p_sys->i_frame_size ) ||
- ( p_sys->b_variable && p_aout_buf->i_nb_samples ) )
- {
-- avcodec_get_frame_defaults( p_sys->frame );
-+ av_frame_unref( p_sys->frame );
- if( p_sys->b_variable )
- p_sys->frame->nb_samples = p_aout_buf->i_nb_samples;
- else
-@@ -1514,7 +1514,7 @@ void CloseEncoder( vlc_object_t *p_this
- encoder_t *p_enc = (encoder_t *)p_this;
- encoder_sys_t *p_sys = p_enc->p_sys;
-
-- /*FIXME: we should use avcodec_free_frame, but we don't require so new avcodec that has it*/
-+ /*FIXME: we should use av_frame_free, but we don't require so new avcodec that has it*/
- av_freep( &p_sys->frame );
-
- vlc_avcodec_lock();
diff --git a/package/vlc/patches/patch-modules_codec_avcodec_vaapi_c b/package/vlc/patches/patch-modules_codec_avcodec_vaapi_c
deleted file mode 100644
index 1fdad6258..000000000
--- a/package/vlc/patches/patch-modules_codec_avcodec_vaapi_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- vlc-2.2.4.orig/modules/codec/avcodec/vaapi.c 2015-02-02 20:42:29.000000000 +0100
-+++ vlc-2.2.4/modules/codec/avcodec/vaapi.c 2016-09-24 20:35:02.681191261 +0200
-@@ -595,7 +595,7 @@ static int Create( vlc_va_t *p_va, AVCod
- return err;
-
- /* Only VLD supported */
-- p_va->pix_fmt = PIX_FMT_VAAPI_VLD;
-+ p_va->pix_fmt = AV_PIX_FMT_VAAPI_VLD;
- p_va->setup = Setup;
- p_va->get = Get;
- p_va->release = Release;
diff --git a/package/vlc/patches/patch-modules_codec_avcodec_video_c b/package/vlc/patches/patch-modules_codec_avcodec_video_c
deleted file mode 100644
index c9d3fb226..000000000
--- a/package/vlc/patches/patch-modules_codec_avcodec_video_c
+++ /dev/null
@@ -1,51 +0,0 @@
---- vlc-2.2.6.orig/modules/codec/avcodec/video.c 2016-09-27 09:56:26.000000000 +0200
-+++ vlc-2.2.6/modules/codec/avcodec/video.c 2017-06-06 22:52:46.745071498 +0200
-@@ -108,8 +108,8 @@ static int lavc_GetFrame(struct AVCodecC
- static int ffmpeg_GetFrameBuf ( struct AVCodecContext *, AVFrame * );
- static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *, AVFrame * );
- #endif
--static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *,
-- const enum PixelFormat * );
-+static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *,
-+ const enum AVPixelFormat * );
-
- static uint32_t ffmpeg_CodecTag( vlc_fourcc_t fcc )
- {
-@@ -234,7 +234,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo
- p_sys->p_codec = p_codec;
- p_sys->i_codec_id = i_codec_id;
- p_sys->psz_namecodec = psz_namecodec;
-- p_sys->p_ff_pic = avcodec_alloc_frame();
-+ p_sys->p_ff_pic = av_frame_alloc();
- p_sys->b_delayed_open = true;
- p_sys->p_va = NULL;
- vlc_sem_init( &p_sys->sem_mt, 0 );
-@@ -446,7 +446,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo
- if( ffmpeg_OpenCodec( p_dec ) < 0 )
- {
- msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec );
-- avcodec_free_frame( &p_sys->p_ff_pic );
-+ av_frame_free( &p_sys->p_ff_pic );
- vlc_sem_destroy( &p_sys->sem_mt );
- free( p_sys );
- return VLC_EGENERIC;
-@@ -847,7 +847,7 @@ void EndVideoDec( decoder_t *p_dec )
- wait_mt( p_sys );
-
- if( p_sys->p_ff_pic )
-- avcodec_free_frame( &p_sys->p_ff_pic );
-+ av_frame_free( &p_sys->p_ff_pic );
-
- if( p_sys->p_va )
- vlc_va_Delete( p_sys->p_va );
-@@ -1334,8 +1334,8 @@ static void ffmpeg_ReleaseFrameBuf( stru
- }
- #endif
-
--static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context,
-- const enum PixelFormat *pi_fmt )
-+static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *p_context,
-+ const enum AVPixelFormat *pi_fmt )
- {
- decoder_t *p_dec = p_context->opaque;
- decoder_sys_t *p_sys = p_dec->p_sys;
diff --git a/package/vlc/patches/patch-modules_demux_avformat_demux_c b/package/vlc/patches/patch-modules_demux_avformat_demux_c
deleted file mode 100644
index ca710b26b..000000000
--- a/package/vlc/patches/patch-modules_demux_avformat_demux_c
+++ /dev/null
@@ -1,46 +0,0 @@
---- vlc-2.2.4.orig/modules/demux/avformat/demux.c 2016-01-18 21:49:57.000000000 +0100
-+++ vlc-2.2.4/modules/demux/avformat/demux.c 2016-09-24 20:35:02.681191261 +0200
-@@ -734,14 +734,14 @@ static int Demux( demux_t *p_demux )
- }
- if( pkt.stream_index < 0 || pkt.stream_index >= p_sys->i_tk )
- {
-- av_free_packet( &pkt );
-+ av_packet_unref( &pkt );
- return 1;
- }
- const AVStream *p_stream = p_sys->ic->streams[pkt.stream_index];
- if( p_stream->time_base.den <= 0 )
- {
- msg_Warn( p_demux, "Invalid time base for the stream %d", pkt.stream_index );
-- av_free_packet( &pkt );
-+ av_packet_unref( &pkt );
- return 1;
- }
- if( p_stream->codec->codec_id == AV_CODEC_ID_SSA )
-@@ -749,7 +749,7 @@ static int Demux( demux_t *p_demux )
- p_frame = BuildSsaFrame( &pkt, p_sys->i_ssa_order++ );
- if( !p_frame )
- {
-- av_free_packet( &pkt );
-+ av_packet_unref( &pkt );
- return 1;
- }
- }
-@@ -757,7 +757,7 @@ static int Demux( demux_t *p_demux )
- {
- if( ( p_frame = block_Alloc( pkt.size ) ) == NULL )
- {
-- av_free_packet( &pkt );
-+ av_packet_unref( &pkt );
- return 0;
- }
- memcpy( p_frame->p_buffer, pkt.data, pkt.size );
-@@ -838,7 +838,7 @@ static int Demux( demux_t *p_demux )
- else
- block_Release( p_frame );
-
-- av_free_packet( &pkt );
-+ av_packet_unref( &pkt );
- return 1;
- }
-
diff --git a/package/vlc/patches/patch-src_posix_error_c b/package/vlc/patches/patch-src_posix_error_c
index ef51c996e..413f97f7d 100644
--- a/package/vlc/patches/patch-src_posix_error_c
+++ b/package/vlc/patches/patch-src_posix_error_c
@@ -1,5 +1,5 @@
---- vlc-2.2.4.orig/src/posix/error.c 2015-02-02 20:42:32.000000000 +0100
-+++ vlc-2.2.4/src/posix/error.c 2016-09-24 20:34:45.824539253 +0200
+--- vlc-3.0.20.orig/src/posix/error.c 2017-11-24 16:29:18.000000000 +0100
++++ vlc-3.0.20/src/posix/error.c 2024-03-03 07:55:57.955760063 +0100
@@ -31,6 +31,7 @@
static const char *vlc_strerror_l(int errnum, const char *lname)
@@ -8,15 +8,8 @@
int saved_errno = errno;
locale_t loc = newlocale(LC_MESSAGES_MASK, lname, (locale_t)0);
-@@ -48,9 +49,16 @@ static const char *vlc_strerror_l(int er
- errno = saved_errno;
- }
-
-+#if defined(__UCLIBC__)
-+ const char *buf = strerror_r(errnum, loc, 100);
-+#else
+@@ -51,6 +52,9 @@ static const char *vlc_strerror_l(int er
const char *buf = strerror_l(errnum, loc);
-+#endif
freelocale(loc);
+#else
diff --git a/package/vlc/patches/patch-src_posix_thread_c b/package/vlc/patches/patch-src_posix_thread_c
deleted file mode 100644
index 5c636c164..000000000
--- a/package/vlc/patches/patch-src_posix_thread_c
+++ /dev/null
@@ -1,11 +0,0 @@
---- vlc-2.2.4.orig/src/posix/thread.c 2015-02-02 20:42:32.000000000 +0100
-+++ vlc-2.2.4/src/posix/thread.c 2016-09-24 20:34:51.776769484 +0200
-@@ -85,7 +85,7 @@ static clockid_t vlc_clock_id;
-
- static void vlc_clock_setup_once (void)
- {
--# if (_POSIX_MONOTONIC_CLOCK == 0)
-+# if (_POSIX_MONOTONIC_CLOCK == 0) && (_POSIX_CLOCK_SELECTION > 0)
- long val = sysconf (_SC_MONOTONIC_CLOCK);
- assert (val != 0);
- vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC;
diff --git a/package/vnstat/Makefile b/package/vnstat/Makefile
index cec293741..0ff859b02 100644
--- a/package/vnstat/Makefile
+++ b/package/vnstat/Makefile
@@ -4,9 +4,9 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= vnstat
-PKG_VERSION:= 1.14
+PKG_VERSION:= 2.12
PKG_RELEASE:= 1
-PKG_HASH:= f8462a47d85d0890493dc9eaeafbc725ae631aa5b103fb7f8af4ddb2314e8386
+PKG_HASH:= b7386b12fc1fc6f47fab31f208b12eda61862e63e229e84e95a6fa80406d2852
PKG_DESCR:= console-based network traffic monitor
PKG_SECTION:= net/perf
PKG_SITES:= http://humdi.net/vnstat/
@@ -17,12 +17,10 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,VNSTAT,vnstat,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIG_STYLE:= manual
-INSTALL_STYLE:= manual
ALL_TARGET:= vnstat
-do-install:
+vnstat-install:
${INSTALL_DIR} ${IDIR_VNSTAT}/usr/bin
- ${INSTALL_BIN} ${WRKBUILD}/src/vnstat ${IDIR_VNSTAT}/usr/bin/
+ ${INSTALL_BIN} ${WRKINST}/usr/bin/vnstat ${IDIR_VNSTAT}/usr/bin/
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/w3m/Makefile b/package/w3m/Makefile
index bc97defc8..8b553b01b 100644
--- a/package/w3m/Makefile
+++ b/package/w3m/Makefile
@@ -14,6 +14,8 @@ PKG_BUILDDEP:= libgc-host libgc ncurses
PKG_URL:= http://w3m.sourceforge.net/
PKG_SITES:= ${MASTER_SITE_SOURCEFORGE:=w3m/}
+PKG_NOPARALLEL:= 1
+
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/wayland-protocols/Makefile b/package/wayland-protocols/Makefile
new file mode 100644
index 000000000..9c1f8ad1d
--- /dev/null
+++ b/package/wayland-protocols/Makefile
@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= wayland-protocols
+PKG_VERSION:= 1.31
+PKG_RELEASE:= 1
+PKG_HASH:= a07fa722ed87676ec020d867714bc9a2f24c464da73912f39706eeef5219e238
+PKG_DESCR:= wayland protocols
+PKG_SECTION:= x11/libs
+PKG_BUILDDEP:= meson-host wayland-host
+PKG_SITES:= https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/$(PKG_VERSION)/downloads/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,WAYLAND_PROTOCOLS,wayland-protocols,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+MESON_FLAGS+= -Dtests=false
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+wayland-protocols-install:
+ $(INSTALL_DIR) $(IDIR_WAYLAND_PROTOCOLS)/usr/share/wayland-protocols
+ $(CP) $(WRKINST)/usr/share/wayland-protocols/* \
+ $(IDIR_WAYLAND_PROTOCOLS)/usr/share/wayland-protocols/
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/wayland-protocols/patches/patch-meson_build b/package/wayland-protocols/patches/patch-meson_build
new file mode 100644
index 000000000..ad075be1c
--- /dev/null
+++ b/package/wayland-protocols/patches/patch-meson_build
@@ -0,0 +1,11 @@
+--- wayland-protocols-1.23.orig/meson.build 2021-09-15 14:52:03.136998200 +0200
++++ wayland-protocols-1.23/meson.build 2021-11-14 04:45:19.472983046 +0100
+@@ -93,7 +93,7 @@ pkgconfig_configuration.set('abs_top_src
+ pkgconfig_configuration.set('PACKAGE', 'wayland-protocols')
+ pkgconfig_configuration.set('WAYLAND_PROTOCOLS_VERSION', wayland_protocols_version)
+
+-pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig')
++pkg_install_dir = join_paths(get_option('libdir'), 'pkgconfig')
+ configure_file(
+ input: 'wayland-protocols.pc.in',
+ output: 'wayland-protocols.pc',
diff --git a/package/wayland-protocols/patches/patch-wayland-protocols_pc_in b/package/wayland-protocols/patches/patch-wayland-protocols_pc_in
new file mode 100644
index 000000000..ce3da7fb2
--- /dev/null
+++ b/package/wayland-protocols/patches/patch-wayland-protocols_pc_in
@@ -0,0 +1,10 @@
+--- wayland-protocols-1.23.orig/wayland-protocols.pc.in 2021-09-15 14:52:03.145998200 +0200
++++ wayland-protocols-1.23/wayland-protocols.pc.in 2021-11-14 04:59:17.121707638 +0100
+@@ -1,6 +1,6 @@
+ prefix=@prefix@
+ datarootdir=@datarootdir@
+-pkgdatadir=${pc_sysrootdir}${datarootdir}/@PACKAGE@
++pkgdatadir=${datarootdir}/@PACKAGE@
+
+ Name: Wayland Protocols
+ Description: Wayland protocol files
diff --git a/package/wayland/Makefile b/package/wayland/Makefile
new file mode 100644
index 000000000..796af73f6
--- /dev/null
+++ b/package/wayland/Makefile
@@ -0,0 +1,53 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= wayland
+PKG_VERSION:= 1.22.0
+PKG_RELEASE:= 1
+PKG_HASH:= 1540af1ea698a471c2d8e9d288332c7e0fd360c8f1d12936ebb7e7cbc2425842
+PKG_DESCR:= wayland
+PKG_SECTION:= x11/libs
+PKG_BUILDDEP:= wayland-host
+HOST_BUILDDEP:= meson-host expat-host libxml2-host libffi-host
+PKG_SITES:= https://gitlab.freedesktop.org/wayland/wayland/-/releases/$(PKG_VERSION)/downloads/
+PKG_OPTS:= dev
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,WAYLAND,wayland,$(PKG_VERSION)-${PKG_RELEASE}))
+$(eval $(call PKG_template,WAYLAND,wayland,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+HOST_MESON_FLAGS+= -Ddocumentation=false \
+ -Dtests=false \
+ -Dscanner=true
+MESON_FLAGS+= -Ddocumentation=false \
+ -Dtests=false \
+ -Dlibraries=true \
+ -Dscanner=false
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+HOST_STYLE:= meson
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+hostpost-install:
+ $(INSTALL_DIR) $(STAGING_HOST_DIR)/usr/bin
+ $(INSTALL_BIN) $(WRKBUILD)/src/wayland-scanner \
+ $(STAGING_HOST_DIR)/usr/bin
+ $(INSTALL_DIR) $(STAGING_HOST_DIR)/usr/lib/pkgconfig
+ $(CP) $(WRKBUILD)/meson-private/wayland-scanner.pc \
+ $(STAGING_HOST_DIR)/usr/lib/pkgconfig
+
+
+wayland-install:
+ $(INSTALL_DIR) $(IDIR_WAYLAND)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libwayland*.so* \
+ $(IDIR_WAYLAND)/usr/lib
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/webkitgtk/Makefile b/package/webkitgtk/Makefile
index 4009987c2..b6ad084a5 100644
--- a/package/webkitgtk/Makefile
+++ b/package/webkitgtk/Makefile
@@ -4,18 +4,18 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= webkitgtk
-PKG_VERSION:= 2.18.0
+PKG_VERSION:= 2.34.6
PKG_RELEASE:= 1
-PKG_HASH:= b583e46a3de36a3e80ba33b084ead60512a2046aca01ff61e50e519436e5038d
+PKG_HASH:= 6bc8fd034aad0432a2459ce4fc7ee25ad65a4924c618bf8d93b52b0c1a84c1f6
PKG_DESCR:= web browser engine
PKG_SECTION:= libs/misc
PKG_DEPENDS:= glib icu4c zlib libwebp libgtk3 libsoup
PKG_DEPENDS+= libsecret libxt harfbuzz cairo libgcrypt
-PKG_DEPENDS+= gst-plugins-base gstreamer libnotify
+PKG_DEPENDS+= gstreamer libnotify libwebp gst-plugins-base
PKG_BUILDDEP:= glib icu4c zlib libwebp libgtk3 cmake-host
PKG_BUILDDEP+= libsoup libsecret libXt harfbuzz libnotify
-PKG_BUILDDEP+= gst-plugins-base gstreamer cairo enchant
-PKG_BUILDDEP+= gnutls libgcrypt
+PKG_BUILDDEP+= gstreamer cairo enchant libwebp gst-plugins-base
+PKG_BUILDDEP+= gnutls libgcrypt ruby-host
PKG_URL:= http://www.webkitgtk.org/
PKG_SITES:= http://webkitgtk.org/releases/
PKG_OPTS:= dev
@@ -41,6 +41,14 @@ CMAKE_FLAGS+= -DPORT=GTK \
-DUSE_LIBNOTIFY=OFF \
-DENABLE_JIT=OFF \
-DUSE_LIBHYPHEN=OFF \
+ -DUSE_SOUP2=ON \
+ -DUSE_WPE_RENDERER=OFF \
+ -DENABLE_GAMEPAD=OFF \
+ -DUSE_OPENJPEG=OFF \
+ -DUSE_WOFF2=OFF \
+ -DUSE_SYSTEMD=OFF \
+ -DUSE_LCMS=OFF \
+ -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
-DENABLE_INTROSPECTION=OFF
webkitgtk-install:
diff --git a/package/webkitgtk/patches/patch-Source_PlatformGTK_cmake b/package/webkitgtk/patches/patch-Source_PlatformGTK_cmake
deleted file mode 100644
index 863e86475..000000000
--- a/package/webkitgtk/patches/patch-Source_PlatformGTK_cmake
+++ /dev/null
@@ -1,7 +0,0 @@
---- webkitgtk-2.12.0.orig/Source/PlatformGTK.cmake 2016-03-17 08:51:05.000000000 +0100
-+++ webkitgtk-2.12.0/Source/PlatformGTK.cmake 2016-04-03 10:54:31.244767406 +0200
-@@ -1,4 +1,3 @@
--add_subdirectory(${WEBCORE_DIR}/platform/gtk/po)
-
- # This allows exposing a 'gir' target which builds all GObject introspection files.
- if (ENABLE_INTROSPECTION)
diff --git a/package/weechat/Makefile b/package/weechat/Makefile
index 5b63816e2..ec397bd73 100644
--- a/package/weechat/Makefile
+++ b/package/weechat/Makefile
@@ -4,26 +4,29 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= weechat
-PKG_VERSION:= 1.1.1
+PKG_VERSION:= 4.2.1
PKG_RELEASE:= 1
-PKG_HASH:= a32f7e57d5e834195bacaffa874419b4a9d17cd42883c80d7ecb9fadbf601349
+PKG_HASH:= 253ddf086f6c845031a2dd294b1552851d6b04cc08a2f9da4aedfb3e2f91bdcd
PKG_DESCR:= lightweight irc client
PKG_SECTION:= app/chat
-PKG_DEPENDS:= libncurses zlib libcurl libgcrypt
-PKG_BUILDDEP:= cmake-host ncurses zlib curl libgcrypt
+PKG_DEPENDS:= libncurses zlib libcurl libgcrypt libgnutls
+PKG_BUILDDEP:= cmake-host ncurses zlib curl libgcrypt gnutls
PKG_URL:= http://www.weechat.org/
-PKG_SITES:= http://www.weechat.org/files/src/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_SITES:= https://weechat.org/files/src/
include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,WEECHAT,weechat,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
CONFIG_STYLE:= cmake
-CMAKE_FLAGS+= -DENABLE_GNUTLS=OFF \
- -DENABLE_PERL=OFF \
+CMAKE_FLAGS+= -DENABLE_PERL=OFF \
-DENABLE_PYTHON=OFF \
+ -DENABLE_LUA=OFF \
+ -DENABLE_RUBY=OFF \
+ -DENABLE_PHP=OFF \
+ -DENABLE_TCL=OFF \
+ -DENABLE_GUILE=OFF \
+ -DENABLE_SPELL=OFF \
-DENABLE_NLS=OFF \
-DGCRYPT_LDFLAGS="-L$(STAGING_TARGET_DIR)/usr/lib -ltinfo -lgcrypt" \
-DGCRYPT_CFLAGS="-I$(STAGING_TARGET_DIR)/usr/include" \
diff --git a/package/weston/Makefile b/package/weston/Makefile
new file mode 100644
index 000000000..a3d374355
--- /dev/null
+++ b/package/weston/Makefile
@@ -0,0 +1,60 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= weston
+PKG_VERSION:= 11.0.0
+PKG_RELEASE:= 1
+PKG_HASH:= 5816a9e7bd67d03f268553a7af2f0c3430b409f7606244dada65188478f90800
+PKG_DESCR:= wayland compositor
+PKG_SECTION:= x11/drivers
+PKG_DEPENDS:= wayland libxkbcommon libinput libpng libjpeg-turbo libseat
+PKG_DEPENDS+= libwebp pam libxcursor libudev xkeyboard-config cairo libffi
+PKG_BUILDDEP:= wayland libxkbcommon libinput libpng libjpeg-turbo
+PKG_BUILDDEP+= libwebp pam libXcursor eudev cairo libseat libffi
+PKG_SITES:= https://github.com/wayland-project/weston/archive/refs/tags/
+
+PKG_CFLINE_WESTON:= select ADK_PACKAGE_CAIRO_WITH_PNG@
+
+DISTFILES:= $(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,WESTON,weston,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+MESON_FLAGS+= -Dlauncher-logind=false \
+ -Dlauncher-libseat=true \
+ -Dsystemd=false \
+ -Dbackend-drm-screencast-vaapi=false \
+ -Dbackend-rdp=false \
+ -Dcolor-management-lcms=false \
+ -Dremoting=false \
+ -Dpipewire=false \
+ -Ddemo-clients=false
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+weston-install:
+ $(INSTALL_DIR) $(IDIR_WESTON)/usr/share
+ $(CP) $(WRKINST)/usr/share/* \
+ $(IDIR_WESTON)/usr/share/
+ $(INSTALL_DIR) $(IDIR_WESTON)/usr/libexec
+ $(CP) $(WRKINST)/usr/libexec/* \
+ $(IDIR_WESTON)/usr/libexec/
+ $(INSTALL_DIR) $(IDIR_WESTON)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/weston \
+ $(IDIR_WESTON)/usr/lib/
+ $(CP) $(WRKINST)/usr/lib/libweston-11 \
+ $(IDIR_WESTON)/usr/lib/
+ $(CP) $(WRKINST)/usr/lib/libweston*so* \
+ $(IDIR_WESTON)/usr/lib/
+ $(INSTALL_DIR) $(IDIR_WESTON)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/weston \
+ $(IDIR_WESTON)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/wifidog/Makefile b/package/wifidog/Makefile
index 41e73b45b..a3e6e7430 100644
--- a/package/wifidog/Makefile
+++ b/package/wifidog/Makefile
@@ -19,6 +19,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,WIFIDOG,wifidog,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_CFLAGS+= -fcommon
CONFIGURE_ENV+= ac_cv_func_memcmp_working=yes \
ac_cv_lib_nsl_main=no \
ac_cv_func_setvbuf_reversed=no
diff --git a/package/wolfssl/Makefile b/package/wolfssl/Makefile
index 2e6841ca4..738821f65 100644
--- a/package/wolfssl/Makefile
+++ b/package/wolfssl/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= wolfssl
-PKG_VERSION:= 5.0.0
+PKG_VERSION:= 5.6.6
PKG_RELEASE:= 1
-PKG_HASH:= 908390282cc613a3943533f3d922b3c18dee3289f498b6f944cb86a19a5eeb56
+PKG_HASH:= 3d2ca672d41c2c2fa667885a80d6fa03c3e91f0f4f72f87aef2bc947e8c87237
PKG_DESCR:= portable embedded ssl library
PKG_SECTION:= libs/crypto
PKG_URL:= http://www.wolfssl.com
diff --git a/package/wpa_supplicant/Makefile b/package/wpa_supplicant/Makefile
index 1cfafb014..873b6f2d3 100644
--- a/package/wpa_supplicant/Makefile
+++ b/package/wpa_supplicant/Makefile
@@ -4,16 +4,16 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= wpa_supplicant
-PKG_VERSION:= 2.5
-PKG_RELEASE:= 1
-PKG_HASH:= cce55bae483b364eae55c35ba567c279be442ed8bab5b80a3c7fb0d057b9b316
+PKG_VERSION:= 2.10
+PKG_RELEASE:= 2
+PKG_HASH:= 20df7ae5154b3830355f8ab4269123a87affdea59fe74fe9292a91d0d7e17b2f
PKG_DESCR:= wpa supplicant
PKG_SECTION:= net/wifi
PKG_DEPENDS:= libnl
PKG_BUILDDEP:= libnl
PKG_NEEDS:= threads
PKG_URL:= http://hostap.epitest.fi/wpa_supplicant/
-PKG_SITES:= http://hostap.epitest.fi/releases/
+PKG_SITES:= http://w1.fi/releases/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
@@ -21,7 +21,7 @@ PKG_DFLT_WPA_SUPPLICANT:= y if ADK_TARGET_WITH_WIFI
WRKSRC= ${WRKDIST}/${PKG_NAME}
-PKG_CHOICES_WPA_SUPPLICANT:= WITH_LIBRESSL WITH_INTERNAL WITH_GNUTLS
+PKG_CHOICES_WPA_SUPPLICANT:= WITH_INTERNAL WITH_LIBRESSL WITH_GNUTLS
PKGCD_WITH_LIBRESSL:= use libressl for crypto
PKGCS_WITH_LIBRESSL:= libressl
PKGCB_WITH_LIBRESSL:= libressl
diff --git a/package/wput/Makefile b/package/wput/Makefile
index 12f87d61f..3448d6521 100644
--- a/package/wput/Makefile
+++ b/package/wput/Makefile
@@ -17,6 +17,7 @@ include ${ADK_TOPDIR}/mk/package.mk
$(eval $(call PKG_template,WPUT,wput,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_CFLAGS+= -fcommon
CONFIGURE_ARGS+= --disable-g-switch \
--without-ssl
diff --git a/package/x11vnc/Makefile b/package/x11vnc/Makefile
index 9fad7e631..7105c928e 100644
--- a/package/x11vnc/Makefile
+++ b/package/x11vnc/Makefile
@@ -4,28 +4,33 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= x11vnc
-PKG_VERSION:= 0.9.13
+PKG_VERSION:= 0.9.16
PKG_RELEASE:= 1
-PKG_HASH:= f6829f2e629667a5284de62b080b13126a0736499fe47cdb447aedb07a59f13b
+PKG_HASH:= 885e5b5f5f25eec6f9e4a1e8be3d0ac71a686331ee1cfb442dba391111bd32bd
PKG_DESCR:= vnc server for x11 displays
PKG_SECTION:= x11/apps
-PKG_BUILDDEP:= libX11 libXtst libjpeg-turbo
+PKG_DEPENDS:= libvncserver libpng libjpeg-turbo zlib liblzo
+PKG_DEPENDS+= libgnutls libxi libxdamage libxtst cairo
+PKG_DEPENDS+= libxfixes libxrandr
+PKG_BUILDDEP:= libX11 libXtst libjpeg-turbo libvncserver
PKG_URL:= http://www.karlrunge.com/x11vnc/
-PKG_SITES:= http://sourceforge.net/projects/libvncserver/files/x11vnc/0.9.13/
-
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+PKG_SITES:= https://github.com/LibVNC/x11vnc/archive/refs/tags/
+DISTFILES:= ${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,X11VNC,x11vnc,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+TARGET_LDFLAGS+= -lssl -lcrypto
ifeq ($(ADK_TARGET_USE_STATIC_LIBS_ONLY),y)
MAKE_FLAGS+= CFLAGS="${TARGET_CFLAGS} -static" \
LIBS="-lxcb -lXau -lXdmcp -ldl -pthread -ljpeg -lz"
endif
-CONFIGURE_ARGS+= --without-ssl
+AUTOTOOL_STYLE:= autoreconf
+CONFIGURE_ARGS+= --without-ssl \
+ --without-crypto
x11vnc-install:
$(INSTALL_DIR) $(IDIR_X11VNC)/usr/bin
diff --git a/package/x11vnc/patches/patch-src_util_c b/package/x11vnc/patches/patch-src_util_c
new file mode 100644
index 000000000..c16d39ae6
--- /dev/null
+++ b/package/x11vnc/patches/patch-src_util_c
@@ -0,0 +1,12 @@
+--- x11vnc-0.9.16.orig/src/util.c 2019-01-05 14:22:11.000000000 +0100
++++ x11vnc-0.9.16/src/util.c 2022-12-30 16:45:15.602697333 +0100
+@@ -47,6 +47,9 @@ int hxl = 0;
+ #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
+ MUTEX(x11Mutex);
+ MUTEX(scrollMutex);
++MUTEX(clientMutex);
++MUTEX(inputMutex);
++MUTEX(pointerMutex);
+ #endif
+
+ int nfix(int i, int n);
diff --git a/package/x11vnc/patches/patch-src_util_h b/package/x11vnc/patches/patch-src_util_h
new file mode 100644
index 000000000..147534eb2
--- /dev/null
+++ b/package/x11vnc/patches/patch-src_util_h
@@ -0,0 +1,15 @@
+--- x11vnc-0.9.16.orig/src/util.h 2019-01-05 14:22:11.000000000 +0100
++++ x11vnc-0.9.16/src/util.h 2022-12-30 16:45:15.598697256 +0100
+@@ -102,9 +102,9 @@ extern struct timeval _mysleep;
+ #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
+ extern MUTEX(x11Mutex);
+ extern MUTEX(scrollMutex);
+-MUTEX(clientMutex);
+-MUTEX(inputMutex);
+-MUTEX(pointerMutex);
++extern MUTEX(clientMutex);
++extern MUTEX(inputMutex);
++extern MUTEX(pointerMutex);
+ #endif
+
+ #define X_INIT INIT_MUTEX(x11Mutex)
diff --git a/package/xawtv/Makefile b/package/xawtv/Makefile
index 4c3ba6d31..e459a6f09 100644
--- a/package/xawtv/Makefile
+++ b/package/xawtv/Makefile
@@ -4,19 +4,17 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= xawtv
-PKG_VERSION:= 3.103
+PKG_VERSION:= 47a81c3ca7ac9b4f0989cccb7961dc4bff52364a
PKG_RELEASE:= 1
-PKG_HASH:= 2cf3a91b5d59a094bd86e101684a65c0e3d09225c11a787e060fa01bfbc8dd52
+PKG_GIT:= hash
PKG_DESCR:= video & webcam application
PKG_BUILDDEP:= libXinerama v4l-utils
PKG_DEPENDS:= libxinerama libv4l
PKG_SECTION:= x11/apps
-PKG_SITES:= http://linuxtv.org/downloads/xawtv/
+PKG_SITES:= http://git.linuxtv.org/xawtv3.git
PKG_ARCH_DEPENDS:= x86 x86_64
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,XAWTV,xawtv,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
diff --git a/package/xcb-proto/Makefile b/package/xcb-proto/Makefile
index 67947e882..d5639997b 100644
--- a/package/xcb-proto/Makefile
+++ b/package/xcb-proto/Makefile
@@ -4,50 +4,41 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= xcb-proto
-PKG_VERSION:= 1.12
+PKG_VERSION:= 1.16.0
PKG_RELEASE:= 1
-PKG_HASH:= cfa49e65dd390233d560ce4476575e4b76e505a0e0bacdfb5ba6f8d0af53fd59
+PKG_HASH:= a75a1848ad2a89a82d841a51be56ce988ff3c63a8d6bf4383ae3219d8d915119
PKG_DESCR:= xml-xcb protocol descriptions
PKG_SECTION:= dev/header
-HOST_BUILDDEP:= python2-host
-PKG_SITES:= http://xcb.freedesktop.org/dist/
+HOST_BUILDDEP:= python3-host
+PKG_SITES:= https://xorg.freedesktop.org/archive/individual/proto/
PKG_OPTS:= dev devonly
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-PKG_SUBPKGS:= XCB_PROTO XCB_PYTHON
-PKGSC_XCB_PYTHON:= x11/misc
-
include $(ADK_TOPDIR)/mk/host.mk
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call HOST_template,XCB_PROTO,xcb-proto,$(PKG_VERSION)-${PKG_RELEASE}))
$(eval $(call PKG_template,XCB_PROTO,xcb-proto,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
-$(eval $(call PKG_template,XCB_PYTHON,xcb-python,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKGSC_XCB_PYTHON}))
-include $(ADK_TOPDIR)/mk/python.mk
+include $(ADK_TOPDIR)/mk/python3.mk
HOST_STYLE:= auto
CONFIGURE_ENV+= PYTHON=$(PYTHON)
-# pkg-config variables are not fixed up with sysroot
hostpost-install:
- $(SED) 's|^\(xcbincludedir=\)|\1$(STAGING_HOST_DIR)|' \
- $(STAGING_HOST_DIR)/usr/lib/pkgconfig/xcb-proto.pc
+ ${INSTALL_DIR} ${STAGING_HOST_DIR}/usr/share/xcb
+ ${CP} ${WRKBUILD}/src/*.xml ${STAGING_HOST_DIR}/usr/share/xcb
post-build:
${INSTALL_DIR} ${STAGING_TARGET_DIR}/usr/share/xcb
${CP} ${WRKBUILD}/src/*.xml ${STAGING_TARGET_DIR}/usr/share/xcb
- $(SED) 's|^\(xcbincludedir=\)|\1$(STAGING_TARGET_DIR)|' \
- $(WRKBUILD)/xcb-proto.pc
-xcb-python-install:
+xcb-proto-install:
$(INSTALL_DIR) ${STAGING_TARGET_DIR}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen
${CP} ${WRKINST}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen/*.py \
${STAGING_TARGET_DIR}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen
- ${INSTALL_DIR} ${IDIR_XCB_PYTHON}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen
+ ${INSTALL_DIR} ${IDIR_XCB_PROTO}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen
${CP} ${WRKINST}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen/*.py \
- ${IDIR_XCB_PYTHON}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen
+ ${IDIR_XCB_PROTO}/usr/lib/python${PYTHON_VERSION}/site-packages/xcbgen
include ${ADK_TOPDIR}/mk/host-bottom.mk
include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/xcb-proto/patches/patch-xcb-proto_pc_in b/package/xcb-proto/patches/patch-xcb-proto_pc_in
new file mode 100644
index 000000000..3732f4310
--- /dev/null
+++ b/package/xcb-proto/patches/patch-xcb-proto_pc_in
@@ -0,0 +1,14 @@
+--- xcb-proto-1.16.0.orig/xcb-proto.pc.in 2023-08-16 22:10:21.000000000 +0200
++++ xcb-proto-1.16.0/xcb-proto.pc.in 2024-01-21 13:00:16.488006595 +0100
+@@ -2,9 +2,9 @@ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ datarootdir=@datarootdir@
+ datadir=@datadir@
+-xcbincludedir=${pc_sysrootdir}@xcbincludedir@
++xcbincludedir=@xcbincludedir@
+ PYTHON_PREFIX=@PYTHON_PREFIX@
+-pythondir=${pc_sysrootdir}@pythondir@
++pythondir=@pythondir@
+
+ Name: XCB Proto
+ Description: X protocol descriptions for XCB
diff --git a/package/xdm/Makefile b/package/xdm/Makefile
index b3e6b53c8..70b0fb235 100644
--- a/package/xdm/Makefile
+++ b/package/xdm/Makefile
@@ -4,13 +4,13 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= xdm
-PKG_VERSION:= 1.1.11
+PKG_VERSION:= 1.1.14
PKG_RELEASE:= 1
-PKG_HASH:= 38c544a986143b1f24566c1a0111486b339b92224b927be78714eeeedca12a14
+PKG_HASH:= bcc543c3c120094d58d9cc9837958d4303693c2116ba342ba3dd9440137b4026
PKG_DESCR:= display manager
PKG_SECTION:= x11/apps
-PKG_BUILDDEP:= pam
-PKG_DEPENDS:= xconsole pam xsm
+PKG_BUILDDEP:= pam libXaw
+PKG_DEPENDS:= xconsole pam xsm libxaw
PKG_URL:= http://xorg.freedesktop.org/
PKG_SITES:= http://www.x.org/releases/individual/app/
@@ -21,6 +21,7 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,XDM,xdm,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
CONFIGURE_ARGS+= --with-random-device=/dev/urandom \
+ --with-appdefaultdir=/usr/share/X11/app-defaults \
--with-utmp-file=/dev/null \
--with-wtmp-file=/dev/null
diff --git a/package/xenomai/Makefile b/package/xenomai/Makefile
deleted file mode 100644
index 5d9b7dfdf..000000000
--- a/package/xenomai/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= xenomai
-PKG_VERSION:= 3.0.6
-PKG_RELEASE:= 1
-PKG_HASH:= 2c0dd3f0e36e4a10f97e0028989bb873e80f4d1ce212ac55fd3b28857c464f94
-PKG_DESCR:= realtime extension
-PKG_SECTION:= sys/misc
-PKG_URL:= https://xenomai.org/
-PKG_SITES:= https://xenomai.org/downloads/xenomai/stable/
-
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2
-
-PKG_CHOICES_XENOMAI:= WITH_MERCURY
-#PKG_CHOICES_XENOMAI:= WITH_MERCURY WITH_COBALT
-PKGCD_WITH_MERCURY:= use mercury
-#PKGCD_WITH_COBALT:= use cobalt
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,XENOMAI,xenomai,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-
-XAKE_FLAGS+= SUDO="echo"
-CONFIGURE_ARGS+= --includedir=/usr/include/xenomai/ --disable-doc-install
-
-ifeq (${ADK_PACKAGE_XENOMAI_WITH_MERCURY},y)
-CONFIGURE_ARGS+= --with-core=mercury
-endif
-
-ifeq (${ADK_PACKAGE_XENOMAI_WITH_COBALT},y)
-CONFIGURE_ARGS+= --with-core=cobalt
-endif
-
-xenomai-install:
- $(INSTALL_DIR) $(IDIR_XENOMAI)/usr/bin
- $(INSTALL_DIR) $(IDIR_XENOMAI)/usr/sbin
- $(INSTALL_DIR) $(IDIR_XENOMAI)/usr/lib
- $(CP) $(WRKINST)/usr/bin/* \
- $(IDIR_XENOMAI)/usr/bin
- $(CP) $(WRKINST)/usr/sbin/* \
- $(IDIR_XENOMAI)/usr/sbin
- $(CP) $(WRKINST)/usr/lib/* \
- $(IDIR_XENOMAI)/usr/lib
-
-
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/xf86-input-evdev/Makefile b/package/xf86-input-evdev/Makefile
index 5931ff84b..bebc4aac4 100644
--- a/package/xf86-input-evdev/Makefile
+++ b/package/xf86-input-evdev/Makefile
@@ -9,8 +9,8 @@ PKG_RELEASE:= 1
PKG_HASH:= 1a1b69daf41eac965f1cf0be721ebc340b2860c066147cb483f0e8f0ab7dd6a2
PKG_DESCR:= x11 driver for evdev
PKG_SECTION:= x11/drivers
-PKG_DEPENDS:= xorg-server libudev
-PKG_BUILDDEP:= xorg-server eudev
+PKG_DEPENDS:= xorg-server libudev libevdev mtdev
+PKG_BUILDDEP:= xorg-server eudev libevdev mtdev
PKG_SITES:= http://www.x.org/releases/individual/driver/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
diff --git a/package/xfsprogs/Makefile b/package/xfsprogs/Makefile
index e7ce06e48..e21801f9f 100644
--- a/package/xfsprogs/Makefile
+++ b/package/xfsprogs/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= xfsprogs
-PKG_VERSION:= 5.13.0
+PKG_VERSION:= 6.6.0
PKG_RELEASE:= 1
-PKG_HASH:= 4e142d4babe086adf9016d8c606c805829da08e46389a4433f40346204f90cdb
+PKG_HASH:= 50ca2f4676df8fab4cb4c3ef3dd512d5551e6844d40a65a31d5b8e03593d22df
PKG_DESCR:= utilities for xfs filesystems
PKG_SECTION:= sys/fs
-PKG_DEPENDS:= libuuid libblkid libncurses libinih
-PKG_BUILDDEP:= e2fsprogs ncurses libinih
+PKG_DEPENDS:= libuuid libblkid libncurses libinih liburcu
+PKG_BUILDDEP:= e2fsprogs ncurses libinih liburcu
PKG_NEEDS:= threads
PKG_URL:= http://oss.sgi.com/projects/xfs
PKG_SITES:= https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/
diff --git a/package/xkeyboard-config/Makefile b/package/xkeyboard-config/Makefile
index b6ba0d40f..182812e57 100644
--- a/package/xkeyboard-config/Makefile
+++ b/package/xkeyboard-config/Makefile
@@ -4,21 +4,23 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= xkeyboard-config
-PKG_VERSION:= 2.11
+PKG_VERSION:= 2.37
PKG_RELEASE:= 1
-PKG_HASH:= e7125460892c2b5c3a8d843cb18c24b60c46051e925c2888a61fa672a2f76d76
+PKG_HASH:= eb1383a5ac4b6210d7c7302b9d6fab052abdf51c5d2c9b55f1f779997ba68c6c
PKG_DESCR:= keyboard config
PKG_SECTION:= x11/misc
-PKG_BUILDDEP:= util-macros-host xkbcomp
+PKG_BUILDDEP:= util-macros-host xkbcomp meson-host
PKG_SITES:= http://www.x.org/releases/individual/data/xkeyboard-config/
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.bz2
-
include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,XKEYBOARD_CONFIG,xkeyboard-config,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-AUTOTOOL_STYLE:= autoreconf
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
xkeyboard-config-install:
${INSTALL_DIR} ${IDIR_XKEYBOARD_CONFIG}/usr/share/X11/xkb
diff --git a/package/xkeyboard-config/patches/patch-Makefile_am b/package/xkeyboard-config/patches/patch-Makefile_am
deleted file mode 100644
index 91f90f91b..000000000
--- a/package/xkeyboard-config/patches/patch-Makefile_am
+++ /dev/null
@@ -1,10 +0,0 @@
---- xkeyboard-config-2.11.orig/Makefile.am 2013-10-19 18:02:53.000000000 +0200
-+++ xkeyboard-config-2.11/Makefile.am 2014-03-04 14:43:40.000000000 +0100
-@@ -1,6 +1,6 @@
- AUTOMAKE_OPTIONS = foreign
-
--SUBDIRS = compat geometry keycodes po rules symbols types docs man
-+SUBDIRS = compat geometry keycodes rules symbols types
-
- pkgconfigdir = $(datadir)/pkgconfig
- pkgconfig_DATA = xkeyboard-config.pc
diff --git a/package/xkeyboard-config/patches/patch-configure_ac b/package/xkeyboard-config/patches/patch-configure_ac
deleted file mode 100644
index 2cb7cc7db..000000000
--- a/package/xkeyboard-config/patches/patch-configure_ac
+++ /dev/null
@@ -1,13 +0,0 @@
---- xkeyboard-config-2.11.orig/configure.ac 2014-01-29 21:08:27.000000000 +0100
-+++ xkeyboard-config-2.11/configure.ac 2014-03-04 14:43:26.000000000 +0100
-@@ -63,10 +63,6 @@ AM_CONDITIONAL(USE_COMPAT_RULES, test "x
- # ****
- # i18n
- # ****
--AC_PROG_INTLTOOL(0.30)
--
--AM_GNU_GETTEXT_VERSION([0.18.1])
--AM_GNU_GETTEXT([external])
-
- GETTEXT_PACKAGE=xkeyboard-config
- AC_SUBST(GETTEXT_PACKAGE)
diff --git a/package/xkeyboard-config/patches/patch-rules_Makefile_am b/package/xkeyboard-config/patches/patch-rules_Makefile_am
deleted file mode 100644
index ac07e510b..000000000
--- a/package/xkeyboard-config/patches/patch-rules_Makefile_am
+++ /dev/null
@@ -1,10 +0,0 @@
---- xkeyboard-config-2.11.orig/rules/Makefile.am 2013-12-17 23:59:06.000000000 +0100
-+++ xkeyboard-config-2.11/rules/Makefile.am 2014-03-04 14:30:44.000000000 +0100
-@@ -244,4 +244,6 @@ MAINTAINERCLEANFILES = $(srcdir)/evdev.x
- rulesdir = $(xkb_base)/rules
- xmldir = $(rulesdir)
-
--@INTLTOOL_XML_NOMERGE_RULE@
-+# remove intltool-merge dependency
-+%.xml: %.xml.in
-+ cp $< $@
diff --git a/package/xkeyboard-config/patches/patch-rules_base_extras_xml_in b/package/xkeyboard-config/patches/patch-rules_base_extras_xml_in
deleted file mode 100644
index beb2b7a9d..000000000
--- a/package/xkeyboard-config/patches/patch-rules_base_extras_xml_in
+++ /dev/null
@@ -1,855 +0,0 @@
---- xkeyboard-config-2.11.orig/rules/base.extras.xml.in 2013-12-24 00:48:45.000000000 +0100
-+++ xkeyboard-config-2.11/rules/base.extras.xml.in 2014-03-04 14:31:19.000000000 +0100
-@@ -1,4 +1,4 @@
--<?xml version="1.0" encoding="utf-8"?>
-+<?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
- <xkbConfigRegistry>
- <modelList/>
-@@ -6,8 +6,8 @@
- <layout>
- <configItem>
- <name>apl</name>
-- <_shortDescription>apl</_shortDescription>
-- <_description>APL keyboard symbols</_description>
-+ <shortDescription>apl</shortDescription>
-+ <description>APL keyboard symbols</description>
- <languageList><iso639Id>eng</iso639Id></languageList>
- </configItem>
- <variantList>
-@@ -58,29 +58,29 @@
- <layout>
- <configItem>
- <name>ca</name>
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada)</_description>
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada)</description>
- <languageList><iso639Id>fra</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>kut</name>
-- <_shortDescription>kut</_shortDescription>
-- <_description>Kutenai</_description>
-+ <shortDescription>kut</shortDescription>
-+ <description>Kutenai</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>shs</name>
-- <_shortDescription>shs</_shortDescription>
-- <_description>Secwepemctsin</_description>
-+ <shortDescription>shs</shortDescription>
-+ <description>Secwepemctsin</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Multilingual (Canada, Sun Type 6/7)</_description>
-+ <description>Multilingual (Canada, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -88,8 +88,8 @@
- <layout>
- <configItem>
- <name>de</name>
-- <_shortDescription>de</_shortDescription>
-- <_description>German</_description>
-+ <shortDescription>de</shortDescription>
-+ <description>German</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
-@@ -98,7 +98,7 @@
- <variant>
- <configItem>
- <name>us</name>
-- <_description>German (US keyboard with German letters)</_description>
-+ <description>German (US keyboard with German letters)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -107,7 +107,7 @@
- <variant>
- <configItem>
- <name>hu</name>
-- <_description>German (with Hungarian letters and no dead keys)</_description>
-+ <description>German (with Hungarian letters and no dead keys)</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- <iso639Id>hun</iso639Id>
-@@ -117,7 +117,7 @@
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>German (Sun Type 6/7)</_description>
-+ <description>German (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -125,15 +125,15 @@
- <layout>
- <configItem>
- <name>ir</name>
-- <_shortDescription>fa</_shortDescription>
-- <_description>Persian</_description>
-+ <shortDescription>fa</shortDescription>
-+ <description>Persian</description>
- <languageList><iso639Id>per</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ave</name>
-- <_description>Avestan</_description>
-+ <description>Avestan</description>
- <languageList><iso639Id>ave</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -142,21 +142,21 @@
- <layout>
- <configItem>
- <name>lt</name>
-- <_shortDescription>lt</_shortDescription>
-- <_description>Lithuanian</_description>
-+ <shortDescription>lt</shortDescription>
-+ <description>Lithuanian</description>
- <languageList><iso639Id>lit</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>us_dvorak</name>
-- <_description>Lithuanian (US Dvorak with Lithuanian letters)</_description>
-+ <description>Lithuanian (US Dvorak with Lithuanian letters)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Lithuanian (Sun Type 6/7)</_description>
-+ <description>Lithuanian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -164,8 +164,8 @@
- <layout>
- <configItem>
- <name>lv</name>
-- <_shortDescription>lv</_shortDescription>
-- <_description>Latvian</_description>
-+ <shortDescription>lv</shortDescription>
-+ <description>Latvian</description>
- <languageList>
- <iso639Id>lav</iso639Id>
- </languageList>
-@@ -174,55 +174,55 @@
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Latvian (US Dvorak)</_description>
-+ <description>Latvian (US Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ykeydvorak</name>
-- <_description>Latvian (US Dvorak, Y variant)</_description>
-+ <description>Latvian (US Dvorak, Y variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>minuskeydvorak</name>
-- <_description>Latvian (US Dvorak, minus variant)</_description>
-+ <description>Latvian (US Dvorak, minus variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorakprogr</name>
-- <_description>Latvian (programmer US Dvorak)</_description>
-+ <description>Latvian (programmer US Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ykeydvorakprogr</name>
-- <_description>Latvian (programmer US Dvorak, Y variant)</_description>
-+ <description>Latvian (programmer US Dvorak, Y variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>minuskeydvorakprogr</name>
-- <_description>Latvian (programmer US Dvorak, minus variant)</_description>
-+ <description>Latvian (programmer US Dvorak, minus variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Latvian (US Colemak)</_description>
-+ <description>Latvian (US Colemak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>apostrophecolemak</name>
-- <_description>Latvian (US Colemak, apostrophe variant)</_description>
-+ <description>Latvian (US Colemak, apostrophe variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Latvian (Sun Type 6/7)</_description>
-+ <description>Latvian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -230,34 +230,34 @@
- <layout>
- <configItem>
- <name>us</name>
-- <_shortDescription>en</_shortDescription>
-- <_description>English (US)</_description>
-+ <shortDescription>en</shortDescription>
-+ <description>English (US)</description>
- <languageList><iso639Id>eng</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>intl-unicode</name>
-- <_description>English (US, international AltGr Unicode combining)</_description>
-+ <description>English (US, international AltGr Unicode combining)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt-intl-unicode</name>
-- <_description>English (US, international AltGr Unicode combining, alternative)</_description>
-+ <description>English (US, international AltGr Unicode combining, alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ats</name>
-- <_description>Atsina</_description>
-- <!-- No ISO code in ISO639-2, only draft ISO693-3 -->
-+ <description>Atsina</description>
-+
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crd</name>
-- <_description>Coeur d'Alene Salish</_description>
-+ <description>Coeur d'Alene Salish</description>
- <languageList><iso639Id>crd</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -274,13 +274,13 @@
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>English (US, Sun Type 6/7)</_description>
-+ <description>English (US, Sun Type 6/7)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>norman</name>
-- <_description>English (Norman)</_description>
-+ <description>English (Norman)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -288,27 +288,27 @@
- <layout>
- <configItem>
- <name>pl</name>
-- <_shortDescription>pl</_shortDescription>
-- <_description>Polish</_description>
-+ <shortDescription>pl</shortDescription>
-+ <description>Polish</description>
- <languageList><iso639Id>pol</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>Polish (international with dead keys)</_description>
-+ <description>Polish (international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Polish (Colemak)</_description>
-+ <description>Polish (Colemak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Polish (Sun Type 6/7)</_description>
-+ <description>Polish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -316,16 +316,16 @@
- <layout>
- <configItem>
- <name>ro</name>
-- <_shortDescription>ro</_shortDescription>
-- <_description>Romanian</_description>
-+ <shortDescription>ro</shortDescription>
-+ <description>Romanian</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>crh_dobruja</name>
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Dobruja Q)</_description>
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Dobruja Q)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -334,13 +334,13 @@
- <variant>
- <configItem>
- <name>ergonomic</name>
-- <_description>Romanian (ergonomic Touchtype)</_description>
-+ <description>Romanian (ergonomic Touchtype)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Romanian (Sun Type 6/7)</_description>
-+ <description>Romanian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -348,15 +348,15 @@
- <layout>
- <configItem>
- <name>rs</name>
-- <_shortDescription>sr</_shortDescription>
-- <_description>Serbian</_description>
-+ <shortDescription>sr</shortDescription>
-+ <description>Serbian</description>
- <languageList><iso639Id>srp</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>combiningkeys</name>
-- <_description>Serbian (combining accents instead of dead keys)</_description>
-+ <description>Serbian (combining accents instead of dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -364,8 +364,8 @@
- <layout>
- <configItem>
- <name>ru</name>
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian</_description>
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian</description>
- </configItem>
- <variantList>
- <variant>
-@@ -378,8 +378,8 @@
- <variant>
- <configItem>
- <name>ruu</name>
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (with Ukrainian-Belorussian layout)</_description>
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (with Ukrainian-Belorussian layout)</description>
- <languageList><iso639Id>rus</iso639Id>
- <iso639Id>ukr</iso639Id>
- <iso639Id>bel</iso639Id></languageList>
-@@ -388,7 +388,7 @@
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Russian (Sun Type 6/7)</_description>
-+ <description>Russian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -396,8 +396,8 @@
- <layout>
- <configItem>
- <name>am</name>
-- <_shortDescription>hy</_shortDescription>
-- <_description>Armenian</_description>
-+ <shortDescription>hy</shortDescription>
-+ <description>Armenian</description>
- <languageList>
- <iso639Id>hye</iso639Id>
- </languageList>
-@@ -406,7 +406,7 @@
- <variant>
- <configItem>
- <name>olpc-phonetic</name>
-- <_description>Armenian (OLPC phonetic)</_description>
-+ <description>Armenian (OLPC phonetic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -414,15 +414,15 @@
- <layout>
- <configItem>
- <name>il</name>
-- <_shortDescription>he</_shortDescription>
-- <_description>Hebrew</_description>
-+ <shortDescription>he</shortDescription>
-+ <description>Hebrew</description>
- <languageList><iso639Id>heb</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>biblicalSIL</name>
-- <_description>Hebrew (Biblical, SIL phonetic)</_description>
-+ <description>Hebrew (Biblical, SIL phonetic)</description>
- <languageList><iso639Id>heb</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -431,14 +431,14 @@
- <layout>
- <configItem>
- <name>ara</name>
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic</_description>
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Arabic (Sun Type 6/7)</_description>
-+ <description>Arabic (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -446,14 +446,14 @@
- <layout>
- <configItem>
- <name>be</name>
-- <_shortDescription>be</_shortDescription>
-- <_description>Belgian</_description>
-+ <shortDescription>be</shortDescription>
-+ <description>Belgian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Belgian (Sun Type 6/7)</_description>
-+ <description>Belgian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -461,14 +461,14 @@
- <layout>
- <configItem>
- <name>br</name>
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese (Brazil)</_description>
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese (Brazil)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Portuguese (Brazil, Sun Type 6/7)</_description>
-+ <description>Portuguese (Brazil, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -476,14 +476,14 @@
- <layout>
- <configItem>
- <name>cz</name>
-- <_shortDescription>cs</_shortDescription>
-- <_description>Czech</_description>
-+ <shortDescription>cs</shortDescription>
-+ <description>Czech</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Czech (Sun Type 6/7)</_description>
-+ <description>Czech (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -491,14 +491,14 @@
- <layout>
- <configItem>
- <name>dk</name>
-- <_shortDescription>da</_shortDescription>
-- <_description>Danish</_description>
-+ <shortDescription>da</shortDescription>
-+ <description>Danish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Danish (Sun Type 6/7)</_description>
-+ <description>Danish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -506,14 +506,14 @@
- <layout>
- <configItem>
- <name>nl</name>
-- <_shortDescription>nl</_shortDescription>
-- <_description>Dutch</_description>
-+ <shortDescription>nl</shortDescription>
-+ <description>Dutch</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Dutch (Sun Type 6/7)</_description>
-+ <description>Dutch (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -521,14 +521,14 @@
- <layout>
- <configItem>
- <name>ee</name>
-- <_shortDescription>et</_shortDescription>
-- <_description>Estonian</_description>
-+ <shortDescription>et</shortDescription>
-+ <description>Estonian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Estonian (Sun Type 6/7)</_description>
-+ <description>Estonian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -536,14 +536,14 @@
- <layout>
- <configItem>
- <name>fi</name>
-- <_shortDescription>fi</_shortDescription>
-- <_description>Finnish</_description>
-+ <shortDescription>fi</shortDescription>
-+ <description>Finnish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Finnish (Sun Type 6/7)</_description>
-+ <description>Finnish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -551,14 +551,14 @@
- <layout>
- <configItem>
- <name>fr</name>
-- <_shortDescription>fr</_shortDescription>
-- <_description>French</_description>
-+ <shortDescription>fr</shortDescription>
-+ <description>French</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>French (Sun Type 6/7)</_description>
-+ <description>French (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -566,14 +566,14 @@
- <layout>
- <configItem>
- <name>gr</name>
-- <_shortDescription>gr</_shortDescription>
-- <_description>Greek</_description>
-+ <shortDescription>gr</shortDescription>
-+ <description>Greek</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Greek (Sun Type 6/7)</_description>
-+ <description>Greek (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -581,14 +581,14 @@
- <layout>
- <configItem>
- <name>it</name>
-- <_shortDescription>it</_shortDescription>
-- <_description>Italian</_description>
-+ <shortDescription>it</shortDescription>
-+ <description>Italian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Italian (Sun Type 6/7)</_description>
-+ <description>Italian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -596,26 +596,26 @@
- <layout>
- <configItem>
- <name>jp</name>
-- <_shortDescription>ja</_shortDescription>
-- <_description>Japanese</_description>
-+ <shortDescription>ja</shortDescription>
-+ <description>Japanese</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Japanese (Sun Type 6)</_description>
-+ <description>Japanese (Sun Type 6)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type7</name>
-- <_description>Japanese (Sun Type 7 - pc compatible)</_description>
-+ <description>Japanese (Sun Type 7 - pc compatible)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type7_suncompat</name>
-- <_description>Japanese (Sun Type 7 - sun compatible)</_description>
-+ <description>Japanese (Sun Type 7 - sun compatible)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -623,14 +623,14 @@
- <layout>
- <configItem>
- <name>no</name>
-- <_shortDescription>no</_shortDescription>
-- <_description>Norwegian</_description>
-+ <shortDescription>no</shortDescription>
-+ <description>Norwegian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Norwegian (Sun Type 6/7)</_description>
-+ <description>Norwegian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -638,14 +638,14 @@
- <layout>
- <configItem>
- <name>pt</name>
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese</_description>
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Portuguese (Sun Type 6/7)</_description>
-+ <description>Portuguese (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -653,14 +653,14 @@
- <layout>
- <configItem>
- <name>sk</name>
-- <_shortDescription>sk</_shortDescription>
-- <_description>Slovak</_description>
-+ <shortDescription>sk</shortDescription>
-+ <description>Slovak</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Slovak (Sun Type 6/7)</_description>
-+ <description>Slovak (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -668,14 +668,14 @@
- <layout>
- <configItem>
- <name>es</name>
-- <_shortDescription>es</_shortDescription>
-- <_description>Spanish</_description>
-+ <shortDescription>es</shortDescription>
-+ <description>Spanish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Spanish (Sun Type 6/7)</_description>
-+ <description>Spanish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -683,14 +683,14 @@
- <layout>
- <configItem>
- <name>se</name>
-- <_shortDescription>sv</_shortDescription>
-- <_description>Swedish</_description>
-+ <shortDescription>sv</shortDescription>
-+ <description>Swedish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Swedish (Sun Type 6/7)</_description>
-+ <description>Swedish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -698,20 +698,20 @@
- <layout>
- <configItem>
- <name>ch</name>
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland)</_description>
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6_de</name>
-- <_description>German (Switzerland, Sun Type 6/7)</_description>
-+ <description>German (Switzerland, Sun Type 6/7)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6_fr</name>
-- <_description>French (Switzerland, Sun Type 6/7)</_description>
-+ <description>French (Switzerland, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -719,14 +719,14 @@
- <layout>
- <configItem>
- <name>tr</name>
-- <_shortDescription>tr</_shortDescription>
-- <_description>Turkish</_description>
-+ <shortDescription>tr</shortDescription>
-+ <description>Turkish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Turkish (Sun Type 6/7)</_description>
-+ <description>Turkish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -734,14 +734,14 @@
- <layout>
- <configItem>
- <name>ua</name>
-- <_shortDescription>uk</_shortDescription>
-- <_description>Ukrainian</_description>
-+ <shortDescription>uk</shortDescription>
-+ <description>Ukrainian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Ukrainian (Sun Type 6/7)</_description>
-+ <description>Ukrainian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -749,14 +749,14 @@
- <layout>
- <configItem>
- <name>gb</name>
-- <_shortDescription>en</_shortDescription>
-- <_description>English (UK)</_description>
-+ <shortDescription>en</shortDescription>
-+ <description>English (UK)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>English (UK, Sun Type 6/7)</_description>
-+ <description>English (UK, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -764,18 +764,18 @@
- <layout>
- <configItem>
- <name>kr</name>
-- <_shortDescription>ko</_shortDescription>
-- <_description>Korean</_description>
-+ <shortDescription>ko</shortDescription>
-+ <description>Korean</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Korean (Sun Type 6/7)</_description>
-+ <description>Korean (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- </layoutList>
- <optionList/>
--</xkbConfigRegistry>
-+</xkbConfigRegistry>
-\ No newline at end of file
diff --git a/package/xkeyboard-config/patches/patch-rules_base_xml_in b/package/xkeyboard-config/patches/patch-rules_base_xml_in
deleted file mode 100644
index 5249ade99..000000000
--- a/package/xkeyboard-config/patches/patch-rules_base_xml_in
+++ /dev/null
@@ -1,7654 +0,0 @@
---- xkeyboard-config-2.11.orig/rules/base.xml.in 2014-01-15 02:02:39.000000000 +0100
-+++ xkeyboard-config-2.11/rules/base.xml.in 2014-03-04 14:31:12.000000000 +0100
-@@ -5,627 +5,627 @@
- <model>
- <configItem>
- <name>pc101</name>
-- <_description>Generic 101-key PC</_description>
-+ <description>Generic 101-key PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc102</name>
-- <_description>Generic 102-key (Intl) PC</_description>
-+ <description>Generic 102-key (Intl) PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc104</name>
-- <_description>Generic 104-key PC</_description>
-+ <description>Generic 104-key PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc105</name>
-- <_description>Generic 105-key (Intl) PC</_description>
-+ <description>Generic 105-key (Intl) PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dell101</name>
-- <_description>Dell 101-key PC</_description>
-+ <description>Dell 101-key PC</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>latitude</name>
-- <_description>Dell Latitude series laptop</_description>
-+ <description>Dell Latitude series laptop</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellm65</name>
-- <_description>Dell Precision M65</_description>
-+ <description>Dell Precision M65</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>everex</name>
-- <_description>Everex STEPnote</_description>
-+ <description>Everex STEPnote</description>
- <vendor>Everex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>flexpro</name>
-- <_description>Keytronic FlexPro</_description>
-+ <description>Keytronic FlexPro</description>
- <vendor>Keytronic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft</name>
-- <_description>Microsoft Natural</_description>
-+ <description>Microsoft Natural</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>omnikey101</name>
-- <_description>Northgate OmniKey 101</_description>
-+ <description>Northgate OmniKey 101</description>
- <vendor>Northgate</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>winbook</name>
-- <_description>Winbook Model XP5</_description>
-+ <description>Winbook Model XP5</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc98</name>
-- <_description>PC-98xx Series</_description>
-+ <description>PC-98xx Series</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4techKB21</name>
-- <_description>A4Tech KB-21</_description>
-+ <description>A4Tech KB-21</description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4techKBS8</name>
-- <_description>A4Tech KBS-8</_description>
-+ <description>A4Tech KBS-8</description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4_rfkb23</name>
-- <_description>A4Tech Wireless Desktop RFKB-23</_description>
-+ <description>A4Tech Wireless Desktop RFKB-23</description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>airkey</name>
-- <_description>Acer AirKey V</_description>
-+ <description>Acer AirKey V</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>azonaRF2300</name>
-- <_description>Azona RF2300 wireless Internet Keyboard</_description>
-+ <description>Azona RF2300 wireless Internet Keyboard</description>
- <vendor>Azona</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>scorpius</name>
-- <_description>Advance Scorpius KI</_description>
-+ <description>Advance Scorpius KI</description>
- <vendor>Scorpius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>brother</name>
-- <_description>Brother Internet Keyboard</_description>
-+ <description>Brother Internet Keyboard</description>
- <vendor>Brother</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5113rf</name>
-- <_description>BTC 5113RF Multimedia</_description>
-+ <description>BTC 5113RF Multimedia</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5126t</name>
-- <_description>BTC 5126T</_description>
-+ <description>BTC 5126T</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc6301urf</name>
-- <_description>BTC 6301URF</_description>
-+ <description>BTC 6301URF</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9000</name>
-- <_description>BTC 9000</_description>
-+ <description>BTC 9000</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9000a</name>
-- <_description>BTC 9000A</_description>
-+ <description>BTC 9000A</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9001ah</name>
-- <_description>BTC 9001AH</_description>
-+ <description>BTC 9001AH</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5090</name>
-- <_description>BTC 5090</_description>
-+ <description>BTC 5090</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9019u</name>
-- <_description>BTC 9019U</_description>
-+ <description>BTC 9019U</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9116u</name>
-- <_description>BTC 9116U Mini Wireless Internet and Gaming</_description>
-+ <description>BTC 9116U Mini Wireless Internet and Gaming</description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherryblue</name>
-- <_description>Cherry Blue Line CyBo@rd</_description>
-+ <description>Cherry Blue Line CyBo@rd</description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherryblueb</name>
-- <_description>Cherry CyMotion Master XPress</_description>
-+ <description>Cherry CyMotion Master XPress</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrybluea</name>
-- <_description>Cherry Blue Line CyBo@rd (alternate option)</_description>
-+ <description>Cherry Blue Line CyBo@rd (alternate option)</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrycyboard</name>
-- <_description>Cherry CyBo@rd USB-Hub</_description>
-+ <description>Cherry CyBo@rd USB-Hub</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrycmexpert</name>
-- <_description>Cherry CyMotion Expert</_description>
-+ <description>Cherry CyMotion Expert</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrybunlim</name>
-- <_description>Cherry B.UNLIMITED</_description>
-+ <description>Cherry B.UNLIMITED</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony</name>
-- <_description>Chicony Internet Keyboard</_description>
-+ <description>Chicony Internet Keyboard</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony0108</name>
-- <_description>Chicony KU-0108</_description>
-+ <description>Chicony KU-0108</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony0420</name>
-- <_description>Chicony KU-0420</_description>
-+ <description>Chicony KU-0420</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony9885</name>
-- <_description>Chicony KB-9885</_description>
-+ <description>Chicony KB-9885</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqeak8</name>
-- <_description>Compaq Easy Access Keyboard</_description>
-+ <description>Compaq Easy Access Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik7</name>
-- <_description>Compaq Internet Keyboard (7 keys)</_description>
-+ <description>Compaq Internet Keyboard (7 keys)</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik13</name>
-- <_description>Compaq Internet Keyboard (13 keys)</_description>
-+ <description>Compaq Internet Keyboard (13 keys)</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik18</name>
-- <_description>Compaq Internet Keyboard (18 keys)</_description>
-+ <description>Compaq Internet Keyboard (18 keys)</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cymotionlinux</name>
-- <_description>Cherry CyMotion Master Linux</_description>
-+ <description>Cherry CyMotion Master Linux</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>armada</name>
-- <_description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</_description>
-+ <description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>presario</name>
-- <_description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</_description>
-+ <description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ipaq</name>
-- <_description>Compaq iPaq Keyboard</_description>
-+ <description>Compaq iPaq Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dell</name>
-- <_description>Dell</_description>
-+ <description>Dell</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellsk8125</name>
-- <_description>Dell SK-8125</_description>
-+ <description>Dell SK-8125</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellsk8135</name>
-- <_description>Dell SK-8135</_description>
-+ <description>Dell SK-8135</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellusbmm</name>
-- <_description>Dell USB Multimedia Keyboard</_description>
-+ <description>Dell USB Multimedia Keyboard</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>inspiron</name>
-- <_description>Dell Laptop/notebook Inspiron 6xxx/8xxx</_description>
-+ <description>Dell Laptop/notebook Inspiron 6xxx/8xxx</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>precision_m</name>
-- <_description>Dell Laptop/notebook Precision M series</_description>
-+ <description>Dell Laptop/notebook Precision M series</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dexxa</name>
-- <_description>Dexxa Wireless Desktop Keyboard</_description>
-+ <description>Dexxa Wireless Desktop Keyboard</description>
- <vendor>Dexxa</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>diamond</name>
-- <_description>Diamond 9801 / 9802 series</_description>
-+ <description>Diamond 9801 / 9802 series</description>
- <vendor>Diamond</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dtk2000</name>
-- <_description>DTK2000</_description>
-+ <description>DTK2000</description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ennyah_dkb1008</name>
-- <_description>Ennyah DKB-1008</_description>
-+ <description>Ennyah DKB-1008</description>
- <vendor>Ennyah</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>fscaa1667g</name>
-- <_description>Fujitsu-Siemens Computers AMILO laptop</_description>
-+ <description>Fujitsu-Siemens Computers AMILO laptop</description>
- <vendor>Fujitsu-Siemens</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>genius</name>
-- <_description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</_description>
-+ <description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuscomfy</name>
-- <_description>Genius Comfy KB-12e</_description>
-+ <description>Genius Comfy KB-12e</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuscomfy2</name>
-- <_description>Genius Comfy KB-21e-Scroll</_description>
-+ <description>Genius Comfy KB-21e-Scroll</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuskb19e</name>
-- <_description>Genius KB-19e NB</_description>
-+ <description>Genius KB-19e NB</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuskkb2050hs</name>
-- <_description>Genius KKB-2050HS</_description>
-+ <description>Genius KKB-2050HS</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>gyration</name>
-- <_description>Gyration</_description>
-+ <description>Gyration</description>
- <vendor>Gyration</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>htcdream</name>
-- <_description>HTC Dream</_description>
-+ <description>HTC Dream</description>
- <vendor>HTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>kinesis</name>
-- <_description>Kinesis</_description>
-+ <description>Kinesis</description>
- <vendor>Kinesis</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logitech_base</name>
-- <_description>Logitech Generic Keyboard</_description>
-+ <description>Logitech Generic Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logitech_g15</name>
-- <_description>Logitech G15 extra keys via G15daemon</_description>
-+ <description>Logitech G15 extra keys via G15daemon</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpi6</name>
-- <_description>Hewlett-Packard Internet Keyboard</_description>
-+ <description>Hewlett-Packard Internet Keyboard</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp250x</name>
-- <_description>Hewlett-Packard SK-250x Multimedia Keyboard</_description>
-+ <description>Hewlett-Packard SK-250x Multimedia Keyboard</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxe3gc</name>
-- <_description>Hewlett-Packard Omnibook XE3 GC</_description>
-+ <description>Hewlett-Packard Omnibook XE3 GC</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxe3gf</name>
-- <_description>Hewlett-Packard Omnibook XE3 GF</_description>
-+ <description>Hewlett-Packard Omnibook XE3 GF</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxt1000</name>
-- <_description>Hewlett-Packard Omnibook XT1000</_description>
-+ <description>Hewlett-Packard Omnibook XT1000</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpdv5</name>
-- <_description>Hewlett-Packard Pavilion dv5</_description>
-+ <description>Hewlett-Packard Pavilion dv5</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpzt11xx</name>
-- <_description>Hewlett-Packard Pavilion ZT11xx</_description>
-+ <description>Hewlett-Packard Pavilion ZT11xx</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp500fa</name>
-- <_description>Hewlett-Packard Omnibook 500 FA</_description>
-+ <description>Hewlett-Packard Omnibook 500 FA</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp5xx</name>
-- <_description>Hewlett-Packard Omnibook 5xx</_description>
-+ <description>Hewlett-Packard Omnibook 5xx</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpnx9020</name>
-- <_description>Hewlett-Packard nx9020</_description>
-+ <description>Hewlett-Packard nx9020</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp6000</name>
-- <_description>Hewlett-Packard Omnibook 6000/6100</_description>
-+ <description>Hewlett-Packard Omnibook 6000/6100</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>honeywell_euroboard</name>
-- <_description>Honeywell Euroboard</_description>
-+ <description>Honeywell Euroboard</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpmini110</name>
-- <_description>Hewlett-Packard Mini 110 Notebook</_description>
-+ <description>Hewlett-Packard Mini 110 Notebook</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>rapidaccess</name>
-- <_description>IBM Rapid Access</_description>
-+ <description>IBM Rapid Access</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>rapidaccess2</name>
-- <_description>IBM Rapid Access II</_description>
-+ <description>IBM Rapid Access II</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpad</name>
-- <_description>IBM ThinkPad 560Z/600/600E/A22E</_description>
-+ <description>IBM ThinkPad 560Z/600/600E/A22E</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpad60</name>
-- <_description>IBM ThinkPad R60/T60/R61/T61</_description>
-+ <description>IBM ThinkPad R60/T60/R61/T61</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpadz60</name>
-- <_description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</_description>
-+ <description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ibm_spacesaver</name>
-- <_description>IBM Space Saver</_description>
-+ <description>IBM Space Saver</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiaccess</name>
-- <_description>Logitech Access Keyboard</_description>
-+ <description>Logitech Access Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiclx300</name>
-- <_description>Logitech Cordless Desktop LX-300</_description>
-+ <description>Logitech Cordless Desktop LX-300</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logii350</name>
-- <_description>Logitech Internet 350 Keyboard</_description>
-+ <description>Logitech Internet 350 Keyboard</description>
- <vendor>Logitech</vendor>
- <hwList> <hwId>046d:c313</hwId></hwList>
- </configItem>
-@@ -633,665 +633,665 @@
- <model>
- <configItem>
- <name>logimel</name>
-- <_description>Logitech Media Elite Keyboard</_description>
-+ <description>Logitech Media Elite Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd</name>
-- <_description>Logitech Cordless Desktop</_description>
-+ <description>Logitech Cordless Desktop</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_it</name>
-- <_description>Logitech Cordless Desktop iTouch</_description>
-+ <description>Logitech Cordless Desktop iTouch</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_nav</name>
-- <_description>Logitech Cordless Desktop Navigator</_description>
-+ <description>Logitech Cordless Desktop Navigator</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_opt</name>
-- <_description>Logitech Cordless Desktop Optical</_description>
-+ <description>Logitech Cordless Desktop Optical</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicda</name>
-- <_description>Logitech Cordless Desktop (alternate option)</_description>
-+ <description>Logitech Cordless Desktop (alternate option)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicdpa2</name>
-- <_description>Logitech Cordless Desktop Pro (alternate option 2)</_description>
-+ <description>Logitech Cordless Desktop Pro (alternate option 2)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicfn</name>
-- <_description>Logitech Cordless Freedom/Desktop Navigator</_description>
-+ <description>Logitech Cordless Freedom/Desktop Navigator</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicdn</name>
-- <_description>Logitech Cordless Desktop Navigator</_description>
-+ <description>Logitech Cordless Desktop Navigator</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiitc</name>
-- <_description>Logitech iTouch Cordless Keyboard (model Y-RB6)</_description>
-+ <description>Logitech iTouch Cordless Keyboard (model Y-RB6)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiik</name>
-- <_description>Logitech Internet Keyboard</_description>
-+ <description>Logitech Internet Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>itouch</name>
-- <_description>Logitech iTouch</_description>
-+ <description>Logitech iTouch</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicink</name>
-- <_description>Logitech Internet Navigator Keyboard</_description>
-+ <description>Logitech Internet Navigator Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiex110</name>
-- <_description>Logitech Cordless Desktop EX110</_description>
-+ <description>Logitech Cordless Desktop EX110</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiinkse</name>
-- <_description>Logitech iTouch Internet Navigator Keyboard SE</_description>
-+ <description>Logitech iTouch Internet Navigator Keyboard SE</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiinkseusb</name>
-- <_description>Logitech iTouch Internet Navigator Keyboard SE (USB)</_description>
-+ <description>Logitech iTouch Internet Navigator Keyboard SE (USB)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiultrax</name>
-- <_description>Logitech Ultra-X Keyboard</_description>
-+ <description>Logitech Ultra-X Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiultraxc</name>
-- <_description>Logitech Ultra-X Cordless Media Desktop Keyboard</_description>
-+ <description>Logitech Ultra-X Cordless Media Desktop Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logidinovo</name>
-- <_description>Logitech diNovo Keyboard</_description>
-+ <description>Logitech diNovo Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logidinovoedge</name>
-- <_description>Logitech diNovo Edge Keyboard</_description>
-+ <description>Logitech diNovo Edge Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx1998</name>
-- <_description>Memorex MX1998</_description>
-+ <description>Memorex MX1998</description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx2500</name>
-- <_description>Memorex MX2500 EZ-Access Keyboard</_description>
-+ <description>Memorex MX2500 EZ-Access Keyboard</description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx2750</name>
-- <_description>Memorex MX2750</_description>
-+ <description>Memorex MX2750</description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft4000</name>
-- <_description>Microsoft Natural Wireless Ergonomic Keyboard 4000</_description>
-+ <description>Microsoft Natural Wireless Ergonomic Keyboard 4000</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft7000</name>
-- <_description>Microsoft Natural Wireless Ergonomic Keyboard 7000</_description>
-+ <description>Microsoft Natural Wireless Ergonomic Keyboard 7000</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftinet</name>
-- <_description>Microsoft Internet Keyboard</_description>
-+ <description>Microsoft Internet Keyboard</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftpro</name>
-- <_description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</_description>
-+ <description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprousb</name>
-- <_description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</_description>
-+ <description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprooem</name>
-- <_description>Microsoft Natural Keyboard Pro OEM</_description>
-+ <description>Microsoft Natural Keyboard Pro OEM</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>vsonku306</name>
-- <_description>ViewSonic KU-306 Internet Keyboard</_description>
-+ <description>ViewSonic KU-306 Internet Keyboard</description>
- <vendor>ViewSonic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprose</name>
-- <_description>Microsoft Internet Keyboard Pro, Swedish</_description>
-+ <description>Microsoft Internet Keyboard Pro, Swedish</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftoffice</name>
-- <_description>Microsoft Office Keyboard</_description>
-+ <description>Microsoft Office Keyboard</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftmult</name>
-- <_description>Microsoft Wireless Multimedia Keyboard 1.0A</_description>
-+ <description>Microsoft Wireless Multimedia Keyboard 1.0A</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftelite</name>
-- <_description>Microsoft Natural Keyboard Elite</_description>
-+ <description>Microsoft Natural Keyboard Elite</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftccurve2k</name>
-- <_description>Microsoft Comfort Curve Keyboard 2000</_description>
-+ <description>Microsoft Comfort Curve Keyboard 2000</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>oretec</name>
-- <_description>Ortek MCK-800 MM/Internet keyboard</_description>
-+ <description>Ortek MCK-800 MM/Internet keyboard</description>
- <vendor>Ortek</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>propeller</name>
-- <_description>Propeller Voyager (KTEZ-1000)</_description>
-+ <description>Propeller Voyager (KTEZ-1000)</description>
- <vendor>KeyTronic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>qtronix</name>
-- <_description>QTronix Scorpius 98N+</_description>
-+ <description>QTronix Scorpius 98N+</description>
- <vendor>QTronix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>samsung4500</name>
-- <_description>Samsung SDM 4500P</_description>
-+ <description>Samsung SDM 4500P</description>
- <vendor>Samsung</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>samsung4510</name>
-- <_description>Samsung SDM 4510P</_description>
-+ <description>Samsung SDM 4510P</description>
- <vendor>Samsung</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sanwaskbkg3</name>
-- <_description>Sanwa Supply SKB-KG3</_description>
-+ <description>Sanwa Supply SKB-KG3</description>
- <vendor>Sanwa Supply Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk1300</name>
-- <_description>SK-1300</_description>
-+ <description>SK-1300</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk2500</name>
-- <_description>SK-2500</_description>
-+ <description>SK-2500</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk6200</name>
-- <_description>SK-6200</_description>
-+ <description>SK-6200</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk7100</name>
-- <_description>SK-7100</_description>
-+ <description>SK-7100</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sp_inet</name>
-- <_description>Super Power Multimedia Keyboard</_description>
-+ <description>Super Power Multimedia Keyboard</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sven</name>
-- <_description>SVEN Ergonomic 2500</_description>
-+ <description>SVEN Ergonomic 2500</description>
- <vendor>SVEN</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sven303</name>
-- <_description>SVEN Slim 303</_description>
-+ <description>SVEN Slim 303</description>
- <vendor>SVEN</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>symplon</name>
-- <_description>Symplon PaceBook (tablet PC)</_description>
-+ <description>Symplon PaceBook (tablet PC)</description>
- <vendor>Symplon</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>toshiba_s3000</name>
-- <_description>Toshiba Satellite S3000</_description>
-+ <description>Toshiba Satellite S3000</description>
- <vendor>Toshiba</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trust</name>
-- <_description>Trust Wireless Keyboard Classic</_description>
-+ <description>Trust Wireless Keyboard Classic</description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trustda</name>
-- <_description>Trust Direct Access Keyboard</_description>
-+ <description>Trust Direct Access Keyboard</description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trust_slimline</name>
-- <_description>Trust Slimline</_description>
-+ <description>Trust Slimline</description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2020</name>
-- <_description>TypeMatrix EZ-Reach 2020</_description>
-+ <description>TypeMatrix EZ-Reach 2020</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030PS2</name>
-- <_description>TypeMatrix EZ-Reach 2030 PS2</_description>
-+ <description>TypeMatrix EZ-Reach 2030 PS2</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB</name>
-- <_description>TypeMatrix EZ-Reach 2030 USB</_description>
-+ <description>TypeMatrix EZ-Reach 2030 USB</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB-102</name>
-- <_description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</_description>
-+ <description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB-106</name>
-- <_description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</_description>
-+ <description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>yahoo</name>
-- <_description>Yahoo! Internet Keyboard</_description>
-+ <description>Yahoo! Internet Keyboard</description>
- <vendor>Yahoo!</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macbook78</name>
-- <_description>MacBook/MacBook Pro</_description>
-+ <description>MacBook/MacBook Pro</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macbook79</name>
-- <_description>MacBook/MacBook Pro (Intl)</_description>
-+ <description>MacBook/MacBook Pro (Intl)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh</name>
-- <_description>Macintosh</_description>
-+ <description>Macintosh</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh_old</name>
-- <_description>Macintosh Old</_description>
-+ <description>Macintosh Old</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh_hhk</name>
-- <_description>Happy Hacking Keyboard for Mac</_description>
-+ <description>Happy Hacking Keyboard for Mac</description>
- <vendor>Fujitsu</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_c300</name>
-- <_description>Acer C300</_description>
-+ <description>Acer C300</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_ferrari4k</name>
-- <_description>Acer Ferrari 4000</_description>
-+ <description>Acer Ferrari 4000</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_laptop</name>
-- <_description>Acer Laptop</_description>
-+ <description>Acer Laptop</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>asus_laptop</name>
-- <_description>Asus Laptop</_description>
-+ <description>Asus Laptop</description>
- <vendor>Asus</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>apple</name>
-- <_description>Apple</_description>
-+ <description>Apple</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>apple_laptop</name>
-- <_description>Apple Laptop</_description>
-+ <description>Apple Laptop</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_ansi</name>
-- <_description>Apple Aluminium Keyboard (ANSI)</_description>
-+ <description>Apple Aluminium Keyboard (ANSI)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_iso</name>
-- <_description>Apple Aluminium Keyboard (ISO)</_description>
-+ <description>Apple Aluminium Keyboard (ISO)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_jis</name>
-- <_description>Apple Aluminium Keyboard (JIS)</_description>
-+ <description>Apple Aluminium Keyboard (JIS)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>silvercrest</name>
-- <_description>SILVERCREST Multimedia Wireless Keyboard</_description>
-+ <description>SILVERCREST Multimedia Wireless Keyboard</description>
- <vendor>Silvercrest</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>emachines</name>
-- <_description>Laptop/notebook eMachines m68xx</_description>
-+ <description>Laptop/notebook eMachines m68xx</description>
- <vendor>eMachines</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx</name>
-- <_description>BenQ X-Touch</_description>
-+ <description>BenQ X-Touch</description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx730</name>
-- <_description>BenQ X-Touch 730</_description>
-+ <description>BenQ X-Touch 730</description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx800</name>
-- <_description>BenQ X-Touch 800</_description>
-+ <description>BenQ X-Touch 800</description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hhk</name>
-- <_description>Happy Hacking Keyboard</_description>
-+ <description>Happy Hacking Keyboard</description>
- <vendor>Fujitsu</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>classmate</name>
-- <_description>Classmate PC</_description>
-+ <description>Classmate PC</description>
- <vendor>Intel</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>olpc</name>
-- <_description>OLPC</_description>
-+ <description>OLPC</description>
- <vendor>OLPC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_usb</name>
-- <_description>Sun Type 7 USB</_description>
-+ <description>Sun Type 7 USB</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_euro_usb</name>
-- <_description>Sun Type 7 USB (European layout)</_description>
-+ <description>Sun Type 7 USB (European layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_unix_usb</name>
-- <_description>Sun Type 7 USB (Unix layout)</_description>
-+ <description>Sun Type 7 USB (Unix layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_jp_usb</name>
-- <_description>Sun Type 7 USB (Japanese layout) / Japanese 106-key</_description>
-+ <description>Sun Type 7 USB (Japanese layout) / Japanese 106-key</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_usb</name>
-- <_description>Sun Type 6/7 USB</_description>
-+ <description>Sun Type 6/7 USB</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_euro_usb</name>
-- <_description>Sun Type 6/7 USB (European layout)</_description>
-+ <description>Sun Type 6/7 USB (European layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_unix_usb</name>
-- <_description>Sun Type 6 USB (Unix layout)</_description>
-+ <description>Sun Type 6 USB (Unix layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_jp_usb</name>
-- <_description>Sun Type 6 USB (Japanese layout)</_description>
-+ <description>Sun Type 6 USB (Japanese layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_jp</name>
-- <_description>Sun Type 6 (Japanese layout)</_description>
-+ <description>Sun Type 6 (Japanese layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>targa_v811</name>
-- <_description>Targa Visionary 811</_description>
-+ <description>Targa Visionary 811</description>
- <vendor>Targa</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>unitekkb1925</name>
-- <_description>Unitek KB-1925</_description>
-+ <description>Unitek KB-1925</description>
- <vendor>Unitek Group</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compalfl90</name>
-- <_description>FL90</_description>
-+ <description>FL90</description>
- <vendor>Compal Electronics Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>creativedw7000</name>
-- <_description>Creative Desktop Wireless 7000</_description>
-+ <description>Creative Desktop Wireless 7000</description>
- <vendor>Creative</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>htcdream</name>
-- <_description>Htc Dream phone</_description>
-+ <description>Htc Dream phone</description>
- <vendor>htc</vendor>
- </configItem>
- </model>
-@@ -1300,9 +1300,9 @@
- <layout>
- <configItem>
- <name>us</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (US)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (US)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -1311,9 +1311,9 @@
- <variant>
- <configItem>
- <name>chr</name>
-- <!-- Keyboard indicator for Cherokee layouts -->
-- <_shortDescription>chr</_shortDescription>
-- <_description>Cherokee</_description>
-+
-+ <shortDescription>chr</shortDescription>
-+ <description>Cherokee</description>
- <languageList>
- <iso639Id>chr</iso639Id>
- </languageList>
-@@ -1322,75 +1322,75 @@
- <variant>
- <configItem>
- <name>euro</name>
-- <_description>English (US, with euro on 5)</_description>
-+ <description>English (US, with euro on 5)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>English (US, international with dead keys)</_description>
-+ <description>English (US, international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt-intl</name>
-- <_description>English (US, alternative international)</_description>
-+ <description>English (US, alternative international)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>English (Colemak)</_description>
-+ <description>English (Colemak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>English (Dvorak)</_description>
-+ <description>English (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-intl</name>
-- <_description>English (Dvorak, international with dead keys)</_description>
-+ <description>English (Dvorak, international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-alt-intl</name>
-- <_description>English (Dvorak alternative international no dead keys)</_description>
-+ <description>English (Dvorak alternative international no dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-l</name>
-- <_description>English (left handed Dvorak)</_description>
-+ <description>English (left handed Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-r</name>
-- <_description>English (right handed Dvorak)</_description>
-+ <description>English (right handed Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-classic</name>
-- <_description>English (classic Dvorak)</_description>
-+ <description>English (classic Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvp</name>
-- <_description>English (programmer Dvorak)</_description>
-+ <description>English (programmer Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (US, phonetic)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (US, phonetic)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -1399,13 +1399,13 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>English (Macintosh)</_description>
-+ <description>English (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>altgr-intl</name>
-- <_description>English (international AltGr dead keys)</_description>
-+ <description>English (international AltGr dead keys)</description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>fra</iso639Id>
- <iso639Id>ger</iso639Id></languageList>
-@@ -1414,13 +1414,13 @@
- <variant>
- <configItem>
- <name>olpc2</name>
-- <_description>English (the divide/multiply keys toggle the layout)</_description>
-+ <description>English (the divide/multiply keys toggle the layout)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>hbs</name>
-- <_description>Serbo-Croatian (US)</_description>
-+ <description>Serbo-Croatian (US)</description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>bos</iso639Id>
- <iso639Id>hbs</iso639Id>
-@@ -1431,13 +1431,13 @@
- <variant>
- <configItem>
- <name>workman</name>
-- <_description>English (Workman)</_description>
-+ <description>English (Workman)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>workman-intl</name>
-- <_description>English (Workman, international with dead keys)</_description>
-+ <description>English (Workman, international with dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1445,17 +1445,17 @@
- <layout>
- <configItem>
- <name>af</name>
-- <!-- Keyboard indicator for Afghani layouts -->
-- <_shortDescription>fa</_shortDescription>
-- <_description>Afghani</_description>
-+
-+ <shortDescription>fa</shortDescription>
-+ <description>Afghani</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ps</name>
-- <!-- Keyboard indicator for Pashto layouts -->
-- <_shortDescription>ps</_shortDescription>
-- <_description>Pashto</_description>
-+
-+ <shortDescription>ps</shortDescription>
-+ <description>Pashto</description>
- <languageList>
- <iso639Id>pus</iso639Id>
- </languageList>
-@@ -1464,9 +1464,9 @@
- <variant>
- <configItem>
- <name>uz</name>
-- <!-- Keyboard indicator for Uzbek layouts -->
-- <_shortDescription>uz</_shortDescription>
-- <_description>Uzbek (Afghanistan)</_description>
-+
-+ <shortDescription>uz</shortDescription>
-+ <description>Uzbek (Afghanistan)</description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
-@@ -1475,9 +1475,9 @@
- <variant>
- <configItem>
- <name>olpc-ps</name>
-- <!-- Keyboard indicator for Pashto layouts -->
-- <_shortDescription>ps</_shortDescription>
-- <_description>Pashto (Afghanistan, OLPC)</_description>
-+
-+ <shortDescription>ps</shortDescription>
-+ <description>Pashto (Afghanistan, OLPC)</description>
- <languageList>
- <iso639Id>pus</iso639Id>
- </languageList>
-@@ -1486,17 +1486,17 @@
- <variant>
- <configItem>
- <name>fa-olpc</name>
-- <!-- Keyboard indicator for Persian layouts -->
-- <_shortDescription>fa</_shortDescription>
-- <_description>Persian (Afghanistan, Dari OLPC)</_description>
-+
-+ <shortDescription>fa</shortDescription>
-+ <description>Persian (Afghanistan, Dari OLPC)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>uz-olpc</name>
-- <!-- Keyboard indicator for Uzbek layouts -->
-- <_shortDescription>uz</_shortDescription>
-- <_description>Uzbek (Afghanistan, OLPC)</_description>
-+
-+ <shortDescription>uz</shortDescription>
-+ <description>Uzbek (Afghanistan, OLPC)</description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
-@@ -1507,9 +1507,9 @@
- <layout>
- <configItem>
- <name>ara</name>
-- <!-- Keyboard indicator for Arabic layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic</description>
- <countryList>
- <iso3166Id>AE</iso3166Id>
- <iso3166Id>BH</iso3166Id>
-@@ -1539,37 +1539,37 @@
- <variant>
- <configItem>
- <name>azerty</name>
-- <_description>Arabic (azerty)</_description>
-+ <description>Arabic (azerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>azerty_digits</name>
-- <_description>Arabic (azerty/digits)</_description>
-+ <description>Arabic (azerty/digits)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>digits</name>
-- <_description>Arabic (digits)</_description>
-+ <description>Arabic (digits)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Arabic (qwerty)</_description>
-+ <description>Arabic (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_digits</name>
-- <_description>Arabic (qwerty/digits)</_description>
-+ <description>Arabic (qwerty/digits)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>buckwalter</name>
-- <_description>Arabic (Buckwalter)</_description>
-+ <description>Arabic (Buckwalter)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1577,9 +1577,9 @@
- <layout>
- <configItem>
- <name>al</name>
-- <!-- Keyboard indicator for Albanian layouts -->
-- <_shortDescription>sq</_shortDescription>
-- <_description>Albanian</_description>
-+
-+ <shortDescription>sq</shortDescription>
-+ <description>Albanian</description>
- <languageList>
- <iso639Id>alb</iso639Id>
- </languageList>
-@@ -1589,9 +1589,9 @@
- <layout>
- <configItem>
- <name>am</name>
-- <!-- Keyboard indicator for Armenian layouts -->
-- <_shortDescription>hy</_shortDescription>
-- <_description>Armenian</_description>
-+
-+ <shortDescription>hy</shortDescription>
-+ <description>Armenian</description>
- <languageList>
- <iso639Id>hye</iso639Id>
- </languageList>
-@@ -1600,31 +1600,31 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Armenian (phonetic)</_description>
-+ <description>Armenian (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic-alt</name>
-- <_description>Armenian (alternative phonetic)</_description>
-+ <description>Armenian (alternative phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eastern</name>
-- <_description>Armenian (eastern)</_description>
-+ <description>Armenian (eastern)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>western</name>
-- <_description>Armenian (western)</_description>
-+ <description>Armenian (western)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eastern-alt</name>
-- <_description>Armenian (alternative eastern)</_description>
-+ <description>Armenian (alternative eastern)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1632,9 +1632,9 @@
- <layout>
- <configItem>
- <name>at</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Austria)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Austria)</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
-@@ -1643,19 +1643,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>German (Austria, eliminate dead keys)</_description>
-+ <description>German (Austria, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>German (Austria, Sun dead keys)</_description>
-+ <description>German (Austria, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>German (Austria, Macintosh)</_description>
-+ <description>German (Austria, Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1663,9 +1663,9 @@
- <layout>
- <configItem>
- <name>az</name>
-- <!-- Keyboard indicator for Azerbaijani layouts -->
-- <_shortDescription>az</_shortDescription>
-- <_description>Azerbaijani</_description>
-+
-+ <shortDescription>az</shortDescription>
-+ <description>Azerbaijani</description>
- <languageList>
- <iso639Id>aze</iso639Id>
- </languageList>
-@@ -1674,7 +1674,7 @@
- <variant>
- <configItem>
- <name>cyrillic</name>
-- <_description>Azerbaijani (Cyrillic)</_description>
-+ <description>Azerbaijani (Cyrillic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1682,9 +1682,9 @@
- <layout>
- <configItem>
- <name>by</name>
-- <!-- Keyboard indicator for Belarusian layouts -->
-- <_shortDescription>by</_shortDescription>
-- <_description>Belarusian</_description>
-+
-+ <shortDescription>by</shortDescription>
-+ <description>Belarusian</description>
- <languageList>
- <iso639Id>bel</iso639Id>
- </languageList>
-@@ -1693,13 +1693,13 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Belarusian (legacy)</_description>
-+ <description>Belarusian (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin</name>
-- <_description>Belarusian (Latin)</_description>
-+ <description>Belarusian (Latin)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1707,9 +1707,9 @@
- <layout>
- <configItem>
- <name>be</name>
-- <!-- Keyboard indicator for Belgian layouts -->
-- <_shortDescription>be</_shortDescription>
-- <_description>Belgian</_description>
-+
-+ <shortDescription>be</shortDescription>
-+ <description>Belgian</description>
- <languageList><iso639Id>ger</iso639Id>
- <iso639Id>nld</iso639Id>
- <iso639Id>fra</iso639Id></languageList>
-@@ -1718,43 +1718,43 @@
- <variant>
- <configItem>
- <name>oss</name>
-- <_description>Belgian (alternative)</_description>
-+ <description>Belgian (alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_latin9</name>
-- <_description>Belgian (alternative, Latin-9 only)</_description>
-+ <description>Belgian (alternative, Latin-9 only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_sundeadkeys</name>
-- <_description>Belgian (alternative, Sun dead keys)</_description>
-+ <description>Belgian (alternative, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>iso-alternate</name>
-- <_description>Belgian (ISO alternate)</_description>
-+ <description>Belgian (ISO alternate)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Belgian (eliminate dead keys)</_description>
-+ <description>Belgian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Belgian (Sun dead keys)</_description>
-+ <description>Belgian (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>wang</name>
-- <_description>Belgian (Wang model 724 azerty)</_description>
-+ <description>Belgian (Wang model 724 azerty)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1762,9 +1762,9 @@
- <layout>
- <configItem>
- <name>bd</name>
-- <!-- Keyboard indicator for Bangla layouts -->
-- <_shortDescription>bn</_shortDescription>
-- <_description>Bangla</_description>
-+
-+ <shortDescription>bn</shortDescription>
-+ <description>Bangla</description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
-@@ -1773,7 +1773,7 @@
- <variant>
- <configItem>
- <name>probhat</name>
-- <_description>Bangla (Probhat)</_description>
-+ <description>Bangla (Probhat)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1781,17 +1781,17 @@
- <layout>
- <configItem>
- <name>in</name>
-- <!-- Keyboard indicator for Indian layouts -->
-- <_shortDescription>in</_shortDescription>
-- <_description>Indian</_description>
-+
-+ <shortDescription>in</shortDescription>
-+ <description>Indian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ben</name>
-- <!-- Keyboard indicator for Bangla layouts -->
-- <_shortDescription>bn</_shortDescription>
-- <_description>Bangla (India)</_description>
-+
-+ <shortDescription>bn</shortDescription>
-+ <description>Bangla (India)</description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
-@@ -1800,9 +1800,9 @@
- <variant>
- <configItem>
- <name>ben_probhat</name>
-- <!-- Keyboard indicator for Bangla layouts -->
-- <_shortDescription>bn</_shortDescription>
-- <_description>Bangla (India, Probhat)</_description>
-+
-+ <shortDescription>bn</shortDescription>
-+ <description>Bangla (India, Probhat)</description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
-@@ -1811,28 +1811,28 @@
- <variant>
- <configItem>
- <name>ben_baishakhi</name>
-- <_description>Bangla (India, Baishakhi)</_description>
-+ <description>Bangla (India, Baishakhi)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_bornona</name>
-- <_description>Bangla (India, Bornona)</_description>
-+ <description>Bangla (India, Bornona)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_gitanjali</name>
-- <_description>Bangla (India, Uni Gitanjali)</_description>
-+ <description>Bangla (India, Uni Gitanjali)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_inscript</name>
-- <_description>Bangla (India, Baishakhi Inscript)</_description>
-+ <description>Bangla (India, Baishakhi Inscript)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -1846,9 +1846,9 @@
- <variant>
- <configItem>
- <name>guj</name>
-- <!-- Keyboard indicator for Gujarati layouts -->
-- <_shortDescription>gu</_shortDescription>
-- <_description>Gujarati</_description>
-+
-+ <shortDescription>gu</shortDescription>
-+ <description>Gujarati</description>
- <languageList>
- <iso639Id>guj</iso639Id>
- </languageList>
-@@ -1857,9 +1857,9 @@
- <variant>
- <configItem>
- <name>guru</name>
-- <!-- Keyboard indicator for Punjabi layouts -->
-- <_shortDescription>pa</_shortDescription>
-- <_description>Punjabi (Gurmukhi)</_description>
-+
-+ <shortDescription>pa</shortDescription>
-+ <description>Punjabi (Gurmukhi)</description>
- <languageList>
- <iso639Id>pan</iso639Id>
- </languageList>
-@@ -1868,9 +1868,9 @@
- <variant>
- <configItem>
- <name>jhelum</name>
-- <!-- Keyboard indicator for Punjabi layouts -->
-- <_shortDescription>pa</_shortDescription>
-- <_description>Punjabi (Gurmukhi Jhelum)</_description>
-+
-+ <shortDescription>pa</shortDescription>
-+ <description>Punjabi (Gurmukhi Jhelum)</description>
- <languageList>
- <iso639Id>pan</iso639Id>
- </languageList>
-@@ -1879,9 +1879,9 @@
- <variant>
- <configItem>
- <name>kan</name>
-- <!-- Keyboard indicator for Kannada layouts -->
-- <_shortDescription>kn</_shortDescription>
-- <_description>Kannada</_description>
-+
-+ <shortDescription>kn</shortDescription>
-+ <description>Kannada</description>
- <languageList>
- <iso639Id>kan</iso639Id>
- </languageList>
-@@ -1890,9 +1890,9 @@
- <variant>
- <configItem>
- <name>kan-kagapa</name>
-- <!-- Keyboard indicator for Kannada layouts -->
-- <_shortDescription>kn</_shortDescription>
-- <_description>Kannada (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>kn</shortDescription>
-+ <description>Kannada (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>kan</iso639Id>
- </languageList>
-@@ -1901,9 +1901,9 @@
- <variant>
- <configItem>
- <name>mal</name>
-- <!-- Keyboard indicator for Malayalam layouts -->
-- <_shortDescription>ml</_shortDescription>
-- <_description>Malayalam</_description>
-+
-+ <shortDescription>ml</shortDescription>
-+ <description>Malayalam</description>
- <languageList>
- <iso639Id>mal</iso639Id>
- </languageList>
-@@ -1912,9 +1912,9 @@
- <variant>
- <configItem>
- <name>mal_lalitha</name>
-- <!-- Keyboard indicator for Malayalam layouts -->
-- <_shortDescription>ml</_shortDescription>
-- <_description>Malayalam (Lalitha)</_description>
-+
-+ <shortDescription>ml</shortDescription>
-+ <description>Malayalam (Lalitha)</description>
- <languageList>
- <iso639Id>mal</iso639Id>
- </languageList>
-@@ -1923,18 +1923,18 @@
- <variant>
- <configItem>
- <name>mal_enhanced</name>
-- <!-- Keyboard indicator for Malayalam layouts -->
-- <_shortDescription>ml</_shortDescription>
-- <_description>Malayalam (enhanced Inscript with Rupee Sign)</_description>
-+
-+ <shortDescription>ml</shortDescription>
-+ <description>Malayalam (enhanced Inscript with Rupee Sign)</description>
- <languageList><iso639Id>mal</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ori</name>
-- <!-- Keyboard indicator for Oriya layouts -->
-- <_shortDescription>or</_shortDescription>
-- <_description>Oriya</_description>
-+
-+ <shortDescription>or</shortDescription>
-+ <description>Oriya</description>
- <languageList>
- <iso639Id>ori</iso639Id>
- </languageList>
-@@ -1943,9 +1943,9 @@
- <variant>
- <configItem>
- <name>tam_unicode</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (Unicode)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (Unicode)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1954,9 +1954,9 @@
- <variant>
- <configItem>
- <name>tam_keyboard_with_numerals</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (keyboard with numerals)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (keyboard with numerals)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1965,9 +1965,9 @@
- <variant>
- <configItem>
- <name>tam_TAB</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (TAB typewriter)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (TAB typewriter)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1976,9 +1976,9 @@
- <variant>
- <configItem>
- <name>tam_TSCII</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (TSCII typewriter)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (TSCII typewriter)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1987,9 +1987,9 @@
- <variant>
- <configItem>
- <name>tam</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1998,9 +1998,9 @@
- <variant>
- <configItem>
- <name>tel</name>
-- <!-- Keyboard indicator for Telugu layouts -->
-- <_shortDescription>te</_shortDescription>
-- <_description>Telugu</_description>
-+
-+ <shortDescription>te</shortDescription>
-+ <description>Telugu</description>
- <languageList>
- <iso639Id>tel</iso639Id>
- </languageList>
-@@ -2009,9 +2009,9 @@
- <variant>
- <configItem>
- <name>tel-kagapa</name>
-- <!-- Keyboard indicator for Telugu layouts -->
-- <_shortDescription>te</_shortDescription>
-- <_description>Telugu (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>te</shortDescription>
-+ <description>Telugu (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>tel</iso639Id>
- </languageList>
-@@ -2020,9 +2020,9 @@
- <variant>
- <configItem>
- <name>urd-phonetic</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (phonetic)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (phonetic)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -2031,9 +2031,9 @@
- <variant>
- <configItem>
- <name>urd-phonetic3</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (alternative phonetic)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (alternative phonetic)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -2042,9 +2042,9 @@
- <variant>
- <configItem>
- <name>urd-winkeys</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (WinKeys)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (WinKeys)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -2053,9 +2053,9 @@
- <variant>
- <configItem>
- <name>bolnagri</name>
-- <!-- Keyboard indicator for Hindi layouts -->
-- <_shortDescription>hi</_shortDescription>
-- <_description>Hindi (Bolnagri)</_description>
-+
-+ <shortDescription>hi</shortDescription>
-+ <description>Hindi (Bolnagri)</description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
-@@ -2064,9 +2064,9 @@
- <variant>
- <configItem>
- <name>hin-wx</name>
-- <!-- Keyboard indicator for Hindi layouts -->
-- <_shortDescription>hi</_shortDescription>
-- <_description>Hindi (Wx)</_description>
-+
-+ <shortDescription>hi</shortDescription>
-+ <description>Hindi (Wx)</description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
-@@ -2075,9 +2075,9 @@
- <variant>
- <configItem>
- <name>hin-kagapa</name>
-- <!-- Keyboard indicator for Hindi layouts -->
-- <_shortDescription>hi</_shortDescription>
-- <_description>Hindi (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>hi</shortDescription>
-+ <description>Hindi (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
-@@ -2086,9 +2086,9 @@
- <variant>
- <configItem>
- <name>san-kagapa</name>
-- <!-- Keyboard indicator for Sanskrit layouts -->
-- <_shortDescription>sa</_shortDescription>
-- <_description>Sanskrit (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>sa</shortDescription>
-+ <description>Sanskrit (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>san</iso639Id>
- </languageList>
-@@ -2097,9 +2097,9 @@
- <variant>
- <configItem>
- <name>mar-kagapa</name>
-- <!-- Keyboard indicator for Marathi layouts -->
-- <_shortDescription>mr</_shortDescription>
-- <_description>Marathi (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>mr</shortDescription>
-+ <description>Marathi (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>mar</iso639Id>
- </languageList>
-@@ -2108,9 +2108,9 @@
- <variant>
- <configItem>
- <name>eng</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (India, with RupeeSign)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (India, with RupeeSign)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -2121,9 +2121,9 @@
- <layout>
- <configItem>
- <name>ba</name>
-- <!-- Keyboard indicator for Bosnian layouts -->
-- <_shortDescription>bs</_shortDescription>
-- <_description>Bosnian</_description>
-+
-+ <shortDescription>bs</shortDescription>
-+ <description>Bosnian</description>
- <languageList>
- <iso639Id>bos</iso639Id>
- </languageList>
-@@ -2132,25 +2132,25 @@
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Bosnian (use guillemets for quotes)</_description>
-+ <description>Bosnian (use guillemets for quotes)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicode</name>
-- <_description>Bosnian (use Bosnian digraphs)</_description>
-+ <description>Bosnian (use Bosnian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicodeus</name>
-- <_description>Bosnian (US keyboard with Bosnian digraphs)</_description>
-+ <description>Bosnian (US keyboard with Bosnian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Bosnian (US keyboard with Bosnian letters)</_description>
-+ <description>Bosnian (US keyboard with Bosnian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2158,9 +2158,9 @@
- <layout>
- <configItem>
- <name>br</name>
-- <!-- Keyboard indicator for Portuguese layouts -->
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese (Brazil)</_description>
-+
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese (Brazil)</description>
- <languageList>
- <iso639Id>por</iso639Id>
- </languageList>
-@@ -2169,31 +2169,31 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Portuguese (Brazil, eliminate dead keys)</_description>
-+ <description>Portuguese (Brazil, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Portuguese (Brazil, Dvorak)</_description>
-+ <description>Portuguese (Brazil, Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo</name>
-- <_description>Portuguese (Brazil, Nativo)</_description>
-+ <description>Portuguese (Brazil, Nativo)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-us</name>
-- <_description>Portuguese (Brazil, Nativo for US keyboards)</_description>
-+ <description>Portuguese (Brazil, Nativo for US keyboards)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-epo</name>
-- <_description>Esperanto (Brazil, Nativo)</_description>
-+ <description>Esperanto (Brazil, Nativo)</description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
-@@ -2204,9 +2204,9 @@
- <layout>
- <configItem>
- <name>bg</name>
-- <!-- Keyboard indicator for Bulgarian layouts -->
-- <_shortDescription>bg</_shortDescription>
-- <_description>Bulgarian</_description>
-+
-+ <shortDescription>bg</shortDescription>
-+ <description>Bulgarian</description>
- <languageList>
- <iso639Id>bul</iso639Id>
- </languageList>
-@@ -2215,13 +2215,13 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Bulgarian (traditional phonetic)</_description>
-+ <description>Bulgarian (traditional phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bas_phonetic</name>
-- <_description>Bulgarian (new phonetic)</_description>
-+ <description>Bulgarian (new phonetic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2229,17 +2229,17 @@
- <layout>
- <configItem>
- <name>ma</name>
-- <!-- Keyboard indicator for Arabic layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic (Morocco)</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic (Morocco)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>french</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Morocco)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Morocco)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2248,9 +2248,9 @@
- <variant>
- <configItem>
- <name>tifinagh</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2259,9 +2259,9 @@
- <variant>
- <configItem>
- <name>tifinagh-alt</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh alternative)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh alternative)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2270,9 +2270,9 @@
- <variant>
- <configItem>
- <name>tifinagh-alt-phonetic</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh alternative phonetic)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh alternative phonetic)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2281,9 +2281,9 @@
- <variant>
- <configItem>
- <name>tifinagh-extended</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh extended)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh extended)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2292,9 +2292,9 @@
- <variant>
- <configItem>
- <name>tifinagh-phonetic</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh phonetic)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh phonetic)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2303,9 +2303,9 @@
- <variant>
- <configItem>
- <name>tifinagh-extended-phonetic</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh extended phonetic)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh extended phonetic)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2316,23 +2316,23 @@
- <layout>
- <configItem>
- <name>cm</name>
-- <!-- Keyboard indicator for Cameroon layouts -->
-- <_shortDescription>cm</_shortDescription>
-- <_description>English (Cameroon)</_description>
-+
-+ <shortDescription>cm</shortDescription>
-+ <description>English (Cameroon)</description>
- <languageList><iso639Id>eng</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>french</name>
-- <_description>French (Cameroon)</_description>
-+ <description>French (Cameroon)</description>
- <languageList><iso639Id>fra</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Cameroon Multilingual (qwerty)</_description>
-+ <description>Cameroon Multilingual (qwerty)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- <iso639Id>bas</iso639Id>
-@@ -2369,7 +2369,7 @@
- <variant>
- <configItem>
- <name>azerty</name>
-- <_description>Cameroon Multilingual (azerty)</_description>
-+ <description>Cameroon Multilingual (azerty)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- <iso639Id>bas</iso639Id>
-@@ -2406,7 +2406,7 @@
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Cameroon Multilingual (Dvorak)</_description>
-+ <description>Cameroon Multilingual (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2414,9 +2414,9 @@
- <layout>
- <configItem>
- <name>mm</name>
-- <!-- Keyboard indicator for Burmese layouts -->
-- <_shortDescription>my</_shortDescription>
-- <_description>Burmese</_description>
-+
-+ <shortDescription>my</shortDescription>
-+ <description>Burmese</description>
- <languageList>
- <iso639Id>mya</iso639Id>
- </languageList>
-@@ -2426,9 +2426,9 @@
- <layout>
- <configItem>
- <name>ca</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2437,43 +2437,43 @@
- <variant>
- <configItem>
- <name>fr-dvorak</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada, Dvorak)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada, Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr-legacy</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada, legacy)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada, legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multix</name>
-- <_description>Canadian Multilingual</_description>
-+ <description>Canadian Multilingual</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multi</name>
-- <_description>Canadian Multilingual (first part)</_description>
-+ <description>Canadian Multilingual (first part)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multi-2gr</name>
-- <_description>Canadian Multilingual (second part)</_description>
-+ <description>Canadian Multilingual (second part)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ike</name>
-- <!-- Keyboard indicator for Inuktikut layouts -->
-- <_shortDescription>ike</_shortDescription>
-- <_description>Inuktitut</_description>
-+
-+ <shortDescription>ike</shortDescription>
-+ <description>Inuktitut</description>
- <languageList>
- <iso639Id>iku</iso639Id>
- </languageList>
-@@ -2482,9 +2482,9 @@
- <variant>
- <configItem>
- <name>eng</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Canada)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Canada)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -2495,9 +2495,9 @@
- <layout>
- <configItem>
- <name>cd</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Democratic Republic of the Congo)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Democratic Republic of the Congo)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2507,9 +2507,9 @@
- <layout>
- <configItem>
- <name>cn</name>
-- <!-- Keyboard indicator for Chinese layouts -->
-- <_shortDescription>zh</_shortDescription>
-- <_description>Chinese</_description>
-+
-+ <shortDescription>zh</shortDescription>
-+ <description>Chinese</description>
- <languageList>
- <iso639Id>chi</iso639Id>
- </languageList>
-@@ -2518,7 +2518,7 @@
- <variant>
- <configItem>
- <name>tib</name>
-- <_description>Tibetan</_description>
-+ <description>Tibetan</description>
- <languageList>
- <iso639Id>tib</iso639Id>
- </languageList>
-@@ -2527,7 +2527,7 @@
- <variant>
- <configItem>
- <name>tib_asciinum</name>
-- <_description>Tibetan (with ASCII numerals)</_description>
-+ <description>Tibetan (with ASCII numerals)</description>
- <languageList>
- <iso639Id>tib</iso639Id>
- </languageList>
-@@ -2536,8 +2536,8 @@
- <variant>
- <configItem>
- <name>ug</name>
-- <_shortDescription>ug</_shortDescription>
-- <_description>Uyghur</_description>
-+ <shortDescription>ug</shortDescription>
-+ <description>Uyghur</description>
- <languageList>
- <iso639Id>ug</iso639Id>
- </languageList>
-@@ -2548,9 +2548,9 @@
- <layout>
- <configItem>
- <name>hr</name>
-- <!-- Keyboard indicator for Croatian layouts -->
-- <_shortDescription>hr</_shortDescription>
-- <_description>Croatian</_description>
-+
-+ <shortDescription>hr</shortDescription>
-+ <description>Croatian</description>
- <languageList>
- <iso639Id>hrv</iso639Id>
- </languageList>
-@@ -2559,25 +2559,25 @@
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Croatian (use guillemets for quotes)</_description>
-+ <description>Croatian (use guillemets for quotes)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicode</name>
-- <_description>Croatian (use Croatian digraphs)</_description>
-+ <description>Croatian (use Croatian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicodeus</name>
-- <_description>Croatian (US keyboard with Croatian digraphs)</_description>
-+ <description>Croatian (US keyboard with Croatian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Croatian (US keyboard with Croatian letters)</_description>
-+ <description>Croatian (US keyboard with Croatian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2585,9 +2585,9 @@
- <layout>
- <configItem>
- <name>cz</name>
-- <!-- Keyboard indicator for Chech layouts -->
-- <_shortDescription>cs</_shortDescription>
-- <_description>Czech</_description>
-+
-+ <shortDescription>cs</shortDescription>
-+ <description>Czech</description>
- <languageList>
- <iso639Id>cze</iso639Id>
- </languageList>
-@@ -2596,31 +2596,31 @@
- <variant>
- <configItem>
- <name>bksl</name>
-- <_description>Czech (with &lt;\|&gt; key)</_description>
-+ <description>Czech (with &lt;\|&gt; key)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Czech (qwerty)</_description>
-+ <description>Czech (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_bksl</name>
-- <_description>Czech (qwerty, extended Backslash)</_description>
-+ <description>Czech (qwerty, extended Backslash)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ucw</name>
-- <_description>Czech (UCW layout, accented letters only)</_description>
-+ <description>Czech (UCW layout, accented letters only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-ucw</name>
-- <_description>Czech (US Dvorak with CZ UCW support)</_description>
-+ <description>Czech (US Dvorak with CZ UCW support)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2628,9 +2628,9 @@
- <layout>
- <configItem>
- <name>dk</name>
-- <!-- Keyboard indicator for Danish layouts -->
-- <_shortDescription>da</_shortDescription>
-- <_description>Danish</_description>
-+
-+ <shortDescription>da</shortDescription>
-+ <description>Danish</description>
- <languageList>
- <iso639Id>dan</iso639Id>
- </languageList>
-@@ -2639,25 +2639,25 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Danish (eliminate dead keys)</_description>
-+ <description>Danish (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Danish (Macintosh)</_description>
-+ <description>Danish (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>Danish (Macintosh, eliminate dead keys)</_description>
-+ <description>Danish (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Danish (Dvorak)</_description>
-+ <description>Danish (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2665,9 +2665,9 @@
- <layout>
- <configItem>
- <name>nl</name>
-- <!-- Keyboard indicator for Dutch layouts -->
-- <_shortDescription>nl</_shortDescription>
-- <_description>Dutch</_description>
-+
-+ <shortDescription>nl</shortDescription>
-+ <description>Dutch</description>
- <languageList>
- <iso639Id>nld</iso639Id>
- </languageList>
-@@ -2676,19 +2676,19 @@
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Dutch (Sun dead keys)</_description>
-+ <description>Dutch (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Dutch (Macintosh)</_description>
-+ <description>Dutch (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std</name>
-- <_description>Dutch (standard)</_description>
-+ <description>Dutch (standard)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2696,9 +2696,9 @@
- <layout>
- <configItem>
- <name>bt</name>
-- <!-- Keyboard indicator for Dzongkha layouts -->
-- <_shortDescription>dz</_shortDescription>
-- <_description>Dzongkha</_description>
-+
-+ <shortDescription>dz</shortDescription>
-+ <description>Dzongkha</description>
- <languageList>
- <iso639Id>dzo</iso639Id>
- </languageList>
-@@ -2707,9 +2707,9 @@
- <layout>
- <configItem>
- <name>ee</name>
-- <!-- Keyboard indicator for Estonian layouts -->
-- <_shortDescription>et</_shortDescription>
-- <_description>Estonian</_description>
-+
-+ <shortDescription>et</shortDescription>
-+ <description>Estonian</description>
- <languageList>
- <iso639Id>est</iso639Id>
- </languageList>
-@@ -2718,19 +2718,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Estonian (eliminate dead keys)</_description>
-+ <description>Estonian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Estonian (Dvorak)</_description>
-+ <description>Estonian (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Estonian (US keyboard with Estonian letters)</_description>
-+ <description>Estonian (US keyboard with Estonian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2738,9 +2738,9 @@
- <layout>
- <configItem>
- <name>ir</name>
-- <!-- Keyboard indicator for Persian layouts -->
-- <_shortDescription>fa</_shortDescription>
-- <_description>Persian</_description>
-+
-+ <shortDescription>fa</shortDescription>
-+ <description>Persian</description>
- <languageList>
- <iso639Id>per</iso639Id>
- </languageList>
-@@ -2749,15 +2749,15 @@
- <variant>
- <configItem>
- <name>pes_keypad</name>
-- <_description>Persian (with Persian Keypad)</_description>
-+ <description>Persian (with Persian Keypad)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2766,9 +2766,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2777,9 +2777,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2788,9 +2788,9 @@
- <variant>
- <configItem>
- <name>ku_ara</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, Arabic-Latin)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, Arabic-Latin)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2801,9 +2801,9 @@
- <layout>
- <configItem>
- <name>iq</name>
-- <!-- Keyboard indicator for Iraqi layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Iraqi</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Iraqi</description>
- <languageList><iso639Id>ara</iso639Id>
- <iso639Id>kur</iso639Id></languageList>
- </configItem>
-@@ -2811,9 +2811,9 @@
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2822,9 +2822,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2833,9 +2833,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2844,9 +2844,9 @@
- <variant>
- <configItem>
- <name>ku_ara</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, Arabic-Latin)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, Arabic-Latin)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2857,9 +2857,9 @@
- <layout>
- <configItem>
- <name>fo</name>
-- <!-- Keyboard indicator for Faroese layouts -->
-- <_shortDescription>fo</_shortDescription>
-- <_description>Faroese</_description>
-+
-+ <shortDescription>fo</shortDescription>
-+ <description>Faroese</description>
- <languageList>
- <iso639Id>fao</iso639Id>
- </languageList>
-@@ -2868,7 +2868,7 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Faroese (eliminate dead keys)</_description>
-+ <description>Faroese (eliminate dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2876,9 +2876,9 @@
- <layout>
- <configItem>
- <name>fi</name>
-- <!-- Keyboard indicator for Finnish layouts -->
-- <_shortDescription>fi</_shortDescription>
-- <_description>Finnish</_description>
-+
-+ <shortDescription>fi</shortDescription>
-+ <description>Finnish</description>
- <languageList>
- <iso639Id>fin</iso639Id>
- </languageList>
-@@ -2887,26 +2887,26 @@
- <variant>
- <configItem>
- <name>classic</name>
-- <_description>Finnish (classic)</_description>
-+ <description>Finnish (classic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Finnish (classic, eliminate dead keys)</_description>
-+ <description>Finnish (classic, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
-- <_description>Northern Saami (Finland)</_description>
-+ <description>Northern Saami (Finland)</description>
- <languageList><iso639Id>sme</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Finnish (Macintosh)</_description>
-+ <description>Finnish (Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2914,9 +2914,9 @@
- <layout>
- <configItem>
- <name>fr</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2925,91 +2925,91 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>French (eliminate dead keys)</_description>
-+ <description>French (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>French (Sun dead keys)</_description>
-+ <description>French (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss</name>
-- <_description>French (alternative)</_description>
-+ <description>French (alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_latin9</name>
-- <_description>French (alternative, Latin-9 only)</_description>
-+ <description>French (alternative, Latin-9 only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_nodeadkeys</name>
-- <_description>French (alternative, eliminate dead keys)</_description>
-+ <description>French (alternative, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_sundeadkeys</name>
-- <_description>French (alternative, Sun dead keys)</_description>
-+ <description>French (alternative, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9</name>
-- <_description>French (legacy, alternative)</_description>
-+ <description>French (legacy, alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9_nodeadkeys</name>
-- <_description>French (legacy, alternative, eliminate dead keys)</_description>
-+ <description>French (legacy, alternative, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9_sundeadkeys</name>
-- <_description>French (legacy, alternative, Sun dead keys)</_description>
-+ <description>French (legacy, alternative, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bepo</name>
-- <_description>French (Bepo, ergonomic, Dvorak way)</_description>
-+ <description>French (Bepo, ergonomic, Dvorak way)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bepo_latin9</name>
-- <_description>French (Bepo, ergonomic, Dvorak way, Latin-9 only)</_description>
-+ <description>French (Bepo, ergonomic, Dvorak way, Latin-9 only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>French (Dvorak)</_description>
-+ <description>French (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>French (Macintosh)</_description>
-+ <description>French (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bre</name>
-- <_description>French (Breton)</_description>
-+ <description>French (Breton)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oci</name>
-- <_description>Occitan</_description>
-+ <description>Occitan</description>
- <languageList>
- <iso639Id>oci</iso639Id>
- </languageList>
-@@ -3018,7 +3018,7 @@
- <variant>
- <configItem>
- <name>geo</name>
-- <_description>Georgian (France, AZERTY Tskapo)</_description>
-+ <description>Georgian (France, AZERTY Tskapo)</description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
-@@ -3029,9 +3029,9 @@
- <layout>
- <configItem>
- <name>gh</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Ghana)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Ghana)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -3040,15 +3040,15 @@
- <variant>
- <configItem>
- <name>generic</name>
-- <_description>English (Ghana, multilingual)</_description>
-+ <description>English (Ghana, multilingual)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>akan</name>
-- <!-- Keyboard indicator for Akan layouts -->
-- <_shortDescription>ak</_shortDescription>
-- <_description>Akan</_description>
-+
-+ <shortDescription>ak</shortDescription>
-+ <description>Akan</description>
- <languageList>
- <iso639Id>aka</iso639Id>
- </languageList>
-@@ -3057,9 +3057,9 @@
- <variant>
- <configItem>
- <name>ewe</name>
-- <!-- Keyboard indicator for Ewe layouts -->
-- <_shortDescription>ee</_shortDescription>
-- <_description>Ewe</_description>
-+
-+ <shortDescription>ee</shortDescription>
-+ <description>Ewe</description>
- <languageList>
- <iso639Id>ewe</iso639Id>
- </languageList>
-@@ -3068,9 +3068,9 @@
- <variant>
- <configItem>
- <name>fula</name>
-- <!-- Keyboard indicator for Fula layouts -->
-- <_shortDescription>ff</_shortDescription>
-- <_description>Fula</_description>
-+
-+ <shortDescription>ff</shortDescription>
-+ <description>Fula</description>
- <languageList>
- <iso639Id>ful</iso639Id>
- </languageList>
-@@ -3079,9 +3079,9 @@
- <variant>
- <configItem>
- <name>ga</name>
-- <!-- Keyboard indicator for Ga layouts -->
-- <_shortDescription>gaa</_shortDescription>
-- <_description>Ga</_description>
-+
-+ <shortDescription>gaa</shortDescription>
-+ <description>Ga</description>
- <languageList>
- <iso639Id>gaa</iso639Id>
- </languageList>
-@@ -3090,9 +3090,9 @@
- <variant>
- <configItem>
- <name>hausa</name>
-- <!-- Keyboard indicator for Hausa layouts -->
-- <_shortDescription>ha</_shortDescription>
-- <_description>Hausa</_description>
-+
-+ <shortDescription>ha</shortDescription>
-+ <description>Hausa</description>
- <languageList>
- <iso639Id>hau</iso639Id>
- </languageList>
-@@ -3101,9 +3101,9 @@
- <variant>
- <configItem>
- <name>avn</name>
-- <!-- Keyboard indicator for Avatime layouts -->
-- <_shortDescription>avn</_shortDescription>
-- <_description>Avatime</_description>
-+
-+ <shortDescription>avn</shortDescription>
-+ <description>Avatime</description>
- <languageList>
- <iso639Id>avn</iso639Id>
- </languageList>
-@@ -3112,7 +3112,7 @@
- <variant>
- <configItem>
- <name>gillbt</name>
-- <_description>English (Ghana, GILLBT)</_description>
-+ <description>English (Ghana, GILLBT)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3120,9 +3120,9 @@
- <layout>
- <configItem>
- <name>gn</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Guinea)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Guinea)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -3132,9 +3132,9 @@
- <layout>
- <configItem>
- <name>ge</name>
-- <!-- Keyboard indicator for Georgian layouts -->
-- <_shortDescription>ka</_shortDescription>
-- <_description>Georgian</_description>
-+
-+ <shortDescription>ka</shortDescription>
-+ <description>Georgian</description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
-@@ -3143,21 +3143,21 @@
- <variant>
- <configItem>
- <name>ergonomic</name>
-- <_description>Georgian (ergonomic)</_description>
-+ <description>Georgian (ergonomic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mess</name>
-- <_description>Georgian (MESS)</_description>
-+ <description>Georgian (MESS)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Georgia)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Georgia)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -3166,7 +3166,7 @@
- <variant>
- <configItem>
- <name>os</name>
-- <_description>Ossetian (Georgia)</_description>
-+ <description>Ossetian (Georgia)</description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
-@@ -3177,9 +3177,9 @@
- <layout>
- <configItem>
- <name>de</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
-@@ -3188,75 +3188,75 @@
- <variant>
- <configItem>
- <name>deadacute</name>
-- <_description>German (dead acute)</_description>
-+ <description>German (dead acute)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadgraveacute</name>
-- <_description>German (dead grave acute)</_description>
-+ <description>German (dead grave acute)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>German (eliminate dead keys)</_description>
-+ <description>German (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>T3</name>
-- <_description>German (T3)</_description>
-+ <description>German (T3)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ro</name>
-- <_description>Romanian (Germany)</_description>
-+ <description>Romanian (Germany)</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ro_nodeadkeys</name>
-- <_description>Romanian (Germany, eliminate dead keys)</_description>
-+ <description>Romanian (Germany, eliminate dead keys)</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>German (Dvorak)</_description>
-+ <description>German (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>German (Sun dead keys)</_description>
-+ <description>German (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>neo</name>
-- <_description>German (Neo 2)</_description>
-+ <description>German (Neo 2)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>German (Macintosh)</_description>
-+ <description>German (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>German (Macintosh, eliminate dead keys)</_description>
-+ <description>German (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dsb</name>
-- <_description>Lower Sorbian</_description>
-+ <description>Lower Sorbian</description>
- <languageList>
- <iso639Id>dsb</iso639Id>
- </languageList>
-@@ -3265,7 +3265,7 @@
- <variant>
- <configItem>
- <name>dsb_qwertz</name>
-- <_description>Lower Sorbian (qwertz)</_description>
-+ <description>Lower Sorbian (qwertz)</description>
- <languageList>
- <iso639Id>dsb</iso639Id>
- </languageList>
-@@ -3274,15 +3274,15 @@
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>German (qwerty)</_description>
-+ <description>German (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Germany, phonetic)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Germany, phonetic)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -3291,7 +3291,7 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>German (legacy)</_description>
-+ <description>German (legacy)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3299,9 +3299,9 @@
- <layout>
- <configItem>
- <name>gr</name>
-- <!-- Keyboard indicator for Greek layouts -->
-- <_shortDescription>gr</_shortDescription>
-- <_description>Greek</_description>
-+
-+ <shortDescription>gr</shortDescription>
-+ <description>Greek</description>
- <languageList>
- <iso639Id>gre</iso639Id>
- </languageList>
-@@ -3310,25 +3310,25 @@
- <variant>
- <configItem>
- <name>simple</name>
-- <_description>Greek (simple)</_description>
-+ <description>Greek (simple)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>extended</name>
-- <_description>Greek (extended)</_description>
-+ <description>Greek (extended)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Greek (eliminate dead keys)</_description>
-+ <description>Greek (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>polytonic</name>
-- <_description>Greek (polytonic)</_description>
-+ <description>Greek (polytonic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3336,9 +3336,9 @@
- <layout>
- <configItem>
- <name>hu</name>
-- <!-- Keyboard indicator for Hungarian layouts -->
-- <_shortDescription>hu</_shortDescription>
-- <_description>Hungarian</_description>
-+
-+ <shortDescription>hu</shortDescription>
-+ <description>Hungarian</description>
- <languageList>
- <iso639Id>hun</iso639Id>
- </languageList>
-@@ -3347,115 +3347,115 @@
- <variant>
- <configItem>
- <name>standard</name>
-- <_description>Hungarian (standard)</_description>
-+ <description>Hungarian (standard)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Hungarian (eliminate dead keys)</_description>
-+ <description>Hungarian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Hungarian (qwerty)</_description>
-+ <description>Hungarian (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_comma_dead</name>
-- <_description>Hungarian (101/qwertz/comma/dead keys)</_description>
-+ <description>Hungarian (101/qwertz/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_comma_nodead</name>
-- <_description>Hungarian (101/qwertz/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwertz/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_dot_dead</name>
-- <_description>Hungarian (101/qwertz/dot/dead keys)</_description>
-+ <description>Hungarian (101/qwertz/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_dot_nodead</name>
-- <_description>Hungarian (101/qwertz/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwertz/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_comma_dead</name>
-- <_description>Hungarian (101/qwerty/comma/dead keys)</_description>
-+ <description>Hungarian (101/qwerty/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_comma_nodead</name>
-- <_description>Hungarian (101/qwerty/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwerty/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_dot_dead</name>
-- <_description>Hungarian (101/qwerty/dot/dead keys)</_description>
-+ <description>Hungarian (101/qwerty/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_dot_nodead</name>
-- <_description>Hungarian (101/qwerty/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwerty/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_comma_dead</name>
-- <_description>Hungarian (102/qwertz/comma/dead keys)</_description>
-+ <description>Hungarian (102/qwertz/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_comma_nodead</name>
-- <_description>Hungarian (102/qwertz/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwertz/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_dot_dead</name>
-- <_description>Hungarian (102/qwertz/dot/dead keys)</_description>
-+ <description>Hungarian (102/qwertz/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_dot_nodead</name>
-- <_description>Hungarian (102/qwertz/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwertz/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_comma_dead</name>
-- <_description>Hungarian (102/qwerty/comma/dead keys)</_description>
-+ <description>Hungarian (102/qwerty/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_comma_nodead</name>
-- <_description>Hungarian (102/qwerty/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwerty/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_dot_dead</name>
-- <_description>Hungarian (102/qwerty/dot/dead keys)</_description>
-+ <description>Hungarian (102/qwerty/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_dot_nodead</name>
-- <_description>Hungarian (102/qwerty/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwerty/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3463,9 +3463,9 @@
- <layout>
- <configItem>
- <name>is</name>
-- <!-- Keyboard indicator for Icelandic layouts -->
-- <_shortDescription>is</_shortDescription>
-- <_description>Icelandic</_description>
-+
-+ <shortDescription>is</shortDescription>
-+ <description>Icelandic</description>
- <languageList>
- <iso639Id>ice</iso639Id>
- </languageList>
-@@ -3474,25 +3474,25 @@
- <variant>
- <configItem>
- <name>Sundeadkeys</name>
-- <_description>Icelandic (Sun dead keys)</_description>
-+ <description>Icelandic (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Icelandic (eliminate dead keys)</_description>
-+ <description>Icelandic (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Icelandic (Macintosh)</_description>
-+ <description>Icelandic (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Icelandic (Dvorak)</_description>
-+ <description>Icelandic (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3500,9 +3500,9 @@
- <layout>
- <configItem>
- <name>il</name>
-- <!-- Keyboard indicator for Hebrew layouts -->
-- <_shortDescription>he</_shortDescription>
-- <_description>Hebrew</_description>
-+
-+ <shortDescription>he</shortDescription>
-+ <description>Hebrew</description>
- <languageList>
- <iso639Id>heb</iso639Id>
- </languageList>
-@@ -3511,19 +3511,19 @@
- <variant>
- <configItem>
- <name>lyx</name>
-- <_description>Hebrew (lyx)</_description>
-+ <description>Hebrew (lyx)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Hebrew (phonetic)</_description>
-+ <description>Hebrew (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>biblical</name>
-- <_description>Hebrew (Biblical, Tiro)</_description>
-+ <description>Hebrew (Biblical, Tiro)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3531,9 +3531,9 @@
- <layout>
- <configItem>
- <name>it</name>
-- <!-- Keyboard indicator for Italian layouts -->
-- <_shortDescription>it</_shortDescription>
-- <_description>Italian</_description>
-+
-+ <shortDescription>it</shortDescription>
-+ <description>Italian</description>
- <languageList>
- <iso639Id>ita</iso639Id>
- </languageList>
-@@ -3542,25 +3542,25 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Italian (eliminate dead keys)</_description>
-+ <description>Italian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Italian (Macintosh)</_description>
-+ <description>Italian (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Italian (US keyboard with Italian letters)</_description>
-+ <description>Italian (US keyboard with Italian letters)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>geo</name>
-- <_description>Georgian (Italy)</_description>
-+ <description>Georgian (Italy)</description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
-@@ -3569,7 +3569,7 @@
- <variant>
- <configItem>
- <name>ibm</name>
-- <_description>Italian (IBM 142)</_description>
-+ <description>Italian (IBM 142)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3577,9 +3577,9 @@
- <layout>
- <configItem>
- <name>jp</name>
-- <!-- Keyboard indicator for Japanese layouts -->
-- <_shortDescription>ja</_shortDescription>
-- <_description>Japanese</_description>
-+
-+ <shortDescription>ja</shortDescription>
-+ <description>Japanese</description>
- <languageList>
- <iso639Id>jpn</iso639Id>
- </languageList>
-@@ -3588,31 +3588,31 @@
- <variant>
- <configItem>
- <name>kana</name>
-- <_description>Japanese (Kana)</_description>
-+ <description>Japanese (Kana)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kana86</name>
-- <_description>Japanese (Kana 86)</_description>
-+ <description>Japanese (Kana 86)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>OADG109A</name>
-- <_description>Japanese (OADG 109A)</_description>
-+ <description>Japanese (OADG 109A)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Japanese (Macintosh)</_description>
-+ <description>Japanese (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Japanese (Dvorak)</_description>
-+ <description>Japanese (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3620,9 +3620,9 @@
- <layout>
- <configItem>
- <name>kg</name>
-- <!-- Keyboard indicator for Kyrgyz layouts -->
-- <_shortDescription>ki</_shortDescription>
-- <_description>Kyrgyz</_description>
-+
-+ <shortDescription>ki</shortDescription>
-+ <description>Kyrgyz</description>
- <languageList>
- <iso639Id>kir</iso639Id>
- </languageList>
-@@ -3631,7 +3631,7 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Kyrgyz (phonetic)</_description>
-+ <description>Kyrgyz (phonetic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3639,9 +3639,9 @@
- <layout>
- <configItem>
- <name>kh</name>
-- <!-- Keyboard indicator for Khmer layouts -->
-- <_shortDescription>km</_shortDescription>
-- <_description>Khmer (Cambodia)</_description>
-+
-+ <shortDescription>km</shortDescription>
-+ <description>Khmer (Cambodia)</description>
- <languageList>
- <iso639Id>khm</iso639Id>
- </languageList>
-@@ -3651,9 +3651,9 @@
- <layout>
- <configItem>
- <name>kz</name>
-- <!-- Keyboard indicator for Kazakh layouts -->
-- <_shortDescription>kk</_shortDescription>
-- <_description>Kazakh</_description>
-+
-+ <shortDescription>kk</shortDescription>
-+ <description>Kazakh</description>
- <languageList>
- <iso639Id>kaz</iso639Id>
- </languageList>
-@@ -3662,9 +3662,9 @@
- <variant>
- <configItem>
- <name>ruskaz</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Kazakhstan, with Kazakh)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Kazakhstan, with Kazakh)</description>
- <languageList><iso639Id>kaz</iso639Id>
- <iso639Id>rus</iso639Id></languageList>
- </configItem>
-@@ -3672,7 +3672,7 @@
- <variant>
- <configItem>
- <name>kazrus</name>
-- <_description>Kazakh (with Russian)</_description>
-+ <description>Kazakh (with Russian)</description>
- <languageList><iso639Id>kaz</iso639Id>
- <iso639Id>rus</iso639Id></languageList>
- </configItem>
-@@ -3682,9 +3682,9 @@
- <layout>
- <configItem>
- <name>la</name>
-- <!-- Keyboard indicator for Lao layouts -->
-- <_shortDescription>lo</_shortDescription>
-- <_description>Lao</_description>
-+
-+ <shortDescription>lo</shortDescription>
-+ <description>Lao</description>
- <languageList>
- <iso639Id>lao</iso639Id>
- </languageList>
-@@ -3693,7 +3693,7 @@
- <variant>
- <configItem>
- <name>stea</name>
-- <_description>Lao (STEA proposed standard layout)</_description>
-+ <description>Lao (STEA proposed standard layout)</description>
- <languageList><iso639Id>lao</iso639Id>
- </languageList>
- </configItem>
-@@ -3703,9 +3703,9 @@
- <layout>
- <configItem>
- <name>latam</name>
-- <!-- Keyboard indicator for Spanish layouts -->
-- <_shortDescription>es</_shortDescription>
-- <_description>Spanish (Latin American)</_description>
-+
-+ <shortDescription>es</shortDescription>
-+ <description>Spanish (Latin American)</description>
- <countryList>
- <iso3166Id>AR</iso3166Id>
- <iso3166Id>BO</iso3166Id>
-@@ -3737,19 +3737,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Spanish (Latin American, eliminate dead keys)</_description>
-+ <description>Spanish (Latin American, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadtilde</name>
-- <_description>Spanish (Latin American, include dead tilde)</_description>
-+ <description>Spanish (Latin American, include dead tilde)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Spanish (Latin American, Sun dead keys)</_description>
-+ <description>Spanish (Latin American, Sun dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3757,9 +3757,9 @@
- <layout>
- <configItem>
- <name>lt</name>
-- <!-- Keyboard indicator for Lithuanian layouts -->
-- <_shortDescription>lt</_shortDescription>
-- <_description>Lithuanian</_description>
-+
-+ <shortDescription>lt</shortDescription>
-+ <description>Lithuanian</description>
- <languageList>
- <iso639Id>lit</iso639Id>
- </languageList>
-@@ -3768,31 +3768,31 @@
- <variant>
- <configItem>
- <name>std</name>
-- <_description>Lithuanian (standard)</_description>
-+ <description>Lithuanian (standard)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Lithuanian (US keyboard with Lithuanian letters)</_description>
-+ <description>Lithuanian (US keyboard with Lithuanian letters)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ibm</name>
-- <_description>Lithuanian (IBM LST 1205-92)</_description>
-+ <description>Lithuanian (IBM LST 1205-92)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>lekp</name>
-- <_description>Lithuanian (LEKP)</_description>
-+ <description>Lithuanian (LEKP)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>lekpa</name>
-- <_description>Lithuanian (LEKPa)</_description>
-+ <description>Lithuanian (LEKPa)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3800,9 +3800,9 @@
- <layout>
- <configItem>
- <name>lv</name>
-- <!-- Keyboard indicator for Latvian layouts -->
-- <_shortDescription>lv</_shortDescription>
-- <_description>Latvian</_description>
-+
-+ <shortDescription>lv</shortDescription>
-+ <description>Latvian</description>
- <languageList>
- <iso639Id>lav</iso639Id>
- </languageList>
-@@ -3811,37 +3811,37 @@
- <variant>
- <configItem>
- <name>apostrophe</name>
-- <_description>Latvian (apostrophe variant)</_description>
-+ <description>Latvian (apostrophe variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tilde</name>
-- <_description>Latvian (tilde variant)</_description>
-+ <description>Latvian (tilde variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fkey</name>
-- <_description>Latvian (F variant)</_description>
-+ <description>Latvian (F variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>modern</name>
-- <_description>Latvian (modern)</_description>
-+ <description>Latvian (modern)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ergonomic</name>
-- <_description>Latvian (ergonomic, ŪGJRMV)</_description>
-+ <description>Latvian (ergonomic, ŪGJRMV)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>adapted</name>
-- <_description>Latvian (adapted)</_description>
-+ <description>Latvian (adapted)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3849,9 +3849,9 @@
- <layout>
- <configItem>
- <name>mao</name>
-- <!-- Keyboard indicator for Maori layouts -->
-- <_shortDescription>mi</_shortDescription>
-- <_description>Maori</_description>
-+
-+ <shortDescription>mi</shortDescription>
-+ <description>Maori</description>
- <languageList>
- <iso639Id>mao</iso639Id>
- </languageList>
-@@ -3861,9 +3861,9 @@
- <layout>
- <configItem>
- <name>me</name>
-- <!-- Keyboard indicator for Montenegrin layouts -->
-- <_shortDescription>sr</_shortDescription>
-- <_description>Montenegrin</_description>
-+
-+ <shortDescription>sr</shortDescription>
-+ <description>Montenegrin</description>
- <languageList>
- <iso639Id>srp</iso639Id>
- </languageList>
-@@ -3872,43 +3872,43 @@
- <variant>
- <configItem>
- <name>cyrillic</name>
-- <_description>Montenegrin (Cyrillic)</_description>
-+ <description>Montenegrin (Cyrillic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cyrillicyz</name>
-- <_description>Montenegrin (Cyrillic, Z and ZHE swapped)</_description>
-+ <description>Montenegrin (Cyrillic, Z and ZHE swapped)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicode</name>
-- <_description>Montenegrin (Latin Unicode)</_description>
-+ <description>Montenegrin (Latin Unicode)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinyz</name>
-- <_description>Montenegrin (Latin qwerty)</_description>
-+ <description>Montenegrin (Latin qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicodeyz</name>
-- <_description>Montenegrin (Latin Unicode qwerty)</_description>
-+ <description>Montenegrin (Latin Unicode qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cyrillicalternatequotes</name>
-- <_description>Montenegrin (Cyrillic with guillemets)</_description>
-+ <description>Montenegrin (Cyrillic with guillemets)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinalternatequotes</name>
-- <_description>Montenegrin (Latin with guillemets)</_description>
-+ <description>Montenegrin (Latin with guillemets)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3916,9 +3916,9 @@
- <layout>
- <configItem>
- <name>mk</name>
-- <!-- Keyboard indicator for Macedonian layouts -->
-- <_shortDescription>mk</_shortDescription>
-- <_description>Macedonian</_description>
-+
-+ <shortDescription>mk</shortDescription>
-+ <description>Macedonian</description>
- <languageList>
- <iso639Id>mkd</iso639Id>
- </languageList>
-@@ -3927,7 +3927,7 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Macedonian (eliminate dead keys)</_description>
-+ <description>Macedonian (eliminate dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3935,9 +3935,9 @@
- <layout>
- <configItem>
- <name>mt</name>
-- <!-- Keyboard indicator for Maltese layouts -->
-- <_shortDescription>mt</_shortDescription>
-- <_description>Maltese</_description>
-+
-+ <shortDescription>mt</shortDescription>
-+ <description>Maltese</description>
- <languageList>
- <iso639Id>mlt</iso639Id>
- </languageList>
-@@ -3946,7 +3946,7 @@
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Maltese (with US layout)</_description>
-+ <description>Maltese (with US layout)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3954,9 +3954,9 @@
- <layout>
- <configItem>
- <name>mn</name>
-- <!-- Keyboard indicator for Mongolian layouts -->
-- <_shortDescription>mn</_shortDescription>
-- <_description>Mongolian</_description>
-+
-+ <shortDescription>mn</shortDescription>
-+ <description>Mongolian</description>
- <languageList>
- <iso639Id>mon</iso639Id>
- </languageList>
-@@ -3966,9 +3966,9 @@
- <layout>
- <configItem>
- <name>no</name>
-- <!-- Keyboard indicator for Norwegian layouts -->
-- <_shortDescription>no</_shortDescription>
-- <_description>Norwegian</_description>
-+
-+ <shortDescription>no</shortDescription>
-+ <description>Norwegian</description>
- <languageList>
- <iso639Id>nor</iso639Id>
- <iso639Id>nob</iso639Id>
-@@ -3979,19 +3979,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Norwegian (eliminate dead keys)</_description>
-+ <description>Norwegian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Norwegian (Dvorak)</_description>
-+ <description>Norwegian (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
-- <_description>Northern Saami (Norway)</_description>
-+ <description>Northern Saami (Norway)</description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
-@@ -4000,7 +4000,7 @@
- <variant>
- <configItem>
- <name>smi_nodeadkeys</name>
-- <_description>Northern Saami (Norway, eliminate dead keys)</_description>
-+ <description>Northern Saami (Norway, eliminate dead keys)</description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
-@@ -4009,19 +4009,19 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Norwegian (Macintosh)</_description>
-+ <description>Norwegian (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>Norwegian (Macintosh, eliminate dead keys)</_description>
-+ <description>Norwegian (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Norwegian (Colemak)</_description>
-+ <description>Norwegian (Colemak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4029,9 +4029,9 @@
- <layout>
- <configItem>
- <name>pl</name>
-- <!-- Keyboard indicator for Polish layouts -->
-- <_shortDescription>pl</_shortDescription>
-- <_description>Polish</_description>
-+
-+ <shortDescription>pl</shortDescription>
-+ <description>Polish</description>
- <languageList>
- <iso639Id>pol</iso639Id>
- </languageList>
-@@ -4040,37 +4040,37 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Polish (legacy)</_description>
-+ <description>Polish (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwertz</name>
-- <_description>Polish (qwertz)</_description>
-+ <description>Polish (qwertz)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Polish (Dvorak)</_description>
-+ <description>Polish (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak_quotes</name>
-- <_description>Polish (Dvorak, Polish quotes on quotemark key)</_description>
-+ <description>Polish (Dvorak, Polish quotes on quotemark key)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak_altquotes</name>
-- <_description>Polish (Dvorak, Polish quotes on key 1)</_description>
-+ <description>Polish (Dvorak, Polish quotes on key 1)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>csb</name>
-- <_description>Kashubian</_description>
-+ <description>Kashubian</description>
- <languageList>
- <iso639Id>csb</iso639Id>
- </languageList>
-@@ -4086,9 +4086,9 @@
- <variant>
- <configItem>
- <name>ru_phonetic_dvorak</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Poland, phonetic Dvorak)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Poland, phonetic Dvorak)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4097,7 +4097,7 @@
- <variant>
- <configItem>
- <name>dvp</name>
-- <_description>Polish (programmer Dvorak)</_description>
-+ <description>Polish (programmer Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4105,9 +4105,9 @@
- <layout>
- <configItem>
- <name>pt</name>
-- <!-- Keyboard indicator for Portuguese layouts -->
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese</_description>
-+
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese</description>
- <languageList>
- <iso639Id>por</iso639Id>
- </languageList>
-@@ -4116,49 +4116,49 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Portuguese (eliminate dead keys)</_description>
-+ <description>Portuguese (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Portuguese (Sun dead keys)</_description>
-+ <description>Portuguese (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Portuguese (Macintosh)</_description>
-+ <description>Portuguese (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>Portuguese (Macintosh, eliminate dead keys)</_description>
-+ <description>Portuguese (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_sundeadkeys</name>
-- <_description>Portuguese (Macintosh, Sun dead keys)</_description>
-+ <description>Portuguese (Macintosh, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo</name>
-- <_description>Portuguese (Nativo)</_description>
-+ <description>Portuguese (Nativo)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-us</name>
-- <_description>Portuguese (Nativo for US keyboards)</_description>
-+ <description>Portuguese (Nativo for US keyboards)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-epo</name>
-- <_description>Esperanto (Portugal, Nativo)</_description>
-+ <description>Esperanto (Portugal, Nativo)</description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
-@@ -4169,9 +4169,9 @@
- <layout>
- <configItem>
- <name>ro</name>
-- <!-- Keyboard indicator for Romanian layouts -->
-- <_shortDescription>ro</_shortDescription>
-- <_description>Romanian</_description>
-+
-+ <shortDescription>ro</shortDescription>
-+ <description>Romanian</description>
- <languageList>
- <iso639Id>rum</iso639Id>
- </languageList>
-@@ -4180,25 +4180,25 @@
- <variant>
- <configItem>
- <name>cedilla</name>
-- <_description>Romanian (cedilla)</_description>
-+ <description>Romanian (cedilla)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std</name>
-- <_description>Romanian (standard)</_description>
-+ <description>Romanian (standard)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std_cedilla</name>
-- <_description>Romanian (standard cedilla)</_description>
-+ <description>Romanian (standard cedilla)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>winkeys</name>
-- <_description>Romanian (WinKeys)</_description>
-+ <description>Romanian (WinKeys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4206,9 +4206,9 @@
- <layout>
- <configItem>
- <name>ru</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4217,37 +4217,37 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Russian (phonetic)</_description>
-+ <description>Russian (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic_winkeys</name>
-- <_description>Russian (phonetic WinKeys)</_description>
-+ <description>Russian (phonetic WinKeys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter</name>
-- <_description>Russian (typewriter)</_description>
-+ <description>Russian (typewriter)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Russian (legacy)</_description>
-+ <description>Russian (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter-legacy</name>
-- <_description>Russian (typewriter, legacy)</_description>
-+ <description>Russian (typewriter, legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tt</name>
-- <_description>Tatar</_description>
-+ <description>Tatar</description>
- <languageList>
- <iso639Id>tat</iso639Id>
- </languageList>
-@@ -4256,7 +4256,7 @@
- <variant>
- <configItem>
- <name>os_legacy</name>
-- <_description>Ossetian (legacy)</_description>
-+ <description>Ossetian (legacy)</description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
-@@ -4265,7 +4265,7 @@
- <variant>
- <configItem>
- <name>os_winkeys</name>
-- <_description>Ossetian (WinKeys)</_description>
-+ <description>Ossetian (WinKeys)</description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
-@@ -4274,7 +4274,7 @@
- <variant>
- <configItem>
- <name>cv</name>
-- <_description>Chuvash</_description>
-+ <description>Chuvash</description>
- <languageList>
- <iso639Id>chv</iso639Id>
- </languageList>
-@@ -4283,7 +4283,7 @@
- <variant>
- <configItem>
- <name>cv_latin</name>
-- <_description>Chuvash (Latin)</_description>
-+ <description>Chuvash (Latin)</description>
- <languageList>
- <iso639Id>chv</iso639Id>
- </languageList>
-@@ -4292,7 +4292,7 @@
- <variant>
- <configItem>
- <name>udm</name>
-- <_description>Udmurt</_description>
-+ <description>Udmurt</description>
- <languageList>
- <iso639Id>udm</iso639Id>
- </languageList>
-@@ -4301,7 +4301,7 @@
- <variant>
- <configItem>
- <name>kom</name>
-- <_description>Komi</_description>
-+ <description>Komi</description>
- <languageList>
- <iso639Id>kom</iso639Id>
- </languageList>
-@@ -4310,7 +4310,7 @@
- <variant>
- <configItem>
- <name>sah</name>
-- <_description>Yakut</_description>
-+ <description>Yakut</description>
- <languageList>
- <iso639Id>sah</iso639Id>
- </languageList>
-@@ -4319,7 +4319,7 @@
- <variant>
- <configItem>
- <name>xal</name>
-- <_description>Kalmyk</_description>
-+ <description>Kalmyk</description>
- <languageList>
- <iso639Id>xal</iso639Id>
- </languageList>
-@@ -4328,19 +4328,19 @@
- <variant>
- <configItem>
- <name>dos</name>
-- <_description>Russian (DOS)</_description>
-+ <description>Russian (DOS)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Russian (Macintosh)</_description>
-+ <description>Russian (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>srp</name>
-- <_description>Serbian (Russia)</_description>
-+ <description>Serbian (Russia)</description>
- <languageList><iso639Id>rus</iso639Id>
- <iso639Id>srp</iso639Id></languageList>
- </configItem>
-@@ -4348,7 +4348,7 @@
- <variant>
- <configItem>
- <name>bak</name>
-- <_description>Bashkirian</_description>
-+ <description>Bashkirian</description>
- <languageList>
- <iso639Id>bak</iso639Id>
- </languageList>
-@@ -4357,7 +4357,7 @@
- <variant>
- <configItem>
- <name>chm</name>
-- <_description>Mari</_description>
-+ <description>Mari</description>
- <languageList>
- <iso639Id>chm</iso639Id>
- </languageList>
-@@ -4368,9 +4368,9 @@
- <layout>
- <configItem>
- <name>rs</name>
-- <!-- Keyboard indicator for Serbian layouts -->
-- <_shortDescription>sr</_shortDescription>
-- <_description>Serbian</_description>
-+
-+ <shortDescription>sr</shortDescription>
-+ <description>Serbian</description>
- <languageList>
- <iso639Id>srp</iso639Id>
- </languageList>
-@@ -4379,49 +4379,49 @@
- <variant>
- <configItem>
- <name>yz</name>
-- <_description>Serbian (Cyrillic, Z and ZHE swapped)</_description>
-+ <description>Serbian (Cyrillic, Z and ZHE swapped)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin</name>
-- <_description>Serbian (Latin)</_description>
-+ <description>Serbian (Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicode</name>
-- <_description>Serbian (Latin Unicode)</_description>
-+ <description>Serbian (Latin Unicode)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinyz</name>
-- <_description>Serbian (Latin qwerty)</_description>
-+ <description>Serbian (Latin qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicodeyz</name>
-- <_description>Serbian (Latin Unicode qwerty)</_description>
-+ <description>Serbian (Latin Unicode qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Serbian (Cyrillic with guillemets)</_description>
-+ <description>Serbian (Cyrillic with guillemets)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinalternatequotes</name>
-- <_description>Serbian (Latin with guillemets)</_description>
-+ <description>Serbian (Latin with guillemets)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rue</name>
-- <_description>Pannonian Rusyn</_description>
-+ <description>Pannonian Rusyn</description>
- <languageList>
- <iso639Id>rue</iso639Id>
- </languageList>
-@@ -4432,9 +4432,9 @@
- <layout>
- <configItem>
- <name>si</name>
-- <!-- Keyboard indicator for Slovenian layouts -->
-- <_shortDescription>sl</_shortDescription>
-- <_description>Slovenian</_description>
-+
-+ <shortDescription>sl</shortDescription>
-+ <description>Slovenian</description>
- <languageList>
- <iso639Id>slv</iso639Id>
- </languageList>
-@@ -4443,13 +4443,13 @@
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Slovenian (use guillemets for quotes)</_description>
-+ <description>Slovenian (use guillemets for quotes)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Slovenian (US keyboard with Slovenian letters)</_description>
-+ <description>Slovenian (US keyboard with Slovenian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4457,9 +4457,9 @@
- <layout>
- <configItem>
- <name>sk</name>
-- <!-- Keyboard indicator for Slovak layouts -->
-- <_shortDescription>sk</_shortDescription>
-- <_description>Slovak</_description>
-+
-+ <shortDescription>sk</shortDescription>
-+ <description>Slovak</description>
- <languageList>
- <iso639Id>slo</iso639Id>
- </languageList>
-@@ -4468,19 +4468,19 @@
- <variant>
- <configItem>
- <name>bksl</name>
-- <_description>Slovak (extended Backslash)</_description>
-+ <description>Slovak (extended Backslash)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Slovak (qwerty)</_description>
-+ <description>Slovak (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_bksl</name>
-- <_description>Slovak (qwerty, extended Backslash)</_description>
-+ <description>Slovak (qwerty, extended Backslash)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4488,9 +4488,9 @@
- <layout>
- <configItem>
- <name>es</name>
-- <!-- Keyboard indicator for Spanish layouts -->
-- <_shortDescription>es</_shortDescription>
-- <_description>Spanish</_description>
-+
-+ <shortDescription>es</shortDescription>
-+ <description>Spanish</description>
- <languageList>
- <iso639Id>spa</iso639Id>
- </languageList>
-@@ -4499,31 +4499,31 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Spanish (eliminate dead keys)</_description>
-+ <description>Spanish (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadtilde</name>
-- <_description>Spanish (include dead tilde)</_description>
-+ <description>Spanish (include dead tilde)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Spanish (Sun dead keys)</_description>
-+ <description>Spanish (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Spanish (Dvorak)</_description>
-+ <description>Spanish (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ast</name>
-- <_description>Asturian (Spain, with bottom-dot H and bottom-dot L)</_description>
-+ <description>Asturian (Spain, with bottom-dot H and bottom-dot L)</description>
- <languageList>
- <iso639Id>ast</iso639Id>
- </languageList>
-@@ -4532,7 +4532,7 @@
- <variant>
- <configItem>
- <name>cat</name>
-- <_description>Catalan (Spain, with middle-dot L)</_description>
-+ <description>Catalan (Spain, with middle-dot L)</description>
- <languageList>
- <iso639Id>cat</iso639Id>
- </languageList>
-@@ -4541,7 +4541,7 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Spanish (Macintosh)</_description>
-+ <description>Spanish (Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4549,9 +4549,9 @@
- <layout>
- <configItem>
- <name>se</name>
-- <!-- Keyboard indicator for Swedish layouts -->
-- <_shortDescription>sv</_shortDescription>
-- <_description>Swedish</_description>
-+
-+ <shortDescription>sv</shortDescription>
-+ <description>Swedish</description>
- <languageList>
- <iso639Id>swe</iso639Id>
- </languageList>
-@@ -4560,21 +4560,21 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Swedish (eliminate dead keys)</_description>
-+ <description>Swedish (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Swedish (Dvorak)</_description>
-+ <description>Swedish (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Sweden, phonetic)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Sweden, phonetic)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4583,9 +4583,9 @@
- <variant>
- <configItem>
- <name>rus_nodeadkeys</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Sweden, phonetic, eliminate dead keys)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Sweden, phonetic, eliminate dead keys)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4594,7 +4594,7 @@
- <variant>
- <configItem>
- <name>smi</name>
-- <_description>Northern Saami (Sweden)</_description>
-+ <description>Northern Saami (Sweden)</description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
-@@ -4603,19 +4603,19 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Swedish (Macintosh)</_description>
-+ <description>Swedish (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>svdvorak</name>
-- <_description>Swedish (Svdvorak)</_description>
-+ <description>Swedish (Svdvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>swl</name>
-- <_description>Swedish Sign Language</_description>
-+ <description>Swedish Sign Language</description>
- <languageList><iso639Id>swl</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -4624,9 +4624,9 @@
- <layout>
- <configItem>
- <name>ch</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland)</description>
- <languageList><iso639Id>ger</iso639Id>
- <iso639Id>gsw</iso639Id></languageList>
- </configItem>
-@@ -4634,31 +4634,31 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>German (Switzerland, legacy)</_description>
-+ <description>German (Switzerland, legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_nodeadkeys</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland, eliminate dead keys)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_sundeadkeys</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland, Sun dead keys)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4667,9 +4667,9 @@
- <variant>
- <configItem>
- <name>fr_nodeadkeys</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland, eliminate dead keys)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland, eliminate dead keys)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4678,9 +4678,9 @@
- <variant>
- <configItem>
- <name>fr_sundeadkeys</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland, Sun dead keys)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland, Sun dead keys)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4689,9 +4689,9 @@
- <variant>
- <configItem>
- <name>fr_mac</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland, Macintosh)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland, Macintosh)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4700,9 +4700,9 @@
- <variant>
- <configItem>
- <name>de_mac</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland, Macintosh)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland, Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4710,9 +4710,9 @@
- <layout>
- <configItem>
- <name>sy</name>
-- <!-- Keyboard indicator for Arabic layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic (Syria)</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic (Syria)</description>
- <languageList>
- <iso639Id>syr</iso639Id>
- </languageList>
-@@ -4721,25 +4721,25 @@
- <variant>
- <configItem>
- <name>syc</name>
-- <!-- Keyboard indicator for Syriac layouts -->
-- <_shortDescription>syc</_shortDescription>
-- <_description>Syriac</_description>
-+
-+ <shortDescription>syc</shortDescription>
-+ <description>Syriac</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>syc_phonetic</name>
-- <!-- Keyboard indicator for Syriac layouts -->
-- <_shortDescription>syc</_shortDescription>
-- <_description>Syriac (phonetic)</_description>
-+
-+ <shortDescription>syc</shortDescription>
-+ <description>Syriac (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Syria, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Syria, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4748,9 +4748,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Syria, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Syria, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4759,9 +4759,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Syria, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Syria, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4772,9 +4772,9 @@
- <layout>
- <configItem>
- <name>tj</name>
-- <!-- Keyboard indicator for Tajik layouts -->
-- <_shortDescription>tg</_shortDescription>
-- <_description>Tajik</_description>
-+
-+ <shortDescription>tg</shortDescription>
-+ <description>Tajik</description>
- <languageList>
- <iso639Id>tgk</iso639Id>
- </languageList>
-@@ -4783,7 +4783,7 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Tajik (legacy)</_description>
-+ <description>Tajik (legacy)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4791,9 +4791,9 @@
- <layout>
- <configItem>
- <name>lk</name>
-- <!-- Keyboard indicator for Sinhala layouts -->
-- <_shortDescription>si</_shortDescription>
-- <_description>Sinhala (phonetic)</_description>
-+
-+ <shortDescription>si</shortDescription>
-+ <description>Sinhala (phonetic)</description>
- <languageList>
- <iso639Id>sin</iso639Id>
- </languageList>
-@@ -4802,9 +4802,9 @@
- <variant>
- <configItem>
- <name>tam_unicode</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (Sri Lanka, Unicode)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (Sri Lanka, Unicode)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -4813,7 +4813,7 @@
- <variant>
- <configItem>
- <name>tam_TAB</name>
-- <_description>Tamil (Sri Lanka, TAB Typewriter)</_description>
-+ <description>Tamil (Sri Lanka, TAB Typewriter)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -4824,9 +4824,9 @@
- <layout>
- <configItem>
- <name>th</name>
-- <!-- Keyboard indicator for Thai layouts -->
-- <_shortDescription>th</_shortDescription>
-- <_description>Thai</_description>
-+
-+ <shortDescription>th</shortDescription>
-+ <description>Thai</description>
- <languageList>
- <iso639Id>tha</iso639Id>
- </languageList>
-@@ -4835,13 +4835,13 @@
- <variant>
- <configItem>
- <name>tis</name>
-- <_description>Thai (TIS-820.2538)</_description>
-+ <description>Thai (TIS-820.2538)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>pat</name>
-- <_description>Thai (Pattachote)</_description>
-+ <description>Thai (Pattachote)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4849,9 +4849,9 @@
- <layout>
- <configItem>
- <name>tr</name>
-- <!-- Keyboard indicator for Turkish layouts -->
-- <_shortDescription>tr</_shortDescription>
-- <_description>Turkish</_description>
-+
-+ <shortDescription>tr</shortDescription>
-+ <description>Turkish</description>
- <languageList>
- <iso639Id>tur</iso639Id>
- </languageList>
-@@ -4860,27 +4860,27 @@
- <variant>
- <configItem>
- <name>f</name>
-- <_description>Turkish (F)</_description>
-+ <description>Turkish (F)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt</name>
-- <_description>Turkish (Alt-Q)</_description>
-+ <description>Turkish (Alt-Q)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Turkish (Sun dead keys)</_description>
-+ <description>Turkish (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Turkey, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Turkey, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4889,9 +4889,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Turkey, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Turkey, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4900,9 +4900,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Turkey, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Turkey, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4911,15 +4911,15 @@
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>Turkish (international with dead keys)</_description>
-+ <description>Turkish (international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh</name>
-- <!-- Keyboard indicator for Crimean Tatar layouts -->
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Turkish Q)</_description>
-+
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Turkish Q)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -4928,9 +4928,9 @@
- <variant>
- <configItem>
- <name>crh_f</name>
-- <!-- Keyboard indicator for Crimean Tatar layouts -->
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Turkish F)</_description>
-+
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Turkish F)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -4939,9 +4939,9 @@
- <variant>
- <configItem>
- <name>crh_alt</name>
-- <!-- Keyboard indicator for Crimean Tatar layouts -->
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Turkish Alt-Q)</_description>
-+
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Turkish Alt-Q)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -4952,9 +4952,9 @@
- <layout>
- <configItem>
- <name>tw</name>
-- <!-- Keyboard indicator for Taiwanese layouts -->
-- <_shortDescription>zh</_shortDescription>
-- <_description>Taiwanese</_description>
-+
-+ <shortDescription>zh</shortDescription>
-+ <description>Taiwanese</description>
- <languageList>
- <iso639Id>fox</iso639Id>
- </languageList>
-@@ -4963,7 +4963,7 @@
- <variant>
- <configItem>
- <name>indigenous</name>
-- <_description>Taiwanese (indigenous)</_description>
-+ <description>Taiwanese (indigenous)</description>
- <languageList>
- <iso639Id>ami</iso639Id>
- <iso639Id>tay</iso639Id>
-@@ -4987,9 +4987,9 @@
- <variant>
- <configItem>
- <name>saisiyat</name>
-- <!-- Keyboard indicator for Saisiyat layouts -->
-- <_shortDescription>xsy</_shortDescription>
-- <_description>Saisiyat (Taiwan)</_description>
-+
-+ <shortDescription>xsy</shortDescription>
-+ <description>Saisiyat (Taiwan)</description>
- <languageList>
- <iso639Id>xsy</iso639Id>
- </languageList>
-@@ -5000,9 +5000,9 @@
- <layout>
- <configItem>
- <name>ua</name>
-- <!-- Keyboard indicator for Ukranian layouts -->
-- <_shortDescription>uk</_shortDescription>
-- <_description>Ukrainian</_description>
-+
-+ <shortDescription>uk</shortDescription>
-+ <description>Ukrainian</description>
- <languageList>
- <iso639Id>ukr</iso639Id>
- </languageList>
-@@ -5011,43 +5011,43 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Ukrainian (phonetic)</_description>
-+ <description>Ukrainian (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter</name>
-- <_description>Ukrainian (typewriter)</_description>
-+ <description>Ukrainian (typewriter)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>winkeys</name>
-- <_description>Ukrainian (WinKeys)</_description>
-+ <description>Ukrainian (WinKeys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Ukrainian (legacy)</_description>
-+ <description>Ukrainian (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rstu</name>
-- <_description>Ukrainian (standard RSTU)</_description>
-+ <description>Ukrainian (standard RSTU)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rstu_ru</name>
-- <_description>Russian (Ukraine, standard RSTU)</_description>
-+ <description>Russian (Ukraine, standard RSTU)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>homophonic</name>
-- <_description>Ukrainian (homophonic)</_description>
-+ <description>Ukrainian (homophonic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5055,9 +5055,9 @@
- <layout>
- <configItem>
- <name>gb</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (UK)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (UK)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5066,43 +5066,43 @@
- <variant>
- <configItem>
- <name>extd</name>
-- <_description>English (UK, extended WinKeys)</_description>
-+ <description>English (UK, extended WinKeys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>English (UK, international with dead keys)</_description>
-+ <description>English (UK, international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>English (UK, Dvorak)</_description>
-+ <description>English (UK, Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorakukp</name>
-- <_description>English (UK, Dvorak with UK punctuation)</_description>
-+ <description>English (UK, Dvorak with UK punctuation)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>English (UK, Macintosh)</_description>
-+ <description>English (UK, Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_intl</name>
-- <_description>English (UK, Macintosh international)</_description>
-+ <description>English (UK, Macintosh international)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>English (UK, Colemak)</_description>
-+ <description>English (UK, Colemak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5110,9 +5110,9 @@
- <layout>
- <configItem>
- <name>uz</name>
-- <!-- Keyboard indicator for Uzbek layouts -->
-- <_shortDescription>uz</_shortDescription>
-- <_description>Uzbek</_description>
-+
-+ <shortDescription>uz</shortDescription>
-+ <description>Uzbek</description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
-@@ -5121,7 +5121,7 @@
- <variant>
- <configItem>
- <name>latin</name>
-- <_description>Uzbek (Latin)</_description>
-+ <description>Uzbek (Latin)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5129,9 +5129,9 @@
- <layout>
- <configItem>
- <name>vn</name>
-- <!-- Keyboard indicator for Vietnamese layouts -->
-- <_shortDescription>vi</_shortDescription>
-- <_description>Vietnamese</_description>
-+
-+ <shortDescription>vi</shortDescription>
-+ <description>Vietnamese</description>
- <languageList>
- <iso639Id>vie</iso639Id>
- </languageList>
-@@ -5141,9 +5141,9 @@
- <layout>
- <configItem>
- <name>kr</name>
-- <!-- Keyboard indicator for Korean layouts -->
-- <_shortDescription>ko</_shortDescription>
-- <_description>Korean</_description>
-+
-+ <shortDescription>ko</shortDescription>
-+ <description>Korean</description>
- <languageList>
- <iso639Id>kor</iso639Id>
- </languageList>
-@@ -5152,7 +5152,7 @@
- <variant>
- <configItem>
- <name>kr104</name>
-- <_description>Korean (101/104 key compatible)</_description>
-+ <description>Korean (101/104 key compatible)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5160,9 +5160,9 @@
- <layout>
- <configItem>
- <name>nec_vndr/jp</name>
-- <!-- Keyboard indicator for Japanese layouts -->
-- <_shortDescription>ja</_shortDescription>
-- <_description>Japanese (PC-98xx Series)</_description>
-+
-+ <shortDescription>ja</shortDescription>
-+ <description>Japanese (PC-98xx Series)</description>
- <countryList>
- <iso3166Id>JP</iso3166Id>
- </countryList>
-@@ -5175,9 +5175,9 @@
- <layout>
- <configItem>
- <name>ie</name>
-- <!-- Keyboard indicator for Irish layouts -->
-- <_shortDescription>ie</_shortDescription>
-- <_description>Irish</_description>
-+
-+ <shortDescription>ie</shortDescription>
-+ <description>Irish</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5186,7 +5186,7 @@
- <variant>
- <configItem>
- <name>CloGaelach</name>
-- <_description>CloGaelach</_description>
-+ <description>CloGaelach</description>
- <languageList>
- <iso639Id>gle</iso639Id>
- </languageList>
-@@ -5195,13 +5195,13 @@
- <variant>
- <configItem>
- <name>UnicodeExpert</name>
-- <_description>Irish (UnicodeExpert)</_description>
-+ <description>Irish (UnicodeExpert)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ogam</name>
-- <_description>Ogham</_description>
-+ <description>Ogham</description>
- <languageList>
- <iso639Id>sga</iso639Id>
- </languageList>
-@@ -5210,7 +5210,7 @@
- <variant>
- <configItem>
- <name>ogam_is434</name>
-- <_description>Ogham (IS434)</_description>
-+ <description>Ogham (IS434)</description>
- <languageList>
- <iso639Id>sga</iso639Id>
- </languageList>
-@@ -5221,9 +5221,9 @@
- <layout>
- <configItem>
- <name>pk</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (Pakistan)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (Pakistan)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -5232,20 +5232,20 @@
- <variant>
- <configItem>
- <name>urd-crulp</name>
-- <_description>Urdu (Pakistan, CRULP)</_description>
-+ <description>Urdu (Pakistan, CRULP)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>urd-nla</name>
-- <_description>Urdu (Pakistan, NLA)</_description>
-+ <description>Urdu (Pakistan, NLA)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ara</name>
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic (Pakistan)</_description>
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic (Pakistan)</description>
- <languageList>
- <iso639Id>ara</iso639Id>
- </languageList>
-@@ -5254,9 +5254,9 @@
- <variant>
- <configItem>
- <name>snd</name>
-- <!-- Keyboard indicator for Sindhi layouts -->
-- <_shortDescription>sd</_shortDescription>
-- <_description>Sindhi</_description>
-+
-+ <shortDescription>sd</shortDescription>
-+ <description>Sindhi</description>
- <languageList>
- <iso639Id>snd</iso639Id>
- </languageList>
-@@ -5267,9 +5267,9 @@
- <layout>
- <configItem>
- <name>mv</name>
-- <!-- Keyboard indicator for Dhivehi layouts -->
-- <_shortDescription>dv</_shortDescription>
-- <_description>Dhivehi</_description>
-+
-+ <shortDescription>dv</shortDescription>
-+ <description>Dhivehi</description>
- <languageList>
- <iso639Id>div</iso639Id>
- </languageList>
-@@ -5279,9 +5279,9 @@
- <layout>
- <configItem>
- <name>za</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (South Africa)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (South Africa)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5290,9 +5290,9 @@
- <layout>
- <configItem>
- <name>epo</name>
-- <!-- Keyboard indicator for Esperanto layouts -->
-- <_shortDescription>eo</_shortDescription>
-- <_description>Esperanto</_description>
-+
-+ <shortDescription>eo</shortDescription>
-+ <description>Esperanto</description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
-@@ -5301,7 +5301,7 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Esperanto (displaced semicolon and quote, obsolete)</_description>
-+ <description>Esperanto (displaced semicolon and quote, obsolete)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5309,9 +5309,9 @@
- <layout>
- <configItem>
- <name>np</name>
-- <!-- Keyboard indicator for Nepali layouts -->
-- <_shortDescription>ne</_shortDescription>
-- <_description>Nepali</_description>
-+
-+ <shortDescription>ne</shortDescription>
-+ <description>Nepali</description>
- <languageList>
- <iso639Id>nep</iso639Id>
- </languageList>
-@@ -5320,9 +5320,9 @@
- <layout>
- <configItem>
- <name>ng</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Nigeria)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Nigeria)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5331,9 +5331,9 @@
- <variant>
- <configItem>
- <name>igbo</name>
-- <!-- Keyboard indicator for Igbo layouts -->
-- <_shortDescription>ig</_shortDescription>
-- <_description>Igbo</_description>
-+
-+ <shortDescription>ig</shortDescription>
-+ <description>Igbo</description>
- <languageList>
- <iso639Id>ibo</iso639Id>
- </languageList>
-@@ -5342,9 +5342,9 @@
- <variant>
- <configItem>
- <name>yoruba</name>
-- <!-- Keyboard indicator for Yoruba layouts -->
-- <_shortDescription>yo</_shortDescription>
-- <_description>Yoruba</_description>
-+
-+ <shortDescription>yo</shortDescription>
-+ <description>Yoruba</description>
- <languageList>
- <iso639Id>yor</iso639Id>
- </languageList>
-@@ -5353,9 +5353,9 @@
- <variant>
- <configItem>
- <name>hausa</name>
-- <!-- Keyboard indicator for Hausa layouts -->
-- <_shortDescription>ha</_shortDescription>
-- <_description>Hausa</_description>
-+
-+ <shortDescription>ha</shortDescription>
-+ <description>Hausa</description>
- <languageList>
- <iso639Id>hau</iso639Id>
- </languageList>
-@@ -5366,9 +5366,9 @@
- <layout>
- <configItem>
- <name>et</name>
-- <!-- Keyboard indicator for Amharic layouts -->
-- <_shortDescription>am</_shortDescription>
-- <_description>Amharic</_description>
-+
-+ <shortDescription>am</shortDescription>
-+ <description>Amharic</description>
- <languageList>
- <iso639Id>amh</iso639Id>
- </languageList>
-@@ -5378,9 +5378,9 @@
- <layout>
- <configItem>
- <name>sn</name>
-- <!-- Keyboard indicator for Wolof layouts -->
-- <_shortDescription>wo</_shortDescription>
-- <_description>Wolof</_description>
-+
-+ <shortDescription>wo</shortDescription>
-+ <description>Wolof</description>
- <languageList>
- <iso639Id>wol</iso639Id>
- </languageList>
-@@ -5390,21 +5390,21 @@
- <layout>
- <configItem>
- <name>brai</name>
-- <!-- Keyboard indicator for Braille layouts -->
-- <_shortDescription>brl</_shortDescription>
-- <_description>Braille</_description>
-+
-+ <shortDescription>brl</shortDescription>
-+ <description>Braille</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>left_hand</name>
-- <_description>Braille (left hand)</_description>
-+ <description>Braille (left hand)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>right_hand</name>
-- <_description>Braille (right hand)</_description>
-+ <description>Braille (right hand)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5412,9 +5412,9 @@
- <layout>
- <configItem>
- <name>tm</name>
-- <!-- Keyboard indicator for Turkmen layouts -->
-- <_shortDescription>tk</_shortDescription>
-- <_description>Turkmen</_description>
-+
-+ <shortDescription>tk</shortDescription>
-+ <description>Turkmen</description>
- <languageList>
- <iso639Id>tuk</iso639Id>
- </languageList>
-@@ -5423,7 +5423,7 @@
- <variant>
- <configItem>
- <name>alt</name>
-- <_description>Turkmen (Alt-Q)</_description>
-+ <description>Turkmen (Alt-Q)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5431,9 +5431,9 @@
- <layout>
- <configItem>
- <name>ml</name>
-- <!-- Keyboard indicator for Bambara layouts -->
-- <_shortDescription>bm</_shortDescription>
-- <_description>Bambara</_description>
-+
-+ <shortDescription>bm</shortDescription>
-+ <description>Bambara</description>
- <languageList>
- <iso639Id>bam</iso639Id>
- </languageList>
-@@ -5442,9 +5442,9 @@
- <variant>
- <configItem>
- <name>fr-oss</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Mali, alternative)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Mali, alternative)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -5453,9 +5453,9 @@
- <variant>
- <configItem>
- <name>us-mac</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Mali, US Macintosh)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Mali, US Macintosh)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5464,9 +5464,9 @@
- <variant>
- <configItem>
- <name>us-intl</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Mali, US international)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Mali, US international)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5477,9 +5477,9 @@
- <layout>
- <configItem>
- <name>tz</name>
-- <!-- Keyboard indicator for Swahili layouts -->
-- <_shortDescription>sw</_shortDescription>
-- <_description>Swahili (Tanzania)</_description>
-+
-+ <shortDescription>sw</shortDescription>
-+ <description>Swahili (Tanzania)</description>
- <languageList>
- <iso639Id>swa</iso639Id>
- </languageList>
-@@ -5488,9 +5488,9 @@
- <layout>
- <configItem>
- <name>ke</name>
-- <!-- Keyboard indicator for Swahili layouts -->
-- <_shortDescription>sw</_shortDescription>
-- <_description>Swahili (Kenya)</_description>
-+
-+ <shortDescription>sw</shortDescription>
-+ <description>Swahili (Kenya)</description>
- <languageList>
- <iso639Id>swa</iso639Id>
- </languageList>
-@@ -5499,9 +5499,9 @@
- <variant>
- <configItem>
- <name>kik</name>
-- <!-- Keyboard indicator for Kikuyu layouts -->
-- <_shortDescription>ki</_shortDescription>
-- <_description>Kikuyu</_description>
-+
-+ <shortDescription>ki</shortDescription>
-+ <description>Kikuyu</description>
- <languageList>
- <iso639Id>kik</iso639Id>
- </languageList>
-@@ -5512,9 +5512,9 @@
- <layout>
- <configItem>
- <name>bw</name>
-- <!-- Keyboard indicator for Tswana layouts -->
-- <_shortDescription>tn</_shortDescription>
-- <_description>Tswana</_description>
-+
-+ <shortDescription>tn</shortDescription>
-+ <description>Tswana</description>
- <languageList>
- <iso639Id>tsn</iso639Id>
- </languageList>
-@@ -5523,9 +5523,9 @@
- <layout>
- <configItem>
- <name>ph</name>
-- <!-- Keyboard indicator for Filipino layouts -->
-- <_shortDescription>ph</_shortDescription>
-- <_description>Filipino</_description>
-+
-+ <shortDescription>ph</shortDescription>
-+ <description>Filipino</description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
-@@ -5542,7 +5542,7 @@
- <variant>
- <configItem>
- <name>qwerty-bay</name>
-- <_description>Filipino (QWERTY Baybayin)</_description>
-+ <description>Filipino (QWERTY Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5558,13 +5558,13 @@
- <variant>
- <configItem>
- <name>capewell-dvorak</name>
-- <_description>Filipino (Capewell-Dvorak Latin)</_description>
-+ <description>Filipino (Capewell-Dvorak Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-dvorak-bay</name>
-- <_description>Filipino (Capewell-Dvorak Baybayin)</_description>
-+ <description>Filipino (Capewell-Dvorak Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5580,13 +5580,13 @@
- <variant>
- <configItem>
- <name>capewell-qwerf2k6</name>
-- <_description>Filipino (Capewell-QWERF 2006 Latin)</_description>
-+ <description>Filipino (Capewell-QWERF 2006 Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-qwerf2k6-bay</name>
-- <_description>Filipino (Capewell-QWERF 2006 Baybayin)</_description>
-+ <description>Filipino (Capewell-QWERF 2006 Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5602,13 +5602,13 @@
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Filipino (Colemak Latin)</_description>
-+ <description>Filipino (Colemak Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak-bay</name>
-- <_description>Filipino (Colemak Baybayin)</_description>
-+ <description>Filipino (Colemak Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5624,13 +5624,13 @@
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Filipino (Dvorak Latin)</_description>
-+ <description>Filipino (Dvorak Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-bay</name>
-- <_description>Filipino (Dvorak Baybayin)</_description>
-+ <description>Filipino (Dvorak Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5648,16 +5648,16 @@
- <layout>
- <configItem>
- <name>md</name>
-- <_shortDescription>md</_shortDescription>
-- <_description>Moldavian</_description>
-+ <shortDescription>md</shortDescription>
-+ <description>Moldavian</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>gag</name>
-- <_shortDescription>gag</_shortDescription>
-- <_description>Moldavian (Gagauz)</_description>
-+ <shortDescription>gag</shortDescription>
-+ <description>Moldavian (Gagauz)</description>
- <languageList><iso639Id>gag</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -5666,1183 +5666,1142 @@
- </layoutList>
- <optionList>
- <group allowMultipleSelection="true">
-- <!-- The key combination used to switch between groups -->
-+
- <configItem>
- <name>grp</name>
-- <_description>Switching to another layout</_description>
-+ <description>Switching to another layout</description>
- </configItem>
- <option>
- <configItem>
- <name>grp:switch</name>
-- <_description>Right Alt (while pressed)</_description>
-+ <description>Right Alt (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lswitch</name>
-- <_description>Left Alt (while pressed)</_description>
-+ <description>Left Alt (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lwin_switch</name>
-- <_description>Left Win (while pressed)</_description>
-+ <description>Left Win (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rwin_switch</name>
-- <_description>Right Win (while pressed)</_description>
-+ <description>Right Win (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:win_switch</name>
-- <_description>Any Win key (while pressed)</_description>
-+ <description>Any Win key (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:caps_switch</name>
-- <_description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</_description>
-+ <description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_switch</name>
-- <_description>Right Ctrl (while pressed)</_description>
-+ <description>Right Ctrl (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:toggle</name>
-- <_description>Right Alt</_description>
-+ <description>Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lalt_toggle</name>
-- <_description>Left Alt</_description>
-+ <description>Left Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:caps_toggle</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shift_caps_toggle</name>
-- <_description>Shift+Caps Lock</_description>
-+ <description>Shift+Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shift_caps_switch</name>
-- <_description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</_description>
-+ <description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:win_menu_switch</name>
-- <_description>Left Win (to first layout), Right Win/Menu (to last layout)</_description>
-+ <description>Left Win (to first layout), Right Win/Menu (to last layout)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_rctrl_switch</name>
-- <_description>Left Ctrl (to first layout), Right Ctrl (to last layout)</_description>
-+ <description>Left Ctrl (to first layout), Right Ctrl (to last layout)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_caps_toggle</name>
-- <_description>Alt+Caps Lock</_description>
-+ <description>Alt+Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shifts_toggle</name>
-- <_description>Both Shift keys together</_description>
-+ <description>Both Shift keys together</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alts_toggle</name>
-- <_description>Both Alt keys together</_description>
-+ <description>Both Alt keys together</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrls_toggle</name>
-- <_description>Both Ctrl keys together</_description>
-+ <description>Both Ctrl keys together</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrl_shift_toggle</name>
-- <_description>Ctrl+Shift</_description>
-+ <description>Ctrl+Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_lshift_toggle</name>
-- <_description>Left Ctrl+Left Shift</_description>
-+ <description>Left Ctrl+Left Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_rshift_toggle</name>
-- <_description>Right Ctrl+Right Shift</_description>
-+ <description>Right Ctrl+Right Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrl_alt_toggle</name>
-- <_description>Alt+Ctrl</_description>
-+ <description>Alt+Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_shift_toggle</name>
-- <_description>Alt+Shift</_description>
-+ <description>Alt+Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lalt_lshift_toggle</name>
-- <_description>Left Alt+Left Shift</_description>
-+ <description>Left Alt+Left Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_space_toggle</name>
-- <_description>Alt+Space</_description>
-+ <description>Alt+Space</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:menu_toggle</name>
-- <_description>Menu</_description>
-+ <description>Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lwin_toggle</name>
-- <_description>Left Win</_description>
-+ <description>Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rwin_toggle</name>
-- <_description>Right Win</_description>
-+ <description>Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lshift_toggle</name>
-- <_description>Left Shift</_description>
-+ <description>Left Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rshift_toggle</name>
-- <_description>Right Shift</_description>
-+ <description>Right Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_toggle</name>
-- <_description>Left Ctrl</_description>
-+ <description>Left Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_toggle</name>
-- <_description>Right Ctrl</_description>
-+ <description>Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:sclk_toggle</name>
-- <_description>Scroll Lock</_description>
-+ <description>Scroll Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_lwin_rctrl_menu</name>
-- <_description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</_description>
-+ <description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- The key combination used to choose the 3rd (and 4th, together with Shift)
-- level of symbols -->
-+
- <configItem>
- <name>lv3</name>
-- <_description>Key to choose 3rd level</_description>
-+ <description>Key to choose 3rd level</description>
- </configItem>
- <option>
- <configItem>
- <name>lv3:switch</name>
-- <_description>Right Ctrl</_description>
-+ <description>Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:menu_switch</name>
-- <_description>Menu</_description>
-+ <description>Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:win_switch</name>
-- <_description>Any Win key</_description>
-+ <description>Any Win key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lwin_switch</name>
-- <_description>Left Win</_description>
-+ <description>Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:rwin_switch</name>
-- <_description>Right Win</_description>
-+ <description>Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:alt_switch</name>
-- <_description>Any Alt key</_description>
-+ <description>Any Alt key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lalt_switch</name>
-- <_description>Left Alt</_description>
-+ <description>Left Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_switch</name>
-- <_description>Right Alt</_description>
-+ <description>Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_switch_multikey</name>
-- <_description>Right Alt, Shift+Right Alt key is Compose</_description>
-+ <description>Right Alt, Shift+Right Alt key is Compose</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_alt</name>
-- <_description>Right Alt key never chooses 3rd level</_description>
-+ <description>Right Alt key never chooses 3rd level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:enter_switch</name>
-- <_description>Enter on keypad</_description>
-+ <description>Enter on keypad</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:caps_switch</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:bksl_switch</name>
-- <_description>Backslash</_description>
-+ <description>Backslash</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lsgt_switch</name>
-- <_description>&lt;Less/Greater&gt;</_description>
-+ <description>&lt;Less/Greater&gt;</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:caps_switch_latch</name>
-- <_description>Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</_description>
-+ <description>Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:bksl_switch_latch</name>
-- <_description>Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</_description>
-+ <description>Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lsgt_switch_latch</name>
-- <_description>&lt;Less/Greater&gt; chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</_description>
-+ <description>&lt;Less/Greater&gt; chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Tweaking the position of the "Ctrl" key -->
-+
- <configItem>
- <name>ctrl</name>
-- <_description>Ctrl key position</_description>
-+ <description>Ctrl key position</description>
- </configItem>
- <option>
- <configItem>
- <name>ctrl:nocaps</name>
-- <_description>Caps Lock as Ctrl</_description>
-+ <description>Caps Lock as Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:lctrl_meta</name>
-- <_description>Left Ctrl as Meta</_description>
-+ <description>Left Ctrl as Meta</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swapcaps</name>
-- <_description>Swap Ctrl and Caps Lock</_description>
-+ <description>Swap Ctrl and Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ac_ctrl</name>
-- <_description>At left of 'A'</_description>
-+ <description>At left of 'A'</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:aa_ctrl</name>
-- <_description>At bottom left</_description>
-+ <description>At bottom left</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:rctrl_ralt</name>
-- <_description>Right Ctrl as Right Alt</_description>
-+ <description>Right Ctrl as Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:menu_rctrl</name>
-- <_description>Menu as Right Ctrl</_description>
-+ <description>Menu as Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ctrl_ralt</name>
-- <_description>Right Alt as Right Ctrl</_description>
-+ <description>Right Alt as Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swap_lalt_lctl</name>
-- <_description>Swap Left Alt key with Left Ctrl key</_description>
-+ <description>Swap Left Alt key with Left Ctrl key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swap_lwin_lctl</name>
-- <_description>Swap Left Win key with Left Ctrl key</_description>
-+ <description>Swap Left Win key with Left Ctrl key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swap_lalt_lctl_lwin</name>
-- <_description>Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt</_description>
-+ <description>Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Using startard LEDs to indicate the alternative (not first) group(s) -->
-+
- <configItem>
- <name>grp_led</name>
-- <_description>Use keyboard LED to show alternative layout</_description>
-+ <description>Use keyboard LED to show alternative layout</description>
- </configItem>
- <option>
- <configItem>
- <name>grp_led:num</name>
-- <_description>Num Lock</_description>
-+ <description>Num Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp_led:caps</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp_led:scroll</name>
-- <_description>Scroll Lock</_description>
-+ <description>Scroll Lock</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
-- <!-- Select a keypad type -->
-+
- <configItem>
- <name>keypad</name>
-- <_description>Layout of numeric keypad</_description>
-+ <description>Layout of numeric keypad</description>
- </configItem>
- <option>
- <configItem>
- <name>keypad:legacy</name>
-- <_description>Legacy</_description>
-+ <description>Legacy</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:oss</name>
-- <_description>Unicode additions (arrows and math operators)</_description>
-+ <description>Unicode additions (arrows and math operators)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:future</name>
-- <_description>Unicode additions (arrows and math operators; math operators on default level)</_description>
-+ <description>Unicode additions (arrows and math operators; math operators on default level)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:legacy_wang</name>
-- <_description>Legacy Wang 724</_description>
-+ <description>Legacy Wang 724</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:oss_wang</name>
-- <_description>Wang 724 keypad with Unicode additions (arrows and math operators)</_description>
-+ <description>Wang 724 keypad with Unicode additions (arrows and math operators)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:future_wang</name>
-- <_description>Wang 724 keypad with Unicode additions (arrows and math operators; math operators on default level)</_description>
-+ <description>Wang 724 keypad with Unicode additions (arrows and math operators; math operators on default level)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:hex</name>
-- <_description>Hexadecimal</_description>
-+ <description>Hexadecimal</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:atm</name>
-- <_description>ATM/phone-style</_description>
-+ <description>ATM/phone-style</description>
- </configItem>
- </option>
- </group>
-- <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place -->
-+
- <group allowMultipleSelection="false">
-- <!-- Select a keypad KPDL variant -->
-+
- <configItem>
- <name>kpdl</name>
-- <_description>Numeric keypad delete key behaviour</_description>
-+ <description>Numeric keypad delete key behaviour</description>
- </configItem>
- <option>
- <configItem>
-- <!-- Actually, with KP_DECIMAL, as the old keypad(dot) -->
-+
- <name>kpdl:dot</name>
-- <_description>Legacy key with dot</_description>
-+ <description>Legacy key with dot</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:comma</name>
-- <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) -->
-- <_description>Legacy key with comma</_description>
-+
-+ <description>Legacy key with comma</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:dotoss</name>
-- <_description>Four-level key with dot</_description>
-+ <description>Four-level key with dot</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:dotoss_latin9</name>
-- <_description>Four-level key with dot, Latin-9 only</_description>
-+ <description>Four-level key with dot, Latin-9 only</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:commaoss</name>
-- <_description>Four-level key with comma</_description>
-+ <description>Four-level key with comma</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:momayyezoss</name>
-- <_description>Four-level key with momayyez</_description>
-+ <description>Four-level key with momayyez</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:kposs</name>
-- <!-- This assumes the KP_ abstract symbols are actually useful for some apps
-- The description needs to be rewritten -->
-- <_description>Four-level key with abstract separators</_description>
-+
-+ <description>Four-level key with abstract separators</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:semi</name>
-- <_description>Semicolon on third level</_description>
-+ <description>Semicolon on third level</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
-- <!-- Caps Lock tweaks.
-- "Internal" capitalization means capitalization using some internal tables.
-- Otherwise "as Shift" - means using next group. -->
-+
- <configItem>
- <name>caps</name>
-- <_description>Caps Lock key behavior</_description>
-+ <description>Caps Lock key behavior</description>
- </configItem>
- <option>
- <configItem>
- <name>caps:internal</name>
-- <_description>Caps Lock uses internal capitalization; Shift "pauses" Caps Lock</_description>
-+ <description>Caps Lock uses internal capitalization; Shift "pauses" Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:internal_nocancel</name>
-- <_description>Caps Lock uses internal capitalization; Shift doesn't affect Caps Lock</_description>
-+ <description>Caps Lock uses internal capitalization; Shift doesn't affect Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shift</name>
-- <_description>Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock</_description>
-+ <description>Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shift_nocancel</name>
-- <_description>Caps Lock acts as Shift with locking; Shift doesn't affect Caps Lock</_description>
-+ <description>Caps Lock acts as Shift with locking; Shift doesn't affect Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:capslock</name>
-- <_description>Caps Lock toggles normal capitalization of alphabetic characters</_description>
-+ <description>Caps Lock toggles normal capitalization of alphabetic characters</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:numlock</name>
-- <_description>Make Caps Lock an additional Num Lock</_description>
-+ <description>Make Caps Lock an additional Num Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:swapescape</name>
-- <_description>Swap ESC and Caps Lock</_description>
-+ <description>Swap ESC and Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:escape</name>
-- <_description>Make Caps Lock an additional ESC</_description>
-+ <description>Make Caps Lock an additional ESC</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:backspace</name>
-- <_description>Make Caps Lock an additional Backspace</_description>
-+ <description>Make Caps Lock an additional Backspace</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:super</name>
-- <_description>Make Caps Lock an additional Super</_description>
-+ <description>Make Caps Lock an additional Super</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:hyper</name>
-- <_description>Make Caps Lock an additional Hyper</_description>
-+ <description>Make Caps Lock an additional Hyper</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shiftlock</name>
-- <_description>Caps Lock toggles ShiftLock (affects all keys)</_description>
-+ <description>Caps Lock toggles ShiftLock (affects all keys)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:none</name>
-- <_description>Caps Lock is disabled</_description>
-+ <description>Caps Lock is disabled</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:ctrl_modifier</name>
-- <_description>Make Caps Lock an additional Ctrl</_description>
-+ <description>Make Caps Lock an additional Ctrl</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
-- <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) -->
-+
- <configItem>
- <name>altwin</name>
-- <_description>Alt/Win key behavior</_description>
-+ <description>Alt/Win key behavior</description>
- </configItem>
- <option>
- <configItem>
- <name>altwin:menu</name>
-- <_description>Add the standard behavior to Menu key</_description>
-+ <description>Add the standard behavior to Menu key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:meta_alt</name>
-- <_description>Alt and Meta are on Alt keys</_description>
-+ <description>Alt and Meta are on Alt keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:alt_win</name>
-- <_description>Alt is mapped to Win keys (and the usual Alt keys)</_description>
-+ <description>Alt is mapped to Win keys (and the usual Alt keys)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:ctrl_win</name>
-- <_description>Ctrl is mapped to Win keys (and the usual Ctrl keys)</_description>
-+ <description>Ctrl is mapped to Win keys (and the usual Ctrl keys)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:ctrl_alt_win</name>
-- <_description>Ctrl is mapped to Alt keys, Alt is mapped to Win keys</_description>
-+ <description>Ctrl is mapped to Alt keys, Alt is mapped to Win keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:meta_win</name>
-- <_description>Meta is mapped to Win keys</_description>
-+ <description>Meta is mapped to Win keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:left_meta_win</name>
-- <_description>Meta is mapped to Left Win</_description>
-+ <description>Meta is mapped to Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:hyper_win</name>
-- <_description>Hyper is mapped to Win-keys</_description>
-+ <description>Hyper is mapped to Win-keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:alt_super_win</name>
-- <_description>Alt is mapped to Right Win, Super to Menu</_description>
-+ <description>Alt is mapped to Right Win, Super to Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:swap_alt_win</name>
-- <_description>Alt is swapped with Win</_description>
-+ <description>Alt is swapped with Win</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys -->
-+
- <configItem>
- <name>Compose key</name>
-- <_description>Position of Compose key</_description>
-+ <description>Position of Compose key</description>
- </configItem>
- <option>
- <configItem>
- <name>compose:ralt</name>
-- <_description>Right Alt</_description>
-+ <description>Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lwin</name>
-- <_description>Left Win</_description>
-+ <description>Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lwin-altgr</name>
-- <_description>3rd level of Left Win</_description>
-+ <description>3rd level of Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rwin</name>
-- <_description>Right Win</_description>
-+ <description>Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rwin-altgr</name>
-- <_description>3rd level of Right Win</_description>
-+ <description>3rd level of Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:menu</name>
-- <_description>Menu</_description>
-+ <description>Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:menu-altgr</name>
-- <_description>3rd level of Menu</_description>
-+ <description>3rd level of Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lctrl</name>
-- <_description>Left Ctrl</_description>
-+ <description>Left Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lctrl-altgr</name>
-- <_description>3rd level of Left Ctrl</_description>
-+ <description>3rd level of Left Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rctrl</name>
-- <_description>Right Ctrl</_description>
-+ <description>Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rctrl-altgr</name>
-- <_description>3rd level of Right Ctrl</_description>
-+ <description>3rd level of Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:caps</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:caps-altgr</name>
-- <_description>3rd level of Caps Lock</_description>
-+ <description>3rd level of Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:102</name>
-- <_description>&lt;Less/Greater&gt;</_description>
-+ <description>&lt;Less/Greater&gt;</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:102-altgr</name>
-- <_description>3rd level of &lt;Less/Greater&gt;</_description>
-+ <description>3rd level of &lt;Less/Greater&gt;</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:paus</name>
-- <_description>Pause</_description>
-+ <description>Pause</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:prsc</name>
-- <_description>PrtSc</_description>
-+ <description>PrtSc</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:sclk</name>
-- <_description>Scroll Lock</_description>
-+ <description>Scroll Lock</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>compat</name>
-- <_description>Miscellaneous compatibility options</_description>
-+ <description>Miscellaneous compatibility options</description>
- </configItem>
- <option>
- <configItem>
- <name>numpad:pc</name>
-- <_description>Default numeric keypad keys</_description>
-+ <description>Default numeric keypad keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:mac</name>
-- <_description>Numeric keypad keys always enter digits (as in Mac OS)</_description>
-+ <description>Numeric keypad keys always enter digits (as in Mac OS)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:microsoft</name>
-- <_description>Shift with numeric keypad keys works as in MS Windows</_description>
-+ <description>Shift with numeric keypad keys works as in MS Windows</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:shift3</name>
-- <_description>Shift does not cancel Num Lock, chooses 3rd level instead</_description>
-+ <description>Shift does not cancel Num Lock, chooses 3rd level instead</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>srvrkeys:none</name>
-- <_description>Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server</_description>
-+ <description>Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>apple:alupckeys</name>
-- <_description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</_description>
-+ <description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:breaks_caps</name>
-- <_description>Shift cancels Caps Lock</_description>
-+ <description>Shift cancels Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>misc:typo</name>
-- <_description>Enable extra typographic characters</_description>
-+ <description>Enable extra typographic characters</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_capslock</name>
-- <_description>Both Shift keys together toggle Caps Lock</_description>
-+ <description>Both Shift keys together toggle Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_capslock_cancel</name>
-- <_description>Both Shift keys together activate Caps Lock, one Shift key deactivates</_description>
-+ <description>Both Shift keys together activate Caps Lock, one Shift key deactivates</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_shiftlock</name>
-- <_description>Both Shift keys together toggle ShiftLock</_description>
-+ <description>Both Shift keys together toggle ShiftLock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:pointerkeys</name>
-- <_description>Shift + NumLock toggles PointerKeys</_description>
-+ <description>Shift + NumLock toggles PointerKeys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grab:break_actions</name>
-- <_description>Allow breaking grabs with keyboard actions (warning: security risk)</_description>
-+ <description>Allow breaking grabs with keyboard actions (warning: security risk)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grab:debug_actions</name>
-- <_description>Allow grab and window tree logging</_description>
-+ <description>Allow grab and window tree logging</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Special shortcuts for the Euro character -->
-+
- <configItem>
- <name>currencysign</name>
-- <_description>Adding currency signs to certain keys</_description>
-+ <description>Adding currency signs to certain keys</description>
- </configItem>
- <option>
- <configItem>
- <name>eurosign:e</name>
-- <_description>Euro on E</_description>
-+ <description>Euro on E</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:2</name>
-- <_description>Euro on 2</_description>
-+ <description>Euro on 2</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:4</name>
-- <_description>Euro on 4</_description>
-+ <description>Euro on 4</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:5</name>
-- <_description>Euro on 5</_description>
-+ <description>Euro on 5</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>rupeesign:4</name>
-- <_description>Rupee on 4</_description>
-+ <description>Rupee on 4</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>lv5</name>
-- <_description>Key to choose 5th level</_description>
-+ <description>Key to choose 5th level</description>
- </configItem>
- <option>
- <configItem>
- <name>lv5:lsgt_switch_lock</name>
-- <_description>&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-+ <description>&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:ralt_switch_lock</name>
-- <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-+ <description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:lwin_switch_lock</name>
-- <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-+ <description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:rwin_switch_lock</name>
-- <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
--<!--
-- <option>
-- <configItem>
-- <name>lv5:lsgt_switch_lock_cancel</name>
-- <_description>&lt;Less/Greater&gt; chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:ralt_switch_lock_cancel</name>
-- <_description>Right Alt chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:lwin_switch_lock_cancel</name>
-- <_description>Left Win chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:rwin_switch_lock_cancel</name>
-- <_description>Right Win chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:lsgt_switch_lock_cancel</name>
-- <_description>&lt;Less/Greater&gt; chooses 5th level, acts as onetime lock lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:ralt_switch_lock_cancel</name>
-- <_description>Right Alt chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-+ <description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
---->
-+
- </group>
- <group allowMultipleSelection="false">
-- <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level -->
-+
- <configItem>
- <name>nbsp</name>
-- <_description>Using space key to input non-breakable space character</_description>
-+ <description>Using space key to input non-breakable space character</description>
- </configItem>
- <option>
- <configItem>
- <name>nbsp:none</name>
-- <_description>Usual space at any level</_description>
-+ <description>Usual space at any level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level2</name>
-- <_description>Non-breakable space character at second level</_description>
-+ <description>Non-breakable space character at second level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3</name>
-- <_description>Non-breakable space character at third level</_description>
-+ <description>Non-breakable space character at third level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3s</name>
-- <_description>Non-breakable space character at third level, nothing at fourth level</_description>
-+ <description>Non-breakable space character at third level, nothing at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3n</name>
-- <_description>Non-breakable space character at third level, thin non-breakable space character at fourth level</_description>
-+ <description>Non-breakable space character at third level, thin non-breakable space character at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4</name>
-- <_description>Non-breakable space character at fourth level</_description>
-+ <description>Non-breakable space character at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4n</name>
-- <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</_description>
-+ <description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4nl</name>
-- <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</_description>
-+ <description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2</name>
-- <_description>Zero-width non-joiner character at second level</_description>
-+ <description>Zero-width non-joiner character at second level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2zwj3</name>
-- <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level</_description>
-+ <description>Zero-width non-joiner character at second level, zero-width joiner character at third level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2zwj3nb4</name>
-- <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3s</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3zwj4</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3nnb4</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj3zwj4</name>
-- <_description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</_description>
-+ <description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>japan</name>
-- <_description>Japanese keyboard options</_description>
-+ <description>Japanese keyboard options</description>
- </configItem>
- <option>
- <configItem>
- <name>japan:kana_lock</name>
-- <_description>Kana Lock key is locking</_description>
-+ <description>Kana Lock key is locking</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>japan:nicola_f_bs</name>
-- <_description>NICOLA-F style Backspace</_description>
-+ <description>NICOLA-F style Backspace</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>japan:hztg_escape</name>
-- <_description>Make Zenkaku Hankaku an additional ESC</_description>
-+ <description>Make Zenkaku Hankaku an additional ESC</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <configItem>
- <name>esperanto</name>
-- <_description>Adding Esperanto supersigned letters</_description>
-+ <description>Adding Esperanto supersigned letters</description>
- </configItem>
- <option>
- <configItem>
- <name>esperanto:qwerty</name>
-- <_description>To the corresponding key in a Qwerty layout</_description>
-+ <description>To the corresponding key in a Qwerty layout</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>esperanto:dvorak</name>
-- <_description>To the corresponding key in a Dvorak layout</_description>
-+ <description>To the corresponding key in a Dvorak layout</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>esperanto:colemak</name>
-- <_description>To the corresponding key in a Colemak layout</_description>
-+ <description>To the corresponding key in a Colemak layout</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>solaris</name>
-- <_description>Maintain key compatibility with old Solaris keycodes</_description>
-+ <description>Maintain key compatibility with old Solaris keycodes</description>
- </configItem>
- <option>
- <configItem>
- <name>solaris:sun_compat</name>
-- <_description>Sun Key compatibility</_description>
-+ <description>Sun Key compatibility</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>terminate</name>
-- <_description>Key sequence to kill the X server</_description>
-+ <description>Key sequence to kill the X server</description>
- </configItem>
- <option>
- <configItem>
- <name>terminate:ctrl_alt_bksp</name>
-- <_description>Ctrl + Alt + Backspace</_description>
-+ <description>Ctrl + Alt + Backspace</description>
- </configItem>
- </option>
- </group>
- </optionList>
--</xkbConfigRegistry>
-+</xkbConfigRegistry>
-\ No newline at end of file
diff --git a/package/xkeyboard-config/patches/patch-rules_evdev_extras_xml_in b/package/xkeyboard-config/patches/patch-rules_evdev_extras_xml_in
deleted file mode 100644
index 185ded7f8..000000000
--- a/package/xkeyboard-config/patches/patch-rules_evdev_extras_xml_in
+++ /dev/null
@@ -1,855 +0,0 @@
---- xkeyboard-config-2.11.orig/rules/evdev.extras.xml.in 2013-12-24 00:49:09.000000000 +0100
-+++ xkeyboard-config-2.11/rules/evdev.extras.xml.in 2014-03-04 14:31:30.000000000 +0100
-@@ -1,4 +1,4 @@
--<?xml version="1.0" encoding="utf-8"?>
-+<?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
- <xkbConfigRegistry>
- <modelList/>
-@@ -6,8 +6,8 @@
- <layout>
- <configItem>
- <name>apl</name>
-- <_shortDescription>apl</_shortDescription>
-- <_description>APL keyboard symbols</_description>
-+ <shortDescription>apl</shortDescription>
-+ <description>APL keyboard symbols</description>
- <languageList><iso639Id>eng</iso639Id></languageList>
- </configItem>
- <variantList>
-@@ -58,29 +58,29 @@
- <layout>
- <configItem>
- <name>ca</name>
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada)</_description>
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada)</description>
- <languageList><iso639Id>fra</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>kut</name>
-- <_shortDescription>kut</_shortDescription>
-- <_description>Kutenai</_description>
-+ <shortDescription>kut</shortDescription>
-+ <description>Kutenai</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>shs</name>
-- <_shortDescription>shs</_shortDescription>
-- <_description>Secwepemctsin</_description>
-+ <shortDescription>shs</shortDescription>
-+ <description>Secwepemctsin</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Multilingual (Canada, Sun Type 6/7)</_description>
-+ <description>Multilingual (Canada, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -88,8 +88,8 @@
- <layout>
- <configItem>
- <name>de</name>
-- <_shortDescription>de</_shortDescription>
-- <_description>German</_description>
-+ <shortDescription>de</shortDescription>
-+ <description>German</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
-@@ -98,7 +98,7 @@
- <variant>
- <configItem>
- <name>us</name>
-- <_description>German (US keyboard with German letters)</_description>
-+ <description>German (US keyboard with German letters)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -107,7 +107,7 @@
- <variant>
- <configItem>
- <name>hu</name>
-- <_description>German (with Hungarian letters and no dead keys)</_description>
-+ <description>German (with Hungarian letters and no dead keys)</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- <iso639Id>hun</iso639Id>
-@@ -117,7 +117,7 @@
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>German (Sun Type 6/7)</_description>
-+ <description>German (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -125,15 +125,15 @@
- <layout>
- <configItem>
- <name>ir</name>
-- <_shortDescription>fa</_shortDescription>
-- <_description>Persian</_description>
-+ <shortDescription>fa</shortDescription>
-+ <description>Persian</description>
- <languageList><iso639Id>per</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ave</name>
-- <_description>Avestan</_description>
-+ <description>Avestan</description>
- <languageList><iso639Id>ave</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -142,21 +142,21 @@
- <layout>
- <configItem>
- <name>lt</name>
-- <_shortDescription>lt</_shortDescription>
-- <_description>Lithuanian</_description>
-+ <shortDescription>lt</shortDescription>
-+ <description>Lithuanian</description>
- <languageList><iso639Id>lit</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>us_dvorak</name>
-- <_description>Lithuanian (US Dvorak with Lithuanian letters)</_description>
-+ <description>Lithuanian (US Dvorak with Lithuanian letters)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Lithuanian (Sun Type 6/7)</_description>
-+ <description>Lithuanian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -164,8 +164,8 @@
- <layout>
- <configItem>
- <name>lv</name>
-- <_shortDescription>lv</_shortDescription>
-- <_description>Latvian</_description>
-+ <shortDescription>lv</shortDescription>
-+ <description>Latvian</description>
- <languageList>
- <iso639Id>lav</iso639Id>
- </languageList>
-@@ -174,55 +174,55 @@
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Latvian (US Dvorak)</_description>
-+ <description>Latvian (US Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ykeydvorak</name>
-- <_description>Latvian (US Dvorak, Y variant)</_description>
-+ <description>Latvian (US Dvorak, Y variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>minuskeydvorak</name>
-- <_description>Latvian (US Dvorak, minus variant)</_description>
-+ <description>Latvian (US Dvorak, minus variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorakprogr</name>
-- <_description>Latvian (programmer US Dvorak)</_description>
-+ <description>Latvian (programmer US Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ykeydvorakprogr</name>
-- <_description>Latvian (programmer US Dvorak, Y variant)</_description>
-+ <description>Latvian (programmer US Dvorak, Y variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>minuskeydvorakprogr</name>
-- <_description>Latvian (programmer US Dvorak, minus variant)</_description>
-+ <description>Latvian (programmer US Dvorak, minus variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Latvian (US Colemak)</_description>
-+ <description>Latvian (US Colemak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>apostrophecolemak</name>
-- <_description>Latvian (US Colemak, apostrophe variant)</_description>
-+ <description>Latvian (US Colemak, apostrophe variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Latvian (Sun Type 6/7)</_description>
-+ <description>Latvian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -230,34 +230,34 @@
- <layout>
- <configItem>
- <name>us</name>
-- <_shortDescription>en</_shortDescription>
-- <_description>English (US)</_description>
-+ <shortDescription>en</shortDescription>
-+ <description>English (US)</description>
- <languageList><iso639Id>eng</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>intl-unicode</name>
-- <_description>English (US, international AltGr Unicode combining)</_description>
-+ <description>English (US, international AltGr Unicode combining)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt-intl-unicode</name>
-- <_description>English (US, international AltGr Unicode combining, alternative)</_description>
-+ <description>English (US, international AltGr Unicode combining, alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ats</name>
-- <_description>Atsina</_description>
-- <!-- No ISO code in ISO639-2, only draft ISO693-3 -->
-+ <description>Atsina</description>
-+
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crd</name>
-- <_description>Coeur d'Alene Salish</_description>
-+ <description>Coeur d'Alene Salish</description>
- <languageList><iso639Id>crd</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -274,13 +274,13 @@
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>English (US, Sun Type 6/7)</_description>
-+ <description>English (US, Sun Type 6/7)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>norman</name>
-- <_description>English (Norman)</_description>
-+ <description>English (Norman)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -288,27 +288,27 @@
- <layout>
- <configItem>
- <name>pl</name>
-- <_shortDescription>pl</_shortDescription>
-- <_description>Polish</_description>
-+ <shortDescription>pl</shortDescription>
-+ <description>Polish</description>
- <languageList><iso639Id>pol</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>Polish (international with dead keys)</_description>
-+ <description>Polish (international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Polish (Colemak)</_description>
-+ <description>Polish (Colemak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Polish (Sun Type 6/7)</_description>
-+ <description>Polish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -316,16 +316,16 @@
- <layout>
- <configItem>
- <name>ro</name>
-- <_shortDescription>ro</_shortDescription>
-- <_description>Romanian</_description>
-+ <shortDescription>ro</shortDescription>
-+ <description>Romanian</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>crh_dobruja</name>
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Dobruja Q)</_description>
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Dobruja Q)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -334,13 +334,13 @@
- <variant>
- <configItem>
- <name>ergonomic</name>
-- <_description>Romanian (ergonomic Touchtype)</_description>
-+ <description>Romanian (ergonomic Touchtype)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Romanian (Sun Type 6/7)</_description>
-+ <description>Romanian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -348,15 +348,15 @@
- <layout>
- <configItem>
- <name>rs</name>
-- <_shortDescription>sr</_shortDescription>
-- <_description>Serbian</_description>
-+ <shortDescription>sr</shortDescription>
-+ <description>Serbian</description>
- <languageList><iso639Id>srp</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>combiningkeys</name>
-- <_description>Serbian (combining accents instead of dead keys)</_description>
-+ <description>Serbian (combining accents instead of dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -364,8 +364,8 @@
- <layout>
- <configItem>
- <name>ru</name>
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian</_description>
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian</description>
- </configItem>
- <variantList>
- <variant>
-@@ -378,8 +378,8 @@
- <variant>
- <configItem>
- <name>ruu</name>
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (with Ukrainian-Belorussian layout)</_description>
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (with Ukrainian-Belorussian layout)</description>
- <languageList><iso639Id>rus</iso639Id>
- <iso639Id>ukr</iso639Id>
- <iso639Id>bel</iso639Id></languageList>
-@@ -388,7 +388,7 @@
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Russian (Sun Type 6/7)</_description>
-+ <description>Russian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -396,8 +396,8 @@
- <layout>
- <configItem>
- <name>am</name>
-- <_shortDescription>hy</_shortDescription>
-- <_description>Armenian</_description>
-+ <shortDescription>hy</shortDescription>
-+ <description>Armenian</description>
- <languageList>
- <iso639Id>hye</iso639Id>
- </languageList>
-@@ -406,7 +406,7 @@
- <variant>
- <configItem>
- <name>olpc-phonetic</name>
-- <_description>Armenian (OLPC phonetic)</_description>
-+ <description>Armenian (OLPC phonetic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -414,15 +414,15 @@
- <layout>
- <configItem>
- <name>il</name>
-- <_shortDescription>he</_shortDescription>
-- <_description>Hebrew</_description>
-+ <shortDescription>he</shortDescription>
-+ <description>Hebrew</description>
- <languageList><iso639Id>heb</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>biblicalSIL</name>
-- <_description>Hebrew (Biblical, SIL phonetic)</_description>
-+ <description>Hebrew (Biblical, SIL phonetic)</description>
- <languageList><iso639Id>heb</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -431,14 +431,14 @@
- <layout>
- <configItem>
- <name>ara</name>
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic</_description>
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Arabic (Sun Type 6/7)</_description>
-+ <description>Arabic (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -446,14 +446,14 @@
- <layout>
- <configItem>
- <name>be</name>
-- <_shortDescription>be</_shortDescription>
-- <_description>Belgian</_description>
-+ <shortDescription>be</shortDescription>
-+ <description>Belgian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Belgian (Sun Type 6/7)</_description>
-+ <description>Belgian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -461,14 +461,14 @@
- <layout>
- <configItem>
- <name>br</name>
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese (Brazil)</_description>
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese (Brazil)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Portuguese (Brazil, Sun Type 6/7)</_description>
-+ <description>Portuguese (Brazil, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -476,14 +476,14 @@
- <layout>
- <configItem>
- <name>cz</name>
-- <_shortDescription>cs</_shortDescription>
-- <_description>Czech</_description>
-+ <shortDescription>cs</shortDescription>
-+ <description>Czech</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Czech (Sun Type 6/7)</_description>
-+ <description>Czech (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -491,14 +491,14 @@
- <layout>
- <configItem>
- <name>dk</name>
-- <_shortDescription>da</_shortDescription>
-- <_description>Danish</_description>
-+ <shortDescription>da</shortDescription>
-+ <description>Danish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Danish (Sun Type 6/7)</_description>
-+ <description>Danish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -506,14 +506,14 @@
- <layout>
- <configItem>
- <name>nl</name>
-- <_shortDescription>nl</_shortDescription>
-- <_description>Dutch</_description>
-+ <shortDescription>nl</shortDescription>
-+ <description>Dutch</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Dutch (Sun Type 6/7)</_description>
-+ <description>Dutch (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -521,14 +521,14 @@
- <layout>
- <configItem>
- <name>ee</name>
-- <_shortDescription>et</_shortDescription>
-- <_description>Estonian</_description>
-+ <shortDescription>et</shortDescription>
-+ <description>Estonian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Estonian (Sun Type 6/7)</_description>
-+ <description>Estonian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -536,14 +536,14 @@
- <layout>
- <configItem>
- <name>fi</name>
-- <_shortDescription>fi</_shortDescription>
-- <_description>Finnish</_description>
-+ <shortDescription>fi</shortDescription>
-+ <description>Finnish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Finnish (Sun Type 6/7)</_description>
-+ <description>Finnish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -551,14 +551,14 @@
- <layout>
- <configItem>
- <name>fr</name>
-- <_shortDescription>fr</_shortDescription>
-- <_description>French</_description>
-+ <shortDescription>fr</shortDescription>
-+ <description>French</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>French (Sun Type 6/7)</_description>
-+ <description>French (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -566,14 +566,14 @@
- <layout>
- <configItem>
- <name>gr</name>
-- <_shortDescription>gr</_shortDescription>
-- <_description>Greek</_description>
-+ <shortDescription>gr</shortDescription>
-+ <description>Greek</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Greek (Sun Type 6/7)</_description>
-+ <description>Greek (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -581,14 +581,14 @@
- <layout>
- <configItem>
- <name>it</name>
-- <_shortDescription>it</_shortDescription>
-- <_description>Italian</_description>
-+ <shortDescription>it</shortDescription>
-+ <description>Italian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Italian (Sun Type 6/7)</_description>
-+ <description>Italian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -596,26 +596,26 @@
- <layout>
- <configItem>
- <name>jp</name>
-- <_shortDescription>ja</_shortDescription>
-- <_description>Japanese</_description>
-+ <shortDescription>ja</shortDescription>
-+ <description>Japanese</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Japanese (Sun Type 6)</_description>
-+ <description>Japanese (Sun Type 6)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type7</name>
-- <_description>Japanese (Sun Type 7 - pc compatible)</_description>
-+ <description>Japanese (Sun Type 7 - pc compatible)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type7_suncompat</name>
-- <_description>Japanese (Sun Type 7 - sun compatible)</_description>
-+ <description>Japanese (Sun Type 7 - sun compatible)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -623,14 +623,14 @@
- <layout>
- <configItem>
- <name>no</name>
-- <_shortDescription>no</_shortDescription>
-- <_description>Norwegian</_description>
-+ <shortDescription>no</shortDescription>
-+ <description>Norwegian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Norwegian (Sun Type 6/7)</_description>
-+ <description>Norwegian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -638,14 +638,14 @@
- <layout>
- <configItem>
- <name>pt</name>
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese</_description>
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Portuguese (Sun Type 6/7)</_description>
-+ <description>Portuguese (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -653,14 +653,14 @@
- <layout>
- <configItem>
- <name>sk</name>
-- <_shortDescription>sk</_shortDescription>
-- <_description>Slovak</_description>
-+ <shortDescription>sk</shortDescription>
-+ <description>Slovak</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Slovak (Sun Type 6/7)</_description>
-+ <description>Slovak (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -668,14 +668,14 @@
- <layout>
- <configItem>
- <name>es</name>
-- <_shortDescription>es</_shortDescription>
-- <_description>Spanish</_description>
-+ <shortDescription>es</shortDescription>
-+ <description>Spanish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Spanish (Sun Type 6/7)</_description>
-+ <description>Spanish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -683,14 +683,14 @@
- <layout>
- <configItem>
- <name>se</name>
-- <_shortDescription>sv</_shortDescription>
-- <_description>Swedish</_description>
-+ <shortDescription>sv</shortDescription>
-+ <description>Swedish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Swedish (Sun Type 6/7)</_description>
-+ <description>Swedish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -698,20 +698,20 @@
- <layout>
- <configItem>
- <name>ch</name>
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland)</_description>
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6_de</name>
-- <_description>German (Switzerland, Sun Type 6/7)</_description>
-+ <description>German (Switzerland, Sun Type 6/7)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sun_type6_fr</name>
-- <_description>French (Switzerland, Sun Type 6/7)</_description>
-+ <description>French (Switzerland, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -719,14 +719,14 @@
- <layout>
- <configItem>
- <name>tr</name>
-- <_shortDescription>tr</_shortDescription>
-- <_description>Turkish</_description>
-+ <shortDescription>tr</shortDescription>
-+ <description>Turkish</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Turkish (Sun Type 6/7)</_description>
-+ <description>Turkish (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -734,14 +734,14 @@
- <layout>
- <configItem>
- <name>ua</name>
-- <_shortDescription>uk</_shortDescription>
-- <_description>Ukrainian</_description>
-+ <shortDescription>uk</shortDescription>
-+ <description>Ukrainian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Ukrainian (Sun Type 6/7)</_description>
-+ <description>Ukrainian (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -749,14 +749,14 @@
- <layout>
- <configItem>
- <name>gb</name>
-- <_shortDescription>en</_shortDescription>
-- <_description>English (UK)</_description>
-+ <shortDescription>en</shortDescription>
-+ <description>English (UK)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>English (UK, Sun Type 6/7)</_description>
-+ <description>English (UK, Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -764,18 +764,18 @@
- <layout>
- <configItem>
- <name>kr</name>
-- <_shortDescription>ko</_shortDescription>
-- <_description>Korean</_description>
-+ <shortDescription>ko</shortDescription>
-+ <description>Korean</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sun_type6</name>
-- <_description>Korean (Sun Type 6/7)</_description>
-+ <description>Korean (Sun Type 6/7)</description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- </layoutList>
- <optionList/>
--</xkbConfigRegistry>
-+</xkbConfigRegistry>
-\ No newline at end of file
diff --git a/package/xkeyboard-config/patches/patch-rules_evdev_xml_in b/package/xkeyboard-config/patches/patch-rules_evdev_xml_in
deleted file mode 100644
index 57eb6df34..000000000
--- a/package/xkeyboard-config/patches/patch-rules_evdev_xml_in
+++ /dev/null
@@ -1,7654 +0,0 @@
---- xkeyboard-config-2.11.orig/rules/evdev.xml.in 2014-01-15 02:05:04.000000000 +0100
-+++ xkeyboard-config-2.11/rules/evdev.xml.in 2014-03-04 14:30:54.000000000 +0100
-@@ -5,627 +5,627 @@
- <model>
- <configItem>
- <name>pc101</name>
-- <_description>Generic 101-key PC</_description>
-+ <description>Generic 101-key PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc102</name>
-- <_description>Generic 102-key (Intl) PC</_description>
-+ <description>Generic 102-key (Intl) PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc104</name>
-- <_description>Generic 104-key PC</_description>
-+ <description>Generic 104-key PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc105</name>
-- <_description>Generic 105-key (Intl) PC</_description>
-+ <description>Generic 105-key (Intl) PC</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dell101</name>
-- <_description>Dell 101-key PC</_description>
-+ <description>Dell 101-key PC</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>latitude</name>
-- <_description>Dell Latitude series laptop</_description>
-+ <description>Dell Latitude series laptop</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellm65</name>
-- <_description>Dell Precision M65</_description>
-+ <description>Dell Precision M65</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>everex</name>
-- <_description>Everex STEPnote</_description>
-+ <description>Everex STEPnote</description>
- <vendor>Everex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>flexpro</name>
-- <_description>Keytronic FlexPro</_description>
-+ <description>Keytronic FlexPro</description>
- <vendor>Keytronic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft</name>
-- <_description>Microsoft Natural</_description>
-+ <description>Microsoft Natural</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>omnikey101</name>
-- <_description>Northgate OmniKey 101</_description>
-+ <description>Northgate OmniKey 101</description>
- <vendor>Northgate</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>winbook</name>
-- <_description>Winbook Model XP5</_description>
-+ <description>Winbook Model XP5</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc98</name>
-- <_description>PC-98xx Series</_description>
-+ <description>PC-98xx Series</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4techKB21</name>
-- <_description>A4Tech KB-21</_description>
-+ <description>A4Tech KB-21</description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4techKBS8</name>
-- <_description>A4Tech KBS-8</_description>
-+ <description>A4Tech KBS-8</description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4_rfkb23</name>
-- <_description>A4Tech Wireless Desktop RFKB-23</_description>
-+ <description>A4Tech Wireless Desktop RFKB-23</description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>airkey</name>
-- <_description>Acer AirKey V</_description>
-+ <description>Acer AirKey V</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>azonaRF2300</name>
-- <_description>Azona RF2300 wireless Internet Keyboard</_description>
-+ <description>Azona RF2300 wireless Internet Keyboard</description>
- <vendor>Azona</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>scorpius</name>
-- <_description>Advance Scorpius KI</_description>
-+ <description>Advance Scorpius KI</description>
- <vendor>Scorpius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>brother</name>
-- <_description>Brother Internet Keyboard</_description>
-+ <description>Brother Internet Keyboard</description>
- <vendor>Brother</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5113rf</name>
-- <_description>BTC 5113RF Multimedia</_description>
-+ <description>BTC 5113RF Multimedia</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5126t</name>
-- <_description>BTC 5126T</_description>
-+ <description>BTC 5126T</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc6301urf</name>
-- <_description>BTC 6301URF</_description>
-+ <description>BTC 6301URF</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9000</name>
-- <_description>BTC 9000</_description>
-+ <description>BTC 9000</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9000a</name>
-- <_description>BTC 9000A</_description>
-+ <description>BTC 9000A</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9001ah</name>
-- <_description>BTC 9001AH</_description>
-+ <description>BTC 9001AH</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5090</name>
-- <_description>BTC 5090</_description>
-+ <description>BTC 5090</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9019u</name>
-- <_description>BTC 9019U</_description>
-+ <description>BTC 9019U</description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9116u</name>
-- <_description>BTC 9116U Mini Wireless Internet and Gaming</_description>
-+ <description>BTC 9116U Mini Wireless Internet and Gaming</description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherryblue</name>
-- <_description>Cherry Blue Line CyBo@rd</_description>
-+ <description>Cherry Blue Line CyBo@rd</description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherryblueb</name>
-- <_description>Cherry CyMotion Master XPress</_description>
-+ <description>Cherry CyMotion Master XPress</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrybluea</name>
-- <_description>Cherry Blue Line CyBo@rd (alternate option)</_description>
-+ <description>Cherry Blue Line CyBo@rd (alternate option)</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrycyboard</name>
-- <_description>Cherry CyBo@rd USB-Hub</_description>
-+ <description>Cherry CyBo@rd USB-Hub</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrycmexpert</name>
-- <_description>Cherry CyMotion Expert</_description>
-+ <description>Cherry CyMotion Expert</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrybunlim</name>
-- <_description>Cherry B.UNLIMITED</_description>
-+ <description>Cherry B.UNLIMITED</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony</name>
-- <_description>Chicony Internet Keyboard</_description>
-+ <description>Chicony Internet Keyboard</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony0108</name>
-- <_description>Chicony KU-0108</_description>
-+ <description>Chicony KU-0108</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony0420</name>
-- <_description>Chicony KU-0420</_description>
-+ <description>Chicony KU-0420</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony9885</name>
-- <_description>Chicony KB-9885</_description>
-+ <description>Chicony KB-9885</description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqeak8</name>
-- <_description>Compaq Easy Access Keyboard</_description>
-+ <description>Compaq Easy Access Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik7</name>
-- <_description>Compaq Internet Keyboard (7 keys)</_description>
-+ <description>Compaq Internet Keyboard (7 keys)</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik13</name>
-- <_description>Compaq Internet Keyboard (13 keys)</_description>
-+ <description>Compaq Internet Keyboard (13 keys)</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik18</name>
-- <_description>Compaq Internet Keyboard (18 keys)</_description>
-+ <description>Compaq Internet Keyboard (18 keys)</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cymotionlinux</name>
-- <_description>Cherry CyMotion Master Linux</_description>
-+ <description>Cherry CyMotion Master Linux</description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>armada</name>
-- <_description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</_description>
-+ <description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>presario</name>
-- <_description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</_description>
-+ <description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ipaq</name>
-- <_description>Compaq iPaq Keyboard</_description>
-+ <description>Compaq iPaq Keyboard</description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dell</name>
-- <_description>Dell</_description>
-+ <description>Dell</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellsk8125</name>
-- <_description>Dell SK-8125</_description>
-+ <description>Dell SK-8125</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellsk8135</name>
-- <_description>Dell SK-8135</_description>
-+ <description>Dell SK-8135</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellusbmm</name>
-- <_description>Dell USB Multimedia Keyboard</_description>
-+ <description>Dell USB Multimedia Keyboard</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>inspiron</name>
-- <_description>Dell Laptop/notebook Inspiron 6xxx/8xxx</_description>
-+ <description>Dell Laptop/notebook Inspiron 6xxx/8xxx</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>precision_m</name>
-- <_description>Dell Laptop/notebook Precision M series</_description>
-+ <description>Dell Laptop/notebook Precision M series</description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dexxa</name>
-- <_description>Dexxa Wireless Desktop Keyboard</_description>
-+ <description>Dexxa Wireless Desktop Keyboard</description>
- <vendor>Dexxa</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>diamond</name>
-- <_description>Diamond 9801 / 9802 series</_description>
-+ <description>Diamond 9801 / 9802 series</description>
- <vendor>Diamond</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dtk2000</name>
-- <_description>DTK2000</_description>
-+ <description>DTK2000</description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ennyah_dkb1008</name>
-- <_description>Ennyah DKB-1008</_description>
-+ <description>Ennyah DKB-1008</description>
- <vendor>Ennyah</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>fscaa1667g</name>
-- <_description>Fujitsu-Siemens Computers AMILO laptop</_description>
-+ <description>Fujitsu-Siemens Computers AMILO laptop</description>
- <vendor>Fujitsu-Siemens</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>genius</name>
-- <_description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</_description>
-+ <description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuscomfy</name>
-- <_description>Genius Comfy KB-12e</_description>
-+ <description>Genius Comfy KB-12e</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuscomfy2</name>
-- <_description>Genius Comfy KB-21e-Scroll</_description>
-+ <description>Genius Comfy KB-21e-Scroll</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuskb19e</name>
-- <_description>Genius KB-19e NB</_description>
-+ <description>Genius KB-19e NB</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuskkb2050hs</name>
-- <_description>Genius KKB-2050HS</_description>
-+ <description>Genius KKB-2050HS</description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>gyration</name>
-- <_description>Gyration</_description>
-+ <description>Gyration</description>
- <vendor>Gyration</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>htcdream</name>
-- <_description>HTC Dream</_description>
-+ <description>HTC Dream</description>
- <vendor>HTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>kinesis</name>
-- <_description>Kinesis</_description>
-+ <description>Kinesis</description>
- <vendor>Kinesis</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logitech_base</name>
-- <_description>Logitech Generic Keyboard</_description>
-+ <description>Logitech Generic Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logitech_g15</name>
-- <_description>Logitech G15 extra keys via G15daemon</_description>
-+ <description>Logitech G15 extra keys via G15daemon</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpi6</name>
-- <_description>Hewlett-Packard Internet Keyboard</_description>
-+ <description>Hewlett-Packard Internet Keyboard</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp250x</name>
-- <_description>Hewlett-Packard SK-250x Multimedia Keyboard</_description>
-+ <description>Hewlett-Packard SK-250x Multimedia Keyboard</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxe3gc</name>
-- <_description>Hewlett-Packard Omnibook XE3 GC</_description>
-+ <description>Hewlett-Packard Omnibook XE3 GC</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxe3gf</name>
-- <_description>Hewlett-Packard Omnibook XE3 GF</_description>
-+ <description>Hewlett-Packard Omnibook XE3 GF</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxt1000</name>
-- <_description>Hewlett-Packard Omnibook XT1000</_description>
-+ <description>Hewlett-Packard Omnibook XT1000</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpdv5</name>
-- <_description>Hewlett-Packard Pavilion dv5</_description>
-+ <description>Hewlett-Packard Pavilion dv5</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpzt11xx</name>
-- <_description>Hewlett-Packard Pavilion ZT11xx</_description>
-+ <description>Hewlett-Packard Pavilion ZT11xx</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp500fa</name>
-- <_description>Hewlett-Packard Omnibook 500 FA</_description>
-+ <description>Hewlett-Packard Omnibook 500 FA</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp5xx</name>
-- <_description>Hewlett-Packard Omnibook 5xx</_description>
-+ <description>Hewlett-Packard Omnibook 5xx</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpnx9020</name>
-- <_description>Hewlett-Packard nx9020</_description>
-+ <description>Hewlett-Packard nx9020</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp6000</name>
-- <_description>Hewlett-Packard Omnibook 6000/6100</_description>
-+ <description>Hewlett-Packard Omnibook 6000/6100</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>honeywell_euroboard</name>
-- <_description>Honeywell Euroboard</_description>
-+ <description>Honeywell Euroboard</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpmini110</name>
-- <_description>Hewlett-Packard Mini 110 Notebook</_description>
-+ <description>Hewlett-Packard Mini 110 Notebook</description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>rapidaccess</name>
-- <_description>IBM Rapid Access</_description>
-+ <description>IBM Rapid Access</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>rapidaccess2</name>
-- <_description>IBM Rapid Access II</_description>
-+ <description>IBM Rapid Access II</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpad</name>
-- <_description>IBM ThinkPad 560Z/600/600E/A22E</_description>
-+ <description>IBM ThinkPad 560Z/600/600E/A22E</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpad60</name>
-- <_description>IBM ThinkPad R60/T60/R61/T61</_description>
-+ <description>IBM ThinkPad R60/T60/R61/T61</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpadz60</name>
-- <_description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</_description>
-+ <description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ibm_spacesaver</name>
-- <_description>IBM Space Saver</_description>
-+ <description>IBM Space Saver</description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiaccess</name>
-- <_description>Logitech Access Keyboard</_description>
-+ <description>Logitech Access Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiclx300</name>
-- <_description>Logitech Cordless Desktop LX-300</_description>
-+ <description>Logitech Cordless Desktop LX-300</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logii350</name>
-- <_description>Logitech Internet 350 Keyboard</_description>
-+ <description>Logitech Internet 350 Keyboard</description>
- <vendor>Logitech</vendor>
- <hwList> <hwId>046d:c313</hwId></hwList>
- </configItem>
-@@ -633,665 +633,665 @@
- <model>
- <configItem>
- <name>logimel</name>
-- <_description>Logitech Media Elite Keyboard</_description>
-+ <description>Logitech Media Elite Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd</name>
-- <_description>Logitech Cordless Desktop</_description>
-+ <description>Logitech Cordless Desktop</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_it</name>
-- <_description>Logitech Cordless Desktop iTouch</_description>
-+ <description>Logitech Cordless Desktop iTouch</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_nav</name>
-- <_description>Logitech Cordless Desktop Navigator</_description>
-+ <description>Logitech Cordless Desktop Navigator</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_opt</name>
-- <_description>Logitech Cordless Desktop Optical</_description>
-+ <description>Logitech Cordless Desktop Optical</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicda</name>
-- <_description>Logitech Cordless Desktop (alternate option)</_description>
-+ <description>Logitech Cordless Desktop (alternate option)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicdpa2</name>
-- <_description>Logitech Cordless Desktop Pro (alternate option 2)</_description>
-+ <description>Logitech Cordless Desktop Pro (alternate option 2)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicfn</name>
-- <_description>Logitech Cordless Freedom/Desktop Navigator</_description>
-+ <description>Logitech Cordless Freedom/Desktop Navigator</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicdn</name>
-- <_description>Logitech Cordless Desktop Navigator</_description>
-+ <description>Logitech Cordless Desktop Navigator</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiitc</name>
-- <_description>Logitech iTouch Cordless Keyboard (model Y-RB6)</_description>
-+ <description>Logitech iTouch Cordless Keyboard (model Y-RB6)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiik</name>
-- <_description>Logitech Internet Keyboard</_description>
-+ <description>Logitech Internet Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>itouch</name>
-- <_description>Logitech iTouch</_description>
-+ <description>Logitech iTouch</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicink</name>
-- <_description>Logitech Internet Navigator Keyboard</_description>
-+ <description>Logitech Internet Navigator Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiex110</name>
-- <_description>Logitech Cordless Desktop EX110</_description>
-+ <description>Logitech Cordless Desktop EX110</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiinkse</name>
-- <_description>Logitech iTouch Internet Navigator Keyboard SE</_description>
-+ <description>Logitech iTouch Internet Navigator Keyboard SE</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiinkseusb</name>
-- <_description>Logitech iTouch Internet Navigator Keyboard SE (USB)</_description>
-+ <description>Logitech iTouch Internet Navigator Keyboard SE (USB)</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiultrax</name>
-- <_description>Logitech Ultra-X Keyboard</_description>
-+ <description>Logitech Ultra-X Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiultraxc</name>
-- <_description>Logitech Ultra-X Cordless Media Desktop Keyboard</_description>
-+ <description>Logitech Ultra-X Cordless Media Desktop Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logidinovo</name>
-- <_description>Logitech diNovo Keyboard</_description>
-+ <description>Logitech diNovo Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logidinovoedge</name>
-- <_description>Logitech diNovo Edge Keyboard</_description>
-+ <description>Logitech diNovo Edge Keyboard</description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx1998</name>
-- <_description>Memorex MX1998</_description>
-+ <description>Memorex MX1998</description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx2500</name>
-- <_description>Memorex MX2500 EZ-Access Keyboard</_description>
-+ <description>Memorex MX2500 EZ-Access Keyboard</description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx2750</name>
-- <_description>Memorex MX2750</_description>
-+ <description>Memorex MX2750</description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft4000</name>
-- <_description>Microsoft Natural Wireless Ergonomic Keyboard 4000</_description>
-+ <description>Microsoft Natural Wireless Ergonomic Keyboard 4000</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft7000</name>
-- <_description>Microsoft Natural Wireless Ergonomic Keyboard 7000</_description>
-+ <description>Microsoft Natural Wireless Ergonomic Keyboard 7000</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftinet</name>
-- <_description>Microsoft Internet Keyboard</_description>
-+ <description>Microsoft Internet Keyboard</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftpro</name>
-- <_description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</_description>
-+ <description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprousb</name>
-- <_description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</_description>
-+ <description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprooem</name>
-- <_description>Microsoft Natural Keyboard Pro OEM</_description>
-+ <description>Microsoft Natural Keyboard Pro OEM</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>vsonku306</name>
-- <_description>ViewSonic KU-306 Internet Keyboard</_description>
-+ <description>ViewSonic KU-306 Internet Keyboard</description>
- <vendor>ViewSonic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprose</name>
-- <_description>Microsoft Internet Keyboard Pro, Swedish</_description>
-+ <description>Microsoft Internet Keyboard Pro, Swedish</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftoffice</name>
-- <_description>Microsoft Office Keyboard</_description>
-+ <description>Microsoft Office Keyboard</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftmult</name>
-- <_description>Microsoft Wireless Multimedia Keyboard 1.0A</_description>
-+ <description>Microsoft Wireless Multimedia Keyboard 1.0A</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftelite</name>
-- <_description>Microsoft Natural Keyboard Elite</_description>
-+ <description>Microsoft Natural Keyboard Elite</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftccurve2k</name>
-- <_description>Microsoft Comfort Curve Keyboard 2000</_description>
-+ <description>Microsoft Comfort Curve Keyboard 2000</description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>oretec</name>
-- <_description>Ortek MCK-800 MM/Internet keyboard</_description>
-+ <description>Ortek MCK-800 MM/Internet keyboard</description>
- <vendor>Ortek</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>propeller</name>
-- <_description>Propeller Voyager (KTEZ-1000)</_description>
-+ <description>Propeller Voyager (KTEZ-1000)</description>
- <vendor>KeyTronic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>qtronix</name>
-- <_description>QTronix Scorpius 98N+</_description>
-+ <description>QTronix Scorpius 98N+</description>
- <vendor>QTronix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>samsung4500</name>
-- <_description>Samsung SDM 4500P</_description>
-+ <description>Samsung SDM 4500P</description>
- <vendor>Samsung</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>samsung4510</name>
-- <_description>Samsung SDM 4510P</_description>
-+ <description>Samsung SDM 4510P</description>
- <vendor>Samsung</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sanwaskbkg3</name>
-- <_description>Sanwa Supply SKB-KG3</_description>
-+ <description>Sanwa Supply SKB-KG3</description>
- <vendor>Sanwa Supply Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk1300</name>
-- <_description>SK-1300</_description>
-+ <description>SK-1300</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk2500</name>
-- <_description>SK-2500</_description>
-+ <description>SK-2500</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk6200</name>
-- <_description>SK-6200</_description>
-+ <description>SK-6200</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk7100</name>
-- <_description>SK-7100</_description>
-+ <description>SK-7100</description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sp_inet</name>
-- <_description>Super Power Multimedia Keyboard</_description>
-+ <description>Super Power Multimedia Keyboard</description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sven</name>
-- <_description>SVEN Ergonomic 2500</_description>
-+ <description>SVEN Ergonomic 2500</description>
- <vendor>SVEN</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sven303</name>
-- <_description>SVEN Slim 303</_description>
-+ <description>SVEN Slim 303</description>
- <vendor>SVEN</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>symplon</name>
-- <_description>Symplon PaceBook (tablet PC)</_description>
-+ <description>Symplon PaceBook (tablet PC)</description>
- <vendor>Symplon</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>toshiba_s3000</name>
-- <_description>Toshiba Satellite S3000</_description>
-+ <description>Toshiba Satellite S3000</description>
- <vendor>Toshiba</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trust</name>
-- <_description>Trust Wireless Keyboard Classic</_description>
-+ <description>Trust Wireless Keyboard Classic</description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trustda</name>
-- <_description>Trust Direct Access Keyboard</_description>
-+ <description>Trust Direct Access Keyboard</description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trust_slimline</name>
-- <_description>Trust Slimline</_description>
-+ <description>Trust Slimline</description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2020</name>
-- <_description>TypeMatrix EZ-Reach 2020</_description>
-+ <description>TypeMatrix EZ-Reach 2020</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030PS2</name>
-- <_description>TypeMatrix EZ-Reach 2030 PS2</_description>
-+ <description>TypeMatrix EZ-Reach 2030 PS2</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB</name>
-- <_description>TypeMatrix EZ-Reach 2030 USB</_description>
-+ <description>TypeMatrix EZ-Reach 2030 USB</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB-102</name>
-- <_description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</_description>
-+ <description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB-106</name>
-- <_description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</_description>
-+ <description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>yahoo</name>
-- <_description>Yahoo! Internet Keyboard</_description>
-+ <description>Yahoo! Internet Keyboard</description>
- <vendor>Yahoo!</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macbook78</name>
-- <_description>MacBook/MacBook Pro</_description>
-+ <description>MacBook/MacBook Pro</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macbook79</name>
-- <_description>MacBook/MacBook Pro (Intl)</_description>
-+ <description>MacBook/MacBook Pro (Intl)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh</name>
-- <_description>Macintosh</_description>
-+ <description>Macintosh</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh_old</name>
-- <_description>Macintosh Old</_description>
-+ <description>Macintosh Old</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh_hhk</name>
-- <_description>Happy Hacking Keyboard for Mac</_description>
-+ <description>Happy Hacking Keyboard for Mac</description>
- <vendor>Fujitsu</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_c300</name>
-- <_description>Acer C300</_description>
-+ <description>Acer C300</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_ferrari4k</name>
-- <_description>Acer Ferrari 4000</_description>
-+ <description>Acer Ferrari 4000</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_laptop</name>
-- <_description>Acer Laptop</_description>
-+ <description>Acer Laptop</description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>asus_laptop</name>
-- <_description>Asus Laptop</_description>
-+ <description>Asus Laptop</description>
- <vendor>Asus</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>apple</name>
-- <_description>Apple</_description>
-+ <description>Apple</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>apple_laptop</name>
-- <_description>Apple Laptop</_description>
-+ <description>Apple Laptop</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_ansi</name>
-- <_description>Apple Aluminium Keyboard (ANSI)</_description>
-+ <description>Apple Aluminium Keyboard (ANSI)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_iso</name>
-- <_description>Apple Aluminium Keyboard (ISO)</_description>
-+ <description>Apple Aluminium Keyboard (ISO)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_jis</name>
-- <_description>Apple Aluminium Keyboard (JIS)</_description>
-+ <description>Apple Aluminium Keyboard (JIS)</description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>silvercrest</name>
-- <_description>SILVERCREST Multimedia Wireless Keyboard</_description>
-+ <description>SILVERCREST Multimedia Wireless Keyboard</description>
- <vendor>Silvercrest</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>emachines</name>
-- <_description>Laptop/notebook eMachines m68xx</_description>
-+ <description>Laptop/notebook eMachines m68xx</description>
- <vendor>eMachines</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx</name>
-- <_description>BenQ X-Touch</_description>
-+ <description>BenQ X-Touch</description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx730</name>
-- <_description>BenQ X-Touch 730</_description>
-+ <description>BenQ X-Touch 730</description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx800</name>
-- <_description>BenQ X-Touch 800</_description>
-+ <description>BenQ X-Touch 800</description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hhk</name>
-- <_description>Happy Hacking Keyboard</_description>
-+ <description>Happy Hacking Keyboard</description>
- <vendor>Fujitsu</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>classmate</name>
-- <_description>Classmate PC</_description>
-+ <description>Classmate PC</description>
- <vendor>Intel</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>olpc</name>
-- <_description>OLPC</_description>
-+ <description>OLPC</description>
- <vendor>OLPC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_usb</name>
-- <_description>Sun Type 7 USB</_description>
-+ <description>Sun Type 7 USB</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_euro_usb</name>
-- <_description>Sun Type 7 USB (European layout)</_description>
-+ <description>Sun Type 7 USB (European layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_unix_usb</name>
-- <_description>Sun Type 7 USB (Unix layout)</_description>
-+ <description>Sun Type 7 USB (Unix layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type7_jp_usb</name>
-- <_description>Sun Type 7 USB (Japanese layout) / Japanese 106-key</_description>
-+ <description>Sun Type 7 USB (Japanese layout) / Japanese 106-key</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_usb</name>
-- <_description>Sun Type 6/7 USB</_description>
-+ <description>Sun Type 6/7 USB</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_euro_usb</name>
-- <_description>Sun Type 6/7 USB (European layout)</_description>
-+ <description>Sun Type 6/7 USB (European layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_unix_usb</name>
-- <_description>Sun Type 6 USB (Unix layout)</_description>
-+ <description>Sun Type 6 USB (Unix layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_jp_usb</name>
-- <_description>Sun Type 6 USB (Japanese layout)</_description>
-+ <description>Sun Type 6 USB (Japanese layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun_type6_jp</name>
-- <_description>Sun Type 6 (Japanese layout)</_description>
-+ <description>Sun Type 6 (Japanese layout)</description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>targa_v811</name>
-- <_description>Targa Visionary 811</_description>
-+ <description>Targa Visionary 811</description>
- <vendor>Targa</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>unitekkb1925</name>
-- <_description>Unitek KB-1925</_description>
-+ <description>Unitek KB-1925</description>
- <vendor>Unitek Group</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compalfl90</name>
-- <_description>FL90</_description>
-+ <description>FL90</description>
- <vendor>Compal Electronics Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>creativedw7000</name>
-- <_description>Creative Desktop Wireless 7000</_description>
-+ <description>Creative Desktop Wireless 7000</description>
- <vendor>Creative</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>htcdream</name>
-- <_description>Htc Dream phone</_description>
-+ <description>Htc Dream phone</description>
- <vendor>htc</vendor>
- </configItem>
- </model>
-@@ -1300,9 +1300,9 @@
- <layout>
- <configItem>
- <name>us</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (US)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (US)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -1311,9 +1311,9 @@
- <variant>
- <configItem>
- <name>chr</name>
-- <!-- Keyboard indicator for Cherokee layouts -->
-- <_shortDescription>chr</_shortDescription>
-- <_description>Cherokee</_description>
-+
-+ <shortDescription>chr</shortDescription>
-+ <description>Cherokee</description>
- <languageList>
- <iso639Id>chr</iso639Id>
- </languageList>
-@@ -1322,75 +1322,75 @@
- <variant>
- <configItem>
- <name>euro</name>
-- <_description>English (US, with euro on 5)</_description>
-+ <description>English (US, with euro on 5)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>English (US, international with dead keys)</_description>
-+ <description>English (US, international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt-intl</name>
-- <_description>English (US, alternative international)</_description>
-+ <description>English (US, alternative international)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>English (Colemak)</_description>
-+ <description>English (Colemak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>English (Dvorak)</_description>
-+ <description>English (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-intl</name>
-- <_description>English (Dvorak, international with dead keys)</_description>
-+ <description>English (Dvorak, international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-alt-intl</name>
-- <_description>English (Dvorak alternative international no dead keys)</_description>
-+ <description>English (Dvorak alternative international no dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-l</name>
-- <_description>English (left handed Dvorak)</_description>
-+ <description>English (left handed Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-r</name>
-- <_description>English (right handed Dvorak)</_description>
-+ <description>English (right handed Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-classic</name>
-- <_description>English (classic Dvorak)</_description>
-+ <description>English (classic Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvp</name>
-- <_description>English (programmer Dvorak)</_description>
-+ <description>English (programmer Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (US, phonetic)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (US, phonetic)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -1399,13 +1399,13 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>English (Macintosh)</_description>
-+ <description>English (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>altgr-intl</name>
-- <_description>English (international AltGr dead keys)</_description>
-+ <description>English (international AltGr dead keys)</description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>fra</iso639Id>
- <iso639Id>ger</iso639Id></languageList>
-@@ -1414,13 +1414,13 @@
- <variant>
- <configItem>
- <name>olpc2</name>
-- <_description>English (the divide/multiply keys toggle the layout)</_description>
-+ <description>English (the divide/multiply keys toggle the layout)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>hbs</name>
-- <_description>Serbo-Croatian (US)</_description>
-+ <description>Serbo-Croatian (US)</description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>bos</iso639Id>
- <iso639Id>hbs</iso639Id>
-@@ -1431,13 +1431,13 @@
- <variant>
- <configItem>
- <name>workman</name>
-- <_description>English (Workman)</_description>
-+ <description>English (Workman)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>workman-intl</name>
-- <_description>English (Workman, international with dead keys)</_description>
-+ <description>English (Workman, international with dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1445,17 +1445,17 @@
- <layout>
- <configItem>
- <name>af</name>
-- <!-- Keyboard indicator for Afghani layouts -->
-- <_shortDescription>fa</_shortDescription>
-- <_description>Afghani</_description>
-+
-+ <shortDescription>fa</shortDescription>
-+ <description>Afghani</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ps</name>
-- <!-- Keyboard indicator for Pashto layouts -->
-- <_shortDescription>ps</_shortDescription>
-- <_description>Pashto</_description>
-+
-+ <shortDescription>ps</shortDescription>
-+ <description>Pashto</description>
- <languageList>
- <iso639Id>pus</iso639Id>
- </languageList>
-@@ -1464,9 +1464,9 @@
- <variant>
- <configItem>
- <name>uz</name>
-- <!-- Keyboard indicator for Uzbek layouts -->
-- <_shortDescription>uz</_shortDescription>
-- <_description>Uzbek (Afghanistan)</_description>
-+
-+ <shortDescription>uz</shortDescription>
-+ <description>Uzbek (Afghanistan)</description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
-@@ -1475,9 +1475,9 @@
- <variant>
- <configItem>
- <name>olpc-ps</name>
-- <!-- Keyboard indicator for Pashto layouts -->
-- <_shortDescription>ps</_shortDescription>
-- <_description>Pashto (Afghanistan, OLPC)</_description>
-+
-+ <shortDescription>ps</shortDescription>
-+ <description>Pashto (Afghanistan, OLPC)</description>
- <languageList>
- <iso639Id>pus</iso639Id>
- </languageList>
-@@ -1486,17 +1486,17 @@
- <variant>
- <configItem>
- <name>fa-olpc</name>
-- <!-- Keyboard indicator for Persian layouts -->
-- <_shortDescription>fa</_shortDescription>
-- <_description>Persian (Afghanistan, Dari OLPC)</_description>
-+
-+ <shortDescription>fa</shortDescription>
-+ <description>Persian (Afghanistan, Dari OLPC)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>uz-olpc</name>
-- <!-- Keyboard indicator for Uzbek layouts -->
-- <_shortDescription>uz</_shortDescription>
-- <_description>Uzbek (Afghanistan, OLPC)</_description>
-+
-+ <shortDescription>uz</shortDescription>
-+ <description>Uzbek (Afghanistan, OLPC)</description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
-@@ -1507,9 +1507,9 @@
- <layout>
- <configItem>
- <name>ara</name>
-- <!-- Keyboard indicator for Arabic layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic</description>
- <countryList>
- <iso3166Id>AE</iso3166Id>
- <iso3166Id>BH</iso3166Id>
-@@ -1539,37 +1539,37 @@
- <variant>
- <configItem>
- <name>azerty</name>
-- <_description>Arabic (azerty)</_description>
-+ <description>Arabic (azerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>azerty_digits</name>
-- <_description>Arabic (azerty/digits)</_description>
-+ <description>Arabic (azerty/digits)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>digits</name>
-- <_description>Arabic (digits)</_description>
-+ <description>Arabic (digits)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Arabic (qwerty)</_description>
-+ <description>Arabic (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_digits</name>
-- <_description>Arabic (qwerty/digits)</_description>
-+ <description>Arabic (qwerty/digits)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>buckwalter</name>
-- <_description>Arabic (Buckwalter)</_description>
-+ <description>Arabic (Buckwalter)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1577,9 +1577,9 @@
- <layout>
- <configItem>
- <name>al</name>
-- <!-- Keyboard indicator for Albanian layouts -->
-- <_shortDescription>sq</_shortDescription>
-- <_description>Albanian</_description>
-+
-+ <shortDescription>sq</shortDescription>
-+ <description>Albanian</description>
- <languageList>
- <iso639Id>alb</iso639Id>
- </languageList>
-@@ -1589,9 +1589,9 @@
- <layout>
- <configItem>
- <name>am</name>
-- <!-- Keyboard indicator for Armenian layouts -->
-- <_shortDescription>hy</_shortDescription>
-- <_description>Armenian</_description>
-+
-+ <shortDescription>hy</shortDescription>
-+ <description>Armenian</description>
- <languageList>
- <iso639Id>hye</iso639Id>
- </languageList>
-@@ -1600,31 +1600,31 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Armenian (phonetic)</_description>
-+ <description>Armenian (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic-alt</name>
-- <_description>Armenian (alternative phonetic)</_description>
-+ <description>Armenian (alternative phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eastern</name>
-- <_description>Armenian (eastern)</_description>
-+ <description>Armenian (eastern)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>western</name>
-- <_description>Armenian (western)</_description>
-+ <description>Armenian (western)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eastern-alt</name>
-- <_description>Armenian (alternative eastern)</_description>
-+ <description>Armenian (alternative eastern)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1632,9 +1632,9 @@
- <layout>
- <configItem>
- <name>at</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Austria)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Austria)</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
-@@ -1643,19 +1643,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>German (Austria, eliminate dead keys)</_description>
-+ <description>German (Austria, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>German (Austria, Sun dead keys)</_description>
-+ <description>German (Austria, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>German (Austria, Macintosh)</_description>
-+ <description>German (Austria, Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1663,9 +1663,9 @@
- <layout>
- <configItem>
- <name>az</name>
-- <!-- Keyboard indicator for Azerbaijani layouts -->
-- <_shortDescription>az</_shortDescription>
-- <_description>Azerbaijani</_description>
-+
-+ <shortDescription>az</shortDescription>
-+ <description>Azerbaijani</description>
- <languageList>
- <iso639Id>aze</iso639Id>
- </languageList>
-@@ -1674,7 +1674,7 @@
- <variant>
- <configItem>
- <name>cyrillic</name>
-- <_description>Azerbaijani (Cyrillic)</_description>
-+ <description>Azerbaijani (Cyrillic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1682,9 +1682,9 @@
- <layout>
- <configItem>
- <name>by</name>
-- <!-- Keyboard indicator for Belarusian layouts -->
-- <_shortDescription>by</_shortDescription>
-- <_description>Belarusian</_description>
-+
-+ <shortDescription>by</shortDescription>
-+ <description>Belarusian</description>
- <languageList>
- <iso639Id>bel</iso639Id>
- </languageList>
-@@ -1693,13 +1693,13 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Belarusian (legacy)</_description>
-+ <description>Belarusian (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin</name>
-- <_description>Belarusian (Latin)</_description>
-+ <description>Belarusian (Latin)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1707,9 +1707,9 @@
- <layout>
- <configItem>
- <name>be</name>
-- <!-- Keyboard indicator for Belgian layouts -->
-- <_shortDescription>be</_shortDescription>
-- <_description>Belgian</_description>
-+
-+ <shortDescription>be</shortDescription>
-+ <description>Belgian</description>
- <languageList><iso639Id>ger</iso639Id>
- <iso639Id>nld</iso639Id>
- <iso639Id>fra</iso639Id></languageList>
-@@ -1718,43 +1718,43 @@
- <variant>
- <configItem>
- <name>oss</name>
-- <_description>Belgian (alternative)</_description>
-+ <description>Belgian (alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_latin9</name>
-- <_description>Belgian (alternative, Latin-9 only)</_description>
-+ <description>Belgian (alternative, Latin-9 only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_sundeadkeys</name>
-- <_description>Belgian (alternative, Sun dead keys)</_description>
-+ <description>Belgian (alternative, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>iso-alternate</name>
-- <_description>Belgian (ISO alternate)</_description>
-+ <description>Belgian (ISO alternate)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Belgian (eliminate dead keys)</_description>
-+ <description>Belgian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Belgian (Sun dead keys)</_description>
-+ <description>Belgian (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>wang</name>
-- <_description>Belgian (Wang model 724 azerty)</_description>
-+ <description>Belgian (Wang model 724 azerty)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1762,9 +1762,9 @@
- <layout>
- <configItem>
- <name>bd</name>
-- <!-- Keyboard indicator for Bangla layouts -->
-- <_shortDescription>bn</_shortDescription>
-- <_description>Bangla</_description>
-+
-+ <shortDescription>bn</shortDescription>
-+ <description>Bangla</description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
-@@ -1773,7 +1773,7 @@
- <variant>
- <configItem>
- <name>probhat</name>
-- <_description>Bangla (Probhat)</_description>
-+ <description>Bangla (Probhat)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -1781,17 +1781,17 @@
- <layout>
- <configItem>
- <name>in</name>
-- <!-- Keyboard indicator for Indian layouts -->
-- <_shortDescription>in</_shortDescription>
-- <_description>Indian</_description>
-+
-+ <shortDescription>in</shortDescription>
-+ <description>Indian</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ben</name>
-- <!-- Keyboard indicator for Bangla layouts -->
-- <_shortDescription>bn</_shortDescription>
-- <_description>Bangla (India)</_description>
-+
-+ <shortDescription>bn</shortDescription>
-+ <description>Bangla (India)</description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
-@@ -1800,9 +1800,9 @@
- <variant>
- <configItem>
- <name>ben_probhat</name>
-- <!-- Keyboard indicator for Bangla layouts -->
-- <_shortDescription>bn</_shortDescription>
-- <_description>Bangla (India, Probhat)</_description>
-+
-+ <shortDescription>bn</shortDescription>
-+ <description>Bangla (India, Probhat)</description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
-@@ -1811,28 +1811,28 @@
- <variant>
- <configItem>
- <name>ben_baishakhi</name>
-- <_description>Bangla (India, Baishakhi)</_description>
-+ <description>Bangla (India, Baishakhi)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_bornona</name>
-- <_description>Bangla (India, Bornona)</_description>
-+ <description>Bangla (India, Bornona)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_gitanjali</name>
-- <_description>Bangla (India, Uni Gitanjali)</_description>
-+ <description>Bangla (India, Uni Gitanjali)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_inscript</name>
-- <_description>Bangla (India, Baishakhi Inscript)</_description>
-+ <description>Bangla (India, Baishakhi Inscript)</description>
- <languageList><iso639Id>ben</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -1846,9 +1846,9 @@
- <variant>
- <configItem>
- <name>guj</name>
-- <!-- Keyboard indicator for Gujarati layouts -->
-- <_shortDescription>gu</_shortDescription>
-- <_description>Gujarati</_description>
-+
-+ <shortDescription>gu</shortDescription>
-+ <description>Gujarati</description>
- <languageList>
- <iso639Id>guj</iso639Id>
- </languageList>
-@@ -1857,9 +1857,9 @@
- <variant>
- <configItem>
- <name>guru</name>
-- <!-- Keyboard indicator for Punjabi layouts -->
-- <_shortDescription>pa</_shortDescription>
-- <_description>Punjabi (Gurmukhi)</_description>
-+
-+ <shortDescription>pa</shortDescription>
-+ <description>Punjabi (Gurmukhi)</description>
- <languageList>
- <iso639Id>pan</iso639Id>
- </languageList>
-@@ -1868,9 +1868,9 @@
- <variant>
- <configItem>
- <name>jhelum</name>
-- <!-- Keyboard indicator for Punjabi layouts -->
-- <_shortDescription>pa</_shortDescription>
-- <_description>Punjabi (Gurmukhi Jhelum)</_description>
-+
-+ <shortDescription>pa</shortDescription>
-+ <description>Punjabi (Gurmukhi Jhelum)</description>
- <languageList>
- <iso639Id>pan</iso639Id>
- </languageList>
-@@ -1879,9 +1879,9 @@
- <variant>
- <configItem>
- <name>kan</name>
-- <!-- Keyboard indicator for Kannada layouts -->
-- <_shortDescription>kn</_shortDescription>
-- <_description>Kannada</_description>
-+
-+ <shortDescription>kn</shortDescription>
-+ <description>Kannada</description>
- <languageList>
- <iso639Id>kan</iso639Id>
- </languageList>
-@@ -1890,9 +1890,9 @@
- <variant>
- <configItem>
- <name>kan-kagapa</name>
-- <!-- Keyboard indicator for Kannada layouts -->
-- <_shortDescription>kn</_shortDescription>
-- <_description>Kannada (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>kn</shortDescription>
-+ <description>Kannada (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>kan</iso639Id>
- </languageList>
-@@ -1901,9 +1901,9 @@
- <variant>
- <configItem>
- <name>mal</name>
-- <!-- Keyboard indicator for Malayalam layouts -->
-- <_shortDescription>ml</_shortDescription>
-- <_description>Malayalam</_description>
-+
-+ <shortDescription>ml</shortDescription>
-+ <description>Malayalam</description>
- <languageList>
- <iso639Id>mal</iso639Id>
- </languageList>
-@@ -1912,9 +1912,9 @@
- <variant>
- <configItem>
- <name>mal_lalitha</name>
-- <!-- Keyboard indicator for Malayalam layouts -->
-- <_shortDescription>ml</_shortDescription>
-- <_description>Malayalam (Lalitha)</_description>
-+
-+ <shortDescription>ml</shortDescription>
-+ <description>Malayalam (Lalitha)</description>
- <languageList>
- <iso639Id>mal</iso639Id>
- </languageList>
-@@ -1923,18 +1923,18 @@
- <variant>
- <configItem>
- <name>mal_enhanced</name>
-- <!-- Keyboard indicator for Malayalam layouts -->
-- <_shortDescription>ml</_shortDescription>
-- <_description>Malayalam (enhanced Inscript with Rupee Sign)</_description>
-+
-+ <shortDescription>ml</shortDescription>
-+ <description>Malayalam (enhanced Inscript with Rupee Sign)</description>
- <languageList><iso639Id>mal</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ori</name>
-- <!-- Keyboard indicator for Oriya layouts -->
-- <_shortDescription>or</_shortDescription>
-- <_description>Oriya</_description>
-+
-+ <shortDescription>or</shortDescription>
-+ <description>Oriya</description>
- <languageList>
- <iso639Id>ori</iso639Id>
- </languageList>
-@@ -1943,9 +1943,9 @@
- <variant>
- <configItem>
- <name>tam_unicode</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (Unicode)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (Unicode)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1954,9 +1954,9 @@
- <variant>
- <configItem>
- <name>tam_keyboard_with_numerals</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (keyboard with numerals)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (keyboard with numerals)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1965,9 +1965,9 @@
- <variant>
- <configItem>
- <name>tam_TAB</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (TAB typewriter)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (TAB typewriter)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1976,9 +1976,9 @@
- <variant>
- <configItem>
- <name>tam_TSCII</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (TSCII typewriter)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (TSCII typewriter)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1987,9 +1987,9 @@
- <variant>
- <configItem>
- <name>tam</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -1998,9 +1998,9 @@
- <variant>
- <configItem>
- <name>tel</name>
-- <!-- Keyboard indicator for Telugu layouts -->
-- <_shortDescription>te</_shortDescription>
-- <_description>Telugu</_description>
-+
-+ <shortDescription>te</shortDescription>
-+ <description>Telugu</description>
- <languageList>
- <iso639Id>tel</iso639Id>
- </languageList>
-@@ -2009,9 +2009,9 @@
- <variant>
- <configItem>
- <name>tel-kagapa</name>
-- <!-- Keyboard indicator for Telugu layouts -->
-- <_shortDescription>te</_shortDescription>
-- <_description>Telugu (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>te</shortDescription>
-+ <description>Telugu (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>tel</iso639Id>
- </languageList>
-@@ -2020,9 +2020,9 @@
- <variant>
- <configItem>
- <name>urd-phonetic</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (phonetic)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (phonetic)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -2031,9 +2031,9 @@
- <variant>
- <configItem>
- <name>urd-phonetic3</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (alternative phonetic)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (alternative phonetic)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -2042,9 +2042,9 @@
- <variant>
- <configItem>
- <name>urd-winkeys</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (WinKeys)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (WinKeys)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -2053,9 +2053,9 @@
- <variant>
- <configItem>
- <name>bolnagri</name>
-- <!-- Keyboard indicator for Hindi layouts -->
-- <_shortDescription>hi</_shortDescription>
-- <_description>Hindi (Bolnagri)</_description>
-+
-+ <shortDescription>hi</shortDescription>
-+ <description>Hindi (Bolnagri)</description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
-@@ -2064,9 +2064,9 @@
- <variant>
- <configItem>
- <name>hin-wx</name>
-- <!-- Keyboard indicator for Hindi layouts -->
-- <_shortDescription>hi</_shortDescription>
-- <_description>Hindi (Wx)</_description>
-+
-+ <shortDescription>hi</shortDescription>
-+ <description>Hindi (Wx)</description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
-@@ -2075,9 +2075,9 @@
- <variant>
- <configItem>
- <name>hin-kagapa</name>
-- <!-- Keyboard indicator for Hindi layouts -->
-- <_shortDescription>hi</_shortDescription>
-- <_description>Hindi (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>hi</shortDescription>
-+ <description>Hindi (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
-@@ -2086,9 +2086,9 @@
- <variant>
- <configItem>
- <name>san-kagapa</name>
-- <!-- Keyboard indicator for Sanskrit layouts -->
-- <_shortDescription>sa</_shortDescription>
-- <_description>Sanskrit (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>sa</shortDescription>
-+ <description>Sanskrit (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>san</iso639Id>
- </languageList>
-@@ -2097,9 +2097,9 @@
- <variant>
- <configItem>
- <name>mar-kagapa</name>
-- <!-- Keyboard indicator for Marathi layouts -->
-- <_shortDescription>mr</_shortDescription>
-- <_description>Marathi (KaGaPa phonetic)</_description>
-+
-+ <shortDescription>mr</shortDescription>
-+ <description>Marathi (KaGaPa phonetic)</description>
- <languageList>
- <iso639Id>mar</iso639Id>
- </languageList>
-@@ -2108,9 +2108,9 @@
- <variant>
- <configItem>
- <name>eng</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (India, with RupeeSign)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (India, with RupeeSign)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -2121,9 +2121,9 @@
- <layout>
- <configItem>
- <name>ba</name>
-- <!-- Keyboard indicator for Bosnian layouts -->
-- <_shortDescription>bs</_shortDescription>
-- <_description>Bosnian</_description>
-+
-+ <shortDescription>bs</shortDescription>
-+ <description>Bosnian</description>
- <languageList>
- <iso639Id>bos</iso639Id>
- </languageList>
-@@ -2132,25 +2132,25 @@
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Bosnian (use guillemets for quotes)</_description>
-+ <description>Bosnian (use guillemets for quotes)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicode</name>
-- <_description>Bosnian (use Bosnian digraphs)</_description>
-+ <description>Bosnian (use Bosnian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicodeus</name>
-- <_description>Bosnian (US keyboard with Bosnian digraphs)</_description>
-+ <description>Bosnian (US keyboard with Bosnian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Bosnian (US keyboard with Bosnian letters)</_description>
-+ <description>Bosnian (US keyboard with Bosnian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2158,9 +2158,9 @@
- <layout>
- <configItem>
- <name>br</name>
-- <!-- Keyboard indicator for Portuguese layouts -->
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese (Brazil)</_description>
-+
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese (Brazil)</description>
- <languageList>
- <iso639Id>por</iso639Id>
- </languageList>
-@@ -2169,31 +2169,31 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Portuguese (Brazil, eliminate dead keys)</_description>
-+ <description>Portuguese (Brazil, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Portuguese (Brazil, Dvorak)</_description>
-+ <description>Portuguese (Brazil, Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo</name>
-- <_description>Portuguese (Brazil, Nativo)</_description>
-+ <description>Portuguese (Brazil, Nativo)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-us</name>
-- <_description>Portuguese (Brazil, Nativo for US keyboards)</_description>
-+ <description>Portuguese (Brazil, Nativo for US keyboards)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-epo</name>
-- <_description>Esperanto (Brazil, Nativo)</_description>
-+ <description>Esperanto (Brazil, Nativo)</description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
-@@ -2204,9 +2204,9 @@
- <layout>
- <configItem>
- <name>bg</name>
-- <!-- Keyboard indicator for Bulgarian layouts -->
-- <_shortDescription>bg</_shortDescription>
-- <_description>Bulgarian</_description>
-+
-+ <shortDescription>bg</shortDescription>
-+ <description>Bulgarian</description>
- <languageList>
- <iso639Id>bul</iso639Id>
- </languageList>
-@@ -2215,13 +2215,13 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Bulgarian (traditional phonetic)</_description>
-+ <description>Bulgarian (traditional phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bas_phonetic</name>
-- <_description>Bulgarian (new phonetic)</_description>
-+ <description>Bulgarian (new phonetic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2229,17 +2229,17 @@
- <layout>
- <configItem>
- <name>ma</name>
-- <!-- Keyboard indicator for Arabic layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic (Morocco)</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic (Morocco)</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>french</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Morocco)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Morocco)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2248,9 +2248,9 @@
- <variant>
- <configItem>
- <name>tifinagh</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2259,9 +2259,9 @@
- <variant>
- <configItem>
- <name>tifinagh-alt</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh alternative)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh alternative)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2270,9 +2270,9 @@
- <variant>
- <configItem>
- <name>tifinagh-alt-phonetic</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh alternative phonetic)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh alternative phonetic)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2281,9 +2281,9 @@
- <variant>
- <configItem>
- <name>tifinagh-extended</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh extended)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh extended)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2292,9 +2292,9 @@
- <variant>
- <configItem>
- <name>tifinagh-phonetic</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh phonetic)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh phonetic)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2303,9 +2303,9 @@
- <variant>
- <configItem>
- <name>tifinagh-extended-phonetic</name>
-- <!-- Keyboard indicator for Berber layouts -->
-- <_shortDescription>ber</_shortDescription>
-- <_description>Berber (Morocco, Tifinagh extended phonetic)</_description>
-+
-+ <shortDescription>ber</shortDescription>
-+ <description>Berber (Morocco, Tifinagh extended phonetic)</description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
-@@ -2316,23 +2316,23 @@
- <layout>
- <configItem>
- <name>cm</name>
-- <!-- Keyboard indicator for Cameroon layouts -->
-- <_shortDescription>cm</_shortDescription>
-- <_description>English (Cameroon)</_description>
-+
-+ <shortDescription>cm</shortDescription>
-+ <description>English (Cameroon)</description>
- <languageList><iso639Id>eng</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>french</name>
-- <_description>French (Cameroon)</_description>
-+ <description>French (Cameroon)</description>
- <languageList><iso639Id>fra</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Cameroon Multilingual (qwerty)</_description>
-+ <description>Cameroon Multilingual (qwerty)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- <iso639Id>bas</iso639Id>
-@@ -2369,7 +2369,7 @@
- <variant>
- <configItem>
- <name>azerty</name>
-- <_description>Cameroon Multilingual (azerty)</_description>
-+ <description>Cameroon Multilingual (azerty)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- <iso639Id>bas</iso639Id>
-@@ -2406,7 +2406,7 @@
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Cameroon Multilingual (Dvorak)</_description>
-+ <description>Cameroon Multilingual (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2414,9 +2414,9 @@
- <layout>
- <configItem>
- <name>mm</name>
-- <!-- Keyboard indicator for Burmese layouts -->
-- <_shortDescription>my</_shortDescription>
-- <_description>Burmese</_description>
-+
-+ <shortDescription>my</shortDescription>
-+ <description>Burmese</description>
- <languageList>
- <iso639Id>mya</iso639Id>
- </languageList>
-@@ -2426,9 +2426,9 @@
- <layout>
- <configItem>
- <name>ca</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2437,43 +2437,43 @@
- <variant>
- <configItem>
- <name>fr-dvorak</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada, Dvorak)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada, Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr-legacy</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Canada, legacy)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Canada, legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multix</name>
-- <_description>Canadian Multilingual</_description>
-+ <description>Canadian Multilingual</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multi</name>
-- <_description>Canadian Multilingual (first part)</_description>
-+ <description>Canadian Multilingual (first part)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multi-2gr</name>
-- <_description>Canadian Multilingual (second part)</_description>
-+ <description>Canadian Multilingual (second part)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ike</name>
-- <!-- Keyboard indicator for Inuktikut layouts -->
-- <_shortDescription>ike</_shortDescription>
-- <_description>Inuktitut</_description>
-+
-+ <shortDescription>ike</shortDescription>
-+ <description>Inuktitut</description>
- <languageList>
- <iso639Id>iku</iso639Id>
- </languageList>
-@@ -2482,9 +2482,9 @@
- <variant>
- <configItem>
- <name>eng</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Canada)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Canada)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -2495,9 +2495,9 @@
- <layout>
- <configItem>
- <name>cd</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Democratic Republic of the Congo)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Democratic Republic of the Congo)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2507,9 +2507,9 @@
- <layout>
- <configItem>
- <name>cn</name>
-- <!-- Keyboard indicator for Chinese layouts -->
-- <_shortDescription>zh</_shortDescription>
-- <_description>Chinese</_description>
-+
-+ <shortDescription>zh</shortDescription>
-+ <description>Chinese</description>
- <languageList>
- <iso639Id>chi</iso639Id>
- </languageList>
-@@ -2518,7 +2518,7 @@
- <variant>
- <configItem>
- <name>tib</name>
-- <_description>Tibetan</_description>
-+ <description>Tibetan</description>
- <languageList>
- <iso639Id>tib</iso639Id>
- </languageList>
-@@ -2527,7 +2527,7 @@
- <variant>
- <configItem>
- <name>tib_asciinum</name>
-- <_description>Tibetan (with ASCII numerals)</_description>
-+ <description>Tibetan (with ASCII numerals)</description>
- <languageList>
- <iso639Id>tib</iso639Id>
- </languageList>
-@@ -2536,8 +2536,8 @@
- <variant>
- <configItem>
- <name>ug</name>
-- <_shortDescription>ug</_shortDescription>
-- <_description>Uyghur</_description>
-+ <shortDescription>ug</shortDescription>
-+ <description>Uyghur</description>
- <languageList>
- <iso639Id>ug</iso639Id>
- </languageList>
-@@ -2548,9 +2548,9 @@
- <layout>
- <configItem>
- <name>hr</name>
-- <!-- Keyboard indicator for Croatian layouts -->
-- <_shortDescription>hr</_shortDescription>
-- <_description>Croatian</_description>
-+
-+ <shortDescription>hr</shortDescription>
-+ <description>Croatian</description>
- <languageList>
- <iso639Id>hrv</iso639Id>
- </languageList>
-@@ -2559,25 +2559,25 @@
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Croatian (use guillemets for quotes)</_description>
-+ <description>Croatian (use guillemets for quotes)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicode</name>
-- <_description>Croatian (use Croatian digraphs)</_description>
-+ <description>Croatian (use Croatian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicodeus</name>
-- <_description>Croatian (US keyboard with Croatian digraphs)</_description>
-+ <description>Croatian (US keyboard with Croatian digraphs)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Croatian (US keyboard with Croatian letters)</_description>
-+ <description>Croatian (US keyboard with Croatian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2585,9 +2585,9 @@
- <layout>
- <configItem>
- <name>cz</name>
-- <!-- Keyboard indicator for Chech layouts -->
-- <_shortDescription>cs</_shortDescription>
-- <_description>Czech</_description>
-+
-+ <shortDescription>cs</shortDescription>
-+ <description>Czech</description>
- <languageList>
- <iso639Id>cze</iso639Id>
- </languageList>
-@@ -2596,31 +2596,31 @@
- <variant>
- <configItem>
- <name>bksl</name>
-- <_description>Czech (with &lt;\|&gt; key)</_description>
-+ <description>Czech (with &lt;\|&gt; key)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Czech (qwerty)</_description>
-+ <description>Czech (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_bksl</name>
-- <_description>Czech (qwerty, extended Backslash)</_description>
-+ <description>Czech (qwerty, extended Backslash)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ucw</name>
-- <_description>Czech (UCW layout, accented letters only)</_description>
-+ <description>Czech (UCW layout, accented letters only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-ucw</name>
-- <_description>Czech (US Dvorak with CZ UCW support)</_description>
-+ <description>Czech (US Dvorak with CZ UCW support)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2628,9 +2628,9 @@
- <layout>
- <configItem>
- <name>dk</name>
-- <!-- Keyboard indicator for Danish layouts -->
-- <_shortDescription>da</_shortDescription>
-- <_description>Danish</_description>
-+
-+ <shortDescription>da</shortDescription>
-+ <description>Danish</description>
- <languageList>
- <iso639Id>dan</iso639Id>
- </languageList>
-@@ -2639,25 +2639,25 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Danish (eliminate dead keys)</_description>
-+ <description>Danish (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Danish (Macintosh)</_description>
-+ <description>Danish (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>Danish (Macintosh, eliminate dead keys)</_description>
-+ <description>Danish (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Danish (Dvorak)</_description>
-+ <description>Danish (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2665,9 +2665,9 @@
- <layout>
- <configItem>
- <name>nl</name>
-- <!-- Keyboard indicator for Dutch layouts -->
-- <_shortDescription>nl</_shortDescription>
-- <_description>Dutch</_description>
-+
-+ <shortDescription>nl</shortDescription>
-+ <description>Dutch</description>
- <languageList>
- <iso639Id>nld</iso639Id>
- </languageList>
-@@ -2676,19 +2676,19 @@
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Dutch (Sun dead keys)</_description>
-+ <description>Dutch (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Dutch (Macintosh)</_description>
-+ <description>Dutch (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std</name>
-- <_description>Dutch (standard)</_description>
-+ <description>Dutch (standard)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2696,9 +2696,9 @@
- <layout>
- <configItem>
- <name>bt</name>
-- <!-- Keyboard indicator for Dzongkha layouts -->
-- <_shortDescription>dz</_shortDescription>
-- <_description>Dzongkha</_description>
-+
-+ <shortDescription>dz</shortDescription>
-+ <description>Dzongkha</description>
- <languageList>
- <iso639Id>dzo</iso639Id>
- </languageList>
-@@ -2707,9 +2707,9 @@
- <layout>
- <configItem>
- <name>ee</name>
-- <!-- Keyboard indicator for Estonian layouts -->
-- <_shortDescription>et</_shortDescription>
-- <_description>Estonian</_description>
-+
-+ <shortDescription>et</shortDescription>
-+ <description>Estonian</description>
- <languageList>
- <iso639Id>est</iso639Id>
- </languageList>
-@@ -2718,19 +2718,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Estonian (eliminate dead keys)</_description>
-+ <description>Estonian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Estonian (Dvorak)</_description>
-+ <description>Estonian (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Estonian (US keyboard with Estonian letters)</_description>
-+ <description>Estonian (US keyboard with Estonian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2738,9 +2738,9 @@
- <layout>
- <configItem>
- <name>ir</name>
-- <!-- Keyboard indicator for Persian layouts -->
-- <_shortDescription>fa</_shortDescription>
-- <_description>Persian</_description>
-+
-+ <shortDescription>fa</shortDescription>
-+ <description>Persian</description>
- <languageList>
- <iso639Id>per</iso639Id>
- </languageList>
-@@ -2749,15 +2749,15 @@
- <variant>
- <configItem>
- <name>pes_keypad</name>
-- <_description>Persian (with Persian Keypad)</_description>
-+ <description>Persian (with Persian Keypad)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2766,9 +2766,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2777,9 +2777,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2788,9 +2788,9 @@
- <variant>
- <configItem>
- <name>ku_ara</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iran, Arabic-Latin)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iran, Arabic-Latin)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2801,9 +2801,9 @@
- <layout>
- <configItem>
- <name>iq</name>
-- <!-- Keyboard indicator for Iraqi layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Iraqi</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Iraqi</description>
- <languageList><iso639Id>ara</iso639Id>
- <iso639Id>kur</iso639Id></languageList>
- </configItem>
-@@ -2811,9 +2811,9 @@
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2822,9 +2822,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2833,9 +2833,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2844,9 +2844,9 @@
- <variant>
- <configItem>
- <name>ku_ara</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Iraq, Arabic-Latin)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Iraq, Arabic-Latin)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -2857,9 +2857,9 @@
- <layout>
- <configItem>
- <name>fo</name>
-- <!-- Keyboard indicator for Faroese layouts -->
-- <_shortDescription>fo</_shortDescription>
-- <_description>Faroese</_description>
-+
-+ <shortDescription>fo</shortDescription>
-+ <description>Faroese</description>
- <languageList>
- <iso639Id>fao</iso639Id>
- </languageList>
-@@ -2868,7 +2868,7 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Faroese (eliminate dead keys)</_description>
-+ <description>Faroese (eliminate dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2876,9 +2876,9 @@
- <layout>
- <configItem>
- <name>fi</name>
-- <!-- Keyboard indicator for Finnish layouts -->
-- <_shortDescription>fi</_shortDescription>
-- <_description>Finnish</_description>
-+
-+ <shortDescription>fi</shortDescription>
-+ <description>Finnish</description>
- <languageList>
- <iso639Id>fin</iso639Id>
- </languageList>
-@@ -2887,26 +2887,26 @@
- <variant>
- <configItem>
- <name>classic</name>
-- <_description>Finnish (classic)</_description>
-+ <description>Finnish (classic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Finnish (classic, eliminate dead keys)</_description>
-+ <description>Finnish (classic, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
-- <_description>Northern Saami (Finland)</_description>
-+ <description>Northern Saami (Finland)</description>
- <languageList><iso639Id>sme</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Finnish (Macintosh)</_description>
-+ <description>Finnish (Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -2914,9 +2914,9 @@
- <layout>
- <configItem>
- <name>fr</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -2925,91 +2925,91 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>French (eliminate dead keys)</_description>
-+ <description>French (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>French (Sun dead keys)</_description>
-+ <description>French (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss</name>
-- <_description>French (alternative)</_description>
-+ <description>French (alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_latin9</name>
-- <_description>French (alternative, Latin-9 only)</_description>
-+ <description>French (alternative, Latin-9 only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_nodeadkeys</name>
-- <_description>French (alternative, eliminate dead keys)</_description>
-+ <description>French (alternative, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_sundeadkeys</name>
-- <_description>French (alternative, Sun dead keys)</_description>
-+ <description>French (alternative, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9</name>
-- <_description>French (legacy, alternative)</_description>
-+ <description>French (legacy, alternative)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9_nodeadkeys</name>
-- <_description>French (legacy, alternative, eliminate dead keys)</_description>
-+ <description>French (legacy, alternative, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9_sundeadkeys</name>
-- <_description>French (legacy, alternative, Sun dead keys)</_description>
-+ <description>French (legacy, alternative, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bepo</name>
-- <_description>French (Bepo, ergonomic, Dvorak way)</_description>
-+ <description>French (Bepo, ergonomic, Dvorak way)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bepo_latin9</name>
-- <_description>French (Bepo, ergonomic, Dvorak way, Latin-9 only)</_description>
-+ <description>French (Bepo, ergonomic, Dvorak way, Latin-9 only)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>French (Dvorak)</_description>
-+ <description>French (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>French (Macintosh)</_description>
-+ <description>French (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bre</name>
-- <_description>French (Breton)</_description>
-+ <description>French (Breton)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oci</name>
-- <_description>Occitan</_description>
-+ <description>Occitan</description>
- <languageList>
- <iso639Id>oci</iso639Id>
- </languageList>
-@@ -3018,7 +3018,7 @@
- <variant>
- <configItem>
- <name>geo</name>
-- <_description>Georgian (France, AZERTY Tskapo)</_description>
-+ <description>Georgian (France, AZERTY Tskapo)</description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
-@@ -3029,9 +3029,9 @@
- <layout>
- <configItem>
- <name>gh</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Ghana)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Ghana)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -3040,15 +3040,15 @@
- <variant>
- <configItem>
- <name>generic</name>
-- <_description>English (Ghana, multilingual)</_description>
-+ <description>English (Ghana, multilingual)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>akan</name>
-- <!-- Keyboard indicator for Akan layouts -->
-- <_shortDescription>ak</_shortDescription>
-- <_description>Akan</_description>
-+
-+ <shortDescription>ak</shortDescription>
-+ <description>Akan</description>
- <languageList>
- <iso639Id>aka</iso639Id>
- </languageList>
-@@ -3057,9 +3057,9 @@
- <variant>
- <configItem>
- <name>ewe</name>
-- <!-- Keyboard indicator for Ewe layouts -->
-- <_shortDescription>ee</_shortDescription>
-- <_description>Ewe</_description>
-+
-+ <shortDescription>ee</shortDescription>
-+ <description>Ewe</description>
- <languageList>
- <iso639Id>ewe</iso639Id>
- </languageList>
-@@ -3068,9 +3068,9 @@
- <variant>
- <configItem>
- <name>fula</name>
-- <!-- Keyboard indicator for Fula layouts -->
-- <_shortDescription>ff</_shortDescription>
-- <_description>Fula</_description>
-+
-+ <shortDescription>ff</shortDescription>
-+ <description>Fula</description>
- <languageList>
- <iso639Id>ful</iso639Id>
- </languageList>
-@@ -3079,9 +3079,9 @@
- <variant>
- <configItem>
- <name>ga</name>
-- <!-- Keyboard indicator for Ga layouts -->
-- <_shortDescription>gaa</_shortDescription>
-- <_description>Ga</_description>
-+
-+ <shortDescription>gaa</shortDescription>
-+ <description>Ga</description>
- <languageList>
- <iso639Id>gaa</iso639Id>
- </languageList>
-@@ -3090,9 +3090,9 @@
- <variant>
- <configItem>
- <name>hausa</name>
-- <!-- Keyboard indicator for Hausa layouts -->
-- <_shortDescription>ha</_shortDescription>
-- <_description>Hausa</_description>
-+
-+ <shortDescription>ha</shortDescription>
-+ <description>Hausa</description>
- <languageList>
- <iso639Id>hau</iso639Id>
- </languageList>
-@@ -3101,9 +3101,9 @@
- <variant>
- <configItem>
- <name>avn</name>
-- <!-- Keyboard indicator for Avatime layouts -->
-- <_shortDescription>avn</_shortDescription>
-- <_description>Avatime</_description>
-+
-+ <shortDescription>avn</shortDescription>
-+ <description>Avatime</description>
- <languageList>
- <iso639Id>avn</iso639Id>
- </languageList>
-@@ -3112,7 +3112,7 @@
- <variant>
- <configItem>
- <name>gillbt</name>
-- <_description>English (Ghana, GILLBT)</_description>
-+ <description>English (Ghana, GILLBT)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3120,9 +3120,9 @@
- <layout>
- <configItem>
- <name>gn</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Guinea)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Guinea)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -3132,9 +3132,9 @@
- <layout>
- <configItem>
- <name>ge</name>
-- <!-- Keyboard indicator for Georgian layouts -->
-- <_shortDescription>ka</_shortDescription>
-- <_description>Georgian</_description>
-+
-+ <shortDescription>ka</shortDescription>
-+ <description>Georgian</description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
-@@ -3143,21 +3143,21 @@
- <variant>
- <configItem>
- <name>ergonomic</name>
-- <_description>Georgian (ergonomic)</_description>
-+ <description>Georgian (ergonomic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mess</name>
-- <_description>Georgian (MESS)</_description>
-+ <description>Georgian (MESS)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Georgia)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Georgia)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -3166,7 +3166,7 @@
- <variant>
- <configItem>
- <name>os</name>
-- <_description>Ossetian (Georgia)</_description>
-+ <description>Ossetian (Georgia)</description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
-@@ -3177,9 +3177,9 @@
- <layout>
- <configItem>
- <name>de</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German</description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
-@@ -3188,75 +3188,75 @@
- <variant>
- <configItem>
- <name>deadacute</name>
-- <_description>German (dead acute)</_description>
-+ <description>German (dead acute)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadgraveacute</name>
-- <_description>German (dead grave acute)</_description>
-+ <description>German (dead grave acute)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>German (eliminate dead keys)</_description>
-+ <description>German (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>T3</name>
-- <_description>German (T3)</_description>
-+ <description>German (T3)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ro</name>
-- <_description>Romanian (Germany)</_description>
-+ <description>Romanian (Germany)</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ro_nodeadkeys</name>
-- <_description>Romanian (Germany, eliminate dead keys)</_description>
-+ <description>Romanian (Germany, eliminate dead keys)</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>German (Dvorak)</_description>
-+ <description>German (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>German (Sun dead keys)</_description>
-+ <description>German (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>neo</name>
-- <_description>German (Neo 2)</_description>
-+ <description>German (Neo 2)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>German (Macintosh)</_description>
-+ <description>German (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>German (Macintosh, eliminate dead keys)</_description>
-+ <description>German (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dsb</name>
-- <_description>Lower Sorbian</_description>
-+ <description>Lower Sorbian</description>
- <languageList>
- <iso639Id>dsb</iso639Id>
- </languageList>
-@@ -3265,7 +3265,7 @@
- <variant>
- <configItem>
- <name>dsb_qwertz</name>
-- <_description>Lower Sorbian (qwertz)</_description>
-+ <description>Lower Sorbian (qwertz)</description>
- <languageList>
- <iso639Id>dsb</iso639Id>
- </languageList>
-@@ -3274,15 +3274,15 @@
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>German (qwerty)</_description>
-+ <description>German (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Germany, phonetic)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Germany, phonetic)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -3291,7 +3291,7 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>German (legacy)</_description>
-+ <description>German (legacy)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3299,9 +3299,9 @@
- <layout>
- <configItem>
- <name>gr</name>
-- <!-- Keyboard indicator for Greek layouts -->
-- <_shortDescription>gr</_shortDescription>
-- <_description>Greek</_description>
-+
-+ <shortDescription>gr</shortDescription>
-+ <description>Greek</description>
- <languageList>
- <iso639Id>gre</iso639Id>
- </languageList>
-@@ -3310,25 +3310,25 @@
- <variant>
- <configItem>
- <name>simple</name>
-- <_description>Greek (simple)</_description>
-+ <description>Greek (simple)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>extended</name>
-- <_description>Greek (extended)</_description>
-+ <description>Greek (extended)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Greek (eliminate dead keys)</_description>
-+ <description>Greek (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>polytonic</name>
-- <_description>Greek (polytonic)</_description>
-+ <description>Greek (polytonic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3336,9 +3336,9 @@
- <layout>
- <configItem>
- <name>hu</name>
-- <!-- Keyboard indicator for Hungarian layouts -->
-- <_shortDescription>hu</_shortDescription>
-- <_description>Hungarian</_description>
-+
-+ <shortDescription>hu</shortDescription>
-+ <description>Hungarian</description>
- <languageList>
- <iso639Id>hun</iso639Id>
- </languageList>
-@@ -3347,115 +3347,115 @@
- <variant>
- <configItem>
- <name>standard</name>
-- <_description>Hungarian (standard)</_description>
-+ <description>Hungarian (standard)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Hungarian (eliminate dead keys)</_description>
-+ <description>Hungarian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Hungarian (qwerty)</_description>
-+ <description>Hungarian (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_comma_dead</name>
-- <_description>Hungarian (101/qwertz/comma/dead keys)</_description>
-+ <description>Hungarian (101/qwertz/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_comma_nodead</name>
-- <_description>Hungarian (101/qwertz/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwertz/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_dot_dead</name>
-- <_description>Hungarian (101/qwertz/dot/dead keys)</_description>
-+ <description>Hungarian (101/qwertz/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_dot_nodead</name>
-- <_description>Hungarian (101/qwertz/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwertz/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_comma_dead</name>
-- <_description>Hungarian (101/qwerty/comma/dead keys)</_description>
-+ <description>Hungarian (101/qwerty/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_comma_nodead</name>
-- <_description>Hungarian (101/qwerty/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwerty/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_dot_dead</name>
-- <_description>Hungarian (101/qwerty/dot/dead keys)</_description>
-+ <description>Hungarian (101/qwerty/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_dot_nodead</name>
-- <_description>Hungarian (101/qwerty/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (101/qwerty/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_comma_dead</name>
-- <_description>Hungarian (102/qwertz/comma/dead keys)</_description>
-+ <description>Hungarian (102/qwertz/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_comma_nodead</name>
-- <_description>Hungarian (102/qwertz/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwertz/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_dot_dead</name>
-- <_description>Hungarian (102/qwertz/dot/dead keys)</_description>
-+ <description>Hungarian (102/qwertz/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_dot_nodead</name>
-- <_description>Hungarian (102/qwertz/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwertz/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_comma_dead</name>
-- <_description>Hungarian (102/qwerty/comma/dead keys)</_description>
-+ <description>Hungarian (102/qwerty/comma/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_comma_nodead</name>
-- <_description>Hungarian (102/qwerty/comma/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwerty/comma/eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_dot_dead</name>
-- <_description>Hungarian (102/qwerty/dot/dead keys)</_description>
-+ <description>Hungarian (102/qwerty/dot/dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_dot_nodead</name>
-- <_description>Hungarian (102/qwerty/dot/eliminate dead keys)</_description>
-+ <description>Hungarian (102/qwerty/dot/eliminate dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3463,9 +3463,9 @@
- <layout>
- <configItem>
- <name>is</name>
-- <!-- Keyboard indicator for Icelandic layouts -->
-- <_shortDescription>is</_shortDescription>
-- <_description>Icelandic</_description>
-+
-+ <shortDescription>is</shortDescription>
-+ <description>Icelandic</description>
- <languageList>
- <iso639Id>ice</iso639Id>
- </languageList>
-@@ -3474,25 +3474,25 @@
- <variant>
- <configItem>
- <name>Sundeadkeys</name>
-- <_description>Icelandic (Sun dead keys)</_description>
-+ <description>Icelandic (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Icelandic (eliminate dead keys)</_description>
-+ <description>Icelandic (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Icelandic (Macintosh)</_description>
-+ <description>Icelandic (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Icelandic (Dvorak)</_description>
-+ <description>Icelandic (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3500,9 +3500,9 @@
- <layout>
- <configItem>
- <name>il</name>
-- <!-- Keyboard indicator for Hebrew layouts -->
-- <_shortDescription>he</_shortDescription>
-- <_description>Hebrew</_description>
-+
-+ <shortDescription>he</shortDescription>
-+ <description>Hebrew</description>
- <languageList>
- <iso639Id>heb</iso639Id>
- </languageList>
-@@ -3511,19 +3511,19 @@
- <variant>
- <configItem>
- <name>lyx</name>
-- <_description>Hebrew (lyx)</_description>
-+ <description>Hebrew (lyx)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Hebrew (phonetic)</_description>
-+ <description>Hebrew (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>biblical</name>
-- <_description>Hebrew (Biblical, Tiro)</_description>
-+ <description>Hebrew (Biblical, Tiro)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3531,9 +3531,9 @@
- <layout>
- <configItem>
- <name>it</name>
-- <!-- Keyboard indicator for Italian layouts -->
-- <_shortDescription>it</_shortDescription>
-- <_description>Italian</_description>
-+
-+ <shortDescription>it</shortDescription>
-+ <description>Italian</description>
- <languageList>
- <iso639Id>ita</iso639Id>
- </languageList>
-@@ -3542,25 +3542,25 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Italian (eliminate dead keys)</_description>
-+ <description>Italian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Italian (Macintosh)</_description>
-+ <description>Italian (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Italian (US keyboard with Italian letters)</_description>
-+ <description>Italian (US keyboard with Italian letters)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>geo</name>
-- <_description>Georgian (Italy)</_description>
-+ <description>Georgian (Italy)</description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
-@@ -3569,7 +3569,7 @@
- <variant>
- <configItem>
- <name>ibm</name>
-- <_description>Italian (IBM 142)</_description>
-+ <description>Italian (IBM 142)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3577,9 +3577,9 @@
- <layout>
- <configItem>
- <name>jp</name>
-- <!-- Keyboard indicator for Japanese layouts -->
-- <_shortDescription>ja</_shortDescription>
-- <_description>Japanese</_description>
-+
-+ <shortDescription>ja</shortDescription>
-+ <description>Japanese</description>
- <languageList>
- <iso639Id>jpn</iso639Id>
- </languageList>
-@@ -3588,31 +3588,31 @@
- <variant>
- <configItem>
- <name>kana</name>
-- <_description>Japanese (Kana)</_description>
-+ <description>Japanese (Kana)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kana86</name>
-- <_description>Japanese (Kana 86)</_description>
-+ <description>Japanese (Kana 86)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>OADG109A</name>
-- <_description>Japanese (OADG 109A)</_description>
-+ <description>Japanese (OADG 109A)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Japanese (Macintosh)</_description>
-+ <description>Japanese (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Japanese (Dvorak)</_description>
-+ <description>Japanese (Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3620,9 +3620,9 @@
- <layout>
- <configItem>
- <name>kg</name>
-- <!-- Keyboard indicator for Kyrgyz layouts -->
-- <_shortDescription>ki</_shortDescription>
-- <_description>Kyrgyz</_description>
-+
-+ <shortDescription>ki</shortDescription>
-+ <description>Kyrgyz</description>
- <languageList>
- <iso639Id>kir</iso639Id>
- </languageList>
-@@ -3631,7 +3631,7 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Kyrgyz (phonetic)</_description>
-+ <description>Kyrgyz (phonetic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3639,9 +3639,9 @@
- <layout>
- <configItem>
- <name>kh</name>
-- <!-- Keyboard indicator for Khmer layouts -->
-- <_shortDescription>km</_shortDescription>
-- <_description>Khmer (Cambodia)</_description>
-+
-+ <shortDescription>km</shortDescription>
-+ <description>Khmer (Cambodia)</description>
- <languageList>
- <iso639Id>khm</iso639Id>
- </languageList>
-@@ -3651,9 +3651,9 @@
- <layout>
- <configItem>
- <name>kz</name>
-- <!-- Keyboard indicator for Kazakh layouts -->
-- <_shortDescription>kk</_shortDescription>
-- <_description>Kazakh</_description>
-+
-+ <shortDescription>kk</shortDescription>
-+ <description>Kazakh</description>
- <languageList>
- <iso639Id>kaz</iso639Id>
- </languageList>
-@@ -3662,9 +3662,9 @@
- <variant>
- <configItem>
- <name>ruskaz</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Kazakhstan, with Kazakh)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Kazakhstan, with Kazakh)</description>
- <languageList><iso639Id>kaz</iso639Id>
- <iso639Id>rus</iso639Id></languageList>
- </configItem>
-@@ -3672,7 +3672,7 @@
- <variant>
- <configItem>
- <name>kazrus</name>
-- <_description>Kazakh (with Russian)</_description>
-+ <description>Kazakh (with Russian)</description>
- <languageList><iso639Id>kaz</iso639Id>
- <iso639Id>rus</iso639Id></languageList>
- </configItem>
-@@ -3682,9 +3682,9 @@
- <layout>
- <configItem>
- <name>la</name>
-- <!-- Keyboard indicator for Lao layouts -->
-- <_shortDescription>lo</_shortDescription>
-- <_description>Lao</_description>
-+
-+ <shortDescription>lo</shortDescription>
-+ <description>Lao</description>
- <languageList>
- <iso639Id>lao</iso639Id>
- </languageList>
-@@ -3693,7 +3693,7 @@
- <variant>
- <configItem>
- <name>stea</name>
-- <_description>Lao (STEA proposed standard layout)</_description>
-+ <description>Lao (STEA proposed standard layout)</description>
- <languageList><iso639Id>lao</iso639Id>
- </languageList>
- </configItem>
-@@ -3703,9 +3703,9 @@
- <layout>
- <configItem>
- <name>latam</name>
-- <!-- Keyboard indicator for Spanish layouts -->
-- <_shortDescription>es</_shortDescription>
-- <_description>Spanish (Latin American)</_description>
-+
-+ <shortDescription>es</shortDescription>
-+ <description>Spanish (Latin American)</description>
- <countryList>
- <iso3166Id>AR</iso3166Id>
- <iso3166Id>BO</iso3166Id>
-@@ -3737,19 +3737,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Spanish (Latin American, eliminate dead keys)</_description>
-+ <description>Spanish (Latin American, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadtilde</name>
-- <_description>Spanish (Latin American, include dead tilde)</_description>
-+ <description>Spanish (Latin American, include dead tilde)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Spanish (Latin American, Sun dead keys)</_description>
-+ <description>Spanish (Latin American, Sun dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3757,9 +3757,9 @@
- <layout>
- <configItem>
- <name>lt</name>
-- <!-- Keyboard indicator for Lithuanian layouts -->
-- <_shortDescription>lt</_shortDescription>
-- <_description>Lithuanian</_description>
-+
-+ <shortDescription>lt</shortDescription>
-+ <description>Lithuanian</description>
- <languageList>
- <iso639Id>lit</iso639Id>
- </languageList>
-@@ -3768,31 +3768,31 @@
- <variant>
- <configItem>
- <name>std</name>
-- <_description>Lithuanian (standard)</_description>
-+ <description>Lithuanian (standard)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Lithuanian (US keyboard with Lithuanian letters)</_description>
-+ <description>Lithuanian (US keyboard with Lithuanian letters)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ibm</name>
-- <_description>Lithuanian (IBM LST 1205-92)</_description>
-+ <description>Lithuanian (IBM LST 1205-92)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>lekp</name>
-- <_description>Lithuanian (LEKP)</_description>
-+ <description>Lithuanian (LEKP)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>lekpa</name>
-- <_description>Lithuanian (LEKPa)</_description>
-+ <description>Lithuanian (LEKPa)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3800,9 +3800,9 @@
- <layout>
- <configItem>
- <name>lv</name>
-- <!-- Keyboard indicator for Latvian layouts -->
-- <_shortDescription>lv</_shortDescription>
-- <_description>Latvian</_description>
-+
-+ <shortDescription>lv</shortDescription>
-+ <description>Latvian</description>
- <languageList>
- <iso639Id>lav</iso639Id>
- </languageList>
-@@ -3811,37 +3811,37 @@
- <variant>
- <configItem>
- <name>apostrophe</name>
-- <_description>Latvian (apostrophe variant)</_description>
-+ <description>Latvian (apostrophe variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tilde</name>
-- <_description>Latvian (tilde variant)</_description>
-+ <description>Latvian (tilde variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fkey</name>
-- <_description>Latvian (F variant)</_description>
-+ <description>Latvian (F variant)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>modern</name>
-- <_description>Latvian (modern)</_description>
-+ <description>Latvian (modern)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ergonomic</name>
-- <_description>Latvian (ergonomic, ŪGJRMV)</_description>
-+ <description>Latvian (ergonomic, ŪGJRMV)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>adapted</name>
-- <_description>Latvian (adapted)</_description>
-+ <description>Latvian (adapted)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3849,9 +3849,9 @@
- <layout>
- <configItem>
- <name>mao</name>
-- <!-- Keyboard indicator for Maori layouts -->
-- <_shortDescription>mi</_shortDescription>
-- <_description>Maori</_description>
-+
-+ <shortDescription>mi</shortDescription>
-+ <description>Maori</description>
- <languageList>
- <iso639Id>mao</iso639Id>
- </languageList>
-@@ -3861,9 +3861,9 @@
- <layout>
- <configItem>
- <name>me</name>
-- <!-- Keyboard indicator for Montenegrin layouts -->
-- <_shortDescription>sr</_shortDescription>
-- <_description>Montenegrin</_description>
-+
-+ <shortDescription>sr</shortDescription>
-+ <description>Montenegrin</description>
- <languageList>
- <iso639Id>srp</iso639Id>
- </languageList>
-@@ -3872,43 +3872,43 @@
- <variant>
- <configItem>
- <name>cyrillic</name>
-- <_description>Montenegrin (Cyrillic)</_description>
-+ <description>Montenegrin (Cyrillic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cyrillicyz</name>
-- <_description>Montenegrin (Cyrillic, Z and ZHE swapped)</_description>
-+ <description>Montenegrin (Cyrillic, Z and ZHE swapped)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicode</name>
-- <_description>Montenegrin (Latin Unicode)</_description>
-+ <description>Montenegrin (Latin Unicode)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinyz</name>
-- <_description>Montenegrin (Latin qwerty)</_description>
-+ <description>Montenegrin (Latin qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicodeyz</name>
-- <_description>Montenegrin (Latin Unicode qwerty)</_description>
-+ <description>Montenegrin (Latin Unicode qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cyrillicalternatequotes</name>
-- <_description>Montenegrin (Cyrillic with guillemets)</_description>
-+ <description>Montenegrin (Cyrillic with guillemets)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinalternatequotes</name>
-- <_description>Montenegrin (Latin with guillemets)</_description>
-+ <description>Montenegrin (Latin with guillemets)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3916,9 +3916,9 @@
- <layout>
- <configItem>
- <name>mk</name>
-- <!-- Keyboard indicator for Macedonian layouts -->
-- <_shortDescription>mk</_shortDescription>
-- <_description>Macedonian</_description>
-+
-+ <shortDescription>mk</shortDescription>
-+ <description>Macedonian</description>
- <languageList>
- <iso639Id>mkd</iso639Id>
- </languageList>
-@@ -3927,7 +3927,7 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Macedonian (eliminate dead keys)</_description>
-+ <description>Macedonian (eliminate dead keys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3935,9 +3935,9 @@
- <layout>
- <configItem>
- <name>mt</name>
-- <!-- Keyboard indicator for Maltese layouts -->
-- <_shortDescription>mt</_shortDescription>
-- <_description>Maltese</_description>
-+
-+ <shortDescription>mt</shortDescription>
-+ <description>Maltese</description>
- <languageList>
- <iso639Id>mlt</iso639Id>
- </languageList>
-@@ -3946,7 +3946,7 @@
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Maltese (with US layout)</_description>
-+ <description>Maltese (with US layout)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -3954,9 +3954,9 @@
- <layout>
- <configItem>
- <name>mn</name>
-- <!-- Keyboard indicator for Mongolian layouts -->
-- <_shortDescription>mn</_shortDescription>
-- <_description>Mongolian</_description>
-+
-+ <shortDescription>mn</shortDescription>
-+ <description>Mongolian</description>
- <languageList>
- <iso639Id>mon</iso639Id>
- </languageList>
-@@ -3966,9 +3966,9 @@
- <layout>
- <configItem>
- <name>no</name>
-- <!-- Keyboard indicator for Norwegian layouts -->
-- <_shortDescription>no</_shortDescription>
-- <_description>Norwegian</_description>
-+
-+ <shortDescription>no</shortDescription>
-+ <description>Norwegian</description>
- <languageList>
- <iso639Id>nor</iso639Id>
- <iso639Id>nob</iso639Id>
-@@ -3979,19 +3979,19 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Norwegian (eliminate dead keys)</_description>
-+ <description>Norwegian (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Norwegian (Dvorak)</_description>
-+ <description>Norwegian (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
-- <_description>Northern Saami (Norway)</_description>
-+ <description>Northern Saami (Norway)</description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
-@@ -4000,7 +4000,7 @@
- <variant>
- <configItem>
- <name>smi_nodeadkeys</name>
-- <_description>Northern Saami (Norway, eliminate dead keys)</_description>
-+ <description>Northern Saami (Norway, eliminate dead keys)</description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
-@@ -4009,19 +4009,19 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Norwegian (Macintosh)</_description>
-+ <description>Norwegian (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>Norwegian (Macintosh, eliminate dead keys)</_description>
-+ <description>Norwegian (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Norwegian (Colemak)</_description>
-+ <description>Norwegian (Colemak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4029,9 +4029,9 @@
- <layout>
- <configItem>
- <name>pl</name>
-- <!-- Keyboard indicator for Polish layouts -->
-- <_shortDescription>pl</_shortDescription>
-- <_description>Polish</_description>
-+
-+ <shortDescription>pl</shortDescription>
-+ <description>Polish</description>
- <languageList>
- <iso639Id>pol</iso639Id>
- </languageList>
-@@ -4040,37 +4040,37 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Polish (legacy)</_description>
-+ <description>Polish (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwertz</name>
-- <_description>Polish (qwertz)</_description>
-+ <description>Polish (qwertz)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Polish (Dvorak)</_description>
-+ <description>Polish (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak_quotes</name>
-- <_description>Polish (Dvorak, Polish quotes on quotemark key)</_description>
-+ <description>Polish (Dvorak, Polish quotes on quotemark key)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak_altquotes</name>
-- <_description>Polish (Dvorak, Polish quotes on key 1)</_description>
-+ <description>Polish (Dvorak, Polish quotes on key 1)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>csb</name>
-- <_description>Kashubian</_description>
-+ <description>Kashubian</description>
- <languageList>
- <iso639Id>csb</iso639Id>
- </languageList>
-@@ -4086,9 +4086,9 @@
- <variant>
- <configItem>
- <name>ru_phonetic_dvorak</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Poland, phonetic Dvorak)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Poland, phonetic Dvorak)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4097,7 +4097,7 @@
- <variant>
- <configItem>
- <name>dvp</name>
-- <_description>Polish (programmer Dvorak)</_description>
-+ <description>Polish (programmer Dvorak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4105,9 +4105,9 @@
- <layout>
- <configItem>
- <name>pt</name>
-- <!-- Keyboard indicator for Portuguese layouts -->
-- <_shortDescription>pt</_shortDescription>
-- <_description>Portuguese</_description>
-+
-+ <shortDescription>pt</shortDescription>
-+ <description>Portuguese</description>
- <languageList>
- <iso639Id>por</iso639Id>
- </languageList>
-@@ -4116,49 +4116,49 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Portuguese (eliminate dead keys)</_description>
-+ <description>Portuguese (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Portuguese (Sun dead keys)</_description>
-+ <description>Portuguese (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Portuguese (Macintosh)</_description>
-+ <description>Portuguese (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
-- <_description>Portuguese (Macintosh, eliminate dead keys)</_description>
-+ <description>Portuguese (Macintosh, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_sundeadkeys</name>
-- <_description>Portuguese (Macintosh, Sun dead keys)</_description>
-+ <description>Portuguese (Macintosh, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo</name>
-- <_description>Portuguese (Nativo)</_description>
-+ <description>Portuguese (Nativo)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-us</name>
-- <_description>Portuguese (Nativo for US keyboards)</_description>
-+ <description>Portuguese (Nativo for US keyboards)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-epo</name>
-- <_description>Esperanto (Portugal, Nativo)</_description>
-+ <description>Esperanto (Portugal, Nativo)</description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
-@@ -4169,9 +4169,9 @@
- <layout>
- <configItem>
- <name>ro</name>
-- <!-- Keyboard indicator for Romanian layouts -->
-- <_shortDescription>ro</_shortDescription>
-- <_description>Romanian</_description>
-+
-+ <shortDescription>ro</shortDescription>
-+ <description>Romanian</description>
- <languageList>
- <iso639Id>rum</iso639Id>
- </languageList>
-@@ -4180,25 +4180,25 @@
- <variant>
- <configItem>
- <name>cedilla</name>
-- <_description>Romanian (cedilla)</_description>
-+ <description>Romanian (cedilla)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std</name>
-- <_description>Romanian (standard)</_description>
-+ <description>Romanian (standard)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std_cedilla</name>
-- <_description>Romanian (standard cedilla)</_description>
-+ <description>Romanian (standard cedilla)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>winkeys</name>
-- <_description>Romanian (WinKeys)</_description>
-+ <description>Romanian (WinKeys)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4206,9 +4206,9 @@
- <layout>
- <configItem>
- <name>ru</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4217,37 +4217,37 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Russian (phonetic)</_description>
-+ <description>Russian (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic_winkeys</name>
-- <_description>Russian (phonetic WinKeys)</_description>
-+ <description>Russian (phonetic WinKeys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter</name>
-- <_description>Russian (typewriter)</_description>
-+ <description>Russian (typewriter)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Russian (legacy)</_description>
-+ <description>Russian (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter-legacy</name>
-- <_description>Russian (typewriter, legacy)</_description>
-+ <description>Russian (typewriter, legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tt</name>
-- <_description>Tatar</_description>
-+ <description>Tatar</description>
- <languageList>
- <iso639Id>tat</iso639Id>
- </languageList>
-@@ -4256,7 +4256,7 @@
- <variant>
- <configItem>
- <name>os_legacy</name>
-- <_description>Ossetian (legacy)</_description>
-+ <description>Ossetian (legacy)</description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
-@@ -4265,7 +4265,7 @@
- <variant>
- <configItem>
- <name>os_winkeys</name>
-- <_description>Ossetian (WinKeys)</_description>
-+ <description>Ossetian (WinKeys)</description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
-@@ -4274,7 +4274,7 @@
- <variant>
- <configItem>
- <name>cv</name>
-- <_description>Chuvash</_description>
-+ <description>Chuvash</description>
- <languageList>
- <iso639Id>chv</iso639Id>
- </languageList>
-@@ -4283,7 +4283,7 @@
- <variant>
- <configItem>
- <name>cv_latin</name>
-- <_description>Chuvash (Latin)</_description>
-+ <description>Chuvash (Latin)</description>
- <languageList>
- <iso639Id>chv</iso639Id>
- </languageList>
-@@ -4292,7 +4292,7 @@
- <variant>
- <configItem>
- <name>udm</name>
-- <_description>Udmurt</_description>
-+ <description>Udmurt</description>
- <languageList>
- <iso639Id>udm</iso639Id>
- </languageList>
-@@ -4301,7 +4301,7 @@
- <variant>
- <configItem>
- <name>kom</name>
-- <_description>Komi</_description>
-+ <description>Komi</description>
- <languageList>
- <iso639Id>kom</iso639Id>
- </languageList>
-@@ -4310,7 +4310,7 @@
- <variant>
- <configItem>
- <name>sah</name>
-- <_description>Yakut</_description>
-+ <description>Yakut</description>
- <languageList>
- <iso639Id>sah</iso639Id>
- </languageList>
-@@ -4319,7 +4319,7 @@
- <variant>
- <configItem>
- <name>xal</name>
-- <_description>Kalmyk</_description>
-+ <description>Kalmyk</description>
- <languageList>
- <iso639Id>xal</iso639Id>
- </languageList>
-@@ -4328,19 +4328,19 @@
- <variant>
- <configItem>
- <name>dos</name>
-- <_description>Russian (DOS)</_description>
-+ <description>Russian (DOS)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Russian (Macintosh)</_description>
-+ <description>Russian (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>srp</name>
-- <_description>Serbian (Russia)</_description>
-+ <description>Serbian (Russia)</description>
- <languageList><iso639Id>rus</iso639Id>
- <iso639Id>srp</iso639Id></languageList>
- </configItem>
-@@ -4348,7 +4348,7 @@
- <variant>
- <configItem>
- <name>bak</name>
-- <_description>Bashkirian</_description>
-+ <description>Bashkirian</description>
- <languageList>
- <iso639Id>bak</iso639Id>
- </languageList>
-@@ -4357,7 +4357,7 @@
- <variant>
- <configItem>
- <name>chm</name>
-- <_description>Mari</_description>
-+ <description>Mari</description>
- <languageList>
- <iso639Id>chm</iso639Id>
- </languageList>
-@@ -4368,9 +4368,9 @@
- <layout>
- <configItem>
- <name>rs</name>
-- <!-- Keyboard indicator for Serbian layouts -->
-- <_shortDescription>sr</_shortDescription>
-- <_description>Serbian</_description>
-+
-+ <shortDescription>sr</shortDescription>
-+ <description>Serbian</description>
- <languageList>
- <iso639Id>srp</iso639Id>
- </languageList>
-@@ -4379,49 +4379,49 @@
- <variant>
- <configItem>
- <name>yz</name>
-- <_description>Serbian (Cyrillic, Z and ZHE swapped)</_description>
-+ <description>Serbian (Cyrillic, Z and ZHE swapped)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin</name>
-- <_description>Serbian (Latin)</_description>
-+ <description>Serbian (Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicode</name>
-- <_description>Serbian (Latin Unicode)</_description>
-+ <description>Serbian (Latin Unicode)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinyz</name>
-- <_description>Serbian (Latin qwerty)</_description>
-+ <description>Serbian (Latin qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicodeyz</name>
-- <_description>Serbian (Latin Unicode qwerty)</_description>
-+ <description>Serbian (Latin Unicode qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Serbian (Cyrillic with guillemets)</_description>
-+ <description>Serbian (Cyrillic with guillemets)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinalternatequotes</name>
-- <_description>Serbian (Latin with guillemets)</_description>
-+ <description>Serbian (Latin with guillemets)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rue</name>
-- <_description>Pannonian Rusyn</_description>
-+ <description>Pannonian Rusyn</description>
- <languageList>
- <iso639Id>rue</iso639Id>
- </languageList>
-@@ -4432,9 +4432,9 @@
- <layout>
- <configItem>
- <name>si</name>
-- <!-- Keyboard indicator for Slovenian layouts -->
-- <_shortDescription>sl</_shortDescription>
-- <_description>Slovenian</_description>
-+
-+ <shortDescription>sl</shortDescription>
-+ <description>Slovenian</description>
- <languageList>
- <iso639Id>slv</iso639Id>
- </languageList>
-@@ -4443,13 +4443,13 @@
- <variant>
- <configItem>
- <name>alternatequotes</name>
-- <_description>Slovenian (use guillemets for quotes)</_description>
-+ <description>Slovenian (use guillemets for quotes)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
-- <_description>Slovenian (US keyboard with Slovenian letters)</_description>
-+ <description>Slovenian (US keyboard with Slovenian letters)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4457,9 +4457,9 @@
- <layout>
- <configItem>
- <name>sk</name>
-- <!-- Keyboard indicator for Slovak layouts -->
-- <_shortDescription>sk</_shortDescription>
-- <_description>Slovak</_description>
-+
-+ <shortDescription>sk</shortDescription>
-+ <description>Slovak</description>
- <languageList>
- <iso639Id>slo</iso639Id>
- </languageList>
-@@ -4468,19 +4468,19 @@
- <variant>
- <configItem>
- <name>bksl</name>
-- <_description>Slovak (extended Backslash)</_description>
-+ <description>Slovak (extended Backslash)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
-- <_description>Slovak (qwerty)</_description>
-+ <description>Slovak (qwerty)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_bksl</name>
-- <_description>Slovak (qwerty, extended Backslash)</_description>
-+ <description>Slovak (qwerty, extended Backslash)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4488,9 +4488,9 @@
- <layout>
- <configItem>
- <name>es</name>
-- <!-- Keyboard indicator for Spanish layouts -->
-- <_shortDescription>es</_shortDescription>
-- <_description>Spanish</_description>
-+
-+ <shortDescription>es</shortDescription>
-+ <description>Spanish</description>
- <languageList>
- <iso639Id>spa</iso639Id>
- </languageList>
-@@ -4499,31 +4499,31 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Spanish (eliminate dead keys)</_description>
-+ <description>Spanish (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadtilde</name>
-- <_description>Spanish (include dead tilde)</_description>
-+ <description>Spanish (include dead tilde)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Spanish (Sun dead keys)</_description>
-+ <description>Spanish (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Spanish (Dvorak)</_description>
-+ <description>Spanish (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ast</name>
-- <_description>Asturian (Spain, with bottom-dot H and bottom-dot L)</_description>
-+ <description>Asturian (Spain, with bottom-dot H and bottom-dot L)</description>
- <languageList>
- <iso639Id>ast</iso639Id>
- </languageList>
-@@ -4532,7 +4532,7 @@
- <variant>
- <configItem>
- <name>cat</name>
-- <_description>Catalan (Spain, with middle-dot L)</_description>
-+ <description>Catalan (Spain, with middle-dot L)</description>
- <languageList>
- <iso639Id>cat</iso639Id>
- </languageList>
-@@ -4541,7 +4541,7 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Spanish (Macintosh)</_description>
-+ <description>Spanish (Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4549,9 +4549,9 @@
- <layout>
- <configItem>
- <name>se</name>
-- <!-- Keyboard indicator for Swedish layouts -->
-- <_shortDescription>sv</_shortDescription>
-- <_description>Swedish</_description>
-+
-+ <shortDescription>sv</shortDescription>
-+ <description>Swedish</description>
- <languageList>
- <iso639Id>swe</iso639Id>
- </languageList>
-@@ -4560,21 +4560,21 @@
- <variant>
- <configItem>
- <name>nodeadkeys</name>
-- <_description>Swedish (eliminate dead keys)</_description>
-+ <description>Swedish (eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Swedish (Dvorak)</_description>
-+ <description>Swedish (Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Sweden, phonetic)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Sweden, phonetic)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4583,9 +4583,9 @@
- <variant>
- <configItem>
- <name>rus_nodeadkeys</name>
-- <!-- Keyboard indicator for Russian layouts -->
-- <_shortDescription>ru</_shortDescription>
-- <_description>Russian (Sweden, phonetic, eliminate dead keys)</_description>
-+
-+ <shortDescription>ru</shortDescription>
-+ <description>Russian (Sweden, phonetic, eliminate dead keys)</description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
-@@ -4594,7 +4594,7 @@
- <variant>
- <configItem>
- <name>smi</name>
-- <_description>Northern Saami (Sweden)</_description>
-+ <description>Northern Saami (Sweden)</description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
-@@ -4603,19 +4603,19 @@
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>Swedish (Macintosh)</_description>
-+ <description>Swedish (Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>svdvorak</name>
-- <_description>Swedish (Svdvorak)</_description>
-+ <description>Swedish (Svdvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>swl</name>
-- <_description>Swedish Sign Language</_description>
-+ <description>Swedish Sign Language</description>
- <languageList><iso639Id>swl</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -4624,9 +4624,9 @@
- <layout>
- <configItem>
- <name>ch</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland)</description>
- <languageList><iso639Id>ger</iso639Id>
- <iso639Id>gsw</iso639Id></languageList>
- </configItem>
-@@ -4634,31 +4634,31 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>German (Switzerland, legacy)</_description>
-+ <description>German (Switzerland, legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_nodeadkeys</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland, eliminate dead keys)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland, eliminate dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_sundeadkeys</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland, Sun dead keys)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland, Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4667,9 +4667,9 @@
- <variant>
- <configItem>
- <name>fr_nodeadkeys</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland, eliminate dead keys)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland, eliminate dead keys)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4678,9 +4678,9 @@
- <variant>
- <configItem>
- <name>fr_sundeadkeys</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland, Sun dead keys)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland, Sun dead keys)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4689,9 +4689,9 @@
- <variant>
- <configItem>
- <name>fr_mac</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Switzerland, Macintosh)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Switzerland, Macintosh)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -4700,9 +4700,9 @@
- <variant>
- <configItem>
- <name>de_mac</name>
-- <!-- Keyboard indicator for German layouts -->
-- <_shortDescription>de</_shortDescription>
-- <_description>German (Switzerland, Macintosh)</_description>
-+
-+ <shortDescription>de</shortDescription>
-+ <description>German (Switzerland, Macintosh)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4710,9 +4710,9 @@
- <layout>
- <configItem>
- <name>sy</name>
-- <!-- Keyboard indicator for Arabic layouts -->
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic (Syria)</_description>
-+
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic (Syria)</description>
- <languageList>
- <iso639Id>syr</iso639Id>
- </languageList>
-@@ -4721,25 +4721,25 @@
- <variant>
- <configItem>
- <name>syc</name>
-- <!-- Keyboard indicator for Syriac layouts -->
-- <_shortDescription>syc</_shortDescription>
-- <_description>Syriac</_description>
-+
-+ <shortDescription>syc</shortDescription>
-+ <description>Syriac</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>syc_phonetic</name>
-- <!-- Keyboard indicator for Syriac layouts -->
-- <_shortDescription>syc</_shortDescription>
-- <_description>Syriac (phonetic)</_description>
-+
-+ <shortDescription>syc</shortDescription>
-+ <description>Syriac (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Syria, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Syria, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4748,9 +4748,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Syria, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Syria, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4759,9 +4759,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Syria, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Syria, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4772,9 +4772,9 @@
- <layout>
- <configItem>
- <name>tj</name>
-- <!-- Keyboard indicator for Tajik layouts -->
-- <_shortDescription>tg</_shortDescription>
-- <_description>Tajik</_description>
-+
-+ <shortDescription>tg</shortDescription>
-+ <description>Tajik</description>
- <languageList>
- <iso639Id>tgk</iso639Id>
- </languageList>
-@@ -4783,7 +4783,7 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Tajik (legacy)</_description>
-+ <description>Tajik (legacy)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4791,9 +4791,9 @@
- <layout>
- <configItem>
- <name>lk</name>
-- <!-- Keyboard indicator for Sinhala layouts -->
-- <_shortDescription>si</_shortDescription>
-- <_description>Sinhala (phonetic)</_description>
-+
-+ <shortDescription>si</shortDescription>
-+ <description>Sinhala (phonetic)</description>
- <languageList>
- <iso639Id>sin</iso639Id>
- </languageList>
-@@ -4802,9 +4802,9 @@
- <variant>
- <configItem>
- <name>tam_unicode</name>
-- <!-- Keyboard indicator for Tamil layouts -->
-- <_shortDescription>ta</_shortDescription>
-- <_description>Tamil (Sri Lanka, Unicode)</_description>
-+
-+ <shortDescription>ta</shortDescription>
-+ <description>Tamil (Sri Lanka, Unicode)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -4813,7 +4813,7 @@
- <variant>
- <configItem>
- <name>tam_TAB</name>
-- <_description>Tamil (Sri Lanka, TAB Typewriter)</_description>
-+ <description>Tamil (Sri Lanka, TAB Typewriter)</description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
-@@ -4824,9 +4824,9 @@
- <layout>
- <configItem>
- <name>th</name>
-- <!-- Keyboard indicator for Thai layouts -->
-- <_shortDescription>th</_shortDescription>
-- <_description>Thai</_description>
-+
-+ <shortDescription>th</shortDescription>
-+ <description>Thai</description>
- <languageList>
- <iso639Id>tha</iso639Id>
- </languageList>
-@@ -4835,13 +4835,13 @@
- <variant>
- <configItem>
- <name>tis</name>
-- <_description>Thai (TIS-820.2538)</_description>
-+ <description>Thai (TIS-820.2538)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>pat</name>
-- <_description>Thai (Pattachote)</_description>
-+ <description>Thai (Pattachote)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -4849,9 +4849,9 @@
- <layout>
- <configItem>
- <name>tr</name>
-- <!-- Keyboard indicator for Turkish layouts -->
-- <_shortDescription>tr</_shortDescription>
-- <_description>Turkish</_description>
-+
-+ <shortDescription>tr</shortDescription>
-+ <description>Turkish</description>
- <languageList>
- <iso639Id>tur</iso639Id>
- </languageList>
-@@ -4860,27 +4860,27 @@
- <variant>
- <configItem>
- <name>f</name>
-- <_description>Turkish (F)</_description>
-+ <description>Turkish (F)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt</name>
-- <_description>Turkish (Alt-Q)</_description>
-+ <description>Turkish (Alt-Q)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
-- <_description>Turkish (Sun dead keys)</_description>
-+ <description>Turkish (Sun dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Turkey, Latin Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Turkey, Latin Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4889,9 +4889,9 @@
- <variant>
- <configItem>
- <name>ku_f</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Turkey, F)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Turkey, F)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4900,9 +4900,9 @@
- <variant>
- <configItem>
- <name>ku_alt</name>
-- <!-- Keyboard indicator for Kurdish layouts -->
-- <_shortDescription>ku</_shortDescription>
-- <_description>Kurdish (Turkey, Latin Alt-Q)</_description>
-+
-+ <shortDescription>ku</shortDescription>
-+ <description>Kurdish (Turkey, Latin Alt-Q)</description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
-@@ -4911,15 +4911,15 @@
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>Turkish (international with dead keys)</_description>
-+ <description>Turkish (international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh</name>
-- <!-- Keyboard indicator for Crimean Tatar layouts -->
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Turkish Q)</_description>
-+
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Turkish Q)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -4928,9 +4928,9 @@
- <variant>
- <configItem>
- <name>crh_f</name>
-- <!-- Keyboard indicator for Crimean Tatar layouts -->
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Turkish F)</_description>
-+
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Turkish F)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -4939,9 +4939,9 @@
- <variant>
- <configItem>
- <name>crh_alt</name>
-- <!-- Keyboard indicator for Crimean Tatar layouts -->
-- <_shortDescription>crh</_shortDescription>
-- <_description>Crimean Tatar (Turkish Alt-Q)</_description>
-+
-+ <shortDescription>crh</shortDescription>
-+ <description>Crimean Tatar (Turkish Alt-Q)</description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
-@@ -4952,9 +4952,9 @@
- <layout>
- <configItem>
- <name>tw</name>
-- <!-- Keyboard indicator for Taiwanese layouts -->
-- <_shortDescription>zh</_shortDescription>
-- <_description>Taiwanese</_description>
-+
-+ <shortDescription>zh</shortDescription>
-+ <description>Taiwanese</description>
- <languageList>
- <iso639Id>fox</iso639Id>
- </languageList>
-@@ -4963,7 +4963,7 @@
- <variant>
- <configItem>
- <name>indigenous</name>
-- <_description>Taiwanese (indigenous)</_description>
-+ <description>Taiwanese (indigenous)</description>
- <languageList>
- <iso639Id>ami</iso639Id>
- <iso639Id>tay</iso639Id>
-@@ -4987,9 +4987,9 @@
- <variant>
- <configItem>
- <name>saisiyat</name>
-- <!-- Keyboard indicator for Saisiyat layouts -->
-- <_shortDescription>xsy</_shortDescription>
-- <_description>Saisiyat (Taiwan)</_description>
-+
-+ <shortDescription>xsy</shortDescription>
-+ <description>Saisiyat (Taiwan)</description>
- <languageList>
- <iso639Id>xsy</iso639Id>
- </languageList>
-@@ -5000,9 +5000,9 @@
- <layout>
- <configItem>
- <name>ua</name>
-- <!-- Keyboard indicator for Ukranian layouts -->
-- <_shortDescription>uk</_shortDescription>
-- <_description>Ukrainian</_description>
-+
-+ <shortDescription>uk</shortDescription>
-+ <description>Ukrainian</description>
- <languageList>
- <iso639Id>ukr</iso639Id>
- </languageList>
-@@ -5011,43 +5011,43 @@
- <variant>
- <configItem>
- <name>phonetic</name>
-- <_description>Ukrainian (phonetic)</_description>
-+ <description>Ukrainian (phonetic)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter</name>
-- <_description>Ukrainian (typewriter)</_description>
-+ <description>Ukrainian (typewriter)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>winkeys</name>
-- <_description>Ukrainian (WinKeys)</_description>
-+ <description>Ukrainian (WinKeys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Ukrainian (legacy)</_description>
-+ <description>Ukrainian (legacy)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rstu</name>
-- <_description>Ukrainian (standard RSTU)</_description>
-+ <description>Ukrainian (standard RSTU)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rstu_ru</name>
-- <_description>Russian (Ukraine, standard RSTU)</_description>
-+ <description>Russian (Ukraine, standard RSTU)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>homophonic</name>
-- <_description>Ukrainian (homophonic)</_description>
-+ <description>Ukrainian (homophonic)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5055,9 +5055,9 @@
- <layout>
- <configItem>
- <name>gb</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (UK)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (UK)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5066,43 +5066,43 @@
- <variant>
- <configItem>
- <name>extd</name>
-- <_description>English (UK, extended WinKeys)</_description>
-+ <description>English (UK, extended WinKeys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
-- <_description>English (UK, international with dead keys)</_description>
-+ <description>English (UK, international with dead keys)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>English (UK, Dvorak)</_description>
-+ <description>English (UK, Dvorak)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorakukp</name>
-- <_description>English (UK, Dvorak with UK punctuation)</_description>
-+ <description>English (UK, Dvorak with UK punctuation)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
-- <_description>English (UK, Macintosh)</_description>
-+ <description>English (UK, Macintosh)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_intl</name>
-- <_description>English (UK, Macintosh international)</_description>
-+ <description>English (UK, Macintosh international)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>English (UK, Colemak)</_description>
-+ <description>English (UK, Colemak)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5110,9 +5110,9 @@
- <layout>
- <configItem>
- <name>uz</name>
-- <!-- Keyboard indicator for Uzbek layouts -->
-- <_shortDescription>uz</_shortDescription>
-- <_description>Uzbek</_description>
-+
-+ <shortDescription>uz</shortDescription>
-+ <description>Uzbek</description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
-@@ -5121,7 +5121,7 @@
- <variant>
- <configItem>
- <name>latin</name>
-- <_description>Uzbek (Latin)</_description>
-+ <description>Uzbek (Latin)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5129,9 +5129,9 @@
- <layout>
- <configItem>
- <name>vn</name>
-- <!-- Keyboard indicator for Vietnamese layouts -->
-- <_shortDescription>vi</_shortDescription>
-- <_description>Vietnamese</_description>
-+
-+ <shortDescription>vi</shortDescription>
-+ <description>Vietnamese</description>
- <languageList>
- <iso639Id>vie</iso639Id>
- </languageList>
-@@ -5141,9 +5141,9 @@
- <layout>
- <configItem>
- <name>kr</name>
-- <!-- Keyboard indicator for Korean layouts -->
-- <_shortDescription>ko</_shortDescription>
-- <_description>Korean</_description>
-+
-+ <shortDescription>ko</shortDescription>
-+ <description>Korean</description>
- <languageList>
- <iso639Id>kor</iso639Id>
- </languageList>
-@@ -5152,7 +5152,7 @@
- <variant>
- <configItem>
- <name>kr104</name>
-- <_description>Korean (101/104 key compatible)</_description>
-+ <description>Korean (101/104 key compatible)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5160,9 +5160,9 @@
- <layout>
- <configItem>
- <name>nec_vndr/jp</name>
-- <!-- Keyboard indicator for Japanese layouts -->
-- <_shortDescription>ja</_shortDescription>
-- <_description>Japanese (PC-98xx Series)</_description>
-+
-+ <shortDescription>ja</shortDescription>
-+ <description>Japanese (PC-98xx Series)</description>
- <countryList>
- <iso3166Id>JP</iso3166Id>
- </countryList>
-@@ -5175,9 +5175,9 @@
- <layout>
- <configItem>
- <name>ie</name>
-- <!-- Keyboard indicator for Irish layouts -->
-- <_shortDescription>ie</_shortDescription>
-- <_description>Irish</_description>
-+
-+ <shortDescription>ie</shortDescription>
-+ <description>Irish</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5186,7 +5186,7 @@
- <variant>
- <configItem>
- <name>CloGaelach</name>
-- <_description>CloGaelach</_description>
-+ <description>CloGaelach</description>
- <languageList>
- <iso639Id>gle</iso639Id>
- </languageList>
-@@ -5195,13 +5195,13 @@
- <variant>
- <configItem>
- <name>UnicodeExpert</name>
-- <_description>Irish (UnicodeExpert)</_description>
-+ <description>Irish (UnicodeExpert)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ogam</name>
-- <_description>Ogham</_description>
-+ <description>Ogham</description>
- <languageList>
- <iso639Id>sga</iso639Id>
- </languageList>
-@@ -5210,7 +5210,7 @@
- <variant>
- <configItem>
- <name>ogam_is434</name>
-- <_description>Ogham (IS434)</_description>
-+ <description>Ogham (IS434)</description>
- <languageList>
- <iso639Id>sga</iso639Id>
- </languageList>
-@@ -5221,9 +5221,9 @@
- <layout>
- <configItem>
- <name>pk</name>
-- <!-- Keyboard indicator for Urdu layouts -->
-- <_shortDescription>ur</_shortDescription>
-- <_description>Urdu (Pakistan)</_description>
-+
-+ <shortDescription>ur</shortDescription>
-+ <description>Urdu (Pakistan)</description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
-@@ -5232,20 +5232,20 @@
- <variant>
- <configItem>
- <name>urd-crulp</name>
-- <_description>Urdu (Pakistan, CRULP)</_description>
-+ <description>Urdu (Pakistan, CRULP)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>urd-nla</name>
-- <_description>Urdu (Pakistan, NLA)</_description>
-+ <description>Urdu (Pakistan, NLA)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ara</name>
-- <_shortDescription>ar</_shortDescription>
-- <_description>Arabic (Pakistan)</_description>
-+ <shortDescription>ar</shortDescription>
-+ <description>Arabic (Pakistan)</description>
- <languageList>
- <iso639Id>ara</iso639Id>
- </languageList>
-@@ -5254,9 +5254,9 @@
- <variant>
- <configItem>
- <name>snd</name>
-- <!-- Keyboard indicator for Sindhi layouts -->
-- <_shortDescription>sd</_shortDescription>
-- <_description>Sindhi</_description>
-+
-+ <shortDescription>sd</shortDescription>
-+ <description>Sindhi</description>
- <languageList>
- <iso639Id>snd</iso639Id>
- </languageList>
-@@ -5267,9 +5267,9 @@
- <layout>
- <configItem>
- <name>mv</name>
-- <!-- Keyboard indicator for Dhivehi layouts -->
-- <_shortDescription>dv</_shortDescription>
-- <_description>Dhivehi</_description>
-+
-+ <shortDescription>dv</shortDescription>
-+ <description>Dhivehi</description>
- <languageList>
- <iso639Id>div</iso639Id>
- </languageList>
-@@ -5279,9 +5279,9 @@
- <layout>
- <configItem>
- <name>za</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (South Africa)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (South Africa)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5290,9 +5290,9 @@
- <layout>
- <configItem>
- <name>epo</name>
-- <!-- Keyboard indicator for Esperanto layouts -->
-- <_shortDescription>eo</_shortDescription>
-- <_description>Esperanto</_description>
-+
-+ <shortDescription>eo</shortDescription>
-+ <description>Esperanto</description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
-@@ -5301,7 +5301,7 @@
- <variant>
- <configItem>
- <name>legacy</name>
-- <_description>Esperanto (displaced semicolon and quote, obsolete)</_description>
-+ <description>Esperanto (displaced semicolon and quote, obsolete)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5309,9 +5309,9 @@
- <layout>
- <configItem>
- <name>np</name>
-- <!-- Keyboard indicator for Nepali layouts -->
-- <_shortDescription>ne</_shortDescription>
-- <_description>Nepali</_description>
-+
-+ <shortDescription>ne</shortDescription>
-+ <description>Nepali</description>
- <languageList>
- <iso639Id>nep</iso639Id>
- </languageList>
-@@ -5320,9 +5320,9 @@
- <layout>
- <configItem>
- <name>ng</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Nigeria)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Nigeria)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5331,9 +5331,9 @@
- <variant>
- <configItem>
- <name>igbo</name>
-- <!-- Keyboard indicator for Igbo layouts -->
-- <_shortDescription>ig</_shortDescription>
-- <_description>Igbo</_description>
-+
-+ <shortDescription>ig</shortDescription>
-+ <description>Igbo</description>
- <languageList>
- <iso639Id>ibo</iso639Id>
- </languageList>
-@@ -5342,9 +5342,9 @@
- <variant>
- <configItem>
- <name>yoruba</name>
-- <!-- Keyboard indicator for Yoruba layouts -->
-- <_shortDescription>yo</_shortDescription>
-- <_description>Yoruba</_description>
-+
-+ <shortDescription>yo</shortDescription>
-+ <description>Yoruba</description>
- <languageList>
- <iso639Id>yor</iso639Id>
- </languageList>
-@@ -5353,9 +5353,9 @@
- <variant>
- <configItem>
- <name>hausa</name>
-- <!-- Keyboard indicator for Hausa layouts -->
-- <_shortDescription>ha</_shortDescription>
-- <_description>Hausa</_description>
-+
-+ <shortDescription>ha</shortDescription>
-+ <description>Hausa</description>
- <languageList>
- <iso639Id>hau</iso639Id>
- </languageList>
-@@ -5366,9 +5366,9 @@
- <layout>
- <configItem>
- <name>et</name>
-- <!-- Keyboard indicator for Amharic layouts -->
-- <_shortDescription>am</_shortDescription>
-- <_description>Amharic</_description>
-+
-+ <shortDescription>am</shortDescription>
-+ <description>Amharic</description>
- <languageList>
- <iso639Id>amh</iso639Id>
- </languageList>
-@@ -5378,9 +5378,9 @@
- <layout>
- <configItem>
- <name>sn</name>
-- <!-- Keyboard indicator for Wolof layouts -->
-- <_shortDescription>wo</_shortDescription>
-- <_description>Wolof</_description>
-+
-+ <shortDescription>wo</shortDescription>
-+ <description>Wolof</description>
- <languageList>
- <iso639Id>wol</iso639Id>
- </languageList>
-@@ -5390,21 +5390,21 @@
- <layout>
- <configItem>
- <name>brai</name>
-- <!-- Keyboard indicator for Braille layouts -->
-- <_shortDescription>brl</_shortDescription>
-- <_description>Braille</_description>
-+
-+ <shortDescription>brl</shortDescription>
-+ <description>Braille</description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>left_hand</name>
-- <_description>Braille (left hand)</_description>
-+ <description>Braille (left hand)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>right_hand</name>
-- <_description>Braille (right hand)</_description>
-+ <description>Braille (right hand)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5412,9 +5412,9 @@
- <layout>
- <configItem>
- <name>tm</name>
-- <!-- Keyboard indicator for Turkmen layouts -->
-- <_shortDescription>tk</_shortDescription>
-- <_description>Turkmen</_description>
-+
-+ <shortDescription>tk</shortDescription>
-+ <description>Turkmen</description>
- <languageList>
- <iso639Id>tuk</iso639Id>
- </languageList>
-@@ -5423,7 +5423,7 @@
- <variant>
- <configItem>
- <name>alt</name>
-- <_description>Turkmen (Alt-Q)</_description>
-+ <description>Turkmen (Alt-Q)</description>
- </configItem>
- </variant>
- </variantList>
-@@ -5431,9 +5431,9 @@
- <layout>
- <configItem>
- <name>ml</name>
-- <!-- Keyboard indicator for Bambara layouts -->
-- <_shortDescription>bm</_shortDescription>
-- <_description>Bambara</_description>
-+
-+ <shortDescription>bm</shortDescription>
-+ <description>Bambara</description>
- <languageList>
- <iso639Id>bam</iso639Id>
- </languageList>
-@@ -5442,9 +5442,9 @@
- <variant>
- <configItem>
- <name>fr-oss</name>
-- <!-- Keyboard indicator for French layouts -->
-- <_shortDescription>fr</_shortDescription>
-- <_description>French (Mali, alternative)</_description>
-+
-+ <shortDescription>fr</shortDescription>
-+ <description>French (Mali, alternative)</description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
-@@ -5453,9 +5453,9 @@
- <variant>
- <configItem>
- <name>us-mac</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Mali, US Macintosh)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Mali, US Macintosh)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5464,9 +5464,9 @@
- <variant>
- <configItem>
- <name>us-intl</name>
-- <!-- Keyboard indicator for English layouts -->
-- <_shortDescription>en</_shortDescription>
-- <_description>English (Mali, US international)</_description>
-+
-+ <shortDescription>en</shortDescription>
-+ <description>English (Mali, US international)</description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
-@@ -5477,9 +5477,9 @@
- <layout>
- <configItem>
- <name>tz</name>
-- <!-- Keyboard indicator for Swahili layouts -->
-- <_shortDescription>sw</_shortDescription>
-- <_description>Swahili (Tanzania)</_description>
-+
-+ <shortDescription>sw</shortDescription>
-+ <description>Swahili (Tanzania)</description>
- <languageList>
- <iso639Id>swa</iso639Id>
- </languageList>
-@@ -5488,9 +5488,9 @@
- <layout>
- <configItem>
- <name>ke</name>
-- <!-- Keyboard indicator for Swahili layouts -->
-- <_shortDescription>sw</_shortDescription>
-- <_description>Swahili (Kenya)</_description>
-+
-+ <shortDescription>sw</shortDescription>
-+ <description>Swahili (Kenya)</description>
- <languageList>
- <iso639Id>swa</iso639Id>
- </languageList>
-@@ -5499,9 +5499,9 @@
- <variant>
- <configItem>
- <name>kik</name>
-- <!-- Keyboard indicator for Kikuyu layouts -->
-- <_shortDescription>ki</_shortDescription>
-- <_description>Kikuyu</_description>
-+
-+ <shortDescription>ki</shortDescription>
-+ <description>Kikuyu</description>
- <languageList>
- <iso639Id>kik</iso639Id>
- </languageList>
-@@ -5512,9 +5512,9 @@
- <layout>
- <configItem>
- <name>bw</name>
-- <!-- Keyboard indicator for Tswana layouts -->
-- <_shortDescription>tn</_shortDescription>
-- <_description>Tswana</_description>
-+
-+ <shortDescription>tn</shortDescription>
-+ <description>Tswana</description>
- <languageList>
- <iso639Id>tsn</iso639Id>
- </languageList>
-@@ -5523,9 +5523,9 @@
- <layout>
- <configItem>
- <name>ph</name>
-- <!-- Keyboard indicator for Filipino layouts -->
-- <_shortDescription>ph</_shortDescription>
-- <_description>Filipino</_description>
-+
-+ <shortDescription>ph</shortDescription>
-+ <description>Filipino</description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
-@@ -5542,7 +5542,7 @@
- <variant>
- <configItem>
- <name>qwerty-bay</name>
-- <_description>Filipino (QWERTY Baybayin)</_description>
-+ <description>Filipino (QWERTY Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5558,13 +5558,13 @@
- <variant>
- <configItem>
- <name>capewell-dvorak</name>
-- <_description>Filipino (Capewell-Dvorak Latin)</_description>
-+ <description>Filipino (Capewell-Dvorak Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-dvorak-bay</name>
-- <_description>Filipino (Capewell-Dvorak Baybayin)</_description>
-+ <description>Filipino (Capewell-Dvorak Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5580,13 +5580,13 @@
- <variant>
- <configItem>
- <name>capewell-qwerf2k6</name>
-- <_description>Filipino (Capewell-QWERF 2006 Latin)</_description>
-+ <description>Filipino (Capewell-QWERF 2006 Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-qwerf2k6-bay</name>
-- <_description>Filipino (Capewell-QWERF 2006 Baybayin)</_description>
-+ <description>Filipino (Capewell-QWERF 2006 Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5602,13 +5602,13 @@
- <variant>
- <configItem>
- <name>colemak</name>
-- <_description>Filipino (Colemak Latin)</_description>
-+ <description>Filipino (Colemak Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak-bay</name>
-- <_description>Filipino (Colemak Baybayin)</_description>
-+ <description>Filipino (Colemak Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5624,13 +5624,13 @@
- <variant>
- <configItem>
- <name>dvorak</name>
-- <_description>Filipino (Dvorak Latin)</_description>
-+ <description>Filipino (Dvorak Latin)</description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-bay</name>
-- <_description>Filipino (Dvorak Baybayin)</_description>
-+ <description>Filipino (Dvorak Baybayin)</description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
-@@ -5648,16 +5648,16 @@
- <layout>
- <configItem>
- <name>md</name>
-- <_shortDescription>md</_shortDescription>
-- <_description>Moldavian</_description>
-+ <shortDescription>md</shortDescription>
-+ <description>Moldavian</description>
- <languageList><iso639Id>rum</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>gag</name>
-- <_shortDescription>gag</_shortDescription>
-- <_description>Moldavian (Gagauz)</_description>
-+ <shortDescription>gag</shortDescription>
-+ <description>Moldavian (Gagauz)</description>
- <languageList><iso639Id>gag</iso639Id></languageList>
- </configItem>
- </variant>
-@@ -5666,1183 +5666,1142 @@
- </layoutList>
- <optionList>
- <group allowMultipleSelection="true">
-- <!-- The key combination used to switch between groups -->
-+
- <configItem>
- <name>grp</name>
-- <_description>Switching to another layout</_description>
-+ <description>Switching to another layout</description>
- </configItem>
- <option>
- <configItem>
- <name>grp:switch</name>
-- <_description>Right Alt (while pressed)</_description>
-+ <description>Right Alt (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lswitch</name>
-- <_description>Left Alt (while pressed)</_description>
-+ <description>Left Alt (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lwin_switch</name>
-- <_description>Left Win (while pressed)</_description>
-+ <description>Left Win (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rwin_switch</name>
-- <_description>Right Win (while pressed)</_description>
-+ <description>Right Win (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:win_switch</name>
-- <_description>Any Win key (while pressed)</_description>
-+ <description>Any Win key (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:caps_switch</name>
-- <_description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</_description>
-+ <description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_switch</name>
-- <_description>Right Ctrl (while pressed)</_description>
-+ <description>Right Ctrl (while pressed)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:toggle</name>
-- <_description>Right Alt</_description>
-+ <description>Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lalt_toggle</name>
-- <_description>Left Alt</_description>
-+ <description>Left Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:caps_toggle</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shift_caps_toggle</name>
-- <_description>Shift+Caps Lock</_description>
-+ <description>Shift+Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shift_caps_switch</name>
-- <_description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</_description>
-+ <description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:win_menu_switch</name>
-- <_description>Left Win (to first layout), Right Win/Menu (to last layout)</_description>
-+ <description>Left Win (to first layout), Right Win/Menu (to last layout)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_rctrl_switch</name>
-- <_description>Left Ctrl (to first layout), Right Ctrl (to last layout)</_description>
-+ <description>Left Ctrl (to first layout), Right Ctrl (to last layout)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_caps_toggle</name>
-- <_description>Alt+Caps Lock</_description>
-+ <description>Alt+Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shifts_toggle</name>
-- <_description>Both Shift keys together</_description>
-+ <description>Both Shift keys together</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alts_toggle</name>
-- <_description>Both Alt keys together</_description>
-+ <description>Both Alt keys together</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrls_toggle</name>
-- <_description>Both Ctrl keys together</_description>
-+ <description>Both Ctrl keys together</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrl_shift_toggle</name>
-- <_description>Ctrl+Shift</_description>
-+ <description>Ctrl+Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_lshift_toggle</name>
-- <_description>Left Ctrl+Left Shift</_description>
-+ <description>Left Ctrl+Left Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_rshift_toggle</name>
-- <_description>Right Ctrl+Right Shift</_description>
-+ <description>Right Ctrl+Right Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrl_alt_toggle</name>
-- <_description>Alt+Ctrl</_description>
-+ <description>Alt+Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_shift_toggle</name>
-- <_description>Alt+Shift</_description>
-+ <description>Alt+Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lalt_lshift_toggle</name>
-- <_description>Left Alt+Left Shift</_description>
-+ <description>Left Alt+Left Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_space_toggle</name>
-- <_description>Alt+Space</_description>
-+ <description>Alt+Space</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:menu_toggle</name>
-- <_description>Menu</_description>
-+ <description>Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lwin_toggle</name>
-- <_description>Left Win</_description>
-+ <description>Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rwin_toggle</name>
-- <_description>Right Win</_description>
-+ <description>Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lshift_toggle</name>
-- <_description>Left Shift</_description>
-+ <description>Left Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rshift_toggle</name>
-- <_description>Right Shift</_description>
-+ <description>Right Shift</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_toggle</name>
-- <_description>Left Ctrl</_description>
-+ <description>Left Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_toggle</name>
-- <_description>Right Ctrl</_description>
-+ <description>Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:sclk_toggle</name>
-- <_description>Scroll Lock</_description>
-+ <description>Scroll Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_lwin_rctrl_menu</name>
-- <_description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</_description>
-+ <description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- The key combination used to choose the 3rd (and 4th, together with Shift)
-- level of symbols -->
-+
- <configItem>
- <name>lv3</name>
-- <_description>Key to choose 3rd level</_description>
-+ <description>Key to choose 3rd level</description>
- </configItem>
- <option>
- <configItem>
- <name>lv3:switch</name>
-- <_description>Right Ctrl</_description>
-+ <description>Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:menu_switch</name>
-- <_description>Menu</_description>
-+ <description>Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:win_switch</name>
-- <_description>Any Win key</_description>
-+ <description>Any Win key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lwin_switch</name>
-- <_description>Left Win</_description>
-+ <description>Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:rwin_switch</name>
-- <_description>Right Win</_description>
-+ <description>Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:alt_switch</name>
-- <_description>Any Alt key</_description>
-+ <description>Any Alt key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lalt_switch</name>
-- <_description>Left Alt</_description>
-+ <description>Left Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_switch</name>
-- <_description>Right Alt</_description>
-+ <description>Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_switch_multikey</name>
-- <_description>Right Alt, Shift+Right Alt key is Compose</_description>
-+ <description>Right Alt, Shift+Right Alt key is Compose</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_alt</name>
-- <_description>Right Alt key never chooses 3rd level</_description>
-+ <description>Right Alt key never chooses 3rd level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:enter_switch</name>
-- <_description>Enter on keypad</_description>
-+ <description>Enter on keypad</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:caps_switch</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:bksl_switch</name>
-- <_description>Backslash</_description>
-+ <description>Backslash</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lsgt_switch</name>
-- <_description>&lt;Less/Greater&gt;</_description>
-+ <description>&lt;Less/Greater&gt;</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:caps_switch_latch</name>
-- <_description>Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</_description>
-+ <description>Caps Lock chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:bksl_switch_latch</name>
-- <_description>Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</_description>
-+ <description>Backslash chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lsgt_switch_latch</name>
-- <_description>&lt;Less/Greater&gt; chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</_description>
-+ <description>&lt;Less/Greater&gt; chooses 3rd level, acts as onetime lock when pressed together with another 3rd-level-chooser</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Tweaking the position of the "Ctrl" key -->
-+
- <configItem>
- <name>ctrl</name>
-- <_description>Ctrl key position</_description>
-+ <description>Ctrl key position</description>
- </configItem>
- <option>
- <configItem>
- <name>ctrl:nocaps</name>
-- <_description>Caps Lock as Ctrl</_description>
-+ <description>Caps Lock as Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:lctrl_meta</name>
-- <_description>Left Ctrl as Meta</_description>
-+ <description>Left Ctrl as Meta</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swapcaps</name>
-- <_description>Swap Ctrl and Caps Lock</_description>
-+ <description>Swap Ctrl and Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ac_ctrl</name>
-- <_description>At left of 'A'</_description>
-+ <description>At left of 'A'</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:aa_ctrl</name>
-- <_description>At bottom left</_description>
-+ <description>At bottom left</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:rctrl_ralt</name>
-- <_description>Right Ctrl as Right Alt</_description>
-+ <description>Right Ctrl as Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:menu_rctrl</name>
-- <_description>Menu as Right Ctrl</_description>
-+ <description>Menu as Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ctrl_ralt</name>
-- <_description>Right Alt as Right Ctrl</_description>
-+ <description>Right Alt as Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swap_lalt_lctl</name>
-- <_description>Swap Left Alt key with Left Ctrl key</_description>
-+ <description>Swap Left Alt key with Left Ctrl key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swap_lwin_lctl</name>
-- <_description>Swap Left Win key with Left Ctrl key</_description>
-+ <description>Swap Left Win key with Left Ctrl key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swap_lalt_lctl_lwin</name>
-- <_description>Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt</_description>
-+ <description>Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Using startard LEDs to indicate the alternative (not first) group(s) -->
-+
- <configItem>
- <name>grp_led</name>
-- <_description>Use keyboard LED to show alternative layout</_description>
-+ <description>Use keyboard LED to show alternative layout</description>
- </configItem>
- <option>
- <configItem>
- <name>grp_led:num</name>
-- <_description>Num Lock</_description>
-+ <description>Num Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp_led:caps</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp_led:scroll</name>
-- <_description>Scroll Lock</_description>
-+ <description>Scroll Lock</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
-- <!-- Select a keypad type -->
-+
- <configItem>
- <name>keypad</name>
-- <_description>Layout of numeric keypad</_description>
-+ <description>Layout of numeric keypad</description>
- </configItem>
- <option>
- <configItem>
- <name>keypad:legacy</name>
-- <_description>Legacy</_description>
-+ <description>Legacy</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:oss</name>
-- <_description>Unicode additions (arrows and math operators)</_description>
-+ <description>Unicode additions (arrows and math operators)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:future</name>
-- <_description>Unicode additions (arrows and math operators; math operators on default level)</_description>
-+ <description>Unicode additions (arrows and math operators; math operators on default level)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:legacy_wang</name>
-- <_description>Legacy Wang 724</_description>
-+ <description>Legacy Wang 724</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:oss_wang</name>
-- <_description>Wang 724 keypad with Unicode additions (arrows and math operators)</_description>
-+ <description>Wang 724 keypad with Unicode additions (arrows and math operators)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:future_wang</name>
-- <_description>Wang 724 keypad with Unicode additions (arrows and math operators; math operators on default level)</_description>
-+ <description>Wang 724 keypad with Unicode additions (arrows and math operators; math operators on default level)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:hex</name>
-- <_description>Hexadecimal</_description>
-+ <description>Hexadecimal</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:atm</name>
-- <_description>ATM/phone-style</_description>
-+ <description>ATM/phone-style</description>
- </configItem>
- </option>
- </group>
-- <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place -->
-+
- <group allowMultipleSelection="false">
-- <!-- Select a keypad KPDL variant -->
-+
- <configItem>
- <name>kpdl</name>
-- <_description>Numeric keypad delete key behaviour</_description>
-+ <description>Numeric keypad delete key behaviour</description>
- </configItem>
- <option>
- <configItem>
-- <!-- Actually, with KP_DECIMAL, as the old keypad(dot) -->
-+
- <name>kpdl:dot</name>
-- <_description>Legacy key with dot</_description>
-+ <description>Legacy key with dot</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:comma</name>
-- <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) -->
-- <_description>Legacy key with comma</_description>
-+
-+ <description>Legacy key with comma</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:dotoss</name>
-- <_description>Four-level key with dot</_description>
-+ <description>Four-level key with dot</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:dotoss_latin9</name>
-- <_description>Four-level key with dot, Latin-9 only</_description>
-+ <description>Four-level key with dot, Latin-9 only</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:commaoss</name>
-- <_description>Four-level key with comma</_description>
-+ <description>Four-level key with comma</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:momayyezoss</name>
-- <_description>Four-level key with momayyez</_description>
-+ <description>Four-level key with momayyez</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:kposs</name>
-- <!-- This assumes the KP_ abstract symbols are actually useful for some apps
-- The description needs to be rewritten -->
-- <_description>Four-level key with abstract separators</_description>
-+
-+ <description>Four-level key with abstract separators</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:semi</name>
-- <_description>Semicolon on third level</_description>
-+ <description>Semicolon on third level</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
-- <!-- Caps Lock tweaks.
-- "Internal" capitalization means capitalization using some internal tables.
-- Otherwise "as Shift" - means using next group. -->
-+
- <configItem>
- <name>caps</name>
-- <_description>Caps Lock key behavior</_description>
-+ <description>Caps Lock key behavior</description>
- </configItem>
- <option>
- <configItem>
- <name>caps:internal</name>
-- <_description>Caps Lock uses internal capitalization; Shift "pauses" Caps Lock</_description>
-+ <description>Caps Lock uses internal capitalization; Shift "pauses" Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:internal_nocancel</name>
-- <_description>Caps Lock uses internal capitalization; Shift doesn't affect Caps Lock</_description>
-+ <description>Caps Lock uses internal capitalization; Shift doesn't affect Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shift</name>
-- <_description>Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock</_description>
-+ <description>Caps Lock acts as Shift with locking; Shift "pauses" Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shift_nocancel</name>
-- <_description>Caps Lock acts as Shift with locking; Shift doesn't affect Caps Lock</_description>
-+ <description>Caps Lock acts as Shift with locking; Shift doesn't affect Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:capslock</name>
-- <_description>Caps Lock toggles normal capitalization of alphabetic characters</_description>
-+ <description>Caps Lock toggles normal capitalization of alphabetic characters</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:numlock</name>
-- <_description>Make Caps Lock an additional Num Lock</_description>
-+ <description>Make Caps Lock an additional Num Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:swapescape</name>
-- <_description>Swap ESC and Caps Lock</_description>
-+ <description>Swap ESC and Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:escape</name>
-- <_description>Make Caps Lock an additional ESC</_description>
-+ <description>Make Caps Lock an additional ESC</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:backspace</name>
-- <_description>Make Caps Lock an additional Backspace</_description>
-+ <description>Make Caps Lock an additional Backspace</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:super</name>
-- <_description>Make Caps Lock an additional Super</_description>
-+ <description>Make Caps Lock an additional Super</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:hyper</name>
-- <_description>Make Caps Lock an additional Hyper</_description>
-+ <description>Make Caps Lock an additional Hyper</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shiftlock</name>
-- <_description>Caps Lock toggles ShiftLock (affects all keys)</_description>
-+ <description>Caps Lock toggles ShiftLock (affects all keys)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:none</name>
-- <_description>Caps Lock is disabled</_description>
-+ <description>Caps Lock is disabled</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:ctrl_modifier</name>
-- <_description>Make Caps Lock an additional Ctrl</_description>
-+ <description>Make Caps Lock an additional Ctrl</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
-- <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) -->
-+
- <configItem>
- <name>altwin</name>
-- <_description>Alt/Win key behavior</_description>
-+ <description>Alt/Win key behavior</description>
- </configItem>
- <option>
- <configItem>
- <name>altwin:menu</name>
-- <_description>Add the standard behavior to Menu key</_description>
-+ <description>Add the standard behavior to Menu key</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:meta_alt</name>
-- <_description>Alt and Meta are on Alt keys</_description>
-+ <description>Alt and Meta are on Alt keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:alt_win</name>
-- <_description>Alt is mapped to Win keys (and the usual Alt keys)</_description>
-+ <description>Alt is mapped to Win keys (and the usual Alt keys)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:ctrl_win</name>
-- <_description>Ctrl is mapped to Win keys (and the usual Ctrl keys)</_description>
-+ <description>Ctrl is mapped to Win keys (and the usual Ctrl keys)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:ctrl_alt_win</name>
-- <_description>Ctrl is mapped to Alt keys, Alt is mapped to Win keys</_description>
-+ <description>Ctrl is mapped to Alt keys, Alt is mapped to Win keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:meta_win</name>
-- <_description>Meta is mapped to Win keys</_description>
-+ <description>Meta is mapped to Win keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:left_meta_win</name>
-- <_description>Meta is mapped to Left Win</_description>
-+ <description>Meta is mapped to Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:hyper_win</name>
-- <_description>Hyper is mapped to Win-keys</_description>
-+ <description>Hyper is mapped to Win-keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:alt_super_win</name>
-- <_description>Alt is mapped to Right Win, Super to Menu</_description>
-+ <description>Alt is mapped to Right Win, Super to Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:swap_alt_win</name>
-- <_description>Alt is swapped with Win</_description>
-+ <description>Alt is swapped with Win</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys -->
-+
- <configItem>
- <name>Compose key</name>
-- <_description>Position of Compose key</_description>
-+ <description>Position of Compose key</description>
- </configItem>
- <option>
- <configItem>
- <name>compose:ralt</name>
-- <_description>Right Alt</_description>
-+ <description>Right Alt</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lwin</name>
-- <_description>Left Win</_description>
-+ <description>Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lwin-altgr</name>
-- <_description>3rd level of Left Win</_description>
-+ <description>3rd level of Left Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rwin</name>
-- <_description>Right Win</_description>
-+ <description>Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rwin-altgr</name>
-- <_description>3rd level of Right Win</_description>
-+ <description>3rd level of Right Win</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:menu</name>
-- <_description>Menu</_description>
-+ <description>Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:menu-altgr</name>
-- <_description>3rd level of Menu</_description>
-+ <description>3rd level of Menu</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lctrl</name>
-- <_description>Left Ctrl</_description>
-+ <description>Left Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lctrl-altgr</name>
-- <_description>3rd level of Left Ctrl</_description>
-+ <description>3rd level of Left Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rctrl</name>
-- <_description>Right Ctrl</_description>
-+ <description>Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rctrl-altgr</name>
-- <_description>3rd level of Right Ctrl</_description>
-+ <description>3rd level of Right Ctrl</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:caps</name>
-- <_description>Caps Lock</_description>
-+ <description>Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:caps-altgr</name>
-- <_description>3rd level of Caps Lock</_description>
-+ <description>3rd level of Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:102</name>
-- <_description>&lt;Less/Greater&gt;</_description>
-+ <description>&lt;Less/Greater&gt;</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:102-altgr</name>
-- <_description>3rd level of &lt;Less/Greater&gt;</_description>
-+ <description>3rd level of &lt;Less/Greater&gt;</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:paus</name>
-- <_description>Pause</_description>
-+ <description>Pause</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:prsc</name>
-- <_description>PrtSc</_description>
-+ <description>PrtSc</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:sclk</name>
-- <_description>Scroll Lock</_description>
-+ <description>Scroll Lock</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>compat</name>
-- <_description>Miscellaneous compatibility options</_description>
-+ <description>Miscellaneous compatibility options</description>
- </configItem>
- <option>
- <configItem>
- <name>numpad:pc</name>
-- <_description>Default numeric keypad keys</_description>
-+ <description>Default numeric keypad keys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:mac</name>
-- <_description>Numeric keypad keys always enter digits (as in Mac OS)</_description>
-+ <description>Numeric keypad keys always enter digits (as in Mac OS)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:microsoft</name>
-- <_description>Shift with numeric keypad keys works as in MS Windows</_description>
-+ <description>Shift with numeric keypad keys works as in MS Windows</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:shift3</name>
-- <_description>Shift does not cancel Num Lock, chooses 3rd level instead</_description>
-+ <description>Shift does not cancel Num Lock, chooses 3rd level instead</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>srvrkeys:none</name>
-- <_description>Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server</_description>
-+ <description>Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>apple:alupckeys</name>
-- <_description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</_description>
-+ <description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:breaks_caps</name>
-- <_description>Shift cancels Caps Lock</_description>
-+ <description>Shift cancels Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>misc:typo</name>
-- <_description>Enable extra typographic characters</_description>
-+ <description>Enable extra typographic characters</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_capslock</name>
-- <_description>Both Shift keys together toggle Caps Lock</_description>
-+ <description>Both Shift keys together toggle Caps Lock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_capslock_cancel</name>
-- <_description>Both Shift keys together activate Caps Lock, one Shift key deactivates</_description>
-+ <description>Both Shift keys together activate Caps Lock, one Shift key deactivates</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_shiftlock</name>
-- <_description>Both Shift keys together toggle ShiftLock</_description>
-+ <description>Both Shift keys together toggle ShiftLock</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:pointerkeys</name>
-- <_description>Shift + NumLock toggles PointerKeys</_description>
-+ <description>Shift + NumLock toggles PointerKeys</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grab:break_actions</name>
-- <_description>Allow breaking grabs with keyboard actions (warning: security risk)</_description>
-+ <description>Allow breaking grabs with keyboard actions (warning: security risk)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grab:debug_actions</name>
-- <_description>Allow grab and window tree logging</_description>
-+ <description>Allow grab and window tree logging</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
-- <!-- Special shortcuts for the Euro character -->
-+
- <configItem>
- <name>currencysign</name>
-- <_description>Adding currency signs to certain keys</_description>
-+ <description>Adding currency signs to certain keys</description>
- </configItem>
- <option>
- <configItem>
- <name>eurosign:e</name>
-- <_description>Euro on E</_description>
-+ <description>Euro on E</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:2</name>
-- <_description>Euro on 2</_description>
-+ <description>Euro on 2</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:4</name>
-- <_description>Euro on 4</_description>
-+ <description>Euro on 4</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:5</name>
-- <_description>Euro on 5</_description>
-+ <description>Euro on 5</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>rupeesign:4</name>
-- <_description>Rupee on 4</_description>
-+ <description>Rupee on 4</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>lv5</name>
-- <_description>Key to choose 5th level</_description>
-+ <description>Key to choose 5th level</description>
- </configItem>
- <option>
- <configItem>
- <name>lv5:lsgt_switch_lock</name>
-- <_description>&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-+ <description>&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:ralt_switch_lock</name>
-- <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-+ <description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:lwin_switch_lock</name>
-- <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-+ <description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:rwin_switch_lock</name>
-- <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
--<!--
-- <option>
-- <configItem>
-- <name>lv5:lsgt_switch_lock_cancel</name>
-- <_description>&lt;Less/Greater&gt; chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:ralt_switch_lock_cancel</name>
-- <_description>Right Alt chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:lwin_switch_lock_cancel</name>
-- <_description>Left Win chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:rwin_switch_lock_cancel</name>
-- <_description>Right Win chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:lsgt_switch_lock_cancel</name>
-- <_description>&lt;Less/Greater&gt; chooses 5th level, acts as onetime lock lock when pressed together with another 5th-level-chooser</_description>
-- </configItem>
-- </option>
-- <option>
-- <configItem>
-- <name>lv5:ralt_switch_lock_cancel</name>
-- <_description>Right Alt chooses 5th level, acts as onetime lock when pressed together with another 5th-level-chooser</_description>
-+ <description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</description>
- </configItem>
- </option>
---->
-+
- </group>
- <group allowMultipleSelection="false">
-- <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level -->
-+
- <configItem>
- <name>nbsp</name>
-- <_description>Using space key to input non-breakable space character</_description>
-+ <description>Using space key to input non-breakable space character</description>
- </configItem>
- <option>
- <configItem>
- <name>nbsp:none</name>
-- <_description>Usual space at any level</_description>
-+ <description>Usual space at any level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level2</name>
-- <_description>Non-breakable space character at second level</_description>
-+ <description>Non-breakable space character at second level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3</name>
-- <_description>Non-breakable space character at third level</_description>
-+ <description>Non-breakable space character at third level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3s</name>
-- <_description>Non-breakable space character at third level, nothing at fourth level</_description>
-+ <description>Non-breakable space character at third level, nothing at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3n</name>
-- <_description>Non-breakable space character at third level, thin non-breakable space character at fourth level</_description>
-+ <description>Non-breakable space character at third level, thin non-breakable space character at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4</name>
-- <_description>Non-breakable space character at fourth level</_description>
-+ <description>Non-breakable space character at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4n</name>
-- <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</_description>
-+ <description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4nl</name>
-- <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</_description>
-+ <description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2</name>
-- <_description>Zero-width non-joiner character at second level</_description>
-+ <description>Zero-width non-joiner character at second level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2zwj3</name>
-- <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level</_description>
-+ <description>Zero-width non-joiner character at second level, zero-width joiner character at third level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2zwj3nb4</name>
-- <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3s</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3zwj4</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3nnb4</name>
-- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</_description>
-+ <description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj3zwj4</name>
-- <_description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</_description>
-+ <description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>japan</name>
-- <_description>Japanese keyboard options</_description>
-+ <description>Japanese keyboard options</description>
- </configItem>
- <option>
- <configItem>
- <name>japan:kana_lock</name>
-- <_description>Kana Lock key is locking</_description>
-+ <description>Kana Lock key is locking</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>japan:nicola_f_bs</name>
-- <_description>NICOLA-F style Backspace</_description>
-+ <description>NICOLA-F style Backspace</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>japan:hztg_escape</name>
-- <_description>Make Zenkaku Hankaku an additional ESC</_description>
-+ <description>Make Zenkaku Hankaku an additional ESC</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <configItem>
- <name>esperanto</name>
-- <_description>Adding Esperanto supersigned letters</_description>
-+ <description>Adding Esperanto supersigned letters</description>
- </configItem>
- <option>
- <configItem>
- <name>esperanto:qwerty</name>
-- <_description>To the corresponding key in a Qwerty layout</_description>
-+ <description>To the corresponding key in a Qwerty layout</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>esperanto:dvorak</name>
-- <_description>To the corresponding key in a Dvorak layout</_description>
-+ <description>To the corresponding key in a Dvorak layout</description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>esperanto:colemak</name>
-- <_description>To the corresponding key in a Colemak layout</_description>
-+ <description>To the corresponding key in a Colemak layout</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>solaris</name>
-- <_description>Maintain key compatibility with old Solaris keycodes</_description>
-+ <description>Maintain key compatibility with old Solaris keycodes</description>
- </configItem>
- <option>
- <configItem>
- <name>solaris:sun_compat</name>
-- <_description>Sun Key compatibility</_description>
-+ <description>Sun Key compatibility</description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>terminate</name>
-- <_description>Key sequence to kill the X server</_description>
-+ <description>Key sequence to kill the X server</description>
- </configItem>
- <option>
- <configItem>
- <name>terminate:ctrl_alt_bksp</name>
-- <_description>Ctrl + Alt + Backspace</_description>
-+ <description>Ctrl + Alt + Backspace</description>
- </configItem>
- </option>
- </group>
- </optionList>
--</xkbConfigRegistry>
-+</xkbConfigRegistry>
-\ No newline at end of file
diff --git a/package/xorg-server/Makefile b/package/xorg-server/Makefile
index 2879cafea..9c6c12ffc 100644
--- a/package/xorg-server/Makefile
+++ b/package/xorg-server/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= xorg-server
-PKG_VERSION:= 21.1.1
+PKG_VERSION:= 21.1.6
PKG_RELEASE:= 1
-PKG_HASH:= 782e7fef2ca0c7cbe60a937b8bf42dac69c904fb841950fd0363e1c2346ea755
+PKG_HASH:= 1eb86ed674d042b6c8b1f9135e59395cbbca35ed551b122f73a7d8bb3bb22484
PKG_DESCR:= xorg server
PKG_SECTION:= x11/drivers
PKG_DEPENDS:= libxfont2 pixman libpciaccess libxkbfile libxcvt
@@ -14,12 +14,13 @@ PKG_DEPENDS+= libfontenc xkeyboard-config xkbcomp libxau libxaw
PKG_DEPENDS+= libxmu libxpm libxrender libxt libxxf86dga libxext
PKG_DEPENDS+= libxdmcp libxv libsm libice libx11 libxcb libdrm
PKG_DEPENDS+= libxshmfence libfreetype libfontenc libpciaccess
+PKG_DEPENDS+= libepoxy
PKG_BUILDDEP:= libX11 randrproto renderproto fixesproto damageproto
PKG_BUILDDEP+= scrnsaverproto resourceproto fontsproto videoproto
PKG_BUILDDEP+= compositeproto evieext libxkbfile libXfont2 pixman
PKG_BUILDDEP+= libpciaccess xf86dgaproto recordproto dri3proto
PKG_BUILDDEP+= xineramaproto presentproto xf86driproto glproto mesa
-PKG_BUILDDEP+= xorgproto libxcvt libdrm
+PKG_BUILDDEP+= xorgproto libxcvt libdrm libepoxy
PKG_NEEDS:= threads c++
PKG_URL:= http://www.x.org/
PKG_SITES:= http://www.x.org/releases/individual/xserver/
@@ -78,7 +79,9 @@ CONFIGURE_ARGS+= --enable-dga \
--enable-dri2 \
--enable-dri3 \
--enable-glx \
+ --enable-glamor \
--with-xkb-output=/tmp \
+ --with-fontrootdir=/usr/share/fonts/X11/ \
--with-vendor-web="$(ADK_VENDOR_URL)"
ifeq (${ADK_PACKAGE_XORG_SERVER_WITH_KDRIVE},y)
@@ -105,10 +108,8 @@ xorg-server-install:
$(IDIR_XORG_SERVER)/usr/lib/xorg/modules
${CP} ${WRKINST}/usr/lib/xorg/modules/drivers/*.so \
$(IDIR_XORG_SERVER)/usr/lib/xorg/modules/drivers
-ifeq (${ADK_PACKAGE_XORG_SERVER_WITH_DRI},y)
${CP} ${WRKINST}/usr/lib/xorg/modules/extensions/*.so \
$(IDIR_XORG_SERVER)/usr/lib/xorg/modules/extensions
-endif
ifeq (${ADK_TARGET_SYSTEM_LEMOTE_YEELONG},y)
${CP} ./files/xorg.conf.lemote-yeelong \
$(IDIR_XORG_SERVER)/etc/X11/xorg.conf
diff --git a/package/xorg-server/patches/patch-configure b/package/xorg-server/patches/patch-configure
new file mode 100644
index 000000000..378c27c1c
--- /dev/null
+++ b/package/xorg-server/patches/patch-configure
@@ -0,0 +1,11 @@
+--- xorg-server-21.1.5.orig/configure 2022-12-14 03:25:26.000000000 +0100
++++ xorg-server-21.1.5/configure 2022-12-31 10:38:30.017910171 +0100
+@@ -29281,7 +29281,7 @@ printf "%s\n" "#define BASE_FONT_PATH \"
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+
+-dridriverdir=`$PKG_CONFIG --variable=dridriverdir dri`
++dridriverdir=/usr/lib/dri
+
+ prefix_NONE=
+ exec_prefix_NONE=
diff --git a/package/xorg-server/patches/patch-include_misc_h b/package/xorg-server/patches/patch-include_misc_h
index 820df214a..30cc9a44d 100644
--- a/package/xorg-server/patches/patch-include_misc_h
+++ b/package/xorg-server/patches/patch-include_misc_h
@@ -1,50 +1,13 @@
---- xorg-server-21.1.0.orig/include/misc.h 2021-10-27 12:47:08.000000000 +0200
-+++ xorg-server-21.1.0/include/misc.h 2021-11-12 22:48:04.777225906 +0100
-@@ -298,33 +298,12 @@ __builtin_constant_p(int x)
- }
+--- xorg-server-21.1.5.orig/include/misc.h 2022-12-14 03:25:18.000000000 +0100
++++ xorg-server-21.1.5/include/misc.h 2023-01-01 08:13:51.736653806 +0100
+@@ -187,6 +187,10 @@ typedef struct _xReq *xReqPtr;
+ #endif
#endif
--static inline uint64_t
--bswap_64(uint64_t x)
--{
-- return (((x & 0xFF00000000000000ull) >> 56) |
-- ((x & 0x00FF000000000000ull) >> 40) |
-- ((x & 0x0000FF0000000000ull) >> 24) |
-- ((x & 0x000000FF00000000ull) >> 8) |
-- ((x & 0x00000000FF000000ull) << 8) |
-- ((x & 0x0000000000FF0000ull) << 24) |
-- ((x & 0x000000000000FF00ull) << 40) |
-- ((x & 0x00000000000000FFull) << 56));
--}
--
- #define swapll(x) do { \
- if (sizeof(*(x)) != 8) \
- wrong_size(); \
- *(x) = bswap_64(*(x)); \
- } while (0)
-
--static inline uint32_t
--bswap_32(uint32_t x)
--{
-- return (((x & 0xFF000000) >> 24) |
-- ((x & 0x00FF0000) >> 8) |
-- ((x & 0x0000FF00) << 8) |
-- ((x & 0x000000FF) << 24));
--}
-
- static inline Bool
- checked_int64_add(int64_t *out, int64_t a, int64_t b)
-@@ -361,13 +340,6 @@ checked_int64_subtract(int64_t *out, int
- *(x) = bswap_32(*(x)); \
- } while (0)
-
--static inline uint16_t
--bswap_16(uint16_t x)
--{
-- return (((x & 0xFF00) >> 8) |
-- ((x & 0x00FF) << 8));
--}
--
- #define swaps(x) do { \
- if (sizeof(*(x)) != 2) \
- wrong_size(); \
++#undef bswap_16
++#undef bswap_32
++#undef bswap_64
++
+ /**
+ * Calculate the number of bytes needed to hold bits.
+ * @param bits The minimum number of bits needed.
diff --git a/package/xsm/Makefile b/package/xsm/Makefile
index 177e1e4ff..43b8223ff 100644
--- a/package/xsm/Makefile
+++ b/package/xsm/Makefile
@@ -20,6 +20,8 @@ include $(ADK_TOPDIR)/mk/package.mk
$(eval $(call PKG_template,XSM,xsm,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+CONFIGURE_ARGS+= --with-appdefaultdir=/usr/share/X11/app-defaults
+
xsm-install:
$(INSTALL_DIR) $(IDIR_XSM)/usr/share/X11
$(CP) $(WRKINST)/usr/share/X11/* \
diff --git a/package/xterm/Makefile b/package/xterm/Makefile
index d1374b286..4bc96d25d 100644
--- a/package/xterm/Makefile
+++ b/package/xterm/Makefile
@@ -4,17 +4,18 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= xterm
-PKG_VERSION:= 369
+PKG_VERSION:= 377
PKG_RELEASE:= 1
-PKG_HASH:= 71ed6a48d064893d2149741a002781a973496fd24d52dadd364f63439a764e26
+PKG_HASH:= db108fe7a45d8ed97e604721b58443b473649e61e263631bf8759f8618a990b2
PKG_DESCR:= terminal emulator
PKG_SECTION:= x11/apps
PKG_DEPENDS:= libxaw libxt libncurses libxft fontconfig libuuid
+PKG_DEPENDS+= libxpm libxrender
PKG_BUILDDEP:= ncurses libXt libXmu libXaw libXft util-linux libSM
PKG_URL:= http://invisible-island.net/xterm/xterm.html
-PKG_SITES:= https://invisible-island.net/datafiles/release/
+PKG_SITES:= http://invisible-mirror.net/archives/xterm/
-DISTFILES:= ${PKG_NAME}.tar.gz
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tgz
include $(ADK_TOPDIR)/mk/package.mk
@@ -26,6 +27,7 @@ CONFIGURE_ARGS+= --with-app-defaults=/usr/lib/X11/app-defaults \
--x-libraries="$(STAGING_TARGET_DIR)/usr/lib" \
--with-freetype-cflags="-I$(STAGING_TARGET_DIR)/usr/include/freetype2" \
--disable-regex \
+ --disable-wide-chars \
--disable-pty-handshake
xterm-install:
diff --git a/package/xwayland/Makefile b/package/xwayland/Makefile
new file mode 100644
index 000000000..2e0848cdd
--- /dev/null
+++ b/package/xwayland/Makefile
@@ -0,0 +1,39 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= xwayland
+PKG_VERSION:= 21.1.3
+PKG_RELEASE:= 1
+PKG_HASH:= ebc2757f39fd4c7db1654fd86591589c211aa20172d43a54f77ae567cedbf8a2
+PKG_DESCR:= wayland server
+PKG_SECTION:= x11/drivers
+PKG_DEPENDS:= wayland wayland-protocols libepoxy libtirpc
+PKG_DEPENDS+= pixman libxkbfile libxfont2 font-util libressl
+PKG_DEPENDS+= libxdmcp libxshmfence libx11 libxcb libxext
+PKG_DEPENDS+= libxau libfreetype libfontenc
+PKG_BUILDDEP:= wayland wayland-protocols libepoxy libtirpc
+PKG_BUILDDEP+= pixman xorgproto libxkbfile libXfont2 font-util
+PKG_BUILDDEP+= libressl libXdmcp libxshmfence libX11 libxcb
+PKG_BUILDDEP+= libXext libXau freetype libfontenc
+PKG_URL:= https://xorg.freedesktop.org/
+PKG_SITES:= https://www.x.org/releases/individual/xserver/
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,XWAYLAND,xwayland,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+WRKBUILD= $(WRKDIR)/$(PKG_NAME)-obj
+
+CONFIG_STYLE:= meson
+BUILD_STYLE:= meson
+INSTALL_STYLE:= meson
+
+
+xwayland-install:
+ $(INSTALL_DIR) $(IDIR_XWAYLAND)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/Xwayland \
+ $(IDIR_XWAYLAND)/usr/bin
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/xwayland/patches/patch-hw_xwayland_xwayland-glx_c b/package/xwayland/patches/patch-hw_xwayland_xwayland-glx_c
new file mode 100644
index 000000000..57cca337d
--- /dev/null
+++ b/package/xwayland/patches/patch-hw_xwayland_xwayland-glx_c
@@ -0,0 +1,12 @@
+--- xwayland-21.1.3.orig/hw/xwayland/xwayland-glx.c 2021-11-08 11:37:14.863922600 +0100
++++ xwayland-21.1.3/hw/xwayland/xwayland-glx.c 2021-11-14 05:31:50.673075155 +0100
+@@ -45,6 +45,9 @@
+
+ #include "xwayland-screen.h"
+
++#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B
++#define EGL_COLOR_COMPONENT_TYPE_EXT 0x3339
++
+ /* Can't get these from <GL/glx.h> since it pulls in client headers */
+ #define GLX_RGBA_BIT 0x00000001
+ #define GLX_WINDOW_BIT 0x00000001
diff --git a/package/xwayland/patches/patch-include_misc_h b/package/xwayland/patches/patch-include_misc_h
new file mode 100644
index 000000000..6707a70ed
--- /dev/null
+++ b/package/xwayland/patches/patch-include_misc_h
@@ -0,0 +1,51 @@
+--- xwayland-21.1.3.orig/include/misc.h 2021-11-08 11:37:14.869922600 +0100
++++ xwayland-21.1.3/include/misc.h 2021-11-14 05:17:02.367154956 +0100
+@@ -298,34 +298,12 @@ __builtin_constant_p(int x)
+ }
+ #endif
+
+-static inline uint64_t
+-bswap_64(uint64_t x)
+-{
+- return (((x & 0xFF00000000000000ull) >> 56) |
+- ((x & 0x00FF000000000000ull) >> 40) |
+- ((x & 0x0000FF0000000000ull) >> 24) |
+- ((x & 0x000000FF00000000ull) >> 8) |
+- ((x & 0x00000000FF000000ull) << 8) |
+- ((x & 0x0000000000FF0000ull) << 24) |
+- ((x & 0x000000000000FF00ull) << 40) |
+- ((x & 0x00000000000000FFull) << 56));
+-}
+-
+ #define swapll(x) do { \
+ if (sizeof(*(x)) != 8) \
+ wrong_size(); \
+ *(x) = bswap_64(*(x)); \
+ } while (0)
+
+-static inline uint32_t
+-bswap_32(uint32_t x)
+-{
+- return (((x & 0xFF000000) >> 24) |
+- ((x & 0x00FF0000) >> 8) |
+- ((x & 0x0000FF00) << 8) |
+- ((x & 0x000000FF) << 24));
+-}
+-
+ static inline Bool
+ checked_int64_add(int64_t *out, int64_t a, int64_t b)
+ {
+@@ -361,13 +339,6 @@ checked_int64_subtract(int64_t *out, int
+ *(x) = bswap_32(*(x)); \
+ } while (0)
+
+-static inline uint16_t
+-bswap_16(uint16_t x)
+-{
+- return (((x & 0xFF00) >> 8) |
+- ((x & 0x00FF) << 8));
+-}
+-
+ #define swaps(x) do { \
+ if (sizeof(*(x)) != 2) \
+ wrong_size(); \
diff --git a/package/xz/Makefile b/package/xz/Makefile
deleted file mode 100644
index d36211ac6..000000000
--- a/package/xz/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= xz
-PKG_VERSION:= 5.2.5
-PKG_RELEASE:= 1
-PKG_HASH:= f6f4910fd033078738bd82bfba4f49219d03b17eb0794eb91efbae419f4aba10
-PKG_DESCR:= compression utility
-PKG_SECTION:= app/archive
-PKG_DEPENDS:= libxz
-PKG_URL:= http://tukaani.org/xz/
-PKG_SITES:= http://tukaani.org/xz/
-PKG_LIBNAME:= libxz
-PKG_OPTS:= dev
-
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
-
-PKG_SUBPKGS:= XZ LIBXZ
-PKGSD_LIBXZ:= xz compression library
-PKGSC_LIBXZ:= libs/comp
-
-include $(ADK_TOPDIR)/mk/host.mk
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call HOST_template,XZ,xz,$(PKG_VERSION)-$(PKG_RELEASE)))
-$(eval $(call PKG_template,XZ,xz,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
-$(eval $(call PKG_template,LIBXZ,libxz,$(PKG_VERSION)-$(PKG_RELEASE),$(PKGSS_LIBXZ),$(PKGSD_LIBXZ),$(PKGSC_LIBXZ),$(PKG_OPTS)))
-
-HOST_CONFIGURE_ARGS+= --disable-shared
-
-xz-install:
- $(INSTALL_DIR) $(IDIR_XZ)/usr/bin
- $(CP) $(WRKINST)/usr/bin/* $(IDIR_XZ)/usr/bin
-
-libxz-install:
- $(INSTALL_DIR) $(IDIR_LIBXZ)/usr/lib
- $(CP) $(WRKINST)/usr/lib/liblzma.so* $(IDIR_LIBXZ)/usr/lib
-
-include $(ADK_TOPDIR)/mk/host-bottom.mk
-include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/xz/patches/patch-src_liblzma_liblzma_pc_in b/package/xz/patches/patch-src_liblzma_liblzma_pc_in
deleted file mode 100644
index 9481466af..000000000
--- a/package/xz/patches/patch-src_liblzma_liblzma_pc_in
+++ /dev/null
@@ -1,15 +0,0 @@
---- xz-5.2.2.orig/src/liblzma/liblzma.pc.in 2015-09-29 12:57:36.000000000 +0200
-+++ xz-5.2.2/src/liblzma/liblzma.pc.in 2016-11-23 16:04:15.407184892 +0100
-@@ -6,9 +6,9 @@
- #
-
- prefix=@prefix@
--exec_prefix=@exec_prefix@
--libdir=@libdir@
--includedir=@includedir@
-+exec_prefix=${prefix}
-+libdir=${prefix}/lib
-+includedir=${prefix}/include
-
- Name: liblzma
- Description: General purpose data compression library
diff --git a/package/yajl/Makefile b/package/yajl/Makefile
index f81ccf66b..321d24971 100644
--- a/package/yajl/Makefile
+++ b/package/yajl/Makefile
@@ -6,16 +6,15 @@ include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= yajl
PKG_VERSION:= 2.1.0
PKG_RELEASE:= 1
-PKG_HASH:= 510a13e0be57cd4ba99e60ac806a3635854af51316d3131d3742a90298ccde38
+PKG_HASH:= 3fb73364a5a30efe615046d07e6db9d09fd2b41c763c5f7d3bfb121cd5c5ac5a
PKG_DESCR:= small event-driven json parser
PKG_SECTION:= libs/data
PKG_BUILDDEP:= cmake-host ruby-host
PKG_URL:= http://lloyd.github.com/yajl/
-PKG_SITES:= http://github.com/lloyd/yajl/tarball/$(PKG_VERSION)/
+PKG_SITES:= https://github.com/lloyd/yajl/archive/refs/tags/
PKG_OPTS:= dev
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-WRKDIST= $(WRKDIR)/lloyd-yajl-66cb08c/
+DISTFILES:= ${PKG_VERSION}.tar.gz
include $(ADK_TOPDIR)/mk/package.mk
diff --git a/package/ympd/Makefile b/package/ympd/Makefile
deleted file mode 100644
index 785e26b12..000000000
--- a/package/ympd/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-# This file is part of the OpenADK project. OpenADK is copyrighted
-# material, please see the LICENCE file in the top-level directory.
-
-include $(ADK_TOPDIR)/rules.mk
-
-PKG_NAME:= ympd
-PKG_VERSION:= ec008a4995666d673bd4cb3926fae7f4b6aa3239
-PKG_GIT:= hash
-PKG_RELEASE:= 4
-PKG_DESCR:= standalone music player daemon web gui
-PKG_SECTION:= net/http
-PKG_DEPENDS:= libmpdclient libressl
-PKG_BUILDDEP:= cmake-host libmpdclient libressl
-PKG_URL:= http://www.ympd.org/
-PKG_SITES:= https://github.com/notandy/ympd.git
-
-include $(ADK_TOPDIR)/mk/package.mk
-
-$(eval $(call PKG_template,YMPD,ympd,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-
-CONFIG_STYLE:= cmake
-TARGET_CFLAGS+= -std=c99
-
-ympd-install:
- $(INSTALL_DIR) $(IDIR_YMPD)/usr/bin
- $(INSTALL_BIN) $(WRKINST)/usr/bin/ympd \
- $(IDIR_YMPD)/usr/bin
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/ympd/files/ympd.init b/package/ympd/files/ympd.init
deleted file mode 100644
index 6dd7af28c..000000000
--- a/package/ympd/files/ympd.init
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-#PKG ympd
-#INIT 90
-
-. /etc/rc.conf
-
-case $1 in
-autostop) ;;
-autostart)
- test x"${ympd:-NO}" = x"NO" && exit 0
- test x"$ympd" = x"DAEMON" && test -x /bin/mksh && exec mksh -T- $0 start
- exec sh $0 start
- ;;
-start)
- ympd -w 80 &
- ;;
-stop)
- kill $(pgrep -f ympd)
- ;;
-restart)
- sh $0 stop
- sh $0 start
- ;;
-*)
- echo "Usage: $0 {start | stop | restart}"
- exit 1
- ;;
-esac
-exit $?
diff --git a/package/ympd/files/ympd.postinst b/package/ympd/files/ympd.postinst
deleted file mode 100644
index abc75c6f7..000000000
--- a/package/ympd/files/ympd.postinst
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-. $IPKG_INSTROOT/etc/functions.sh
-add_rcconf ympd NO
diff --git a/package/zlib-ng/Makefile b/package/zlib-ng/Makefile
new file mode 100644
index 000000000..32fa46452
--- /dev/null
+++ b/package/zlib-ng/Makefile
@@ -0,0 +1,29 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= zlib-ng
+PKG_VERSION:= 2.1.6
+PKG_RELEASE:= 1
+PKG_HASH:= a5d504c0d52e2e2721e7e7d86988dec2e290d723ced2307145dedd06aeb6fef2
+PKG_DESCR:= implementation of the deflate compression method
+PKG_SECTION:= libs/comp
+PKG_SITES:= https://github.com/zlib-ng/zlib-ng/archive/refs/tags/
+PKG_NEEDS:= c++
+PKG_OPTS:= dev
+
+DISTFILES:= $(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,ZLIB_NG,zlib-ng,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+CONFIG_STYLE:= cmake
+
+zlib-ng-install:
+ $(INSTALL_DIR) $(IDIR_ZLIB_NG)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libz-ng*.so* \
+ $(IDIR_ZLIB_NG)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/zlib/Makefile b/package/zlib/Makefile
index 10ba76375..9d7cea2ae 100644
--- a/package/zlib/Makefile
+++ b/package/zlib/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= zlib
-PKG_VERSION:= 1.2.11
-PKG_RELEASE:= 2
-PKG_HASH:= 4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
+PKG_VERSION:= 1.3.1
+PKG_RELEASE:= 1
+PKG_HASH:= 38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32
PKG_DESCR:= implementation of the deflate compression method
PKG_SECTION:= libs/comp
PKG_URL:= http://www.zlib.net/
diff --git a/package/zsh/Makefile b/package/zsh/Makefile
index 6b5a3e5b2..076e0f871 100644
--- a/package/zsh/Makefile
+++ b/package/zsh/Makefile
@@ -4,9 +4,9 @@
include $(ADK_TOPDIR)/rules.mk
PKG_NAME:= zsh
-PKG_VERSION:= 5.7.1
+PKG_VERSION:= 5.9
PKG_RELEASE:= 1
-PKG_HASH:= 7260292c2c1d483b2d50febfa5055176bd512b32a8833b116177bf5f01e77ee8
+PKG_HASH:= 9b8d1ecedd5b5e81fbf1918e876752a7dd948e05c1a0dba10ab863842d45acd5
PKG_DESCR:= z shell
PKG_SECTION:= base/shells
PKG_DEPENDS:= libncurses
diff --git a/package/zstd/Makefile b/package/zstd/Makefile
new file mode 100644
index 000000000..79ac805b5
--- /dev/null
+++ b/package/zstd/Makefile
@@ -0,0 +1,38 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:= zstd
+PKG_VERSION:= 1.5.5
+PKG_RELEASE:= 1
+PKG_HASH:= 98e9c3d949d1b924e28e01eccb7deed865eefebf25c2f21c702e5cd5b63b85e1
+PKG_DESCR:= zstandard compression application
+PKG_SECTION:= app/archive
+PKG_SITES:= https://github.com/facebook/zstd/archive/refs/tags/
+PKG_OPTS:= dev
+
+DISTFILES:= v$(PKG_VERSION).tar.gz
+
+include ${ADK_TOPDIR}/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,ZSTD,zstd,${PKG_VERSION}-${PKG_RELEASE}))
+$(eval $(call PKG_template,ZSTD,zstd,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION),$(PKG_OPTS)))
+
+HOST_CONFIG_STYLE:= manual
+HOST_INSTALL_STYLE:= auto
+CONFIG_STYLE:= manual
+ALL_TARGET:= default
+HOST_ALL_TARGET:= default
+
+zstd-install:
+ $(INSTALL_DIR) $(IDIR_ZSTD)/usr/lib
+ $(CP) $(WRKINST)/usr/lib/libzstd*.so* \
+ $(IDIR_ZSTD)/usr/lib
+ $(INSTALL_DIR) $(IDIR_ZSTD)/usr/bin
+ $(INSTALL_BIN) $(WRKINST)/usr/bin/zstd \
+ $(IDIR_ZSTD)/usr/bin
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk
diff --git a/package/zstd/patches/patch-lib_Makefile b/package/zstd/patches/patch-lib_Makefile
new file mode 100644
index 000000000..22128cbda
--- /dev/null
+++ b/package/zstd/patches/patch-lib_Makefile
@@ -0,0 +1,11 @@
+--- zstd-1.5.5.orig/lib/Makefile 2023-04-04 22:13:52.000000000 +0200
++++ zstd-1.5.5/lib/Makefile 2024-01-17 18:12:48.257111944 +0100
+@@ -259,7 +259,7 @@ DESTDIR ?=
+ # directory variables : GNU conventions prefer lowercase
+ # see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
+ # support both lower and uppercase (BSD), use uppercase in script
+-prefix ?= /usr/local
++prefix ?= /usr
+ PREFIX ?= $(prefix)
+ exec_prefix ?= $(PREFIX)
+ EXEC_PREFIX ?= $(exec_prefix)
diff --git a/package/zstd/patches/patch-programs_Makefile b/package/zstd/patches/patch-programs_Makefile
new file mode 100644
index 000000000..b8f880ca0
--- /dev/null
+++ b/package/zstd/patches/patch-programs_Makefile
@@ -0,0 +1,11 @@
+--- zstd-1.5.5.orig/programs/Makefile 2023-04-04 22:13:52.000000000 +0200
++++ zstd-1.5.5/programs/Makefile 2024-01-17 18:13:11.620566871 +0100
+@@ -380,7 +380,7 @@ DESTDIR ?=
+ # directory variables : GNU conventions prefer lowercase
+ # see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
+ # support both lower and uppercase (BSD), use uppercase in script
+-prefix ?= /usr/local
++prefix ?= /usr
+ PREFIX ?= $(prefix)
+ exec_prefix ?= $(PREFIX)
+ bindir ?= $(exec_prefix)/bin
diff --git a/rules.mk b/rules.mk
index 758a2c163..234f5e345 100644
--- a/rules.mk
+++ b/rules.mk
@@ -76,6 +76,7 @@ ADK_TARGET_LINUX_KERNEL_GIT_VER:= $(strip $(subst ",, $(ADK_TARGET_LINUX_KERNEL_
ADK_TARGET_LINUX_KERNEL_GIT_TYPE:= $(strip $(subst ",, $(ADK_TARGET_LINUX_KERNEL_GIT_TYPE)))
ADK_TARGET_LINUX_KERNEL_DEFCONFIG:= $(strip $(subst ",, $(ADK_TARGET_LINUX_KERNEL_DEFCONFIG)))
ADK_TARGET_GENIMAGE_FILENAME:= $(strip $(subst ",, $(ADK_TARGET_GENIMAGE_FILENAME)))
+ADK_TARGET_EXTLINUX_FILENAME:= $(strip $(subst ",, $(ADK_TARGET_EXTLINUX_FILENAME)))
ADK_TARGET_ROOTDEV:= $(strip $(subst ",, $(ADK_TARGET_ROOTDEV)))
ADK_TARGET_KARCH:=$(ADK_TARGET_ARCH)
diff --git a/scripts/config.guess b/scripts/config.guess
index 8d70ec2b2..f6d217a49 100755
--- a/scripts/config.guess
+++ b/scripts/config.guess
@@ -1,12 +1,14 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2024 Free Software Foundation, Inc.
-timestamp='2020-09-19'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2024-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -27,17 +29,25 @@ timestamp='2020-09-19'
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
#
# Please send patches to <config-patches@gnu.org>.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
-Output the configuration name of the system \`$me' is run on.
+Output the configuration name of the system '$me' is run on.
Options:
-h, --help print this help, then exit
@@ -50,13 +60,13 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -84,13 +94,16 @@ if test $# != 0; then
exit 1
fi
+# Just in case it came from the environment.
+GUESS=
+
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
+# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
+# use 'HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
@@ -102,7 +115,7 @@ set_cc_for_build() {
# prevent multiple calls if $tmp is already set
test "$tmp" && return 0
: "${TMPDIR=/tmp}"
- # shellcheck disable=SC2039
+ # shellcheck disable=SC2039,SC3028
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
@@ -112,7 +125,7 @@ set_cc_for_build() {
,,) echo "int x;" > "$dummy.c"
for driver in cc gcc c89 c99 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$driver"
+ CC_FOR_BUILD=$driver
break
fi
done
@@ -133,38 +146,57 @@ fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
+ LIBC=unknown
set_cc_for_build
cat <<-EOF > "$dummy.c"
+ #if defined(__ANDROID__)
+ LIBC=android
+ #else
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
+ #elif defined(__GLIBC__)
+ LIBC=gnu
+ #elif defined(__LLVM_LIBC__)
+ LIBC=llvm
#else
#include <stdarg.h>
+ /* First heuristic to detect musl libc. */
#ifdef __DEFINED_va_list
LIBC=musl
- #else
- LIBC=gnu
+ #endif
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -176,12 +208,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- "/sbin/$sysctl" 2>/dev/null || \
- "/usr/sbin/$sysctl" 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
echo unknown)`
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
+ aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
@@ -190,13 +222,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
earmv*)
arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine="${arch}${endian}"-unknown
+ machine=${arch}${endian}-unknown
;;
- *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
os=netbsdelf
;;
@@ -217,7 +249,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
;;
esac
# Determine ABI tags.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
@@ -228,7 +260,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "$UNAME_VERSION" in
+ case $UNAME_VERSION in
Debian*)
release='-gnu'
;;
@@ -239,51 +271,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "$machine-${os}${release}${abi-}"
- exit ;;
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
*:MidnightBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
*:ekkoBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
*:SolidBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
*:OS108:*:*)
- echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:MirBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:Sortix:*:*)
- echo "$UNAME_MACHINE"-unknown-sortix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
*:Twizzler:*:*)
- echo "$UNAME_MACHINE"-unknown-twizzler
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
*:Redox:*:*)
- echo "$UNAME_MACHINE"-unknown-redox
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ GUESS=mips-dec-osf1
+ ;;
alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
case $UNAME_RELEASE in
*4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -297,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
+ case $ALPHA_CPU_TYPE in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
@@ -334,68 +372,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
+ GUESS=m68k-unknown-sysv4
+ ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-amigaos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-morphos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
*:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
+ GUESS=i370-ibm-openedition
+ ;;
*:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
+ GUESS=s390-ibm-zvmoe
+ ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
+ GUESS=powerpc-ibm-os400
+ ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix"$UNAME_RELEASE"
- exit ;;
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
+ GUESS=arm-unknown-riscos
+ ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
+ GUESS=pyramid-pyramid-svr4
+ ;;
DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
+ GUESS=sparc-icl-nx6
+ ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
set_cc_for_build
SUN_ARCH=i386
@@ -404,47 +443,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# This test works for both compilers.
if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH=x86_64
fi
fi
- echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
+ case `/usr/bin/arch -k` in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
- exit ;;
+ # Japanese Language versions have a version number like '4.1.3-JL'.
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
+ case `/bin/arch` in
sun3)
- echo m68k-sun-sunos"$UNAME_RELEASE"
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun4)
- echo sparc-sun-sunos"$UNAME_RELEASE"
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
;;
esac
- exit ;;
+ ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -454,41 +496,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
m68k:machten:*:*)
- echo m68k-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix"$UNAME_RELEASE"
- exit ;;
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -516,29 +558,29 @@ EOF
dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
+ GUESS=powerpc-motorola-powermax
+ ;;
Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
+ GUESS=powerpc-harris-powerunix
+ ;;
m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
+ GUESS=m88k-harris-cxux7
+ ;;
m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
+ GUESS=m88k-motorola-sysv4
+ ;;
m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -547,44 +589,45 @@ EOF
if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
test "$TARGET_BINARY_INTERFACE"x = x
then
- echo m88k-dg-dgux"$UNAME_RELEASE"
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
else
- echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
fi
else
- echo i586-dg-dgux"$UNAME_RELEASE"
+ GUESS=i586-dg-dgux$UNAME_RELEASE
fi
- exit ;;
+ ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
+ GUESS=m88k-dolphin-sysv3
+ ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
+ GUESS=m88k-tektronix-sysv3
+ ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
+ GUESS=m68k-tektronix-bsd
+ ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
- exit ;;
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
+ GUESS=i386-ibm-aix
+ ;;
ia64:AIX:*:*)
if test -x /usr/bin/oslevel ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
set_cc_for_build
@@ -601,16 +644,16 @@ EOF
EOF
if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
- echo "$SYSTEM_NAME"
+ GUESS=$SYSTEM_NAME
else
- echo rs6000-ibm-aix3.2.5
+ GUESS=rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
+ GUESS=rs6000-ibm-aix3.2.4
else
- echo rs6000-ibm-aix3.2
+ GUESS=rs6000-ibm-aix3.2
fi
- exit ;;
+ ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
@@ -619,48 +662,48 @@ EOF
IBM_ARCH=powerpc
fi
if test -x /usr/bin/lslpp ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
*:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
+ GUESS=rs6000-ibm-aix
+ ;;
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
+ GUESS=romp-ibm-bsd4.4
+ ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
+ GUESS=rs6000-bull-bosx
+ ;;
DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
+ GUESS=m68k-bull-sysv3
+ ;;
9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
+ GUESS=m68k-hp-bsd
+ ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
+ GUESS=m68k-hp-bsd4.4
+ ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- case "$UNAME_MACHINE" in
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ case $UNAME_MACHINE in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if test -x /usr/bin/getconf; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "$sc_cpu_version" in
+ case $sc_cpu_version in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "$sc_kernel_bits" in
+ case $sc_kernel_bits in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
@@ -727,12 +770,12 @@ EOF
HP_ARCH=hppa64
fi
fi
- echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
- exit ;;
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux"$HPUX_REV"
- exit ;;
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
3050*:HI-UX:*:*)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -762,36 +805,36 @@ EOF
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
- echo hppa1.1-hp-bsd
- exit ;;
+ GUESS=hppa1.1-hp-bsd
+ ;;
9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
+ GUESS=hppa1.0-hp-bsd
+ ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
+ GUESS=hppa1.0-hp-mpeix
+ ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
- echo hppa1.1-hp-osf
- exit ;;
+ GUESS=hppa1.1-hp-osf
+ ;;
hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
+ GUESS=hppa1.0-hp-osf
+ ;;
i*86:OSF1:*:*)
if test -x /usr/sbin/sysversion ; then
- echo "$UNAME_MACHINE"-unknown-osf1mk
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
else
- echo "$UNAME_MACHINE"-unknown-osf1
+ GUESS=$UNAME_MACHINE-unknown-osf1
fi
- exit ;;
+ ;;
parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
+ GUESS=hppa1.1-hp-lites
+ ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
+ GUESS=c1-convex-bsd
+ ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
@@ -799,17 +842,18 @@ EOF
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
+ GUESS=c34-convex-bsd
+ ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
+ GUESS=c38-convex-bsd
+ ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
+ GUESS=c4-convex-bsd
+ ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
CRAY*[A-Z]90:*:*:*)
echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -817,112 +861,153 @@ EOF
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
*:BSD/OS:*:*)
- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
arm:FreeBSD:*:*)
UNAME_PROCESSOR=`uname -p`
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
else
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
fi
- exit ;;
+ ;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- case "$UNAME_PROCESSOR" in
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
i*:CYGWIN*:*)
- echo "$UNAME_MACHINE"-pc-cygwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
*:MINGW64*:*)
- echo "$UNAME_MACHINE"-pc-mingw64
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
*:MINGW*:*)
- echo "$UNAME_MACHINE"-pc-mingw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
*:MSYS*:*)
- echo "$UNAME_MACHINE"-pc-msys
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
i*:PW*:*)
- echo "$UNAME_MACHINE"-pc-pw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
+ *:SerenityOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-serenity
+ ;;
*:Interix*:*)
- case "$UNAME_MACHINE" in
+ case $UNAME_MACHINE in
x86)
- echo i586-pc-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
IA64)
- echo ia64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
esac ;;
i*:UWIN*:*)
- echo "$UNAME_MACHINE"-pc-uwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-pc-cygwin
- exit ;;
+ GUESS=x86_64-pc-cygwin
+ ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
*:GNU:*:*)
# the GNU system
- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
- exit ;;
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
- exit ;;
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
+ x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+ GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+ ;;
+ *:[Mm]anagarm:*:*)
+ GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+ ;;
*:Minix:*:*)
- echo "$UNAME_MACHINE"-unknown-minix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
aarch64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ set_cc_for_build
+ CPU=$UNAME_MACHINE
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ ABI=64
+ sed 's/^ //' << EOF > "$dummy.c"
+ #ifdef __ARM_EABI__
+ #ifdef __ARM_PCS_VFP
+ ABI=eabihf
+ #else
+ ABI=eabi
+ #endif
+ #endif
+EOF
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+ eval "$cc_set_abi"
+ case $ABI in
+ eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
+ esac
+ fi
+ GUESS=$CPU-unknown-linux-$LIBCABI
+ ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -935,60 +1020,72 @@ EOF
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
arm*:Linux:*:*)
set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
else
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
fi
fi
- exit ;;
+ ;;
avr32*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
cris:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
crisv32:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
e2k:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
frv:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
hexagon:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
ia64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
k1om:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ kvx:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ kvx:cos:*:*)
+ GUESS=$UNAME_MACHINE-unknown-cos
+ ;;
+ kvx:mbr:*:*)
+ GUESS=$UNAME_MACHINE-unknown-mbr
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m32r*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m68*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
mips:Linux:*:* | mips64:Linux:*:*)
set_cc_for_build
IS_GLIBC=0
@@ -1033,123 +1130,135 @@ EOF
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
- PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
- *) echo hppa-unknown-linux-"$LIBC" ;;
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
esac
- exit ;;
+ ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-"$LIBC"
- exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
sh64*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sh*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
tile*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
vax:Linux:*:*)
- echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
x86_64:Linux:*:*)
set_cc_for_build
+ CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
- if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_X32 >/dev/null
- then
- LIBCABI="$LIBC"x32
- fi
+ ABI=64
+ sed 's/^ //' << EOF > "$dummy.c"
+ #ifdef __i386__
+ ABI=x86
+ #else
+ #ifdef __ILP32__
+ ABI=x32
+ #endif
+ #endif
+EOF
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+ eval "$cc_set_abi"
+ case $ABI in
+ x86) CPU=i686 ;;
+ x32) LIBCABI=${LIBC}x32 ;;
+ esac
fi
- echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
- exit ;;
+ GUESS=$CPU-pc-linux-$LIBCABI
+ ;;
xtensa*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
+ GUESS=i386-sequent-sysv4
+ ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
+ # If we were able to find 'uname', then EMX Unix compatibility
# is probably installed.
- echo "$UNAME_MACHINE"-pc-os2-emx
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
i*86:XTS-300:*:STOP)
- echo "$UNAME_MACHINE"-unknown-stop
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
i*86:atheos:*:*)
- echo "$UNAME_MACHINE"-unknown-atheos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
i*86:syllable:*:*)
- echo "$UNAME_MACHINE"-pc-syllable
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
i*86:*DOS:*:*)
- echo "$UNAME_MACHINE"-pc-msdosdjgpp
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
i*86:*:4.*:*)
UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
fi
- exit ;;
+ ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
@@ -1157,12 +1266,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1172,11 +1281,11 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv32
+ GUESS=$UNAME_MACHINE-pc-sysv32
fi
- exit ;;
+ ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1184,31 +1293,31 @@ EOF
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
+ GUESS=i586-pc-msdosdjgpp
+ ;;
Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
+ GUESS=i386-pc-mach3
+ ;;
paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
+ GUESS=i860-intel-osf1
+ ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
fi
- exit ;;
+ ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
- echo m68010-convergent-sysv
- exit ;;
+ GUESS=m68010-convergent-sysv
+ ;;
mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
+ GUESS=m68k-convergent-sysv
+ ;;
M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
+ GUESS=m68k-diab-dnix
+ ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
@@ -1233,116 +1342,119 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
+ GUESS=m68k-atari-sysv4
+ ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo "$UNAME_MACHINE"-sni-sysv4
+ GUESS=$UNAME_MACHINE-sni-sysv4
else
- echo ns32k-sni-sysv
+ GUESS=ns32k-sni-sysv
fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ ;;
+ PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ GUESS=i586-unisys-sysv4
+ ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
+ GUESS=i860-stratus-sysv4
+ ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo "$UNAME_MACHINE"-stratus-vos
- exit ;;
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
+ GUESS=hppa1.1-stratus-vos
+ ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
+ GUESS=mips-sony-newsos6
+ ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if test -d /usr/nec; then
- echo mips-nec-sysv"$UNAME_RELEASE"
+ GUESS=mips-nec-sysv$UNAME_RELEASE
else
- echo mips-unknown-sysv"$UNAME_RELEASE"
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
fi
- exit ;;
+ ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
+ GUESS=powerpc-be-beos
+ ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
+ GUESS=powerpc-apple-beos
+ ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
+ GUESS=i586-pc-beos
+ ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
- x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
+ GUESS=i586-pc-haiku
+ ;;
+ ppc:Haiku:*:*) # Haiku running on Apple PowerPC
+ GUESS=powerpc-apple-haiku
+ ;;
+ *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
+ GUESS=$UNAME_MACHINE-unknown-haiku
+ ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
*:Rhapsody:*:*)
- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
arm64:Darwin:*:*)
- echo aarch64-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
@@ -1378,109 +1490,122 @@ EOF
# uname -m returns i386 or x86_64
UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
*:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
+ GUESS=i386-pc-qnx
+ ;;
NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
NSV-*:NONSTOP_KERNEL:*:*)
- echo nsv-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
*:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
+ GUESS=mips-compaq-nonstopux
+ ;;
BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
+ GUESS=bs2000-siemens-sysv
+ ;;
DS/*:UNIX_System_V:*:*)
- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- # shellcheck disable=SC2154
- if test "$cputype" = 386; then
+ if test "${cputype-}" = 386; then
UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
fi
- echo "$UNAME_MACHINE"-unknown-plan9
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
*:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
+ GUESS=pdp10-unknown-tops10
+ ;;
*:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
+ GUESS=pdp10-unknown-tenex
+ ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
+ GUESS=pdp10-dec-tops20
+ ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
+ GUESS=pdp10-xkl-tops20
+ ;;
*:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
+ GUESS=pdp10-unknown-tops20
+ ;;
*:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
+ GUESS=pdp10-unknown-its
+ ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
- exit ;;
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "$UNAME_MACHINE" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
esac ;;
*:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
+ GUESS=i386-pc-xenix
+ ;;
i*86:skyos:*:*)
- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
- exit ;;
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
i*86:rdos:*:*)
- echo "$UNAME_MACHINE"-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo "$UNAME_MACHINE"-pc-aros
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ i*86:Fiwix:*:*)
+ GUESS=$UNAME_MACHINE-pc-fiwix
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
x86_64:VMkernel:*:*)
- echo "$UNAME_MACHINE"-unknown-esx
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
amd64:Isilon\ OneFS:*:*)
- echo x86_64-unknown-onefs
- exit ;;
+ GUESS=x86_64-unknown-onefs
+ ;;
*:Unleashed:*:*)
- echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
+ *:Ironclad:*:*)
+ GUESS=$UNAME_MACHINE-unknown-ironclad
+ ;;
esac
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
# No uname command or uname output not recognized.
set_cc_for_build
cat > "$dummy.c" <<EOF
@@ -1612,7 +1737,7 @@ main ()
}
EOF
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
@@ -1620,7 +1745,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
echo "$0: unable to guess system type" >&2
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <<EOF
@@ -1637,14 +1762,16 @@ This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite *all*
copies of config.guess and config.sub with the latest versions from:
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
and
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
EOF
-year=`echo $timestamp | sed 's,-.*,,'`
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
# shellcheck disable=SC2003
-if test "`expr "\`date +%Y\`" - "$year"`" -lt 3 ; then
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
cat >&2 <<EOF
If $0 has already been updated, send the following data and any
diff --git a/scripts/config.sub b/scripts/config.sub
index 111b01fc2..2c6a07ab3 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -1,12 +1,14 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2024 Free Software Foundation, Inc.
-timestamp='2020-09-08'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2024-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -33,7 +35,7 @@ timestamp='2020-09-08'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -50,6 +52,13 @@ timestamp='2020-09-08'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
@@ -67,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@@ -112,14 +121,16 @@ esac
# Split fields of configuration type
# shellcheck disable=SC2162
+saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
+IFS=$saved_IFS
# Separate into logical components for further validation
case $1 in
*-*-*-*-*)
- echo Invalid configuration \`"$1"\': more than four components >&2
+ echo "Invalid configuration '$1': more than four components" >&2
exit 1
;;
*-*-*-*)
@@ -134,7 +145,8 @@ case $1 in
nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
- | storm-chaos* | os2-emx* | rtmk-nova*)
+ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
+ | windows-* )
basic_machine=$field1
basic_os=$maybe_os
;;
@@ -163,6 +175,10 @@ case $1 in
basic_machine=$field1
basic_os=$field2
;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
+ ;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
@@ -922,11 +938,13 @@ case $basic_machine in
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
+ IFS=$saved_IFS
;;
- # We use `pc' rather than `unknown'
+ # We use 'pc' rather than 'unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
@@ -1003,6 +1021,11 @@ case $cpu-$vendor in
;;
# Here we normalize CPU types with a missing or matching vendor
+ armh-unknown | armh-alt)
+ cpu=armv7l
+ vendor=alt
+ basic_os=${basic_os:-linux-gnueabihf}
+ ;;
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
@@ -1053,7 +1076,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
cpu=i686
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1104,7 +1127,7 @@ case $cpu-$vendor in
xscale-* | xscalee[bl]-*)
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
- arm64-*)
+ arm64-* | aarch64le-*)
cpu=aarch64
;;
@@ -1158,14 +1181,14 @@ case $cpu-$vendor in
case $cpu in
1750a | 580 \
| a29k \
- | aarch64 | aarch64_be \
+ | aarch64 | aarch64_be | aarch64c | arm64ec \
| abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
| amdgcn \
- | arc | arceb \
+ | arc | arceb | arc32 | arc64 \
| arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
@@ -1177,46 +1200,29 @@ case $cpu-$vendor in
| d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | javascript \
| h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
- | kvx \
| k1om \
+ | kvx \
| le32 | le64 \
| lm32 \
+ | loongarch32 | loongarch64 \
| m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64eb | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
+ | mips* \
| mmix \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
+ | nanomips* \
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
@@ -1230,7 +1236,7 @@ case $cpu-$vendor in
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
- | riscv | riscv32 | riscv64 \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
| rl78 | romp | rs6000 | rx \
| s390 | s390x \
| score \
@@ -1242,11 +1248,13 @@ case $cpu-$vendor in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \
| tahoe \
+ | thumbv7* \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
+ | vc4 \
| visium \
| w65 \
| wasm32 | wasm64 \
@@ -1258,7 +1266,7 @@ case $cpu-$vendor in
;;
*)
- echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
exit 1
;;
esac
@@ -1279,34 +1287,45 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if test x$basic_os != x
+if test x"$basic_os" != x
then
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
# set os.
+obj=
case $basic_os in
gnu/linux*)
kernel=linux
- os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+ ;;
+ os2-emx)
+ kernel=os2
+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
;;
nto-qnx*)
kernel=nto
- os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
;;
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read kernel os <<EOF
$basic_os
EOF
+ IFS=$saved_IFS
;;
# Default OS when just kernel was specified
nto*)
kernel=nto
- os=`echo $basic_os | sed -e 's|nto|qnx|'`
+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
;;
linux*)
kernel=linux
- os=`echo $basic_os | sed -e 's|linux|gnu|'`
+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+ ;;
+ managarm*)
+ kernel=managarm
+ os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
;;
*)
kernel=
@@ -1327,7 +1346,7 @@ case $os in
os=cnk
;;
solaris1 | solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
;;
solaris)
os=solaris2
@@ -1356,7 +1375,7 @@ case $os in
os=sco3.2v4
;;
sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
;;
sco*v* | scout)
# Don't match below
@@ -1432,7 +1451,7 @@ case $os in
;;
# Preserve the version number of sinix5.
sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ os=`echo "$os" | sed -e 's|sinix|sysv|'`
;;
sinix*)
os=sysv4
@@ -1473,10 +1492,16 @@ case $os in
os=eabi
;;
*)
- os=elf
+ os=
+ obj=elf
;;
esac
;;
+ aout* | coff* | elf* | pe*)
+ # These are machine code file formats, not OSes
+ obj=$os
+ os=
+ ;;
*)
# No normalization, but not necessarily accepted, that comes below.
;;
@@ -1495,12 +1520,15 @@ else
# system, and we'll never get to this point.
kernel=
+obj=
case $cpu-$vendor in
score-*)
- os=elf
+ os=
+ obj=elf
;;
spu-*)
- os=elf
+ os=
+ obj=elf
;;
*-acorn)
os=riscix1.2
@@ -1510,28 +1538,35 @@ case $cpu-$vendor in
os=gnu
;;
arm*-semi)
- os=aout
+ os=
+ obj=aout
;;
c4x-* | tic4x-*)
- os=coff
+ os=
+ obj=coff
;;
c8051-*)
- os=elf
+ os=
+ obj=elf
;;
clipper-intergraph)
os=clix
;;
hexagon-*)
- os=elf
+ os=
+ obj=elf
;;
tic54x-*)
- os=coff
+ os=
+ obj=coff
;;
tic55x-*)
- os=coff
+ os=
+ obj=coff
;;
tic6x-*)
- os=coff
+ os=
+ obj=coff
;;
# This must come before the *-dec entry.
pdp10-*)
@@ -1553,19 +1588,24 @@ case $cpu-$vendor in
os=sunos3
;;
m68*-cisco)
- os=aout
+ os=
+ obj=aout
;;
mep-*)
- os=elf
+ os=
+ obj=elf
;;
mips*-cisco)
- os=elf
+ os=
+ obj=elf
;;
- mips*-*)
- os=elf
+ mips*-*|nanomips*-*)
+ os=
+ obj=elf
;;
or32-*)
- os=coff
+ os=
+ obj=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=sysv3
@@ -1574,7 +1614,8 @@ case $cpu-$vendor in
os=sunos4.1.1
;;
pru-*)
- os=elf
+ os=
+ obj=elf
;;
*-be)
os=beos
@@ -1655,10 +1696,12 @@ case $cpu-$vendor in
os=uxpv
;;
*-rom68k)
- os=coff
+ os=
+ obj=coff
;;
*-*bug)
- os=coff
+ os=
+ obj=coff
;;
*-apple)
os=macos
@@ -1676,13 +1719,20 @@ esac
fi
-# Now, validate our (potentially fixed-up) OS.
+# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
+
case $os in
- # Sometimes we do "kernel-abi", so those need to count as OSes.
- musl* | newlib* | uclibc*)
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ llvm* | musl* | newlib* | relibc* | uclibc*)
;;
- # Likewise for "kernel-libc"
- eabi | eabihf | gnueabi | gnueabihf)
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
+ ;;
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
+ ;;
+ # See `case $cpu-$os` validation below
+ ghcjs)
;;
# Now accept the basic system types.
# The portable systems comes first.
@@ -1692,20 +1742,20 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
| hiux* | abug | nacl* | netware* | windows* \
- | os9* | macos* | osx* | ios* \
+ | os9* | macos* | osx* | ios* | tvos* | watchos* \
| mpw* | magic* | mmixware* | mon960* | lnews* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* | twizzler* \
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | bosx* | nextstep* | cxux* | oabi* \
+ | ptx* | ecoff* | winnt* | domain* | vsta* \
| udi* | lites* | ieee* | go32* | aux* | hcos* \
- | chorusrdb* | cegcc* | glidix* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | chorusrdb* | cegcc* | glidix* | serenity* \
+ | cygwin* | msys* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1717,44 +1767,117 @@ case $os in
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
- | nsk* | powerunix* | genode* | zvmoe* | qnx* )
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+ | fiwix* | mlibc* | cos* | mbr* | ironclad* )
;;
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
;;
+ # This refers to builds using the UEFI calling convention
+ # (which depends on the architecture) and PE file format.
+ # Note that this is both a different calling convention and
+ # different file format than that of GNU-EFI
+ # (x86_64-w64-mingw32).
+ uefi)
+ ;;
none)
;;
+ kernel* | msvc* )
+ # Restricted further below
+ ;;
+ '')
+ if test x"$obj" = x
+ then
+ echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
+ fi
+ ;;
+ *)
+ echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+ exit 1
+ ;;
+esac
+
+case $obj in
+ aout* | coff* | elf* | pe*)
+ ;;
+ '')
+ # empty is fine
+ ;;
*)
- echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+ # The "javascript-unknown-ghcjs" triple is used by GHC; we
+ # accept it here in order to tolerate that, but reject any
+ # variations.
+ javascript-ghcjs)
+ ;;
+ javascript-* | *-ghcjs)
+ echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1
;;
esac
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
-case $kernel-$os in
- linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+case $kernel-$os-$obj in
+ linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+ | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+ | linux-relibc*- | linux-uclibc*- )
;;
- uclinux-uclibc* )
+ uclinux-uclibc*- )
;;
- -dietlibc* | -newlib* | -musl* | -uclibc* )
+ managarm-mlibc*- | managarm-kernel*- )
+ ;;
+ windows*-msvc*-)
+ ;;
+ -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+ | -uclibc*- )
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
- echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
exit 1
;;
- kfreebsd*-gnu* | kopensolaris*-gnu*)
+ -kernel*- )
+ echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+ exit 1
;;
- nto-qnx*)
+ *-kernel*- )
+ echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+ exit 1
;;
- *-eabi* | *-gnueabi*)
+ *-msvc*- )
+ echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu*- | kopensolaris*-gnu*-)
+ ;;
+ vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+ ;;
+ nto-qnx*-)
+ ;;
+ os2-emx-)
;;
- -*)
+ *-eabi*- | *-gnueabi*-)
+ ;;
+ none--*)
+ # None (no kernel, i.e. freestanding / bare metal),
+ # can be paired with an machine code file format
+ ;;
+ -*-)
# Blank kernel with real OS is always fine.
;;
- *-*)
- echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ --*)
+ # Blank kernel and OS with real machine code file format is always fine.
+ ;;
+ *-*-*)
+ echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1
;;
esac
@@ -1837,7 +1960,7 @@ case $vendor in
;;
esac
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
exit
# Local variables:
diff --git a/scripts/create.sh b/scripts/create.sh
index 1d0c467d0..cee6b5bcb 100755
--- a/scripts/create.sh
+++ b/scripts/create.sh
@@ -2,7 +2,7 @@
#-
# Copyright © 2010, 2011, 2012
# Thorsten Glaser <tg@mirbsd.org>
-# Copyright © 2010-2014
+# Copyright © 2010-2024
# Waldemar Brodkorb <wbx@openadk.org>
#
# Provided that these terms and disclaimer and all copyright notices
@@ -56,7 +56,7 @@ Syntax: $me [-c cfgfssize] [+g] [-i imagesize] [-p panictime]
Explanation/Defaults:
-c: minimum 0, maximum 5, default 1 (MiB)
-g: enable installing GNU GRUB 2
- -i: total image, default 512 (MiB; max. approx. 2 TiB)
+ -i: total image, default 2048 (MiB; max. approx. 2 TiB)
-p: default 10 (seconds; 0 disables; max. 300)
-s: default 115200 (bps, others: 9600 19200 38400 57600)
-t: enable serial console (+t disables it, default)
@@ -67,7 +67,7 @@ EOF
cfgfs=1
usegrub=0
-tgtmib=512
+tgtmib=2048
panicreboot=10
speed=115200
serial=0
@@ -238,7 +238,7 @@ print -n "$ostr" | \
print Extracting installation archive...
mkdir "$T/src"
-xz -dc "$src" | (cd "$T/src"; tar -xpf -)
+gunzip -dc "$src" | (cd "$T/src"; tar -xpf -)
cd "$T/src"
rnddev=/dev/urandom
[[ -c /dev/arandom ]] && rnddev=/dev/arandom
@@ -275,7 +275,7 @@ fi
print "Creating ext2fs filesystem image..."
cd "$T"
f=0
-genext2fs -U -N 32768 -b $((partfssz)) -d src fsimg || f=1
+genext2fs -U -N 65536 -b $((partfssz)) -d src fsimg || f=1
if (( !f )); then
# use bc(1): this may be over the shell’s 32-bit arithmetics
wantsz=$($bc <<<"$((partfssz))*1024")
diff --git a/scripts/flash-uboot.sh b/scripts/flash-uboot.sh
new file mode 100755
index 000000000..e519d6a58
--- /dev/null
+++ b/scripts/flash-uboot.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+OUTPUT_DIR=$1
+
+if ! test -d "${OUTPUT_DIR}" ; then
+ echo "ERROR: no output directory specified."
+ echo "Usage: $0 OUTPUT_DIR"
+ echo ""
+ echo "Arguments:"
+ echo " OUTPUT_DIR The OpenADK output directory."
+ exit 1
+fi
+
+./host_x86_64-linux-gnu/usr/bin/openocd \
+ -f interface/stlink.cfg -f board/stm32f7discovery.cfg \
+-c "init" \
+-c "reset init" \
+-c "flash probe 0" \
+-c "flash info 0" \
+-c "flash write_image erase ${OUTPUT_DIR}/u-boot-dtb.bin 0x08000000" \
+-c "reset run" \
+-c "shutdown"
diff --git a/scripts/flash.sh b/scripts/flash.sh
index 3763cb7af..d5343a7fb 100755
--- a/scripts/flash.sh
+++ b/scripts/flash.sh
@@ -8,7 +8,7 @@ if ! test -d "${OUTPUT_DIR}" ; then
echo "Usage: $0 OUTPUT_DIR BOARD_NAME"
echo ""
echo "Arguments:"
- echo " OUTPUT_DIR The Buildroot output directory."
+ echo " OUTPUT_DIR The OpenADK output directory."
echo " BOARD_NAME One of the available boards among:"
echo " stm32f429discovery, stm32f429disc1"
exit 1
diff --git a/scripts/install.sh b/scripts/install.sh
index 9f0debac9..867a4154f 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#-
-# Copyright © 2010-2019
+# Copyright © 2010-2023
# Waldemar Brodkorb <wbx@openadk.org>
# Thorsten Glaser <tg@mirbsd.org>
#
@@ -155,7 +155,7 @@ tgt=$2
src=$3
case $target {
-(banana-pro|orange-pi0|pcengines-apu|phytec-imx6|phytec-wega|raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi3p|raspberry-pi3p-64|solidrun-imx6|solidrun-clearfog|default) ;;
+(atmel-ngw100|banana-pro|banana-pro-zero|orange-pi0|pcengines-apu|phytec-imx6|phytec-wega|raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi4|raspberry-pi4-64|raspberry-pi5|rockpi4-plus|solidrun-imx6|solidrun-clearfog|imgtec-ci20|default) ;;
(*)
print -u2 "Unknown target '$target', exiting"
exit 1 ;;
@@ -178,7 +178,7 @@ case $ostype {
basedev=$tgt
rootpart=${basedev}s1
datapart=${basedev}s2
- if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi3p || $target = raspberry-pi3p-64 || $target = phytec-wega ]]; then
+ if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi4 || $target = raspberry-pi4-64 || $target = raspberry-pi5 || $target = phytec-wega ]]; then
bootpart=${basedev}s1
rootpart=${basedev}s2
datapart=${basedev}s3
@@ -221,7 +221,13 @@ case $ostype {
;;
(Linux)
basedev=$tgt
- partitionsep=""
+
+ if [[ "$tgt" == *"nvme0n1"* ]] || [[ "$tgt" == *"mmcblk"* ]]; then
+ partitionsep="p"
+ else
+ partitionsep=""
+ fi
+
if [[ $basedev = /dev/loop* ]]; then
(( quiet )) || print "${tgt} is a loop device"
partitionsep=p
@@ -229,7 +235,7 @@ case $ostype {
rootpart=${basedev}${partitionsep}1
datapart=${basedev}${partitionsep}2
- if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi3p || $target = raspberry-pi3p-64 ]]; then
+ if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi4 || $target = raspberry-pi4-64 || $target = raspberry-pi5 ]]; then
bootpart=${basedev}${partitionsep}1
rootpart=${basedev}${partitionsep}2
datapart=${basedev}${partitionsep}3
@@ -294,7 +300,7 @@ syspartno=0
# data - flexible (parameter)
# system - everything else
-if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi3p || $target = raspberry-pi3p-64 || $target = phytec-wega ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi4 || $target = raspberry-pi4-64 || $target = raspberry-pi5 || $target = phytec-wega ]]; then
syspartno=1
bootfssz=100
if (( grub )); then
@@ -351,7 +357,7 @@ fi
#(( partofs = ((coreendsec / secs) + 1) * secs ))
# we just use 2048 all the time, since some loaders are longer
partofs=2048
-if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi3p || $target = raspberry-pi3p-64 || $target = phytec-wega ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi4 || $target = raspberry-pi4-64 || $target = raspberry-pi5 || $target = phytec-wega || $target = rockpi4-plus ]]; then
(( spartofs = partofs + (100 * 2048) ))
else
spartofs=$partofs
@@ -462,7 +468,7 @@ if (( datafssz )); then
dd of="$T/firsttrack" conv=notrunc bs=1 seek=$((0x1CE)) 2>/dev/null
fi
-if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi3p || $target = raspberry-pi3p-64 || $target = phytec-wega ]]; then
+if [[ $target = raspberry-pi || $target = raspberry-pi0 || $target = raspberry-pi2 || $target = raspberry-pi3 || $target = raspberry-pi3-64 || $target = raspberry-pi4 || $target = raspberry-pi4-64 || $target = raspberry-pi5 || $target = phytec-wega ]]; then
# move system and data partition from #0/#1 to #1/#2
dd if="$T/firsttrack" bs=1 skip=$((0x1BE)) count=32 of="$T/x" 2>/dev/null
dd of="$T/firsttrack" conv=notrunc bs=1 seek=$((0x1CE)) if="$T/x" 2>/dev/null
@@ -545,7 +551,15 @@ fi
fwdir=$(dirname "$src")
case $target {
-(banana-pro|orange-pi0)
+(rockpi4-plus)
+ dd if="$fwdir/idbloader.img" of="$tgt" bs=512 seek=64 > /dev/null 2>&1
+ dd if="$fwdir/u-boot.itb" of="$tgt" bs=512 seek=16384 > /dev/null 2>&1
+ ;;
+(imgtec-ci20)
+ dd if="$fwdir/u-boot-spl.bin" of="$tgt" obs=512 seek=1 > /dev/null 2>&1
+ dd if="$fwdir/u-boot-dtb.img" of="$tgt" obs=1k seek=14 > /dev/null 2>&1
+ ;;
+(banana-pro|banana-pro-zero|orange-pi0)
dd if="$fwdir/u-boot-sunxi-with-spl.bin" of="$tgt" bs=1024 seek=8 > /dev/null 2>&1
;;
(solidrun-clearfog)
@@ -555,7 +569,7 @@ case $target {
dd if="$fwdir/SPL" of="$tgt" bs=1024 seek=1 > /dev/null 2>&1
dd if="$fwdir/u-boot.img" of="$tgt" bs=1024 seek=69 > /dev/null 2>&1
;;
-(raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi3p|raspberry-pi3p-64)
+(raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi4|raspberry-pi4-64|raspberry-pi5)
(( noformat )) || create_fs "$bootpart" ADKBOOT vfat
;;
(phytec-wega)
@@ -563,8 +577,15 @@ case $target {
;;
}
-(( noformat )) || create_fs "$rootpart" ADKROOT ext4
-(( noformat )) || tune_fs "$rootpart"
+case $target {
+(atmel-ngw100)
+ (( noformat )) || create_fs "$rootpart" ADKROOT ext2
+ (( noformat )) || tune_fs "$rootpart"
+ ;;
+(*)
+ (( noformat )) || create_fs "$rootpart" ADKROOT ext4
+ (( noformat )) || tune_fs "$rootpart"
+}
(( quiet )) || print Extracting installation archive...
mount_fs "$rootpart" "$R" ext4
@@ -575,10 +596,10 @@ if (( datafssz )); then
((keep)) || create_fs "$datapart" ADKDATA ext4
((keep)) || tune_fs "$datapart"
case $target {
- (raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi3p|raspberry-pi3p-64|phytec-wega)
+ (raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi4|raspberry-pi4-64|raspberry-pi5|phytec-wega)
echo "/dev/mmcblk0p3 /data ext4 rw 0 0" >> "$R"/etc/fstab
;;
- (banana-pro|orange-pi0|solidrun-clearfog)
+ (banana-pro|orange-pi0|solidrun-clearfog|rockpi4-plus)
echo "/dev/mmcblk0p2 /data ext4 rw 0 0" >> "$R"/etc/fstab
;;
(solidrun-imx6|phytec-imx6)
@@ -597,7 +618,7 @@ fi
(( quiet )) || print Finishing up with bootloader and kernel ...
case $target {
-(raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi3p|raspberry-pi3p-64)
+(raspberry-pi|raspberry-pi0|raspberry-pi2|raspberry-pi3|raspberry-pi3-64|raspberry-pi4|raspberry-pi4-64|raspberry-pi5)
mount_fs "$bootpart" "$B" vfat
for x in "$R"/boot/*; do
[[ -e "$x" ]] && mv -f "$R"/boot/* "$B/"
@@ -611,7 +632,11 @@ case $target {
mkdir "$B/"overlays
for x in "$fwdir"/overlays/*.dtbo; do
y=$(basename ${x} .dtbo)
- [[ -e "$x" ]] && cp "$fwdir"/overlays/${y}.dtbo "$B/"overlays/${y}.dtb
+ [[ -e "$x" ]] && cp "$fwdir"/overlays/${y}.dtbo "$B/"overlays/${y}.dtbo
+ done
+ for x in "$fwdir"/overlays/*.dtb; do
+ y=$(basename ${x} .dtb)
+ [[ -e "$x" ]] && cp "$fwdir"/overlays/${y}.dtb "$B/"overlays/${y}.dtb
done
umount_fs "$B"
;;
@@ -627,6 +652,15 @@ case $target {
done
umount_fs "$B"
;;
+(rockpi4-plus)
+ for x in "$fwdir"/*.dtb; do
+ [[ -e "$x" ]] && cp "$fwdir"/*.dtb "$R/boot/"
+ break
+ done
+ mkimage -A arm64 -O linux -T script -C none -a 0 -e 0 \
+ -n "RockPI4-Plus" \
+ -d $fwdir/boot.script.rockpi4 $R/boot/boot.scr.uimg
+ ;;
(solidrun-clearfog)
for x in "$fwdir"/*.dtb; do
[[ -e "$x" ]] && cp "$fwdir"/*.dtb "$R/boot/"
@@ -672,6 +706,15 @@ case $target {
-n "BananaPro" \
-d $fwdir/boot.script.bpi $R/boot/boot.scr.uimg
;;
+(banana-pro-zero)
+ for x in "$fwdir"/*.dtb; do
+ [[ -e "$x" ]] && cp "$fwdir"/*.dtb "$R/boot/"
+ break
+ done
+ mkimage -A arm -O linux -T script -C none -a 0 -e 0 \
+ -n "BananaProZero" \
+ -d $fwdir/boot.script.bpizero $R/boot/boot.scr.uimg
+ ;;
}
cd "$R"
diff --git a/scripts/kflash.py b/scripts/kflash.py
new file mode 100755
index 000000000..b1fe4fcac
--- /dev/null
+++ b/scripts/kflash.py
@@ -0,0 +1,1566 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from __future__ import (division, print_function)
+
+import sys
+import time
+import zlib
+import copy
+import struct
+import binascii
+import hashlib
+import argparse
+import math
+import zipfile, tempfile
+import json
+import re
+import os
+
+
+class KFlash:
+ print_callback = None
+
+ def __init__(self, print_callback = None):
+ self.killProcess = False
+ self.loader = None
+ KFlash.print_callback = print_callback
+
+ @staticmethod
+ def log(*args, **kwargs):
+ if KFlash.print_callback:
+ KFlash.print_callback(*args, **kwargs)
+ else:
+ print(*args, **kwargs)
+
+ def process(self, terminal=True, dev="", baudrate=1500000, board=None, sram = False, file="", callback=None, noansi=False, terminal_auto_size=False, terminal_size=(50, 1), slow_mode = False, addr=None, length=None):
+ self.killProcess = False
+ BASH_TIPS = dict(NORMAL='\033[0m',BOLD='\033[1m',DIM='\033[2m',UNDERLINE='\033[4m',
+ DEFAULT='\033[0m', RED='\033[31m', YELLOW='\033[33m', GREEN='\033[32m',
+ BG_DEFAULT='\033[49m', BG_WHITE='\033[107m')
+
+ ERROR_MSG = BASH_TIPS['RED']+BASH_TIPS['BOLD']+'[ERROR]'+BASH_TIPS['NORMAL']
+ WARN_MSG = BASH_TIPS['YELLOW']+BASH_TIPS['BOLD']+'[WARN]'+BASH_TIPS['NORMAL']
+ INFO_MSG = BASH_TIPS['GREEN']+BASH_TIPS['BOLD']+'[INFO]'+BASH_TIPS['NORMAL']
+
+ VID_LIST_FOR_AUTO_LOOKUP = "(1A86)|(0403)|(067B)|(10C4)|(C251)|(0403)"
+ # WCH FTDI PL CL DAP OPENEC
+ ISP_RECEIVE_TIMEOUT = 0.5
+
+ MAX_RETRY_TIMES = 10
+
+ ISP_FLASH_SECTOR_SIZE = 4096
+ ISP_FLASH_DATA_FRAME_SIZE = ISP_FLASH_SECTOR_SIZE * 16
+
+ def tuple2str(t):
+ ret = ""
+ for i in t:
+ ret += i+" "
+ return ret
+
+ def raise_exception(exception):
+ if self.loader:
+ try:
+ self.loader._port.close()
+ except Exception:
+ pass
+ raise exception
+
+ try:
+ from enum import Enum
+ except ImportError:
+ err = (ERROR_MSG,'enum34 must be installed, run '+BASH_TIPS['GREEN']+'`' + ('pip', 'pip3')[sys.version_info > (3, 0)] + ' install enum34`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise Exception(err)
+ try:
+ import serial
+ import serial.tools.list_ports
+ except ImportError:
+ err = (ERROR_MSG,'PySerial must be installed, run '+BASH_TIPS['GREEN']+'`' + ('pip', 'pip3')[sys.version_info > (3, 0)] + ' install pyserial`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise Exception(err)
+
+ class TimeoutError(Exception): pass
+
+ class ProgramFileFormat(Enum):
+ FMT_BINARY = 0
+ FMT_ELF = 1
+ FMT_KFPKG = 2
+
+ # AES is from: https://github.com/ricmoo/pyaes, Copyright by Richard Moore
+ class AES:
+ '''Encapsulates the AES block cipher.
+ You generally should not need this. Use the AESModeOfOperation classes
+ below instead.'''
+ @staticmethod
+ def _compact_word(word):
+ return (word[0] << 24) | (word[1] << 16) | (word[2] << 8) | word[3]
+
+ # Number of rounds by keysize
+ number_of_rounds = {16: 10, 24: 12, 32: 14}
+
+ # Round constant words
+ rcon = [ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91 ]
+
+ # S-box and Inverse S-box (S is for Substitution)
+ S = [ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 ]
+ Si =[ 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d ]
+
+ # Transformations for encryption
+ T1 = [ 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a ]
+ T2 = [ 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616 ]
+ T3 = [ 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16 ]
+ T4 = [ 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c ]
+
+ # Transformations for decryption
+ T5 = [ 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 ]
+ T6 = [ 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857 ]
+ T7 = [ 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8 ]
+ T8 = [ 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0 ]
+
+ # Transformations for decryption key expansion
+ U1 = [ 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3 ]
+ U2 = [ 0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697 ]
+ U3 = [ 0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46 ]
+ U4 = [ 0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d ]
+
+ def __init__(self, key):
+
+ if len(key) not in (16, 24, 32):
+ raise_exception( ValueError('Invalid key size') )
+
+ rounds = self.number_of_rounds[len(key)]
+
+ # Encryption round keys
+ self._Ke = [[0] * 4 for i in range(rounds + 1)]
+
+ # Decryption round keys
+ self._Kd = [[0] * 4 for i in range(rounds + 1)]
+
+ round_key_count = (rounds + 1) * 4
+ KC = len(key) // 4
+
+ # Convert the key into ints
+ tk = [ struct.unpack('>i', key[i:i + 4])[0] for i in range(0, len(key), 4) ]
+
+ # Copy values into round key arrays
+ for i in range(0, KC):
+ self._Ke[i // 4][i % 4] = tk[i]
+ self._Kd[rounds - (i // 4)][i % 4] = tk[i]
+
+ # Key expansion (fips-197 section 5.2)
+ rconpointer = 0
+ t = KC
+ while t < round_key_count:
+
+ tt = tk[KC - 1]
+ tk[0] ^= ((self.S[(tt >> 16) & 0xFF] << 24) ^
+ (self.S[(tt >> 8) & 0xFF] << 16) ^
+ (self.S[ tt & 0xFF] << 8) ^
+ self.S[(tt >> 24) & 0xFF] ^
+ (self.rcon[rconpointer] << 24))
+ rconpointer += 1
+
+ if KC != 8:
+ for i in range(1, KC):
+ tk[i] ^= tk[i - 1]
+
+ # Key expansion for 256-bit keys is "slightly different" (fips-197)
+ else:
+ for i in range(1, KC // 2):
+ tk[i] ^= tk[i - 1]
+ tt = tk[KC // 2 - 1]
+
+ tk[KC // 2] ^= (self.S[ tt & 0xFF] ^
+ (self.S[(tt >> 8) & 0xFF] << 8) ^
+ (self.S[(tt >> 16) & 0xFF] << 16) ^
+ (self.S[(tt >> 24) & 0xFF] << 24))
+
+ for i in range(KC // 2 + 1, KC):
+ tk[i] ^= tk[i - 1]
+
+ # Copy values into round key arrays
+ j = 0
+ while j < KC and t < round_key_count:
+ self._Ke[t // 4][t % 4] = tk[j]
+ self._Kd[rounds - (t // 4)][t % 4] = tk[j]
+ j += 1
+ t += 1
+
+ # Inverse-Cipher-ify the decryption round key (fips-197 section 5.3)
+ for r in range(1, rounds):
+ for j in range(0, 4):
+ tt = self._Kd[r][j]
+ self._Kd[r][j] = (self.U1[(tt >> 24) & 0xFF] ^
+ self.U2[(tt >> 16) & 0xFF] ^
+ self.U3[(tt >> 8) & 0xFF] ^
+ self.U4[ tt & 0xFF])
+
+ def encrypt(self, plaintext):
+ 'Encrypt a block of plain text using the AES block cipher.'
+
+ if len(plaintext) != 16:
+ raise_exception( ValueError('wrong block length') )
+
+ rounds = len(self._Ke) - 1
+ (s1, s2, s3) = [1, 2, 3]
+ a = [0, 0, 0, 0]
+
+ # Convert plaintext to (ints ^ key)
+ t = [(AES._compact_word(plaintext[4 * i:4 * i + 4]) ^ self._Ke[0][i]) for i in range(0, 4)]
+
+ # Apply round transforms
+ for r in range(1, rounds):
+ for i in range(0, 4):
+ a[i] = (self.T1[(t[ i ] >> 24) & 0xFF] ^
+ self.T2[(t[(i + s1) % 4] >> 16) & 0xFF] ^
+ self.T3[(t[(i + s2) % 4] >> 8) & 0xFF] ^
+ self.T4[ t[(i + s3) % 4] & 0xFF] ^
+ self._Ke[r][i])
+ t = copy.copy(a)
+
+ # The last round is special
+ result = [ ]
+ for i in range(0, 4):
+ tt = self._Ke[rounds][i]
+ result.append((self.S[(t[ i ] >> 24) & 0xFF] ^ (tt >> 24)) & 0xFF)
+ result.append((self.S[(t[(i + s1) % 4] >> 16) & 0xFF] ^ (tt >> 16)) & 0xFF)
+ result.append((self.S[(t[(i + s2) % 4] >> 8) & 0xFF] ^ (tt >> 8)) & 0xFF)
+ result.append((self.S[ t[(i + s3) % 4] & 0xFF] ^ tt ) & 0xFF)
+
+ return result
+
+ def decrypt(self, ciphertext):
+ 'Decrypt a block of cipher text using the AES block cipher.'
+
+ if len(ciphertext) != 16:
+ raise_exception( ValueError('wrong block length') )
+
+ rounds = len(self._Kd) - 1
+ (s1, s2, s3) = [3, 2, 1]
+ a = [0, 0, 0, 0]
+
+ # Convert ciphertext to (ints ^ key)
+ t = [(AES._compact_word(ciphertext[4 * i:4 * i + 4]) ^ self._Kd[0][i]) for i in range(0, 4)]
+
+ # Apply round transforms
+ for r in range(1, rounds):
+ for i in range(0, 4):
+ a[i] = (self.T5[(t[ i ] >> 24) & 0xFF] ^
+ self.T6[(t[(i + s1) % 4] >> 16) & 0xFF] ^
+ self.T7[(t[(i + s2) % 4] >> 8) & 0xFF] ^
+ self.T8[ t[(i + s3) % 4] & 0xFF] ^
+ self._Kd[r][i])
+ t = copy.copy(a)
+
+ # The last round is special
+ result = [ ]
+ for i in range(0, 4):
+ tt = self._Kd[rounds][i]
+ result.append((self.Si[(t[ i ] >> 24) & 0xFF] ^ (tt >> 24)) & 0xFF)
+ result.append((self.Si[(t[(i + s1) % 4] >> 16) & 0xFF] ^ (tt >> 16)) & 0xFF)
+ result.append((self.Si[(t[(i + s2) % 4] >> 8) & 0xFF] ^ (tt >> 8)) & 0xFF)
+ result.append((self.Si[ t[(i + s3) % 4] & 0xFF] ^ tt ) & 0xFF)
+
+ return result
+
+ class AES_128_CBC:
+
+ def __init__(self, key, iv = None):
+ self._aes = AES(key)
+ if iv is None:
+ self._last_cipherblock = [ 0 ] * 16
+ elif len(iv) != 16:
+ raise_exception( ValueError('initialization vector must be 16 bytes') )
+ else:
+ self._last_cipherblock = iv
+
+
+ def encrypt(self, plaintext):
+ if len(plaintext) != 16:
+ raise_exception( ValueError('plaintext block must be 16 bytes') )
+
+ precipherblock = [ (p ^ l) for (p, l) in zip(plaintext, self._last_cipherblock) ]
+ self._last_cipherblock = self._aes.encrypt(precipherblock)
+
+ return b''.join(map(lambda x: x.to_bytes(1, 'little'), self._last_cipherblock))
+
+ def decrypt(self, ciphertext):
+ if len(ciphertext) != 16:
+ raise_exception( ValueError('ciphertext block must be 16 bytes') )
+
+ cipherblock = ciphertext
+ plaintext = [ (p ^ l) for (p, l) in zip(self._aes.decrypt(cipherblock), self._last_cipherblock) ]
+ self._last_cipherblock = cipherblock
+
+ return b''.join(map(lambda x: x.to_bytes(1, 'little'), plaintext))
+
+ ISP_PROG = '789cedbd0d545357d63f7c6e929b1b10140d102cb14522a04ceb5851b1d53aa084285ac7fa01b6535be80511452b554b6dcb3421b9848816e905828253c40a96697dda418d152d5245ac9d765aa78afdd0a201828a1f5420a260fefbdc7b1320759e79def5bc6bfdd7bbde49d7cf7dcfd73efb9cb3f739fb9c7b2e1dbbefd6e71f5f22108186fe362c9a3469c3a2204014c614b30821363b7bc486ed8b27e9a288685d34315b379b98a39b43c4e86208b54e4dc4ea62098d4e43ccd5cd25e6e9e61171ba3862be6e3eb140b7807856f72cb150b790f8a3ee8f3b5ed9502e9ab4c167125a82d0ed7f02961040014b4440014bc440014b2440014b48a0802552a080251450c0121950c0120fa080259e40014b8601052cf1020a58e20d14b0643850c092114001661db44957ffa9e28a0cc9457ffb45fe9aa86f434854a79cf043b3885105af06f9241019d216cff6e11da36efb773d72f7d1be8ae6ca96eaf6fd1d7fbb7da8ebc8ddcffb665f8e6d8dbbbaf0c6e2cef8ee177a5feabf72b9adf5dad59b377eedece9bed7fba03f2c88f0091b37d2276cfc589fb0c79ff4090b8a1e1536eeb95161e39346853d9e312a2c48e71b36aec0376cfc6edfb0c73ff50d0baaf70f1bf79d7fd8f8cbfe618f77fa43f9d1507e34941f0de54743f940281f08e503a17c20941f03e5c740f931507e0c947f0cca3f06e51f83f28f6d08099a7227c4678a678eaf885e46a25b41b7ff34bafcd6a4f2e736f8f84da9489c9d742549f45ac56bb3375cd9204dae4c8e4d694b91be5ef97a6c665ba6e7aaea557169d7d23cdfac7e33eead6b6f0d4fdf9fbe70edcdb5c3ffbcffcf0bdfb9f90e056d3306e97ca8b1c448e358dd482a9818650cd68da25484dca8d2c9a97184af719cce970a21fc8c213a3f2a94f03786eafca93042610cd329a8f1448071bc2e809a408c364ed08da6c289478ce1ba47a8df1181c6dfe902a9c709a5f1719d927a8218637c4237869a483c6a9ca87b94fa3df198f1f7bac7e40411b401054de235367aa4b46543585427a3a1957644aacd106fd396c7dcc98c99b4012df2e9ae33fbe098e33f552412ea68225babd884909c54079833410f8c8d0ada54851462a4958bc5ffa0c56224d2676b719abe91f2676e61fe66843934f79929a4658d557f377da548c13c1afcb814404522a351401995d43e0ad701b5bc819078eedd916334331414c1d745c9cd10ab3f2d937bcf2da36704041011a9144184959c0834f6382e9c2035258dd545f498832278faeaef4b7421814612d15d8750a0518a74ea40064274ab88f5a344ba821d7f9958dcf940b58f42aa0f2844a8b3b52429d6743b0eff33ab4ebc8f924690871043aa10495cb6f0d20478f0d2307305793cf97899274853227349a3fa4041801cfe07255b97c82924aa252d51138d6e72a40fc8416a2616977c25279188b956105b92e097677db4e9a1926db260a9c46a1224dbf7cf94baad4b30c719b28351f4c60b28909261eeb9c07d553be2b94f2cdef197b59608d9212c276e4f3945f5d611237768c62398796219b5b44325e944c218755e81512693f811648db6fb657420e5ec5bdfe803ff5c0a28f9eafb25ba505c33bdf13cd40a6d8a0d6420b4ae15b1fe50eb7ba3ff72a82863480bb81e65ce21468a7bf4cbbacd19a11dfd09d5864deae0dbd22e956f275224834e484e7e648ee2f46d5f6bcb1835ff1cb4f719e129b14aa70e119eb51f7faa1e2be86b7364038ee79e83220bd41384e7c46945ea279c3a3d7587fa4967fe29bbd4539df9a7281339dd9b6eefa8e7b4708fd87e6d37af8f227bc739fe89b45fe3fba4ea5a19ed01bd77e12b55252572b611741bd252bdb8bc91f6365d2c1f13369f8835a9b9d849f636be97b53f55ac176dbc924ca8d5d0d31384f61c2f9e273ca11d3a2c29dff6f795e95ce9a7ec5770fd7b18aaf9435e2289fdca0f9a220b3132b8bd48136e98843c19861f4fe41c4ff477bd4687f098aa50179a9d8c47961829273b91b44390a54facee841ca409a76dce3069545e9da8348124f600651318c4daed2382c915dba45dc1b727b64c6e568dd9ede4fe73454af6caf1b28939056a417fbe266384b47b44887518f300b7946f273192055bc0bac67197b871ef50f939f96acff3bae9e4aa3dedd44acc2388fc9ff0883a3b9447d4c9c13cb4fdff131ee89ba13cd0f1c13c9074b0e5447de5b427217ccc9977454645f3c2aec5b7e33b5e687fa925a725b42fee6eb569e296c906d613f9c8872191f92dd094bcbf9ef0e8a84c94265fd9387b73c566d19b5756cf5e53b1865027010fd6de3b6286f15ed41123bda10555184b0d141a53166aa2379622b9074cb99661e82cb39009947aa06c33abf010e9d85ac3b8e85a8fa788593b2ff7adb08cc9587c57be532a8aef7ae1f62bedf217ae118a17c1debc16f47aac29585dd17ea67961df4b1d391d952de18689a6bf990ee5bdb23370586070e9962d63e9f73d505b622cac73d2b42b9b67bf59f1a6e8ad2b6b66a713ea102c1b8c6aa9c103e6d948829520519186be9929d68779a22be66ce3360ddfd312a1a70d48ae3070bdfd43becaaf1355e6c481f68c77f6f86ed62c01d943ca66eda835ed887adef2f1bf29df9fa092f25c8ad46beb58ea13f1ac93bc9d867d5248633b116ba84f4c9a5ab30d295e8750eca18ff02cde887ec8e7c3a11f934238f8942eacec0b5575fc88d09c338c53a6e3ff75d0027c87cd3a590a35cf3ac573d7543bb987550fe67ebe7228f7d82a2777cc9ba57c8255d53dc3d598a3d429a971ef769851f83553b3d70cebabbe6159c5aed85a851dd5161f42e7f2cdc04b7f2aa76286a2499053f9852a3c7ec46edce2e14325ab2a1fe0965ace73dbb4ebb7dc2a77f1dc785e2b473c696162611d47a968cfc548e3e11bfd09728a9aac6b9537d81dd95a7d2c890ee6ef8e0d3caf404c5e2d753baa37ffd3fcfe69bab0fe1e92ec9f7ab9eea98cb8db911e32147c37b42b421242541bc85816661a0ff5c20e69df1e8a40faa70c4898c7ff01fe864fb704cf3d2cf925515924f4f5eba514ac5e5f5122e58240a302652b746cc0dfbf31abb4552860417d6a3d4577db10f4e270e5b757d6cfde58b151b4f94a1aa11e8be7ae04abd9f6c037d9424950012537c6a04a33bdb30df9b62b5b2cb0327e5ea8fa4882ae5a94ed012d0d75d8827dbca51dc1ed78ed093708569b6c72e962d0aa6086f77d82b69592248210175fbe52989592ae24f2336a35031e7cecd8580fb5620eee3ff1197da31f123792a882fa21bfd468fb952da6c4f5eff969e8d4a6d98a04b03b4a73823587a223e6b239cf6754dcaeec38d39ed3f54dcbd9e6f8be17eebed4f5caed951dabdbd7b51c314f364d34541bb28de28622184f06911a3c4be91bf7a22f284c0fa22bd4973086f4463bda96c094974479e48dbc25efb68f1066641311529030b6b52c8ab585a1b2e3ba84a9fb94d1a6bcce9f76abe5a441686be265b16629d26b621011124cadc8d76b92317fa01b813fd611da50253225ec41bda872bd74635b726c5a659a74f5953767bf55f196e8ed2be9b3d756ac4d81bed06bbe47fa9893d0f2867c7d4c0bfa42826917ba22b9b85537eeb3047a5797b37f3f12ea36132159bd7b2d7a4d215893014ae27a3f40e2980320c30ff9af48566c25c631a911a985a85f91953fda969519f2bea5c701334e1b62120e5aa2d7ec5ea39b27f7baef60b7de77906b676d61e298b535990682b9556b9c124d5f4d153b474f5b4e848cae2f4a18532784f3f13ab5cc519f5a6b8a249e29b3b6eee8eb3c569359486cb37165af640e942d214236770a33d556bedceed4cb969acc18e2b21de7b65eaeea77e64e2c2042a2fb85b69af8dcb5a6678819866d28ad0e8f8135976ad1379e037d6940782c2aa81a9b86109f6945b33d6b52ef417c377ac53362f53d448497925b847e2b3ff5efc6ca5a56d5827b531f6340cc6a7e243e40fd8f289661af3b64173f26078431a9b12f257eb0d56c7e81a0b77bc876af899644afe1fbd1bc02e6936d4ffc854cb776cfbb589fdaaf68cdafb7d5524f47d397533d9e8835033f9609d9493a7d95a250a1ed415ba0bd8f92ede6db0e0758d5662284d1583dbb1fb045b0321544afac70e5d4becbf7fcb1b28c3a41be42e9c6caf5ff4ac3f8194a7fb2c65e487c769d93a53d9374ca92f29e5396c4ad5003577b5016c8124036f321edfaa1b28c1d24cb7166776a511dee0fdd7dccd9da5ad53921f626e36a9fd1c9b37c03d7be1f85f6ad19ca33942181abd03e6dadc74ca2565286361d13c358eb1b1b10376a8dadfca835760ba3365263dd693b9b3b4fe8c1da1d9f656ba347b2649464a41af650bc3f6b62c945123fc173d5e6b26490c4e9eb961b2b12597292e409d8a52922b85ecad99c81bdb6d08eb8764127eff379a3b6091c567a086d2b2fc84866494990732613eacb72b6bd3c1fa7e01c63639dbb44ed5b0a351e31324be0fe54a45486e4d21c914ecdeff05a9f11521e33a7726bf2337c89d6b714a932a48ab0cf147a7eaa4eed9424d10cabd74ac89d237d5a2185dcd2533b4dae5464e639a8df14fa69b22219ea94c444b292a07e451aa47998a679ad625a958b6efca25cd4ff139ed1b1efa092142033aef5036a9a2095f7e53a3dccd271cc2484bd8c3d12c2391f7ec0ad0338f7416ab230929ecfc2aab187da8df0aa46421f810fcdf77c0af8cf30f7c10ece8bd74f6b3fdef7c2decf8bf66915c9c94fbc05be7d72f2b87745228c10978fbe2fa73ef1b606b43e10d2efc9c96fbd1b2c9b33f0a849bbaa0d444c29ac67b4cd82f83d03f6a46b8c06246ea0d0c4165222c8d65b917219a4937684b74c6c16e2ecd929c129ce71c712f2758a7bb05c65d174602bd2d9184d59fdd87daa7212f526cc6260a7a9a18d36648aa5df6d02dfaadf52aa20092c636913156df5697d60d2d483cf71dc9bf6ef4625f5e0fb795db5b0d26fbdfb13ac23cff5e1984fbc53ea9e99136ea4334e88d84c3baab71ebbccbe2e753cb3e548b197d5cb164d59d7363d187905da213d11b5458acfc88a8b53b595484559d01ea905a9007b48a0803d12a0803d62a0803d22a0803d0450c01e0414007e6877f708b69841e7b6b1c524c1fd2b3ab7ed790b5b1c86f83a72b26ddad07bc5da7ac598fc59c5d68c137777599ecfa8eca8364c642a606f93d325e8d470b386f3cb967ddecc683e6f510654a4ccea3069667d7b746e781f494ebc1bdea55d556073cd61010b646013415c4f1fd28749863179ba5b7af059593b15b4c32627259e7ceaf16ff40a0921378789e96729e4910a3e6c4017c225366766297af355e3bb3c439949b20ae78c34ba7fe9c8cb1fc6fc773c83feb958bd40c63f6bf7e3d53994694bc66bb16073f66a269716e6cdce6a2343891bed8eb58e08a62a2acb0fcf31c1cd52f0fa550107916a7403ec5349a49a02184f7aaa66020d2245aa71a4686cac0e3c06c653f094ae98159cb7d9a5ece39f52ed339b85a7be992dfc93d181eece6cc7b28a9239ad57715a7fc4ecc7ad1cbebc54739ee1670bb247483f2a84bbf9b0b8810f335dcef242f88e907ec2d906613cfa67ced57d25d4c8db593fbf1bb7dd9dd9214b863dc9b8aec52c6558a29adeb518efef5493248b85b2b764abc8d8bdc22eaefca62cdd23f64b2174fc06a399793ac5a25cadb3e934d85af44d24313aa3e2ee99db67db73fa2abbbee938dff263f34b7dafdc5dd9b5faf6ba8edd7993b74c34849bce3596ad6d68c4a3a77fca13c9ed61881e45f9c088c6d15a2a8050ebe613f369346cbcc78d17723e54bf24f89d89b9b437194a92b59e9ba2e3b7d21bfe44bcb05596a84cf75d44775585c6c41c2ca3bf35845d62427384fcef29132bc0f5a9342b9b8598503a80f4a9ddb2338a54d33b3c114e15cef3c6655dd5477a1295a511c34aa36a0ce628d5f49de860df87e50379507b7fc293e79ed8a73fe281f4074ca8dea3ff42650ebda114fd983333d1eb0d5d687c4e1c936da6e3cb3d31afea9da6ad58ab54d3abd1e65e9da66d7decc6ca8dd2cd6d69b1ab2b574bd75c796bf6db156f8bb2aeac9dc578807e460e435a5d9c2e463e7fd8f115165c8bf818ae2526a6d268f5f07e2086fe9225b2af534174b6d4875ebb4b06cf73bf3c2359e4950e2baac87b5ba93709a33a065d33d79e2c14d3dd5d880ca995ec25e49954d48a1395b825bcb7f6a85feba71a55502fe22cc84649b0ddf5277c56876560e75f7710cfcae7df77782f302d9867f14a5f97132e9c5a1ecfc05254a4ca33ed16792a255305b4206587e4db9be65ac381686573ccc96bc66b067a433fba669425ceca39cfcc124a6a372f8fa9481df3fef2930189476044b8dede19e1bdcbd5db3af03443739c320665551b57747aa53b7b3f3198b776bb1dcb6ab228d3e9d62a0463ffd64511bd6117ba660885da04295f7b316686d11ca54c5c7e128ffe73f707463148fafc77132cd78cf49dbf123f1a6b1b9b44d361ecf0c8d5e6348944e66a83754e794feb417d2df47fad0911ea7a8fa2da52cf40945143cfff19e1917e891b67c839bffcc7ac63afe45c12ea8d5af362cc1543add118fde24965e2155c732d3eef08ed1b38ef88bbbbb02b7ccbfe2dac845c4cc490f3fbff64ea08667e7bd281cf39c49f81857c6840fd4fd1df7b2043e20f75fa040f827eeb3ed22b2610b4319338c32c66b277ce831d01acf3c32ed78dc9c8e9a868af6cc1e7178befe2d38d973a5e695fd9c21a37c1bad52ca2dfb48bd82eca61c167cf30efd15d66d1a71a653da17ed88946453a77a2214122ebcd037de126e74e8fa5d63f667e1e6610d3bcb174b359c2364d41ba30bc430d5428d0706aa119a5b252ca41fb7f8fd0aba6307ab851a24c0e48f75dd5595a612eb9e97bbd24559eaa4025b6a472795321ec606f8b89af0a3474ab4dc63625a352a351ecc68da41c596adae3000a48ce288d909aa3e8c50d9efd914c98f8808788f77699d1b4e8804f40727fac90e3e75332d6e68b942d35d24264867da6ea505300473f6ff26753fdd1d69b5baf95b5059b7dac4ead3bbe146667e2dcb1efb02ca894b2907b617d8f22691becb39b4e826436e92e0bc4f8f1315d10934915d4b1d2a8652cd54c595bdbbad8a67144a9b1917aa6ce379d9e2b45ca5585b7caaed5502d6882659a616a9d391e24f8f4900f473f3b341ce709362b53599b02296dbb80d7edc7c4874d88bed2e6efad27c202e3c3a2c8302616f7464df129ae476adaa48402977fe6bccc9796435ffb74f8b623abf6666013e49e1321b722b10578bc922aad793d15ed68eb2c958af1534158eba5ac8503bd1bad58687e3a7716239e924bd0a325a3c910f6f5a9285ad67a8fed8944f42ea912f36135771cbdf978afae9a6217e118a9984e869564b458099642880fe421f6cd930edab61345187746f56be8af6de1fc8a6bcc53a4e23d3ea5d5d2be747f42c4d63f11a1854f6fa177f504c8251251856b5e4accea4f08cfa3477407d11b19822e9d31d69c2e43ecd68eade22a2f34f67dce032db76da5fdd315ac6281987e8ff2d75b3c88f84279b22fd2daf87a8c7a3de40ea0e9d7ed08c7805f9dcda7a46643ec7abb928b9d69d72eab96c79b51412c7df994848d4f45a53939e2c01c7f14e8ef8f864b1716cb49a9c3e7153aa0414a6a4acf8746d5f83721aee7713f4c6afa55d6e1d38eaea29b1907bf8ba55b4fa152e921b21efc3fac2fa7101bdf081cdba45938c68f8fb143cceb54469d9c047d9182bea435dc65e3c388d29c53d4f3169fd5b4b401f9aeecdc695dd3f440b64e6df14df649efdc59935b1c45ffe95131afcdca55115421aa28de7e4b798dd3e65a1b4f6b6cd7585b00f2bae5755d69537de24f3c51437f25839c652bb16e95b52957e132236b271b461f8b56f8aee98fb4bedbd6ec7dac208cd78dd64bad35d5c68b75646a16f574617f66d6d6a283fa699eb032d0c53d9e5c1dc75269f9dbf7914e434bbd50bda606e6ba59a5644ac4962af44261965f4de60728c2f35e54c49bd5e8ac6b5c9b5f060ea3bb513043935ee0a97839828b88383c4a11644a74ad514384ef5424c0d806dbd7c9573fc2dbea81d48baa29f3096bce0c6b96865e97206634aa2930f3c17897a5769646c0fc4eb79a1168da699bc465bf01633eafa1f2a23f7b9fe3176e5f65aad35bf290dcb0e541740993579faf3a701fed8dad31e6a1425be1756ba6f167961946b8d6f8a39b6a614621847903fa99b3d2cf7bceea3ec71e757831eddbc0bdc1d16b4864dd66794092fd969ac6bd68575e04d5003b885d1afa6623aa36d2eb5b3df5a748c4500cb927bfe981f59aed01cca5af6f82b482338353d89e4cd46f615f373ae439d23efa76a3545f4322fddf18a4af2309711d43e83f2745e2cf1991b88614eb0f336298eb24aa4f3291f830e3501d4840aac3764275d446a83e6912ab0e348a55875345aaa30a31d89e447594726cb26c4fda4ded2655471b1f58af832c2db69e6c2d7d67afa426a701d1ef9c13b1ea1e874ed3afa0d96ed83b44187b90782e0596dc88c2cd2a4411172d11c66ea48f8538aa1b2457a1266455f4408b749a56e1a482795621e7bccb914278011f163f3226a3a23da763a261e8baf4376674476c725be2d0552744d8979d60abb74c6e71ee032b52f4d30c0e986145ac6913c10e9338e4bda71cf4bd48315ec9e4f73d1cfc6a962a06bfa6fc1e22e2f07ab69871e70dbbd261b09aadabeda313d2a6f2678fd4419f3535c6df1125a9b4ac07c937d91cb38a6429a469ec8d8cd21a8fab88f6e991c8c96122fad487921f4b6b4c69d1bc7e66d6b05747039d015eacc111cf046f617b47a39aab69846ae61487a08fb7f6d6d167d2889257cbd694dc525ebf64985a81ef37305be80269b07e8ac45163288d121f3120f99b671c713be91c2aa0c64343d0ca1e4f96823abfe9f52f5955962e979a1cf22d124279abe4ba9cd24ae89446192b5d2f3a6ba4fb4f21656259bb32b9ac03d665316d6d94444b58a344149058620d482eb105ac2ab95e634c26b0e4dccc1569afe4258f24ca9299bc9aaba984eac01422deb97f6bf9eea07255d96d657a59174db5213c47033fb1ba4eb91e9ec56577c59130164689a4a42fa3ae023c1061947e4aaba34fa579e3b672f2321202b719cb8fe566b1dccd8d9e726abd88ce6a44205f3bc8d721c752bf8aa586122265a2f2b23259d9aa5ca5bc5a925c9393169d154be6d518a710f4faf38fd4a45d4758d61a269960dbfc51616b496a3d19cff0de84d0e7ef385bd2dc84fbec622df4c0ed80f412684d0fd71aa8479c845bc348247c8bf4d0a2b2bee72cce9d66f937cf59e8a8d51e65e925ab9c6d71b5e166a3e4a16d58db887edb86b3a627ea1e567fe743eabf3c50ffa9cb9678e7891d1dbec52a22db701e39453a7a4b2f99e9121bd23fc538d8de2f1d6776acadc13272b2b5354a39d9de69940424065c0e480e68e564a31b45720afc678a247ce942ab6f6aa12d604dc9f50ac6d95789e9c4c18055015703d2036e70725230ea1429fa12cb4949c4ca4edf8d1016fb76d75baa8dc1c6b5754e599b6bd7d69d318da9a9b97a951b1ba76ff7f131bc0f0d374c64cc8ddc3953a5f3dcae39825f0f703c6ba4f696cd2938a13c5e91284ac6b71d70a989067d510801f9b959b9bc989e47a21757559b5f6c77e6c2bb812cfe9400f603372c78efc99f13c5b52f6c9176b176caa7da30d130d974c864fa0a7333c512b18286bf3db4b4de6f1c21da58b1fe9b9cb89c8ab4d969a10c3e5912ce87c821f2f0e5dfe84fc0fb203ab01bf567f60b5c9c9231c239c6dcf67e0b2e259c818d72f6c6df9869395c8ffc952a74f6080a1fdc233676688f1023f18cc31a53af87b6541b72e9e07629cca6a31b66ce33d984335742ac80d15550e27a96ed31a2cf6eb23d1461bab95753761cf66912bc4fcb5a86dfd05470ef680af298af1e4fd77dcd5231140d33bbf3ec062d50cd944870efa8c649106bb7f4e39628d361bfc6ed148d880fefe0ce5ee4140a827e1e4fe7da602fede4d1bc9e4bb32b10d9a85ca40a9520fc7e4cf9bd329d501f7370273e764a36f527e7be73afc59447680aac018b969fecac1ba233d554b6ebacb76f700f35ea86f6d0c0c9eec17a3cea83fb467b2b1ddfe4e17791dbfec5d9117f0ab0174bb7cbcae71992f2f164753a1276902662deb3e503ed2df79cb92adcb4a3d1eb8d50bcfb5f42a2ace705ee32884d77e68b9af6b01e6f9e827bfcf1b7755fbacedd232046cacb7efc172c8b2a00c64222f164f2b85336de263e703e3517f379d1254e469eeb9ff1f9681ce8f1ec347c46aa37f3d6213753e268169fa5622b019f03e1dea2df93fa90a9d843ff21bf44ad2ae946f4b3cde8f0f3745c33f83afc49ebecb40a8ed3f4e4ac26f187204f71a458552e41f48f52d9a255b8bd05793b1a953163de9d99bee3c4cce54093bdded0c5e23ee94fd0c783b58ce94665519b34748a5d16494505915444821d91794ffca33f9335dadf0948efce2f3553043e5b0d68c69a8175506e8e14d3cb29ec83fae2f205d6b9ed8fa7abcac711c7be73efcba020dc979f59bcde206219a859043587e7584775f794457df60bd4ccd8d0f31abad026c1e5c758589b94d3c0ac654fd6e93f6308eb168fdbe2cf48e49da7fa642a31c3e3a9689d66a4b5ecb9174f5a5704ddc23bff33390b73b851d694bbce4eb2eaaa77ccf0f830aab3ce794e1dd7eeae83518d58b38879074f70bac8eb4df2bfd045de12b306344cdb8273869bfe95de36eb07463eeae5a1233f30274e3448bb600f3f0fefdbbf0c11f42b19fbd364aa2195a5ecfd11066354674968e193da2cdfc912fae5161427ac4151b4bb1ee8d4aed3a40acca3d26c7da4bbaf86d44639e3b5e5306663ba45033913df1743cefed81aaa35cafacf9e7bd8b7667372fe52f80abff7f5db668e07abffafca8f922c98a76e2bdbe28b0c367302b679e3476573e2981920230eab3e32560bf6fd3ca92eb2d039e4a3f8ee4f684bb861bf41da21b42f5e7f107c951c8943784fe2cfda5b1d11393d2860a5783a4930a68c527acc69c911b3e9aad82271ec7877fbea23e6927501377daecb41a6923685063ca6594da384f7d485b083ecb0217e3eb6edda4a3bdf6f365f0d6666275f49c4f3abe28ec3012bc7a28036626ed165fd4189c33c17f2e7ae1ab1edddfde6adabe92d7e1efac339e0b3fb11aac387510dd986b6a630a6a2d623e680d5f41899d4ace6dedf79d10a8b54118bef3b9df7e2e893e7bd4a6e965c23e7f2d2614f5d69b5ca6577e5d4edc7e864bb44de1489f833034653636e443e29dfe57325a7f7484b29052a352bd0bb54b5b98496e7508eedc00bbc815b051672eec7753eeb7c6e055c5b61919f37a3911a3a09fc9ca654144819c5815285b02b0e2f66f95d71498394d10426844545986d4899b2221fbf25501db4a1ad37b75f2bbcea7bb3e1d87360eb8d501eef8ae5f81425b511c99b708c0d76c5727c8ac2c5d821261376c52cec8ae5f814e56ac35d795318114835f2bb62d8a504accc28b55eb73df0825d31ef23b8d6520b68c35e2ac8b95268ab8495c282b526ecb1a12bc5d48cd0d6fddc6a1e7c557a63b281fe19f65a4db0de954b119eb1995b2c85a2c6ec9b249be6dc7d8caa5869fd23d9f7abe6995432a537df2375473e6b81fdf41738a7b2594e92da09e5f02c513613ea6b8971c9d5c9de49fc6938b63e6917b63f53de4483e91f2cb59152362b3b188df25ba73d616b5a8a26c14c2c58704f454ab8c9f96e35ea04714358338336db3b4bf1bd053c67ada833db1ce08557bd7db403cf09b2665907cc4632ce1349557efb9e863981fd1ad71ce2417c89f3610e0a8e030e45a4f5c2f338a2a8ee373dfa11e5e9ecd1f2a2c13d4a79fed65fe34b72e5ca2999b3dc71e3e07246e9c3cb09e32771960a320d193ff1d052fc7fc34973136ebd6634d6e4ac5ff07c44a827eb457afcd62fb85d7d63a2817f6b55f59202f8c8a930c7d8f2024ab59f7a60bd617bc0bf4716f6fc7b85b7c8fceafe8187f0eeaabc4658690b1521dcfddce784b7560b781ab55478e3641066e17d42385b98177b14e71d0eb93474460543a8cd1a68e521ea1517e5f3740bbce6c952b3cde7eac25b9c5208fe4a96f39d6554a74283db51f59292eebc8fef2213eaef2cf824227aa4622af77ea8cce99f9687f331ada54278829cdcbe4478febd1c12cd919c3f597ac42caea190486f8e85bece697b5ea79966944b51d4d657e89d7b51b62249ad636b8c55a208d28ec0b30dbb2cb5b28d0f70ad7c8953f103250a6ee0fb4997636b8c4da223e65cabea008554872984df0c7125df6fecd369beae1b816e8f2034bf8f6cf522806756c211e37f45767be1d8fefbd95a56f62dc97f09b001e4c5be2f1ecfd096b8e60d13a23afb139c798f599defb7cabbc65c76cec2c8ee71c33523f70a3d775f1fa945a2edca94222bd85dab6a7a08a18b71dd62b163af187c8534de330e48eb5f6a1d15e6602865ebd5bafea55f5b8477669d43dfaa3577b96e40758c6e70bd259c8e6f460d7ed7a6efc4ab92b403af4b77c64539efcb743a4b1f6f1f903ee8fa80f4e8a630fbdc724a6fba85a5970c5e6778c9ae07a4d1452d084b7ccee22a7fcd1c032364f860665972bfc3d5daeb6b7b077601c4c8d016dcbb71cdd506dcbb427fb9dee4a25fc20d23afba3c5541bba2da94ab6845af4899dcaf50b6d0736f43ab25d07ac02409c2b28960073548becb2ecf5678171f74e56a1dbf564b3ba03f631096335cac96a091ad03d2952592926cf30d8b534a90711cfac45bb0d3a8f9223fa220822c12593423f0ac342e6259b7e84e18fa44976fbd51f580e7c3df39bd1316d54994c37fa0b7c4d7e6a697f1bc728eeea842dc9a555be59fad551cf4c0365e97ad7d6e19e4c277b4a7e7c8cc61dc3aff0e31529e7977c411b3be9142c1ed930de0950a3614f6ee1173688b1ef47cbf61e69fa7bf39e5f5c7d3c7af9af49ab423bb647c3b9642cec420be455953190ddd5b259293da7bb87da6afc40d249adc2237f9a16c73f0ca334c96efc8e3adddce95613233e0c161af72b2d0572d8aab75136e8cc9707fcf83dffdac6cc1f75575318a3898013ccff8f6bfa0980f4fc3feea7b70fe840534be992af710e1d3b150469a5699fcdbf73dbc74fa484fb4ad113c5d729958beb17b840a99903e721862bd462346b2e3443078c156ef8df7adc30cf7579afa47afb0e012f575210d7cbf5451253431f2d3547eec6699c5e38c0e7d58a3a3da20f2cd5610dbbdd52bb60af3eb448bfd9ea8d448c96a13ba4591ea11782e1b772511cf2635095da2d9c9114d55a21a7b95a804d6d7b2164177618498fae8911319b9542bd5e13b41cddc5da4ab1589b80578ade05bc2af33c21c3ecf3947265e186aa77413cca35c1e728533cff13e5e739c29adf1ce94a0fb4353d4cb5d6703bd4353f62e767df161e753c02f40de9a6d7974990de9f791486ebf4bd162bb6897869c4323bbc82587abb6a82e4183e79436cd25022f58a268a90cdffafd033ef50cbc701ac933a72372ee8c807614d8741765e50da7269b03c0679f65d66922865721f1c2e1a8f4d1a98824231ebd44d4d81a89c0e124b2ce19ee086c7a03f2cb8b02c4c3297a3e29a2478b45a6587ac405fc5e84b820626269ff0be0351a615f668c7eba587965ec3ee72eedeb3a5d58bfc52a153f38525c7645cea811b71a71d287a85d3dddeed6eebfd85049b49c9c84efc350f826a59c5c2f82b66bab5c6d576b5cfdd9e26c3b9912b85c4394266422c22f621349f4e7e19b9ef27316542a93218f06577f2cb723f91b7789e1b2c925e2a9b066dec5cfd5667a9858f44571ee2b81098d88891d9337c3dc86bfd4289e8622729b50447c03f735c669149823455675db03be3db38b65aff45a9c72354c77ca857ee2e5e266904355976045c44fc7aa7e06bdc32b2c3773343eee5c61c1f26f55214fd20201f059e6c0cc9437bab1640ea9de5c5a7202e68665834f3136c04a0133f22496d2caee583493eea44a26c929ad28826a1199ab38bfe8f2e7865966df574da7641b26b6641757a4dcc9944c32a5821de5dea9a2266df099874b8b6aa82e51a5b9648db7b52c75c73f223548345cf27421ff0ede39cf4ce4e619f060b9ba0666dcfd062c07fef609d7ef5ab1ee8c9228f6cab03d9c0f2e5226ed38214bc9360fadfd4e6acc247e5de5ad7545c626758eb3e7de067f41a2537b32bcc56af713b1f8e68a5c6c7d462e433ef284f828d63f14b17e61a80ced2cfebca86c36d8499f7c530f517ade48305b6a8b2b514d9b3f319652959febf3a40ad134b33e94ea2b6d32134c5eadb90a9dcb5705d9fbc850eb23d2fb5b8c842692fcdda2b1b15b97b0fe61a8ba58557e68f8d6396418f883e587bcac7e8d0f2a13f92f0b601725aa36d2ab4127a9db23b296d12b2da26c3f4518f79e604aafee485149b445da87fafd31c72db08fda945f7202cf4578fc58284ddfac920e78fd0b5b1637634e130de0d3aeb248604428621efd6eb7a8da10e9f9bb45ac071207921e8805f53a6b2e9b836ff2d33b8d8896152196d4524eaf869c601df354ffa033b66e9d66603f2e5a3d8b1bc17eeece1ad64bb9911259a4c82b989a66560551486e36a223c51ea9100a06af6c1c85f0be56acd1ecf3b35a48e42597fa4870dfec2fc6fb2032ccfa48e3035263c6fb466d5b255bdc842229e435cd6c9106011f6eaf2445b3b1a767aec47e60ec31b9344872c8ac8b557d02fcc1f36342eb29ebce530f7009965a249d665e3a4717bae38bfec8560783f5447ba74a3309f7998f846ead12e1afee4a1396a147a823e62d546418f2827df81c26168ff5b27cfc1dd9402f43896b5548e407b6e4b55937abc8abde99c6b59d0a92d4186d22ec1f28aab0cf9c5a536d7e0ff86eb56eb77179a6c8cd1a31bd88f27c2a43da876fe8c7dd5ed881cbde019bc3fd262f6c42d30a23a920146c8e99239e4021dd3879b14444bc27f70b050d2a9c4d4cd085fa9e009b946d88d44cdac0d9275f2f5f67d8477fe3ea2ca13d1a73532782d956a45880dfacc298e36e96ba7dde2455d03862e006ff4406dfe09f0863d9a9a1af540d17091a687b76b3eee9226534633a62ce364652318b947fea2dbdb8cdeba76c2d0ebdc88516b842a5457ea8bbb4dfe20c85a01ba50daed05474b1f4cb3a67488d8e957ee74a5b865797fe65aed4141cbebfcc95be0987edcfb9d2b92f866e3de74a2fc2e15f8a5ce97b71b8aec86291c62cfaf985acccd2a283d01efb3bbdf917b7fdfdc76c2d1f5f5ad480f0a9fc0d8b337c0e6dce6ca873865a5146e6d7aeb46e9494f99d2b8d24a2337f70a5f91144668a2b2d8488a4fa1c29aed4a910beeb4872a5ab217cdb91e44a5f06e166c75e577a0a848f3bf6bad2374158ebd8ed4a67208c1cbb5de94538fc20c495be1787fb42065a85c3cd63ebc02e44747b95c839be619183c717e72e8bc59cb2149827eeabada7b0a6737cdc52fe7eea22c7bf2cceadc4995e6e5494099ca634d50ba1c1ba814303ba814303ba814303ba8143437483e3baa0e9637ee487707d7108d71787707d7108571ce23566992b55a8c5952e68982b9dd7a8e7f83e8d77d3a8f3578ff1f16e1a153f44a3e2876854fc108d8a1fa251f143342ade4da3e25d1ae44ae73528c9952e68902b9dd7a0bdae745e4376bbd2790ddded4ae7352cc4952e68982bfd200edf1deb4a1734ccd57bbcfdee38e60cf3f6bbe360f44806fc34ec1f0bbeda6713d4c2db8409bc7fac533b3de43d16962a17d1d62a29becd1d4885382e6ae8669b089f33da506463180a5164e593d648cd0594953fc6ba236f97cdf9fddff1ef9cdf4bf35a84df24299bbeb6384314f1759deb5974d182e7f2ab1ada5615ea9afb86f3b6e19af9966c33616d6b2dfd3a5ff94f6c157cec2e13d633d69ed9d76a1988e1da6ffd81eb9fb2c55999bb4ca02b8f61adebcdff3abfecac60152f1f33d5632bf9455de70c633d85b2b7a1965fd2f8f22f1d33617d63b0be8de0ca5f8ab63853b0c6a941e35ab99863a6b297b02645529d8e6e7e345ee66e66dba9db6037bf0823fc128e8b1ec2f3e74b53b9349c1249118e9f393e598a734209185f025b39c35bffa57e6e6c67ce19e0fef8891b0771dea3b37fcbfde817bd0707733f3a7b30f7a3b1380ea7e11a48822b712ae398336d70cd1f9d7aee20aef96dcd40cde98d0c97b72ff6b735f79d2a3836b8e6bed8c135f7b971ef383586e33e73fea0767de5c14b12179d896331675c0327e5998bb59c3473bef0ab7fbdbea01b78a49ff8ba868fc3357da1a867f99198a919c8f37863562dd6b9020d3e1570ea5ceacd019dc31a26bc11f623d5fc934ae4a1be5807bb4c9190e21bd9b095809ddbbec1befcc216f0fdc96ecf90af4d1a1a757b717feb621e219c636851b5c9750bd951cd2c74de44cae1ce80f9b38e07d5aefbab8975d506e79778c7fbaa19671ea4174e0ebb8990a16f6a2cd056f1874664d06835f2cdbda8f4fb18c4767589490f4612b8f403f44c2e969a9460b90f5af8dc8de8a4e6f86f72c3dc2d01ab98ebad21d4a54d55c4b63c6b9eedaeb07679c04ea78172be7fbc2e9e20212473d15c270f5c13e6f34c2e1182799112c24208fdb8e70637b374543deeec79ea02dff378a6096ee6fbdf79023c78d73ea78f540f0e8baf7aa81b7829173179f4bb5428a1bedce4dc992b17619fb0b44981b6e5316111cbba1111b2d682c74ff0b3efe2d697bd7c2c6f5bf9406c790f1f5bdaa4411707e50eea76c65344efa0f8f23bcef846b4a26e50fe5fb9f825a54d916817d43f6359b768ea607eb79de9a9a86130bf9bce7833ba6c71be3d4cfcd1598b11e9ea3c9cdf64ff8063fbe6602d1fbdcf195bdec4c762499930fc06e8398b33adf91c4e3baae9e5467edf7cf9a6ee116448a9c20f61ad08049d8055894b095cc6a0af2dc27cde82e37e7e19ef57b28438ad958fc312b55a9cdf4538e328e23be11b436804964673d9196ee6c39dcef02f7c18f810a63a67db61cf9ea7fb07a12e6814daf43311c2f3be5ce7b4ba0657ee26b7dcc77fe0731f9df399e5b7b96d6eb99bcf3b73fb3d84b7dd2d37fade997bc2a0dccea70f6b06cd1c6707763e78479dad15ce10bfcd9d33cb48b672b3dae2d2a630a8a1e01f268d791aecbf2a7abee1e3f17b9ba3676573b2b5384f24e4d971621bf41a0e692074f51706461173d4db8c5f712794dc1904b51fef42b296bd381fe46e94cdc1239cadd5a79222eeab2c573ee35f8f98f1df7228d3e051657bec882e6813f1126a4e95cdd185991a9569b0db5f9b6d76aee6bbf2b8eff41e2893fa9b6429ad42ed552706b88655e2da5f9c0f73b7e8868308919d000bf693279c238473a20f749aa78be8a24614c850285beb9b74218eccdbf453e16c7ce390bf69f8b5852f81b9ab3ea28ef22599725e36e3d1a78b4ae61061f85d63ee1c22245bcb90e2c66e87783a89f4a17309b6472a6a7d4084a982da5109ecfab95efdb0ed70a76573465c7ba0c72107dead871b423bf04e7c9b86be5f8584f3be52e1fbc622a2bc48433fda83600637f78884facb8477cc2c510e337c690f1a1a1ff51e513ead65623394b966f3142984feb010ec2cf368b53ec63957965fca4e11f96ed2ce58765054b1b2b4700aaa581f18df80d8cc9e11818a5328b26704cac85784e26fff620b2617fa24cea05aa30213346841ac68a32e846d25650b4ebdf8059b691fa1fc221036f63591df229ca714aaacb1851172485105b57935e4ab42a54817f6e2a91763f1faa00bc35e208466c3938d92010f6abb58790aaf1ac2795781f08e9dc1279ad84f4c0991b608712f0792be8430fb726fbcf57fe2dfd6e0afdba1d557abb83372d5deaa0a46b387ea448a29dcdf34d92d8b72be99914575a6f0df58b20c1924d8938dd722cdfb035ad4a8c3baa9da4fc9f49a4eeeef1d308d0a124b98f29d20cd69fce6818f232f38dfc1eb4f09fafb41196dbacea7aabfe14b240a27d5d49e32baf39fceafd7457e2cd64d3f8ef79bb38a9449aafd1619f7372e14a408b78e99ab631525b0c797b53f49eff2a3d8229032807bbf9fb9bf445c2343faf173906e3cdb3e1ea982e5042bd38a6a7215e22f4a54874f23d5d10b308e10636c14054a0ea2234c84f42e929d0d66260bfd9af86bf04a58e1497c03803cc5c735ffcabff571dd2db8619a6bdde5777fa0ee7daf0ead3bc0bdee4fa0ee031760e65f9181bf43c15fa5e06f51f82f53f6e76d080f4259cfb3cfabc5f2e7bf446c6fef3b4478c4e60f11fb42b798d67a8858eaf63bf4b65ef0f6877b5c52e0f7c6ac69f47162be2e26641f4d7ac85c77bd338990528a71b01edf1e8f18dd8b6a4c1f465dada3290f29ab00be1eb7dff19e5f1f636da0fad8a6f9e2aca54f6a6134df89d8b891607fba2ffeac518eebd1dba4a466b8e425c5f35b59a3e238a161fd7f877e78b7c6d41bd5efff9926e2d49b04ddd624e5bf9b23d3b648f71797cdde0f5e826e1e39ff9805d7e2317f97c5fbb4ebbdd73a5eaa08df2ec452df1e37e56fb278fc9d559c44f43714fefee41d6f4d7d4c5a9d4e436a9eabc3610f4d86858f7fce22f73320fa0d934fff685dac7c2929aa596e12f527e8d8abf9baf722324da2534c04f4b148b12c9f7e9b22c2cd2c73d741a756217a1345b04cbb23dc1c4151d111cb8da2884ca3a8268712b30a4a34db48f735a16ab31c767ab0d341747713783eed0e8829244545f9cf6fad89bc8d56400ff4fe815e767bb83c7323f23ee1a1c1776268c9352f6f0d3dfc9a271de089e4995df8b45edc84464ae48a8d88bf2f7545d1afc882d21e5172aaf91d6f2dfdb21d5be5f07b3298e3a4f76434e929cb5aca421adbb214652dc3e3f0a42e69db5985dcb747bc625bf4b61dc73794fba2877f9bc4faf782a68c460dc7e273e20c2f1831673b9e3d45765f4663f5b777113164c54b39ad16b6c5808818dc97197564cc425f22d65bf365ddd80763250575137ebc5137f5019ffa715dca03a68ed4ecbacebebe11051b777d21b475d83519b4557c4d166ca4477b22f67568ad9a361c82de8a4149ac5ca340641ea9aea1baa358a9564c7fd123c36b09be91617abf26fe0384473d628a162ddbca421f6e3b61e2f992f72420ef887b22dc872cdf877adc87ac02c6fb0225c2b98818688d88bac9b68c439dc7828dd1f7e49401a559828dcf9fbd58b7f9de58f08a93a015de5a9dc63a9cba26b7fba2fa3aefe3421dc43d11d441dd437e31b4d4139131a3cb4362d63ef0d6627e3a4ddac190984df76e5870bfe03e2062eb63761d1b087d7cf0e1d67a07acb57fa91cacf5532d78d8efe8c2af6e659f074b1de1c169333d0c5beabb924b8a8b5be51ed84e8938bf7df5275db7419ee1ed410e565a5308bdc3dd5f3b7692359f4472ce46a3e3ac8d0fb7d1dd5f71366a78b88d9e318385aa234e6d26e4b90a44b79ef3e4ad3465f280951260a54c9d9cb3d2bd83ac34688abb95aefd8d9546c72571563a4fb0d234c14ae70deac3e8b88769332df1441b821ef917fa9c9540b0ec7989885d2611f56eddbc35822c14451872c05a0f896a9822110b765f51b4bf90ee36205223521c29ce5a4a6c8fb01b50d2369122dc2cf73523dd76ac652bd84385d1f99592889616c459e30b948c4df045642ed83275f70ff4a2db9e4e5bc65fbbd0f9d7a4a0dfa66b52bae4dfd83225136cd9bac8fe2b589c89d360dd3d09adf594f0b62c5ffd02f2b02ccc09e56d92b48fc2d66e1f055a3cca7e9788798ab3c959b9bbea9efd75ac6473dd73976ed46dfe95b7c0ef2c290fd6ba592027611e67817ace0277fcbf63811c5f86933f1f2cb0e4e1168873711628a3aec85787a39083ffc6022554b33cf311c102b93a749c051a390bcc196c81989f4ef3432d6f817c0f5cae19d0a24db577c2c0ca12e40960657af0a1de61a5cd7fb89a9f55409f6a43e4ad5dd7b1673fe62ac446d367da444c2c1176d65f4e4e9a732e7ff4ae40aae978c4b92a84cfc68810d33f18cd867205be43037be78b75f59a1b80ac65dddc5d36bcc7f5fe5aee4b8a88edaebf972286d19c637a5f4e4d9a3383b44745f87e80e4ddf677fa133ed5676d5dec17bdcd753b3c46a7b90856a01547247423eceb8db65e5674df9743ef8fc9af8138de9b211f54733bf419645514fe2b3df8ef733977e0aae1bc9fa52173692c914e3df8ae4ba282ff7edde6914bcf5c5b7022dbecbafb124a8ce4d3c23c83db15bed8bf93788ed98adf1f7a1b3e378c6c19b8cf91e5cb820358097e5cb6b9d5e22c5725759593e27271cdb8a42e6696892e3688842fe8257c8e16f198ad42dafb06c47316a561deac790a3a039c1949b6f9b26570e807ee56aeebfdbf6462c7e4f6692dd22ee1b6c029be064d5f095db172f64a7da4f1b12b29261b4b5141aa99f6474b34596afae556e77e00f1a59aff9eb50c9fb1603fd9fbb4dc2f12cd2a524d6ff011efa39e246367f8b7a18855e06d414835fd5c902996567c8ff4959a2797bdabaa6e9c542a55200f6a3855d878c4ccf34db9bfd5ca738e6a24d42bc0438befa8de22dc1fe8c5b3fe0bedce35e0a596895b04298e087f55e0b6fe330a91f3f5074c8fed6a962657260e9ddd847d56775292c2caf98ef5da98408f2ec7704968a1759e471fede189f49186201a5433eba924df6e4b598c6f727f246d0e13ab3e1847749f1757499e9ce1ff3b42ff5703ec4488308f5bd9c56531d692cc5ebdc5f49835c7dcf79c05dffff9a14e5f15f3a47eaac1a7335f17a6b3c533d9c597eb26c2bf5fd6f15a3ef0175e59d97631bee1156ea05f20d10c8936caf9cd0eaacf5a1a484a5cdf530c2ef32d89cbd02f9188df8d485b064a467d8feaf12d1f7cc3537a63bf21f8ea1666a024221f561bfa0ed716ca6c71bedbf6c5350fdce11c9df138cae91324bbd79f407b74a3c9eac065e7a24853db7a0fee1e4aabb36d424dcd0f6d57e2195c53303370fb717099db0f2d13d438b48cb09fffa184c6a5c3f5b372c75c77fed55ccc25d11b73012995ddcebf2077027fdd0dda9ae82caf3a5cf5bd783afecb98446c0429269c12f06567b356df943e2edf81aab3b399cb96a17222c9c3e42c3f3a54ceb224954f372a4b518d847fe7bd58fff33c15bebbffaccaaf1bfdfcacca1f9e33540af877b3f2ead1a49957cb56cc6c3d9aa2bc7174adb2fbe826657fb61671bfb39f381ca33e7538a20025806b80c97f7338e20e381c0b01670f3a1ca1404f591c0e11d0e8f4b4d47529c94129afbdf6ea6b633dd1829475a91b57b98268da94351048da90e2edc9f18f983c34ec968cfe14a39ebd4cb32248bd6e63ca6b41b1e9491b56053dfb6a720a4243d3b9149cf07450dabab48d419b925edb084f50e8b54deb373e345ffaabafae4742352879d3daf52fd3afbe96f2345ff3a675ab92d625a7434b063181df9f7f8fb40fa3df463e3cde49e7fe9bf4fd4ffff7e9a7a6f0b459a0f704ea3b95a71305ea358da7a102bd22d0f393ff7bfaca6b29496bd6bf0a8de5fb6365d2a6f48d412b5336d2ab0685d35f4d4a1e9cbe6123f418174e4b4f4f494d4a87dedab0f1b54df4c6b457d771f16bd33624092a31c06c683cc774507880e9ffe64771ffc24c32f4271d1c1089fed7d5b87eb2ff2799c5ffe39c95c2f8ec1368b9403f12e8f8089e6e14e81b825e9c15d2bd843042db11011001c48f2124f9c32788044801144006f00078028601bc208f3760386004c0076d178f043a0acacb81fa02f503f8c3b30210f0d876341af0082010a0048c013c0a780c1004180b0806a800e3002180504018603c6002201cf03bc0e38027001301bf074c023c09980c88004c014c054c034402a6039e023c0d980198097806300bf0074014c81a0d72ce063a07680c5035d05868ab063017300f1007980f58007816b010f2fc11b008f01c6031f4c312a04b216d19f0880724407839e079c00b10fe13e045c00ac04b10f732201190047805400392012990be12900a58054883b8d580358074c05ac03ac0ab80f5909e01780db001b011e236015e076402de8011de0c7813f016e06d4016e0cf3e3bd03b002d4007c806e8010628c300720046e0970b3001b600f2005b01db00ef02f201f8bf02c07b937620165008cf45806280195002d801bc76024a0165805d80bf00de07940376032a20df1ec00780bd804a4015c4ef037c08a806fc15f011e063c07ec07f013e817c9f02fe06a8011c001c84f843000be030e033c011402de028e018e073401de038a01ef005e004e024a001700ad008380df8127006f015e0ef80af01df00fe01f816f01de02ce09f80ef01e74086f38026c005c00fd0433f3eb603fd04cf3f032e022ec118fc02b419f25f065c0158012d8056401bc00668075c055c035c0774006e006e026e016e033a01bf02ee00ba00dd801e801d7017d00bb807b80fe803f4031e001c8f7113c062614a59c293718b84f052fccfb49f1c8e18c0624022601de06dc016c04e4035e008e00ce047c03580e867f00d0041808980998038c072c02ac01b805c4009601fe030e034e002a01d5001380af81ed001b807905d7438fc01e3009301b3018b002f01d2016f024a006d971c8e1ec03e78ce051c069c0634036e031e00bc20fd11c078c03440312016100f5809781d50093804c8019c029c078cfbc5e1781ab000f012e00d402ee02f80c38033809f01b7015eb00f08063c0d5808580d987d19ea00ac0468215c063800380d6801dc038c82b450c062c024c0f4cb7cb95840c51587e313c071c049c0af0019ec1b1601d603720141563ead1ce874e119a707b5381c53007301db018720eeef8076c08b104e07bcddc2e75d348827a69f437c07e091569011c2be2d03e97321aee40a8f9302701c4263053d0a16a88aa3c9491b935ece4c4b06df6fd6334153834243830645cd7c26683a9f1b16fbf5af80bf36f699a065d18b97bebc64e91f17bd3cf95fc43ff9f254e7ba383678debad7c163480e5a9ff45adac6cdc142bcff758763386094409fee18083f2200c7e170cfb501044378e94d1eab018b04ccbe3110c6cf8b84f48583907b0bfa811089c4f093083fd2ed27fd373fea7ff993fd5ffeed4b76fa198877aa08c1b722785f2748ec4ae77ecd697cb864354f17ad199afefff59ff3ffc3323ce2ebbf4e19b5b6ade3128986fd5f95e83fbffffcfef3fbcfef3fbfff3ffd64e9fcbaeaa4016e74bc1b9dee46e7bad1e56e74951b7dc38de6bad11237bacf8d1e76a3a7dde80537daee46efba51d9daa134c08d8e77a3d3dde85c37badc8dae72a36fb8d15c375ae246f7b9d1c36ef4b41bbde046dbdde85d372a5b379406b8d1f16e74ba1b9deb4697bbd1556ef40d379aeb464bdce83e377ad88d9e76a317dc68bb1bbdeb4665af0ea5016e74bc1b9dee46e7bad1e56e74951b7dc38de6bad11237bacf8d1e76a3a7dde80537daee46efba51d9faa134c08d8e77a3d3dde85c37badc8dae72a36fb8d15c375ae246f7b9d1c36ef4b41bbde046dbdde85d372acb184a03dce878373add8dce75a3cbdde82a37fa861bcd75a3256e749f1b3dec464fbbd10b6eb4dd8dde75a3b2d786d200373ade8d4e77a373dde87237baca8dbee14673dd68891bdde7460fbbd1d36ef4821b6d77a377dda86cc3501ae046c7bbd1e96e74ae1b5dee4657b9d137dc68ae1b2d71a3fbdce861377ada8d5e70a3ed6ef4ae1b75eecb1dc2cfb93d3f7ec9838b1ffcfbdfbc0df93f99c1f709'
+ ISP_PROG = binascii.unhexlify(ISP_PROG)
+ ISP_PROG = zlib.decompress(ISP_PROG)
+
+ def printProgressBar (iteration, total, prefix = '', suffix = '', filename = '', decimals = 1, length = 100, fill = '='):
+ """
+ Call in a loop to create terminal progress bar
+ @params:
+ iteration - Required : current iteration (Int)
+ total - Required : total iterations (Int)
+ prefix - Optional : prefix string (Str)
+ suffix - Optional : suffix string (Str)
+ decimals - Optional : positive number of decimals in percent complete (Int)
+ length - Optional : character length of bar (Int)
+ fill - Optional : bar fill character (Str)
+ """
+ percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
+ filledLength = int(length * iteration // total)
+ bar = fill * filledLength + '-' * (length - filledLength)
+ KFlash.log('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end = '\r')
+ # Print New Line on Complete
+ if iteration == total:
+ KFlash.log()
+ if callback:
+ fileTypeStr = filename
+ if prefix == "Downloading ISP:":
+ fileTypeStr = "ISP"
+ elif prefix == "Programming BIN:" and fileTypeStr == "":
+ fileTypeStr = "BIN"
+ callback(fileTypeStr, iteration, total, suffix)
+
+ def slip_reader(port):
+ partial_packet = None
+ in_escape = False
+
+ while True:
+ waiting = port.inWaiting()
+ read_bytes = port.read(1 if waiting == 0 else waiting)
+ if read_bytes == b'':
+ raise_exception( Exception("Timed out waiting for packet %s" % ("header" if partial_packet is None else "content")) )
+ for b in read_bytes:
+
+ if type(b) is int:
+ b = bytes([b]) # python 2/3 compat
+
+ if partial_packet is None: # waiting for packet header
+ if b == b'\xc0':
+ partial_packet = b""
+ else:
+ raise_exception( Exception('Invalid head of packet (%r)' % b) )
+ elif in_escape: # part-way through escape sequence
+ in_escape = False
+ if b == b'\xdc':
+ partial_packet += b'\xc0'
+ elif b == b'\xdd':
+ partial_packet += b'\xdb'
+ else:
+ raise_exception( Exception('Invalid SLIP escape (%r%r)' % (b'\xdb', b)) )
+ elif b == b'\xdb': # start of escape sequence
+ in_escape = True
+ elif b == b'\xc0': # end of packet
+ yield partial_packet
+ partial_packet = None
+ else: # normal byte in packet
+ partial_packet += b
+
+
+ class ISPResponse:
+ class ISPOperation(Enum):
+ ISP_ECHO = 0xC1
+ ISP_NOP = 0xC2
+ ISP_MEMORY_WRITE = 0xC3
+ ISP_MEMORY_READ = 0xC4
+ ISP_MEMORY_BOOT = 0xC5
+ ISP_DEBUG_INFO = 0xD1
+ ISP_CHANGE_BAUDRATE = 0xc6
+
+ class ErrorCode(Enum):
+ ISP_RET_DEFAULT = 0
+ ISP_RET_OK = 0xE0
+ ISP_RET_BAD_DATA_LEN = 0xE1
+ ISP_RET_BAD_DATA_CHECKSUM = 0xE2
+ ISP_RET_INVALID_COMMAND = 0xE3
+
+ @staticmethod
+ def parse(data):
+ # type: (bytes) -> (int, int, str)
+ op = 0
+ reason = 0
+ text = ''
+ if len(data) < 2:
+ return op, reason, "data null"
+
+ if (sys.version_info > (3, 0)):
+ op = int(data[0])
+ reason = int(data[1])
+ else:
+ op = ord(data[0])
+ reason = ord(data[1])
+
+ try:
+ if ISPResponse.ISPOperation(op) == ISPResponse.ISPOperation.ISP_DEBUG_INFO:
+ text = data[2:].decode()
+ except ValueError:
+ KFlash.log('Warning: recv unknown op', op)
+
+ return (op, reason, text)
+
+
+ class FlashModeResponse:
+ class Operation(Enum):
+ ISP_DEBUG_INFO = 0xD1
+ ISP_NOP = 0xD2
+ ISP_FLASH_ERASE = 0xD3
+ ISP_FLASH_WRITE = 0xD4
+ ISP_REBOOT = 0xD5
+ ISP_UARTHS_BAUDRATE_SET = 0xD6
+ FLASHMODE_FLASH_INIT = 0xD7
+
+ class ErrorCode(Enum):
+ ISP_RET_DEFAULT = 0
+ ISP_RET_OK = 0xE0
+ ISP_RET_BAD_DATA_LEN = 0xE1
+ ISP_RET_BAD_DATA_CHECKSUM = 0xE2
+ ISP_RET_INVALID_COMMAND = 0xE3
+ ISP_RET_BAD_INITIALIZATION = 0xE4
+ ISP_RET_BAD_EXEC = 0xE5
+
+ @staticmethod
+ def parse(data):
+ # type: (bytes) -> (int, int, str)
+ op = 0
+ reason = 0
+ text = ''
+
+ if (sys.version_info > (3, 0)):
+ op = int(data[0])
+ reason = int(data[1])
+ else:
+ op = ord(data[0])
+ reason = ord(data[1])
+
+ if FlashModeResponse.Operation(op) == FlashModeResponse.Operation.ISP_DEBUG_INFO:
+ text = data[2:].decode()
+ reason_enum = FlashModeResponse.ErrorCode(reason)
+ if (not text) or (text.strip() == ""):
+ if reason_enum == FlashModeResponse.ErrorCode.ISP_RET_OK:
+ text = None
+ elif reason_enum == FlashModeResponse.ErrorCode.ISP_RET_BAD_DATA_LEN:
+ text = "bad data len"
+ elif reason_enum == FlashModeResponse.ErrorCode.ISP_RET_BAD_DATA_CHECKSUM:
+ text = "bad data checksum"
+ elif reason_enum == FlashModeResponse.ErrorCode.ISP_RET_BAD_INITIALIZATION:
+ text = "bad initialization"
+ elif reason_enum == FlashModeResponse.ErrorCode.ISP_RET_INVALID_COMMAND:
+ text = "invalid command"
+ elif reason_enum == FlashModeResponse.ErrorCode.ISP_RET_BAD_EXEC:
+ text = "execute cmd error"
+ else:
+ text = "unknown error"
+ return (op, reason, text)
+
+
+ def chunks(l, n, address=None):
+ """Yield successive n-sized chunks from l."""
+ if address != None and (address % n != 0):
+ start_pos = n - (address - address // n * n)
+ if start_pos % ISP_FLASH_SECTOR_SIZE != 0:
+ raise_exception(Exception("data should 4KiB align"))
+ count_4k_blocks = start_pos // ISP_FLASH_SECTOR_SIZE
+ count = math.ceil((len(l) - start_pos)/n) + count_4k_blocks
+ for i in range(count):
+ if i < count_4k_blocks:
+ yield l[ISP_FLASH_SECTOR_SIZE*i:ISP_FLASH_SECTOR_SIZE*(i+1)]
+ if ISP_FLASH_SECTOR_SIZE*(i+1) > len(l):
+ break
+ else:
+ start = start_pos+(i-count_4k_blocks)*n
+ yield l[start:start+n]
+ if start+n > len(l):
+ break
+ else:
+ for i in range(0, len(l), n):
+ yield l[i:i + n]
+
+ class TerminalSize:
+ @staticmethod
+ def getTerminalSize():
+ import platform
+ current_os = platform.system()
+ tuple_xy=None
+ if current_os == 'Windows':
+ tuple_xy = TerminalSize._getTerminalSize_windows()
+ if tuple_xy is None:
+ tuple_xy = TerminalSize._getTerminalSize_tput()
+ # needed for window's python in cygwin's xterm!
+ if current_os == 'Linux' or current_os == 'Darwin' or current_os.startswith('CYGWIN'):
+ tuple_xy = TerminalSize._getTerminalSize_linux()
+ if tuple_xy is None:
+ # Use default value
+ tuple_xy = (80, 25) # default value
+ return tuple_xy
+
+ @staticmethod
+ def _getTerminalSize_windows():
+ res=None
+ try:
+ from ctypes import windll, create_string_buffer
+
+ # stdin handle is -10
+ # stdout handle is -11
+ # stderr handle is -12
+
+ h = windll.kernel32.GetStdHandle(-12)
+ csbi = create_string_buffer(22)
+ res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)
+ except:
+ return None
+ if res:
+ import struct
+ (bufx, bufy, curx, cury, wattr,
+ left, top, right, bottom, maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
+ sizex = right - left + 1
+ sizey = bottom - top + 1
+ return sizex, sizey
+ else:
+ return None
+
+ @staticmethod
+ def _getTerminalSize_tput():
+ # get terminal width
+ # src: http://stackoverflow.com/questions/263890/how-do-i-find-the-width-height-of-a-terminal-window
+ try:
+ import subprocess
+ proc=subprocess.Popen(["tput", "cols"],stdin=subprocess.PIPE,stdout=subprocess.PIPE)
+ output=proc.communicate(input=None)
+ cols=int(output[0])
+ proc=subprocess.Popen(["tput", "lines"],stdin=subprocess.PIPE,stdout=subprocess.PIPE)
+ output=proc.communicate(input=None)
+ rows=int(output[0])
+ return (cols,rows)
+ except:
+ return None
+
+ @staticmethod
+ def _getTerminalSize_linux():
+ def ioctl_GWINSZ(fd):
+ try:
+ import fcntl, termios, struct, os
+ cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,'1234'))
+ except:
+ return None
+ return cr
+ cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
+ if not cr:
+ try:
+ fd = os.open(os.ctermid(), os.O_RDONLY)
+ cr = ioctl_GWINSZ(fd)
+ os.close(fd)
+ except:
+ pass
+ if not cr:
+ try:
+ cr = (os.env['LINES'], os.env['COLUMNS'])
+ except:
+ return None
+ return int(cr[1]), int(cr[0])
+
+ @staticmethod
+ def get_terminal_size(fallback=(100, 24), terminal = False):
+ try:
+ columns, rows = TerminalSize.getTerminalSize()
+ if not terminal:
+ if not terminal_auto_size:
+ columns, rows = terminal_size
+ except:
+ columns, rows = fallback
+
+ return columns, rows
+
+ class MAIXLoader:
+ def change_baudrate(self, baudrate):
+ KFlash.log(INFO_MSG,"Selected Baudrate: ", baudrate, BASH_TIPS['DEFAULT'])
+ out = struct.pack('III', 0, 4, baudrate)
+ crc32_checksum = struct.pack('I', binascii.crc32(out) & 0xFFFFFFFF)
+ out = struct.pack('HH', 0xd6, 0x00) + crc32_checksum + out
+ self.write(out)
+ time.sleep(0.05)
+ self._port.baudrate = baudrate
+ if args.Board == "goE":
+ if baudrate >= 4500000:
+ # OPENEC super baudrate
+ KFlash.log(INFO_MSG, "Enable OPENEC super baudrate!!!", BASH_TIPS['DEFAULT'])
+ if baudrate == 4500000:
+ self._port.baudrate = 300
+ if baudrate == 6000000:
+ self._port.baudrate = 250
+ if baudrate == 7500000:
+ self._port.baudrate = 350
+
+ def change_baudrate_stage0(self, baudrate):
+ # Dangerous, here are dinosaur infested!!!!!
+ # Don't touch this code unless you know what you are doing
+ # Stage0 baudrate is fixed
+ # Contributor: [@rgwan](https://github.com/rgwan)
+ # rgwan <dv.xw@qq.com>
+ baudrate = 1500000
+ if args.Board == "goE" or args.Board == "trainer":
+ KFlash.log(INFO_MSG,"Selected Stage0 Baudrate: ", baudrate, BASH_TIPS['DEFAULT'])
+ # This is for openec, contained ft2232, goE and trainer
+ KFlash.log(INFO_MSG,"FT2232 mode", BASH_TIPS['DEFAULT'])
+ baudrate_stage0 = int(baudrate * 38.6 / 38)
+ out = struct.pack('III', 0, 4, baudrate_stage0)
+ crc32_checksum = struct.pack('I', binascii.crc32(out) & 0xFFFFFFFF)
+ out = struct.pack('HH', 0xc6, 0x00) + crc32_checksum + out
+ self.write(out)
+ time.sleep(0.05)
+ self._port.baudrate = baudrate
+
+ retry_count = 0
+ while 1:
+ self.checkKillExit()
+ retry_count = retry_count + 1
+ if retry_count > 3:
+ err = (ERROR_MSG,'Fast mode failed, please use slow mode by add parameter ' + BASH_TIPS['GREEN'] + '--Slow', BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ try:
+ self.greeting()
+ break
+ except TimeoutError:
+ pass
+ elif args.Board == "dan" or args.Board == "bit" or args.Board == "kd233":
+ KFlash.log(INFO_MSG,"CH340 mode", BASH_TIPS['DEFAULT'])
+ # This is for CH340, contained dan, bit and kd233
+ baudrate_stage0 = int(baudrate * 38.4 / 38)
+ # CH340 can not use this method, test failed, take risks at your own risk
+ else:
+ # This is for unknown board
+ KFlash.log(WARN_MSG,"Unknown mode", BASH_TIPS['DEFAULT'])
+
+ def __init__(self, port='/dev/ttyUSB1', baudrate=115200):
+ # configure the serial connections (the parameters differs on the device you are connecting to)
+ self._port = serial.Serial(
+ port=port,
+ baudrate=baudrate,
+ parity=serial.PARITY_NONE,
+ stopbits=serial.STOPBITS_ONE,
+ bytesize=serial.EIGHTBITS,
+ timeout=0.1
+ )
+ KFlash.log(INFO_MSG, "Default baudrate is", baudrate, ", later it may be changed to the value you set.", BASH_TIPS['DEFAULT'])
+
+ self._port.isOpen()
+ self._slip_reader = slip_reader(self._port)
+ self._kill_process = False
+
+ """ Read a SLIP packet from the serial port """
+
+ def read(self):
+ return next(self._slip_reader)
+
+ """ Write bytes to the serial port while performing SLIP escaping """
+
+ def write(self, packet):
+ buf = b'\xc0' \
+ + (packet.replace(b'\xdb', b'\xdb\xdd').replace(b'\xc0', b'\xdb\xdc')) \
+ + b'\xc0'
+ #KFlash.log('[WRITE]', binascii.hexlify(buf))
+ return self._port.write(buf)
+
+ def read_loop(self):
+ #out = b''
+ # while self._port.inWaiting() > 0:
+ # out += self._port.read(1)
+
+ # KFlash.log(out)
+ while 1:
+ sys.stdout.write('[RECV] raw data: ')
+ sys.stdout.write(binascii.hexlify(self._port.read(1)).decode())
+ sys.stdout.flush()
+
+ def recv_one_return(self, timeout_s = None):
+ timeout_init = time.time()
+ data = b''
+ if timeout_s == None:
+ timeout_s = ISP_RECEIVE_TIMEOUT
+ # find start boarder
+ #sys.stdout.write('[RECV one return] raw data: ')
+ while 1:
+ if time.time() - timeout_init > timeout_s:
+ raise_exception( TimeoutError )
+ c = self._port.read(1)
+ #sys.stdout.write(binascii.hexlify(c).decode())
+ sys.stdout.flush()
+ if c == b'\xc0':
+ break
+
+ in_escape = False
+ while 1:
+ if time.time() - timeout_init > timeout_s:
+ raise_exception( TimeoutError )
+ c = self._port.read(1)
+ #sys.stdout.write(binascii.hexlify(c).decode())
+ sys.stdout.flush()
+ if c == b'\xc0':
+ break
+
+ elif in_escape: # part-way through escape sequence
+ in_escape = False
+ if c == b'\xdc':
+ data += b'\xc0'
+ elif c == b'\xdd':
+ data += b'\xdb'
+ else:
+ raise_exception( Exception('Invalid SLIP escape (%r%r)' % (b'\xdb', c)) )
+ elif c == b'\xdb': # start of escape sequence
+ in_escape = True
+
+ data += c
+
+ #sys.stdout.write('\n')
+ return data
+
+ # kd233 or open-ec or new cmsis-dap
+ def reset_to_isp_kd233(self):
+ self._port.setDTR (False)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW, IO16 to HIGH --')
+ # Pull reset down and keep 10ms
+ self._port.setDTR (True)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- IO16 to LOW, RESET to HIGH --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (True)
+ self._port.setDTR (False)
+ time.sleep(0.1)
+ def reset_to_boot_kd233(self):
+ self._port.setDTR (False)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW --')
+ # Pull reset down and keep 10ms
+ self._port.setDTR (True)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to HIGH, BOOT --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (False)
+ self._port.setDTR (False)
+ time.sleep(0.1)
+
+ #dan dock
+ def reset_to_isp_dan(self):
+ self._port.setDTR (False)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW, IO16 to HIGH --')
+ # Pull reset down and keep 10ms
+ self._port.setDTR (False)
+ self._port.setRTS (True)
+ time.sleep(0.1)
+ #KFlash.log('-- IO16 to LOW, RESET to HIGH --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (False)
+ self._port.setDTR (True)
+ time.sleep(0.1)
+ def reset_to_boot_dan(self):
+ self._port.setDTR (False)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW --')
+ # Pull reset down and keep 10ms
+ self._port.setDTR (False)
+ self._port.setRTS (True)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to HIGH, BOOT --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (False)
+ self._port.setDTR (False)
+ time.sleep(0.1)
+
+ # maix goD for old cmsis-dap firmware
+ def reset_to_isp_goD(self):
+ self._port.setDTR (True) ## output 0
+ self._port.setRTS (True)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW --')
+ # Pull reset down and keep 10ms
+ self._port.setRTS (False)
+ self._port.setDTR (True)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to HIGH, BOOT --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (False)
+ self._port.setDTR (True)
+ time.sleep(0.1)
+ def reset_to_boot_goD(self):
+ self._port.setDTR (False)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW --')
+ # Pull reset down and keep 10ms
+ self._port.setRTS (False)
+ self._port.setDTR (True)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to HIGH, BOOT --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (True)
+ self._port.setDTR (True)
+ time.sleep(0.1)
+
+ # maix goE for openec or new cmsis-dap firmware
+ def reset_to_boot_maixgo(self):
+ self._port.setDTR (False)
+ self._port.setRTS (False)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to LOW --')
+ # Pull reset down and keep 10ms
+ self._port.setRTS (False)
+ self._port.setDTR (True)
+ time.sleep(0.1)
+ #KFlash.log('-- RESET to HIGH, BOOT --')
+ # Pull IO16 to low and release reset
+ self._port.setRTS (False)
+ self._port.setDTR (False)
+ time.sleep(0.1)
+
+ def greeting(self):
+ self._port.write(b'\xc0\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0')
+ op, reason, text = ISPResponse.parse(self.recv_one_return())
+
+ #KFlash.log('MAIX return op:', ISPResponse.ISPOperation(op).name, 'reason:', ISPResponse.ErrorCode(reason).name)
+
+
+ def flash_greeting(self):
+ retry_count = 0
+ while 1:
+ self.checkKillExit()
+ try:
+ self._port.write(b'\xc0\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0')
+ except Exception:
+ raise_exception( Exception("Connection disconnected, try again or maybe need use Slow mode, or decrease baudrate") )
+ retry_count = retry_count + 1
+ try:
+ op, reason, text = FlashModeResponse.parse(self.recv_one_return())
+ except IndexError:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to Connect to K210's Stub",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Index Error, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+ except TimeoutError:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to Connect to K210's Stub",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Timeout Error, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+ except:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to Connect to K210's Stub",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Unexcepted Error, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+ # KFlash.log('MAIX return op:', FlashModeResponse.Operation(op).name, 'reason:',
+ # FlashModeResponse.ErrorCode(reason).name)
+ if FlashModeResponse.Operation(op) == FlashModeResponse.Operation.ISP_NOP and FlashModeResponse.ErrorCode(reason) == FlashModeResponse.ErrorCode.ISP_RET_OK:
+ KFlash.log(INFO_MSG,"Boot to Flashmode Successfully",BASH_TIPS['DEFAULT'])
+ self._port.flushInput()
+ self._port.flushOutput()
+ break
+ else:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to Connect to K210's Stub",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Unexcepted Return recevied, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+
+ def boot(self, address=0x80000000):
+ KFlash.log(INFO_MSG,"Booting From " + hex(address),BASH_TIPS['DEFAULT'])
+
+ out = struct.pack('II', address, 0)
+
+ crc32_checksum = struct.pack('I', binascii.crc32(out) & 0xFFFFFFFF)
+
+ out = struct.pack('HH', 0xc5, 0x00) + crc32_checksum + out # op: ISP_MEMORY_WRITE: 0xc3
+ self.write(out)
+
+ def recv_debug(self):
+ ret = self.recv_one_return()
+ if len(ret) < 2:
+ KFlash.log('-' * 30)
+ KFlash.log("receive data time out")
+ KFlash.log('-' * 30)
+ return False
+ op, reason, text = ISPResponse.parse(ret)
+ #KFlash.log('[RECV] op:', ISPResponse.ISPOperation(op).name, 'reason:', ISPResponse.ErrorCode(reason).name)
+ if text:
+ KFlash.log('-' * 30)
+ KFlash.log(text)
+ KFlash.log('-' * 30)
+ if ISPResponse.ErrorCode(reason) not in (ISPResponse.ErrorCode.ISP_RET_DEFAULT, ISPResponse.ErrorCode.ISP_RET_OK):
+ KFlash.log('Failed, retry, errcode=', hex(reason))
+ return False
+ return True
+
+ def flash_recv_debug(self):
+ op, reason, text = FlashModeResponse.parse(self.recv_one_return())
+ #KFlash.log('[Flash-RECV] op:', FlashModeResponse.Operation(op).name, 'reason:',
+ # FlashModeResponse.ErrorCode(reason).name)
+ if text:
+ KFlash.log('-' * 30)
+ KFlash.log(text)
+ KFlash.log('-' * 30)
+
+ if FlashModeResponse.ErrorCode(reason) not in (FlashModeResponse.ErrorCode.ISP_RET_OK, FlashModeResponse.ErrorCode.ISP_RET_OK):
+ KFlash.log('Failed, retry')
+ return False
+ return True
+
+ def init_flash(self, chip_type):
+ chip_type = int(chip_type)
+ KFlash.log(INFO_MSG,"Selected Flash: ",("In-Chip", "On-Board")[chip_type],BASH_TIPS['DEFAULT'])
+ out = struct.pack('II', chip_type, 0)
+ crc32_checksum = struct.pack('I', binascii.crc32(out) & 0xFFFFFFFF)
+ out = struct.pack('HH', 0xd7, 0x00) + crc32_checksum + out
+ '''Retry when it have error'''
+ retry_count = 0
+ while 1:
+ self.checkKillExit()
+ sent = self.write(out)
+ retry_count = retry_count + 1
+ try:
+ op, reason, text = FlashModeResponse.parse(self.recv_one_return())
+ except IndexError:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to initialize flash",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Index Error, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+ except TimeoutError:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to initialize flash",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Timeout Error, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+ except:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to initialize flash",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Unexcepted Error, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+ # KFlash.log('MAIX return op:', FlashModeResponse.Operation(op).name, 'reason:',
+ # FlashModeResponse.ErrorCode(reason).name)
+ if FlashModeResponse.Operation(op) == FlashModeResponse.Operation.FLASHMODE_FLASH_INIT and FlashModeResponse.ErrorCode(reason) == FlashModeResponse.ErrorCode.ISP_RET_OK:
+ KFlash.log(INFO_MSG,"Initialization flash Successfully",BASH_TIPS['DEFAULT'])
+ break
+ else:
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Failed to initialize flash",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ KFlash.log(WARN_MSG,"Unexcepted Return recevied, retrying...",BASH_TIPS['DEFAULT'])
+ time.sleep(0.1)
+ continue
+
+ def flash_dataframe(self, data, address=0x80000000):
+ DATAFRAME_SIZE = 1024
+ data_chunks = chunks(data, DATAFRAME_SIZE)
+ #KFlash.log('[DEBUG] flash dataframe | data length:', len(data))
+ total_chunk = math.ceil(len(data)/DATAFRAME_SIZE)
+
+ time_start = time.time()
+ for n, chunk in enumerate(data_chunks):
+ self.checkKillExit()
+ while 1:
+ self.checkKillExit()
+ #KFlash.log('[INFO] sending chunk', i, '@address', hex(address), 'chunklen', len(chunk))
+ out = struct.pack('II', address, len(chunk))
+
+ crc32_checksum = struct.pack('I', binascii.crc32(out + chunk) & 0xFFFFFFFF)
+
+ out = struct.pack('HH', 0xc3, 0x00) + crc32_checksum + out + chunk # op: ISP_MEMORY_WRITE: 0xc3
+ sent = self.write(out)
+ #KFlash.log('[INFO]', 'sent', sent, 'bytes', 'checksum', binascii.hexlify(crc32_checksum).decode())
+
+ address += len(chunk)
+
+ if self.recv_debug():
+ break
+
+ columns, lines = TerminalSize.get_terminal_size((100, 24), terminal)
+ time_delta = time.time() - time_start
+ speed = ''
+ if (time_delta > 1):
+ speed = str(int((n + 1) * DATAFRAME_SIZE / 1024.0 / time_delta)) + 'kiB/s'
+ printProgressBar(n+1, total_chunk, prefix = 'Downloading ISP:', suffix = speed, length = columns - 35)
+
+ def dump_to_flash(self, data, address=0, size=None):
+ '''
+ typedef struct __attribute__((packed)) {
+ uint8_t op;
+ int32_t checksum; /* All the fields below are involved in the calculation of checksum */
+ uint32_t address;
+ uint32_t data_len;
+ uint8_t data_buf[1024];
+ } isp_request_t;
+ '''
+ if size == None:
+ DATAFRAME_SIZE = ISP_FLASH_DATA_FRAME_SIZE
+ size = DATAFRAME_SIZE
+ data_chunks = chunks(data, size)
+ #KFlash.log('[DEBUG] flash dataframe | data length:', len(data))
+
+
+
+ for n, chunk in enumerate(data_chunks):
+ #KFlash.log('[INFO] sending chunk', i, '@address', hex(address))
+ out = struct.pack('II', address, len(chunk))
+
+ crc32_checksum = struct.pack('I', binascii.crc32(out + chunk) & 0xFFFFFFFF)
+
+ out = struct.pack('HH', 0xd4, 0x00) + crc32_checksum + out + chunk
+ #KFlash.log("[$$$$]", binascii.hexlify(out[:32]).decode())
+ retry_count = 0
+ while True:
+ try:
+ sent = self.write(out)
+ #KFlash.log('[INFO]', 'sent', sent, 'bytes', 'checksum', crc32_checksum)
+ self.flash_recv_debug()
+ except:
+ retry_count = retry_count + 1
+ if retry_count > MAX_RETRY_TIMES:
+ err = (ERROR_MSG,"Error Count Exceeded, Stop Trying",BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ continue
+ break
+ address += len(chunk)
+
+
+
+ def flash_erase(self, erase_addr = 0, erase_len = 0):
+ #KFlash.log('[DEBUG] erasing spi flash.')
+ cmd0 = b'\xd3\x00\x00\x00'
+ cmd = struct.pack("I", erase_addr)
+ cmd += struct.pack("I", erase_len)
+ cmd = cmd0 + struct.pack('I', binascii.crc32(cmd) & 0xFFFFFFFF) + cmd
+ self.write(cmd)
+ t = time.time()
+ op, reason, text = FlashModeResponse.parse(self.recv_one_return(timeout_s=90))
+ if FlashModeResponse.ErrorCode(reason) != FlashModeResponse.ErrorCode.ISP_RET_OK:
+ err = (ERROR_MSG,"erase error, error code: 0x{:02X}: {}".format(reason, text))
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ else:
+ KFlash.log(INFO_MSG,"erase ok")
+ #KFlash.log('MAIX return op:', FlashModeResponse.Operation(op).name, 'reason:',
+ # FlashModeResponse.ErrorCode(reason).name)
+
+ def install_flash_bootloader(self, data):
+ # Download flash bootloader
+ self.flash_dataframe(data, address=0x80000000)
+
+ def load_elf_to_sram(self, f):
+ try:
+ from elftools.elf.elffile import ELFFile
+ from elftools.elf.descriptions import describe_p_type
+ except ImportError:
+ err = (ERROR_MSG,'pyelftools must be installed, run '+BASH_TIPS['GREEN']+'`' + ('pip', 'pip3')[sys.version_info > (3, 0)] + ' install pyelftools`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+
+ elffile = ELFFile(f)
+ if elffile['e_entry'] != 0x80000000:
+ KFlash.log(WARN_MSG,"ELF entry is 0x%x instead of 0x80000000" % (elffile['e_entry']), BASH_TIPS['DEFAULT'])
+
+ for segment in elffile.iter_segments():
+ t = describe_p_type(segment['p_type'])
+ KFlash.log(INFO_MSG, ("Program Header: Size: %d, Virtual Address: 0x%x, Type: %s" % (segment['p_filesz'], segment['p_vaddr'], t)), BASH_TIPS['DEFAULT'])
+ if not (segment['p_vaddr'] & 0x80000000):
+ continue
+ if segment['p_filesz']==0 or segment['p_vaddr']==0:
+ KFlash.log("Skipped")
+ continue
+ self.flash_dataframe(segment.data(), segment['p_vaddr'])
+
+ def flash_firmware(self, firmware_bin, aes_key = None, address_offset = 0, sha256Prefix = True, filename = ""):
+ # type: (bytes, bytes, int, bool) -> None
+ # Don't remove above code!
+
+ #KFlash.log('[DEBUG] flash_firmware DEBUG: aeskey=', aes_key)
+
+ if sha256Prefix == True:
+ # Add header to the firmware
+ # Format: SHA256(after)(32bytes) + AES_CIPHER_FLAG (1byte) + firmware_size(4bytes) + firmware_data
+ aes_cipher_flag = b'\x01' if aes_key else b'\x00'
+
+ # Encryption
+ if aes_key:
+ enc = AES_128_CBC(aes_key, iv=b'\x00'*16).encrypt
+ padded = firmware_bin + b'\x00'*15 # zero pad
+ firmware_bin = b''.join([enc(padded[i*16:i*16+16]) for i in range(len(padded)//16)])
+
+ firmware_len = len(firmware_bin)
+
+ data = aes_cipher_flag + struct.pack('I', firmware_len) + firmware_bin
+
+ sha256_hash = hashlib.sha256(data).digest()
+
+ firmware_with_header = data + sha256_hash
+
+ total_len = (len(firmware_with_header) + ISP_FLASH_SECTOR_SIZE - 1)//ISP_FLASH_SECTOR_SIZE * ISP_FLASH_SECTOR_SIZE
+ # Slice download firmware
+ data_chunks = chunks(firmware_with_header, ISP_FLASH_DATA_FRAME_SIZE) # 4kiB for a sector, 16kiB for dataframe
+ else:
+ total_len = (len(firmware_bin) + ISP_FLASH_SECTOR_SIZE - 1)//ISP_FLASH_SECTOR_SIZE * ISP_FLASH_SECTOR_SIZE
+ data_chunks = chunks(firmware_bin, ISP_FLASH_DATA_FRAME_SIZE, address = address_offset)
+
+ time_start = time.time()
+ write_len = 0
+ for n, chunk in enumerate(data_chunks):
+ self.checkKillExit()
+ # 4K align
+ aligned_chunk = len(chunk)
+ aligned_chunk = (ISP_FLASH_SECTOR_SIZE - (aligned_chunk % ISP_FLASH_SECTOR_SIZE))%ISP_FLASH_SECTOR_SIZE + aligned_chunk
+ chunk = chunk.ljust(aligned_chunk, b'\x00') # align by size of dataframe
+
+ # Download a dataframe
+ #KFlash.log('[INFO]', 'Write firmware data piece')
+ chunk_len = len(chunk)
+ self.dump_to_flash(chunk, address= write_len + address_offset, size=chunk_len)
+ write_len += chunk_len
+ columns, lines = TerminalSize.get_terminal_size((100, 24), terminal)
+ time_delta = time.time() - time_start
+ speed = ''
+ if (time_delta > 1):
+ speed = str(int(write_len / 1024.0 / time_delta)) + 'kiB/s'
+ printProgressBar(write_len, total_len, prefix = 'Programming BIN:', filename=filename, suffix = speed, length = columns - 35)
+
+ def kill(self):
+ self._kill_process = True
+
+ def checkKillExit(self):
+ if self._kill_process:
+ self._port.close()
+ self._kill_process = False
+ raise Exception("Cancel")
+
+ def open_terminal(reset):
+ control_signal = '0' if reset else '1'
+ control_signal_b = not reset
+ import serial.tools.miniterm
+ # For using the terminal with MaixPy the 'filter' option must be set to 'direct'
+ # because some control characters are emited
+ sys.argv = [sys.argv[0], _port, '115200', '--dtr='+control_signal, '--rts='+control_signal, '--filter=direct']
+ serial.tools.miniterm.main(default_port=_port, default_baudrate=115200, default_dtr=control_signal_b, default_rts=control_signal_b)
+ sys.exit(0)
+
+ boards_choices = ["kd233", "dan", "bit", "bit_mic", "goE", "goD", "maixduino", "trainer"]
+ if terminal:
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-p", "--port", help="COM Port", default="DEFAULT")
+ parser.add_argument("-f", "--flash", help="SPI Flash type, 0 for SPI3, 1 for SPI0", default=1)
+ parser.add_argument("-b", "--baudrate", type=int, help="UART baudrate for uploading firmware", default=115200)
+ parser.add_argument("-l", "--bootloader", help="Bootloader bin path", required=False, default=None)
+ parser.add_argument("-k", "--key", help="AES key in hex, if you need encrypt your firmware.", required=False, default=None)
+ parser.add_argument("-v", "--version", help="Print version.", action='version', version='0.8.3')
+ parser.add_argument("--verbose", help="Increase output verbosity", default=False, action="store_true")
+ parser.add_argument("-t", "--terminal", help="Start a terminal after finish (Python miniterm)", default=False, action="store_true")
+ parser.add_argument("-n", "--noansi", help="Do not use ANSI colors, recommended in Windows CMD", default=False, action="store_true")
+ parser.add_argument("-s", "--sram", help="Download firmware to SRAM and boot", default=False, action="store_true")
+ parser.add_argument("-B", "--Board",required=False, type=str, help="Select dev board, e.g. kd233, dan, bit, goD, goE or trainer")
+ parser.add_argument("-S", "--Slow",required=False, help="Slow download mode", default=False)
+ parser.add_argument("-A", "--addr",required=False, help="flash addr", type=str, default="-1")
+ parser.add_argument("-L", "--length",required=False, help="flash addr", type=str, default="-1")
+ parser.add_argument("firmware", help="firmware bin path")
+ args = parser.parse_args()
+ else:
+ args = argparse.Namespace()
+ setattr(args, "port", "DEFAULT")
+ setattr(args, "flash", 1)
+ setattr(args, "baudrate", 115200)
+ setattr(args, "bootloader", None)
+ setattr(args, "key", None)
+ setattr(args, "verbose", False)
+ setattr(args, "terminal", False)
+ setattr(args, "noansi", False)
+ setattr(args, "sram", False)
+ setattr(args, "Board", None)
+ setattr(args, "Slow", False)
+ setattr(args, "addr", -1)
+ setattr(args, "length", -1)
+
+ # udpate args for none terminal call
+ if not terminal:
+ args.port = dev
+ args.baudrate = baudrate
+ args.noansi = noansi
+ args.sram = sram
+ args.Board = board
+ args.firmware = file
+ args.Slow = slow_mode
+ args.addr = addr
+ args.length = length
+
+ if args.Board == "maixduino" or args.Board == "bit_mic":
+ args.Board = "goE"
+
+ if (args.noansi == True):
+ BASH_TIPS = dict(NORMAL='',BOLD='',DIM='',UNDERLINE='',
+ DEFAULT='', RED='', YELLOW='', GREEN='',
+ BG_DEFAULT='', BG_WHITE='')
+ ERROR_MSG = BASH_TIPS['RED']+BASH_TIPS['BOLD']+'[ERROR]'+BASH_TIPS['NORMAL']
+ WARN_MSG = BASH_TIPS['YELLOW']+BASH_TIPS['BOLD']+'[WARN]'+BASH_TIPS['NORMAL']
+ INFO_MSG = BASH_TIPS['GREEN']+BASH_TIPS['BOLD']+'[INFO]'+BASH_TIPS['NORMAL']
+ KFlash.log(INFO_MSG,'ANSI colors not used',BASH_TIPS['DEFAULT'])
+
+ manually_set_the_board = False
+ if args.Board:
+ manually_set_the_board = True
+
+ if args.port == "DEFAULT":
+ if args.Board == "goE":
+ list_port_info = list(serial.tools.list_ports.grep("0403")) #Take the second one
+ if len(list_port_info) == 0:
+ err = (ERROR_MSG,"No vaild COM Port found in Auto Detect, Check Your Connection or Specify One by"+BASH_TIPS['GREEN']+'`--port/-p`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ list_port_info.sort()
+ if len(list_port_info) == 1:
+ _port = list_port_info[0].device
+ elif len(list_port_info) > 1:
+ _port = list_port_info[1].device
+ KFlash.log(INFO_MSG,"COM Port Auto Detected, Selected ", _port, BASH_TIPS['DEFAULT'])
+ elif args.Board == "trainer":
+ list_port_info = list(serial.tools.list_ports.grep("0403")) #Take the first one
+ if(len(list_port_info)==0):
+ err = (ERROR_MSG,"No vaild COM Port found in Auto Detect, Check Your Connection or Specify One by"+BASH_TIPS['GREEN']+'`--port/-p`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ list_port_info.sort()
+ _port = list_port_info[0].device
+ KFlash.log(INFO_MSG,"COM Port Auto Detected, Selected ", _port, BASH_TIPS['DEFAULT'])
+ else:
+ try:
+ list_port_info = next(serial.tools.list_ports.grep(VID_LIST_FOR_AUTO_LOOKUP)) #Take the first one within the list
+ _port = list_port_info.device
+ KFlash.log(INFO_MSG,"COM Port Auto Detected, Selected ", _port, BASH_TIPS['DEFAULT'])
+ except StopIteration:
+ err = (ERROR_MSG,"No vaild COM Port found in Auto Detect, Check Your Connection or Specify One by"+BASH_TIPS['GREEN']+'`--port/-p`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ else:
+ _port = args.port
+ KFlash.log(INFO_MSG,"COM Port Selected Manually: ", _port, BASH_TIPS['DEFAULT'])
+
+ self.loader = MAIXLoader(port=_port, baudrate=115200)
+ file_format = ProgramFileFormat.FMT_BINARY
+
+ # 0. Check firmware or cmd
+ cmds = ['erase']
+ if not args.firmware in cmds:
+ if not os.path.exists(args.firmware):
+ err = (ERROR_MSG,'Unable to find the firmware at ', args.firmware, BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+
+ with open(args.firmware, 'rb') as f:
+ file_header = f.read(4)
+ #if file_header.startswith(bytes([0x50, 0x4B])):
+ if file_header.startswith(b'\x50\x4B'):
+ if ".kfpkg" != os.path.splitext(args.firmware)[1]:
+ KFlash.log(INFO_MSG, 'Find a zip file, but not with ext .kfpkg:', args.firmware, BASH_TIPS['DEFAULT'])
+ else:
+ file_format = ProgramFileFormat.FMT_KFPKG
+
+ #if file_header.startswith(bytes([0x7F, 0x45, 0x4C, 0x46])):
+ if file_header.startswith(b'\x7f\x45\x4c\x46'):
+ file_format = ProgramFileFormat.FMT_ELF
+ if args.sram:
+ KFlash.log(INFO_MSG, 'Find an ELF file:', args.firmware, BASH_TIPS['DEFAULT'])
+ else:
+ err = (ERROR_MSG, 'This is an ELF file and cannot be programmed to flash directly:', args.firmware, BASH_TIPS['DEFAULT'] , '\r\nPlease retry:', args.firmware + '.bin', BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+
+ # 1. Greeting.
+ KFlash.log(INFO_MSG,"Trying to Enter the ISP Mode...",BASH_TIPS['DEFAULT'])
+
+ retry_count = 0
+
+ while 1:
+ self.checkKillExit()
+ if not self.loader._port.isOpen():
+ self.loader._port.open()
+ try:
+ retry_count = retry_count + 1
+ if retry_count > 15:
+ err = (ERROR_MSG,"No vaild Kendryte K210 found in Auto Detect, Check Your Connection or Specify One by"+BASH_TIPS['GREEN']+'`-p '+('/dev/ttyUSB0', 'COM3')[sys.platform == 'win32']+'`',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ if args.Board == "dan" or args.Board == "bit" or args.Board == "trainer":
+ try:
+ KFlash.log('.', end='')
+ self.loader.reset_to_isp_dan()
+ self.loader.greeting()
+ break
+ except TimeoutError:
+ pass
+ elif args.Board == "kd233":
+ try:
+ KFlash.log('_', end='')
+ self.loader.reset_to_isp_kd233()
+ self.loader.greeting()
+ break
+ except TimeoutError:
+ pass
+ elif args.Board == "goE":
+ try:
+ KFlash.log('*', end='')
+ self.loader.reset_to_isp_kd233()
+ self.loader.greeting()
+ break
+ except TimeoutError:
+ pass
+ elif args.Board == "goD":
+ try:
+ KFlash.log('#', end='')
+ self.loader.reset_to_isp_goD()
+ self.loader.greeting()
+ break
+ except TimeoutError:
+ pass
+ else:
+ try:
+ KFlash.log('.', end='')
+ self.loader.reset_to_isp_dan()
+ self.loader.greeting()
+ args.Board = "dan"
+ KFlash.log()
+ KFlash.log(INFO_MSG,"Automatically detected dan/bit/trainer",BASH_TIPS['DEFAULT'])
+ break
+ except TimeoutError:
+ if not self.loader._port.isOpen():
+ self.loader._port.open()
+ pass
+ try:
+ KFlash.log('_', end='')
+ self.loader.reset_to_isp_kd233()
+ self.loader.greeting()
+ args.Board = "kd233"
+ KFlash.log()
+ KFlash.log(INFO_MSG,"Automatically detected goE/kd233",BASH_TIPS['DEFAULT'])
+ break
+ except TimeoutError:
+ if not self.loader._port.isOpen():
+ self.loader._port.open()
+ pass
+ try:
+ KFlash.log('.', end='')
+ self.loader.reset_to_isp_goD()
+ self.loader.greeting()
+ args.Board = "goD"
+ KFlash.log()
+ KFlash.log(INFO_MSG,"Automatically detected goD",BASH_TIPS['DEFAULT'])
+ break
+ except TimeoutError:
+ if not self.loader._port.isOpen():
+ self.loader._port.open()
+ pass
+ try:
+ # Magic, just repeat, don't remove, it may unstable, don't know why.
+ KFlash.log('_', end='')
+ self.loader.reset_to_isp_kd233()
+ self.loader.greeting()
+ args.Board = "kd233"
+ KFlash.log()
+ KFlash.log(INFO_MSG,"Automatically detected goE/kd233",BASH_TIPS['DEFAULT'])
+ break
+ except TimeoutError:
+ if not self.loader._port.isOpen():
+ self.loader._port.open()
+ pass
+ except Exception as e:
+ KFlash.log()
+ raise_exception( Exception("Greeting fail, check serial port ("+str(e)+")" ) )
+
+ # Don't remove this line
+ # Dangerous, here are dinosaur infested!!!!!
+ ISP_RECEIVE_TIMEOUT = 3
+
+ KFlash.log()
+ KFlash.log(INFO_MSG,"Greeting Message Detected, Start Downloading ISP",BASH_TIPS['DEFAULT'])
+
+ if manually_set_the_board and (not args.Slow):
+ if (args.baudrate >= 1500000) or args.sram:
+ self.loader.change_baudrate_stage0(args.baudrate)
+
+ # 2. download bootloader and firmware
+ if args.sram:
+ with open(args.firmware, 'rb') as firmware_bin:
+ if file_format == ProgramFileFormat.FMT_KFPKG:
+ err = (ERROR_MSG, "Unable to load kfpkg to SRAM")
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ elif file_format == ProgramFileFormat.FMT_ELF:
+ self.loader.load_elf_to_sram(firmware_bin)
+ else:
+ self.loader.install_flash_bootloader(firmware_bin.read())
+ else:
+ # install bootloader at 0x80000000
+ if args.bootloader:
+ with open(args.bootloader, 'rb') as f:
+ isp_loader = f.read()
+ else:
+ isp_loader = ISP_PROG
+ self.loader.install_flash_bootloader(isp_loader)
+
+ # Boot the code from SRAM
+ self.loader.boot()
+ if args.sram:
+ # Dangerous, here are dinosaur infested!!!!!
+ # Don't touch this code unless you know what you are doing
+ self.loader._port.baudrate = args.baudrate
+ KFlash.log(INFO_MSG,"Boot user code from SRAM", BASH_TIPS['DEFAULT'])
+ if(args.terminal == True):
+ try:
+ self.loader._port.close()
+ except Exception:
+ pass
+ open_terminal(False)
+ msg = "Burn SRAM OK"
+ raise_exception( Exception(msg) )
+
+ # Dangerous, here are dinosaur infested!!!!!
+ # Don't touch this code unless you know what you are doing
+ self.loader._port.baudrate = 115200
+
+ KFlash.log(INFO_MSG,"Wait For 0.1 second for ISP to Boot", BASH_TIPS['DEFAULT'])
+
+ time.sleep(0.1)
+
+ self.loader.flash_greeting()
+
+ if args.baudrate != 115200:
+ self.loader.change_baudrate(args.baudrate)
+ KFlash.log(INFO_MSG,"Baudrate changed, greeting with ISP again ... ", BASH_TIPS['DEFAULT'])
+ self.loader.flash_greeting()
+
+ self.loader.init_flash(args.flash)
+
+ if file_format == ProgramFileFormat.FMT_KFPKG:
+ KFlash.log(INFO_MSG,"Extracting KFPKG ... ", BASH_TIPS['DEFAULT'])
+ with tempfile.TemporaryDirectory() as tmpdir:
+ try:
+ with zipfile.ZipFile(args.firmware) as zf:
+ zf.extractall(tmpdir)
+ if not os.path.exists(os.path.join(tmpdir, "flash-list.json")):
+ err = (ERROR_MSG,'Can not find flash-list.json in kfpkg root dir',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ except zipfile.BadZipFile:
+ err = (ERROR_MSG,'Unable to Decompress the kfpkg, your file might be corrupted.',BASH_TIPS['DEFAULT'])
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+
+ fFlashList = open(os.path.join(tmpdir, 'flash-list.json'), "r")
+ sFlashList = re.sub(r'"address": (.*),', r'"address": "\1",', fFlashList.read()) #Pack the Hex Number in json into str
+ fFlashList.close()
+ jsonFlashList = json.loads(sFlashList)
+ for lBinFiles in jsonFlashList['files']:
+ self.checkKillExit()
+ KFlash.log(INFO_MSG,"Writing",lBinFiles['bin'],"into","0x%08x"%int(lBinFiles['address'], 0),BASH_TIPS['DEFAULT'])
+ with open(os.path.join(tmpdir, lBinFiles["bin"]), "rb") as firmware_bin:
+ self.loader.flash_firmware(firmware_bin.read(), None, int(lBinFiles['address'], 0), lBinFiles['sha256Prefix'], filename=lBinFiles['bin'])
+ else:
+ if args.firmware == "erase":
+ if args.addr.lower().startswith("0x"):
+ addr = int(args.addr, base=16)
+ else:
+ addr = int(args.addr)
+ if args.length.lower() == "all":
+ addr = 0
+ length = 0xFFFFFFEE
+ KFlash.log(INFO_MSG,"erase all")
+ else:
+ if args.length.lower().startswith("0x"):
+ length = int(args.length, base=16)
+ else:
+ length = int(args.length)
+ KFlash.log(INFO_MSG,"erase '0x{:x}' - '0x{:x}' ({}B, {:.02}KiB, {:.02}MiB)".format(addr, addr+length, length, length/1024.0, length/1024.0/1024.0))
+ if ((addr % 4096) != 0) or ( length != 0xFFFFFFEE and (length % 4096) != 0) or addr < 0 or addr > 0x01000000 or length < 0 or ( length > 0x01000000 and length != 0xFFFFFFEE):
+ err = (ERROR_MSG,"erase flash addr or length error, addr should >= 0x00000000, and length should >= 4096 or 'all'")
+ err = tuple2str(err)
+ raise_exception( Exception(err) )
+ self.loader.flash_erase(addr, length)
+ else:
+ with open(args.firmware, 'rb') as firmware_bin:
+ if args.key:
+ aes_key = binascii.a2b_hex(args.key)
+ if len(aes_key) != 16:
+ raise_exception( ValueError('AES key must by 16 bytes') )
+
+ self.loader.flash_firmware(firmware_bin.read(), aes_key=aes_key)
+ else:
+ self.loader.flash_firmware(firmware_bin.read())
+
+ # 3. boot
+ if args.Board == "dan" or args.Board == "bit" or args.Board == "trainer":
+ self.loader.reset_to_boot_dan()
+ elif args.Board == "kd233":
+ self.loader.reset_to_boot_kd233()
+ elif args.Board == "goE":
+ self.loader.reset_to_boot_maixgo()
+ elif args.Board == "goD":
+ self.loader.reset_to_boot_goD()
+ else:
+ KFlash.log(WARN_MSG,"Board unknown !! please press reset to boot!!")
+
+ KFlash.log(INFO_MSG,"Rebooting...", BASH_TIPS['DEFAULT'])
+ try:
+ self.loader._port.close()
+ except Exception:
+ pass
+
+ if(args.terminal == True):
+ open_terminal(True)
+
+ def kill(self):
+ if self.loader:
+ self.loader.kill()
+ self.killProcess = True
+
+ def checkKillExit(self):
+ if self.killProcess:
+ if self.loader:
+ self.loader._port.close()
+ raise Exception("Cancel")
+
+
+def main():
+ kflash = KFlash()
+ try:
+ kflash.process()
+ except Exception as e:
+ if str(e) == "Burn SRAM OK":
+ sys.exit(0)
+ kflash.log(str(e))
+ sys.exit(1)
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/nsim.sh b/scripts/nsim.sh
index 04877b9e1..424862c1d 100755
--- a/scripts/nsim.sh
+++ b/scripts/nsim.sh
@@ -12,11 +12,18 @@ if [ "$arch" = "arcv1" ]; then
nsimdrv -prop=nsim_isa_family=a700 -prop=nsim_isa_atomic_option=1 -prop=nsim_mmu=3 -prop=icache=32768,64,2,0 -prop=dcache=32768,64,4,0 -prop=nsim_isa_dpfp=none -prop=nsim_isa_shift_option=2 -prop=nsim_isa_swap_option=1 -prop=nsim_isa_bitscan_option=1 -prop=nsim_isa_sat=1 -prop=nsim_isa_mpy32=1 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_mem-dev=uart0 $kernel
fi
if [ "$arch" = "arcv2" ]; then
- nsimdrv -prop=nsim_isa_family=av2hs -prop=nsim_isa_core=1 -prop=chipid=0xffff -prop=nsim_isa_atomic_option=1 -prop=nsim_isa_ll64_option=1 -prop=nsim_mmu=4 -prop=mmu_pagesize=8192 -prop=mmu_super_pagesize=2097152 -prop=mmu_stlb_entries=16 -prop=mmu_ntlb_ways=4 -prop=mmu_ntlb_sets=128 -prop=icache=32768,64,4,0 -prop=dcache=16384,64,2,0 -prop=nsim_isa_shift_option=2 -prop=nsim_isa_swap_option=1 -prop=nsim_isa_bitscan_option=1 -prop=nsim_isa_sat=1 -prop=nsim_isa_div_rem_option=1 -prop=nsim_isa_mpy_option=9 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_isa_number_of_interrupts=32 -prop=nsim_isa_number_of_external_interrupts=32 -prop=isa_counters=1 -prop=nsim_isa_pct_counters=8 -prop=nsim_isa_pct_size=48 -prop=nsim_isa_pct_interrupt=0 -prop=nsim_mem-dev=uart0,base=0xc0fc1000,irq=24 -prop=nsim_isa_aps_feature=1 -prop=nsim_isa_num_actionpoints=4 $kernel
+ nsimdrv -prop=nsim_isa_family=av2hs -prop=nsim_isa_core=1 -prop=chipid=0xffff -prop=nsim_isa_atomic_option=1 -prop=nsim_isa_ll64_option=1 -prop=nsim_mmu=4 -prop=mmu_pagesize=8192 -prop=mmu_super_pagesize=2097152 -prop=mmu_stlb_entries=16 -prop=mmu_ntlb_ways=4 -prop=mmu_ntlb_sets=128 -prop=icache=32768,64,4,0 -prop=dcache=16384,64,2,0 -prop=nsim_isa_shift_option=2 -prop=nsim_isa_swap_option=1 -prop=nsim_isa_bitscan_option=1 -prop=nsim_isa_sat=1 -prop=nsim_isa_div_rem_option=1 -prop=nsim_isa_mpy_option=9 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_isa_number_of_interrupts=32 -prop=nsim_isa_number_of_external_interrupts=32 -prop=isa_counters=1 -prop=nsim_isa_pct_counters=8 -prop=nsim_isa_pct_size=48 -prop=nsim_isa_pct_interrupt=0 -prop=nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24 -prop=nsim_isa_aps_feature=1 -prop=nsim_isa_num_actionpoints=4 $kernel
fi
if [ "$arch" = "arcv1-be" ]; then
nsimdrv -prop=nsim_isa_big_endian=1 -prop=nsim_isa_family=a700 -prop=nsim_isa_atomic_option=1 -prop=nsim_mmu=3 -prop=icache=32768,64,2,0 -prop=dcache=32768,64,4,0 -prop=nsim_isa_dpfp=none -prop=nsim_isa_shift_option=2 -prop=nsim_isa_swap_option=1 -prop=nsim_isa_bitscan_option=1 -prop=nsim_isa_sat=1 -prop=nsim_isa_mpy32=1 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_mem-dev=uart0 $kernel
fi
if [ "$arch" = "arcv2-be" ]; then
- nsimdrv -prop=nsim_isa_big_endian=1 -prop=nsim_isa_family=av2hs -prop=nsim_isa_core=1 -prop=chipid=0xffff -prop=nsim_isa_atomic_option=1 -prop=nsim_isa_ll64_option=1 -prop=nsim_mmu=4 -prop=mmu_pagesize=8192 -prop=mmu_super_pagesize=2097152 -prop=mmu_stlb_entries=16 -prop=mmu_ntlb_ways=4 -prop=mmu_ntlb_sets=128 -prop=icache=32768,64,4,0 -prop=dcache=16384,64,2,0 -prop=nsim_isa_shift_option=2 -prop=nsim_isa_swap_option=1 -prop=nsim_isa_bitscan_option=1 -prop=nsim_isa_sat=1 -prop=nsim_isa_div_rem_option=1 -prop=nsim_isa_mpy_option=9 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_isa_number_of_interrupts=32 -prop=nsim_isa_number_of_external_interrupts=32 -prop=isa_counters=1 -prop=nsim_isa_pct_counters=8 -prop=nsim_isa_pct_size=48 -prop=nsim_isa_pct_interrupt=0 -prop=nsim_mem-dev=uart0,base=0xc0fc1000,irq=24 -prop=nsim_isa_aps_feature=1 -prop=nsim_isa_num_actionpoints=4 $kernel
+ nsimdrv -prop=nsim_isa_big_endian=1 -prop=nsim_isa_family=av2hs -prop=nsim_isa_core=1 -prop=chipid=0xffff -prop=nsim_isa_atomic_option=1 -prop=nsim_isa_ll64_option=1 -prop=nsim_mmu=4 -prop=mmu_pagesize=8192 -prop=mmu_super_pagesize=2097152 -prop=mmu_stlb_entries=16 -prop=mmu_ntlb_ways=4 -prop=mmu_ntlb_sets=128 -prop=icache=32768,64,4,0 -prop=dcache=16384,64,2,0 -prop=nsim_isa_shift_option=2 -prop=nsim_isa_swap_option=1 -prop=nsim_isa_bitscan_option=1 -prop=nsim_isa_sat=1 -prop=nsim_isa_div_rem_option=1 -prop=nsim_isa_mpy_option=9 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_isa_number_of_interrupts=32 -prop=nsim_isa_number_of_external_interrupts=32 -prop=isa_counters=1 -prop=nsim_isa_pct_counters=8 -prop=nsim_isa_pct_size=48 -prop=nsim_isa_pct_interrupt=0 -prop=nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24 -prop=nsim_isa_aps_feature=1 -prop=nsim_isa_num_actionpoints=4 $kernel
fi
+if [ "$arch" = "arcv3-arc32" ]; then
+ nsimdrv -prop=nsim_isa_family=av3hs -prop=nsim_isa_dc_hw_prefetch=1 -prop=nsim_isa_dual_issue_option=1 -prop=nsim_isa_atomic_option=2 -prop=nsim_isa_m128_option=0 -prop=nsim_isa_ll64_option=1 -prop=nsim_isa_mpy_option=9 -prop=nsim_isa_div_rem_option=2 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_isa_rtc_option=1 -prop=icache=16384,64,4 -prop=dcache=16384,64,2 -prop=mmu_version=16 -prop=mmu_pagesize=4096 -prop=mmu_address_space=32 -prop=nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24 -prop=nsim_isa_number_of_interrupts=32 -prop=nsim_isa_number_of_external_interrupts=32 -prop=nsim_isa_has_fp=1 -prop=nsim_isa_fp_dds_option=1 -prop=nsim_isa_fp_div_option=1 -prop=nsim_isa_fp_dp_option=1 -prop=nsim_isa_fp_hp_option=1 -prop=nsim_isa_fp_vec_option=1 -prop=nsim_isa_fp_wide_option=1 -prop=nsim_isa_mpy64=1 -prop=nsim_isa_div64_option=1 -prop=nsim_isa_dsp_option=3 -prop=nsim_isa_dsp_wide_option=1 $kernel
+fi
+if [ "$arch" = "arcv3-arc64" ]; then
+ nsimdrv -prop=nsim_fast=0 -prop=nsim_isa_dual_issue_option=1 -prop=nsim_isa_has_hw_pf=1 -prop=nsim_isa_m128_option=1 -prop=nsim_isa_has_hw_pf=1 -prop=nsim_isa_vec64=1 -prop=nsim_isa_family=arc64 -prop=nsim_isa_enable_timer_0=1 -prop=nsim_isa_enable_timer_1=1 -prop=nsim_isa_rtc_option=1 -prop=nsim_isa_addr_size=64 -prop=nsim_isa_pc_size=64 -prop=icache=16384,64,4,o -prop=dcache=16384,64,4,o -prop=mmu_version=16 -prop=mmu_pagesize=4096 -prop=mmu_address_space=48 -prop=nsim_mem-dev=uart0,kind=dwuart,base=0xf0000000,irq=24 -prop=nsim_isa_mpy_option=9 -prop=nsim_isa_mpy64=1 -prop=nsim_isa_div64_option=1 -prop=nsim_isa_div_rem_option=2 -prop=nsim_isa_atomic_option=2 -prop=nsim_isa_has_fp=1 -prop=nsim_isa_fp_dds_option=1 -prop=nsim_isa_fp_div_option=1 -prop=nsim_isa_fp_dp_option=1 -prop=nsim_isa_fp_hp_option=1 -prop=nsim_isa_fp_vec_option=1 -prop=nsim_isa_fp_wide_option=1 $kernel
+fi
+
diff --git a/scripts/prereq.sh b/scripts/prereq.sh
index bd0b525d8..717ddf15c 100755
--- a/scripts/prereq.sh
+++ b/scripts/prereq.sh
@@ -233,7 +233,7 @@ printf " ---> checking if bash is installed.. "
if which bash >/dev/null; then
printf "found\n"
printf " ---> checking if it is bash 4.x or 5.x.. "
- LC_ALL=C bash --version 2>/dev/null| grep -i "version \(4\|5\)" >/dev/null
+ LC_ALL=C bash --version 2>/dev/null| egrep -i 'version 4|5' >/dev/null
if [ $? -eq 0 ]; then
printf "yes\n"
else
@@ -304,14 +304,6 @@ if ! which git >/dev/null 2>&1; then
fi
printf "found\n"
-printf " ---> checking if pkg-config is installed.. "
-if ! which pkg-config >/dev/null 2>&1; then
- printf "not found\n"
- out=1
-else
- printf "found\n"
-fi
-
printf " ---> checking if ncurses is installed.. "
check_lxdialog=${topdir}/adk/config/lxdialog/check-lxdialog.sh
CURSES_CFLAGS=$(/bin/sh ${check_lxdialog} -ccflags | tr '\n' ' ')
@@ -359,8 +351,8 @@ else
echo "HOST_CXX:=${CXX}" >> $topdir/prereq.mk
fi
-echo "HOST_CFLAGS:=-O0 -g0" >> $topdir/prereq.mk
-echo "HOST_CXXFLAGS:=-O0 -g0" >> $topdir/prereq.mk
+echo "HOST_CFLAGS:=-O0 -g0 -fcommon" >> $topdir/prereq.mk
+echo "HOST_CXXFLAGS:=-O0 -g0 -fcommon" >> $topdir/prereq.mk
echo 'LANGUAGE:=C' >> $topdir/prereq.mk
echo 'LC_ALL:=C' >> $topdir/prereq.mk
echo "_PATH:=$PATH" >> $topdir/prereq.mk
@@ -626,15 +618,6 @@ else
host_build_cpio=1
fi
-printf " ---> checking if xz is installed.. "
-host_build_xz=0
-if ! which xz >/dev/null 2>&1; then
- printf "not found\n"
- host_build_xz=1
-else
- printf "found\n"
-fi
-
# optional
host_build_cdrtools=0
if ! which mkisofs >/dev/null 2>&1; then
@@ -651,6 +634,11 @@ if ! which lzma >/dev/null 2>&1; then
host_build_lzma=1
fi
+host_build_zstd=0
+if ! which zstd >/dev/null 2>&1; then
+ host_build_zstd=1
+fi
+
host_build_lz4=0
if ! which lz4c >/dev/null 2>&1; then
host_build_lz4=1
@@ -728,9 +716,6 @@ fi
if [ $host_build_cpio -eq 1 ]; then
printf "\t%s\n" "select ADK_HOST_BUILD_CPIO" >> $topdir/target/config/Config.in.prereq
fi
-if [ $host_build_xz -eq 1 ]; then
- printf "\t%s\n" "select ADK_HOST_BUILD_XZ" >> $topdir/target/config/Config.in.prereq
-fi
# optional
if [ $host_build_cdrtools -eq 1 ]; then
printf "\t%s\n" "select ADK_HOST_BUILD_CDRTOOLS if ADK_HOST_NEED_CDRTOOLS" >> $topdir/target/config/Config.in.prereq
@@ -741,6 +726,9 @@ fi
if [ $host_build_lzma -eq 1 ]; then
printf "\t%s\n" "select ADK_HOST_BUILD_LZMA if ADK_HOST_NEED_LZMA" >> $topdir/target/config/Config.in.prereq
fi
+if [ $host_build_zstd -eq 1 ]; then
+ printf "\t%s\n" "select ADK_HOST_BUILD_ZSTD if ADK_HOST_NEED_ZSTD" >> $topdir/target/config/Config.in.prereq
+fi
if [ $host_build_lz4 -eq 1 ]; then
printf "\t%s\n" "select ADK_HOST_BUILD_LZ4 if ADK_HOST_NEED_LZ4" >> $topdir/target/config/Config.in.prereq
fi
@@ -802,6 +790,19 @@ if [ ! -f $topdir/.config ]; then
else
# scan host-tool prerequisites of certain packages before building.
. $topdir/.config
+
+ if [ -n "$ADK_PACKAGE_FIREFOX" ]; then
+ NEED_RUST="$NEED_RUST firefox"
+ fi
+ if [ -n "$ADK_PACKAGE_FIREFOX" ]; then
+ NEED_CARGO="$NEED_CARGO firefox"
+ fi
+ if [ -n "$ADK_PACKAGE_FIREFOX" ]; then
+ NEED_CLANG="$NEED_CLANG firefox"
+ fi
+ if [ -n "$ADK_PACKAGE_FIREFOX" ]; then
+ NEED_CBINDGEN="$NEED_CBINDGEN firefox"
+ fi
if [ -n "$ADK_PACKAGE_KODI" ]; then
NEED_JAVA="$NEED_JAVA kodi"
fi
@@ -898,6 +899,34 @@ else
fi
fi
+ if [ -n "$NEED_RUST" ]; then
+ if ! which rustc >/dev/null 2>&1; then
+ printf "You need rustc to build $NEED_RUST \n"
+ out=1
+ fi
+ fi
+
+ if [ -n "$NEED_CARGO" ]; then
+ if ! which cargo >/dev/null 2>&1; then
+ printf "You need cargo to build $NEED_CARGO \n"
+ out=1
+ fi
+ fi
+
+ if [ -n "$NEED_CLANG" ]; then
+ if ! which clang-13 >/dev/null 2>&1; then
+ printf "You need clang-13 to build $NEED_CLANG \n"
+ out=1
+ fi
+ fi
+
+ if [ -n "$NEED_CBINDGEN" ]; then
+ if ! which cbindgen >/dev/null 2>&1; then
+ printf "You need cbindgen to build $NEED_CBINDGEN \n"
+ out=1
+ fi
+ fi
+
if [ -n "$NEED_STATIC_LIBSTDCXX" ]; then
cat >test.c <<-'EOF'
#include <stdio.h>
diff --git a/scripts/tarpkg b/scripts/tarpkg
index 40ff94122..43a7ab4a1 100755
--- a/scripts/tarpkg
+++ b/scripts/tarpkg
@@ -16,14 +16,14 @@ if [ "$1" = "build" ];then
chmod +x ${2}/usr/lib/pkg/${pkgname}.$file )
done
rm -rf $2/CONTROL
- (cd $2 && tar -cf - .|xz -c > $3/${pkgname}_${version}_${arch}.tar.xz)
+ (cd $2 && tar -cf - .|gzip -c > $3/${pkgname}_${version}_${arch}.tar.gz)
elif [ "$1" = "install" ];then
pkg=$(echo $(basename $2)|sed -e "s#_.*##")
if [ -x ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst ]; then
IPKG_INSTROOT="$PKG_INSTROOT" ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst
rm ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst
fi
- xz -d -c $2|tar -xpf - -C ${PKG_INSTROOT}
+ gzip -d -c $2|tar -xpf - -C ${PKG_INSTROOT}
if [ -x ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst ]; then
IPKG_INSTROOT="$PKG_INSTROOT" ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst
rm ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst
diff --git a/target/Makefile b/target/Makefile
index 0ebae1de2..9c5c8616e 100644
--- a/target/Makefile
+++ b/target/Makefile
@@ -56,7 +56,7 @@ ifeq ($(ADK_RUNTIME_VERBOSE_KERNEL_VGA_ONLY),y)
$(BUILD_DIR)/.kernelconfig.board
endif
ifeq ($(ADK_RUNTIME_VERBOSE_KERNEL_SERIAL_ONLY),y)
- $(SED) 's#^\(CONFIG_.*CMDLINE="\)\(.*\)"#\1\2 console=$(ADK_RUNTIME_CONSOLE_SERIAL_DEVICE),$(ADK_RUNTIME_CONSOLE_SERIAL_SPEED)" systemd.log_level=debug systemd.log_target=console#' \
+ $(SED) 's#^\(CONFIG_.*CMDLINE="\)\(.*\)"#\1\2 console=$(ADK_RUNTIME_CONSOLE_SERIAL_DEVICE),$(ADK_RUNTIME_CONSOLE_SERIAL_SPEED)"#' \
$(BUILD_DIR)/.kernelconfig.board
endif
ifeq ($(ADK_RUNTIME_VERBOSE_KERNEL_VGA_SERIAL),y)
@@ -71,7 +71,6 @@ ifeq ($(ADK_TARGET_SYSTEM_QEMU_M68K_Q800)$(ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208),
@$(SED) 's#^\(CONFIG_.*BOOTPARAM_STRING="\)\(.*\)"#\1\2 ro $(FS_CMDLINE)"#' \
$(BUILD_DIR)/.kernelconfig.board
endif
-ifneq ($(ADK_RUNTIME_INIT_SYSTEMD),y)
ifeq ($(ADK_TARGET_ROOTFS_NFSROOT),)
@$(SED) 's#^\(CONFIG_.*CMDLINE="\)\(.*\)"#\1\2 ro"#' \
$(BUILD_DIR)/.kernelconfig.board
@@ -79,7 +78,6 @@ else
@$(SED) 's#^\(CONFIG_.*CMDLINE="\)\(.*\)"#\1\2 rw"#' \
$(BUILD_DIR)/.kernelconfig.board
endif
-endif
@$(SED) 's#^\(CONFIG_.*CMDLINE="\)\(.*\)"#\1\2 $(FS_CMDLINE)"#' \
$(BUILD_DIR)/.kernelconfig.board
ifneq ($(ADK_TARGET_CMDLINE),)
diff --git a/target/aarch64/Makefile b/target/aarch64/Makefile
index b470e2975..a461cf4d3 100644
--- a/target/aarch64/Makefile
+++ b/target/aarch64/Makefile
@@ -24,6 +24,18 @@ ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
@echo "Use following command to install it on SD card:"
@echo "sudo ./scripts/install.sh $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
endif
+ifeq ($(ADK_TARGET_SYSTEM_ROCKPI4_PLUS)$(ADK_TARGET_SYSTEM_RASPBERRY_PI5),y)
+ifeq ($(ADK_RUNTIME_DATA_PARTITION),y)
+ @echo "Use following command to install with a writable data partition"
+ @echo "sudo ./scripts/install.sh -d 256 $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+ @echo "If you want to update a card without loosing existing data on the writable partition use:"
+ @echo "sudo ./scripts/install.sh -k -d 256 $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+ @echo "In both cases the cfgfs partition is _not_ removed!"
+else
+ @echo "Use following command to install it on SD card:"
+ @echo "sudo ./scripts/install.sh $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+endif
+endif
ifeq ($(ADK_TARGET_QEMU),y)
@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
@echo "Use following command to create a QEMU Image:"
@@ -54,6 +66,20 @@ ifeq ($(ADK_TARGET_QEMU),y)
@echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
endif
endif
+ifeq ($(ADK_TARGET_FS),nfsroot)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+endif
+ifeq ($(ADK_TARGET_FS),genimage)
+targethelp:
+ @echo "The disk image is: $(FW_DIR)/sdcard.img"
+ @echo "Use following command to install it on SD card:"
+ @echo 'sudo dd if=$(FW_DIR)/sdcard.img of=/dev/sdX bs=2048k'
+endif
+ifeq ($(ADK_TARGET_FS),nfsroot)
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
+endif
kernel-strip:
@cp $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
@@ -74,6 +100,13 @@ ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
break; \
done
endif
+ifeq ($(ADK_TARGET_SYSTEM_ROCKPI4_PLUS),y)
+ ${KERNEL_MAKE} rockchip/rk3399-rock-pi-4b-plus.dtb $(MAKE_TRACE)
+endif
+ for x in $(LINUX_DIR)/arch/arm64/boot/dts/*/*.dtb; do \
+ [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm64/boot/dts/*/*.dtb $(FW_DIR); \
+ break; \
+ done
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),archive)
@@ -88,3 +121,6 @@ endif
ifeq ($(ADK_TARGET_FS),initramfspiggyback)
imageinstall: createinitramfs targethelp
endif
+ifeq ($(ADK_TARGET_FS),genimage)
+imageinstall: dtb-install $(FW_DIR)/$(GENIMAGE) targethelp
+endif
diff --git a/target/aarch64/kernel/raspberry-pi3p-64 b/target/aarch64/kernel/raspberry-pi3p-64
deleted file mode 100644
index 6d9ace351..000000000
--- a/target/aarch64/kernel/raspberry-pi3p-64
+++ /dev/null
@@ -1,10 +0,0 @@
-CONFIG_ARM64=y
-CONFIG_ARCH_BCM2835=y
-CONFIG_BRCM_CHAR_DRIVERS=y
-CONFIG_BCM2708_VCMEM=y
-CONFIG_BCM_VCIO=y
-CONFIG_BCMA=y
-CONFIG_MAILBOX=y
-CONFIG_BCM2835_MBOX=y
-CONFIG_RASPBERRYPI_POWER=y
-CONFIG_RASPBERRYPI_FIRMWARE=y
diff --git a/target/aarch64/kernel/raspberry-pi4-64 b/target/aarch64/kernel/raspberry-pi4-64
new file mode 100644
index 000000000..d818141cc
--- /dev/null
+++ b/target/aarch64/kernel/raspberry-pi4-64
@@ -0,0 +1,1874 @@
+CONFIG_ARM64=y
+CONFIG_ARCH_BCM=y
+CONFIG_ARCH_BCM2835=y
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCMA=y
+CONFIG_MAILBOX=y
+CONFIG_BCM2835_MBOX=y
+CONFIG_RASPBERRYPI_POWER=y
+CONFIG_RASPBERRYPI_FIRMWARE=y
+CONFIG_CLK_RASPBERRYPI=y
+CONFIG_KUSER_HELPERS=y
+
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_ARM_RASPBERRYPI_CPUFREQ=y
+
+CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
+CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
+CONFIG_HAVE_NMI=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_KEEPINITRD=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_HAVE_ASM_MODVERSIONS=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
+CONFIG_MMU_GATHER_TABLE_FREE=y
+CONFIG_MMU_GATHER_RCU_TABLE_FREE=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
+CONFIG_HAVE_CMPXCHG_LOCAL=y
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_ARCH_STACKLEAK=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
+CONFIG_LTO_NONE=y
+CONFIG_ARCH_SUPPORTS_CFI_CLANG=y
+CONFIG_HAVE_CONTEXT_TRACKING_USER=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOVE_PUD=y
+CONFIG_HAVE_MOVE_PMD=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_HAVE_ARCH_HUGE_VMALLOC=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_ARCH_MMAP_RND_BITS=18
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=11
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_COMPAT_OLD_SIGACTION=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+CONFIG_VMAP_STACK=y
+CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y
+CONFIG_RANDOMIZE_KSTACK_OFFSET=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_HAVE_ARCH_COMPILER_H=y
+CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
+CONFIG_ARCH_USE_MEMREMAP_PROT=y
+CONFIG_ARCH_HAS_RELR=y
+CONFIG_HAVE_PREEMPT_DYNAMIC=y
+CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y
+CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y
+CONFIG_ARCH_HAVE_TRACE_MMIO_ACCESS=y
+
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_ASM_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_MODULE_COMPRESS_XZ=y
+CONFIG_MODPROBE_PATH="/sbin/modprobe"
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_BLOCK_LEGACY_AUTOLOAD=y
+CONFIG_BLK_CGROUP_RWSTAT=y
+CONFIG_BLK_DEV_BSG_COMMON=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_INTEGRITY_T10=y
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_BLK_DEBUG_FS=y
+
+CONFIG_PARTITION_ADVANCED=y
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+CONFIG_BLOCK_COMPAT=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+CONFIG_BLOCK_HOLDER_DEPRECATED=y
+CONFIG_BLK_MQ_STACKING=y
+
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_ASN1=y
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
+CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
+CONFIG_FREEZER=y
+
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_STATE=y
+CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y
+CONFIG_ARCH_HAVE_ELF_PROT=y
+CONFIG_ARCH_USE_GNU_PROPERTY=y
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+CONFIG_COREDUMP=y
+
+CONFIG_ZPOOL=y
+CONFIG_SWAP=y
+CONFIG_ZSWAP=y
+CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y
+CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo"
+CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
+CONFIG_ZSWAP_ZPOOL_DEFAULT="zbud"
+CONFIG_ZBUD=y
+
+CONFIG_SLUB=y
+CONFIG_SLAB_MERGE_DEFAULT=y
+CONFIG_SLUB_CPU_PARTIAL=y
+
+CONFIG_SPARSEMEM=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_HAVE_FAST_GUP=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_EXCLUSIVE_SYSTEM_RAM=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_COMPACTION=y
+CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
+CONFIG_MIGRATION=y
+CONFIG_CONTIG_ALLOC=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_MMU_NOTIFIER=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_ARCH_WANTS_THP_SWAP=y
+CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+CONFIG_CMA_AREAS=7
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y
+CONFIG_ARCH_HAS_PTE_DEVMAP=y
+CONFIG_ARCH_HAS_ZONE_DMA_SET=y
+CONFIG_ZONE_DMA=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+CONFIG_LRU_GEN=y
+CONFIG_LRU_GEN_ENABLED=y
+
+
+CONFIG_NET=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
+CONFIG_NET_REDIRECT=y
+CONFIG_SKB_EXTENSIONS=y
+
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_UNIX_SCM=y
+CONFIG_AF_UNIX_OOB=y
+CONFIG_XFRM=y
+CONFIG_XFRM_OFFLOAD=y
+CONFIG_XFRM_SUB_POLICY=y
+CONFIG_XFRM_STATISTICS=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_ROUTE_CLASSID=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_IP_MROUTE_COMMON=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_TABLE_PERTURB_ORDER=16
+CONFIG_TCP_CONG_ADVANCED=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_SIT_6RD=y
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
+CONFIG_NET_PTP_CLASSIFY=y
+CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_ADVANCED=y
+
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_EGRESS=y
+CONFIG_NETFILTER_SKIP_EGRESS=y
+CONFIG_NETFILTER_FAMILY_BRIDGE=y
+CONFIG_NETFILTER_FAMILY_ARP=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
+CONFIG_NF_CT_PROTO_DCCP=y
+CONFIG_NF_CT_PROTO_GRE=y
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
+CONFIG_NF_NAT_REDIRECT=y
+CONFIG_NF_NAT_MASQUERADE=y
+CONFIG_NF_TABLES_INET=y
+CONFIG_NF_TABLES_NETDEV=y
+CONFIG_NETFILTER_XTABLES_COMPAT=y
+
+
+
+
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_VS_IPV6=y
+CONFIG_IP_VS_TAB_BITS=12
+
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_AH_ESP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+CONFIG_IP_VS_PROTO_SCTP=y
+
+
+CONFIG_IP_VS_SH_TAB_BITS=8
+
+CONFIG_IP_VS_MH_TAB_INDEX=12
+
+CONFIG_IP_VS_NFCT=y
+
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NF_TABLES_ARP=y
+
+CONFIG_NF_TABLES_IPV6=y
+
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_L2TP_V3=y
+CONFIG_BRIDGE_IGMP_SNOOPING=y
+CONFIG_VLAN_8021Q_GVRP=y
+CONFIG_NET_SCHED=y
+
+
+CONFIG_NET_CLS=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_BPF=y
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_CLS_ACT=y
+CONFIG_GACT_PROB=y
+CONFIG_NET_SCH_FIFO=y
+CONFIG_DNS_RESOLVER=y
+CONFIG_BATMAN_ADV_BATMAN_V=y
+CONFIG_BATMAN_ADV_BLA=y
+CONFIG_BATMAN_ADV_DAT=y
+CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_MPLS=y
+CONFIG_NET_L3_MASTER_DEV=y
+CONFIG_PCPU_DEV_REFCNT=y
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_XPS=y
+CONFIG_CGROUP_NET_PRIO=y
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+CONFIG_NET_FLOW_LIMIT=y
+
+
+CONFIG_HAMRADIO=y
+
+CONFIG_AX25_DAMA_SLAVE=y
+
+
+CONFIG_BT_BREDR=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_LE=y
+CONFIG_BT_DEBUGFS=y
+
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
+CONFIG_BT_HCIUART_SERDEV=y
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_BCM=y
+
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_CFG80211_DEFAULT_PS=y
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+
+
+CONFIG_LWTUNNEL=y
+CONFIG_LWTUNNEL_BPF=y
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SOCK_MSG=y
+CONFIG_PAGE_POOL=y
+CONFIG_ETHTOOL_NETLINK=y
+
+CONFIG_ARM_AMBA=y
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_SYSCALL=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_PCI_LABEL=y
+CONFIG_PCIE_BUS_DEFAULT=y
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+
+CONFIG_PCIE_BRCMSTB=y
+
+
+
+
+
+
+
+CONFIG_UEVENT_HELPER=y
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+CONFIG_FW_LOADER=y
+CONFIG_EXTRA_FIRMWARE=""
+
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+
+
+
+
+
+CONFIG_DMIID=y
+CONFIG_RASPBERRYPI_FIRMWARE=y
+
+CONFIG_EFI_ESRT=y
+CONFIG_EFI_PARAMS_FROM_FDT=y
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_GENERIC_STUB=y
+CONFIG_EFI_ARMSTUB_DTB_LOADER=y
+CONFIG_EFI_EARLYCON=y
+
+CONFIG_ARM_PSCI_FW=y
+CONFIG_HAVE_ARM_SMCCC=y
+CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y
+CONFIG_ARM_SMCCC_SOC_ID=y
+
+
+
+
+
+
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+
+
+
+
+
+CONFIG_MTD_NAND_ECC=y
+
+
+CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
+CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+CONFIG_DTC=y
+CONFIG_OF=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_OF_RESOLVE=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_CONFIGFS=y
+CONFIG_BLK_DEV=y
+CONFIG_ZRAM_DEF_COMP_LZORLE=y
+CONFIG_ZRAM_DEF_COMP="lzo-rle"
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+
+CONFIG_NVME_CORE=y
+CONFIG_BLK_DEV_NVME=y
+
+
+
+
+
+
+CONFIG_SCSI_MOD=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_BSG=y
+
+CONFIG_SCSI_ISCSI_ATTRS=y
+
+CONFIG_SCSI_LOWLEVEL=y
+
+CONFIG_SATA_HOST=y
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_FORCE=y
+CONFIG_SATA_PMP=y
+
+CONFIG_SATA_MOBILE_LPM_POLICY=0
+CONFIG_ATA_SFF=y
+
+CONFIG_ATA_BMDMA=y
+
+
+
+
+CONFIG_MD=y
+CONFIG_BLK_DEV_DM_BUILTIN=y
+CONFIG_DM_AUDIT=y
+
+
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_NET_CORE=y
+CONFIG_IPVLAN_L3S=y
+CONFIG_NETPOLL=y
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_ATM_DRIVERS=y
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_NET_VENDOR_ALACRITECH=y
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_NET_VENDOR_AQUANTIA=y
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ASIX=y
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_BCMGENET=y
+CONFIG_NET_VENDOR_CADENCE=y
+CONFIG_NET_VENDOR_CAVIUM=y
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_NET_VENDOR_CORTINA=y
+CONFIG_NET_VENDOR_DAVICOM=y
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_NET_VENDOR_ENGLEDER=y
+CONFIG_NET_VENDOR_EZCHIP=y
+CONFIG_NET_VENDOR_FUNGIBLE=y
+CONFIG_NET_VENDOR_GOOGLE=y
+CONFIG_NET_VENDOR_HISILICON=y
+CONFIG_NET_VENDOR_HUAWEI=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_WANGXUN=y
+CONFIG_NET_VENDOR_ADI=y
+CONFIG_NET_VENDOR_LITEX=y
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_NET_VENDOR_MICROCHIP=y
+CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_NET_VENDOR_MICROSOFT=y
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_NET_VENDOR_NI=y
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_NETERION=y
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NET_VENDOR_8390=y
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+CONFIG_NET_VENDOR_PENSANDO=y
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_NET_VENDOR_RDC=y
+CONFIG_NET_VENDOR_REALTEK=y
+CONFIG_NET_VENDOR_RENESAS=y
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_NET_VENDOR_SAMSUNG=y
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_NET_VENDOR_SIS=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_NET_VENDOR_SOCIONEXT=y
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_NET_VENDOR_SUN=y
+CONFIG_NET_VENDOR_SYNOPSYS=y
+CONFIG_NET_VENDOR_TEHUTI=y
+CONFIG_NET_VENDOR_TI=y
+CONFIG_NET_VENDOR_VERTEXCOM=y
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_WIZNET_BUS_ANY=y
+CONFIG_NET_VENDOR_XILINX=y
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+CONFIG_FIXED_PHY=y
+
+CONFIG_BROADCOM_PHY=y
+CONFIG_BCM7XXX_PHY=y
+CONFIG_BCM_NET_PHYLIB=y
+CONFIG_BCM_NET_PHYPTP=y
+CONFIG_MICREL_PHY=y
+CONFIG_MICROCHIP_PHY=y
+CONFIG_SMSC_PHY=y
+CONFIG_CAN_NETLINK=y
+CONFIG_CAN_CALC_BITTIMING=y
+CONFIG_CAN_RX_OFFLOAD=y
+
+
+
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_OF_MDIO=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MDIO_BCM_UNIMAC=y
+
+
+
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MULTILINK=y
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_USB_RTL8152=y
+CONFIG_USB_LAN78XX=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_SMSC95XX=y
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_WLAN=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
+CONFIG_WLAN_VENDOR_ATH=y
+CONFIG_ATH9K_BTCOEX_SUPPORT=y
+CONFIG_ATH9K_PCI=y
+CONFIG_ATH9K_RFKILL=y
+CONFIG_ATH9K_PCOEM=y
+CONFIG_CARL9170_LEDS=y
+CONFIG_CARL9170_WPC=y
+CONFIG_WLAN_VENDOR_ATMEL=y
+CONFIG_WLAN_VENDOR_BROADCOM=y
+CONFIG_B43_BCMA=y
+CONFIG_B43_SSB=y
+CONFIG_B43_BUSES_BCMA_AND_SSB=y
+CONFIG_B43_PCI_AUTOSELECT=y
+CONFIG_B43_PCICORE_AUTOSELECT=y
+CONFIG_B43_BCMA_PIO=y
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_G=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_PHY_HT=y
+CONFIG_B43_LEDS=y
+CONFIG_B43_HWRNG=y
+CONFIG_B43LEGACY_PCI_AUTOSELECT=y
+CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y
+CONFIG_B43LEGACY_LEDS=y
+CONFIG_B43LEGACY_HWRNG=y
+CONFIG_B43LEGACY_DEBUG=y
+CONFIG_B43LEGACY_DMA=y
+CONFIG_B43LEGACY_PIO=y
+CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
+CONFIG_BRCMFMAC_PROTO_BCDC=y
+CONFIG_BRCMFMAC_SDIO=y
+CONFIG_BRCMFMAC_USB=y
+CONFIG_BRCMDBG=y
+CONFIG_WLAN_VENDOR_CISCO=y
+CONFIG_WLAN_VENDOR_INTEL=y
+CONFIG_WLAN_VENDOR_INTERSIL=y
+CONFIG_P54_LEDS=y
+CONFIG_WLAN_VENDOR_MARVELL=y
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT76_LEDS=y
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+CONFIG_WLAN_VENDOR_PURELIFI=y
+CONFIG_WLAN_VENDOR_RALINK=y
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_RTL8187_LEDS=y
+CONFIG_RTLWIFI_DEBUG=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_WLAN_VENDOR_SILABS=y
+CONFIG_WLAN_VENDOR_ST=y
+CONFIG_WLAN_VENDOR_TI=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_WLAN_VENDOR_QUANTENNA=y
+
+
+
+CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
+
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_EVDEV=y
+
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_JOYSTICK_XPAD_LEDS=y
+CONFIG_JOYSTICK_PSXPAD_SPI_FF=y
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_USB_EGALAX=y
+CONFIG_TOUCHSCREEN_USB_PANJIT=y
+CONFIG_TOUCHSCREEN_USB_3M=y
+CONFIG_TOUCHSCREEN_USB_ITM=y
+CONFIG_TOUCHSCREEN_USB_ETURBO=y
+CONFIG_TOUCHSCREEN_USB_GUNZE=y
+CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y
+CONFIG_TOUCHSCREEN_USB_IRTOUCH=y
+CONFIG_TOUCHSCREEN_USB_IDEALTEK=y
+CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y
+CONFIG_TOUCHSCREEN_USB_GOTOP=y
+CONFIG_TOUCHSCREEN_USB_JASTEC=y
+CONFIG_TOUCHSCREEN_USB_ELO=y
+CONFIG_TOUCHSCREEN_USB_E2I=y
+CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
+CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
+CONFIG_TOUCHSCREEN_USB_NEXIO=y
+CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
+CONFIG_INPUT_MISC=y
+
+
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCM2835_DEVGPIOMEM=y
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LDISC_AUTOLOAD=y
+
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_16550A_VARIANTS=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_NR_UARTS=1
+CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_BCM2835AUX=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_PERICOM=y
+CONFIG_SERIAL_OF_PLATFORM=y
+
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_CONSOLE_POLL=y
+CONFIG_SERIAL_SC16IS7XX_I2C=y
+CONFIG_SERIAL_SC16IS7XX_SPI=y
+
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+CONFIG_TTY_PRINTK=y
+CONFIG_TTY_PRINTK_LEVEL=6
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_BCM2835=y
+CONFIG_HW_RANDOM_IPROC_RNG200=y
+CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y
+CONFIG_HW_RANDOM_CN10K=y
+CONFIG_DEVMEM=y
+CONFIG_DEVPORT=y
+CONFIG_HW_RANDOM_TPM=y
+CONFIG_RANDOM_TRUST_CPU=y
+CONFIG_RANDOM_TRUST_BOOTLOADER=y
+
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+
+
+CONFIG_I2C_HELPER_AUTO=y
+
+
+CONFIG_I2C_BCM2708_BAUDRATE=100000
+
+
+
+
+
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+
+
+
+CONFIG_SPI_SLAVE=y
+CONFIG_SPI_DYNAMIC=y
+CONFIG_PPS=y
+
+
+
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PTP_1588_CLOCK_KVM=y
+
+CONFIG_PINCTRL=y
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_PINCTRL_BCM2835=y
+
+
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+
+CONFIG_GPIO_RASPBERRYPI_EXP=y
+CONFIG_GPIO_BCM_VIRT=y
+
+CONFIG_GPIO_PCA953X_IRQ=y
+
+CONFIG_GPIO_STMPE=y
+
+
+
+
+
+CONFIG_W1_CON=y
+
+
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_HWMON=y
+
+CONFIG_THERMAL=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+
+CONFIG_BCM2711_THERMAL=y
+CONFIG_BCM2835_THERMAL=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+
+
+CONFIG_BCM2835_WDT=y
+
+
+CONFIG_SSB_POSSIBLE=y
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_BCMA_POSSIBLE=y
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+CONFIG_BCMA_DRIVER_PCI=y
+
+CONFIG_MFD_CORE=y
+CONFIG_MFD_STMPE=y
+
+CONFIG_STMPE_I2C=y
+CONFIG_STMPE_SPI=y
+
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_WM5102=y
+
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_RC_CORE=y
+CONFIG_BPF_LIRC_MODE2=y
+CONFIG_LIRC=y
+CONFIG_RC_MAP=y
+CONFIG_RC_DECODERS=y
+CONFIG_RC_DEVICES=y
+
+CONFIG_MEDIA_CEC_RC=y
+CONFIG_MEDIA_CEC_SUPPORT=y
+
+
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_MEDIA_RADIO_SUPPORT=y
+CONFIG_MEDIA_SDR_SUPPORT=y
+CONFIG_MEDIA_PLATFORM_SUPPORT=y
+CONFIG_MEDIA_TEST_SUPPORT=y
+
+CONFIG_MEDIA_CONTROLLER=y
+
+CONFIG_VIDEO_V4L2_I2C=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+
+CONFIG_MEDIA_CONTROLLER_DVB=y
+CONFIG_MEDIA_CONTROLLER_REQUEST_API=y
+
+CONFIG_DVB_NET=y
+CONFIG_DVB_MAX_ADAPTERS=16
+CONFIG_DVB_DYNAMIC_MINORS=y
+
+
+CONFIG_MEDIA_USB_SUPPORT=y
+
+CONFIG_USB_PWC_INPUT_EVDEV=y
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+
+CONFIG_VIDEO_AU0828_V4L2=y
+CONFIG_VIDEO_AU0828_RC=y
+CONFIG_VIDEO_CX231XX_RC=y
+
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
+
+
+CONFIG_MEDIA_PLATFORM_DRIVERS=y
+CONFIG_V4L_PLATFORM_DRIVERS=y
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CONFIG_V4L_TEST_DRIVERS=y
+CONFIG_VIDEO_VIVID_MAX_DEVS=64
+CONFIG_MEDIA_COMMON_OPTIONS=y
+
+CONFIG_SMS_SIANO_RC=y
+
+CONFIG_MEDIA_ATTACH=y
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CONFIG_APERTURE_HELPERS=y
+CONFIG_DRM_MIPI_DSI=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+CONFIG_DRM_LOAD_EDID_FIRMWARE=y
+CONFIG_DRM_DISPLAY_HDMI_HELPER=y
+
+
+
+CONFIG_DRM_PANEL=y
+
+
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+
+
+CONFIG_DRM_NOMODESET=y
+
+CONFIG_SOUND=y
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SOUND_OSS_CORE_PRECLAIM=y
+CONFIG_SND_PCM_ELD=y
+CONFIG_SND_PCM_IEC958=y
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_VERBOSE_PROCFS=y
+CONFIG_SND_CTL_FAST_LOOKUP=y
+CONFIG_SND_VMASTER=y
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DRIVERS=y
+CONFIG_SND_PCI=y
+
+
+CONFIG_SND_HDA_PREALLOC_SIZE=64
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_COMPRESS=y
+
+
+
+
+
+
+
+
+CONFIG_HID=y
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HIDRAW=y
+CONFIG_HID_GENERIC=y
+
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_LOGIG940_FF=y
+CONFIG_LOGIWHEELS_FF=y
+CONFIG_PLAYSTATION_FF=y
+CONFIG_SONY_FF=y
+
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+
+
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_USB_DWCOTG=y
+
+
+
+CONFIG_USB_STORAGE=y
+CONFIG_REALTEK_AUTOPM=y
+CONFIG_USB_UAS=y
+
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+
+CONFIG_USB_DWC2_DUAL_ROLE=y
+
+CONFIG_USB_SERIAL_GENERIC=y
+
+
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+
+
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_USB_CONFIGFS_F_PRINTER=y
+
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_G_MULTI_RNDIS=y
+
+CONFIG_MMC=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=32
+
+CONFIG_MMC_BCM2835_MMC=y
+CONFIG_MMC_BCM2835_DMA=y
+CONFIG_MMC_BCM2835_PIO_DMA_BARRIER=2
+CONFIG_MMC_BCM2835_SDHOST=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_IPROC=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PWM=y
+
+
+
+
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+CONFIG_LEDS_TRIGGER_INPUT=y
+CONFIG_LEDS_TRIGGER_PANIC=y
+CONFIG_LEDS_TRIGGER_ACTPWR=y
+
+CONFIG_ACCESSIBILITY=y
+
+
+CONFIG_EDAC_SUPPORT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+CONFIG_RTC_NVMEM=y
+
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+
+CONFIG_RTC_I2C_AND_SPI=y
+
+CONFIG_RTC_DRV_DS3232_HWMON=y
+CONFIG_RTC_DRV_RV3029_HWMON=y
+
+
+
+CONFIG_DMADEVICES=y
+
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_BCM2835=y
+CONFIG_DMA_BCM2708=y
+
+
+CONFIG_SYNC_FILE=y
+CONFIG_DMABUF_HEAPS=y
+CONFIG_DMABUF_HEAPS_SYSTEM=y
+CONFIG_DMABUF_HEAPS_CMA=y
+
+CONFIG_AUXDISPLAY=y
+CONFIG_CHARLCD_BL_FLASH=y
+CONFIG_VIRTIO_MENU=y
+CONFIG_VHOST_MENU=y
+CONFIG_VHOST_CROSS_ENDIAN_LEGACY=y
+
+
+CONFIG_STAGING=y
+
+
+
+
+
+
+
+
+
+CONFIG_STAGING_MEDIA=y
+CONFIG_STAGING_MEDIA_DEPRECATED=y
+CONFIG_BCM_VIDEOCORE=y
+CONFIG_BCM2835_VCHIQ=y
+CONFIG_VCHIQ_CDEV=y
+CONFIG_SURFACE_PLATFORMS=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+
+CONFIG_CLK_BCM2711_DVP=y
+CONFIG_CLK_BCM2835=y
+CONFIG_CLK_RASPBERRYPI=y
+
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
+CONFIG_FSL_ERRATUM_A008585=y
+CONFIG_HISILICON_ERRATUM_161010101=y
+CONFIG_ARM64_ERRATUM_858921=y
+CONFIG_ARM_TIMER_SP804=y
+
+CONFIG_MAILBOX=y
+CONFIG_BCM2835_MBOX=y
+
+
+
+
+
+
+CONFIG_BCM2835_POWER=y
+CONFIG_RASPBERRYPI_POWER=y
+
+
+
+
+
+
+
+
+CONFIG_EXTCON=y
+
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_MAX_NR=1
+CONFIG_ARM_GIC_V2M=y
+CONFIG_ARM_GIC_V3=y
+CONFIG_ARM_GIC_V3_ITS=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+CONFIG_BRCMSTB_L2_IRQ=y
+CONFIG_PARTITION_PERCPU=y
+
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_RASPBERRYPI=y
+CONFIG_RESET_SIMPLE=y
+
+CONFIG_GENERIC_PHY=y
+
+
+
+
+CONFIG_ARM_PMU=y
+
+
+CONFIG_ANDROID_BINDER_IPC=y
+CONFIG_ANDROID_BINDERFS=y
+CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
+
+CONFIG_NVMEM=y
+CONFIG_NVMEM_SYSFS=y
+
+
+
+
+CONFIG_PM_OPP=y
+
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT2=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+CONFIG_JBD2=y
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_POSIX_ACL=y
+CONFIG_JFS_SECURITY=y
+CONFIG_JFS_STATISTICS=y
+CONFIG_XFS_SUPPORT_V4=y
+CONFIG_XFS_QUOTA=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_RT=y
+CONFIG_OCFS2_FS_STATS=y
+CONFIG_OCFS2_DEBUG_MASKLOG=y
+CONFIG_BTRFS_FS_POSIX_ACL=y
+CONFIG_F2FS_FS=y
+CONFIG_F2FS_STAT_FS=y
+CONFIG_F2FS_FS_XATTR=y
+CONFIG_F2FS_FS_POSIX_ACL=y
+CONFIG_F2FS_FS_SECURITY=y
+CONFIG_F2FS_IOSTAT=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+CONFIG_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
+CONFIG_FS_ENCRYPTION_ALGS=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+CONFIG_QUOTA=y
+CONFIG_PRINT_QUOTA_WARNING=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_AUTOFS_FS=y
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
+
+CONFIG_NETFS_SUPPORT=y
+CONFIG_NETFS_STATS=y
+CONFIG_FSCACHE=y
+CONFIG_FSCACHE_STATS=y
+CONFIG_CACHEFILES=y
+
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
+CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_RW=y
+
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+CONFIG_ARCH_SUPPORTS_HUGETLBFS=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
+CONFIG_CONFIGFS_FS=y
+
+CONFIG_MISC_FILESYSTEMS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+CONFIG_UBIFS_FS_ZSTD=y
+CONFIG_UBIFS_FS_XATTR=y
+CONFIG_UBIFS_FS_SECURITY=y
+CONFIG_SQUASHFS_FILE_CACHE=y
+CONFIG_SQUASHFS_DECOMP_SINGLE=y
+CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
+CONFIG_SQUASHFS_LZO=y
+CONFIG_SQUASHFS_XZ=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+CONFIG_PSTORE=y
+CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240
+CONFIG_PSTORE_DEFLATE_COMPRESS=y
+CONFIG_PSTORE_COMPRESS=y
+CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y
+CONFIG_PSTORE_COMPRESS_DEFAULT="deflate"
+CONFIG_PSTORE_CONSOLE=y
+CONFIG_PSTORE_RAM=y
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_SWAP=y
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_PNFS_FILE_LAYOUT=y
+CONFIG_PNFS_FLEXFILE_LAYOUT=y
+CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
+CONFIG_NFS_V4_SECURITY_LABEL=y
+CONFIG_ROOT_NFS=y
+CONFIG_NFS_FSCACHE=y
+CONFIG_NFS_USE_KERNEL_DNS=y
+CONFIG_NFS_DISABLE_UDP_SUPPORT=y
+CONFIG_NFSD_V2_ACL=y
+CONFIG_NFSD_V3_ACL=y
+CONFIG_NFSD_V4=y
+CONFIG_GRACE_PERIOD=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_NFS_V4_2_SSC_HELPER=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_SUNRPC_BACKCHANNEL=y
+CONFIG_SUNRPC_SWAP=y
+CONFIG_CIFS_STATS2=y
+CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
+CONFIG_CIFS_UPCALL=y
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+CONFIG_CIFS_DEBUG=y
+CONFIG_CIFS_DFS_UPCALL=y
+CONFIG_CIFS_FSCACHE=y
+CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y
+CONFIG_9P_FS_POSIX_ACL=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_ASCII=y
+CONFIG_IO_WQ=y
+
+CONFIG_KEYS=y
+CONFIG_SECURITY=y
+CONFIG_SECURITYFS=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_PATH=y
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+CONFIG_SECURITY_APPARMOR=y
+CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=y
+CONFIG_SECURITY_APPARMOR_HASH=y
+CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
+CONFIG_SECURITY_APPARMOR_EXPORT_BINARY=y
+CONFIG_SECURITY_APPARMOR_PARANOID_LOAD=y
+CONFIG_INTEGRITY=y
+CONFIG_INTEGRITY_AUDIT=y
+CONFIG_DEFAULT_SECURITY_APPARMOR=y
+CONFIG_LSM=""
+
+
+CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y
+CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y
+CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y
+CONFIG_INIT_STACK_ALL_ZERO=y
+CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y
+
+CONFIG_RANDSTRUCT_NONE=y
+
+CONFIG_CRYPTO=y
+
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_SKCIPHER=y
+CONFIG_CRYPTO_SKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_ACOMP2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+CONFIG_CRYPTO_NULL2=y
+
+CONFIG_CRYPTO_RSA=y
+
+CONFIG_CRYPTO_DES=y
+
+CONFIG_CRYPTO_CTS=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_XTS=y
+
+
+CONFIG_CRYPTO_SHA1=y
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+
+CONFIG_CRYPTO_CRC32C=y
+CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRCT10DIF=y
+CONFIG_CRYPTO_CRC64_ROCKSOFT=y
+
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+
+CONFIG_CRYPTO_DRBG_HMAC=y
+
+CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE=y
+
+CONFIG_CRYPTO_HASH_INFO=y
+
+
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+
+CONFIG_BINARY_PRINTF=y
+
+CONFIG_RAID6_PQ_BENCHMARK=y
+CONFIG_LINEAR_RANGES=y
+CONFIG_BITREVERSE=y
+CONFIG_HAVE_ARCH_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
+CONFIG_ARCH_USE_SYM_ANNOTATIONS=y
+
+CONFIG_CRYPTO_LIB_UTILS=y
+CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
+CONFIG_CRYPTO_LIB_DES=y
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=9
+CONFIG_CRYPTO_LIB_SHA1=y
+CONFIG_CRYPTO_LIB_SHA256=y
+
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC64_ROCKSOFT=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC32_SLICEBY8=y
+CONFIG_CRC64=y
+CONFIG_LIBCRC32C=y
+CONFIG_XXHASH=y
+CONFIG_AUDIT_GENERIC=y
+CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
+CONFIG_AUDIT_COMPAT_GENERIC=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_ZSTD_COMMON=y
+CONFIG_ZSTD_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_REED_SOLOMON=y
+CONFIG_REED_SOLOMON_ENC8=y
+CONFIG_REED_SOLOMON_DEC8=y
+CONFIG_TEXTSEARCH=y
+CONFIG_BTREE=y
+CONFIG_INTERVAL_TREE=y
+CONFIG_XARRAY_MULTI=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_DMA_DECLARE_COHERENT=y
+CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
+CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y
+CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y
+CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y
+CONFIG_SWIOTLB=y
+CONFIG_DMA_NONCOHERENT_MMAP=y
+CONFIG_DMA_COHERENT_POOL=y
+CONFIG_DMA_DIRECT_REMAP=y
+CONFIG_DMA_CMA=y
+
+CONFIG_CMA_SIZE_MBYTES=5
+CONFIG_CMA_SIZE_SEL_MBYTES=y
+CONFIG_CMA_ALIGNMENT=8
+CONFIG_SGL_ALLOC=y
+CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
+CONFIG_GLOB=y
+CONFIG_NLATTR=y
+CONFIG_CLZ_TAB=y
+CONFIG_MPILIB=y
+CONFIG_DIMLIB=y
+CONFIG_LIBFDT=y
+CONFIG_OID_REGISTRY=y
+CONFIG_UCS2_STRING=y
+CONFIG_HAVE_GENERIC_VDSO=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_VDSO_TIME_NS=y
+CONFIG_FONT_SUPPORT=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_SG_POOL=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_STACKDEPOT=y
+CONFIG_SBITMAP=y
+
+CONFIG_GENERIC_IOREMAP=y
+CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y
+
+
+CONFIG_PRINTK_TIME=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+CONFIG_BOOT_PRINTK_DELAY=y
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_DEBUG_BUGVERBOSE=y
+
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_MISC=y
+
+CONFIG_AS_HAS_NON_CONST_LEB128=y
+CONFIG_DEBUG_INFO_NONE=y
+CONFIG_FRAME_WARN=2048
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
+CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_KGDB=y
+CONFIG_KGDB_HONOUR_BLOCKLIST=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+CONFIG_KGDB_KDB=y
+CONFIG_KDB_DEFAULT_ENABLE=0x1
+CONFIG_KDB_KEYBOARD=y
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+CONFIG_HAVE_ARCH_KCSAN=y
+CONFIG_HAVE_KCSAN_COMPILER=y
+
+
+CONFIG_SLUB_DEBUG=y
+CONFIG_ARCH_HAS_DEBUG_WX=y
+CONFIG_GENERIC_PTDUMP=y
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_HAVE_ARCH_KASAN=y
+CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y
+CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y
+CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_CC_HAS_KASAN_SW_TAGS=y
+CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
+CONFIG_HAVE_ARCH_KFENCE=y
+
+
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
+CONFIG_SCHEDSTATS=y
+
+CONFIG_DEBUG_PREEMPT=y
+
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+
+CONFIG_TRACE_IRQFLAGS=y
+CONFIG_TRACE_IRQFLAGS_NMI=y
+CONFIG_STACKTRACE=y
+
+
+
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
+CONFIG_RCU_TRACE=y
+
+CONFIG_LATENCYTOP=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_RING_BUFFER_ALLOW_SWAP=y
+CONFIG_PREEMPTIRQ_TRACEPOINTS=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_FUNCTION_PROFILER=y
+CONFIG_STACK_TRACER=y
+CONFIG_IRQSOFF_TRACER=y
+CONFIG_SCHED_TRACER=y
+CONFIG_TRACER_SNAPSHOT=y
+CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
+CONFIG_BRANCH_PROFILE_NONE=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_KPROBE_EVENTS=y
+CONFIG_BPF_EVENTS=y
+CONFIG_DYNAMIC_EVENTS=y
+CONFIG_PROBE_EVENTS=y
+CONFIG_FTRACE_MCOUNT_RECORD=y
+CONFIG_FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY=y
+CONFIG_STRICT_DEVMEM=y
+
+
+CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+CONFIG_RUNTIME_TESTING_MENU=y
+CONFIG_ARCH_USE_MEMTEST=y
+
diff --git a/target/aarch64/kernel/raspberry-pi5 b/target/aarch64/kernel/raspberry-pi5
new file mode 100644
index 000000000..6b026aa9c
--- /dev/null
+++ b/target/aarch64/kernel/raspberry-pi5
@@ -0,0 +1,149 @@
+CONFIG_ARM64=y
+CONFIG_64BIT=y
+CONFIG_ARCH_BCM=y
+CONFIG_ARCH_BCM2835=y
+CONFIG_ARCH_BRCMSTB=y
+CONFIG_ARM_AMBA=y
+CONFIG_PCI=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCIE_BRCMSTB=y
+CONFIG_RASPBERRYPI_FIRMWARE=y
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_DW_DMA=y
+CONFIG_SPI_SLAVE=y
+CONFIG_SPI_DYNAMIC=y
+CONFIG_PINCTRL=y
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_PINCTRL_RP1=y
+CONFIG_PINCTRL_BCM2712=y
+CONFIG_PINCTRL_BCM2835=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_GPIO_GENERIC=y
+CONFIG_GPIO_RASPBERRYPI_EXP=y
+CONFIG_GPIO_BCM_VIRT=y
+CONFIG_GPIO_BRCMSTB=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_STMPE=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_RP1=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_CLUT224=y
+CONFIG_HID=y
+CONFIG_HID_BATTERY_STRENGTH=y
+CONFIG_HIDRAW=y
+CONFIG_HID_GENERIC=y
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIRUMBLEPAD2_FF=y
+CONFIG_LOGIG940_FF=y
+CONFIG_LOGIWHEELS_FF=y
+CONFIG_NINTENDO_FF=y
+CONFIG_PLAYSTATION_FF=y
+CONFIG_SONY_FF=y
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_DUAL_ROLE=y
+CONFIG_USB_DWC3_HAPS=y
+CONFIG_USB_DWC3_OF_SIMPLE=y
+CONFIG_USB_DWC2_DUAL_ROLE=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_BRCM_USB_PINMAP=y
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_USB_BDC_UDC=y
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_G_MULTI_RNDIS=y
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_BCM2835=y
+CONFIG_DW_AXI_DMAC=y
+CONFIG_DMA_BCM2708=y
+CONFIG_BCM_VIDEOCORE=y
+CONFIG_BCM2835_VCHIQ=y
+CONFIG_VCHIQ_CDEV=y
+CONFIG_SURFACE_PLATFORMS=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+CONFIG_COMMON_CLK_RP1=y
+CONFIG_COMMON_CLK_RP1_SDIO=y
+CONFIG_CLK_BCM2711_DVP=y
+CONFIG_CLK_BCM2835=y
+CONFIG_CLK_RASPBERRYPI=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
+CONFIG_FSL_ERRATUM_A008585=y
+CONFIG_HISILICON_ERRATUM_161010101=y
+CONFIG_ARM64_ERRATUM_858921=y
+CONFIG_ARM_TIMER_SP804=y
+CONFIG_MAILBOX=y
+CONFIG_BCM2835_MBOX=y
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
+CONFIG_OF_IOMMU=y
+CONFIG_IOMMU_DMA=y
+CONFIG_BCM2712_IOMMU=y
+CONFIG_BCM2835_POWER=y
+CONFIG_RASPBERRYPI_POWER=y
+CONFIG_SOC_BRCMSTB=y
+CONFIG_BRCMSTB_PM=y
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_BRCMSTB=y
+CONFIG_PWM_RP1=y
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_MAX_NR=1
+CONFIG_ARM_GIC_V2M=y
+CONFIG_ARM_GIC_V3=y
+CONFIG_ARM_GIC_V3_ITS=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+CONFIG_BCM2712_MIP=y
+CONFIG_BCM7038_L1_IRQ=y
+CONFIG_BCM7120_L2_IRQ=y
+CONFIG_BRCMSTB_L2_IRQ=y
+CONFIG_PARTITION_PERCPU=y
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_BRCMSTB=y
+CONFIG_RESET_BRCMSTB_RESCAL=y
+CONFIG_RESET_RASPBERRYPI=y
+CONFIG_RESET_SIMPLE=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PHY_MIPI_DPHY=y
+CONFIG_PHY_BRCM_USB=y
+CONFIG_ARM_PMU=y
+CONFIG_RAS=y
diff --git a/target/aarch64/kernel/rockpi4-plus b/target/aarch64/kernel/rockpi4-plus
new file mode 100644
index 000000000..95e45c5ec
--- /dev/null
+++ b/target/aarch64/kernel/rockpi4-plus
@@ -0,0 +1,863 @@
+CONFIG_ARM64=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y
+CONFIG_ARM64_ERRATUM_826319=y
+CONFIG_ARM64_ERRATUM_827319=y
+CONFIG_ARM64_ERRATUM_824069=y
+CONFIG_ARM64_ERRATUM_819472=y
+CONFIG_ARM64_ERRATUM_832075=y
+CONFIG_ARM64_ERRATUM_834220=y
+CONFIG_ARM64_ERRATUM_1742098=y
+CONFIG_ARM64_ERRATUM_845719=y
+CONFIG_ARM64_ERRATUM_843419=y
+CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y
+CONFIG_ARM64_ERRATUM_1024718=y
+CONFIG_ARM64_ERRATUM_1418040=y
+CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y
+CONFIG_ARM64_ERRATUM_1165522=y
+CONFIG_ARM64_ERRATUM_1319367=y
+CONFIG_ARM64_ERRATUM_1530923=y
+CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y
+CONFIG_ARM64_ERRATUM_2441007=y
+CONFIG_ARM64_ERRATUM_1286807=y
+CONFIG_ARM64_ERRATUM_1463225=y
+CONFIG_ARM64_ERRATUM_1542419=y
+CONFIG_ARM64_ERRATUM_1508412=y
+CONFIG_ARM64_ERRATUM_2441009=y
+CONFIG_ARM64_ERRATUM_2457168=y
+CONFIG_CAVIUM_ERRATUM_22375=y
+CONFIG_CAVIUM_ERRATUM_23144=y
+CONFIG_CAVIUM_ERRATUM_23154=y
+CONFIG_CAVIUM_ERRATUM_27456=y
+CONFIG_CAVIUM_ERRATUM_30115=y
+CONFIG_CAVIUM_TX2_ERRATUM_219=y
+CONFIG_FUJITSU_ERRATUM_010001=y
+CONFIG_HISILICON_ERRATUM_161600802=y
+CONFIG_QCOM_FALKOR_ERRATUM_1003=y
+CONFIG_QCOM_FALKOR_ERRATUM_1009=y
+CONFIG_QCOM_QDF2400_ERRATUM_0065=y
+CONFIG_QCOM_FALKOR_ERRATUM_E1041=y
+CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y
+CONFIG_SOCIONEXT_SYNQUACER_PREITS=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_DT_IDLE_STATES=y
+CONFIG_ARM_CPUIDLE=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_ARM_SCPI_CPUFREQ=y
+
+CONFIG_ARCH_SUPPORTS_ACPI=y
+CONFIG_IRQ_BYPASS_MANAGER=y
+
+CONFIG_STREAM_PARSER=y
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_CFG80211_CRDA_SUPPORT=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+CONFIG_MAC80211_MESH=y
+CONFIG_MAC80211_LEDS=y
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
+CONFIG_NFC_SHDLC=y
+
+
+CONFIG_LWTUNNEL=y
+CONFIG_LWTUNNEL_BPF=y
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+CONFIG_SOCK_VALIDATE_XMIT=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_NET_SOCK_MSG=y
+CONFIG_NET_DEVLINK=y
+CONFIG_PAGE_POOL=y
+CONFIG_ETHTOOL_NETLINK=y
+
+CONFIG_ARM_AMBA=y
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCI_SYSCALL=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_PERFORMANCE=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_PCI_ATS=y
+CONFIG_PCI_IOV=y
+CONFIG_PCI_LABEL=y
+CONFIG_PCIE_BUS_DEFAULT=y
+CONFIG_HOTPLUG_PCI=y
+
+CONFIG_PCIE_ROCKCHIP=y
+CONFIG_PCIE_ROCKCHIP_HOST=y
+CONFIG_PCIE_ROCKCHIP_EP=y
+
+CONFIG_PCIE_DW=y
+CONFIG_PCIE_DW_HOST=y
+CONFIG_PCIE_ROCKCHIP_DW_HOST=y
+
+
+
+CONFIG_PCI_ENDPOINT=y
+CONFIG_PCI_ENDPOINT_CONFIGFS=y
+
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_ARCH_NUMA=y
+
+CONFIG_ARM_CCI=y
+CONFIG_BRCMSTB_GISB_ARB=y
+CONFIG_SUN50I_DE2_BUS=y
+CONFIG_VEXPRESS_CONFIG=y
+
+
+
+
+CONFIG_ARM_SCPI_PROTOCOL=y
+CONFIG_ARM_SCPI_POWER_DOMAIN=y
+CONFIG_DMIID=y
+CONFIG_SYSFB=y
+CONFIG_ROCKCHIP_SIP=y
+CONFIG_ARM_FFA_SMCCC=y
+
+CONFIG_MESON_SM=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_HAVE_ARM_SMCCC=y
+CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y
+CONFIG_ARM_SMCCC_SOC_ID=y
+
+CONFIG_DTC=y
+CONFIG_OF=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_DYNAMIC=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_OF_RESOLVE=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_NUMA=y
+CONFIG_OF_CONFIGFS=y
+CONFIG_BLK_DEV=y
+CONFIG_ZRAM_DEF_COMP_LZORLE=y
+CONFIG_ZRAM_DEF_COMP="lzo-rle"
+CONFIG_ZRAM_WRITEBACK=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_RAM_COUNT=8
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_VIRTIO_BLK=y
+
+CONFIG_NVME_CORE=y
+CONFIG_BLK_DEV_NVME=y
+CONFIG_NVME_MULTIPATH=y
+
+CONFIG_SRAM=y
+
+CONFIG_CB710_DEBUG_ASSUMPTIONS=y
+
+CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
+
+CONFIG_FIXED_PHY=y
+CONFIG_MICREL_PHY=y
+CONFIG_ROCKCHIP_PHY=y
+
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_OF_MDIO=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MDIO_BITBANG=y
+CONFIG_MDIO_CAVIUM=y
+CONFIG_MDIO_THUNDER=y
+
+CONFIG_MDIO_BUS_MUX=y
+CONFIG_MDIO_BUS_MUX_MMIOREG=y
+
+CONFIG_SERIO=y
+CONFIG_SERIO_AMBAKMI=y
+CONFIG_SERIO_LIBPS2=y
+
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+
+
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=y
+
+CONFIG_I2C_DESIGNWARE_CORE=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_I2C_RK3X=y
+
+CONFIG_I2C_CROS_EC_TUNNEL=y
+
+CONFIG_I2C_SLAVE=y
+
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+
+CONFIG_SPI_PL022=y
+CONFIG_SPI_ROCKCHIP=y
+
+
+CONFIG_SPI_SLAVE=y
+CONFIG_SPI_DYNAMIC=y
+CONFIG_SPMI=y
+CONFIG_PPS=y
+
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+
+CONFIG_PINCTRL=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_PINMUX=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_PINCTRL_ROCKCHIP=y
+CONFIG_PINCTRL_SINGLE=y
+CONFIG_PINCTRL_SX150X=y
+CONFIG_PINCTRL_MAX77620=y
+CONFIG_PINCTRL_RK805=y
+
+
+CONFIG_PINCTRL_SUNXI=y
+CONFIG_PINCTRL_SUN5I=y
+CONFIG_PINCTRL_SUN6I_A31=y
+CONFIG_PINCTRL_SUN6I_A31_R=y
+CONFIG_PINCTRL_SUN8I_A23=y
+CONFIG_PINCTRL_SUN8I_A33=y
+CONFIG_PINCTRL_SUN8I_A83T=y
+CONFIG_PINCTRL_SUN8I_A83T_R=y
+CONFIG_PINCTRL_SUN8I_A23_R=y
+CONFIG_PINCTRL_SUN8I_H3=y
+CONFIG_PINCTRL_SUN8I_H3_R=y
+CONFIG_PINCTRL_SUN8I_V3S=y
+CONFIG_PINCTRL_SUN9I_A80=y
+CONFIG_PINCTRL_SUN9I_A80_R=y
+CONFIG_PINCTRL_SUN50I_A64=y
+CONFIG_PINCTRL_SUN50I_A64_R=y
+CONFIG_PINCTRL_SUN50I_A100=y
+CONFIG_PINCTRL_SUN50I_A100_R=y
+CONFIG_PINCTRL_SUN50I_H5=y
+CONFIG_PINCTRL_SUN50I_H6=y
+CONFIG_PINCTRL_SUN50I_H6_R=y
+CONFIG_PINCTRL_SUN50I_H616=y
+CONFIG_PINCTRL_SUN50I_H616_R=y
+CONFIG_PINCTRL_MESON=y
+CONFIG_PINCTRL_MESON_GXBB=y
+CONFIG_PINCTRL_MESON_GXL=y
+CONFIG_PINCTRL_MESON8_PMX=y
+CONFIG_PINCTRL_MESON_AXG=y
+CONFIG_PINCTRL_MESON_AXG_PMX=y
+CONFIG_PINCTRL_MESON_G12A=y
+CONFIG_PINCTRL_MESON_A1=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_GPIO_GENERIC=y
+
+CONFIG_GPIO_GENERIC_PLATFORM=y
+CONFIG_GPIO_PL061=y
+CONFIG_GPIO_ROCKCHIP=y
+CONFIG_GPIO_XILINX=y
+
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+
+CONFIG_GPIO_MAX77620=y
+
+CONFIG_W1_CON=y
+CONFIG_W1_SLAVE_DS2408_READBACK=y
+
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_BRCMSTB=y
+CONFIG_POWER_RESET_VEXPRESS=y
+CONFIG_POWER_RESET_XGENE=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_HWMON=y
+
+CONFIG_SENSORS_LTC2978_REGULATOR=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_STATISTICS=y
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_BANG_BANG=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CPU_FREQ_THERMAL=y
+CONFIG_DEVFREQ_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_ROCKCHIP_THERMAL=y
+CONFIG_AMLOGIC_THERMAL=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+CONFIG_WATCHDOG_SYSFS=y
+
+
+CONFIG_DW_WATCHDOG=y
+
+
+CONFIG_SSB_POSSIBLE=y
+CONFIG_SSB_SPROM=y
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_PCIHOST_POSSIBLE=y
+CONFIG_SSB_PCIHOST=y
+CONFIG_SSB_B43_PCI_BRIDGE=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
+CONFIG_SSB_DRIVER_PCICORE=y
+CONFIG_BCMA_POSSIBLE=y
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+CONFIG_BCMA_DRIVER_PCI=y
+
+CONFIG_MFD_CORE=y
+CONFIG_MFD_AS3711=y
+CONFIG_PMIC_ADP5520=y
+CONFIG_MFD_AAT2870_CORE=y
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_CROS_EC_DEV=y
+CONFIG_MFD_MAX77620=y
+CONFIG_MFD_RC5T583=y
+CONFIG_MFD_RK808=y
+CONFIG_MFD_SEC_CORE=y
+CONFIG_MFD_SUN6I_PRCM=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_VEXPRESS_SYSREG=y
+
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_AXP20X=y
+CONFIG_REGULATOR_FAN53555=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_REGULATOR_MAX77620=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_REGULATOR_QCOM_SPMI=y
+CONFIG_REGULATOR_RK808=y
+CONFIG_REGULATOR_S2MPS11=y
+
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_DRM=y
+CONFIG_DRM_MIPI_DSI=y
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+CONFIG_DRM_DP_CEC=y
+CONFIG_DRM_GEM_CMA_HELPER=y
+CONFIG_DRM_KMS_CMA_HELPER=y
+CONFIG_DRM_GEM_SHMEM_HELPER=y
+
+CONFIG_DRM_ROCKCHIP=y
+CONFIG_DRM_PANFROST=y
+CONFIG_ROCKCHIP_VOP=y
+CONFIG_ROCKCHIP_VOP2=y
+CONFIG_ROCKCHIP_ANALOGIX_DP=y
+CONFIG_ROCKCHIP_CDN_DP=y
+CONFIG_ROCKCHIP_DW_HDMI=y
+CONFIG_ROCKCHIP_DW_MIPI_DSI=y
+CONFIG_ROCKCHIP_INNO_HDMI=y
+CONFIG_ROCKCHIP_LVDS=y
+CONFIG_ROCKCHIP_RGB=y
+CONFIG_ROCKCHIP_RK3066_HDMI=y
+CONFIG_DRM_SUN4I_HDMI_CEC=y
+CONFIG_DRM_PANEL=y
+
+
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+
+CONFIG_DRM_ANALOGIX_DP=y
+CONFIG_DRM_I2C_ADV7511_CEC=y
+CONFIG_DRM_DW_HDMI=y
+CONFIG_DRM_DW_MIPI_DSI=y
+
+CONFIG_DRM_ETNAVIV_THERMAL=y
+CONFIG_DRM_XEN=y
+CONFIG_DRM_LEGACY=y
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_MODE_HELPERS=y
+
+CONFIG_FB_ARMCLCD=y
+CONFIG_XEN_FBDEV_FRONTEND=y
+
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_LP855X=y
+
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_HDMI=y
+
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_LED_TRIG=y
+CONFIG_USB_ULPI_BUS=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_OTG=y
+CONFIG_USB_LEDS_TRIGGER_USBPORT=y
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+
+
+
+CONFIG_USB_STORAGE=y
+
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_DUAL_ROLE=y
+
+CONFIG_USB_DWC3_HAPS=y
+CONFIG_USB_DWC3_OF_SIMPLE=y
+CONFIG_USB_DWC2=y
+
+CONFIG_USB_DWC2_DUAL_ROLE=y
+CONFIG_USB_CHIPIDEA=y
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_CHIPIDEA_PCI=y
+CONFIG_USB_CHIPIDEA_MSM=y
+CONFIG_USB_CHIPIDEA_IMX=y
+CONFIG_USB_CHIPIDEA_GENERIC=y
+CONFIG_USB_CHIPIDEA_TEGRA=y
+CONFIG_USB_ISP1760=y
+CONFIG_USB_ISP1760_HCD=y
+CONFIG_USB_ISP1761_UDC=y
+CONFIG_USB_ISP1760_DUAL_ROLE=y
+
+CONFIG_USB_SERIAL_GENERIC=y
+
+CONFIG_USB_HSIC_USB3503=y
+
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_ULPI=y
+CONFIG_USB_ULPI_VIEWPORT=y
+
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_U_SERIAL_CONSOLE=y
+
+
+CONFIG_USB_CONFIGFS_SERIAL=y
+CONFIG_USB_CONFIGFS_ACM=y
+CONFIG_USB_CONFIGFS_OBEX=y
+CONFIG_USB_CONFIGFS_NCM=y
+CONFIG_USB_CONFIGFS_ECM=y
+CONFIG_USB_CONFIGFS_ECM_SUBSET=y
+CONFIG_USB_CONFIGFS_RNDIS=y
+CONFIG_USB_CONFIGFS_EEM=y
+CONFIG_USB_CONFIGFS_MASS_STORAGE=y
+CONFIG_USB_CONFIGFS_F_LB_SS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_CONFIGFS_F_UAC1=y
+CONFIG_USB_CONFIGFS_F_UAC2=y
+CONFIG_USB_CONFIGFS_F_MIDI=y
+CONFIG_USB_CONFIGFS_F_HID=y
+CONFIG_USB_CONFIGFS_F_UVC=y
+CONFIG_USB_CONFIGFS_F_PRINTER=y
+CONFIG_USB_CONFIGFS_F_TCM=y
+
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_ETH_EEM=y
+CONFIG_USB_FUNCTIONFS_ETH=y
+CONFIG_USB_FUNCTIONFS_RNDIS=y
+CONFIG_USB_FUNCTIONFS_GENERIC=y
+CONFIG_USB_G_MULTI_RNDIS=y
+CONFIG_USB_G_MULTI_CDC=y
+
+
+
+
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_MMC=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=32
+
+CONFIG_MMC_ARMMMCI=y
+CONFIG_MMC_STM32_SDMMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_OF_ARASAN=y
+CONFIG_MMC_SDHCI_CADENCE=y
+CONFIG_MMC_SPI=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_PLTFM=y
+CONFIG_MMC_DW_EXYNOS=y
+CONFIG_MMC_DW_K3=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_CQHCI=y
+CONFIG_MMC_SDHCI_XENON=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+CONFIG_LEDS_GPIO=y
+
+CONFIG_LEDS_SYSCON=y
+CONFIG_LEDS_USER=y
+
+
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_DISK=y
+CONFIG_LEDS_TRIGGER_MTD=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_ACTIVITY=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+CONFIG_LEDS_TRIGGER_PANIC=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_EDAC=y
+CONFIG_EDAC_LEGACY_SYSFS=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+CONFIG_RTC_NVMEM=y
+
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_HYM8563=y
+CONFIG_RTC_DRV_MAX77686=y
+CONFIG_RTC_DRV_RK808=y
+CONFIG_RTC_DRV_M41T80_WDT=y
+
+CONFIG_RTC_I2C_AND_SPI=y
+
+CONFIG_RTC_DRV_DS3232_HWMON=y
+CONFIG_RTC_DRV_RV3029_HWMON=y
+
+CONFIG_RTC_DRV_EFI=y
+
+CONFIG_RTC_DRV_PL031=y
+CONFIG_RTC_DRV_SUN6I=y
+
+CONFIG_DMADEVICES=y
+
+CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+CONFIG_MV_XOR_V2=y
+CONFIG_PL330_DMA=y
+CONFIG_QCOM_HIDMA_MGMT=y
+CONFIG_QCOM_HIDMA=y
+
+CONFIG_DMA_ENGINE_RAID=y
+
+CONFIG_SYNC_FILE=y
+
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+CONFIG_COMMON_CLK_RK808=y
+CONFIG_COMMON_CLK_SCPI=y
+CONFIG_COMMON_CLK_CS2000_CP=y
+CONFIG_COMMON_CLK_S2MPS11=y
+CONFIG_COMMON_CLK_XGENE=y
+CONFIG_COMMON_CLK_PWM=y
+
+CONFIG_COMMON_CLK_MESON_REGMAP=y
+CONFIG_COMMON_CLK_MESON_DUALDIV=y
+CONFIG_COMMON_CLK_MESON_MPLL=y
+CONFIG_COMMON_CLK_MESON_PLL=y
+CONFIG_COMMON_CLK_MESON_VID_PLL_DIV=y
+CONFIG_COMMON_CLK_MESON_AO_CLKC=y
+CONFIG_COMMON_CLK_MESON_EE_CLKC=y
+CONFIG_COMMON_CLK_MESON_CPU_DYNDIV=y
+CONFIG_COMMON_CLK_GXBB=y
+CONFIG_COMMON_CLK_AXG=y
+CONFIG_COMMON_CLK_G12A=y
+
+CONFIG_COMMON_CLK_ROCKCHIP=y
+CONFIG_CLK_PX30=y
+CONFIG_CLK_RK3308=y
+CONFIG_CLK_RK3328=y
+CONFIG_CLK_RK3368=y
+CONFIG_CLK_RK3399=y
+CONFIG_CLK_SUNXI=y
+CONFIG_CLK_SUNXI_CLOCKS=y
+CONFIG_CLK_SUNXI_PRCM_SUN6I=y
+CONFIG_CLK_SUNXI_PRCM_SUN8I=y
+CONFIG_CLK_SUNXI_PRCM_SUN9I=y
+CONFIG_SUNXI_CCU=y
+CONFIG_SUN50I_A64_CCU=y
+CONFIG_SUN50I_A100_CCU=y
+CONFIG_SUN50I_A100_R_CCU=y
+CONFIG_SUN50I_H6_CCU=y
+CONFIG_SUN50I_H616_CCU=y
+CONFIG_SUN50I_H6_R_CCU=y
+CONFIG_SUN8I_A83T_CCU=y
+CONFIG_SUN8I_H3_CCU=y
+CONFIG_SUN8I_DE2_CCU=y
+CONFIG_SUN8I_R_CCU=y
+
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_ROCKCHIP_TIMER=y
+CONFIG_SUN4I_TIMER=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y
+CONFIG_FSL_ERRATUM_A008585=y
+CONFIG_HISILICON_ERRATUM_161010101=y
+CONFIG_ARM64_ERRATUM_858921=y
+CONFIG_SUN50I_ERRATUM_UNKNOWN1=y
+
+CONFIG_MAILBOX=y
+CONFIG_ARM_MHU=y
+CONFIG_PLATFORM_MHU=y
+CONFIG_ROCKCHIP_MBOX=y
+CONFIG_SUN6I_MSGBOX=y
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+CONFIG_IOMMU_IO_PGTABLE=y
+CONFIG_IOMMU_IO_PGTABLE_LPAE=y
+
+CONFIG_IOMMU_DEFAULT_DMA_STRICT=y
+CONFIG_OF_IOMMU=y
+CONFIG_IOMMU_DMA=y
+CONFIG_ROCKCHIP_IOMMU=y
+CONFIG_ARM_SMMU=y
+CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y
+CONFIG_ARM_SMMU_V3=y
+
+
+
+
+
+CONFIG_MESON_CLK_MEASURE=y
+CONFIG_MESON_GX_SOCINFO=y
+CONFIG_MESON_GX_PM_DOMAINS=y
+CONFIG_MESON_EE_PM_DOMAINS=y
+CONFIG_MESON_SECURE_PM_DOMAINS=y
+
+CONFIG_SOC_BRCMSTB=y
+
+
+
+CONFIG_LITEX=y
+
+
+CONFIG_ROCKCHIP_GRF=y
+CONFIG_ROCKCHIP_IODOMAIN=y
+CONFIG_ROCKCHIP_PM_DOMAINS=y
+CONFIG_ROCKCHIP_SUSPEND_MODE=y
+CONFIG_SUNXI_MBUS=y
+CONFIG_SUNXI_SRAM=y
+
+
+CONFIG_VENDOR_FRIENDLYELEC=y
+
+CONFIG_PM_DEVFREQ=y
+
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+
+CONFIG_ARM_RK3328_DMC_DEVFREQ=y
+CONFIG_ARM_RK3399_DMC_DEVFREQ=y
+CONFIG_PM_DEVFREQ_EVENT=y
+CONFIG_DEVFREQ_EVENT_ROCKCHIP_DFI=y
+CONFIG_EXTCON=y
+
+CONFIG_EXTCON_USB_GPIO=y
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_KFIFO_BUF=y
+CONFIG_IIO_TRIGGERED_BUFFER=y
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+
+
+CONFIG_MESON_SARADC=y
+CONFIG_ROCKCHIP_SARADC=y
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CONFIG_IIO_ADIS_LIB_BUFFER=y
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_ROCKCHIP=y
+
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_MAX_NR=1
+CONFIG_ARM_GIC_V2M=y
+CONFIG_ARM_GIC_V3=y
+CONFIG_ARM_GIC_V3_ITS=y
+CONFIG_ARM_GIC_V3_ITS_PCI=y
+CONFIG_PARTITION_PERCPU=y
+CONFIG_MESON_IRQ_GPIO=y
+
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_MESON=y
+CONFIG_RESET_SIMPLE=y
+CONFIG_RESET_SUNXI=y
+
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PHY_MIPI_DPHY=y
+CONFIG_PHY_XGENE=y
+CONFIG_PHY_MESON_AXG_PCIE=y
+CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG=y
+CONFIG_PHY_ROCKCHIP_DP=y
+CONFIG_PHY_ROCKCHIP_EMMC=y
+CONFIG_PHY_ROCKCHIP_INNO_HDMI=y
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_PCIE=y
+CONFIG_PHY_ROCKCHIP_TYPEC=y
+CONFIG_PHY_ROCKCHIP_USB=y
+CONFIG_PHY_SAMSUNG_USB2=y
+
+
+CONFIG_ARM_PMU=y
+
+CONFIG_RAS=y
+
+
+CONFIG_DAX=y
+CONFIG_NVMEM=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_ROCKCHIP_EFUSE=y
+
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+
+
diff --git a/target/aarch64/rockpi4-plus/extlinux.conf b/target/aarch64/rockpi4-plus/extlinux.conf
new file mode 100644
index 000000000..d754675c4
--- /dev/null
+++ b/target/aarch64/rockpi4-plus/extlinux.conf
@@ -0,0 +1,4 @@
+label rockpi4-plus-openadk
+ kernel /kernel
+ devicetree /rk3399-rock-pi-4b-plus.dtb
+ append console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootwait
diff --git a/target/aarch64/rockpi4-plus/genimage-dual.cfg b/target/aarch64/rockpi4-plus/genimage-dual.cfg
new file mode 100644
index 000000000..27f9a797e
--- /dev/null
+++ b/target/aarch64/rockpi4-plus/genimage-dual.cfg
@@ -0,0 +1,34 @@
+image sdcard.img {
+ hdimage {
+ }
+
+ partition loader1 {
+ in-partition-table = "no"
+ image = "idbloader.img"
+ offset = 32K
+ }
+
+ partition loader2 {
+ in-partition-table = "no"
+ image = "u-boot.itb"
+ offset = 8M
+ }
+
+ partition root1 {
+ partition-type = 0x83
+ bootable = "true"
+ image = "rootfs1.ext"
+ size = 64M
+ }
+
+ partition root2 {
+ partition-type = 0x83
+ image = "rootfs2.ext"
+ size = 64M
+ }
+
+ partition cfgfs {
+ partition-type = 0x88
+ image = "cfgfs.img"
+ }
+}
diff --git a/target/aarch64/rockpi4-plus/genimage.cfg b/target/aarch64/rockpi4-plus/genimage.cfg
new file mode 100644
index 000000000..4cb5f3593
--- /dev/null
+++ b/target/aarch64/rockpi4-plus/genimage.cfg
@@ -0,0 +1,45 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "kernel",
+ "rk3399-rock-pi-4b-plus.dtb",
+ "extlinux"
+ }
+ }
+
+ size = 32M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition loader1 {
+ in-partition-table = "no"
+ image = "idbloader.img"
+ offset = 32K
+ }
+
+ partition loader2 {
+ in-partition-table = "no"
+ image = "u-boot.itb"
+ offset = 8M
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ offset = 16M
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ }
+
+ partition cfgfs {
+ partition-type = 0x88
+ image = "cfgfs.img"
+ }
+}
diff --git a/target/aarch64/systems/raspberry-pi3p-64 b/target/aarch64/systems/raspberry-pi3p-64
deleted file mode 100644
index 3ac86b45b..000000000
--- a/target/aarch64/systems/raspberry-pi3p-64
+++ /dev/null
@@ -1,26 +0,0 @@
-config ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
- bool "Raspberry PI 3 Model B+"
- select ADK_TARGET_LITTLE_ENDIAN
- select ADK_TARGET_CPU_AARCH64_CORTEX_A53
- select ADK_TARGET_BOARD_BCM28XX
- select ADK_TARGET_WITH_VGA
- select ADK_TARGET_WITH_SERIAL
- select ADK_TARGET_WITH_CPU_FREQ
- select ADK_TARGET_WITH_USB
- select ADK_TARGET_WITH_INPUT
- select ADK_TARGET_WITH_SD
- select ADK_TARGET_WITH_I2C
- select ADK_TARGET_WITH_SPI
- select ADK_TARGET_WITH_SMP
- select ADK_TARGET_WITH_NET
- select ADK_TARGET_WITH_NETDEVICE
- select ADK_TARGET_WITH_WIFI
- select ADK_TARGET_WITH_BLOCK
- select ADK_TARGET_WITH_SOUND
- select ADK_TARGET_WITH_SDIO
- select ADK_PACKAGE_BCM28XX_BOOTLOADER
- select ADK_TARGET_WITH_ROOT_RW
- select ADK_TARGET_KERNEL_IMAGE
- help
- Raspberry PI 3 Model B+ (AARCH64)
-
diff --git a/target/aarch64/systems/raspberry-pi4-64 b/target/aarch64/systems/raspberry-pi4-64
new file mode 100644
index 000000000..e06ac6dbe
--- /dev/null
+++ b/target/aarch64/systems/raspberry-pi4-64
@@ -0,0 +1,26 @@
+config ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ bool "Raspberry PI 4"
+ select ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_AARCH64_CORTEX_A72
+ select ADK_TARGET_BOARD_BCM28XX
+ select ADK_TARGET_WITH_VGA
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_CPU_FREQ
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_INPUT
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_I2C
+ select ADK_TARGET_WITH_SPI
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_WIFI
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SOUND
+ select ADK_TARGET_WITH_SDIO
+ select ADK_PACKAGE_BCM28XX_BOOTLOADER
+ select ADK_TARGET_WITH_ROOT_RW
+ select ADK_TARGET_KERNEL_IMAGE
+ help
+ Raspberry PI 4 (AARCH64)
+
diff --git a/target/aarch64/systems/raspberry-pi5 b/target/aarch64/systems/raspberry-pi5
new file mode 100644
index 000000000..770758b5e
--- /dev/null
+++ b/target/aarch64/systems/raspberry-pi5
@@ -0,0 +1,26 @@
+config ADK_TARGET_SYSTEM_RASPBERRY_PI5
+ bool "Raspberry PI 5"
+ select ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_AARCH64_CORTEX_A76
+ select ADK_TARGET_BOARD_BCM28XX
+ select ADK_TARGET_WITH_VGA
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_CPU_FREQ
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_INPUT
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_I2C
+ select ADK_TARGET_WITH_SPI
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_WIFI
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SOUND
+ select ADK_TARGET_WITH_SDIO
+ select ADK_PACKAGE_BCM28XX_BOOTLOADER
+ select ADK_TARGET_WITH_ROOT_RW
+ select ADK_TARGET_KERNEL_IMAGE
+ help
+ Raspberry PI 5
+
diff --git a/target/aarch64/systems/rockpi4-plus b/target/aarch64/systems/rockpi4-plus
new file mode 100644
index 000000000..875e5a90f
--- /dev/null
+++ b/target/aarch64/systems/rockpi4-plus
@@ -0,0 +1,27 @@
+config ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ bool "Rock PI 4 Plus"
+ depends on ADK_TARGET_OS_LINUX
+ select ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_AARCH64_CORTEX_A53
+ select ADK_TARGET_WITH_VGA
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_CPU_FREQ
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_INPUT
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_SDIO
+ select ADK_TARGET_WITH_I2C
+ select ADK_TARGET_WITH_SPI
+ select ADK_TARGET_WITH_PCI
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SOUND
+ select ADK_TARGET_WITH_RTC
+ select ADK_TARGET_WITH_WIFI
+ select ADK_TARGET_KERNEL_IMAGE
+ select ADK_PACKAGE_U_BOOT
+ help
+ Rock PI 4 Plus
+
diff --git a/target/alpha/kernel/qemu-alpha b/target/alpha/kernel/qemu-alpha
index ddf62d2fb..0a66ab9d3 100644
--- a/target/alpha/kernel/qemu-alpha
+++ b/target/alpha/kernel/qemu-alpha
@@ -3,3 +3,4 @@ CONFIG_ALPHA_DP264=y
CONFIG_ALPHA_QEMU=y
CONFIG_ISA=y
CONFIG_ISA_DMA_API=y
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
diff --git a/target/arc/Makefile b/target/arc/Makefile
index bdd3e4c9a..decdd8176 100644
--- a/target/arc/Makefile
+++ b/target/arc/Makefile
@@ -5,10 +5,36 @@ include $(ADK_TOPDIR)/rules.mk
include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
+KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)
ifeq ($(ADK_TARGET_KERNEL_UIMAGE),y)
KERNEL:=$(LINUX_DIR)/arch/arc/boot/uImage
-else
-KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)
+endif
+ifeq ($(ADK_TARGET_KERNEL_LOADER),y)
+KERNEL:=$(LINUX_DIR)/arch/arc/boot/loader
+endif
+
+QEMU_ARGS:=-monitor none -serial stdio
+QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0
+QEMU_ARGS+=${ADK_QEMU_ARGS}
+
+ifeq ($(ADK_TARGET_CPU_ARC_ARC700),y)
+QEMU:=qemu-system-arc
+QEMU_ARGS+=-cpu arc700
+endif
+
+ifeq ($(ADK_TARGET_CPU_ARC_ARCHS),y)
+QEMU:=qemu-system-arc
+QEMU_ARGS+=-cpu archs
+endif
+
+ifeq ($(ADK_TARGET_CPU_ARC_ARC32),y)
+QEMU:=qemu-system-arc
+QEMU_ARGS+=-cpu hs5x -M virt,ram_start=0
+endif
+
+ifeq ($(ADK_TARGET_CPU_ARC_ARC64),y)
+QEMU:=qemu-system-arc64
+QEMU_ARGS+=-cpu hs6x -M virt,ram_start=0
endif
# target helper text
@@ -29,6 +55,10 @@ endif
ifeq ($(ADK_TARGET_FS),initramfspiggyback)
targethelp:
@echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo '${QEMU} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+endif
ifeq ($(ADK_TARGET_SYSTEM_SYNOPSYS_NSIM),y)
ifeq ($(ADK_TARGET_LITTLE_ENDIAN),y)
ifeq ($(ADK_TARGET_CPU_ARC_ARC700),y)
diff --git a/target/arc/kernel/qemu-arc b/target/arc/kernel/qemu-arc
new file mode 100644
index 000000000..d537406d4
--- /dev/null
+++ b/target/arc/kernel/qemu-arc
@@ -0,0 +1,3 @@
+CONFIG_ARC=y
+CONFIG_ARC_HAS_ACCL_REGS=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arc/kernel/synopsys-hsdk b/target/arc/kernel/synopsys-hsdk
index 93dae4062..8deed79ef 100644
--- a/target/arc/kernel/synopsys-hsdk
+++ b/target/arc/kernel/synopsys-hsdk
@@ -3,3 +3,10 @@ CONFIG_ARC_SOC_HSDK=y
CONFIG_ARC_UBOOT_SUPPORT=y
CONFIG_ARC_DBG=y
CONFIG_ARC_DW2_UNWIND=y
+CONFIG_ARC_HAS_LLSC=y
+CONFIG_ARC_HAS_SWAPE=y
+CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y
+CONFIG_ARC_HAS_LL64=y
+CONFIG_ARC_HAS_DIV_REM=y
+CONFIG_ARC_HAS_ACCL_REGS=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arc/kernel/synopsys-nsim b/target/arc/kernel/synopsys-nsim
index ad1683b1c..c7bb2706c 100644
--- a/target/arc/kernel/synopsys-nsim
+++ b/target/arc/kernel/synopsys-nsim
@@ -2,3 +2,10 @@ CONFIG_ARC=y
CONFIG_ARC_PLAT_SIM=y
CONFIG_ARC_DBG=y
CONFIG_ARC_DW2_UNWIND=y
+CONFIG_ARC_HAS_LLSC=y
+CONFIG_ARC_HAS_SWAPE=y
+CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS=y
+CONFIG_ARC_HAS_LL64=y
+CONFIG_ARC_HAS_DIV_REM=y
+CONFIG_ARC_HAS_ACCL_REGS=y
+
diff --git a/target/arc/systems/qemu-arc b/target/arc/systems/qemu-arc
new file mode 100644
index 000000000..017042e3a
--- /dev/null
+++ b/target/arc/systems/qemu-arc
@@ -0,0 +1,8 @@
+config ADK_TARGET_SYSTEM_QEMU_ARC
+ bool "Qemu Emulator"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_KERNEL_WITH_COMPRESSION
+ select ADK_TARGET_LITTLE_ENDIAN
+ help
+ Support for QEMU ARC Emulator.
+
diff --git a/target/arc/uclibc-ng.config b/target/arc/uclibc-ng.config
index b20bca4ff..2842123a9 100644
--- a/target/arc/uclibc-ng.config
+++ b/target/arc/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@ TARGET_arc=y
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@ TARGET_arc=y
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -45,16 +52,15 @@ TARGET_SUBARCH=""
# Using ELF file format
#
ARCH_ANY_ENDIAN=y
-ARCH_BIG_ENDIAN=y
-ARCH_WANTS_BIG_ENDIAN=y
-# ARCH_WANTS_LITTLE_ENDIAN is not set
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
ARCH_HAS_MMU=y
ARCH_USE_MMU=y
UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -63,6 +69,7 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -78,7 +85,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -87,6 +93,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -115,6 +122,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -130,6 +138,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -152,6 +161,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -221,7 +234,6 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/arch.lst b/target/arch.lst
index 8ef05f730..d801075d8 100644
--- a/target/arch.lst
+++ b/target/arch.lst
@@ -16,6 +16,7 @@ hppa
ia64
kvx
lm32
+loongarch
m32c
m32r
m68k
diff --git a/target/arm/Makefile b/target/arm/Makefile
index d92e10d6a..e5c7a3a6d 100644
--- a/target/arm/Makefile
+++ b/target/arm/Makefile
@@ -48,6 +48,7 @@ endif
# target helper text
ifeq ($(ADK_TARGET_FS),archive)
targethelp:
+ @echo "#################################################"
@echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9)$(ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB)$(ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER)$(ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ),y)
@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
@@ -90,6 +91,12 @@ ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y)
@echo "Use following command to install with a writable data partition"
@echo "sudo ./scripts/install.sh -d 256 banana-pro /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
endif
+ifeq ($(ADK_TARGET_SYSTEM_BANANA_P2_ZERO),y)
+ @echo "Use following command to install it on SD card:"
+ @echo "sudo ./scripts/install.sh banana-pro-zero /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+ @echo "Use following command to install with a writable data partition"
+ @echo "sudo ./scripts/install.sh -d 256 banana-pro-zero /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+endif
ifeq ($(ADK_TARGET_SYSTEM_ORANGE_PI0),y)
@echo "Use following command to install it on SD card:"
@echo "sudo ./scripts/install.sh orange-pi0 /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
@@ -148,9 +155,9 @@ endif
endif
ifeq ($(ADK_TARGET_FS),genimage)
targethelp:
- @echo "The disk image is: $(FW_DIR)/disk.img"
+ @echo "The disk image is: $(FW_DIR)/sdcard.img"
@echo "Use following command to install it on SD card:"
- @echo 'sudo dd if=$(FW_DIR)/disk.img of=/dev/sdX bs=2048k'
+ @echo 'sudo dd if=$(FW_DIR)/sdcard.img of=/dev/sdX bs=2048k'
endif
kernel-strip:
@@ -168,18 +175,33 @@ ifeq ($(ADK_TARGET_FS),squashfs)
dd conv=notrunc if=$(BUILD_DIR)/root.squashfs of=$(FW_DIR)/$(ROOTFSSQUASHFS)
endif
+ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_6_6),y)
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB),y)
+VENDOR:=arm/
+endif
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE),y)
+VENDOR:=arm/
+endif
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9),y)
+VENDOR:=arm/
+endif
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ),y)
+VENDOR:=xilinx/
+endif
+endif
+
dtb-install:
ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ),y)
${KERNEL_MAKE} dtbs $(MAKE_TRACE)
endif
ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9),y)
- ${KERNEL_MAKE} vexpress-v2p-ca9.dtb $(MAKE_TRACE)
+ ${KERNEL_MAKE} $(VENDOR)vexpress-v2p-ca9.dtb $(MAKE_TRACE)
endif
ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE),y)
- ${KERNEL_MAKE} arm-realview-eb-11mp-ctrevb.dtb $(MAKE_TRACE)
+ ${KERNEL_MAKE} $(VENDOR)arm-realview-eb-11mp-ctrevb.dtb $(MAKE_TRACE)
endif
ifeq ($(ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB),y)
- ${KERNEL_MAKE} versatile-pb.dtb $(MAKE_TRACE)
+ ${KERNEL_MAKE} $(VENDOR)versatile-pb.dtb $(MAKE_TRACE)
endif
ifeq ($(ADK_TARGET_SYSTEM_PHYTEC_WEGA),y)
${KERNEL_MAKE} am335x-wega-rdk.dtb $(MAKE_TRACE)
@@ -200,6 +222,10 @@ ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
[[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm/boot/dts/overlays/*.dtbo $(FW_DIR)/overlays; \
break; \
done
+ for x in $(LINUX_DIR)/arch/arm/boot/dts/overlays/*.dtb; do \
+ [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm/boot/dts/overlays/*.dtb $(FW_DIR)/overlays; \
+ break; \
+ done
endif
ifeq ($(ADK_TARGET_SYSTEM_BANANA_PRO),y)
${KERNEL_MAKE} sun7i-a20-bananapro.dtb $(MAKE_TRACE)
@@ -207,6 +233,9 @@ endif
ifeq ($(ADK_TARGET_SYSTEM_ORANGE_PI0),y)
${KERNEL_MAKE} sun8i-h2-plus-orangepi-zero.dtb $(MAKE_TRACE)
endif
+ifeq ($(ADK_TARGET_SYSTEM_BANANA_P2_ZERO),y)
+ ${KERNEL_MAKE} sun8i-h2-plus-bananapi-m2-zero.dtb $(MAKE_TRACE)
+endif
ifeq ($(ADK_TARGET_SYSTEM_SOLIDRUN_IMX6),y)
${KERNEL_MAKE} imx6q-cubox-i.dtb imx6dl-cubox-i.dtb \
imx6dl-hummingboard.dtb imx6q-hummingboard.dtb $(MAKE_TRACE)
@@ -220,8 +249,11 @@ endif
ifeq ($(ADK_TARGET_SYSTEM_ST_STM32F769),y)
${KERNEL_MAKE} dtbs $(MAKE_TRACE)
endif
- for x in $(LINUX_DIR)/arch/arm/boot/dts/*.dtb; do \
- [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm/boot/dts/*.dtb $(FW_DIR); \
+ifeq ($(ADK_TARGET_SYSTEM_ST_STM32F746G),y)
+ ${KERNEL_MAKE} dtbs $(MAKE_TRACE)
+endif
+ for x in $(LINUX_DIR)/arch/arm/boot/dts/$(VENDOR)*.dtb; do \
+ [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/arm/boot/dts/$(VENDOR)*.dtb $(FW_DIR); \
break; \
done
diff --git a/target/arm/banana-p2-zero/extlinux.conf b/target/arm/banana-p2-zero/extlinux.conf
new file mode 100644
index 000000000..08a063d7f
--- /dev/null
+++ b/target/arm/banana-p2-zero/extlinux.conf
@@ -0,0 +1,4 @@
+label banana-p2-zero-openadk
+ kernel /kernel
+ devicetree /sun8i-h2-plus-bananapi-m2-zero.dtb
+ append console=ttyS0,115200n8 rw rootwait
diff --git a/target/arm/banana-p2-zero/genimage.cfg b/target/arm/banana-p2-zero/genimage.cfg
new file mode 100644
index 000000000..98c9de077
--- /dev/null
+++ b/target/arm/banana-p2-zero/genimage.cfg
@@ -0,0 +1,35 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "kernel",
+ "sun8i-h2-plus-bananapi-m2-zero.dtb",
+ "boot.scr"
+ }
+ }
+
+ size = 64M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition u-boot {
+ in-partition-table = "no"
+ image = "u-boot-sunxi-with-spl.bin"
+ offset = 8K
+ size = 1016K # 1MB - 8KB
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ }
+
+}
diff --git a/target/arm/kernel/banana-p2-zero b/target/arm/kernel/banana-p2-zero
new file mode 100644
index 000000000..586bc605a
--- /dev/null
+++ b/target/arm/kernel/banana-p2-zero
@@ -0,0 +1,323 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN8I=y
+CONFIG_ARCH_SUNXI_MC_SMP=y
+CONFIG_ARM_THUMB=y
+CONFIG_KUSER_HELPERS=y
+CONFIG_VDSO=y
+CONFIG_ATAGS=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+CONFIG_HAVE_CONTEXT_TRACKING_USER=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
+CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+CONFIG_VMAP_STACK=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_FREEZER=y
+CONFIG_COMPAT_BRK=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FLATMEM=y
+CONFIG_ARCH_KEEP_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+CONFIG_CONTIG_ALLOC=y
+CONFIG_BOUNCE=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_CMA=y
+CONFIG_CMA_AREAS=7
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_KMAP_LOCAL=y
+CONFIG_KMAP_LOCAL_NON_LINEAR_PTE_ARRAY=y
+CONFIG_HAVE_PCI=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_CACHE=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_ARM_CCI=y
+CONFIG_ARM_CCI400_COMMON=y
+CONFIG_ARM_CCI400_PORT_CTRL=y
+CONFIG_SUNXI_RSB=y
+CONFIG_ARM_PSCI_FW=y
+CONFIG_HAVE_ARM_SMCCC=y
+CONFIG_HAVE_ARM_SMCCC_DISCOVERY=y
+CONFIG_ARM_SMCCC_SOC_ID=y
+CONFIG_DTC=y
+CONFIG_OF=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+CONFIG_BLK_DEV=y
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_NET_CORE=y
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_ALACRITECH=y
+CONFIG_NET_VENDOR_ALLWINNER=y
+CONFIG_SUN4I_EMAC=y
+CONFIG_STMMAC_ETH=y
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_DWMAC_GENERIC=y
+CONFIG_DWMAC_SUNXI=y
+CONFIG_DWMAC_SUN8I=y
+CONFIG_PHYLINK=y
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+CONFIG_FIXED_PHY=y
+CONFIG_MICREL_PHY=y
+CONFIG_REALTEK_PHY=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_OF_MDIO=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_MDIO_SUN4I=y
+CONFIG_MDIO_BUS_MUX=y
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_16550A_VARIANTS=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_NR_UARTS=8
+CONFIG_SERIAL_8250_RUNTIME_UARTS=8
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_FSL=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_DEVMEM=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_MUX=y
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=y
+CONFIG_I2C_MV64XXX=y
+CONFIG_I2C_SUN6I_P2WI=y
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_SUN4I=y
+CONFIG_SPI_SUN6I=y
+CONFIG_PTP_1588_CLOCK=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PTP_1588_CLOCK_KVM=y
+CONFIG_PINCTRL=y
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_PINCTRL_SUNXI=y
+CONFIG_PINCTRL_SUN4I_A10=y
+CONFIG_PINCTRL_SUN5I=y
+CONFIG_PINCTRL_SUN6I_A31=y
+CONFIG_PINCTRL_SUN6I_A31_R=y
+CONFIG_PINCTRL_SUN8I_A23=y
+CONFIG_PINCTRL_SUN8I_A33=y
+CONFIG_PINCTRL_SUN8I_A83T=y
+CONFIG_PINCTRL_SUN8I_A83T_R=y
+CONFIG_PINCTRL_SUN8I_A23_R=y
+CONFIG_PINCTRL_SUN8I_H3=y
+CONFIG_PINCTRL_SUN8I_H3_R=y
+CONFIG_PINCTRL_SUN8I_V3S=y
+CONFIG_PINCTRL_SUN9I_A80=y
+CONFIG_PINCTRL_SUN9I_A80_R=y
+CONFIG_PINCTRL_SUN20I_D1=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_HWMON=y
+CONFIG_CHARGER_AXP20X=y
+CONFIG_BATTERY_AXP20X=y
+CONFIG_AXP20X_POWER=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_AC100=y
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_AXP20X_RSB=y
+CONFIG_MFD_SUN6I_PRCM=y
+CONFIG_MFD_SYSCON=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_AXP20X=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_RC_CORE=y
+CONFIG_RC_MAP=y
+CONFIG_RC_DEVICES=y
+CONFIG_IR_SUNXI=y
+CONFIG_CEC_CORE=y
+CONFIG_CEC_PIN=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_HID=y
+CONFIG_HID_GENERIC=y
+CONFIG_USB_HID=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_DUAL_ROLE=y
+CONFIG_USB_MUSB_SUNXI=y
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_MMC=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_SUNXI=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+CONFIG_RTC_NVMEM=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_DRV_AC100=y
+CONFIG_RTC_I2C_AND_SPI=y
+CONFIG_RTC_DRV_SUN6I=y
+CONFIG_RTC_DRV_SUNXI=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+CONFIG_DMA_SUN4I=y
+CONFIG_DMA_SUN6I=y
+CONFIG_SYNC_FILE=y
+CONFIG_VIRTIO_MENU=y
+CONFIG_VHOST_MENU=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+CONFIG_CLK_SUNXI=y
+CONFIG_CLK_SUNXI_CLOCKS=y
+CONFIG_CLK_SUNXI_PRCM_SUN6I=y
+CONFIG_CLK_SUNXI_PRCM_SUN8I=y
+CONFIG_CLK_SUNXI_PRCM_SUN9I=y
+CONFIG_SUNXI_CCU=y
+CONFIG_SUN4I_A10_CCU=y
+CONFIG_SUN5I_CCU=y
+CONFIG_SUN6I_A31_CCU=y
+CONFIG_SUN6I_RTC_CCU=y
+CONFIG_SUN8I_A23_CCU=y
+CONFIG_SUN8I_A33_CCU=y
+CONFIG_SUN8I_A83T_CCU=y
+CONFIG_SUN8I_H3_CCU=y
+CONFIG_SUN8I_V3S_CCU=y
+CONFIG_SUN8I_DE2_CCU=y
+CONFIG_SUN8I_R40_CCU=y
+CONFIG_SUN9I_A80_CCU=y
+CONFIG_SUN8I_R_CCU=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_SUN4I_TIMER=y
+CONFIG_SUN5I_HSTIMER=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_MAILBOX=y
+CONFIG_SUN6I_MSGBOX=y
+CONFIG_SUNXI_MBUS=y
+CONFIG_SUNXI_SRAM=y
+CONFIG_PM_DEVFREQ=y
+CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_SUN4I=y
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+CONFIG_ARM_GIC_MAX_NR=1
+CONFIG_SUN4I_INTC=y
+CONFIG_SUN6I_R_INTC=y
+CONFIG_SUNXI_NMI_INTC=y
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_SIMPLE=y
+CONFIG_RESET_SUNXI=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PHY_MIPI_DPHY=y
diff --git a/target/arm/kernel/qemu-arm-realview-eb-mpcore b/target/arm/kernel/qemu-arm-realview-eb-mpcore
index 9f967f4f2..acd059cc8 100644
--- a/target/arm/kernel/qemu-arm-realview-eb-mpcore
+++ b/target/arm/kernel/qemu-arm-realview-eb-mpcore
@@ -16,3 +16,4 @@ CONFIG_KUSER_HELPERS=y
CONFIG_ATAGS=y
CONFIG_CMDLINE="console=ttyAMA0 mem=128M"
CONFIG_CMDLINE_FROM_BOOTLOADER=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arm/kernel/qemu-arm-spitz b/target/arm/kernel/qemu-arm-spitz
index 8ae5f01d4..259028d95 100644
--- a/target/arm/kernel/qemu-arm-spitz
+++ b/target/arm/kernel/qemu-arm-spitz
@@ -39,3 +39,9 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=y
CONFIG_HID=y
CONFIG_HID_GENERIC=y
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_NON8250=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arm/kernel/qemu-arm-terrier b/target/arm/kernel/qemu-arm-terrier
index 0b0100306..4a947ea14 100644
--- a/target/arm/kernel/qemu-arm-terrier
+++ b/target/arm/kernel/qemu-arm-terrier
@@ -39,3 +39,9 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=y
CONFIG_HID=y
CONFIG_HID_GENERIC=y
+CONFIG_SERIAL_PXA=y
+CONFIG_SERIAL_PXA_NON8250=y
+CONFIG_SERIAL_PXA_CONSOLE=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arm/kernel/qemu-arm-versatilepb b/target/arm/kernel/qemu-arm-versatilepb
index 968177c97..148fda569 100644
--- a/target/arm/kernel/qemu-arm-versatilepb
+++ b/target/arm/kernel/qemu-arm-versatilepb
@@ -1,5 +1,5 @@
CONFIG_ARM=y
-CONFIG_ARM_SINGLE_ARCH_VERSATILE=y
+CONFIG_ARM_SINGLE_ARM926=y
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_ARCH_VERSATILE=y
CONFIG_KUSER_HELPERS=y
@@ -15,3 +15,4 @@ CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y
CONFIG_PLAT_VERSATILE=y
CONFIG_VECTORS_BASE=0x00000000
CONFIG_PHYS_OFFSET=0x00000000
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arm/kernel/qemu-arm-vexpress-a9 b/target/arm/kernel/qemu-arm-vexpress-a9
index 90541c644..b3953ad10 100644
--- a/target/arm/kernel/qemu-arm-vexpress-a9
+++ b/target/arm/kernel/qemu-arm-vexpress-a9
@@ -1,9 +1,27 @@
CONFIG_ARM=y
+CONFIG_ARCH_MULTIPLATFORM=y
CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
CONFIG_ARCH_VEXPRESS=y
-CONFIG_KUSER_HELPERS=y
-CONFIG_ATAGS=y
+CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
+CONFIG_ARCH_VEXPRESS_DCSCB=y
+CONFIG_ARCH_VEXPRESS_SPC=y
+CONFIG_ARCH_VEXPRESS_TC2_PM=y
+CONFIG_PLAT_VERSATILE=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_VIRT_EXT=y
CONFIG_SWP_EMULATE=y
-CONFIG_CLKSRC_VERSATILE=y
+CONFIG_KUSER_HELPERS=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_ARM_AMBA=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_VEXPRESS_SYSREG=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_VEXPRESS=y
CONFIG_CLK_SP810=y
CONFIG_CLK_VEXPRESS_OSC=y
+
+
diff --git a/target/arm/kernel/raspberry-pi3p b/target/arm/kernel/raspberry-pi3p
deleted file mode 100644
index 7928b3968..000000000
--- a/target/arm/kernel/raspberry-pi3p
+++ /dev/null
@@ -1,25 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_ARCH_MULTIPLATFORM=y
-CONFIG_ARCH_MULTI_V7=y
-CONFIG_ARCH_MULTI_V6_V7=y
-CONFIG_ARCH_BCM=y
-CONFIG_ARCH_BCM2835=y
-CONFIG_VMSPLIT_2G=y
-CONFIG_PAGE_OFFSET=0x80000000
-CONFIG_KUSER_HELPERS=y
-CONFIG_ARM_AMBA=y
-CONFIG_BRCM_CHAR_DRIVERS=y
-CONFIG_BCM_VC_CMA=y
-CONFIG_BCM2708_VCMEM=y
-CONFIG_BCM_VCIO=y
-CONFIG_BCM_VC_SM=y
-CONFIG_BCMA=y
-CONFIG_BCMA_BLOCKIO=y
-CONFIG_BCM_VIDEOCORE=y
-CONFIG_BCM2835_VCHIQ=y
-CONFIG_MAILBOX=y
-CONFIG_BCM2835_MBOX=y
-CONFIG_RASPBERRYPI_POWER=y
-CONFIG_RASPBERRYPI_FIRMWARE=y
-CONFIG_STAGING=y
diff --git a/target/arm/kernel/raspberry-pi4 b/target/arm/kernel/raspberry-pi4
new file mode 100644
index 000000000..77c23a997
--- /dev/null
+++ b/target/arm/kernel/raspberry-pi4
@@ -0,0 +1,42 @@
+CONFIG_ARM=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_ARCH_MULTIPLATFORM=y
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+CONFIG_ARCH_BCM=y
+CONFIG_ARCH_BCM2835=y
+CONFIG_VMSPLIT_2G=y
+CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_KUSER_HELPERS=y
+CONFIG_ARM_AMBA=y
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM_VC_CMA=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCM_VC_SM=y
+CONFIG_BCMA=y
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCM_VIDEOCORE=y
+CONFIG_BCM2835_VCHIQ=y
+CONFIG_MAILBOX=y
+CONFIG_BCM2835_MBOX=y
+CONFIG_RASPBERRYPI_POWER=y
+CONFIG_RASPBERRYPI_FIRMWARE=y
+CONFIG_CLK_BCM2711_DVP=y
+CONFIG_CLK_BCM2835=y
+CONFIG_CLK_RASPBERRYPI=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_GPIO_RASPBERRYPI_EXP=y
+CONFIG_GPIO_BCM_VIRT=y
+CONFIG_GPIO_PCA953X_IRQ=y
+CONFIG_GPIO_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_GPIO=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_PWM=y
diff --git a/target/arm/kernel/solidrun-imx6 b/target/arm/kernel/solidrun-imx6
index 1a694f75c..f0a223861 100644
--- a/target/arm/kernel/solidrun-imx6
+++ b/target/arm/kernel/solidrun-imx6
@@ -3,11 +3,22 @@ CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_ARCH_MULTI_V7=y
CONFIG_ARCH_MXC=y
CONFIG_ARCH_MX6=y
+CONFIG_SOC_IMX6=y
CONFIG_SOC_IMX6Q=y
CONFIG_SOC_IMX6SL=y
+CONFIG_SOC_IMX6SLL=y
+CONFIG_SOC_IMX6SX=y
+CONFIG_SOC_IMX6UL=y
CONFIG_LOCAL_TIMERS=y
-CONFIG_MXC_DEBUG_BOARD=y
CONFIG_KUSER_HELPERS=y
-CONFIG_PM_SLEEP=y
CONFIG_ATAGS=y
CONFIG_CMDLINE_FORCE=y
+CONFIG_SERIAL_DEV_BUS=y
+CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
+CONFIG_FIQ=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_USE_OF=y
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ATAGS_PROC=y
+CONFIG_AUTO_ZRELADDR=y
diff --git a/target/arm/kernel/st-stm32f746g b/target/arm/kernel/st-stm32f746g
new file mode 100644
index 000000000..7c8375059
--- /dev/null
+++ b/target/arm/kernel/st-stm32f746g
@@ -0,0 +1,28 @@
+CONFIG_ARM_SINGLE_ARMV7M=y
+CONFIG_ARCH_STM32=y
+CONFIG_MACH_STM32F746=y
+CONFIG_SET_MEM_PARAM=y
+CONFIG_DRAM_BASE=0xC0000000
+CONFIG_DRAM_SIZE=0x01000000
+CONFIG_FLASH_MEM_BASE=0x08000000
+CONFIG_FLASH_SIZE=0x00200000
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_SERIAL_STM32=y
+CONFIG_SERIAL_STM32_CONSOLE=y
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_STM32F4=y
+CONFIG_I2C_STM32F7=y
+CONFIG_GPIO_STMPE=y
+CONFIG_MFD_STMPE=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_ARMMMCI=y
+CONFIG_MMC_STM32_SDMMC=y
+CONFIG_DMADEVICES=y
+CONFIG_STM32_DMA=y
+CONFIG_STM32_DMAMUX=y
+CONFIG_STM32_MDMA=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/arm/st-stm32f746g/extlinux.conf b/target/arm/st-stm32f746g/extlinux.conf
new file mode 100644
index 000000000..9a6728417
--- /dev/null
+++ b/target/arm/st-stm32f746g/extlinux.conf
@@ -0,0 +1,4 @@
+label stm32f746g-disco-openadk
+ kernel /kernel
+ devicetree /stm32f746-disco.dtb
+ append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootwait consoleblank=0
diff --git a/target/arm/st-stm32f746g/genimage.cfg b/target/arm/st-stm32f746g/genimage.cfg
new file mode 100644
index 000000000..8cd0530ae
--- /dev/null
+++ b/target/arm/st-stm32f746g/genimage.cfg
@@ -0,0 +1,27 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "kernel",
+ "stm32f746-disco.dtb",
+ "extlinux"
+ }
+ }
+
+ size = 16M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ size = 64M
+ }
+}
diff --git a/target/arm/systems/banana-p2-zero b/target/arm/systems/banana-p2-zero
new file mode 100644
index 000000000..8fd4c9f95
--- /dev/null
+++ b/target/arm/systems/banana-p2-zero
@@ -0,0 +1,25 @@
+config ADK_TARGET_SYSTEM_BANANA_P2_ZERO
+ bool "Banana P2 zero"
+ depends on ADK_TARGET_OS_LINUX
+ select ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_ARM_CORTEX_A7
+ select ADK_TARGET_CPU_WITH_NEON
+ select ADK_TARGET_WITH_VGA
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_CPU_FREQ
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_SDIO
+ select ADK_TARGET_WITH_I2C
+ select ADK_TARGET_WITH_SPI
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_ROOT_RW
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_KERNEL_ZIMAGE
+ select ADK_PACKAGE_U_BOOT
+ select ADK_HOST_BUILD_U_BOOT
+ help
+ Banana PI M2 Zero with Allwinner H3
+
diff --git a/target/arm/systems/qemu-arm-xilinx-zynq b/target/arm/systems/qemu-arm-xilinx-zynq
index c00543509..08133822a 100644
--- a/target/arm/systems/qemu-arm-xilinx-zynq
+++ b/target/arm/systems/qemu-arm-xilinx-zynq
@@ -2,6 +2,7 @@ config ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ
bool "Qemu Emulator (Xilinx Zynq)"
depends on ADK_TARGET_OS_LINUX
select ADK_TARGET_CPU_ARM_CORTEX_A9
+ select ADK_TARGET_LITTLE_ENDIAN
select ADK_TARGET_QEMU
select ADK_TARGET_KERNEL_ZIMAGE
select ADK_TARGET_KERNEL_WITH_COMPRESSION
diff --git a/target/arm/systems/raspberry-pi3p b/target/arm/systems/raspberry-pi3p
deleted file mode 100644
index d2100a948..000000000
--- a/target/arm/systems/raspberry-pi3p
+++ /dev/null
@@ -1,27 +0,0 @@
-config ADK_TARGET_SYSTEM_RASPBERRY_PI3P
- bool "Raspberry PI 3 Model B+"
- depends on ADK_TARGET_OS_LINUX
- select ADK_TARGET_LITTLE_ENDIAN
- select ADK_TARGET_CPU_ARM_CORTEX_A53
- select ADK_TARGET_BOARD_BCM28XX
- select ADK_TARGET_WITH_VGA
- select ADK_TARGET_WITH_SERIAL
- select ADK_TARGET_WITH_CPU_FREQ
- select ADK_TARGET_WITH_USB
- select ADK_TARGET_WITH_INPUT
- select ADK_TARGET_WITH_SD
- select ADK_TARGET_WITH_I2C
- select ADK_TARGET_WITH_SPI
- select ADK_TARGET_WITH_SMP
- select ADK_TARGET_WITH_NET
- select ADK_TARGET_WITH_NETDEVICE
- select ADK_TARGET_WITH_WIFI
- select ADK_TARGET_WITH_BLOCK
- select ADK_TARGET_WITH_SOUND
- select ADK_TARGET_WITH_SDIO
- select ADK_PACKAGE_BCM28XX_BOOTLOADER
- select ADK_TARGET_WITH_ROOT_RW
- select ADK_TARGET_KERNEL_IMAGE
- help
- Raspberry PI 3 Model B+
-
diff --git a/target/arm/systems/raspberry-pi4 b/target/arm/systems/raspberry-pi4
new file mode 100644
index 000000000..6f36bf036
--- /dev/null
+++ b/target/arm/systems/raspberry-pi4
@@ -0,0 +1,27 @@
+config ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ bool "Raspberry PI 4"
+ depends on ADK_TARGET_OS_LINUX
+ select ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_ARM_CORTEX_A72
+ select ADK_TARGET_BOARD_BCM28XX
+ select ADK_TARGET_WITH_VGA
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_CPU_FREQ
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_INPUT
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_I2C
+ select ADK_TARGET_WITH_SPI
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_WITH_WIFI
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SOUND
+ select ADK_TARGET_WITH_SDIO
+ select ADK_PACKAGE_BCM28XX_BOOTLOADER
+ select ADK_TARGET_WITH_ROOT_RW
+ select ADK_TARGET_KERNEL_IMAGE
+ help
+ Raspberry PI 4
+
diff --git a/target/arm/systems/st-stm32f746g b/target/arm/systems/st-stm32f746g
new file mode 100644
index 000000000..4b87b9340
--- /dev/null
+++ b/target/arm/systems/st-stm32f746g
@@ -0,0 +1,14 @@
+config ADK_TARGET_SYSTEM_ST_STM32F746G
+ bool "STMicroelectronics STM32F746G Disco"
+ depends on ADK_TARGET_OS_LINUX
+ select ADK_TARGET_LITTLE_ENDIAN
+ select ADK_TARGET_CPU_ARM_CORTEX_M7
+ select ADK_TARGET_ARCH_ARM_WITH_THUMB
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_UCLINUX
+ select ADK_TARGET_KERNEL_WITH_COMPRESSION
+ select ADK_TARGET_KERNEL_ZIMAGE
+ select ADK_HOST_BUILD_OPENOCD
+ help
+ STMicroelectronics STM32F746G Disco
+
diff --git a/target/arm/uclibc-ng-nommu.config b/target/arm/uclibc-ng-nommu.config
new file mode 100644
index 000000000..45db787b4
--- /dev/null
+++ b/target/arm/uclibc-ng-nommu.config
@@ -0,0 +1,234 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.45 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+TARGET_arm=y
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="arm"
+FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_ARM_EABI=y
+TARGET_SUBARCH=""
+UCLIBC_FORMAT_ELF=y
+# UCLIBC_FORMAT_FDPIC_ELF is not set
+# UCLIBC_FORMAT_FLAT is not set
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_HAS_DEPRECATED_SYSCALLS=y
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_MMU=y
+# ARCH_USE_MMU is not set
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+DOPIC=y
+STATIC_PIE=y
+ARCH_HAS_NO_SHARED=y
+ARCH_HAS_UCONTEXT=y
+HAVE_LDSO=y
+UCLIBC_CTOR_DTOR=y
+HAS_NO_THREADS=y
+# UCLIBC_HAS_LINUXTHREADS is not set
+# UCLIBC_HAS_THREADS_NATIVE is not set
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_HAS_CONTEXT_FUNCS=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+UCLIBC_HAS_BSD_B64_NTOP_B64_PTON=y
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/arm/uclibc-ng.config b/target/arm/uclibc-ng.config
index db5d508e4..1febdc74d 100644
--- a/target/arm/uclibc-ng.config
+++ b/target/arm/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.35 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -16,6 +16,7 @@ TARGET_arm=y
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -26,12 +27,15 @@ TARGET_arm=y
# TARGET_or1k is not set
# TARGET_powerpc is not set
# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -64,7 +68,9 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
ARCH_HAS_UCONTEXT=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -88,6 +94,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -117,6 +124,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -155,6 +163,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
diff --git a/target/avr32/Makefile b/target/avr32/Makefile
index 1f055993d..75ec3679a 100644
--- a/target/avr32/Makefile
+++ b/target/avr32/Makefile
@@ -11,6 +11,11 @@ KERNEL:=$(LINUX_DIR)/arch/avr32/boot/images/uImage
ifeq ($(ADK_TARGET_FS),archive)
targethelp:
@echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ @echo "Use following command to install it on SD card:"
+ @echo "sudo ./scripts/install.sh $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+ @echo "U-Boot commands:"
+ @echo "set bootargs 'console=ttyS0 root=/dev/mmcblk0p1 ro rootwait'"
+ @echo "ext2load mmc 0:1 0x10300000 /boot/kernel; bootm 0x10300000"
endif
ifeq ($(ADK_TARGET_FS),nfsroot)
targethelp:
diff --git a/target/avr32/patches/4.4.302/revert-futex.patch b/target/avr32/patches/4.4.302/revert-futex.patch
new file mode 100644
index 000000000..dd0e5c23a
--- /dev/null
+++ b/target/avr32/patches/4.4.302/revert-futex.patch
@@ -0,0 +1,22 @@
+diff -Nur linux-4.4.302.orig/kernel/futex.c linux-4.4.302/kernel/futex.c
+--- linux-4.4.302.orig/kernel/futex.c 2022-02-03 09:27:54.000000000 +0100
++++ linux-4.4.302/kernel/futex.c 2023-02-19 14:03:07.727035123 +0100
+@@ -1701,16 +1701,8 @@
+ int oldval, ret;
+
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) {
+- if (oparg < 0 || oparg > 31) {
+- char comm[sizeof(current->comm)];
+- /*
+- * kill this print and return -EINVAL when userspace
+- * is sane again
+- */
+- pr_info_ratelimited("futex_wake_op: %s tries to shift op by %d; fix this program\n",
+- get_task_comm(comm, current), oparg);
+- oparg &= 31;
+- }
++ if (oparg < 0 || oparg > 31)
++ return -EINVAL;
+ oparg = 1 << oparg;
+ }
+
diff --git a/target/avr32/systems/atmel-ngw100 b/target/avr32/systems/atmel-ngw100
index 3c5808d90..28f06acf9 100644
--- a/target/avr32/systems/atmel-ngw100
+++ b/target/avr32/systems/atmel-ngw100
@@ -6,6 +6,7 @@ config ADK_TARGET_SYSTEM_ATMEL_NGW100
select ADK_TARGET_WITH_NET
select ADK_TARGET_WITH_NETDEVICE
select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SD
select ADK_TARGET_KERNEL_UIMAGE
select ADK_TARGET_KERNEL_WITH_COMPRESSION
select ADK_HOST_BUILD_U_BOOT
diff --git a/target/bfin/Makefile b/target/bfin/Makefile
index 5db509c5c..084de21d1 100644
--- a/target/bfin/Makefile
+++ b/target/bfin/Makefile
@@ -27,7 +27,7 @@ targethelp:
@echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
ifeq ($(ADK_TARGET_SIM),y)
@echo "Run the simulator via:"
- @echo '$(TARGET_CROSS)run --env operating --model bf512 $(FW_DIR)/$(TARGET_KERNEL)'
+ @echo '$(TARGET_CROSS)run --environment operating --model bf512 $(FW_DIR)/$(TARGET_KERNEL)'
endif
endif
ifeq ($(ADK_TARGET_FS),nfsroot)
diff --git a/target/bfin/uclibc-ng.config b/target/bfin/uclibc-ng-nommu.config
index 24c45006a..24c45006a 100644
--- a/target/bfin/uclibc-ng.config
+++ b/target/bfin/uclibc-ng-nommu.config
diff --git a/target/c6x/uclibc-ng-nommu.config b/target/c6x/uclibc-ng-nommu.config
new file mode 100644
index 000000000..a304217ab
--- /dev/null
+++ b/target/c6x/uclibc-ng-nommu.config
@@ -0,0 +1,254 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.45 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+TARGET_c6x=y
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="c6x"
+FORCE_OPTIONS_FOR_ARCH=y
+CONFIG_GENERIC_C6X=y
+# CONFIG_TMS320C64X is not set
+# CONFIG_TMS320C64XPLUS is not set
+TARGET_SUBARCH=""
+UCLIBC_FORMAT_DSBT_ELF=y
+# UCLIBC_FORMAT_FLAT is not set
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_NO_MMU=y
+
+#
+# Target CPU lacks a memory management unit (MMU)
+#
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+DOPIC=y
+HAVE_LDSO=y
+HAVE_SHARED=y
+FORCE_SHAREABLE_TEXT_SEGMENTS=y
+LDSO_LDD_SUPPORT=y
+LDSO_CACHE_SUPPORT=y
+# LDSO_PRELOAD_ENV_SUPPORT is not set
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_BASE_FILENAME="ld.so"
+# LDSO_STANDALONE_SUPPORT is not set
+# LDSO_PRELINK_SUPPORT is not set
+# UCLIBC_STATIC_LDCONFIG is not set
+LDSO_RUNPATH=y
+LDSO_RUNPATH_OF_EXECUTABLE=y
+LDSO_SAFE_RUNPATH=y
+LDSO_SEARCH_INTERP_PATH=y
+LDSO_LD_LIBRARY_PATH=y
+UCLIBC_CTOR_DTOR=y
+# LDSO_GNU_HASH_SUPPORT is not set
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_LINUXTHREADS=y
+UCLIBC_HAS_THREADS=y
+PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+# UCLIBC_BUILD_RELRO is not set
+# UCLIBC_BUILD_NOW is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+# UCLIBC_HAS_BACKTRACE is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/c6x/uclibc-ng.config b/target/c6x/uclibc-ng.config
deleted file mode 100644
index d076edcf2..000000000
--- a/target/c6x/uclibc-ng.config
+++ /dev/null
@@ -1,243 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
-#
-# TARGET_aarch64 is not set
-# TARGET_alpha is not set
-# TARGET_arc is not set
-# TARGET_arm is not set
-# TARGET_avr32 is not set
-# TARGET_bfin is not set
-TARGET_c6x=y
-# TARGET_cris is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-# TARGET_i386 is not set
-# TARGET_ia64 is not set
-# TARGET_lm32 is not set
-# TARGET_m68k is not set
-# TARGET_metag is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nds32 is not set
-# TARGET_nios2 is not set
-# TARGET_or1k is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sparc is not set
-# TARGET_sparc64 is not set
-# TARGET_x86_64 is not set
-# TARGET_xtensa is not set
-
-#
-# Target Architecture Features and Options
-#
-TARGET_ARCH="c6x"
-FORCE_OPTIONS_FOR_ARCH=y
-CONFIG_GENERIC_C6X=y
-# CONFIG_TMS320C64X is not set
-# CONFIG_TMS320C64XPLUS is not set
-TARGET_SUBARCH=""
-UCLIBC_FORMAT_DSBT_ELF=y
-# UCLIBC_FORMAT_FLAT is not set
-# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
-# UCLIBC_FORMAT_SHARED_FLAT is not set
-ARCH_ANY_ENDIAN=y
-ARCH_LITTLE_ENDIAN=y
-# ARCH_WANTS_BIG_ENDIAN is not set
-ARCH_WANTS_LITTLE_ENDIAN=y
-ARCH_HAS_NO_MMU=y
-
-#
-# Target CPU lacks a memory management unit (MMU)
-#
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FPU=y
-DO_C99_MATH=y
-DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
-KERNEL_HEADERS=""
-UCLIBC_UCLINUX_BROKEN_MUNMAP=y
-HAVE_DOT_CONFIG=y
-
-#
-# General Library Settings
-#
-DOPIC=y
-HAVE_SHARED=y
-FORCE_SHAREABLE_TEXT_SEGMENTS=y
-LDSO_LDD_SUPPORT=y
-LDSO_CACHE_SUPPORT=y
-# LDSO_PRELOAD_ENV_SUPPORT is not set
-# LDSO_PRELOAD_FILE_SUPPORT is not set
-LDSO_BASE_FILENAME="ld.so"
-# LDSO_STANDALONE_SUPPORT is not set
-# LDSO_PRELINK_SUPPORT is not set
-# UCLIBC_STATIC_LDCONFIG is not set
-LDSO_RUNPATH=y
-LDSO_RUNPATH_OF_EXECUTABLE=y
-LDSO_SAFE_RUNPATH=y
-LDSO_SEARCH_INTERP_PATH=y
-LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
-UCLIBC_CTOR_DTOR=y
-# LDSO_GNU_HASH_SUPPORT is not set
-# HAS_NO_THREADS is not set
-UCLIBC_HAS_LINUXTHREADS=y
-UCLIBC_HAS_THREADS=y
-PTHREADS_DEBUG_SUPPORT=y
-UCLIBC_HAS_SYSLOG=y
-UCLIBC_HAS_LFS=y
-MALLOC=y
-# MALLOC_SIMPLE is not set
-UCLIBC_DYNAMIC_ATEXIT=y
-UCLIBC_HAS_UTMPX=y
-UCLIBC_HAS_UTMP=y
-UCLIBC_SUSV2_LEGACY=y
-UCLIBC_SUSV3_LEGACY=y
-# UCLIBC_SUSV3_LEGACY_MACROS is not set
-UCLIBC_SUSV4_LEGACY=y
-# UCLIBC_STRICT_HEADERS is not set
-# UCLIBC_HAS_STUBS is not set
-UCLIBC_HAS_SHADOW=y
-UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
-UCLIBC_HAS___PROGNAME=y
-UCLIBC_HAS_PTY=y
-ASSUME_DEVPTS=y
-UNIX98PTY_ONLY=y
-UCLIBC_HAS_GETPT=y
-UCLIBC_HAS_LIBUTIL=y
-UCLIBC_HAS_TM_EXTENSIONS=y
-UCLIBC_HAS_TZ_CACHING=y
-UCLIBC_HAS_TZ_FILE=y
-UCLIBC_HAS_TZ_FILE_READ_MANY=y
-UCLIBC_TZ_FILE_PATH="/etc/TZ"
-UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
-
-#
-# Advanced Library Settings
-#
-UCLIBC_PWD_BUFFER_SIZE=256
-UCLIBC_GRP_BUFFER_SIZE=256
-
-#
-# Support various families of functions
-#
-UCLIBC_LINUX_SPECIFIC=y
-UCLIBC_HAS_GNU_ERROR=y
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_HAS_BSD_ERR=y
-UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
-# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
-# UCLIBC_NTP_LEGACY is not set
-UCLIBC_SV4_DEPRECATED=y
-UCLIBC_HAS_REALTIME=y
-UCLIBC_HAS_ADVANCED_REALTIME=y
-UCLIBC_HAS_EPOLL=y
-UCLIBC_HAS_XATTR=y
-# UCLIBC_HAS_PROFILING is not set
-UCLIBC_HAS_CRYPT_IMPL=y
-UCLIBC_HAS_SHA256_CRYPT_IMPL=y
-UCLIBC_HAS_SHA512_CRYPT_IMPL=y
-UCLIBC_HAS_CRYPT=y
-UCLIBC_HAS_NETWORK_SUPPORT=y
-UCLIBC_HAS_SOCKET=y
-UCLIBC_HAS_IPV4=y
-UCLIBC_HAS_IPV6=y
-UCLIBC_USE_NETLINK=y
-UCLIBC_SUPPORT_AI_ADDRCONFIG=y
-UCLIBC_HAS_BSD_RES_CLOSE=y
-UCLIBC_HAS_COMPAT_RES_STATE=y
-# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
-UCLIBC_HAS_RESOLVER_SUPPORT=y
-
-#
-# String and Stdio Support
-#
-UCLIBC_HAS_STRING_GENERIC_OPT=y
-UCLIBC_HAS_STRING_ARCH_OPT=y
-UCLIBC_HAS_CTYPE_TABLES=y
-UCLIBC_HAS_CTYPE_SIGNED=y
-# UCLIBC_HAS_CTYPE_UNSAFE is not set
-UCLIBC_HAS_CTYPE_CHECKED=y
-# UCLIBC_HAS_CTYPE_ENFORCED is not set
-UCLIBC_HAS_WCHAR=y
-# UCLIBC_HAS_LIBICONV is not set
-# UCLIBC_HAS_LIBINTL is not set
-# UCLIBC_HAS_LOCALE is not set
-UCLIBC_HAS_HEXADECIMAL_FLOATS=y
-UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
-UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
-# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-UCLIBC_HAS_STDIO_BUFSIZ_4096=y
-# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
-UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
-# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
-UCLIBC_HAS_STDIO_GETC_MACRO=y
-UCLIBC_HAS_STDIO_PUTC_MACRO=y
-UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
-# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
-UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
-UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
-UCLIBC_HAS_PRINTF_M_SPEC=y
-UCLIBC_HAS_ERRNO_MESSAGES=y
-# UCLIBC_HAS_SYS_ERRLIST is not set
-UCLIBC_HAS_SIGNUM_MESSAGES=y
-# UCLIBC_HAS_SYS_SIGLIST is not set
-UCLIBC_HAS_GNU_GETOPT=y
-UCLIBC_HAS_GETOPT_LONG=y
-UCLIBC_HAS_GNU_GETSUBOPT=y
-UCLIBC_HAS_ARGP=y
-
-#
-# Big and Tall
-#
-UCLIBC_HAS_REGEX=y
-UCLIBC_HAS_FNMATCH=y
-UCLIBC_HAS_WORDEXP=y
-UCLIBC_HAS_NFTW=y
-UCLIBC_HAS_FTW=y
-UCLIBC_HAS_FTS=y
-UCLIBC_HAS_GLOB=y
-UCLIBC_HAS_GNU_GLOB=y
-
-#
-# Library Installation Options
-#
-RUNTIME_PREFIX="/"
-DEVEL_PREFIX="/usr/"
-MULTILIB_DIR="lib"
-HARDWIRED_ABSPATH=y
-
-#
-# Security options
-#
-# UCLIBC_HAS_ARC4RANDOM is not set
-# UCLIBC_HAS_SSP is not set
-# UCLIBC_BUILD_RELRO is not set
-# UCLIBC_BUILD_NOW is not set
-UCLIBC_BUILD_NOEXECSTACK=y
-
-#
-# Development/debugging options
-#
-CROSS_COMPILER_PREFIX=""
-UCLIBC_EXTRA_CFLAGS=""
-# DODEBUG is not set
-# DODEBUG_PT is not set
-# DOSTRIP is not set
-# DOASSERTS is not set
-# SUPPORT_LD_DEBUG is not set
-# SUPPORT_LD_DEBUG_EARLY is not set
-# UCLIBC_MALLOC_DEBUGGING is not set
-# UCLIBC_HAS_BACKTRACE is not set
-WARNINGS="-Wall"
-# EXTRA_WARNINGS is not set
diff --git a/target/config/Config.in b/target/config/Config.in
index bb0cd73c4..77fc1022f 100644
--- a/target/config/Config.in
+++ b/target/config/Config.in
@@ -25,12 +25,6 @@ config ADK_TARGET_QEMU
select ADK_TARGET_WITH_NET
select ADK_TARGET_WITH_NETDEVICE
-config ADK_TARGET_VBOX
- bool
- select ADK_TARGET_WITH_VGA
- select ADK_TARGET_WITH_NET
- select ADK_TARGET_WITH_NETDEVICE
-
# the inverse of ADK_TARGET_KERNEL_CUSTOMISING,
# allows for selecting it off (i.e., to disable it)
config ADK_TARGET_FIXED_KERNEL
diff --git a/target/config/Config.in.abi b/target/config/Config.in.abi
index 14a2dcc63..9995ba51d 100644
--- a/target/config/Config.in.abi
+++ b/target/config/Config.in.abi
@@ -82,25 +82,16 @@ config ADK_TARGET_ABI_MIPS64
config ADK_TARGET_LIBC_PATH
string
- default "lib32" if ADK_TARGET_ABI_N32
+ default "lib32" if ADK_TARGET_ABI_N32 || ADK_TARGET_ARCH_RISC32
default "libx32" if ADK_TARGET_ABI_X32
default "lib64" if ADK_TARGET_ABI_64 || ADK_TARGET_ABI_N64 \
|| ADK_TARGET_ARCH_AARCH64 \
|| ADK_TARGET_ARCH_SPARC64 \
|| ADK_TARGET_ARCH_PPC64 \
+ || ADK_TARGET_ARCH_RISC64 \
|| ADK_TARGET_ARCH_X86_64
default "lib"
-config ADK_TARGET_LIBC_ABI_PATH
- string
- default "lib/lp64" if ADK_TARGET_ABI_LP64
- default "lib/lp64f" if ADK_TARGET_ABI_LP64F
- default "lib/lp64d" if ADK_TARGET_ABI_LP64D
- default "lib/ilp32" if ADK_TARGET_ABI_ILP32
- default "lib/ilp32f" if ADK_TARGET_ABI_ILP32F
- default "lib/ilp32d" if ADK_TARGET_ABI_ILP32D
- default "lib"
-
config ADK_TARGET_ABI_CFLAGS
string
default "-mabi=32" if ADK_TARGET_ABI_O32
diff --git a/target/config/Config.in.binfmt b/target/config/Config.in.binfmt
index 61414d98d..2c690724a 100644
--- a/target/config/Config.in.binfmt
+++ b/target/config/Config.in.binfmt
@@ -7,7 +7,9 @@ depends on ADK_TARGET_OS_LINUX && !ADK_TARGET_CHOOSE_ARCH
config ADK_TARGET_BINFMT_ELF
bool "ELF"
- depends on ADK_TARGET_WITH_MMU
+ select ADK_TARGET_USE_STATIC_LIBS_ONLY if !ADK_TARGET_WITH_MMU
+ depends on ADK_TARGET_WITH_MMU || ADK_TARGET_ARCH_ARM || \
+ ADK_TARGET_ARCH_M68K || ADK_TARGET_ARCH_RISCV32 || ADK_TARGET_ARCH_RISCV64
config ADK_TARGET_BINFMT_FLAT
bool "FLAT"
@@ -16,12 +18,14 @@ config ADK_TARGET_BINFMT_FLAT
depends on ADK_TARGET_LIB_UCLIBC_NG
depends on !ADK_TARGET_WITH_MMU
depends on ADK_TARGET_ARCH_ARM || ADK_TARGET_ARCH_M68K || ADK_TARGET_ARCH_SH || ADK_TARGET_ARCH_XTENSA \
- || ADK_TARGET_ARCH_H8300 || ADK_TARGET_ARCH_LM32 || ADK_TARGET_ARCH_BFIN
+ || ADK_TARGET_ARCH_H8300 || ADK_TARGET_ARCH_LM32 || ADK_TARGET_ARCH_BFIN || ADK_TARGET_ARCH_RISCV64 \
+ || ADK_TARGET_ARCH_RISCV32
config ADK_TARGET_BINFMT_FDPIC
bool "FDPIC"
select BUSYBOX_NOMMU
depends on ADK_TARGET_ARCH_ARM || ADK_TARGET_ARCH_BFIN || ADK_TARGET_ARCH_FRV || ADK_TARGET_ARCH_SH
+ depends on !ADK_TARGET_WITH_MMU
config ADK_TARGET_BINFMT_DSBT
bool "DSBT"
@@ -49,16 +53,14 @@ config ADK_TARGET_BINFMT_FLAT_SEP_DATA
Allow for the data and text segments to be separated and placed in
different regions of memory.
-config ADK_TARGET_BINFMT_FLAT_SHARED
- bool "Shared binary"
- help
- Allow to load and link indiviual FLAT binaries at run time.
-
endchoice
+source "target/config/Config.in.elf2flt"
+
config ADK_TARGET_BINFMT
string
- depends on ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_WITH_MMU
+ default "elf" if ADK_TARGET_BINFMT_ELF
default "flat" if ADK_TARGET_BINFMT_FLAT
default "fdpic" if ADK_TARGET_BINFMT_FDPIC
diff --git a/target/config/Config.in.binutils b/target/config/Config.in.binutils
index d6b2f225f..b93eaf31d 100644
--- a/target/config/Config.in.binutils
+++ b/target/config/Config.in.binutils
@@ -3,43 +3,56 @@
choice
prompt "Binutils version"
-default ADK_TOOLCHAIN_BINUTILS_ARC if ADK_TARGET_ARCH_ARC
+default ADK_TOOLCHAIN_BINUTILS_ARC if ADK_TARGET_CPU_ARC_ARC32
+default ADK_TOOLCHAIN_BINUTILS_ARC if ADK_TARGET_CPU_ARC_ARC64
default ADK_TOOLCHAIN_BINUTILS_AVR32 if ADK_TARGET_ARCH_AVR32
default ADK_TOOLCHAIN_BINUTILS_KVX if ADK_TARGET_ARCH_KVX
-default ADK_TOOLCHAIN_BINUTILS_NDS32 if ADK_TARGET_ARCH_NDS32
-default ADK_TOOLCHAIN_BINUTILS_2_28 if ADK_TARGET_CPU_SH_J2
-default ADK_TOOLCHAIN_BINUTILS_2_37
+default ADK_TOOLCHAIN_BINUTILS_2_38 if ADK_TARGET_ARCH_NDS32
+default ADK_TOOLCHAIN_BINUTILS_2_42
config ADK_TOOLCHAIN_BINUTILS_GIT
bool "git"
depends on !ADK_TARGET_ARCH_AVR32
+
+config ADK_TOOLCHAIN_BINUTILS_2_42
+ bool "2.42"
+ depends on !ADK_TARGET_ARCH_AVR32
+
+config ADK_TOOLCHAIN_BINUTILS_2_41
+ bool "2.41"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_KVX
+
+config ADK_TOOLCHAIN_BINUTILS_2_40
+ bool "2.40"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_KVX
+
+config ADK_TOOLCHAIN_BINUTILS_2_39
+ bool "2.39"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_KVX
+
+config ADK_TOOLCHAIN_BINUTILS_2_38
+ bool "2.38"
+ depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_KVX
- depends on !ADK_TARGET_ARCH_NDS32
config ADK_TOOLCHAIN_BINUTILS_2_37
bool "2.37"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_KVX
- depends on !ADK_TARGET_ARCH_NDS32
-
-config ADK_TOOLCHAIN_BINUTILS_2_28
- bool "2.28"
- depends on ADK_TARGET_CPU_SH_J2
config ADK_TOOLCHAIN_BINUTILS_ARC
- bool "arc-2020.09"
+ bool "arc-2023.09"
depends on ADK_TARGET_ARCH_ARC
-config ADK_TOOLCHAIN_BINUTILS_KVX
- bool "kvx-coolidge"
- depends on ADK_TARGET_ARCH_KVX
-
-config ADK_TOOLCHAIN_BINUTILS_NDS32
- bool "nds32-2.30-open"
- depends on ADK_TARGET_ARCH_NDS32
-
config ADK_TOOLCHAIN_BINUTILS_AVR32
bool "2.20.1-avr32"
depends on ADK_TARGET_ARCH_AVR32
+config ADK_TOOLCHAIN_BINUTILS_KVX
+ bool "kvx-coolidge"
+ depends on ADK_TARGET_ARCH_KVX
+
endchoice
diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler
index e201505ed..2012acc4f 100644
--- a/target/config/Config.in.compiler
+++ b/target/config/Config.in.compiler
@@ -12,17 +12,18 @@ endchoice
choice
prompt "GCC version"
depends on ADK_BUILD_COMPILER_GCC
-default ADK_TOOLCHAIN_GCC_ARC if ADK_TARGET_ARCH_ARC
+default ADK_TOOLCHAIN_GCC_ARC if ADK_TARGET_CPU_ARC_ARC32
+default ADK_TOOLCHAIN_GCC_ARC if ADK_TARGET_CPU_ARC_ARC64
default ADK_TOOLCHAIN_GCC_AVR32 if ADK_TARGET_ARCH_AVR32
default ADK_TOOLCHAIN_GCC_KVX if ADK_TARGET_ARCH_KVX
default ADK_TOOLCHAIN_GCC_LM32 if ADK_TARGET_ARCH_LM32
default ADK_TOOLCHAIN_GCC_METAG if ADK_TARGET_ARCH_METAG
-default ADK_TOOLCHAIN_GCC_NDS32 if ADK_TARGET_ARCH_NDS32
-default ADK_TOOLCHAIN_GCC_7 if ADK_TARGET_CPU_ARM_ARM11MPCORE
-default ADK_TOOLCHAIN_GCC_7 if ADK_TARGET_CPU_ARM_CORTEX_A53
-default ADK_TOOLCHAIN_GCC_9 if ADK_TARGET_ARCH_MICROBLAZE
+default ADK_TOOLCHAIN_GCC_7 if ADK_TARGET_ARCH_C6X # ICE with newer GCC
default ADK_TOOLCHAIN_GCC_9 if ADK_TARGET_ARCH_BFIN && ADK_TARGET_BINFMT_FDPIC
-default ADK_TOOLCHAIN_GCC_10
+default ADK_TOOLCHAIN_GCC_10 if ADK_TARGET_ARCH_CRIS # no longer supported
+default ADK_TOOLCHAIN_GCC_10 if ADK_TARGET_CPU_SH_J2 # j2.patch
+default ADK_TOOLCHAIN_GCC_11 if ADK_TARGET_ARCH_SPARC # bus error without patch
+default ADK_TOOLCHAIN_GCC_13
config ADK_TOOLCHAIN_GCC_GIT
bool "git"
@@ -30,39 +31,57 @@ config ADK_TOOLCHAIN_GCC_GIT
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
+config ADK_TOOLCHAIN_GCC_13
+ bool "13.2.0"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_SPARC
+
+config ADK_TOOLCHAIN_GCC_12
+ bool "12.3.0"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_LOONGARCH
+ depends on !ADK_TARGET_ARCH_SPARC
+
config ADK_TOOLCHAIN_GCC_11
- bool "11.2.0"
+ bool "11.4.0"
depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_C6X
depends on !ADK_TARGET_ARCH_METAG
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_10
- bool "10.3.0"
+ bool "10.5.0"
depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_C6X
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_9
- bool "9.4.0"
+ bool "9.5.0"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_C6X
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
- depends on !ADK_TARGET_CPU_ARM_ARM11MPCORE
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_8
bool "8.5.0"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_C6X
depends on !ADK_TARGET_ARCH_CSKY
depends on !ADK_TARGET_ARCH_HPPA
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_OR1K
- depends on !ADK_TARGET_CPU_ARM_ARM11MPCORE
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_7
bool "7.5.0"
@@ -73,15 +92,20 @@ config ADK_TOOLCHAIN_GCC_7
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_OR1K
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_ARC
- bool "arc-2020.09"
+ bool "arc-2023.09"
depends on ADK_TARGET_ARCH_ARC
config ADK_TOOLCHAIN_GCC_AVR32
bool "4.4.7-avr32"
depends on ADK_TARGET_ARCH_AVR32
+config ADK_TOOLCHAIN_GCC_LM32
+ bool "4.5.4-lm32"
+ depends on ADK_TARGET_ARCH_LM32
+
config ADK_TOOLCHAIN_GCC_METAG
bool "4.2.4-metag"
depends on ADK_TARGET_ARCH_METAG
@@ -90,12 +114,4 @@ config ADK_TOOLCHAIN_GCC_KVX
bool "coolidge"
depends on ADK_TARGET_ARCH_KVX
-config ADK_TOOLCHAIN_GCC_LM32
- bool "4.5.4-lm32"
- depends on ADK_TARGET_ARCH_LM32
-
-config ADK_TOOLCHAIN_GCC_NDS32
- bool "nds32-6.3.0-open"
- depends on ADK_TARGET_ARCH_NDS32
-
endchoice
diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu
index da8a57a7c..c06eca95b 100644
--- a/target/config/Config.in.cpu
+++ b/target/config/Config.in.cpu
@@ -21,6 +21,26 @@ config ADK_TARGET_CPU_AARCH64_CORTEX_A57
select ADK_TARGET_WITH_MMU
depends on ADK_TARGET_ARCH_AARCH64
+config ADK_TARGET_CPU_AARCH64_CORTEX_A72
+ bool "cortex-a72"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_CPU_WITH_FPU_VFPV4
+ select ADK_TARGET_CPU_WITH_NEON
+ select ADK_TARGET_CPU_WITH_THUMB2
+ depends on ADK_TARGET_ARCH_AARCH64
+
+config ADK_TARGET_CPU_AARCH64_CORTEX_A76
+ bool "cortex-a76"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_CPU_WITH_FPU_VFPV4
+ select ADK_TARGET_CPU_WITH_NEON
+ select ADK_TARGET_CPU_WITH_THUMB2
+ depends on ADK_TARGET_ARCH_AARCH64
+
# alpha
config ADK_TARGET_CPU_ALPHA_EV4
bool "ev4"
@@ -68,11 +88,29 @@ config ADK_TARGET_CPU_ARC_ARC700
depends on ADK_TARGET_ARCH_ARC
config ADK_TARGET_CPU_ARC_ARCHS
- bool "ARC HS (ARCv2)"
+ bool "ARC HS38 (ARCv2)"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_WITH_MMU
+ depends on ADK_TARGET_ARCH_ARC
+
+config ADK_TARGET_CPU_ARC_ARC32
+ bool "ARC HS58 (ARCv3) 32 Bit"
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_KERNEL_LOADER
+ depends on ADK_TARGET_ARCH_ARC
+
+config ADK_TARGET_CPU_ARC_ARC64
+ bool "ARC HS68 (ARCv3) 64 Bit"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_KERNEL_LOADER
depends on ADK_TARGET_ARCH_ARC
# arm
@@ -90,6 +128,7 @@ config ADK_TARGET_CPU_ARM_ARM926EJ_S
select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_CPU_WITH_THUMB
+ select ADK_TARGET_CPU_WITH_FPU_VFP
depends on ADK_TARGET_ARCH_ARM
config ADK_TARGET_CPU_ARM_ARM11MPCORE
@@ -178,8 +217,19 @@ config ADK_TARGET_CPU_ARM_CORTEX_A57
select ADK_TARGET_CPU_WITH_THUMB2
depends on ADK_TARGET_ARCH_ARM
+config ADK_TARGET_CPU_ARM_CORTEX_A72
+ bool "cortex-a72"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_CPU_WITH_FPU_VFPV4
+ select ADK_TARGET_CPU_WITH_NEON
+ select ADK_TARGET_CPU_WITH_THUMB2
+ depends on ADK_TARGET_ARCH_ARM
+
config ADK_TARGET_CPU_ARM_CORTEX_M7
bool "cortex-m7"
+ select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_CPU_WITH_THUMB2
@@ -188,6 +238,7 @@ config ADK_TARGET_CPU_ARM_CORTEX_M7
config ADK_TARGET_CPU_ARM_CORTEX_M4
bool "cortex-m4"
+ select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_CPU_WITH_THUMB2
@@ -196,6 +247,7 @@ config ADK_TARGET_CPU_ARM_CORTEX_M4
config ADK_TARGET_CPU_ARM_CORTEX_M3
bool "cortex-m3"
+ select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_CPU_WITH_THUMB2
@@ -527,8 +579,17 @@ config ADK_TARGET_CPU_KVX
# lm32
config ADK_TARGET_CPU_LM32
bool "lm32"
+ select ADK_TARGET_UCLINUX
depends on ADK_TARGET_ARCH_LM32
+# loongarch
+config ADK_TARGET_CPU_LOONGARCH
+ bool "loongarch64"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_WITH_MMU
+ depends on ADK_TARGET_ARCH_LOONGARCH
+
# coldfire
config ADK_TARGET_CPU_CF_51
bool "coldfire 51"
@@ -558,8 +619,8 @@ config ADK_TARGET_CPU_CF_5208
bool "coldfire 5208"
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_CPU_CF
- select ADK_TARGET_UCLINUX
depends on ADK_TARGET_ARCH_M68K
config ADK_TARGET_CPU_CF_5211A
@@ -951,10 +1012,10 @@ config ADK_TARGET_CPU_NDS32
# nios2
config ADK_TARGET_CPU_NIOS2
bool "nios2"
- select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_LT
- select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_SUPPORTS_THREADS if ADK_TARGET_LIB_GLIBC
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_LIB_GLIBC
select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_USE_STATIC_LIBS_ONLY if ADK_TARGET_LIB_UCLIBC_NG
depends on ADK_TARGET_ARCH_NIOS2
# openrisc
@@ -1113,51 +1174,80 @@ config ADK_TARGET_CPU_PPC64_POWERPC64
config ADK_TARGET_CPU_RISCV32_RV32IMAC
bool "rv32imac"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_NPTL
- select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_ABI_ILP32
+ depends on ADK_TARGET_ARCH_RISCV32
+
+config ADK_TARGET_CPU_RISCV32_RV32IMA
+ bool "rv32ima"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_ABI_ILP32
depends on ADK_TARGET_ARCH_RISCV32
config ADK_TARGET_CPU_RISCV32_RV32IMAFC
bool "rv32imafc"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_NPTL
- select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_ABI_ILP32F
depends on ADK_TARGET_ARCH_RISCV32
config ADK_TARGET_CPU_RISCV32_RV32IMADC
bool "rv32imadc"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_NPTL
- select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_ABI_ILP32D
depends on ADK_TARGET_ARCH_RISCV32
+config ADK_TARGET_CPU_RISCV32_RV32IMAFDC
+ bool "rv32imafdc"
+ select ADK_TARGET_SUPPORTS_THREADS if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT if ADK_TARGET_WITH_MMU
+ depends on ADK_TARGET_ARCH_RISCV32
+
config ADK_TARGET_CPU_RISCV64_RV64IMAC
bool "rv64imac"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_NPTL
- select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_ABI_LP64
+ depends on ADK_TARGET_ARCH_RISCV64
+
+config ADK_TARGET_CPU_RISCV64_RV64IMA
+ bool "rv64ima"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_ABI_LP64
depends on ADK_TARGET_ARCH_RISCV64
config ADK_TARGET_CPU_RISCV64_RV64IMAFC
bool "rv64imafc"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_NPTL
- select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_ABI_LP64F
depends on ADK_TARGET_ARCH_RISCV64
config ADK_TARGET_CPU_RISCV64_RV64IMADC
bool "rv64imadc"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_NPTL
- select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_ABI_LP64D
depends on ADK_TARGET_ARCH_RISCV64
+config ADK_TARGET_CPU_RISCV64_RV64IMAFDC
+ bool "rv64imafdc"
+ select ADK_TARGET_SUPPORTS_THREADS if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_WITH_MMU
+ select ADK_TARGET_SUPPORTS_LT if ADK_TARGET_WITH_MMU
+ depends on ADK_TARGET_ARCH_RISCV64
# rx
config ADK_TARGET_CPU_RX
@@ -1900,6 +1990,7 @@ config ADK_TARGET_GCC_CPU
default "68060" if ADK_TARGET_CPU_M68K_68060
default "arc700" if ADK_TARGET_CPU_ARC_ARC700
default "archs" if ADK_TARGET_CPU_ARC_ARCHS
+ default "hs5x" if ADK_TARGET_CPU_ARC_ARC32
default "arm1176jzf-s" if ADK_TARGET_CPU_ARM_ARM1176JZF_S
default "arm926ej-s" if ADK_TARGET_CPU_ARM_ARM926EJ_S
default "cortex-a5" if ADK_TARGET_CPU_ARM_CORTEX_A5
@@ -1912,6 +2003,7 @@ config ADK_TARGET_GCC_CPU
default "cortex-a57" if ADK_TARGET_CPU_ARM_CORTEX_A57
default "cortex-a53" if ADK_TARGET_CPU_AARCH64_CORTEX_A53
default "cortex-a57" if ADK_TARGET_CPU_AARCH64_CORTEX_A57
+ default "cortex-a76" if ADK_TARGET_CPU_AARCH64_CORTEX_A76
default "cortex-m0" if ADK_TARGET_CPU_ARM_CORTEX_M0
default "cortex-m3" if ADK_TARGET_CPU_ARM_CORTEX_M3
default "cortex-m4" if ADK_TARGET_CPU_ARM_CORTEX_M4
@@ -1998,10 +2090,17 @@ config ADK_TARGET_GCC_ARCH
default "x86-64" if ADK_TARGET_CPU_X86_64
default "z900" if ADK_TARGET_CPU_S390_Z900
default "c674x" if ADK_TARGET_CPU_C6X
- default "rv32imafdc" if ADK_TARGET_CPU_RISCV32_RV32IMAFDC
+ default "rv32ima" if ADK_TARGET_CPU_RISCV32_RV32IMA
default "rv32imac" if ADK_TARGET_CPU_RISCV32_RV32IMAC
- default "rv64imafdc" if ADK_TARGET_CPU_RISCV64_RV64IMAFDC
+ default "rv32imafc" if ADK_TARGET_CPU_RISCV32_RV32IMAFC
+ default "rv32imadc" if ADK_TARGET_CPU_RISCV32_RV32IMADC
+ default "rv32imafdc" if ADK_TARGET_CPU_RISCV32_RV32IMAFDC
+ default "rv64ima" if ADK_TARGET_CPU_RISCV64_RV64IMA
default "rv64imac" if ADK_TARGET_CPU_RISCV64_RV64IMAC
+ default "rv64imafc" if ADK_TARGET_CPU_RISCV64_RV64IMAFC
+ default "rv64imadc" if ADK_TARGET_CPU_RISCV64_RV64IMADC
+ default "rv64imafdc" if ADK_TARGET_CPU_RISCV64_RV64IMAFDC
+ default "kv3-1" if ADK_TARGET_ARCH_KVX
# for CFLAGS/CXXFLAGS if gcc does not support --with-cpu
config ADK_TARGET_CPU_FLAGS
@@ -2169,6 +2268,8 @@ config ADK_TARGET_CPU_ARCH
default "alpha" if ADK_TARGET_ARCH_ALPHA
default "arm" if ADK_TARGET_ARCH_ARM && ADK_TARGET_LITTLE_ENDIAN
default "armeb" if ADK_TARGET_ARCH_ARM && ADK_TARGET_BIG_ENDIAN
+ default "arc32" if ADK_TARGET_ARCH_ARC && ADK_TARGET_CPU_ARC_ARC32
+ default "arc64" if ADK_TARGET_ARCH_ARC && ADK_TARGET_CPU_ARC_ARC64
default "arc" if ADK_TARGET_ARCH_ARC && ADK_TARGET_LITTLE_ENDIAN
default "arceb" if ADK_TARGET_ARCH_ARC && ADK_TARGET_BIG_ENDIAN
default "avr32" if ADK_TARGET_ARCH_AVR32
@@ -2192,6 +2293,7 @@ config ADK_TARGET_CPU_ARCH
default "ia64" if ADK_TARGET_ARCH_IA64
default "kvx" if ADK_TARGET_ARCH_KVX
default "lm32" if ADK_TARGET_ARCH_LM32
+ default "loongarch64" if ADK_TARGET_ARCH_LOONGARCH
default "m32c" if ADK_TARGET_ARCH_M32C
default "m32r" if ADK_TARGET_ARCH_M32R
default "m68k" if ADK_TARGET_ARCH_M68K
diff --git a/target/config/Config.in.elf2flt b/target/config/Config.in.elf2flt
new file mode 100644
index 000000000..d9bf282d4
--- /dev/null
+++ b/target/config/Config.in.elf2flt
@@ -0,0 +1,19 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+choice
+prompt "elf2flt version"
+default ADK_TOOLCHAIN_ELF2FLT_2024_02
+depends on ADK_TARGET_BINFMT_FLAT
+
+config ADK_TOOLCHAIN_ELF2FLT_2024_02
+ bool "2024.02"
+ depends on !ADK_TARGET_ARCH_LM32
+
+config ADK_TOOLCHAIN_ELF2FLT_OLD
+ bool "old version"
+ depends on ADK_TARGET_ARCH_BFIN || \
+ ADK_TARGET_ARCH_LM32 || \
+ ADK_TARGET_ARCH_SH
+
+endchoice
diff --git a/target/config/Config.in.endian b/target/config/Config.in.endian
index 2fb382ab9..ffb39584c 100644
--- a/target/config/Config.in.endian
+++ b/target/config/Config.in.endian
@@ -16,6 +16,7 @@ depends on ADK_TARGET_SYSTEM_GENERIC_ARC \
|| ADK_TARGET_SYSTEM_GENERIC_SH \
|| ADK_TARGET_SYSTEM_GENERIC_XTENSA \
|| ADK_TARGET_SYSTEM_SYNOPSYS_NSIM \
+ || ADK_TARGET_SYSTEM_QEMU_ARC \
|| ADK_TARGET_SYSTEM_QEMU_AARCH64 \
|| ADK_TARGET_SYSTEM_QEMU_CSKY \
|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605 \
diff --git a/target/config/Config.in.gdb b/target/config/Config.in.gdb
index 2bf0c8870..c86930a30 100644
--- a/target/config/Config.in.gdb
+++ b/target/config/Config.in.gdb
@@ -21,7 +21,7 @@ choice
prompt "GNU debugger version"
depends on ADK_TOOLCHAIN_WITH_GDB
default ADK_TOOLCHAIN_GDB_H8300_GIT if ADK_TARGET_ARCH_H8300
-default ADK_TOOLCHAIN_GDB_11_1
+default ADK_TOOLCHAIN_GDB_14_2
config ADK_TOOLCHAIN_GDB_GIT
bool "git"
@@ -33,8 +33,20 @@ config ADK_TOOLCHAIN_GDB_H8300_GIT
bool "h8300-git"
depends on ADK_TARGET_ARCH_H8300
-config ADK_TOOLCHAIN_GDB_11_1
- bool "11.1"
+config ADK_TOOLCHAIN_GDB_14_2
+ bool "14.2"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_H8300
+ depends on !ADK_TARGET_ARCH_NDS32
+
+config ADK_TOOLCHAIN_GDB_13_2
+ bool "13.2"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_H8300
+ depends on !ADK_TARGET_ARCH_NDS32
+
+config ADK_TOOLCHAIN_GDB_12_1
+ bool "12.1"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_NDS32
diff --git a/target/config/Config.in.kernelfmt b/target/config/Config.in.kernelfmt
index 2e43dc5dc..23d800d24 100644
--- a/target/config/Config.in.kernelfmt
+++ b/target/config/Config.in.kernelfmt
@@ -31,6 +31,9 @@ config ADK_TARGET_KERNEL_VMLINUX_BIN
config ADK_TARGET_KERNEL_VMLINUX_BOOTP
bool
+config ADK_TARGET_KERNEL_VMLINUX_EFI
+ bool
+
config ADK_TARGET_KERNEL_VMLINUX_GZ
bool
@@ -43,8 +46,12 @@ config ADK_TARGET_KERNEL_XIPIMAGE
config ADK_TARGET_KERNEL_SIMPLEIMAGE
bool
+config ADK_TARGET_KERNEL_LOADER
+ bool
+
config ADK_TARGET_KERNEL
string
+ default "loader" if ADK_TARGET_KERNEL_LOADER
default "uImage" if ADK_TARGET_KERNEL_UIMAGE
default "uImage.bin" if ADK_TARGET_KERNEL_UIMAGEBIN
default "zImage" if ADK_TARGET_KERNEL_ZIMAGE
@@ -55,6 +62,7 @@ config ADK_TARGET_KERNEL
default "vmlinux.srec" if ADK_TARGET_KERNEL_VMLINUX_SREC
default "vmlinux.bin" if ADK_TARGET_KERNEL_VMLINUX_BIN
default "bootpfile" if ADK_TARGET_KERNEL_VMLINUX_BOOTP
+ default "vmlinux.efi" if ADK_TARGET_KERNEL_VMLINUX_EFI
default "vmlinux.gz" if ADK_TARGET_KERNEL_VMLINUX_GZ
default "xipImage" if ADK_TARGET_KERNEL_XIPIMAGE
default "bzImage" if ADK_TARGET_KERNEL_BZIMAGE
@@ -68,7 +76,9 @@ config ADK_TARGET_KERNEL_LOADADDR
hex
default 0x8000 if ADK_TARGET_SYSTEM_SYNOLOGY_DS414
default 0x40008000 if ADK_TARGET_SYSTEM_BANANA_PRO
+ default 0x44000000 if ADK_TARGET_SYSTEM_BANANA_P2_ZERO
default 0x40008000 if ADK_TARGET_SYSTEM_ORANGE_PI0
+ default 0xc0008000 if ADK_TARGET_SYSTEM_ST_STM32F746G
config ADK_TARGET_KERNEL_APPEND_DTB
string
diff --git a/target/config/Config.in.libc b/target/config/Config.in.libc
index 8a6be96fd..9b9bc146e 100644
--- a/target/config/Config.in.libc
+++ b/target/config/Config.in.libc
@@ -53,12 +53,14 @@ config ADK_TARGET_LIB_MUSL
ADK_TARGET_ARCH_AARCH64 || \
ADK_TARGET_ARCH_ARM || \
ADK_TARGET_ARCH_M68K || \
+ ADK_TARGET_ARCH_LOONGARCH || \
ADK_TARGET_ARCH_MICROBLAZE || \
ADK_TARGET_ARCH_MIPS || \
ADK_TARGET_ARCH_MIPS64 || \
ADK_TARGET_ARCH_OR1K || \
ADK_TARGET_ARCH_PPC || \
ADK_TARGET_ARCH_PPC64 || \
+ ADK_TARGET_ARCH_RISCV32 || \
ADK_TARGET_ARCH_RISCV64 || \
ADK_TARGET_ARCH_S390 || \
ADK_TARGET_ARCH_SH || \
@@ -78,18 +80,19 @@ config ADK_TARGET_LIB_GLIBC
ADK_TARGET_ARCH_CSKY || \
ADK_TARGET_ARCH_HPPA || \
ADK_TARGET_ARCH_IA64 || \
+ ADK_TARGET_ARCH_LOONGARCH || \
ADK_TARGET_ARCH_M68K || \
ADK_TARGET_ARCH_MICROBLAZE || \
ADK_TARGET_ARCH_MIPS || \
ADK_TARGET_ARCH_MIPS64 || \
ADK_TARGET_ARCH_NIOS2 || \
+ ADK_TARGET_ARCH_OR1K || \
ADK_TARGET_ARCH_PPC || \
ADK_TARGET_ARCH_PPC64 || \
ADK_TARGET_ARCH_S390 || \
ADK_TARGET_CPU_SH_SH4 || \
ADK_TARGET_CPU_SH_SH4A || \
ADK_TARGET_ARCH_SPARC64 || \
- ADK_TARGET_ARCH_TILE || \
ADK_TARGET_ARCH_RISCV32 || \
ADK_TARGET_ARCH_RISCV64 || \
ADK_TARGET_ARCH_X86 || \
@@ -105,6 +108,7 @@ config ADK_TARGET_LIB_NEWLIB
ADK_TARGET_ARCH_ARC || \
ADK_TARGET_ARCH_ARM || \
ADK_TARGET_ARCH_BFIN || \
+ ADK_TARGET_ARCH_C6X || \
ADK_TARGET_ARCH_CR16 || \
ADK_TARGET_ARCH_CRIS || \
ADK_TARGET_ARCH_CSKY || \
@@ -146,38 +150,33 @@ choice
prompt "Target C library version"
depends on !ADK_TARGET_CHOOSE_ARCH
-config ADK_TARGET_LIB_UCLIBC_NG_1_0_39
- bool "1.0.39"
+config ADK_TARGET_LIB_UCLIBC_NG_1_0_47
+ bool "1.0.47"
depends on ADK_TARGET_LIB_UCLIBC_NG
config ADK_TARGET_LIB_UCLIBC_NG_GIT
bool "git"
depends on ADK_TARGET_LIB_UCLIBC_NG && ADK_EXPERIMENTAL
-config ADK_TARGET_LIB_GLIBC_2_34
- bool "2.34"
+config ADK_TARGET_LIB_GLIBC_2_39
+ bool "2.39"
depends on ADK_TARGET_LIB_GLIBC
config ADK_TARGET_LIB_GLIBC_GIT
bool "git"
depends on ADK_TARGET_LIB_GLIBC && ADK_EXPERIMENTAL
-config ADK_TARGET_LIB_MUSL_1_2_2
- bool "1.2.2"
+config ADK_TARGET_LIB_MUSL_1_2_5
+ bool "1.2.5"
depends on ADK_TARGET_LIB_MUSL
config ADK_TARGET_LIB_MUSL_GIT
bool "git"
depends on ADK_TARGET_LIB_MUSL && ADK_EXPERIMENTAL
-config ADK_TARGET_LIB_NEWLIB_4_1_0
- bool "4.1.0"
- depends on ADK_TARGET_LIB_NEWLIB \
- && !ADK_TARGET_ARCH_XTENSA
-
-config ADK_TARGET_LIB_NEWLIB_XTENSA
- bool "xtensa"
- depends on ADK_TARGET_LIB_NEWLIB && ADK_TARGET_ARCH_XTENSA
+config ADK_TARGET_LIB_NEWLIB_4_4_0
+ bool "4.4.0"
+ depends on ADK_TARGET_LIB_NEWLIB
config ADK_TARGET_LIB_NEWLIB_GIT
bool "git"
@@ -201,10 +200,10 @@ config ADK_TARGET_LIBC
config ADK_LIBC_VERSION
string
- default "1.0.39" if ADK_TARGET_LIB_UCLIBC_NG_1_0_39
- default "1.2.2" if ADK_TARGET_LIB_MUSL_1_2_2
- default "2.34" if ADK_TARGET_LIB_GLIBC_2_34
- default "4.1.0" if ADK_TARGET_LIB_NEWLIB_4_1_0
+ default "1.0.47" if ADK_TARGET_LIB_UCLIBC_NG_1_0_47
+ default "1.2.5" if ADK_TARGET_LIB_MUSL_1_2_5
+ default "2.39" if ADK_TARGET_LIB_GLIBC_2_39
+ default "4.4.0" if ADK_TARGET_LIB_NEWLIB_4_4_0
default "git" if ADK_TARGET_LIB_UCLIBC_NG_GIT || \
ADK_TARGET_LIB_MUSL_GIT || \
ADK_TARGET_LIB_GLIBC_GIT || \
diff --git a/target/config/Config.in.libs b/target/config/Config.in.libs
index 2c58188ce..ba02fb8f9 100644
--- a/target/config/Config.in.libs
+++ b/target/config/Config.in.libs
@@ -11,7 +11,7 @@ config ADK_TARGET_USE_SHARED_LIBS_ONLY
config ADK_TARGET_USE_STATIC_LIBS_ONLY
bool "Create static libraries only and link statically"
- select BUSYBOX_STATIC
+ select BUSYBOX_STATIC if !ADK_TARGET_BINFMT_ELF
help
Useful for debugging of dynamic linker problems. Be aware of the fact, that uClibc and glibc
still requires libgcc_so.so.1 for pthread_cancel. Glibc also requires libnss_*.so libraries
diff --git a/target/config/Config.in.qemuopts b/target/config/Config.in.qemuopts
index f24af9a6b..78c608b49 100644
--- a/target/config/Config.in.qemuopts
+++ b/target/config/Config.in.qemuopts
@@ -41,6 +41,8 @@ depends on ADK_TARGET_QEMU && (ADK_TARGET_SYSTEM_QEMU_X86_64 \
|| ADK_TARGET_SYSTEM_QEMU_CSKY \
|| ADK_TARGET_SYSTEM_QEMU_X86 \
|| ADK_TARGET_SYSTEM_QEMU_AARCH64 \
+ || ADK_TARGET_SYSTEM_QEMU_ARC \
+ || ADK_TARGET_SYSTEM_QEMU_M68K_VIRT \
|| ADK_TARGET_SYSTEM_QEMU_SPARC64)
choice
@@ -94,15 +96,19 @@ choice
prompt "Qemu Emulation using VirtIO drivers"
depends on ADK_TARGET_SYSTEM_QEMU_SPARC64 || \
ADK_TARGET_SYSTEM_QEMU_AARCH64 || \
+ ADK_TARGET_SYSTEM_QEMU_ARC || \
+ ADK_TARGET_SYSTEM_QEMU_CSKY || \
+ ADK_TARGET_SYSTEM_QEMU_M68K_VIRT || \
ADK_TARGET_SYSTEM_QEMU_RISCV32 || \
ADK_TARGET_SYSTEM_QEMU_RISCV64 || \
- ADK_TARGET_SYSTEM_QEMU_CSKY || \
ADK_TARGET_SYSTEM_QEMU_X86 || \
ADK_TARGET_SYSTEM_QEMU_X86_64
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_AARCH64
+default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_ARC
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV32
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV64
+default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
config ADK_TARGET_QEMU_WITHOUT_VIRTIO
bool "disabled"
diff --git a/target/config/Config.in.rootfs b/target/config/Config.in.rootfs
index bc6a36115..5c658fd02 100644
--- a/target/config/Config.in.rootfs
+++ b/target/config/Config.in.rootfs
@@ -24,11 +24,12 @@ config ADK_TARGET_ROOTFS_INITRAMFSPIGGYBACK
ADK_TARGET_ARCH_MIPS || \
ADK_TARGET_ARCH_MIPS64 || \
ADK_TARGET_ARCH_PPC || \
+ ADK_TARGET_ARCH_RISCV32 || \
+ ADK_TARGET_ARCH_RISCV64 || \
ADK_TARGET_ARCH_SH || \
ADK_TARGET_ARCH_SPARC || \
ADK_TARGET_ARCH_X86 || \
ADK_TARGET_ARCH_X86_64
- depends on !ADK_TARGET_VBOX
depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532
help
create an read-only initramfs system.
@@ -49,7 +50,6 @@ config ADK_TARGET_ROOTFS_INITRAMFS
ADK_TARGET_ARCH_SPARC || \
ADK_TARGET_ARCH_X86 || \
ADK_TARGET_ARCH_X86_64
- depends on !ADK_TARGET_VBOX
depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB532
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_METAG
@@ -101,9 +101,9 @@ config ADK_TARGET_ROOTFS_NFSROOT
select ADK_LINUX_KERNEL_IP_PNP_DHCP if ADK_TARGET_OS_LINUX
depends on !ADK_TARGET_QEMU && \
!ADK_TARGET_SIM && \
- !ADK_TARGET_VBOX && \
!ADK_TARGET_SYSTEM_ARANYM_M68K && \
!ADK_TARGET_SYSTEM_LINKSYS_NSLU2
+ depends on ADK_TARGET_WITH_NETDEVICE
help
Root filesystem mounted via NFS. (DHCP)
@@ -111,7 +111,6 @@ config ADK_TARGET_ROOTFS_USB
bool "Boot from USB stick"
select ADK_LINUX_KERNEL_EXT4_FS if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_SCSI if ADK_TARGET_OS_LINUX
- select ADK_LINUX_KERNEL_SCSI if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_BLK_DEV_SD if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_USB if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_USB_EHCI_HCD if ADK_TARGET_OS_LINUX
@@ -148,7 +147,7 @@ config ADK_TARGET_ROOTFS_INITRAMFSARCHIVE
config ADK_TARGET_ROOTFS_ARCHIVE
bool "Archive usable for ext4 filesystems"
- select ADK_HOST_NEED_GENEXT2FS if ADK_TARGET_QEMU || ADK_TARGET_VBOX
+ select ADK_HOST_NEED_GENEXT2FS if ADK_TARGET_QEMU
select ADK_LINUX_KERNEL_EXT4_FS if ADK_TARGET_OS_LINUX
select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU
depends on !ADK_TARGET_SIM \
@@ -164,10 +163,10 @@ config ADK_TARGET_ROOTFS_GENIMAGE
bool "Create a disk image for the target"
select ADK_LINUX_KERNEL_EXT4_FS if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_VFAT_FS if ADK_TARGET_OS_LINUX
+ select ADK_LINUX_KERNEL_EFI_PARTITION if ADK_TARGET_OS_LINUX
select ADK_TARGET_QEMU_WITH_BLOCK if ADK_TARGET_QEMU
select ADK_TARGET_QEMU_WITH_BOOTLOADER if ADK_TARGET_QEMU
select ADK_HOST_BUILD_GENIMAGE
- depends on ADK_TARGET_ARCH_X86_64
help
Create a complete disk image for the target with genimage.
@@ -176,9 +175,10 @@ endchoice
config ADK_TARGET_ROOTDEV
string "Root device name"
depends on ADK_TARGET_ROOTFS_GENIMAGE
+ default "mmcblk0" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "sda"
help
- If you a embedded device with multiple block devices and want to
+ If you have a embedded device with multiple block devices and want to
set the root device name.
config ADK_TARGET_DUAL_BOOT
@@ -195,7 +195,11 @@ config ADK_TARGET_DUAL_BOOT
config ADK_TARGET_GENIMAGE_FILENAME
string
- default "genimage-efi-dual.cfg" if ADK_PACKAGE_GRUB_EFI_X86_64 || ADK_PACKAGE_GRUB_EFI_X86 && ADK_TARGET_DUAL_BOOT
+ default "genimage-efi-dual.cfg" if (ADK_PACKAGE_GRUB_EFI_X86_64 || ADK_PACKAGE_GRUB_EFI_X86) && ADK_TARGET_DUAL_BOOT
default "genimage-efi.cfg" if ADK_PACKAGE_GRUB_EFI_X86_64 || ADK_PACKAGE_GRUB_EFI_X86
default "genimage-dual.cfg" if ADK_TARGET_DUAL_BOOT
default "genimage.cfg"
+
+config ADK_TARGET_EXTLINUX_FILENAME
+ string
+ default "extlinux.conf"
diff --git a/target/config/Config.in.runtime b/target/config/Config.in.runtime
index c815d0788..2a09782cf 100644
--- a/target/config/Config.in.runtime
+++ b/target/config/Config.in.runtime
@@ -15,61 +15,46 @@ prompt "init system"
depends on !ADK_APPLIANCE_TOOLCHAIN
default ADK_RUNTIME_INIT_SYSV if ADK_PACKAGE_BUSYBOX
default ADK_RUNTIME_INIT_SIMPLEINIT if ADK_PACKAGE_TOOLBOX
+default ADK_RUNTIME_INIT_SIMPLEINIT if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
config ADK_RUNTIME_INIT_SYSV
bool "Use busybox init"
- depends on ADK_PACKAGE_BUSYBOX
+ depends on ADK_PACKAGE_BUSYBOX && \
+ !ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
config ADK_RUNTIME_INIT_SIMPLEINIT
bool "Use a very simple init"
select ADK_PACKAGE_SIMPLEINIT
-config ADK_RUNTIME_INIT_SYSTEMD
- bool "Use systemd init and supervision"
- select ADK_PACKAGE_SYSTEMD
- select ADK_PACKAGE_DBUS
- select ADK_PACKAGE_DBUS_WITH_SYSTEMD
- select ADK_TARGET_LIBC_WITH_LOCALE if ADK_TARGET_LIB_UCLIBC_NG
- select ADK_TARGET_LIBC_WITH_LIBINTL_STUB if ADK_TARGET_LIB_UCLIBC_NG
- depends on ADK_TARGET_LIB_GLIBC || ADK_TARGET_LIB_UCLIBC_NG
-
endchoice
choice
prompt "system for /dev management"
depends on !ADK_APPLIANCE_TOOLCHAIN
-default ADK_RUNTIME_DEV_STATIC if ADK_TARGET_ARCH_CRIS || !ADK_TARGET_WITH_MMU
-default ADK_RUNTIME_DEV_MDEV
+default ADK_RUNTIME_DEV_STATIC
+
+config ADK_RUNTIME_DEV_STATIC
+ bool "Use static /dev (devtmpfs)"
+ select ADK_LINUX_KERNEL_DEVTMPFS if ADK_TARGET_OS_LINUX
+ select ADK_LINUX_KERNEL_DEVTMPFS_MOUNT if ADK_TARGET_OS_LINUX
config ADK_RUNTIME_DEV_MDEV
- bool "Use mdev"
+ bool "Use dynamic /dev with mdev"
select ADK_LINUX_KERNEL_DEVTMPFS if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_DEVTMPFS_MOUNT if ADK_TARGET_OS_LINUX
depends on ADK_PACKAGE_BUSYBOX
- depends on !ADK_RUNTIME_INIT_SYSTEMD
config ADK_RUNTIME_DEV_MDEV_LOGGING
bool "Log mdev events into /dev/mdev.log"
depends on ADK_RUNTIME_DEV_MDEV
config ADK_RUNTIME_DEV_UDEV
- bool "Use udev"
+ bool "Use dynamic /dev with udev"
select ADK_PACKAGE_UDEV
# needs depmod for module dependency generation on host
select ADK_HOST_BUILD_KMOD
select ADK_LINUX_KERNEL_DEVTMPFS if ADK_TARGET_OS_LINUX
select ADK_LINUX_KERNEL_DEVTMPFS_MOUNT if ADK_TARGET_OS_LINUX
- depends on !ADK_RUNTIME_INIT_SYSTEMD
-
-config ADK_RUNTIME_DEV_SYSTEMD_UDEV
- bool "Use systemd udev"
- select ADK_LINUX_KERNEL_DEVTMPFS if ADK_TARGET_OS_LINUX
- select ADK_LINUX_KERNEL_DEVTMPFS_MOUNT if ADK_TARGET_OS_LINUX
- depends on ADK_RUNTIME_INIT_SYSTEMD
-
-config ADK_RUNTIME_DEV_STATIC
- bool "Use static /dev"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
endchoice
@@ -77,6 +62,7 @@ choice
prompt "base applications"
depends on !ADK_APPLIANCE_TOOLCHAIN
default ADK_RUNTIME_BASE_TOOLBOX if ADK_TARGET_ARCH_H8300
+default ADK_RUNTIME_BASE_TOOLBOX if ADK_TARGET_ARCH_C6X
default ADK_RUNTIME_BASE_BUSYBOX
config ADK_RUNTIME_BASE_BUSYBOX
@@ -131,7 +117,7 @@ config ADK_RUNTIME_PASSWORD
help
Predefine the root password enabled in the built image.
Use ./host_*/usr/bin/mkcrypt to generate the hash.
- Default password is linux123
+ Default password is: linux123
config ADK_RUNTIME_ADDUSER
bool "add an user"
@@ -170,13 +156,11 @@ config ADK_RUNTIME_USER_SHELL
config ADK_RUNTIME_MOUNT_DEBUGFS
bool "mount debugfs"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
help
mount debugfs under /sys/kernel/debug
config ADK_RUNTIME_START_SERVICES
bool "start services by default"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
default n
help
Enable this option to start selected services on boot.
@@ -185,19 +169,20 @@ source "target/config/Config.in.scripts"
config ADK_RUNTIME_TMPFS_SIZE
string "size of /tmp in memory (kB)"
- default "32768" if ADK_TARGET_SYSTEM_LENOVO_X200
default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI
default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI2
default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI3
- default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
+ default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI5
+ default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
+ default "32768" if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
default "32768" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "16384" if ADK_TARGET_SYSTEM_QEMU_X86_64
default "16384" if ADK_TARGET_SYSTEM_QEMU_X86
- default "16384" if ADK_TARGET_VBOX
default "16384" if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default "8192" if ADK_TARGET_SYSTEM_MIKROTIK_RB532
default "1024"
- depends on !ADK_RUNTIME_INIT_SIMPLEINIT && !ADK_RUNTIME_INIT_SYSTEMD
+ depends on !ADK_RUNTIME_INIT_SIMPLEINIT
help
Size of /tmp in memory in Kilobyte.
@@ -211,7 +196,7 @@ config ADK_RUNTIME_DEFAULT_LOCALE
string "default locale"
depends on ADK_TARGET_LIBC_WITH_LOCALE \
|| ADK_TARGET_LIB_GLIBC || ADK_TARGET_LIB_MUSL
- default "C.UTF-8"
+ default "en_US.UTF-8"
help
Locale to be set in the target system as default.
@@ -285,7 +270,6 @@ endchoice
choice
prompt "start getty or shell after bootup"
-depends on !ADK_RUNTIME_INIT_SYSTEMD
default ADK_RUNTIME_GETTY
config ADK_RUNTIME_GETTY
@@ -307,7 +291,6 @@ endchoice
config ADK_RUNTIME_GETTY_VGA
bool "start getty on VGA console (tty1-tty6)"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
depends on ADK_RUNTIME_GETTY \
&& (ADK_TARGET_WITH_VGA || ADK_TARGET_GENERIC)
default y if ADK_TARGET_QEMU_WITH_GRAPHIC_ONLY
@@ -316,21 +299,20 @@ config ADK_RUNTIME_GETTY_VGA
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI0
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI2
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_SYSTEM_ARANYM_M68K
default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C
- default y if ADK_TARGET_VBOX
default n
help
Start getty on VGA console. (tty1-tty6)
config ADK_RUNTIME_GETTY_SERIAL
bool "start getty on serial console"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
depends on ADK_RUNTIME_GETTY && ( ADK_TARGET_WITH_SERIAL \
|| ADK_TARGET_QEMU \
|| ADK_TARGET_GENERIC \
@@ -340,30 +322,29 @@ config ADK_RUNTIME_GETTY_SERIAL
default n if ADK_TARGET_SYSTEM_RASPBERRY_PI
default n if ADK_TARGET_SYSTEM_RASPBERRY_PI2
default n if ADK_TARGET_SYSTEM_RASPBERRY_PI3
- default n if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
+ default n if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ default n if ADK_TARGET_SYSTEM_RASPBERRY_PI5
+ default n if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
+ default n if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
default n if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default n if ADK_TARGET_SYSTEM_ARANYM_M68K
default n if ADK_TARGET_MODEL_PCENGINES_ALIX1C
- default n if ADK_TARGET_VBOX
default y
help
Start getty on serial console.
config ADK_RUNTIME_GETTY_SERIAL_AUTOLOGIN
bool "run autologin on serial getty"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
depends on ADK_RUNTIME_GETTY_SERIAL
select ADK_PACKAGE_AUTOLOGIN
config ADK_RUNTIME_CONSOLE_VGA_DEVICE
string "VGA console device"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
depends on ADK_TARGET_WITH_VGA || ADK_TARGET_GENERIC
default "tty0"
config ADK_RUNTIME_CONSOLE_SERIAL_DEVICE
string "serial console device"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
depends on ADK_TARGET_WITH_SERIAL \
|| ADK_TARGET_QEMU \
|| ADK_TARGET_GENERIC \
@@ -376,31 +357,32 @@ config ADK_RUNTIME_CONSOLE_SERIAL_DEVICE
|| ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE \
|| ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9 \
|| ADK_TARGET_SYSTEM_QEMU_AARCH64
- default "ttyARC0" if ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
+ default "ttyARC0" if ADK_TARGET_SYSTEM_SYNOPSYS_NSIM && ADK_TARGET_CPU_ARC_ARC700
default "ttySC1" if ADK_TARGET_SYSTEM_QEMU_SH
default "ttySC0" if ADK_TARGET_SYSTEM_SIM_H8300H
default "ttySC2" if ADK_TARGET_SYSTEM_HITACHI_EDOSK2674
+ default "ttySIF0" if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
default "ttymxc0" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "ttymxc1" if ADK_TARGET_SYSTEM_PHYTEC_IMX6
default "ttyAMA0" if ADK_TARGET_SYSTEM_RASPBERRY_PI
default "ttyAMA0" if ADK_TARGET_SYSTEM_RASPBERRY_PI2
default "ttyAMA0" if ADK_TARGET_SYSTEM_RASPBERRY_PI3
- default "ttyAMA0" if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
default "ttyAMA0" if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
- default "ttyAMA0" if ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
default "ttyDA1" if ADK_TARGET_SYSTEM_QEMU_METAG
default "ttyS2" if ADK_TARGET_SYSTEM_KINETIS_K70
default "ttyS2" if ADK_TARGET_SYSTEM_SOM_C6745
+ default "ttyS2" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "ttyPS0" if ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ
default "ttysclp0" if ADK_TARGET_SYSTEM_QEMU_S390
default "ttyO2" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "ttyO0" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
default "ttyS4" if ADK_TARGET_SYSTEM_IMGTEC_CI20
+ default "ttySTM0" if ADK_TARGET_SYSTEM_ST_STM32F746G
+ default "ttyGF0" if ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
default "ttyS0"
config ADK_RUNTIME_CONSOLE_SERIAL_SPEED
string "serial console speed"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
depends on ADK_TARGET_WITH_SERIAL \
|| ADK_TARGET_QEMU \
|| ADK_TARGET_GENERIC \
@@ -537,12 +519,11 @@ config ADK_RUNTIME_WAIT_FOR_ETHERNET
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI2
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
config ADK_SIMPLE_NETWORK_CONFIG
bool "simple network configuration"
- depends on !ADK_RUNTIME_INIT_SYSTEMD
help
Manually change network config
diff --git a/target/config/Config.in.toolchain b/target/config/Config.in.toolchain
index 184e4adfc..144f92a9b 100644
--- a/target/config/Config.in.toolchain
+++ b/target/config/Config.in.toolchain
@@ -5,6 +5,7 @@ config ADK_TARGET_CFLAGS_OPT
string
default "-Os -pipe" if ADK_TARGET_CFLAGS_OPT_OS
default "-Og -pipe" if ADK_TARGET_CFLAGS_OPT_OG
+ default "-O1 -pipe" if ADK_TARGET_CFLAGS_OPT_O1
default "-O2 -pipe" if ADK_TARGET_CFLAGS_OPT_O2
default "-O3 -pipe" if ADK_TARGET_CFLAGS_OPT_O3
default "-O0 -pipe" if ADK_TARGET_CFLAGS_OPT_O0
diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools
index 5cecf85c1..cdeeb90ed 100644
--- a/target/config/Config.in.tools
+++ b/target/config/Config.in.tools
@@ -137,10 +137,6 @@ config ADK_HOST_BUILD_TAR
bool
default n
-config ADK_HOST_BUILD_XZ
- bool
- default n
-
# optional, but can be provided by host
config ADK_HOST_BUILD_DOSFSTOOLS
bool
@@ -164,7 +160,6 @@ config ADK_HOST_BUILD_MTOOLS
config ADK_HOST_BUILD_GENIMAGE
bool
- select ADK_HOST_BUILD_MKE2IMG
select ADK_HOST_BUILD_MTOOLS
select ADK_HOST_BUILD_GENEXT2FS
select ADK_HOST_BUILD_GPTFDISK
@@ -192,6 +187,14 @@ config ADK_HOST_BUILD_GENEXT2FS
bool
default n
+config ADK_HOST_NEED_ZSTD
+ bool
+ default n
+
+config ADK_HOST_BUILD_ZSTD
+ bool
+ default n
+
config ADK_HOST_NEED_LZ4
bool
default n
@@ -283,7 +286,6 @@ config ADK_HOST_NEED_SQUASHFS
config ADK_HOST_BUILD_SQUASHFS
bool
- select ADK_HOST_BUILD_XZ
default y if ADK_HOST_NEED_SQUASHFS
default n
@@ -315,7 +317,7 @@ config ADK_COMPRESSION_TOOL
string
default "gzip -n9" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_GZIP
default "bzip2" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_BZIP2
- default "xz -v --check=crc32 --lzma2=dict=1MiB" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_XZ
+ default "zstd" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_ZSTD
default "lz4c -l" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZ4
default "lzma -9" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZMA
default "lzop" if ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZO
diff --git a/target/csky/kernel/qemu-csky b/target/csky/kernel/qemu-csky
index 1d06909b6..876d5a87f 100644
--- a/target/csky/kernel/qemu-csky
+++ b/target/csky/kernel/qemu-csky
@@ -5,3 +5,4 @@ CONFIG_NATIONALCHIP_IRQ=y
CONFIG_NATIONALCHIP_TIMER=y
CONFIG_CSKYMAC=y
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/h8300/systems/hitachi-edosk2674 b/target/h8300/systems/hitachi-edosk2674
index 7a53d4368..10eac7cea 100644
--- a/target/h8300/systems/hitachi-edosk2674
+++ b/target/h8300/systems/hitachi-edosk2674
@@ -3,6 +3,8 @@ config ADK_TARGET_SYSTEM_HITACHI_EDOSK2674
select ADK_TARGET_CPU_H8S
select ADK_TARGET_PACKAGE_TXZ
select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
select ADK_TARGET_KERNEL_UIMAGEBIN
select ADK_HOST_BUILD_U_BOOT_H8300
help
diff --git a/target/h8300/uclibc-ng.config b/target/h8300/uclibc-ng-nommu.config
index 153512253..153512253 100644
--- a/target/h8300/uclibc-ng.config
+++ b/target/h8300/uclibc-ng-nommu.config
diff --git a/target/hppa/Makefile b/target/hppa/Makefile
index aba746bee..482479e58 100644
--- a/target/hppa/Makefile
+++ b/target/hppa/Makefile
@@ -8,6 +8,7 @@ include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)
QEMU:=qemu-system-hppa
QEMU_ARGS:=-nographic
+QEMU_ARGS+=-device e1000,netdev=adk0 -netdev user,id=adk0
# target helper text
ifeq ($(ADK_TARGET_FS),archive)
diff --git a/target/hppa/kernel/qemu-hppa b/target/hppa/kernel/qemu-hppa
index e16c3f466..e0d0e95a3 100644
--- a/target/hppa/kernel/qemu-hppa
+++ b/target/hppa/kernel/qemu-hppa
@@ -6,3 +6,4 @@ CONFIG_GSC_WAX=y
CONFIG_GSC_DINO=y
CONFIG_SERIAL_MUX=y
CONFIG_SERIAL_MUX_CONSOLE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/kvx/Makefile b/target/kvx/Makefile
index 03afae8f0..ecef4a219 100644
--- a/target/kvx/Makefile
+++ b/target/kvx/Makefile
@@ -5,3 +5,57 @@ include $(ADK_TOPDIR)/rules.mk
include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
+KERNEL:=$(LINUX_DIR)/vmlinux
+QEMU_ARGS:=-nographic
+
+#
+# target helper text
+ifeq ($(ADK_TARGET_FS),archive)
+targethelp:
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "Use following command to create a QEMU Image:"
+ @echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+ @echo "Start qemu with following options:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+targethelp:
+ @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+endif
+endif
+
+kernel-strip:
+
+kernel-install: kernel-strip
+ @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
+
+# filesystem specific targets
+ifeq ($(ADK_TARGET_FS),initramfs)
+imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+imageinstall: createinitramfs targethelp
+endif
diff --git a/target/kvx/kernel/generic-kvx b/target/kvx/kernel/generic-kvx
index 14b29e5dc..1d953b12e 100644
--- a/target/kvx/kernel/generic-kvx
+++ b/target/kvx/kernel/generic-kvx
@@ -1 +1,3311 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/kvx 5.8.12 Kernel Configuration
+#
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=90401
+CONFIG_LD_VERSION=237000000
+CONFIG_CLANG_VERSION=0
+CONFIG_CC_CAN_LINK=y
+CONFIG_CC_CAN_LINK_STATIC=y
+CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_CC_HAS_ASM_INLINE=y
+CONFIG_IRQ_WORK=y
+CONFIG_THREAD_INFO_IN_TASK=y
+
+#
+# General setup
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_BUILD_SALT=""
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_HOSTNAME="KVXlinux"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_WATCH_QUEUE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+# CONFIG_USELIB is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_INJECTION=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_IRQ_IPI=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
+CONFIG_IRQ_MSI_IOMMU=y
+CONFIG_SPARSE_IRQ=y
+# end of IRQ subsystem
+
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+
+#
+# Timers subsystem
+#
+CONFIG_HZ_PERIODIC=y
+# CONFIG_NO_HZ_IDLE is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+# end of Timers subsystem
+
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_PSI is not set
+# end of CPU/Task time and stats accounting
+
+#
+# RCU Subsystem
+#
+CONFIG_TINY_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+CONFIG_TINY_SRCU=y
+# end of RCU Subsystem
+
+# CONFIG_IKCONFIG is not set
+# CONFIG_IKHEADERS is not set
+CONFIG_LOG_BUF_SHIFT=17
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
+CONFIG_GENERIC_SCHED_CLOCK=y
+
+#
+# Scheduler features
+#
+# end of Scheduler features
+
+CONFIG_CC_HAS_INT128=y
+# CONFIG_CGROUPS is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio"
+CONFIG_INITRAMFS_ROOT_UID=0
+CONFIG_INITRAMFS_ROOT_GID=0
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_COMPRESSION_GZIP=y
+# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
+# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
+# CONFIG_INITRAMFS_COMPRESSION_XZ is not set
+# CONFIG_INITRAMFS_COMPRESSION_LZO is not set
+# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set
+# CONFIG_INITRAMFS_COMPRESSION_NONE is not set
+# CONFIG_BOOT_CONFIG is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_BPF=y
+CONFIG_EXPERT=y
+CONFIG_MULTIUSER=y
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_IO_URING=y
+CONFIG_ADVISE_SYSCALLS=y
+CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_BPF_SYSCALL is not set
+# CONFIG_USERFAULTFD is not set
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+# CONFIG_PC104 is not set
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+# end of Kernel Performance Events And Counters
+
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_FREELIST_HARDENED is not set
+# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set
+# CONFIG_PROFILING is not set
+# end of General setup
+
+CONFIG_64BIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_MMU=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_HAVE_COPY_THREAD_TLS=y
+CONFIG_ZONE_DMA32=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_GENERIC_BUG=y
CONFIG_KVX=y
+CONFIG_PGTABLE_LEVELS=3
+
+#
+# System setup
+#
+CONFIG_POISON_INITMEM=y
+CONFIG_KVX_PHYS_OFFSET=0x100000000
+CONFIG_KVX_PAGE_OFFSET=0xFFFFFF8000000000
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_STACK_MAX_DEPTH_TO_PRINT=24
+CONFIG_L2_CACHE=y
+CONFIG_SECURE_DAME_HANDLING=y
+# CONFIG_CACHECTL_UNSAFE_PHYS_OPERATIONS is not set
+CONFIG_ENABLE_TCA=y
+# CONFIG_SMP is not set
+CONFIG_KVX_4K_PAGES=y
+# CONFIG_KVX_64K_PAGES is not set
+CONFIG_KVX_PAGE_SHIFT=12
+CONFIG_CMDLINE=""
+# end of System setup
+
+#
+# System Type
+#
+CONFIG_KVX_SUBARCH_KV3_1=y
+# CONFIG_KVX_SUBARCH_KV3_2 is not set
+# end of System Type
+
+#
+# Kernel Features
+#
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+# end of Kernel Features
+
+#
+# General architecture-dependent options
+#
+CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_ASM_MODVERSIONS=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_MODULES_USE_ELF_RELA=y
+# CONFIG_COMPAT_32BIT_TIME is not set
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+
+#
+# GCOV-based kernel profiling
+#
+# end of GCOV-based kernel profiling
+# end of General architecture-dependent options
+
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+CONFIG_ASM_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_BLK_SCSI_REQUEST=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_DEV_ZONED is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+# CONFIG_BLK_WBT is not set
+# CONFIG_BLK_SED_OPAL is not set
+# CONFIG_BLK_INLINE_ENCRYPTION is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# end of Partition Types
+
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_MQ_VIRTIO=y
+
+#
+# IO Schedulers
+#
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_IOSCHED_BFQ is not set
+# end of IO Schedulers
+
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
+# end of Executable file formats
+
+#
+# Memory Management options
+#
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+# CONFIG_PAGE_REPORTING is not set
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
+# CONFIG_IDLE_PAGE_TRACKING is not set
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_BENCHMARK is not set
+# CONFIG_READ_ONLY_THP_FOR_FS is not set
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+# end of Memory Management options
+
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+CONFIG_UNIX_SCM=y
+# CONFIG_UNIX_DIAG is not set
+# CONFIG_TLS is not set
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+CONFIG_NET_IP_TUNNEL=y
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_NET_IPVTI is not set
+# CONFIG_NET_FOU is not set
+# CONFIG_NET_FOU_IP_TUNNELS is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+CONFIG_INET_TUNNEL=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_UDP_DIAG is not set
+# CONFIG_INET_RAW_DIAG is not set
+# CONFIG_INET_DIAG_DESTROY is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
+# CONFIG_IPV6_VTI is not set
+CONFIG_IPV6_SIT=y
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
+# CONFIG_IPV6_RPL_LWTUNNEL is not set
+# CONFIG_MPTCP is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NET_PTP_CLASSIFY=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_ADVANCED=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_NETLINK_ACCT is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NETFILTER_NETLINK_OSF is not set
+CONFIG_NF_CONNTRACK=m
+# CONFIG_NF_LOG_NETDEV is not set
+# CONFIG_NF_CONNTRACK_MARK is not set
+# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_PROCFS=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
+# CONFIG_NF_CONNTRACK_LABELS is not set
+CONFIG_NF_CT_PROTO_DCCP=y
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+# CONFIG_NF_CONNTRACK_FTP is not set
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_SNMP is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+# CONFIG_NF_CONNTRACK_SIP is not set
+# CONFIG_NF_CONNTRACK_TFTP is not set
+# CONFIG_NF_CT_NETLINK is not set
+CONFIG_NF_NAT=m
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+
+#
+# Xtables combined modules
+#
+# CONFIG_NETFILTER_XT_MARK is not set
+# CONFIG_NETFILTER_XT_CONNMARK is not set
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
+# CONFIG_NETFILTER_XT_TARGET_LOG is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+CONFIG_NETFILTER_XT_NAT=m
+# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+# CONFIG_NETFILTER_XT_TARGET_MASQUERADE is not set
+# CONFIG_NETFILTER_XT_TARGET_TEE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+
+#
+# Xtables matches
+#
+# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_BPF is not set
+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
+# CONFIG_NETFILTER_XT_MATCH_CPU is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ECN is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+# CONFIG_NETFILTER_XT_MATCH_HL is not set
+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
+# CONFIG_NETFILTER_XT_MATCH_OSF is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
+# CONFIG_NETFILTER_XT_MATCH_STATE is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# end of Core Netfilter Configuration
+
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+# CONFIG_NF_SOCKET_IPV4 is not set
+# CONFIG_NF_TPROXY_IPV4 is not set
+# CONFIG_NF_DUP_IPV4 is not set
+# CONFIG_NF_LOG_ARP is not set
+# CONFIG_NF_LOG_IPV4 is not set
+# CONFIG_NF_REJECT_IPV4 is not set
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_FILTER is not set
+# CONFIG_IP_NF_TARGET_SYNPROXY is not set
+CONFIG_IP_NF_NAT=m
+# CONFIG_IP_NF_TARGET_MASQUERADE is not set
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_REDIRECT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+# end of IP: Netfilter Configuration
+
+#
+# IPv6: Netfilter Configuration
+#
+# CONFIG_NF_SOCKET_IPV6 is not set
+# CONFIG_NF_TPROXY_IPV6 is not set
+# CONFIG_NF_DUP_IPV6 is not set
+# CONFIG_NF_REJECT_IPV6 is not set
+# CONFIG_NF_LOG_IPV6 is not set
+# CONFIG_IP6_NF_IPTABLES is not set
+# end of IPv6: Netfilter Configuration
+
+CONFIG_NF_DEFRAG_IPV6=m
+# CONFIG_NF_CONNTRACK_BRIDGE is not set
+# CONFIG_BPFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+CONFIG_DCB=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_NET_NSH is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+# CONFIG_QRTR is not set
+# CONFIG_NET_NCSI is not set
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# end of Network testing
+# end of Networking options
+
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
+# CONFIG_LWTUNNEL is not set
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+CONFIG_PAGE_POOL=y
+# CONFIG_FAILOVER is not set
+
+#
+# Device Drivers
+#
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEAER_INJECT=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEASPM is not set
+CONFIG_PCIE_DPC=y
+# CONFIG_PCIE_PTM is not set
+# CONFIG_PCIE_BW is not set
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# PCI controller drivers
+#
+CONFIG_PCIE_KVX_NWL=y
+# CONFIG_PCIE_KVX_ERR_INJECT_SYSFS is not set
+# CONFIG_PCI_FTPCI100 is not set
+# CONFIG_PCI_HOST_GENERIC is not set
+# CONFIG_PCIE_XILINX is not set
+
+#
+# DesignWare PCI Core Support
+#
+# CONFIG_PCIE_DW_PLAT_HOST is not set
+# CONFIG_PCI_MESON is not set
+# end of DesignWare PCI Core Support
+
+#
+# Mobiveil PCIe Core Support
+#
+# end of Mobiveil PCIe Core Support
+
+#
+# Cadence PCIe controllers support
+#
+# CONFIG_PCIE_CADENCE_PLAT_HOST is not set
+# end of Cadence PCIe controllers support
+# end of PCI controller drivers
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
+# end of PCI Endpoint
+
+#
+# PCI switch controller drivers
+#
+# CONFIG_PCI_SW_SWITCHTEC is not set
+# end of PCI switch controller drivers
+
+# CONFIG_PCCARD is not set
+# CONFIG_RAPIDIO is not set
+
+#
+# Generic Driver Options
+#
+# CONFIG_UEVENT_HELPER is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+#
+# Firmware loader
+#
+CONFIG_FW_LOADER=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER is not set
+# CONFIG_FW_LOADER_COMPRESS is not set
+# end of Firmware loader
+
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_DEVICES=y
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+# end of Generic Driver Options
+
+#
+# Bus devices
+#
+# CONFIG_MOXTET is not set
+# CONFIG_MHI_BUS is not set
+# end of Bus devices
+
+# CONFIG_CONNECTOR is not set
+# CONFIG_GNSS is not set
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+
+#
+# Partition parsers
+#
+# CONFIG_MTD_AR7_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# end of Partition parsers
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP is not set
+# CONFIG_MTD_PARTITIONED_MASTER is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# end of RAM/ROM/Flash chip drivers
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+# end of Mapping drivers for chip access
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_MCHP23K256 is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOCG3 is not set
+# end of Self-contained MTD device drivers
+
+# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD_RAW_NAND is not set
+# CONFIG_MTD_SPI_NAND is not set
+
+#
+# LPDDR & LPDDR2 PCM memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+# end of LPDDR & LPDDR2 PCM memory drivers
+
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+# CONFIG_MTD_UBI is not set
+# CONFIG_MTD_HYPERBUS is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=m
+CONFIG_OF_RESERVED_MEM=y
+# CONFIG_OF_OVERLAY is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SKD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_VIRTIO_BLK is not set
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_BLK_DEV_RSXX is not set
+
+#
+# NVME Support
+#
+CONFIG_NVME_CORE=y
+CONFIG_BLK_DEV_NVME=y
+# CONFIG_NVME_MULTIPATH is not set
+# CONFIG_NVME_HWMON is not set
+# CONFIG_NVME_FC is not set
+# CONFIG_NVME_TCP is not set
+# CONFIG_NVME_TARGET is not set
+# end of NVME Support
+
+#
+# Misc devices
+#
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+# CONFIG_XILINX_SDFEC is not set
+# CONFIG_PVPANIC is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_EEPROM_93XX46 is not set
+# CONFIG_EEPROM_IDT_89HPESX is not set
+# CONFIG_EEPROM_EE1004 is not set
+# end of EEPROM support
+
+# CONFIG_CB710_CORE is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# end of Texas Instruments shared transport line discipline
+
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# Intel MIC & related support
+#
+# CONFIG_VOP_BUS is not set
+# end of Intel MIC & related support
+
+# CONFIG_GENWQE is not set
+# CONFIG_ECHO is not set
+# CONFIG_MISC_ALCOR_PCI is not set
+# CONFIG_MISC_RTSX_PCI is not set
+# CONFIG_MISC_RTSX_USB is not set
+# CONFIG_HABANA_AI is not set
+# CONFIG_UACCE is not set
+# end of Misc devices
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# end of SCSI device support
+
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_TARGET_CORE is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_FIREWIRE_NOSY is not set
+# end of IEEE 1394 (FireWire) support
+
+CONFIG_NETDEVICES=y
+CONFIG_MII=m
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_WIREGUARD is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_IPVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_GENEVE is not set
+# CONFIG_BAREUDP is not set
+# CONFIG_GTP is not set
+# CONFIG_MACSEC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_TUN is not set
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_VETH is not set
+# CONFIG_VIRTIO_NET is not set
+# CONFIG_NLMON is not set
+# CONFIG_ARCNET is not set
+
+#
+# Distributed Switch Architecture drivers
+#
+# end of Distributed Switch Architecture drivers
+
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_VORTEX is not set
+# CONFIG_TYPHOON is not set
+CONFIG_NET_VENDOR_ADAPTEC=y
+# CONFIG_ADAPTEC_STARFIRE is not set
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_ET131X is not set
+CONFIG_NET_VENDOR_ALACRITECH=y
+# CONFIG_SLICOSS is not set
+CONFIG_NET_VENDOR_ALTEON=y
+# CONFIG_ACENIC is not set
+# CONFIG_ALTERA_TSE is not set
+CONFIG_NET_VENDOR_AMAZON=y
+# CONFIG_ENA_ETHERNET is not set
+CONFIG_NET_VENDOR_AMD=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_PCNET32 is not set
+CONFIG_NET_VENDOR_AQUANTIA=y
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ATHEROS=y
+# CONFIG_ATL2 is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_ALX is not set
+CONFIG_NET_VENDOR_AURORA=y
+# CONFIG_AURORA_NB8800 is not set
+CONFIG_NET_VENDOR_BROADCOM=y
+# CONFIG_B44 is not set
+# CONFIG_BCMGENET is not set
+# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2X is not set
+# CONFIG_SYSTEMPORT is not set
+# CONFIG_BNXT is not set
+CONFIG_NET_VENDOR_BROCADE=y
+# CONFIG_BNA is not set
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_MACB is not set
+CONFIG_NET_VENDOR_CAVIUM=y
+# CONFIG_THUNDER_NIC_PF is not set
+# CONFIG_THUNDER_NIC_VF is not set
+# CONFIG_THUNDER_NIC_BGX is not set
+# CONFIG_THUNDER_NIC_RGX is not set
+# CONFIG_CAVIUM_PTP is not set
+# CONFIG_LIQUIDIO is not set
+# CONFIG_LIQUIDIO_VF is not set
+CONFIG_NET_VENDOR_CHELSIO=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_CHELSIO_T4 is not set
+# CONFIG_CHELSIO_T4VF is not set
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_ENIC is not set
+CONFIG_NET_VENDOR_CORTINA=y
+# CONFIG_GEMINI_ETHERNET is not set
+# CONFIG_DNET is not set
+CONFIG_NET_VENDOR_DEC=y
+# CONFIG_NET_TULIP is not set
+CONFIG_NET_VENDOR_DLINK=y
+# CONFIG_DL2K is not set
+# CONFIG_SUNDANCE is not set
+CONFIG_NET_VENDOR_EMULEX=y
+# CONFIG_BE2NET is not set
+CONFIG_NET_VENDOR_EZCHIP=y
+# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
+CONFIG_NET_VENDOR_GOOGLE=y
+# CONFIG_GVE is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_INTEL=y
+# CONFIG_E100 is not set
+# CONFIG_E1000 is not set
+CONFIG_E1000E=y
+# CONFIG_IGB is not set
+# CONFIG_IGBVF is not set
+# CONFIG_IXGB is not set
+# CONFIG_IXGBE is not set
+# CONFIG_IXGBEVF is not set
+# CONFIG_I40E is not set
+# CONFIG_I40EVF is not set
+# CONFIG_ICE is not set
+# CONFIG_FM10K is not set
+# CONFIG_IGC is not set
+# CONFIG_JME is not set
+CONFIG_NET_VENDOR_MARVELL=y
+# CONFIG_MVMDIO is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX5_CORE is not set
+# CONFIG_MLXSW_CORE is not set
+# CONFIG_MLXFW is not set
+CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_KSZ884X_PCI is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_ENC28J60 is not set
+# CONFIG_ENCX24J600 is not set
+# CONFIG_LAN743X is not set
+CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_NET_VENDOR_MYRI=y
+# CONFIG_MYRI10GE is not set
+# CONFIG_FEALNX is not set
+CONFIG_NET_VENDOR_NATSEMI=y
+# CONFIG_NATSEMI is not set
+# CONFIG_NS83820 is not set
+CONFIG_NET_VENDOR_NETERION=y
+# CONFIG_S2IO is not set
+# CONFIG_VXGE is not set
+CONFIG_NET_VENDOR_NETRONOME=y
+# CONFIG_NFP is not set
+CONFIG_NET_VENDOR_NI=y
+# CONFIG_NI_XGE_MANAGEMENT_ENET is not set
+CONFIG_NET_VENDOR_8390=y
+# CONFIG_NE2K_PCI is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+# CONFIG_FORCEDETH is not set
+CONFIG_NET_VENDOR_OKI=y
+# CONFIG_ETHOC is not set
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_NET_VENDOR_PENSANDO=y
+# CONFIG_IONIC is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_QLCNIC is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_QED is not set
+CONFIG_NET_VENDOR_QUALCOMM=y
+# CONFIG_QCA7000_SPI is not set
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_RMNET is not set
+CONFIG_NET_VENDOR_RDC=y
+# CONFIG_R6040 is not set
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_R8169 is not set
+CONFIG_NET_VENDOR_RENESAS=y
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_NET_VENDOR_SAMSUNG=y
+# CONFIG_SXGBE_ETH is not set
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
+# CONFIG_SFC is not set
+# CONFIG_SFC_FALCON is not set
+CONFIG_NET_VENDOR_SILAN=y
+# CONFIG_SC92031 is not set
+CONFIG_NET_VENDOR_SIS=y
+# CONFIG_SIS900 is not set
+# CONFIG_SIS190 is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_SMSC9420 is not set
+CONFIG_NET_VENDOR_SOCIONEXT=y
+CONFIG_NET_VENDOR_STMICRO=y
+# CONFIG_STMMAC_ETH is not set
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NIU is not set
+CONFIG_NET_VENDOR_SYNOPSYS=y
+# CONFIG_DWC_XLGMAC is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+# CONFIG_TEHUTI is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_CPSW_PHY_SEL is not set
+# CONFIG_TLAN is not set
+CONFIG_NET_VENDOR_VIA=y
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_VELOCITY is not set
+CONFIG_NET_VENDOR_WIZNET=y
+# CONFIG_WIZNET_W5100 is not set
+# CONFIG_WIZNET_W5300 is not set
+CONFIG_NET_VENDOR_XILINX=y
+# CONFIG_XILINX_AXI_EMAC is not set
+# CONFIG_XILINX_LL_TEMAC is not set
+CONFIG_NET_VENDOR_KALRAY=y
+CONFIG_NET_KVX_SOC=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_MDIO_DEVICE=m
+CONFIG_MDIO_BUS=m
+# CONFIG_MDIO_BCM_UNIMAC is not set
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
+CONFIG_MDIO_GPIO=m
+# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
+# CONFIG_MDIO_IPQ4019 is not set
+# CONFIG_MDIO_IPQ8064 is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+# CONFIG_MDIO_MVUSB is not set
+# CONFIG_MDIO_OCTEON is not set
+# CONFIG_MDIO_THUNDER is not set
+# CONFIG_MDIO_XPCS is not set
+CONFIG_PHYLINK=m
+CONFIG_PHYLIB=m
+CONFIG_SWPHY=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_SFP=m
+# CONFIG_ADIN_PHY is not set
+# CONFIG_AMD_PHY is not set
+# CONFIG_AQUANTIA_PHY is not set
+# CONFIG_AX88796B_PHY is not set
+# CONFIG_BCM7XXX_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM54140_PHY is not set
+# CONFIG_BCM84881_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_CORTINA_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_DP83822_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+# CONFIG_DP83869_PHY is not set
+CONFIG_FIXED_PHY=m
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_INTEL_XWAY_PHY is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_LXT_PHY is not set
+CONFIG_MARVELL_PHY=m
+# CONFIG_MARVELL_10G_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_MICROCHIP_PHY is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+# CONFIG_MICROSEMI_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_NXP_TJA11XX_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_TERANETICS_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_XILINX_GMII2RGMII is not set
+# CONFIG_MICREL_KS8995MA is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+CONFIG_USB_NET_DRIVERS=y
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_RTL8152 is not set
+# CONFIG_USB_LAN78XX is not set
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_CDC_EEM is not set
+CONFIG_USB_NET_CDC_NCM=m
+# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
+# CONFIG_USB_NET_CDC_MBIM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SR9800 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
+CONFIG_USB_NET_SMSC95XX=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
+CONFIG_USB_NET_CDC_SUBSET=m
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_NET_CX82310_ETH is not set
+# CONFIG_USB_NET_KALMIA is not set
+# CONFIG_USB_NET_QMI_WWAN is not set
+# CONFIG_USB_NET_INT51X1 is not set
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
+# CONFIG_USB_VL600 is not set
+# CONFIG_USB_NET_CH9200 is not set
+# CONFIG_USB_NET_AQC111 is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_VMXNET3 is not set
+# CONFIG_NET_FAILOVER is not set
+CONFIG_NET_TI_RTM=m
+# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+# CONFIG_INPUT_MATRIXKMAP is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1050 is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+# CONFIG_KEYBOARD_BCM is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_FOCALTECH=y
+CONFIG_MOUSE_PS2_SMBUS=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_ELAN_I2C is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
+# CONFIG_USERIO is not set
+# CONFIG_GAMEPORT is not set
+# end of Hardware I/O ports
+# end of Input device support
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_LDISC_AUTOLOAD=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_16550A_VARIANTS=y
+# CONFIG_SERIAL_8250_FINTEK is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_ASPEED_VUART is not set
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_DW=y
+# CONFIG_SERIAL_8250_RT288X is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_UARTLITE is not set
+# CONFIG_SERIAL_KVX_JTAG_COMM is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_SIFIVE is not set
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_SC16IS7XX is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_RP2 is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_FSL_LINFLEXUART is not set
+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
+CONFIG_SERIAL_KVX_SCALL_COMM=y
+# CONFIG_SERIAL_SPRD is not set
+# end of Serial drivers
+
+CONFIG_SERIAL_MCTRL_GPIO=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_NOZOMI is not set
+# CONFIG_NULL_TTY is not set
+# CONFIG_TRACE_SINK is not set
+# CONFIG_SERIAL_DEV_BUS is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_VIRTIO_CONSOLE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMB_DEVICE_INTERFACE is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_VIRTIO is not set
+# CONFIG_HW_RANDOM_CCTRNG is not set
+# CONFIG_APPLICOM is not set
+CONFIG_DEVMEM=y
+# CONFIG_DEVKMEM is not set
+# CONFIG_RAW_DRIVER is not set
+CONFIG_DEVPORT=y
+# CONFIG_TCG_TPM is not set
+# CONFIG_XILLYBUS is not set
+# end of Character devices
+
+# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_NVIDIA_GPU is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+CONFIG_I2C_DESIGNWARE_CORE=y
+CONFIG_I2C_DESIGNWARE_SLAVE=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_RK3X is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# end of I2C Hardware Bus support
+
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_EEPROM is not set
+CONFIG_I2C_SLAVE_USPACE=y
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# end of I2C support
+
+# CONFIG_I3C is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_CADENCE is not set
+CONFIG_SPI_DESIGNWARE=y
+# CONFIG_SPI_DW_DMA is not set
+# CONFIG_SPI_DW_PCI is not set
+CONFIG_SPI_DW_MMIO=y
+# CONFIG_SPI_NXP_FLEXSPI is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PXA2XX is not set
+# CONFIG_SPI_ROCKCHIP is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_SIFIVE is not set
+# CONFIG_SPI_MXIC is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
+# CONFIG_SPI_AMD is not set
+
+#
+# SPI Multiplexer support
+#
+# CONFIG_SPI_MUX is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_SLAVE is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+# CONFIG_NTP_PPS is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set
+# CONFIG_PTP_1588_CLOCK_IDTCM is not set
+# end of PTP clock support
+
+CONFIG_PINCTRL=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_PINMUX=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SX150X is not set
+# CONFIG_PINCTRL_STMFX is not set
+# CONFIG_PINCTRL_OCELOT is not set
+CONFIG_GPIO_DWAPB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+CONFIG_GPIO_GENERIC=y
+
+#
+# Memory mapped GPIO drivers
+#
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_CADENCE is not set
+# CONFIG_GPIO_EXAR is not set
+# CONFIG_GPIO_FTGPIO010 is not set
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_LOGICVC is not set
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_SAMA5D2_PIOBU is not set
+# CONFIG_GPIO_SIFIVE is not set
+# CONFIG_GPIO_SYSCON is not set
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_AMD_FCH is not set
+# end of Memory mapped GPIO drivers
+
+#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_ADNP is not set
+# CONFIG_GPIO_GW_PLD is not set
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+CONFIG_GPIO_PCA953X=y
+# CONFIG_GPIO_PCA953X_IRQ is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# end of I2C GPIO expanders
+
+#
+# MFD GPIO expanders
+#
+# end of MFD GPIO expanders
+
+#
+# PCI GPIO expanders
+#
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_PCI_IDIO_16 is not set
+# CONFIG_GPIO_PCIE_IDIO_24 is not set
+# CONFIG_GPIO_RDC321X is not set
+# end of PCI GPIO expanders
+
+#
+# SPI GPIO expanders
+#
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_MAX3191X is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_XRA1403 is not set
+# end of SPI GPIO expanders
+
+#
+# USB GPIO expanders
+#
+# end of USB GPIO expanders
+
+# CONFIG_GPIO_AGGREGATOR is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_AVS is not set
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_GPIO is not set
+# CONFIG_POWER_RESET_GPIO_RESTART is not set
+CONFIG_POWER_RESET_KVX_SCALL_POWEROFF=y
+# CONFIG_POWER_RESET_LTC2952 is not set
+# CONFIG_POWER_RESET_RESTART is not set
+CONFIG_POWER_RESET_SYSCON=y
+# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
+# CONFIG_SYSCON_REBOOT_MODE is not set
+# CONFIG_NVMEM_REBOOT_MODE is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_AD7314 is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM1177 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7310 is not set
+# CONFIG_SENSORS_ADT7410 is not set
+# CONFIG_SENSORS_ADT7411 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_AS370 is not set
+# CONFIG_SENSORS_ASC7621 is not set
+# CONFIG_SENSORS_AXI_FAN_CONTROL is not set
+# CONFIG_SENSORS_ASPEED is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS620 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_FTSTEUTATES is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_G762 is not set
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
+# CONFIG_SENSORS_LINEAGE is not set
+# CONFIG_SENSORS_LTC2945 is not set
+# CONFIG_SENSORS_LTC2947_I2C is not set
+# CONFIG_SENSORS_LTC2947_SPI is not set
+# CONFIG_SENSORS_LTC2990 is not set
+# CONFIG_SENSORS_LTC4151 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4222 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LTC4260 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX16065 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX1668 is not set
+# CONFIG_SENSORS_MAX197 is not set
+# CONFIG_SENSORS_MAX31722 is not set
+# CONFIG_SENSORS_MAX31730 is not set
+# CONFIG_SENSORS_MAX6621 is not set
+# CONFIG_SENSORS_MAX6639 is not set
+# CONFIG_SENSORS_MAX6642 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_MAX6697 is not set
+# CONFIG_SENSORS_MAX31790 is not set
+# CONFIG_SENSORS_MCP3021 is not set
+# CONFIG_SENSORS_TC654 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM73 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LM95234 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_LM95245 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_NTC_THERMISTOR is not set
+# CONFIG_SENSORS_NCT6683 is not set
+# CONFIG_SENSORS_NCT6775 is not set
+# CONFIG_SENSORS_NCT7802 is not set
+# CONFIG_SENSORS_NCT7904 is not set
+# CONFIG_SENSORS_NPCM7XX is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_PMBUS is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_SHT21 is not set
+# CONFIG_SENSORS_SHT3x is not set
+# CONFIG_SENSORS_SHTC1 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_EMC1403 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_EMC6W201 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SCH5627 is not set
+# CONFIG_SENSORS_SCH5636 is not set
+# CONFIG_SENSORS_STTS751 is not set
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_ADC128D818 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_ADS7871 is not set
+# CONFIG_SENSORS_AMC6821 is not set
+# CONFIG_SENSORS_INA209 is not set
+# CONFIG_SENSORS_INA2XX is not set
+# CONFIG_SENSORS_INA3221 is not set
+# CONFIG_SENSORS_TC74 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP102 is not set
+# CONFIG_SENSORS_TMP103 is not set
+# CONFIG_SENSORS_TMP108 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_TMP421 is not set
+# CONFIG_SENSORS_TMP513 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83773G is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+# CONFIG_WATCHDOG_SYSFS is not set
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+CONFIG_KVX_WATCHDOG=y
+# CONFIG_MEN_A21_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
+# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_GATEWORKS_GSC is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_MFD_MP2629 is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# CONFIG_MFD_IQS62X is not set
+# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77620 is not set
+# CONFIG_MFD_MAX77650 is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6360 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RN5T618 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_TI_LMU is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TQMX86 is not set
+# CONFIG_MFD_VX855 is not set
+# CONFIG_MFD_LOCHNAGAR is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
+# CONFIG_MFD_ROHM_BD70528 is not set
+# CONFIG_MFD_ROHM_BD71828 is not set
+# CONFIG_MFD_STPMIC1 is not set
+# CONFIG_MFD_STMFX is not set
+# end of Multifunction device drivers
+
+# CONFIG_REGULATOR is not set
+# CONFIG_RC_CORE is not set
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+# CONFIG_DRM is not set
+
+#
+# ARM devices
+#
+# end of ARM devices
+
+#
+# Frame buffer Devices
+#
+# CONFIG_FB is not set
+# end of Frame buffer Devices
+
+#
+# Backlight & LCD device support
+#
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
+# end of Backlight & LCD device support
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+# end of Console display driver support
+# end of Graphics support
+
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACCUTOUCH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_BETOP_FF is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_COUGAR is not set
+# CONFIG_HID_MACALLY is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CREATIVE_SB0540 is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_GLORIOUS is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_VIEWSONIC is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LENOVO is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MALTRON is not set
+# CONFIG_HID_MAYFLASH is not set
+# CONFIG_HID_REDRAGON is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PENMOUNT is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_RETRODE is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_RMI is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_UDRAW_PS3 is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+# CONFIG_HID_ALPS is not set
+# CONFIG_HID_MCP2221 is not set
+# end of Special HID drivers
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+# end of USB HID support
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID is not set
+# end of I2C HID support
+# end of HID support
+
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+# CONFIG_USB_ULPI_BUS is not set
+# CONFIG_USB_CONN_GPIO is not set
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+# CONFIG_USB_MON is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_MAX3421_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USBIP_CORE is not set
+# CONFIG_USB_CDNS3 is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_DWC3 is not set
+CONFIG_USB_DWC2=y
+# CONFIG_USB_DWC2_HOST is not set
+
+#
+# Gadget/Dual-role mode requires USB Gadget support to be enabled
+#
+# CONFIG_USB_DWC2_PERIPHERAL is not set
+CONFIG_USB_DWC2_DUAL_ROLE=y
+# CONFIG_USB_DWC2_PCI is not set
+# CONFIG_USB_DWC2_DEBUG is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
+# CONFIG_USB_CHIPIDEA is not set
+# CONFIG_USB_ISP1760 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_APPLE_MFI_FASTCHARGE is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HUB_USB251XB is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+
+#
+# USB Physical Layer drivers
+#
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# end of USB Physical Layer drivers
+
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_U_SERIAL_CONSOLE=y
+
+#
+# USB Peripheral Controller
+#
+# CONFIG_USB_FOTG210_UDC is not set
+# CONFIG_USB_GR_UDC is not set
+# CONFIG_USB_R8A66597 is not set
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_SNP_UDC_PLAT is not set
+# CONFIG_USB_M66592 is not set
+# CONFIG_USB_BDC_UDC is not set
+# CONFIG_USB_AMD5536UDC is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_NET2280 is not set
+# CONFIG_USB_GOKU is not set
+# CONFIG_USB_EG20T is not set
+# CONFIG_USB_GADGET_XILINX is not set
+# CONFIG_USB_MAX3420_UDC is not set
+# CONFIG_USB_DUMMY_HCD is not set
+# end of USB Peripheral Controller
+
+CONFIG_USB_LIBCOMPOSITE=y
+CONFIG_USB_F_ACM=y
+CONFIG_USB_U_SERIAL=y
+CONFIG_USB_U_ETHER=y
+CONFIG_USB_F_ECM=y
+# CONFIG_USB_CONFIGFS is not set
+
+#
+# USB Gadget precomposed configurations
+#
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FUNCTIONFS is not set
+# CONFIG_USB_MASS_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_PRINTER is not set
+CONFIG_USB_CDC_COMPOSITE=y
+# CONFIG_USB_G_ACM_MS is not set
+# CONFIG_USB_G_MULTI is not set
+# CONFIG_USB_G_HID is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_RAW_GADGET is not set
+# end of USB Gadget precomposed configurations
+
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
+CONFIG_MMC=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_SDHCI=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_ASPEED is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
+CONFIG_MMC_SDHCI_OF_DWCMSHC=y
+# CONFIG_MMC_SDHCI_CADENCE is not set
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_SDHCI_MILBEAUT is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_SPI is not set
+# CONFIG_MMC_CB710 is not set
+# CONFIG_MMC_VIA_SDMMC is not set
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MMC_USDHI6ROL0 is not set
+# CONFIG_MMC_CQHCI is not set
+# CONFIG_MMC_HSQ is not set
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_MTK is not set
+# CONFIG_MMC_SDHCI_XENON is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+# CONFIG_MMC_SDHCI_AM654 is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_RTC_CLASS is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=m
+CONFIG_DMA_OF=y
+# CONFIG_ALTERA_MSGDMA is not set
+# CONFIG_DW_AXI_DMAC is not set
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_PLX_DMA is not set
+CONFIG_KVX_DMA_NOC=m
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+# CONFIG_DW_DMAC is not set
+# CONFIG_DW_DMAC_PCI is not set
+# CONFIG_DW_EDMA is not set
+# CONFIG_DW_EDMA_PCIE is not set
+# CONFIG_SF_PDMA is not set
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
+# CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_HEAPS is not set
+# end of DMABUF options
+
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VFIO is not set
+# CONFIG_VIRT_DRIVERS is not set
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_MENU=y
+# CONFIG_VIRTIO_PCI is not set
+# CONFIG_VIRTIO_BALLOON is not set
+# CONFIG_VIRTIO_INPUT is not set
+# CONFIG_VIRTIO_MMIO is not set
+# CONFIG_VDPA is not set
+CONFIG_VHOST_MENU=y
+# CONFIG_VHOST_NET is not set
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# end of Microsoft Hyper-V guest support
+
+# CONFIG_GREYBUS is not set
+# CONFIG_STAGING is not set
+# CONFIG_GOLDFISH is not set
+CONFIG_HAVE_CLK=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+# CONFIG_CLK_HSDK is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_SI5341 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_VC5 is not set
+# CONFIG_COMMON_CLK_FIXED_MMIO is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+# CONFIG_MICROCHIP_PIT64B is not set
+# end of Clock Source drivers
+
+CONFIG_MAILBOX=y
+# CONFIG_PLATFORM_MHU is not set
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_KVX_MBOX=y
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+# end of Generic IOMMU Pagetable Support
+
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_OF_IOMMU=y
+CONFIG_IOMMU_DMA=y
+CONFIG_KVX_IOMMU=y
+
+#
+# Remoteproc drivers
+#
+CONFIG_REMOTEPROC=y
+CONFIG_KVX_REMOTEPROC=y
+# end of Remoteproc drivers
+
+#
+# Rpmsg drivers
+#
+CONFIG_RPMSG=y
+CONFIG_RPMSG_CHAR=y
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+CONFIG_RPMSG_VIRTIO=y
+# end of Rpmsg drivers
+
+# CONFIG_SOUNDWIRE is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Amlogic SoC drivers
+#
+# end of Amlogic SoC drivers
+
+#
+# Aspeed SoC drivers
+#
+# end of Aspeed SoC drivers
+
+#
+# Broadcom SoC drivers
+#
+# end of Broadcom SoC drivers
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+# end of NXP/Freescale QorIQ SoC drivers
+
+#
+# i.MX SoC drivers
+#
+# end of i.MX SoC drivers
+
+CONFIG_KVX_SOCINFO=y
+
+#
+# Qualcomm SoC drivers
+#
+# end of Qualcomm SoC drivers
+
+# CONFIG_SOC_TI is not set
+
+#
+# Xilinx SoC drivers
+#
+# CONFIG_XILINX_VCU is not set
+# end of Xilinx SoC drivers
+# end of SOC (System On Chip) specific Drivers
+
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+# CONFIG_NTB is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_PWM is not set
+
+#
+# IRQ chip support
+#
+CONFIG_IRQCHIP=y
+# CONFIG_AL_FIC is not set
+CONFIG_KVX_CORE_INTC=y
+CONFIG_KVX_APIC_GIC=y
+CONFIG_KVX_APIC_MAILBOX=y
+CONFIG_KVX_ITGEN=y
+CONFIG_KVX_PCI_MSI=y
+# end of IRQ chip support
+
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_CADENCE_TORRENT is not set
+# CONFIG_PHY_CADENCE_DPHY is not set
+# CONFIG_PHY_CADENCE_SALVO is not set
+# CONFIG_PHY_FSL_IMX8MQ_USB is not set
+# CONFIG_PHY_MIXEL_MIPI_DPHY is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_PHY_OCELOT_SERDES is not set
+# CONFIG_PHY_SAMSUNG_USB2 is not set
+# end of PHY Subsystem
+
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# end of Performance monitor support
+
+CONFIG_RAS=y
+# CONFIG_USB4 is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# end of Android
+
+# CONFIG_LIBNVDIMM is not set
+# CONFIG_DAX is not set
+CONFIG_NVMEM=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_KVX_OTP_NV=y
+
+#
+# HW tracing support
+#
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+# end of HW tracing support
+
+# CONFIG_FPGA is not set
+# CONFIG_FSI is not set
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+# CONFIG_INTERCONNECT is not set
+# CONFIG_COUNTER is not set
+# CONFIG_MOST is not set
+# end of Device Drivers
+
+#
+# File systems
+#
+# CONFIG_VALIDATE_FS_PARSER is not set
+CONFIG_FS_IOMAP=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=m
+CONFIG_EXT4_USE_FOR_EXT2=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
+CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+# CONFIG_FS_ENCRYPTION is not set
+# CONFIG_FS_VERITY is not set
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_FUSE_FS is not set
+# CONFIG_OVERLAY_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+# end of Caches
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+# end of CD-ROM/DVD Filesystems
+
+#
+# DOS/FAT/EXFAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+# CONFIG_EXFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+# end of DOS/FAT/EXFAT/NT Filesystems
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS_XATTR is not set
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_CONFIGFS_FS=y
+# end of Pseudo filesystems
+
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_FILE_CACHE=y
+# CONFIG_SQUASHFS_FILE_DIRECT is not set
+CONFIG_SQUASHFS_DECOMP_SINGLE=y
+# CONFIG_SQUASHFS_DECOMP_MULTI is not set
+# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
+# CONFIG_SQUASHFS_XATTR is not set
+CONFIG_SQUASHFS_ZLIB=y
+# CONFIG_SQUASHFS_LZ4 is not set
+# CONFIG_SQUASHFS_LZO is not set
+# CONFIG_SQUASHFS_XZ is not set
+# CONFIG_SQUASHFS_ZSTD is not set
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_EROFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+# CONFIG_UNICODE is not set
+CONFIG_IO_WQ=y
+# end of File systems
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf"
+
+#
+# Kernel hardening options
+#
+
+#
+# Memory initialization
+#
+CONFIG_INIT_STACK_NONE=y
+# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
+# end of Memory initialization
+# end of Kernel hardening options
+# end of Security options
+
+CONFIG_CRYPTO=m
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI2=m
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=m
+CONFIG_CRYPTO_SKCIPHER=m
+CONFIG_CRYPTO_SKCIPHER2=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=m
+CONFIG_CRYPTO_RNG2=m
+# CONFIG_CRYPTO_MANAGER is not set
+# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_NULL2=m
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_ENGINE=m
+
+#
+# Public-key cryptography
+#
+# CONFIG_CRYPTO_RSA is not set
+# CONFIG_CRYPTO_DH is not set
+# CONFIG_CRYPTO_ECDH is not set
+# CONFIG_CRYPTO_ECRDSA is not set
+# CONFIG_CRYPTO_CURVE25519 is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_SEQIV is not set
+# CONFIG_CRYPTO_ECHAINIV is not set
+
+#
+# Block modes
+#
+# CONFIG_CRYPTO_CBC is not set
+# CONFIG_CRYPTO_CFB is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_OFB is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_KEYWRAP is not set
+# CONFIG_CRYPTO_ADIANTUM is not set
+# CONFIG_CRYPTO_ESSIV is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_CMAC is not set
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CRC32 is not set
+# CONFIG_CRYPTO_XXHASH is not set
+# CONFIG_CRYPTO_BLAKE2B is not set
+# CONFIG_CRYPTO_BLAKE2S is not set
+# CONFIG_CRYPTO_CRCT10DIF is not set
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_STREEBOG is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_AES_TI is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_DRBG_MENU is not set
+# CONFIG_CRYPTO_JITTERENTROPY is not set
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_USER_API_RNG is not set
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+
+#
+# Crypto library routines
+#
+# CONFIG_CRYPTO_LIB_BLAKE2S is not set
+# CONFIG_CRYPTO_LIB_CHACHA is not set
+# CONFIG_CRYPTO_LIB_CURVE25519 is not set
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+# CONFIG_CRYPTO_LIB_POLY1305 is not set
+# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set
+# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set
+# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
+CONFIG_CRYPTO_DEV_VIRTIO=m
+# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
+# CONFIG_CRYPTO_DEV_CCREE is not set
+# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
+
+#
+# Certificates for signature checking
+#
+# end of Certificates for signature checking
+
+#
+# Library routines
+#
+# CONFIG_PACKING is not set
+CONFIG_BITREVERSE=y
+CONFIG_HAVE_ARCH_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+# CONFIG_CORDIC is not set
+# CONFIG_PRIME_NUMBERS is not set
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC16=m
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+# CONFIG_CRC8 is not set
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_XARRAY_MULTI=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_DMA_DECLARE_COHERENT=y
+CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
+CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y
+CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y
+CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y
+CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y
+CONFIG_DMA_VIRT_OPS=y
+CONFIG_DMA_NONCOHERENT_MMAP=y
+CONFIG_DMA_COHERENT_POOL=y
+CONFIG_DMA_REMAP=y
+CONFIG_DMA_DIRECT_REMAP=y
+# CONFIG_DMA_API_DEBUG is not set
+CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_NLATTR=y
+# CONFIG_IRQ_POLL is not set
+CONFIG_LIBFDT=y
+CONFIG_SBITMAP=y
+# CONFIG_STRING_SELFTEST is not set
+# end of Library routines
+
+CONFIG_GENERIC_IOREMAP=y
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_CALLER is not set
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DYNAMIC_DEBUG_CORE is not set
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# end of printk and dmesg options
+
+#
+# Compile-time checks and compiler options
+#
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_COMPRESSED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+CONFIG_DEBUG_INFO_DWARF4=y
+# CONFIG_DEBUG_INFO_BTF is not set
+CONFIG_GDB_SCRIPTS=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=2048
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_HEADERS_INSTALL is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# end of Compile-time checks and compiler options
+
+#
+# Generic Kernel Debugging Instruments
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_UBSAN is not set
+# end of Generic Kernel Debugging Instruments
+
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_MISC=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_OWNER is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
+CONFIG_KASAN_STACK=1
+# end of Memory Debugging
+
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Oops, Lockups and Hangs
+#
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=-1
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_TEST_LOCKUP is not set
+# end of Debug Oops, Lockups and Hangs
+
+#
+# Scheduler Debugging
+#
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# end of Scheduler Debugging
+
+# CONFIG_DEBUG_TIMEKEEPING is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# end of Lock Debugging (spinlocks, mutexes, etc...)
+
+# CONFIG_STACKTRACE is not set
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+
+#
+# Debug kernel data structures
+#
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PLIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# end of Debug kernel data structures
+
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# end of RCU Debugging
+
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_HWLAT_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_TRACER_SNAPSHOT is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_SYNTH_EVENTS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_SAMPLES is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
+
+#
+# kvx Debugging
+#
+
+#
+# KVX debugging
+#
+# CONFIG_KVX_DEBUG_ASN is not set
+# CONFIG_KVX_DEBUG_TLB_WRITE is not set
+# CONFIG_KVX_DEBUG_TLB_ACCESS is not set
+# CONFIG_KVX_MMU_STATS is not set
+# CONFIG_DEBUG_EXCEPTION_STACK is not set
+# CONFIG_DEBUG_SFR_SET_MASK is not set
+# end of KVX debugging
+# end of kvx Debugging
+
+#
+# Kernel Testing and Coverage
+#
+# CONFIG_KUNIT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_TEST_MIN_HEAP is not set
+# CONFIG_TEST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_REED_SOLOMON_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_HEXDUMP is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_STRSCPY is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_BITFIELD is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_XARRAY is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_IDA is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_BITOPS is not set
+# CONFIG_TEST_VMALLOC is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_BLACKHOLE_DEV is not set
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_TEST_KMOD is not set
+# CONFIG_TEST_MEMCAT_P is not set
+# CONFIG_TEST_STACKINIT is not set
+# CONFIG_TEST_MEMINIT is not set
+# CONFIG_MEMTEST is not set
+# end of Kernel Testing and Coverage
+# end of Kernel hacking
diff --git a/target/kvx/kernel/qemu-kvx b/target/kvx/kernel/qemu-kvx
new file mode 100644
index 000000000..1d953b12e
--- /dev/null
+++ b/target/kvx/kernel/qemu-kvx
@@ -0,0 +1,3311 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/kvx 5.8.12 Kernel Configuration
+#
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=90401
+CONFIG_LD_VERSION=237000000
+CONFIG_CLANG_VERSION=0
+CONFIG_CC_CAN_LINK=y
+CONFIG_CC_CAN_LINK_STATIC=y
+CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_CC_HAS_ASM_INLINE=y
+CONFIG_IRQ_WORK=y
+CONFIG_THREAD_INFO_IN_TASK=y
+
+#
+# General setup
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_BUILD_SALT=""
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_HOSTNAME="KVXlinux"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_WATCH_QUEUE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+# CONFIG_USELIB is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_INJECTION=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_IRQ_IPI=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
+CONFIG_IRQ_MSI_IOMMU=y
+CONFIG_SPARSE_IRQ=y
+# end of IRQ subsystem
+
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+
+#
+# Timers subsystem
+#
+CONFIG_HZ_PERIODIC=y
+# CONFIG_NO_HZ_IDLE is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+# end of Timers subsystem
+
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_PSI is not set
+# end of CPU/Task time and stats accounting
+
+#
+# RCU Subsystem
+#
+CONFIG_TINY_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+CONFIG_TINY_SRCU=y
+# end of RCU Subsystem
+
+# CONFIG_IKCONFIG is not set
+# CONFIG_IKHEADERS is not set
+CONFIG_LOG_BUF_SHIFT=17
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
+CONFIG_GENERIC_SCHED_CLOCK=y
+
+#
+# Scheduler features
+#
+# end of Scheduler features
+
+CONFIG_CC_HAS_INT128=y
+# CONFIG_CGROUPS is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio"
+CONFIG_INITRAMFS_ROOT_UID=0
+CONFIG_INITRAMFS_ROOT_GID=0
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
+CONFIG_INITRAMFS_COMPRESSION_GZIP=y
+# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
+# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
+# CONFIG_INITRAMFS_COMPRESSION_XZ is not set
+# CONFIG_INITRAMFS_COMPRESSION_LZO is not set
+# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set
+# CONFIG_INITRAMFS_COMPRESSION_NONE is not set
+# CONFIG_BOOT_CONFIG is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_BPF=y
+CONFIG_EXPERT=y
+CONFIG_MULTIUSER=y
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_IO_URING=y
+CONFIG_ADVISE_SYSCALLS=y
+CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_BPF_SYSCALL is not set
+# CONFIG_USERFAULTFD is not set
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+# CONFIG_PC104 is not set
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+# end of Kernel Performance Events And Counters
+
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_FREELIST_HARDENED is not set
+# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set
+# CONFIG_PROFILING is not set
+# end of General setup
+
+CONFIG_64BIT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_MMU=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_HAVE_COPY_THREAD_TLS=y
+CONFIG_ZONE_DMA32=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_KVX=y
+CONFIG_PGTABLE_LEVELS=3
+
+#
+# System setup
+#
+CONFIG_POISON_INITMEM=y
+CONFIG_KVX_PHYS_OFFSET=0x100000000
+CONFIG_KVX_PAGE_OFFSET=0xFFFFFF8000000000
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_STACK_MAX_DEPTH_TO_PRINT=24
+CONFIG_L2_CACHE=y
+CONFIG_SECURE_DAME_HANDLING=y
+# CONFIG_CACHECTL_UNSAFE_PHYS_OPERATIONS is not set
+CONFIG_ENABLE_TCA=y
+# CONFIG_SMP is not set
+CONFIG_KVX_4K_PAGES=y
+# CONFIG_KVX_64K_PAGES is not set
+CONFIG_KVX_PAGE_SHIFT=12
+CONFIG_CMDLINE=""
+# end of System setup
+
+#
+# System Type
+#
+CONFIG_KVX_SUBARCH_KV3_1=y
+# CONFIG_KVX_SUBARCH_KV3_2 is not set
+# end of System Type
+
+#
+# Kernel Features
+#
+CONFIG_HZ_100=y
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+# end of Kernel Features
+
+#
+# General architecture-dependent options
+#
+CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_ASM_MODVERSIONS=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_MODULES_USE_ELF_RELA=y
+# CONFIG_COMPAT_32BIT_TIME is not set
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+
+#
+# GCOV-based kernel profiling
+#
+# end of GCOV-based kernel profiling
+# end of General architecture-dependent options
+
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+CONFIG_ASM_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_BLK_SCSI_REQUEST=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_DEV_ZONED is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+# CONFIG_BLK_WBT is not set
+# CONFIG_BLK_SED_OPAL is not set
+# CONFIG_BLK_INLINE_ENCRYPTION is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# end of Partition Types
+
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_MQ_VIRTIO=y
+
+#
+# IO Schedulers
+#
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_IOSCHED_BFQ is not set
+# end of IO Schedulers
+
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
+# end of Executable file formats
+
+#
+# Memory Management options
+#
+CONFIG_SELECT_MEMORY_MODEL=y
+# CONFIG_FLATMEM_MANUAL is not set
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_HAVE_MEMORY_PRESENT=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+# CONFIG_PAGE_REPORTING is not set
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
+# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
+# CONFIG_IDLE_PAGE_TRACKING is not set
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_BENCHMARK is not set
+# CONFIG_READ_ONLY_THP_FOR_FS is not set
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+# end of Memory Management options
+
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+CONFIG_UNIX_SCM=y
+# CONFIG_UNIX_DIAG is not set
+# CONFIG_TLS is not set
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+CONFIG_NET_IP_TUNNEL=y
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_NET_IPVTI is not set
+# CONFIG_NET_FOU is not set
+# CONFIG_NET_FOU_IP_TUNNELS is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+CONFIG_INET_TUNNEL=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_UDP_DIAG is not set
+# CONFIG_INET_RAW_DIAG is not set
+# CONFIG_INET_DIAG_DESTROY is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
+# CONFIG_IPV6_VTI is not set
+CONFIG_IPV6_SIT=y
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
+# CONFIG_IPV6_RPL_LWTUNNEL is not set
+# CONFIG_MPTCP is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NET_PTP_CLASSIFY=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_ADVANCED=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+# CONFIG_NETFILTER_NETLINK_ACCT is not set
+# CONFIG_NETFILTER_NETLINK_QUEUE is not set
+# CONFIG_NETFILTER_NETLINK_LOG is not set
+# CONFIG_NETFILTER_NETLINK_OSF is not set
+CONFIG_NF_CONNTRACK=m
+# CONFIG_NF_LOG_NETDEV is not set
+# CONFIG_NF_CONNTRACK_MARK is not set
+# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_PROCFS=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
+# CONFIG_NF_CONNTRACK_LABELS is not set
+CONFIG_NF_CT_PROTO_DCCP=y
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
+# CONFIG_NF_CONNTRACK_AMANDA is not set
+# CONFIG_NF_CONNTRACK_FTP is not set
+# CONFIG_NF_CONNTRACK_H323 is not set
+# CONFIG_NF_CONNTRACK_IRC is not set
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+# CONFIG_NF_CONNTRACK_SNMP is not set
+# CONFIG_NF_CONNTRACK_PPTP is not set
+# CONFIG_NF_CONNTRACK_SANE is not set
+# CONFIG_NF_CONNTRACK_SIP is not set
+# CONFIG_NF_CONNTRACK_TFTP is not set
+# CONFIG_NF_CT_NETLINK is not set
+CONFIG_NF_NAT=m
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=m
+
+#
+# Xtables combined modules
+#
+# CONFIG_NETFILTER_XT_MARK is not set
+# CONFIG_NETFILTER_XT_CONNMARK is not set
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_HMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set
+# CONFIG_NETFILTER_XT_TARGET_LOG is not set
+# CONFIG_NETFILTER_XT_TARGET_MARK is not set
+CONFIG_NETFILTER_XT_NAT=m
+# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
+# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
+# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
+# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+# CONFIG_NETFILTER_XT_TARGET_MASQUERADE is not set
+# CONFIG_NETFILTER_XT_TARGET_TEE is not set
+# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
+
+#
+# Xtables matches
+#
+# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_BPF is not set
+# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set
+# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
+# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
+# CONFIG_NETFILTER_XT_MATCH_CPU is not set
+# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
+# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set
+# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
+# CONFIG_NETFILTER_XT_MATCH_ECN is not set
+# CONFIG_NETFILTER_XT_MATCH_ESP is not set
+# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
+# CONFIG_NETFILTER_XT_MATCH_HL is not set
+# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
+# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
+# CONFIG_NETFILTER_XT_MATCH_L2TP is not set
+# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
+# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
+# CONFIG_NETFILTER_XT_MATCH_MAC is not set
+# CONFIG_NETFILTER_XT_MATCH_MARK is not set
+# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
+# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set
+# CONFIG_NETFILTER_XT_MATCH_OSF is not set
+# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
+# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
+# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
+# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
+# CONFIG_NETFILTER_XT_MATCH_REALM is not set
+# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
+# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
+# CONFIG_NETFILTER_XT_MATCH_STATE is not set
+# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
+# CONFIG_NETFILTER_XT_MATCH_STRING is not set
+# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
+# CONFIG_NETFILTER_XT_MATCH_TIME is not set
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+# end of Core Netfilter Configuration
+
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+# CONFIG_NF_SOCKET_IPV4 is not set
+# CONFIG_NF_TPROXY_IPV4 is not set
+# CONFIG_NF_DUP_IPV4 is not set
+# CONFIG_NF_LOG_ARP is not set
+# CONFIG_NF_LOG_IPV4 is not set
+# CONFIG_NF_REJECT_IPV4 is not set
+CONFIG_IP_NF_IPTABLES=m
+# CONFIG_IP_NF_MATCH_AH is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_FILTER is not set
+# CONFIG_IP_NF_TARGET_SYNPROXY is not set
+CONFIG_IP_NF_NAT=m
+# CONFIG_IP_NF_TARGET_MASQUERADE is not set
+# CONFIG_IP_NF_TARGET_NETMAP is not set
+# CONFIG_IP_NF_TARGET_REDIRECT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+# end of IP: Netfilter Configuration
+
+#
+# IPv6: Netfilter Configuration
+#
+# CONFIG_NF_SOCKET_IPV6 is not set
+# CONFIG_NF_TPROXY_IPV6 is not set
+# CONFIG_NF_DUP_IPV6 is not set
+# CONFIG_NF_REJECT_IPV6 is not set
+# CONFIG_NF_LOG_IPV6 is not set
+# CONFIG_IP6_NF_IPTABLES is not set
+# end of IPv6: Netfilter Configuration
+
+CONFIG_NF_DEFRAG_IPV6=m
+# CONFIG_NF_CONNTRACK_BRIDGE is not set
+# CONFIG_BPFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+CONFIG_DCB=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_NET_NSH is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+# CONFIG_QRTR is not set
+# CONFIG_NET_NCSI is not set
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# end of Network testing
+# end of Networking options
+
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
+# CONFIG_LWTUNNEL is not set
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+CONFIG_PAGE_POOL=y
+# CONFIG_FAILOVER is not set
+
+#
+# Device Drivers
+#
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_HOTPLUG_PCI_PCIE=y
+CONFIG_PCIEAER=y
+CONFIG_PCIEAER_INJECT=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEASPM is not set
+CONFIG_PCIE_DPC=y
+# CONFIG_PCIE_PTM is not set
+# CONFIG_PCIE_BW is not set
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCI_PRI is not set
+# CONFIG_PCI_PASID is not set
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# PCI controller drivers
+#
+CONFIG_PCIE_KVX_NWL=y
+# CONFIG_PCIE_KVX_ERR_INJECT_SYSFS is not set
+# CONFIG_PCI_FTPCI100 is not set
+# CONFIG_PCI_HOST_GENERIC is not set
+# CONFIG_PCIE_XILINX is not set
+
+#
+# DesignWare PCI Core Support
+#
+# CONFIG_PCIE_DW_PLAT_HOST is not set
+# CONFIG_PCI_MESON is not set
+# end of DesignWare PCI Core Support
+
+#
+# Mobiveil PCIe Core Support
+#
+# end of Mobiveil PCIe Core Support
+
+#
+# Cadence PCIe controllers support
+#
+# CONFIG_PCIE_CADENCE_PLAT_HOST is not set
+# end of Cadence PCIe controllers support
+# end of PCI controller drivers
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
+# end of PCI Endpoint
+
+#
+# PCI switch controller drivers
+#
+# CONFIG_PCI_SW_SWITCHTEC is not set
+# end of PCI switch controller drivers
+
+# CONFIG_PCCARD is not set
+# CONFIG_RAPIDIO is not set
+
+#
+# Generic Driver Options
+#
+# CONFIG_UEVENT_HELPER is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+#
+# Firmware loader
+#
+CONFIG_FW_LOADER=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER is not set
+# CONFIG_FW_LOADER_COMPRESS is not set
+# end of Firmware loader
+
+CONFIG_WANT_DEV_COREDUMP=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_DEVICES=y
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+# end of Generic Driver Options
+
+#
+# Bus devices
+#
+# CONFIG_MOXTET is not set
+# CONFIG_MHI_BUS is not set
+# end of Bus devices
+
+# CONFIG_CONNECTOR is not set
+# CONFIG_GNSS is not set
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+
+#
+# Partition parsers
+#
+# CONFIG_MTD_AR7_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# end of Partition parsers
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP is not set
+# CONFIG_MTD_PARTITIONED_MASTER is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# end of RAM/ROM/Flash chip drivers
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+# end of Mapping drivers for chip access
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_MCHP23K256 is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOCG3 is not set
+# end of Self-contained MTD device drivers
+
+# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD_RAW_NAND is not set
+# CONFIG_MTD_SPI_NAND is not set
+
+#
+# LPDDR & LPDDR2 PCM memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+# end of LPDDR & LPDDR2 PCM memory drivers
+
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+# CONFIG_MTD_UBI is not set
+# CONFIG_MTD_HYPERBUS is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=m
+CONFIG_OF_RESERVED_MEM=y
+# CONFIG_OF_OVERLAY is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SKD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_VIRTIO_BLK is not set
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_BLK_DEV_RSXX is not set
+
+#
+# NVME Support
+#
+CONFIG_NVME_CORE=y
+CONFIG_BLK_DEV_NVME=y
+# CONFIG_NVME_MULTIPATH is not set
+# CONFIG_NVME_HWMON is not set
+# CONFIG_NVME_FC is not set
+# CONFIG_NVME_TCP is not set
+# CONFIG_NVME_TARGET is not set
+# end of NVME Support
+
+#
+# Misc devices
+#
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+# CONFIG_XILINX_SDFEC is not set
+# CONFIG_PVPANIC is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_EEPROM_93XX46 is not set
+# CONFIG_EEPROM_IDT_89HPESX is not set
+# CONFIG_EEPROM_EE1004 is not set
+# end of EEPROM support
+
+# CONFIG_CB710_CORE is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# end of Texas Instruments shared transport line discipline
+
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# Intel MIC & related support
+#
+# CONFIG_VOP_BUS is not set
+# end of Intel MIC & related support
+
+# CONFIG_GENWQE is not set
+# CONFIG_ECHO is not set
+# CONFIG_MISC_ALCOR_PCI is not set
+# CONFIG_MISC_RTSX_PCI is not set
+# CONFIG_MISC_RTSX_USB is not set
+# CONFIG_HABANA_AI is not set
+# CONFIG_UACCE is not set
+# end of Misc devices
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+# CONFIG_SCSI is not set
+# end of SCSI device support
+
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_TARGET_CORE is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_FIREWIRE_NOSY is not set
+# end of IEEE 1394 (FireWire) support
+
+CONFIG_NETDEVICES=y
+CONFIG_MII=m
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_WIREGUARD is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_IPVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_GENEVE is not set
+# CONFIG_BAREUDP is not set
+# CONFIG_GTP is not set
+# CONFIG_MACSEC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_TUN is not set
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_VETH is not set
+# CONFIG_VIRTIO_NET is not set
+# CONFIG_NLMON is not set
+# CONFIG_ARCNET is not set
+
+#
+# Distributed Switch Architecture drivers
+#
+# end of Distributed Switch Architecture drivers
+
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_VORTEX is not set
+# CONFIG_TYPHOON is not set
+CONFIG_NET_VENDOR_ADAPTEC=y
+# CONFIG_ADAPTEC_STARFIRE is not set
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_ET131X is not set
+CONFIG_NET_VENDOR_ALACRITECH=y
+# CONFIG_SLICOSS is not set
+CONFIG_NET_VENDOR_ALTEON=y
+# CONFIG_ACENIC is not set
+# CONFIG_ALTERA_TSE is not set
+CONFIG_NET_VENDOR_AMAZON=y
+# CONFIG_ENA_ETHERNET is not set
+CONFIG_NET_VENDOR_AMD=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_PCNET32 is not set
+CONFIG_NET_VENDOR_AQUANTIA=y
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ATHEROS=y
+# CONFIG_ATL2 is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_ALX is not set
+CONFIG_NET_VENDOR_AURORA=y
+# CONFIG_AURORA_NB8800 is not set
+CONFIG_NET_VENDOR_BROADCOM=y
+# CONFIG_B44 is not set
+# CONFIG_BCMGENET is not set
+# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2X is not set
+# CONFIG_SYSTEMPORT is not set
+# CONFIG_BNXT is not set
+CONFIG_NET_VENDOR_BROCADE=y
+# CONFIG_BNA is not set
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_MACB is not set
+CONFIG_NET_VENDOR_CAVIUM=y
+# CONFIG_THUNDER_NIC_PF is not set
+# CONFIG_THUNDER_NIC_VF is not set
+# CONFIG_THUNDER_NIC_BGX is not set
+# CONFIG_THUNDER_NIC_RGX is not set
+# CONFIG_CAVIUM_PTP is not set
+# CONFIG_LIQUIDIO is not set
+# CONFIG_LIQUIDIO_VF is not set
+CONFIG_NET_VENDOR_CHELSIO=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_CHELSIO_T4 is not set
+# CONFIG_CHELSIO_T4VF is not set
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_ENIC is not set
+CONFIG_NET_VENDOR_CORTINA=y
+# CONFIG_GEMINI_ETHERNET is not set
+# CONFIG_DNET is not set
+CONFIG_NET_VENDOR_DEC=y
+# CONFIG_NET_TULIP is not set
+CONFIG_NET_VENDOR_DLINK=y
+# CONFIG_DL2K is not set
+# CONFIG_SUNDANCE is not set
+CONFIG_NET_VENDOR_EMULEX=y
+# CONFIG_BE2NET is not set
+CONFIG_NET_VENDOR_EZCHIP=y
+# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
+CONFIG_NET_VENDOR_GOOGLE=y
+# CONFIG_GVE is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_INTEL=y
+# CONFIG_E100 is not set
+# CONFIG_E1000 is not set
+CONFIG_E1000E=y
+# CONFIG_IGB is not set
+# CONFIG_IGBVF is not set
+# CONFIG_IXGB is not set
+# CONFIG_IXGBE is not set
+# CONFIG_IXGBEVF is not set
+# CONFIG_I40E is not set
+# CONFIG_I40EVF is not set
+# CONFIG_ICE is not set
+# CONFIG_FM10K is not set
+# CONFIG_IGC is not set
+# CONFIG_JME is not set
+CONFIG_NET_VENDOR_MARVELL=y
+# CONFIG_MVMDIO is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX5_CORE is not set
+# CONFIG_MLXSW_CORE is not set
+# CONFIG_MLXFW is not set
+CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_KSZ884X_PCI is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_ENC28J60 is not set
+# CONFIG_ENCX24J600 is not set
+# CONFIG_LAN743X is not set
+CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_NET_VENDOR_MYRI=y
+# CONFIG_MYRI10GE is not set
+# CONFIG_FEALNX is not set
+CONFIG_NET_VENDOR_NATSEMI=y
+# CONFIG_NATSEMI is not set
+# CONFIG_NS83820 is not set
+CONFIG_NET_VENDOR_NETERION=y
+# CONFIG_S2IO is not set
+# CONFIG_VXGE is not set
+CONFIG_NET_VENDOR_NETRONOME=y
+# CONFIG_NFP is not set
+CONFIG_NET_VENDOR_NI=y
+# CONFIG_NI_XGE_MANAGEMENT_ENET is not set
+CONFIG_NET_VENDOR_8390=y
+# CONFIG_NE2K_PCI is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+# CONFIG_FORCEDETH is not set
+CONFIG_NET_VENDOR_OKI=y
+# CONFIG_ETHOC is not set
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_NET_VENDOR_PENSANDO=y
+# CONFIG_IONIC is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_QLCNIC is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_QED is not set
+CONFIG_NET_VENDOR_QUALCOMM=y
+# CONFIG_QCA7000_SPI is not set
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_RMNET is not set
+CONFIG_NET_VENDOR_RDC=y
+# CONFIG_R6040 is not set
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_R8169 is not set
+CONFIG_NET_VENDOR_RENESAS=y
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_NET_VENDOR_SAMSUNG=y
+# CONFIG_SXGBE_ETH is not set
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
+# CONFIG_SFC is not set
+# CONFIG_SFC_FALCON is not set
+CONFIG_NET_VENDOR_SILAN=y
+# CONFIG_SC92031 is not set
+CONFIG_NET_VENDOR_SIS=y
+# CONFIG_SIS900 is not set
+# CONFIG_SIS190 is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_SMSC9420 is not set
+CONFIG_NET_VENDOR_SOCIONEXT=y
+CONFIG_NET_VENDOR_STMICRO=y
+# CONFIG_STMMAC_ETH is not set
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NIU is not set
+CONFIG_NET_VENDOR_SYNOPSYS=y
+# CONFIG_DWC_XLGMAC is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+# CONFIG_TEHUTI is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_CPSW_PHY_SEL is not set
+# CONFIG_TLAN is not set
+CONFIG_NET_VENDOR_VIA=y
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_VELOCITY is not set
+CONFIG_NET_VENDOR_WIZNET=y
+# CONFIG_WIZNET_W5100 is not set
+# CONFIG_WIZNET_W5300 is not set
+CONFIG_NET_VENDOR_XILINX=y
+# CONFIG_XILINX_AXI_EMAC is not set
+# CONFIG_XILINX_LL_TEMAC is not set
+CONFIG_NET_VENDOR_KALRAY=y
+CONFIG_NET_KVX_SOC=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_MDIO_DEVICE=m
+CONFIG_MDIO_BUS=m
+# CONFIG_MDIO_BCM_UNIMAC is not set
+CONFIG_MDIO_BITBANG=m
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_BUS_MUX_MULTIPLEXER is not set
+CONFIG_MDIO_GPIO=m
+# CONFIG_MDIO_HISI_FEMAC is not set
+CONFIG_MDIO_I2C=m
+# CONFIG_MDIO_IPQ4019 is not set
+# CONFIG_MDIO_IPQ8064 is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+# CONFIG_MDIO_MVUSB is not set
+# CONFIG_MDIO_OCTEON is not set
+# CONFIG_MDIO_THUNDER is not set
+# CONFIG_MDIO_XPCS is not set
+CONFIG_PHYLINK=m
+CONFIG_PHYLIB=m
+CONFIG_SWPHY=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_SFP=m
+# CONFIG_ADIN_PHY is not set
+# CONFIG_AMD_PHY is not set
+# CONFIG_AQUANTIA_PHY is not set
+# CONFIG_AX88796B_PHY is not set
+# CONFIG_BCM7XXX_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM54140_PHY is not set
+# CONFIG_BCM84881_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_CORTINA_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_DP83822_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+# CONFIG_DP83869_PHY is not set
+CONFIG_FIXED_PHY=m
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_INTEL_XWAY_PHY is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_LXT_PHY is not set
+CONFIG_MARVELL_PHY=m
+# CONFIG_MARVELL_10G_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_MICROCHIP_PHY is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+# CONFIG_MICROSEMI_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_NXP_TJA11XX_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_TERANETICS_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_XILINX_GMII2RGMII is not set
+# CONFIG_MICREL_KS8995MA is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+CONFIG_USB_NET_DRIVERS=y
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_RTL8152 is not set
+# CONFIG_USB_LAN78XX is not set
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_CDC_EEM is not set
+CONFIG_USB_NET_CDC_NCM=m
+# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
+# CONFIG_USB_NET_CDC_MBIM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SR9800 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
+CONFIG_USB_NET_SMSC95XX=m
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
+CONFIG_USB_NET_CDC_SUBSET=m
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_USB_NET_CX82310_ETH is not set
+# CONFIG_USB_NET_KALMIA is not set
+# CONFIG_USB_NET_QMI_WWAN is not set
+# CONFIG_USB_NET_INT51X1 is not set
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
+# CONFIG_USB_VL600 is not set
+# CONFIG_USB_NET_CH9200 is not set
+# CONFIG_USB_NET_AQC111 is not set
+# CONFIG_WLAN is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_VMXNET3 is not set
+# CONFIG_NET_FAILOVER is not set
+CONFIG_NET_TI_RTM=m
+# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
+# CONFIG_INPUT_MATRIXKMAP is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1050 is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+# CONFIG_KEYBOARD_BCM is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_FOCALTECH=y
+CONFIG_MOUSE_PS2_SMBUS=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_ELAN_I2C is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
+# CONFIG_USERIO is not set
+# CONFIG_GAMEPORT is not set
+# end of Hardware I/O ports
+# end of Input device support
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_LDISC_AUTOLOAD=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_16550A_VARIANTS=y
+# CONFIG_SERIAL_8250_FINTEK is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+# CONFIG_SERIAL_8250_ASPEED_VUART is not set
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_DW=y
+# CONFIG_SERIAL_8250_RT288X is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_UARTLITE is not set
+# CONFIG_SERIAL_KVX_JTAG_COMM is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_SIFIVE is not set
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_SC16IS7XX is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_RP2 is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_FSL_LINFLEXUART is not set
+# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
+CONFIG_SERIAL_KVX_SCALL_COMM=y
+# CONFIG_SERIAL_SPRD is not set
+# end of Serial drivers
+
+CONFIG_SERIAL_MCTRL_GPIO=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_NOZOMI is not set
+# CONFIG_NULL_TTY is not set
+# CONFIG_TRACE_SINK is not set
+# CONFIG_SERIAL_DEV_BUS is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_VIRTIO_CONSOLE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMB_DEVICE_INTERFACE is not set
+CONFIG_HW_RANDOM=m
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_VIRTIO is not set
+# CONFIG_HW_RANDOM_CCTRNG is not set
+# CONFIG_APPLICOM is not set
+CONFIG_DEVMEM=y
+# CONFIG_DEVKMEM is not set
+# CONFIG_RAW_DRIVER is not set
+CONFIG_DEVPORT=y
+# CONFIG_TCG_TPM is not set
+# CONFIG_XILLYBUS is not set
+# end of Character devices
+
+# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_NVIDIA_GPU is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+CONFIG_I2C_DESIGNWARE_CORE=y
+CONFIG_I2C_DESIGNWARE_SLAVE=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_RK3X is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# end of I2C Hardware Bus support
+
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_SLAVE=y
+# CONFIG_I2C_SLAVE_EEPROM is not set
+CONFIG_I2C_SLAVE_USPACE=y
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# end of I2C support
+
+# CONFIG_I3C is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_CADENCE is not set
+CONFIG_SPI_DESIGNWARE=y
+# CONFIG_SPI_DW_DMA is not set
+# CONFIG_SPI_DW_PCI is not set
+CONFIG_SPI_DW_MMIO=y
+# CONFIG_SPI_NXP_FLEXSPI is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PXA2XX is not set
+# CONFIG_SPI_ROCKCHIP is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_SIFIVE is not set
+# CONFIG_SPI_MXIC is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
+# CONFIG_SPI_AMD is not set
+
+#
+# SPI Multiplexer support
+#
+# CONFIG_SPI_MUX is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_LOOPBACK_TEST is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_SLAVE is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+# CONFIG_NTP_PPS is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set
+# CONFIG_PTP_1588_CLOCK_IDTCM is not set
+# end of PTP clock support
+
+CONFIG_PINCTRL=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_PINMUX=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
+CONFIG_PINCTRL_SINGLE=y
+# CONFIG_PINCTRL_SX150X is not set
+# CONFIG_PINCTRL_STMFX is not set
+# CONFIG_PINCTRL_OCELOT is not set
+CONFIG_GPIO_DWAPB=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+CONFIG_GPIO_GENERIC=y
+
+#
+# Memory mapped GPIO drivers
+#
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_CADENCE is not set
+# CONFIG_GPIO_EXAR is not set
+# CONFIG_GPIO_FTGPIO010 is not set
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_LOGICVC is not set
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_SAMA5D2_PIOBU is not set
+# CONFIG_GPIO_SIFIVE is not set
+# CONFIG_GPIO_SYSCON is not set
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_AMD_FCH is not set
+# end of Memory mapped GPIO drivers
+
+#
+# I2C GPIO expanders
+#
+# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_ADNP is not set
+# CONFIG_GPIO_GW_PLD is not set
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+CONFIG_GPIO_PCA953X=y
+# CONFIG_GPIO_PCA953X_IRQ is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# end of I2C GPIO expanders
+
+#
+# MFD GPIO expanders
+#
+# end of MFD GPIO expanders
+
+#
+# PCI GPIO expanders
+#
+# CONFIG_GPIO_BT8XX is not set
+# CONFIG_GPIO_PCI_IDIO_16 is not set
+# CONFIG_GPIO_PCIE_IDIO_24 is not set
+# CONFIG_GPIO_RDC321X is not set
+# end of PCI GPIO expanders
+
+#
+# SPI GPIO expanders
+#
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_MAX3191X is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_XRA1403 is not set
+# end of SPI GPIO expanders
+
+#
+# USB GPIO expanders
+#
+# end of USB GPIO expanders
+
+# CONFIG_GPIO_AGGREGATOR is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_AVS is not set
+CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_GPIO is not set
+# CONFIG_POWER_RESET_GPIO_RESTART is not set
+CONFIG_POWER_RESET_KVX_SCALL_POWEROFF=y
+# CONFIG_POWER_RESET_LTC2952 is not set
+# CONFIG_POWER_RESET_RESTART is not set
+CONFIG_POWER_RESET_SYSCON=y
+# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
+# CONFIG_SYSCON_REBOOT_MODE is not set
+# CONFIG_NVMEM_REBOOT_MODE is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_AD7314 is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM1177 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7310 is not set
+# CONFIG_SENSORS_ADT7410 is not set
+# CONFIG_SENSORS_ADT7411 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_AS370 is not set
+# CONFIG_SENSORS_ASC7621 is not set
+# CONFIG_SENSORS_AXI_FAN_CONTROL is not set
+# CONFIG_SENSORS_ASPEED is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS620 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_FTSTEUTATES is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_G762 is not set
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
+# CONFIG_SENSORS_LINEAGE is not set
+# CONFIG_SENSORS_LTC2945 is not set
+# CONFIG_SENSORS_LTC2947_I2C is not set
+# CONFIG_SENSORS_LTC2947_SPI is not set
+# CONFIG_SENSORS_LTC2990 is not set
+# CONFIG_SENSORS_LTC4151 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4222 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LTC4260 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX16065 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX1668 is not set
+# CONFIG_SENSORS_MAX197 is not set
+# CONFIG_SENSORS_MAX31722 is not set
+# CONFIG_SENSORS_MAX31730 is not set
+# CONFIG_SENSORS_MAX6621 is not set
+# CONFIG_SENSORS_MAX6639 is not set
+# CONFIG_SENSORS_MAX6642 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_MAX6697 is not set
+# CONFIG_SENSORS_MAX31790 is not set
+# CONFIG_SENSORS_MCP3021 is not set
+# CONFIG_SENSORS_TC654 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM73 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LM95234 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_LM95245 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_NTC_THERMISTOR is not set
+# CONFIG_SENSORS_NCT6683 is not set
+# CONFIG_SENSORS_NCT6775 is not set
+# CONFIG_SENSORS_NCT7802 is not set
+# CONFIG_SENSORS_NCT7904 is not set
+# CONFIG_SENSORS_NPCM7XX is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_PMBUS is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_SHT21 is not set
+# CONFIG_SENSORS_SHT3x is not set
+# CONFIG_SENSORS_SHTC1 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_EMC1403 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_EMC6W201 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SCH5627 is not set
+# CONFIG_SENSORS_SCH5636 is not set
+# CONFIG_SENSORS_STTS751 is not set
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_ADC128D818 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_ADS7871 is not set
+# CONFIG_SENSORS_AMC6821 is not set
+# CONFIG_SENSORS_INA209 is not set
+# CONFIG_SENSORS_INA2XX is not set
+# CONFIG_SENSORS_INA3221 is not set
+# CONFIG_SENSORS_TC74 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP102 is not set
+# CONFIG_SENSORS_TMP103 is not set
+# CONFIG_SENSORS_TMP108 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_TMP421 is not set
+# CONFIG_SENSORS_TMP513 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83773G is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+# CONFIG_WATCHDOG_SYSFS is not set
+
+#
+# Watchdog Pretimeout Governors
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_GPIO_WATCHDOG is not set
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+CONFIG_KVX_WATCHDOG=y
+# CONFIG_MEN_A21_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
+# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_GATEWORKS_GSC is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_MFD_MP2629 is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# CONFIG_MFD_IQS62X is not set
+# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77620 is not set
+# CONFIG_MFD_MAX77650 is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6360 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RN5T618 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_TI_LMU is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TQMX86 is not set
+# CONFIG_MFD_VX855 is not set
+# CONFIG_MFD_LOCHNAGAR is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
+# CONFIG_MFD_ROHM_BD70528 is not set
+# CONFIG_MFD_ROHM_BD71828 is not set
+# CONFIG_MFD_STPMIC1 is not set
+# CONFIG_MFD_STMFX is not set
+# end of Multifunction device drivers
+
+# CONFIG_REGULATOR is not set
+# CONFIG_RC_CORE is not set
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+# CONFIG_DRM is not set
+
+#
+# ARM devices
+#
+# end of ARM devices
+
+#
+# Frame buffer Devices
+#
+# CONFIG_FB is not set
+# end of Frame buffer Devices
+
+#
+# Backlight & LCD device support
+#
+# CONFIG_LCD_CLASS_DEVICE is not set
+# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
+# end of Backlight & LCD device support
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+# end of Console display driver support
+# end of Graphics support
+
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACCUTOUCH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_BETOP_FF is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_COUGAR is not set
+# CONFIG_HID_MACALLY is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CREATIVE_SB0540 is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_GLORIOUS is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_VIEWSONIC is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LENOVO is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MALTRON is not set
+# CONFIG_HID_MAYFLASH is not set
+# CONFIG_HID_REDRAGON is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PENMOUNT is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_RETRODE is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_RMI is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_UDRAW_PS3 is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+# CONFIG_HID_ALPS is not set
+# CONFIG_HID_MCP2221 is not set
+# end of Special HID drivers
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+# end of USB HID support
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID is not set
+# end of I2C HID support
+# end of HID support
+
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+# CONFIG_USB_ULPI_BUS is not set
+# CONFIG_USB_CONN_GPIO is not set
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+# CONFIG_USB_MON is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_MAX3421_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USBIP_CORE is not set
+# CONFIG_USB_CDNS3 is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_DWC3 is not set
+CONFIG_USB_DWC2=y
+# CONFIG_USB_DWC2_HOST is not set
+
+#
+# Gadget/Dual-role mode requires USB Gadget support to be enabled
+#
+# CONFIG_USB_DWC2_PERIPHERAL is not set
+CONFIG_USB_DWC2_DUAL_ROLE=y
+# CONFIG_USB_DWC2_PCI is not set
+# CONFIG_USB_DWC2_DEBUG is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
+# CONFIG_USB_CHIPIDEA is not set
+# CONFIG_USB_ISP1760 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_APPLE_MFI_FASTCHARGE is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HUB_USB251XB is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+
+#
+# USB Physical Layer drivers
+#
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# end of USB Physical Layer drivers
+
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_U_SERIAL_CONSOLE=y
+
+#
+# USB Peripheral Controller
+#
+# CONFIG_USB_FOTG210_UDC is not set
+# CONFIG_USB_GR_UDC is not set
+# CONFIG_USB_R8A66597 is not set
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_SNP_UDC_PLAT is not set
+# CONFIG_USB_M66592 is not set
+# CONFIG_USB_BDC_UDC is not set
+# CONFIG_USB_AMD5536UDC is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_NET2280 is not set
+# CONFIG_USB_GOKU is not set
+# CONFIG_USB_EG20T is not set
+# CONFIG_USB_GADGET_XILINX is not set
+# CONFIG_USB_MAX3420_UDC is not set
+# CONFIG_USB_DUMMY_HCD is not set
+# end of USB Peripheral Controller
+
+CONFIG_USB_LIBCOMPOSITE=y
+CONFIG_USB_F_ACM=y
+CONFIG_USB_U_SERIAL=y
+CONFIG_USB_U_ETHER=y
+CONFIG_USB_F_ECM=y
+# CONFIG_USB_CONFIGFS is not set
+
+#
+# USB Gadget precomposed configurations
+#
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FUNCTIONFS is not set
+# CONFIG_USB_MASS_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_PRINTER is not set
+CONFIG_USB_CDC_COMPOSITE=y
+# CONFIG_USB_G_ACM_MS is not set
+# CONFIG_USB_G_MULTI is not set
+# CONFIG_USB_G_HID is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_RAW_GADGET is not set
+# end of USB Gadget precomposed configurations
+
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
+CONFIG_MMC=y
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_SDHCI=y
+# CONFIG_MMC_SDHCI_PCI is not set
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_ASPEED is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
+CONFIG_MMC_SDHCI_OF_DWCMSHC=y
+# CONFIG_MMC_SDHCI_CADENCE is not set
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+# CONFIG_MMC_SDHCI_MILBEAUT is not set
+# CONFIG_MMC_TIFM_SD is not set
+# CONFIG_MMC_SPI is not set
+# CONFIG_MMC_CB710 is not set
+# CONFIG_MMC_VIA_SDMMC is not set
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MMC_USDHI6ROL0 is not set
+# CONFIG_MMC_CQHCI is not set
+# CONFIG_MMC_HSQ is not set
+# CONFIG_MMC_TOSHIBA_PCI is not set
+# CONFIG_MMC_MTK is not set
+# CONFIG_MMC_SDHCI_XENON is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+# CONFIG_MMC_SDHCI_AM654 is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_NEW_LEDS is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_RTC_CLASS is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=m
+CONFIG_DMA_OF=y
+# CONFIG_ALTERA_MSGDMA is not set
+# CONFIG_DW_AXI_DMAC is not set
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_PLX_DMA is not set
+CONFIG_KVX_DMA_NOC=m
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+# CONFIG_DW_DMAC is not set
+# CONFIG_DW_DMAC_PCI is not set
+# CONFIG_DW_EDMA is not set
+# CONFIG_DW_EDMA_PCIE is not set
+# CONFIG_SF_PDMA is not set
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
+# CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_HEAPS is not set
+# end of DMABUF options
+
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VFIO is not set
+# CONFIG_VIRT_DRIVERS is not set
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_MENU=y
+# CONFIG_VIRTIO_PCI is not set
+# CONFIG_VIRTIO_BALLOON is not set
+# CONFIG_VIRTIO_INPUT is not set
+# CONFIG_VIRTIO_MMIO is not set
+# CONFIG_VDPA is not set
+CONFIG_VHOST_MENU=y
+# CONFIG_VHOST_NET is not set
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# end of Microsoft Hyper-V guest support
+
+# CONFIG_GREYBUS is not set
+# CONFIG_STAGING is not set
+# CONFIG_GOLDFISH is not set
+CONFIG_HAVE_CLK=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+# CONFIG_CLK_HSDK is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_SI5341 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_COMMON_CLK_VC5 is not set
+# CONFIG_COMMON_CLK_FIXED_MMIO is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+# CONFIG_MICROCHIP_PIT64B is not set
+# end of Clock Source drivers
+
+CONFIG_MAILBOX=y
+# CONFIG_PLATFORM_MHU is not set
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_KVX_MBOX=y
+# CONFIG_MAILBOX_TEST is not set
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+# end of Generic IOMMU Pagetable Support
+
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_OF_IOMMU=y
+CONFIG_IOMMU_DMA=y
+CONFIG_KVX_IOMMU=y
+
+#
+# Remoteproc drivers
+#
+CONFIG_REMOTEPROC=y
+CONFIG_KVX_REMOTEPROC=y
+# end of Remoteproc drivers
+
+#
+# Rpmsg drivers
+#
+CONFIG_RPMSG=y
+CONFIG_RPMSG_CHAR=y
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+CONFIG_RPMSG_VIRTIO=y
+# end of Rpmsg drivers
+
+# CONFIG_SOUNDWIRE is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Amlogic SoC drivers
+#
+# end of Amlogic SoC drivers
+
+#
+# Aspeed SoC drivers
+#
+# end of Aspeed SoC drivers
+
+#
+# Broadcom SoC drivers
+#
+# end of Broadcom SoC drivers
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+# end of NXP/Freescale QorIQ SoC drivers
+
+#
+# i.MX SoC drivers
+#
+# end of i.MX SoC drivers
+
+CONFIG_KVX_SOCINFO=y
+
+#
+# Qualcomm SoC drivers
+#
+# end of Qualcomm SoC drivers
+
+# CONFIG_SOC_TI is not set
+
+#
+# Xilinx SoC drivers
+#
+# CONFIG_XILINX_VCU is not set
+# end of Xilinx SoC drivers
+# end of SOC (System On Chip) specific Drivers
+
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+# CONFIG_NTB is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_PWM is not set
+
+#
+# IRQ chip support
+#
+CONFIG_IRQCHIP=y
+# CONFIG_AL_FIC is not set
+CONFIG_KVX_CORE_INTC=y
+CONFIG_KVX_APIC_GIC=y
+CONFIG_KVX_APIC_MAILBOX=y
+CONFIG_KVX_ITGEN=y
+CONFIG_KVX_PCI_MSI=y
+# end of IRQ chip support
+
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_CADENCE_TORRENT is not set
+# CONFIG_PHY_CADENCE_DPHY is not set
+# CONFIG_PHY_CADENCE_SALVO is not set
+# CONFIG_PHY_FSL_IMX8MQ_USB is not set
+# CONFIG_PHY_MIXEL_MIPI_DPHY is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_PHY_OCELOT_SERDES is not set
+# CONFIG_PHY_SAMSUNG_USB2 is not set
+# end of PHY Subsystem
+
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# end of Performance monitor support
+
+CONFIG_RAS=y
+# CONFIG_USB4 is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# end of Android
+
+# CONFIG_LIBNVDIMM is not set
+# CONFIG_DAX is not set
+CONFIG_NVMEM=y
+CONFIG_NVMEM_SYSFS=y
+CONFIG_KVX_OTP_NV=y
+
+#
+# HW tracing support
+#
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+# end of HW tracing support
+
+# CONFIG_FPGA is not set
+# CONFIG_FSI is not set
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+# CONFIG_INTERCONNECT is not set
+# CONFIG_COUNTER is not set
+# CONFIG_MOST is not set
+# end of Device Drivers
+
+#
+# File systems
+#
+# CONFIG_VALIDATE_FS_PARSER is not set
+CONFIG_FS_IOMAP=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=m
+CONFIG_EXT4_USE_FOR_EXT2=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
+CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+# CONFIG_FS_ENCRYPTION is not set
+# CONFIG_FS_VERITY is not set
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_FUSE_FS is not set
+# CONFIG_OVERLAY_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+# end of Caches
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+# end of CD-ROM/DVD Filesystems
+
+#
+# DOS/FAT/EXFAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+# CONFIG_MSDOS_FS is not set
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+# CONFIG_EXFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+# end of DOS/FAT/EXFAT/NT Filesystems
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+# CONFIG_PROC_KCORE is not set
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS_XATTR is not set
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_CONFIGFS_FS=y
+# end of Pseudo filesystems
+
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+# CONFIG_CRAMFS is not set
+CONFIG_SQUASHFS=m
+CONFIG_SQUASHFS_FILE_CACHE=y
+# CONFIG_SQUASHFS_FILE_DIRECT is not set
+CONFIG_SQUASHFS_DECOMP_SINGLE=y
+# CONFIG_SQUASHFS_DECOMP_MULTI is not set
+# CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set
+# CONFIG_SQUASHFS_XATTR is not set
+CONFIG_SQUASHFS_ZLIB=y
+# CONFIG_SQUASHFS_LZ4 is not set
+# CONFIG_SQUASHFS_LZO is not set
+# CONFIG_SQUASHFS_XZ is not set
+# CONFIG_SQUASHFS_ZSTD is not set
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_EROFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+# CONFIG_UNICODE is not set
+CONFIG_IO_WQ=y
+# end of File systems
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf"
+
+#
+# Kernel hardening options
+#
+
+#
+# Memory initialization
+#
+CONFIG_INIT_STACK_NONE=y
+# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
+# end of Memory initialization
+# end of Kernel hardening options
+# end of Security options
+
+CONFIG_CRYPTO=m
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI2=m
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=m
+CONFIG_CRYPTO_SKCIPHER=m
+CONFIG_CRYPTO_SKCIPHER2=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=m
+CONFIG_CRYPTO_RNG2=m
+# CONFIG_CRYPTO_MANAGER is not set
+# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_NULL2=m
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_ENGINE=m
+
+#
+# Public-key cryptography
+#
+# CONFIG_CRYPTO_RSA is not set
+# CONFIG_CRYPTO_DH is not set
+# CONFIG_CRYPTO_ECDH is not set
+# CONFIG_CRYPTO_ECRDSA is not set
+# CONFIG_CRYPTO_CURVE25519 is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_SEQIV is not set
+# CONFIG_CRYPTO_ECHAINIV is not set
+
+#
+# Block modes
+#
+# CONFIG_CRYPTO_CBC is not set
+# CONFIG_CRYPTO_CFB is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_OFB is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_KEYWRAP is not set
+# CONFIG_CRYPTO_ADIANTUM is not set
+# CONFIG_CRYPTO_ESSIV is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_CMAC is not set
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+# CONFIG_CRYPTO_CRC32 is not set
+# CONFIG_CRYPTO_XXHASH is not set
+# CONFIG_CRYPTO_BLAKE2B is not set
+# CONFIG_CRYPTO_BLAKE2S is not set
+# CONFIG_CRYPTO_CRCT10DIF is not set
+# CONFIG_CRYPTO_GHASH is not set
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_STREEBOG is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+# CONFIG_CRYPTO_AES is not set
+# CONFIG_CRYPTO_AES_TI is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+# CONFIG_CRYPTO_ARC4 is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_DRBG_MENU is not set
+# CONFIG_CRYPTO_JITTERENTROPY is not set
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_USER_API_RNG is not set
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+
+#
+# Crypto library routines
+#
+# CONFIG_CRYPTO_LIB_BLAKE2S is not set
+# CONFIG_CRYPTO_LIB_CHACHA is not set
+# CONFIG_CRYPTO_LIB_CURVE25519 is not set
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
+# CONFIG_CRYPTO_LIB_POLY1305 is not set
+# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set
+# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set
+# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
+CONFIG_CRYPTO_DEV_VIRTIO=m
+# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
+# CONFIG_CRYPTO_DEV_CCREE is not set
+# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
+
+#
+# Certificates for signature checking
+#
+# end of Certificates for signature checking
+
+#
+# Library routines
+#
+# CONFIG_PACKING is not set
+CONFIG_BITREVERSE=y
+CONFIG_HAVE_ARCH_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+# CONFIG_CORDIC is not set
+# CONFIG_PRIME_NUMBERS is not set
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC16=m
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+# CONFIG_CRC8 is not set
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_XARRAY_MULTI=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_DMA_DECLARE_COHERENT=y
+CONFIG_ARCH_HAS_SETUP_DMA_OPS=y
+CONFIG_ARCH_HAS_TEARDOWN_DMA_OPS=y
+CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y
+CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU=y
+CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y
+CONFIG_DMA_VIRT_OPS=y
+CONFIG_DMA_NONCOHERENT_MMAP=y
+CONFIG_DMA_COHERENT_POOL=y
+CONFIG_DMA_REMAP=y
+CONFIG_DMA_DIRECT_REMAP=y
+# CONFIG_DMA_API_DEBUG is not set
+CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_NLATTR=y
+# CONFIG_IRQ_POLL is not set
+CONFIG_LIBFDT=y
+CONFIG_SBITMAP=y
+# CONFIG_STRING_SELFTEST is not set
+# end of Library routines
+
+CONFIG_GENERIC_IOREMAP=y
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_CALLER is not set
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DYNAMIC_DEBUG_CORE is not set
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# end of printk and dmesg options
+
+#
+# Compile-time checks and compiler options
+#
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+# CONFIG_DEBUG_INFO_COMPRESSED is not set
+# CONFIG_DEBUG_INFO_SPLIT is not set
+CONFIG_DEBUG_INFO_DWARF4=y
+# CONFIG_DEBUG_INFO_BTF is not set
+CONFIG_GDB_SCRIPTS=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=2048
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_HEADERS_INSTALL is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# end of Compile-time checks and compiler options
+
+#
+# Generic Kernel Debugging Instruments
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_UBSAN is not set
+# end of Generic Kernel Debugging Instruments
+
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_MISC=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_OWNER is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
+CONFIG_KASAN_STACK=1
+# end of Memory Debugging
+
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Oops, Lockups and Hangs
+#
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=-1
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_TEST_LOCKUP is not set
+# end of Debug Oops, Lockups and Hangs
+
+#
+# Scheduler Debugging
+#
+CONFIG_SCHED_DEBUG=y
+# CONFIG_SCHEDSTATS is not set
+# end of Scheduler Debugging
+
+# CONFIG_DEBUG_TIMEKEEPING is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# end of Lock Debugging (spinlocks, mutexes, etc...)
+
+# CONFIG_STACKTRACE is not set
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+
+#
+# Debug kernel data structures
+#
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PLIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# end of Debug kernel data structures
+
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# end of RCU Debugging
+
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_HWLAT_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_TRACER_SNAPSHOT is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_SYNTH_EVENTS is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_SAMPLES is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
+
+#
+# kvx Debugging
+#
+
+#
+# KVX debugging
+#
+# CONFIG_KVX_DEBUG_ASN is not set
+# CONFIG_KVX_DEBUG_TLB_WRITE is not set
+# CONFIG_KVX_DEBUG_TLB_ACCESS is not set
+# CONFIG_KVX_MMU_STATS is not set
+# CONFIG_DEBUG_EXCEPTION_STACK is not set
+# CONFIG_DEBUG_SFR_SET_MASK is not set
+# end of KVX debugging
+# end of kvx Debugging
+
+#
+# Kernel Testing and Coverage
+#
+# CONFIG_KUNIT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_TEST_MIN_HEAP is not set
+# CONFIG_TEST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_REED_SOLOMON_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_HEXDUMP is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_STRSCPY is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_BITFIELD is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_XARRAY is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_IDA is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_BITOPS is not set
+# CONFIG_TEST_VMALLOC is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_BLACKHOLE_DEV is not set
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_TEST_KMOD is not set
+# CONFIG_TEST_MEMCAT_P is not set
+# CONFIG_TEST_STACKINIT is not set
+# CONFIG_TEST_MEMINIT is not set
+# CONFIG_MEMTEST is not set
+# end of Kernel Testing and Coverage
+# end of Kernel hacking
diff --git a/target/kvx/systems/qemu-kvx b/target/kvx/systems/qemu-kvx
new file mode 100644
index 000000000..86342a086
--- /dev/null
+++ b/target/kvx/systems/qemu-kvx
@@ -0,0 +1,7 @@
+config ADK_TARGET_SYSTEM_QEMU_KVX
+ bool "Qemu Emulator"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_CPU_KVX
+ help
+ Support for Qemu Emulator KVX architecture.
+
diff --git a/target/linux/Config.in b/target/linux/Config.in
index e4da0762b..42e4efcbb 100644
--- a/target/linux/Config.in
+++ b/target/linux/Config.in
@@ -21,6 +21,7 @@ source target/linux/config/Config.in.crypto
source target/linux/config/Config.in.misc
source target/linux/config/Config.in.arc
source target/linux/config/Config.in.arm
+source target/linux/config/Config.in.m68k
source target/linux/config/Config.in.mips
source target/linux/config/Config.in.xtensa
source target/linux/config/Config.in.pm
diff --git a/target/linux/Config.in.kernelcfg b/target/linux/Config.in.kernelcfg
index bd6f65b57..ee5b555a8 100644
--- a/target/linux/Config.in.kernelcfg
+++ b/target/linux/Config.in.kernelcfg
@@ -4,9 +4,14 @@
choice
prompt "Kernel configuration" if !ADK_TARGET_CHOOSE_ARCH
depends on ADK_TARGET_OS_LINUX
+default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_CPU_ARC_ARC32
+default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_CPU_ARC_ARC64
+default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
+default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_PHYTEC_WEGA && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
+default ADK_TARGET_LINUX_KERNEL_USE_DEFCONFIG if ADK_TARGET_BOARD_BCM28XX && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
config ADK_TARGET_LINUX_KERNEL_USE_MINICONFIG
bool "Use mini.config from OpenADK"
@@ -26,26 +31,40 @@ config ADK_TARGET_LINUX_KERNEL_DEFCONFIG
default "bcmrpi_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI0
default "bcm2709_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI2
default "bcm2709_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI3
- default "bcm2709_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
+ default "bcm2711_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI4
default "bcmrpi3_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
- default "bcmrpi3_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
+ default "bcm2711_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ default "bcm2712_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI5
default "twr-k70f120m_defconfig" if ADK_TARGET_SYSTEM_KINETIS_K70
default "imx_v7_cbi_hb_defconfig" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
default "imx_v6_v7_defconfig" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "mvebu_defconfig" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default "nsim_700_defconfig" if ADK_TARGET_CPU_ARC_ARC700 && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
- default "nsim_hs_defconfig" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
+ default "haps_hs_defconfig" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
default "10m50_defconfig" if ADK_TARGET_SYSTEM_QEMU_NIOS2
default "ag101p_defconfig" if ADK_TARGET_SYSTEM_ANDES_AG101P
default "bb.org_defconfig" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "am335x_phytec_defconfig" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
default "j2_defconfig" if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default "sunxi_defconfig" if ADK_TARGET_SYSTEM_ORANGE_PI0
+ default "sunxi_defconfig" if ADK_TARGET_SYSTEM_BANANA_P2_ZERO
default "edosk2674_defconfig" if ADK_TARGET_SYSTEM_HITACHI_EDOSK2674
default "x86_64_defconfig" if ADK_TARGET_SYSTEM_GENERIC_X86_64
default "i386_defconfig" if ADK_TARGET_SYSTEM_GENERIC_X86
default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F429
default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F769
+ default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F746G
+ default "nommu_k210_defconfig" if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
+ default "loongson3_defconfig" if ADK_TARGET_SYSTEM_QEMU_LOONGARCH
+ default "defconfig" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default "rockpi4_defconfig" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
+ default "vexpress_defconfig" if ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9
+ default "spitz_defconfig" if ADK_TARGET_SYSTEM_QEMU_ARM_TERRIER
+ default "spitz_defconfig" if ADK_TARGET_SYSTEM_QEMU_ARM_SPITZ
+ default "haps_hs5x_defconfig" if ADK_TARGET_CPU_ARC_ARC32
+ default "haps_arc64_defconfig" if ADK_TARGET_CPU_ARC_ARC64
+ default "m5208evb_defconfig" if ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
+ default "default_defconfig" if ADK_TARGET_ARCH_KVX
default ""
config ADK_TARGET_LINUX_KERNEL_CUSTOMCONFIG_PATH
diff --git a/target/linux/Config.in.kernelversion b/target/linux/Config.in.kernelversion
index fee6126e4..a1c346987 100644
--- a/target/linux/Config.in.kernelversion
+++ b/target/linux/Config.in.kernelversion
@@ -4,12 +4,13 @@
choice
prompt "Linux Kernel version" if !ADK_TARGET_CHOOSE_ARCH
depends on ADK_TARGET_OS_LINUX
-default ADK_TARGET_LINUX_KERNEL_VERSION_3_10_NDS32 if ADK_TARGET_ARCH_NDS32
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_BOARD_BCM28XX
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_KINETIS_K70
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_ADSP_BF537
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_SYSTEM_PHYTEC_WEGA
+default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_CPU_ARC_ARC32
+default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_CPU_ARC_ARC64
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_ARCH_KVX
default ADK_TARGET_LINUX_KERNEL_VERSION_GIT if ADK_TARGET_ARCH_LM32
default ADK_TARGET_LINUX_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_CRIS
@@ -18,77 +19,121 @@ default ADK_TARGET_LINUX_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_METAG
default ADK_TARGET_LINUX_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_AVR32
default ADK_TARGET_LINUX_KERNEL_VERSION_4_9 if ADK_TARGET_ARCH_BFIN
default ADK_TARGET_LINUX_KERNEL_VERSION_4_9 if ADK_TARGET_ARCH_FRV
-default ADK_TARGET_LINUX_KERNEL_VERSION_4_9 if ADK_TARGET_CPU_ARM_ARM11MPCORE
-default ADK_TARGET_LINUX_KERNEL_VERSION_4_9 if ADK_TARGET_CPU_ARM_CORTEX_A53
default ADK_TARGET_LINUX_KERNEL_VERSION_4_9 if ADK_TARGET_SYSTEM_ST_STM32F429
default ADK_TARGET_LINUX_KERNEL_VERSION_4_9 if ADK_TARGET_SYSTEM_ST_STM32F769
-default ADK_TARGET_LINUX_KERNEL_VERSION_4_19 if ADK_TARGET_ARCH_ARC
-default ADK_TARGET_LINUX_KERNEL_VERSION_5_10 if ADK_TARGET_ARCH_PPC64
-default ADK_TARGET_LINUX_KERNEL_VERSION_5_4
+default ADK_TARGET_LINUX_KERNEL_VERSION_5_4 if ADK_TARGET_ARCH_C6X
+default ADK_TARGET_LINUX_KERNEL_VERSION_5_10 if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
+default ADK_TARGET_LINUX_KERNEL_VERSION_5_15 if ADK_TARGET_ARCH_NDS32
+default ADK_TARGET_LINUX_KERNEL_VERSION_6_6
config ADK_TARGET_LINUX_KERNEL_VERSION_GIT
bool "git"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_C6X
depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
select ADK_HOST_NEED_LZOP if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
select ADK_HOST_NEED_LZOP if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
select ADK_HOST_NEED_LZ4 if ADK_TARGET_SYSTEM_PHYTEC_WEGA && ADK_TARGET_LINUX_KERNEL_VERSION_GIT
select ADK_TARGET_LINUX_KERNEL_IMAGE if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
select ADK_TARGET_LINUX_KERNEL_IMAGE if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
+config ADK_TARGET_LINUX_KERNEL_VERSION_6_8
+ bool "6.8.6"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_C6X
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
+ depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_NDS32
+
+config ADK_TARGET_LINUX_KERNEL_VERSION_6_6
+ bool "6.6.28"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_C6X
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
+ depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_NDS32
+
+config ADK_TARGET_LINUX_KERNEL_VERSION_6_1
+ bool "6.1.82"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_C6X
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
+ depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_NDS32
+
+config ADK_TARGET_LINUX_KERNEL_VERSION_5_15
+ bool "5.15.152"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_C6X
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
+ depends on !ADK_TARGET_ARCH_METAG
+
config ADK_TARGET_LINUX_KERNEL_VERSION_5_10
- bool "5.10.75"
+ bool "5.10.213"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_C6X
depends on !ADK_TARGET_ARCH_CRIS
depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_METAG
- depends on !ADK_TARGET_CPU_ARM_ARM11MPCORE
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
+ depends on !ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
config ADK_TARGET_LINUX_KERNEL_VERSION_5_4
- bool "5.4.155"
+ bool "5.4.272"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_BFIN
depends on !ADK_TARGET_ARCH_CRIS
depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_METAG
- depends on !ADK_TARGET_CPU_ARM_ARM11MPCORE
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
+ depends on !ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
config ADK_TARGET_LINUX_KERNEL_VERSION_4_19
- bool "4.19.213"
+ bool "4.19.310"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_BFIN
depends on !ADK_TARGET_ARCH_CRIS
depends on !ADK_TARGET_ARCH_CSKY
depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_RISCV32
depends on !ADK_TARGET_ARCH_RISCV64
- depends on !ADK_TARGET_CPU_ARM_ARM11MPCORE
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
config ADK_TARGET_LINUX_KERNEL_VERSION_4_14
- bool "4.14.252"
+ bool "4.14.334"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_BFIN
depends on !ADK_TARGET_ARCH_CRIS
depends on !ADK_TARGET_ARCH_CSKY
depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_RISCV32
depends on !ADK_TARGET_ARCH_RISCV64
- depends on !ADK_TARGET_CPU_ARM_ARM11MPCORE
- depends on !ADK_TARGET_CPU_ARM_CORTEX_A53
config ADK_TARGET_LINUX_KERNEL_VERSION_4_9
bool "4.9.287"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_CRIS
depends on !ADK_TARGET_ARCH_CSKY
+ depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_OR1K
@@ -97,7 +142,7 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_4_9
depends on !ADK_TARGET_SYSTEM_ORANGE_PI0
config ADK_TARGET_LINUX_KERNEL_VERSION_4_4
- bool "4.4.289"
+ bool "4.4.302"
depends on !ADK_TARGET_ARCH_ARC
depends on !ADK_TARGET_ARCH_CSKY
depends on !ADK_TARGET_ARCH_NDS32
@@ -133,11 +178,6 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_3_16
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
depends on !ADK_TARGET_SYSTEM_ORANGE_PI0
-config ADK_TARGET_LINUX_KERNEL_VERSION_3_10_NDS32
- bool "3.10-nds32"
- depends on ADK_TARGET_ARCH_NDS32
- select ADK_TARGET_LINUX_KERNEL_NO_MIRROR
-
config ADK_TARGET_LINUX_KERNEL_VERSION_2_6_32
bool "2.6.32.70"
depends on !ADK_TARGET_ARCH_ARC
@@ -165,6 +205,7 @@ endchoice
config ADK_TARGET_LINUX_KERNEL_GIT_REPO
string "git repository"
depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT
+ default "https://github.com/foss-for-synopsys-dwc-arc-processors/linux.git" if ADK_TARGET_CPU_ARC_ARC32 || ADK_TARGET_CPU_ARC_ARC64
default "https://github.com/raspberrypi/linux.git" if ADK_TARGET_BOARD_BCM28XX
default "git://git.code.sf.net/p/adi-linux/code" if ADK_TARGET_SYSTEM_ADSP_BF537
default "https://github.com/EmcraftSystems/linux-emcraft.git" if ADK_TARGET_SYSTEM_KINETIS_K70
@@ -173,7 +214,8 @@ config ADK_TARGET_LINUX_KERNEL_GIT_REPO
default "https://github.com/beagleboard/linux.git" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "https://git.phytec.de/git/linux-ti.git" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
default "https://github.com/kalray/linux_coolidge.git" if ADK_TARGET_ARCH_KVX
- default "https://github.com/shenki/linux-lm32.git" if ADK_TARGET_ARCH_LM32
+ default "https://github.com/m-labs/linux-milkymist.git" if ADK_TARGET_ARCH_LM32
+ default "https://github.com/radxa/kernel.git" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"
help
GIT repository to use.
@@ -181,6 +223,7 @@ config ADK_TARGET_LINUX_KERNEL_GIT_REPO
config ADK_TARGET_LINUX_KERNEL_GIT_REPO_NAME
string
depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT
+ default "arc" if ADK_TARGET_CPU_ARC_ARC32 || ADK_TARGET_CPU_ARC_ARC64
default "kvx" if ADK_TARGET_ARCH_KVX
default "lm32" if ADK_TARGET_ARCH_LM32
default "rpi" if ADK_TARGET_BOARD_BCM28XX
@@ -190,36 +233,43 @@ config ADK_TARGET_LINUX_KERNEL_GIT_REPO_NAME
default "phytec" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
default "clearfog" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default "fslc" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
+ default "radxa" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "linus"
config ADK_TARGET_LINUX_KERNEL_GIT
string "git version"
depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT
- default "6b6e8a4d2dfd4c48f108963578712d4caef4513d" if ADK_TARGET_ARCH_KVX
- default "b6a72d383cf0d4c9c448c1f4e5e8d496ea5c1fd8" if ADK_TARGET_ARCH_LM32
- default "ec0dcf3064b8ba99f226438214407fcea9870f76" if ADK_TARGET_BOARD_BCM28XX
+ default "f6e9dab9d1dc1e8fa2acb75504bf5ff86b885b8e" if ADK_TARGET_CPU_ARC_ARC32 || ADK_TARGET_CPU_ARC_ARC64
+ default "b02c139d3608c8ae87f5398a3a29854f6df7a041" if ADK_TARGET_ARCH_KVX
+ default "6a2f2e4198eaff63ee75f6085ce9f966c47b4441" if ADK_TARGET_ARCH_LM32
+ default "d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f" if ADK_TARGET_BOARD_BCM28XX
default "f8d3b2a0fa5054aaed0f14cd457db9d8922bb167" if ADK_TARGET_SYSTEM_ADSP_BF537
default "e7c8afc1dda7b7c18596d90ad6a17ae886650b72" if ADK_TARGET_SYSTEM_KINETIS_K70
default "902739f3353150ac9eb69ad995098f3079d862a3" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default "c85fbc86c61a8c8fd45ab1fe3d1bdd2df12f7962" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "8624998967676862843aed1f8ee2141e98987f81" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
+ default "stable-4.4-rockpi4" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "v4.4.52-phy" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
config ADK_TARGET_LINUX_KERNEL_GIT_VER
string "kernel version"
depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT
- default "5.4.83" if ADK_TARGET_BOARD_BCM28XX
+ default "5.16" if ADK_TARGET_CPU_ARC_ARC32 || ADK_TARGET_CPU_ARC_ARC64
+ default "6.1.70" if ADK_TARGET_BOARD_BCM28XX
+ default "5.10.110" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "4.4.37" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "4.4.52" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
default "2.6.33" if ADK_TARGET_SYSTEM_KINETIS_K70
default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
- default "4.8.0" if ADK_TARGET_SYSTEM_QEMU_LM32
- default "5.6.0" if ADK_TARGET_ARCH_KVX
+ default "3.6.0" if ADK_TARGET_SYSTEM_QEMU_LM32
+ default "5.8.12" if ADK_TARGET_ARCH_KVX
config ADK_TARGET_LINUX_KERNEL_GIT_TYPE
string
depends on ADK_TARGET_LINUX_KERNEL_VERSION_GIT
+ default "branch" if ADK_TARGET_LINUX_ARCH_LM32
default "branch" if ADK_TARGET_SYSTEM_PHYTEC_WEGA
+ default "branch" if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default "hash"
config ADK_TARGET_LINUX_KERNEL_NO_MIRROR
diff --git a/target/linux/arch.lst b/target/linux/arch.lst
index 5810d9174..94d0f018f 100644
--- a/target/linux/arch.lst
+++ b/target/linux/arch.lst
@@ -13,6 +13,7 @@ hppa
ia64
kvx
lm32
+loongarch
m68k
metag
microblaze
diff --git a/target/linux/config/Config.in.arc b/target/linux/config/Config.in.arc
index ead549b73..461d1b7cd 100644
--- a/target/linux/config/Config.in.arc
+++ b/target/linux/config/Config.in.arc
@@ -20,7 +20,8 @@ config ADK_LINUX_KERNEL_ARC_BUILTIN_DTB_NAME
string
depends on ADK_TARGET_ARCH_ARC
default "hsdk" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
- default "nsim_hs" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
- default "nsim_700" if ADK_TARGET_CPU_ARC_ARC700 && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
+ default "haps_hs" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
+ default "haps_hs" if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_QEMU_ARC
+ default "nsim_700" if ADK_TARGET_CPU_ARC_ARC700
diff --git a/target/linux/config/Config.in.audio b/target/linux/config/Config.in.audio
index 6084ebfed..cbcb0e29a 100644
--- a/target/linux/config/Config.in.audio
+++ b/target/linux/config/Config.in.audio
@@ -109,6 +109,18 @@ config ADK_LINUX_KERNEL_SND_SOC_PCM512x_SPI
select ADK_LINUX_KERNEL_SND_SOC_PCM512x
select ADK_LINUX_KERNEL_SND_SOC_I2C_AND_SPI
+config ADK_LINUX_KERNEL_SND_DESIGNWARE_I2S
+ tristate
+
+config ADK_LINUX_KERNEL_SND_SOC_ROCKCHIP_I2S
+ tristate
+
+config ADK_LINUX_KERNEL_SND_SOC_ES8316
+ tristate
+
+config ADK_LINUX_KERNEL_SND_AUDIO_GRAPH_CARD
+ tristate
+
config ADK_LINUX_KERNEL_SND
tristate
select ADK_LINUX_KERNEL_SOUND
@@ -140,6 +152,19 @@ config ADK_LINUX_KERNEL_SND_INTEL8X0
help
Driver for intel chipsets.
+config ADK_LINUX_KERNEL_SND_SOC_ROCKCHIP
+ tristate "Rockchip driver (ES8316 Codec)"
+ select ADK_LINUX_KERNEL_SND
+ select ADK_LINUX_KERNEL_SND_SOC
+ select ADK_LINUX_KERNEL_SND_SOC_ES8316
+ select ADK_LINUX_KERNEL_SND_SOC_ROCKCHIP_I2S
+ select ADK_LINUX_KERNEL_SND_DESIGNWARE_I2S
+ select ADK_LINUX_KERNEL_SND_AUDIO_GRAPH_CARD
+ default m if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default n
+ help
+ ALSA Rockchip driver
+
config ADK_LINUX_KERNEL_SND_VIA82XX
tristate "VIA82XX driver"
select ADK_LINUX_KERNEL_SND
@@ -194,6 +219,7 @@ config ADK_LINUX_KERNEL_SND_BCM2835
tristate "BCM28XX onboard soundcard"
select ADK_LINUX_KERNEL_SND
select ADK_LINUX_KERNEL_SND_ARM
+ select ADK_LINUX_KERNEL_STAGING
depends on ADK_TARGET_BOARD_BCM28XX
default m if ADK_TARGET_HARDWARE_NONE
default n
diff --git a/target/linux/config/Config.in.block b/target/linux/config/Config.in.block
index eb804fb42..a287c05cf 100644
--- a/target/linux/config/Config.in.block
+++ b/target/linux/config/Config.in.block
@@ -148,6 +148,12 @@ config ADK_LINUX_KERNEL_MMC_SDHCI_IO_ACCESSORS
config ADK_LINUX_KERNEL_MMC_SDHCI_PLTFM
bool
+config ADK_LINUX_KERNEL_MMC_SDHCI_IPROC
+ bool
+
+config ADK_LINUX_KERNEL_MMC_SDHCI_BRCMSTB
+ bool
+
config ADK_LINUX_KERNEL_MMC_BCM2835_MMC
bool
@@ -157,6 +163,12 @@ config ADK_LINUX_KERNEL_MMC_BCM2835_DMA
config ADK_LINUX_KERNEL_MMC_BCM2835_SDHOST
bool
+config ADK_LINUX_KERNEL_MMC_DW
+ bool
+
+config ADK_LINUX_KERNEL_MMC_DW_PLTFM
+ bool
+
config ADK_LINUX_KERNEL_PWRSEQ_EMMC
bool
@@ -173,7 +185,6 @@ menu "SATA/PATA devices support"
depends on ADK_TARGET_WITH_PATA \
|| ADK_TARGET_WITH_SATA \
|| ADK_TARGET_QEMU \
- || ADK_TARGET_VBOX \
|| ADK_TARGET_GENERIC
config ADK_LINUX_KERNEL_PATA_RB532
@@ -231,10 +242,8 @@ config ADK_LINUX_KERNEL_SATA_AHCI
select ADK_LINUX_KERNEL_BLK_DEV_SD
depends on \
ADK_TARGET_SYSTEM_PCENGINES_APU || \
- ADK_TARGET_GENERIC || \
- ADK_TARGET_VBOX
+ ADK_TARGET_GENERIC
default y if ADK_TARGET_SYSTEM_PCENGINES_APU
- default y if ADK_TARGET_VBOX
default n
help
Enables support for AHCI Serial ATA.
@@ -466,6 +475,8 @@ config ADK_LINUX_KERNEL_MMC_BCM2835_MMC
select ADK_LINUX_KERNEL_BLK_DEV_THROTTLING
select ADK_LINUX_KERNEL_MMC_SDHCI
select ADK_LINUX_KERNEL_MMC_SDHCI_PLTFM
+ select ADK_LINUX_KERNEL_MMC_SDHCI_IPROC
+ select ADK_LINUX_KERNEL_MMC_SDHCI_BRCMSTB if ADK_TARGET_SYSTEM_RASPBERRY_PI5
select ADK_LINUX_KERNEL_MMC_BCM2835_DMA
select ADK_LINUX_KERNEL_MMC_BCM2835_SDHOST
depends on ADK_TARGET_BOARD_BCM28XX
@@ -549,6 +560,56 @@ config ADK_LINUX_KERNEL_MMC_ATMELMCI
Atmel Multimedia Card Interface driver for AT32
and AT91 plattforms.
+config ADK_LINUX_KERNEL_MMC_DW_ROCKCHIP
+ bool "SD/MMC Driver (Rockchip)"
+ select ADK_LINUX_KERNEL_BLOCK
+ select ADK_LINUX_KERNEL_BLK_DEV
+ select ADK_LINUX_KERNEL_LBDAF
+ select ADK_LINUX_KERNEL_SCSI
+ select ADK_LINUX_KERNEL_SCSI_DMA
+ select ADK_LINUX_KERNEL_SCSI_MULTI_LUN
+ select ADK_LINUX_KERNEL_SCSI_CONSTANTS
+ select ADK_LINUX_KERNEL_SCSI_LOGGING
+ select ADK_LINUX_KERNEL_SCSI_SCAN_ASYNC
+ select ADK_LINUX_KERNEL_MMC
+ select ADK_LINUX_KERNEL_MMC_BLOCK
+ select ADK_LINUX_KERNEL_MMC_BLOCK_BOUNCE
+ select ADK_LINUX_KERNEL_MMC_SDHCI
+ select ADK_LINUX_KERNEL_MMC_SDHCI_IO_ACCESSORS
+ select ADK_LINUX_KERNEL_MMC_SDHCI_PLTFM
+ select ADK_LINUX_KERNEL_MMC_DW
+ select ADK_LINUX_KERNEL_MMC_DW_PLTFM
+ depends on ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default n
+ help
+ RockPI 4 Plus driver for MMC
+
+config ADK_LINUX_KERNEL_MMC_DW_STARFIVE
+ bool "SD/MMC Driver (Starfive)"
+ select ADK_LINUX_KERNEL_BLOCK
+ select ADK_LINUX_KERNEL_BLK_DEV
+ select ADK_LINUX_KERNEL_LBDAF
+ select ADK_LINUX_KERNEL_SCSI
+ select ADK_LINUX_KERNEL_SCSI_DMA
+ select ADK_LINUX_KERNEL_SCSI_MULTI_LUN
+ select ADK_LINUX_KERNEL_SCSI_CONSTANTS
+ select ADK_LINUX_KERNEL_SCSI_LOGGING
+ select ADK_LINUX_KERNEL_SCSI_SCAN_ASYNC
+ select ADK_LINUX_KERNEL_MMC
+ select ADK_LINUX_KERNEL_MMC_BLOCK
+ select ADK_LINUX_KERNEL_MMC_BLOCK_BOUNCE
+ select ADK_LINUX_KERNEL_MMC_SDHCI
+ select ADK_LINUX_KERNEL_MMC_SDHCI_IO_ACCESSORS
+ select ADK_LINUX_KERNEL_MMC_SDHCI_PLTFM
+ select ADK_LINUX_KERNEL_MMC_DW
+ select ADK_LINUX_KERNEL_MMC_DW_PLTFM
+ depends on ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
+ default y if ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
+ default n
+ help
+ Starfive Visionfive2 driver for MMC
+
endmenu
menu "Block driver support"
diff --git a/target/linux/config/Config.in.bluetooth b/target/linux/config/Config.in.bluetooth
index 49f0a1202..44df845af 100644
--- a/target/linux/config/Config.in.bluetooth
+++ b/target/linux/config/Config.in.bluetooth
@@ -132,12 +132,18 @@ config ADK_LINUX_KERNEL_BT_HCIUART_3WIRE
depends on ADK_LINUX_KERNEL_BT_HCIUART
default n
+config ADK_LINUX_KERNEL_BT_HCIUART_SERDEV
+ bool
+ depends on ADK_LINUX_KERNEL_BT_HCIUART
+ default n
+
config ADK_LINUX_KERNEL_BT_HCIUART_BCM
- tristate "Broadcom protocol support"
- select ADK_LINUX_KERNEL_BT_HCIUART
+ bool "Broadcom protocol support"
+ select ADK_LINUX_KERNEL_BT_HCIUART_SERDEV
select ADK_LINUX_KERNEL_BT_HCIUART_3WIRE
select ADK_LINUX_KERNEL_BT_BCM
- depends on ADK_TARGET_SYSTEM_RASPBERRY_PI3 || ADK_TARGET_SYSTEM_RASPBERRY_PI3P
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI3 || \
+ ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default n
help
The Broadcom protocol support enables Bluetooth HCI over serial
diff --git a/target/linux/config/Config.in.bus b/target/linux/config/Config.in.bus
index 5f909e9cc..45c79e1eb 100644
--- a/target/linux/config/Config.in.bus
+++ b/target/linux/config/Config.in.bus
@@ -6,7 +6,6 @@ config ADK_LINUX_KERNEL_PCI
select ADK_LINUX_KERNEL_PCI_QUIRKS
depends on ADK_TARGET_WITH_PCI \
|| ADK_TARGET_QEMU \
- || ADK_TARGET_VBOX \
|| ADK_TARGET_GENERIC
default n if ADK_TARGET_CPU_XTENSA_DE212
default n if ADK_TARGET_SYSTEM_GENERIC_NDS32
diff --git a/target/linux/config/Config.in.compression b/target/linux/config/Config.in.compression
index 2eeaab240..c2461ba80 100644
--- a/target/linux/config/Config.in.compression
+++ b/target/linux/config/Config.in.compression
@@ -4,9 +4,9 @@
config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_NONE
bool
-config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_XZ
+config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_ZSTD
bool
- select ADK_HOST_NEED_XZ
+ select ADK_HOST_NEED_ZSTD
config ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_LZ4
bool
@@ -57,10 +57,10 @@ config ADK_LINUX_KERNEL_RD_LZO
config ADK_LINUX_KERNEL_KERNEL_LZO
bool
-config ADK_LINUX_KERNEL_RD_XZ
+config ADK_LINUX_KERNEL_RD_ZSTD
bool
-config ADK_LINUX_KERNEL_KERNEL_XZ
+config ADK_LINUX_KERNEL_KERNEL_ZSTD
bool
config ADK_LINUX_KERNEL_KERNEL_COMPRESS_NONE
@@ -73,14 +73,14 @@ config ADK_LINUX_KERNEL_INITRAMFS_SOURCE
choice
prompt "Kernel compression"
depends on ADK_TARGET_OS_LINUX && !ADK_APPLIANCE_TOOLCHAIN && !ADK_TARGET_CHOOSE_ARCH
-default ADK_LINUX_KERNEL_COMP_GZIP if ADK_TARGET_BOARD_BCM28XX
-default ADK_LINUX_KERNEL_COMP_XZ
-
-config ADK_LINUX_KERNEL_COMP_XZ
- bool "use XZ compression"
- select ADK_LINUX_KERNEL_RD_XZ
- select ADK_LINUX_KERNEL_KERNEL_XZ
- select ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_XZ
+default ADK_LINUX_KERNEL_COMP_ZSTD if ADK_TARGET_ARCH_OR1K
+default ADK_LINUX_KERNEL_COMP_GZIP
+
+config ADK_LINUX_KERNEL_COMP_ZSTD
+ bool "use Zstandard compression"
+ select ADK_LINUX_KERNEL_RD_ZSTD
+ select ADK_LINUX_KERNEL_KERNEL_ZSTD
+ select ADK_LINUX_KERNEL_INITRAMFS_COMPRESSION_ZSTD
depends on ADK_TARGET_KERNEL_WITH_COMPRESSION \
|| ADK_TARGET_GENERIC
diff --git a/target/linux/config/Config.in.cpu b/target/linux/config/Config.in.cpu
index 8a78d7572..5effd7bfd 100644
--- a/target/linux/config/Config.in.cpu
+++ b/target/linux/config/Config.in.cpu
@@ -50,8 +50,10 @@ config ADK_LINUX_KERNEL_CPUFREQ_DT
bool "CPU frequency support DT"
select ADK_LINUX_KERNEL_CPU_FREQ
select ADK_LINUX_KERNEL_CPUFREQ_DT_PLATDEV
- depends on ADK_TARGET_SYSTEM_ORANGE_PI0
+ depends on ADK_TARGET_SYSTEM_ORANGE_PI0 || \
+ ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default y if ADK_TARGET_SYSTEM_ORANGE_PI0
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default n
config ADK_LINUX_KERNEL_ARM_IMX6Q_CPUFREQ
diff --git a/target/linux/config/Config.in.ethernet b/target/linux/config/Config.in.ethernet
index 9a98c8ef1..ec58b3069 100644
--- a/target/linux/config/Config.in.ethernet
+++ b/target/linux/config/Config.in.ethernet
@@ -9,7 +9,7 @@ config ADK_LINUX_KERNEL_NET_ETHERNET
bool
default y
-config ADK_LINUX_KERNEL_NET_CADENCE
+config ADK_LINUX_KERNEL_NET_VENDOR_CADENCE
bool
config ADK_LINUX_KERNEL_NET_VENDOR_ARC
@@ -21,6 +21,9 @@ config ADK_LINUX_KERNEL_NET_VENDOR_AMD
config ADK_LINUX_KERNEL_NET_VENDOR_ATHEROS
bool
+config ADK_LINUX_KERNEL_NET_VENDOR_BROADCOM
+ bool
+
config ADK_LINUX_KERNEL_NET_VENDOR_DEC
bool
@@ -115,6 +118,9 @@ config ADK_LINUX_KERNEL_DWMAC_GENERIC
config ADK_LINUX_KERNEL_DWMAC_SUNXI
bool
+config ADK_LINUX_KERNEL_DWMAC_ROCKCHIP
+ bool
+
config ADK_LINUX_KERNEL_STMMAC_PLATFORM
bool
@@ -152,6 +158,17 @@ config ADK_LINUX_KERNEL_AG71XX
help
Atheros AG71XX ethernet driver
+config ADK_LINUX_KERNEL_BCMGENET
+ tristate "Broadcom GENET internal MAC support"
+ select ADK_LINUX_KERNEL_NET_VENDOR_BROADCOM
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI4 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ default n
+ help
+ Broadcom GENET internal MAC support
+
config ADK_LINUX_KERNEL_DE2104X
tristate "DE2104X ethernet driver"
select ADK_LINUX_KERNEL_NET_VENDOR_DEC
@@ -233,10 +250,10 @@ config ADK_LINUX_KERNEL_USB_LAN78XX
tristate "Microchip LAN78XX"
select ADK_LINUX_KERNEL_USB_NET_DRIVERS
select ADK_LINUX_KERNEL_USB_USBNET
- depends on ADK_TARGET_SYSTEM_RASPBERRY_PI3P \
- || ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P_64
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI3 \
+ || ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3_64
default n
help
Microchip LAN78XX Based USB Ethernet Adapters.
@@ -246,9 +263,11 @@ config ADK_LINUX_KERNEL_SMC91X
select ADK_LINUX_KERNEL_NET_VENDOR_SMSC
select ADK_LINUX_KERNEL_GPIOLIB
depends on ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB || \
- ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE
+ ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE || \
+ ADK_TARGET_SYSTEM_HITACHI_EDOSK2674
default y if ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB
default y if ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE
+ default y if ADK_TARGET_SYSTEM_HITACHI_EDOSK2674
default n
help
SMC91X ethernet driver
@@ -372,7 +391,6 @@ config ADK_LINUX_KERNEL_E1000
ADK_TARGET_SYSTEM_QEMU_ALPHA || \
ADK_TARGET_SYSTEM_QEMU_HPPA || \
ADK_TARGET_SYSTEM_QEMU_SPARC64 || \
- ADK_TARGET_VBOX || \
ADK_TARGET_GENERIC
default y if ADK_TARGET_SYSTEM_QEMU_X86
default y if ADK_TARGET_SYSTEM_QEMU_X86_64
@@ -384,7 +402,6 @@ config ADK_LINUX_KERNEL_E1000
default y if ADK_TARGET_SYSTEM_QEMU_ALPHA
default y if ADK_TARGET_SYSTEM_QEMU_HPPA
default y if ADK_TARGET_SYSTEM_QEMU_SPARC64
- default y if ADK_TARGET_VBOX
default n
help
Intel(R) PRO/1000 gigabit ethernet driver
@@ -419,13 +436,15 @@ config ADK_LINUX_KERNEL_IBMVETH
IBM ethernet driver
config ADK_LINUX_KERNEL_MACB
- tristate "Atmel AT32/AT91 network driver"
- select ADK_LINUX_KERNEL_NET_CADENCE
+ tristate "Cadence MACB network driver"
+ select ADK_LINUX_KERNEL_NET_VENDOR_CADENCE
depends on ADK_TARGET_CPU_AVR32 \
+ || ADK_TARGET_SYSTEM_RASPBERRY_PI5 \
|| ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ
default y if ADK_TARGET_SYSTEM_ATMEL_NGW100
default y if ADK_TARGET_SYSTEM_ATMEL_GRASSHOPPER
default y if ADK_TARGET_SYSTEM_QEMU_ARM_XILINX_ZYNQ
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5
default n
help
Ethernet Driver for Atmel AT32 and AT91 parts. This driver
@@ -487,14 +506,17 @@ config ADK_LINUX_KERNEL_STMMAC_ETH
select ADK_LINUX_KERNEL_DWMAC_GENERIC if ADK_TARGET_SYSTEM_QEMU_CSKY
select ADK_LINUX_KERNEL_DWMAC_GENERIC if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
select ADK_LINUX_KERNEL_MICREL_PHY if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
+ select ADK_LINUX_KERNEL_DWMAC_ROCKCHIP if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
depends on ADK_TARGET_SYSTEM_BANANA_PRO \
|| ADK_TARGET_SYSTEM_ORANGE_PI0 \
|| ADK_TARGET_SYSTEM_QEMU_CSKY \
- || ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
+ || ADK_TARGET_SYSTEM_SYNOPSYS_HSDK \
+ || ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default y if ADK_TARGET_SYSTEM_BANANA_PRO
default y if ADK_TARGET_SYSTEM_ORANGE_PI0
default y if ADK_TARGET_SYSTEM_QEMU_CSKY
default y if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default n
config ADK_LINUX_KERNEL_SUNGEM
diff --git a/target/linux/config/Config.in.fs b/target/linux/config/Config.in.fs
index 46617e1a7..1bed25ee6 100644
--- a/target/linux/config/Config.in.fs
+++ b/target/linux/config/Config.in.fs
@@ -96,6 +96,25 @@ config ADK_LINUX_KERNEL_EXT4_FS
help
Ext4 filesystem.
+config ADK_LINUX_KERNEL_BTRFS_FS
+ tristate "Btrfs filesystem support"
+ select ADK_LINUX_KERNEL_BLOCK
+ help
+ Btrfs is a general purpose copy-on-write filesystem with extents,
+ writable snapshotting, support for multiple devices and many more
+ features focused on fault tolerance, repair and easy administration.
+
+ The filesystem disk format is no longer unstable, and it's not
+ expected to change unless there are strong reasons to do so. If there
+ is a format change, file systems with a unchanged format will
+ continue to be mountable and usable by newer kernels.
+
+ For more information, please see the web pages at
+ http://btrfs.wiki.kernel.org.
+
+ To compile this file system support as a module, choose M here. The
+ module will be called btrfs.
+
config ADK_LINUX_KERNEL_HFSPLUS_FS
tristate "HFS+ filesystem support"
select ADK_LINUX_KERNEL_BLOCK
diff --git a/target/linux/config/Config.in.graphics b/target/linux/config/Config.in.graphics
index a1908e167..11e94db68 100644
--- a/target/linux/config/Config.in.graphics
+++ b/target/linux/config/Config.in.graphics
@@ -4,7 +4,6 @@
menu "Graphic devices support"
depends on ADK_TARGET_WITH_VGA \
|| ADK_TARGET_QEMU \
- || ADK_TARGET_VBOX \
|| ADK_TARGET_GENERIC
config ADK_LINUX_KERNEL_VT
@@ -40,6 +39,9 @@ config ADK_LINUX_KERNEL_FB
select ADK_LINUX_KERNEL_VT
select ADK_LINUX_KERNEL_VT_CONSOLE
+config ADK_LINUX_KERNEL_FB_DEVICE
+ bool
+
config ADK_LINUX_KERNEL_FB_SBUS
bool
@@ -164,12 +166,12 @@ config ADK_LINUX_KERNEL_FB_SM501
config ADK_LINUX_KERNEL_DRM
bool
-config ADK_LINUX_KERNEL_DRM_VC4
- bool
-
config ADK_LINUX_KERNEL_DRM_I915
bool
+config ADK_LINUX_KERNEL_DRM_V3D
+ tristate
+
config ADK_LINUX_KERNEL_DRM_KMS_HELPER
bool
@@ -211,7 +213,6 @@ config ADK_LINUX_KERNEL_FB_VESA
bool "Framebuffer support for VESA"
select ADK_LINUX_KERNEL_FB
select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE
- default y if ADK_TARGET_VBOX
default n
help
Generic VESA Framebuffer support.
@@ -248,6 +249,29 @@ config ADK_LINUX_KERNEL_DRM_ETNAVIV
default n
help
Framebuffer support for Cubox-i/Hummingboard (Vivante)
+
+config ADK_LINUX_KERNEL_DRM_VC4
+ tristate "DRM support for VC4 GPU (Raspberry PI4/PI5)"
+ select ADK_LINUX_KERNEL_DRM
+ select ADK_LINUX_KERNEL_DRM_V3D
+ select ADK_LINUX_KERNEL_SND
+ select ADK_LINUX_KERNEL_SND_SOC
+ select ADK_LINUX_KERNEL_PM
+ select ADK_LINUX_KERNEL_COMMON_CLK
+ select ADK_LINUX_KERNEL_FB
+ select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE
+ select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY
+ depends on ADK_TARGET_SYSTEM_RASPBERRY_PI4 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI5 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ default m if ADK_TARGET_SYSTEM_RASPBERRY_PI4 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI5 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI4_64 && \
+ ADK_PACKAGE_KODI
+ default n
+ help
+ DRM support for VC4 GPU (Raspberry PI4/PI5)
+
config ADK_LINUX_KERNEL_FB_PXA
bool "Framebuffer support for PXA boards (Sharp Zaurus)"
@@ -290,6 +314,7 @@ config ADK_LINUX_KERNEL_FB_SM712
config ADK_LINUX_KERNEL_FB_BCM2708
bool "Framebuffer support for BCM28XX boards (Raspberry PI)"
select ADK_LINUX_KERNEL_FB
+ select ADK_LINUX_KERNEL_FB_DEVICE
select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE
select ADK_LINUX_KERNEL_FONT_8x16
default y if ADK_TARGET_BOARD_BCM28XX
@@ -314,6 +339,19 @@ config ADK_LINUX_KERNEL_FB_RADEON
help
Framebuffer support for RADEON chips.
+config ADK_LINUX_KERNEL_DRM_ROCKCHIP
+ bool "Support for Rockchip graphic cards"
+ select ADK_LINUX_KERNEL_FB
+ select ADK_LINUX_KERNEL_DRM
+ select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE
+ select ADK_LINUX_KERNEL_DRM_KMS_HELPER
+ select ADK_LINUX_KERNEL_DRM_FBDEV_EMULATION
+ depends on ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default n
+ help
+ Support for Rockchip chipsets.
+
config ADK_LINUX_KERNEL_DRM_I915
bool "Support for Intel graphic cards"
select ADK_LINUX_KERNEL_FB
diff --git a/target/linux/config/Config.in.i2c b/target/linux/config/Config.in.i2c
index aa3b1d128..2629135b1 100644
--- a/target/linux/config/Config.in.i2c
+++ b/target/linux/config/Config.in.i2c
@@ -28,6 +28,26 @@ config ADK_LINUX_KERNEL_I2C_GPIO
config ADK_LINUX_KERNEL_I2C_BCM2835
tristate
+config ADK_LINUX_KERNEL_I2C_DESIGNWARE_CORE
+ tristate
+
+config ADK_LINUX_KERNEL_I2C_DESIGNWARE_PLATFORM
+ tristate
+
+config ADK_LINUX_KERNEL_I2C_RK3X
+ tristate "I2C driver for Rockchip"
+ select ADK_LINUX_KERNEL_I2C
+ select ADK_LINUX_KERNEL_REGMAP
+ select ADK_LINUX_KERNEL_REGMAP_I2C
+ select ADK_LINUX_KERNEL_I2C_CHARDEV
+ select ADK_LINUX_KERNEL_I2C_DESIGNWARE_CORE
+ select ADK_LINUX_KERNEL_I2C_DESIGNWARE_PLATFORM
+ depends on ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default n
+ help
+ I2C driver for Synopsys DesignWare.
+
config ADK_LINUX_KERNEL_I2C_BCM2708
tristate "I2C driver for BCM28XX boards"
select ADK_LINUX_KERNEL_I2C
diff --git a/target/linux/config/Config.in.input b/target/linux/config/Config.in.input
index 026187ca6..0d7800c92 100644
--- a/target/linux/config/Config.in.input
+++ b/target/linux/config/Config.in.input
@@ -6,8 +6,7 @@ depends on ADK_TARGET_WITH_USB \
|| ADK_TARGET_WITH_INPUT \
|| ADK_TARGET_WITH_TOUCHSCREEN \
|| ADK_TARGET_QEMU \
- || ADK_TARGET_GENERIC \
- || ADK_TARGET_VBOX
+ || ADK_TARGET_GENERIC
config ADK_LINUX_KERNEL_SERIO
bool
@@ -31,7 +30,6 @@ config ADK_LINUX_KERNEL_SERIO_I8042
config ADK_LINUX_KERNEL_INPUT
bool
- default y if ADK_TARGET_VBOX
default y if ADK_TARGET_SYSTEM_ARANYM_M68K
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS
@@ -81,7 +79,6 @@ config ADK_LINUX_KERNEL_TOUCHSCREEN_ADS7846
config ADK_LINUX_KERNEL_INPUT_KEYBOARD
bool
- default y if ADK_TARGET_VBOX
default y if ADK_TARGET_SYSTEM_ARANYM_M68K
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS
@@ -92,7 +89,6 @@ config ADK_LINUX_KERNEL_INPUT_KEYBOARD
config ADK_LINUX_KERNEL_INPUT_MOUSE
bool
- default y if ADK_TARGET_VBOX
default y if ADK_TARGET_SYSTEM_ARANYM_M68K
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_SYSTEM_SHARP_ZAURUS
@@ -170,7 +166,6 @@ config ADK_LINUX_KERNEL_KEYBOARD_ATKBD
select ADK_LINUX_KERNEL_INPUT
select ADK_LINUX_KERNEL_INPUT_KEYBOARD
depends on !ADK_TARGET_BOARD_BCM28XX
- default y if ADK_TARGET_VBOX
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C
default n
@@ -181,7 +176,6 @@ config ADK_LINUX_KERNEL_MOUSE_PS2
select ADK_LINUX_KERNEL_INPUT_MOUSEDEV
select ADK_LINUX_KERNEL_INPUT_MOUSE
depends on !ADK_TARGET_BOARD_BCM28XX
- default y if ADK_TARGET_VBOX
default y if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
default y if ADK_TARGET_MODEL_PCENGINES_ALIX1C
default n
diff --git a/target/linux/config/Config.in.kernel b/target/linux/config/Config.in.kernel
index 32607cc17..e2b619926 100644
--- a/target/linux/config/Config.in.kernel
+++ b/target/linux/config/Config.in.kernel
@@ -5,6 +5,10 @@ config ADK_LINUX_KERNEL_EXPERIMENTAL
bool
default y
+config ADK_LINUX_KERNEL_MODULE_COMPRESS_NONE
+ bool
+ default y
+
config ADK_LINUX_KERNEL_STAGING
bool
@@ -112,6 +116,7 @@ config ADK_LINUX_KERNEL_BINFMT_ELF
config ADK_LINUX_KERNEL_BINFMT_ELF_FDPIC
bool
default y if ADK_TARGET_BINFMT_FDPIC
+ default y if !ADK_TARGET_WITH_MMU && ADK_TARGET_BINFMT_ELF
config ADK_LINUX_KERNEL_BINFMT_FLAT
bool
@@ -253,9 +258,83 @@ config ADK_LINUX_KERNEL_HIGHMEM
config ADK_LINUX_KERNEL_CC_OPTIMIZE_FOR_SIZE
bool "Optimize for size"
# does not boot in qemu-microblaze
- depends on !ADK_TARGET_ARCH_MICROBLAZE && !ADK_TARGET_ARCH_RISC64
+ depends on !ADK_TARGET_ARCH_MICROBLAZE && \
+ !ADK_TARGET_ARCH_RISC64 && \
+ !ADK_TARGET_ARCH_KVX
default y
+config ADK_LINUX_KERNEL_IKCONFIG
+ tristate
+
+config ADK_LINUX_KERNEL_IKCONFIG_PROC
+ bool "Enable access to .config through /proc/config.gz"
+ select ADK_LINUX_KERNEL_IKCONFIG
+ default n
+
+config ADK_LINUX_KERNEL_BSD_PROCESS_ACCT
+ bool "BSD Process Accounting"
+ default n
+
+config ADK_LINUX_KERNEL_NAMESPACES
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_GENERIC_VDSO_TIME_NS
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_USER_NS
+ bool "User namespace"
+ select ADK_LINUX_KERNEL_NAMESPACES
+ default n
+
+config ADK_LINUX_KERNEL_NET_NS
+ bool "Network namespace"
+ select ADK_LINUX_KERNEL_NAMESPACES
+ default n
+
+config ADK_LINUX_KERNEL_TIME_NS
+ bool "Network namespace"
+ select ADK_LINUX_KERNEL_NAMESPACES
+ select ADK_LINUX_KERNEL_GENERIC_VDSO_TIME_NS
+ default n
+
+config ADK_LINUX_KERNEL_BPF
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_BPF_SYSCALL
+ bool "Enable bpf() syscall"
+ select ADK_LINUX_KERNEL_BPF
+ default n
+
+config ADK_LINUX_KERNEL_WATCH_QUEUE
+ bool "General notification queue"
+ default n
+
+config ADK_LINUX_KERNEL_MEMCG
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_BLK_CGROUP
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_CGROUP_SCHED
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_CGROUP_PIDS
+ bool
+ default n
+
+config ADK_LINUX_KERNEL_CGROUPS
+ bool "Control group support"
+ select ADK_LINUX_KERNEL_MEMCG
+ select ADK_LINUX_KERNEL_BLK_CGROUP
+ select ADK_LINUX_KERNEL_CGROUP_SCHED
+ select ADK_LINUX_KERNEL_CGROUP_PIDS
+ default n
choice
prompt "Page size"
diff --git a/target/linux/config/Config.in.m68k b/target/linux/config/Config.in.m68k
new file mode 100644
index 000000000..0a8fec23e
--- /dev/null
+++ b/target/linux/config/Config.in.m68k
@@ -0,0 +1,14 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+config ADK_LINUX_KERNEL_M68020
+ bool
+ default y if ADK_TARGET_CPU_M68K_68020
+
+config ADK_LINUX_KERNEL_M68040
+ bool
+ default y if ADK_TARGET_CPU_M68K_68040
+
+config ADK_LINUX_KERNEL_M68KFPU_EMU
+ bool
+ default y if ADK_TARGET_CPU_M68K_68040
diff --git a/target/linux/config/Config.in.misc b/target/linux/config/Config.in.misc
index 5a58fd2cb..c3c958ca3 100644
--- a/target/linux/config/Config.in.misc
+++ b/target/linux/config/Config.in.misc
@@ -10,6 +10,9 @@ config ADK_LINUX_KERNEL_MFD_SYSCON
config ADK_LINUX_KERNEL_OF
bool
+config ADK_LINUX_KERNEL_COMMON_CLK
+ bool
+
config ADK_LINUX_KERNEL_FIRMWARE_IN_KERNEL
bool
default y if ADK_LINUX_KERNEL_R8169 && ADK_LINUX_KERNEL_ROOT_NFS
diff --git a/target/linux/config/Config.in.rtc b/target/linux/config/Config.in.rtc
index db68ff960..cf6bddb9e 100644
--- a/target/linux/config/Config.in.rtc
+++ b/target/linux/config/Config.in.rtc
@@ -52,6 +52,17 @@ config ADK_LINUX_KERNEL_RTC_DRV_AT91SAM9
help
Fox G20 RTC support.
+config ADK_LINUX_KERNEL_RTC_DRV_RK808
+ bool "RTC support for Rockchip"
+ select ADK_LINUX_KERNEL_RTC_CLASS
+ select ADK_LINUX_KERNEL_RTC_HCTOSYS
+ select ADK_LINUX_KERNEL_RTC_INTF_DEV
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default n
+ depends on ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ help
+ Rockchip RTC support.
+
config ADK_LINUX_KERNEL_RTC_DRV_CMOS
bool "RTC support for PC CMOS"
select ADK_LINUX_KERNEL_RTC_CLASS
diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial
index 44c78d80b..ac35fb1e2 100644
--- a/target/linux/config/Config.in.serial
+++ b/target/linux/config/Config.in.serial
@@ -2,7 +2,7 @@
# material, please see the LICENCE file in the top-level directory.
menu "Serial devices support"
-depends on ADK_TARGET_WITH_SERIAL || ADK_TARGET_QEMU || ADK_TARGET_VBOX || ADK_TARGET_SIM || ADK_TARGET_GENERIC
+depends on ADK_TARGET_WITH_SERIAL || ADK_TARGET_QEMU || ADK_TARGET_SIM || ADK_TARGET_GENERIC
config ADK_LINUX_KERNEL_SERIAL_8250_DMA
bool
@@ -13,9 +13,18 @@ config ADK_LINUX_KERNEL_SERIAL_8250_DW
config ADK_LINUX_KERNEL_SERIAL_8250_CONSOLE
bool
+config ADK_LINUX_KERNEL_SERIAL_8250_PCI
+ bool
+
config ADK_LINUX_KERNEL_SERIAL_8250_PNP
bool
+config ADK_LINUX_KERNEL_SERIAL_8250_EXTENDED
+ bool
+
+config ADK_LINUX_KERNEL_SERIAL_8250_SHARE_IRQ
+ bool
+
config ADK_LINUX_KERNEL_SERIAL_ARC_CONSOLE
bool
@@ -79,6 +88,9 @@ config ADK_LINUX_KERNEL_SERIAL_8250_INGENIC
config ADK_LINUX_KERNEL_SERIAL_MILKYMIST_CONSOLE
bool
+config ADK_LINUX_KERNEL_SERIAL_8250_BCM2835AUX
+ bool
+
config ADK_LINUX_KERNEL_SERIAL_BFIN
bool "BFIN serial driver"
select ADK_LINUX_KERNEL_SERIAL_BFIN_CONSOLE
@@ -90,8 +102,11 @@ config ADK_LINUX_KERNEL_SERIAL_BFIN
config ADK_LINUX_KERNEL_SERIAL_8250
bool "8250 serial driver"
select ADK_LINUX_KERNEL_SERIAL_8250_CONSOLE
+ select ADK_LINUX_KERNEL_SERIAL_OF_PLATFORM if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
+ select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_CPU_ARC_ARCHS && ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
select ADK_LINUX_KERNEL_SERIAL_OF_PLATFORM if ADK_TARGET_SYSTEM_XILINX_KINTEX7 \
|| ADK_TARGET_SYSTEM_IMGTEC_CI20 \
+ || ADK_TARGET_SYSTEM_QEMU_ARC \
|| ADK_TARGET_SYSTEM_QEMU_CSKY \
|| ADK_TARGET_SYSTEM_QEMU_XTENSA \
|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605 \
@@ -102,13 +117,25 @@ config ADK_LINUX_KERNEL_SERIAL_8250
|| ADK_TARGET_SYSTEM_ANDES_AG101P \
|| ADK_TARGET_SYSTEM_ORANGE_PI0 \
|| ADK_TARGET_SYSTEM_SYNOPSYS_HSDK \
- || ADK_TARGET_SYSTEM_SOM_C6745
+ || ADK_TARGET_SYSTEM_SOM_C6745 \
+ || ADK_TARGET_SYSTEM_ROCKPI4_PLUS \
+ || ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
select ADK_LINUX_KERNEL_SERIAL_8250_PNP if ADK_TARGET_SYSTEM_PCENGINES_APU
+ select ADK_LINUX_KERNEL_SERIAL_8250_PCI if ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_ORANGE_PI0
select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
+ select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_QEMU_ARC
+ select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ select ADK_LINUX_KERNEL_SERIAL_8250_DW if ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
select ADK_LINUX_KERNEL_SERIAL_8250_DMA if ADK_TARGET_SYSTEM_ORANGE_PI0
select ADK_LINUX_KERNEL_SERIAL_8250_INGENIC if ADK_TARGET_SYSTEM_IMGTEC_CI20
+ select ADK_LINUX_KERNEL_SERIAL_8250_BCM2835AUX if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ select ADK_LINUX_KERNEL_SERIAL_8250_EXTENDED if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ select ADK_LINUX_KERNEL_SERIAL_8250_SHARE_IRQ if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ select ADK_LINUX_KERNEL_SERIAL_8250_BCM2835AUX if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ select ADK_LINUX_KERNEL_SERIAL_8250_EXTENDED if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ select ADK_LINUX_KERNEL_SERIAL_8250_SHARE_IRQ if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
depends on ADK_TARGET_SYSTEM_XILINX_KINTEX7 \
|| ADK_TARGET_SYSTEM_IMGTEC_CI20 \
|| ADK_TARGET_SYSTEM_LINKSYS_NSLU2 \
@@ -119,6 +146,7 @@ config ADK_LINUX_KERNEL_SERIAL_8250
|| ADK_TARGET_SYSTEM_QEMU_MIPS \
|| ADK_TARGET_SYSTEM_QEMU_MIPS64 \
|| ADK_TARGET_SYSTEM_QEMU_ALPHA \
+ || ADK_TARGET_SYSTEM_QEMU_ARC \
|| ADK_TARGET_SYSTEM_QEMU_CSKY \
|| ADK_TARGET_SYSTEM_QEMU_HPPA \
|| ADK_TARGET_SYSTEM_QEMU_NIOS2 \
@@ -138,7 +166,12 @@ config ADK_LINUX_KERNEL_SERIAL_8250
|| ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG \
|| ADK_TARGET_SYSTEM_ORANGE_PI0 \
|| ADK_TARGET_SYSTEM_SYNOPSYS_HSDK \
- || ADK_TARGET_SYSTEM_SOM_C6745
+ || ADK_TARGET_CPU_ARC_ARCHS \
+ || ADK_TARGET_SYSTEM_SOM_C6745 \
+ || ADK_TARGET_SYSTEM_RASPBERRY_PI4 \
+ || ADK_TARGET_SYSTEM_RASPBERRY_PI4_64 \
+ || ADK_TARGET_SYSTEM_ROCKPI4_PLUS \
+ || ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
default y if ADK_TARGET_SYSTEM_XILINX_KINTEX7
default y if ADK_TARGET_SYSTEM_IMGTEC_CI20
default y if ADK_TARGET_SYSTEM_LINKSYS_NSLU2
@@ -149,6 +182,7 @@ config ADK_LINUX_KERNEL_SERIAL_8250
default y if ADK_TARGET_SYSTEM_QEMU_MIPS
default y if ADK_TARGET_SYSTEM_QEMU_MIPS64
default y if ADK_TARGET_SYSTEM_QEMU_ALPHA
+ default y if ADK_TARGET_SYSTEM_QEMU_ARC
default y if ADK_TARGET_SYSTEM_QEMU_CSKY
default y if ADK_TARGET_SYSTEM_QEMU_HPPA
default y if ADK_TARGET_SYSTEM_QEMU_NIOS2
@@ -168,7 +202,12 @@ config ADK_LINUX_KERNEL_SERIAL_8250
default y if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default y if ADK_TARGET_SYSTEM_ORANGE_PI0
default y if ADK_TARGET_SYSTEM_SYNOPSYS_HSDK
+ default y if ADK_TARGET_CPU_ARC_ARCHS
default y if ADK_TARGET_SYSTEM_SOM_C6745
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI4_64
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
default n
help
Serial driver for 8250 UART chip.
@@ -204,8 +243,8 @@ config ADK_LINUX_KERNEL_SERIAL_ETRAXFS
config ADK_LINUX_KERNEL_SERIAL_ARC
bool "ARC serial driver"
select ADK_LINUX_KERNEL_SERIAL_ARC_CONSOLE
- depends on ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
- default y if ADK_TARGET_SYSTEM_SYNOPSYS_NSIM
+ depends on ADK_TARGET_SYSTEM_SYNOPSYS_NSIM && ADK_TARGET_CPU_ARC_ARC700
+ default y if ADK_TARGET_SYSTEM_SYNOPSYS_NSIM && ADK_TARGET_CPU_ARC_ARC700
default n
help
Serial driver for nSIM ARC simulator.
@@ -240,8 +279,7 @@ config ADK_LINUX_KERNEL_SERIAL_AMBA_PL011
|| ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE \
|| ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB \
|| ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI2
+ default y if ADK_TARGET_BOARD_BCM28XX
default y if ADK_TARGET_SYSTEM_QEMU_ARM_REALVIEW_EB_MPCORE
default y if ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB
default y if ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9
diff --git a/target/linux/config/Config.in.usb b/target/linux/config/Config.in.usb
index bd50dd446..07e097bc1 100644
--- a/target/linux/config/Config.in.usb
+++ b/target/linux/config/Config.in.usb
@@ -7,6 +7,9 @@ depends on ADK_TARGET_WITH_USB \
|| ADK_TARGET_SYSTEM_QEMU_X86 \
|| ADK_TARGET_GENERIC
+config ADK_LINUX_KERNEL_USB_PCI
+ bool
+
config ADK_LINUX_KERNEL_USB_SUPPORT
bool
@@ -25,6 +28,9 @@ config ADK_LINUX_KERNEL_USB_EHCI_TT_NEWSCHED
config ADK_LINUX_KERNEL_USB_EHCI_MXC
bool
+config ADK_LINUX_KERNEL_USB_EHCI_HCD_PLATFORM
+ bool
+
config ADK_LINUX_KERNEL_USB_GADGET
tristate
@@ -38,6 +44,9 @@ config ADK_LINUX_KERNEL_USB_MXS_PHY
ADK_TARGET_SYSTEM_PHYTEC_IMX6
default n
+config ADK_LINUX_KERNEL_USB_XHCI_PLATFORM
+ bool
+
config ADK_LINUX_KERNEL_USB_OHCI_HCD_PLATFORM
bool
select ADK_LINUX_KERNEL_USB_OHCI_HCD
@@ -45,6 +54,12 @@ config ADK_LINUX_KERNEL_USB_OHCI_HCD_PLATFORM
config ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI
bool
+config ADK_LINUX_KERNEL_USB_EHCI_HCD_PCI
+ bool
+
+config ADK_LINUX_KERNEL_USB_XHCI_PCI
+ bool
+
config ADK_LINUX_KERNEL_USB_LIBUSUAL
tristate
@@ -68,6 +83,8 @@ config ADK_LINUX_KERNEL_USB
ADK_TARGET_SYSTEM_PHYTEC_IMX6
default y if ADK_TARGET_SYSTEM_KINETIS_K70
default y if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5
default n
help
Universal Serial Bus (USB) is a specification for a serial bus
@@ -100,12 +117,31 @@ config ADK_LINUX_KERNEL_USB
menu "USB controller support"
+config ADK_LINUX_KERNEL_USB_XHCI_HCD
+ tristate "Support for USB xHCI HCD (USB 3.0)"
+ depends on ADK_LINUX_KERNEL_USB
+ select ADK_LINUX_KERNEL_USB_PCI
+ select ADK_LINUX_KERNEL_USB_XHCI_PLATFORM
+ select ADK_LINUX_KERNEL_USB_XHCI_PCI
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5
+ default n
+ help
+ The eXtensible Host Controller Interface (xHCI) is standard for USB 3.0
+ "SuperSpeed" host controller hardware.
+
+ To compile this driver as a module, choose M here: the
+ module will be called xhci-hcd.
+
+
config ADK_LINUX_KERNEL_USB_EHCI_HCD
tristate "Support for USB EHCI 2.0 controllers"
select ADK_LINUX_KERNEL_USB_MXS_PHY if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 || \
ADK_TARGET_SYSTEM_PHYTEC_IMX6
select ADK_LINUX_KERNEL_USB_EHCI_MXC if ADK_TARGET_SYSTEM_KINETIS_K70
select ADK_LINUX_KERNEL_USB_DEVICE_CLASS if ADK_TARGET_SYSTEM_KINETIS_K70
+ select ADK_LINUX_KERNEL_USB_EHCI_HCD_PLATFORM if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ select ADK_LINUX_KERNEL_USB_EHCI_HCD_PCI if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
depends on !ADK_TARGET_SYSTEM_ACMESYSTEMS_FOXG20
depends on !ADK_TARGET_BOARD_BCM28XX
depends on ADK_LINUX_KERNEL_USB
@@ -116,6 +152,8 @@ config ADK_LINUX_KERNEL_USB_EHCI_HCD
ADK_TARGET_SYSTEM_PHYTEC_IMX6
default y if ADK_TARGET_SYSTEM_KINETIS_K70
default y if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5
default n
help
The Enhanced Host Controller Interface (EHCI) is standard for USB 2.0
@@ -161,10 +199,12 @@ config ADK_LINUX_KERNEL_USB_OHCI_HCD
depends on !ADK_TARGET_BOARD_BCM28XX
select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_PCENGINES_ALIX
select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_PCENGINES_APU
+ select ADK_LINUX_KERNEL_USB_OHCI_HCD_PCI if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default m if ADK_TARGET_SYSTEM_PCENGINES_APU
default m if ADK_TARGET_SYSTEM_PCENGINES_ALIX
default m if ADK_TARGET_SYSTEM_ACMESYSTEMS_FOXG20
default m if ADK_TARGET_SYSTEM_LEMOTE_YEELONG
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default n
help
The Open Host Controller Interface (OHCI) is a standard for accessing
diff --git a/target/linux/config/Config.in.watchdog b/target/linux/config/Config.in.watchdog
index 3175180cf..59c60d94f 100644
--- a/target/linux/config/Config.in.watchdog
+++ b/target/linux/config/Config.in.watchdog
@@ -94,6 +94,15 @@ config ADK_LINUX_KERNEL_SUNXI_WATCHDOG
help
Support for SunXi hardware watchdog.
+config ADK_LINUX_KERNEL_DW_WATCHDOG
+ bool "Synopsys DesignWare watchdog"
+ depends on ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ select ADK_LINUX_KERNEL_WATCHDOG
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
+ default n
+ help
+ Support for Synopsys DesignWare hardware watchdog.
+
config ADK_LINUX_KERNEL_SOFT_WATCHDOG
tristate "Software watchdog"
select ADK_LINUX_KERNEL_WATCHDOG
diff --git a/target/linux/config/Config.in.wireless b/target/linux/config/Config.in.wireless
index 44d6fa401..222efa3bb 100644
--- a/target/linux/config/Config.in.wireless
+++ b/target/linux/config/Config.in.wireless
@@ -149,16 +149,22 @@ config ADK_LINUX_KERNEL_BRCMFMAC
select ADK_LINUX_KERNEL_WLAN_VENDOR_BROADCOM
select ADK_LINUX_KERNEL_BRCMDBG
select ADK_PACKAGE_BRCMFMAC_FIRMWARE
+ default m if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
+ default m if ADK_TARGET_SYSTEM_BANANA_P2_ZERO
+ default m if ADK_TARGET_SYSTEM_ROCKPI4_ZERO
+ default m if ADK_TARGET_SYSTEM_RASPBERRY_PI5
+ default n
config ADK_LINUX_KERNEL_BRCMFMAC_SDIO
bool "Broadcom brcmfmac wireless driver (SDIO)"
- select ADK_LINUX_KERNEL_BRCMFMAC
depends on ADK_TARGET_WITH_SDIO
- default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6 || \
- ADK_TARGET_SYSTEM_PHYTEC_IMX6
+ default y if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
+ default y if ADK_TARGET_SYSTEM_PHYTEC_IMX6
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI0
default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3
- default y if ADK_TARGET_SYSTEM_RASPBERRY_PI3P
+ default y if ADK_TARGET_SYSTEM_RASPBERRY_PI5
+ default y if ADK_TARGET_SYSTEM_BANANA_P2_ZERO
+ default y if ADK_TARGET_SYSTEM_ROCKPI4_PLUS
default n
help
Driver for Broadcom FullMac wireless cards (SDIO).
diff --git a/target/linux/patches/4.14.252/alpha-remove-coff.patch b/target/linux/patches/4.14.334/alpha-remove-coff.patch
index 51b7bcc14..51b7bcc14 100644
--- a/target/linux/patches/4.14.252/alpha-remove-coff.patch
+++ b/target/linux/patches/4.14.334/alpha-remove-coff.patch
diff --git a/target/linux/patches/4.14.252/arm-nommu.patch b/target/linux/patches/4.14.334/arm-nommu.patch
index b91aaf712..b91aaf712 100644
--- a/target/linux/patches/4.14.252/arm-nommu.patch
+++ b/target/linux/patches/4.14.334/arm-nommu.patch
diff --git a/target/linux/patches/4.14.252/arm-thumb2.patch b/target/linux/patches/4.14.334/arm-thumb2.patch
index d8d1f4984..d8d1f4984 100644
--- a/target/linux/patches/4.14.252/arm-thumb2.patch
+++ b/target/linux/patches/4.14.334/arm-thumb2.patch
diff --git a/target/linux/patches/4.14.252/h8300.patch b/target/linux/patches/4.14.334/h8300.patch
index 836a414e5..836a414e5 100644
--- a/target/linux/patches/4.14.252/h8300.patch
+++ b/target/linux/patches/4.14.334/h8300.patch
diff --git a/target/linux/patches/4.14.252/initramfs-nosizelimit.patch b/target/linux/patches/4.14.334/initramfs-nosizelimit.patch
index 0e524c1d9..0e524c1d9 100644
--- a/target/linux/patches/4.14.252/initramfs-nosizelimit.patch
+++ b/target/linux/patches/4.14.334/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/4.14.252/microblaze-sigaltstack.patch b/target/linux/patches/4.14.334/microblaze-sigaltstack.patch
index 80413890a..80413890a 100644
--- a/target/linux/patches/4.14.252/microblaze-sigaltstack.patch
+++ b/target/linux/patches/4.14.334/microblaze-sigaltstack.patch
diff --git a/target/linux/patches/4.14.252/or1k-more-ram.patch b/target/linux/patches/4.14.334/or1k-more-ram.patch
index de848c838..de848c838 100644
--- a/target/linux/patches/4.14.252/or1k-more-ram.patch
+++ b/target/linux/patches/4.14.334/or1k-more-ram.patch
diff --git a/target/linux/patches/4.14.252/startup.patch b/target/linux/patches/4.14.334/startup.patch
index f52660a95..f52660a95 100644
--- a/target/linux/patches/4.14.252/startup.patch
+++ b/target/linux/patches/4.14.334/startup.patch
diff --git a/target/linux/patches/4.14.252/vdso2.patch b/target/linux/patches/4.14.334/vdso2.patch
index b6c32f31b..b6c32f31b 100644
--- a/target/linux/patches/4.14.252/vdso2.patch
+++ b/target/linux/patches/4.14.334/vdso2.patch
diff --git a/target/linux/patches/4.19.213/arc.patch b/target/linux/patches/4.19.310/arc.patch
index 20810ce64..20810ce64 100644
--- a/target/linux/patches/4.19.213/arc.patch
+++ b/target/linux/patches/4.19.310/arc.patch
diff --git a/target/linux/patches/4.19.213/arm-nommu.patch b/target/linux/patches/4.19.310/arm-nommu.patch
index d23d3f4eb..d23d3f4eb 100644
--- a/target/linux/patches/4.19.213/arm-nommu.patch
+++ b/target/linux/patches/4.19.310/arm-nommu.patch
diff --git a/target/linux/patches/4.19.213/darwin-dtc.patch b/target/linux/patches/4.19.310/darwin-dtc.patch
index 0cdc23ab4..0cdc23ab4 100644
--- a/target/linux/patches/4.19.213/darwin-dtc.patch
+++ b/target/linux/patches/4.19.310/darwin-dtc.patch
diff --git a/target/linux/patches/4.19.213/darwin-file2alias.patch b/target/linux/patches/4.19.310/darwin-file2alias.patch
index fdbc598a8..fdbc598a8 100644
--- a/target/linux/patches/4.19.213/darwin-file2alias.patch
+++ b/target/linux/patches/4.19.310/darwin-file2alias.patch
diff --git a/target/linux/patches/4.19.213/fec-coldfire.patch b/target/linux/patches/4.19.310/fec-coldfire.patch
index 09d8ad047..09d8ad047 100644
--- a/target/linux/patches/4.19.213/fec-coldfire.patch
+++ b/target/linux/patches/4.19.310/fec-coldfire.patch
diff --git a/target/linux/patches/4.19.213/or1k-more-ram.patch b/target/linux/patches/4.19.310/or1k-more-ram.patch
index de848c838..de848c838 100644
--- a/target/linux/patches/4.19.213/or1k-more-ram.patch
+++ b/target/linux/patches/4.19.310/or1k-more-ram.patch
diff --git a/target/linux/patches/4.19.213/relocs.patch b/target/linux/patches/4.19.310/relocs.patch
index 5bcd974c7..5bcd974c7 100644
--- a/target/linux/patches/4.19.213/relocs.patch
+++ b/target/linux/patches/4.19.310/relocs.patch
diff --git a/target/linux/patches/4.19.213/startup.patch b/target/linux/patches/4.19.310/startup.patch
index 4f42e84a7..4f42e84a7 100644
--- a/target/linux/patches/4.19.213/startup.patch
+++ b/target/linux/patches/4.19.310/startup.patch
diff --git a/target/linux/patches/4.19.213/vdso2.patch b/target/linux/patches/4.19.310/vdso2.patch
index 3d9d47ede..3d9d47ede 100644
--- a/target/linux/patches/4.19.213/vdso2.patch
+++ b/target/linux/patches/4.19.310/vdso2.patch
diff --git a/target/linux/patches/4.4.289/coldfire-sighandler.patch b/target/linux/patches/4.4.302/coldfire-sighandler.patch
index c52a4e228..c52a4e228 100644
--- a/target/linux/patches/4.4.289/coldfire-sighandler.patch
+++ b/target/linux/patches/4.4.302/coldfire-sighandler.patch
diff --git a/target/linux/patches/4.4.289/crisv32.patch b/target/linux/patches/4.4.302/crisv32.patch
index cb9b0d028..cb9b0d028 100644
--- a/target/linux/patches/4.4.289/crisv32.patch
+++ b/target/linux/patches/4.4.302/crisv32.patch
diff --git a/target/linux/patches/4.4.289/crisv32_ethernet_driver.patch b/target/linux/patches/4.4.302/crisv32_ethernet_driver.patch
index 0cef202fc..0cef202fc 100644
--- a/target/linux/patches/4.4.289/crisv32_ethernet_driver.patch
+++ b/target/linux/patches/4.4.302/crisv32_ethernet_driver.patch
diff --git a/target/linux/patches/4.4.302/h8300-net.patch b/target/linux/patches/4.4.302/h8300-net.patch
new file mode 100644
index 000000000..788ae7db8
--- /dev/null
+++ b/target/linux/patches/4.4.302/h8300-net.patch
@@ -0,0 +1,81 @@
+diff -Nur linux-4.4.302.orig/arch/h8300/boot/dts/edosk2674.dts linux-4.4.302/arch/h8300/boot/dts/edosk2674.dts
+--- linux-4.4.302.orig/arch/h8300/boot/dts/edosk2674.dts 2022-02-03 09:27:54.000000000 +0100
++++ linux-4.4.302/arch/h8300/boot/dts/edosk2674.dts 2022-02-14 05:05:26.253691787 +0100
+@@ -6,7 +6,7 @@
+ interrupt-parent = <&h8intc>;
+
+ chosen {
+- bootargs = "console=ttySC2,38400";
++ bootargs = "console=ttySC2,38400 root=/dev/nfs ip=dhcp";
+ stdout-path = &sci2;
+ };
+ aliases {
+@@ -104,4 +104,9 @@
+ clocks = <&fclk>;
+ clock-names = "sci_ick";
+ };
++ ethernet: ethernet@f80000 {
++ compatible = "smsc,lan91c94";
++ reg = <0xf80000 0xfbffff>;
++ interrupts = <16 0>;
++ };
+ };
+diff -Nur linux-4.4.302.orig/drivers/net/ethernet/smsc/Kconfig linux-4.4.302/drivers/net/ethernet/smsc/Kconfig
+--- linux-4.4.302.orig/drivers/net/ethernet/smsc/Kconfig 2022-02-03 09:27:54.000000000 +0100
++++ linux-4.4.302/drivers/net/ethernet/smsc/Kconfig 2022-02-14 04:21:54.546112552 +0100
+@@ -7,7 +7,7 @@
+ default y
+ depends on ARM || ARM64 || ATARI_ETHERNAT || BLACKFIN || COLDFIRE || \
+ ISA || M32R || MAC || MIPS || MN10300 || NIOS2 || PCI || \
+- PCMCIA || SUPERH || XTENSA
++ PCMCIA || SUPERH || XTENSA || H8300
+ ---help---
+ If you have a network (Ethernet) card belonging to this class, say Y.
+
+@@ -36,9 +36,8 @@
+ tristate "SMC 91C9x/91C1xxx support"
+ select CRC32
+ select MII
+- depends on !OF || GPIOLIB
+ depends on ARM || ARM64 || ATARI_ETHERNAT || BLACKFIN || COLDFIRE || \
+- M32R || MIPS || MN10300 || NIOS2 || SUPERH || XTENSA
++ M32R || MIPS || MN10300 || NIOS2 || SUPERH || XTENSA || H8300
+ ---help---
+ This is a driver for SMC's 91x series of Ethernet chipsets,
+ including the SMC91C94 and the SMC91C111. Say Y if you want it
+diff -Nur linux-4.4.302.orig/drivers/net/ethernet/smsc/smc91x.c linux-4.4.302/drivers/net/ethernet/smsc/smc91x.c
+--- linux-4.4.302.orig/drivers/net/ethernet/smsc/smc91x.c 2022-02-03 09:27:54.000000000 +0100
++++ linux-4.4.302/drivers/net/ethernet/smsc/smc91x.c 2022-02-14 05:31:18.727485106 +0100
+@@ -61,7 +61,7 @@
+
+ /* Debugging level */
+ #ifndef SMC_DEBUG
+-#define SMC_DEBUG 0
++#define SMC_DEBUG 1
+ #endif
+
+
+@@ -2204,6 +2204,7 @@
+ };
+ MODULE_DEVICE_TABLE(of, smc91x_match);
+
++#if defined(CONFIG_GPIOLIB)
+ /**
+ * of_try_set_control_gpio - configure a gpio if it exists
+ */
+@@ -2228,6 +2229,15 @@
+
+ return 0;
+ }
++#else
++static int try_toggle_control_gpio(struct device *dev,
++ struct gpio_desc **desc,
++ const char *name, int index,
++ int value, unsigned int nsdelay)
++{
++ return 0;
++}
++#endif
+ #endif
+
+ /*
diff --git a/target/linux/patches/4.4.289/h8300.patch b/target/linux/patches/4.4.302/h8300.patch
index cf73989a6..cf73989a6 100644
--- a/target/linux/patches/4.4.289/h8300.patch
+++ b/target/linux/patches/4.4.302/h8300.patch
diff --git a/target/linux/patches/4.4.289/initramfs-nosizelimit.patch b/target/linux/patches/4.4.302/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/4.4.289/initramfs-nosizelimit.patch
+++ b/target/linux/patches/4.4.302/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/4.4.289/ld-or1k.patch b/target/linux/patches/4.4.302/ld-or1k.patch
index 264f9166f..264f9166f 100644
--- a/target/linux/patches/4.4.289/ld-or1k.patch
+++ b/target/linux/patches/4.4.302/ld-or1k.patch
diff --git a/target/linux/patches/4.4.289/macsonic.patch b/target/linux/patches/4.4.302/macsonic.patch
index 75a6fcad2..75a6fcad2 100644
--- a/target/linux/patches/4.4.289/macsonic.patch
+++ b/target/linux/patches/4.4.302/macsonic.patch
diff --git a/target/linux/patches/4.4.289/mips-xz.patch b/target/linux/patches/4.4.302/mips-xz.patch
index 5cfac6254..5cfac6254 100644
--- a/target/linux/patches/4.4.289/mips-xz.patch
+++ b/target/linux/patches/4.4.302/mips-xz.patch
diff --git a/target/linux/patches/4.4.289/patch-realtime b/target/linux/patches/4.4.302/patch-realtime
index 9fe252409..9fe252409 100644
--- a/target/linux/patches/4.4.289/patch-realtime
+++ b/target/linux/patches/4.4.302/patch-realtime
diff --git a/target/linux/patches/4.4.289/startup.patch b/target/linux/patches/4.4.302/startup.patch
index f9ab3f1c1..f9ab3f1c1 100644
--- a/target/linux/patches/4.4.289/startup.patch
+++ b/target/linux/patches/4.4.302/startup.patch
diff --git a/target/linux/patches/4.4.289/use-libgcc-for-sh.patch b/target/linux/patches/4.4.302/use-libgcc-for-sh.patch
index 6420219b0..6420219b0 100644
--- a/target/linux/patches/4.4.289/use-libgcc-for-sh.patch
+++ b/target/linux/patches/4.4.302/use-libgcc-for-sh.patch
diff --git a/target/linux/patches/4.4.289/versatile-nommu.patch b/target/linux/patches/4.4.302/versatile-nommu.patch
index 96140b30c..96140b30c 100644
--- a/target/linux/patches/4.4.289/versatile-nommu.patch
+++ b/target/linux/patches/4.4.302/versatile-nommu.patch
diff --git a/target/linux/patches/5.10.75/arc.patch b/target/linux/patches/5.10.213/arc.patch
index 20810ce64..20810ce64 100644
--- a/target/linux/patches/5.10.75/arc.patch
+++ b/target/linux/patches/5.10.213/arc.patch
diff --git a/target/linux/patches/5.10.75/darwin-dtc.patch b/target/linux/patches/5.10.213/darwin-dtc.patch
index 0cdc23ab4..0cdc23ab4 100644
--- a/target/linux/patches/5.10.75/darwin-dtc.patch
+++ b/target/linux/patches/5.10.213/darwin-dtc.patch
diff --git a/target/linux/patches/5.10.75/darwin-file2alias.patch b/target/linux/patches/5.10.213/darwin-file2alias.patch
index fdbc598a8..fdbc598a8 100644
--- a/target/linux/patches/5.10.75/darwin-file2alias.patch
+++ b/target/linux/patches/5.10.213/darwin-file2alias.patch
diff --git a/target/linux/patches/5.10.75/dtc-noyaml.patch b/target/linux/patches/5.10.213/dtc-noyaml.patch
index 759bb01f7..759bb01f7 100644
--- a/target/linux/patches/5.10.75/dtc-noyaml.patch
+++ b/target/linux/patches/5.10.213/dtc-noyaml.patch
diff --git a/target/linux/patches/5.10.213/nds32-ag101p.patch b/target/linux/patches/5.10.213/nds32-ag101p.patch
new file mode 100644
index 000000000..a8beea478
--- /dev/null
+++ b/target/linux/patches/5.10.213/nds32-ag101p.patch
@@ -0,0 +1,64 @@
+diff -Nur linux-5.10.93.orig/arch/nds32/boot/dts/ag101p.dts linux-5.10.93/arch/nds32/boot/dts/ag101p.dts
+--- linux-5.10.93.orig/arch/nds32/boot/dts/ag101p.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-5.10.93/arch/nds32/boot/dts/ag101p.dts 2022-01-21 03:39:21.936044612 +0100
+@@ -0,0 +1,60 @@
++/dts-v1/;
++/ {
++ compatible = "nds32 ag101p";
++ #address-cells = <1>;
++ #size-cells = <1>;
++ interrupt-parent = <&intc>;
++
++ chosen {
++ bootargs = "console=ttyS0,38400n8 earlyprintk=uart8250-32bit,0x99600000 debug loglevel=7";
++ };
++
++ memory@0 {
++ device_type = "memory";
++ reg = <0x00000000 0x40000000>;
++ };
++
++ cpus {
++ cpu@0 {
++ device_type = "cpu";
++ compatible = "andestech,n13";
++ next-level-cache = <&L2>;
++ };
++ };
++
++ intc: interrupt-controller {
++ compatible = "andestech,atnointc010";
++ #interrupt-cells = <2>;
++ interrupt-controller;
++ };
++
++ serial0: serial@99600000 {
++ compatible = "andestech,uart16550", "ns16550a";
++ reg = <0x99600000 0x1000>;
++ interrupts = <7 4>;
++ clock-frequency = <14745600>;
++ reg-shift = <2>;
++ no-loopback-test = <1>;
++ };
++
++ timer0: timer@98400000 {
++ compatible = "andestech,atftmr010";
++ reg = <0x98400000 0x1000>;
++ interrupts = <19 4>;
++ clock-frequency = <15000000>;
++ cycle-count-offset = <0x20>;
++ };
++
++ mac0: mac@90900000 {
++ compatible = "andestech,atmac100";
++ reg = <0x90900000 0x1000>;
++ interrupts = <25 4>;
++ };
++
++ L2: l2-cache {
++ compatible = "andestech,atl2c";
++ reg = <0x90f00000 0x1000>;
++ cache-unified;
++ cache-level = <2>;
++ };
++};
diff --git a/target/linux/patches/5.10.75/or1k-more-ram.patch b/target/linux/patches/5.10.213/or1k-more-ram.patch
index de848c838..de848c838 100644
--- a/target/linux/patches/5.10.75/or1k-more-ram.patch
+++ b/target/linux/patches/5.10.213/or1k-more-ram.patch
diff --git a/target/linux/patches/5.10.75/relocs.patch b/target/linux/patches/5.10.213/relocs.patch
index 5bcd974c7..5bcd974c7 100644
--- a/target/linux/patches/5.10.75/relocs.patch
+++ b/target/linux/patches/5.10.213/relocs.patch
diff --git a/target/linux/patches/5.10.75/startup.patch b/target/linux/patches/5.10.213/startup.patch
index eef481021..eef481021 100644
--- a/target/linux/patches/5.10.75/startup.patch
+++ b/target/linux/patches/5.10.213/startup.patch
diff --git a/target/linux/patches/5.4.155/darwin-dtc.patch b/target/linux/patches/5.15.152/darwin-dtc.patch
index 0cdc23ab4..0cdc23ab4 100644
--- a/target/linux/patches/5.4.155/darwin-dtc.patch
+++ b/target/linux/patches/5.15.152/darwin-dtc.patch
diff --git a/target/linux/patches/5.4.155/darwin-file2alias.patch b/target/linux/patches/5.15.152/darwin-file2alias.patch
index fdbc598a8..fdbc598a8 100644
--- a/target/linux/patches/5.4.155/darwin-file2alias.patch
+++ b/target/linux/patches/5.15.152/darwin-file2alias.patch
diff --git a/target/linux/patches/5.4.155/dtc-noyaml.patch b/target/linux/patches/5.15.152/dtc-noyaml.patch
index 759bb01f7..759bb01f7 100644
--- a/target/linux/patches/5.4.155/dtc-noyaml.patch
+++ b/target/linux/patches/5.15.152/dtc-noyaml.patch
diff --git a/target/linux/patches/5.15.152/enable-ethernet-bpi-m2-plus.patch b/target/linux/patches/5.15.152/enable-ethernet-bpi-m2-plus.patch
new file mode 100644
index 000000000..7e9abd9ce
--- /dev/null
+++ b/target/linux/patches/5.15.152/enable-ethernet-bpi-m2-plus.patch
@@ -0,0 +1,15 @@
+diff -Nur linux-6.0.11.orig/arch/arm/boot/dts/sunxi-h3-h5.dtsi linux-6.0.11/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+--- linux-6.0.11.orig/arch/arm/boot/dts/sunxi-h3-h5.dtsi 2022-12-02 17:43:18.000000000 +0100
++++ linux-6.0.11/arch/arm/boot/dts/sunxi-h3-h5.dtsi 2022-12-19 08:06:16.836436057 +0100
+@@ -532,7 +532,10 @@
+ reset-names = "stmmaceth";
+ clocks = <&ccu CLK_BUS_EMAC>;
+ clock-names = "stmmaceth";
+- status = "disabled";
++ status = "okay";
++ phy-handle = <&int_mii_phy>;
++ phy-mode = "mii";
++ allwinner,leds-active-low;
+
+ mdio: mdio {
+ #address-cells = <1>;
diff --git a/target/linux/patches/5.15.152/nds32-ag101p.patch b/target/linux/patches/5.15.152/nds32-ag101p.patch
new file mode 100644
index 000000000..a8beea478
--- /dev/null
+++ b/target/linux/patches/5.15.152/nds32-ag101p.patch
@@ -0,0 +1,64 @@
+diff -Nur linux-5.10.93.orig/arch/nds32/boot/dts/ag101p.dts linux-5.10.93/arch/nds32/boot/dts/ag101p.dts
+--- linux-5.10.93.orig/arch/nds32/boot/dts/ag101p.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-5.10.93/arch/nds32/boot/dts/ag101p.dts 2022-01-21 03:39:21.936044612 +0100
+@@ -0,0 +1,60 @@
++/dts-v1/;
++/ {
++ compatible = "nds32 ag101p";
++ #address-cells = <1>;
++ #size-cells = <1>;
++ interrupt-parent = <&intc>;
++
++ chosen {
++ bootargs = "console=ttyS0,38400n8 earlyprintk=uart8250-32bit,0x99600000 debug loglevel=7";
++ };
++
++ memory@0 {
++ device_type = "memory";
++ reg = <0x00000000 0x40000000>;
++ };
++
++ cpus {
++ cpu@0 {
++ device_type = "cpu";
++ compatible = "andestech,n13";
++ next-level-cache = <&L2>;
++ };
++ };
++
++ intc: interrupt-controller {
++ compatible = "andestech,atnointc010";
++ #interrupt-cells = <2>;
++ interrupt-controller;
++ };
++
++ serial0: serial@99600000 {
++ compatible = "andestech,uart16550", "ns16550a";
++ reg = <0x99600000 0x1000>;
++ interrupts = <7 4>;
++ clock-frequency = <14745600>;
++ reg-shift = <2>;
++ no-loopback-test = <1>;
++ };
++
++ timer0: timer@98400000 {
++ compatible = "andestech,atftmr010";
++ reg = <0x98400000 0x1000>;
++ interrupts = <19 4>;
++ clock-frequency = <15000000>;
++ cycle-count-offset = <0x20>;
++ };
++
++ mac0: mac@90900000 {
++ compatible = "andestech,atmac100";
++ reg = <0x90900000 0x1000>;
++ interrupts = <25 4>;
++ };
++
++ L2: l2-cache {
++ compatible = "andestech,atl2c";
++ reg = <0x90f00000 0x1000>;
++ cache-unified;
++ cache-level = <2>;
++ };
++};
diff --git a/target/linux/patches/5.4.155/or1k-more-ram.patch b/target/linux/patches/5.15.152/or1k-more-ram.patch
index de848c838..de848c838 100644
--- a/target/linux/patches/5.4.155/or1k-more-ram.patch
+++ b/target/linux/patches/5.15.152/or1k-more-ram.patch
diff --git a/target/linux/patches/5.4.155/relocs.patch b/target/linux/patches/5.15.152/relocs.patch
index 5bcd974c7..5bcd974c7 100644
--- a/target/linux/patches/5.4.155/relocs.patch
+++ b/target/linux/patches/5.15.152/relocs.patch
diff --git a/target/linux/patches/5.15.152/rockchip-115200.patch b/target/linux/patches/5.15.152/rockchip-115200.patch
new file mode 100644
index 000000000..ad8a2d7a7
--- /dev/null
+++ b/target/linux/patches/5.15.152/rockchip-115200.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-5.15.81.orig/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi linux-5.15.81/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
+--- linux-5.15.81.orig/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 2022-12-02 17:41:12.000000000 +0100
++++ linux-5.15.81/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 2022-12-22 09:51:57.370394227 +0100
+@@ -17,7 +17,7 @@
+ };
+
+ chosen {
+- stdout-path = "serial2:1500000n8";
++ stdout-path = "serial2:115200n8";
+ };
+
+ clkin_gmac: external-gmac-clock {
diff --git a/target/linux/patches/5.15.152/startup.patch b/target/linux/patches/5.15.152/startup.patch
new file mode 100644
index 000000000..eef481021
--- /dev/null
+++ b/target/linux/patches/5.15.152/startup.patch
@@ -0,0 +1,25 @@
+diff -Nur linux-5.10.17.orig/init/initramfs.c linux-5.10.17/init/initramfs.c
+--- linux-5.10.17.orig/init/initramfs.c 2021-02-17 11:02:30.000000000 +0100
++++ linux-5.10.17/init/initramfs.c 2021-02-23 13:27:40.449467155 +0100
+@@ -636,6 +636,9 @@
+ initrd_start = 0;
+ initrd_end = 0;
+
++#ifdef CONFIG_DEVTMPFS_MOUNT
++ devtmpfs_mount();
++#endif
+ flush_delayed_fput();
+ return 0;
+ }
+diff -Nur linux-5.10.17.orig/init/main.c linux-5.10.17/init/main.c
+--- linux-5.10.17.orig/init/main.c 2021-02-17 11:02:30.000000000 +0100
++++ linux-5.10.17/init/main.c 2021-02-23 13:39:32.238650450 +0100
+@@ -1483,6 +1483,8 @@
+ pr_err("Warning: unable to open an initial console.\n");
+ return;
+ }
++ printk(KERN_WARNING "Starting Linux (built with OpenADK).\n");
++
+ init_dup(file);
+ init_dup(file);
+ init_dup(file);
diff --git a/target/linux/patches/5.4.155/arc.patch b/target/linux/patches/5.4.272/arc.patch
index 20810ce64..20810ce64 100644
--- a/target/linux/patches/5.4.155/arc.patch
+++ b/target/linux/patches/5.4.272/arc.patch
diff --git a/target/linux/patches/5.4.155/arm-nommu.patch b/target/linux/patches/5.4.272/arm-nommu.patch
index fdcec3f09..fdcec3f09 100644
--- a/target/linux/patches/5.4.155/arm-nommu.patch
+++ b/target/linux/patches/5.4.272/arm-nommu.patch
diff --git a/target/linux/patches/5.4.272/darwin-dtc.patch b/target/linux/patches/5.4.272/darwin-dtc.patch
new file mode 100644
index 000000000..0cdc23ab4
--- /dev/null
+++ b/target/linux/patches/5.4.272/darwin-dtc.patch
@@ -0,0 +1,26 @@
+diff -Nur linux-4.19.132.orig/scripts/dtc/dtc.h linux-4.19.132/scripts/dtc/dtc.h
+--- linux-4.19.132.orig/scripts/dtc/dtc.h 2020-07-09 09:37:13.000000000 +0200
++++ linux-4.19.132/scripts/dtc/dtc.h 2020-07-15 02:38:00.000000000 +0200
+@@ -33,8 +33,8 @@
+ #include <unistd.h>
+ #include <inttypes.h>
+
+-#include <libfdt_env.h>
+-#include <fdt.h>
++#include "libfdt/libfdt_env.h"
++#include "libfdt/fdt.h"
+
+ #include "util.h"
+
+diff -Nur linux-4.19.132.orig/scripts/dtc/util.c linux-4.19.132/scripts/dtc/util.c
+--- linux-4.19.132.orig/scripts/dtc/util.c 2020-07-09 09:37:13.000000000 +0200
++++ linux-4.19.132/scripts/dtc/util.c 2020-07-15 02:38:18.000000000 +0200
+@@ -32,7 +32,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+
+-#include "libfdt.h"
++#include "libfdt/libfdt.h"
+ #include "util.h"
+ #include "version_gen.h"
+
diff --git a/target/linux/patches/5.4.272/darwin-file2alias.patch b/target/linux/patches/5.4.272/darwin-file2alias.patch
new file mode 100644
index 000000000..fdbc598a8
--- /dev/null
+++ b/target/linux/patches/5.4.272/darwin-file2alias.patch
@@ -0,0 +1,14 @@
+diff -Nur linux-5.4.42.orig/scripts/mod/file2alias.c linux-5.4.42/scripts/mod/file2alias.c
+--- linux-5.4.42.orig/scripts/mod/file2alias.c 2020-05-20 08:20:41.000000000 +0200
++++ linux-5.4.42/scripts/mod/file2alias.c 2020-06-06 20:14:59.000000000 +0200
+@@ -10,6 +10,10 @@
+ * of the GNU General Public License, incorporated herein by reference.
+ */
+
++/* workaround for Darwin */
++#define _UUID_T
++#define __GETHOSTUUID_H
++
+ #include "modpost.h"
+ #include "devicetable-offsets.h"
+
diff --git a/target/linux/patches/5.4.272/dtc-noyaml.patch b/target/linux/patches/5.4.272/dtc-noyaml.patch
new file mode 100644
index 000000000..759bb01f7
--- /dev/null
+++ b/target/linux/patches/5.4.272/dtc-noyaml.patch
@@ -0,0 +1,16 @@
+diff -Nur linux-5.4.53.orig/scripts/dtc/dtc.c linux-5.4.53/scripts/dtc/dtc.c
+--- linux-5.4.53.orig/scripts/dtc/dtc.c 2020-07-22 09:33:18.000000000 +0200
++++ linux-5.4.53/scripts/dtc/dtc.c 2020-07-28 14:20:10.000000000 +0200
+@@ -349,12 +349,6 @@
+
+ if (streq(outform, "dts")) {
+ dt_to_source(outf, dti);
+-#ifndef NO_YAML
+- } else if (streq(outform, "yaml")) {
+- if (!streq(inform, "dts"))
+- die("YAML output format requires dts input format\n");
+- dt_to_yaml(outf, dti);
+-#endif
+ } else if (streq(outform, "dtb")) {
+ dt_to_blob(outf, dti, outversion);
+ } else if (streq(outform, "asm")) {
diff --git a/target/linux/patches/5.4.272/macsonic.patch b/target/linux/patches/5.4.272/macsonic.patch
new file mode 100644
index 000000000..75a6fcad2
--- /dev/null
+++ b/target/linux/patches/5.4.272/macsonic.patch
@@ -0,0 +1,11 @@
+diff -Nur linux-4.4.6.orig/drivers/net/ethernet/natsemi/Kconfig linux-4.4.6/drivers/net/ethernet/natsemi/Kconfig
+--- linux-4.4.6.orig/drivers/net/ethernet/natsemi/Kconfig 2016-03-16 16:43:17.000000000 +0100
++++ linux-4.4.6/drivers/net/ethernet/natsemi/Kconfig 2016-03-18 10:43:34.000000000 +0100
+@@ -18,6 +18,7 @@
+ config MACSONIC
+ tristate "Macintosh SONIC based ethernet (onboard, NuBus, LC, CS)"
+ depends on MAC
++ select BITREVERSE
+ ---help---
+ Support for NatSemi SONIC based Ethernet devices. This includes
+ the onboard Ethernet in many Quadras as well as some LC-PDS,
diff --git a/target/linux/patches/5.4.272/or1k-more-ram.patch b/target/linux/patches/5.4.272/or1k-more-ram.patch
new file mode 100644
index 000000000..540dc43b5
--- /dev/null
+++ b/target/linux/patches/5.4.272/or1k-more-ram.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-4.8.11.orig/arch/openrisc/boot/dts/or1ksim.dts linux-4.8.11/arch/openrisc/boot/dts/or1ksim.dts
+--- linux-4.8.11.orig/arch/openrisc/boot/dts/or1ksim.dts 2016-11-26 09:57:13.000000000 +0100
++++ linux-4.8.11/arch/openrisc/boot/dts/or1ksim.dts 2016-12-04 14:39:46.092952799 +0100
+@@ -11,7 +11,7 @@
+
+ memory@0 {
+ device_type = "memory";
+- reg = <0x00000000 0x02000000>;
++ reg = <0x00000000 0x08000000>;
+ };
+
+ cpus {
diff --git a/target/linux/patches/5.4.272/relocs.patch b/target/linux/patches/5.4.272/relocs.patch
new file mode 100644
index 000000000..5bcd974c7
--- /dev/null
+++ b/target/linux/patches/5.4.272/relocs.patch
@@ -0,0 +1,2698 @@
+diff -Nur linux-5.4.42.orig/arch/x86/tools/relocs.h linux-5.4.42/arch/x86/tools/relocs.h
+--- linux-5.4.42.orig/arch/x86/tools/relocs.h 2020-05-20 08:20:41.000000000 +0200
++++ linux-5.4.42/arch/x86/tools/relocs.h 2020-06-06 18:18:17.000000000 +0200
+@@ -10,11 +10,19 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <unistd.h>
++#ifdef __linux__
+ #include <elf.h>
+ #include <byteswap.h>
+ #define USE_BSD
+ #include <endian.h>
++#else
++#include "elf.h"
++#endif
++#ifdef __APPLE__
++#include <pcreposix.h>
++#else
+ #include <regex.h>
++#endif
+ #include <tools/le_byteshift.h>
+
+ void die(char *fmt, ...) __attribute__((noreturn));
+diff -Nur linux-5.4.42.orig/tools/include/elf.h linux-5.4.42/tools/include/elf.h
+--- linux-5.4.42.orig/tools/include/elf.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-5.4.42/tools/include/elf.h 2020-06-06 18:18:17.000000000 +0200
+@@ -0,0 +1,2671 @@
++#ifndef _ELF_H
++#define _ELF_H
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#include <stdint.h>
++
++typedef uint16_t Elf32_Half;
++typedef uint16_t Elf64_Half;
++
++typedef uint32_t Elf32_Word;
++typedef int32_t Elf32_Sword;
++typedef uint32_t Elf64_Word;
++typedef int32_t Elf64_Sword;
++
++typedef uint64_t Elf32_Xword;
++typedef int64_t Elf32_Sxword;
++typedef uint64_t Elf64_Xword;
++typedef int64_t Elf64_Sxword;
++
++typedef uint32_t Elf32_Addr;
++typedef uint64_t Elf64_Addr;
++
++typedef uint32_t Elf32_Off;
++typedef uint64_t Elf64_Off;
++
++typedef uint16_t Elf32_Section;
++typedef uint16_t Elf64_Section;
++
++typedef Elf32_Half Elf32_Versym;
++typedef Elf64_Half Elf64_Versym;
++
++#define EI_NIDENT (16)
++
++typedef struct {
++ unsigned char e_ident[EI_NIDENT];
++ Elf32_Half e_type;
++ Elf32_Half e_machine;
++ Elf32_Word e_version;
++ Elf32_Addr e_entry;
++ Elf32_Off e_phoff;
++ Elf32_Off e_shoff;
++ Elf32_Word e_flags;
++ Elf32_Half e_ehsize;
++ Elf32_Half e_phentsize;
++ Elf32_Half e_phnum;
++ Elf32_Half e_shentsize;
++ Elf32_Half e_shnum;
++ Elf32_Half e_shstrndx;
++} Elf32_Ehdr;
++
++typedef struct {
++ unsigned char e_ident[EI_NIDENT];
++ Elf64_Half e_type;
++ Elf64_Half e_machine;
++ Elf64_Word e_version;
++ Elf64_Addr e_entry;
++ Elf64_Off e_phoff;
++ Elf64_Off e_shoff;
++ Elf64_Word e_flags;
++ Elf64_Half e_ehsize;
++ Elf64_Half e_phentsize;
++ Elf64_Half e_phnum;
++ Elf64_Half e_shentsize;
++ Elf64_Half e_shnum;
++ Elf64_Half e_shstrndx;
++} Elf64_Ehdr;
++
++#define EI_MAG0 0
++#define ELFMAG0 0x7f
++
++#define EI_MAG1 1
++#define ELFMAG1 'E'
++
++#define EI_MAG2 2
++#define ELFMAG2 'L'
++
++#define EI_MAG3 3
++#define ELFMAG3 'F'
++
++
++#define ELFMAG "\177ELF"
++#define SELFMAG 4
++
++#define EI_CLASS 4
++#define ELFCLASSNONE 0
++#define ELFCLASS32 1
++#define ELFCLASS64 2
++#define ELFCLASSNUM 3
++
++#define EI_DATA 5
++#define ELFDATANONE 0
++#define ELFDATA2LSB 1
++#define ELFDATA2MSB 2
++#define ELFDATANUM 3
++
++#define EI_VERSION 6
++
++
++#define EI_OSABI 7
++#define ELFOSABI_NONE 0
++#define ELFOSABI_SYSV 0
++#define ELFOSABI_HPUX 1
++#define ELFOSABI_NETBSD 2
++#define ELFOSABI_LINUX 3
++#define ELFOSABI_GNU 3
++#define ELFOSABI_SOLARIS 6
++#define ELFOSABI_AIX 7
++#define ELFOSABI_IRIX 8
++#define ELFOSABI_FREEBSD 9
++#define ELFOSABI_TRU64 10
++#define ELFOSABI_MODESTO 11
++#define ELFOSABI_OPENBSD 12
++#define ELFOSABI_ARM 97
++#define ELFOSABI_STANDALONE 255
++
++#define EI_ABIVERSION 8
++
++#define EI_PAD 9
++
++
++
++#define ET_NONE 0
++#define ET_REL 1
++#define ET_EXEC 2
++#define ET_DYN 3
++#define ET_CORE 4
++#define ET_NUM 5
++#define ET_LOOS 0xfe00
++#define ET_HIOS 0xfeff
++#define ET_LOPROC 0xff00
++#define ET_HIPROC 0xffff
++
++
++
++#define EM_NONE 0
++#define EM_M32 1
++#define EM_SPARC 2
++#define EM_386 3
++#define EM_68K 4
++#define EM_88K 5
++#define EM_860 7
++#define EM_MIPS 8
++#define EM_S370 9
++#define EM_MIPS_RS3_LE 10
++
++#define EM_PARISC 15
++#define EM_VPP500 17
++#define EM_SPARC32PLUS 18
++#define EM_960 19
++#define EM_PPC 20
++#define EM_PPC64 21
++#define EM_S390 22
++
++#define EM_V800 36
++#define EM_FR20 37
++#define EM_RH32 38
++#define EM_RCE 39
++#define EM_ARM 40
++#define EM_FAKE_ALPHA 41
++#define EM_SH 42
++#define EM_SPARCV9 43
++#define EM_TRICORE 44
++#define EM_ARC 45
++#define EM_H8_300 46
++#define EM_H8_300H 47
++#define EM_H8S 48
++#define EM_H8_500 49
++#define EM_IA_64 50
++#define EM_MIPS_X 51
++#define EM_COLDFIRE 52
++#define EM_68HC12 53
++#define EM_MMA 54
++#define EM_PCP 55
++#define EM_NCPU 56
++#define EM_NDR1 57
++#define EM_STARCORE 58
++#define EM_ME16 59
++#define EM_ST100 60
++#define EM_TINYJ 61
++#define EM_X86_64 62
++#define EM_PDSP 63
++
++#define EM_FX66 66
++#define EM_ST9PLUS 67
++#define EM_ST7 68
++#define EM_68HC16 69
++#define EM_68HC11 70
++#define EM_68HC08 71
++#define EM_68HC05 72
++#define EM_SVX 73
++#define EM_ST19 74
++#define EM_VAX 75
++#define EM_CRIS 76
++#define EM_JAVELIN 77
++#define EM_FIREPATH 78
++#define EM_ZSP 79
++#define EM_MMIX 80
++#define EM_HUANY 81
++#define EM_PRISM 82
++#define EM_AVR 83
++#define EM_FR30 84
++#define EM_D10V 85
++#define EM_D30V 86
++#define EM_V850 87
++#define EM_M32R 88
++#define EM_MN10300 89
++#define EM_MN10200 90
++#define EM_PJ 91
++#define EM_OPENRISC 92
++#define EM_ARC_A5 93
++#define EM_XTENSA 94
++#define EM_AARCH64 183
++#define EM_TILEPRO 188
++#define EM_MICROBLAZE 189
++#define EM_TILEGX 191
++#define EM_NUM 192
++#define EM_ALPHA 0x9026
++
++#define EV_NONE 0
++#define EV_CURRENT 1
++#define EV_NUM 2
++
++typedef struct {
++ Elf32_Word sh_name;
++ Elf32_Word sh_type;
++ Elf32_Word sh_flags;
++ Elf32_Addr sh_addr;
++ Elf32_Off sh_offset;
++ Elf32_Word sh_size;
++ Elf32_Word sh_link;
++ Elf32_Word sh_info;
++ Elf32_Word sh_addralign;
++ Elf32_Word sh_entsize;
++} Elf32_Shdr;
++
++typedef struct {
++ Elf64_Word sh_name;
++ Elf64_Word sh_type;
++ Elf64_Xword sh_flags;
++ Elf64_Addr sh_addr;
++ Elf64_Off sh_offset;
++ Elf64_Xword sh_size;
++ Elf64_Word sh_link;
++ Elf64_Word sh_info;
++ Elf64_Xword sh_addralign;
++ Elf64_Xword sh_entsize;
++} Elf64_Shdr;
++
++
++
++#define SHN_UNDEF 0
++#define SHN_LORESERVE 0xff00
++#define SHN_LOPROC 0xff00
++#define SHN_BEFORE 0xff00
++
++#define SHN_AFTER 0xff01
++
++#define SHN_HIPROC 0xff1f
++#define SHN_LOOS 0xff20
++#define SHN_HIOS 0xff3f
++#define SHN_ABS 0xfff1
++#define SHN_COMMON 0xfff2
++#define SHN_XINDEX 0xffff
++#define SHN_HIRESERVE 0xffff
++
++
++
++#define SHT_NULL 0
++#define SHT_PROGBITS 1
++#define SHT_SYMTAB 2
++#define SHT_STRTAB 3
++#define SHT_RELA 4
++#define SHT_HASH 5
++#define SHT_DYNAMIC 6
++#define SHT_NOTE 7
++#define SHT_NOBITS 8
++#define SHT_REL 9
++#define SHT_SHLIB 10
++#define SHT_DYNSYM 11
++#define SHT_INIT_ARRAY 14
++#define SHT_FINI_ARRAY 15
++#define SHT_PREINIT_ARRAY 16
++#define SHT_GROUP 17
++#define SHT_SYMTAB_SHNDX 18
++#define SHT_NUM 19
++#define SHT_LOOS 0x60000000
++#define SHT_GNU_ATTRIBUTES 0x6ffffff5
++#define SHT_GNU_HASH 0x6ffffff6
++#define SHT_GNU_LIBLIST 0x6ffffff7
++#define SHT_CHECKSUM 0x6ffffff8
++#define SHT_LOSUNW 0x6ffffffa
++#define SHT_SUNW_move 0x6ffffffa
++#define SHT_SUNW_COMDAT 0x6ffffffb
++#define SHT_SUNW_syminfo 0x6ffffffc
++#define SHT_GNU_verdef 0x6ffffffd
++#define SHT_GNU_verneed 0x6ffffffe
++#define SHT_GNU_versym 0x6fffffff
++#define SHT_HISUNW 0x6fffffff
++#define SHT_HIOS 0x6fffffff
++#define SHT_LOPROC 0x70000000
++#define SHT_HIPROC 0x7fffffff
++#define SHT_LOUSER 0x80000000
++#define SHT_HIUSER 0x8fffffff
++
++#define SHF_WRITE (1 << 0)
++#define SHF_ALLOC (1 << 1)
++#define SHF_EXECINSTR (1 << 2)
++#define SHF_MERGE (1 << 4)
++#define SHF_STRINGS (1 << 5)
++#define SHF_INFO_LINK (1 << 6)
++#define SHF_LINK_ORDER (1 << 7)
++#define SHF_OS_NONCONFORMING (1 << 8)
++
++#define SHF_GROUP (1 << 9)
++#define SHF_TLS (1 << 10)
++#define SHF_MASKOS 0x0ff00000
++#define SHF_MASKPROC 0xf0000000
++#define SHF_ORDERED (1 << 30)
++#define SHF_EXCLUDE (1 << 31)
++
++#define GRP_COMDAT 0x1
++
++typedef struct {
++ Elf32_Word st_name;
++ Elf32_Addr st_value;
++ Elf32_Word st_size;
++ unsigned char st_info;
++ unsigned char st_other;
++ Elf32_Section st_shndx;
++} Elf32_Sym;
++
++typedef struct {
++ Elf64_Word st_name;
++ unsigned char st_info;
++ unsigned char st_other;
++ Elf64_Section st_shndx;
++ Elf64_Addr st_value;
++ Elf64_Xword st_size;
++} Elf64_Sym;
++
++typedef struct {
++ Elf32_Half si_boundto;
++ Elf32_Half si_flags;
++} Elf32_Syminfo;
++
++typedef struct {
++ Elf64_Half si_boundto;
++ Elf64_Half si_flags;
++} Elf64_Syminfo;
++
++#define SYMINFO_BT_SELF 0xffff
++#define SYMINFO_BT_PARENT 0xfffe
++#define SYMINFO_BT_LOWRESERVE 0xff00
++
++#define SYMINFO_FLG_DIRECT 0x0001
++#define SYMINFO_FLG_PASSTHRU 0x0002
++#define SYMINFO_FLG_COPY 0x0004
++#define SYMINFO_FLG_LAZYLOAD 0x0008
++
++#define SYMINFO_NONE 0
++#define SYMINFO_CURRENT 1
++#define SYMINFO_NUM 2
++
++#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4)
++#define ELF32_ST_TYPE(val) ((val) & 0xf)
++#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
++
++#define ELF64_ST_BIND(val) ELF32_ST_BIND (val)
++#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val)
++#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type))
++
++#define STB_LOCAL 0
++#define STB_GLOBAL 1
++#define STB_WEAK 2
++#define STB_NUM 3
++#define STB_LOOS 10
++#define STB_GNU_UNIQUE 10
++#define STB_HIOS 12
++#define STB_LOPROC 13
++#define STB_HIPROC 15
++
++#define STT_NOTYPE 0
++#define STT_OBJECT 1
++#define STT_FUNC 2
++#define STT_SECTION 3
++#define STT_FILE 4
++#define STT_COMMON 5
++#define STT_TLS 6
++#define STT_NUM 7
++#define STT_LOOS 10
++#define STT_GNU_IFUNC 10
++#define STT_HIOS 12
++#define STT_LOPROC 13
++#define STT_HIPROC 15
++
++#define STN_UNDEF 0
++
++#define ELF32_ST_VISIBILITY(o) ((o) & 0x03)
++#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o)
++
++#define STV_DEFAULT 0
++#define STV_INTERNAL 1
++#define STV_HIDDEN 2
++#define STV_PROTECTED 3
++
++
++
++
++typedef struct
++{
++ Elf32_Addr r_offset;
++ Elf32_Word r_info;
++} Elf32_Rel;
++
++typedef struct {
++ Elf64_Addr r_offset;
++ Elf64_Xword r_info;
++} Elf64_Rel;
++
++
++
++typedef struct {
++ Elf32_Addr r_offset;
++ Elf32_Word r_info;
++ Elf32_Sword r_addend;
++} Elf32_Rela;
++
++typedef struct {
++ Elf64_Addr r_offset;
++ Elf64_Xword r_info;
++ Elf64_Sxword r_addend;
++} Elf64_Rela;
++
++
++
++#define ELF32_R_SYM(val) ((val) >> 8)
++#define ELF32_R_TYPE(val) ((val) & 0xff)
++#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
++
++#define ELF64_R_SYM(i) ((i) >> 32)
++#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
++#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type))
++
++
++
++typedef struct {
++ Elf32_Word p_type;
++ Elf32_Off p_offset;
++ Elf32_Addr p_vaddr;
++ Elf32_Addr p_paddr;
++ Elf32_Word p_filesz;
++ Elf32_Word p_memsz;
++ Elf32_Word p_flags;
++ Elf32_Word p_align;
++} Elf32_Phdr;
++
++typedef struct {
++ Elf64_Word p_type;
++ Elf64_Word p_flags;
++ Elf64_Off p_offset;
++ Elf64_Addr p_vaddr;
++ Elf64_Addr p_paddr;
++ Elf64_Xword p_filesz;
++ Elf64_Xword p_memsz;
++ Elf64_Xword p_align;
++} Elf64_Phdr;
++
++
++
++#define PT_NULL 0
++#define PT_LOAD 1
++#define PT_DYNAMIC 2
++#define PT_INTERP 3
++#define PT_NOTE 4
++#define PT_SHLIB 5
++#define PT_PHDR 6
++#define PT_TLS 7
++#define PT_NUM 8
++#define PT_LOOS 0x60000000
++#define PT_GNU_EH_FRAME 0x6474e550
++#define PT_GNU_STACK 0x6474e551
++#define PT_GNU_RELRO 0x6474e552
++#define PT_LOSUNW 0x6ffffffa
++#define PT_SUNWBSS 0x6ffffffa
++#define PT_SUNWSTACK 0x6ffffffb
++#define PT_HISUNW 0x6fffffff
++#define PT_HIOS 0x6fffffff
++#define PT_LOPROC 0x70000000
++#define PT_HIPROC 0x7fffffff
++
++
++#define PN_XNUM 0xffff
++
++
++#define PF_X (1 << 0)
++#define PF_W (1 << 1)
++#define PF_R (1 << 2)
++#define PF_MASKOS 0x0ff00000
++#define PF_MASKPROC 0xf0000000
++
++
++
++#define NT_PRSTATUS 1
++#define NT_FPREGSET 2
++#define NT_PRPSINFO 3
++#define NT_PRXREG 4
++#define NT_TASKSTRUCT 4
++#define NT_PLATFORM 5
++#define NT_AUXV 6
++#define NT_GWINDOWS 7
++#define NT_ASRS 8
++#define NT_PSTATUS 10
++#define NT_PSINFO 13
++#define NT_PRCRED 14
++#define NT_UTSNAME 15
++#define NT_LWPSTATUS 16
++#define NT_LWPSINFO 17
++#define NT_PRFPXREG 20
++#define NT_SIGINFO 0x53494749
++#define NT_FILE 0x46494c45
++#define NT_PRXFPREG 0x46e62b7f
++#define NT_PPC_VMX 0x100
++#define NT_PPC_SPE 0x101
++#define NT_PPC_VSX 0x102
++#define NT_386_TLS 0x200
++#define NT_386_IOPERM 0x201
++#define NT_X86_XSTATE 0x202
++#define NT_S390_HIGH_GPRS 0x300
++#define NT_S390_TIMER 0x301
++#define NT_S390_TODCMP 0x302
++#define NT_S390_TODPREG 0x303
++#define NT_S390_CTRS 0x304
++#define NT_S390_PREFIX 0x305
++#define NT_S390_LAST_BREAK 0x306
++#define NT_S390_SYSTEM_CALL 0x307
++#define NT_S390_TDB 0x308
++#define NT_ARM_VFP 0x400
++#define NT_ARM_TLS 0x401
++#define NT_ARM_HW_BREAK 0x402
++#define NT_ARM_HW_WATCH 0x403
++#define NT_METAG_CBUF 0x500
++#define NT_METAG_RPIPE 0x501
++#define NT_METAG_TLS 0x502
++#define NT_VERSION 1
++
++
++
++
++typedef struct {
++ Elf32_Sword d_tag;
++ union {
++ Elf32_Word d_val;
++ Elf32_Addr d_ptr;
++ } d_un;
++} Elf32_Dyn;
++
++typedef struct {
++ Elf64_Sxword d_tag;
++ union {
++ Elf64_Xword d_val;
++ Elf64_Addr d_ptr;
++ } d_un;
++} Elf64_Dyn;
++
++
++
++#define DT_NULL 0
++#define DT_NEEDED 1
++#define DT_PLTRELSZ 2
++#define DT_PLTGOT 3
++#define DT_HASH 4
++#define DT_STRTAB 5
++#define DT_SYMTAB 6
++#define DT_RELA 7
++#define DT_RELASZ 8
++#define DT_RELAENT 9
++#define DT_STRSZ 10
++#define DT_SYMENT 11
++#define DT_INIT 12
++#define DT_FINI 13
++#define DT_SONAME 14
++#define DT_RPATH 15
++#define DT_SYMBOLIC 16
++#define DT_REL 17
++#define DT_RELSZ 18
++#define DT_RELENT 19
++#define DT_PLTREL 20
++#define DT_DEBUG 21
++#define DT_TEXTREL 22
++#define DT_JMPREL 23
++#define DT_BIND_NOW 24
++#define DT_INIT_ARRAY 25
++#define DT_FINI_ARRAY 26
++#define DT_INIT_ARRAYSZ 27
++#define DT_FINI_ARRAYSZ 28
++#define DT_RUNPATH 29
++#define DT_FLAGS 30
++#define DT_ENCODING 32
++#define DT_PREINIT_ARRAY 32
++#define DT_PREINIT_ARRAYSZ 33
++#define DT_NUM 34
++#define DT_LOOS 0x6000000d
++#define DT_HIOS 0x6ffff000
++#define DT_LOPROC 0x70000000
++#define DT_HIPROC 0x7fffffff
++#define DT_PROCNUM DT_MIPS_NUM
++
++#define DT_VALRNGLO 0x6ffffd00
++#define DT_GNU_PRELINKED 0x6ffffdf5
++#define DT_GNU_CONFLICTSZ 0x6ffffdf6
++#define DT_GNU_LIBLISTSZ 0x6ffffdf7
++#define DT_CHECKSUM 0x6ffffdf8
++#define DT_PLTPADSZ 0x6ffffdf9
++#define DT_MOVEENT 0x6ffffdfa
++#define DT_MOVESZ 0x6ffffdfb
++#define DT_FEATURE_1 0x6ffffdfc
++#define DT_POSFLAG_1 0x6ffffdfd
++
++#define DT_SYMINSZ 0x6ffffdfe
++#define DT_SYMINENT 0x6ffffdff
++#define DT_VALRNGHI 0x6ffffdff
++#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag))
++#define DT_VALNUM 12
++
++#define DT_ADDRRNGLO 0x6ffffe00
++#define DT_GNU_HASH 0x6ffffef5
++#define DT_TLSDESC_PLT 0x6ffffef6
++#define DT_TLSDESC_GOT 0x6ffffef7
++#define DT_GNU_CONFLICT 0x6ffffef8
++#define DT_GNU_LIBLIST 0x6ffffef9
++#define DT_CONFIG 0x6ffffefa
++#define DT_DEPAUDIT 0x6ffffefb
++#define DT_AUDIT 0x6ffffefc
++#define DT_PLTPAD 0x6ffffefd
++#define DT_MOVETAB 0x6ffffefe
++#define DT_SYMINFO 0x6ffffeff
++#define DT_ADDRRNGHI 0x6ffffeff
++#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag))
++#define DT_ADDRNUM 11
++
++
++
++#define DT_VERSYM 0x6ffffff0
++
++#define DT_RELACOUNT 0x6ffffff9
++#define DT_RELCOUNT 0x6ffffffa
++
++
++#define DT_FLAGS_1 0x6ffffffb
++#define DT_VERDEF 0x6ffffffc
++
++#define DT_VERDEFNUM 0x6ffffffd
++#define DT_VERNEED 0x6ffffffe
++
++#define DT_VERNEEDNUM 0x6fffffff
++#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag))
++#define DT_VERSIONTAGNUM 16
++
++
++
++#define DT_AUXILIARY 0x7ffffffd
++#define DT_FILTER 0x7fffffff
++#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
++#define DT_EXTRANUM 3
++
++
++#define DF_ORIGIN 0x00000001
++#define DF_SYMBOLIC 0x00000002
++#define DF_TEXTREL 0x00000004
++#define DF_BIND_NOW 0x00000008
++#define DF_STATIC_TLS 0x00000010
++
++
++
++#define DF_1_NOW 0x00000001
++#define DF_1_GLOBAL 0x00000002
++#define DF_1_GROUP 0x00000004
++#define DF_1_NODELETE 0x00000008
++#define DF_1_LOADFLTR 0x00000010
++#define DF_1_INITFIRST 0x00000020
++#define DF_1_NOOPEN 0x00000040
++#define DF_1_ORIGIN 0x00000080
++#define DF_1_DIRECT 0x00000100
++#define DF_1_TRANS 0x00000200
++#define DF_1_INTERPOSE 0x00000400
++#define DF_1_NODEFLIB 0x00000800
++#define DF_1_NODUMP 0x00001000
++#define DF_1_CONFALT 0x00002000
++#define DF_1_ENDFILTEE 0x00004000
++#define DF_1_DISPRELDNE 0x00008000
++#define DF_1_DISPRELPND 0x00010000
++#define DF_1_NODIRECT 0x00020000
++#define DF_1_IGNMULDEF 0x00040000
++#define DF_1_NOKSYMS 0x00080000
++#define DF_1_NOHDR 0x00100000
++#define DF_1_EDITED 0x00200000
++#define DF_1_NORELOC 0x00400000
++#define DF_1_SYMINTPOSE 0x00800000
++#define DF_1_GLOBAUDIT 0x01000000
++#define DF_1_SINGLETON 0x02000000
++
++#define DTF_1_PARINIT 0x00000001
++#define DTF_1_CONFEXP 0x00000002
++
++
++#define DF_P1_LAZYLOAD 0x00000001
++#define DF_P1_GROUPPERM 0x00000002
++
++
++
++
++typedef struct {
++ Elf32_Half vd_version;
++ Elf32_Half vd_flags;
++ Elf32_Half vd_ndx;
++ Elf32_Half vd_cnt;
++ Elf32_Word vd_hash;
++ Elf32_Word vd_aux;
++ Elf32_Word vd_next;
++} Elf32_Verdef;
++
++typedef struct {
++ Elf64_Half vd_version;
++ Elf64_Half vd_flags;
++ Elf64_Half vd_ndx;
++ Elf64_Half vd_cnt;
++ Elf64_Word vd_hash;
++ Elf64_Word vd_aux;
++ Elf64_Word vd_next;
++} Elf64_Verdef;
++
++
++
++#define VER_DEF_NONE 0
++#define VER_DEF_CURRENT 1
++#define VER_DEF_NUM 2
++
++
++#define VER_FLG_BASE 0x1
++#define VER_FLG_WEAK 0x2
++
++
++#define VER_NDX_LOCAL 0
++#define VER_NDX_GLOBAL 1
++#define VER_NDX_LORESERVE 0xff00
++#define VER_NDX_ELIMINATE 0xff01
++
++
++
++typedef struct {
++ Elf32_Word vda_name;
++ Elf32_Word vda_next;
++} Elf32_Verdaux;
++
++typedef struct {
++ Elf64_Word vda_name;
++ Elf64_Word vda_next;
++} Elf64_Verdaux;
++
++
++
++
++typedef struct {
++ Elf32_Half vn_version;
++ Elf32_Half vn_cnt;
++ Elf32_Word vn_file;
++ Elf32_Word vn_aux;
++ Elf32_Word vn_next;
++} Elf32_Verneed;
++
++typedef struct {
++ Elf64_Half vn_version;
++ Elf64_Half vn_cnt;
++ Elf64_Word vn_file;
++ Elf64_Word vn_aux;
++ Elf64_Word vn_next;
++} Elf64_Verneed;
++
++
++
++#define VER_NEED_NONE 0
++#define VER_NEED_CURRENT 1
++#define VER_NEED_NUM 2
++
++
++
++typedef struct {
++ Elf32_Word vna_hash;
++ Elf32_Half vna_flags;
++ Elf32_Half vna_other;
++ Elf32_Word vna_name;
++ Elf32_Word vna_next;
++} Elf32_Vernaux;
++
++typedef struct {
++ Elf64_Word vna_hash;
++ Elf64_Half vna_flags;
++ Elf64_Half vna_other;
++ Elf64_Word vna_name;
++ Elf64_Word vna_next;
++} Elf64_Vernaux;
++
++
++
++#define VER_FLG_WEAK 0x2
++
++
++
++typedef struct {
++ uint32_t a_type;
++ union {
++ uint32_t a_val;
++ } a_un;
++} Elf32_auxv_t;
++
++typedef struct {
++ uint64_t a_type;
++ union {
++ uint64_t a_val;
++ } a_un;
++} Elf64_auxv_t;
++
++
++
++#define AT_NULL 0
++#define AT_IGNORE 1
++#define AT_EXECFD 2
++#define AT_PHDR 3
++#define AT_PHENT 4
++#define AT_PHNUM 5
++#define AT_PAGESZ 6
++#define AT_BASE 7
++#define AT_FLAGS 8
++#define AT_ENTRY 9
++#define AT_NOTELF 10
++#define AT_UID 11
++#define AT_EUID 12
++#define AT_GID 13
++#define AT_EGID 14
++#define AT_CLKTCK 17
++
++
++#define AT_PLATFORM 15
++#define AT_HWCAP 16
++
++
++
++
++#define AT_FPUCW 18
++
++
++#define AT_DCACHEBSIZE 19
++#define AT_ICACHEBSIZE 20
++#define AT_UCACHEBSIZE 21
++
++
++
++#define AT_IGNOREPPC 22
++
++#define AT_SECURE 23
++
++#define AT_BASE_PLATFORM 24
++
++#define AT_RANDOM 25
++
++#define AT_HWCAP2 26
++
++#define AT_EXECFN 31
++
++
++
++#define AT_SYSINFO 32
++#define AT_SYSINFO_EHDR 33
++
++
++
++#define AT_L1I_CACHESHAPE 34
++#define AT_L1D_CACHESHAPE 35
++#define AT_L2_CACHESHAPE 36
++#define AT_L3_CACHESHAPE 37
++
++
++
++
++typedef struct {
++ Elf32_Word n_namesz;
++ Elf32_Word n_descsz;
++ Elf32_Word n_type;
++} Elf32_Nhdr;
++
++typedef struct {
++ Elf64_Word n_namesz;
++ Elf64_Word n_descsz;
++ Elf64_Word n_type;
++} Elf64_Nhdr;
++
++
++
++
++#define ELF_NOTE_SOLARIS "SUNW Solaris"
++
++
++#define ELF_NOTE_GNU "GNU"
++
++
++
++
++
++#define ELF_NOTE_PAGESIZE_HINT 1
++
++
++#define NT_GNU_ABI_TAG 1
++#define ELF_NOTE_ABI NT_GNU_ABI_TAG
++
++
++
++#define ELF_NOTE_OS_LINUX 0
++#define ELF_NOTE_OS_GNU 1
++#define ELF_NOTE_OS_SOLARIS2 2
++#define ELF_NOTE_OS_FREEBSD 3
++
++#define NT_GNU_BUILD_ID 3
++#define NT_GNU_GOLD_VERSION 4
++
++
++
++typedef struct {
++ Elf32_Xword m_value;
++ Elf32_Word m_info;
++ Elf32_Word m_poffset;
++ Elf32_Half m_repeat;
++ Elf32_Half m_stride;
++} Elf32_Move;
++
++typedef struct {
++ Elf64_Xword m_value;
++ Elf64_Xword m_info;
++ Elf64_Xword m_poffset;
++ Elf64_Half m_repeat;
++ Elf64_Half m_stride;
++} Elf64_Move;
++
++
++#define ELF32_M_SYM(info) ((info) >> 8)
++#define ELF32_M_SIZE(info) ((unsigned char) (info))
++#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size))
++
++#define ELF64_M_SYM(info) ELF32_M_SYM (info)
++#define ELF64_M_SIZE(info) ELF32_M_SIZE (info)
++#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size)
++
++#define EF_CPU32 0x00810000
++
++#define R_68K_NONE 0
++#define R_68K_32 1
++#define R_68K_16 2
++#define R_68K_8 3
++#define R_68K_PC32 4
++#define R_68K_PC16 5
++#define R_68K_PC8 6
++#define R_68K_GOT32 7
++#define R_68K_GOT16 8
++#define R_68K_GOT8 9
++#define R_68K_GOT32O 10
++#define R_68K_GOT16O 11
++#define R_68K_GOT8O 12
++#define R_68K_PLT32 13
++#define R_68K_PLT16 14
++#define R_68K_PLT8 15
++#define R_68K_PLT32O 16
++#define R_68K_PLT16O 17
++#define R_68K_PLT8O 18
++#define R_68K_COPY 19
++#define R_68K_GLOB_DAT 20
++#define R_68K_JMP_SLOT 21
++#define R_68K_RELATIVE 22
++#define R_68K_NUM 23
++
++#define R_386_NONE 0
++#define R_386_32 1
++#define R_386_PC32 2
++#define R_386_GOT32 3
++#define R_386_PLT32 4
++#define R_386_COPY 5
++#define R_386_GLOB_DAT 6
++#define R_386_JMP_SLOT 7
++#define R_386_RELATIVE 8
++#define R_386_GOTOFF 9
++#define R_386_GOTPC 10
++#define R_386_32PLT 11
++#define R_386_TLS_TPOFF 14
++#define R_386_TLS_IE 15
++#define R_386_TLS_GOTIE 16
++#define R_386_TLS_LE 17
++#define R_386_TLS_GD 18
++#define R_386_TLS_LDM 19
++#define R_386_16 20
++#define R_386_PC16 21
++#define R_386_8 22
++#define R_386_PC8 23
++#define R_386_TLS_GD_32 24
++#define R_386_TLS_GD_PUSH 25
++#define R_386_TLS_GD_CALL 26
++#define R_386_TLS_GD_POP 27
++#define R_386_TLS_LDM_32 28
++#define R_386_TLS_LDM_PUSH 29
++#define R_386_TLS_LDM_CALL 30
++#define R_386_TLS_LDM_POP 31
++#define R_386_TLS_LDO_32 32
++#define R_386_TLS_IE_32 33
++#define R_386_TLS_LE_32 34
++#define R_386_TLS_DTPMOD32 35
++#define R_386_TLS_DTPOFF32 36
++#define R_386_TLS_TPOFF32 37
++#define R_386_SIZE32 38
++#define R_386_TLS_GOTDESC 39
++#define R_386_TLS_DESC_CALL 40
++#define R_386_TLS_DESC 41
++#define R_386_IRELATIVE 42
++#define R_386_NUM 43
++
++
++
++
++
++#define STT_SPARC_REGISTER 13
++
++
++
++#define EF_SPARCV9_MM 3
++#define EF_SPARCV9_TSO 0
++#define EF_SPARCV9_PSO 1
++#define EF_SPARCV9_RMO 2
++#define EF_SPARC_LEDATA 0x800000
++#define EF_SPARC_EXT_MASK 0xFFFF00
++#define EF_SPARC_32PLUS 0x000100
++#define EF_SPARC_SUN_US1 0x000200
++#define EF_SPARC_HAL_R1 0x000400
++#define EF_SPARC_SUN_US3 0x000800
++
++
++
++#define R_SPARC_NONE 0
++#define R_SPARC_8 1
++#define R_SPARC_16 2
++#define R_SPARC_32 3
++#define R_SPARC_DISP8 4
++#define R_SPARC_DISP16 5
++#define R_SPARC_DISP32 6
++#define R_SPARC_WDISP30 7
++#define R_SPARC_WDISP22 8
++#define R_SPARC_HI22 9
++#define R_SPARC_22 10
++#define R_SPARC_13 11
++#define R_SPARC_LO10 12
++#define R_SPARC_GOT10 13
++#define R_SPARC_GOT13 14
++#define R_SPARC_GOT22 15
++#define R_SPARC_PC10 16
++#define R_SPARC_PC22 17
++#define R_SPARC_WPLT30 18
++#define R_SPARC_COPY 19
++#define R_SPARC_GLOB_DAT 20
++#define R_SPARC_JMP_SLOT 21
++#define R_SPARC_RELATIVE 22
++#define R_SPARC_UA32 23
++
++
++
++#define R_SPARC_PLT32 24
++#define R_SPARC_HIPLT22 25
++#define R_SPARC_LOPLT10 26
++#define R_SPARC_PCPLT32 27
++#define R_SPARC_PCPLT22 28
++#define R_SPARC_PCPLT10 29
++#define R_SPARC_10 30
++#define R_SPARC_11 31
++#define R_SPARC_64 32
++#define R_SPARC_OLO10 33
++#define R_SPARC_HH22 34
++#define R_SPARC_HM10 35
++#define R_SPARC_LM22 36
++#define R_SPARC_PC_HH22 37
++#define R_SPARC_PC_HM10 38
++#define R_SPARC_PC_LM22 39
++#define R_SPARC_WDISP16 40
++#define R_SPARC_WDISP19 41
++#define R_SPARC_GLOB_JMP 42
++#define R_SPARC_7 43
++#define R_SPARC_5 44
++#define R_SPARC_6 45
++#define R_SPARC_DISP64 46
++#define R_SPARC_PLT64 47
++#define R_SPARC_HIX22 48
++#define R_SPARC_LOX10 49
++#define R_SPARC_H44 50
++#define R_SPARC_M44 51
++#define R_SPARC_L44 52
++#define R_SPARC_REGISTER 53
++#define R_SPARC_UA64 54
++#define R_SPARC_UA16 55
++#define R_SPARC_TLS_GD_HI22 56
++#define R_SPARC_TLS_GD_LO10 57
++#define R_SPARC_TLS_GD_ADD 58
++#define R_SPARC_TLS_GD_CALL 59
++#define R_SPARC_TLS_LDM_HI22 60
++#define R_SPARC_TLS_LDM_LO10 61
++#define R_SPARC_TLS_LDM_ADD 62
++#define R_SPARC_TLS_LDM_CALL 63
++#define R_SPARC_TLS_LDO_HIX22 64
++#define R_SPARC_TLS_LDO_LOX10 65
++#define R_SPARC_TLS_LDO_ADD 66
++#define R_SPARC_TLS_IE_HI22 67
++#define R_SPARC_TLS_IE_LO10 68
++#define R_SPARC_TLS_IE_LD 69
++#define R_SPARC_TLS_IE_LDX 70
++#define R_SPARC_TLS_IE_ADD 71
++#define R_SPARC_TLS_LE_HIX22 72
++#define R_SPARC_TLS_LE_LOX10 73
++#define R_SPARC_TLS_DTPMOD32 74
++#define R_SPARC_TLS_DTPMOD64 75
++#define R_SPARC_TLS_DTPOFF32 76
++#define R_SPARC_TLS_DTPOFF64 77
++#define R_SPARC_TLS_TPOFF32 78
++#define R_SPARC_TLS_TPOFF64 79
++#define R_SPARC_GOTDATA_HIX22 80
++#define R_SPARC_GOTDATA_LOX10 81
++#define R_SPARC_GOTDATA_OP_HIX22 82
++#define R_SPARC_GOTDATA_OP_LOX10 83
++#define R_SPARC_GOTDATA_OP 84
++#define R_SPARC_H34 85
++#define R_SPARC_SIZE32 86
++#define R_SPARC_SIZE64 87
++#define R_SPARC_GNU_VTINHERIT 250
++#define R_SPARC_GNU_VTENTRY 251
++#define R_SPARC_REV32 252
++
++#define R_SPARC_NUM 253
++
++
++
++#define DT_SPARC_REGISTER 0x70000001
++#define DT_SPARC_NUM 2
++
++
++#define EF_MIPS_NOREORDER 1
++#define EF_MIPS_PIC 2
++#define EF_MIPS_CPIC 4
++#define EF_MIPS_XGOT 8
++#define EF_MIPS_64BIT_WHIRL 16
++#define EF_MIPS_ABI2 32
++#define EF_MIPS_ABI_ON32 64
++#define EF_MIPS_ARCH 0xf0000000
++
++
++
++#define EF_MIPS_ARCH_1 0x00000000
++#define EF_MIPS_ARCH_2 0x10000000
++#define EF_MIPS_ARCH_3 0x20000000
++#define EF_MIPS_ARCH_4 0x30000000
++#define EF_MIPS_ARCH_5 0x40000000
++#define EF_MIPS_ARCH_32 0x50000000
++#define EF_MIPS_ARCH_64 0x60000000
++#define EF_MIPS_ARCH_32R2 0x70000000
++#define EF_MIPS_ARCH_64R2 0x80000000
++
++
++#define E_MIPS_ARCH_1 0x00000000
++#define E_MIPS_ARCH_2 0x10000000
++#define E_MIPS_ARCH_3 0x20000000
++#define E_MIPS_ARCH_4 0x30000000
++#define E_MIPS_ARCH_5 0x40000000
++#define E_MIPS_ARCH_32 0x50000000
++#define E_MIPS_ARCH_64 0x60000000
++
++
++
++#define SHN_MIPS_ACOMMON 0xff00
++#define SHN_MIPS_TEXT 0xff01
++#define SHN_MIPS_DATA 0xff02
++#define SHN_MIPS_SCOMMON 0xff03
++#define SHN_MIPS_SUNDEFINED 0xff04
++
++
++
++#define SHT_MIPS_LIBLIST 0x70000000
++#define SHT_MIPS_MSYM 0x70000001
++#define SHT_MIPS_CONFLICT 0x70000002
++#define SHT_MIPS_GPTAB 0x70000003
++#define SHT_MIPS_UCODE 0x70000004
++#define SHT_MIPS_DEBUG 0x70000005
++#define SHT_MIPS_REGINFO 0x70000006
++#define SHT_MIPS_PACKAGE 0x70000007
++#define SHT_MIPS_PACKSYM 0x70000008
++#define SHT_MIPS_RELD 0x70000009
++#define SHT_MIPS_IFACE 0x7000000b
++#define SHT_MIPS_CONTENT 0x7000000c
++#define SHT_MIPS_OPTIONS 0x7000000d
++#define SHT_MIPS_SHDR 0x70000010
++#define SHT_MIPS_FDESC 0x70000011
++#define SHT_MIPS_EXTSYM 0x70000012
++#define SHT_MIPS_DENSE 0x70000013
++#define SHT_MIPS_PDESC 0x70000014
++#define SHT_MIPS_LOCSYM 0x70000015
++#define SHT_MIPS_AUXSYM 0x70000016
++#define SHT_MIPS_OPTSYM 0x70000017
++#define SHT_MIPS_LOCSTR 0x70000018
++#define SHT_MIPS_LINE 0x70000019
++#define SHT_MIPS_RFDESC 0x7000001a
++#define SHT_MIPS_DELTASYM 0x7000001b
++#define SHT_MIPS_DELTAINST 0x7000001c
++#define SHT_MIPS_DELTACLASS 0x7000001d
++#define SHT_MIPS_DWARF 0x7000001e
++#define SHT_MIPS_DELTADECL 0x7000001f
++#define SHT_MIPS_SYMBOL_LIB 0x70000020
++#define SHT_MIPS_EVENTS 0x70000021
++#define SHT_MIPS_TRANSLATE 0x70000022
++#define SHT_MIPS_PIXIE 0x70000023
++#define SHT_MIPS_XLATE 0x70000024
++#define SHT_MIPS_XLATE_DEBUG 0x70000025
++#define SHT_MIPS_WHIRL 0x70000026
++#define SHT_MIPS_EH_REGION 0x70000027
++#define SHT_MIPS_XLATE_OLD 0x70000028
++#define SHT_MIPS_PDR_EXCEPTION 0x70000029
++
++
++
++#define SHF_MIPS_GPREL 0x10000000
++#define SHF_MIPS_MERGE 0x20000000
++#define SHF_MIPS_ADDR 0x40000000
++#define SHF_MIPS_STRINGS 0x80000000
++#define SHF_MIPS_NOSTRIP 0x08000000
++#define SHF_MIPS_LOCAL 0x04000000
++#define SHF_MIPS_NAMES 0x02000000
++#define SHF_MIPS_NODUPE 0x01000000
++
++
++
++
++
++#define STO_MIPS_DEFAULT 0x0
++#define STO_MIPS_INTERNAL 0x1
++#define STO_MIPS_HIDDEN 0x2
++#define STO_MIPS_PROTECTED 0x3
++#define STO_MIPS_PLT 0x8
++#define STO_MIPS_SC_ALIGN_UNUSED 0xff
++
++
++#define STB_MIPS_SPLIT_COMMON 13
++
++
++
++typedef union {
++ struct {
++ Elf32_Word gt_current_g_value;
++ Elf32_Word gt_unused;
++ } gt_header;
++ struct {
++ Elf32_Word gt_g_value;
++ Elf32_Word gt_bytes;
++ } gt_entry;
++} Elf32_gptab;
++
++
++
++typedef struct {
++ Elf32_Word ri_gprmask;
++ Elf32_Word ri_cprmask[4];
++ Elf32_Sword ri_gp_value;
++} Elf32_RegInfo;
++
++
++
++typedef struct {
++ unsigned char kind;
++
++ unsigned char size;
++ Elf32_Section section;
++
++ Elf32_Word info;
++} Elf_Options;
++
++
++
++#define ODK_NULL 0
++#define ODK_REGINFO 1
++#define ODK_EXCEPTIONS 2
++#define ODK_PAD 3
++#define ODK_HWPATCH 4
++#define ODK_FILL 5
++#define ODK_TAGS 6
++#define ODK_HWAND 7
++#define ODK_HWOR 8
++
++
++
++#define OEX_FPU_MIN 0x1f
++#define OEX_FPU_MAX 0x1f00
++#define OEX_PAGE0 0x10000
++#define OEX_SMM 0x20000
++#define OEX_FPDBUG 0x40000
++#define OEX_PRECISEFP OEX_FPDBUG
++#define OEX_DISMISS 0x80000
++
++#define OEX_FPU_INVAL 0x10
++#define OEX_FPU_DIV0 0x08
++#define OEX_FPU_OFLO 0x04
++#define OEX_FPU_UFLO 0x02
++#define OEX_FPU_INEX 0x01
++
++
++
++#define OHW_R4KEOP 0x1
++#define OHW_R8KPFETCH 0x2
++#define OHW_R5KEOP 0x4
++#define OHW_R5KCVTL 0x8
++
++#define OPAD_PREFIX 0x1
++#define OPAD_POSTFIX 0x2
++#define OPAD_SYMBOL 0x4
++
++
++
++typedef struct {
++ Elf32_Word hwp_flags1;
++ Elf32_Word hwp_flags2;
++} Elf_Options_Hw;
++
++
++
++#define OHWA0_R4KEOP_CHECKED 0x00000001
++#define OHWA1_R4KEOP_CLEAN 0x00000002
++
++
++
++#define R_MIPS_NONE 0
++#define R_MIPS_16 1
++#define R_MIPS_32 2
++#define R_MIPS_REL32 3
++#define R_MIPS_26 4
++#define R_MIPS_HI16 5
++#define R_MIPS_LO16 6
++#define R_MIPS_GPREL16 7
++#define R_MIPS_LITERAL 8
++#define R_MIPS_GOT16 9
++#define R_MIPS_PC16 10
++#define R_MIPS_CALL16 11
++#define R_MIPS_GPREL32 12
++
++#define R_MIPS_SHIFT5 16
++#define R_MIPS_SHIFT6 17
++#define R_MIPS_64 18
++#define R_MIPS_GOT_DISP 19
++#define R_MIPS_GOT_PAGE 20
++#define R_MIPS_GOT_OFST 21
++#define R_MIPS_GOT_HI16 22
++#define R_MIPS_GOT_LO16 23
++#define R_MIPS_SUB 24
++#define R_MIPS_INSERT_A 25
++#define R_MIPS_INSERT_B 26
++#define R_MIPS_DELETE 27
++#define R_MIPS_HIGHER 28
++#define R_MIPS_HIGHEST 29
++#define R_MIPS_CALL_HI16 30
++#define R_MIPS_CALL_LO16 31
++#define R_MIPS_SCN_DISP 32
++#define R_MIPS_REL16 33
++#define R_MIPS_ADD_IMMEDIATE 34
++#define R_MIPS_PJUMP 35
++#define R_MIPS_RELGOT 36
++#define R_MIPS_JALR 37
++#define R_MIPS_TLS_DTPMOD32 38
++#define R_MIPS_TLS_DTPREL32 39
++#define R_MIPS_TLS_DTPMOD64 40
++#define R_MIPS_TLS_DTPREL64 41
++#define R_MIPS_TLS_GD 42
++#define R_MIPS_TLS_LDM 43
++#define R_MIPS_TLS_DTPREL_HI16 44
++#define R_MIPS_TLS_DTPREL_LO16 45
++#define R_MIPS_TLS_GOTTPREL 46
++#define R_MIPS_TLS_TPREL32 47
++#define R_MIPS_TLS_TPREL64 48
++#define R_MIPS_TLS_TPREL_HI16 49
++#define R_MIPS_TLS_TPREL_LO16 50
++#define R_MIPS_GLOB_DAT 51
++#define R_MIPS_COPY 126
++#define R_MIPS_JUMP_SLOT 127
++
++#define R_MIPS_NUM 128
++
++
++
++#define PT_MIPS_REGINFO 0x70000000
++#define PT_MIPS_RTPROC 0x70000001
++#define PT_MIPS_OPTIONS 0x70000002
++
++
++
++#define PF_MIPS_LOCAL 0x10000000
++
++
++
++#define DT_MIPS_RLD_VERSION 0x70000001
++#define DT_MIPS_TIME_STAMP 0x70000002
++#define DT_MIPS_ICHECKSUM 0x70000003
++#define DT_MIPS_IVERSION 0x70000004
++#define DT_MIPS_FLAGS 0x70000005
++#define DT_MIPS_BASE_ADDRESS 0x70000006
++#define DT_MIPS_MSYM 0x70000007
++#define DT_MIPS_CONFLICT 0x70000008
++#define DT_MIPS_LIBLIST 0x70000009
++#define DT_MIPS_LOCAL_GOTNO 0x7000000a
++#define DT_MIPS_CONFLICTNO 0x7000000b
++#define DT_MIPS_LIBLISTNO 0x70000010
++#define DT_MIPS_SYMTABNO 0x70000011
++#define DT_MIPS_UNREFEXTNO 0x70000012
++#define DT_MIPS_GOTSYM 0x70000013
++#define DT_MIPS_HIPAGENO 0x70000014
++#define DT_MIPS_RLD_MAP 0x70000016
++#define DT_MIPS_DELTA_CLASS 0x70000017
++#define DT_MIPS_DELTA_CLASS_NO 0x70000018
++
++#define DT_MIPS_DELTA_INSTANCE 0x70000019
++#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
++
++#define DT_MIPS_DELTA_RELOC 0x7000001b
++#define DT_MIPS_DELTA_RELOC_NO 0x7000001c
++
++#define DT_MIPS_DELTA_SYM 0x7000001d
++
++#define DT_MIPS_DELTA_SYM_NO 0x7000001e
++
++#define DT_MIPS_DELTA_CLASSSYM 0x70000020
++
++#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
++
++#define DT_MIPS_CXX_FLAGS 0x70000022
++#define DT_MIPS_PIXIE_INIT 0x70000023
++#define DT_MIPS_SYMBOL_LIB 0x70000024
++#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
++#define DT_MIPS_LOCAL_GOTIDX 0x70000026
++#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
++#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
++#define DT_MIPS_OPTIONS 0x70000029
++#define DT_MIPS_INTERFACE 0x7000002a
++#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
++#define DT_MIPS_INTERFACE_SIZE 0x7000002c
++#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
++
++#define DT_MIPS_PERF_SUFFIX 0x7000002e
++
++#define DT_MIPS_COMPACT_SIZE 0x7000002f
++#define DT_MIPS_GP_VALUE 0x70000030
++#define DT_MIPS_AUX_DYNAMIC 0x70000031
++
++#define DT_MIPS_PLTGOT 0x70000032
++
++#define DT_MIPS_RWPLT 0x70000034
++#define DT_MIPS_NUM 0x35
++
++
++
++#define RHF_NONE 0
++#define RHF_QUICKSTART (1 << 0)
++#define RHF_NOTPOT (1 << 1)
++#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)
++#define RHF_NO_MOVE (1 << 3)
++#define RHF_SGI_ONLY (1 << 4)
++#define RHF_GUARANTEE_INIT (1 << 5)
++#define RHF_DELTA_C_PLUS_PLUS (1 << 6)
++#define RHF_GUARANTEE_START_INIT (1 << 7)
++#define RHF_PIXIE (1 << 8)
++#define RHF_DEFAULT_DELAY_LOAD (1 << 9)
++#define RHF_REQUICKSTART (1 << 10)
++#define RHF_REQUICKSTARTED (1 << 11)
++#define RHF_CORD (1 << 12)
++#define RHF_NO_UNRES_UNDEF (1 << 13)
++#define RHF_RLD_ORDER_SAFE (1 << 14)
++
++
++
++typedef struct
++{
++ Elf32_Word l_name;
++ Elf32_Word l_time_stamp;
++ Elf32_Word l_checksum;
++ Elf32_Word l_version;
++ Elf32_Word l_flags;
++} Elf32_Lib;
++
++typedef struct
++{
++ Elf64_Word l_name;
++ Elf64_Word l_time_stamp;
++ Elf64_Word l_checksum;
++ Elf64_Word l_version;
++ Elf64_Word l_flags;
++} Elf64_Lib;
++
++
++
++
++#define LL_NONE 0
++#define LL_EXACT_MATCH (1 << 0)
++#define LL_IGNORE_INT_VER (1 << 1)
++#define LL_REQUIRE_MINOR (1 << 2)
++#define LL_EXPORTS (1 << 3)
++#define LL_DELAY_LOAD (1 << 4)
++#define LL_DELTA (1 << 5)
++
++
++
++typedef Elf32_Addr Elf32_Conflict;
++
++
++
++
++
++
++#define EF_PARISC_TRAPNIL 0x00010000
++#define EF_PARISC_EXT 0x00020000
++#define EF_PARISC_LSB 0x00040000
++#define EF_PARISC_WIDE 0x00080000
++#define EF_PARISC_NO_KABP 0x00100000
++
++#define EF_PARISC_LAZYSWAP 0x00400000
++#define EF_PARISC_ARCH 0x0000ffff
++
++
++
++#define EFA_PARISC_1_0 0x020b
++#define EFA_PARISC_1_1 0x0210
++#define EFA_PARISC_2_0 0x0214
++
++
++
++#define SHN_PARISC_ANSI_COMMON 0xff00
++
++#define SHN_PARISC_HUGE_COMMON 0xff01
++
++
++
++#define SHT_PARISC_EXT 0x70000000
++#define SHT_PARISC_UNWIND 0x70000001
++#define SHT_PARISC_DOC 0x70000002
++
++
++
++#define SHF_PARISC_SHORT 0x20000000
++#define SHF_PARISC_HUGE 0x40000000
++#define SHF_PARISC_SBP 0x80000000
++
++
++
++#define STT_PARISC_MILLICODE 13
++
++#define STT_HP_OPAQUE (STT_LOOS + 0x1)
++#define STT_HP_STUB (STT_LOOS + 0x2)
++
++
++
++#define R_PARISC_NONE 0
++#define R_PARISC_DIR32 1
++#define R_PARISC_DIR21L 2
++#define R_PARISC_DIR17R 3
++#define R_PARISC_DIR17F 4
++#define R_PARISC_DIR14R 6
++#define R_PARISC_PCREL32 9
++#define R_PARISC_PCREL21L 10
++#define R_PARISC_PCREL17R 11
++#define R_PARISC_PCREL17F 12
++#define R_PARISC_PCREL14R 14
++#define R_PARISC_DPREL21L 18
++#define R_PARISC_DPREL14R 22
++#define R_PARISC_GPREL21L 26
++#define R_PARISC_GPREL14R 30
++#define R_PARISC_LTOFF21L 34
++#define R_PARISC_LTOFF14R 38
++#define R_PARISC_SECREL32 41
++#define R_PARISC_SEGBASE 48
++#define R_PARISC_SEGREL32 49
++#define R_PARISC_PLTOFF21L 50
++#define R_PARISC_PLTOFF14R 54
++#define R_PARISC_LTOFF_FPTR32 57
++#define R_PARISC_LTOFF_FPTR21L 58
++#define R_PARISC_LTOFF_FPTR14R 62
++#define R_PARISC_FPTR64 64
++#define R_PARISC_PLABEL32 65
++#define R_PARISC_PLABEL21L 66
++#define R_PARISC_PLABEL14R 70
++#define R_PARISC_PCREL64 72
++#define R_PARISC_PCREL22F 74
++#define R_PARISC_PCREL14WR 75
++#define R_PARISC_PCREL14DR 76
++#define R_PARISC_PCREL16F 77
++#define R_PARISC_PCREL16WF 78
++#define R_PARISC_PCREL16DF 79
++#define R_PARISC_DIR64 80
++#define R_PARISC_DIR14WR 83
++#define R_PARISC_DIR14DR 84
++#define R_PARISC_DIR16F 85
++#define R_PARISC_DIR16WF 86
++#define R_PARISC_DIR16DF 87
++#define R_PARISC_GPREL64 88
++#define R_PARISC_GPREL14WR 91
++#define R_PARISC_GPREL14DR 92
++#define R_PARISC_GPREL16F 93
++#define R_PARISC_GPREL16WF 94
++#define R_PARISC_GPREL16DF 95
++#define R_PARISC_LTOFF64 96
++#define R_PARISC_LTOFF14WR 99
++#define R_PARISC_LTOFF14DR 100
++#define R_PARISC_LTOFF16F 101
++#define R_PARISC_LTOFF16WF 102
++#define R_PARISC_LTOFF16DF 103
++#define R_PARISC_SECREL64 104
++#define R_PARISC_SEGREL64 112
++#define R_PARISC_PLTOFF14WR 115
++#define R_PARISC_PLTOFF14DR 116
++#define R_PARISC_PLTOFF16F 117
++#define R_PARISC_PLTOFF16WF 118
++#define R_PARISC_PLTOFF16DF 119
++#define R_PARISC_LTOFF_FPTR64 120
++#define R_PARISC_LTOFF_FPTR14WR 123
++#define R_PARISC_LTOFF_FPTR14DR 124
++#define R_PARISC_LTOFF_FPTR16F 125
++#define R_PARISC_LTOFF_FPTR16WF 126
++#define R_PARISC_LTOFF_FPTR16DF 127
++#define R_PARISC_LORESERVE 128
++#define R_PARISC_COPY 128
++#define R_PARISC_IPLT 129
++#define R_PARISC_EPLT 130
++#define R_PARISC_TPREL32 153
++#define R_PARISC_TPREL21L 154
++#define R_PARISC_TPREL14R 158
++#define R_PARISC_LTOFF_TP21L 162
++#define R_PARISC_LTOFF_TP14R 166
++#define R_PARISC_LTOFF_TP14F 167
++#define R_PARISC_TPREL64 216
++#define R_PARISC_TPREL14WR 219
++#define R_PARISC_TPREL14DR 220
++#define R_PARISC_TPREL16F 221
++#define R_PARISC_TPREL16WF 222
++#define R_PARISC_TPREL16DF 223
++#define R_PARISC_LTOFF_TP64 224
++#define R_PARISC_LTOFF_TP14WR 227
++#define R_PARISC_LTOFF_TP14DR 228
++#define R_PARISC_LTOFF_TP16F 229
++#define R_PARISC_LTOFF_TP16WF 230
++#define R_PARISC_LTOFF_TP16DF 231
++#define R_PARISC_GNU_VTENTRY 232
++#define R_PARISC_GNU_VTINHERIT 233
++#define R_PARISC_TLS_GD21L 234
++#define R_PARISC_TLS_GD14R 235
++#define R_PARISC_TLS_GDCALL 236
++#define R_PARISC_TLS_LDM21L 237
++#define R_PARISC_TLS_LDM14R 238
++#define R_PARISC_TLS_LDMCALL 239
++#define R_PARISC_TLS_LDO21L 240
++#define R_PARISC_TLS_LDO14R 241
++#define R_PARISC_TLS_DTPMOD32 242
++#define R_PARISC_TLS_DTPMOD64 243
++#define R_PARISC_TLS_DTPOFF32 244
++#define R_PARISC_TLS_DTPOFF64 245
++#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
++#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
++#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
++#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
++#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
++#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
++#define R_PARISC_HIRESERVE 255
++
++
++
++#define PT_HP_TLS (PT_LOOS + 0x0)
++#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
++#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
++#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
++#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
++#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
++#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
++#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
++#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
++#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
++#define PT_HP_PARALLEL (PT_LOOS + 0x10)
++#define PT_HP_FASTBIND (PT_LOOS + 0x11)
++#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12)
++#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13)
++#define PT_HP_STACK (PT_LOOS + 0x14)
++
++#define PT_PARISC_ARCHEXT 0x70000000
++#define PT_PARISC_UNWIND 0x70000001
++
++
++
++#define PF_PARISC_SBP 0x08000000
++
++#define PF_HP_PAGE_SIZE 0x00100000
++#define PF_HP_FAR_SHARED 0x00200000
++#define PF_HP_NEAR_SHARED 0x00400000
++#define PF_HP_CODE 0x01000000
++#define PF_HP_MODIFY 0x02000000
++#define PF_HP_LAZYSWAP 0x04000000
++#define PF_HP_SBP 0x08000000
++
++
++
++
++
++
++#define EF_ALPHA_32BIT 1
++#define EF_ALPHA_CANRELAX 2
++
++
++
++
++#define SHT_ALPHA_DEBUG 0x70000001
++#define SHT_ALPHA_REGINFO 0x70000002
++
++
++
++#define SHF_ALPHA_GPREL 0x10000000
++
++
++#define STO_ALPHA_NOPV 0x80
++#define STO_ALPHA_STD_GPLOAD 0x88
++
++
++
++#define R_ALPHA_NONE 0
++#define R_ALPHA_REFLONG 1
++#define R_ALPHA_REFQUAD 2
++#define R_ALPHA_GPREL32 3
++#define R_ALPHA_LITERAL 4
++#define R_ALPHA_LITUSE 5
++#define R_ALPHA_GPDISP 6
++#define R_ALPHA_BRADDR 7
++#define R_ALPHA_HINT 8
++#define R_ALPHA_SREL16 9
++#define R_ALPHA_SREL32 10
++#define R_ALPHA_SREL64 11
++#define R_ALPHA_GPRELHIGH 17
++#define R_ALPHA_GPRELLOW 18
++#define R_ALPHA_GPREL16 19
++#define R_ALPHA_COPY 24
++#define R_ALPHA_GLOB_DAT 25
++#define R_ALPHA_JMP_SLOT 26
++#define R_ALPHA_RELATIVE 27
++#define R_ALPHA_TLS_GD_HI 28
++#define R_ALPHA_TLSGD 29
++#define R_ALPHA_TLS_LDM 30
++#define R_ALPHA_DTPMOD64 31
++#define R_ALPHA_GOTDTPREL 32
++#define R_ALPHA_DTPREL64 33
++#define R_ALPHA_DTPRELHI 34
++#define R_ALPHA_DTPRELLO 35
++#define R_ALPHA_DTPREL16 36
++#define R_ALPHA_GOTTPREL 37
++#define R_ALPHA_TPREL64 38
++#define R_ALPHA_TPRELHI 39
++#define R_ALPHA_TPRELLO 40
++#define R_ALPHA_TPREL16 41
++
++#define R_ALPHA_NUM 46
++
++
++#define LITUSE_ALPHA_ADDR 0
++#define LITUSE_ALPHA_BASE 1
++#define LITUSE_ALPHA_BYTOFF 2
++#define LITUSE_ALPHA_JSR 3
++#define LITUSE_ALPHA_TLS_GD 4
++#define LITUSE_ALPHA_TLS_LDM 5
++
++
++#define DT_ALPHA_PLTRO (DT_LOPROC + 0)
++#define DT_ALPHA_NUM 1
++
++
++
++
++#define EF_PPC_EMB 0x80000000
++
++
++#define EF_PPC_RELOCATABLE 0x00010000
++#define EF_PPC_RELOCATABLE_LIB 0x00008000
++
++
++
++#define R_PPC_NONE 0
++#define R_PPC_ADDR32 1
++#define R_PPC_ADDR24 2
++#define R_PPC_ADDR16 3
++#define R_PPC_ADDR16_LO 4
++#define R_PPC_ADDR16_HI 5
++#define R_PPC_ADDR16_HA 6
++#define R_PPC_ADDR14 7
++#define R_PPC_ADDR14_BRTAKEN 8
++#define R_PPC_ADDR14_BRNTAKEN 9
++#define R_PPC_REL24 10
++#define R_PPC_REL14 11
++#define R_PPC_REL14_BRTAKEN 12
++#define R_PPC_REL14_BRNTAKEN 13
++#define R_PPC_GOT16 14
++#define R_PPC_GOT16_LO 15
++#define R_PPC_GOT16_HI 16
++#define R_PPC_GOT16_HA 17
++#define R_PPC_PLTREL24 18
++#define R_PPC_COPY 19
++#define R_PPC_GLOB_DAT 20
++#define R_PPC_JMP_SLOT 21
++#define R_PPC_RELATIVE 22
++#define R_PPC_LOCAL24PC 23
++#define R_PPC_UADDR32 24
++#define R_PPC_UADDR16 25
++#define R_PPC_REL32 26
++#define R_PPC_PLT32 27
++#define R_PPC_PLTREL32 28
++#define R_PPC_PLT16_LO 29
++#define R_PPC_PLT16_HI 30
++#define R_PPC_PLT16_HA 31
++#define R_PPC_SDAREL16 32
++#define R_PPC_SECTOFF 33
++#define R_PPC_SECTOFF_LO 34
++#define R_PPC_SECTOFF_HI 35
++#define R_PPC_SECTOFF_HA 36
++
++
++#define R_PPC_TLS 67
++#define R_PPC_DTPMOD32 68
++#define R_PPC_TPREL16 69
++#define R_PPC_TPREL16_LO 70
++#define R_PPC_TPREL16_HI 71
++#define R_PPC_TPREL16_HA 72
++#define R_PPC_TPREL32 73
++#define R_PPC_DTPREL16 74
++#define R_PPC_DTPREL16_LO 75
++#define R_PPC_DTPREL16_HI 76
++#define R_PPC_DTPREL16_HA 77
++#define R_PPC_DTPREL32 78
++#define R_PPC_GOT_TLSGD16 79
++#define R_PPC_GOT_TLSGD16_LO 80
++#define R_PPC_GOT_TLSGD16_HI 81
++#define R_PPC_GOT_TLSGD16_HA 82
++#define R_PPC_GOT_TLSLD16 83
++#define R_PPC_GOT_TLSLD16_LO 84
++#define R_PPC_GOT_TLSLD16_HI 85
++#define R_PPC_GOT_TLSLD16_HA 86
++#define R_PPC_GOT_TPREL16 87
++#define R_PPC_GOT_TPREL16_LO 88
++#define R_PPC_GOT_TPREL16_HI 89
++#define R_PPC_GOT_TPREL16_HA 90
++#define R_PPC_GOT_DTPREL16 91
++#define R_PPC_GOT_DTPREL16_LO 92
++#define R_PPC_GOT_DTPREL16_HI 93
++#define R_PPC_GOT_DTPREL16_HA 94
++
++
++
++#define R_PPC_EMB_NADDR32 101
++#define R_PPC_EMB_NADDR16 102
++#define R_PPC_EMB_NADDR16_LO 103
++#define R_PPC_EMB_NADDR16_HI 104
++#define R_PPC_EMB_NADDR16_HA 105
++#define R_PPC_EMB_SDAI16 106
++#define R_PPC_EMB_SDA2I16 107
++#define R_PPC_EMB_SDA2REL 108
++#define R_PPC_EMB_SDA21 109
++#define R_PPC_EMB_MRKREF 110
++#define R_PPC_EMB_RELSEC16 111
++#define R_PPC_EMB_RELST_LO 112
++#define R_PPC_EMB_RELST_HI 113
++#define R_PPC_EMB_RELST_HA 114
++#define R_PPC_EMB_BIT_FLD 115
++#define R_PPC_EMB_RELSDA 116
++
++
++#define R_PPC_DIAB_SDA21_LO 180
++#define R_PPC_DIAB_SDA21_HI 181
++#define R_PPC_DIAB_SDA21_HA 182
++#define R_PPC_DIAB_RELSDA_LO 183
++#define R_PPC_DIAB_RELSDA_HI 184
++#define R_PPC_DIAB_RELSDA_HA 185
++
++
++#define R_PPC_IRELATIVE 248
++
++
++#define R_PPC_REL16 249
++#define R_PPC_REL16_LO 250
++#define R_PPC_REL16_HI 251
++#define R_PPC_REL16_HA 252
++
++
++
++#define R_PPC_TOC16 255
++
++
++#define DT_PPC_GOT (DT_LOPROC + 0)
++#define DT_PPC_NUM 1
++
++
++#define R_PPC64_NONE R_PPC_NONE
++#define R_PPC64_ADDR32 R_PPC_ADDR32
++#define R_PPC64_ADDR24 R_PPC_ADDR24
++#define R_PPC64_ADDR16 R_PPC_ADDR16
++#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
++#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
++#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
++#define R_PPC64_ADDR14 R_PPC_ADDR14
++#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
++#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
++#define R_PPC64_REL24 R_PPC_REL24
++#define R_PPC64_REL14 R_PPC_REL14
++#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
++#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
++#define R_PPC64_GOT16 R_PPC_GOT16
++#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
++#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
++#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
++
++#define R_PPC64_COPY R_PPC_COPY
++#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
++#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
++#define R_PPC64_RELATIVE R_PPC_RELATIVE
++
++#define R_PPC64_UADDR32 R_PPC_UADDR32
++#define R_PPC64_UADDR16 R_PPC_UADDR16
++#define R_PPC64_REL32 R_PPC_REL32
++#define R_PPC64_PLT32 R_PPC_PLT32
++#define R_PPC64_PLTREL32 R_PPC_PLTREL32
++#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
++#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
++#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
++
++#define R_PPC64_SECTOFF R_PPC_SECTOFF
++#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
++#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
++#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
++#define R_PPC64_ADDR30 37
++#define R_PPC64_ADDR64 38
++#define R_PPC64_ADDR16_HIGHER 39
++#define R_PPC64_ADDR16_HIGHERA 40
++#define R_PPC64_ADDR16_HIGHEST 41
++#define R_PPC64_ADDR16_HIGHESTA 42
++#define R_PPC64_UADDR64 43
++#define R_PPC64_REL64 44
++#define R_PPC64_PLT64 45
++#define R_PPC64_PLTREL64 46
++#define R_PPC64_TOC16 47
++#define R_PPC64_TOC16_LO 48
++#define R_PPC64_TOC16_HI 49
++#define R_PPC64_TOC16_HA 50
++#define R_PPC64_TOC 51
++#define R_PPC64_PLTGOT16 52
++#define R_PPC64_PLTGOT16_LO 53
++#define R_PPC64_PLTGOT16_HI 54
++#define R_PPC64_PLTGOT16_HA 55
++
++#define R_PPC64_ADDR16_DS 56
++#define R_PPC64_ADDR16_LO_DS 57
++#define R_PPC64_GOT16_DS 58
++#define R_PPC64_GOT16_LO_DS 59
++#define R_PPC64_PLT16_LO_DS 60
++#define R_PPC64_SECTOFF_DS 61
++#define R_PPC64_SECTOFF_LO_DS 62
++#define R_PPC64_TOC16_DS 63
++#define R_PPC64_TOC16_LO_DS 64
++#define R_PPC64_PLTGOT16_DS 65
++#define R_PPC64_PLTGOT16_LO_DS 66
++
++
++#define R_PPC64_TLS 67
++#define R_PPC64_DTPMOD64 68
++#define R_PPC64_TPREL16 69
++#define R_PPC64_TPREL16_LO 70
++#define R_PPC64_TPREL16_HI 71
++#define R_PPC64_TPREL16_HA 72
++#define R_PPC64_TPREL64 73
++#define R_PPC64_DTPREL16 74
++#define R_PPC64_DTPREL16_LO 75
++#define R_PPC64_DTPREL16_HI 76
++#define R_PPC64_DTPREL16_HA 77
++#define R_PPC64_DTPREL64 78
++#define R_PPC64_GOT_TLSGD16 79
++#define R_PPC64_GOT_TLSGD16_LO 80
++#define R_PPC64_GOT_TLSGD16_HI 81
++#define R_PPC64_GOT_TLSGD16_HA 82
++#define R_PPC64_GOT_TLSLD16 83
++#define R_PPC64_GOT_TLSLD16_LO 84
++#define R_PPC64_GOT_TLSLD16_HI 85
++#define R_PPC64_GOT_TLSLD16_HA 86
++#define R_PPC64_GOT_TPREL16_DS 87
++#define R_PPC64_GOT_TPREL16_LO_DS 88
++#define R_PPC64_GOT_TPREL16_HI 89
++#define R_PPC64_GOT_TPREL16_HA 90
++#define R_PPC64_GOT_DTPREL16_DS 91
++#define R_PPC64_GOT_DTPREL16_LO_DS 92
++#define R_PPC64_GOT_DTPREL16_HI 93
++#define R_PPC64_GOT_DTPREL16_HA 94
++#define R_PPC64_TPREL16_DS 95
++#define R_PPC64_TPREL16_LO_DS 96
++#define R_PPC64_TPREL16_HIGHER 97
++#define R_PPC64_TPREL16_HIGHERA 98
++#define R_PPC64_TPREL16_HIGHEST 99
++#define R_PPC64_TPREL16_HIGHESTA 100
++#define R_PPC64_DTPREL16_DS 101
++#define R_PPC64_DTPREL16_LO_DS 102
++#define R_PPC64_DTPREL16_HIGHER 103
++#define R_PPC64_DTPREL16_HIGHERA 104
++#define R_PPC64_DTPREL16_HIGHEST 105
++#define R_PPC64_DTPREL16_HIGHESTA 106
++
++
++#define R_PPC64_JMP_IREL 247
++#define R_PPC64_IRELATIVE 248
++#define R_PPC64_REL16 249
++#define R_PPC64_REL16_LO 250
++#define R_PPC64_REL16_HI 251
++#define R_PPC64_REL16_HA 252
++
++
++#define DT_PPC64_GLINK (DT_LOPROC + 0)
++#define DT_PPC64_OPD (DT_LOPROC + 1)
++#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
++#define DT_PPC64_NUM 3
++
++
++
++
++
++#define EF_ARM_RELEXEC 0x01
++#define EF_ARM_HASENTRY 0x02
++#define EF_ARM_INTERWORK 0x04
++#define EF_ARM_APCS_26 0x08
++#define EF_ARM_APCS_FLOAT 0x10
++#define EF_ARM_PIC 0x20
++#define EF_ARM_ALIGN8 0x40
++#define EF_ARM_NEW_ABI 0x80
++#define EF_ARM_OLD_ABI 0x100
++#define EF_ARM_SOFT_FLOAT 0x200
++#define EF_ARM_VFP_FLOAT 0x400
++#define EF_ARM_MAVERICK_FLOAT 0x800
++
++#define EF_ARM_ABI_FLOAT_SOFT 0x200
++#define EF_ARM_ABI_FLOAT_HARD 0x400
++
++
++#define EF_ARM_SYMSARESORTED 0x04
++#define EF_ARM_DYNSYMSUSESEGIDX 0x08
++#define EF_ARM_MAPSYMSFIRST 0x10
++#define EF_ARM_EABIMASK 0XFF000000
++
++
++#define EF_ARM_BE8 0x00800000
++#define EF_ARM_LE8 0x00400000
++
++#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
++#define EF_ARM_EABI_UNKNOWN 0x00000000
++#define EF_ARM_EABI_VER1 0x01000000
++#define EF_ARM_EABI_VER2 0x02000000
++#define EF_ARM_EABI_VER3 0x03000000
++#define EF_ARM_EABI_VER4 0x04000000
++#define EF_ARM_EABI_VER5 0x05000000
++
++
++#define STT_ARM_TFUNC STT_LOPROC
++#define STT_ARM_16BIT STT_HIPROC
++
++
++#define SHF_ARM_ENTRYSECT 0x10000000
++#define SHF_ARM_COMDEF 0x80000000
++
++
++
++#define PF_ARM_SB 0x10000000
++
++#define PF_ARM_PI 0x20000000
++#define PF_ARM_ABS 0x40000000
++
++
++#define PT_ARM_EXIDX (PT_LOPROC + 1)
++
++
++#define SHT_ARM_EXIDX (SHT_LOPROC + 1)
++#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2)
++#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3)
++
++
++#define R_AARCH64_NONE 0
++#define R_AARCH64_ABS64 257
++#define R_AARCH64_ABS32 258
++#define R_AARCH64_COPY 1024
++#define R_AARCH64_GLOB_DAT 1025
++#define R_AARCH64_JUMP_SLOT 1026
++#define R_AARCH64_RELATIVE 1027
++#define R_AARCH64_TLS_DTPMOD64 1028
++#define R_AARCH64_TLS_DTPREL64 1029
++#define R_AARCH64_TLS_TPREL64 1030
++#define R_AARCH64_TLSDESC 1031
++
++
++#define R_ARM_NONE 0
++#define R_ARM_PC24 1
++#define R_ARM_ABS32 2
++#define R_ARM_REL32 3
++#define R_ARM_PC13 4
++#define R_ARM_ABS16 5
++#define R_ARM_ABS12 6
++#define R_ARM_THM_ABS5 7
++#define R_ARM_ABS8 8
++#define R_ARM_SBREL32 9
++#define R_ARM_THM_PC22 10
++#define R_ARM_THM_PC8 11
++#define R_ARM_AMP_VCALL9 12
++#define R_ARM_TLS_DESC 13
++#define R_ARM_THM_SWI8 14
++#define R_ARM_XPC25 15
++#define R_ARM_THM_XPC22 16
++#define R_ARM_TLS_DTPMOD32 17
++#define R_ARM_TLS_DTPOFF32 18
++#define R_ARM_TLS_TPOFF32 19
++#define R_ARM_COPY 20
++#define R_ARM_GLOB_DAT 21
++#define R_ARM_JUMP_SLOT 22
++#define R_ARM_RELATIVE 23
++#define R_ARM_GOTOFF 24
++#define R_ARM_GOTPC 25
++#define R_ARM_GOT32 26
++#define R_ARM_PLT32 27
++#define R_ARM_CALL 28
++#define R_ARM_JUMP24 29
++#define R_ARM_THM_JUMP24 30
++#define R_ARM_BASE_ABS 31
++#define R_ARM_ALU_PCREL_7_0 32
++#define R_ARM_ALU_PCREL_15_8 33
++#define R_ARM_ALU_PCREL_23_15 34
++#define R_ARM_LDR_SBREL_11_0 35
++#define R_ARM_ALU_SBREL_19_12 36
++#define R_ARM_ALU_SBREL_27_20 37
++#define R_ARM_TARGET1 38
++#define R_ARM_SBREL31 39
++#define R_ARM_V4BX 40
++#define R_ARM_TARGET2 41
++#define R_ARM_PREL31 42
++#define R_ARM_MOVW_ABS_NC 43
++#define R_ARM_MOVT_ABS 44
++#define R_ARM_MOVW_PREL_NC 45
++#define R_ARM_MOVT_PREL 46
++#define R_ARM_THM_MOVW_ABS_NC 47
++#define R_ARM_THM_MOVT_ABS 48
++#define R_ARM_THM_MOVW_PREL_NC 49
++#define R_ARM_THM_MOVT_PREL 50
++#define R_ARM_THM_JUMP19 51
++#define R_ARM_THM_JUMP6 52
++#define R_ARM_THM_ALU_PREL_11_0 53
++#define R_ARM_THM_PC12 54
++#define R_ARM_ABS32_NOI 55
++#define R_ARM_REL32_NOI 56
++#define R_ARM_ALU_PC_G0_NC 57
++#define R_ARM_ALU_PC_G0 58
++#define R_ARM_ALU_PC_G1_NC 59
++#define R_ARM_ALU_PC_G1 60
++#define R_ARM_ALU_PC_G2 61
++#define R_ARM_LDR_PC_G1 62
++#define R_ARM_LDR_PC_G2 63
++#define R_ARM_LDRS_PC_G0 64
++#define R_ARM_LDRS_PC_G1 65
++#define R_ARM_LDRS_PC_G2 66
++#define R_ARM_LDC_PC_G0 67
++#define R_ARM_LDC_PC_G1 68
++#define R_ARM_LDC_PC_G2 69
++#define R_ARM_ALU_SB_G0_NC 70
++#define R_ARM_ALU_SB_G0 71
++#define R_ARM_ALU_SB_G1_NC 72
++#define R_ARM_ALU_SB_G1 73
++#define R_ARM_ALU_SB_G2 74
++#define R_ARM_LDR_SB_G0 75
++#define R_ARM_LDR_SB_G1 76
++#define R_ARM_LDR_SB_G2 77
++#define R_ARM_LDRS_SB_G0 78
++#define R_ARM_LDRS_SB_G1 79
++#define R_ARM_LDRS_SB_G2 80
++#define R_ARM_LDC_SB_G0 81
++#define R_ARM_LDC_SB_G1 82
++#define R_ARM_LDC_SB_G2 83
++#define R_ARM_MOVW_BREL_NC 84
++#define R_ARM_MOVT_BREL 85
++#define R_ARM_MOVW_BREL 86
++#define R_ARM_THM_MOVW_BREL_NC 87
++#define R_ARM_THM_MOVT_BREL 88
++#define R_ARM_THM_MOVW_BREL 89
++#define R_ARM_TLS_GOTDESC 90
++#define R_ARM_TLS_CALL 91
++#define R_ARM_TLS_DESCSEQ 92
++#define R_ARM_THM_TLS_CALL 93
++#define R_ARM_PLT32_ABS 94
++#define R_ARM_GOT_ABS 95
++#define R_ARM_GOT_PREL 96
++#define R_ARM_GOT_BREL12 97
++#define R_ARM_GOTOFF12 98
++#define R_ARM_GOTRELAX 99
++#define R_ARM_GNU_VTENTRY 100
++#define R_ARM_GNU_VTINHERIT 101
++#define R_ARM_THM_PC11 102
++#define R_ARM_THM_PC9 103
++#define R_ARM_TLS_GD32 104
++
++#define R_ARM_TLS_LDM32 105
++
++#define R_ARM_TLS_LDO32 106
++
++#define R_ARM_TLS_IE32 107
++
++#define R_ARM_TLS_LE32 108
++#define R_ARM_TLS_LDO12 109
++#define R_ARM_TLS_LE12 110
++#define R_ARM_TLS_IE12GP 111
++#define R_ARM_ME_TOO 128
++#define R_ARM_THM_TLS_DESCSEQ 129
++#define R_ARM_THM_TLS_DESCSEQ16 129
++#define R_ARM_THM_TLS_DESCSEQ32 130
++#define R_ARM_THM_GOT_BREL12 131
++#define R_ARM_IRELATIVE 160
++#define R_ARM_RXPC25 249
++#define R_ARM_RSBREL32 250
++#define R_ARM_THM_RPC22 251
++#define R_ARM_RREL32 252
++#define R_ARM_RABS22 253
++#define R_ARM_RPC24 254
++#define R_ARM_RBASE 255
++
++#define R_ARM_NUM 256
++
++
++
++
++#define EF_IA_64_MASKOS 0x0000000f
++#define EF_IA_64_ABI64 0x00000010
++#define EF_IA_64_ARCH 0xff000000
++
++
++#define PT_IA_64_ARCHEXT (PT_LOPROC + 0)
++#define PT_IA_64_UNWIND (PT_LOPROC + 1)
++#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12)
++#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13)
++#define PT_IA_64_HP_STACK (PT_LOOS + 0x14)
++
++
++#define PF_IA_64_NORECOV 0x80000000
++
++
++#define SHT_IA_64_EXT (SHT_LOPROC + 0)
++#define SHT_IA_64_UNWIND (SHT_LOPROC + 1)
++
++
++#define SHF_IA_64_SHORT 0x10000000
++#define SHF_IA_64_NORECOV 0x20000000
++
++
++#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
++#define DT_IA_64_NUM 1
++
++
++#define R_IA64_NONE 0x00
++#define R_IA64_IMM14 0x21
++#define R_IA64_IMM22 0x22
++#define R_IA64_IMM64 0x23
++#define R_IA64_DIR32MSB 0x24
++#define R_IA64_DIR32LSB 0x25
++#define R_IA64_DIR64MSB 0x26
++#define R_IA64_DIR64LSB 0x27
++#define R_IA64_GPREL22 0x2a
++#define R_IA64_GPREL64I 0x2b
++#define R_IA64_GPREL32MSB 0x2c
++#define R_IA64_GPREL32LSB 0x2d
++#define R_IA64_GPREL64MSB 0x2e
++#define R_IA64_GPREL64LSB 0x2f
++#define R_IA64_LTOFF22 0x32
++#define R_IA64_LTOFF64I 0x33
++#define R_IA64_PLTOFF22 0x3a
++#define R_IA64_PLTOFF64I 0x3b
++#define R_IA64_PLTOFF64MSB 0x3e
++#define R_IA64_PLTOFF64LSB 0x3f
++#define R_IA64_FPTR64I 0x43
++#define R_IA64_FPTR32MSB 0x44
++#define R_IA64_FPTR32LSB 0x45
++#define R_IA64_FPTR64MSB 0x46
++#define R_IA64_FPTR64LSB 0x47
++#define R_IA64_PCREL60B 0x48
++#define R_IA64_PCREL21B 0x49
++#define R_IA64_PCREL21M 0x4a
++#define R_IA64_PCREL21F 0x4b
++#define R_IA64_PCREL32MSB 0x4c
++#define R_IA64_PCREL32LSB 0x4d
++#define R_IA64_PCREL64MSB 0x4e
++#define R_IA64_PCREL64LSB 0x4f
++#define R_IA64_LTOFF_FPTR22 0x52
++#define R_IA64_LTOFF_FPTR64I 0x53
++#define R_IA64_LTOFF_FPTR32MSB 0x54
++#define R_IA64_LTOFF_FPTR32LSB 0x55
++#define R_IA64_LTOFF_FPTR64MSB 0x56
++#define R_IA64_LTOFF_FPTR64LSB 0x57
++#define R_IA64_SEGREL32MSB 0x5c
++#define R_IA64_SEGREL32LSB 0x5d
++#define R_IA64_SEGREL64MSB 0x5e
++#define R_IA64_SEGREL64LSB 0x5f
++#define R_IA64_SECREL32MSB 0x64
++#define R_IA64_SECREL32LSB 0x65
++#define R_IA64_SECREL64MSB 0x66
++#define R_IA64_SECREL64LSB 0x67
++#define R_IA64_REL32MSB 0x6c
++#define R_IA64_REL32LSB 0x6d
++#define R_IA64_REL64MSB 0x6e
++#define R_IA64_REL64LSB 0x6f
++#define R_IA64_LTV32MSB 0x74
++#define R_IA64_LTV32LSB 0x75
++#define R_IA64_LTV64MSB 0x76
++#define R_IA64_LTV64LSB 0x77
++#define R_IA64_PCREL21BI 0x79
++#define R_IA64_PCREL22 0x7a
++#define R_IA64_PCREL64I 0x7b
++#define R_IA64_IPLTMSB 0x80
++#define R_IA64_IPLTLSB 0x81
++#define R_IA64_COPY 0x84
++#define R_IA64_SUB 0x85
++#define R_IA64_LTOFF22X 0x86
++#define R_IA64_LDXMOV 0x87
++#define R_IA64_TPREL14 0x91
++#define R_IA64_TPREL22 0x92
++#define R_IA64_TPREL64I 0x93
++#define R_IA64_TPREL64MSB 0x96
++#define R_IA64_TPREL64LSB 0x97
++#define R_IA64_LTOFF_TPREL22 0x9a
++#define R_IA64_DTPMOD64MSB 0xa6
++#define R_IA64_DTPMOD64LSB 0xa7
++#define R_IA64_LTOFF_DTPMOD22 0xaa
++#define R_IA64_DTPREL14 0xb1
++#define R_IA64_DTPREL22 0xb2
++#define R_IA64_DTPREL64I 0xb3
++#define R_IA64_DTPREL32MSB 0xb4
++#define R_IA64_DTPREL32LSB 0xb5
++#define R_IA64_DTPREL64MSB 0xb6
++#define R_IA64_DTPREL64LSB 0xb7
++#define R_IA64_LTOFF_DTPREL22 0xba
++
++
++
++
++#define R_SH_NONE 0
++#define R_SH_DIR32 1
++#define R_SH_REL32 2
++#define R_SH_DIR8WPN 3
++#define R_SH_IND12W 4
++#define R_SH_DIR8WPL 5
++#define R_SH_DIR8WPZ 6
++#define R_SH_DIR8BP 7
++#define R_SH_DIR8W 8
++#define R_SH_DIR8L 9
++#define R_SH_SWITCH16 25
++#define R_SH_SWITCH32 26
++#define R_SH_USES 27
++#define R_SH_COUNT 28
++#define R_SH_ALIGN 29
++#define R_SH_CODE 30
++#define R_SH_DATA 31
++#define R_SH_LABEL 32
++#define R_SH_SWITCH8 33
++#define R_SH_GNU_VTINHERIT 34
++#define R_SH_GNU_VTENTRY 35
++#define R_SH_TLS_GD_32 144
++#define R_SH_TLS_LD_32 145
++#define R_SH_TLS_LDO_32 146
++#define R_SH_TLS_IE_32 147
++#define R_SH_TLS_LE_32 148
++#define R_SH_TLS_DTPMOD32 149
++#define R_SH_TLS_DTPOFF32 150
++#define R_SH_TLS_TPOFF32 151
++#define R_SH_GOT32 160
++#define R_SH_PLT32 161
++#define R_SH_COPY 162
++#define R_SH_GLOB_DAT 163
++#define R_SH_JMP_SLOT 164
++#define R_SH_RELATIVE 165
++#define R_SH_GOTOFF 166
++#define R_SH_GOTPC 167
++
++#define R_SH_NUM 256
++
++
++
++#define R_390_NONE 0
++#define R_390_8 1
++#define R_390_12 2
++#define R_390_16 3
++#define R_390_32 4
++#define R_390_PC32 5
++#define R_390_GOT12 6
++#define R_390_GOT32 7
++#define R_390_PLT32 8
++#define R_390_COPY 9
++#define R_390_GLOB_DAT 10
++#define R_390_JMP_SLOT 11
++#define R_390_RELATIVE 12
++#define R_390_GOTOFF32 13
++#define R_390_GOTPC 14
++#define R_390_GOT16 15
++#define R_390_PC16 16
++#define R_390_PC16DBL 17
++#define R_390_PLT16DBL 18
++#define R_390_PC32DBL 19
++#define R_390_PLT32DBL 20
++#define R_390_GOTPCDBL 21
++#define R_390_64 22
++#define R_390_PC64 23
++#define R_390_GOT64 24
++#define R_390_PLT64 25
++#define R_390_GOTENT 26
++#define R_390_GOTOFF16 27
++#define R_390_GOTOFF64 28
++#define R_390_GOTPLT12 29
++#define R_390_GOTPLT16 30
++#define R_390_GOTPLT32 31
++#define R_390_GOTPLT64 32
++#define R_390_GOTPLTENT 33
++#define R_390_PLTOFF16 34
++#define R_390_PLTOFF32 35
++#define R_390_PLTOFF64 36
++#define R_390_TLS_LOAD 37
++#define R_390_TLS_GDCALL 38
++
++#define R_390_TLS_LDCALL 39
++
++#define R_390_TLS_GD32 40
++
++#define R_390_TLS_GD64 41
++
++#define R_390_TLS_GOTIE12 42
++
++#define R_390_TLS_GOTIE32 43
++
++#define R_390_TLS_GOTIE64 44
++
++#define R_390_TLS_LDM32 45
++
++#define R_390_TLS_LDM64 46
++
++#define R_390_TLS_IE32 47
++
++#define R_390_TLS_IE64 48
++
++#define R_390_TLS_IEENT 49
++
++#define R_390_TLS_LE32 50
++
++#define R_390_TLS_LE64 51
++
++#define R_390_TLS_LDO32 52
++
++#define R_390_TLS_LDO64 53
++
++#define R_390_TLS_DTPMOD 54
++#define R_390_TLS_DTPOFF 55
++#define R_390_TLS_TPOFF 56
++
++#define R_390_20 57
++#define R_390_GOT20 58
++#define R_390_GOTPLT20 59
++#define R_390_TLS_GOTIE20 60
++
++
++#define R_390_NUM 61
++
++
++
++#define R_CRIS_NONE 0
++#define R_CRIS_8 1
++#define R_CRIS_16 2
++#define R_CRIS_32 3
++#define R_CRIS_8_PCREL 4
++#define R_CRIS_16_PCREL 5
++#define R_CRIS_32_PCREL 6
++#define R_CRIS_GNU_VTINHERIT 7
++#define R_CRIS_GNU_VTENTRY 8
++#define R_CRIS_COPY 9
++#define R_CRIS_GLOB_DAT 10
++#define R_CRIS_JUMP_SLOT 11
++#define R_CRIS_RELATIVE 12
++#define R_CRIS_16_GOT 13
++#define R_CRIS_32_GOT 14
++#define R_CRIS_16_GOTPLT 15
++#define R_CRIS_32_GOTPLT 16
++#define R_CRIS_32_GOTREL 17
++#define R_CRIS_32_PLT_GOTREL 18
++#define R_CRIS_32_PLT_PCREL 19
++
++#define R_CRIS_NUM 20
++
++
++
++#define R_X86_64_NONE 0
++#define R_X86_64_64 1
++#define R_X86_64_PC32 2
++#define R_X86_64_GOT32 3
++#define R_X86_64_PLT32 4
++#define R_X86_64_COPY 5
++#define R_X86_64_GLOB_DAT 6
++#define R_X86_64_JUMP_SLOT 7
++#define R_X86_64_RELATIVE 8
++#define R_X86_64_GOTPCREL 9
++
++#define R_X86_64_32 10
++#define R_X86_64_32S 11
++#define R_X86_64_16 12
++#define R_X86_64_PC16 13
++#define R_X86_64_8 14
++#define R_X86_64_PC8 15
++#define R_X86_64_DTPMOD64 16
++#define R_X86_64_DTPOFF64 17
++#define R_X86_64_TPOFF64 18
++#define R_X86_64_TLSGD 19
++
++#define R_X86_64_TLSLD 20
++
++#define R_X86_64_DTPOFF32 21
++#define R_X86_64_GOTTPOFF 22
++
++#define R_X86_64_TPOFF32 23
++#define R_X86_64_PC64 24
++#define R_X86_64_GOTOFF64 25
++#define R_X86_64_GOTPC32 26
++#define R_X86_64_GOT64 27
++#define R_X86_64_GOTPCREL64 28
++#define R_X86_64_GOTPC64 29
++#define R_X86_64_GOTPLT64 30
++#define R_X86_64_PLTOFF64 31
++#define R_X86_64_SIZE32 32
++#define R_X86_64_SIZE64 33
++
++#define R_X86_64_GOTPC32_TLSDESC 34
++#define R_X86_64_TLSDESC_CALL 35
++
++#define R_X86_64_TLSDESC 36
++#define R_X86_64_IRELATIVE 37
++#define R_X86_64_RELATIVE64 38
++#define R_X86_64_NUM 39
++
++
++
++#define R_MN10300_NONE 0
++#define R_MN10300_32 1
++#define R_MN10300_16 2
++#define R_MN10300_8 3
++#define R_MN10300_PCREL32 4
++#define R_MN10300_PCREL16 5
++#define R_MN10300_PCREL8 6
++#define R_MN10300_GNU_VTINHERIT 7
++#define R_MN10300_GNU_VTENTRY 8
++#define R_MN10300_24 9
++#define R_MN10300_GOTPC32 10
++#define R_MN10300_GOTPC16 11
++#define R_MN10300_GOTOFF32 12
++#define R_MN10300_GOTOFF24 13
++#define R_MN10300_GOTOFF16 14
++#define R_MN10300_PLT32 15
++#define R_MN10300_PLT16 16
++#define R_MN10300_GOT32 17
++#define R_MN10300_GOT24 18
++#define R_MN10300_GOT16 19
++#define R_MN10300_COPY 20
++#define R_MN10300_GLOB_DAT 21
++#define R_MN10300_JMP_SLOT 22
++#define R_MN10300_RELATIVE 23
++
++#define R_MN10300_NUM 24
++
++
++
++#define R_M32R_NONE 0
++#define R_M32R_16 1
++#define R_M32R_32 2
++#define R_M32R_24 3
++#define R_M32R_10_PCREL 4
++#define R_M32R_18_PCREL 5
++#define R_M32R_26_PCREL 6
++#define R_M32R_HI16_ULO 7
++#define R_M32R_HI16_SLO 8
++#define R_M32R_LO16 9
++#define R_M32R_SDA16 10
++#define R_M32R_GNU_VTINHERIT 11
++#define R_M32R_GNU_VTENTRY 12
++
++#define R_M32R_16_RELA 33
++#define R_M32R_32_RELA 34
++#define R_M32R_24_RELA 35
++#define R_M32R_10_PCREL_RELA 36
++#define R_M32R_18_PCREL_RELA 37
++#define R_M32R_26_PCREL_RELA 38
++#define R_M32R_HI16_ULO_RELA 39
++#define R_M32R_HI16_SLO_RELA 40
++#define R_M32R_LO16_RELA 41
++#define R_M32R_SDA16_RELA 42
++#define R_M32R_RELA_GNU_VTINHERIT 43
++#define R_M32R_RELA_GNU_VTENTRY 44
++#define R_M32R_REL32 45
++
++#define R_M32R_GOT24 48
++#define R_M32R_26_PLTREL 49
++#define R_M32R_COPY 50
++#define R_M32R_GLOB_DAT 51
++#define R_M32R_JMP_SLOT 52
++#define R_M32R_RELATIVE 53
++#define R_M32R_GOTOFF 54
++#define R_M32R_GOTPC24 55
++#define R_M32R_GOT16_HI_ULO 56
++
++#define R_M32R_GOT16_HI_SLO 57
++
++#define R_M32R_GOT16_LO 58
++#define R_M32R_GOTPC_HI_ULO 59
++
++#define R_M32R_GOTPC_HI_SLO 60
++
++#define R_M32R_GOTPC_LO 61
++
++#define R_M32R_GOTOFF_HI_ULO 62
++
++#define R_M32R_GOTOFF_HI_SLO 63
++
++#define R_M32R_GOTOFF_LO 64
++#define R_M32R_NUM 256
++
++#define R_MICROBLAZE_NONE 0
++#define R_MICROBLAZE_32 1
++#define R_MICROBLAZE_32_PCREL 2
++#define R_MICROBLAZE_64_PCREL 3
++#define R_MICROBLAZE_32_PCREL_LO 4
++#define R_MICROBLAZE_64 5
++#define R_MICROBLAZE_32_LO 6
++#define R_MICROBLAZE_SRO32 7
++#define R_MICROBLAZE_SRW32 8
++#define R_MICROBLAZE_64_NONE 9
++#define R_MICROBLAZE_32_SYM_OP_SYM 10
++#define R_MICROBLAZE_GNU_VTINHERIT 11
++#define R_MICROBLAZE_GNU_VTENTRY 12
++#define R_MICROBLAZE_GOTPC_64 13
++#define R_MICROBLAZE_GOT_64 14
++#define R_MICROBLAZE_PLT_64 15
++#define R_MICROBLAZE_REL 16
++#define R_MICROBLAZE_JUMP_SLOT 17
++#define R_MICROBLAZE_GLOB_DAT 18
++#define R_MICROBLAZE_GOTOFF_64 19
++#define R_MICROBLAZE_GOTOFF_32 20
++#define R_MICROBLAZE_COPY 21
++#define R_MICROBLAZE_TLS 22
++#define R_MICROBLAZE_TLSGD 23
++#define R_MICROBLAZE_TLSLD 24
++#define R_MICROBLAZE_TLSDTPMOD32 25
++#define R_MICROBLAZE_TLSDTPREL32 26
++#define R_MICROBLAZE_TLSDTPREL64 27
++#define R_MICROBLAZE_TLSGOTTPREL32 28
++#define R_MICROBLAZE_TLSTPREL32 29
++
++#ifdef __cplusplus
++}
++#endif
++
++
++#endif
diff --git a/target/linux/patches/5.4.155/sh4.patch b/target/linux/patches/5.4.272/sh4.patch
index 8ae79d49d..8ae79d49d 100644
--- a/target/linux/patches/5.4.155/sh4.patch
+++ b/target/linux/patches/5.4.272/sh4.patch
diff --git a/target/linux/patches/5.4.155/startup.patch b/target/linux/patches/5.4.272/startup.patch
index 081aa103a..081aa103a 100644
--- a/target/linux/patches/5.4.155/startup.patch
+++ b/target/linux/patches/5.4.272/startup.patch
diff --git a/target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/disable-gcc-plugins.patch b/target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/disable-gcc-plugins.patch
new file mode 100644
index 000000000..271fc5402
--- /dev/null
+++ b/target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/disable-gcc-plugins.patch
@@ -0,0 +1,22 @@
+diff -Nur linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm/Kconfig linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm/Kconfig
+--- linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm/Kconfig 2022-01-21 19:27:36.000000000 +0100
++++ linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm/Kconfig 2022-02-13 02:06:15.880669581 +0100
+@@ -88,7 +88,6 @@
+ select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL && !CC_IS_CLANG
+ select HAVE_FUNCTION_TRACER if !XIP_KERNEL
+ select HAVE_FUTEX_CMPXCHG if FUTEX
+- select HAVE_GCC_PLUGINS
+ select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)
+ select HAVE_IDE if PCI || ISA || PCMCIA
+ select HAVE_IRQ_TIME_ACCOUNTING
+diff -Nur linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm64/Kconfig linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm64/Kconfig
+--- linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm64/Kconfig 2022-01-21 19:27:37.000000000 +0100
++++ linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm64/Kconfig 2022-02-13 02:06:27.852961034 +0100
+@@ -165,7 +165,6 @@
+ select HAVE_FUNCTION_TRACER
+ select HAVE_FUNCTION_ERROR_INJECTION
+ select HAVE_FUNCTION_GRAPH_TRACER
+- select HAVE_GCC_PLUGINS
+ select HAVE_HW_BREAKPOINT if PERF_EVENTS
+ select HAVE_IRQ_TIME_ACCOUNTING
+ select HAVE_NMI
diff --git a/target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/localversion.patch b/target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/localversion.patch
new file mode 100644
index 000000000..b4b4b95d7
--- /dev/null
+++ b/target/linux/patches/59aeb16c7f1254f1383476956dda0766d10c918a/localversion.patch
@@ -0,0 +1,18 @@
+diff -Nur linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm/configs/bcm2711_defconfig linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm/configs/bcm2711_defconfig
+--- linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm/configs/bcm2711_defconfig 2022-01-21 19:27:36.000000000 +0100
++++ linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm/configs/bcm2711_defconfig 2022-02-15 12:41:31.879194595 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v7l"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+diff -Nur linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm64/configs/bcm2711_defconfig linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm64/configs/bcm2711_defconfig
+--- linux-59aeb16c7f1254f1383476956dda0766d10c918a.orig/arch/arm64/configs/bcm2711_defconfig 2022-01-21 19:27:37.000000000 +0100
++++ linux-59aeb16c7f1254f1383476956dda0766d10c918a/arch/arm64/configs/bcm2711_defconfig 2022-02-15 12:41:11.014686670 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v8"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
diff --git a/target/linux/patches/6.1.82/armnommu-fix-thread-registers.patch b/target/linux/patches/6.1.82/armnommu-fix-thread-registers.patch
new file mode 100644
index 000000000..8ab2196dc
--- /dev/null
+++ b/target/linux/patches/6.1.82/armnommu-fix-thread-registers.patch
@@ -0,0 +1,57 @@
+From 1410ebe685f13c1699a16bf147ae1332e7fd1983 Mon Sep 17 00:00:00 2001
+From: Greg Ungerer <gerg@kernel.org>
+Date: Thu, 20 Apr 2023 09:52:08 +1000
+Subject: [PATCH] ARM: start_thread: restore registers on ELF load for noMMU
+
+The binfmt_elf-fdpic loader is capable of loading constant displacement
+ELF format binaries (like those compiled -pie) on noMMU systems as well
+as elf-fdpic format binaries. The traditional ELF loader cannot be
+enabled on noMMU systems.
+
+Commit 5e588114329c ("ARM: start_thread(): don't always clear all regs")
+fixed the start_thread() code so that it maintains the required
+elf-fdpic registers through to the new process, but it only does that if
+current has its personality FDPIC_FUNCPTRS bit set. That is true for
+elf-fdpic format binaries but will not be true for non-fdpic ELF
+binaries.
+
+Modify the test of the FDPIC_FUNCPTRS personality bit to also carry out
+the register restore if this is a noMMU system. This is not perfect,
+since it will also preserve these registers on noMMU systems for all
+binary format types (could be flat format for example). That won't break
+anything, but it is potentially leaking some information into the new
+process. But for the noMMU case we need those start time registers set to
+be able to finalize the runtime loading of the -pie style ELF binary
+(carry out its segment and dynamic relocation processing).
+
+Unfortunately the FDPIC_FUNCPTRS flag cannot just be enabled for all
+elf-fdpic loaded binaries. That personality bit is used for other things
+like the controlling the changed behavior for signal handling.
+
+There is no change in behavior for normal ELF loading on MMU systems.
+A -pie style ELF binary built for noMMU systems can be load and run using
+the usual ELF loader on an MMU system (elf-fdpic loader not required in
+this case).
+
+Signed-off-by: Greg Ungerer <gerg@kernel.org>
+---
+ arch/arm/include/asm/processor.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
+index 326864f79d18..5074cc3ae4e1 100644
+--- a/arch/arm/include/asm/processor.h
++++ b/arch/arm/include/asm/processor.h
+@@ -60,7 +60,8 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset,
+ } \
+ memset(regs->uregs, 0, sizeof(regs->uregs)); \
+ if (IS_ENABLED(CONFIG_BINFMT_ELF_FDPIC) && \
+- current->personality & FDPIC_FUNCPTRS) { \
++ ((! IS_ENABLED(CONFIG_MMU)) || \
++ current->personality & FDPIC_FUNCPTRS)) { \
+ regs->ARM_r7 = r7; \
+ regs->ARM_r8 = r8; \
+ regs->ARM_r9 = r9; \
+--
+2.25.1
+
diff --git a/target/linux/patches/6.1.82/armnommu-versatile.patch b/target/linux/patches/6.1.82/armnommu-versatile.patch
new file mode 100644
index 000000000..f8f10f50b
--- /dev/null
+++ b/target/linux/patches/6.1.82/armnommu-versatile.patch
@@ -0,0 +1,101 @@
+From 77c038d93769c92ef54cdbb50388564d1b37987b Mon Sep 17 00:00:00 2001
+From: Greg Ungerer <gerg@kernel.org>
+Date: Fri, 23 Sep 2016 13:37:34 +1000
+Subject: [PATCH] ARM: versatile: support configuring versatile machine for no-MMU
+
+Allow the arm versatile machine to be configured for no-MMU operation.
+
+Older kernels had the ability to build the versatile machine with the MMU
+disabled (!CONFIG_MMU). Recent changes to convert the versatile machine
+to device tree lost this ability. (Although older kernels could be built
+they did not run due to a bug in the IO_ADDRESS() mapping on this machine).
+
+The motivation for this is that the versatile machine is well supported
+in qemu. And this provides an excellent platform for development and
+testing no-MMU support on ARM in general.
+
+This patch adds a versatile platform selection in the upper level arm
+system type menu - where it appeared in older kernel versions - when
+configuring for the no-MMU case. There is no visible change to the way
+versatile is selected for the MMU enabled case.
+
+Signed-off-by: Greg Ungerer <gerg@kernel.org>
+---
+ arch/arm/Kconfig | 13 ++++++++++++-
+ arch/arm/include/asm/mach/map.h | 1 +
+ arch/arm/mach-versatile/Kconfig | 2 +-
+ arch/arm/mach-versatile/versatile.c | 4 ++++
+ 4 files changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/mach-versatile/versatile.c b/arch/arm/mach-versatile/versatile.c
+index 02ba68abe533..835b51bc597b 100644
+--- a/arch/arm/mach-versatile/versatile.c
++++ b/arch/arm/mach-versatile/versatile.c
+@@ -22,7 +22,11 @@
+ #include <asm/mach/map.h>
+
+ /* macro to get at MMIO space when running virtually */
++#ifdef CONFIG_MMU
+ #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
++#else
++#define IO_ADDRESS(x) (x)
++#endif
+ #define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
+
+ /*
+diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
+index 2b8970d8e5a2..41844ab6aec5 100644
+--- a/arch/arm/include/asm/mach/map.h
++++ b/arch/arm/include/asm/mach/map.h
+@@ -60,6 +60,7 @@ extern int ioremap_page(unsigned long virt, unsigned long phys,
+ #else
+ #define iotable_init(map,num) do { } while (0)
+ #define vm_reserve_area_early(a,s,c) do { } while (0)
++#define debug_ll_io_init() do { } while (0)
+ #endif
+
+ #endif
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index e24a9820e12f..342e1efa583a 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -307,12 +307,23 @@ config MMU
+ Select if you want MMU-based virtualised addressing space
+ support by paged memory management. If unsure, say 'Y'.
+
++choice
++ prompt "ARM system type"
++ depends on !MMU
++ default ARM_SINGLE_ARMV7M
++
+ config ARM_SINGLE_ARMV7M
+- def_bool !MMU
++ bool "ARMv7-M based platforms (Cortex-M0/M3/M4)"
+ select ARM_NVIC
+ select CPU_V7M
+ select NO_IOPORT_MAP
+
++config ARM_SINGLE_ARM926
++ bool "ARM926 based platforms"
++ select CPU_ARM926T
++
++endchoice
++
+ config ARCH_MMAP_RND_BITS_MIN
+ default 8
+
+diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
+index b1519b4dc03a..2f1bf95daeb0 100644
+--- a/arch/arm/mach-versatile/Kconfig
++++ b/arch/arm/mach-versatile/Kconfig
+@@ -1,7 +1,7 @@
+ # SPDX-License-Identifier: GPL-2.0
+ config ARCH_VERSATILE
+ bool "ARM Ltd. Versatile family"
+- depends on ARCH_MULTI_V5
++ depends on ARCH_MULTI_V5 || ARM_SINGLE_ARM926
+ depends on CPU_LITTLE_ENDIAN
+ select ARM_AMBA
+ select ARM_TIMER_SP804
+--
+2.25.1
diff --git a/target/linux/patches/6.1.82/board-rockpi4-0003-arm64-dts-pcie.patch b/target/linux/patches/6.1.82/board-rockpi4-0003-arm64-dts-pcie.patch
new file mode 100644
index 000000000..1777e7a86
--- /dev/null
+++ b/target/linux/patches/6.1.82/board-rockpi4-0003-arm64-dts-pcie.patch
@@ -0,0 +1,35 @@
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
+index 1ae1ebd4e..2f84397d5 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
+@@ -62,6 +62,8 @@
+ regulator-name = "vcc3v3_pcie";
+ regulator-always-on;
+ regulator-boot-on;
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vcc5v0_sys>;
+ };
+
+@@ -434,6 +459,21 @@
+ gpio1830-supply = <&vcc_3v0>;
+ };
+
++&pcie0 {
++ ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
++ num-lanes = <4>;
++ max-link-speed = <1>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pcie_clkreqnb_cpm>;
++ vpcie12v-supply = <&vcc12v_dcin>;
++ vpcie3v3-supply = <&vcc3v3_pcie>;
++ status = "okay";
++};
++
++&pcie_phy {
++ status = "okay";
++};
++
+ &pmu_io_domains {
+ status = "okay";
+
diff --git a/target/linux/patches/6.1.82/enable-ethernet-bpi-m2-plus.patch b/target/linux/patches/6.1.82/enable-ethernet-bpi-m2-plus.patch
new file mode 100644
index 000000000..7e9abd9ce
--- /dev/null
+++ b/target/linux/patches/6.1.82/enable-ethernet-bpi-m2-plus.patch
@@ -0,0 +1,15 @@
+diff -Nur linux-6.0.11.orig/arch/arm/boot/dts/sunxi-h3-h5.dtsi linux-6.0.11/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+--- linux-6.0.11.orig/arch/arm/boot/dts/sunxi-h3-h5.dtsi 2022-12-02 17:43:18.000000000 +0100
++++ linux-6.0.11/arch/arm/boot/dts/sunxi-h3-h5.dtsi 2022-12-19 08:06:16.836436057 +0100
+@@ -532,7 +532,10 @@
+ reset-names = "stmmaceth";
+ clocks = <&ccu CLK_BUS_EMAC>;
+ clock-names = "stmmaceth";
+- status = "disabled";
++ status = "okay";
++ phy-handle = <&int_mii_phy>;
++ phy-mode = "mii";
++ allwinner,leds-active-low;
+
+ mdio: mdio {
+ #address-cells = <1>;
diff --git a/target/linux/patches/6.1.82/hppa-cross-compile.patch b/target/linux/patches/6.1.82/hppa-cross-compile.patch
new file mode 100644
index 000000000..5400e87a0
--- /dev/null
+++ b/target/linux/patches/6.1.82/hppa-cross-compile.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-6.1.41.orig/arch/parisc/Makefile linux-6.1.41/arch/parisc/Makefile
+--- linux-6.1.41.orig/arch/parisc/Makefile 2023-07-24 18:55:35.000000000 +0200
++++ linux-6.1.41/arch/parisc/Makefile 2023-07-25 17:32:20.338363915 +0200
+@@ -41,7 +41,7 @@
+
+ # Set default 32 bits cross compilers for vdso
+ CC_ARCHES_32 = hppa hppa2.0 hppa1.1
+-CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
++CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux openadk-linux-uclibc
+ CROSS32_COMPILE := $(call cc-cross-prefix, \
+ $(foreach a,$(CC_ARCHES_32), \
+ $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
diff --git a/target/linux/patches/6.1.82/macsonic.patch b/target/linux/patches/6.1.82/macsonic.patch
new file mode 100644
index 000000000..177397221
--- /dev/null
+++ b/target/linux/patches/6.1.82/macsonic.patch
@@ -0,0 +1,11 @@
+diff -Nur linux-6.1.41.orig/drivers/net/ethernet/natsemi/Kconfig linux-6.1.41/drivers/net/ethernet/natsemi/Kconfig
+--- linux-6.1.41.orig/drivers/net/ethernet/natsemi/Kconfig 2023-07-24 18:55:35.000000000 +0200
++++ linux-6.1.41/drivers/net/ethernet/natsemi/Kconfig 2023-07-26 17:06:27.179154363 +0200
+@@ -19,6 +19,7 @@
+ config MACSONIC
+ tristate "Macintosh SONIC based ethernet (onboard, NuBus, LC, CS)"
+ depends on MAC
++ select BITREVERSE
+ help
+ Support for NatSemi SONIC based Ethernet devices. This includes
+ the onboard Ethernet in many Quadras as well as some LC-PDS,
diff --git a/target/linux/patches/6.1.82/nios2.patch b/target/linux/patches/6.1.82/nios2.patch
new file mode 100644
index 000000000..43631971e
--- /dev/null
+++ b/target/linux/patches/6.1.82/nios2.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-6.1.41.orig/arch/nios2/configs/10m50_defconfig linux-6.1.41/arch/nios2/configs/10m50_defconfig
+--- linux-6.1.41.orig/arch/nios2/configs/10m50_defconfig 2023-07-24 18:55:35.000000000 +0200
++++ linux-6.1.41/arch/nios2/configs/10m50_defconfig 2023-07-29 13:12:27.796785539 +0200
+@@ -20,6 +20,8 @@
+ CONFIG_NIOS2_DCACHE_SIZE=0x8000
+ CONFIG_NIOS2_ICACHE_SIZE=0x8000
+ # CONFIG_NIOS2_CMDLINE_IGNORE_DTB is not set
++CONFIG_NIOS2_DTB_SOURCE_BOOL=y
++CONFIG_NIOS2_DTB_SOURCE="10m50_devboard.dts"
+ CONFIG_NET=y
+ CONFIG_PACKET=y
+ CONFIG_UNIX=y
diff --git a/target/linux/patches/6.1.82/or1k-more-ram.patch b/target/linux/patches/6.1.82/or1k-more-ram.patch
new file mode 100644
index 000000000..6397f8445
--- /dev/null
+++ b/target/linux/patches/6.1.82/or1k-more-ram.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-6.1.82.orig/arch/openrisc/boot/dts/or1ksim.dts linux-6.1.82/arch/openrisc/boot/dts/or1ksim.dts
+--- linux-6.1.82.orig/arch/openrisc/boot/dts/or1ksim.dts 2024-03-15 19:27:50.000000000 +0100
++++ linux-6.1.82/arch/openrisc/boot/dts/or1ksim.dts 2024-04-14 16:37:35.139984380 +0200
+@@ -17,7 +17,7 @@
+
+ memory@0 {
+ device_type = "memory";
+- reg = <0x00000000 0x02000000>;
++ reg = <0x00000000 0x08000000>;
+ };
+
+ cpus {
diff --git a/target/linux/patches/6.1.82/riscv32.patch b/target/linux/patches/6.1.82/riscv32.patch
new file mode 100644
index 000000000..648b0de4d
--- /dev/null
+++ b/target/linux/patches/6.1.82/riscv32.patch
@@ -0,0 +1,49 @@
+diff -Nur linux-6.0.15.orig/arch/riscv/include/uapi/asm/unistd.h linux-6.0.15/arch/riscv/include/uapi/asm/unistd.h
+--- linux-6.0.15.orig/arch/riscv/include/uapi/asm/unistd.h 2022-12-21 17:41:16.000000000 +0100
++++ linux-6.0.15/arch/riscv/include/uapi/asm/unistd.h 2023-01-09 11:28:16.590796198 +0100
+@@ -15,9 +15,14 @@
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+-#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
++#ifndef __SYSCALL_COMPAT
+ #define __ARCH_WANT_NEW_STAT
+ #define __ARCH_WANT_SET_GET_RLIMIT
++#endif /* __SYSCALL_COMPAT */
++
++#ifndef __LP64__
++#define __ARCH_WANT_STAT64
++#define __ARCH_WANT_TIME32_SYSCALLS
+ #endif /* __LP64__ */
+
+ #define __ARCH_WANT_SYS_CLONE3
+diff -Nur linux-6.0.15.orig/arch/riscv/Kconfig linux-6.0.15/arch/riscv/Kconfig
+--- linux-6.0.15.orig/arch/riscv/Kconfig 2022-12-21 17:41:16.000000000 +0100
++++ linux-6.0.15/arch/riscv/Kconfig 2023-01-09 14:27:16.560750598 +0100
+@@ -163,8 +163,9 @@
+
+ config PAGE_OFFSET
+ hex
+- default 0xC0000000 if 32BIT
++ default 0xC0000000 if 32BIT && MMU
+ default 0x80000000 if 64BIT && !MMU
++ default 0x80000000 if !MMU
+ default 0xff60000000000000 if 64BIT
+
+ config KASAN_SHADOW_OFFSET
+@@ -262,7 +263,6 @@
+ select GENERIC_LIB_ASHRDI3
+ select GENERIC_LIB_LSHRDI3
+ select GENERIC_LIB_UCMPDI2
+- select MMU
+
+ config ARCH_RV64I
+ bool "RV64I"
+@@ -670,7 +670,6 @@
+ default !NONPORTABLE
+ select EFI
+ select OF
+- select MMU
+
+ menu "Power management options"
+
diff --git a/target/linux/patches/6.1.82/riscv64-flat.patch b/target/linux/patches/6.1.82/riscv64-flat.patch
new file mode 100644
index 000000000..ee70ea915
--- /dev/null
+++ b/target/linux/patches/6.1.82/riscv64-flat.patch
@@ -0,0 +1,19 @@
+diff -Nur linux-6.1.79.orig/fs/binfmt_flat.c linux-6.1.79/fs/binfmt_flat.c
+--- linux-6.1.79.orig/fs/binfmt_flat.c 2024-02-23 09:12:53.000000000 +0100
++++ linux-6.1.79/fs/binfmt_flat.c 2024-03-23 22:35:54.496759006 +0100
+@@ -879,6 +879,7 @@
+ if (res < 0)
+ return res;
+
++#ifndef CONFIG_BINFMT_FLAT_NO_DATA_START_OFFSET
+ /* Update data segment pointers for all libraries */
+ for (i = 0; i < MAX_SHARED_LIBS; i++) {
+ if (!libinfo.lib_list[i].loaded)
+@@ -893,6 +894,7 @@
+ return -EFAULT;
+ }
+ }
++#endif
+
+ set_binfmt(&flat_format);
+
diff --git a/target/linux/patches/6.1.82/rockchip-115200.patch b/target/linux/patches/6.1.82/rockchip-115200.patch
new file mode 100644
index 000000000..ad8a2d7a7
--- /dev/null
+++ b/target/linux/patches/6.1.82/rockchip-115200.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-5.15.81.orig/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi linux-5.15.81/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
+--- linux-5.15.81.orig/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 2022-12-02 17:41:12.000000000 +0100
++++ linux-5.15.81/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 2022-12-22 09:51:57.370394227 +0100
+@@ -17,7 +17,7 @@
+ };
+
+ chosen {
+- stdout-path = "serial2:1500000n8";
++ stdout-path = "serial2:115200n8";
+ };
+
+ clkin_gmac: external-gmac-clock {
diff --git a/target/linux/patches/6.1.82/rockchip-pcie-timeout.patch b/target/linux/patches/6.1.82/rockchip-pcie-timeout.patch
new file mode 100644
index 000000000..2ef7df2da
--- /dev/null
+++ b/target/linux/patches/6.1.82/rockchip-pcie-timeout.patch
@@ -0,0 +1,16 @@
+diff -Nur linux-6.0.11.orig/drivers/pci/controller/pcie-rockchip-host.c linux-6.0.11/drivers/pci/controller/pcie-rockchip-host.c
+--- linux-6.0.11.orig/drivers/pci/controller/pcie-rockchip-host.c 2022-12-02 17:43:18.000000000 +0100
++++ linux-6.0.11/drivers/pci/controller/pcie-rockchip-host.c 2022-12-24 11:12:25.753213273 +0100
+@@ -327,10 +327,10 @@
+
+ gpiod_set_value_cansleep(rockchip->ep_gpio, 1);
+
+- /* 500ms timeout value should be enough for Gen1/2 training */
++ /* 1000ms timeout value should be enough for Gen1/2 training */
+ err = readl_poll_timeout(rockchip->apb_base + PCIE_CLIENT_BASIC_STATUS1,
+ status, PCIE_LINK_UP(status), 20,
+- 500 * USEC_PER_MSEC);
++ 1000 * USEC_PER_MSEC);
+ if (err) {
+ dev_err(dev, "PCIe link training gen1 timeout!\n");
+ goto err_power_off_phy;
diff --git a/target/linux/patches/6.6.28/armnommu-fix-thread-registers.patch b/target/linux/patches/6.6.28/armnommu-fix-thread-registers.patch
new file mode 100644
index 000000000..8ab2196dc
--- /dev/null
+++ b/target/linux/patches/6.6.28/armnommu-fix-thread-registers.patch
@@ -0,0 +1,57 @@
+From 1410ebe685f13c1699a16bf147ae1332e7fd1983 Mon Sep 17 00:00:00 2001
+From: Greg Ungerer <gerg@kernel.org>
+Date: Thu, 20 Apr 2023 09:52:08 +1000
+Subject: [PATCH] ARM: start_thread: restore registers on ELF load for noMMU
+
+The binfmt_elf-fdpic loader is capable of loading constant displacement
+ELF format binaries (like those compiled -pie) on noMMU systems as well
+as elf-fdpic format binaries. The traditional ELF loader cannot be
+enabled on noMMU systems.
+
+Commit 5e588114329c ("ARM: start_thread(): don't always clear all regs")
+fixed the start_thread() code so that it maintains the required
+elf-fdpic registers through to the new process, but it only does that if
+current has its personality FDPIC_FUNCPTRS bit set. That is true for
+elf-fdpic format binaries but will not be true for non-fdpic ELF
+binaries.
+
+Modify the test of the FDPIC_FUNCPTRS personality bit to also carry out
+the register restore if this is a noMMU system. This is not perfect,
+since it will also preserve these registers on noMMU systems for all
+binary format types (could be flat format for example). That won't break
+anything, but it is potentially leaking some information into the new
+process. But for the noMMU case we need those start time registers set to
+be able to finalize the runtime loading of the -pie style ELF binary
+(carry out its segment and dynamic relocation processing).
+
+Unfortunately the FDPIC_FUNCPTRS flag cannot just be enabled for all
+elf-fdpic loaded binaries. That personality bit is used for other things
+like the controlling the changed behavior for signal handling.
+
+There is no change in behavior for normal ELF loading on MMU systems.
+A -pie style ELF binary built for noMMU systems can be load and run using
+the usual ELF loader on an MMU system (elf-fdpic loader not required in
+this case).
+
+Signed-off-by: Greg Ungerer <gerg@kernel.org>
+---
+ arch/arm/include/asm/processor.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
+index 326864f79d18..5074cc3ae4e1 100644
+--- a/arch/arm/include/asm/processor.h
++++ b/arch/arm/include/asm/processor.h
+@@ -60,7 +60,8 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset,
+ } \
+ memset(regs->uregs, 0, sizeof(regs->uregs)); \
+ if (IS_ENABLED(CONFIG_BINFMT_ELF_FDPIC) && \
+- current->personality & FDPIC_FUNCPTRS) { \
++ ((! IS_ENABLED(CONFIG_MMU)) || \
++ current->personality & FDPIC_FUNCPTRS)) { \
+ regs->ARM_r7 = r7; \
+ regs->ARM_r8 = r8; \
+ regs->ARM_r9 = r9; \
+--
+2.25.1
+
diff --git a/target/linux/patches/6.6.28/armnommu-versatile.patch b/target/linux/patches/6.6.28/armnommu-versatile.patch
new file mode 100644
index 000000000..f8f10f50b
--- /dev/null
+++ b/target/linux/patches/6.6.28/armnommu-versatile.patch
@@ -0,0 +1,101 @@
+From 77c038d93769c92ef54cdbb50388564d1b37987b Mon Sep 17 00:00:00 2001
+From: Greg Ungerer <gerg@kernel.org>
+Date: Fri, 23 Sep 2016 13:37:34 +1000
+Subject: [PATCH] ARM: versatile: support configuring versatile machine for no-MMU
+
+Allow the arm versatile machine to be configured for no-MMU operation.
+
+Older kernels had the ability to build the versatile machine with the MMU
+disabled (!CONFIG_MMU). Recent changes to convert the versatile machine
+to device tree lost this ability. (Although older kernels could be built
+they did not run due to a bug in the IO_ADDRESS() mapping on this machine).
+
+The motivation for this is that the versatile machine is well supported
+in qemu. And this provides an excellent platform for development and
+testing no-MMU support on ARM in general.
+
+This patch adds a versatile platform selection in the upper level arm
+system type menu - where it appeared in older kernel versions - when
+configuring for the no-MMU case. There is no visible change to the way
+versatile is selected for the MMU enabled case.
+
+Signed-off-by: Greg Ungerer <gerg@kernel.org>
+---
+ arch/arm/Kconfig | 13 ++++++++++++-
+ arch/arm/include/asm/mach/map.h | 1 +
+ arch/arm/mach-versatile/Kconfig | 2 +-
+ arch/arm/mach-versatile/versatile.c | 4 ++++
+ 4 files changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/mach-versatile/versatile.c b/arch/arm/mach-versatile/versatile.c
+index 02ba68abe533..835b51bc597b 100644
+--- a/arch/arm/mach-versatile/versatile.c
++++ b/arch/arm/mach-versatile/versatile.c
+@@ -22,7 +22,11 @@
+ #include <asm/mach/map.h>
+
+ /* macro to get at MMIO space when running virtually */
++#ifdef CONFIG_MMU
+ #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000)
++#else
++#define IO_ADDRESS(x) (x)
++#endif
+ #define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n))
+
+ /*
+diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
+index 2b8970d8e5a2..41844ab6aec5 100644
+--- a/arch/arm/include/asm/mach/map.h
++++ b/arch/arm/include/asm/mach/map.h
+@@ -60,6 +60,7 @@ extern int ioremap_page(unsigned long virt, unsigned long phys,
+ #else
+ #define iotable_init(map,num) do { } while (0)
+ #define vm_reserve_area_early(a,s,c) do { } while (0)
++#define debug_ll_io_init() do { } while (0)
+ #endif
+
+ #endif
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index e24a9820e12f..342e1efa583a 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -307,12 +307,23 @@ config MMU
+ Select if you want MMU-based virtualised addressing space
+ support by paged memory management. If unsure, say 'Y'.
+
++choice
++ prompt "ARM system type"
++ depends on !MMU
++ default ARM_SINGLE_ARMV7M
++
+ config ARM_SINGLE_ARMV7M
+- def_bool !MMU
++ bool "ARMv7-M based platforms (Cortex-M0/M3/M4)"
+ select ARM_NVIC
+ select CPU_V7M
+ select NO_IOPORT_MAP
+
++config ARM_SINGLE_ARM926
++ bool "ARM926 based platforms"
++ select CPU_ARM926T
++
++endchoice
++
+ config ARCH_MMAP_RND_BITS_MIN
+ default 8
+
+diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
+index b1519b4dc03a..2f1bf95daeb0 100644
+--- a/arch/arm/mach-versatile/Kconfig
++++ b/arch/arm/mach-versatile/Kconfig
+@@ -1,7 +1,7 @@
+ # SPDX-License-Identifier: GPL-2.0
+ config ARCH_VERSATILE
+ bool "ARM Ltd. Versatile family"
+- depends on ARCH_MULTI_V5
++ depends on ARCH_MULTI_V5 || ARM_SINGLE_ARM926
+ depends on CPU_LITTLE_ENDIAN
+ select ARM_AMBA
+ select ARM_TIMER_SP804
+--
+2.25.1
diff --git a/target/linux/patches/6.6.28/hppa-cross-compile.patch b/target/linux/patches/6.6.28/hppa-cross-compile.patch
new file mode 100644
index 000000000..51c24fff2
--- /dev/null
+++ b/target/linux/patches/6.6.28/hppa-cross-compile.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-6.6.22.orig/arch/parisc/Makefile linux-6.6.22/arch/parisc/Makefile
+--- linux-6.6.22.orig/arch/parisc/Makefile 2024-03-15 19:25:07.000000000 +0100
++++ linux-6.6.22/arch/parisc/Makefile 2024-04-16 03:57:37.515308996 +0200
+@@ -41,7 +41,7 @@
+
+ # Set default 32 bits cross compilers for vdso
+ CC_ARCHES_32 = hppa hppa2.0 hppa1.1
+-CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux
++CC_SUFFIXES = linux linux-gnu unknown-linux-gnu suse-linux openadk-linux-uclibc
+ CROSS32_COMPILE := $(call cc-cross-prefix, \
+ $(foreach a,$(CC_ARCHES_32), \
+ $(foreach s,$(CC_SUFFIXES),$(a)-$(s)-)))
diff --git a/target/linux/patches/6.6.28/macsonic.patch b/target/linux/patches/6.6.28/macsonic.patch
new file mode 100644
index 000000000..51e76113b
--- /dev/null
+++ b/target/linux/patches/6.6.28/macsonic.patch
@@ -0,0 +1,11 @@
+diff -Nur linux-6.6.22.orig/drivers/net/ethernet/natsemi/Kconfig linux-6.6.22/drivers/net/ethernet/natsemi/Kconfig
+--- linux-6.6.22.orig/drivers/net/ethernet/natsemi/Kconfig 2024-03-15 19:25:07.000000000 +0100
++++ linux-6.6.22/drivers/net/ethernet/natsemi/Kconfig 2024-04-16 10:16:50.352443898 +0200
+@@ -19,6 +19,7 @@
+ config MACSONIC
+ tristate "Macintosh SONIC based ethernet (onboard, NuBus, LC, CS)"
+ depends on MAC
++ select BITREVERSE
+ help
+ Support for NatSemi SONIC based Ethernet devices. This includes
+ the onboard Ethernet in many Quadras as well as some LC-PDS,
diff --git a/target/linux/patches/6.6.28/riscv-flat.patch b/target/linux/patches/6.6.28/riscv-flat.patch
new file mode 100644
index 000000000..6d26c638f
--- /dev/null
+++ b/target/linux/patches/6.6.28/riscv-flat.patch
@@ -0,0 +1,19 @@
+diff -Nur linux-6.6.22.orig/fs/binfmt_flat.c linux-6.6.22/fs/binfmt_flat.c
+--- linux-6.6.22.orig/fs/binfmt_flat.c 2024-03-15 19:25:07.000000000 +0100
++++ linux-6.6.22/fs/binfmt_flat.c 2024-04-17 15:41:29.292461687 +0200
+@@ -879,6 +879,7 @@
+ if (res < 0)
+ return res;
+
++#ifndef CONFIG_BINFMT_FLAT_NO_DATA_START_OFFSET
+ /* Update data segment pointers for all libraries */
+ for (i = 0; i < MAX_SHARED_LIBS; i++) {
+ if (!libinfo.lib_list[i].loaded)
+@@ -893,6 +894,7 @@
+ return -EFAULT;
+ }
+ }
++#endif
+
+ set_binfmt(&flat_format);
+
diff --git a/target/linux/patches/b6bfece0d9ddf21e1526fead81340ef02f98f6ad/defconfig.patch b/target/linux/patches/b6bfece0d9ddf21e1526fead81340ef02f98f6ad/defconfig.patch
new file mode 100644
index 000000000..77025e98c
--- /dev/null
+++ b/target/linux/patches/b6bfece0d9ddf21e1526fead81340ef02f98f6ad/defconfig.patch
@@ -0,0 +1,18 @@
+diff -Nur linux-b6bfece0d9ddf21e1526fead81340ef02f98f6ad.orig/arch/arm/configs/bcm2711_defconfig linux-b6bfece0d9ddf21e1526fead81340ef02f98f6ad/arch/arm/configs/bcm2711_defconfig
+--- linux-b6bfece0d9ddf21e1526fead81340ef02f98f6ad.orig/arch/arm/configs/bcm2711_defconfig 2023-10-18 16:11:33.000000000 +0200
++++ linux-b6bfece0d9ddf21e1526fead81340ef02f98f6ad/arch/arm/configs/bcm2711_defconfig 2023-10-21 10:11:00.896240933 +0200
+@@ -1,5 +1,3 @@
+-CONFIG_LOCALVERSION="-v7l"
+-# CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+ CONFIG_GENERIC_IRQ_DEBUGFS=y
+@@ -62,7 +60,7 @@
+ CONFIG_MODULE_UNLOAD=y
+ CONFIG_MODVERSIONS=y
+ CONFIG_MODULE_SRCVERSION_ALL=y
+-CONFIG_MODULE_COMPRESS_XZ=y
++CONFIG_MODULE_COMPRESS_NONE=y
+ CONFIG_BLK_DEV_THROTTLING=y
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_MAC_PARTITION=y
diff --git a/target/linux/patches/d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/defconfig.patch b/target/linux/patches/d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/defconfig.patch
new file mode 100644
index 000000000..581c80b5d
--- /dev/null
+++ b/target/linux/patches/d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/defconfig.patch
@@ -0,0 +1,54 @@
+diff -Nur linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm/configs/bcm2711_defconfig linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm/configs/bcm2711_defconfig
+--- linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm/configs/bcm2711_defconfig 2024-01-04 18:44:08.000000000 +0100
++++ linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm/configs/bcm2711_defconfig 2024-02-23 03:20:17.274662945 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v7l"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+@@ -62,7 +62,7 @@
+ CONFIG_MODULE_UNLOAD=y
+ CONFIG_MODVERSIONS=y
+ CONFIG_MODULE_SRCVERSION_ALL=y
+-CONFIG_MODULE_COMPRESS_XZ=y
++CONFIG_MODULE_COMPRESS_NONE=y
+ CONFIG_BLK_DEV_THROTTLING=y
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_MAC_PARTITION=y
+diff -Nur linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2711_defconfig linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2711_defconfig
+--- linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2711_defconfig 2024-01-04 18:44:09.000000000 +0100
++++ linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2711_defconfig 2024-02-23 03:18:12.395539339 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v8"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+@@ -69,7 +69,7 @@
+ CONFIG_MODULE_UNLOAD=y
+ CONFIG_MODVERSIONS=y
+ CONFIG_MODULE_SRCVERSION_ALL=y
+-CONFIG_MODULE_COMPRESS_XZ=y
++CONFIG_MODULE_COMPRESS_NONE=y
+ CONFIG_BLK_DEV_THROTTLING=y
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_MAC_PARTITION=y
+diff -Nur linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2712_defconfig linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2712_defconfig
+--- linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2712_defconfig 2024-01-04 18:44:09.000000000 +0100
++++ linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2712_defconfig 2024-02-23 03:18:12.395539339 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v8-16k"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+@@ -72,7 +72,7 @@
+ CONFIG_MODULE_UNLOAD=y
+ CONFIG_MODVERSIONS=y
+ CONFIG_MODULE_SRCVERSION_ALL=y
+-CONFIG_MODULE_COMPRESS_XZ=y
++CONFIG_MODULE_COMPRESS_NONE=y
+ CONFIG_BLK_DEV_THROTTLING=y
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_MAC_PARTITION=y
diff --git a/target/linux/patches/eb06d31da3e2025a2e578d8de9843e24b68137a6/defconfig.patch b/target/linux/patches/eb06d31da3e2025a2e578d8de9843e24b68137a6/defconfig.patch
new file mode 100644
index 000000000..17e1d1811
--- /dev/null
+++ b/target/linux/patches/eb06d31da3e2025a2e578d8de9843e24b68137a6/defconfig.patch
@@ -0,0 +1,36 @@
+diff -Nur linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2711_defconfig linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2711_defconfig
+--- linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2711_defconfig 2024-01-04 18:44:09.000000000 +0100
++++ linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2711_defconfig 2024-01-06 09:20:53.075282937 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v8"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+@@ -69,7 +69,7 @@
+ CONFIG_MODULE_UNLOAD=y
+ CONFIG_MODVERSIONS=y
+ CONFIG_MODULE_SRCVERSION_ALL=y
+-CONFIG_MODULE_COMPRESS_XZ=y
++CONFIG_MODULE_COMPRESS_NONE=y
+ CONFIG_BLK_DEV_THROTTLING=y
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_MAC_PARTITION=y
+diff -Nur linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2712_defconfig linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2712_defconfig
+--- linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f.orig/arch/arm64/configs/bcm2712_defconfig 2024-01-04 18:44:09.000000000 +0100
++++ linux-d5066442e39dd9bf4ba6431ffb3f99e3d5085d3f/arch/arm64/configs/bcm2712_defconfig 2024-01-06 09:20:34.328388717 +0100
+@@ -1,4 +1,4 @@
+-CONFIG_LOCALVERSION="-v8-16k"
++CONFIG_LOCALVERSION=""
+ # CONFIG_LOCALVERSION_AUTO is not set
+ CONFIG_SYSVIPC=y
+ CONFIG_POSIX_MQUEUE=y
+@@ -72,7 +72,7 @@
+ CONFIG_MODULE_UNLOAD=y
+ CONFIG_MODVERSIONS=y
+ CONFIG_MODULE_SRCVERSION_ALL=y
+-CONFIG_MODULE_COMPRESS_XZ=y
++CONFIG_MODULE_COMPRESS_NONE=y
+ CONFIG_BLK_DEV_THROTTLING=y
+ CONFIG_PARTITION_ADVANCED=y
+ CONFIG_MAC_PARTITION=y
diff --git a/target/linux/patches/stable-4.4-rockpi4/serial-baudrate.patch b/target/linux/patches/stable-4.4-rockpi4/serial-baudrate.patch
new file mode 100644
index 000000000..ba03e2a99
--- /dev/null
+++ b/target/linux/patches/stable-4.4-rockpi4/serial-baudrate.patch
@@ -0,0 +1,23 @@
+diff -Nur linux-stable-4.4-rockpi4.orig/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi linux-stable-4.4-rockpi4/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
+--- linux-stable-4.4-rockpi4.orig/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 2022-12-09 18:12:00.000000000 +0100
++++ linux-stable-4.4-rockpi4/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 2022-12-09 22:12:59.489123950 +0100
+@@ -58,7 +58,7 @@
+ rockchip,signal-irq = <182>;
+ rockchip,wake-irq = <0>;
+ rockchip,irq-mode-enable = <1>; /* If enable uart uses irq instead of fiq */
+- rockchip,baudrate = <1500000>; /* Only 115200 and 1500000 */
++ rockchip,baudrate = <115200>; /* Only 115200 and 1500000 */
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart2c_xfer>;
+ };
+diff -Nur linux-stable-4.4-rockpi4.orig/scripts/dtc/dtc-lexer.lex.c_shipped linux-stable-4.4-rockpi4/scripts/dtc/dtc-lexer.lex.c_shipped
+--- linux-stable-4.4-rockpi4.orig/scripts/dtc/dtc-lexer.lex.c_shipped 2022-12-09 18:12:07.000000000 +0100
++++ linux-stable-4.4-rockpi4/scripts/dtc/dtc-lexer.lex.c_shipped 2022-12-09 22:11:26.298627242 +0100
+@@ -631,7 +631,6 @@
+ #include "srcpos.h"
+ #include "dtc-parser.tab.h"
+
+-YYLTYPE yylloc;
+ extern bool treesource_error;
+
+ /* CAUTION: this will stop working if we ever use yyless() or yyunput() */
diff --git a/target/lm32/Makefile b/target/lm32/Makefile
index d79009445..6d6af4b0b 100644
--- a/target/lm32/Makefile
+++ b/target/lm32/Makefile
@@ -8,7 +8,7 @@ include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/arch/lm32/boot/simpleImage.milkymist_one
QEMU_ARGS:=-M milkymist
-QEMU_ARGS+=-nographic -nodefaults -monitor pty -serial stdio -append "console=ttyS0"
+QEMU_ARGS+=-nographic -monitor pty -serial stdio -append "console=ttyS0 lpj=250"
#
# target helper text
ifeq ($(ADK_TARGET_FS),archive)
diff --git a/target/lm32/kernel/qemu-lm32 b/target/lm32/kernel/qemu-lm32
index b73bee5ff..b82eb9069 100644
--- a/target/lm32/kernel/qemu-lm32
+++ b/target/lm32/kernel/qemu-lm32
@@ -1,67 +1,5 @@
-CONFIG_BUG=y
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_FHANDLE is not set
-CONFIG_LOG_BUF_SHIFT=12
+CONFIG_LM32=y
CONFIG_BLK_DEV_INITRD=y
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_XZ is not set
-# CONFIG_RD_LZO is not set
-# CONFIG_ELF_CORE is not set
-# CONFIG_BASE_FULL is not set
-# CONFIG_EPOLL is not set
-# CONFIG_SIGNALFD is not set
-# CONFIG_EVENTFD is not set
-CONFIG_EMBEDDED=y
-CONFIG_SLAB=y
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_LBDAF is not set
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_IOSCHED_DEADLINE is not set
-# CONFIG_IOSCHED_CFQ is not set
-CONFIG_HZ_100=y
-# CONFIG_BINFMT_ELF_FDPIC is not set
-CONFIG_BINFMT_FLAT=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_NET_KEY=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_IPV6 is not set
-# CONFIG_WIRELESS is not set
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=1
-CONFIG_BLK_DEV_RAM_SIZE=8192
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_CONSOLE_TRANSLATIONS is not set
-# CONFIG_DEVKMEM is not set
-CONFIG_SERIAL_MILKYMIST=y
-CONFIG_SERIAL_MILKYMIST_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-# CONFIG_HWMON is not set
-# CONFIG_USB_SUPPORT is not set
-CONFIG_EXT2_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_CRAMFS=y
-CONFIG_ROMFS_FS=y
-# CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_DEBUG_INFO=y
-# CONFIG_SCHED_DEBUG is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_CRYPTO_ECHAINIV=y
-# CONFIG_CRYPTO_HW is not set
-CONFIG_CRC_CCITT=y
+CONFIG_BUG=y
+CONFIG_BINFMT_MISC=y
+CONFIG_RD_GZIP=y
diff --git a/target/lm32/uclibc-ng-nommu.config b/target/lm32/uclibc-ng-nommu.config
new file mode 100644
index 000000000..dbdf5613c
--- /dev/null
+++ b/target/lm32/uclibc-ng-nommu.config
@@ -0,0 +1,212 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.44 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+TARGET_lm32=y
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="lm32"
+FORCE_OPTIONS_FOR_ARCH=y
+TARGET_SUBARCH=""
+UCLIBC_FORMAT_FLAT=y
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_HAS_DEPRECATED_SYSCALLS=y
+ARCH_BIG_ENDIAN=y
+
+#
+# Using Big Endian
+#
+ARCH_HAS_NO_MMU=y
+
+#
+# Target CPU lacks a memory management unit (MMU)
+#
+UCLIBC_HAS_FLOATS=y
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_SOFT_FLOAT=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+# UCLIBC_HAS_LONG_DOUBLE_MATH is not set
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+HAVE_NO_PIC=y
+ARCH_HAS_NO_SHARED=y
+ARCH_HAS_NO_LDSO=y
+HAS_NO_THREADS=y
+# UCLIBC_HAS_LINUXTHREADS is not set
+UCLIBC_HAS_LFS=y
+# MALLOC is not set
+MALLOC_SIMPLE=y
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+# UCLIBC_HAS_NETWORK_SUPPORT is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+# UCLIBC_HAS_WCHAR is not set
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set
+# UCLIBC_HAS_GLIBC_CUSTOM_PRINTF is not set
+# USE_OLD_VFPRINTF is not set
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+# UCLIBC_HAS_ARGP is not set
+
+#
+# Big and Tall
+#
+# UCLIBC_HAS_REGEX is not set
+# UCLIBC_HAS_FNMATCH is not set
+# UCLIBC_HAS_NFTW is not set
+# UCLIBC_HAS_FTW is not set
+# UCLIBC_HAS_FTS is not set
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+# UCLIBC_BUILD_NOEXECSTACK is not set
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/lm32/uclibc-ng.config b/target/lm32/uclibc-ng.config
deleted file mode 100644
index 04fafd377..000000000
--- a/target/lm32/uclibc-ng.config
+++ /dev/null
@@ -1,221 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
-#
-# TARGET_aarch64 is not set
-# TARGET_alpha is not set
-# TARGET_arc is not set
-# TARGET_arm is not set
-# TARGET_avr32 is not set
-# TARGET_bfin is not set
-# TARGET_c6x is not set
-# TARGET_cris is not set
-# TARGET_frv is not set
-# TARGET_h8300 is not set
-# TARGET_hppa is not set
-# TARGET_i386 is not set
-# TARGET_ia64 is not set
-TARGET_lm32=y
-# TARGET_m68k is not set
-# TARGET_metag is not set
-# TARGET_microblaze is not set
-# TARGET_mips is not set
-# TARGET_nds32 is not set
-# TARGET_nios2 is not set
-# TARGET_or1k is not set
-# TARGET_powerpc is not set
-# TARGET_sh is not set
-# TARGET_sparc is not set
-# TARGET_sparc64 is not set
-# TARGET_x86_64 is not set
-# TARGET_xtensa is not set
-
-#
-# Target Architecture Features and Options
-#
-TARGET_ARCH="lm32"
-FORCE_OPTIONS_FOR_ARCH=y
-TARGET_SUBARCH=""
-UCLIBC_FORMAT_FLAT=y
-# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
-# UCLIBC_FORMAT_SHARED_FLAT is not set
-ARCH_HAS_DEPRECATED_SYSCALLS=y
-ARCH_BIG_ENDIAN=y
-
-#
-# Using Big Endian
-#
-ARCH_HAS_NO_MMU=y
-
-#
-# Target CPU lacks a memory management unit (MMU)
-#
-UCLIBC_HAS_FLOATS=y
-UCLIBC_HAS_FPU=y
-DO_C99_MATH=y
-DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
-UCLIBC_HAS_LONG_DOUBLE_MATH=y
-KERNEL_HEADERS=""
-UCLIBC_UCLINUX_BROKEN_MUNMAP=y
-HAVE_DOT_CONFIG=y
-
-#
-# General Library Settings
-#
-HAVE_NO_PIC=y
-ARCH_HAS_NO_SHARED=y
-ARCH_HAS_NO_LDSO=y
-UCLIBC_CTOR_DTOR=y
-# HAS_NO_THREADS is not set
-UCLIBC_HAS_LINUXTHREADS=y
-UCLIBC_HAS_THREADS=y
-PTHREADS_DEBUG_SUPPORT=y
-UCLIBC_HAS_SYSLOG=y
-UCLIBC_HAS_LFS=y
-MALLOC=y
-# MALLOC_SIMPLE is not set
-UCLIBC_DYNAMIC_ATEXIT=y
-UCLIBC_HAS_UTMPX=y
-UCLIBC_HAS_UTMP=y
-UCLIBC_SUSV2_LEGACY=y
-UCLIBC_SUSV3_LEGACY=y
-# UCLIBC_SUSV3_LEGACY_MACROS is not set
-UCLIBC_SUSV4_LEGACY=y
-# UCLIBC_STRICT_HEADERS is not set
-# UCLIBC_HAS_STUBS is not set
-UCLIBC_HAS_SHADOW=y
-UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
-UCLIBC_HAS___PROGNAME=y
-UCLIBC_HAS_PTY=y
-ASSUME_DEVPTS=y
-UNIX98PTY_ONLY=y
-UCLIBC_HAS_GETPT=y
-UCLIBC_HAS_LIBUTIL=y
-UCLIBC_HAS_TM_EXTENSIONS=y
-UCLIBC_HAS_TZ_CACHING=y
-UCLIBC_HAS_TZ_FILE=y
-UCLIBC_HAS_TZ_FILE_READ_MANY=y
-UCLIBC_TZ_FILE_PATH="/etc/TZ"
-UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
-
-#
-# Advanced Library Settings
-#
-UCLIBC_PWD_BUFFER_SIZE=256
-UCLIBC_GRP_BUFFER_SIZE=256
-
-#
-# Support various families of functions
-#
-UCLIBC_LINUX_SPECIFIC=y
-UCLIBC_HAS_GNU_ERROR=y
-UCLIBC_BSD_SPECIFIC=y
-UCLIBC_HAS_BSD_ERR=y
-UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
-# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
-# UCLIBC_NTP_LEGACY is not set
-UCLIBC_SV4_DEPRECATED=y
-UCLIBC_HAS_REALTIME=y
-UCLIBC_HAS_ADVANCED_REALTIME=y
-UCLIBC_HAS_EPOLL=y
-UCLIBC_HAS_XATTR=y
-# UCLIBC_HAS_PROFILING is not set
-UCLIBC_HAS_CRYPT_IMPL=y
-UCLIBC_HAS_SHA256_CRYPT_IMPL=y
-UCLIBC_HAS_SHA512_CRYPT_IMPL=y
-UCLIBC_HAS_CRYPT=y
-UCLIBC_HAS_NETWORK_SUPPORT=y
-UCLIBC_HAS_SOCKET=y
-UCLIBC_HAS_IPV4=y
-UCLIBC_HAS_IPV6=y
-UCLIBC_USE_NETLINK=y
-UCLIBC_SUPPORT_AI_ADDRCONFIG=y
-UCLIBC_HAS_BSD_RES_CLOSE=y
-UCLIBC_HAS_COMPAT_RES_STATE=y
-# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
-UCLIBC_HAS_RESOLVER_SUPPORT=y
-
-#
-# String and Stdio Support
-#
-UCLIBC_HAS_STRING_GENERIC_OPT=y
-UCLIBC_HAS_STRING_ARCH_OPT=y
-UCLIBC_HAS_CTYPE_TABLES=y
-UCLIBC_HAS_CTYPE_SIGNED=y
-# UCLIBC_HAS_CTYPE_UNSAFE is not set
-UCLIBC_HAS_CTYPE_CHECKED=y
-# UCLIBC_HAS_CTYPE_ENFORCED is not set
-UCLIBC_HAS_WCHAR=y
-# UCLIBC_HAS_LIBICONV is not set
-# UCLIBC_HAS_LIBINTL is not set
-# UCLIBC_HAS_LOCALE is not set
-UCLIBC_HAS_HEXADECIMAL_FLOATS=y
-UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
-UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
-# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
-# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
-UCLIBC_HAS_STDIO_BUFSIZ_4096=y
-# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
-UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
-# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
-# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
-UCLIBC_HAS_STDIO_GETC_MACRO=y
-UCLIBC_HAS_STDIO_PUTC_MACRO=y
-UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
-# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
-UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
-UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
-UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
-UCLIBC_HAS_PRINTF_M_SPEC=y
-UCLIBC_HAS_ERRNO_MESSAGES=y
-# UCLIBC_HAS_SYS_ERRLIST is not set
-UCLIBC_HAS_SIGNUM_MESSAGES=y
-# UCLIBC_HAS_SYS_SIGLIST is not set
-UCLIBC_HAS_GNU_GETOPT=y
-UCLIBC_HAS_GETOPT_LONG=y
-UCLIBC_HAS_GNU_GETSUBOPT=y
-UCLIBC_HAS_ARGP=y
-
-#
-# Big and Tall
-#
-UCLIBC_HAS_REGEX=y
-UCLIBC_HAS_FNMATCH=y
-UCLIBC_HAS_WORDEXP=y
-UCLIBC_HAS_NFTW=y
-UCLIBC_HAS_FTW=y
-UCLIBC_HAS_FTS=y
-UCLIBC_HAS_GLOB=y
-UCLIBC_HAS_GNU_GLOB=y
-
-#
-# Library Installation Options
-#
-RUNTIME_PREFIX="/"
-DEVEL_PREFIX="/usr/"
-MULTILIB_DIR="lib"
-HARDWIRED_ABSPATH=y
-
-#
-# Security options
-#
-# UCLIBC_HAS_ARC4RANDOM is not set
-# UCLIBC_HAS_SSP is not set
-UCLIBC_BUILD_NOEXECSTACK=y
-
-#
-# Development/debugging options
-#
-CROSS_COMPILER_PREFIX=""
-UCLIBC_EXTRA_CFLAGS=""
-# DODEBUG is not set
-# DODEBUG_PT is not set
-# DOSTRIP is not set
-# DOASSERTS is not set
-# UCLIBC_MALLOC_DEBUGGING is not set
-WARNINGS="-Wall"
-# EXTRA_WARNINGS is not set
diff --git a/target/loongarch/Makefile b/target/loongarch/Makefile
new file mode 100644
index 000000000..c238b5e62
--- /dev/null
+++ b/target/loongarch/Makefile
@@ -0,0 +1,62 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+include $(ADK_TOPDIR)/mk/kernel-build.mk
+include $(ADK_TOPDIR)/mk/image.mk
+
+KERNEL:=$(LINUX_DIR)/arch/loongarch/boot/vmlinux.efi
+
+QEMU_ARGS:=-M virt -bios target/loongarch/QEMU_EFI.fd -append "console=ttyS0,115200"
+QEMU_ARGS+=-nographic
+#
+# target helper text
+ifeq ($(ADK_TARGET_FS),archive)
+targethelp:
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "Use following command to create a QEMU Image:"
+ @echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+ @echo "Start qemu with following options:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+targethelp:
+ @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+endif
+endif
+
+kernel-strip:
+
+kernel-install: kernel-strip
+ @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
+
+# filesystem specific targets
+ifeq ($(ADK_TARGET_FS),initramfs)
+imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+imageinstall: createinitramfs targethelp
+endif
diff --git a/target/loongarch/QEMU_EFI.fd b/target/loongarch/QEMU_EFI.fd
new file mode 100644
index 000000000..f1fc9dc4c
--- /dev/null
+++ b/target/loongarch/QEMU_EFI.fd
Binary files differ
diff --git a/target/loongarch/kernel/qemu-loongarch b/target/loongarch/kernel/qemu-loongarch
new file mode 100644
index 000000000..579c3f26e
--- /dev/null
+++ b/target/loongarch/kernel/qemu-loongarch
@@ -0,0 +1,10 @@
+CONFIG_LOONGARCH=y
+CONFIG_64BIT=y
+CONFIG_MACH_LOONGSON64=y
+CONFIG_ACPI=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
+CONFIG_SMP=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
diff --git a/target/loongarch/systems/qemu-loongarch b/target/loongarch/systems/qemu-loongarch
new file mode 100644
index 000000000..3b5d940de
--- /dev/null
+++ b/target/loongarch/systems/qemu-loongarch
@@ -0,0 +1,8 @@
+config ADK_TARGET_SYSTEM_QEMU_LOONGARCH
+ bool "Qemu Emulator"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_CPU_LOONGARCH
+ select ADK_TARGET_KERNEL_VMLINUX_EFI
+ help
+ Support for Qemu Emulator Loongarch architecture.
+
diff --git a/target/m68k/Makefile b/target/m68k/Makefile
index 0ffd9b8a2..0b742ed19 100644
--- a/target/m68k/Makefile
+++ b/target/m68k/Makefile
@@ -8,6 +8,12 @@ include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/vmlinux
QEMU_ARGS:=${ADK_QEMU_ARGS}
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_M68K_VIRT),y)
+QEMU_ARGS+=-M virt -m 512M -netdev user,id=eth0 -device virtio-net-device,netdev=eth0
+ifeq ($(ADK_TARGET_FS),archive)
+QEMU_ARGS+=-append "rootwait root=/dev/vda1 ro" -drive file=qemu-m68k.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0
+endif
+endif
ifeq ($(ADK_TARGET_SYSTEM_QEMU_M68K_Q800),y)
QEMU_ARGS+=-M q800
endif
@@ -24,9 +30,13 @@ ifeq ($(ADK_TARGET_QEMU),y)
@echo "Use following command to create a QEMU Image:"
@echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSUSERTARBALL)"
@echo "Start qemu with following options:"
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_M68K_VIRT),y)
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+else
@echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
endif
endif
+endif
ifeq ($(ADK_TARGET_FS),initramfs)
targethelp:
@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
diff --git a/target/m68k/kernel/aranym-m68k b/target/m68k/kernel/aranym-m68k
index fb084e4b9..9a4db207a 100644
--- a/target/m68k/kernel/aranym-m68k
+++ b/target/m68k/kernel/aranym-m68k
@@ -6,3 +6,4 @@ CONFIG_FPU=y
CONFIG_ATARI=y
CONFIG_NATFEAT=y
CONFIG_NFETH=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/m68k/kernel/qemu-m68k-mcf5208 b/target/m68k/kernel/qemu-m68k-mcf5208
index 42497f9fa..9cfa4b601 100644
--- a/target/m68k/kernel/qemu-m68k-mcf5208
+++ b/target/m68k/kernel/qemu-m68k-mcf5208
@@ -16,3 +16,4 @@ CONFIG_RAMKERNEL=y
CONFIG_BOOTPARAM=y
CONFIG_BOOTPARAM_STRING="console=ttyS0,115200"
CONFIG_CRC32=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/m68k/kernel/qemu-m68k-q800 b/target/m68k/kernel/qemu-m68k-q800
index 05324c42b..69cac7e51 100644
--- a/target/m68k/kernel/qemu-m68k-q800
+++ b/target/m68k/kernel/qemu-m68k-q800
@@ -7,3 +7,4 @@ CONFIG_ADB=y
CONFIG_ADB_MACII=y
CONFIG_BOOTPARAM=y
CONFIG_BOOTPARAM_STRING=""
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/m68k/kernel/qemu-m68k-virt b/target/m68k/kernel/qemu-m68k-virt
new file mode 100644
index 000000000..47e9200d4
--- /dev/null
+++ b/target/m68k/kernel/qemu-m68k-virt
@@ -0,0 +1,3 @@
+CONFIG_M68K=y
+CONFIG_VIRT=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/m68k/systems/qemu-m68k-mcf5208 b/target/m68k/systems/qemu-m68k-mcf5208
index 921300bbc..8adcbc3a7 100644
--- a/target/m68k/systems/qemu-m68k-mcf5208
+++ b/target/m68k/systems/qemu-m68k-mcf5208
@@ -2,8 +2,7 @@ config ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
bool "Qemu M68K (Coldfire MCF5208)"
select ADK_TARGET_QEMU
select ADK_TARGET_CPU_CF_5208
- select ADK_TARGET_BINFMT_FLAT
- select ADK_TARGET_UCLINUX
+ select ADK_TARGET_UCLINUX if ADK_TARGET_BINFMT_FLAT
select ADK_TARGET_KERNEL_ZIMAGE
select ADK_TARGET_KERNEL_WITH_COMPRESSION
help
diff --git a/target/m68k/systems/qemu-m68k-virt b/target/m68k/systems/qemu-m68k-virt
new file mode 100644
index 000000000..55493b9f1
--- /dev/null
+++ b/target/m68k/systems/qemu-m68k-virt
@@ -0,0 +1,10 @@
+config ADK_TARGET_SYSTEM_QEMU_M68K_VIRT
+ bool "Qemu M68K (virt)"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_WITH_MMU
+ select ADK_TARGET_CPU_M68K_68040
+ select ADK_TARGET_KERNEL_ZIMAGE
+ select ADK_TARGET_KERNEL_WITH_COMPRESSION
+ help
+ Support for Qemu Emulator with M68K architecture (virt).
+
diff --git a/target/m68k/uclibc-ng-nommu.config b/target/m68k/uclibc-ng-nommu.config
new file mode 100644
index 000000000..ce2bcc269
--- /dev/null
+++ b/target/m68k/uclibc-ng-nommu.config
@@ -0,0 +1,229 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.45 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+TARGET_m68k=y
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="m68k"
+FORCE_OPTIONS_FOR_ARCH=y
+TARGET_SUBARCH=""
+UCLIBC_FORMAT_ELF=y
+# UCLIBC_FORMAT_FLAT is not set
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_HAS_DEPRECATED_SYSCALLS=y
+ARCH_BIG_ENDIAN=y
+
+#
+# Using Big Endian
+#
+ARCH_HAS_MMU=y
+# ARCH_USE_MMU is not set
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+DOPIC=y
+STATIC_PIE=y
+ARCH_HAS_NO_SHARED=y
+HAVE_LDSO=y
+UCLIBC_CTOR_DTOR=y
+HAS_NO_THREADS=y
+# UCLIBC_HAS_LINUXTHREADS is not set
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/m68k/uclibc-ng.config b/target/m68k/uclibc-ng.config
index 15e820611..7c8422128 100644
--- a/target/m68k/uclibc-ng.config
+++ b/target/m68k/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.27 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -16,6 +16,7 @@
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
TARGET_m68k=y
# TARGET_metag is not set
@@ -25,11 +26,16 @@ TARGET_m68k=y
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -61,22 +67,23 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
LDSO_CACHE_SUPPORT=y
-# LDSO_PRELOAD_ENV_SUPPORT is not set
+LDSO_PRELOAD_ENV_SUPPORT=y
# LDSO_PRELOAD_FILE_SUPPORT is not set
LDSO_BASE_FILENAME="ld.so"
# LDSO_STANDALONE_SUPPORT is not set
# LDSO_PRELINK_SUPPORT is not set
-# UCLIBC_STATIC_LDCONFIG is not set
+UCLIBC_STATIC_LDCONFIG=y
LDSO_RUNPATH=y
-LDSO_RUNPATH_OF_EXECUTABLE=y
+# LDSO_RUNPATH_OF_EXECUTABLE is not set
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -85,11 +92,12 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
-# MALLOC is not set
+MALLOC=y
# MALLOC_SIMPLE is not set
-MALLOC_STANDARD=y
+# MALLOC_STANDARD is not set
UCLIBC_DYNAMIC_ATEXIT=y
UCLIBC_HAS_UTMPX=y
UCLIBC_HAS_UTMP=y
@@ -113,6 +121,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -128,6 +137,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -150,6 +160,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -219,9 +233,8 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
-# UCLIBC_BUILD_RELRO is not set
+UCLIBC_BUILD_RELRO=y
# UCLIBC_BUILD_NOW is not set
UCLIBC_BUILD_NOEXECSTACK=y
diff --git a/target/microblaze/kernel/qemu-microblaze-ml605 b/target/microblaze/kernel/qemu-microblaze-ml605
index 932843c13..9749c22fa 100644
--- a/target/microblaze/kernel/qemu-microblaze-ml605
+++ b/target/microblaze/kernel/qemu-microblaze-ml605
@@ -13,3 +13,4 @@ CONFIG_XILINX_MICROBLAZE0_HW_VER="8.10.a"
CONFIG_PCI_XILINX=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE_FORCE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/microblaze/kernel/qemu-microblaze-s3adsp1800 b/target/microblaze/kernel/qemu-microblaze-s3adsp1800
index cf8c3a91c..91a7dc577 100644
--- a/target/microblaze/kernel/qemu-microblaze-s3adsp1800
+++ b/target/microblaze/kernel/qemu-microblaze-s3adsp1800
@@ -13,3 +13,4 @@ CONFIG_XILINX_MICROBLAZE0_HW_VER="7.10.d"
CONFIG_PCI_XILINX=y
CONFIG_CMDLINE_FORCE=y
CONFIG_CMDLINE_BOOL=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/microblaze/uclibc-ng.config b/target/microblaze/uclibc-ng.config
index 30a782ca3..77848e598 100644
--- a/target/microblaze/uclibc-ng.config
+++ b/target/microblaze/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@ TARGET_microblaze=y
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -51,7 +58,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -60,6 +66,7 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -75,7 +82,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -84,6 +90,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -112,6 +119,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -127,6 +135,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -149,6 +158,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -218,7 +231,6 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/mips/Makefile b/target/mips/Makefile
index 1c35e0b24..db66205bd 100644
--- a/target/mips/Makefile
+++ b/target/mips/Makefile
@@ -38,6 +38,10 @@ ifeq ($(ADK_TARGET_SYSTEM_MIKROTIK_RB532),y)
@echo 'then install kernel and filesystem via:'
@echo 'adkinstall -c -a ${ROOTFSTARBALL}'
endif
+ifeq ($(ADK_TARGET_SYSTEM_IMGTEC_CI20),y)
+ @echo "Use following command to install it on SD card:"
+ @echo "sudo ./scripts/install.sh $(ADK_TARGET_SYSTEM) /dev/sdX $(FW_DIR)/$(ROOTFSTARBALL)"
+endif
endif
ifeq ($(ADK_TARGET_FS),initramfs)
targethelp:
diff --git a/target/mips/kernel/qemu-mips b/target/mips/kernel/qemu-mips
index 94a0a0175..85ad371b6 100644
--- a/target/mips/kernel/qemu-mips
+++ b/target/mips/kernel/qemu-mips
@@ -3,3 +3,4 @@ CONFIG_MIPS_MALTA=y
CONFIG_MIPS_BONITO64=y
CONFIG_MIPS_MSC=y
CONFIG_CMDLINE_BOOL=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/mips/systems/imgtec-ci20 b/target/mips/systems/imgtec-ci20
index 3a91f03f6..82ea79683 100644
--- a/target/mips/systems/imgtec-ci20
+++ b/target/mips/systems/imgtec-ci20
@@ -11,6 +11,7 @@ config ADK_TARGET_SYSTEM_IMGTEC_CI20
select ADK_TARGET_WITH_BLOCK
select ADK_TARGET_KERNEL_WITH_COMPRESSION
select ADK_TARGET_KERNEL_UIMAGE
+ select ADK_PACKAGE_U_BOOT
select ADK_HOST_BUILD_U_BOOT
help
Support for Imagination Creator CI20.
diff --git a/target/mips/uclibc-ng.config b/target/mips/uclibc-ng.config
index 605390055..f40befb9f 100644
--- a/target/mips/uclibc-ng.config
+++ b/target/mips/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@ TARGET_mips=y
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -57,7 +64,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -66,7 +72,9 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
ARCH_HAS_UCONTEXT=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -76,21 +84,22 @@ LDSO_CACHE_SUPPORT=y
LDSO_BASE_FILENAME="ld.so"
# LDSO_STANDALONE_SUPPORT is not set
# LDSO_PRELINK_SUPPORT is not set
+ARCH_VDSO_SUPPORT=y
+# VDSO_SUPPORT is not set
# UCLIBC_STATIC_LDCONFIG is not set
LDSO_RUNPATH=y
LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
-# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
# UCLIBC_HAS_LINUXTHREADS is not set
UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -120,6 +129,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -135,6 +145,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -157,6 +168,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -227,7 +242,6 @@ HARDWIRED_ABSPATH=y
# Security options
#
# UCLIBC_BUILD_PIE is not set
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/mips64/kernel/qemu-mips64 b/target/mips64/kernel/qemu-mips64
index 1c0076b03..4d0fef235 100644
--- a/target/mips64/kernel/qemu-mips64
+++ b/target/mips64/kernel/qemu-mips64
@@ -4,3 +4,4 @@ CONFIG_MIPS32_COMPAT=y
CONFIG_MIPS32_O32=y
CONFIG_MIPS32_N32=y
CONFIG_BINFMT_ELF32=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/nios2/kernel/qemu-nios2 b/target/nios2/kernel/qemu-nios2
index 676c10fb7..19e0ac753 100644
--- a/target/nios2/kernel/qemu-nios2
+++ b/target/nios2/kernel/qemu-nios2
@@ -4,8 +4,11 @@ CONFIG_NIOS2_HW_MUL_SUPPORT=y
CONFIG_NIOS2_HW_DIV_SUPPORT=y
CONFIG_CUSTOM_CACHE_SETTINGS=y
CONFIG_NIOS2_DCACHE_SIZE=0x8000
+CONFIG_NIOS2_DCACHE_LINE_SIZE=0x20
CONFIG_NIOS2_ICACHE_SIZE=0x8000
CONFIG_NIOS2_DTB_SOURCE_BOOL=y
CONFIG_NIOS2_DTB_SOURCE="10m50_devboard.dts"
CONFIG_CMDLINE_BOOL=y
CONFIG_NIOS2_PASS_CMDLINE=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_NIOS2_ALIGNMENT_TRAP=y
diff --git a/target/or1k/Makefile b/target/or1k/Makefile
index 030c4efe6..b9273c6f8 100644
--- a/target/or1k/Makefile
+++ b/target/or1k/Makefile
@@ -7,7 +7,7 @@ include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/vmlinux
OSTRIP:=-R .reginfo -R .notes -R .note -R .comment -R .mdebug -R .note.gnu.build-id
-QEMU_ARGS:=-nographic
+QEMU_ARGS:=-m 256 -nographic
# target helper text
ifeq ($(ADK_TARGET_FS),initramfs)
diff --git a/target/or1k/kernel/qemu-or1k b/target/or1k/kernel/qemu-or1k
index ee4d9d55c..e96067748 100644
--- a/target/or1k/kernel/qemu-or1k
+++ b/target/or1k/kernel/qemu-or1k
@@ -6,3 +6,4 @@ CONFIG_OPENRISC_HAVE_INST_FL1=y
CONFIG_OPENRISC_HAVE_INST_MUL=y
CONFIG_OPENRISC_HAVE_INST_DIV=y
CONFIG_OPENRISC_NO_SPR_SR_DSX=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/or1k/uclibc-ng.config b/target/or1k/uclibc-ng.config
index d4d0cf062..881c73107 100644
--- a/target/or1k/uclibc-ng.config
+++ b/target/or1k/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@
# TARGET_nios2 is not set
TARGET_or1k=y
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -51,7 +58,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -60,6 +66,7 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -75,7 +82,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -84,6 +90,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -112,6 +119,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -127,6 +135,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -149,6 +158,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -218,7 +231,6 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/ppc/kernel/qemu-ppc-bamboo b/target/ppc/kernel/qemu-ppc-bamboo
index b12292b7b..424addb14 100644
--- a/target/ppc/kernel/qemu-ppc-bamboo
+++ b/target/ppc/kernel/qemu-ppc-bamboo
@@ -3,3 +3,4 @@ CONFIG_PPC32=y
CONFIG_44x=y
CONFIG_BAMBOO=y
CONFIG_PRINTK=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/ppc/kernel/qemu-ppc-macppc b/target/ppc/kernel/qemu-ppc-macppc
index b68a484c0..b873a3096 100644
--- a/target/ppc/kernel/qemu-ppc-macppc
+++ b/target/ppc/kernel/qemu-ppc-macppc
@@ -23,3 +23,4 @@ CONFIG_ADB_CUDA=y
CONFIG_INPUT_ADBHID=y
CONFIG_CMDLINE_BOOL=y
CONFIG_PRINTK=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/ppc/kernel/qemu-ppc-mpc8544ds b/target/ppc/kernel/qemu-ppc-mpc8544ds
index 1e51d4b07..515cf400c 100644
--- a/target/ppc/kernel/qemu-ppc-mpc8544ds
+++ b/target/ppc/kernel/qemu-ppc-mpc8544ds
@@ -9,3 +9,4 @@ CONFIG_PHYS_64BIT=y
CONFIG_SPE=y
CONFIG_PPC_UDBG_16550=y
CONFIG_DEFAULT_UIMAGE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/ppc/uclibc-ng.config b/target/ppc/uclibc-ng.config
index 112a4c0c2..d566d7318 100644
--- a/target/ppc/uclibc-ng.config
+++ b/target/ppc/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@
# TARGET_nios2 is not set
# TARGET_or1k is not set
TARGET_powerpc=y
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -54,7 +61,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -63,6 +69,8 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -78,7 +86,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -87,6 +94,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=4194304
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -115,6 +123,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -130,6 +139,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -152,6 +162,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -222,7 +236,6 @@ HARDWIRED_ABSPATH=y
# Security options
#
# UCLIBC_BUILD_PIE is not set
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/riscv32/Makefile b/target/riscv32/Makefile
index 37750d763..3d34f7f09 100644
--- a/target/riscv32/Makefile
+++ b/target/riscv32/Makefile
@@ -6,7 +6,10 @@ include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/arch/riscv/boot/Image
-QEMU_ARGS:=-M virt -m 256 -nographic -device loader,file=$(FW_DIR)/$(TARGET_KERNEL),addr=0x80200000
+QEMU_ARGS:=-M virt -m 512 -nographic
+ifeq ($(ADK_TARGET_WITH_MMU),)
+QEMU_ARGS+=-bios none
+endif
ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0
endif
@@ -45,7 +48,7 @@ targethelp:
@echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
ifeq ($(ADK_TARGET_QEMU),y)
@echo "Start qemu with following command line:"
- @echo 'qemu-system-riscv32 ${QEMU_ARGS} -kernel $(FW_DIR)/fw_jump.elf'
+ @echo 'qemu-system-riscv32 ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
endif
endif
@@ -54,21 +57,13 @@ kernel-strip:
kernel-install: kernel-strip
@cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
-bbl:
- @rm -rf $(BUILD_DIR)/opensbi
- (cd $(BUILD_DIR)/ && git clone https://github.com/riscv/opensbi.git)
- (cd $(BUILD_DIR)/opensbi && PATH='$(HOST_PATH)' \
- CROSS_COMPILE=$(GNU_TARGET_NAME)- \
- PLATFORM=qemu/virt make)
- cp $(BUILD_DIR)/opensbi/build/platform/qemu/virt/firmware/fw_jump.elf $(FW_DIR)
-
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),initramfs)
-imageinstall: kernel-install bbl $(FW_DIR)/$(INITRAMFS) targethelp
+imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfsarchive)
-imageinstall: kernel-install bbl $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfspiggyback)
-imageinstall: createinitramfs bbl targethelp
+imageinstall: createinitramfs targethelp
endif
diff --git a/target/riscv32/kernel/qemu-riscv32 b/target/riscv32/kernel/qemu-riscv32
index ab8ffb263..18c6f367d 100644
--- a/target/riscv32/kernel/qemu-riscv32
+++ b/target/riscv32/kernel/qemu-riscv32
@@ -1,7 +1,6 @@
CONFIG_RISCV=y
-CONFIG_ARCH_RV32I=y
-CONFIG_CMODEL_MEDANY=y
-CONFIG_CPU_RV_GENERIC=y
-CONFIG_RV_SYSRISCV_ATOMIC=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
CONFIG_32BIT=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_ARCH_RV32I=y
+CONFIG_SOC_VIRT=y
+CONFIG_NONPORTABLE=y
diff --git a/target/riscv32/uclibc-ng-nommu.config b/target/riscv32/uclibc-ng-nommu.config
new file mode 100644
index 000000000..f37db1615
--- /dev/null
+++ b/target/riscv32/uclibc-ng-nommu.config
@@ -0,0 +1,230 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.47 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+TARGET_riscv32=y
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="riscv32"
+FORCE_OPTIONS_FOR_ARCH=y
+TARGET_SUBARCH=""
+# UCLIBC_FORMAT_ELF is not set
+UCLIBC_FORMAT_FLAT=y
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_LITTLE_ENDIAN=y
+
+#
+# Using Little Endian
+#
+ARCH_HAS_MMU=y
+# ARCH_USE_MMU is not set
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+# DOPIC is not set
+ARCH_HAS_NO_SHARED=y
+ARCH_HAS_NO_LDSO=y
+UCLIBC_CTOR_DTOR=y
+# HAS_NO_THREADS is not set
+UCLIBC_HAS_LINUXTHREADS=y
+UCLIBC_HAS_THREADS=y
+# PTHREADS_DEBUG_SUPPORT is not set
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/riscv32/uclibc-ng.config b/target/riscv32/uclibc-ng.config
index 520ff6f8e..63047370c 100644
--- a/target/riscv32/uclibc-ng.config
+++ b/target/riscv32/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.32 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -16,6 +16,7 @@
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -25,14 +26,16 @@
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
-TARGET_riscv32=y
# TARGET_riscv64 is not set
+TARGET_riscv32=y
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -63,11 +66,12 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
LDSO_CACHE_SUPPORT=y
-LDSO_PRELOAD_ENV_SUPPORT=y
+# LDSO_PRELOAD_ENV_SUPPORT is not set
# LDSO_PRELOAD_FILE_SUPPORT is not set
LDSO_BASE_FILENAME="ld.so"
# LDSO_STANDALONE_SUPPORT is not set
@@ -81,11 +85,11 @@ LDSO_LD_LIBRARY_PATH=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
-# UCLIBC_HAS_LINUXTHREADS is not set
UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
-# PTHREADS_DEBUG_SUPPORT is not set
+PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -114,6 +118,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -129,6 +134,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -151,6 +157,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -238,4 +248,4 @@ UCLIBC_EXTRA_CFLAGS=""
# UCLIBC_MALLOC_DEBUGGING is not set
# UCLIBC_HAS_BACKTRACE is not set
WARNINGS="-Wall"
-# EXTRA_WARNINGS is not set
+EXTRA_WARNINGS=y
diff --git a/target/riscv64/Makefile b/target/riscv64/Makefile
index c2b50a688..55134d24e 100644
--- a/target/riscv64/Makefile
+++ b/target/riscv64/Makefile
@@ -6,7 +6,11 @@ include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/arch/riscv/boot/Image
-QEMU_ARGS:=-M virt -m 512 -nographic -bios $(FW_DIR)/fw_jump.elf
+QEMU_ARGS:=-M virt -m 512 -nographic
+ifeq ($(ADK_TARGET_WITH_MMU),)
+QEMU_ARGS+=-bios none -cpu rv64,mmu=off
+endif
+
ifeq ($(ADK_TARGET_QEMU_WITH_VIRTIO),y)
QEMU_ARGS+=-netdev user,id=eth0 -device virtio-net-device,netdev=eth0
endif
@@ -47,32 +51,51 @@ ifeq ($(ADK_TARGET_QEMU),y)
@echo "Start qemu with following command line:"
@echo 'qemu-system-riscv64 ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
endif
+ifeq ($(ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT),y)
+ @echo 'sudo python3 scripts/kflash.py -p /dev/ttyUSB0 -b 1500000 -t $(FW_DIR)/$(TARGET_KERNEL)'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),genimage)
+targethelp:
+ @echo "The disk image is: $(FW_DIR)/sdcard.img"
+ @echo "Use following command to install it on SD card:"
+ @echo 'sudo dd if=$(FW_DIR)/sdcard.img of=/dev/sdX bs=2048k'
+endif
+ifeq ($(ADK_TARGET_FS),nfsroot)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
endif
kernel-strip:
+ @cp $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
kernel-install: kernel-strip
+ @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
-boot:
- @rm -rf $(BUILD_DIR)/opensbi
- (cd $(BUILD_DIR)/ && git clone https://github.com/riscv/opensbi.git)
- (cd $(BUILD_DIR)/opensbi && PATH='$(HOST_PATH)' \
- CROSS_COMPILE=$(GNU_TARGET_NAME)- \
- FW_PAYLOAD_PATH=$(KERNEL) \
- PLATFORM=generic make)
- cp $(BUILD_DIR)/opensbi/build/platform/generic/firmware/fw_jump.elf \
- $(FW_DIR)
+dtb-install:
+ ${KERNEL_MAKE} dtbs
+ for x in $(LINUX_DIR)/arch/riscv/boot/dts/*/*.dtb; do \
+ [[ -e "$$x" ]] && cp $(LINUX_DIR)/arch/riscv/boot/dts/*/*.dtb $(FW_DIR); \
+ break; \
+ done
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),archive)
-imageinstall: kernel-install boot $(FW_DIR)/$(ROOTFSTARBALL) targethelp
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSTARBALL) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfs)
-imageinstall: kernel-install boot $(FW_DIR)/$(INITRAMFS) targethelp
+imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfsarchive)
-imageinstall: kernel-install boot $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfspiggyback)
-imageinstall: createinitramfs boot targethelp
+imageinstall: createinitramfs targethelp
+endif
+ifeq ($(ADK_TARGET_FS),genimage)
+imageinstall: dtb-install $(FW_DIR)/$(GENIMAGE) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),nfsroot)
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
endif
diff --git a/target/riscv64/kernel/qemu-riscv64 b/target/riscv64/kernel/qemu-riscv64
index 019e13c19..ea30532ad 100644
--- a/target/riscv64/kernel/qemu-riscv64
+++ b/target/riscv64/kernel/qemu-riscv64
@@ -1,7 +1,6 @@
CONFIG_RISCV=y
-CONFIG_SIFIVE_PLIC=y
-CONFIG_HVC_DRIVER=y
-CONFIG_HVC_RISCV_SBI=y
-CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
+CONFIG_FPU=y
+CONFIG_SOC_VIRT=y
+CONFIG_NONPORTABLE=y
CONFIG_CMDLINE_BOOL=y
-CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/riscv64/kernel/sipeed-maix-bit b/target/riscv64/kernel/sipeed-maix-bit
new file mode 100644
index 000000000..4ed48df2f
--- /dev/null
+++ b/target/riscv64/kernel/sipeed-maix-bit
@@ -0,0 +1,9 @@
+CONFIG_RISCV=y
+CONFIG_SOC_CANAAN=y
+CONFIG_SOC_CANAAN_K210_DTB_BUILTIN=y
+CONFIG_SOC_CANAAN_K210_DTB_SOURCE="sipeed_maix_bit"
+CONFIG_SMP=y
+CONFIG_NR_CPUS=2
+CONFIG_CMDLINE="earlycon console=ttySIF0"
+CONFIG_CMDLINE_FORCE=y
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
diff --git a/target/riscv64/kernel/starfive-visionfive2 b/target/riscv64/kernel/starfive-visionfive2
new file mode 100644
index 000000000..8bc705d87
--- /dev/null
+++ b/target/riscv64/kernel/starfive-visionfive2
@@ -0,0 +1,629 @@
+CONFIG_RISCV=y
+CONFIG_SOC_STARFIVE=y
+CONFIG_ARCH_STARFIVE=y
+CONFIG_FPU=y
+
+CONFIG_RISCV_USE_LINKER_RELAXATION=y
+CONFIG_RISCV_SBI=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_RISCV_DMA_NONCOHERENT=y
+CONFIG_AS_HAS_INSN=y
+CONFIG_AS_HAS_OPTION_ARCH=y
+CONFIG_ARCH_STARFIVE=y
+CONFIG_SOC_STARFIVE=y
+CONFIG_ERRATA_SIFIVE=y
+CONFIG_ERRATA_SIFIVE_CIP_453=y
+CONFIG_ERRATA_SIFIVE_CIP_1200=y
+CONFIG_NONPORTABLE=y
+CONFIG_ARCH_RV64I=y
+CONFIG_CMODEL_MEDANY=y
+CONFIG_MODULE_SECTIONS=y
+CONFIG_SMP=y
+CONFIG_HOTPLUG_CPU=y
+CONFIG_TUNE_GENERIC=y
+CONFIG_RISCV_ALTERNATIVE=y
+CONFIG_RISCV_ISA_C=y
+CONFIG_RISCV_ISA_SVNAPOT=y
+CONFIG_TOOLCHAIN_HAS_V=y
+CONFIG_RISCV_ISA_V=y
+CONFIG_RISCV_ISA_V_DEFAULT_ENABLE=y
+CONFIG_TOOLCHAIN_HAS_ZBB=y
+CONFIG_RISCV_ISA_ZBB=y
+CONFIG_RISCV_ISA_ZICBOM=y
+CONFIG_RISCV_ISA_ZICBOZ=y
+CONFIG_TOOLCHAIN_HAS_ZIHINTPAUSE=y
+CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI=y
+CONFIG_FPU=y
+CONFIG_IRQ_STACKS=y
+CONFIG_RISCV_MISALIGNED=y
+CONFIG_HZ_250=y
+CONFIG_SCHED_HRTICK=y
+CONFIG_ARCH_SUPPORTS_KEXEC=y
+CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y
+CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y
+CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y
+CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI=y
+CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y
+CONFIG_RISCV_ISA_FALLBACK=y
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATE_CALLBACKS=y
+CONFIG_HIBERNATION=y
+CONFIG_HIBERNATION_SNAPSHOT_DEV=y
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+CONFIG_PM=y
+CONFIG_PM_CLK=y
+CONFIG_PM_GENERIC_DOMAINS=y
+CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
+CONFIG_PM_GENERIC_DOMAINS_OF=y
+CONFIG_CPU_PM=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+CONFIG_DT_IDLE_STATES=y
+CONFIG_DT_IDLE_GENPD=y
+CONFIG_RISCV_SBI_CPUIDLE=y
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+CONFIG_CPUFREQ_DT=y
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_ARCH_SUPPORTS_ACPI=y
+CONFIG_HOTPLUG_CORE_SYNC=y
+CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
+CONFIG_GENERIC_ENTRY=y
+CONFIG_JUMP_LABEL=y
+CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_ARCH_WANTS_NO_INSTR=y
+CONFIG_HAVE_ASM_MODVERSIONS=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
+CONFIG_MMU_LAZY_TLB_REFCOUNT=y
+CONFIG_HAVE_ARCH_SECCOMP=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_LTO_NONE=y
+CONFIG_ARCH_SUPPORTS_CFI_CLANG=y
+CONFIG_HAVE_CONTEXT_TRACKING_USER=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOVE_PUD=y
+CONFIG_HAVE_MOVE_PMD=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_HAVE_ARCH_HUGE_VMALLOC=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
+CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
+CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
+CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+CONFIG_VMAP_STACK=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_ARCH_USE_MEMREMAP_PROT=y
+CONFIG_ARCH_HAS_VDSO_DATA=y
+CONFIG_HAVE_PREEMPT_DYNAMIC=y
+CONFIG_HAVE_PREEMPT_DYNAMIC_KEY=y
+CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y
+CONFIG_DYNAMIC_SIGFRAME=y
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+CONFIG_RT_MUTEXES=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_COMPRESS_ZSTD=y
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_BLK_CGROUP_PUNT_BIO=y
+CONFIG_BLK_DEV_BSG_COMMON=y
+CONFIG_BLK_ICQ=y
+CONFIG_BLK_DEV_WRITE_MOUNTED=y
+CONFIG_BLK_WBT=y
+CONFIG_BLK_WBT_MQ=y
+CONFIG_PARTITION_ADVANCED=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_PM=y
+CONFIG_IOSCHED_BFQ=y
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_ARCH_HAS_MMIOWB=y
+CONFIG_MMIOWB=y
+CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
+CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
+CONFIG_FREEZER=y
+CONFIG_BINFMT_ELF=y
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+CONFIG_ARCH_HAS_BINFMT_FLAT=y
+CONFIG_COREDUMP=y
+CONFIG_SWAP=y
+CONFIG_ZSMALLOC=y
+CONFIG_SLUB=y
+CONFIG_SLAB_MERGE_DEFAULT=y
+CONFIG_SLUB_CPU_PARTIAL=y
+CONFIG_COMPAT_BRK=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+CONFIG_FLATMEM=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+CONFIG_CONTIG_ALLOC=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_KSM=y
+CONFIG_ARCH_WANTS_THP_SWAP=y
+CONFIG_CMA=y
+CONFIG_GENERIC_EARLY_IOREMAP=y
+CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y
+CONFIG_ZONE_DMA32=y
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_SECRETMEM=y
+CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y
+CONFIG_PER_VMA_LOCK=y
+CONFIG_LOCK_MM_AND_FIND_VMA=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_UNIX_SCM=y
+CONFIG_AF_UNIX_OOB=y
+CONFIG_NET_HANDSHAKE=y
+CONFIG_INET=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_PNP=y
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_IPV6=y
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_DNS_RESOLVER=y
+CONFIG_PCPU_DEV_REFCNT=y
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_XPS=y
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+CONFIG_NET_FLOW_LIMIT=y
+CONFIG_FIB_RULES=y
+CONFIG_NET_SELFTESTS=y
+CONFIG_PAGE_POOL=y
+CONFIG_ARM_AMBA=y
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_DOMAINS_GENERIC=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+CONFIG_PCIE_PME=y
+CONFIG_PCI_MSI=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_PCI_ECAM=y
+CONFIG_PCIE_BUS_DEFAULT=y
+CONFIG_VGA_ARB=y
+CONFIG_PCI_HOST_COMMON=y
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_AUXILIARY_BUS=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_FW_CACHE=y
+CONFIG_ALLOW_DEV_COREDUMP=y
+CONFIG_GENERIC_CPU_DEVICES=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_REGMAP_IRQ=y
+CONFIG_DMA_SHARED_BUFFER=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_SIFIVE_CCACHE=y
+CONFIG_EFI_ESRT=y
+CONFIG_EFI_PARAMS_FROM_FDT=y
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_GENERIC_STUB=y
+CONFIG_EFI_EARLYCON=y
+CONFIG_EFI_DISABLE_RUNTIME=y
+CONFIG_MTD=y
+CONFIG_MTD_OF_PARTS=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
+CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
+CONFIG_DTC=y
+CONFIG_OF=y
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_BLK_DEV=y
+CONFIG_CDROM=y
+CONFIG_ZRAM=y
+CONFIG_ZRAM_DEF_COMP_ZSTD=y
+CONFIG_ZRAM_TRACK_ENTRY_ACTIME=y
+CONFIG_ZRAM_MEMORY_TRACKING=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_NVME_CORE=y
+CONFIG_BLK_DEV_NVME=y
+CONFIG_SCSI_MOD=y
+CONFIG_SCSI_COMMON=y
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_PROC_FS=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_NET_CORE=y
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_NET_VENDOR_AGERE=y
+CONFIG_NET_VENDOR_ALACRITECH=y
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_NET_VENDOR_AQUANTIA=y
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ASIX=y
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_NET_VENDOR_CADENCE=y
+CONFIG_NET_VENDOR_CAVIUM=y
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_NET_VENDOR_CORTINA=y
+CONFIG_NET_VENDOR_DAVICOM=y
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_NET_VENDOR_ENGLEDER=y
+CONFIG_NET_VENDOR_EZCHIP=y
+CONFIG_NET_VENDOR_FUNGIBLE=y
+CONFIG_NET_VENDOR_GOOGLE=y
+CONFIG_NET_VENDOR_HUAWEI=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_ADI=y
+CONFIG_NET_VENDOR_LITEX=y
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_NET_VENDOR_MICROCHIP=y
+CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_NET_VENDOR_MICROSOFT=y
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_NET_VENDOR_NI=y
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_NETERION=y
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NET_VENDOR_8390=y
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+CONFIG_NET_VENDOR_PENSANDO=y
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_NET_VENDOR_QUALCOMM=y
+CONFIG_NET_VENDOR_RDC=y
+CONFIG_NET_VENDOR_REALTEK=y
+CONFIG_NET_VENDOR_RENESAS=y
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_NET_VENDOR_SAMSUNG=y
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_NET_VENDOR_SIS=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_NET_VENDOR_SOCIONEXT=y
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_STMMAC_ETH=y
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_DWMAC_DWC_QOS_ETH=y
+CONFIG_DWMAC_STARFIVE=y
+CONFIG_NET_VENDOR_SUN=y
+CONFIG_NET_VENDOR_SYNOPSYS=y
+CONFIG_NET_VENDOR_TEHUTI=y
+CONFIG_NET_VENDOR_TI=y
+CONFIG_NET_VENDOR_VERTEXCOM=y
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_NET_VENDOR_WANGXUN=y
+CONFIG_NET_VENDOR_WIZNET=y
+CONFIG_NET_VENDOR_XILINX=y
+CONFIG_PHYLINK=y
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+CONFIG_FIXED_PHY=y
+CONFIG_MICROCHIP_PHY=y
+CONFIG_MOTORCOMM_PHY=y
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+CONFIG_FWNODE_MDIO=y
+CONFIG_OF_MDIO=y
+CONFIG_MDIO_DEVRES=y
+CONFIG_PCS_XPCS=y
+CONFIG_USB_NET_DRIVERS=y
+CONFIG_INPUT=y
+CONFIG_TTY=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_TIOCSTI=y
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCILIB=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_DWLIB=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_SERIAL_8250_PERICOM=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_SERIAL_MCTRL_GPIO=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_JH7110=y
+CONFIG_DEVMEM=y
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_DESIGNWARE_CORE=y
+CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+CONFIG_SPI_CADENCE_QUADSPI=y
+CONFIG_SPI_PL022=y
+CONFIG_SPI_SPIDEV=y
+CONFIG_PTP_1588_CLOCK_OPTIONAL=y
+CONFIG_PINCTRL=y
+CONFIG_GENERIC_PINCTRL_GROUPS=y
+CONFIG_PINMUX=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+CONFIG_PINCTRL_STARFIVE_JH7100=y
+CONFIG_PINCTRL_STARFIVE_JH7110=y
+CONFIG_PINCTRL_STARFIVE_JH7110_SYS=y
+CONFIG_PINCTRL_STARFIVE_JH7110_AON=y
+CONFIG_GPIOLIB=y
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_CDEV=y
+CONFIG_GPIO_CDEV_V1=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_GPIO_RESTART=y
+CONFIG_HWMON=y
+CONFIG_SENSORS_SFCTEMP=y
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_CPU_THERMAL=y
+CONFIG_CPU_FREQ_THERMAL=y
+CONFIG_THERMAL_EMULATION=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+CONFIG_STARFIVE_WATCHDOG=y
+CONFIG_SSB_POSSIBLE=y
+CONFIG_BCMA_POSSIBLE=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=y
+CONFIG_MFD_SYSCON=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_AXP20X=y
+CONFIG_MEDIA_CEC_SUPPORT=y
+CONFIG_MEDIA_SUPPORT=y
+CONFIG_MEDIA_SUPPORT_FILTER=y
+CONFIG_VIDEO_CMDLINE=y
+CONFIG_VIDEO_NOMODESET=y
+CONFIG_DRM=y
+CONFIG_DRM_PANEL=y
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_HDMI=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_DMAENGINE_PCM=y
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_VERBOSE_PROCFS=y
+CONFIG_SND_CTL_FAST_LOOKUP=y
+CONFIG_SND_DRIVERS=y
+CONFIG_SND_PCI=y
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_SOC=y
+CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_DESIGNWARE_I2S=y
+CONFIG_SND_SOC_STARFIVE=y
+CONFIG_SND_SOC_JH7110_PWMDAC=y
+CONFIG_SND_SOC_JH7110_TDM=y
+CONFIG_SND_SOC_I2C_AND_SPI=y
+CONFIG_SND_SOC_SPDIF=y
+CONFIG_SND_SOC_WM8960=y
+CONFIG_SND_SIMPLE_CARD_UTILS=y
+CONFIG_SND_SIMPLE_CARD=y
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_GENERIC=y
+CONFIG_USB_HID=y
+CONFIG_I2C_HID=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+CONFIG_USB_DEFAULT_PERSIST=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_UAS=y
+CONFIG_USB_CDNS_SUPPORT=y
+CONFIG_USB_CDNS_HOST=y
+CONFIG_USB_CDNS3=y
+CONFIG_USB_CDNS3_GADGET=y
+CONFIG_USB_CDNS3_HOST=y
+CONFIG_USB_CDNS3_STARFIVE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_LIBCOMPOSITE=y
+CONFIG_USB_F_FS=y
+CONFIG_USB_CONFIGFS=y
+CONFIG_USB_CONFIGFS_F_FS=y
+CONFIG_USB_ROLE_SWITCH=y
+CONFIG_MMC=y
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_OF_DWCMSHC=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_PLTFM=y
+CONFIG_MMC_DW_STARFIVE=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_DMADEVICES=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+CONFIG_AMBA_PL08X=y
+CONFIG_DW_AXI_DMAC=y
+CONFIG_DMATEST=y
+CONFIG_DMA_ENGINE_RAID=y
+CONFIG_SYNC_FILE=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+CONFIG_CLK_STARFIVE_JH71X0=y
+CONFIG_CLK_STARFIVE_JH7100=y
+CONFIG_CLK_STARFIVE_JH7110_PLL=y
+CONFIG_CLK_STARFIVE_JH7110_SYS=y
+CONFIG_CLK_STARFIVE_JH7110_AON=y
+CONFIG_CLK_STARFIVE_JH7110_STG=y
+CONFIG_CLK_STARFIVE_JH7110_ISP=y
+CONFIG_CLK_STARFIVE_JH7110_VOUT=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_RISCV_TIMER=y
+CONFIG_JH71XX_PMU=y
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_IRQCHIP=y
+CONFIG_RISCV_INTC=y
+CONFIG_SIFIVE_PLIC=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_STARFIVE_JH71X0=y
+CONFIG_RESET_STARFIVE_JH7100=y
+CONFIG_RESET_STARFIVE_JH7110=y
+CONFIG_GENERIC_PHY=y
+CONFIG_GENERIC_PHY_MIPI_DPHY=y
+CONFIG_PHY_STARFIVE_JH7110_DPHY_RX=y
+CONFIG_PHY_STARFIVE_JH7110_PCIE=y
+CONFIG_PHY_STARFIVE_JH7110_USB=y
+CONFIG_RISCV_PMU=y
+CONFIG_RISCV_PMU_LEGACY=y
+CONFIG_RISCV_PMU_SBI=y
diff --git a/target/riscv64/starfive-visionfive2/extlinux.conf b/target/riscv64/starfive-visionfive2/extlinux.conf
new file mode 100644
index 000000000..3d7e45151
--- /dev/null
+++ b/target/riscv64/starfive-visionfive2/extlinux.conf
@@ -0,0 +1,4 @@
+label starfive-visionfive2
+ kernel /boot/kernel
+ devicetree /boot/jh7110-starfive-visionfive-2-v1.3b.dtb
+ append console=ttyS0,115200 root=/dev/mmcblk1p3 rootwait
diff --git a/target/riscv64/starfive-visionfive2/genimage.cfg b/target/riscv64/starfive-visionfive2/genimage.cfg
new file mode 100644
index 000000000..5d26dc49b
--- /dev/null
+++ b/target/riscv64/starfive-visionfive2/genimage.cfg
@@ -0,0 +1,28 @@
+# Minimal SD card image for the Starfive VisionFive2 board
+
+image sdcard.img {
+ hdimage {
+ partition-table-type = "gpt"
+ }
+
+ partition spl {
+ partition-type-uuid = 2E54B353-1271-4842-806F-E436D6AF6985
+ image = "u-boot-spl.bin.normal.out"
+ }
+
+ partition uboot {
+ partition-type-uuid = BC13C2FF-59E6-4262-A352-B275FD6F7172
+ image = "u-boot.itb"
+ }
+
+ partition rootfs {
+ partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
+ bootable = true
+ image = "rootfs.ext"
+ }
+
+ partition cfgfs {
+ partition-type-uuid = 0FC63DAF-8483-4772-8E79-3D69D8477DE4
+ image = "cfgfs.img"
+ }
+}
diff --git a/target/riscv64/systems/sipeed-maix-bit b/target/riscv64/systems/sipeed-maix-bit
new file mode 100644
index 000000000..3199d4a33
--- /dev/null
+++ b/target/riscv64/systems/sipeed-maix-bit
@@ -0,0 +1,7 @@
+config ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
+ bool "Sipeed MAiX Bit"
+ select ADK_TARGET_CPU_RISCV64
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_KERNEL_IMAGE
+ help
+ Sipeed MAiX Bit support.
diff --git a/target/riscv64/systems/starfive-visionfive2 b/target/riscv64/systems/starfive-visionfive2
new file mode 100644
index 000000000..041cd1c53
--- /dev/null
+++ b/target/riscv64/systems/starfive-visionfive2
@@ -0,0 +1,17 @@
+config ADK_TARGET_SYSTEM_STARFIVE_VISIONFIVE2
+ bool "Starfive VisionFive 2"
+ select ADK_TARGET_CPU_RISCV64
+ select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_TARGET_WITH_SD
+ select ADK_TARGET_WITH_SMP
+ select ADK_TARGET_WITH_PCI
+ select ADK_TARGET_WITH_USB
+ select ADK_TARGET_WITH_NET
+ select ADK_TARGET_WITH_NETDEVICE
+ select ADK_TARGET_KERNEL_IMAGE
+ select ADK_PACKAGE_GPTFDISK
+ select ADK_PACKAGE_OPENSBI
+ select ADK_PACKAGE_U_BOOT
+ help
+ Starfive VisionFive 2.
diff --git a/target/riscv64/uclibc-ng-nommu.config b/target/riscv64/uclibc-ng-nommu.config
new file mode 100644
index 000000000..1ca015b2c
--- /dev/null
+++ b/target/riscv64/uclibc-ng-nommu.config
@@ -0,0 +1,226 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.46 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+TARGET_riscv64=y
+# TARGET_riscv32 is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="riscv64"
+FORCE_OPTIONS_FOR_ARCH=y
+TARGET_SUBARCH=""
+# UCLIBC_FORMAT_ELF is not set
+UCLIBC_FORMAT_FLAT=y
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_LITTLE_ENDIAN=y
+
+#
+# Using Little Endian
+#
+ARCH_HAS_MMU=y
+# ARCH_USE_MMU is not set
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+DOPIC=y
+# STATIC_PIE is not set
+ARCH_HAS_NO_SHARED=y
+ARCH_HAS_NO_LDSO=y
+UCLIBC_CTOR_DTOR=y
+HAS_NO_THREADS=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/riscv64/uclibc-ng.config b/target/riscv64/uclibc-ng.config
index 5158f4850..a0f4ee9fc 100644
--- a/target/riscv64/uclibc-ng.config
+++ b/target/riscv64/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.32 C Library Configuration
+# uClibc-ng 1.0.46 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -16,6 +16,7 @@
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -26,12 +27,15 @@
# TARGET_or1k is not set
# TARGET_powerpc is not set
TARGET_riscv64=y
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -62,6 +66,8 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -77,12 +83,14 @@ LDSO_RUNPATH=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
+UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
-# PTHREADS_DEBUG_SUPPORT is not set
+PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -126,6 +134,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -148,6 +157,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -235,4 +248,4 @@ UCLIBC_EXTRA_CFLAGS=""
# UCLIBC_MALLOC_DEBUGGING is not set
# UCLIBC_HAS_BACKTRACE is not set
WARNINGS="-Wall"
-# EXTRA_WARNINGS is not set
+EXTRA_WARNINGS=y
diff --git a/target/s390/Makefile b/target/s390/Makefile
index d037b14f8..fd7142e45 100644
--- a/target/s390/Makefile
+++ b/target/s390/Makefile
@@ -5,11 +5,11 @@ include $(ADK_TOPDIR)/rules.mk
include $(ADK_TOPDIR)/mk/kernel-build.mk
include $(ADK_TOPDIR)/mk/image.mk
-KERNEL:=$(LINUX_DIR)/arch/s390/boot/compressed/vmlinux
+KERNEL:=$(LINUX_DIR)/arch/s390/boot/bzImage
-QEMU_ARGS:=-monitor null -M s390-ccw-virtio-2.4
+QEMU_ARGS:=-monitor null -M s390-ccw-virtio
QEMU_ARGS+=${ADK_QEMU_ARGS}
-QEMU_ARGS+=-net nic,model=virtio -net user
+QEMU_ARGS+=-net nic,model=virtio -net user -serial mon:stdio
# target helper text
ifeq ($(ADK_TARGET_FS),archive)
@@ -47,11 +47,8 @@ endif
endif
# image creation and kernel install
-kernel-strip:
- $(TARGET_CROSS)objcopy $(OSTRIP) -S $(KERNEL) $(BUILD_DIR)/$(TARGET_KERNEL)
-
-kernel-install: kernel-strip
- @cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
+kernel-install:
+ @cp $(KERNEL) $(FW_DIR)/${TARGET_KERNEL}
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),archive)
diff --git a/target/sh/kernel/numato-mimasv2 b/target/sh/kernel/numato-mimasv2
index ca290f15d..faa0ff558 100644
--- a/target/sh/kernel/numato-mimasv2
+++ b/target/sh/kernel/numato-mimasv2
@@ -15,3 +15,4 @@ CONFIG_MMC_SPI=y
CONFIG_CLKSRC_JCORE_PIT=y
CONFIG_JCORE_AIC=y
CONFIG_SERIAL_EARLYCON=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/sh/kernel/qemu-sh b/target/sh/kernel/qemu-sh
index dbe8f023c..7a2e8f458 100644
--- a/target/sh/kernel/qemu-sh
+++ b/target/sh/kernel/qemu-sh
@@ -15,3 +15,4 @@ CONFIG_CMDLINE_EXTEND=y
CONFIG_SERIAL_SH_SCI=y
CONFIG_SERIAL_SH_SCI_NR_UARTS=2
CONFIG_SERIAL_SH_SCI_CONSOLE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/sh/uclibc-ng-nommu.config b/target/sh/uclibc-ng-nommu.config
new file mode 100644
index 000000000..193587ccb
--- /dev/null
+++ b/target/sh/uclibc-ng-nommu.config
@@ -0,0 +1,235 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.45 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
+TARGET_sh=y
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="sh"
+FORCE_OPTIONS_FOR_ARCH=y
+# CONFIG_SH2A is not set
+CONFIG_SH2=y
+# CONFIG_SH3 is not set
+# CONFIG_SH4 is not set
+# CONFIG_SH4A is not set
+TARGET_SUBARCH=""
+UCLIBC_FORMAT_FLAT=y
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_HAS_DEPRECATED_SYSCALLS=y
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_NO_MMU=y
+
+#
+# Target CPU lacks a memory management unit (MMU)
+#
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+DOPIC=y
+ARCH_HAS_NO_SHARED=y
+ARCH_HAS_NO_LDSO=y
+UCLIBC_CTOR_DTOR=y
+HAS_NO_THREADS=y
+# UCLIBC_HAS_LINUXTHREADS is not set
+# UCLIBC_HAS_THREADS_NATIVE is not set
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+# MALLOC_STANDARD is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/sh/uclibc-ng.config b/target/sh/uclibc-ng.config
index ee04f1e24..d8dea4776 100644
--- a/target/sh/uclibc-ng.config
+++ b/target/sh/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
TARGET_sh=y
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -57,7 +64,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -66,6 +72,7 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -81,7 +88,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -90,6 +96,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -118,6 +125,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -133,6 +141,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -155,6 +164,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -224,7 +237,6 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/sparc/kernel/qemu-sparc b/target/sparc/kernel/qemu-sparc
index ffa9bb9f8..1ee79ef31 100644
--- a/target/sparc/kernel/qemu-sparc
+++ b/target/sparc/kernel/qemu-sparc
@@ -7,3 +7,4 @@ CONFIG_SERIAL_CONSOLE=y
CONFIG_SERIAL_SUNCORE=y
CONFIG_SERIAL_SUNZILOG=y
CONFIG_SERIAL_SUNZILOG_CONSOLE=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/sparc/uclibc-ng.config b/target/sparc/uclibc-ng.config
index e98658573..c3ff0877b 100644
--- a/target/sparc/uclibc-ng.config
+++ b/target/sparc/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
TARGET_sparc=y
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -54,7 +61,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -64,6 +70,7 @@ HAVE_DOT_CONFIG=y
#
DOPIC=y
ARCH_HAS_UCONTEXT=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -79,7 +86,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -88,6 +94,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -117,6 +124,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -132,6 +140,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -154,6 +163,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -223,7 +236,6 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/x86/Makefile b/target/x86/Makefile
index b47da2b42..b9bbc72a3 100644
--- a/target/x86/Makefile
+++ b/target/x86/Makefile
@@ -45,11 +45,6 @@ else
@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
endif
endif
-ifeq ($(ADK_TARGET_VBOX),y)
- @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
- @echo "Use following command to create a VirtualBox Image:"
- @echo "./scripts/create.sh -g -T vdi vbox-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"
-endif
endif
ifeq ($(ADK_TARGET_FS),initramfs)
targethelp:
diff --git a/target/x86/kernel/qemu-x86 b/target/x86/kernel/qemu-x86
index 1049b23d8..41a00164c 100644
--- a/target/x86/kernel/qemu-x86
+++ b/target/x86/kernel/qemu-x86
@@ -1,3 +1,4 @@
CONFIG_X86=y
CONFIG_X86_32=y
CONFIG_CMDLINE_BOOL=y
+CONFIG_COMPAT_32BIT_TIME=y
diff --git a/target/x86/kernel/vbox-x86 b/target/x86/kernel/vbox-x86
deleted file mode 100644
index 849852a65..000000000
--- a/target/x86/kernel/vbox-x86
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_X86=y
-CONFIG_X86_32=y
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
diff --git a/target/x86/systems/vbox-x86 b/target/x86/systems/vbox-x86
deleted file mode 100644
index 7577554bf..000000000
--- a/target/x86/systems/vbox-x86
+++ /dev/null
@@ -1,9 +0,0 @@
-config ADK_TARGET_SYSTEM_VBOX_X86
- bool "VirtualBox Emulator"
- select ADK_TARGET_VBOX
- select ADK_TARGET_KERNEL_BZIMAGE
- select ADK_TARGET_KERNEL_WITH_COMPRESSION
- select ADK_PACKAGE_GRUB
- help
- Support for VirtualBox Emulator.
-
diff --git a/target/x86/uclibc-ng.config b/target/x86/uclibc-ng.config
index 08f9432b1..7ecceb731 100644
--- a/target/x86/uclibc-ng.config
+++ b/target/x86/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
TARGET_i386=y
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@ TARGET_i386=y
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
# TARGET_xtensa is not set
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -65,7 +72,9 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
ARCH_HAS_UCONTEXT=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -81,7 +90,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -90,6 +98,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -119,6 +128,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -134,6 +144,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -156,6 +167,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -226,7 +241,6 @@ HARDWIRED_ABSPATH=y
# Security options
#
# UCLIBC_BUILD_PIE is not set
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/target/x86_64/Makefile b/target/x86_64/Makefile
index 11560a861..2c5bcd253 100644
--- a/target/x86_64/Makefile
+++ b/target/x86_64/Makefile
@@ -44,11 +44,6 @@ else
@echo 'qemu-system-${QEMU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
endif
endif
-ifeq ($(ADK_HARDWARE_VBOX),y)
- @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
- @echo "Use following command to create a VirtualBox Image:"
- @echo "./scripts/create.sh -T vdi vbox-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSTARBALL)"
-endif
endif
ifeq ($(ADK_TARGET_FS),initramfs)
targethelp:
diff --git a/target/x86_64/generic-x86_64/genimage-dual.cfg b/target/x86_64/generic-x86_64/genimage-dual.cfg
new file mode 100644
index 000000000..647a2bcb5
--- /dev/null
+++ b/target/x86_64/generic-x86_64/genimage-dual.cfg
@@ -0,0 +1,36 @@
+image disk.img {
+
+ hdimage {
+ }
+
+ partition boot {
+ in-partition-table = "no"
+ image = "boot.img"
+ offset = 0
+ size = 512
+ }
+
+ partition grub {
+ in-partition-table = "no"
+ image = "grub.img"
+ offset = 512
+ }
+
+ partition root1 {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ size = 64M
+ }
+
+ partition root2 {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ size = 64M
+ }
+
+ partition cfgfs {
+ partition-type = 0x88
+ image = "cfgfs.img"
+ }
+
+}
diff --git a/target/x86_64/generic-x86_64/genimage-efi-dual.cfg b/target/x86_64/generic-x86_64/genimage-efi-dual.cfg
new file mode 100644
index 000000000..7c82a0bcb
--- /dev/null
+++ b/target/x86_64/generic-x86_64/genimage-efi-dual.cfg
@@ -0,0 +1,37 @@
+image efi-part.vfat {
+ vfat {
+ file EFI {
+ image = "efi-part/EFI"
+ }
+ }
+ size = 32M
+}
+
+image disk.img {
+
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xEF
+ image = "efi-part.vfat"
+ }
+
+ partition root1 {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ size = 128M
+ }
+
+ partition root2 {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ size = 128M
+ }
+
+ partition cfgfs {
+ partition-type = 0x88
+ image = "cfgfs.img"
+ }
+
+}
diff --git a/target/x86_64/generic-x86_64/genimage-efi.cfg b/target/x86_64/generic-x86_64/genimage-efi.cfg
new file mode 100644
index 000000000..a59d75e47
--- /dev/null
+++ b/target/x86_64/generic-x86_64/genimage-efi.cfg
@@ -0,0 +1,30 @@
+image efi-part.vfat {
+ vfat {
+ file EFI {
+ image = "efi-part/EFI"
+ }
+ }
+ size = 32M
+}
+
+image disk.img {
+
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xEF
+ image = "efi-part.vfat"
+ }
+
+ partition root {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ }
+
+ partition cfgfs {
+ partition-type = 0x88
+ image = "cfgfs.img"
+ }
+
+}
diff --git a/target/x86_64/generic-x86_64/genimage.cfg b/target/x86_64/generic-x86_64/genimage.cfg
new file mode 100644
index 000000000..d86f7ffd7
--- /dev/null
+++ b/target/x86_64/generic-x86_64/genimage.cfg
@@ -0,0 +1,30 @@
+image disk.img {
+
+ hdimage {
+ }
+
+ partition boot {
+ in-partition-table = "no"
+ image = "boot.img"
+ offset = 0
+ size = 512
+ }
+
+ partition grub {
+ in-partition-table = "no"
+ image = "grub.img"
+ offset = 512
+ }
+
+ partition root {
+ partition-type = 0x83
+ image = "rootfs.ext"
+ size = 64M
+ }
+
+ partition cfgfs {
+ partition-type = 0x88
+ image = "cfgfs.img"
+ }
+
+}
diff --git a/target/x86_64/kernel/asus-p5bvm b/target/x86_64/kernel/asus-p5bvm
deleted file mode 100644
index b17b6e256..000000000
--- a/target/x86_64/kernel/asus-p5bvm
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_X86=y
-CONFIG_X86_64=y
-CONFIG_X86_X32=y
-CONFIG_GENERIC_CPU=y
-CONFIG_PROCESSOR_SELECT=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CPU_SUP_AMD=y
diff --git a/target/x86_64/kernel/lenovo-x200 b/target/x86_64/kernel/lenovo-x200
deleted file mode 100644
index ad080ab40..000000000
--- a/target/x86_64/kernel/lenovo-x200
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_X86=y
-CONFIG_X86_64=y
-CONFIG_GENERIC_CPU=y
-CONFIG_PROCESSOR_SELECT=y
-CONFIG_CPU_SUP_INTEL=y
-CONFIG_CMDLINE_BOOL=y
diff --git a/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg b/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg
index 7c82a0bcb..ff3cb08d2 100644
--- a/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg
+++ b/target/x86_64/qemu-x86_64/genimage-efi-dual.cfg
@@ -10,27 +10,30 @@ image efi-part.vfat {
image disk.img {
hdimage {
+ partition-table-type = "gpt"
}
partition boot {
- partition-type = 0xEF
image = "efi-part.vfat"
+ partition-type-uuid = U
+ offset = 32K
+ bootable = true
}
partition root1 {
- partition-type = 0x83
+ partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a
image = "rootfs.ext"
size = 128M
}
partition root2 {
- partition-type = 0x83
+ partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a
image = "rootfs.ext"
size = 128M
}
partition cfgfs {
- partition-type = 0x88
+ partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a
image = "cfgfs.img"
}
diff --git a/target/x86_64/qemu-x86_64/genimage-efi.cfg b/target/x86_64/qemu-x86_64/genimage-efi.cfg
index a59d75e47..c7fa9a2c3 100644
--- a/target/x86_64/qemu-x86_64/genimage-efi.cfg
+++ b/target/x86_64/qemu-x86_64/genimage-efi.cfg
@@ -10,20 +10,23 @@ image efi-part.vfat {
image disk.img {
hdimage {
+ partition-table-type = "gpt"
}
partition boot {
- partition-type = 0xEF
image = "efi-part.vfat"
+ partition-type-uuid = U
+ offset = 32K
+ bootable = true
}
partition root {
- partition-type = 0x83
+ partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a
image = "rootfs.ext"
}
partition cfgfs {
- partition-type = 0x88
+ partition-type-uuid = 44479540-f297-41b2-9af7-d131d5f0458a
image = "cfgfs.img"
}
diff --git a/target/xtensa/kernel/qemu-xtensa b/target/xtensa/kernel/qemu-xtensa
index d04e49c50..8d6bac0b9 100644
--- a/target/xtensa/kernel/qemu-xtensa
+++ b/target/xtensa/kernel/qemu-xtensa
@@ -1,4 +1,5 @@
CONFIG_XTENSA=y
CONFIG_XTENSA_PLATFORM_XTFPGA=y
CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="console=ttyS0,38400 memmap=0x04000000@0"
+CONFIG_CMDLINE="console=ttyS0,38400 memmap=128M@0"
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
diff --git a/target/xtensa/uclibc-ng-nommu.config b/target/xtensa/uclibc-ng-nommu.config
new file mode 100644
index 000000000..e9f9a7546
--- /dev/null
+++ b/target/xtensa/uclibc-ng-nommu.config
@@ -0,0 +1,229 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# uClibc-ng 1.0.45 C Library Configuration
+#
+# TARGET_aarch64 is not set
+# TARGET_alpha is not set
+# TARGET_arc is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_c6x is not set
+# TARGET_cris is not set
+# TARGET_csky is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_ia64 is not set
+# TARGET_kvx is not set
+# TARGET_lm32 is not set
+# TARGET_m68k is not set
+# TARGET_metag is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nds32 is not set
+# TARGET_nios2 is not set
+# TARGET_or1k is not set
+# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
+# TARGET_sh is not set
+# TARGET_sparc is not set
+# TARGET_sparc64 is not set
+# TARGET_tile is not set
+# TARGET_x86_64 is not set
+TARGET_xtensa=y
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
+
+#
+# Target Architecture Features and Options
+#
+TARGET_ARCH="xtensa"
+FORCE_OPTIONS_FOR_ARCH=y
+TARGET_SUBARCH=""
+UCLIBC_FORMAT_FLAT=y
+# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
+# UCLIBC_FORMAT_SHARED_FLAT is not set
+ARCH_HAS_DEPRECATED_SYSCALLS=y
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+ARCH_WANTS_LITTLE_ENDIAN=y
+ARCH_HAS_MMU=y
+# ARCH_USE_MMU is not set
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FPU=y
+DO_C99_MATH=y
+DO_XSI_MATH=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+KERNEL_HEADERS=""
+UCLIBC_UCLINUX_BROKEN_MUNMAP=y
+HAVE_DOT_CONFIG=y
+
+#
+# General Library Settings
+#
+DOPIC=y
+# STATIC_PIE is not set
+ARCH_HAS_NO_SHARED=y
+ARCH_HAS_NO_LDSO=y
+ARCH_HAS_UCONTEXT=y
+UCLIBC_CTOR_DTOR=y
+HAS_NO_THREADS=y
+# UCLIBC_HAS_LINUXTHREADS is not set
+PTHREADS_STACK_DEFAULT_SIZE=2097152
+UCLIBC_HAS_SYSLOG=y
+UCLIBC_HAS_LFS=y
+MALLOC=y
+# MALLOC_SIMPLE is not set
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
+UCLIBC_SUSV2_LEGACY=y
+UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_HAS_CONTEXT_FUNCS is not set
+# UCLIBC_SUSV3_LEGACY_MACROS is not set
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_STRICT_HEADERS is not set
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS___PROGNAME=y
+UCLIBC_HAS_PTY=y
+ASSUME_DEVPTS=y
+UNIX98PTY_ONLY=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_LIBUTIL=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
+
+#
+# Advanced Library Settings
+#
+UCLIBC_PWD_BUFFER_SIZE=256
+UCLIBC_GRP_BUFFER_SIZE=256
+
+#
+# Support various families of functions
+#
+UCLIBC_LINUX_SPECIFIC=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_SV4_DEPRECATED=y
+UCLIBC_HAS_REALTIME=y
+UCLIBC_HAS_ADVANCED_REALTIME=y
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_XATTR=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_SHA256_CRYPT_IMPL=y
+UCLIBC_HAS_SHA512_CRYPT_IMPL=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
+
+#
+# String and Stdio Support
+#
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_CTYPE_TABLES=y
+UCLIBC_HAS_CTYPE_SIGNED=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_WCHAR=y
+# UCLIBC_HAS_LIBICONV is not set
+# UCLIBC_HAS_LIBINTL is not set
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_PRINTF_M_SPEC=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GETOPT_LONG=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_ARGP=y
+
+#
+# Big and Tall
+#
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_WORDEXP=y
+UCLIBC_HAS_NFTW=y
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_GLOB=y
+
+#
+# Library Installation Options
+#
+RUNTIME_PREFIX="/"
+DEVEL_PREFIX="/usr/"
+MULTILIB_DIR="lib"
+HARDWIRED_ABSPATH=y
+
+#
+# Security options
+#
+# UCLIBC_HAS_SSP is not set
+UCLIBC_BUILD_NOEXECSTACK=y
+
+#
+# Development/debugging options
+#
+CROSS_COMPILER_PREFIX=""
+UCLIBC_EXTRA_CFLAGS=""
+# DODEBUG is not set
+# DOSTRIP is not set
+# DOASSERTS is not set
+# UCLIBC_MALLOC_DEBUGGING is not set
+WARNINGS="-Wall"
+# EXTRA_WARNINGS is not set
diff --git a/target/xtensa/uclibc-ng.config b/target/xtensa/uclibc-ng.config
index 97060c15f..ace9d1197 100644
--- a/target/xtensa/uclibc-ng.config
+++ b/target/xtensa/uclibc-ng.config
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# uClibc-ng 1.0.25 C Library Configuration
+# uClibc-ng 1.0.45 C Library Configuration
#
# TARGET_aarch64 is not set
# TARGET_alpha is not set
@@ -10,11 +10,13 @@
# TARGET_bfin is not set
# TARGET_c6x is not set
# TARGET_cris is not set
+# TARGET_csky is not set
# TARGET_frv is not set
# TARGET_h8300 is not set
# TARGET_hppa is not set
# TARGET_i386 is not set
# TARGET_ia64 is not set
+# TARGET_kvx is not set
# TARGET_lm32 is not set
# TARGET_m68k is not set
# TARGET_metag is not set
@@ -24,11 +26,16 @@
# TARGET_nios2 is not set
# TARGET_or1k is not set
# TARGET_powerpc is not set
+# TARGET_riscv64 is not set
+# TARGET_riscv32 is not set
# TARGET_sh is not set
# TARGET_sparc is not set
# TARGET_sparc64 is not set
+# TARGET_tile is not set
# TARGET_x86_64 is not set
TARGET_xtensa=y
+TARGET_LDSO_NAME="ld-uClibc"
+TARGET_ARCH_BITS=32
#
# Target Architecture Features and Options
@@ -51,7 +58,6 @@ UCLIBC_HAS_FLOATS=y
UCLIBC_HAS_FPU=y
DO_C99_MATH=y
DO_XSI_MATH=y
-# UCLIBC_HAS_FENV is not set
UCLIBC_HAS_LONG_DOUBLE_MATH=y
KERNEL_HEADERS=""
HAVE_DOT_CONFIG=y
@@ -60,6 +66,9 @@ HAVE_DOT_CONFIG=y
# General Library Settings
#
DOPIC=y
+# STATIC_PIE is not set
+ARCH_HAS_UCONTEXT=y
+HAVE_LDSO=y
HAVE_SHARED=y
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
LDSO_LDD_SUPPORT=y
@@ -75,7 +84,6 @@ LDSO_RUNPATH_OF_EXECUTABLE=y
LDSO_SAFE_RUNPATH=y
LDSO_SEARCH_INTERP_PATH=y
LDSO_LD_LIBRARY_PATH=y
-LDSO_NO_CLEANUP=y
UCLIBC_CTOR_DTOR=y
# LDSO_GNU_HASH_SUPPORT is not set
# HAS_NO_THREADS is not set
@@ -84,6 +92,7 @@ UCLIBC_HAS_THREADS_NATIVE=y
UCLIBC_HAS_THREADS=y
UCLIBC_HAS_TLS=y
PTHREADS_DEBUG_SUPPORT=y
+PTHREADS_STACK_DEFAULT_SIZE=2097152
UCLIBC_HAS_SYSLOG=y
UCLIBC_HAS_LFS=y
# MALLOC is not set
@@ -94,6 +103,7 @@ UCLIBC_HAS_UTMPX=y
UCLIBC_HAS_UTMP=y
UCLIBC_SUSV2_LEGACY=y
UCLIBC_SUSV3_LEGACY=y
+# UCLIBC_HAS_CONTEXT_FUNCS is not set
# UCLIBC_SUSV3_LEGACY_MACROS is not set
UCLIBC_SUSV4_LEGACY=y
# UCLIBC_STRICT_HEADERS is not set
@@ -112,6 +122,7 @@ UCLIBC_HAS_TZ_FILE=y
UCLIBC_HAS_TZ_FILE_READ_MANY=y
UCLIBC_TZ_FILE_PATH="/etc/TZ"
UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y
+UCLIBC_USE_TIME64=y
#
# Advanced Library Settings
@@ -127,6 +138,7 @@ UCLIBC_HAS_GNU_ERROR=y
UCLIBC_BSD_SPECIFIC=y
UCLIBC_HAS_BSD_ERR=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
+# UCLIBC_HAS_BSD_B64_NTOP_B64_PTON is not set
# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
# UCLIBC_NTP_LEGACY is not set
UCLIBC_SV4_DEPRECATED=y
@@ -149,6 +161,10 @@ UCLIBC_HAS_BSD_RES_CLOSE=y
UCLIBC_HAS_COMPAT_RES_STATE=y
# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
UCLIBC_HAS_RESOLVER_SUPPORT=y
+# UCLIBC_DNSRAND_MODE_URANDOM is not set
+# UCLIBC_DNSRAND_MODE_CLOCK is not set
+UCLIBC_DNSRAND_MODE_PRNGPLUS=y
+# UCLIBC_DNSRAND_MODE_SIMPLECOUNTER is not set
#
# String and Stdio Support
@@ -218,7 +234,6 @@ HARDWIRED_ABSPATH=y
#
# Security options
#
-# UCLIBC_HAS_ARC4RANDOM is not set
# UCLIBC_HAS_SSP is not set
# UCLIBC_BUILD_RELRO is not set
# UCLIBC_BUILD_NOW is not set
diff --git a/tasks/002-mpd b/tasks/002-mpd
index 694918fa4..cc3a5dcb2 100644
--- a/tasks/002-mpd
+++ b/tasks/002-mpd
@@ -2,7 +2,7 @@ config ADK_APPLIANCE_MPD
bool "music player daemon appliance"
depends on ADK_TARGET_OS_LINUX
select ADK_PACKAGE_MPD
- select ADK_PACKAGE_YMPD
+ select ADK_PACKAGE_MYMPD
select ADK_PACKAGE_MPD_WITH_ALSA
select ADK_PACKAGE_MPD_WITH_MP3
select ADK_PACKAGE_MPD_WITH_MP4
@@ -19,6 +19,8 @@ config ADK_APPLIANCE_MPD
select ADK_PACKAGE_MPD_WITH_HTTPD
select ADK_PACKAGE_CIFS_UTILS
select ADK_PACKAGE_LIBMPDCLIENT
+ select ADK_PACKAGE_LIBCURL
+ select ADK_PACKAGE_LIBCURL_WITH_OPENSSL
select ADK_PACKAGE_MPC
select ADK_PACKAGE_DROPBEAR
select ADK_PACKAGE_DROPBEAR_WITH_UTMP
@@ -36,7 +38,7 @@ config ADK_APPLIANCE_MPD
select ADK_RUNTIME_START_BUSYBOX_NTPD
select ADK_RUNTIME_START_BUSYBOX_SYSLOGD
select ADK_RUNTIME_START_MPD
- select ADK_RUNTIME_START_YMPD
+ select ADK_RUNTIME_START_MYMPD m
select ADK_TARGET_USB_KEYBOARD
select ADK_TARGET_USB_MOUSE
select ADK_LINUX_KERNEL_USB_HID m
diff --git a/tasks/003-kodi b/tasks/003-kodi
index d1169f3cd..c004c8028 100644
--- a/tasks/003-kodi
+++ b/tasks/003-kodi
@@ -4,8 +4,10 @@ config ADK_APPLIANCE_KODI
ADK_TARGET_SYSTEM_RASPBERRY_PI || \
ADK_TARGET_SYSTEM_RASPBERRY_PI2 || \
ADK_TARGET_SYSTEM_RASPBERRY_PI3 || \
- ADK_TARGET_SYSTEM_RASPBERRY_PI3P )
- select ADK_TARGET_ARCH_ARM_WITH_NEON
+ ADK_TARGET_SYSTEM_RASPBERRY_PI3P || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI4 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI5 || \
+ ADK_TARGET_SYSTEM_RASPBERRY_PI4_64 )
select ADK_PACKAGE_KODI
select ADK_PACKAGE_KODI_WITH_SSH
select ADK_PACKAGE_KODI_WITH_MICROHTTPD
@@ -13,14 +15,14 @@ config ADK_APPLIANCE_KODI
select ADK_PACKAGE_ALSA_UTILS
select ADK_PACKAGE_STRACE
select ADK_PACKAGE_HTOP
- select ADK_PACKAGE_PYTHON2
- select ADK_PACKAGE_PYTHON2_MOD_ZLIB # required for YouTube Addon
- select ADK_PACKAGE_PYTHON2_MOD_SSL # required for YouTube Addon
- select ADK_PACKAGE_PYTHON2_MOD_EXPAT # required for Mediathek Addon
- select ADK_PACKAGE_CURL
- select ADK_PACKAGE_CURL_WITH_LIBRESSL
- select ADK_PACKAGE_DROPBEAR
- select ADK_PACKAGE_DROPBEAR_WITH_UTMP
+ select ADK_PACKAGE_PYTHON3
+ select ADK_PACKAGE_PYTHON3_MOD_ZLIB # required for YouTube Addon
+ select ADK_PACKAGE_PYTHON3_MOD_SSL # required for YouTube Addon
+ select ADK_PACKAGE_LIBCURL
+ select ADK_PACKAGE_LIBCURL_WITH_LIBRESSL
+ select ADK_PACKAGE_DROPBEAR if ADK_TARGET_LIB_UCLIBC_NG
+ select ADK_PACKAGE_OPENSSH if ADK_TARGET_LIB_GLIBC
+ select ADK_PACKAGE_OPENSSH_SERVER if ADK_TARGET_LIB_GLIBC
select ADK_PACKAGE_E2FSCK
select ADK_PACKAGE_FFMPEG
select ADK_PACKAGE_LIBFFMPEG
@@ -36,10 +38,12 @@ config ADK_APPLIANCE_KODI
select BUSYBOX_NTPD
select BUSYBOX_WATCHDOG
select ADK_RUNTIME_START_SERVICES
- select ADK_RUNTIME_START_DROPBEAR
+ select ADK_RUNTIME_START_DROPBEAR if ADK_TARGET_LIB_UCLIBC_NG
+ select ADK_RUNTIME_START_OPENSSH_SERVER if ADK_TARGET_LIB_GLIBC
select ADK_RUNTIME_START_BUSYBOX_NTPD
select ADK_RUNTIME_START_BUSYBOX_SYSLOGD
select ADK_RUNTIME_START_BUSYBOX_WATCHDOG
+ select ADK_RUNTIME_DEV_UDEV
select ADK_RUNTIME_START_KODI m
select ADK_LINUX_KERNEL_INPUT_EVDEV m
select ADK_LINUX_KERNEL_USB_HID m
@@ -48,9 +52,6 @@ config ADK_APPLIANCE_KODI
select ADK_TARGET_USB_MOUSE
select ADK_LINUX_KERNEL_NTFS_FS
select ADK_RUNTIME_HOSTNAME kodibox
- select ADK_PACKAGE_BCM28XX_BOOTLOADER_EXTRA if ADK_TARGET_BOARD_BCM28XX
- select ADK_PACKAGE_BCM28XX_VC_LIBS if ADK_TARGET_BOARD_BCM28XX
- select ADK_PACKAGE_BCM28XX_VC_GL_LIBS if ADK_TARGET_BOARD_BCM28XX
select ADK_LINUX_KERNEL_PREEMPT__LL if !ADK_APPLIANCE_CONVOLUTION # for better performance and no sound problems
help
Create a small kodi multimedia appliance. Please enable additional features
diff --git a/tasks/004-development b/tasks/004-development
index d486a97e8..229dbc5a8 100644
--- a/tasks/004-development
+++ b/tasks/004-development
@@ -4,10 +4,13 @@ config ADK_APPLIANCE_DEVELOPMENT
select ADK_PACKAGE_GCC
select ADK_PACKAGE_GXX
select ADK_PACKAGE_BINUTILS
+ select ADK_PACKAGE_BASH
select ADK_PACKAGE_MAKE
select ADK_PACKAGE_BISON
select ADK_PACKAGE_FLEX
select ADK_PACKAGE_PKGCONF
+ select ADK_PACKAGE_PATCH
+ select ADK_PACKAGE_PERL
select ADK_PACKAGE_AUTOCONF
select ADK_PACKAGE_AUTOMAKE
select ADK_PACKAGE_LIBTOOL
@@ -15,9 +18,16 @@ config ADK_APPLIANCE_DEVELOPMENT
select ADK_PACKAGE_MUSL_DEV if ADK_TARGET_LIB_MUSL
select ADK_PACKAGE_UCLIBC_NG_DEV if ADK_TARGET_LIB_UCLIBC_NG
select ADK_PACKAGE_GIT
+ select ADK_PACKAGE_GIT_WITH_OPENSSL
+ select ADK_PACKAGE_M4
select ADK_PACKAGE_OPENSSH
+ select ADK_PACKAGE_OPENSSH_WITH_OPENSSL
select ADK_PACKAGE_OPENSSH_CLIENT
- select ADK_PACKAGE_WGET
+ select ADK_PACKAGE_OPENSSH_SERVER
+ select ADK_PACKAGE_CURL
+ select ADK_PACKAGE_LIBCURL_WITH_OPENSSL
+ select ADK_PACKAGE_ZLIB_DEV
+ select ADK_PACKAGE_LIBNCURSES_DEV
help
If you want to develop software on your target, choose this
appliance, so gcc, binutils and co will be selected.
diff --git a/toolchain/Makefile b/toolchain/Makefile
index a7302bdb2..55e3ccce5 100644
--- a/toolchain/Makefile
+++ b/toolchain/Makefile
@@ -41,7 +41,7 @@ endif
ifeq ($(ADK_TOOLCHAIN_WITH_GDB),y)
# disable gdb for some architectures
-ifeq ($(ADK_TARGET_ARCH_ARC)$(ADK_TARGET_ARCH_CR16)$(ADK_TARGET_ARCH_EPIPHANY)$(ADK_TARGET_ARCH_METAG)$(ADK_TARGET_ARCH_NDS32)$(ADK_TARGET_ARCH_OR1K),)
+ifeq ($(ADK_TARGET_ARCH_CR16)$(ADK_TARGET_ARCH_EPIPHANY)$(ADK_TARGET_ARCH_METAG)$(ADK_TARGET_ARCH_NDS32),)
TARGETS+=gdb
GDB:=gdb-install
endif
diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile
index 7136cf66e..63b1080fb 100644
--- a/toolchain/binutils/Makefile
+++ b/toolchain/binutils/Makefile
@@ -28,6 +28,10 @@ else
CONFOPTS+= --disable-gold
endif
+ifeq ($(ADK_TARGET_ARCH_ARC),y)
+CONFOPTS+= --enable-lto --enable-plugins
+endif
+
ifeq ($(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_CPU_CF),)
CONFOPTS+= --disable-multilib
else
@@ -44,7 +48,6 @@ ifeq ($(ADK_TARGET_ARCH_XTENSA),y)
--strip-components=1 -C $(WRKSRC) binutils
endif
(cd $(WRKBUILD); PATH='$(HOST_PATH)' \
- LDFLAGS=-ldl \
MAKEINFO=true \
M4='${STAGING_HOST_DIR}/usr/bin/m4' \
$(WRKBUILD)/configure \
@@ -58,6 +61,7 @@ endif
--disable-gdb \
--enable-obsolete \
--disable-werror \
+ --disable-gprof \
--disable-install-libiberty \
${CONFOPTS} \
);
@@ -70,7 +74,7 @@ $(WRKBUILD)/.compiled: $(WRKBUILD)/.configured
$(WRKBUILD)/.installed: $(WRKBUILD)/.compiled
PATH='$(HOST_PATH)' $(MAKE) MAKEINFO=true -C $(WRKBUILD) install
-ifeq ($(ADK_TARGET_ARCH_H8300)$(ADK_TARGET_ARCH_NDS32)$(ADK_TARGET_ARCH_SH),y)
+ifeq ($(ADK_TARGET_ARCH_KVX)$(ADK_TARGET_ARCH_H8300)$(ADK_TARGET_ARCH_NDS32)$(ADK_TARGET_ARCH_SH),y)
$(INSTALL_DIR) $(STAGING_TARGET_DIR)/usr/lib/ldscripts
$(CP) $(WRKBUILD)/ld/ldscripts/* $(STAGING_TARGET_DIR)/usr/lib/ldscripts/
endif
diff --git a/toolchain/binutils/Makefile.inc b/toolchain/binutils/Makefile.inc
index ac252de32..758539cf0 100644
--- a/toolchain/binutils/Makefile.inc
+++ b/toolchain/binutils/Makefile.inc
@@ -2,40 +2,61 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= binutils
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_37),y)
-PKG_VERSION:= 2.37
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_42),y)
+PKG_VERSION:= 2.42
PKG_RELEASE:= 1
-PKG_HASH:= 820d9724f020a3e69cb337893a0b63c2db161dadcb0e06fc11dc29eb1e84a32c
+PKG_HASH:= 5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc
PKG_SITES:= ${MASTER_SITE_GNU:=binutils/}
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_28),y)
-PKG_VERSION:= 2.28
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_41),y)
+PKG_VERSION:= 2.41
PKG_RELEASE:= 1
-PKG_HASH:= cd717966fc761d840d451dbd58d44e1e5b92949d2073d75b73fccb476d772fcf
+PKG_HASH:= 48d00a8dc73aa7d2394a7dc069b96191d95e8de8f0da6dc91da5cce655c20e45
PKG_SITES:= ${MASTER_SITE_GNU:=binutils/}
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_ARC),y)
-PKG_VERSION:= arc-2020.09
-PKG_GIT:= tag
-PKG_RELEASE:= 1
-PKG_SITES:= https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_40),y)
+PKG_VERSION:= 2.40
+PKG_RELEASE:= 1
+PKG_HASH:= d7f82c4047decf43a6f769ac32456a92ddb6932409a585c633cdd4e9df23d956
+PKG_SITES:= ${MASTER_SITE_GNU:=binutils/}
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_39),y)
+PKG_VERSION:= 2.39
+PKG_RELEASE:= 1
+PKG_HASH:= d12ea6f239f1ffe3533ea11ad6e224ffcb89eb5d01bbea589e9158780fa11f10
+PKG_SITES:= ${MASTER_SITE_GNU:=binutils/}
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_38),y)
+PKG_VERSION:= 2.38
+PKG_RELEASE:= 1
+PKG_HASH:= b3f1dc5b17e75328f19bd88250bee2ef9f91fc8cbb7bd48bdb31390338636052
+PKG_SITES:= ${MASTER_SITE_GNU:=binutils/}
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_37),y)
+PKG_VERSION:= 2.37
+PKG_RELEASE:= 1
+PKG_HASH:= c44968b97cd86499efbc4b4ab7d98471f673e5414c554ef54afa930062dbbfcb
+PKG_SITES:= ${MASTER_SITE_GNU:=binutils/}
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
ifeq ($(ADK_TOOLCHAIN_BINUTILS_KVX),y)
-PKG_VERSION:= c5e8437af055869c8666a1c1e5a391d9af5be0c0
+PKG_VERSION:= 782547a4e2bdf1308728032853678ca69bb154ea
PKG_GIT:= hash
PKG_RELEASE:= 1
PKG_SITES:= https://github.com/kalray/gdb-binutils.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_NDS32),y)
-PKG_VERSION:= nds32-binutils-2.30-branch-open
-PKG_GIT:= branch
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_ARC),y)
+PKG_VERSION:= arc-2023.09
+PKG_GIT:= tag
PKG_RELEASE:= 1
-PKG_SITES:= https://github.com/andestech/binutils.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+PKG_SITES:= https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb.git
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
ifeq ($(ADK_TOOLCHAIN_BINUTILS_AVR32),y)
PKG_VERSION:= 2.20.1
@@ -48,5 +69,5 @@ ifeq ($(ADK_TOOLCHAIN_BINUTILS_GIT),y)
PKG_VERSION:= git
PKG_RELEASE:= 1
PKG_SITES:= git://sourceware.org/git/binutils-gdb.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
diff --git a/toolchain/binutils/patches/2.20.1/newer-gcc.patch b/toolchain/binutils/patches/2.20.1/newer-gcc.patch
new file mode 100644
index 000000000..b7f42e447
--- /dev/null
+++ b/toolchain/binutils/patches/2.20.1/newer-gcc.patch
@@ -0,0 +1,24 @@
+diff -Nur binutils-2.20.1.orig/binutils/readelf.c binutils-2.20.1/binutils/readelf.c
+--- binutils-2.20.1.orig/binutils/readelf.c 2023-02-03 11:04:53.722082738 +0100
++++ binutils-2.20.1/binutils/readelf.c 2023-02-03 11:05:27.049296372 +0100
+@@ -150,7 +150,7 @@
+ #include "filenames.h"
+
+ char * program_name = "readelf";
+-int do_wide;
++extern int do_wide;
+ static long archive_file_offset;
+ static unsigned long archive_file_size;
+ static unsigned long dynamic_addr;
+diff -Nur binutils-2.20.1.orig/gas/config/tc-avr32.c binutils-2.20.1/gas/config/tc-avr32.c
+--- binutils-2.20.1.orig/gas/config/tc-avr32.c 2023-02-03 11:04:53.726082644 +0100
++++ binutils-2.20.1/gas/config/tc-avr32.c 2023-02-03 11:06:12.164234434 +0100
+@@ -47,7 +47,7 @@
+
+ /* Flags given on the command line */
+ static int avr32_pic = FALSE;
+-int linkrelax = FALSE;
++//extern int linkrelax = FALSE;
+ int avr32_iarcompat = FALSE;
+
+ /* This array holds the chars that always start a comment. */
diff --git a/toolchain/binutils/patches/2.28/lm32.patch b/toolchain/binutils/patches/2.28/lm32.patch
new file mode 100644
index 000000000..962281625
--- /dev/null
+++ b/toolchain/binutils/patches/2.28/lm32.patch
@@ -0,0 +1,24 @@
+diff -Nur binutils-2.28.orig/bfd/config.bfd binutils-2.28/bfd/config.bfd
+--- binutils-2.28.orig/bfd/config.bfd 2017-03-02 09:23:53.000000000 +0100
++++ binutils-2.28/bfd/config.bfd 2023-08-27 11:54:08.526040118 +0200
+@@ -924,7 +924,7 @@
+ ;;
+
+ lm32-*-*linux*)
+- targ_defvec=lm32_elf32_fdpic_vec
++ targ_defvec=lm32_elf32_vec
+ targ_selvecs=lm32_elf32_vec
+ ;;
+
+diff -Nur binutils-2.28.orig/ld/configure.tgt binutils-2.28/ld/configure.tgt
+--- binutils-2.28.orig/ld/configure.tgt 2017-03-02 09:23:54.000000000 +0100
++++ binutils-2.28/ld/configure.tgt 2023-08-27 11:54:43.882874903 +0200
+@@ -416,7 +416,7 @@
+ ;;
+ iq2000-*-elf) targ_emul=elf32iq2000 ; targ_extra_emuls="elf32iq10"
+ ;;
+-lm32-*-*linux*) targ_emul=elf32lm32fd ;;
++lm32-*-*linux*) targ_emul=elf32lm32 ;;
+ lm32-*-*) targ_emul=elf32lm32 ; targ_extra_emuls="elf32lm32fd"
+ ;;
+ m32c-*-elf | m32c-*-rtems*)
diff --git a/toolchain/binutils/patches/2.37/0001-i386-Allow-GOT32-relocations-against-ABS-symbols.patch b/toolchain/binutils/patches/2.37/0001-i386-Allow-GOT32-relocations-against-ABS-symbols.patch
new file mode 100644
index 000000000..3e2928226
--- /dev/null
+++ b/toolchain/binutils/patches/2.37/0001-i386-Allow-GOT32-relocations-against-ABS-symbols.patch
@@ -0,0 +1,47 @@
+From 30a954525f4e53a9cd50a1a8a6f201c7cf6595c7 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Mon, 7 Feb 2022 15:22:19 -0800
+Subject: [PATCH] i386: Allow GOT32 relocations against ABS symbols
+
+GOT32 relocations are allowed since absolute value + addend is stored in
+the GOT slot.
+
+Tested on glibc 2.35 build with GCC 11.2 and -Os.
+
+bfd/
+
+ PR ld/28870
+ * elfxx-x86.c (_bfd_elf_x86_valid_reloc_p): Also allow GOT32
+ relocations.
+
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+
+diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
+index 7ac2411fc80..d00dc45677b 100644
+--- a/bfd/elfxx-x86.c
++++ b/bfd/elfxx-x86.c
+@@ -1942,9 +1942,9 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
+ irel = *rel;
+
+ /* Only allow relocations against absolute symbol, which can be
+- resolved as absolute value + addend. GOTPCREL relocations
+- are allowed since absolute value + addend is stored in the
+- GOT slot. */
++ resolved as absolute value + addend. GOTPCREL and GOT32
++ relocations are allowed since absolute value + addend is
++ stored in the GOT slot. */
+ if (bed->target_id == X86_64_ELF_DATA)
+ {
+ r_type &= ~R_X86_64_converted_reloc_bit;
+@@ -1965,7 +1965,9 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
+ else
+ valid_p = (r_type == R_386_32
+ || r_type == R_386_16
+- || r_type == R_386_8);
++ || r_type == R_386_8
++ || r_type == R_386_GOT32
++ || r_type == R_386_GOT32X);
+
+ if (valid_p)
+ *no_dynreloc_p = true;
diff --git a/toolchain/binutils/patches/2.37/nds32-uclibc.patch b/toolchain/binutils/patches/2.37/nds32-uclibc.patch
new file mode 100644
index 000000000..b14e98511
--- /dev/null
+++ b/toolchain/binutils/patches/2.37/nds32-uclibc.patch
@@ -0,0 +1,15 @@
+diff -Nur binutils-2.37.orig/ld/configure.tgt binutils-2.37/ld/configure.tgt
+--- binutils-2.37.orig/ld/configure.tgt 2021-07-08 13:37:20.000000000 +0200
++++ binutils-2.37/ld/configure.tgt 2022-01-21 03:23:49.296011413 +0100
+@@ -594,9 +594,9 @@
+ nds32*be-*-elf*) targ_emul=nds32belf
+ targ_extra_emuls="nds32elf nds32elf16m nds32belf16m"
+ ;;
+-nds32*le-*-linux-gnu*) targ_emul=nds32elf_linux
++nds32*le-*-linux-*) targ_emul=nds32elf_linux
+ ;;
+-nds32*be-*-linux-gnu*) targ_emul=nds32belf_linux
++nds32*be-*-linux-*) targ_emul=nds32belf_linux
+ ;;
+ nios2*-*-linux*) targ_emul=nios2linux
+ ;;
diff --git a/toolchain/binutils/patches/2.38/0001-binutils-2.38-vs.-ppc32-linux-kernel.patch b/toolchain/binutils/patches/2.38/0001-binutils-2.38-vs.-ppc32-linux-kernel.patch
new file mode 100644
index 000000000..c62652c95
--- /dev/null
+++ b/toolchain/binutils/patches/2.38/0001-binutils-2.38-vs.-ppc32-linux-kernel.patch
@@ -0,0 +1,55 @@
+From ed9b2e40ebffec835d63473367da8dd8f80d7d5b Mon Sep 17 00:00:00 2001
+From: Alan Modra <amodra@gmail.com>
+Date: Mon, 21 Feb 2022 10:58:57 +1030
+Subject: [PATCH] binutils 2.38 vs. ppc32 linux kernel
+
+Commit b25f942e18d6 made .machine more strict. Weaken it again.
+
+ * config/tc-ppc.c (ppc_machine): Treat an early .machine specially,
+ keeping sticky options to work around gcc bugs.
+
+(cherry picked from commit cebc89b9328eab994f6b0314c263f94e7949a553)
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ gas/config/tc-ppc.c | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
+index 054f9c72161..89bc7d3f9b9 100644
+--- a/gas/config/tc-ppc.c
++++ b/gas/config/tc-ppc.c
+@@ -5965,7 +5965,30 @@ ppc_machine (int ignore ATTRIBUTE_UNUSED)
+ options do not count as a new machine, instead they add
+ to currently selected opcodes. */
+ ppc_cpu_t machine_sticky = 0;
+- new_cpu = ppc_parse_cpu (ppc_cpu, &machine_sticky, cpu_string);
++ /* Unfortunately, some versions of gcc emit a .machine
++ directive very near the start of the compiler's assembly
++ output file. This is bad because it overrides user -Wa
++ cpu selection. Worse, there are versions of gcc that
++ emit the *wrong* cpu, not even respecting the -mcpu given
++ to gcc. See gcc pr101393. And to compound the problem,
++ as of 20220222 gcc doesn't pass the correct cpu option to
++ gas on the command line. See gcc pr59828. Hack around
++ this by keeping sticky options for an early .machine. */
++ asection *sec;
++ for (sec = stdoutput->sections; sec != NULL; sec = sec->next)
++ {
++ segment_info_type *info = seg_info (sec);
++ /* Are the frags for this section perturbed from their
++ initial state? Even .align will count here. */
++ if (info != NULL
++ && (info->frchainP->frch_root != info->frchainP->frch_last
++ || info->frchainP->frch_root->fr_type != rs_fill
++ || info->frchainP->frch_root->fr_fix != 0))
++ break;
++ }
++ new_cpu = ppc_parse_cpu (ppc_cpu,
++ sec == NULL ? &sticky : &machine_sticky,
++ cpu_string);
+ if (new_cpu != 0)
+ ppc_cpu = new_cpu;
+ else
+--
+2.30.2
+
diff --git a/toolchain/binutils/patches/2.38/nds32-uclibc.patch b/toolchain/binutils/patches/2.38/nds32-uclibc.patch
new file mode 100644
index 000000000..b14e98511
--- /dev/null
+++ b/toolchain/binutils/patches/2.38/nds32-uclibc.patch
@@ -0,0 +1,15 @@
+diff -Nur binutils-2.37.orig/ld/configure.tgt binutils-2.37/ld/configure.tgt
+--- binutils-2.37.orig/ld/configure.tgt 2021-07-08 13:37:20.000000000 +0200
++++ binutils-2.37/ld/configure.tgt 2022-01-21 03:23:49.296011413 +0100
+@@ -594,9 +594,9 @@
+ nds32*be-*-elf*) targ_emul=nds32belf
+ targ_extra_emuls="nds32elf nds32elf16m nds32belf16m"
+ ;;
+-nds32*le-*-linux-gnu*) targ_emul=nds32elf_linux
++nds32*le-*-linux-*) targ_emul=nds32elf_linux
+ ;;
+-nds32*be-*-linux-gnu*) targ_emul=nds32belf_linux
++nds32*be-*-linux-*) targ_emul=nds32belf_linux
+ ;;
+ nios2*-*-linux*) targ_emul=nios2linux
+ ;;
diff --git a/toolchain/binutils/patches/2.41/lm32.patch b/toolchain/binutils/patches/2.41/lm32.patch
new file mode 100644
index 000000000..dcbb0d541
--- /dev/null
+++ b/toolchain/binutils/patches/2.41/lm32.patch
@@ -0,0 +1,24 @@
+diff -Nur binutils-2.41.orig/bfd/config.bfd binutils-2.41/bfd/config.bfd
+--- binutils-2.41.orig/bfd/config.bfd 2023-07-03 01:00:00.000000000 +0200
++++ binutils-2.41/bfd/config.bfd 2023-09-07 17:03:12.853045008 +0200
+@@ -803,7 +803,7 @@
+ ;;
+
+ lm32-*-*linux*)
+- targ_defvec=lm32_elf32_fdpic_vec
++ targ_defvec=lm32_elf32_vec
+ targ_selvecs=lm32_elf32_vec
+ ;;
+
+diff -Nur binutils-2.41.orig/ld/configure.tgt binutils-2.41/ld/configure.tgt
+--- binutils-2.41.orig/ld/configure.tgt 2023-07-03 01:00:00.000000000 +0200
++++ binutils-2.41/ld/configure.tgt 2023-09-07 17:03:44.364298973 +0200
+@@ -468,7 +468,7 @@
+ targ_extra_emuls="elf32iq10"
+ targ_extra_ofiles=ldelfgen.o
+ ;;
+-lm32-*-*linux*) targ_emul=elf32lm32fd
++lm32-*-*linux*) targ_emul=elf32lm32
+ ;;
+ lm32-*-*) targ_emul=elf32lm32
+ targ_extra_emuls="elf32lm32fd"
diff --git a/toolchain/binutils/patches/2.42/j2.patch b/toolchain/binutils/patches/2.42/j2.patch
new file mode 100644
index 000000000..42c7274aa
--- /dev/null
+++ b/toolchain/binutils/patches/2.42/j2.patch
@@ -0,0 +1,584 @@
+diff -Nur binutils-2.42.orig/bfd/archures.c binutils-2.42/bfd/archures.c
+--- binutils-2.42.orig/bfd/archures.c 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/bfd/archures.c 2024-02-22 16:50:03.657904349 +0100
+@@ -284,10 +284,12 @@
+ .#define bfd_mach_sh_dsp 0x2d
+ .#define bfd_mach_sh2a 0x2a
+ .#define bfd_mach_sh2a_nofpu 0x2b
++.#define bfd_mach_shj2 0x2c
+ .#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+ .#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+ .#define bfd_mach_sh2a_or_sh4 0x2a3
+ .#define bfd_mach_sh2a_or_sh3e 0x2a4
++.#define bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu 0x2a5
+ .#define bfd_mach_sh2e 0x2e
+ .#define bfd_mach_sh3 0x30
+ .#define bfd_mach_sh3_nommu 0x31
+diff -Nur binutils-2.42.orig/bfd/bfd-in2.h binutils-2.42/bfd/bfd-in2.h
+--- binutils-2.42.orig/bfd/bfd-in2.h 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/bfd/bfd-in2.h 2024-02-22 16:50:03.661904381 +0100
+@@ -1540,10 +1540,12 @@
+ #define bfd_mach_sh_dsp 0x2d
+ #define bfd_mach_sh2a 0x2a
+ #define bfd_mach_sh2a_nofpu 0x2b
++#define bfd_mach_shj2 0x2c
+ #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+ #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+ #define bfd_mach_sh2a_or_sh4 0x2a3
+ #define bfd_mach_sh2a_or_sh3e 0x2a4
++#define bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu 0x2a5
+ #define bfd_mach_sh2e 0x2e
+ #define bfd_mach_sh3 0x30
+ #define bfd_mach_sh3_nommu 0x31
+diff -Nur binutils-2.42.orig/bfd/cpu-sh.c binutils-2.42/bfd/cpu-sh.c
+--- binutils-2.42.orig/bfd/cpu-sh.c 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/bfd/cpu-sh.c 2024-02-22 16:50:03.661904381 +0100
+@@ -63,7 +63,9 @@
+ N (bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu, "sh2a-nofpu-or-sh4-nommu-nofpu", false, arch_info_struct + 16),
+ N (bfd_mach_sh2a_nofpu_or_sh3_nommu, "sh2a-nofpu-or-sh3-nommu", false, arch_info_struct + 17),
+ N (bfd_mach_sh2a_or_sh4, "sh2a-or-sh4", false, arch_info_struct + 18),
+- N (bfd_mach_sh2a_or_sh3e, "sh2a-or-sh3e", false, NULL)
++ N (bfd_mach_sh2a_or_sh3e, "sh2a-or-sh3e", false, arch_info_struct + 19),
++ N (bfd_mach_shj2, "j2", false, arch_info_struct + 20),
++ N (bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu, "sh2a-nofpu-or-sh3-nommu-or-j2-nofpu", false, NULL)
+ };
+
+ const bfd_arch_info_type bfd_sh_arch =
+@@ -99,6 +101,8 @@
+ { bfd_mach_sh4_nofpu, arch_sh4_nofpu, arch_sh4_nofpu_up },
+ { bfd_mach_sh4_nommu_nofpu, arch_sh4_nommu_nofpu, arch_sh4_nommu_nofpu_up },
+ { bfd_mach_sh4a_nofpu, arch_sh4a_nofpu, arch_sh4a_nofpu_up },
++ { bfd_mach_shj2, arch_shj2, arch_shj2_up },
++ { bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu, arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu, arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu_up },
+ { 0, 0, 0 } /* Terminator. */
+ };
+
+diff -Nur binutils-2.42.orig/binutils/readelf.c binutils-2.42/binutils/readelf.c
+--- binutils-2.42.orig/binutils/readelf.c 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/binutils/readelf.c 2024-02-22 16:53:19.799614987 +0100
+@@ -4326,6 +4326,12 @@
+ case EF_SH2A_SH3E:
+ out = stpcpy (out, ", sh2a-or-sh3e");
+ break;
++ case EF_SHJ2:
++ out = stpcpy (out, ", j2");
++ break;
++ case EF_SH2A_SH3_SHJ2:
++ out = stpcpy (out, ", sh2a-nofpu-or-sh3-nommu-or-shj2 -nofpu");
++ break;
+ default:
+ out = stpcpy (out, _(", unknown ISA"));
+ break;
+diff -Nur binutils-2.42.orig/gas/config/tc-sh.c binutils-2.42/gas/config/tc-sh.c
+--- binutils-2.42.orig/gas/config/tc-sh.c 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/config/tc-sh.c 2024-02-22 16:50:03.685904574 +0100
+@@ -1251,6 +1251,8 @@
+ if (*ptr == ',')
+ ptr++;
+ get_operand (&ptr, operand + 2);
++ if (strcmp (info->name,"cas") == 0)
++ operand[2].type = A_IND_0;
+ }
+ }
+ }
+@@ -1775,7 +1777,10 @@
+ goto fail;
+ reg_m = 4;
+ break;
+-
++ case A_IND_0:
++ if (user->reg != 0)
++ goto fail;
++ break;
+ default:
+ printf (_("unhandled %d\n"), arg);
+ goto fail;
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh3-nommu.s 2024-02-22 16:50:03.685904574 +0100
+@@ -12,8 +12,6 @@
+ sh2a_nofpu_or_sh3_nommu:
+ ! Instructions introduced into sh2a-nofpu-or-sh3-nommu
+ pref @r4 ;!/* 0000nnnn10000011 pref @<REG_N> */{"pref",{A_IND_N},{HEX_0,REG_N,HEX_8,HEX_3}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
+
+ ! Instructions inherited from ancestors: sh sh2
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-nofpu-or-sh4-nommu-nofpu.s 2024-02-22 16:50:03.685904574 +0100
+@@ -12,7 +12,7 @@
+ sh2a_nofpu_or_sh4_nommu_nofpu:
+ ! Instructions introduced into sh2a-nofpu-or-sh4-nommu-nofpu
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -119,8 +119,8 @@
+ rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-nofpu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-nofpu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-nofpu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-nofpu.s 2024-02-22 16:50:03.685904574 +0100
+@@ -64,7 +64,7 @@
+ movu.b @(2048,r5),r4 ;!/* 0011nnnnmmmm0001 1000dddddddddddd movu.b @(<DISP12>,<REG_M>),<REG_N> */ {"movu.b",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_8,DISP0_12}, arch_sh2a_nofpu_up | arch_op32}
+ movu.w @(2048,r5),r4 ;!/* 0011nnnnmmmm0001 1001dddddddddddd movu.w @(<DISP12>,<REG_M>),<REG_N> */ {"movu.w",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_9,DISP0_12BY2}, arch_sh2a_nofpu_up | arch_op32}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -171,8 +171,8 @@
+ rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-or-sh3e.s 2024-02-22 16:50:03.689904606 +0100
+@@ -13,7 +13,7 @@
+ ! Instructions introduced into sh2a-or-sh3e
+ fsqrt fr1 ;!/* 1111nnnn01101101 fsqrt <F_REG_N> */{"fsqrt",{F_REG_N},{HEX_F,REG_N,HEX_6,HEX_D}, arch_sh2a_or_sh3e_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2e
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2e
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -124,8 +124,8 @@
+ rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh2a-or-sh4.s 2024-02-22 16:50:03.689904606 +0100
+@@ -39,7 +39,7 @@
+ fsub dr4,dr2 ;!/* 1111nnn0mmm00001 fsub <D_REG_M>,<D_REG_N>*/{"fsub",{D_REG_M,D_REG_N},{HEX_F,REG_N,REG_M,HEX_1}, arch_sh2a_or_sh4_up}
+ ftrc dr2,FPUL ;!/* 1111nnnn00111101 ftrc <D_REG_N>,FPUL*/{"ftrc",{D_REG_N,FPUL_M},{HEX_F,REG_N,HEX_3,HEX_D}, arch_sh2a_or_sh4_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2e
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2e
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -150,8 +150,8 @@
+ rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a.s binutils-2.42/gas/testsuite/gas/sh/arch/sh2a.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh2a.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh2a.s 2024-02-22 16:50:03.689904606 +0100
+@@ -16,7 +16,7 @@
+ fmov.s fr2,@(2048,r4) ;!/* 0011nnnnmmmm0001 0011dddddddddddd fmov.s <F_REG_M>,@(<DISP12>,<REG_N>) */ {"fmov.s",{F_REG_M,A_DISP_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_3,DISP1_12BY4}, arch_sh2a_up | arch_op32}
+ fmov.s @(2048,r5),fr1 ;!/* 0011nnnnmmmm0001 0111dddddddddddd fmov.s @(<DISP12>,<REG_M>),<F_REG_N> */ {"fmov.s",{A_DISP_REG_M,F_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_7,DISP0_12BY4}, arch_sh2a_up | arch_op32}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2a-or-sh4 sh2e
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2a-or-sh4 sh2e
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -140,8 +140,8 @@
+ rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3-dsp.s binutils-2.42/gas/testsuite/gas/sh/arch/sh3-dsp.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3-dsp.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh3-dsp.s 2024-02-22 16:50:03.689904606 +0100
+@@ -12,7 +12,7 @@
+ sh3_dsp:
+ ! Instructions introduced into sh3-dsp
+
+-! Instructions inherited from ancestors: sh sh-dsp sh2 sh2a-nofpu-or-sh3-nommu sh3 sh3-nommu
++! Instructions inherited from ancestors: sh sh-dsp sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh3 sh3-nommu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -152,8 +152,8 @@
+ setrc #4 ;!/* 10000010i8*1.... setrc #<imm> */{"setrc",{A_IMM},{HEX_8,HEX_2,IMM0_8}, arch_sh_dsp_up}
+ repeat 10 20 r4 ;!/* repeat start end <REG_N> */{"repeat",{A_DISP_PC,A_DISP_PC,A_REG_N},{REPEAT,REG_N,HEX_1,HEX_4}, arch_sh_dsp_up}
+ repeat 10 20 #4 ;!/* repeat start end #<imm> */{"repeat",{A_DISP_PC,A_DISP_PC,A_IMM},{REPEAT,HEX_2,IMM0_8,HEX_8}, arch_sh_dsp_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3e.s binutils-2.42/gas/testsuite/gas/sh/arch/sh3e.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3e.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh3e.s 2024-02-22 16:50:03.689904606 +0100
+@@ -12,7 +12,7 @@
+ sh3e:
+ ! Instructions introduced into sh3e
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-or-sh3e sh2e sh3 sh3-nommu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-or-sh3e sh2e sh3 sh3-nommu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -132,8 +132,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3-nommu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh3-nommu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3-nommu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh3-nommu.s 2024-02-22 16:50:03.689904606 +0100
+@@ -26,7 +26,7 @@
+ stc.l SPC,@-r4 ;!/* 0100nnnn01000011 stc.l SPC,@-<REG_N> */{"stc.l",{A_SPC,A_DEC_N},{HEX_4,REG_N,HEX_4,HEX_3}, arch_sh3_nommu_up}
+ stc.l r1_bank,@-r4 ;!/* 0100nnnn1xxx0011 stc.l Rn_BANK,@-<REG_N> */{"stc.l",{A_REG_B,A_DEC_N},{HEX_4,REG_N,REG_B,HEX_3}, arch_sh3_nommu_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -133,8 +133,8 @@
+ rte ;!/* 0000000000101011 rte */{"rte",{0},{HEX_0,HEX_0,HEX_2,HEX_B}, arch_sh_up}
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3.s binutils-2.42/gas/testsuite/gas/sh/arch/sh3.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh3.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh3.s 2024-02-22 16:50:03.689904606 +0100
+@@ -13,7 +13,7 @@
+ ! Instructions introduced into sh3
+ ldtlb ;!/* 0000000000111000 ldtlb */{"ldtlb",{0},{HEX_0,HEX_0,HEX_3,HEX_8}, arch_sh3_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh3-nommu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh3-nommu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -128,8 +128,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4al-dsp.s binutils-2.42/gas/testsuite/gas/sh/arch/sh4al-dsp.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4al-dsp.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh4al-dsp.s 2024-02-22 16:50:03.689904606 +0100
+@@ -48,7 +48,7 @@
+ dct pswap x1,m0 ;!/* 10011101xx01zzzz pswap <DSP_REG_X>,<DSP_REG_N> */ {"pswap", {DSP_REG_X,DSP_REG_N},{PPI,PPIC,HEX_9,HEX_D,HEX_1}, arch_sh4al_dsp_up}
+ dct pswap y0,m0 ;!/* 1011110101yyzzzz pswap <DSP_REG_Y>,<DSP_REG_N> */ {"pswap", {DSP_REG_Y,DSP_REG_N},{PPI,PPIC,HEX_B,HEX_D,HEX_4}, arch_sh4al_dsp_up}
+
+-! Instructions inherited from ancestors: sh sh-dsp sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh3 sh3-dsp sh3-nommu sh4-nofpu sh4-nommu-nofpu sh4a-nofpu
++! Instructions inherited from ancestors: sh sh-dsp sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh3 sh3-dsp sh3-nommu sh4-nofpu sh4-nommu-nofpu sh4a-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -202,8 +202,8 @@
+ setrc #4 ;!/* 10000010i8*1.... setrc #<imm> */{"setrc",{A_IMM},{HEX_8,HEX_2,IMM0_8}, arch_sh_dsp_up}
+ repeat 10 20 r4 ;!/* repeat start end <REG_N> */{"repeat",{A_DISP_PC,A_DISP_PC,A_REG_N},{REPEAT,REG_N,HEX_1,HEX_4}, arch_sh_dsp_up}
+ repeat 10 20 #4 ;!/* repeat start end #<imm> */{"repeat",{A_DISP_PC,A_DISP_PC,A_IMM},{REPEAT,HEX_2,IMM0_8,HEX_8}, arch_sh_dsp_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4a-nofpu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh4a-nofpu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4a-nofpu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh4a-nofpu.s 2024-02-22 16:50:03.693904638 +0100
+@@ -19,7 +19,7 @@
+ prefi @r4 ;!/* 0000nnnn11010011 prefi @<REG_N> */{"prefi",{A_IND_N},{HEX_0,REG_N,HEX_D,HEX_3}, arch_sh4a_nofpu_up}
+ synco ;!/* 0000000010101011 synco */{"synco",{0},{HEX_0,HEX_0,HEX_A,HEX_B}, arch_sh4a_nofpu_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh3 sh3-nommu sh4-nofpu sh4-nommu-nofpu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh3 sh3-nommu sh4-nofpu sh4-nommu-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -143,8 +143,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4a.s binutils-2.42/gas/testsuite/gas/sh/arch/sh4a.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4a.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh4a.s 2024-02-22 16:50:03.693904638 +0100
+@@ -13,7 +13,7 @@
+ ! Instructions introduced into sh4a
+ fpchg ;!/* 1111011111111101 fpchg */{"fpchg",{0},{HEX_F,HEX_7,HEX_F,HEX_D}, arch_sh4a_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2a-or-sh4 sh2e sh3 sh3-nommu sh3e sh4 sh4-nofpu sh4-nommu-nofpu sh4a-nofpu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2a-or-sh4 sh2e sh3 sh3-nommu sh3e sh4 sh4-nofpu sh4-nommu-nofpu sh4a-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -147,8 +147,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4-nofpu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh4-nofpu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4-nofpu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh4-nofpu.s 2024-02-22 16:50:03.693904638 +0100
+@@ -12,7 +12,7 @@
+ sh4_nofpu:
+ ! Instructions introduced into sh4-nofpu
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh3 sh3-nommu sh4-nommu-nofpu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh3 sh3-nommu sh4-nommu-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -136,8 +136,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s binutils-2.42/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh4-nommu-nofpu.s 2024-02-22 16:50:03.693904638 +0100
+@@ -24,7 +24,7 @@
+ stc.l SGR,@-r4 ;!/* 0100nnnn00110010 stc.l SGR,@-<REG_N> */{"stc.l",{A_SGR,A_DEC_N},{HEX_4,REG_N,HEX_3,HEX_2}, arch_sh4_nommu_nofpu_up}
+ stc.l DBR,@-r4 ;!/* 0100nnnn11110010 stc.l DBR,@-<REG_N> */{"stc.l",{A_DBR,A_DEC_N},{HEX_4,REG_N,HEX_F,HEX_2}, arch_sh4_nommu_nofpu_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh3-nommu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh3-nommu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -139,8 +139,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4.s binutils-2.42/gas/testsuite/gas/sh/arch/sh4.s
+--- binutils-2.42.orig/gas/testsuite/gas/sh/arch/sh4.s 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/gas/testsuite/gas/sh/arch/sh4.s 2024-02-22 16:50:03.693904638 +0100
+@@ -17,7 +17,7 @@
+ fsrra fr1 ;!/* 1111nnnn01111101 fsrra <F_REG_N> */{"fsrra",{F_REG_N},{HEX_F,REG_N,HEX_7,HEX_D}, arch_sh4_up}
+ ftrv xmtrx,fv0 ;!/* 1111nn0111111101 ftrv XMTRX_M4,<V_REG_n>*/{"ftrv",{XMTRX_M4,V_REG_N},{HEX_F,REG_N_B01,HEX_F,HEX_D}, arch_sh4_up}
+
+-! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2a-or-sh4 sh2e sh3 sh3-nommu sh3e sh4-nofpu sh4-nommu-nofpu
++! Instructions inherited from ancestors: sh sh2 sh2a-nofpu-or-sh3-nommu sh2a-nofpu-or-sh3-nommu-or-sh2j-nofpu sh2a-nofpu-or-sh4-nommu-nofpu sh2a-or-sh3e sh2a-or-sh4 sh2e sh3 sh3-nommu sh3e sh4-nofpu sh4-nommu-nofpu
+ add #4,r4 ;!/* 0111nnnni8*1.... add #<imm>,<REG_N> */{"add",{A_IMM,A_REG_N},{HEX_7,REG_N,IMM0_8}, arch_sh_up}
+ add r5,r4 ;!/* 0011nnnnmmmm1100 add <REG_M>,<REG_N> */{"add",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_C}, arch_sh_up}
+ addc r5,r4 ;!/* 0011nnnnmmmm1110 addc <REG_M>,<REG_N>*/{"addc",{ A_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_E}, arch_sh_up}
+@@ -145,8 +145,8 @@
+ rts ;!/* 0000000000001011 rts */{"rts",{0},{HEX_0,HEX_0,HEX_0,HEX_B}, arch_sh_up}
+ sets ;!/* 0000000001011000 sets */{"sets",{0},{HEX_0,HEX_0,HEX_5,HEX_8}, arch_sh3_nommu_up}
+ sett ;!/* 0000000000011000 sett */{"sett",{0},{HEX_0,HEX_0,HEX_1,HEX_8}, arch_sh_up}
+- shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up}
+- shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up}
++ shad r5,r4 ;!/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
++ shld r5,r4 ;!/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_sh2j_nofpu_up}
+ shal r4 ;!/* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up}
+ shar r4 ;!/* 0100nnnn00100001 shar <REG_N> */{"shar",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_1}, arch_sh_up}
+ shll r4 ;!/* 0100nnnn00000000 shll <REG_N> */{"shll",{A_REG_N},{HEX_4,REG_N,HEX_0,HEX_0}, arch_sh_up}
+diff -Nur binutils-2.42.orig/include/elf/sh.h binutils-2.42/include/elf/sh.h
+--- binutils-2.42.orig/include/elf/sh.h 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/include/elf/sh.h 2024-02-22 16:50:03.693904638 +0100
+@@ -39,6 +39,7 @@
+ #define EF_SH2E 11
+ #define EF_SH4A 12
+ #define EF_SH2A 13
++#define EF_SHJ2 14
+
+ #define EF_SH4_NOFPU 16
+ #define EF_SH4A_NOFPU 17
+@@ -50,6 +51,7 @@
+ #define EF_SH2A_SH3_NOFPU 22
+ #define EF_SH2A_SH4 23
+ #define EF_SH2A_SH3E 24
++#define EF_SH2A_SH3_SHJ2 25
+
+ /* This one can only mix in objects from other EF_SH5 objects. */
+ #define EF_SH5 10
+@@ -72,7 +74,8 @@
+ /* EF_SH2E */ bfd_mach_sh2e , \
+ /* EF_SH4A */ bfd_mach_sh4a , \
+ /* EF_SH2A */ bfd_mach_sh2a , \
+-/* 14, 15 */ 0, 0, \
++/* EF_SHJ2 */ bfd_mach_shj2 , \
++/* 15 */ 0, \
+ /* EF_SH4_NOFPU */ bfd_mach_sh4_nofpu , \
+ /* EF_SH4A_NOFPU */ bfd_mach_sh4a_nofpu , \
+ /* EF_SH4_NOMMU_NOFPU */ bfd_mach_sh4_nommu_nofpu, \
+@@ -81,7 +84,8 @@
+ /* EF_SH2A_SH4_NOFPU */ bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu, \
+ /* EF_SH2A_SH3_NOFPU */ bfd_mach_sh2a_nofpu_or_sh3_nommu, \
+ /* EF_SH2A_SH4 */ bfd_mach_sh2a_or_sh4 , \
+-/* EF_SH2A_SH3E */ bfd_mach_sh2a_or_sh3e
++/* EF_SH2A_SH3E */ bfd_mach_sh2a_or_sh3e, \
++/* EF_SH2A_SH3_SHJ2_NOFPU */ bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu
+
+ /* Convert arch_sh* into EF_SH*. */
+ int sh_find_elf_flags (unsigned int arch_set);
+diff -Nur binutils-2.42.orig/opcodes/sh-dis.c binutils-2.42/opcodes/sh-dis.c
+--- binutils-2.42.orig/opcodes/sh-dis.c 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/opcodes/sh-dis.c 2024-02-22 16:50:03.693904638 +0100
+@@ -866,6 +866,9 @@
+ case XMTRX_M4:
+ fprintf_fn (stream, "xmtrx");
+ break;
++ case A_IND_0:
++ fprintf_fn (stream, "@r0");
++ break;
+ default:
+ abort ();
+ }
+diff -Nur binutils-2.42.orig/opcodes/sh-opc.h binutils-2.42/opcodes/sh-opc.h
+--- binutils-2.42.orig/opcodes/sh-opc.h 2024-01-29 01:00:00.000000000 +0100
++++ binutils-2.42/opcodes/sh-opc.h 2024-02-22 16:50:03.697904670 +0100
+@@ -192,7 +192,8 @@
+ FPUL_N,
+ FPUL_M,
+ FPSCR_N,
+- FPSCR_M
++ FPSCR_M,
++ A_IND_0
+ }
+ sh_arg_type;
+
+@@ -216,9 +217,11 @@
+ #define arch_sh4_base (1 << 5)
+ #define arch_sh4a_base (1 << 6)
+ #define arch_sh2a_base (1 << 7)
+-#define arch_sh_base_mask MASK (0, 7)
++#define arch_shj2_base (1 << 8)
++#define arch_sh2a_sh3_shj2_base (1 << 9)
++#define arch_sh_base_mask MASK (0, 9)
+
+-/* Bits 8 ... 24 are currently free. */
++/* Bits 10 ... 24 are currently free. */
+
+ /* This is an annotation on instruction types, but we
+ abuse the arch field in instructions to denote it. */
+@@ -256,6 +259,8 @@
+ #define arch_sh2a_nofpu_or_sh3_nommu (arch_sh2a_sh3_base|arch_sh_no_mmu |arch_sh_no_co)
+ #define arch_sh2a_or_sh3e (arch_sh2a_sh4_base|arch_sh_no_mmu |arch_sh_sp_fpu)
+ #define arch_sh2a_or_sh4 (arch_sh2a_sh4_base|arch_sh_no_mmu |arch_sh_dp_fpu)
++#define arch_shj2 (arch_shj2_base |arch_sh_no_mmu |arch_sh_no_co)
++#define arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu (arch_sh2a_sh3_shj2_base|arch_sh_no_mmu |arch_sh_no_co)
+
+ #define SH_MERGE_ARCH_SET(SET1, SET2) ((SET1) & (SET2))
+ #define SH_VALID_BASE_ARCH_SET(SET) (((SET) & arch_sh_base_mask) != 0)
+@@ -320,7 +325,8 @@
+ #define arch_sh2_up (arch_sh2 \
+ | arch_sh2e_up \
+ | arch_sh2a_nofpu_or_sh3_nommu_up \
+- | arch_sh_dsp_up)
++ | arch_sh_dsp_up \
++ | arch_shj2_up)
+ #define arch_sh2a_nofpu_or_sh3_nommu_up (arch_sh2a_nofpu_or_sh3_nommu \
+ | arch_sh2a_nofpu_or_sh4_nommu_nofpu_up \
+ | arch_sh2a_or_sh3e_up \
+@@ -346,6 +352,12 @@
+ #define arch_sh4a_nofpu_up (arch_sh4a_nofpu \
+ | arch_sh4a_up \
+ | arch_sh4al_dsp_up)
++#define arch_shj2_up ( arch_shj2)
++#define arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu_up (arch_sh2a_nofpu_or_sh3_nommu \
++ | arch_sh2a_nofpu_or_sh4_nommu_nofpu_up \
++ | arch_sh2a_or_sh3e_up \
++ | arch_sh3_nommu_up \
++ | arch_shj2_up)
+
+ /* Right branches. */
+ #define arch_sh2e_up (arch_sh2e \
+@@ -714,9 +726,9 @@
+
+ /* repeat start end #<imm> */{"repeat",{A_DISP_PC,A_DISP_PC,A_IMM},{REPEAT,HEX_2,IMM0_8S,HEX_8}, arch_sh_dsp_up},
+
+-/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_up},
++/* 0100nnnnmmmm1100 shad <REG_M>,<REG_N>*/{"shad",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_C}, arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu_up},
+
+-/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_up},
++/* 0100nnnnmmmm1101 shld <REG_M>,<REG_N>*/{"shld",{ A_REG_M,A_REG_N},{HEX_4,REG_N,REG_M,HEX_D}, arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu_up},
+
+ /* 0100nnnn00100000 shal <REG_N> */{"shal",{A_REG_N},{HEX_4,REG_N,HEX_2,HEX_0}, arch_sh_up},
+
+@@ -1194,7 +1206,7 @@
+ {"movu.b",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_8,DISP0_12}, arch_sh2a_nofpu_up | arch_op32},
+ /* 0011nnnnmmmm0001 1001dddddddddddd movu.w @(<DISP12>,<REG_M>),<REG_N> */
+ {"movu.w",{A_DISP_REG_M,A_REG_N},{HEX_3,REG_N,REG_M,HEX_1,HEX_9,DISP0_12BY2}, arch_sh2a_nofpu_up | arch_op32},
+-
++ /* 0010nnnnmmmm0011 cas.l Rm,Rn,@R0 */ {"cas.l", { A_REG_M,A_REG_N,A_IND_0},{HEX_2,REG_N,REG_M,HEX_3}, arch_shj2_up},
+ { 0, {0}, {0}, 0 }
+ };
+
diff --git a/toolchain/binutils/patches/2.42/kvx.patch b/toolchain/binutils/patches/2.42/kvx.patch
new file mode 100644
index 000000000..c3690ca8e
--- /dev/null
+++ b/toolchain/binutils/patches/2.42/kvx.patch
@@ -0,0 +1,29 @@
+From 234938d8b7df2f069c6cbbaff47eb2ba338ec532 Mon Sep 17 00:00:00 2001
+From: Paul Iannetta <piannetta@kalrayinc.com>
+Date: Mon, 4 Sep 2023 15:31:53 +0200
+Subject: [PATCH] kvx: gas: fix the detection of negative powers of 2
+
+gas/ChangeLog:
+
+2023-09-04 Paul Iannetta <piannetta@kalrayinc.com>
+
+ * config/kvx-parse.c (get_token_class): Use the signed value.
+
+---
+ gas/config/kvx-parse.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gas/config/kvx-parse.c b/gas/config/kvx-parse.c
+index bb51c861625..0bd6b75ef30 100644
+--- a/gas/config/kvx-parse.c
++++ b/gas/config/kvx-parse.c
+@@ -525,7 +525,7 @@ get_token_class (struct token_s *token, struct token_classes *classes, int insn_
+ : strtoull (tok + (tok[0] == '-') + (tok[0] == '+'), NULL, 0));
+ int64_t val = uval;
+ int64_t pval = val < 0 ? -uval : uval;
+- int neg_power2_p = val < 0 && !(uval & (uval - 1));
++ int neg_power2_p = val < 0 && !(pval & (pval - 1));
+ unsigned len = pval ? 8 * sizeof (pval) - __builtin_clzll (pval) : 0;
+ while (class[cur].class_id != -1
+ && ((unsigned) (class[cur].sz < 0
+
diff --git a/toolchain/elf2flt/Makefile b/toolchain/elf2flt/Makefile
index c258ff082..8e5fec5a4 100644
--- a/toolchain/elf2flt/Makefile
+++ b/toolchain/elf2flt/Makefile
@@ -8,23 +8,38 @@ include $(ADK_TOPDIR)/mk/buildhlp.mk
ifeq ($(ADK_TOOLCHAIN_BINUTILS_GIT),y)
BINUTILS_VERSION:= git
+BFDLIB:= .libs/libbfd.a
endif
-ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_37),y)
-BINUTILS_VERSION:= 2.37
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_42),y)
+BINUTILS_VERSION:= 2.42
+BFDLIB:= .libs/libbfd.a
+endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_41),y)
+BINUTILS_VERSION:= 2.41
+BFDLIB:= .libs/libbfd.a
+endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_40),y)
+BINUTILS_VERSION:= 2.40
+BFDLIB:= libbfd.a
+endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_39),y)
+BINUTILS_VERSION:= 2.39
+BFDLIB:= libbfd.a
endif
ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_28),y)
BINUTILS_VERSION:= 2.28
+BFDLIB:= libbfd.a
endif
$(WRKBUILD)/.configured:
- (cd $(WRKBUILD); autoreconf -vif;)
+ (cd $(WRKBUILD); PATH='${HOST_PATH}' autoreconf -vif;)
(cd $(WRKBUILD); \
CPPFLAGS="-idirafter $(ADK_TOPDIR)/adk/include" \
./configure --prefix=$(STAGING_HOST_DIR)/usr \
--target=$(GNU_TARGET_NAME) \
--with-bfd-include-dir=$(TOOLCHAIN_BUILD_DIR)/w-binutils-$(BINUTILS_VERSION)-1/binutils-$(BINUTILS_VERSION)/bfd \
--with-binutils-include-dir=$(TOOLCHAIN_BUILD_DIR)/w-binutils-$(BINUTILS_VERSION)-1/binutils-$(BINUTILS_VERSION)/include \
- --with-libbfd=$(TOOLCHAIN_BUILD_DIR)/w-binutils-$(BINUTILS_VERSION)-1/binutils-$(BINUTILS_VERSION)/bfd/libbfd.a \
+ --with-libbfd=$(TOOLCHAIN_BUILD_DIR)/w-binutils-$(BINUTILS_VERSION)-1/binutils-$(BINUTILS_VERSION)/bfd/$(BFDLIB) \
--with-libiberty=$(TOOLCHAIN_BUILD_DIR)/w-binutils-$(BINUTILS_VERSION)-1/binutils-$(BINUTILS_VERSION)/libiberty/libiberty.a )
touch $@
diff --git a/toolchain/elf2flt/Makefile.inc b/toolchain/elf2flt/Makefile.inc
index 15434aeee..dee90e037 100644
--- a/toolchain/elf2flt/Makefile.inc
+++ b/toolchain/elf2flt/Makefile.inc
@@ -2,7 +2,16 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= elf2flt
+ifeq ($(ADK_TOOLCHAIN_ELF2FLT_2024_02),y)
+PKG_VERSION:= v2024.02
+PKG_GIT:= tag
+PKG_RELEASE:= 1
+PKG_SITES:= https://github.com/uclinux-dev/elf2flt.git
+endif
+ifeq ($(ADK_TOOLCHAIN_ELF2FLT_OLD),y)
PKG_VERSION:= 453398f917d167f8c308c8f997270c48ae8f8b12
PKG_GIT:= hash
PKG_RELEASE:= 1
PKG_SITES:= https://github.com/uclinux-dev/elf2flt.git
+endif
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz
diff --git a/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0001-riscv32.patch b/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0001-riscv32.patch
new file mode 100644
index 000000000..a99de4f9f
--- /dev/null
+++ b/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0001-riscv32.patch
@@ -0,0 +1,42 @@
+diff -Nur elf2flt-v2023.04.orig/elf2flt.c elf2flt-v2023.04/elf2flt.c
+--- elf2flt-v2023.04.orig/elf2flt.c 2023-09-04 11:29:05.952417209 +0200
++++ elf2flt-v2023.04/elf2flt.c 2023-09-04 11:30:05.371065966 +0200
+@@ -81,7 +81,7 @@
+ #include <elf/v850.h>
+ #elif defined(TARGET_xtensa)
+ #include <elf/xtensa.h>
+-#elif defined(TARGET_riscv64)
++#elif defined(TARGET_riscv64) || defined(TARGET_riscv32)
+ #include <elf/riscv.h>
+ #endif
+
+@@ -127,6 +127,8 @@
+ #define ARCH "xtensa"
+ #elif defined(TARGET_riscv64)
+ #define ARCH "riscv64"
++#elif defined(TARGET_riscv32)
++#define ARCH "riscv32"
+ #else
+ #error "Don't know how to support your CPU architecture??"
+ #endif
+@@ -822,7 +824,7 @@
+ goto good_32bit_resolved_reloc_update_text;
+ default:
+ goto bad_resolved_reloc;
+-#elif defined(TARGET_riscv64)
++#elif defined(TARGET_riscv64) || defined(TARGET_riscv32)
+ case R_RISCV_NONE:
+ case R_RISCV_32_PCREL:
+ case R_RISCV_ADD8:
+diff -Nur elf2flt-v2023.04.orig/ld-elf2flt.c elf2flt-v2023.04/ld-elf2flt.c
+--- elf2flt-v2023.04.orig/ld-elf2flt.c 2023-09-04 11:28:59.072573514 +0200
++++ elf2flt-v2023.04/ld-elf2flt.c 2023-09-04 11:29:32.507813592 +0200
+@@ -327,7 +327,7 @@
+ /* riscv adds a global pointer symbol to the linker file with the
+ "RISCV_GP:" prefix. Remove the prefix for riscv64 architecture and
+ the entire line for other architectures. */
+- if (streq(TARGET_CPU, "riscv64"))
++ if (streq(TARGET_CPU, "riscv64") || streq(TARGET_CPU, "riscv32"))
+ append_sed(&sed, "^RISCV_GP:", "");
+ else
+ append_sed(&sed, "^RISCV_GP:", NULL);
diff --git a/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0002-lm32.patch b/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0002-lm32.patch
new file mode 100644
index 000000000..b24b214c7
--- /dev/null
+++ b/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0002-lm32.patch
@@ -0,0 +1,167 @@
+diff -Nur elf2flt.orig/elf2flt.c elf2flt/elf2flt.c
+--- elf2flt.orig/elf2flt.c 2023-09-07 15:59:10.019349031 +0200
++++ elf2flt/elf2flt.c 2023-09-07 16:40:06.281961316 +0200
+@@ -62,6 +62,8 @@
+ #include <elf/bfin.h>
+ #elif defined(TARGET_h8300)
+ #include <elf/h8.h>
++#elif defined(TARGET_lm32)
++#include <elf/lm32.h>
+ #elif defined(TARGET_m68k)
+ #include <elf/m68k.h>
+ #elif defined(TARGET_microblaze)
+@@ -123,6 +125,11 @@
+ #define ARCH "nios"
+ #elif defined(TARGET_nios2)
+ #define ARCH "nios2"
++#elif defined(TARGET_lm32)
++#define ARCH "lm32"
++#define FLAT_LM32_RELOC_TYPE_32_BIT 0
++#define FLAT_LM32_RELOC_TYPE_HI16_BIT 1
++#define FLAT_LM32_RELOC_TYPE_LO16_BIT 2
+ #elif defined(TARGET_xtensa)
+ #define ARCH "xtensa"
+ #elif defined(TARGET_riscv64)
+@@ -373,7 +380,7 @@
+ int bad_relocs = 0;
+ asymbol **symb;
+ long nsymb;
+-#ifdef TARGET_bfin
++#if defined (TARGET_bfin) || defined (TARGET_lm32)
+ unsigned long persistent_data = 0;
+ #endif
+
+@@ -690,6 +697,36 @@
+ break;
+ default:
+ goto bad_resolved_reloc;
++#elif defined(TARGET_lm32)
++ case R_LM32_HI16:
++ case R_LM32_LO16:
++ if (q->howto->type == R_LM32_HI16) {
++ pflags = FLAT_LM32_RELOC_TYPE_HI16_BIT << 29;
++ } else {
++ pflags = FLAT_LM32_RELOC_TYPE_LO16_BIT << 29;
++ }
++
++ relocation_needed = 1;
++
++ /* remember the upper 16 bits */
++ if ((0xffff0000 & sym_addr) != persistent_data) {
++ flat_relocs = (uint32_t *)
++ (realloc (flat_relocs, (flat_reloc_count + 1) * sizeof (uint32_t)));
++ if (verbose)
++ printf ("New persistent data for %08lx\n", sym_addr);
++ persistent_data = 0xffff0000 & sym_addr;
++ flat_relocs[flat_reloc_count++] = (sym_addr >> 16) | (3 << 29);
++ }
++ break;
++ case R_LM32_32:
++ pflags = FLAT_LM32_RELOC_TYPE_32_BIT << 29;
++ relocation_needed = 1;
++ break;
++ case R_LM32_CALL:
++ relocation_needed = 0;
++ break;
++ default:
++ goto bad_resolved_reloc;
+ #elif defined(TARGET_m68k)
+ case R_68K_32:
+ goto good_32bit_resolved_reloc;
+@@ -1478,6 +1515,63 @@
+ #undef _30BITS_RELOC
+ #undef _28BITS_RELOC
+ #endif
++#ifdef TARGET_lm32
++ case R_LM32_32:
++ {
++ pflags = FLAT_LM32_RELOC_TYPE_32_BIT << 29;
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
++ sym_addr += sym_vma + q->addend;
++ relocation_needed = 1;
++ break;
++ }
++ case R_LM32_CALL:
++ {
++ sym_vma = 0;
++ sym_addr += sym_vma + q->addend;
++ sym_addr -= q->address;
++ sym_addr = (int32_t)sym_addr >> q->howto->rightshift;
++
++ if ((int32_t)sym_addr < -0x8000000 || (int32_t)sym_addr > 0x7ffffff) {
++ printf("ERROR: Relocation overflow for R_LM32_CALL relocation against %s\n", sym_name);
++ bad_relocs++;
++ continue;
++ }
++
++ r_mem[0] |= (sym_addr >> 24) & 0x03;
++ r_mem[1] = (sym_addr >> 16) & 0xff;
++ r_mem[2] = (sym_addr >> 8) & 0xff;
++ r_mem[3] = sym_addr & 0xff;
++ break;
++ }
++ case R_LM32_HI16:
++ case R_LM32_LO16:
++ {
++ if (q->howto->type == R_LM32_HI16) {
++ pflags = FLAT_LM32_RELOC_TYPE_HI16_BIT << 29;
++ } else {
++ pflags = FLAT_LM32_RELOC_TYPE_LO16_BIT << 29;
++ }
++
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
++ sym_addr += sym_vma + q->addend;
++
++ relocation_needed = 1;
++
++ /* remember the upper 16 bits */
++ if ((0xffff0000 & sym_addr) != persistent_data) {
++ flat_relocs = (uint32_t *)
++ (realloc (flat_relocs, (flat_reloc_count + 1) * sizeof (uint32_t)));
++ if (verbose)
++ printf ("New persistent data for %08lx\n", sym_addr);
++ persistent_data = 0xffff0000 & sym_addr;
++ flat_relocs[flat_reloc_count++] = (sym_addr >> 16) | (3 << 29);
++ }
++
++ r_mem[2] = (sym_addr >> 8) & 0xff;
++ r_mem[3] = sym_addr & 0xff;
++ break;
++ }
++#endif /* TARGET_lm32 */
+ default:
+ /* missing support for other types of relocs */
+ printf("ERROR: bad reloc type (%s)%d\n", q->howto->name, (*p)->howto->type);
+@@ -1616,6 +1710,13 @@
+ break;
+ #endif
+
++#ifdef TARGET_lm32
++ case R_LM32_HI16:
++ case R_LM32_LO16:
++ case R_LM32_CALL:
++ /* entry has already been written */
++ break;
++#endif
+ default:
+ /* The alignment of the build host
+ might be stricter than that of the
+diff -Nur elf2flt.orig/elf2flt.ld.in elf2flt/elf2flt.ld.in
+--- elf2flt.orig/elf2flt.ld.in 2023-09-07 11:32:34.223463015 +0200
++++ elf2flt/elf2flt.ld.in 2023-09-07 16:06:02.781672190 +0200
+@@ -73,6 +73,7 @@
+ W_RODAT: *(.rodata1)
+ W_RODAT: *(.rodata.*)
+ W_RODAT: *(.gnu.linkonce.r*)
++W_RODAT: *(.rofixup)
+
+ /* .ARM.extab name sections containing exception unwinding information */
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+@@ -111,6 +112,7 @@
+ R_RODAT: *(.rodata1)
+ R_RODAT: *(.rodata.*)
+ R_RODAT: *(.gnu.linkonce.r*)
++R_RODAT: *(.rofixup)
+ *(.data)
+ *(.data1)
+ *(.data.*)
diff --git a/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0003-sh2.patch b/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0003-sh2.patch
new file mode 100644
index 000000000..9587a0315
--- /dev/null
+++ b/toolchain/elf2flt/patches/26dfb54a59c8c0106418a0c46ccb4288d9e066fd/0003-sh2.patch
@@ -0,0 +1,52 @@
+diff -Nur elf2flt-26dfb54a59c8c0106418a0c46ccb4288d9e066fd.orig/elf2flt.c elf2flt-26dfb54a59c8c0106418a0c46ccb4288d9e066fd/elf2flt.c
+--- elf2flt-26dfb54a59c8c0106418a0c46ccb4288d9e066fd.orig/elf2flt.c 2023-09-08 08:49:00.529082893 +0200
++++ elf2flt-26dfb54a59c8c0106418a0c46ccb4288d9e066fd/elf2flt.c 2023-09-08 08:51:08.117679134 +0200
+@@ -75,7 +75,7 @@
+ #define FLAT_NIOS2_R_HIADJ_LO 2
+ #define FLAT_NIOS2_R_CALL26 4
+ #include <elf/nios2.h>
+-#elif defined(TARGET_sh)
++#elif defined(TARGET_sh2eb)
+ #include <elf/sh.h>
+ #elif defined(TARGET_sparc)
+ #include <elf/sparc.h>
+@@ -111,7 +111,7 @@
+ #define ARCH "sparc"
+ #elif defined(TARGET_v850)
+ #define ARCH "v850"
+-#elif defined(TARGET_sh)
++#elif defined(TARGET_sh2eb)
+ #define ARCH "sh"
+ #elif defined(TARGET_h8300)
+ #define ARCH "h8300"
+@@ -795,6 +795,12 @@
+
+ flat_reloc_count++;
+ break;
++#elif defined (TARGET_sh2eb)
++ case R_SH_DIR32:
++ goto good_32bit_resolved_reloc;
++ case R_SH_REL32:
++ relocation_needed = 0;
++ continue;
+ #elif defined (TARGET_h8300)
+ case R_H8_DIR32:
+ case R_H8_DIR32A16:
+@@ -1328,7 +1334,7 @@
+ #endif /* TARGET_sparc */
+
+
+-#ifdef TARGET_sh
++#ifdef TARGET_sh2eb
+ case R_SH_DIR32:
+ relocation_needed = 1;
+ sym_vma = elf2flt_bfd_section_vma(sym_section);
+@@ -1339,7 +1345,7 @@
+ sym_addr += sym_vma + q->addend;
+ sym_addr -= q->address;
+ break;
+-#endif /* TARGET_sh */
++#endif /* TARGET_sh2eb */
+
+ #ifdef TARGET_e1
+ #define htoe1l(x) htonl(x)
diff --git a/toolchain/elf2flt/patches/3051fec89bbd30de6f952dc3100712feff3ca076/0001-.rofixup-fix.patch b/toolchain/elf2flt/patches/3051fec89bbd30de6f952dc3100712feff3ca076/0001-.rofixup-fix.patch
new file mode 100644
index 000000000..79186642e
--- /dev/null
+++ b/toolchain/elf2flt/patches/3051fec89bbd30de6f952dc3100712feff3ca076/0001-.rofixup-fix.patch
@@ -0,0 +1,33 @@
+From 270b461e88b47781b3ef9bba2779074d0eb4996b Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Fri, 25 Aug 2023 05:04:53 +0200
+Subject: [PATCH] .rofixup fix
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ elf2flt.ld.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/elf2flt.ld.in b/elf2flt.ld.in
+index c7e01a6..c69531e 100644
+--- a/elf2flt.ld.in
++++ b/elf2flt.ld.in
+@@ -31,6 +31,7 @@ W_RODAT *(.rodata)
+ W_RODAT *(.rodata1)
+ W_RODAT *(.rodata.*)
+ W_RODAT *(.gnu.linkonce.r*)
++W_RODAT *(.rofixup)
+
+ /* This is special code area at the end of the normal
+ text section. It contains a small lookup table at
+@@ -60,6 +61,7 @@ R_RODAT *(.rodata)
+ R_RODAT *(.rodata1)
+ R_RODAT *(.rodata.*)
+ R_RODAT *(.gnu.linkonce.r*)
++R_RODAT *(.rofixup)
+ *(.data)
+ *(.data1)
+ *(.data.*)
+--
+2.30.2
+
diff --git a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0005-elf2flt-add-riscv-64-bits-support.patch b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0005-elf2flt-add-riscv-64-bits-support.patch
new file mode 100644
index 000000000..4b0075844
--- /dev/null
+++ b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0005-elf2flt-add-riscv-64-bits-support.patch
@@ -0,0 +1,137 @@
+From 1dea576eac4289602adc4a37f48c80330bf82e63 Mon Sep 17 00:00:00 2001
+From: Damien Le Moal <damien.lemoal@wdc.com>
+Date: Wed, 9 Sep 2020 17:31:33 +0900
+Subject: [PATCH] elf2flt: add riscv 64-bits support
+
+Add support for riscv 64bits ISA by defining the relocation types
+R_RISCV_32_PCREL, R_RISCV_ADD32, R_RISCV_SUB32, R_RISCV_32 and
+R_RISCV_64. riscv64 support also needs the __global_pointer$ symbol to
+be defined right after the relocation tables in the data section.
+Furthermore, the .got and .got.plt sections must be reversed. These 2
+requirements are handled with runtime modifications of the default
+linker script using the append_sed() function.
+(1) For the .got.plt and .got sections order swap, append_sed() is used
+to rename "(.got.plt)" to "(.got.tmp)" and to rename "(.got)" to
+"(.got.plt)". A last call finalize the name swap by replacing
+"(.got.tmp)" with "(.got)"
+(2) For the global pointer synbol, a definition line starting with
+"RISCV_GP" is added. The "RISCV_GP" string is removed if the target CPU
+type is riscv64. The definition line is dropped for other CPU types.
+
+With these changes, buildroot/busybox builds and run on NOMMU
+systems with kernel 5.13. Tested on Canaan Kendryte K210 boards.
+
+This patch is based on earlier work by Christoph Hellwig <hch@lst.de>.
+
+Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
+---
+ elf2flt.c | 23 +++++++++++++++++++++++
+ elf2flt.ld.in | 9 +++++----
+ ld-elf2flt.c | 16 ++++++++++++++++
+ 3 files changed, 44 insertions(+), 4 deletions(-)
+
+diff --git a/elf2flt.c b/elf2flt.c
+index f87f1fc..dbce467 100644
+--- a/elf2flt.c
++++ b/elf2flt.c
+@@ -80,6 +80,8 @@ const char *elf2flt_progname;
+ #include <elf/v850.h>
+ #elif defined(TARGET_xtensa)
+ #include <elf/xtensa.h>
++#elif defined(TARGET_riscv64)
++#include <elf/riscv.h>
+ #endif
+
+ #if defined(__MINGW32__)
+@@ -122,6 +124,8 @@ const char *elf2flt_progname;
+ #define ARCH "nios2"
+ #elif defined(TARGET_xtensa)
+ #define ARCH "xtensa"
++#elif defined(TARGET_riscv64)
++#define ARCH "riscv64"
+ #else
+ #error "Don't know how to support your CPU architecture??"
+ #endif
+@@ -797,6 +801,16 @@ output_relocs (
+ goto good_32bit_resolved_reloc;
+ default:
+ goto bad_resolved_reloc;
++#elif defined(TARGET_riscv64)
++ case R_RISCV_32_PCREL:
++ case R_RISCV_ADD32:
++ case R_RISCV_SUB32:
++ continue;
++ case R_RISCV_32:
++ case R_RISCV_64:
++ goto good_32bit_resolved_reloc;
++ default:
++ goto bad_resolved_reloc;
+ #else
+ default:
+ /* The default is to assume that the
+@@ -1806,6 +1820,15 @@ int main(int argc, char *argv[])
+ if (!load_to_ram && !pfile)
+ load_to_ram = 1;
+
++#if defined(TARGET_riscv64)
++ /*
++ * riscv only supports loading text and data contiguously.
++ * So fail if load_to_ram is false.
++ */
++ if (!load_to_ram)
++ fatal("Loading to RAM ('-r' option) is required");
++#endif
++
+ fname = argv[argc-1];
+
+ if (pfile) {
+diff --git a/elf2flt.ld.in b/elf2flt.ld.in
+index ec1fe6f..c0c44b8 100644
+--- a/elf2flt.ld.in
++++ b/elf2flt.ld.in
+@@ -70,10 +70,11 @@ W_RODAT *(.gnu.linkonce.r*)
+ . = ALIGN(0x20) ;
+ LONG(-1)
+ . = ALIGN(0x20) ;
+-R_RODAT *(.rodata)
+-R_RODAT *(.rodata1)
+-R_RODAT *(.rodata.*)
+-R_RODAT *(.gnu.linkonce.r*)
++RISCV_GP: __global_pointer$ = . + 0x800 ;
++R_RODAT *(.rodata)
++R_RODAT *(.rodata1)
++R_RODAT *(.rodata.*)
++R_RODAT *(.gnu.linkonce.r*)
+ *(.data)
+ *(.data1)
+ *(.data.*)
+diff --git a/ld-elf2flt.c b/ld-elf2flt.c
+index e5de506..31b565f 100644
+--- a/ld-elf2flt.c
++++ b/ld-elf2flt.c
+@@ -324,6 +324,22 @@ static int do_final_link(void)
+ append_option(&other_options, concat(got_offset, "=", buf, NULL));
+ }
+
++ if (streq(TARGET_CPU, "riscv64")) {
++ /*
++ * The .got section must come before the .got.plt section
++ * (gcc/ld bug ?).
++ */
++ append_sed(&sed, "(.got.plt)", "(.got.tmp)");
++ append_sed(&sed, "(.got.plt)", "(.got)");
++ append_sed(&sed, "(.got.tmp)", "(.got.plt)");
++
++ /* The global pointer symbol is defined after the GOT. */
++ append_sed(&sed, "^RISCV_GP:", "");
++ } else {
++ /* Get rid of the global pointer definition. */
++ append_sed(&sed, "^RISCV_GP:", NULL);
++ }
++
+ /* Locate the default linker script, if we don't have one provided. */
+ if (!linker_script)
+ linker_script = concat(ldscriptpath, "/elf2flt.ld", NULL);
+--
+2.31.1
+
diff --git a/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0008-remove_BFD_VMA_FMT.patch b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0008-remove_BFD_VMA_FMT.patch
new file mode 100644
index 000000000..d20b993da
--- /dev/null
+++ b/toolchain/elf2flt/patches/453398f917d167f8c308c8f997270c48ae8f8b12/0008-remove_BFD_VMA_FMT.patch
@@ -0,0 +1,125 @@
+diff -Nur elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/elf2flt.c elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.c
+--- elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12.orig/elf2flt.c 2023-01-30 08:48:56.632981732 +0100
++++ elf2flt-453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.c 2023-01-30 08:53:34.510426754 +0100
+@@ -222,7 +222,7 @@
+ long i;
+ printf("SYMBOL TABLE:\n");
+ for (i=0; i<number_of_symbols; i++) {
+- printf(" NAME=%s VALUE=0x%"BFD_VMA_FMT"x\n",
++ printf(" NAME=%s VALUE=0x%x\n",
+ symbol_table[i]->name, symbol_table[i]->value);
+ }
+ printf("\n");
+@@ -458,7 +458,7 @@
+ if (r == NULL)
+ continue;
+ if (verbose)
+- printf(" RELOCS: %s [%p]: flags=0x%x vma=0x%"BFD_VMA_FMT"x\n",
++ printf(" RELOCS: %s [%p]: flags=0x%x vma=0x%x\n",
+ r->name, r, r->flags, elf2flt_bfd_section_vma(abs_bfd, r));
+ if ((r->flags & SEC_RELOC) == 0)
+ continue;
+@@ -903,8 +903,8 @@
+ if (verbose)
+ fprintf(stderr,
+ "%s vma=0x%x, "
+- "value=0x%"BFD_VMA_FMT"x, "
+- "address=0x%"BFD_VMA_FMT"x "
++ "value=0x%x, "
++ "address=0x%x "
+ "sym_addr=0x%x rs=0x%x, opcode=0x%x\n",
+ "ABS32",
+ sym_vma, (*(q->sym_ptr_ptr))->value,
+@@ -922,8 +922,8 @@
+ if (verbose)
+ fprintf(stderr,
+ "%s vma=0x%x, "
+- "value=0x%"BFD_VMA_FMT"x, "
+- "address=0x%"BFD_VMA_FMT"x "
++ "value=0x%x, "
++ "address=0x%x "
+ "sym_addr=0x%x rs=0x%x, opcode=0x%x\n",
+ "PLT32",
+ sym_vma, (*(q->sym_ptr_ptr))->value,
+@@ -945,7 +945,7 @@
+ case R_V850_ZDA_16_16_OFFSET:
+ case R_V850_ZDA_16_16_SPLIT_OFFSET:
+ /* Can't support zero-relocations. */
+- printf ("ERROR: %s+0x%"BFD_VMA_FMT"x: zero relocations not supported\n",
++ printf ("ERROR: %s+0x%x: zero relocations not supported\n",
+ sym_name, q->addend);
+ continue;
+ #endif /* TARGET_v850 */
+@@ -1038,15 +1038,15 @@
+ sprintf(&addstr[0], "+0x%ld", sym_addr - (*(q->sym_ptr_ptr))->value -
+ elf2flt_bfd_section_vma(abs_bfd, sym_section));
+ if (verbose)
+- printf(" RELOC[%d]: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf(" RELOC[%d]: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x)\n",
++ "fixup=0x%x (reloc=0x%x)\n",
+ flat_reloc_count,
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
+ sym_addr, section_vma + q->address);
+ if (verbose)
+- printf("reloc[%d] = 0x%"BFD_VMA_FMT"x\n",
++ printf("reloc[%d] = 0x%x\n",
+ flat_reloc_count, section_vma + q->address);
+
+ continue;
+@@ -1163,9 +1163,9 @@
+ temp |= (exist_val & 0x3f);
+ *(unsigned long *)r_mem = htoniosl(temp);
+ if (verbose)
+- printf("omit: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf("omit: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x) GPREL\n",
++ "fixup=0x%x (reloc=0x%x) GPREL\n",
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
+ sym_addr, section_vma + q->address);
+@@ -1183,9 +1183,9 @@
+ exist_val |= ((sym_addr & 0xFFFF) << 6);
+ *(unsigned long *)r_mem = htoniosl(exist_val);
+ if (verbose)
+- printf("omit: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf("omit: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x) PCREL\n",
++ "fixup=0x%x (reloc=0x%x) PCREL\n",
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
+ sym_addr, section_vma + q->address);
+@@ -1200,7 +1200,7 @@
+ && (p[-1]->sym_ptr_ptr == p[0]->sym_ptr_ptr)
+ && (p[-1]->addend == p[0]->addend)) {
+ if (verbose)
+- printf("omit: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf("omit: offset=0x%x symbol=%s%s "
+ "section=%s size=%d LO16\n",
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size);
+@@ -1610,9 +1610,9 @@
+ }
+
+ if (verbose)
+- printf(" RELOC[%d]: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf(" RELOC[%d]: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x)\n",
++ "fixup=0x%x (reloc=0x%x)\n",
+ flat_reloc_count,
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
+@@ -1630,7 +1630,7 @@
+ (section_vma + q->address);
+
+ if (verbose)
+- printf("reloc[%d] = 0x%"BFD_VMA_FMT"x\n",
++ printf("reloc[%d] = 0x%x\n",
+ flat_reloc_count, section_vma + q->address);
+ #else
+ switch ((*p)->howto->type) {
diff --git a/toolchain/elf2flt/patches/v2021.08/0001-elf2flt-handle-binutils-2.34.patch b/toolchain/elf2flt/patches/v2021.08/0001-elf2flt-handle-binutils-2.34.patch
new file mode 100644
index 000000000..4aa473c24
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0001-elf2flt-handle-binutils-2.34.patch
@@ -0,0 +1,377 @@
+From d78acba6510527aaa01a41eaf4c931f7a57e5f44 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@smile.fr>
+Date: Wed, 5 Feb 2020 10:31:32 +0100
+Subject: [PATCH] elf2flt: handle binutils >= 2.34
+
+The latest Binutils release (2.34) is not compatible with elf2flt due
+to a change in bfd_section_* macros [1]. The issue has been reported
+to the Binutils mailing list but Alan Modra recommend to bundle
+libbfd library sources into each projects using it [2]. That's
+because the API is not stable over the time without any backward
+compatibility guaranties.
+
+On the other hand, the elf2flt tools needs to support modified
+version of binutils for specific arch/target [3].
+
+Add two tests in the configure script to detect this API change
+in order to support binutils < 2.34 and binutils >= 2.34.
+
+Upstream status: [4]
+
+[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=fd3619828e94a24a92cddec42cbc0ab33352eeb4
+[2] https://sourceware.org/ml/binutils/2020-02/msg00044.html
+[3] https://github.com/uclinux-dev/elf2flt/issues/14
+[4] https://github.com/uclinux-dev/elf2flt/pull/15
+
+Signed-off-by: Romain Naour <romain.naour@smile.fr>
+---
+ configure.ac | 16 +++++++++++
+ elf2flt.c | 81 +++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 61 insertions(+), 36 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index b7db2cb..fdc0876 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -229,6 +229,22 @@ AC_CHECK_FUNCS([ \
+ strsignal \
+ ])
+
++dnl Various bfd section macros and functions like bfd_section_size() have been
++dnl modified starting with binutils >= 2.34.
++dnl Check if the prototypes take a bfd argument.
++if test "$binutils_build_dir" != "NONE"; then
++ CFLAGS="-I$binutils_include_dir -I$bfd_include_dir $CFLAGS"
++fi
++
++AC_TRY_COMPILE([#include <bfd.h>],
++ [const asection *sec; bfd_section_size(sec);],
++ bfd_section_api_takes_bfd=no,
++ bfd_section_api_takes_bfd=yes)
++if test "$bfd_section_api_takes_bfd" = "yes" ; then
++ AC_DEFINE(HAVE_BFD_SECTION_API_TAKES_BFD, 1,
++ [define to 1 for binutils < 2.34])
++fi
++
+ if test "$GCC" = yes ; then
+ CFLAGS="-Wall $CFLAGS"
+ if test "$werror" = 1 ; then
+diff --git a/elf2flt.c b/elf2flt.c
+index 7ac0617..ea6b5a1 100644
+--- a/elf2flt.c
++++ b/elf2flt.c
+@@ -149,6 +149,17 @@ const char *elf2flt_progname;
+ #define O_BINARY 0
+ #endif
+
++/*
++ * The bfd parameter isn't actually used by any of the bfd_section funcs and
++ * have been removed since binutils 2.34.
++ */
++#ifdef HAVE_BFD_SECTION_API_TAKES_BFD
++#define elf2flt_bfd_section_size(s) bfd_section_size(NULL, s)
++#define elf2flt_bfd_section_vma(s) bfd_section_vma(NULL, s)
++#else
++#define elf2flt_bfd_section_size(s) bfd_section_size(s)
++#define elf2flt_bfd_section_vma(s) bfd_section_vma(s)
++#endif
+
+ /* Extra output when running. */
+ static int verbose = 0;
+@@ -323,10 +334,8 @@ compare_relocs (const void *pa, const void *pb)
+ else if (!rb->sym_ptr_ptr || !*rb->sym_ptr_ptr)
+ return 1;
+
+- a_vma = bfd_section_vma(compare_relocs_bfd,
+- (*(ra->sym_ptr_ptr))->section);
+- b_vma = bfd_section_vma(compare_relocs_bfd,
+- (*(rb->sym_ptr_ptr))->section);
++ a_vma = elf2flt_bfd_section_vma((*(ra->sym_ptr_ptr))->section);
++ b_vma = elf2flt_bfd_section_vma((*(rb->sym_ptr_ptr))->section);
+ va = (*(ra->sym_ptr_ptr))->value + a_vma + ra->addend;
+ vb = (*(rb->sym_ptr_ptr))->value + b_vma + rb->addend;
+ return va - vb;
+@@ -403,7 +412,7 @@ output_relocs (
+ }
+
+ for (a = abs_bfd->sections; (a != (asection *) NULL); a = a->next) {
+- section_vma = bfd_section_vma(abs_bfd, a);
++ section_vma = elf2flt_bfd_section_vma(a);
+
+ if (verbose)
+ printf("SECTION: %s [%p]: flags=0x%x vma=0x%"PRIx32"\n",
+@@ -443,7 +452,7 @@ output_relocs (
+ continue;
+ if (verbose)
+ printf(" RELOCS: %s [%p]: flags=0x%x vma=0x%"BFD_VMA_FMT"x\n",
+- r->name, r, r->flags, bfd_section_vma(abs_bfd, r));
++ r->name, r, r->flags, elf2flt_bfd_section_vma(r));
+ if ((r->flags & SEC_RELOC) == 0)
+ continue;
+ relsize = bfd_get_reloc_upper_bound(rel_bfd, r);
+@@ -695,7 +704,7 @@ output_relocs (
+ case R_BFIN_RIMM16:
+ case R_BFIN_LUIMM16:
+ case R_BFIN_HUIMM16:
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ if (weak_und_symbol(sym_section->name, (*(q->sym_ptr_ptr))))
+@@ -728,7 +737,7 @@ output_relocs (
+ break;
+
+ case R_BFIN_BYTE4_DATA:
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ if (weak_und_symbol (sym_section->name, (*(q->sym_ptr_ptr))))
+@@ -886,7 +895,7 @@ output_relocs (
+ #if defined(TARGET_m68k)
+ case R_68K_32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_68K_PC16:
+@@ -911,7 +920,7 @@ output_relocs (
+ q->address, sym_addr,
+ (*p)->howto->rightshift,
+ *(uint32_t *)r_mem);
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_ARM_GOT32:
+@@ -939,7 +948,7 @@ output_relocs (
+ #ifdef TARGET_v850
+ case R_V850_ABS32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_V850_ZDA_16_16_OFFSET:
+@@ -961,7 +970,7 @@ output_relocs (
+ sym_addr = (*(q->sym_ptr_ptr))->value;
+ q->address -= 1;
+ r_mem -= 1; /* tracks q->address */
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ sym_addr |= (*(unsigned char *)r_mem<<24);
+ break;
+@@ -974,7 +983,7 @@ output_relocs (
+ /* Absolute symbol done not relocation */
+ relocation_needed = !bfd_is_abs_section(sym_section);
+ sym_addr = (*(q->sym_ptr_ptr))->value;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_H8_DIR32:
+@@ -987,7 +996,7 @@ output_relocs (
+ }
+ relocation_needed = 1;
+ sym_addr = (*(q->sym_ptr_ptr))->value;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_H8_PCREL16:
+@@ -1013,7 +1022,7 @@ output_relocs (
+ #ifdef TARGET_microblaze
+ case R_MICROBLAZE_64:
+ /* work out the relocation */
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ /* Write relocated pointer back */
+ r_mem[2] = (sym_addr >> 24) & 0xff;
+@@ -1027,7 +1036,7 @@ output_relocs (
+ pflags = 0x80000000;
+ break;
+ case R_MICROBLAZE_32:
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ relocation_needed = 1;
+ break;
+@@ -1059,7 +1068,7 @@ output_relocs (
+ case R_NIOS2_BFD_RELOC_32:
+ relocation_needed = 1;
+ pflags = (FLAT_NIOS2_R_32 << 28);
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ /* modify target, in target order */
+ *(unsigned long *)r_mem = htoniosl(sym_addr);
+@@ -1069,7 +1078,7 @@ output_relocs (
+ unsigned long exist_val;
+ relocation_needed = 1;
+ pflags = (FLAT_NIOS2_R_CALL26 << 28);
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ /* modify target, in target order */
+@@ -1100,7 +1109,7 @@ output_relocs (
+ ? FLAT_NIOS2_R_HIADJ_LO : FLAT_NIOS2_R_HI_LO;
+ pflags <<= 28;
+
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(abs_bfd, sym_section);
+ sym_addr += sym_vma + q->addend;
+
+ /* modify high 16 bits, in target order */
+@@ -1133,7 +1142,7 @@ output_relocs (
+ goto NIOS2_RELOC_ERR;
+ }
+ /* _gp holds a absolute value, otherwise the ld cannot generate correct code */
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ //printf("sym=%x, %d, _gp=%x, %d\n", sym_addr+sym_vma, sym_addr+sym_vma, gp, gp);
+ sym_addr += sym_vma + q->addend;
+ sym_addr -= gp;
+@@ -1214,7 +1223,7 @@ NIOS2_RELOC_ERR:
+ case R_SPARC_32:
+ case R_SPARC_UA32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_SPARC_PC22:
+@@ -1233,7 +1242,7 @@ NIOS2_RELOC_ERR:
+ case R_SPARC_HI22:
+ relocation_needed = 1;
+ pflags = 0x80000000;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ sym_addr |= (
+ htonl(*(uint32_t *)r_mem)
+@@ -1243,7 +1252,7 @@ NIOS2_RELOC_ERR:
+ case R_SPARC_LO10:
+ relocation_needed = 1;
+ pflags = 0x40000000;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ sym_addr &= 0x000003ff;
+ sym_addr |= (
+@@ -1257,7 +1266,7 @@ NIOS2_RELOC_ERR:
+ #ifdef TARGET_sh
+ case R_SH_DIR32:
+ relocation_needed = 1;
+- sym_vma = bfd_section_vma(abs_bfd, sym_section);
++ sym_vma = elf2flt_bfd_section_vma(sym_section);
+ sym_addr += sym_vma + q->addend;
+ break;
+ case R_SH_REL32:
+@@ -1289,7 +1298,7 @@ NIOS2_RELOC_ERR:
+ case R_E1_CONST31:
+ relocation_needed = 1;
+ DBG_E1("Handling Reloc <CONST31>\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\n",
+ sec_vma, sym_addr, q->address);
+ sym_addr = sec_vma + sym_addr;
+@@ -1304,7 +1313,7 @@ NIOS2_RELOC_ERR:
+ relocation_needed = 0;
+ DBG_E1("Handling Reloc <CONST31_PCREL>\n");
+ DBG_E1("DONT RELOCATE AT LOADING\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\n",
+ sec_vma, sym_addr, q->address);
+ sym_addr = sec_vma + sym_addr;
+@@ -1331,7 +1340,7 @@ NIOS2_RELOC_ERR:
+ relocation_needed = 0;
+ DBG_E1("Handling Reloc <DIS29W_PCREL>\n");
+ DBG_E1("DONT RELOCATE AT LOADING\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x], q->address : [0x%x]\n",
+ sec_vma, sym_addr, q->address);
+ sym_addr = sec_vma + sym_addr;
+@@ -1364,7 +1373,7 @@ NIOS2_RELOC_ERR:
+ DBG_E1("Handling Reloc <DIS29B>\n");
+ DIS29_RELOCATION:
+ relocation_needed = 1;
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%08x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1381,7 +1390,7 @@ DIS29_RELOCATION:
+ relocation_needed = 0;
+ DBG_E1("Handling Reloc <IMM32_PCREL>\n");
+ DBG_E1("DONT RELOCATE AT LOADING\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1407,7 +1416,7 @@ DIS29_RELOCATION:
+ case R_E1_IMM32:
+ relocation_needed = 1;
+ DBG_E1("Handling Reloc <IMM32>\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1423,7 +1432,7 @@ DIS29_RELOCATION:
+ case R_E1_WORD:
+ relocation_needed = 1;
+ DBG_E1("Handling Reloc <WORD>\n");
+- sec_vma = bfd_section_vma(abs_bfd, sym_section);
++ sec_vma = elf2flt_bfd_section_vma(sym_section);
+ DBG_E1("sec_vma : [0x%x], sym_addr : [0x%x]\n",
+ sec_vma, sym_addr);
+ sym_addr = sec_vma + sym_addr;
+@@ -1450,7 +1459,7 @@ DIS29_RELOCATION:
+ }
+
+ sprintf(&addstr[0], "+0x%lx", sym_addr - (*(q->sym_ptr_ptr))->value -
+- bfd_section_vma(abs_bfd, sym_section));
++ elf2flt_bfd_section_vma(sym_section));
+
+
+ /*
+@@ -1890,8 +1899,8 @@ int main(int argc, char *argv[])
+ } else
+ continue;
+
+- sec_size = bfd_section_size(abs_bfd, s);
+- sec_vma = bfd_section_vma(abs_bfd, s);
++ sec_size = elf2flt_bfd_section_size(s);
++ sec_vma = elf2flt_bfd_section_vma(s);
+
+ if (sec_vma < *vma) {
+ if (*len > 0)
+@@ -1920,7 +1929,7 @@ int main(int argc, char *argv[])
+ (SEC_DATA | SEC_READONLY | SEC_RELOC)))
+ if (!bfd_get_section_contents(abs_bfd, s,
+ text + (s->vma - text_vma), 0,
+- bfd_section_size(abs_bfd, s)))
++ elf2flt_bfd_section_size(s)))
+ {
+ fatal("read error section %s", s->name);
+ }
+@@ -1950,7 +1959,7 @@ int main(int argc, char *argv[])
+ (SEC_READONLY | SEC_RELOC)))
+ if (!bfd_get_section_contents(abs_bfd, s,
+ data + (s->vma - data_vma), 0,
+- bfd_section_size(abs_bfd, s)))
++ elf2flt_bfd_section_size(s)))
+ {
+ fatal("read error section %s", s->name);
+ }
+--
+2.35.1
+
diff --git a/toolchain/elf2flt/patches/v2021.08/0002-elf2flt.ld-reinstate-32-byte-alignment-for-.data-sec.patch b/toolchain/elf2flt/patches/v2021.08/0002-elf2flt.ld-reinstate-32-byte-alignment-for-.data-sec.patch
new file mode 100644
index 000000000..4df3ea592
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0002-elf2flt.ld-reinstate-32-byte-alignment-for-.data-sec.patch
@@ -0,0 +1,81 @@
+From 85ba5664eb368eb1cbd2c30b7cd574acd75edd4c Mon Sep 17 00:00:00 2001
+From: Niklas Cassel <niklas.cassel@wdc.com>
+Date: Mon, 4 Apr 2022 15:30:24 +0200
+Subject: [PATCH] elf2flt.ld: reinstate 32 byte alignment for .data section
+
+Commit 8a3e74446fe7 ("allow to build arm flat binaries") moved the
+following commands:
+ . = ALIGN(0x20) ;
+ @SYMBOL_PREFIX@_etext = . ;
+from the .text section to the top level in the SECTIONS node.
+
+The .text output section is being directed to a memory region using the
+"> flatmem :text" output section attribute. Commands in the top level in
+the SECTIONS node are not.
+
+This means that the ALIGN() command is no longer being appended to the
+flatmem memory region, it will simply update the Location Counter.
+
+The heuristic for placing an output section is described here:
+https://sourceware.org/binutils/docs-2.38/ld.html#Output-Section-Address
+
+"If an output memory region is set for the section then it is added to this
+region and its address will be the next free address in that region."
+
+Since the .data section is being directed to the same memory region as the
+.text section, this means that the Location Counter is not used when
+assigning an address to the .data output section, it will simply use the
+next free address.
+
+No longer directing these commands to the flatmem memory region means that
+the .data output section is no longer aligned to a 32 byte boundary.
+
+Before commit 8a3e74446fe7 ("allow to build arm flat binaries"):
+$ readelf -S busybox_unstripped.gdb | grep data
+ [ 3] .data PROGBITS 0000000000035ac0 00036ac0
+$ readelf -s busybox_unstripped.gdb | grep _etext
+ 19286: 0000000000035ac0 0 NOTYPE GLOBAL DEFAULT 1 _etext
+
+After commit 8a3e74446fe7 ("allow to build arm flat binaries"):
+$ readelf -S busybox_unstripped.gdb | grep data
+ [ 3] .data PROGBITS 0000000000035ab0 00036ab0
+$ readelf -s busybox_unstripped.gdb | grep _etext
+ 19287: 0000000000035ac0 0 NOTYPE GLOBAL DEFAULT 3 _etext
+
+The .data output section has to be aligned to a 32 byte boundary, see the
+FLAT_DATA_ALIGN 0x20 macro and its usage in fs/binfmt_flat.c:
+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/binfmt_flat.c?h=v5.17#n59
+
+Readd an explicit ALIGN attribute on the .data section itself, since the
+linker will obey this attribute regardless if being directed to a memory
+region or not. Also remove the ALIGN() command before the .data section,
+since this misleads the reader to think that the Location Counter is used
+when assigning an address to the .data section, when it actually is not.
+
+Fixes: 8a3e74446fe7 ("allow to build arm flat binaries")
+Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
+---
+ elf2flt.ld.in | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/elf2flt.ld.in b/elf2flt.ld.in
+index 0df999d..e5aea14 100644
+--- a/elf2flt.ld.in
++++ b/elf2flt.ld.in
+@@ -94,12 +94,9 @@ W_RODAT: *(.gnu.linkonce.r*)
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > flatmem
+ @SYMBOL_PREFIX@__exidx_end = .;
+-
+- . = ALIGN(0x20) ;
+ @SYMBOL_PREFIX@_etext = . ;
+
+- .data : {
+- . = ALIGN(0x4) ;
++ .data ALIGN(0x20): {
+ @SYMBOL_PREFIX@_sdata = . ;
+ @SYMBOL_PREFIX@__data_start = . ;
+ @SYMBOL_PREFIX@data_start = . ;
+--
+2.35.1
+
diff --git a/toolchain/elf2flt/patches/v2021.08/0003-elf2flt-add-riscv-64-bits-support.patch b/toolchain/elf2flt/patches/v2021.08/0003-elf2flt-add-riscv-64-bits-support.patch
new file mode 100644
index 000000000..15c191c83
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0003-elf2flt-add-riscv-64-bits-support.patch
@@ -0,0 +1,103 @@
+From 3f1f323feb5cf25d8c80861991d0360784f4d2e6 Mon Sep 17 00:00:00 2001
+From: Damien Le Moal <damien.lemoal@wdc.com>
+Date: Wed, 9 Sep 2020 17:31:33 +0900
+Subject: [PATCH] elf2flt: add riscv 64-bits support
+
+Add support for riscv 64bits ISA by defining the relocation types
+R_RISCV_32_PCREL, R_RISCV_ADD32, R_RISCV_SUB32, R_RISCV_32 and
+R_RISCV_64. riscv64 support also needs the __global_pointer$ symbol to
+be defined right after the relocation tables in the data section. To
+define this symbol, the "RISCV_GP" line prefix is added. The "RISCV_GP"
+string is removed if the target CPU type is riscv64 and the definition
+line is dropped for other CPU types.
+
+With these changes, buildroot and busybox build and run on riscv NOMMU
+systems with Linux kernel including patch 6045ab5fea4c
+("binfmt_flat: do not stop relocating GOT entries prematurely on riscv")
+fixing the binfmt_flat loader. Tested on QEMU and Canaan Kendryte K210
+boards.
+
+This patch is based on earlier work by Christoph Hellwig <hch@lst.de>.
+
+Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
+---
+ elf2flt.c | 16 ++++++++++++++++
+ elf2flt.ld.in | 1 +
+ ld-elf2flt.c | 8 ++++++++
+ 3 files changed, 25 insertions(+)
+
+diff --git a/elf2flt.c b/elf2flt.c
+index da25e93..a03ea3a 100644
+--- a/elf2flt.c
++++ b/elf2flt.c
+@@ -81,6 +81,8 @@ const char *elf2flt_progname;
+ #include <elf/v850.h>
+ #elif defined(TARGET_xtensa)
+ #include <elf/xtensa.h>
++#elif defined(TARGET_riscv64)
++#include <elf/riscv.h>
+ #endif
+
+ #if defined(__MINGW32__)
+@@ -123,6 +125,8 @@ const char *elf2flt_progname;
+ #define ARCH "nios2"
+ #elif defined(TARGET_xtensa)
+ #define ARCH "xtensa"
++#elif defined(TARGET_riscv64)
++#define ARCH "riscv64"
+ #else
+ #error "Don't know how to support your CPU architecture??"
+ #endif
+@@ -812,6 +816,18 @@ output_relocs (
+ goto good_32bit_resolved_reloc;
+ default:
+ goto bad_resolved_reloc;
++#elif defined(TARGET_riscv64)
++ case R_RISCV_32_PCREL:
++ case R_RISCV_ADD32:
++ case R_RISCV_ADD64:
++ case R_RISCV_SUB32:
++ case R_RISCV_SUB64:
++ continue;
++ case R_RISCV_32:
++ case R_RISCV_64:
++ goto good_32bit_resolved_reloc;
++ default:
++ goto bad_resolved_reloc;
+ #else
+ default:
+ /* The default is to assume that the
+diff --git a/elf2flt.ld.in b/elf2flt.ld.in
+index e5aea14..950849e 100644
+--- a/elf2flt.ld.in
++++ b/elf2flt.ld.in
+@@ -106,6 +106,7 @@ W_RODAT: *(.gnu.linkonce.r*)
+ . = ALIGN(0x20) ;
+ LONG(-1)
+ . = ALIGN(0x20) ;
++RISCV_GP: __global_pointer$ = . + 0x800 ;
+ R_RODAT: *(.rodata)
+ R_RODAT: *(.rodata1)
+ R_RODAT: *(.rodata.*)
+diff --git a/ld-elf2flt.c b/ld-elf2flt.c
+index 7cb02d5..75ee1bb 100644
+--- a/ld-elf2flt.c
++++ b/ld-elf2flt.c
+@@ -324,6 +324,14 @@ static int do_final_link(void)
+ append_option(&other_options, concat(got_offset, "=", buf, NULL));
+ }
+
++ /* riscv adds a global pointer symbol to the linker file with the
++ "RISCV_GP:" prefix. Remove the prefix for riscv64 architecture and
++ the entire line for other architectures. */
++ if (streq(TARGET_CPU, "riscv64"))
++ append_sed(&sed, "^RISCV_GP:", "");
++ else
++ append_sed(&sed, "^RISCV_GP:", NULL);
++
+ /* Locate the default linker script, if we don't have one provided. */
+ if (!linker_script)
+ linker_script = concat(ldscriptpath, "/elf2flt.ld", NULL);
+--
+2.36.1
+
diff --git a/toolchain/elf2flt/patches/v2021.08/0004-elf2flt-create-a-common-helper-function.patch b/toolchain/elf2flt/patches/v2021.08/0004-elf2flt-create-a-common-helper-function.patch
new file mode 100644
index 000000000..6fee99d45
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0004-elf2flt-create-a-common-helper-function.patch
@@ -0,0 +1,76 @@
+From 37e1e0ace8ccebf54ec2f5522bfc1f9db86946ad Mon Sep 17 00:00:00 2001
+From: Niklas Cassel <niklas.cassel@wdc.com>
+Date: Tue, 9 Aug 2022 12:13:50 +0200
+Subject: [PATCH] elf2flt: create a common helper function
+
+In order to make the code more maintainable,
+move duplicated code to a common helper function.
+
+No functional change intended.
+
+Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
+---
+ elf2flt.c | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/elf2flt.c b/elf2flt.c
+index 669591e..9c32f9a 100644
+--- a/elf2flt.c
++++ b/elf2flt.c
+@@ -337,6 +337,13 @@ compare_relocs (const void *pa, const void *pb)
+ }
+ #endif
+
++static bool
++ro_reloc_data_section_should_be_in_text(asection *s)
++{
++ return (s->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
++ (SEC_DATA | SEC_READONLY | SEC_RELOC);
++}
++
+ static uint32_t *
+ output_relocs (
+ bfd *abs_bfd,
+@@ -428,8 +435,7 @@ output_relocs (
+ */
+ if ((!pic_with_got || ALWAYS_RELOC_TEXT) &&
+ ((a->flags & SEC_CODE) ||
+- ((a->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
+- (SEC_DATA | SEC_READONLY | SEC_RELOC))))
++ ro_reloc_data_section_should_be_in_text(a)))
+ sectionp = text + (a->vma - text_vma);
+ else if (a->flags & SEC_DATA)
+ sectionp = data + (a->vma - data_vma);
+@@ -1893,8 +1899,7 @@ int main(int argc, char *argv[])
+ bfd_vma sec_vma;
+
+ if ((s->flags & SEC_CODE) ||
+- ((s->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
+- (SEC_DATA | SEC_READONLY | SEC_RELOC))) {
++ ro_reloc_data_section_should_be_in_text(s)) {
+ vma = &text_vma;
+ len = &text_len;
+ } else if (s->flags & SEC_DATA) {
+@@ -1932,8 +1937,7 @@ int main(int argc, char *argv[])
+ * data sections.*/
+ for (s = abs_bfd->sections; s != NULL; s = s->next)
+ if ((s->flags & SEC_CODE) ||
+- ((s->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
+- (SEC_DATA | SEC_READONLY | SEC_RELOC)))
++ ro_reloc_data_section_should_be_in_text(s))
+ if (!bfd_get_section_contents(abs_bfd, s,
+ text + (s->vma - text_vma), 0,
+ bfd_section_size(abs_bfd, s)))
+@@ -1962,8 +1966,7 @@ int main(int argc, char *argv[])
+ * data sections already included in the text output section.*/
+ for (s = abs_bfd->sections; s != NULL; s = s->next)
+ if ((s->flags & SEC_DATA) &&
+- ((s->flags & (SEC_READONLY | SEC_RELOC)) !=
+- (SEC_READONLY | SEC_RELOC)))
++ !ro_reloc_data_section_should_be_in_text(s))
+ if (!bfd_get_section_contents(abs_bfd, s,
+ data + (s->vma - data_vma), 0,
+ bfd_section_size(abs_bfd, s)))
+--
+2.37.1
+
diff --git a/toolchain/elf2flt/patches/v2021.08/0005-elf2flt-fix-fatal-error-regression-on-m68k-xtensa-ri.patch b/toolchain/elf2flt/patches/v2021.08/0005-elf2flt-fix-fatal-error-regression-on-m68k-xtensa-ri.patch
new file mode 100644
index 000000000..616bbc891
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0005-elf2flt-fix-fatal-error-regression-on-m68k-xtensa-ri.patch
@@ -0,0 +1,74 @@
+From a8c9f650b82109abf7aa730f298ea5182ed62613 Mon Sep 17 00:00:00 2001
+From: Niklas Cassel <niklas.cassel@wdc.com>
+Date: Tue, 9 Aug 2022 21:06:05 +0200
+Subject: [PATCH] elf2flt: fix fatal error regression on m68k, xtensa, riscv64
+
+Commit ba379d08bb78 ("elf2flt: fix for segfault on some ARM ELFs")
+changed the condition of which input sections that should be included
+in the .text output section from:
+((a->flags & (SEC_DATA | SEC_READONLY)) == (SEC_DATA | SEC_READONLY))
+to:
+((a->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
+(SEC_DATA | SEC_READONLY | SEC_RELOC))
+
+On ARM, the .eh_frame input section does not have the SEC_RELOC flag set,
+so on ARM, this change caused .eh_frame to move from .text to .data.
+
+However, on e.g. m68k, xtensa and riscv64, the .eh_frame input section
+does have the SEC_RELOC flag set, which means that the change in
+commit ba379d08bb78 ("elf2flt: fix for segfault on some ARM ELFs")
+caused .eh_frame to move in an opposite way, i.e. from .data to .text.
+
+This resulted in a fatal error on m68k, xtensa and riscv64:
+ERROR: text=0x3bab8 overlaps data=0x33f60 ?
+
+This is because elf2flt cannot append to .text after .data has been
+appended to.
+
+Note that the binutils maintainer says that the correct thing is
+to put read-only relocation data sections in .text:
+https://sourceware.org/legacy-ml/binutils/2019-10/msg00132.html
+
+So the proper fix is probably to rewrite elf2flt so that it can append
+to .text after .data has been appended to (which will require elf2flt
+to move/relocate everything that has already been appended to .data,
+since the virtual addresses are contiguous).
+
+However, for now, add an exception for input sections which have all
+three flags SEC_DATA, SEC_READONLY, and SEC_RELOC set, and which have a
+name equal to a problematic input section (.eh_frame, .gcc_except_table).
+That way, we get the same behavior as older elf2flt releases for m68k,
+xtensa and riscv64, where we put read-only relocation data in .data,
+which was working perfectly fine.
+
+This exception will not change any behavior on ARM, as the .eh_frame
+input section does not have flag SEC_RELOC set.
+
+Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
+---
+ elf2flt.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/elf2flt.c b/elf2flt.c
+index e0d7891..39d035f 100644
+--- a/elf2flt.c
++++ b/elf2flt.c
+@@ -341,8 +341,13 @@ compare_relocs (const void *pa, const void *pb)
+ static bool
+ ro_reloc_data_section_should_be_in_text(asection *s)
+ {
+- return (s->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
+- (SEC_DATA | SEC_READONLY | SEC_RELOC);
++ if ((s->flags & (SEC_DATA | SEC_READONLY | SEC_RELOC)) ==
++ (SEC_DATA | SEC_READONLY | SEC_RELOC)) {
++ if (!strcmp(".eh_frame", s->name) || !strcmp(".gcc_except_table", s->name))
++ return false;
++ return true;
++ }
++ return false;
+ }
+
+ static uint32_t *
+--
+2.39.0
+
diff --git a/toolchain/elf2flt/patches/v2021.08/0006-elf2flt-xtensa-fix-text-relocations.patch b/toolchain/elf2flt/patches/v2021.08/0006-elf2flt-xtensa-fix-text-relocations.patch
new file mode 100644
index 000000000..fc8784a1b
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0006-elf2flt-xtensa-fix-text-relocations.patch
@@ -0,0 +1,25 @@
+diff -Nur elf2flt-v2021.08.orig/elf2flt.c elf2flt-v2021.08/elf2flt.c
+--- elf2flt-v2021.08.orig/elf2flt.c 2023-01-09 11:08:28.637676113 +0100
++++ elf2flt-v2021.08/elf2flt.c 2023-01-09 11:09:04.502804007 +0100
+@@ -835,7 +835,20 @@
+ continue;
+ case R_XTENSA_32:
+ case R_XTENSA_PLT:
+- goto good_32bit_resolved_reloc;
++ if (bfd_big_endian (abs_bfd))
++ sym_addr =
++ (r_mem[0] << 24)
++ + (r_mem[1] << 16)
++ + (r_mem[2] << 8)
++ + r_mem[3];
++ else
++ sym_addr =
++ r_mem[0]
++ + (r_mem[1] << 8)
++ + (r_mem[2] << 16)
++ + (r_mem[3] << 24);
++ relocation_needed = 1;
++ break;
+ default:
+ goto bad_resolved_reloc;
+ #elif defined(TARGET_riscv64)
diff --git a/toolchain/elf2flt/patches/v2021.08/0007-riscv32.patch b/toolchain/elf2flt/patches/v2021.08/0007-riscv32.patch
new file mode 100644
index 000000000..b3c4677be
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0007-riscv32.patch
@@ -0,0 +1,56 @@
+diff -Nur elf2flt-v2021.08.orig/elf2flt.c elf2flt-v2021.08/elf2flt.c
+--- elf2flt-v2021.08.orig/elf2flt.c 2023-02-26 11:31:48.758810872 +0100
++++ elf2flt-v2021.08/elf2flt.c 2023-02-26 11:32:05.714465277 +0100
+@@ -81,7 +81,7 @@
+ #include <elf/v850.h>
+ #elif defined(TARGET_xtensa)
+ #include <elf/xtensa.h>
+-#elif defined(TARGET_riscv64)
++#elif defined(TARGET_riscv64) || defined(TARGET_riscv32)
+ #include <elf/riscv.h>
+ #endif
+
+@@ -127,6 +127,8 @@
+ #define ARCH "xtensa"
+ #elif defined(TARGET_riscv64)
+ #define ARCH "riscv64"
++#elif defined(TARGET_riscv32)
++#define ARCH "riscv32"
+ #else
+ #error "Don't know how to support your CPU architecture??"
+ #endif
+@@ -849,12 +851,21 @@
+ break;
+ default:
+ goto bad_resolved_reloc;
+-#elif defined(TARGET_riscv64)
++#elif defined(TARGET_riscv64) || defined(TARGET_riscv32)
+ case R_RISCV_32_PCREL:
++ case R_RISCV_ADD8:
++ case R_RISCV_ADD16:
+ case R_RISCV_ADD32:
+ case R_RISCV_ADD64:
++ case R_RISCV_SUB6:
++ case R_RISCV_SUB8:
++ case R_RISCV_SUB16:
+ case R_RISCV_SUB32:
+ case R_RISCV_SUB64:
++ case R_RISCV_SET6:
++ case R_RISCV_SET8:
++ case R_RISCV_SET16:
++ case R_RISCV_SET32:
+ continue;
+ case R_RISCV_32:
+ case R_RISCV_64:
+diff -Nur elf2flt-v2021.08.orig/ld-elf2flt.c elf2flt-v2021.08/ld-elf2flt.c
+--- elf2flt-v2021.08.orig/ld-elf2flt.c 2023-02-26 11:31:21.047376888 +0100
++++ elf2flt-v2021.08/ld-elf2flt.c 2023-02-26 11:32:05.714465277 +0100
+@@ -327,7 +327,7 @@
+ /* riscv adds a global pointer symbol to the linker file with the
+ "RISCV_GP:" prefix. Remove the prefix for riscv64 architecture and
+ the entire line for other architectures. */
+- if (streq(TARGET_CPU, "riscv64"))
++ if (streq(TARGET_CPU, "riscv64") || streq(TARGET_CPU, "riscv32"))
+ append_sed(&sed, "^RISCV_GP:", "");
+ else
+ append_sed(&sed, "^RISCV_GP:", NULL);
diff --git a/toolchain/elf2flt/patches/v2021.08/0008-remove_BFD_VMA_FMT.patch b/toolchain/elf2flt/patches/v2021.08/0008-remove_BFD_VMA_FMT.patch
new file mode 100644
index 000000000..6367f1383
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0008-remove_BFD_VMA_FMT.patch
@@ -0,0 +1,97 @@
+diff -Nur elf2flt-v2021.08.orig/elf2flt.c elf2flt-v2021.08/elf2flt.c
+--- elf2flt-v2021.08.orig/elf2flt.c 2023-01-29 16:47:24.791851890 +0100
++++ elf2flt-v2021.08/elf2flt.c 2023-01-29 16:49:46.628476326 +0100
+@@ -222,7 +222,7 @@
+ long i;
+ printf("SYMBOL TABLE:\n");
+ for (i=0; i<number_of_symbols; i++) {
+- printf(" NAME=%s VALUE=0x%"BFD_VMA_FMT"x\n",
++ printf(" NAME=%s VALUE=0x%x\n",
+ symbol_table[i]->name, symbol_table[i]->value);
+ }
+ printf("\n");
+@@ -471,7 +471,7 @@
+ if (r == NULL)
+ continue;
+ if (verbose)
+- printf(" RELOCS: %s [%p]: flags=0x%x vma=0x%"BFD_VMA_FMT"x\n",
++ printf(" RELOCS: %s [%p]: flags=0x%x vma=0x%x\n",
+ r->name, r, r->flags, elf2flt_bfd_section_vma(r));
+ if ((r->flags & SEC_RELOC) == 0)
+ continue;
+@@ -966,8 +966,8 @@
+ if (verbose)
+ fprintf(stderr,
+ "%s vma=0x%x, "
+- "value=0x%"BFD_VMA_FMT"x, "
+- "address=0x%"BFD_VMA_FMT"x "
++ "value=0x%x, "
++ "address=0x%x "
+ "sym_addr=0x%x rs=0x%x, opcode=0x%x\n",
+ "ABS32",
+ sym_vma, (*(q->sym_ptr_ptr))->value,
+@@ -985,8 +985,8 @@
+ if (verbose)
+ fprintf(stderr,
+ "%s vma=0x%x, "
+- "value=0x%"BFD_VMA_FMT"x, "
+- "address=0x%"BFD_VMA_FMT"x "
++ "value=0x%x, "
++ "address=0x%x "
+ "sym_addr=0x%x rs=0x%x, opcode=0x%x\n",
+ "PLT32",
+ sym_vma, (*(q->sym_ptr_ptr))->value,
+@@ -1008,7 +1008,7 @@
+ case R_V850_ZDA_16_16_OFFSET:
+ case R_V850_ZDA_16_16_SPLIT_OFFSET:
+ /* Can't support zero-relocations. */
+- printf ("ERROR: %s+0x%"BFD_VMA_FMT"x: zero relocations not supported\n",
++ printf ("ERROR: %s+0x%x: zero relocations not supported\n",
+ sym_name, q->addend);
+ continue;
+ #endif /* TARGET_v850 */
+@@ -1208,9 +1208,9 @@
+ temp |= (exist_val & 0x3f);
+ *(unsigned long *)r_mem = htoniosl(temp);
+ if (verbose)
+- printf("omit: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf("omit: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x) GPREL\n",
++ "fixup=0x%x (reloc=0x%x) GPREL\n",
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
+ sym_addr, section_vma + q->address);
+@@ -1228,9 +1228,9 @@
+ exist_val |= ((sym_addr & 0xFFFF) << 6);
+ *(unsigned long *)r_mem = htoniosl(exist_val);
+ if (verbose)
+- printf("omit: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf("omit: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x) PCREL\n",
++ "fixup=0x%x (reloc=0x%x) PCREL\n",
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
+ sym_addr, section_vma + q->address);
+@@ -1245,7 +1245,7 @@
+ && (p[-1]->sym_ptr_ptr == p[0]->sym_ptr_ptr)
+ && (p[-1]->addend == p[0]->addend)) {
+ if (verbose)
+- printf("omit: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf("omit: offset=0x%x symbol=%s%s "
+ "section=%s size=%d LO16\n",
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size);
+@@ -1660,9 +1660,9 @@
+ */
+ if (relocation_needed) {
+ if (verbose)
+- printf(" RELOC[%d]: offset=0x%"BFD_VMA_FMT"x symbol=%s%s "
++ printf(" RELOC[%d]: offset=0x%x symbol=%s%s "
+ "section=%s size=%d "
+- "fixup=0x%x (reloc=0x%"BFD_VMA_FMT"x)\n",
++ "fixup=0x%x (reloc=0x%x)\n",
+ flat_reloc_count,
+ q->address, sym_name, addstr,
+ section_name, sym_reloc_size,
diff --git a/toolchain/elf2flt/patches/v2021.08/0009-riscv.patch b/toolchain/elf2flt/patches/v2021.08/0009-riscv.patch
new file mode 100644
index 000000000..c1072cb45
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2021.08/0009-riscv.patch
@@ -0,0 +1,11 @@
+diff -Nur elf2flt-v2021.08.orig/elf2flt.c elf2flt-v2021.08/elf2flt.c
+--- elf2flt-v2021.08.orig/elf2flt.c 2023-02-26 11:32:05.714465277 +0100
++++ elf2flt-v2021.08/elf2flt.c 2023-02-26 15:04:52.726514896 +0100
+@@ -852,6 +852,7 @@
+ default:
+ goto bad_resolved_reloc;
+ #elif defined(TARGET_riscv64) || defined(TARGET_riscv32)
++ case R_RISCV_NONE:
+ case R_RISCV_32_PCREL:
+ case R_RISCV_ADD8:
+ case R_RISCV_ADD16:
diff --git a/toolchain/elf2flt/patches/v2024.02/0001-sh2.patch b/toolchain/elf2flt/patches/v2024.02/0001-sh2.patch
new file mode 100644
index 000000000..b14a78e23
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2024.02/0001-sh2.patch
@@ -0,0 +1,43 @@
+diff -Nur elf2flt-v2023.09.orig/elf2flt.c elf2flt-v2023.09/elf2flt.c
+--- elf2flt-v2023.09.orig/elf2flt.c 2023-12-22 10:44:11.000000000 +0100
++++ elf2flt-v2023.09/elf2flt.c 2023-12-23 02:26:06.323239781 +0100
+@@ -73,7 +73,7 @@
+ #define FLAT_NIOS2_R_HIADJ_LO 2
+ #define FLAT_NIOS2_R_CALL26 4
+ #include <elf/nios2.h>
+-#elif defined(TARGET_sh)
++#elif defined(TARGET_sh2) || defined(TARGET_sh2eb)
+ #include <elf/sh.h>
+ #elif defined(TARGET_sparc)
+ #include <elf/sparc.h>
+@@ -109,8 +109,10 @@
+ #define ARCH "sparc"
+ #elif defined(TARGET_v850)
+ #define ARCH "v850"
+-#elif defined(TARGET_sh)
+-#define ARCH "sh"
++#elif defined(TARGET_sh2)
++#define ARCH "sh2"
++#elif defined(TARGET_sh2eb)
++#define ARCH "sh2"
+ #elif defined(TARGET_h8300)
+ #define ARCH "h8300"
+ #elif defined(TARGET_microblaze)
+@@ -1289,7 +1291,7 @@
+ #endif /* TARGET_sparc */
+
+
+-#ifdef TARGET_sh
++#if defined(TARGET_sh2) || defined(TARGET_sh2eb)
+ case R_SH_DIR32:
+ relocation_needed = 1;
+ sym_vma = elf2flt_bfd_section_vma(sym_section);
+@@ -1300,7 +1302,7 @@
+ sym_addr += sym_vma + q->addend;
+ sym_addr -= q->address;
+ break;
+-#endif /* TARGET_sh */
++#endif /* TARGET_sh2 / TARGET_sh2eb */
+
+ #ifdef TARGET_e1
+ #define htoe1l(x) htonl(x)
diff --git a/toolchain/elf2flt/patches/v2024.02/0002-h8300.patch b/toolchain/elf2flt/patches/v2024.02/0002-h8300.patch
new file mode 100644
index 000000000..2c7b73482
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2024.02/0002-h8300.patch
@@ -0,0 +1,20 @@
+diff -Nur elf2flt-v2023.09.orig/flthdr.c elf2flt-v2023.09/flthdr.c
+--- elf2flt-v2023.09.orig/flthdr.c 2023-12-23 03:20:20.000000000 +0100
++++ elf2flt-v2023.09/flthdr.c 2023-12-23 17:11:22.699413170 +0100
+@@ -164,8 +164,16 @@
+ r = ntohl(relocs[i]);
+ raddr = flat_get_relocate_addr(r);
+ printf(" %u\t0x%08lx (0x%08"PRIx32")\t", i, r, raddr);
++#if defined(TARGET_h8300)
++ raddr &= ~0x00000001;
++#endif
+ fseek_stream(&ifp, sizeof(old_hdr) + raddr, SEEK_SET);
+ fread_stream(&addr, sizeof(addr), 1, &ifp);
++#if defined(TARGET_h8300)
++ addr = ntohl(addr);
++ if (r & 1)
++ addr &= 0x00ffffff;
++#endif
+ printf("%"PRIx32"\n", addr);
+ }
+
diff --git a/toolchain/elf2flt/patches/v2024.02/0003-riscv64-alignment.patch b/toolchain/elf2flt/patches/v2024.02/0003-riscv64-alignment.patch
new file mode 100644
index 000000000..9feef7951
--- /dev/null
+++ b/toolchain/elf2flt/patches/v2024.02/0003-riscv64-alignment.patch
@@ -0,0 +1,12 @@
+diff -Nur elf2flt-v2024.02.orig/elf2flt.ld.in elf2flt-v2024.02/elf2flt.ld.in
+--- elf2flt-v2024.02.orig/elf2flt.ld.in 2024-03-22 04:51:08.000000000 +0100
++++ elf2flt-v2024.02/elf2flt.ld.in 2024-03-22 13:08:31.793773247 +0100
+@@ -139,7 +139,7 @@
+ @SYMBOL_PREFIX@_ssro_size = @SYMBOL_PREFIX@_essro - @SYMBOL_PREFIX@_ssro;
+ PROVIDE(@SYMBOL_PREFIX@_SDA2_BASE_ = @SYMBOL_PREFIX@_ssro + (@SYMBOL_PREFIX@_ssro_size / 2));
+
+- . = ALIGN(4) ;
++ . = ALIGN(8) ;
+ TOR: @SYMBOL_PREFIX@__CTOR_LIST__ = .;
+ TOR: LONG((@SYMBOL_PREFIX@__CTOR_END__ - @SYMBOL_PREFIX@__CTOR_LIST__) / 4 - 2)
+ SINGLE_LINK: /* gcc uses crtbegin.o to find the start of
diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile
index 3f533bad9..175af8aae 100644
--- a/toolchain/gcc/Makefile
+++ b/toolchain/gcc/Makefile
@@ -26,6 +26,15 @@ ifeq ($(ADK_TARGET_ARCH_ARM),y)
TARGET_CFLAGS:= $(filter-out -mcpu=cortex-a9,$(TARGET_CFLAGS))
TARGET_CXXFLAGS:= $(filter-out -mcpu=cortex-a9,$(TARGET_CXXFLAGS))
endif
+ifeq ($(ADK_TARGET_ARCH_ARM),y)
+TARGET_CFLAGS:= $(filter-out -mcpu=cortex-a7,$(TARGET_CFLAGS))
+TARGET_CXXFLAGS:= $(filter-out -mcpu=cortex-a7,$(TARGET_CXXFLAGS))
+endif
+
+ifeq ($(ADK_TARGET_ARCH_ARM),y)
+TARGET_CFLAGS:= $(filter-out -mcpu=xscale,$(TARGET_CFLAGS))
+TARGET_CXXFLAGS:= $(filter-out -mcpu=xscale,$(TARGET_CXXFLAGS))
+endif
ifeq ($(ADK_TARGET_USE_STATIC_AND_SHARED_LIBS),y)
TARGET_CFLAGS:= $(filter-out -static,$(TARGET_CFLAGS))
@@ -54,6 +63,7 @@ GCC_CONFOPTS:= --prefix=$(TOOLCHAIN_DIR)/usr \
--disable-libquadmath \
--disable-libquadmath-support \
--disable-decimal-float \
+ --disable-gcov \
--disable-libstdcxx-pch \
--disable-ppl-version-check \
--disable-cloog-version-check \
@@ -155,10 +165,6 @@ ifeq ($(ADK_TARGET_ARCH_METAG),y)
GCC_CONFOPTS+= --with-cpu=2.1 --enable-meta-default --disable-symvers
endif
-ifeq ($(ADK_TARGET_CPU_CF),y)
-GCC_CONFOPTS+= --with-arch=cf --disable-multilib
-endif
-
ifeq ($(ADK_TARGET_ARCH_NDS32),y)
GCC_CONFOPTS+= --with-arch=v3
endif
@@ -167,6 +173,16 @@ ifeq ($(ADK_TARGET_ARCH_M68K)$(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_ARCH_X86),)
GCC_FINAL_CONFOPTS+= --disable-biarch --disable-multilib
endif
+ifeq ($(ADK_TARGET_CPU_CF),y)
+GCC_CONFOPTS+= --with-arch=cf
+GCC_INITIAL_CONFOPTS+= --enable-multilib
+ifeq ($(ADK_TARGET_BINFMT_ELF)$(ADK_TARGET_WITH_MMU),y)
+GCC_FINAL_CONFOPTS+= --disable-multilib --disable-threads --disable-libatomic
+endif
+else
+GCC_INITIAL_CONFOPTS+= --disable-multilib
+endif
+
ifeq ($(ADK_TARGET_ARCH_SH),y)
ifeq ($(ADK_TARGET_LITTLE_ENDIAN),y)
@@ -299,6 +315,12 @@ ifeq ($(ADK_TARGET_CPU_SH_SH4A),y)
(cd ${STAGING_TARGET_DIR}/ && ln -sf . m4a)
endif
endif
+ifeq ($(ADK_TARGET_ARCH_M68K),y)
+ # Need to get gcc to generate _all_ the multilib variants
+ # (so both MMU and non-mmu M68k and ColdFire).
+ $(SED) 's/M68K_MLIB_CPU +=/#M68K_MLIB_CPU +=/' $(WRKBUILD)/gcc/config/m68k/t-m68k
+ $(SED) 's/&& (FLAGS ~ "FL_MMU")//' $(WRKBUILD)/gcc/config/m68k/t-linux
+endif
$(SED) '/k prot/agcc_cv_libc_provides_ssp=yes' $(WRKBUILD)/gcc/configure
cd $(GCC_BUILD_DIR_INITIAL); \
PATH='$(TARGET_PATH)' \
@@ -307,13 +329,13 @@ endif
CFLAGS="-O0 -g0 -fomit-frame-pointer" \
CXXFLAGS="-O0 -g0 -fomit-frame-pointer" \
$(WRKBUILD)/configure \
+ ${GCC_INITIAL_CONFOPTS} \
${GCC_CONFOPTS} \
${GCC_TLS_CONFOPTS} \
--enable-languages=c \
--with-newlib \
--disable-shared \
--disable-threads \
- --disable-multilib \
--without-headers
touch $@
diff --git a/toolchain/gcc/Makefile.inc b/toolchain/gcc/Makefile.inc
index b765f9b66..b6c24865a 100644
--- a/toolchain/gcc/Makefile.inc
+++ b/toolchain/gcc/Makefile.inc
@@ -2,52 +2,69 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= gcc
+ifeq ($(ADK_TOOLCHAIN_GCC_13),y)
+PKG_VERSION:= 13.2.0
+PKG_HASH:= 8cb4be3796651976f94b9356fa08d833524f62420d6292c5033a9a26af315078
+PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
+PKG_RELEASE:= 1
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+LIBSTDCXXVER:= 29
+endif
+ifeq ($(ADK_TOOLCHAIN_GCC_12),y)
+PKG_VERSION:= 12.3.0
+PKG_HASH:= 11275aa7bb34cd8ab101d01b341015499f8d9466342a2574ece93f954d92273b
+PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
+PKG_RELEASE:= 1
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+LIBSTDCXXVER:= 28
+endif
ifeq ($(ADK_TOOLCHAIN_GCC_11),y)
-PKG_VERSION:= 11.2.0
-PKG_HASH:= d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b
+PKG_VERSION:= 11.4.0
+PKG_HASH:= af828619dd1970734dda3cfb792ea3f2cba61b5a00170ba8bce4910749d73c07
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 27
endif
ifeq ($(ADK_TOOLCHAIN_GCC_10),y)
-PKG_VERSION:= 10.3.0
-PKG_HASH:= 64f404c1a650f27fc33da242e1f2df54952e3963a49e06e73f6940f3223ac344
+PKG_VERSION:= 10.5.0
+PKG_HASH:= eed4dd5fc3cd9f52cb3a51a4fde1728cb19ec76292f559518e83652e7437befe
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 26
endif
ifeq ($(ADK_TOOLCHAIN_GCC_9),y)
-PKG_VERSION:= 9.4.0
-PKG_HASH:= c95da32f440378d7751dd95533186f7fc05ceb4fb65eb5b85234e6299eb9838e
+PKG_VERSION:= 9.5.0
+PKG_HASH:= 15b34072105272a3eb37f6927409f7ce9aa0dd1498efebc35f851d6e6f029a4d
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 25
endif
ifeq ($(ADK_TOOLCHAIN_GCC_8),y)
PKG_VERSION:= 8.5.0
-PKG_HASH:= d308841a511bb830a6100397b0042db24ce11f642dab6ea6ee44842e5325ed50
+PKG_HASH:= 6e6e0628573d2185727a2dd83211d04a2b2748e4a262099099b9c8064634c9ee
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 24
endif
ifeq ($(ADK_TOOLCHAIN_GCC_7),y)
PKG_VERSION:= 7.5.0
-PKG_HASH:= b81946e7f01f90528a1f7352ab08cc602b9ccc05d4e44da4bd501c5a189ee661
+PKG_HASH:= 4f518f18cfb694ad7975064e99e200fe98af13603b47e67e801ba9580e50a07f
PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/}
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 23
endif
ifeq ($(ADK_TOOLCHAIN_GCC_ARC),y)
-PKG_VERSION:= arc-2020.09
-PKG_GIT:= tag
-PKG_SITES:= https://github.com/foss-for-synopsys-dwc-arc-processors/gcc.git
-PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+PKG_VERSION:= arc-2023.09
+PKG_GIT:= tag
+PKG_SITES:= https://github.com/foss-for-synopsys-dwc-arc-processors/gcc.git
+PKG_RELEASE:= 1
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+LIBSTDCXXVER:= 29
endif
ifeq ($(ADK_TOOLCHAIN_GCC_AVR32),y)
PKG_VERSION:= 4.4.7
@@ -57,6 +74,14 @@ PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 19
endif
+ifeq ($(ADK_TOOLCHAIN_GCC_LM32),y)
+PKG_VERSION:= 4.5.4
+PKG_HASH:= 33fb968907ef7b6c528f6395ba049eb34c4df859bf5aa6c2bc3856268801e078
+PKG_SITES:= https://ftp.gnu.org/gnu/gcc/gcc-$(PKG_VERSION)/
+PKG_RELEASE:= 1
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+LIBSTDCXXVER:= 19
+endif
ifeq ($(ADK_TOOLCHAIN_GCC_METAG),y)
PKG_VERSION:= 4.2.4
PKG_HASH:= 7cb75c5183bd18f415860084440377016dc78feeee2852227b831f2e4fcaa5d6
@@ -66,26 +91,11 @@ DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
LIBSTDCXXVER:= 19
endif
ifeq ($(ADK_TOOLCHAIN_GCC_KVX),y)
-PKG_VERSION:= 50bb1935d20f383c3d37c98b681f63de873688b2
+PKG_VERSION:= f98c17b1e78dd3a3da45c0ac1af7b105edf2bf66
PKG_GIT:= hash
PKG_SITES:= https://github.com/kalray/gcc.git
PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
-endif
-ifeq ($(ADK_TOOLCHAIN_GCC_LM32),y)
-PKG_VERSION:= 4.5.4
-PKG_HASH:= 33fb968907ef7b6c528f6395ba049eb34c4df859bf5aa6c2bc3856268801e078
-PKG_SITES:= https://ftp.gnu.org/gnu/gcc/gcc-$(PKG_VERSION)/
-PKG_RELEASE:= 1
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
-LIBSTDCXXVER:= 19
-endif
-ifeq ($(ADK_TOOLCHAIN_GCC_NDS32),y)
-PKG_VERSION:= nds32-6.3.0-open
-PKG_HASH:= b23ce96df25dfdd5526496a3c2cd7ee1da4ed4094971a2e0c47c73ad7e1ad30a
-PKG_SITES:= https://github.com/andestech/gcc.git
-PKG_RELEASE:= 1
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
endif
ifeq ($(ADK_TOOLCHAIN_GCC_GIT),y)
PKG_VERSION:= git
diff --git a/toolchain/gcc/patches/10.3.0/revert-sparc.patch b/toolchain/gcc/patches/10.3.0/revert-sparc.patch
deleted file mode 100644
index 5df11ce40..000000000
--- a/toolchain/gcc/patches/10.3.0/revert-sparc.patch
+++ /dev/null
@@ -1,23628 +0,0 @@
-diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.c gcc-10.3.0/gcc/config/sparc/sparc.c
---- gcc-10.3.0.orig/gcc/config/sparc/sparc.c 2021-04-08 13:56:28.201742273 +0200
-+++ gcc-10.3.0/gcc/config/sparc/sparc.c 2021-04-09 07:51:37.884501308 +0200
-@@ -4157,6 +4157,13 @@
- static bool
- sparc_cannot_force_const_mem (machine_mode mode, rtx x)
- {
-+ /* After IRA has run in PIC mode, it is too late to put anything into the
-+ constant pool if the PIC register hasn't already been initialized. */
-+ if ((lra_in_progress || reload_in_progress)
-+ && flag_pic
-+ && !crtl->uses_pic_offset_table)
-+ return true;
-+
- switch (GET_CODE (x))
- {
- case CONST_INT:
-@@ -4192,11 +4199,9 @@
- }
-
- /* Global Offset Table support. */
--static GTY(()) rtx got_symbol_rtx = NULL_RTX;
--static GTY(()) rtx got_register_rtx = NULL_RTX;
- static GTY(()) rtx got_helper_rtx = NULL_RTX;
--
--static GTY(()) bool got_helper_needed = false;
-+static GTY(()) rtx got_register_rtx = NULL_RTX;
-+static GTY(()) rtx got_symbol_rtx = NULL_RTX;
-
- /* Return the SYMBOL_REF for the Global Offset Table. */
-
-@@ -4209,6 +4214,27 @@
- return got_symbol_rtx;
- }
-
-+#ifdef HAVE_GAS_HIDDEN
-+# define USE_HIDDEN_LINKONCE 1
-+#else
-+# define USE_HIDDEN_LINKONCE 0
-+#endif
-+
-+static void
-+get_pc_thunk_name (char name[32], unsigned int regno)
-+{
-+ const char *reg_name = reg_names[regno];
-+
-+ /* Skip the leading '%' as that cannot be used in a
-+ symbol name. */
-+ reg_name += 1;
-+
-+ if (USE_HIDDEN_LINKONCE)
-+ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
-+ else
-+ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
-+}
-+
- /* Wrapper around the load_pcrel_sym{si,di} patterns. */
-
- static rtx
-@@ -4228,78 +4254,30 @@
- return insn;
- }
-
--/* Output the load_pcrel_sym{si,di} patterns. */
--
--const char *
--output_load_pcrel_sym (rtx *operands)
--{
-- if (flag_delayed_branch)
-- {
-- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
-- output_asm_insn ("call\t%a2", operands);
-- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
-- }
-- else
-- {
-- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
-- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
-- output_asm_insn ("call\t%a2", operands);
-- output_asm_insn (" nop", NULL);
-- }
--
-- if (operands[2] == got_helper_rtx)
-- got_helper_needed = true;
--
-- return "";
--}
--
--#ifdef HAVE_GAS_HIDDEN
--# define USE_HIDDEN_LINKONCE 1
--#else
--# define USE_HIDDEN_LINKONCE 0
--#endif
--
- /* Emit code to load the GOT register. */
-
- void
- load_got_register (void)
- {
-- rtx insn;
-+ if (!got_register_rtx)
-+ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
-
- if (TARGET_VXWORKS_RTP)
-- {
-- if (!got_register_rtx)
-- got_register_rtx = pic_offset_table_rtx;
--
-- insn = gen_vxworks_load_got ();
-- }
-+ emit_insn (gen_vxworks_load_got ());
- else
- {
-- if (!got_register_rtx)
-- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
--
- /* The GOT symbol is subject to a PC-relative relocation so we need a
- helper function to add the PC value and thus get the final value. */
- if (!got_helper_rtx)
- {
- char name[32];
--
-- /* Skip the leading '%' as that cannot be used in a symbol name. */
-- if (USE_HIDDEN_LINKONCE)
-- sprintf (name, "__sparc_get_pc_thunk.%s",
-- reg_names[REGNO (got_register_rtx)] + 1);
-- else
-- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
-- REGNO (got_register_rtx));
--
-+ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
- got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
- }
-
-- insn
-- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
-+ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
-+ got_helper_rtx));
- }
--
-- emit_insn (insn);
- }
-
- /* Ensure that we are not using patterns that are not OK with PIC. */
-@@ -5464,7 +5442,7 @@
- return true;
-
- /* GOT register (%l7) if needed. */
-- if (got_register_rtx && regno == REGNO (got_register_rtx))
-+ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
- return true;
-
- /* If the function accesses prior frames, the frame pointer and the return
-@@ -12507,9 +12485,10 @@
- sparc_file_end (void)
- {
- /* If we need to emit the special GOT helper function, do so now. */
-- if (got_helper_needed)
-+ if (got_helper_rtx)
- {
- const char *name = XSTR (got_helper_rtx, 0);
-+ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
- #ifdef DWARF2_UNWIND_INFO
- bool do_cfi;
- #endif
-@@ -12546,22 +12525,17 @@
- #ifdef DWARF2_UNWIND_INFO
- do_cfi = dwarf2out_do_cfi_asm ();
- if (do_cfi)
-- output_asm_insn (".cfi_startproc", NULL);
-+ fprintf (asm_out_file, "\t.cfi_startproc\n");
- #endif
- if (flag_delayed_branch)
-- {
-- output_asm_insn ("jmp\t%%o7+8", NULL);
-- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
-- }
-+ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
-+ reg_name, reg_name);
- else
-- {
-- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
-- output_asm_insn ("jmp\t%%o7+8", NULL);
-- output_asm_insn (" nop", NULL);
-- }
-+ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
-+ reg_name, reg_name);
- #ifdef DWARF2_UNWIND_INFO
- if (do_cfi)
-- output_asm_insn (".cfi_endproc", NULL);
-+ fprintf (asm_out_file, "\t.cfi_endproc\n");
- #endif
- }
-
-@@ -13056,10 +13030,7 @@
- edge entry_edge;
- rtx_insn *seq;
-
-- /* In PIC mode, we need to always initialize the PIC register if optimization
-- is enabled, because we are called from IRA and LRA may later force things
-- to the constant pool for optimization purposes. */
-- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
-+ if (!crtl->uses_pic_offset_table)
- return;
-
- start_sequence ();
-diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.c.orig gcc-10.3.0/gcc/config/sparc/sparc.c.orig
---- gcc-10.3.0.orig/gcc/config/sparc/sparc.c.orig 1970-01-01 01:00:00.000000000 +0100
-+++ gcc-10.3.0/gcc/config/sparc/sparc.c.orig 2021-04-08 13:56:28.201742273 +0200
-@@ -0,0 +1,13813 @@
-+/* Subroutines for insn-output.c for SPARC.
-+ Copyright (C) 1987-2020 Free Software Foundation, Inc.
-+ Contributed by Michael Tiemann (tiemann@cygnus.com)
-+ 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
-+ at Cygnus Support.
-+
-+This file is part of GCC.
-+
-+GCC is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License as published by
-+the Free Software Foundation; either version 3, or (at your option)
-+any later version.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+GNU General Public License for more details.
-+
-+You should have received a copy of the GNU General Public License
-+along with GCC; see the file COPYING3. If not see
-+<http://www.gnu.org/licenses/>. */
-+
-+#define IN_TARGET_CODE 1
-+
-+#include "config.h"
-+#include "system.h"
-+#include "coretypes.h"
-+#include "backend.h"
-+#include "target.h"
-+#include "rtl.h"
-+#include "tree.h"
-+#include "memmodel.h"
-+#include "gimple.h"
-+#include "df.h"
-+#include "tm_p.h"
-+#include "stringpool.h"
-+#include "attribs.h"
-+#include "expmed.h"
-+#include "optabs.h"
-+#include "regs.h"
-+#include "emit-rtl.h"
-+#include "recog.h"
-+#include "diagnostic-core.h"
-+#include "alias.h"
-+#include "fold-const.h"
-+#include "stor-layout.h"
-+#include "calls.h"
-+#include "varasm.h"
-+#include "output.h"
-+#include "insn-attr.h"
-+#include "explow.h"
-+#include "expr.h"
-+#include "debug.h"
-+#include "cfgrtl.h"
-+#include "common/common-target.h"
-+#include "gimplify.h"
-+#include "langhooks.h"
-+#include "reload.h"
-+#include "tree-pass.h"
-+#include "context.h"
-+#include "builtins.h"
-+#include "tree-vector-builder.h"
-+#include "opts.h"
-+
-+/* This file should be included last. */
-+#include "target-def.h"
-+
-+/* Processor costs */
-+
-+struct processor_costs {
-+ /* Integer load */
-+ const int int_load;
-+
-+ /* Integer signed load */
-+ const int int_sload;
-+
-+ /* Integer zeroed load */
-+ const int int_zload;
-+
-+ /* Float load */
-+ const int float_load;
-+
-+ /* fmov, fneg, fabs */
-+ const int float_move;
-+
-+ /* fadd, fsub */
-+ const int float_plusminus;
-+
-+ /* fcmp */
-+ const int float_cmp;
-+
-+ /* fmov, fmovr */
-+ const int float_cmove;
-+
-+ /* fmul */
-+ const int float_mul;
-+
-+ /* fdivs */
-+ const int float_div_sf;
-+
-+ /* fdivd */
-+ const int float_div_df;
-+
-+ /* fsqrts */
-+ const int float_sqrt_sf;
-+
-+ /* fsqrtd */
-+ const int float_sqrt_df;
-+
-+ /* umul/smul */
-+ const int int_mul;
-+
-+ /* mulX */
-+ const int int_mulX;
-+
-+ /* integer multiply cost for each bit set past the most
-+ significant 3, so the formula for multiply cost becomes:
-+
-+ if (rs1 < 0)
-+ highest_bit = highest_clear_bit(rs1);
-+ else
-+ highest_bit = highest_set_bit(rs1);
-+ if (highest_bit < 3)
-+ highest_bit = 3;
-+ cost = int_mul{,X} + ((highest_bit - 3) / int_mul_bit_factor);
-+
-+ A value of zero indicates that the multiply costs is fixed,
-+ and not variable. */
-+ const int int_mul_bit_factor;
-+
-+ /* udiv/sdiv */
-+ const int int_div;
-+
-+ /* divX */
-+ const int int_divX;
-+
-+ /* movcc, movr */
-+ const int int_cmove;
-+
-+ /* penalty for shifts, due to scheduling rules etc. */
-+ const int shift_penalty;
-+
-+ /* cost of a (predictable) branch. */
-+ const int branch_cost;
-+};
-+
-+static const
-+struct processor_costs cypress_costs = {
-+ COSTS_N_INSNS (2), /* int load */
-+ COSTS_N_INSNS (2), /* int signed load */
-+ COSTS_N_INSNS (2), /* int zeroed load */
-+ COSTS_N_INSNS (2), /* float load */
-+ COSTS_N_INSNS (5), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (5), /* fadd, fsub */
-+ COSTS_N_INSNS (1), /* fcmp */
-+ COSTS_N_INSNS (1), /* fmov, fmovr */
-+ COSTS_N_INSNS (7), /* fmul */
-+ COSTS_N_INSNS (37), /* fdivs */
-+ COSTS_N_INSNS (37), /* fdivd */
-+ COSTS_N_INSNS (63), /* fsqrts */
-+ COSTS_N_INSNS (63), /* fsqrtd */
-+ COSTS_N_INSNS (1), /* imul */
-+ COSTS_N_INSNS (1), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (1), /* idiv */
-+ COSTS_N_INSNS (1), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 3 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs supersparc_costs = {
-+ COSTS_N_INSNS (1), /* int load */
-+ COSTS_N_INSNS (1), /* int signed load */
-+ COSTS_N_INSNS (1), /* int zeroed load */
-+ COSTS_N_INSNS (0), /* float load */
-+ COSTS_N_INSNS (3), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (3), /* fadd, fsub */
-+ COSTS_N_INSNS (3), /* fcmp */
-+ COSTS_N_INSNS (1), /* fmov, fmovr */
-+ COSTS_N_INSNS (3), /* fmul */
-+ COSTS_N_INSNS (6), /* fdivs */
-+ COSTS_N_INSNS (9), /* fdivd */
-+ COSTS_N_INSNS (12), /* fsqrts */
-+ COSTS_N_INSNS (12), /* fsqrtd */
-+ COSTS_N_INSNS (4), /* imul */
-+ COSTS_N_INSNS (4), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (4), /* idiv */
-+ COSTS_N_INSNS (4), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 1, /* shift penalty */
-+ 3 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs hypersparc_costs = {
-+ COSTS_N_INSNS (1), /* int load */
-+ COSTS_N_INSNS (1), /* int signed load */
-+ COSTS_N_INSNS (1), /* int zeroed load */
-+ COSTS_N_INSNS (1), /* float load */
-+ COSTS_N_INSNS (1), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (1), /* fadd, fsub */
-+ COSTS_N_INSNS (1), /* fcmp */
-+ COSTS_N_INSNS (1), /* fmov, fmovr */
-+ COSTS_N_INSNS (1), /* fmul */
-+ COSTS_N_INSNS (8), /* fdivs */
-+ COSTS_N_INSNS (12), /* fdivd */
-+ COSTS_N_INSNS (17), /* fsqrts */
-+ COSTS_N_INSNS (17), /* fsqrtd */
-+ COSTS_N_INSNS (17), /* imul */
-+ COSTS_N_INSNS (17), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (17), /* idiv */
-+ COSTS_N_INSNS (17), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 3 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs leon_costs = {
-+ COSTS_N_INSNS (1), /* int load */
-+ COSTS_N_INSNS (1), /* int signed load */
-+ COSTS_N_INSNS (1), /* int zeroed load */
-+ COSTS_N_INSNS (1), /* float load */
-+ COSTS_N_INSNS (1), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (1), /* fadd, fsub */
-+ COSTS_N_INSNS (1), /* fcmp */
-+ COSTS_N_INSNS (1), /* fmov, fmovr */
-+ COSTS_N_INSNS (1), /* fmul */
-+ COSTS_N_INSNS (15), /* fdivs */
-+ COSTS_N_INSNS (15), /* fdivd */
-+ COSTS_N_INSNS (23), /* fsqrts */
-+ COSTS_N_INSNS (23), /* fsqrtd */
-+ COSTS_N_INSNS (5), /* imul */
-+ COSTS_N_INSNS (5), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (5), /* idiv */
-+ COSTS_N_INSNS (5), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 3 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs leon3_costs = {
-+ COSTS_N_INSNS (1), /* int load */
-+ COSTS_N_INSNS (1), /* int signed load */
-+ COSTS_N_INSNS (1), /* int zeroed load */
-+ COSTS_N_INSNS (1), /* float load */
-+ COSTS_N_INSNS (1), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (1), /* fadd, fsub */
-+ COSTS_N_INSNS (1), /* fcmp */
-+ COSTS_N_INSNS (1), /* fmov, fmovr */
-+ COSTS_N_INSNS (1), /* fmul */
-+ COSTS_N_INSNS (14), /* fdivs */
-+ COSTS_N_INSNS (15), /* fdivd */
-+ COSTS_N_INSNS (22), /* fsqrts */
-+ COSTS_N_INSNS (23), /* fsqrtd */
-+ COSTS_N_INSNS (5), /* imul */
-+ COSTS_N_INSNS (5), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (35), /* idiv */
-+ COSTS_N_INSNS (35), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 3 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs sparclet_costs = {
-+ COSTS_N_INSNS (3), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (1), /* int zeroed load */
-+ COSTS_N_INSNS (1), /* float load */
-+ COSTS_N_INSNS (1), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (1), /* fadd, fsub */
-+ COSTS_N_INSNS (1), /* fcmp */
-+ COSTS_N_INSNS (1), /* fmov, fmovr */
-+ COSTS_N_INSNS (1), /* fmul */
-+ COSTS_N_INSNS (1), /* fdivs */
-+ COSTS_N_INSNS (1), /* fdivd */
-+ COSTS_N_INSNS (1), /* fsqrts */
-+ COSTS_N_INSNS (1), /* fsqrtd */
-+ COSTS_N_INSNS (5), /* imul */
-+ COSTS_N_INSNS (5), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (5), /* idiv */
-+ COSTS_N_INSNS (5), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 3 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs ultrasparc_costs = {
-+ COSTS_N_INSNS (2), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (2), /* int zeroed load */
-+ COSTS_N_INSNS (2), /* float load */
-+ COSTS_N_INSNS (1), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (4), /* fadd, fsub */
-+ COSTS_N_INSNS (1), /* fcmp */
-+ COSTS_N_INSNS (2), /* fmov, fmovr */
-+ COSTS_N_INSNS (4), /* fmul */
-+ COSTS_N_INSNS (13), /* fdivs */
-+ COSTS_N_INSNS (23), /* fdivd */
-+ COSTS_N_INSNS (13), /* fsqrts */
-+ COSTS_N_INSNS (23), /* fsqrtd */
-+ COSTS_N_INSNS (4), /* imul */
-+ COSTS_N_INSNS (4), /* imulX */
-+ 2, /* imul bit factor */
-+ COSTS_N_INSNS (37), /* idiv */
-+ COSTS_N_INSNS (68), /* idivX */
-+ COSTS_N_INSNS (2), /* movcc/movr */
-+ 2, /* shift penalty */
-+ 2 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs ultrasparc3_costs = {
-+ COSTS_N_INSNS (2), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (3), /* int zeroed load */
-+ COSTS_N_INSNS (2), /* float load */
-+ COSTS_N_INSNS (3), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (4), /* fadd, fsub */
-+ COSTS_N_INSNS (5), /* fcmp */
-+ COSTS_N_INSNS (3), /* fmov, fmovr */
-+ COSTS_N_INSNS (4), /* fmul */
-+ COSTS_N_INSNS (17), /* fdivs */
-+ COSTS_N_INSNS (20), /* fdivd */
-+ COSTS_N_INSNS (20), /* fsqrts */
-+ COSTS_N_INSNS (29), /* fsqrtd */
-+ COSTS_N_INSNS (6), /* imul */
-+ COSTS_N_INSNS (6), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (40), /* idiv */
-+ COSTS_N_INSNS (71), /* idivX */
-+ COSTS_N_INSNS (2), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 2 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs niagara_costs = {
-+ COSTS_N_INSNS (3), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (3), /* int zeroed load */
-+ COSTS_N_INSNS (9), /* float load */
-+ COSTS_N_INSNS (8), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (8), /* fadd, fsub */
-+ COSTS_N_INSNS (26), /* fcmp */
-+ COSTS_N_INSNS (8), /* fmov, fmovr */
-+ COSTS_N_INSNS (29), /* fmul */
-+ COSTS_N_INSNS (54), /* fdivs */
-+ COSTS_N_INSNS (83), /* fdivd */
-+ COSTS_N_INSNS (100), /* fsqrts - not implemented in hardware */
-+ COSTS_N_INSNS (100), /* fsqrtd - not implemented in hardware */
-+ COSTS_N_INSNS (11), /* imul */
-+ COSTS_N_INSNS (11), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (72), /* idiv */
-+ COSTS_N_INSNS (72), /* idivX */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 4 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs niagara2_costs = {
-+ COSTS_N_INSNS (3), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (3), /* int zeroed load */
-+ COSTS_N_INSNS (3), /* float load */
-+ COSTS_N_INSNS (6), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (6), /* fadd, fsub */
-+ COSTS_N_INSNS (6), /* fcmp */
-+ COSTS_N_INSNS (6), /* fmov, fmovr */
-+ COSTS_N_INSNS (6), /* fmul */
-+ COSTS_N_INSNS (19), /* fdivs */
-+ COSTS_N_INSNS (33), /* fdivd */
-+ COSTS_N_INSNS (19), /* fsqrts */
-+ COSTS_N_INSNS (33), /* fsqrtd */
-+ COSTS_N_INSNS (5), /* imul */
-+ COSTS_N_INSNS (5), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (26), /* idiv, average of 12 - 41 cycle range */
-+ COSTS_N_INSNS (26), /* idivX, average of 12 - 41 cycle range */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 5 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs niagara3_costs = {
-+ COSTS_N_INSNS (3), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (3), /* int zeroed load */
-+ COSTS_N_INSNS (3), /* float load */
-+ COSTS_N_INSNS (9), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (9), /* fadd, fsub */
-+ COSTS_N_INSNS (9), /* fcmp */
-+ COSTS_N_INSNS (9), /* fmov, fmovr */
-+ COSTS_N_INSNS (9), /* fmul */
-+ COSTS_N_INSNS (23), /* fdivs */
-+ COSTS_N_INSNS (37), /* fdivd */
-+ COSTS_N_INSNS (23), /* fsqrts */
-+ COSTS_N_INSNS (37), /* fsqrtd */
-+ COSTS_N_INSNS (9), /* imul */
-+ COSTS_N_INSNS (9), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (31), /* idiv, average of 17 - 45 cycle range */
-+ COSTS_N_INSNS (30), /* idivX, average of 16 - 44 cycle range */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 5 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs niagara4_costs = {
-+ COSTS_N_INSNS (5), /* int load */
-+ COSTS_N_INSNS (5), /* int signed load */
-+ COSTS_N_INSNS (5), /* int zeroed load */
-+ COSTS_N_INSNS (5), /* float load */
-+ COSTS_N_INSNS (11), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (11), /* fadd, fsub */
-+ COSTS_N_INSNS (11), /* fcmp */
-+ COSTS_N_INSNS (11), /* fmov, fmovr */
-+ COSTS_N_INSNS (11), /* fmul */
-+ COSTS_N_INSNS (24), /* fdivs */
-+ COSTS_N_INSNS (37), /* fdivd */
-+ COSTS_N_INSNS (24), /* fsqrts */
-+ COSTS_N_INSNS (37), /* fsqrtd */
-+ COSTS_N_INSNS (12), /* imul */
-+ COSTS_N_INSNS (12), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (50), /* idiv, average of 41 - 60 cycle range */
-+ COSTS_N_INSNS (35), /* idivX, average of 26 - 44 cycle range */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 2 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs niagara7_costs = {
-+ COSTS_N_INSNS (5), /* int load */
-+ COSTS_N_INSNS (5), /* int signed load */
-+ COSTS_N_INSNS (5), /* int zeroed load */
-+ COSTS_N_INSNS (5), /* float load */
-+ COSTS_N_INSNS (11), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (11), /* fadd, fsub */
-+ COSTS_N_INSNS (11), /* fcmp */
-+ COSTS_N_INSNS (11), /* fmov, fmovr */
-+ COSTS_N_INSNS (11), /* fmul */
-+ COSTS_N_INSNS (24), /* fdivs */
-+ COSTS_N_INSNS (37), /* fdivd */
-+ COSTS_N_INSNS (24), /* fsqrts */
-+ COSTS_N_INSNS (37), /* fsqrtd */
-+ COSTS_N_INSNS (12), /* imul */
-+ COSTS_N_INSNS (12), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (51), /* idiv, average of 42 - 61 cycle range */
-+ COSTS_N_INSNS (35), /* idivX, average of 26 - 44 cycle range */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 1 /* branch cost */
-+};
-+
-+static const
-+struct processor_costs m8_costs = {
-+ COSTS_N_INSNS (3), /* int load */
-+ COSTS_N_INSNS (3), /* int signed load */
-+ COSTS_N_INSNS (3), /* int zeroed load */
-+ COSTS_N_INSNS (3), /* float load */
-+ COSTS_N_INSNS (9), /* fmov, fneg, fabs */
-+ COSTS_N_INSNS (9), /* fadd, fsub */
-+ COSTS_N_INSNS (9), /* fcmp */
-+ COSTS_N_INSNS (9), /* fmov, fmovr */
-+ COSTS_N_INSNS (9), /* fmul */
-+ COSTS_N_INSNS (26), /* fdivs */
-+ COSTS_N_INSNS (30), /* fdivd */
-+ COSTS_N_INSNS (33), /* fsqrts */
-+ COSTS_N_INSNS (41), /* fsqrtd */
-+ COSTS_N_INSNS (12), /* imul */
-+ COSTS_N_INSNS (10), /* imulX */
-+ 0, /* imul bit factor */
-+ COSTS_N_INSNS (57), /* udiv/sdiv */
-+ COSTS_N_INSNS (30), /* udivx/sdivx */
-+ COSTS_N_INSNS (1), /* movcc/movr */
-+ 0, /* shift penalty */
-+ 1 /* branch cost */
-+};
-+
-+static const struct processor_costs *sparc_costs = &cypress_costs;
-+
-+#ifdef HAVE_AS_RELAX_OPTION
-+/* If 'as' and 'ld' are relaxing tail call insns into branch always, use
-+ "or %o7,%g0,X; call Y; or X,%g0,%o7" always, so that it can be optimized.
-+ With sethi/jmp, neither 'as' nor 'ld' has an easy way how to find out if
-+ somebody does not branch between the sethi and jmp. */
-+#define LEAF_SIBCALL_SLOT_RESERVED_P 1
-+#else
-+#define LEAF_SIBCALL_SLOT_RESERVED_P \
-+ ((TARGET_ARCH64 && !TARGET_CM_MEDLOW) || flag_pic)
-+#endif
-+
-+/* Vector to say how input registers are mapped to output registers.
-+ HARD_FRAME_POINTER_REGNUM cannot be remapped by this function to
-+ eliminate it. You must use -fomit-frame-pointer to get that. */
-+char leaf_reg_remap[] =
-+{ 0, 1, 2, 3, 4, 5, 6, 7,
-+ -1, -1, -1, -1, -1, -1, 14, -1,
-+ -1, -1, -1, -1, -1, -1, -1, -1,
-+ 8, 9, 10, 11, 12, 13, -1, 15,
-+
-+ 32, 33, 34, 35, 36, 37, 38, 39,
-+ 40, 41, 42, 43, 44, 45, 46, 47,
-+ 48, 49, 50, 51, 52, 53, 54, 55,
-+ 56, 57, 58, 59, 60, 61, 62, 63,
-+ 64, 65, 66, 67, 68, 69, 70, 71,
-+ 72, 73, 74, 75, 76, 77, 78, 79,
-+ 80, 81, 82, 83, 84, 85, 86, 87,
-+ 88, 89, 90, 91, 92, 93, 94, 95,
-+ 96, 97, 98, 99, 100, 101, 102};
-+
-+/* Vector, indexed by hard register number, which contains 1
-+ for a register that is allowable in a candidate for leaf
-+ function treatment. */
-+char sparc_leaf_regs[] =
-+{ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 0, 0, 0, 0, 0, 0, 1, 0,
-+ 0, 0, 0, 0, 0, 0, 0, 0,
-+ 1, 1, 1, 1, 1, 1, 0, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1, 1,
-+ 1, 1, 1, 1, 1, 1, 1};
-+
-+struct GTY(()) machine_function
-+{
-+ /* Size of the frame of the function. */
-+ HOST_WIDE_INT frame_size;
-+
-+ /* Size of the frame of the function minus the register window save area
-+ and the outgoing argument area. */
-+ HOST_WIDE_INT apparent_frame_size;
-+
-+ /* Register we pretend the frame pointer is allocated to. Normally, this
-+ is %fp, but if we are in a leaf procedure, this is (%sp + offset). We
-+ record "offset" separately as it may be too big for (reg + disp). */
-+ rtx frame_base_reg;
-+ HOST_WIDE_INT frame_base_offset;
-+
-+ /* Number of global or FP registers to be saved (as 4-byte quantities). */
-+ int n_global_fp_regs;
-+
-+ /* True if the current function is leaf and uses only leaf regs,
-+ so that the SPARC leaf function optimization can be applied.
-+ Private version of crtl->uses_only_leaf_regs, see
-+ sparc_expand_prologue for the rationale. */
-+ int leaf_function_p;
-+
-+ /* True if the prologue saves local or in registers. */
-+ bool save_local_in_regs_p;
-+
-+ /* True if the data calculated by sparc_expand_prologue are valid. */
-+ bool prologue_data_valid_p;
-+};
-+
-+#define sparc_frame_size cfun->machine->frame_size
-+#define sparc_apparent_frame_size cfun->machine->apparent_frame_size
-+#define sparc_frame_base_reg cfun->machine->frame_base_reg
-+#define sparc_frame_base_offset cfun->machine->frame_base_offset
-+#define sparc_n_global_fp_regs cfun->machine->n_global_fp_regs
-+#define sparc_leaf_function_p cfun->machine->leaf_function_p
-+#define sparc_save_local_in_regs_p cfun->machine->save_local_in_regs_p
-+#define sparc_prologue_data_valid_p cfun->machine->prologue_data_valid_p
-+
-+/* 1 if the next opcode is to be specially indented. */
-+int sparc_indent_opcode = 0;
-+
-+static void sparc_option_override (void);
-+static void sparc_init_modes (void);
-+static int function_arg_slotno (const CUMULATIVE_ARGS *, machine_mode,
-+ const_tree, bool, bool, int *, int *);
-+
-+static int supersparc_adjust_cost (rtx_insn *, int, rtx_insn *, int);
-+static int hypersparc_adjust_cost (rtx_insn *, int, rtx_insn *, int);
-+
-+static void sparc_emit_set_const32 (rtx, rtx);
-+static void sparc_emit_set_const64 (rtx, rtx);
-+static void sparc_output_addr_vec (rtx);
-+static void sparc_output_addr_diff_vec (rtx);
-+static void sparc_output_deferred_case_vectors (void);
-+static bool sparc_legitimate_address_p (machine_mode, rtx, bool);
-+static bool sparc_legitimate_constant_p (machine_mode, rtx);
-+static rtx sparc_builtin_saveregs (void);
-+static int epilogue_renumber (rtx *, int);
-+static bool sparc_assemble_integer (rtx, unsigned int, int);
-+static int set_extends (rtx_insn *);
-+static void sparc_asm_function_prologue (FILE *);
-+static void sparc_asm_function_epilogue (FILE *);
-+#ifdef TARGET_SOLARIS
-+static void sparc_solaris_elf_asm_named_section (const char *, unsigned int,
-+ tree) ATTRIBUTE_UNUSED;
-+#endif
-+static int sparc_adjust_cost (rtx_insn *, int, rtx_insn *, int, unsigned int);
-+static int sparc_issue_rate (void);
-+static void sparc_sched_init (FILE *, int, int);
-+static int sparc_use_sched_lookahead (void);
-+
-+static void emit_soft_tfmode_libcall (const char *, int, rtx *);
-+static void emit_soft_tfmode_binop (enum rtx_code, rtx *);
-+static void emit_soft_tfmode_unop (enum rtx_code, rtx *);
-+static void emit_soft_tfmode_cvt (enum rtx_code, rtx *);
-+static void emit_hard_tfmode_operation (enum rtx_code, rtx *);
-+
-+static bool sparc_function_ok_for_sibcall (tree, tree);
-+static void sparc_init_libfuncs (void);
-+static void sparc_init_builtins (void);
-+static void sparc_fpu_init_builtins (void);
-+static void sparc_vis_init_builtins (void);
-+static tree sparc_builtin_decl (unsigned, bool);
-+static rtx sparc_expand_builtin (tree, rtx, rtx, machine_mode, int);
-+static tree sparc_fold_builtin (tree, int, tree *, bool);
-+static void sparc_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
-+ HOST_WIDE_INT, tree);
-+static bool sparc_can_output_mi_thunk (const_tree, HOST_WIDE_INT,
-+ HOST_WIDE_INT, const_tree);
-+static struct machine_function * sparc_init_machine_status (void);
-+static bool sparc_cannot_force_const_mem (machine_mode, rtx);
-+static rtx sparc_tls_get_addr (void);
-+static rtx sparc_tls_got (void);
-+static int sparc_register_move_cost (machine_mode,
-+ reg_class_t, reg_class_t);
-+static bool sparc_rtx_costs (rtx, machine_mode, int, int, int *, bool);
-+static machine_mode sparc_promote_function_mode (const_tree, machine_mode,
-+ int *, const_tree, int);
-+static bool sparc_strict_argument_naming (cumulative_args_t);
-+static void sparc_va_start (tree, rtx);
-+static tree sparc_gimplify_va_arg (tree, tree, gimple_seq *, gimple_seq *);
-+static bool sparc_vector_mode_supported_p (machine_mode);
-+static bool sparc_tls_referenced_p (rtx);
-+static rtx sparc_legitimize_tls_address (rtx);
-+static rtx sparc_legitimize_pic_address (rtx, rtx);
-+static rtx sparc_legitimize_address (rtx, rtx, machine_mode);
-+static rtx sparc_delegitimize_address (rtx);
-+static bool sparc_mode_dependent_address_p (const_rtx, addr_space_t);
-+static bool sparc_pass_by_reference (cumulative_args_t,
-+ const function_arg_info &);
-+static void sparc_function_arg_advance (cumulative_args_t,
-+ const function_arg_info &);
-+static rtx sparc_function_arg (cumulative_args_t, const function_arg_info &);
-+static rtx sparc_function_incoming_arg (cumulative_args_t,
-+ const function_arg_info &);
-+static pad_direction sparc_function_arg_padding (machine_mode, const_tree);
-+static unsigned int sparc_function_arg_boundary (machine_mode,
-+ const_tree);
-+static int sparc_arg_partial_bytes (cumulative_args_t,
-+ const function_arg_info &);
-+static bool sparc_return_in_memory (const_tree, const_tree);
-+static rtx sparc_struct_value_rtx (tree, int);
-+static rtx sparc_function_value (const_tree, const_tree, bool);
-+static rtx sparc_libcall_value (machine_mode, const_rtx);
-+static bool sparc_function_value_regno_p (const unsigned int);
-+static unsigned HOST_WIDE_INT sparc_asan_shadow_offset (void);
-+static void sparc_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
-+static void sparc_file_end (void);
-+static bool sparc_frame_pointer_required (void);
-+static bool sparc_can_eliminate (const int, const int);
-+static void sparc_conditional_register_usage (void);
-+static bool sparc_use_pseudo_pic_reg (void);
-+static void sparc_init_pic_reg (void);
-+#ifdef TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
-+static const char *sparc_mangle_type (const_tree);
-+#endif
-+static void sparc_trampoline_init (rtx, tree, rtx);
-+static machine_mode sparc_preferred_simd_mode (scalar_mode);
-+static reg_class_t sparc_preferred_reload_class (rtx x, reg_class_t rclass);
-+static bool sparc_lra_p (void);
-+static bool sparc_print_operand_punct_valid_p (unsigned char);
-+static void sparc_print_operand (FILE *, rtx, int);
-+static void sparc_print_operand_address (FILE *, machine_mode, rtx);
-+static reg_class_t sparc_secondary_reload (bool, rtx, reg_class_t,
-+ machine_mode,
-+ secondary_reload_info *);
-+static bool sparc_secondary_memory_needed (machine_mode, reg_class_t,
-+ reg_class_t);
-+static machine_mode sparc_secondary_memory_needed_mode (machine_mode);
-+static scalar_int_mode sparc_cstore_mode (enum insn_code icode);
-+static void sparc_atomic_assign_expand_fenv (tree *, tree *, tree *);
-+static bool sparc_fixed_condition_code_regs (unsigned int *, unsigned int *);
-+static unsigned int sparc_min_arithmetic_precision (void);
-+static unsigned int sparc_hard_regno_nregs (unsigned int, machine_mode);
-+static bool sparc_hard_regno_mode_ok (unsigned int, machine_mode);
-+static bool sparc_modes_tieable_p (machine_mode, machine_mode);
-+static bool sparc_can_change_mode_class (machine_mode, machine_mode,
-+ reg_class_t);
-+static HOST_WIDE_INT sparc_constant_alignment (const_tree, HOST_WIDE_INT);
-+static bool sparc_vectorize_vec_perm_const (machine_mode, rtx, rtx, rtx,
-+ const vec_perm_indices &);
-+static bool sparc_can_follow_jump (const rtx_insn *, const rtx_insn *);
-+
-+#ifdef SUBTARGET_ATTRIBUTE_TABLE
-+/* Table of valid machine attributes. */
-+static const struct attribute_spec sparc_attribute_table[] =
-+{
-+ /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
-+ do_diagnostic, handler, exclude } */
-+ SUBTARGET_ATTRIBUTE_TABLE,
-+ { NULL, 0, 0, false, false, false, false, NULL, NULL }
-+};
-+#endif
-+
-+char sparc_hard_reg_printed[8];
-+
-+/* Initialize the GCC target structure. */
-+
-+/* The default is to use .half rather than .short for aligned HI objects. */
-+#undef TARGET_ASM_ALIGNED_HI_OP
-+#define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
-+
-+#undef TARGET_ASM_UNALIGNED_HI_OP
-+#define TARGET_ASM_UNALIGNED_HI_OP "\t.uahalf\t"
-+#undef TARGET_ASM_UNALIGNED_SI_OP
-+#define TARGET_ASM_UNALIGNED_SI_OP "\t.uaword\t"
-+#undef TARGET_ASM_UNALIGNED_DI_OP
-+#define TARGET_ASM_UNALIGNED_DI_OP "\t.uaxword\t"
-+
-+/* The target hook has to handle DI-mode values. */
-+#undef TARGET_ASM_INTEGER
-+#define TARGET_ASM_INTEGER sparc_assemble_integer
-+
-+#undef TARGET_ASM_FUNCTION_PROLOGUE
-+#define TARGET_ASM_FUNCTION_PROLOGUE sparc_asm_function_prologue
-+#undef TARGET_ASM_FUNCTION_EPILOGUE
-+#define TARGET_ASM_FUNCTION_EPILOGUE sparc_asm_function_epilogue
-+
-+#undef TARGET_SCHED_ADJUST_COST
-+#define TARGET_SCHED_ADJUST_COST sparc_adjust_cost
-+#undef TARGET_SCHED_ISSUE_RATE
-+#define TARGET_SCHED_ISSUE_RATE sparc_issue_rate
-+#undef TARGET_SCHED_INIT
-+#define TARGET_SCHED_INIT sparc_sched_init
-+#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
-+#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD sparc_use_sched_lookahead
-+
-+#undef TARGET_FUNCTION_OK_FOR_SIBCALL
-+#define TARGET_FUNCTION_OK_FOR_SIBCALL sparc_function_ok_for_sibcall
-+
-+#undef TARGET_INIT_LIBFUNCS
-+#define TARGET_INIT_LIBFUNCS sparc_init_libfuncs
-+
-+#undef TARGET_LEGITIMIZE_ADDRESS
-+#define TARGET_LEGITIMIZE_ADDRESS sparc_legitimize_address
-+#undef TARGET_DELEGITIMIZE_ADDRESS
-+#define TARGET_DELEGITIMIZE_ADDRESS sparc_delegitimize_address
-+#undef TARGET_MODE_DEPENDENT_ADDRESS_P
-+#define TARGET_MODE_DEPENDENT_ADDRESS_P sparc_mode_dependent_address_p
-+
-+#undef TARGET_INIT_BUILTINS
-+#define TARGET_INIT_BUILTINS sparc_init_builtins
-+#undef TARGET_BUILTIN_DECL
-+#define TARGET_BUILTIN_DECL sparc_builtin_decl
-+#undef TARGET_EXPAND_BUILTIN
-+#define TARGET_EXPAND_BUILTIN sparc_expand_builtin
-+#undef TARGET_FOLD_BUILTIN
-+#define TARGET_FOLD_BUILTIN sparc_fold_builtin
-+
-+#if TARGET_TLS
-+#undef TARGET_HAVE_TLS
-+#define TARGET_HAVE_TLS true
-+#endif
-+
-+#undef TARGET_CANNOT_FORCE_CONST_MEM
-+#define TARGET_CANNOT_FORCE_CONST_MEM sparc_cannot_force_const_mem
-+
-+#undef TARGET_ASM_OUTPUT_MI_THUNK
-+#define TARGET_ASM_OUTPUT_MI_THUNK sparc_output_mi_thunk
-+#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
-+#define TARGET_ASM_CAN_OUTPUT_MI_THUNK sparc_can_output_mi_thunk
-+
-+#undef TARGET_RTX_COSTS
-+#define TARGET_RTX_COSTS sparc_rtx_costs
-+#undef TARGET_ADDRESS_COST
-+#define TARGET_ADDRESS_COST hook_int_rtx_mode_as_bool_0
-+#undef TARGET_REGISTER_MOVE_COST
-+#define TARGET_REGISTER_MOVE_COST sparc_register_move_cost
-+
-+#undef TARGET_PROMOTE_FUNCTION_MODE
-+#define TARGET_PROMOTE_FUNCTION_MODE sparc_promote_function_mode
-+#undef TARGET_STRICT_ARGUMENT_NAMING
-+#define TARGET_STRICT_ARGUMENT_NAMING sparc_strict_argument_naming
-+
-+#undef TARGET_MUST_PASS_IN_STACK
-+#define TARGET_MUST_PASS_IN_STACK must_pass_in_stack_var_size
-+#undef TARGET_PASS_BY_REFERENCE
-+#define TARGET_PASS_BY_REFERENCE sparc_pass_by_reference
-+#undef TARGET_ARG_PARTIAL_BYTES
-+#define TARGET_ARG_PARTIAL_BYTES sparc_arg_partial_bytes
-+#undef TARGET_FUNCTION_ARG_ADVANCE
-+#define TARGET_FUNCTION_ARG_ADVANCE sparc_function_arg_advance
-+#undef TARGET_FUNCTION_ARG
-+#define TARGET_FUNCTION_ARG sparc_function_arg
-+#undef TARGET_FUNCTION_INCOMING_ARG
-+#define TARGET_FUNCTION_INCOMING_ARG sparc_function_incoming_arg
-+#undef TARGET_FUNCTION_ARG_PADDING
-+#define TARGET_FUNCTION_ARG_PADDING sparc_function_arg_padding
-+#undef TARGET_FUNCTION_ARG_BOUNDARY
-+#define TARGET_FUNCTION_ARG_BOUNDARY sparc_function_arg_boundary
-+
-+#undef TARGET_RETURN_IN_MEMORY
-+#define TARGET_RETURN_IN_MEMORY sparc_return_in_memory
-+#undef TARGET_STRUCT_VALUE_RTX
-+#define TARGET_STRUCT_VALUE_RTX sparc_struct_value_rtx
-+#undef TARGET_FUNCTION_VALUE
-+#define TARGET_FUNCTION_VALUE sparc_function_value
-+#undef TARGET_LIBCALL_VALUE
-+#define TARGET_LIBCALL_VALUE sparc_libcall_value
-+#undef TARGET_FUNCTION_VALUE_REGNO_P
-+#define TARGET_FUNCTION_VALUE_REGNO_P sparc_function_value_regno_p
-+
-+#undef TARGET_EXPAND_BUILTIN_SAVEREGS
-+#define TARGET_EXPAND_BUILTIN_SAVEREGS sparc_builtin_saveregs
-+
-+#undef TARGET_ASAN_SHADOW_OFFSET
-+#define TARGET_ASAN_SHADOW_OFFSET sparc_asan_shadow_offset
-+
-+#undef TARGET_EXPAND_BUILTIN_VA_START
-+#define TARGET_EXPAND_BUILTIN_VA_START sparc_va_start
-+#undef TARGET_GIMPLIFY_VA_ARG_EXPR
-+#define TARGET_GIMPLIFY_VA_ARG_EXPR sparc_gimplify_va_arg
-+
-+#undef TARGET_VECTOR_MODE_SUPPORTED_P
-+#define TARGET_VECTOR_MODE_SUPPORTED_P sparc_vector_mode_supported_p
-+
-+#undef TARGET_VECTORIZE_PREFERRED_SIMD_MODE
-+#define TARGET_VECTORIZE_PREFERRED_SIMD_MODE sparc_preferred_simd_mode
-+
-+#ifdef SUBTARGET_INSERT_ATTRIBUTES
-+#undef TARGET_INSERT_ATTRIBUTES
-+#define TARGET_INSERT_ATTRIBUTES SUBTARGET_INSERT_ATTRIBUTES
-+#endif
-+
-+#ifdef SUBTARGET_ATTRIBUTE_TABLE
-+#undef TARGET_ATTRIBUTE_TABLE
-+#define TARGET_ATTRIBUTE_TABLE sparc_attribute_table
-+#endif
-+
-+#undef TARGET_OPTION_OVERRIDE
-+#define TARGET_OPTION_OVERRIDE sparc_option_override
-+
-+#ifdef TARGET_THREAD_SSP_OFFSET
-+#undef TARGET_STACK_PROTECT_GUARD
-+#define TARGET_STACK_PROTECT_GUARD hook_tree_void_null
-+#endif
-+
-+#if TARGET_GNU_TLS && defined(HAVE_AS_SPARC_UA_PCREL)
-+#undef TARGET_ASM_OUTPUT_DWARF_DTPREL
-+#define TARGET_ASM_OUTPUT_DWARF_DTPREL sparc_output_dwarf_dtprel
-+#endif
-+
-+#undef TARGET_ASM_FILE_END
-+#define TARGET_ASM_FILE_END sparc_file_end
-+
-+#undef TARGET_FRAME_POINTER_REQUIRED
-+#define TARGET_FRAME_POINTER_REQUIRED sparc_frame_pointer_required
-+
-+#undef TARGET_CAN_ELIMINATE
-+#define TARGET_CAN_ELIMINATE sparc_can_eliminate
-+
-+#undef TARGET_PREFERRED_RELOAD_CLASS
-+#define TARGET_PREFERRED_RELOAD_CLASS sparc_preferred_reload_class
-+
-+#undef TARGET_SECONDARY_RELOAD
-+#define TARGET_SECONDARY_RELOAD sparc_secondary_reload
-+#undef TARGET_SECONDARY_MEMORY_NEEDED
-+#define TARGET_SECONDARY_MEMORY_NEEDED sparc_secondary_memory_needed
-+#undef TARGET_SECONDARY_MEMORY_NEEDED_MODE
-+#define TARGET_SECONDARY_MEMORY_NEEDED_MODE sparc_secondary_memory_needed_mode
-+
-+#undef TARGET_CONDITIONAL_REGISTER_USAGE
-+#define TARGET_CONDITIONAL_REGISTER_USAGE sparc_conditional_register_usage
-+
-+#undef TARGET_INIT_PIC_REG
-+#define TARGET_INIT_PIC_REG sparc_init_pic_reg
-+
-+#undef TARGET_USE_PSEUDO_PIC_REG
-+#define TARGET_USE_PSEUDO_PIC_REG sparc_use_pseudo_pic_reg
-+
-+#ifdef TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
-+#undef TARGET_MANGLE_TYPE
-+#define TARGET_MANGLE_TYPE sparc_mangle_type
-+#endif
-+
-+#undef TARGET_LRA_P
-+#define TARGET_LRA_P sparc_lra_p
-+
-+#undef TARGET_LEGITIMATE_ADDRESS_P
-+#define TARGET_LEGITIMATE_ADDRESS_P sparc_legitimate_address_p
-+
-+#undef TARGET_LEGITIMATE_CONSTANT_P
-+#define TARGET_LEGITIMATE_CONSTANT_P sparc_legitimate_constant_p
-+
-+#undef TARGET_TRAMPOLINE_INIT
-+#define TARGET_TRAMPOLINE_INIT sparc_trampoline_init
-+
-+#undef TARGET_PRINT_OPERAND_PUNCT_VALID_P
-+#define TARGET_PRINT_OPERAND_PUNCT_VALID_P sparc_print_operand_punct_valid_p
-+#undef TARGET_PRINT_OPERAND
-+#define TARGET_PRINT_OPERAND sparc_print_operand
-+#undef TARGET_PRINT_OPERAND_ADDRESS
-+#define TARGET_PRINT_OPERAND_ADDRESS sparc_print_operand_address
-+
-+/* The value stored by LDSTUB. */
-+#undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL
-+#define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 0xff
-+
-+#undef TARGET_CSTORE_MODE
-+#define TARGET_CSTORE_MODE sparc_cstore_mode
-+
-+#undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV
-+#define TARGET_ATOMIC_ASSIGN_EXPAND_FENV sparc_atomic_assign_expand_fenv
-+
-+#undef TARGET_FIXED_CONDITION_CODE_REGS
-+#define TARGET_FIXED_CONDITION_CODE_REGS sparc_fixed_condition_code_regs
-+
-+#undef TARGET_MIN_ARITHMETIC_PRECISION
-+#define TARGET_MIN_ARITHMETIC_PRECISION sparc_min_arithmetic_precision
-+
-+#undef TARGET_CUSTOM_FUNCTION_DESCRIPTORS
-+#define TARGET_CUSTOM_FUNCTION_DESCRIPTORS 1
-+
-+#undef TARGET_HARD_REGNO_NREGS
-+#define TARGET_HARD_REGNO_NREGS sparc_hard_regno_nregs
-+#undef TARGET_HARD_REGNO_MODE_OK
-+#define TARGET_HARD_REGNO_MODE_OK sparc_hard_regno_mode_ok
-+
-+#undef TARGET_MODES_TIEABLE_P
-+#define TARGET_MODES_TIEABLE_P sparc_modes_tieable_p
-+
-+#undef TARGET_CAN_CHANGE_MODE_CLASS
-+#define TARGET_CAN_CHANGE_MODE_CLASS sparc_can_change_mode_class
-+
-+#undef TARGET_CONSTANT_ALIGNMENT
-+#define TARGET_CONSTANT_ALIGNMENT sparc_constant_alignment
-+
-+#undef TARGET_VECTORIZE_VEC_PERM_CONST
-+#define TARGET_VECTORIZE_VEC_PERM_CONST sparc_vectorize_vec_perm_const
-+
-+#undef TARGET_CAN_FOLLOW_JUMP
-+#define TARGET_CAN_FOLLOW_JUMP sparc_can_follow_jump
-+
-+struct gcc_target targetm = TARGET_INITIALIZER;
-+
-+/* Return the memory reference contained in X if any, zero otherwise. */
-+
-+static rtx
-+mem_ref (rtx x)
-+{
-+ if (GET_CODE (x) == SIGN_EXTEND || GET_CODE (x) == ZERO_EXTEND)
-+ x = XEXP (x, 0);
-+
-+ if (MEM_P (x))
-+ return x;
-+
-+ return NULL_RTX;
-+}
-+
-+/* True if any of INSN's source register(s) is REG. */
-+
-+static bool
-+insn_uses_reg_p (rtx_insn *insn, unsigned int reg)
-+{
-+ extract_insn (insn);
-+ return ((REG_P (recog_data.operand[1])
-+ && REGNO (recog_data.operand[1]) == reg)
-+ || (recog_data.n_operands == 3
-+ && REG_P (recog_data.operand[2])
-+ && REGNO (recog_data.operand[2]) == reg));
-+}
-+
-+/* True if INSN is a floating-point division or square-root. */
-+
-+static bool
-+div_sqrt_insn_p (rtx_insn *insn)
-+{
-+ if (GET_CODE (PATTERN (insn)) != SET)
-+ return false;
-+
-+ switch (get_attr_type (insn))
-+ {
-+ case TYPE_FPDIVS:
-+ case TYPE_FPSQRTS:
-+ case TYPE_FPDIVD:
-+ case TYPE_FPSQRTD:
-+ return true;
-+ default:
-+ return false;
-+ }
-+}
-+
-+/* True if INSN is a floating-point instruction. */
-+
-+static bool
-+fpop_insn_p (rtx_insn *insn)
-+{
-+ if (GET_CODE (PATTERN (insn)) != SET)
-+ return false;
-+
-+ switch (get_attr_type (insn))
-+ {
-+ case TYPE_FPMOVE:
-+ case TYPE_FPCMOVE:
-+ case TYPE_FP:
-+ case TYPE_FPCMP:
-+ case TYPE_FPMUL:
-+ case TYPE_FPDIVS:
-+ case TYPE_FPSQRTS:
-+ case TYPE_FPDIVD:
-+ case TYPE_FPSQRTD:
-+ return true;
-+ default:
-+ return false;
-+ }
-+}
-+
-+/* True if INSN is an atomic instruction. */
-+
-+static bool
-+atomic_insn_for_leon3_p (rtx_insn *insn)
-+{
-+ switch (INSN_CODE (insn))
-+ {
-+ case CODE_FOR_swapsi:
-+ case CODE_FOR_ldstub:
-+ case CODE_FOR_atomic_compare_and_swap_leon3_1:
-+ return true;
-+ default:
-+ return false;
-+ }
-+}
-+
-+/* We use a machine specific pass to enable workarounds for errata.
-+
-+ We need to have the (essentially) final form of the insn stream in order
-+ to properly detect the various hazards. Therefore, this machine specific
-+ pass runs as late as possible. */
-+
-+/* True if INSN is a md pattern or asm statement. */
-+#define USEFUL_INSN_P(INSN) \
-+ (NONDEBUG_INSN_P (INSN) \
-+ && GET_CODE (PATTERN (INSN)) != USE \
-+ && GET_CODE (PATTERN (INSN)) != CLOBBER)
-+
-+static unsigned int
-+sparc_do_work_around_errata (void)
-+{
-+ rtx_insn *insn, *next;
-+
-+ /* Force all instructions to be split into their final form. */
-+ split_all_insns_noflow ();
-+
-+ /* Now look for specific patterns in the insn stream. */
-+ for (insn = get_insns (); insn; insn = next)
-+ {
-+ bool insert_nop = false;
-+ rtx set;
-+ rtx_insn *jump;
-+ rtx_sequence *seq;
-+
-+ /* Look into the instruction in a delay slot. */
-+ if (NONJUMP_INSN_P (insn)
-+ && (seq = dyn_cast <rtx_sequence *> (PATTERN (insn))))
-+ {
-+ jump = seq->insn (0);
-+ insn = seq->insn (1);
-+ }
-+ else if (JUMP_P (insn))
-+ jump = insn;
-+ else
-+ jump = NULL;
-+
-+ /* Place a NOP at the branch target of an integer branch if it is a
-+ floating-point operation or a floating-point branch. */
-+ if (sparc_fix_gr712rc
-+ && jump
-+ && jump_to_label_p (jump)
-+ && get_attr_branch_type (jump) == BRANCH_TYPE_ICC)
-+ {
-+ rtx_insn *target = next_active_insn (JUMP_LABEL_AS_INSN (jump));
-+ if (target
-+ && (fpop_insn_p (target)
-+ || (JUMP_P (target)
-+ && get_attr_branch_type (target) == BRANCH_TYPE_FCC)))
-+ emit_insn_before (gen_nop (), target);
-+ }
-+
-+ /* Insert a NOP between load instruction and atomic instruction. Insert
-+ a NOP at branch target if there is a load in delay slot and an atomic
-+ instruction at branch target. */
-+ if (sparc_fix_ut700
-+ && NONJUMP_INSN_P (insn)
-+ && (set = single_set (insn)) != NULL_RTX
-+ && mem_ref (SET_SRC (set))
-+ && REG_P (SET_DEST (set)))
-+ {
-+ if (jump && jump_to_label_p (jump))
-+ {
-+ rtx_insn *target = next_active_insn (JUMP_LABEL_AS_INSN (jump));
-+ if (target && atomic_insn_for_leon3_p (target))
-+ emit_insn_before (gen_nop (), target);
-+ }
-+
-+ next = next_active_insn (insn);
-+ if (!next)
-+ break;
-+
-+ if (atomic_insn_for_leon3_p (next))
-+ insert_nop = true;
-+ }
-+
-+ /* Look for a sequence that starts with a fdiv or fsqrt instruction and
-+ ends with another fdiv or fsqrt instruction with no dependencies on
-+ the former, along with an appropriate pattern in between. */
-+ if (sparc_fix_lost_divsqrt
-+ && NONJUMP_INSN_P (insn)
-+ && div_sqrt_insn_p (insn))
-+ {
-+ int i;
-+ int fp_found = 0;
-+ rtx_insn *after;
-+
-+ const unsigned int dest_reg = REGNO (SET_DEST (single_set (insn)));
-+
-+ next = next_active_insn (insn);
-+ if (!next)
-+ break;
-+
-+ for (after = next, i = 0; i < 4; i++)
-+ {
-+ /* Count floating-point operations. */
-+ if (i != 3 && fpop_insn_p (after))
-+ {
-+ /* If the insn uses the destination register of
-+ the div/sqrt, then it cannot be problematic. */
-+ if (insn_uses_reg_p (after, dest_reg))
-+ break;
-+ fp_found++;
-+ }
-+
-+ /* Count floating-point loads. */
-+ if (i != 3
-+ && (set = single_set (after)) != NULL_RTX
-+ && REG_P (SET_DEST (set))
-+ && REGNO (SET_DEST (set)) > 31)
-+ {
-+ /* If the insn uses the destination register of
-+ the div/sqrt, then it cannot be problematic. */
-+ if (REGNO (SET_DEST (set)) == dest_reg)
-+ break;
-+ fp_found++;
-+ }
-+
-+ /* Check if this is a problematic sequence. */
-+ if (i > 1
-+ && fp_found >= 2
-+ && div_sqrt_insn_p (after))
-+ {
-+ /* If this is the short version of the problematic
-+ sequence we add two NOPs in a row to also prevent
-+ the long version. */
-+ if (i == 2)
-+ emit_insn_before (gen_nop (), next);
-+ insert_nop = true;
-+ break;
-+ }
-+
-+ /* No need to scan past a second div/sqrt. */
-+ if (div_sqrt_insn_p (after))
-+ break;
-+
-+ /* Insert NOP before branch. */
-+ if (i < 3
-+ && (!NONJUMP_INSN_P (after)
-+ || GET_CODE (PATTERN (after)) == SEQUENCE))
-+ {
-+ insert_nop = true;
-+ break;
-+ }
-+
-+ after = next_active_insn (after);
-+ if (!after)
-+ break;
-+ }
-+ }
-+
-+ /* Look for either of these two sequences:
-+
-+ Sequence A:
-+ 1. store of word size or less (e.g. st / stb / sth / stf)
-+ 2. any single instruction that is not a load or store
-+ 3. any store instruction (e.g. st / stb / sth / stf / std / stdf)
-+
-+ Sequence B:
-+ 1. store of double word size (e.g. std / stdf)
-+ 2. any store instruction (e.g. st / stb / sth / stf / std / stdf) */
-+ if (sparc_fix_b2bst
-+ && NONJUMP_INSN_P (insn)
-+ && (set = single_set (insn)) != NULL_RTX
-+ && MEM_P (SET_DEST (set)))
-+ {
-+ /* Sequence B begins with a double-word store. */
-+ bool seq_b = GET_MODE_SIZE (GET_MODE (SET_DEST (set))) == 8;
-+ rtx_insn *after;
-+ int i;
-+
-+ next = next_active_insn (insn);
-+ if (!next)
-+ break;
-+
-+ for (after = next, i = 0; i < 2; i++)
-+ {
-+ /* Skip empty assembly statements. */
-+ if ((GET_CODE (PATTERN (after)) == UNSPEC_VOLATILE)
-+ || (USEFUL_INSN_P (after)
-+ && (asm_noperands (PATTERN (after))>=0)
-+ && !strcmp (decode_asm_operands (PATTERN (after),
-+ NULL, NULL, NULL,
-+ NULL, NULL), "")))
-+ after = next_active_insn (after);
-+ if (!after)
-+ break;
-+
-+ /* If the insn is a branch, then it cannot be problematic. */
-+ if (!NONJUMP_INSN_P (after)
-+ || GET_CODE (PATTERN (after)) == SEQUENCE)
-+ break;
-+
-+ /* Sequence B is only two instructions long. */
-+ if (seq_b)
-+ {
-+ /* Add NOP if followed by a store. */
-+ if ((set = single_set (after)) != NULL_RTX
-+ && MEM_P (SET_DEST (set)))
-+ insert_nop = true;
-+
-+ /* Otherwise it is ok. */
-+ break;
-+ }
-+
-+ /* If the second instruction is a load or a store,
-+ then the sequence cannot be problematic. */
-+ if (i == 0)
-+ {
-+ if ((set = single_set (after)) != NULL_RTX
-+ && (MEM_P (SET_DEST (set)) || mem_ref (SET_SRC (set))))
-+ break;
-+
-+ after = next_active_insn (after);
-+ if (!after)
-+ break;
-+ }
-+
-+ /* Add NOP if third instruction is a store. */
-+ if (i == 1
-+ && (set = single_set (after)) != NULL_RTX
-+ && MEM_P (SET_DEST (set)))
-+ insert_nop = true;
-+ }
-+ }
-+
-+ /* Look for a single-word load into an odd-numbered FP register. */
-+ else if (sparc_fix_at697f
-+ && NONJUMP_INSN_P (insn)
-+ && (set = single_set (insn)) != NULL_RTX
-+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) == 4
-+ && mem_ref (SET_SRC (set))
-+ && REG_P (SET_DEST (set))
-+ && REGNO (SET_DEST (set)) > 31
-+ && REGNO (SET_DEST (set)) % 2 != 0)
-+ {
-+ /* The wrong dependency is on the enclosing double register. */
-+ const unsigned int x = REGNO (SET_DEST (set)) - 1;
-+ unsigned int src1, src2, dest;
-+ int code;
-+
-+ next = next_active_insn (insn);
-+ if (!next)
-+ break;
-+ /* If the insn is a branch, then it cannot be problematic. */
-+ if (!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) == SEQUENCE)
-+ continue;
-+
-+ extract_insn (next);
-+ code = INSN_CODE (next);
-+
-+ switch (code)
-+ {
-+ case CODE_FOR_adddf3:
-+ case CODE_FOR_subdf3:
-+ case CODE_FOR_muldf3:
-+ case CODE_FOR_divdf3:
-+ dest = REGNO (recog_data.operand[0]);
-+ src1 = REGNO (recog_data.operand[1]);
-+ src2 = REGNO (recog_data.operand[2]);
-+ if (src1 != src2)
-+ {
-+ /* Case [1-4]:
-+ ld [address], %fx+1
-+ FPOPd %f{x,y}, %f{y,x}, %f{x,y} */
-+ if ((src1 == x || src2 == x)
-+ && (dest == src1 || dest == src2))
-+ insert_nop = true;
-+ }
-+ else
-+ {
-+ /* Case 5:
-+ ld [address], %fx+1
-+ FPOPd %fx, %fx, %fx */
-+ if (src1 == x
-+ && dest == src1
-+ && (code == CODE_FOR_adddf3 || code == CODE_FOR_muldf3))
-+ insert_nop = true;
-+ }
-+ break;
-+
-+ case CODE_FOR_sqrtdf2:
-+ dest = REGNO (recog_data.operand[0]);
-+ src1 = REGNO (recog_data.operand[1]);
-+ /* Case 6:
-+ ld [address], %fx+1
-+ fsqrtd %fx, %fx */
-+ if (src1 == x && dest == src1)
-+ insert_nop = true;
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ }
-+
-+ /* Look for a single-word load into an integer register. */
-+ else if (sparc_fix_ut699
-+ && NONJUMP_INSN_P (insn)
-+ && (set = single_set (insn)) != NULL_RTX
-+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) <= 4
-+ && (mem_ref (SET_SRC (set)) != NULL_RTX
-+ || INSN_CODE (insn) == CODE_FOR_movsi_pic_gotdata_op)
-+ && REG_P (SET_DEST (set))
-+ && REGNO (SET_DEST (set)) < 32)
-+ {
-+ /* There is no problem if the second memory access has a data
-+ dependency on the first single-cycle load. */
-+ rtx x = SET_DEST (set);
-+
-+ next = next_active_insn (insn);
-+ if (!next)
-+ break;
-+ /* If the insn is a branch, then it cannot be problematic. */
-+ if (!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) == SEQUENCE)
-+ continue;
-+
-+ /* Look for a second memory access to/from an integer register. */
-+ if ((set = single_set (next)) != NULL_RTX)
-+ {
-+ rtx src = SET_SRC (set);
-+ rtx dest = SET_DEST (set);
-+ rtx mem;
-+
-+ /* LDD is affected. */
-+ if ((mem = mem_ref (src)) != NULL_RTX
-+ && REG_P (dest)
-+ && REGNO (dest) < 32
-+ && !reg_mentioned_p (x, XEXP (mem, 0)))
-+ insert_nop = true;
-+
-+ /* STD is *not* affected. */
-+ else if (MEM_P (dest)
-+ && GET_MODE_SIZE (GET_MODE (dest)) <= 4
-+ && (src == CONST0_RTX (GET_MODE (dest))
-+ || (REG_P (src)
-+ && REGNO (src) < 32
-+ && REGNO (src) != REGNO (x)))
-+ && !reg_mentioned_p (x, XEXP (dest, 0)))
-+ insert_nop = true;
-+
-+ /* GOT accesses uses LD. */
-+ else if (INSN_CODE (next) == CODE_FOR_movsi_pic_gotdata_op
-+ && !reg_mentioned_p (x, XEXP (XEXP (src, 0), 1)))
-+ insert_nop = true;
-+ }
-+ }
-+
-+ /* Look for a single-word load/operation into an FP register. */
-+ else if (sparc_fix_ut699
-+ && NONJUMP_INSN_P (insn)
-+ && (set = single_set (insn)) != NULL_RTX
-+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) == 4
-+ && REG_P (SET_DEST (set))
-+ && REGNO (SET_DEST (set)) > 31)
-+ {
-+ /* Number of instructions in the problematic window. */
-+ const int n_insns = 4;
-+ /* The problematic combination is with the sibling FP register. */
-+ const unsigned int x = REGNO (SET_DEST (set));
-+ const unsigned int y = x ^ 1;
-+ rtx_insn *after;
-+ int i;
-+
-+ next = next_active_insn (insn);
-+ if (!next)
-+ break;
-+ /* If the insn is a branch, then it cannot be problematic. */
-+ if (!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) == SEQUENCE)
-+ continue;
-+
-+ /* Look for a second load/operation into the sibling FP register. */
-+ if (!((set = single_set (next)) != NULL_RTX
-+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) == 4
-+ && REG_P (SET_DEST (set))
-+ && REGNO (SET_DEST (set)) == y))
-+ continue;
-+
-+ /* Look for a (possible) store from the FP register in the next N
-+ instructions, but bail out if it is again modified or if there
-+ is a store from the sibling FP register before this store. */
-+ for (after = next, i = 0; i < n_insns; i++)
-+ {
-+ bool branch_p;
-+
-+ after = next_active_insn (after);
-+ if (!after)
-+ break;
-+
-+ /* This is a branch with an empty delay slot. */
-+ if (!NONJUMP_INSN_P (after))
-+ {
-+ if (++i == n_insns)
-+ break;
-+ branch_p = true;
-+ after = NULL;
-+ }
-+ /* This is a branch with a filled delay slot. */
-+ else if (rtx_sequence *seq =
-+ dyn_cast <rtx_sequence *> (PATTERN (after)))
-+ {
-+ if (++i == n_insns)
-+ break;
-+ branch_p = true;
-+ after = seq->insn (1);
-+ }
-+ /* This is a regular instruction. */
-+ else
-+ branch_p = false;
-+
-+ if (after && (set = single_set (after)) != NULL_RTX)
-+ {
-+ const rtx src = SET_SRC (set);
-+ const rtx dest = SET_DEST (set);
-+ const unsigned int size = GET_MODE_SIZE (GET_MODE (dest));
-+
-+ /* If the FP register is again modified before the store,
-+ then the store isn't affected. */
-+ if (REG_P (dest)
-+ && (REGNO (dest) == x
-+ || (REGNO (dest) == y && size == 8)))
-+ break;
-+
-+ if (MEM_P (dest) && REG_P (src))
-+ {
-+ /* If there is a store from the sibling FP register
-+ before the store, then the store is not affected. */
-+ if (REGNO (src) == y || (REGNO (src) == x && size == 8))
-+ break;
-+
-+ /* Otherwise, the store is affected. */
-+ if (REGNO (src) == x && size == 4)
-+ {
-+ insert_nop = true;
-+ break;
-+ }
-+ }
-+ }
-+
-+ /* If we have a branch in the first M instructions, then we
-+ cannot see the (M+2)th instruction so we play safe. */
-+ if (branch_p && i <= (n_insns - 2))
-+ {
-+ insert_nop = true;
-+ break;
-+ }
-+ }
-+ }
-+
-+ else
-+ next = NEXT_INSN (insn);
-+
-+ if (insert_nop)
-+ emit_insn_before (gen_nop (), next);
-+ }
-+
-+ return 0;
-+}
-+
-+namespace {
-+
-+const pass_data pass_data_work_around_errata =
-+{
-+ RTL_PASS, /* type */
-+ "errata", /* name */
-+ OPTGROUP_NONE, /* optinfo_flags */
-+ TV_MACH_DEP, /* tv_id */
-+ 0, /* properties_required */
-+ 0, /* properties_provided */
-+ 0, /* properties_destroyed */
-+ 0, /* todo_flags_start */
-+ 0, /* todo_flags_finish */
-+};
-+
-+class pass_work_around_errata : public rtl_opt_pass
-+{
-+public:
-+ pass_work_around_errata(gcc::context *ctxt)
-+ : rtl_opt_pass(pass_data_work_around_errata, ctxt)
-+ {}
-+
-+ /* opt_pass methods: */
-+ virtual bool gate (function *)
-+ {
-+ return sparc_fix_at697f
-+ || sparc_fix_ut699 || sparc_fix_ut700 || sparc_fix_gr712rc
-+ || sparc_fix_b2bst || sparc_fix_lost_divsqrt;
-+ }
-+
-+ virtual unsigned int execute (function *)
-+ {
-+ return sparc_do_work_around_errata ();
-+ }
-+
-+}; // class pass_work_around_errata
-+
-+} // anon namespace
-+
-+rtl_opt_pass *
-+make_pass_work_around_errata (gcc::context *ctxt)
-+{
-+ return new pass_work_around_errata (ctxt);
-+}
-+
-+/* Helpers for TARGET_DEBUG_OPTIONS. */
-+static void
-+dump_target_flag_bits (const int flags)
-+{
-+ if (flags & MASK_64BIT)
-+ fprintf (stderr, "64BIT ");
-+ if (flags & MASK_APP_REGS)
-+ fprintf (stderr, "APP_REGS ");
-+ if (flags & MASK_FASTER_STRUCTS)
-+ fprintf (stderr, "FASTER_STRUCTS ");
-+ if (flags & MASK_FLAT)
-+ fprintf (stderr, "FLAT ");
-+ if (flags & MASK_FMAF)
-+ fprintf (stderr, "FMAF ");
-+ if (flags & MASK_FSMULD)
-+ fprintf (stderr, "FSMULD ");
-+ if (flags & MASK_FPU)
-+ fprintf (stderr, "FPU ");
-+ if (flags & MASK_HARD_QUAD)
-+ fprintf (stderr, "HARD_QUAD ");
-+ if (flags & MASK_POPC)
-+ fprintf (stderr, "POPC ");
-+ if (flags & MASK_PTR64)
-+ fprintf (stderr, "PTR64 ");
-+ if (flags & MASK_STACK_BIAS)
-+ fprintf (stderr, "STACK_BIAS ");
-+ if (flags & MASK_UNALIGNED_DOUBLES)
-+ fprintf (stderr, "UNALIGNED_DOUBLES ");
-+ if (flags & MASK_V8PLUS)
-+ fprintf (stderr, "V8PLUS ");
-+ if (flags & MASK_VIS)
-+ fprintf (stderr, "VIS ");
-+ if (flags & MASK_VIS2)
-+ fprintf (stderr, "VIS2 ");
-+ if (flags & MASK_VIS3)
-+ fprintf (stderr, "VIS3 ");
-+ if (flags & MASK_VIS4)
-+ fprintf (stderr, "VIS4 ");
-+ if (flags & MASK_VIS4B)
-+ fprintf (stderr, "VIS4B ");
-+ if (flags & MASK_CBCOND)
-+ fprintf (stderr, "CBCOND ");
-+ if (flags & MASK_DEPRECATED_V8_INSNS)
-+ fprintf (stderr, "DEPRECATED_V8_INSNS ");
-+ if (flags & MASK_SPARCLET)
-+ fprintf (stderr, "SPARCLET ");
-+ if (flags & MASK_SPARCLITE)
-+ fprintf (stderr, "SPARCLITE ");
-+ if (flags & MASK_V8)
-+ fprintf (stderr, "V8 ");
-+ if (flags & MASK_V9)
-+ fprintf (stderr, "V9 ");
-+}
-+
-+static void
-+dump_target_flags (const char *prefix, const int flags)
-+{
-+ fprintf (stderr, "%s: (%08x) [ ", prefix, flags);
-+ dump_target_flag_bits (flags);
-+ fprintf(stderr, "]\n");
-+}
-+
-+/* Validate and override various options, and do some machine dependent
-+ initialization. */
-+
-+static void
-+sparc_option_override (void)
-+{
-+ /* Map TARGET_CPU_DEFAULT to value for -m{cpu,tune}=. */
-+ static struct cpu_default {
-+ const int cpu;
-+ const enum sparc_processor_type processor;
-+ } const cpu_default[] = {
-+ /* There must be one entry here for each TARGET_CPU value. */
-+ { TARGET_CPU_sparc, PROCESSOR_CYPRESS },
-+ { TARGET_CPU_v8, PROCESSOR_V8 },
-+ { TARGET_CPU_supersparc, PROCESSOR_SUPERSPARC },
-+ { TARGET_CPU_hypersparc, PROCESSOR_HYPERSPARC },
-+ { TARGET_CPU_leon, PROCESSOR_LEON },
-+ { TARGET_CPU_leon3, PROCESSOR_LEON3 },
-+ { TARGET_CPU_leon3v7, PROCESSOR_LEON3V7 },
-+ { TARGET_CPU_sparclite, PROCESSOR_F930 },
-+ { TARGET_CPU_sparclite86x, PROCESSOR_SPARCLITE86X },
-+ { TARGET_CPU_sparclet, PROCESSOR_TSC701 },
-+ { TARGET_CPU_v9, PROCESSOR_V9 },
-+ { TARGET_CPU_ultrasparc, PROCESSOR_ULTRASPARC },
-+ { TARGET_CPU_ultrasparc3, PROCESSOR_ULTRASPARC3 },
-+ { TARGET_CPU_niagara, PROCESSOR_NIAGARA },
-+ { TARGET_CPU_niagara2, PROCESSOR_NIAGARA2 },
-+ { TARGET_CPU_niagara3, PROCESSOR_NIAGARA3 },
-+ { TARGET_CPU_niagara4, PROCESSOR_NIAGARA4 },
-+ { TARGET_CPU_niagara7, PROCESSOR_NIAGARA7 },
-+ { TARGET_CPU_m8, PROCESSOR_M8 },
-+ { -1, PROCESSOR_V7 }
-+ };
-+ const struct cpu_default *def;
-+ /* Table of values for -m{cpu,tune}=. This must match the order of
-+ the enum processor_type in sparc-opts.h. */
-+ static struct cpu_table {
-+ const char *const name;
-+ const int disable;
-+ const int enable;
-+ } const cpu_table[] = {
-+ { "v7", MASK_ISA, 0 },
-+ { "cypress", MASK_ISA, 0 },
-+ { "v8", MASK_ISA, MASK_V8 },
-+ /* TI TMS390Z55 supersparc */
-+ { "supersparc", MASK_ISA, MASK_V8 },
-+ { "hypersparc", MASK_ISA, MASK_V8 },
-+ { "leon", MASK_ISA|MASK_FSMULD, MASK_V8|MASK_LEON },
-+ { "leon3", MASK_ISA, MASK_V8|MASK_LEON3 },
-+ { "leon3v7", MASK_ISA, MASK_LEON3 },
-+ { "sparclite", MASK_ISA, MASK_SPARCLITE },
-+ /* The Fujitsu MB86930 is the original sparclite chip, with no FPU. */
-+ { "f930", MASK_ISA|MASK_FPU, MASK_SPARCLITE },
-+ /* The Fujitsu MB86934 is the recent sparclite chip, with an FPU. */
-+ { "f934", MASK_ISA, MASK_SPARCLITE },
-+ { "sparclite86x", MASK_ISA|MASK_FPU, MASK_SPARCLITE },
-+ { "sparclet", MASK_ISA, MASK_SPARCLET },
-+ /* TEMIC sparclet */
-+ { "tsc701", MASK_ISA, MASK_SPARCLET },
-+ { "v9", MASK_ISA, MASK_V9 },
-+ /* UltraSPARC I, II, IIi */
-+ { "ultrasparc", MASK_ISA,
-+ /* Although insns using %y are deprecated, it is a clear win. */
-+ MASK_V9|MASK_DEPRECATED_V8_INSNS },
-+ /* UltraSPARC III */
-+ /* ??? Check if %y issue still holds true. */
-+ { "ultrasparc3", MASK_ISA,
-+ MASK_V9|MASK_DEPRECATED_V8_INSNS|MASK_VIS2 },
-+ /* UltraSPARC T1 */
-+ { "niagara", MASK_ISA,
-+ MASK_V9|MASK_DEPRECATED_V8_INSNS },
-+ /* UltraSPARC T2 */
-+ { "niagara2", MASK_ISA,
-+ MASK_V9|MASK_POPC|MASK_VIS2 },
-+ /* UltraSPARC T3 */
-+ { "niagara3", MASK_ISA,
-+ MASK_V9|MASK_POPC|MASK_VIS3|MASK_FMAF },
-+ /* UltraSPARC T4 */
-+ { "niagara4", MASK_ISA,
-+ MASK_V9|MASK_POPC|MASK_VIS3|MASK_FMAF|MASK_CBCOND },
-+ /* UltraSPARC M7 */
-+ { "niagara7", MASK_ISA,
-+ MASK_V9|MASK_POPC|MASK_VIS4|MASK_FMAF|MASK_CBCOND|MASK_SUBXC },
-+ /* UltraSPARC M8 */
-+ { "m8", MASK_ISA,
-+ MASK_V9|MASK_POPC|MASK_VIS4B|MASK_FMAF|MASK_CBCOND|MASK_SUBXC }
-+ };
-+ const struct cpu_table *cpu;
-+ unsigned int i;
-+
-+ if (sparc_debug_string != NULL)
-+ {
-+ const char *q;
-+ char *p;
-+
-+ p = ASTRDUP (sparc_debug_string);
-+ while ((q = strtok (p, ",")) != NULL)
-+ {
-+ bool invert;
-+ int mask;
-+
-+ p = NULL;
-+ if (*q == '!')
-+ {
-+ invert = true;
-+ q++;
-+ }
-+ else
-+ invert = false;
-+
-+ if (! strcmp (q, "all"))
-+ mask = MASK_DEBUG_ALL;
-+ else if (! strcmp (q, "options"))
-+ mask = MASK_DEBUG_OPTIONS;
-+ else
-+ error ("unknown %<-mdebug-%s%> switch", q);
-+
-+ if (invert)
-+ sparc_debug &= ~mask;
-+ else
-+ sparc_debug |= mask;
-+ }
-+ }
-+
-+ /* Enable the FsMULd instruction by default if not explicitly specified by
-+ the user. It may be later disabled by the CPU (explicitly or not). */
-+ if (TARGET_FPU && !(target_flags_explicit & MASK_FSMULD))
-+ target_flags |= MASK_FSMULD;
-+
-+ if (TARGET_DEBUG_OPTIONS)
-+ {
-+ dump_target_flags("Initial target_flags", target_flags);
-+ dump_target_flags("target_flags_explicit", target_flags_explicit);
-+ }
-+
-+#ifdef SUBTARGET_OVERRIDE_OPTIONS
-+ SUBTARGET_OVERRIDE_OPTIONS;
-+#endif
-+
-+#ifndef SPARC_BI_ARCH
-+ /* Check for unsupported architecture size. */
-+ if (!TARGET_64BIT != DEFAULT_ARCH32_P)
-+ error ("%s is not supported by this configuration",
-+ DEFAULT_ARCH32_P ? "-m64" : "-m32");
-+#endif
-+
-+ /* We force all 64bit archs to use 128 bit long double */
-+ if (TARGET_ARCH64 && !TARGET_LONG_DOUBLE_128)
-+ {
-+ error ("%<-mlong-double-64%> not allowed with %<-m64%>");
-+ target_flags |= MASK_LONG_DOUBLE_128;
-+ }
-+
-+ /* Check that -fcall-saved-REG wasn't specified for out registers. */
-+ for (i = 8; i < 16; i++)
-+ if (!call_used_regs [i])
-+ {
-+ error ("%<-fcall-saved-REG%> is not supported for out registers");
-+ call_used_regs [i] = 1;
-+ }
-+
-+ /* Set the default CPU if no -mcpu option was specified. */
-+ if (!global_options_set.x_sparc_cpu_and_features)
-+ {
-+ for (def = &cpu_default[0]; def->cpu != -1; ++def)
-+ if (def->cpu == TARGET_CPU_DEFAULT)
-+ break;
-+ gcc_assert (def->cpu != -1);
-+ sparc_cpu_and_features = def->processor;
-+ }
-+
-+ /* Set the default CPU if no -mtune option was specified. */
-+ if (!global_options_set.x_sparc_cpu)
-+ sparc_cpu = sparc_cpu_and_features;
-+
-+ cpu = &cpu_table[(int) sparc_cpu_and_features];
-+
-+ if (TARGET_DEBUG_OPTIONS)
-+ {
-+ fprintf (stderr, "sparc_cpu_and_features: %s\n", cpu->name);
-+ dump_target_flags ("cpu->disable", cpu->disable);
-+ dump_target_flags ("cpu->enable", cpu->enable);
-+ }
-+
-+ target_flags &= ~cpu->disable;
-+ target_flags |= (cpu->enable
-+#ifndef HAVE_AS_FMAF_HPC_VIS3
-+ & ~(MASK_FMAF | MASK_VIS3)
-+#endif
-+#ifndef HAVE_AS_SPARC4
-+ & ~MASK_CBCOND
-+#endif
-+#ifndef HAVE_AS_SPARC5_VIS4
-+ & ~(MASK_VIS4 | MASK_SUBXC)
-+#endif
-+#ifndef HAVE_AS_SPARC6
-+ & ~(MASK_VIS4B)
-+#endif
-+#ifndef HAVE_AS_LEON
-+ & ~(MASK_LEON | MASK_LEON3)
-+#endif
-+ & ~(target_flags_explicit & MASK_FEATURES)
-+ );
-+
-+ /* FsMULd is a V8 instruction. */
-+ if (!TARGET_V8 && !TARGET_V9)
-+ target_flags &= ~MASK_FSMULD;
-+
-+ /* -mvis2 implies -mvis. */
-+ if (TARGET_VIS2)
-+ target_flags |= MASK_VIS;
-+
-+ /* -mvis3 implies -mvis2 and -mvis. */
-+ if (TARGET_VIS3)
-+ target_flags |= MASK_VIS2 | MASK_VIS;
-+
-+ /* -mvis4 implies -mvis3, -mvis2 and -mvis. */
-+ if (TARGET_VIS4)
-+ target_flags |= MASK_VIS3 | MASK_VIS2 | MASK_VIS;
-+
-+ /* -mvis4b implies -mvis4, -mvis3, -mvis2 and -mvis */
-+ if (TARGET_VIS4B)
-+ target_flags |= MASK_VIS4 | MASK_VIS3 | MASK_VIS2 | MASK_VIS;
-+
-+ /* Don't allow -mvis, -mvis2, -mvis3, -mvis4, -mvis4b, -mfmaf and -mfsmuld if
-+ FPU is disabled. */
-+ if (!TARGET_FPU)
-+ target_flags &= ~(MASK_VIS | MASK_VIS2 | MASK_VIS3 | MASK_VIS4
-+ | MASK_VIS4B | MASK_FMAF | MASK_FSMULD);
-+
-+ /* -mvis assumes UltraSPARC+, so we are sure v9 instructions
-+ are available; -m64 also implies v9. */
-+ if (TARGET_VIS || TARGET_ARCH64)
-+ {
-+ target_flags |= MASK_V9;
-+ target_flags &= ~(MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE);
-+ }
-+
-+ /* -mvis also implies -mv8plus on 32-bit. */
-+ if (TARGET_VIS && !TARGET_ARCH64)
-+ target_flags |= MASK_V8PLUS;
-+
-+ /* Use the deprecated v8 insns for sparc64 in 32-bit mode. */
-+ if (TARGET_V9 && TARGET_ARCH32)
-+ target_flags |= MASK_DEPRECATED_V8_INSNS;
-+
-+ /* V8PLUS requires V9 and makes no sense in 64-bit mode. */
-+ if (!TARGET_V9 || TARGET_ARCH64)
-+ target_flags &= ~MASK_V8PLUS;
-+
-+ /* Don't use stack biasing in 32-bit mode. */
-+ if (TARGET_ARCH32)
-+ target_flags &= ~MASK_STACK_BIAS;
-+
-+ /* Use LRA instead of reload, unless otherwise instructed. */
-+ if (!(target_flags_explicit & MASK_LRA))
-+ target_flags |= MASK_LRA;
-+
-+ /* Enable applicable errata workarounds for LEON3FT. */
-+ if (sparc_fix_ut699 || sparc_fix_ut700 || sparc_fix_gr712rc)
-+ {
-+ sparc_fix_b2bst = 1;
-+ sparc_fix_lost_divsqrt = 1;
-+ }
-+
-+ /* Disable FsMULd for the UT699 since it doesn't work correctly. */
-+ if (sparc_fix_ut699)
-+ target_flags &= ~MASK_FSMULD;
-+
-+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
-+ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
-+ target_flags |= MASK_LONG_DOUBLE_128;
-+#endif
-+
-+ if (TARGET_DEBUG_OPTIONS)
-+ dump_target_flags ("Final target_flags", target_flags);
-+
-+ /* Set the code model if no -mcmodel option was specified. */
-+ if (global_options_set.x_sparc_code_model)
-+ {
-+ if (TARGET_ARCH32)
-+ error ("%<-mcmodel=%> is not supported in 32-bit mode");
-+ }
-+ else
-+ {
-+ if (TARGET_ARCH32)
-+ sparc_code_model = CM_32;
-+ else
-+ sparc_code_model = SPARC_DEFAULT_CMODEL;
-+ }
-+
-+ /* Set the memory model if no -mmemory-model option was specified. */
-+ if (!global_options_set.x_sparc_memory_model)
-+ {
-+ /* Choose the memory model for the operating system. */
-+ enum sparc_memory_model_type os_default = SUBTARGET_DEFAULT_MEMORY_MODEL;
-+ if (os_default != SMM_DEFAULT)
-+ sparc_memory_model = os_default;
-+ /* Choose the most relaxed model for the processor. */
-+ else if (TARGET_V9)
-+ sparc_memory_model = SMM_RMO;
-+ else if (TARGET_LEON3)
-+ sparc_memory_model = SMM_TSO;
-+ else if (TARGET_LEON)
-+ sparc_memory_model = SMM_SC;
-+ else if (TARGET_V8)
-+ sparc_memory_model = SMM_PSO;
-+ else
-+ sparc_memory_model = SMM_SC;
-+ }
-+
-+ /* Supply a default value for align_functions. */
-+ if (flag_align_functions && !str_align_functions)
-+ {
-+ if (sparc_cpu == PROCESSOR_ULTRASPARC
-+ || sparc_cpu == PROCESSOR_ULTRASPARC3
-+ || sparc_cpu == PROCESSOR_NIAGARA
-+ || sparc_cpu == PROCESSOR_NIAGARA2
-+ || sparc_cpu == PROCESSOR_NIAGARA3
-+ || sparc_cpu == PROCESSOR_NIAGARA4)
-+ str_align_functions = "32";
-+ else if (sparc_cpu == PROCESSOR_NIAGARA7
-+ || sparc_cpu == PROCESSOR_M8)
-+ str_align_functions = "64";
-+ }
-+
-+ /* Validate PCC_STRUCT_RETURN. */
-+ if (flag_pcc_struct_return == DEFAULT_PCC_STRUCT_RETURN)
-+ flag_pcc_struct_return = (TARGET_ARCH64 ? 0 : 1);
-+
-+ /* Only use .uaxword when compiling for a 64-bit target. */
-+ if (!TARGET_ARCH64)
-+ targetm.asm_out.unaligned_op.di = NULL;
-+
-+ /* Set the processor costs. */
-+ switch (sparc_cpu)
-+ {
-+ case PROCESSOR_V7:
-+ case PROCESSOR_CYPRESS:
-+ sparc_costs = &cypress_costs;
-+ break;
-+ case PROCESSOR_V8:
-+ case PROCESSOR_SPARCLITE:
-+ case PROCESSOR_SUPERSPARC:
-+ sparc_costs = &supersparc_costs;
-+ break;
-+ case PROCESSOR_F930:
-+ case PROCESSOR_F934:
-+ case PROCESSOR_HYPERSPARC:
-+ case PROCESSOR_SPARCLITE86X:
-+ sparc_costs = &hypersparc_costs;
-+ break;
-+ case PROCESSOR_LEON:
-+ sparc_costs = &leon_costs;
-+ break;
-+ case PROCESSOR_LEON3:
-+ case PROCESSOR_LEON3V7:
-+ sparc_costs = &leon3_costs;
-+ break;
-+ case PROCESSOR_SPARCLET:
-+ case PROCESSOR_TSC701:
-+ sparc_costs = &sparclet_costs;
-+ break;
-+ case PROCESSOR_V9:
-+ case PROCESSOR_ULTRASPARC:
-+ sparc_costs = &ultrasparc_costs;
-+ break;
-+ case PROCESSOR_ULTRASPARC3:
-+ sparc_costs = &ultrasparc3_costs;
-+ break;
-+ case PROCESSOR_NIAGARA:
-+ sparc_costs = &niagara_costs;
-+ break;
-+ case PROCESSOR_NIAGARA2:
-+ sparc_costs = &niagara2_costs;
-+ break;
-+ case PROCESSOR_NIAGARA3:
-+ sparc_costs = &niagara3_costs;
-+ break;
-+ case PROCESSOR_NIAGARA4:
-+ sparc_costs = &niagara4_costs;
-+ break;
-+ case PROCESSOR_NIAGARA7:
-+ sparc_costs = &niagara7_costs;
-+ break;
-+ case PROCESSOR_M8:
-+ sparc_costs = &m8_costs;
-+ break;
-+ case PROCESSOR_NATIVE:
-+ gcc_unreachable ();
-+ };
-+
-+ /* param_simultaneous_prefetches is the number of prefetches that
-+ can run at the same time. More important, it is the threshold
-+ defining when additional prefetches will be dropped by the
-+ hardware.
-+
-+ The UltraSPARC-III features a documented prefetch queue with a
-+ size of 8. Additional prefetches issued in the cpu are
-+ dropped.
-+
-+ Niagara processors are different. In these processors prefetches
-+ are handled much like regular loads. The L1 miss buffer is 32
-+ entries, but prefetches start getting affected when 30 entries
-+ become occupied. That occupation could be a mix of regular loads
-+ and prefetches though. And that buffer is shared by all threads.
-+ Once the threshold is reached, if the core is running a single
-+ thread the prefetch will retry. If more than one thread is
-+ running, the prefetch will be dropped.
-+
-+ All this makes it very difficult to determine how many
-+ simultaneous prefetches can be issued simultaneously, even in a
-+ single-threaded program. Experimental results show that setting
-+ this parameter to 32 works well when the number of threads is not
-+ high. */
-+ SET_OPTION_IF_UNSET (&global_options, &global_options_set,
-+ param_simultaneous_prefetches,
-+ ((sparc_cpu == PROCESSOR_ULTRASPARC
-+ || sparc_cpu == PROCESSOR_NIAGARA
-+ || sparc_cpu == PROCESSOR_NIAGARA2
-+ || sparc_cpu == PROCESSOR_NIAGARA3
-+ || sparc_cpu == PROCESSOR_NIAGARA4)
-+ ? 2
-+ : (sparc_cpu == PROCESSOR_ULTRASPARC3
-+ ? 8 : ((sparc_cpu == PROCESSOR_NIAGARA7
-+ || sparc_cpu == PROCESSOR_M8)
-+ ? 32 : 3))));
-+
-+ /* param_l1_cache_line_size is the size of the L1 cache line, in
-+ bytes.
-+
-+ The Oracle SPARC Architecture (previously the UltraSPARC
-+ Architecture) specification states that when a PREFETCH[A]
-+ instruction is executed an implementation-specific amount of data
-+ is prefetched, and that it is at least 64 bytes long (aligned to
-+ at least 64 bytes).
-+
-+ However, this is not correct. The M7 (and implementations prior
-+ to that) does not guarantee a 64B prefetch into a cache if the
-+ line size is smaller. A single cache line is all that is ever
-+ prefetched. So for the M7, where the L1D$ has 32B lines and the
-+ L2D$ and L3 have 64B lines, a prefetch will prefetch 64B into the
-+ L2 and L3, but only 32B are brought into the L1D$. (Assuming it
-+ is a read_n prefetch, which is the only type which allocates to
-+ the L1.) */
-+ SET_OPTION_IF_UNSET (&global_options, &global_options_set,
-+ param_l1_cache_line_size,
-+ (sparc_cpu == PROCESSOR_M8 ? 64 : 32));
-+
-+ /* param_l1_cache_size is the size of the L1D$ (most SPARC chips use
-+ Hardvard level-1 caches) in kilobytes. Both UltraSPARC and
-+ Niagara processors feature a L1D$ of 16KB. */
-+ SET_OPTION_IF_UNSET (&global_options, &global_options_set,
-+ param_l1_cache_size,
-+ ((sparc_cpu == PROCESSOR_ULTRASPARC
-+ || sparc_cpu == PROCESSOR_ULTRASPARC3
-+ || sparc_cpu == PROCESSOR_NIAGARA
-+ || sparc_cpu == PROCESSOR_NIAGARA2
-+ || sparc_cpu == PROCESSOR_NIAGARA3
-+ || sparc_cpu == PROCESSOR_NIAGARA4
-+ || sparc_cpu == PROCESSOR_NIAGARA7
-+ || sparc_cpu == PROCESSOR_M8)
-+ ? 16 : 64));
-+
-+ /* param_l2_cache_size is the size fo the L2 in kilobytes. Note
-+ that 512 is the default in params.def. */
-+ SET_OPTION_IF_UNSET (&global_options, &global_options_set,
-+ param_l2_cache_size,
-+ ((sparc_cpu == PROCESSOR_NIAGARA4
-+ || sparc_cpu == PROCESSOR_M8)
-+ ? 128 : (sparc_cpu == PROCESSOR_NIAGARA7
-+ ? 256 : 512)));
-+
-+
-+ /* Disable save slot sharing for call-clobbered registers by default.
-+ The IRA sharing algorithm works on single registers only and this
-+ pessimizes for double floating-point registers. */
-+ if (!global_options_set.x_flag_ira_share_save_slots)
-+ flag_ira_share_save_slots = 0;
-+
-+ /* Only enable REE by default in 64-bit mode where it helps to eliminate
-+ redundant 32-to-64-bit extensions. */
-+ if (!global_options_set.x_flag_ree && TARGET_ARCH32)
-+ flag_ree = 0;
-+
-+ /* Do various machine dependent initializations. */
-+ sparc_init_modes ();
-+
-+ /* Set up function hooks. */
-+ init_machine_status = sparc_init_machine_status;
-+}
-+
-+/* Miscellaneous utilities. */
-+
-+/* Nonzero if CODE, a comparison, is suitable for use in v9 conditional move
-+ or branch on register contents instructions. */
-+
-+int
-+v9_regcmp_p (enum rtx_code code)
-+{
-+ return (code == EQ || code == NE || code == GE || code == LT
-+ || code == LE || code == GT);
-+}
-+
-+/* Nonzero if OP is a floating point constant which can
-+ be loaded into an integer register using a single
-+ sethi instruction. */
-+
-+int
-+fp_sethi_p (rtx op)
-+{
-+ if (GET_CODE (op) == CONST_DOUBLE)
-+ {
-+ long i;
-+
-+ REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (op), i);
-+ return !SPARC_SIMM13_P (i) && SPARC_SETHI_P (i);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Nonzero if OP is a floating point constant which can
-+ be loaded into an integer register using a single
-+ mov instruction. */
-+
-+int
-+fp_mov_p (rtx op)
-+{
-+ if (GET_CODE (op) == CONST_DOUBLE)
-+ {
-+ long i;
-+
-+ REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (op), i);
-+ return SPARC_SIMM13_P (i);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Nonzero if OP is a floating point constant which can
-+ be loaded into an integer register using a high/losum
-+ instruction sequence. */
-+
-+int
-+fp_high_losum_p (rtx op)
-+{
-+ /* The constraints calling this should only be in
-+ SFmode move insns, so any constant which cannot
-+ be moved using a single insn will do. */
-+ if (GET_CODE (op) == CONST_DOUBLE)
-+ {
-+ long i;
-+
-+ REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (op), i);
-+ return !SPARC_SIMM13_P (i) && !SPARC_SETHI_P (i);
-+ }
-+
-+ return 0;
-+}
-+
-+/* Return true if the address of LABEL can be loaded by means of the
-+ mov{si,di}_pic_label_ref patterns in PIC mode. */
-+
-+static bool
-+can_use_mov_pic_label_ref (rtx label)
-+{
-+ /* VxWorks does not impose a fixed gap between segments; the run-time
-+ gap can be different from the object-file gap. We therefore can't
-+ assume X - _GLOBAL_OFFSET_TABLE_ is a link-time constant unless we
-+ are absolutely sure that X is in the same segment as the GOT.
-+ Unfortunately, the flexibility of linker scripts means that we
-+ can't be sure of that in general, so assume that GOT-relative
-+ accesses are never valid on VxWorks. */
-+ if (TARGET_VXWORKS_RTP)
-+ return false;
-+
-+ /* Similarly, if the label is non-local, it might end up being placed
-+ in a different section than the current one; now mov_pic_label_ref
-+ requires the label and the code to be in the same section. */
-+ if (LABEL_REF_NONLOCAL_P (label))
-+ return false;
-+
-+ /* Finally, if we are reordering basic blocks and partition into hot
-+ and cold sections, this might happen for any label. */
-+ if (flag_reorder_blocks_and_partition)
-+ return false;
-+
-+ return true;
-+}
-+
-+/* Expand a move instruction. Return true if all work is done. */
-+
-+bool
-+sparc_expand_move (machine_mode mode, rtx *operands)
-+{
-+ /* Handle sets of MEM first. */
-+ if (GET_CODE (operands[0]) == MEM)
-+ {
-+ /* 0 is a register (or a pair of registers) on SPARC. */
-+ if (register_or_zero_operand (operands[1], mode))
-+ return false;
-+
-+ if (!reload_in_progress)
-+ {
-+ operands[0] = validize_mem (operands[0]);
-+ operands[1] = force_reg (mode, operands[1]);
-+ }
-+ }
-+
-+ /* Fix up TLS cases. */
-+ if (TARGET_HAVE_TLS
-+ && CONSTANT_P (operands[1])
-+ && sparc_tls_referenced_p (operands [1]))
-+ {
-+ operands[1] = sparc_legitimize_tls_address (operands[1]);
-+ return false;
-+ }
-+
-+ /* Fix up PIC cases. */
-+ if (flag_pic && CONSTANT_P (operands[1]))
-+ {
-+ if (pic_address_needs_scratch (operands[1]))
-+ operands[1] = sparc_legitimize_pic_address (operands[1], NULL_RTX);
-+
-+ /* We cannot use the mov{si,di}_pic_label_ref patterns in all cases. */
-+ if ((GET_CODE (operands[1]) == LABEL_REF
-+ && can_use_mov_pic_label_ref (operands[1]))
-+ || (GET_CODE (operands[1]) == CONST
-+ && GET_CODE (XEXP (operands[1], 0)) == PLUS
-+ && GET_CODE (XEXP (XEXP (operands[1], 0), 0)) == LABEL_REF
-+ && GET_CODE (XEXP (XEXP (operands[1], 0), 1)) == CONST_INT
-+ && can_use_mov_pic_label_ref (XEXP (XEXP (operands[1], 0), 0))))
-+ {
-+ if (mode == SImode)
-+ {
-+ emit_insn (gen_movsi_pic_label_ref (operands[0], operands[1]));
-+ return true;
-+ }
-+
-+ if (mode == DImode)
-+ {
-+ emit_insn (gen_movdi_pic_label_ref (operands[0], operands[1]));
-+ return true;
-+ }
-+ }
-+
-+ if (symbolic_operand (operands[1], mode))
-+ {
-+ operands[1]
-+ = sparc_legitimize_pic_address (operands[1],
-+ reload_in_progress
-+ ? operands[0] : NULL_RTX);
-+ return false;
-+ }
-+ }
-+
-+ /* If we are trying to toss an integer constant into FP registers,
-+ or loading a FP or vector constant, force it into memory. */
-+ if (CONSTANT_P (operands[1])
-+ && REG_P (operands[0])
-+ && (SPARC_FP_REG_P (REGNO (operands[0]))
-+ || SCALAR_FLOAT_MODE_P (mode)
-+ || VECTOR_MODE_P (mode)))
-+ {
-+ /* emit_group_store will send such bogosity to us when it is
-+ not storing directly into memory. So fix this up to avoid
-+ crashes in output_constant_pool. */
-+ if (operands [1] == const0_rtx)
-+ operands[1] = CONST0_RTX (mode);
-+
-+ /* We can clear or set to all-ones FP registers if TARGET_VIS, and
-+ always other regs. */
-+ if ((TARGET_VIS || REGNO (operands[0]) < SPARC_FIRST_FP_REG)
-+ && (const_zero_operand (operands[1], mode)
-+ || const_all_ones_operand (operands[1], mode)))
-+ return false;
-+
-+ if (REGNO (operands[0]) < SPARC_FIRST_FP_REG
-+ /* We are able to build any SF constant in integer registers
-+ with at most 2 instructions. */
-+ && (mode == SFmode
-+ /* And any DF constant in integer registers if needed. */
-+ || (mode == DFmode && !can_create_pseudo_p ())))
-+ return false;
-+
-+ operands[1] = force_const_mem (mode, operands[1]);
-+ if (!reload_in_progress)
-+ operands[1] = validize_mem (operands[1]);
-+ return false;
-+ }
-+
-+ /* Accept non-constants and valid constants unmodified. */
-+ if (!CONSTANT_P (operands[1])
-+ || GET_CODE (operands[1]) == HIGH
-+ || input_operand (operands[1], mode))
-+ return false;
-+
-+ switch (mode)
-+ {
-+ case E_QImode:
-+ /* All QImode constants require only one insn, so proceed. */
-+ break;
-+
-+ case E_HImode:
-+ case E_SImode:
-+ sparc_emit_set_const32 (operands[0], operands[1]);
-+ return true;
-+
-+ case E_DImode:
-+ /* input_operand should have filtered out 32-bit mode. */
-+ sparc_emit_set_const64 (operands[0], operands[1]);
-+ return true;
-+
-+ case E_TImode:
-+ {
-+ rtx high, low;
-+ /* TImode isn't available in 32-bit mode. */
-+ split_double (operands[1], &high, &low);
-+ emit_insn (gen_movdi (operand_subword (operands[0], 0, 0, TImode),
-+ high));
-+ emit_insn (gen_movdi (operand_subword (operands[0], 1, 0, TImode),
-+ low));
-+ }
-+ return true;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ return false;
-+}
-+
-+/* Load OP1, a 32-bit constant, into OP0, a register.
-+ We know it can't be done in one insn when we get
-+ here, the move expander guarantees this. */
-+
-+static void
-+sparc_emit_set_const32 (rtx op0, rtx op1)
-+{
-+ machine_mode mode = GET_MODE (op0);
-+ rtx temp = op0;
-+
-+ if (can_create_pseudo_p ())
-+ temp = gen_reg_rtx (mode);
-+
-+ if (GET_CODE (op1) == CONST_INT)
-+ {
-+ gcc_assert (!small_int_operand (op1, mode)
-+ && !const_high_operand (op1, mode));
-+
-+ /* Emit them as real moves instead of a HIGH/LO_SUM,
-+ this way CSE can see everything and reuse intermediate
-+ values if it wants. */
-+ emit_insn (gen_rtx_SET (temp, GEN_INT (INTVAL (op1)
-+ & ~(HOST_WIDE_INT) 0x3ff)));
-+
-+ emit_insn (gen_rtx_SET (op0,
-+ gen_rtx_IOR (mode, temp,
-+ GEN_INT (INTVAL (op1) & 0x3ff))));
-+ }
-+ else
-+ {
-+ /* A symbol, emit in the traditional way. */
-+ emit_insn (gen_rtx_SET (temp, gen_rtx_HIGH (mode, op1)));
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_LO_SUM (mode, temp, op1)));
-+ }
-+}
-+
-+/* Load OP1, a symbolic 64-bit constant, into OP0, a DImode register.
-+ If TEMP is nonzero, we are forbidden to use any other scratch
-+ registers. Otherwise, we are allowed to generate them as needed.
-+
-+ Note that TEMP may have TImode if the code model is TARGET_CM_MEDANY
-+ or TARGET_CM_EMBMEDANY (see the reload_indi and reload_outdi patterns). */
-+
-+void
-+sparc_emit_set_symbolic_const64 (rtx op0, rtx op1, rtx temp)
-+{
-+ rtx cst, temp1, temp2, temp3, temp4, temp5;
-+ rtx ti_temp = 0;
-+
-+ /* Deal with too large offsets. */
-+ if (GET_CODE (op1) == CONST
-+ && GET_CODE (XEXP (op1, 0)) == PLUS
-+ && CONST_INT_P (cst = XEXP (XEXP (op1, 0), 1))
-+ && trunc_int_for_mode (INTVAL (cst), SImode) != INTVAL (cst))
-+ {
-+ gcc_assert (!temp);
-+ temp1 = gen_reg_rtx (DImode);
-+ temp2 = gen_reg_rtx (DImode);
-+ sparc_emit_set_const64 (temp2, cst);
-+ sparc_emit_set_symbolic_const64 (temp1, XEXP (XEXP (op1, 0), 0),
-+ NULL_RTX);
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_PLUS (DImode, temp1, temp2)));
-+ return;
-+ }
-+
-+ if (temp && GET_MODE (temp) == TImode)
-+ {
-+ ti_temp = temp;
-+ temp = gen_rtx_REG (DImode, REGNO (temp));
-+ }
-+
-+ /* SPARC-V9 code model support. */
-+ switch (sparc_code_model)
-+ {
-+ case CM_MEDLOW:
-+ /* The range spanned by all instructions in the object is less
-+ than 2^31 bytes (2GB) and the distance from any instruction
-+ to the location of the label _GLOBAL_OFFSET_TABLE_ is less
-+ than 2^31 bytes (2GB).
-+
-+ The executable must be in the low 4TB of the virtual address
-+ space.
-+
-+ sethi %hi(symbol), %temp1
-+ or %temp1, %lo(symbol), %reg */
-+ if (temp)
-+ temp1 = temp; /* op0 is allowed. */
-+ else
-+ temp1 = gen_reg_rtx (DImode);
-+
-+ emit_insn (gen_rtx_SET (temp1, gen_rtx_HIGH (DImode, op1)));
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_LO_SUM (DImode, temp1, op1)));
-+ break;
-+
-+ case CM_MEDMID:
-+ /* The range spanned by all instructions in the object is less
-+ than 2^31 bytes (2GB) and the distance from any instruction
-+ to the location of the label _GLOBAL_OFFSET_TABLE_ is less
-+ than 2^31 bytes (2GB).
-+
-+ The executable must be in the low 16TB of the virtual address
-+ space.
-+
-+ sethi %h44(symbol), %temp1
-+ or %temp1, %m44(symbol), %temp2
-+ sllx %temp2, 12, %temp3
-+ or %temp3, %l44(symbol), %reg */
-+ if (temp)
-+ {
-+ temp1 = op0;
-+ temp2 = op0;
-+ temp3 = temp; /* op0 is allowed. */
-+ }
-+ else
-+ {
-+ temp1 = gen_reg_rtx (DImode);
-+ temp2 = gen_reg_rtx (DImode);
-+ temp3 = gen_reg_rtx (DImode);
-+ }
-+
-+ emit_insn (gen_seth44 (temp1, op1));
-+ emit_insn (gen_setm44 (temp2, temp1, op1));
-+ emit_insn (gen_rtx_SET (temp3,
-+ gen_rtx_ASHIFT (DImode, temp2, GEN_INT (12))));
-+ emit_insn (gen_setl44 (op0, temp3, op1));
-+ break;
-+
-+ case CM_MEDANY:
-+ /* The range spanned by all instructions in the object is less
-+ than 2^31 bytes (2GB) and the distance from any instruction
-+ to the location of the label _GLOBAL_OFFSET_TABLE_ is less
-+ than 2^31 bytes (2GB).
-+
-+ The executable can be placed anywhere in the virtual address
-+ space.
-+
-+ sethi %hh(symbol), %temp1
-+ sethi %lm(symbol), %temp2
-+ or %temp1, %hm(symbol), %temp3
-+ sllx %temp3, 32, %temp4
-+ or %temp4, %temp2, %temp5
-+ or %temp5, %lo(symbol), %reg */
-+ if (temp)
-+ {
-+ /* It is possible that one of the registers we got for operands[2]
-+ might coincide with that of operands[0] (which is why we made
-+ it TImode). Pick the other one to use as our scratch. */
-+ if (rtx_equal_p (temp, op0))
-+ {
-+ gcc_assert (ti_temp);
-+ temp = gen_rtx_REG (DImode, REGNO (temp) + 1);
-+ }
-+ temp1 = op0;
-+ temp2 = temp; /* op0 is _not_ allowed, see above. */
-+ temp3 = op0;
-+ temp4 = op0;
-+ temp5 = op0;
-+ }
-+ else
-+ {
-+ temp1 = gen_reg_rtx (DImode);
-+ temp2 = gen_reg_rtx (DImode);
-+ temp3 = gen_reg_rtx (DImode);
-+ temp4 = gen_reg_rtx (DImode);
-+ temp5 = gen_reg_rtx (DImode);
-+ }
-+
-+ emit_insn (gen_sethh (temp1, op1));
-+ emit_insn (gen_setlm (temp2, op1));
-+ emit_insn (gen_sethm (temp3, temp1, op1));
-+ emit_insn (gen_rtx_SET (temp4,
-+ gen_rtx_ASHIFT (DImode, temp3, GEN_INT (32))));
-+ emit_insn (gen_rtx_SET (temp5, gen_rtx_PLUS (DImode, temp4, temp2)));
-+ emit_insn (gen_setlo (op0, temp5, op1));
-+ break;
-+
-+ case CM_EMBMEDANY:
-+ /* Old old old backwards compatibility kruft here.
-+ Essentially it is MEDLOW with a fixed 64-bit
-+ virtual base added to all data segment addresses.
-+ Text-segment stuff is computed like MEDANY, we can't
-+ reuse the code above because the relocation knobs
-+ look different.
-+
-+ Data segment: sethi %hi(symbol), %temp1
-+ add %temp1, EMBMEDANY_BASE_REG, %temp2
-+ or %temp2, %lo(symbol), %reg */
-+ if (data_segment_operand (op1, GET_MODE (op1)))
-+ {
-+ if (temp)
-+ {
-+ temp1 = temp; /* op0 is allowed. */
-+ temp2 = op0;
-+ }
-+ else
-+ {
-+ temp1 = gen_reg_rtx (DImode);
-+ temp2 = gen_reg_rtx (DImode);
-+ }
-+
-+ emit_insn (gen_embmedany_sethi (temp1, op1));
-+ emit_insn (gen_embmedany_brsum (temp2, temp1));
-+ emit_insn (gen_embmedany_losum (op0, temp2, op1));
-+ }
-+
-+ /* Text segment: sethi %uhi(symbol), %temp1
-+ sethi %hi(symbol), %temp2
-+ or %temp1, %ulo(symbol), %temp3
-+ sllx %temp3, 32, %temp4
-+ or %temp4, %temp2, %temp5
-+ or %temp5, %lo(symbol), %reg */
-+ else
-+ {
-+ if (temp)
-+ {
-+ /* It is possible that one of the registers we got for operands[2]
-+ might coincide with that of operands[0] (which is why we made
-+ it TImode). Pick the other one to use as our scratch. */
-+ if (rtx_equal_p (temp, op0))
-+ {
-+ gcc_assert (ti_temp);
-+ temp = gen_rtx_REG (DImode, REGNO (temp) + 1);
-+ }
-+ temp1 = op0;
-+ temp2 = temp; /* op0 is _not_ allowed, see above. */
-+ temp3 = op0;
-+ temp4 = op0;
-+ temp5 = op0;
-+ }
-+ else
-+ {
-+ temp1 = gen_reg_rtx (DImode);
-+ temp2 = gen_reg_rtx (DImode);
-+ temp3 = gen_reg_rtx (DImode);
-+ temp4 = gen_reg_rtx (DImode);
-+ temp5 = gen_reg_rtx (DImode);
-+ }
-+
-+ emit_insn (gen_embmedany_textuhi (temp1, op1));
-+ emit_insn (gen_embmedany_texthi (temp2, op1));
-+ emit_insn (gen_embmedany_textulo (temp3, temp1, op1));
-+ emit_insn (gen_rtx_SET (temp4,
-+ gen_rtx_ASHIFT (DImode, temp3, GEN_INT (32))));
-+ emit_insn (gen_rtx_SET (temp5, gen_rtx_PLUS (DImode, temp4, temp2)));
-+ emit_insn (gen_embmedany_textlo (op0, temp5, op1));
-+ }
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+}
-+
-+/* These avoid problems when cross compiling. If we do not
-+ go through all this hair then the optimizer will see
-+ invalid REG_EQUAL notes or in some cases none at all. */
-+static rtx gen_safe_HIGH64 (rtx, HOST_WIDE_INT);
-+static rtx gen_safe_SET64 (rtx, HOST_WIDE_INT);
-+static rtx gen_safe_OR64 (rtx, HOST_WIDE_INT);
-+static rtx gen_safe_XOR64 (rtx, HOST_WIDE_INT);
-+
-+/* The optimizer is not to assume anything about exactly
-+ which bits are set for a HIGH, they are unspecified.
-+ Unfortunately this leads to many missed optimizations
-+ during CSE. We mask out the non-HIGH bits, and matches
-+ a plain movdi, to alleviate this problem. */
-+static rtx
-+gen_safe_HIGH64 (rtx dest, HOST_WIDE_INT val)
-+{
-+ return gen_rtx_SET (dest, GEN_INT (val & ~(HOST_WIDE_INT)0x3ff));
-+}
-+
-+static rtx
-+gen_safe_SET64 (rtx dest, HOST_WIDE_INT val)
-+{
-+ return gen_rtx_SET (dest, GEN_INT (val));
-+}
-+
-+static rtx
-+gen_safe_OR64 (rtx src, HOST_WIDE_INT val)
-+{
-+ return gen_rtx_IOR (DImode, src, GEN_INT (val));
-+}
-+
-+static rtx
-+gen_safe_XOR64 (rtx src, HOST_WIDE_INT val)
-+{
-+ return gen_rtx_XOR (DImode, src, GEN_INT (val));
-+}
-+
-+/* Worker routines for 64-bit constant formation on arch64.
-+ One of the key things to be doing in these emissions is
-+ to create as many temp REGs as possible. This makes it
-+ possible for half-built constants to be used later when
-+ such values are similar to something required later on.
-+ Without doing this, the optimizer cannot see such
-+ opportunities. */
-+
-+static void sparc_emit_set_const64_quick1 (rtx, rtx,
-+ unsigned HOST_WIDE_INT, int);
-+
-+static void
-+sparc_emit_set_const64_quick1 (rtx op0, rtx temp,
-+ unsigned HOST_WIDE_INT low_bits, int is_neg)
-+{
-+ unsigned HOST_WIDE_INT high_bits;
-+
-+ if (is_neg)
-+ high_bits = (~low_bits) & 0xffffffff;
-+ else
-+ high_bits = low_bits;
-+
-+ emit_insn (gen_safe_HIGH64 (temp, high_bits));
-+ if (!is_neg)
-+ {
-+ emit_insn (gen_rtx_SET (op0, gen_safe_OR64 (temp, (high_bits & 0x3ff))));
-+ }
-+ else
-+ {
-+ /* If we are XOR'ing with -1, then we should emit a one's complement
-+ instead. This way the combiner will notice logical operations
-+ such as ANDN later on and substitute. */
-+ if ((low_bits & 0x3ff) == 0x3ff)
-+ {
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_NOT (DImode, temp)));
-+ }
-+ else
-+ {
-+ emit_insn (gen_rtx_SET (op0,
-+ gen_safe_XOR64 (temp,
-+ (-(HOST_WIDE_INT)0x400
-+ | (low_bits & 0x3ff)))));
-+ }
-+ }
-+}
-+
-+static void sparc_emit_set_const64_quick2 (rtx, rtx, unsigned HOST_WIDE_INT,
-+ unsigned HOST_WIDE_INT, int);
-+
-+static void
-+sparc_emit_set_const64_quick2 (rtx op0, rtx temp,
-+ unsigned HOST_WIDE_INT high_bits,
-+ unsigned HOST_WIDE_INT low_immediate,
-+ int shift_count)
-+{
-+ rtx temp2 = op0;
-+
-+ if ((high_bits & 0xfffffc00) != 0)
-+ {
-+ emit_insn (gen_safe_HIGH64 (temp, high_bits));
-+ if ((high_bits & ~0xfffffc00) != 0)
-+ emit_insn (gen_rtx_SET (op0,
-+ gen_safe_OR64 (temp, (high_bits & 0x3ff))));
-+ else
-+ temp2 = temp;
-+ }
-+ else
-+ {
-+ emit_insn (gen_safe_SET64 (temp, high_bits));
-+ temp2 = temp;
-+ }
-+
-+ /* Now shift it up into place. */
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_ASHIFT (DImode, temp2,
-+ GEN_INT (shift_count))));
-+
-+ /* If there is a low immediate part piece, finish up by
-+ putting that in as well. */
-+ if (low_immediate != 0)
-+ emit_insn (gen_rtx_SET (op0, gen_safe_OR64 (op0, low_immediate)));
-+}
-+
-+static void sparc_emit_set_const64_longway (rtx, rtx, unsigned HOST_WIDE_INT,
-+ unsigned HOST_WIDE_INT);
-+
-+/* Full 64-bit constant decomposition. Even though this is the
-+ 'worst' case, we still optimize a few things away. */
-+static void
-+sparc_emit_set_const64_longway (rtx op0, rtx temp,
-+ unsigned HOST_WIDE_INT high_bits,
-+ unsigned HOST_WIDE_INT low_bits)
-+{
-+ rtx sub_temp = op0;
-+
-+ if (can_create_pseudo_p ())
-+ sub_temp = gen_reg_rtx (DImode);
-+
-+ if ((high_bits & 0xfffffc00) != 0)
-+ {
-+ emit_insn (gen_safe_HIGH64 (temp, high_bits));
-+ if ((high_bits & ~0xfffffc00) != 0)
-+ emit_insn (gen_rtx_SET (sub_temp,
-+ gen_safe_OR64 (temp, (high_bits & 0x3ff))));
-+ else
-+ sub_temp = temp;
-+ }
-+ else
-+ {
-+ emit_insn (gen_safe_SET64 (temp, high_bits));
-+ sub_temp = temp;
-+ }
-+
-+ if (can_create_pseudo_p ())
-+ {
-+ rtx temp2 = gen_reg_rtx (DImode);
-+ rtx temp3 = gen_reg_rtx (DImode);
-+ rtx temp4 = gen_reg_rtx (DImode);
-+
-+ emit_insn (gen_rtx_SET (temp4, gen_rtx_ASHIFT (DImode, sub_temp,
-+ GEN_INT (32))));
-+
-+ emit_insn (gen_safe_HIGH64 (temp2, low_bits));
-+ if ((low_bits & ~0xfffffc00) != 0)
-+ {
-+ emit_insn (gen_rtx_SET (temp3,
-+ gen_safe_OR64 (temp2, (low_bits & 0x3ff))));
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_PLUS (DImode, temp4, temp3)));
-+ }
-+ else
-+ {
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_PLUS (DImode, temp4, temp2)));
-+ }
-+ }
-+ else
-+ {
-+ rtx low1 = GEN_INT ((low_bits >> (32 - 12)) & 0xfff);
-+ rtx low2 = GEN_INT ((low_bits >> (32 - 12 - 12)) & 0xfff);
-+ rtx low3 = GEN_INT ((low_bits >> (32 - 12 - 12 - 8)) & 0x0ff);
-+ int to_shift = 12;
-+
-+ /* We are in the middle of reload, so this is really
-+ painful. However we do still make an attempt to
-+ avoid emitting truly stupid code. */
-+ if (low1 != const0_rtx)
-+ {
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_ASHIFT (DImode, sub_temp,
-+ GEN_INT (to_shift))));
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_IOR (DImode, op0, low1)));
-+ sub_temp = op0;
-+ to_shift = 12;
-+ }
-+ else
-+ {
-+ to_shift += 12;
-+ }
-+ if (low2 != const0_rtx)
-+ {
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_ASHIFT (DImode, sub_temp,
-+ GEN_INT (to_shift))));
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_IOR (DImode, op0, low2)));
-+ sub_temp = op0;
-+ to_shift = 8;
-+ }
-+ else
-+ {
-+ to_shift += 8;
-+ }
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_ASHIFT (DImode, sub_temp,
-+ GEN_INT (to_shift))));
-+ if (low3 != const0_rtx)
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_IOR (DImode, op0, low3)));
-+ /* phew... */
-+ }
-+}
-+
-+/* Analyze a 64-bit constant for certain properties. */
-+static void analyze_64bit_constant (unsigned HOST_WIDE_INT,
-+ unsigned HOST_WIDE_INT,
-+ int *, int *, int *);
-+
-+static void
-+analyze_64bit_constant (unsigned HOST_WIDE_INT high_bits,
-+ unsigned HOST_WIDE_INT low_bits,
-+ int *hbsp, int *lbsp, int *abbasp)
-+{
-+ int lowest_bit_set, highest_bit_set, all_bits_between_are_set;
-+ int i;
-+
-+ lowest_bit_set = highest_bit_set = -1;
-+ i = 0;
-+ do
-+ {
-+ if ((lowest_bit_set == -1)
-+ && ((low_bits >> i) & 1))
-+ lowest_bit_set = i;
-+ if ((highest_bit_set == -1)
-+ && ((high_bits >> (32 - i - 1)) & 1))
-+ highest_bit_set = (64 - i - 1);
-+ }
-+ while (++i < 32
-+ && ((highest_bit_set == -1)
-+ || (lowest_bit_set == -1)));
-+ if (i == 32)
-+ {
-+ i = 0;
-+ do
-+ {
-+ if ((lowest_bit_set == -1)
-+ && ((high_bits >> i) & 1))
-+ lowest_bit_set = i + 32;
-+ if ((highest_bit_set == -1)
-+ && ((low_bits >> (32 - i - 1)) & 1))
-+ highest_bit_set = 32 - i - 1;
-+ }
-+ while (++i < 32
-+ && ((highest_bit_set == -1)
-+ || (lowest_bit_set == -1)));
-+ }
-+ /* If there are no bits set this should have gone out
-+ as one instruction! */
-+ gcc_assert (lowest_bit_set != -1 && highest_bit_set != -1);
-+ all_bits_between_are_set = 1;
-+ for (i = lowest_bit_set; i <= highest_bit_set; i++)
-+ {
-+ if (i < 32)
-+ {
-+ if ((low_bits & (1 << i)) != 0)
-+ continue;
-+ }
-+ else
-+ {
-+ if ((high_bits & (1 << (i - 32))) != 0)
-+ continue;
-+ }
-+ all_bits_between_are_set = 0;
-+ break;
-+ }
-+ *hbsp = highest_bit_set;
-+ *lbsp = lowest_bit_set;
-+ *abbasp = all_bits_between_are_set;
-+}
-+
-+static int const64_is_2insns (unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT);
-+
-+static int
-+const64_is_2insns (unsigned HOST_WIDE_INT high_bits,
-+ unsigned HOST_WIDE_INT low_bits)
-+{
-+ int highest_bit_set, lowest_bit_set, all_bits_between_are_set;
-+
-+ if (high_bits == 0
-+ || high_bits == 0xffffffff)
-+ return 1;
-+
-+ analyze_64bit_constant (high_bits, low_bits,
-+ &highest_bit_set, &lowest_bit_set,
-+ &all_bits_between_are_set);
-+
-+ if ((highest_bit_set == 63
-+ || lowest_bit_set == 0)
-+ && all_bits_between_are_set != 0)
-+ return 1;
-+
-+ if ((highest_bit_set - lowest_bit_set) < 21)
-+ return 1;
-+
-+ return 0;
-+}
-+
-+static unsigned HOST_WIDE_INT create_simple_focus_bits (unsigned HOST_WIDE_INT,
-+ unsigned HOST_WIDE_INT,
-+ int, int);
-+
-+static unsigned HOST_WIDE_INT
-+create_simple_focus_bits (unsigned HOST_WIDE_INT high_bits,
-+ unsigned HOST_WIDE_INT low_bits,
-+ int lowest_bit_set, int shift)
-+{
-+ HOST_WIDE_INT hi, lo;
-+
-+ if (lowest_bit_set < 32)
-+ {
-+ lo = (low_bits >> lowest_bit_set) << shift;
-+ hi = ((high_bits << (32 - lowest_bit_set)) << shift);
-+ }
-+ else
-+ {
-+ lo = 0;
-+ hi = ((high_bits >> (lowest_bit_set - 32)) << shift);
-+ }
-+ gcc_assert (! (hi & lo));
-+ return (hi | lo);
-+}
-+
-+/* Here we are sure to be arch64 and this is an integer constant
-+ being loaded into a register. Emit the most efficient
-+ insn sequence possible. Detection of all the 1-insn cases
-+ has been done already. */
-+static void
-+sparc_emit_set_const64 (rtx op0, rtx op1)
-+{
-+ unsigned HOST_WIDE_INT high_bits, low_bits;
-+ int lowest_bit_set, highest_bit_set;
-+ int all_bits_between_are_set;
-+ rtx temp = 0;
-+
-+ /* Sanity check that we know what we are working with. */
-+ gcc_assert (TARGET_ARCH64
-+ && (GET_CODE (op0) == SUBREG
-+ || (REG_P (op0) && ! SPARC_FP_REG_P (REGNO (op0)))));
-+
-+ if (! can_create_pseudo_p ())
-+ temp = op0;
-+
-+ if (GET_CODE (op1) != CONST_INT)
-+ {
-+ sparc_emit_set_symbolic_const64 (op0, op1, temp);
-+ return;
-+ }
-+
-+ if (! temp)
-+ temp = gen_reg_rtx (DImode);
-+
-+ high_bits = ((INTVAL (op1) >> 32) & 0xffffffff);
-+ low_bits = (INTVAL (op1) & 0xffffffff);
-+
-+ /* low_bits bits 0 --> 31
-+ high_bits bits 32 --> 63 */
-+
-+ analyze_64bit_constant (high_bits, low_bits,
-+ &highest_bit_set, &lowest_bit_set,
-+ &all_bits_between_are_set);
-+
-+ /* First try for a 2-insn sequence. */
-+
-+ /* These situations are preferred because the optimizer can
-+ * do more things with them:
-+ * 1) mov -1, %reg
-+ * sllx %reg, shift, %reg
-+ * 2) mov -1, %reg
-+ * srlx %reg, shift, %reg
-+ * 3) mov some_small_const, %reg
-+ * sllx %reg, shift, %reg
-+ */
-+ if (((highest_bit_set == 63
-+ || lowest_bit_set == 0)
-+ && all_bits_between_are_set != 0)
-+ || ((highest_bit_set - lowest_bit_set) < 12))
-+ {
-+ HOST_WIDE_INT the_const = -1;
-+ int shift = lowest_bit_set;
-+
-+ if ((highest_bit_set != 63
-+ && lowest_bit_set != 0)
-+ || all_bits_between_are_set == 0)
-+ {
-+ the_const =
-+ create_simple_focus_bits (high_bits, low_bits,
-+ lowest_bit_set, 0);
-+ }
-+ else if (lowest_bit_set == 0)
-+ shift = -(63 - highest_bit_set);
-+
-+ gcc_assert (SPARC_SIMM13_P (the_const));
-+ gcc_assert (shift != 0);
-+
-+ emit_insn (gen_safe_SET64 (temp, the_const));
-+ if (shift > 0)
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_ASHIFT (DImode, temp,
-+ GEN_INT (shift))));
-+ else if (shift < 0)
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_LSHIFTRT (DImode, temp,
-+ GEN_INT (-shift))));
-+ return;
-+ }
-+
-+ /* Now a range of 22 or less bits set somewhere.
-+ * 1) sethi %hi(focus_bits), %reg
-+ * sllx %reg, shift, %reg
-+ * 2) sethi %hi(focus_bits), %reg
-+ * srlx %reg, shift, %reg
-+ */
-+ if ((highest_bit_set - lowest_bit_set) < 21)
-+ {
-+ unsigned HOST_WIDE_INT focus_bits =
-+ create_simple_focus_bits (high_bits, low_bits,
-+ lowest_bit_set, 10);
-+
-+ gcc_assert (SPARC_SETHI_P (focus_bits));
-+ gcc_assert (lowest_bit_set != 10);
-+
-+ emit_insn (gen_safe_HIGH64 (temp, focus_bits));
-+
-+ /* If lowest_bit_set == 10 then a sethi alone could have done it. */
-+ if (lowest_bit_set < 10)
-+ emit_insn (gen_rtx_SET (op0,
-+ gen_rtx_LSHIFTRT (DImode, temp,
-+ GEN_INT (10 - lowest_bit_set))));
-+ else if (lowest_bit_set > 10)
-+ emit_insn (gen_rtx_SET (op0,
-+ gen_rtx_ASHIFT (DImode, temp,
-+ GEN_INT (lowest_bit_set - 10))));
-+ return;
-+ }
-+
-+ /* 1) sethi %hi(low_bits), %reg
-+ * or %reg, %lo(low_bits), %reg
-+ * 2) sethi %hi(~low_bits), %reg
-+ * xor %reg, %lo(-0x400 | (low_bits & 0x3ff)), %reg
-+ */
-+ if (high_bits == 0
-+ || high_bits == 0xffffffff)
-+ {
-+ sparc_emit_set_const64_quick1 (op0, temp, low_bits,
-+ (high_bits == 0xffffffff));
-+ return;
-+ }
-+
-+ /* Now, try 3-insn sequences. */
-+
-+ /* 1) sethi %hi(high_bits), %reg
-+ * or %reg, %lo(high_bits), %reg
-+ * sllx %reg, 32, %reg
-+ */
-+ if (low_bits == 0)
-+ {
-+ sparc_emit_set_const64_quick2 (op0, temp, high_bits, 0, 32);
-+ return;
-+ }
-+
-+ /* We may be able to do something quick
-+ when the constant is negated, so try that. */
-+ if (const64_is_2insns ((~high_bits) & 0xffffffff,
-+ (~low_bits) & 0xfffffc00))
-+ {
-+ /* NOTE: The trailing bits get XOR'd so we need the
-+ non-negated bits, not the negated ones. */
-+ unsigned HOST_WIDE_INT trailing_bits = low_bits & 0x3ff;
-+
-+ if ((((~high_bits) & 0xffffffff) == 0
-+ && ((~low_bits) & 0x80000000) == 0)
-+ || (((~high_bits) & 0xffffffff) == 0xffffffff
-+ && ((~low_bits) & 0x80000000) != 0))
-+ {
-+ unsigned HOST_WIDE_INT fast_int = (~low_bits & 0xffffffff);
-+
-+ if ((SPARC_SETHI_P (fast_int)
-+ && (~high_bits & 0xffffffff) == 0)
-+ || SPARC_SIMM13_P (fast_int))
-+ emit_insn (gen_safe_SET64 (temp, fast_int));
-+ else
-+ sparc_emit_set_const64 (temp, GEN_INT (fast_int));
-+ }
-+ else
-+ {
-+ rtx negated_const;
-+ negated_const = GEN_INT (((~low_bits) & 0xfffffc00) |
-+ (((HOST_WIDE_INT)((~high_bits) & 0xffffffff))<<32));
-+ sparc_emit_set_const64 (temp, negated_const);
-+ }
-+
-+ /* If we are XOR'ing with -1, then we should emit a one's complement
-+ instead. This way the combiner will notice logical operations
-+ such as ANDN later on and substitute. */
-+ if (trailing_bits == 0x3ff)
-+ {
-+ emit_insn (gen_rtx_SET (op0, gen_rtx_NOT (DImode, temp)));
-+ }
-+ else
-+ {
-+ emit_insn (gen_rtx_SET (op0,
-+ gen_safe_XOR64 (temp,
-+ (-0x400 | trailing_bits))));
-+ }
-+ return;
-+ }
-+
-+ /* 1) sethi %hi(xxx), %reg
-+ * or %reg, %lo(xxx), %reg
-+ * sllx %reg, yyy, %reg
-+ *
-+ * ??? This is just a generalized version of the low_bits==0
-+ * thing above, FIXME...
-+ */
-+ if ((highest_bit_set - lowest_bit_set) < 32)
-+ {
-+ unsigned HOST_WIDE_INT focus_bits =
-+ create_simple_focus_bits (high_bits, low_bits,
-+ lowest_bit_set, 0);
-+
-+ /* We can't get here in this state. */
-+ gcc_assert (highest_bit_set >= 32 && lowest_bit_set < 32);
-+
-+ /* So what we know is that the set bits straddle the
-+ middle of the 64-bit word. */
-+ sparc_emit_set_const64_quick2 (op0, temp,
-+ focus_bits, 0,
-+ lowest_bit_set);
-+ return;
-+ }
-+
-+ /* 1) sethi %hi(high_bits), %reg
-+ * or %reg, %lo(high_bits), %reg
-+ * sllx %reg, 32, %reg
-+ * or %reg, low_bits, %reg
-+ */
-+ if (SPARC_SIMM13_P (low_bits) && ((int)low_bits > 0))
-+ {
-+ sparc_emit_set_const64_quick2 (op0, temp, high_bits, low_bits, 32);
-+ return;
-+ }
-+
-+ /* The easiest way when all else fails, is full decomposition. */
-+ sparc_emit_set_const64_longway (op0, temp, high_bits, low_bits);
-+}
-+
-+/* Implement TARGET_FIXED_CONDITION_CODE_REGS. */
-+
-+static bool
-+sparc_fixed_condition_code_regs (unsigned int *p1, unsigned int *p2)
-+{
-+ *p1 = SPARC_ICC_REG;
-+ *p2 = SPARC_FCC_REG;
-+ return true;
-+}
-+
-+/* Implement TARGET_MIN_ARITHMETIC_PRECISION. */
-+
-+static unsigned int
-+sparc_min_arithmetic_precision (void)
-+{
-+ return 32;
-+}
-+
-+/* Given a comparison code (EQ, NE, etc.) and the first operand of a COMPARE,
-+ return the mode to be used for the comparison. For floating-point,
-+ CCFP[E]mode is used. CCNZmode should be used when the first operand
-+ is a PLUS, MINUS, NEG, or ASHIFT. CCmode should be used when no special
-+ processing is needed. */
-+
-+machine_mode
-+select_cc_mode (enum rtx_code op, rtx x, rtx y)
-+{
-+ if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
-+ {
-+ switch (op)
-+ {
-+ case EQ:
-+ case NE:
-+ case UNORDERED:
-+ case ORDERED:
-+ case UNLT:
-+ case UNLE:
-+ case UNGT:
-+ case UNGE:
-+ case UNEQ:
-+ return CCFPmode;
-+
-+ case LT:
-+ case LE:
-+ case GT:
-+ case GE:
-+ case LTGT:
-+ return CCFPEmode;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+ }
-+ else if ((GET_CODE (x) == PLUS || GET_CODE (x) == MINUS
-+ || GET_CODE (x) == NEG || GET_CODE (x) == ASHIFT)
-+ && y == const0_rtx)
-+ {
-+ if (TARGET_ARCH64 && GET_MODE (x) == DImode)
-+ return CCXNZmode;
-+ else
-+ return CCNZmode;
-+ }
-+ else
-+ {
-+ /* This is for the cmp<mode>_sne pattern. */
-+ if (GET_CODE (x) == NOT && y == constm1_rtx)
-+ {
-+ if (TARGET_ARCH64 && GET_MODE (x) == DImode)
-+ return CCXCmode;
-+ else
-+ return CCCmode;
-+ }
-+
-+ /* This is for the [u]addvdi4_sp32 and [u]subvdi4_sp32 patterns. */
-+ if (!TARGET_ARCH64 && GET_MODE (x) == DImode)
-+ {
-+ if (GET_CODE (y) == UNSPEC
-+ && (XINT (y, 1) == UNSPEC_ADDV
-+ || XINT (y, 1) == UNSPEC_SUBV
-+ || XINT (y, 1) == UNSPEC_NEGV))
-+ return CCVmode;
-+ else
-+ return CCCmode;
-+ }
-+
-+ if (TARGET_ARCH64 && GET_MODE (x) == DImode)
-+ return CCXmode;
-+ else
-+ return CCmode;
-+ }
-+}
-+
-+/* Emit the compare insn and return the CC reg for a CODE comparison
-+ with operands X and Y. */
-+
-+static rtx
-+gen_compare_reg_1 (enum rtx_code code, rtx x, rtx y)
-+{
-+ machine_mode mode;
-+ rtx cc_reg;
-+
-+ if (GET_MODE_CLASS (GET_MODE (x)) == MODE_CC)
-+ return x;
-+
-+ mode = SELECT_CC_MODE (code, x, y);
-+
-+ /* ??? We don't have movcc patterns so we cannot generate pseudo regs for the
-+ fcc regs (cse can't tell they're really call clobbered regs and will
-+ remove a duplicate comparison even if there is an intervening function
-+ call - it will then try to reload the cc reg via an int reg which is why
-+ we need the movcc patterns). It is possible to provide the movcc
-+ patterns by using the ldxfsr/stxfsr v9 insns. I tried it: you need two
-+ registers (say %g1,%g5) and it takes about 6 insns. A better fix would be
-+ to tell cse that CCFPE mode registers (even pseudos) are call
-+ clobbered. */
-+
-+ /* ??? This is an experiment. Rather than making changes to cse which may
-+ or may not be easy/clean, we do our own cse. This is possible because
-+ we will generate hard registers. Cse knows they're call clobbered (it
-+ doesn't know the same thing about pseudos). If we guess wrong, no big
-+ deal, but if we win, great! */
-+
-+ if (TARGET_V9 && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
-+#if 1 /* experiment */
-+ {
-+ int reg;
-+ /* We cycle through the registers to ensure they're all exercised. */
-+ static int next_fcc_reg = 0;
-+ /* Previous x,y for each fcc reg. */
-+ static rtx prev_args[4][2];
-+
-+ /* Scan prev_args for x,y. */
-+ for (reg = 0; reg < 4; reg++)
-+ if (prev_args[reg][0] == x && prev_args[reg][1] == y)
-+ break;
-+ if (reg == 4)
-+ {
-+ reg = next_fcc_reg;
-+ prev_args[reg][0] = x;
-+ prev_args[reg][1] = y;
-+ next_fcc_reg = (next_fcc_reg + 1) & 3;
-+ }
-+ cc_reg = gen_rtx_REG (mode, reg + SPARC_FIRST_V9_FCC_REG);
-+ }
-+#else
-+ cc_reg = gen_reg_rtx (mode);
-+#endif /* ! experiment */
-+ else if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
-+ cc_reg = gen_rtx_REG (mode, SPARC_FCC_REG);
-+ else
-+ cc_reg = gen_rtx_REG (mode, SPARC_ICC_REG);
-+
-+ /* We shouldn't get there for TFmode if !TARGET_HARD_QUAD. If we do, this
-+ will only result in an unrecognizable insn so no point in asserting. */
-+ emit_insn (gen_rtx_SET (cc_reg, gen_rtx_COMPARE (mode, x, y)));
-+
-+ return cc_reg;
-+}
-+
-+
-+/* Emit the compare insn and return the CC reg for the comparison in CMP. */
-+
-+rtx
-+gen_compare_reg (rtx cmp)
-+{
-+ return gen_compare_reg_1 (GET_CODE (cmp), XEXP (cmp, 0), XEXP (cmp, 1));
-+}
-+
-+/* This function is used for v9 only.
-+ DEST is the target of the Scc insn.
-+ CODE is the code for an Scc's comparison.
-+ X and Y are the values we compare.
-+
-+ This function is needed to turn
-+
-+ (set (reg:SI 110)
-+ (gt (reg:CCX 100 %icc)
-+ (const_int 0)))
-+ into
-+ (set (reg:SI 110)
-+ (gt:DI (reg:CCX 100 %icc)
-+ (const_int 0)))
-+
-+ IE: The instruction recognizer needs to see the mode of the comparison to
-+ find the right instruction. We could use "gt:DI" right in the
-+ define_expand, but leaving it out allows us to handle DI, SI, etc. */
-+
-+static int
-+gen_v9_scc (rtx dest, enum rtx_code compare_code, rtx x, rtx y)
-+{
-+ if (! TARGET_ARCH64
-+ && (GET_MODE (x) == DImode
-+ || GET_MODE (dest) == DImode))
-+ return 0;
-+
-+ /* Try to use the movrCC insns. */
-+ if (TARGET_ARCH64
-+ && GET_MODE_CLASS (GET_MODE (x)) == MODE_INT
-+ && y == const0_rtx
-+ && v9_regcmp_p (compare_code))
-+ {
-+ rtx op0 = x;
-+ rtx temp;
-+
-+ /* Special case for op0 != 0. This can be done with one instruction if
-+ dest == x. */
-+
-+ if (compare_code == NE
-+ && GET_MODE (dest) == DImode
-+ && rtx_equal_p (op0, dest))
-+ {
-+ emit_insn (gen_rtx_SET (dest,
-+ gen_rtx_IF_THEN_ELSE (DImode,
-+ gen_rtx_fmt_ee (compare_code, DImode,
-+ op0, const0_rtx),
-+ const1_rtx,
-+ dest)));
-+ return 1;
-+ }
-+
-+ if (reg_overlap_mentioned_p (dest, op0))
-+ {
-+ /* Handle the case where dest == x.
-+ We "early clobber" the result. */
-+ op0 = gen_reg_rtx (GET_MODE (x));
-+ emit_move_insn (op0, x);
-+ }
-+
-+ emit_insn (gen_rtx_SET (dest, const0_rtx));
-+ if (GET_MODE (op0) != DImode)
-+ {
-+ temp = gen_reg_rtx (DImode);
-+ convert_move (temp, op0, 0);
-+ }
-+ else
-+ temp = op0;
-+ emit_insn (gen_rtx_SET (dest,
-+ gen_rtx_IF_THEN_ELSE (GET_MODE (dest),
-+ gen_rtx_fmt_ee (compare_code, DImode,
-+ temp, const0_rtx),
-+ const1_rtx,
-+ dest)));
-+ return 1;
-+ }
-+ else
-+ {
-+ x = gen_compare_reg_1 (compare_code, x, y);
-+ y = const0_rtx;
-+
-+ emit_insn (gen_rtx_SET (dest, const0_rtx));
-+ emit_insn (gen_rtx_SET (dest,
-+ gen_rtx_IF_THEN_ELSE (GET_MODE (dest),
-+ gen_rtx_fmt_ee (compare_code,
-+ GET_MODE (x), x, y),
-+ const1_rtx, dest)));
-+ return 1;
-+ }
-+}
-+
-+
-+/* Emit an scc insn. For seq, sne, sgeu, and sltu, we can do this
-+ without jumps using the addx/subx instructions. */
-+
-+bool
-+emit_scc_insn (rtx operands[])
-+{
-+ rtx tem, x, y;
-+ enum rtx_code code;
-+ machine_mode mode;
-+
-+ /* The quad-word fp compare library routines all return nonzero to indicate
-+ true, which is different from the equivalent libgcc routines, so we must
-+ handle them specially here. */
-+ if (GET_MODE (operands[2]) == TFmode && ! TARGET_HARD_QUAD)
-+ {
-+ operands[1] = sparc_emit_float_lib_cmp (operands[2], operands[3],
-+ GET_CODE (operands[1]));
-+ operands[2] = XEXP (operands[1], 0);
-+ operands[3] = XEXP (operands[1], 1);
-+ }
-+
-+ code = GET_CODE (operands[1]);
-+ x = operands[2];
-+ y = operands[3];
-+ mode = GET_MODE (x);
-+
-+ /* For seq/sne on v9 we use the same code as v8 (the addx/subx method has
-+ more applications). The exception to this is "reg != 0" which can
-+ be done in one instruction on v9 (so we do it). */
-+ if ((code == EQ || code == NE) && (mode == SImode || mode == DImode))
-+ {
-+ if (y != const0_rtx)
-+ x = force_reg (mode, gen_rtx_XOR (mode, x, y));
-+
-+ rtx pat = gen_rtx_SET (operands[0],
-+ gen_rtx_fmt_ee (code, GET_MODE (operands[0]),
-+ x, const0_rtx));
-+
-+ /* If we can use addx/subx or addxc, add a clobber for CC. */
-+ if (mode == SImode || (code == NE && TARGET_VIS3))
-+ {
-+ rtx clobber
-+ = gen_rtx_CLOBBER (VOIDmode,
-+ gen_rtx_REG (mode == SImode ? CCmode : CCXmode,
-+ SPARC_ICC_REG));
-+ pat = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, pat, clobber));
-+ }
-+
-+ emit_insn (pat);
-+ return true;
-+ }
-+
-+ /* We can do LTU in DImode using the addxc instruction with VIS3. */
-+ if (TARGET_ARCH64
-+ && mode == DImode
-+ && !((code == LTU || code == GTU) && TARGET_VIS3)
-+ && gen_v9_scc (operands[0], code, x, y))
-+ return true;
-+
-+ /* We can do LTU and GEU using the addx/subx instructions too. And
-+ for GTU/LEU, if both operands are registers swap them and fall
-+ back to the easy case. */
-+ if (code == GTU || code == LEU)
-+ {
-+ if ((GET_CODE (x) == REG || GET_CODE (x) == SUBREG)
-+ && (GET_CODE (y) == REG || GET_CODE (y) == SUBREG))
-+ {
-+ tem = x;
-+ x = y;
-+ y = tem;
-+ code = swap_condition (code);
-+ }
-+ }
-+
-+ if (code == LTU || code == GEU)
-+ {
-+ emit_insn (gen_rtx_SET (operands[0],
-+ gen_rtx_fmt_ee (code, GET_MODE (operands[0]),
-+ gen_compare_reg_1 (code, x, y),
-+ const0_rtx)));
-+ return true;
-+ }
-+
-+ /* All the posibilities to use addx/subx based sequences has been
-+ exhausted, try for a 3 instruction sequence using v9 conditional
-+ moves. */
-+ if (TARGET_V9 && gen_v9_scc (operands[0], code, x, y))
-+ return true;
-+
-+ /* Nope, do branches. */
-+ return false;
-+}
-+
-+/* Emit a conditional jump insn for the v9 architecture using comparison code
-+ CODE and jump target LABEL.
-+ This function exists to take advantage of the v9 brxx insns. */
-+
-+static void
-+emit_v9_brxx_insn (enum rtx_code code, rtx op0, rtx label)
-+{
-+ emit_jump_insn (gen_rtx_SET (pc_rtx,
-+ gen_rtx_IF_THEN_ELSE (VOIDmode,
-+ gen_rtx_fmt_ee (code, GET_MODE (op0),
-+ op0, const0_rtx),
-+ gen_rtx_LABEL_REF (VOIDmode, label),
-+ pc_rtx)));
-+}
-+
-+/* Emit a conditional jump insn for the UA2011 architecture using
-+ comparison code CODE and jump target LABEL. This function exists
-+ to take advantage of the UA2011 Compare and Branch insns. */
-+
-+static void
-+emit_cbcond_insn (enum rtx_code code, rtx op0, rtx op1, rtx label)
-+{
-+ rtx if_then_else;
-+
-+ if_then_else = gen_rtx_IF_THEN_ELSE (VOIDmode,
-+ gen_rtx_fmt_ee(code, GET_MODE(op0),
-+ op0, op1),
-+ gen_rtx_LABEL_REF (VOIDmode, label),
-+ pc_rtx);
-+
-+ emit_jump_insn (gen_rtx_SET (pc_rtx, if_then_else));
-+}
-+
-+void
-+emit_conditional_branch_insn (rtx operands[])
-+{
-+ /* The quad-word fp compare library routines all return nonzero to indicate
-+ true, which is different from the equivalent libgcc routines, so we must
-+ handle them specially here. */
-+ if (GET_MODE (operands[1]) == TFmode && ! TARGET_HARD_QUAD)
-+ {
-+ operands[0] = sparc_emit_float_lib_cmp (operands[1], operands[2],
-+ GET_CODE (operands[0]));
-+ operands[1] = XEXP (operands[0], 0);
-+ operands[2] = XEXP (operands[0], 1);
-+ }
-+
-+ /* If we can tell early on that the comparison is against a constant
-+ that won't fit in the 5-bit signed immediate field of a cbcond,
-+ use one of the other v9 conditional branch sequences. */
-+ if (TARGET_CBCOND
-+ && GET_CODE (operands[1]) == REG
-+ && (GET_MODE (operands[1]) == SImode
-+ || (TARGET_ARCH64 && GET_MODE (operands[1]) == DImode))
-+ && (GET_CODE (operands[2]) != CONST_INT
-+ || SPARC_SIMM5_P (INTVAL (operands[2]))))
-+ {
-+ emit_cbcond_insn (GET_CODE (operands[0]), operands[1], operands[2], operands[3]);
-+ return;
-+ }
-+
-+ if (TARGET_ARCH64 && operands[2] == const0_rtx
-+ && GET_CODE (operands[1]) == REG
-+ && GET_MODE (operands[1]) == DImode)
-+ {
-+ emit_v9_brxx_insn (GET_CODE (operands[0]), operands[1], operands[3]);
-+ return;
-+ }
-+
-+ operands[1] = gen_compare_reg (operands[0]);
-+ operands[2] = const0_rtx;
-+ operands[0] = gen_rtx_fmt_ee (GET_CODE (operands[0]), VOIDmode,
-+ operands[1], operands[2]);
-+ emit_jump_insn (gen_cbranchcc4 (operands[0], operands[1], operands[2],
-+ operands[3]));
-+}
-+
-+
-+/* Generate a DFmode part of a hard TFmode register.
-+ REG is the TFmode hard register, LOW is 1 for the
-+ low 64bit of the register and 0 otherwise.
-+ */
-+rtx
-+gen_df_reg (rtx reg, int low)
-+{
-+ int regno = REGNO (reg);
-+
-+ if ((WORDS_BIG_ENDIAN == 0) ^ (low != 0))
-+ regno += (TARGET_ARCH64 && SPARC_INT_REG_P (regno)) ? 1 : 2;
-+ return gen_rtx_REG (DFmode, regno);
-+}
-+
-+/* Generate a call to FUNC with OPERANDS. Operand 0 is the return value.
-+ Unlike normal calls, TFmode operands are passed by reference. It is
-+ assumed that no more than 3 operands are required. */
-+
-+static void
-+emit_soft_tfmode_libcall (const char *func_name, int nargs, rtx *operands)
-+{
-+ rtx ret_slot = NULL, arg[3], func_sym;
-+ int i;
-+
-+ /* We only expect to be called for conversions, unary, and binary ops. */
-+ gcc_assert (nargs == 2 || nargs == 3);
-+
-+ for (i = 0; i < nargs; ++i)
-+ {
-+ rtx this_arg = operands[i];
-+ rtx this_slot;
-+
-+ /* TFmode arguments and return values are passed by reference. */
-+ if (GET_MODE (this_arg) == TFmode)
-+ {
-+ int force_stack_temp;
-+
-+ force_stack_temp = 0;
-+ if (TARGET_BUGGY_QP_LIB && i == 0)
-+ force_stack_temp = 1;
-+
-+ if (GET_CODE (this_arg) == MEM
-+ && ! force_stack_temp)
-+ {
-+ tree expr = MEM_EXPR (this_arg);
-+ if (expr)
-+ mark_addressable (expr);
-+ this_arg = XEXP (this_arg, 0);
-+ }
-+ else if (CONSTANT_P (this_arg)
-+ && ! force_stack_temp)
-+ {
-+ this_slot = force_const_mem (TFmode, this_arg);
-+ this_arg = XEXP (this_slot, 0);
-+ }
-+ else
-+ {
-+ this_slot = assign_stack_temp (TFmode, GET_MODE_SIZE (TFmode));
-+
-+ /* Operand 0 is the return value. We'll copy it out later. */
-+ if (i > 0)
-+ emit_move_insn (this_slot, this_arg);
-+ else
-+ ret_slot = this_slot;
-+
-+ this_arg = XEXP (this_slot, 0);
-+ }
-+ }
-+
-+ arg[i] = this_arg;
-+ }
-+
-+ func_sym = gen_rtx_SYMBOL_REF (Pmode, func_name);
-+
-+ if (GET_MODE (operands[0]) == TFmode)
-+ {
-+ if (nargs == 2)
-+ emit_library_call (func_sym, LCT_NORMAL, VOIDmode,
-+ arg[0], GET_MODE (arg[0]),
-+ arg[1], GET_MODE (arg[1]));
-+ else
-+ emit_library_call (func_sym, LCT_NORMAL, VOIDmode,
-+ arg[0], GET_MODE (arg[0]),
-+ arg[1], GET_MODE (arg[1]),
-+ arg[2], GET_MODE (arg[2]));
-+
-+ if (ret_slot)
-+ emit_move_insn (operands[0], ret_slot);
-+ }
-+ else
-+ {
-+ rtx ret;
-+
-+ gcc_assert (nargs == 2);
-+
-+ ret = emit_library_call_value (func_sym, operands[0], LCT_NORMAL,
-+ GET_MODE (operands[0]),
-+ arg[1], GET_MODE (arg[1]));
-+
-+ if (ret != operands[0])
-+ emit_move_insn (operands[0], ret);
-+ }
-+}
-+
-+/* Expand soft-float TFmode calls to sparc abi routines. */
-+
-+static void
-+emit_soft_tfmode_binop (enum rtx_code code, rtx *operands)
-+{
-+ const char *func;
-+
-+ switch (code)
-+ {
-+ case PLUS:
-+ func = "_Qp_add";
-+ break;
-+ case MINUS:
-+ func = "_Qp_sub";
-+ break;
-+ case MULT:
-+ func = "_Qp_mul";
-+ break;
-+ case DIV:
-+ func = "_Qp_div";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ emit_soft_tfmode_libcall (func, 3, operands);
-+}
-+
-+static void
-+emit_soft_tfmode_unop (enum rtx_code code, rtx *operands)
-+{
-+ const char *func;
-+
-+ gcc_assert (code == SQRT);
-+ func = "_Qp_sqrt";
-+
-+ emit_soft_tfmode_libcall (func, 2, operands);
-+}
-+
-+static void
-+emit_soft_tfmode_cvt (enum rtx_code code, rtx *operands)
-+{
-+ const char *func;
-+
-+ switch (code)
-+ {
-+ case FLOAT_EXTEND:
-+ switch (GET_MODE (operands[1]))
-+ {
-+ case E_SFmode:
-+ func = "_Qp_stoq";
-+ break;
-+ case E_DFmode:
-+ func = "_Qp_dtoq";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ break;
-+
-+ case FLOAT_TRUNCATE:
-+ switch (GET_MODE (operands[0]))
-+ {
-+ case E_SFmode:
-+ func = "_Qp_qtos";
-+ break;
-+ case E_DFmode:
-+ func = "_Qp_qtod";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ break;
-+
-+ case FLOAT:
-+ switch (GET_MODE (operands[1]))
-+ {
-+ case E_SImode:
-+ func = "_Qp_itoq";
-+ if (TARGET_ARCH64)
-+ operands[1] = gen_rtx_SIGN_EXTEND (DImode, operands[1]);
-+ break;
-+ case E_DImode:
-+ func = "_Qp_xtoq";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ break;
-+
-+ case UNSIGNED_FLOAT:
-+ switch (GET_MODE (operands[1]))
-+ {
-+ case E_SImode:
-+ func = "_Qp_uitoq";
-+ if (TARGET_ARCH64)
-+ operands[1] = gen_rtx_ZERO_EXTEND (DImode, operands[1]);
-+ break;
-+ case E_DImode:
-+ func = "_Qp_uxtoq";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ break;
-+
-+ case FIX:
-+ switch (GET_MODE (operands[0]))
-+ {
-+ case E_SImode:
-+ func = "_Qp_qtoi";
-+ break;
-+ case E_DImode:
-+ func = "_Qp_qtox";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ break;
-+
-+ case UNSIGNED_FIX:
-+ switch (GET_MODE (operands[0]))
-+ {
-+ case E_SImode:
-+ func = "_Qp_qtoui";
-+ break;
-+ case E_DImode:
-+ func = "_Qp_qtoux";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ emit_soft_tfmode_libcall (func, 2, operands);
-+}
-+
-+/* Expand a hard-float tfmode operation. All arguments must be in
-+ registers. */
-+
-+static void
-+emit_hard_tfmode_operation (enum rtx_code code, rtx *operands)
-+{
-+ rtx op, dest;
-+
-+ if (GET_RTX_CLASS (code) == RTX_UNARY)
-+ {
-+ operands[1] = force_reg (GET_MODE (operands[1]), operands[1]);
-+ op = gen_rtx_fmt_e (code, GET_MODE (operands[0]), operands[1]);
-+ }
-+ else
-+ {
-+ operands[1] = force_reg (GET_MODE (operands[1]), operands[1]);
-+ operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
-+ op = gen_rtx_fmt_ee (code, GET_MODE (operands[0]),
-+ operands[1], operands[2]);
-+ }
-+
-+ if (register_operand (operands[0], VOIDmode))
-+ dest = operands[0];
-+ else
-+ dest = gen_reg_rtx (GET_MODE (operands[0]));
-+
-+ emit_insn (gen_rtx_SET (dest, op));
-+
-+ if (dest != operands[0])
-+ emit_move_insn (operands[0], dest);
-+}
-+
-+void
-+emit_tfmode_binop (enum rtx_code code, rtx *operands)
-+{
-+ if (TARGET_HARD_QUAD)
-+ emit_hard_tfmode_operation (code, operands);
-+ else
-+ emit_soft_tfmode_binop (code, operands);
-+}
-+
-+void
-+emit_tfmode_unop (enum rtx_code code, rtx *operands)
-+{
-+ if (TARGET_HARD_QUAD)
-+ emit_hard_tfmode_operation (code, operands);
-+ else
-+ emit_soft_tfmode_unop (code, operands);
-+}
-+
-+void
-+emit_tfmode_cvt (enum rtx_code code, rtx *operands)
-+{
-+ if (TARGET_HARD_QUAD)
-+ emit_hard_tfmode_operation (code, operands);
-+ else
-+ emit_soft_tfmode_cvt (code, operands);
-+}
-+
-+/* Return nonzero if a branch/jump/call instruction will be emitting
-+ nop into its delay slot. */
-+
-+int
-+empty_delay_slot (rtx_insn *insn)
-+{
-+ rtx seq;
-+
-+ /* If no previous instruction (should not happen), return true. */
-+ if (PREV_INSN (insn) == NULL)
-+ return 1;
-+
-+ seq = NEXT_INSN (PREV_INSN (insn));
-+ if (GET_CODE (PATTERN (seq)) == SEQUENCE)
-+ return 0;
-+
-+ return 1;
-+}
-+
-+/* Return nonzero if we should emit a nop after a cbcond instruction.
-+ The cbcond instruction does not have a delay slot, however there is
-+ a severe performance penalty if a control transfer appears right
-+ after a cbcond. Therefore we emit a nop when we detect this
-+ situation. */
-+
-+int
-+emit_cbcond_nop (rtx_insn *insn)
-+{
-+ rtx next = next_active_insn (insn);
-+
-+ if (!next)
-+ return 1;
-+
-+ if (NONJUMP_INSN_P (next)
-+ && GET_CODE (PATTERN (next)) == SEQUENCE)
-+ next = XVECEXP (PATTERN (next), 0, 0);
-+ else if (CALL_P (next)
-+ && GET_CODE (PATTERN (next)) == PARALLEL)
-+ {
-+ rtx delay = XVECEXP (PATTERN (next), 0, 1);
-+
-+ if (GET_CODE (delay) == RETURN)
-+ {
-+ /* It's a sibling call. Do not emit the nop if we're going
-+ to emit something other than the jump itself as the first
-+ instruction of the sibcall sequence. */
-+ if (sparc_leaf_function_p || TARGET_FLAT)
-+ return 0;
-+ }
-+ }
-+
-+ if (NONJUMP_INSN_P (next))
-+ return 0;
-+
-+ return 1;
-+}
-+
-+/* Return nonzero if TRIAL, an insn, can be combined with a 'restore'
-+ instruction. RETURN_P is true if the v9 variant 'return' is to be
-+ considered in the test too.
-+
-+ TRIAL must be a SET whose destination is a REG appropriate for the
-+ 'restore' instruction or, if RETURN_P is true, for the 'return'
-+ instruction. */
-+
-+static int
-+eligible_for_restore_insn (rtx trial, bool return_p)
-+{
-+ rtx pat = PATTERN (trial);
-+ rtx src = SET_SRC (pat);
-+ bool src_is_freg = false;
-+ rtx src_reg;
-+
-+ /* Since we now can do moves between float and integer registers when
-+ VIS3 is enabled, we have to catch this case. We can allow such
-+ moves when doing a 'return' however. */
-+ src_reg = src;
-+ if (GET_CODE (src_reg) == SUBREG)
-+ src_reg = SUBREG_REG (src_reg);
-+ if (GET_CODE (src_reg) == REG
-+ && SPARC_FP_REG_P (REGNO (src_reg)))
-+ src_is_freg = true;
-+
-+ /* The 'restore src,%g0,dest' pattern for word mode and below. */
-+ if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
-+ && arith_operand (src, GET_MODE (src))
-+ && ! src_is_freg)
-+ {
-+ if (TARGET_ARCH64)
-+ return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
-+ else
-+ return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (SImode);
-+ }
-+
-+ /* The 'restore src,%g0,dest' pattern for double-word mode. */
-+ else if (GET_MODE_CLASS (GET_MODE (src)) != MODE_FLOAT
-+ && arith_double_operand (src, GET_MODE (src))
-+ && ! src_is_freg)
-+ return GET_MODE_SIZE (GET_MODE (src)) <= GET_MODE_SIZE (DImode);
-+
-+ /* The 'restore src,%g0,dest' pattern for float if no FPU. */
-+ else if (! TARGET_FPU && register_operand (src, SFmode))
-+ return 1;
-+
-+ /* The 'restore src,%g0,dest' pattern for double if no FPU. */
-+ else if (! TARGET_FPU && TARGET_ARCH64 && register_operand (src, DFmode))
-+ return 1;
-+
-+ /* If we have the 'return' instruction, anything that does not use
-+ local or output registers and can go into a delay slot wins. */
-+ else if (return_p && TARGET_V9 && !epilogue_renumber (&pat, 1))
-+ return 1;
-+
-+ /* The 'restore src1,src2,dest' pattern for SImode. */
-+ else if (GET_CODE (src) == PLUS
-+ && register_operand (XEXP (src, 0), SImode)
-+ && arith_operand (XEXP (src, 1), SImode))
-+ return 1;
-+
-+ /* The 'restore src1,src2,dest' pattern for DImode. */
-+ else if (GET_CODE (src) == PLUS
-+ && register_operand (XEXP (src, 0), DImode)
-+ && arith_double_operand (XEXP (src, 1), DImode))
-+ return 1;
-+
-+ /* The 'restore src1,%lo(src2),dest' pattern. */
-+ else if (GET_CODE (src) == LO_SUM
-+ && ! TARGET_CM_MEDMID
-+ && ((register_operand (XEXP (src, 0), SImode)
-+ && immediate_operand (XEXP (src, 1), SImode))
-+ || (TARGET_ARCH64
-+ && register_operand (XEXP (src, 0), DImode)
-+ && immediate_operand (XEXP (src, 1), DImode))))
-+ return 1;
-+
-+ /* The 'restore src,src,dest' pattern. */
-+ else if (GET_CODE (src) == ASHIFT
-+ && (register_operand (XEXP (src, 0), SImode)
-+ || register_operand (XEXP (src, 0), DImode))
-+ && XEXP (src, 1) == const1_rtx)
-+ return 1;
-+
-+ return 0;
-+}
-+
-+/* Return nonzero if TRIAL can go into the function return's delay slot. */
-+
-+int
-+eligible_for_return_delay (rtx_insn *trial)
-+{
-+ int regno;
-+ rtx pat;
-+
-+ /* If the function uses __builtin_eh_return, the eh_return machinery
-+ occupies the delay slot. */
-+ if (crtl->calls_eh_return)
-+ return 0;
-+
-+ if (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_FALSE)
-+ return 0;
-+
-+ /* In the case of a leaf or flat function, anything can go into the slot. */
-+ if (sparc_leaf_function_p || TARGET_FLAT)
-+ return 1;
-+
-+ if (!NONJUMP_INSN_P (trial))
-+ return 0;
-+
-+ pat = PATTERN (trial);
-+ if (GET_CODE (pat) == PARALLEL)
-+ {
-+ int i;
-+
-+ if (! TARGET_V9)
-+ return 0;
-+ for (i = XVECLEN (pat, 0) - 1; i >= 0; i--)
-+ {
-+ rtx expr = XVECEXP (pat, 0, i);
-+ if (GET_CODE (expr) != SET)
-+ return 0;
-+ if (GET_CODE (SET_DEST (expr)) != REG)
-+ return 0;
-+ regno = REGNO (SET_DEST (expr));
-+ if (regno >= 8 && regno < 24)
-+ return 0;
-+ }
-+ return !epilogue_renumber (&pat, 1);
-+ }
-+
-+ if (GET_CODE (pat) != SET)
-+ return 0;
-+
-+ if (GET_CODE (SET_DEST (pat)) != REG)
-+ return 0;
-+
-+ regno = REGNO (SET_DEST (pat));
-+
-+ /* Otherwise, only operations which can be done in tandem with
-+ a `restore' or `return' insn can go into the delay slot. */
-+ if (regno >= 8 && regno < 24)
-+ return 0;
-+
-+ /* If this instruction sets up floating point register and we have a return
-+ instruction, it can probably go in. But restore will not work
-+ with FP_REGS. */
-+ if (! SPARC_INT_REG_P (regno))
-+ return TARGET_V9 && !epilogue_renumber (&pat, 1);
-+
-+ return eligible_for_restore_insn (trial, true);
-+}
-+
-+/* Return nonzero if TRIAL can go into the sibling call's delay slot. */
-+
-+int
-+eligible_for_sibcall_delay (rtx_insn *trial)
-+{
-+ rtx pat;
-+
-+ if (get_attr_in_branch_delay (trial) == IN_BRANCH_DELAY_FALSE)
-+ return 0;
-+
-+ if (!NONJUMP_INSN_P (trial))
-+ return 0;
-+
-+ pat = PATTERN (trial);
-+
-+ if (sparc_leaf_function_p || TARGET_FLAT)
-+ {
-+ /* If the tail call is done using the call instruction,
-+ we have to restore %o7 in the delay slot. */
-+ if (LEAF_SIBCALL_SLOT_RESERVED_P)
-+ return 0;
-+
-+ /* %g1 is used to build the function address */
-+ if (reg_mentioned_p (gen_rtx_REG (Pmode, 1), pat))
-+ return 0;
-+
-+ return 1;
-+ }
-+
-+ if (GET_CODE (pat) != SET)
-+ return 0;
-+
-+ /* Otherwise, only operations which can be done in tandem with
-+ a `restore' insn can go into the delay slot. */
-+ if (GET_CODE (SET_DEST (pat)) != REG
-+ || (REGNO (SET_DEST (pat)) >= 8 && REGNO (SET_DEST (pat)) < 24)
-+ || ! SPARC_INT_REG_P (REGNO (SET_DEST (pat))))
-+ return 0;
-+
-+ /* If it mentions %o7, it can't go in, because sibcall will clobber it
-+ in most cases. */
-+ if (reg_mentioned_p (gen_rtx_REG (Pmode, 15), pat))
-+ return 0;
-+
-+ return eligible_for_restore_insn (trial, false);
-+}
-+
-+/* Determine if it's legal to put X into the constant pool. This
-+ is not possible if X contains the address of a symbol that is
-+ not constant (TLS) or not known at final link time (PIC). */
-+
-+static bool
-+sparc_cannot_force_const_mem (machine_mode mode, rtx x)
-+{
-+ switch (GET_CODE (x))
-+ {
-+ case CONST_INT:
-+ case CONST_WIDE_INT:
-+ case CONST_DOUBLE:
-+ case CONST_VECTOR:
-+ /* Accept all non-symbolic constants. */
-+ return false;
-+
-+ case LABEL_REF:
-+ /* Labels are OK iff we are non-PIC. */
-+ return flag_pic != 0;
-+
-+ case SYMBOL_REF:
-+ /* 'Naked' TLS symbol references are never OK,
-+ non-TLS symbols are OK iff we are non-PIC. */
-+ if (SYMBOL_REF_TLS_MODEL (x))
-+ return true;
-+ else
-+ return flag_pic != 0;
-+
-+ case CONST:
-+ return sparc_cannot_force_const_mem (mode, XEXP (x, 0));
-+ case PLUS:
-+ case MINUS:
-+ return sparc_cannot_force_const_mem (mode, XEXP (x, 0))
-+ || sparc_cannot_force_const_mem (mode, XEXP (x, 1));
-+ case UNSPEC:
-+ return true;
-+ default:
-+ gcc_unreachable ();
-+ }
-+}
-+
-+/* Global Offset Table support. */
-+static GTY(()) rtx got_symbol_rtx = NULL_RTX;
-+static GTY(()) rtx got_register_rtx = NULL_RTX;
-+static GTY(()) rtx got_helper_rtx = NULL_RTX;
-+
-+static GTY(()) bool got_helper_needed = false;
-+
-+/* Return the SYMBOL_REF for the Global Offset Table. */
-+
-+static rtx
-+sparc_got (void)
-+{
-+ if (!got_symbol_rtx)
-+ got_symbol_rtx = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
-+
-+ return got_symbol_rtx;
-+}
-+
-+/* Wrapper around the load_pcrel_sym{si,di} patterns. */
-+
-+static rtx
-+gen_load_pcrel_sym (rtx op0, rtx op1, rtx op2)
-+{
-+ int orig_flag_pic = flag_pic;
-+ rtx insn;
-+
-+ /* The load_pcrel_sym{si,di} patterns require absolute addressing. */
-+ flag_pic = 0;
-+ if (TARGET_ARCH64)
-+ insn = gen_load_pcrel_symdi (op0, op1, op2, GEN_INT (REGNO (op0)));
-+ else
-+ insn = gen_load_pcrel_symsi (op0, op1, op2, GEN_INT (REGNO (op0)));
-+ flag_pic = orig_flag_pic;
-+
-+ return insn;
-+}
-+
-+/* Output the load_pcrel_sym{si,di} patterns. */
-+
-+const char *
-+output_load_pcrel_sym (rtx *operands)
-+{
-+ if (flag_delayed_branch)
-+ {
-+ output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
-+ output_asm_insn ("call\t%a2", operands);
-+ output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
-+ }
-+ else
-+ {
-+ output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
-+ output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
-+ output_asm_insn ("call\t%a2", operands);
-+ output_asm_insn (" nop", NULL);
-+ }
-+
-+ if (operands[2] == got_helper_rtx)
-+ got_helper_needed = true;
-+
-+ return "";
-+}
-+
-+#ifdef HAVE_GAS_HIDDEN
-+# define USE_HIDDEN_LINKONCE 1
-+#else
-+# define USE_HIDDEN_LINKONCE 0
-+#endif
-+
-+/* Emit code to load the GOT register. */
-+
-+void
-+load_got_register (void)
-+{
-+ rtx insn;
-+
-+ if (TARGET_VXWORKS_RTP)
-+ {
-+ if (!got_register_rtx)
-+ got_register_rtx = pic_offset_table_rtx;
-+
-+ insn = gen_vxworks_load_got ();
-+ }
-+ else
-+ {
-+ if (!got_register_rtx)
-+ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
-+
-+ /* The GOT symbol is subject to a PC-relative relocation so we need a
-+ helper function to add the PC value and thus get the final value. */
-+ if (!got_helper_rtx)
-+ {
-+ char name[32];
-+
-+ /* Skip the leading '%' as that cannot be used in a symbol name. */
-+ if (USE_HIDDEN_LINKONCE)
-+ sprintf (name, "__sparc_get_pc_thunk.%s",
-+ reg_names[REGNO (got_register_rtx)] + 1);
-+ else
-+ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
-+ REGNO (got_register_rtx));
-+
-+ got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
-+ }
-+
-+ insn
-+ = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
-+ }
-+
-+ emit_insn (insn);
-+}
-+
-+/* Ensure that we are not using patterns that are not OK with PIC. */
-+
-+int
-+check_pic (int i)
-+{
-+ rtx op;
-+
-+ switch (flag_pic)
-+ {
-+ case 1:
-+ op = recog_data.operand[i];
-+ gcc_assert (GET_CODE (op) != SYMBOL_REF
-+ && (GET_CODE (op) != CONST
-+ || (GET_CODE (XEXP (op, 0)) == MINUS
-+ && XEXP (XEXP (op, 0), 0) == sparc_got ()
-+ && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST)));
-+ /* fallthrough */
-+ case 2:
-+ default:
-+ return 1;
-+ }
-+}
-+
-+/* Return true if X is an address which needs a temporary register when
-+ reloaded while generating PIC code. */
-+
-+int
-+pic_address_needs_scratch (rtx x)
-+{
-+ /* An address which is a symbolic plus a non SMALL_INT needs a temp reg. */
-+ if (GET_CODE (x) == CONST
-+ && GET_CODE (XEXP (x, 0)) == PLUS
-+ && GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF
-+ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT
-+ && !SMALL_INT (XEXP (XEXP (x, 0), 1)))
-+ return 1;
-+
-+ return 0;
-+}
-+
-+/* Determine if a given RTX is a valid constant. We already know this
-+ satisfies CONSTANT_P. */
-+
-+static bool
-+sparc_legitimate_constant_p (machine_mode mode, rtx x)
-+{
-+ switch (GET_CODE (x))
-+ {
-+ case CONST:
-+ case SYMBOL_REF:
-+ if (sparc_tls_referenced_p (x))
-+ return false;
-+ break;
-+
-+ case CONST_DOUBLE:
-+ /* Floating point constants are generally not ok.
-+ The only exception is 0.0 and all-ones in VIS. */
-+ if (TARGET_VIS
-+ && SCALAR_FLOAT_MODE_P (mode)
-+ && (const_zero_operand (x, mode)
-+ || const_all_ones_operand (x, mode)))
-+ return true;
-+
-+ return false;
-+
-+ case CONST_VECTOR:
-+ /* Vector constants are generally not ok.
-+ The only exception is 0 or -1 in VIS. */
-+ if (TARGET_VIS
-+ && (const_zero_operand (x, mode)
-+ || const_all_ones_operand (x, mode)))
-+ return true;
-+
-+ return false;
-+
-+ default:
-+ break;
-+ }
-+
-+ return true;
-+}
-+
-+/* Determine if a given RTX is a valid constant address. */
-+
-+bool
-+constant_address_p (rtx x)
-+{
-+ switch (GET_CODE (x))
-+ {
-+ case LABEL_REF:
-+ case CONST_INT:
-+ case HIGH:
-+ return true;
-+
-+ case CONST:
-+ if (flag_pic && pic_address_needs_scratch (x))
-+ return false;
-+ return sparc_legitimate_constant_p (Pmode, x);
-+
-+ case SYMBOL_REF:
-+ return !flag_pic && sparc_legitimate_constant_p (Pmode, x);
-+
-+ default:
-+ return false;
-+ }
-+}
-+
-+/* Nonzero if the constant value X is a legitimate general operand
-+ when generating PIC code. It is given that flag_pic is on and
-+ that X satisfies CONSTANT_P. */
-+
-+bool
-+legitimate_pic_operand_p (rtx x)
-+{
-+ if (pic_address_needs_scratch (x))
-+ return false;
-+ if (sparc_tls_referenced_p (x))
-+ return false;
-+ return true;
-+}
-+
-+/* Return true if X is a representation of the PIC register. */
-+
-+static bool
-+sparc_pic_register_p (rtx x)
-+{
-+ if (!REG_P (x) || !pic_offset_table_rtx)
-+ return false;
-+
-+ if (x == pic_offset_table_rtx)
-+ return true;
-+
-+ if (!HARD_REGISTER_P (pic_offset_table_rtx)
-+ && (HARD_REGISTER_P (x) || lra_in_progress || reload_in_progress)
-+ && ORIGINAL_REGNO (x) == REGNO (pic_offset_table_rtx))
-+ return true;
-+
-+ return false;
-+}
-+
-+#define RTX_OK_FOR_OFFSET_P(X, MODE) \
-+ (CONST_INT_P (X) \
-+ && INTVAL (X) >= -0x1000 \
-+ && INTVAL (X) <= (0x1000 - GET_MODE_SIZE (MODE)))
-+
-+#define RTX_OK_FOR_OLO10_P(X, MODE) \
-+ (CONST_INT_P (X) \
-+ && INTVAL (X) >= -0x1000 \
-+ && INTVAL (X) <= (0xc00 - GET_MODE_SIZE (MODE)))
-+
-+/* Handle the TARGET_LEGITIMATE_ADDRESS_P target hook.
-+
-+ On SPARC, the actual legitimate addresses must be REG+REG or REG+SMALLINT
-+ ordinarily. This changes a bit when generating PIC. */
-+
-+static bool
-+sparc_legitimate_address_p (machine_mode mode, rtx addr, bool strict)
-+{
-+ rtx rs1 = NULL, rs2 = NULL, imm1 = NULL;
-+
-+ if (REG_P (addr) || GET_CODE (addr) == SUBREG)
-+ rs1 = addr;
-+ else if (GET_CODE (addr) == PLUS)
-+ {
-+ rs1 = XEXP (addr, 0);
-+ rs2 = XEXP (addr, 1);
-+
-+ /* Canonicalize. REG comes first, if there are no regs,
-+ LO_SUM comes first. */
-+ if (!REG_P (rs1)
-+ && GET_CODE (rs1) != SUBREG
-+ && (REG_P (rs2)
-+ || GET_CODE (rs2) == SUBREG
-+ || (GET_CODE (rs2) == LO_SUM && GET_CODE (rs1) != LO_SUM)))
-+ {
-+ rs1 = XEXP (addr, 1);
-+ rs2 = XEXP (addr, 0);
-+ }
-+
-+ if ((flag_pic == 1
-+ && sparc_pic_register_p (rs1)
-+ && !REG_P (rs2)
-+ && GET_CODE (rs2) != SUBREG
-+ && GET_CODE (rs2) != LO_SUM
-+ && GET_CODE (rs2) != MEM
-+ && !(GET_CODE (rs2) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (rs2))
-+ && (! symbolic_operand (rs2, VOIDmode) || mode == Pmode)
-+ && (GET_CODE (rs2) != CONST_INT || SMALL_INT (rs2)))
-+ || ((REG_P (rs1)
-+ || GET_CODE (rs1) == SUBREG)
-+ && RTX_OK_FOR_OFFSET_P (rs2, mode)))
-+ {
-+ imm1 = rs2;
-+ rs2 = NULL;
-+ }
-+ else if ((REG_P (rs1) || GET_CODE (rs1) == SUBREG)
-+ && (REG_P (rs2) || GET_CODE (rs2) == SUBREG))
-+ {
-+ /* We prohibit REG + REG for TFmode when there are no quad move insns
-+ and we consequently need to split. We do this because REG+REG
-+ is not an offsettable address. If we get the situation in reload
-+ where source and destination of a movtf pattern are both MEMs with
-+ REG+REG address, then only one of them gets converted to an
-+ offsettable address. */
-+ if (mode == TFmode
-+ && ! (TARGET_ARCH64 && TARGET_HARD_QUAD))
-+ return 0;
-+
-+ /* Likewise for TImode, but in all cases. */
-+ if (mode == TImode)
-+ return 0;
-+
-+ /* We prohibit REG + REG on ARCH32 if not optimizing for
-+ DFmode/DImode because then mem_min_alignment is likely to be zero
-+ after reload and the forced split would lack a matching splitter
-+ pattern. */
-+ if (TARGET_ARCH32 && !optimize
-+ && (mode == DFmode || mode == DImode))
-+ return 0;
-+ }
-+ else if (USE_AS_OFFSETABLE_LO10
-+ && GET_CODE (rs1) == LO_SUM
-+ && TARGET_ARCH64
-+ && ! TARGET_CM_MEDMID
-+ && RTX_OK_FOR_OLO10_P (rs2, mode))
-+ {
-+ rs2 = NULL;
-+ imm1 = XEXP (rs1, 1);
-+ rs1 = XEXP (rs1, 0);
-+ if (!CONSTANT_P (imm1)
-+ || (GET_CODE (rs1) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (rs1)))
-+ return 0;
-+ }
-+ }
-+ else if (GET_CODE (addr) == LO_SUM)
-+ {
-+ rs1 = XEXP (addr, 0);
-+ imm1 = XEXP (addr, 1);
-+
-+ if (!CONSTANT_P (imm1)
-+ || (GET_CODE (rs1) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (rs1)))
-+ return 0;
-+
-+ /* We can't allow TFmode in 32-bit mode, because an offset greater
-+ than the alignment (8) may cause the LO_SUM to overflow. */
-+ if (mode == TFmode && TARGET_ARCH32)
-+ return 0;
-+
-+ /* During reload, accept the HIGH+LO_SUM construct generated by
-+ sparc_legitimize_reload_address. */
-+ if (reload_in_progress
-+ && GET_CODE (rs1) == HIGH
-+ && XEXP (rs1, 0) == imm1)
-+ return 1;
-+ }
-+ else if (GET_CODE (addr) == CONST_INT && SMALL_INT (addr))
-+ return 1;
-+ else
-+ return 0;
-+
-+ if (GET_CODE (rs1) == SUBREG)
-+ rs1 = SUBREG_REG (rs1);
-+ if (!REG_P (rs1))
-+ return 0;
-+
-+ if (rs2)
-+ {
-+ if (GET_CODE (rs2) == SUBREG)
-+ rs2 = SUBREG_REG (rs2);
-+ if (!REG_P (rs2))
-+ return 0;
-+ }
-+
-+ if (strict)
-+ {
-+ if (!REGNO_OK_FOR_BASE_P (REGNO (rs1))
-+ || (rs2 && !REGNO_OK_FOR_BASE_P (REGNO (rs2))))
-+ return 0;
-+ }
-+ else
-+ {
-+ if ((! SPARC_INT_REG_P (REGNO (rs1))
-+ && REGNO (rs1) != FRAME_POINTER_REGNUM
-+ && REGNO (rs1) < FIRST_PSEUDO_REGISTER)
-+ || (rs2
-+ && (! SPARC_INT_REG_P (REGNO (rs2))
-+ && REGNO (rs2) != FRAME_POINTER_REGNUM
-+ && REGNO (rs2) < FIRST_PSEUDO_REGISTER)))
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+/* Return the SYMBOL_REF for the tls_get_addr function. */
-+
-+static GTY(()) rtx sparc_tls_symbol = NULL_RTX;
-+
-+static rtx
-+sparc_tls_get_addr (void)
-+{
-+ if (!sparc_tls_symbol)
-+ sparc_tls_symbol = gen_rtx_SYMBOL_REF (Pmode, "__tls_get_addr");
-+
-+ return sparc_tls_symbol;
-+}
-+
-+/* Return the Global Offset Table to be used in TLS mode. */
-+
-+static rtx
-+sparc_tls_got (void)
-+{
-+ /* In PIC mode, this is just the PIC offset table. */
-+ if (flag_pic)
-+ {
-+ crtl->uses_pic_offset_table = 1;
-+ return pic_offset_table_rtx;
-+ }
-+
-+ /* In non-PIC mode, Sun as (unlike GNU as) emits PC-relative relocations for
-+ the GOT symbol with the 32-bit ABI, so we reload the GOT register. */
-+ if (TARGET_SUN_TLS && TARGET_ARCH32)
-+ {
-+ load_got_register ();
-+ return got_register_rtx;
-+ }
-+
-+ /* In all other cases, we load a new pseudo with the GOT symbol. */
-+ return copy_to_reg (sparc_got ());
-+}
-+
-+/* Return true if X contains a thread-local symbol. */
-+
-+static bool
-+sparc_tls_referenced_p (rtx x)
-+{
-+ if (!TARGET_HAVE_TLS)
-+ return false;
-+
-+ if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS)
-+ x = XEXP (XEXP (x, 0), 0);
-+
-+ if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (x))
-+ return true;
-+
-+ /* That's all we handle in sparc_legitimize_tls_address for now. */
-+ return false;
-+}
-+
-+/* ADDR contains a thread-local SYMBOL_REF. Generate code to compute
-+ this (thread-local) address. */
-+
-+static rtx
-+sparc_legitimize_tls_address (rtx addr)
-+{
-+ rtx temp1, temp2, temp3, ret, o0, got;
-+ rtx_insn *insn;
-+
-+ gcc_assert (can_create_pseudo_p ());
-+
-+ if (GET_CODE (addr) == SYMBOL_REF)
-+ /* Although the various sethi/or sequences generate SImode values, many of
-+ them can be transformed by the linker when relaxing and, if relaxing to
-+ local-exec, will become a sethi/xor pair, which is signed and therefore
-+ a full DImode value in 64-bit mode. Thus we must use Pmode, lest these
-+ values be spilled onto the stack in 64-bit mode. */
-+ switch (SYMBOL_REF_TLS_MODEL (addr))
-+ {
-+ case TLS_MODEL_GLOBAL_DYNAMIC:
-+ start_sequence ();
-+ temp1 = gen_reg_rtx (Pmode);
-+ temp2 = gen_reg_rtx (Pmode);
-+ ret = gen_reg_rtx (Pmode);
-+ o0 = gen_rtx_REG (Pmode, 8);
-+ got = sparc_tls_got ();
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_tgd_hi22si (temp1, addr));
-+ emit_insn (gen_tgd_lo10si (temp2, temp1, addr));
-+ emit_insn (gen_tgd_addsi (o0, got, temp2, addr));
-+ insn = emit_call_insn (gen_tgd_callsi (o0, sparc_tls_get_addr (),
-+ addr, const1_rtx));
-+ }
-+ else
-+ {
-+ emit_insn (gen_tgd_hi22di (temp1, addr));
-+ emit_insn (gen_tgd_lo10di (temp2, temp1, addr));
-+ emit_insn (gen_tgd_adddi (o0, got, temp2, addr));
-+ insn = emit_call_insn (gen_tgd_calldi (o0, sparc_tls_get_addr (),
-+ addr, const1_rtx));
-+ }
-+ use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0);
-+ RTL_CONST_CALL_P (insn) = 1;
-+ insn = get_insns ();
-+ end_sequence ();
-+ emit_libcall_block (insn, ret, o0, addr);
-+ break;
-+
-+ case TLS_MODEL_LOCAL_DYNAMIC:
-+ start_sequence ();
-+ temp1 = gen_reg_rtx (Pmode);
-+ temp2 = gen_reg_rtx (Pmode);
-+ temp3 = gen_reg_rtx (Pmode);
-+ ret = gen_reg_rtx (Pmode);
-+ o0 = gen_rtx_REG (Pmode, 8);
-+ got = sparc_tls_got ();
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_tldm_hi22si (temp1));
-+ emit_insn (gen_tldm_lo10si (temp2, temp1));
-+ emit_insn (gen_tldm_addsi (o0, got, temp2));
-+ insn = emit_call_insn (gen_tldm_callsi (o0, sparc_tls_get_addr (),
-+ const1_rtx));
-+ }
-+ else
-+ {
-+ emit_insn (gen_tldm_hi22di (temp1));
-+ emit_insn (gen_tldm_lo10di (temp2, temp1));
-+ emit_insn (gen_tldm_adddi (o0, got, temp2));
-+ insn = emit_call_insn (gen_tldm_calldi (o0, sparc_tls_get_addr (),
-+ const1_rtx));
-+ }
-+ use_reg (&CALL_INSN_FUNCTION_USAGE (insn), o0);
-+ RTL_CONST_CALL_P (insn) = 1;
-+ insn = get_insns ();
-+ end_sequence ();
-+ /* Attach a unique REG_EQUAL, to allow the RTL optimizers to
-+ share the LD_BASE result with other LD model accesses. */
-+ emit_libcall_block (insn, temp3, o0,
-+ gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
-+ UNSPEC_TLSLD_BASE));
-+ temp1 = gen_reg_rtx (Pmode);
-+ temp2 = gen_reg_rtx (Pmode);
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_tldo_hix22si (temp1, addr));
-+ emit_insn (gen_tldo_lox10si (temp2, temp1, addr));
-+ emit_insn (gen_tldo_addsi (ret, temp3, temp2, addr));
-+ }
-+ else
-+ {
-+ emit_insn (gen_tldo_hix22di (temp1, addr));
-+ emit_insn (gen_tldo_lox10di (temp2, temp1, addr));
-+ emit_insn (gen_tldo_adddi (ret, temp3, temp2, addr));
-+ }
-+ break;
-+
-+ case TLS_MODEL_INITIAL_EXEC:
-+ temp1 = gen_reg_rtx (Pmode);
-+ temp2 = gen_reg_rtx (Pmode);
-+ temp3 = gen_reg_rtx (Pmode);
-+ got = sparc_tls_got ();
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_tie_hi22si (temp1, addr));
-+ emit_insn (gen_tie_lo10si (temp2, temp1, addr));
-+ emit_insn (gen_tie_ld32 (temp3, got, temp2, addr));
-+ }
-+ else
-+ {
-+ emit_insn (gen_tie_hi22di (temp1, addr));
-+ emit_insn (gen_tie_lo10di (temp2, temp1, addr));
-+ emit_insn (gen_tie_ld64 (temp3, got, temp2, addr));
-+ }
-+ if (TARGET_SUN_TLS)
-+ {
-+ ret = gen_reg_rtx (Pmode);
-+ if (TARGET_ARCH32)
-+ emit_insn (gen_tie_addsi (ret, gen_rtx_REG (Pmode, 7),
-+ temp3, addr));
-+ else
-+ emit_insn (gen_tie_adddi (ret, gen_rtx_REG (Pmode, 7),
-+ temp3, addr));
-+ }
-+ else
-+ ret = gen_rtx_PLUS (Pmode, gen_rtx_REG (Pmode, 7), temp3);
-+ break;
-+
-+ case TLS_MODEL_LOCAL_EXEC:
-+ temp1 = gen_reg_rtx (Pmode);
-+ temp2 = gen_reg_rtx (Pmode);
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_tle_hix22si (temp1, addr));
-+ emit_insn (gen_tle_lox10si (temp2, temp1, addr));
-+ }
-+ else
-+ {
-+ emit_insn (gen_tle_hix22di (temp1, addr));
-+ emit_insn (gen_tle_lox10di (temp2, temp1, addr));
-+ }
-+ ret = gen_rtx_PLUS (Pmode, gen_rtx_REG (Pmode, 7), temp2);
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ else if (GET_CODE (addr) == CONST)
-+ {
-+ rtx base, offset;
-+
-+ gcc_assert (GET_CODE (XEXP (addr, 0)) == PLUS);
-+
-+ base = sparc_legitimize_tls_address (XEXP (XEXP (addr, 0), 0));
-+ offset = XEXP (XEXP (addr, 0), 1);
-+
-+ base = force_operand (base, NULL_RTX);
-+ if (!(GET_CODE (offset) == CONST_INT && SMALL_INT (offset)))
-+ offset = force_reg (Pmode, offset);
-+ ret = gen_rtx_PLUS (Pmode, base, offset);
-+ }
-+
-+ else
-+ gcc_unreachable (); /* for now ... */
-+
-+ return ret;
-+}
-+
-+/* Legitimize PIC addresses. If the address is already position-independent,
-+ we return ORIG. Newly generated position-independent addresses go into a
-+ reg. This is REG if nonzero, otherwise we allocate register(s) as
-+ necessary. */
-+
-+static rtx
-+sparc_legitimize_pic_address (rtx orig, rtx reg)
-+{
-+ if (GET_CODE (orig) == SYMBOL_REF
-+ /* See the comment in sparc_expand_move. */
-+ || (GET_CODE (orig) == LABEL_REF && !can_use_mov_pic_label_ref (orig)))
-+ {
-+ bool gotdata_op = false;
-+ rtx pic_ref, address;
-+ rtx_insn *insn;
-+
-+ if (!reg)
-+ {
-+ gcc_assert (can_create_pseudo_p ());
-+ reg = gen_reg_rtx (Pmode);
-+ }
-+
-+ if (flag_pic == 2)
-+ {
-+ /* If not during reload, allocate another temp reg here for loading
-+ in the address, so that these instructions can be optimized
-+ properly. */
-+ rtx temp_reg = can_create_pseudo_p () ? gen_reg_rtx (Pmode) : reg;
-+
-+ /* Must put the SYMBOL_REF inside an UNSPEC here so that cse
-+ won't get confused into thinking that these two instructions
-+ are loading in the true address of the symbol. If in the
-+ future a PIC rtx exists, that should be used instead. */
-+ if (TARGET_ARCH64)
-+ {
-+ emit_insn (gen_movdi_high_pic (temp_reg, orig));
-+ emit_insn (gen_movdi_lo_sum_pic (temp_reg, temp_reg, orig));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movsi_high_pic (temp_reg, orig));
-+ emit_insn (gen_movsi_lo_sum_pic (temp_reg, temp_reg, orig));
-+ }
-+
-+ address = temp_reg;
-+ gotdata_op = true;
-+ }
-+ else
-+ address = orig;
-+
-+ crtl->uses_pic_offset_table = 1;
-+ if (gotdata_op)
-+ {
-+ if (TARGET_ARCH64)
-+ insn = emit_insn (gen_movdi_pic_gotdata_op (reg,
-+ pic_offset_table_rtx,
-+ address, orig));
-+ else
-+ insn = emit_insn (gen_movsi_pic_gotdata_op (reg,
-+ pic_offset_table_rtx,
-+ address, orig));
-+ }
-+ else
-+ {
-+ pic_ref
-+ = gen_const_mem (Pmode,
-+ gen_rtx_PLUS (Pmode,
-+ pic_offset_table_rtx, address));
-+ insn = emit_move_insn (reg, pic_ref);
-+ }
-+
-+ /* Put a REG_EQUAL note on this insn, so that it can be optimized
-+ by loop. */
-+ set_unique_reg_note (insn, REG_EQUAL, orig);
-+ return reg;
-+ }
-+ else if (GET_CODE (orig) == CONST)
-+ {
-+ rtx base, offset;
-+
-+ if (GET_CODE (XEXP (orig, 0)) == PLUS
-+ && sparc_pic_register_p (XEXP (XEXP (orig, 0), 0)))
-+ return orig;
-+
-+ if (!reg)
-+ {
-+ gcc_assert (can_create_pseudo_p ());
-+ reg = gen_reg_rtx (Pmode);
-+ }
-+
-+ gcc_assert (GET_CODE (XEXP (orig, 0)) == PLUS);
-+ base = sparc_legitimize_pic_address (XEXP (XEXP (orig, 0), 0), reg);
-+ offset = sparc_legitimize_pic_address (XEXP (XEXP (orig, 0), 1),
-+ base == reg ? NULL_RTX : reg);
-+
-+ if (GET_CODE (offset) == CONST_INT)
-+ {
-+ if (SMALL_INT (offset))
-+ return plus_constant (Pmode, base, INTVAL (offset));
-+ else if (can_create_pseudo_p ())
-+ offset = force_reg (Pmode, offset);
-+ else
-+ /* If we reach here, then something is seriously wrong. */
-+ gcc_unreachable ();
-+ }
-+ return gen_rtx_PLUS (Pmode, base, offset);
-+ }
-+ else if (GET_CODE (orig) == LABEL_REF)
-+ /* ??? We ought to be checking that the register is live instead, in case
-+ it is eliminated. */
-+ crtl->uses_pic_offset_table = 1;
-+
-+ return orig;
-+}
-+
-+/* Try machine-dependent ways of modifying an illegitimate address X
-+ to be legitimate. If we find one, return the new, valid address.
-+
-+ OLDX is the address as it was before break_out_memory_refs was called.
-+ In some cases it is useful to look at this to decide what needs to be done.
-+
-+ MODE is the mode of the operand pointed to by X.
-+
-+ On SPARC, change REG+N into REG+REG, and REG+(X*Y) into REG+REG. */
-+
-+static rtx
-+sparc_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
-+ machine_mode mode)
-+{
-+ rtx orig_x = x;
-+
-+ if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 0)) == MULT)
-+ x = gen_rtx_PLUS (Pmode, XEXP (x, 1),
-+ force_operand (XEXP (x, 0), NULL_RTX));
-+ if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 1)) == MULT)
-+ x = gen_rtx_PLUS (Pmode, XEXP (x, 0),
-+ force_operand (XEXP (x, 1), NULL_RTX));
-+ if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 0)) == PLUS)
-+ x = gen_rtx_PLUS (Pmode, force_operand (XEXP (x, 0), NULL_RTX),
-+ XEXP (x, 1));
-+ if (GET_CODE (x) == PLUS && GET_CODE (XEXP (x, 1)) == PLUS)
-+ x = gen_rtx_PLUS (Pmode, XEXP (x, 0),
-+ force_operand (XEXP (x, 1), NULL_RTX));
-+
-+ if (x != orig_x && sparc_legitimate_address_p (mode, x, FALSE))
-+ return x;
-+
-+ if (sparc_tls_referenced_p (x))
-+ x = sparc_legitimize_tls_address (x);
-+ else if (flag_pic)
-+ x = sparc_legitimize_pic_address (x, NULL_RTX);
-+ else if (GET_CODE (x) == PLUS && CONSTANT_ADDRESS_P (XEXP (x, 1)))
-+ x = gen_rtx_PLUS (Pmode, XEXP (x, 0),
-+ copy_to_mode_reg (Pmode, XEXP (x, 1)));
-+ else if (GET_CODE (x) == PLUS && CONSTANT_ADDRESS_P (XEXP (x, 0)))
-+ x = gen_rtx_PLUS (Pmode, XEXP (x, 1),
-+ copy_to_mode_reg (Pmode, XEXP (x, 0)));
-+ else if (GET_CODE (x) == SYMBOL_REF
-+ || GET_CODE (x) == CONST
-+ || GET_CODE (x) == LABEL_REF)
-+ x = copy_to_suggested_reg (x, NULL_RTX, Pmode);
-+
-+ return x;
-+}
-+
-+/* Delegitimize an address that was legitimized by the above function. */
-+
-+static rtx
-+sparc_delegitimize_address (rtx x)
-+{
-+ x = delegitimize_mem_from_attrs (x);
-+
-+ if (GET_CODE (x) == LO_SUM)
-+ x = XEXP (x, 1);
-+
-+ if (GET_CODE (x) == UNSPEC)
-+ switch (XINT (x, 1))
-+ {
-+ case UNSPEC_MOVE_PIC:
-+ case UNSPEC_TLSLE:
-+ x = XVECEXP (x, 0, 0);
-+ gcc_assert (GET_CODE (x) == SYMBOL_REF);
-+ break;
-+ case UNSPEC_MOVE_GOTDATA:
-+ x = XVECEXP (x, 0, 2);
-+ gcc_assert (GET_CODE (x) == SYMBOL_REF);
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ /* This is generated by mov{si,di}_pic_label_ref in PIC mode. */
-+ if (GET_CODE (x) == MINUS
-+ && (XEXP (x, 0) == got_register_rtx
-+ || sparc_pic_register_p (XEXP (x, 0))))
-+ {
-+ rtx y = XEXP (x, 1);
-+
-+ if (GET_CODE (y) == LO_SUM)
-+ y = XEXP (y, 1);
-+
-+ if (GET_CODE (y) == UNSPEC && XINT (y, 1) == UNSPEC_MOVE_PIC_LABEL)
-+ {
-+ x = XVECEXP (y, 0, 0);
-+ gcc_assert (GET_CODE (x) == LABEL_REF
-+ || (GET_CODE (x) == CONST
-+ && GET_CODE (XEXP (x, 0)) == PLUS
-+ && GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF
-+ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT));
-+ }
-+ }
-+
-+ return x;
-+}
-+
-+/* SPARC implementation of LEGITIMIZE_RELOAD_ADDRESS. Returns a value to
-+ replace the input X, or the original X if no replacement is called for.
-+ The output parameter *WIN is 1 if the calling macro should goto WIN,
-+ 0 if it should not.
-+
-+ For SPARC, we wish to handle addresses by splitting them into
-+ HIGH+LO_SUM pairs, retaining the LO_SUM in the memory reference.
-+ This cuts the number of extra insns by one.
-+
-+ Do nothing when generating PIC code and the address is a symbolic
-+ operand or requires a scratch register. */
-+
-+rtx
-+sparc_legitimize_reload_address (rtx x, machine_mode mode,
-+ int opnum, int type,
-+ int ind_levels ATTRIBUTE_UNUSED, int *win)
-+{
-+ /* Decompose SImode constants into HIGH+LO_SUM. */
-+ if (CONSTANT_P (x)
-+ && (mode != TFmode || TARGET_ARCH64)
-+ && GET_MODE (x) == SImode
-+ && GET_CODE (x) != LO_SUM
-+ && GET_CODE (x) != HIGH
-+ && sparc_code_model <= CM_MEDLOW
-+ && !(flag_pic
-+ && (symbolic_operand (x, Pmode) || pic_address_needs_scratch (x))))
-+ {
-+ x = gen_rtx_LO_SUM (GET_MODE (x), gen_rtx_HIGH (GET_MODE (x), x), x);
-+ push_reload (XEXP (x, 0), NULL_RTX, &XEXP (x, 0), NULL,
-+ BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
-+ opnum, (enum reload_type)type);
-+ *win = 1;
-+ return x;
-+ }
-+
-+ /* We have to recognize what we have already generated above. */
-+ if (GET_CODE (x) == LO_SUM && GET_CODE (XEXP (x, 0)) == HIGH)
-+ {
-+ push_reload (XEXP (x, 0), NULL_RTX, &XEXP (x, 0), NULL,
-+ BASE_REG_CLASS, GET_MODE (x), VOIDmode, 0, 0,
-+ opnum, (enum reload_type)type);
-+ *win = 1;
-+ return x;
-+ }
-+
-+ *win = 0;
-+ return x;
-+}
-+
-+/* Return true if ADDR (a legitimate address expression)
-+ has an effect that depends on the machine mode it is used for.
-+
-+ In PIC mode,
-+
-+ (mem:HI [%l7+a])
-+
-+ is not equivalent to
-+
-+ (mem:QI [%l7+a]) (mem:QI [%l7+a+1])
-+
-+ because [%l7+a+1] is interpreted as the address of (a+1). */
-+
-+
-+static bool
-+sparc_mode_dependent_address_p (const_rtx addr,
-+ addr_space_t as ATTRIBUTE_UNUSED)
-+{
-+ if (GET_CODE (addr) == PLUS
-+ && sparc_pic_register_p (XEXP (addr, 0))
-+ && symbolic_operand (XEXP (addr, 1), VOIDmode))
-+ return true;
-+
-+ return false;
-+}
-+
-+/* Emit a call instruction with the pattern given by PAT. ADDR is the
-+ address of the call target. */
-+
-+void
-+sparc_emit_call_insn (rtx pat, rtx addr)
-+{
-+ rtx_insn *insn;
-+
-+ insn = emit_call_insn (pat);
-+
-+ /* The PIC register is live on entry to VxWorks PIC PLT entries. */
-+ if (TARGET_VXWORKS_RTP
-+ && flag_pic
-+ && GET_CODE (addr) == SYMBOL_REF
-+ && (SYMBOL_REF_DECL (addr)
-+ ? !targetm.binds_local_p (SYMBOL_REF_DECL (addr))
-+ : !SYMBOL_REF_LOCAL_P (addr)))
-+ {
-+ use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx);
-+ crtl->uses_pic_offset_table = 1;
-+ }
-+}
-+
-+/* Return 1 if RTX is a MEM which is known to be aligned to at
-+ least a DESIRED byte boundary. */
-+
-+int
-+mem_min_alignment (rtx mem, int desired)
-+{
-+ rtx addr, base, offset;
-+
-+ /* If it's not a MEM we can't accept it. */
-+ if (GET_CODE (mem) != MEM)
-+ return 0;
-+
-+ /* Obviously... */
-+ if (!TARGET_UNALIGNED_DOUBLES
-+ && MEM_ALIGN (mem) / BITS_PER_UNIT >= (unsigned)desired)
-+ return 1;
-+
-+ /* ??? The rest of the function predates MEM_ALIGN so
-+ there is probably a bit of redundancy. */
-+ addr = XEXP (mem, 0);
-+ base = offset = NULL_RTX;
-+ if (GET_CODE (addr) == PLUS)
-+ {
-+ if (GET_CODE (XEXP (addr, 0)) == REG)
-+ {
-+ base = XEXP (addr, 0);
-+
-+ /* What we are saying here is that if the base
-+ REG is aligned properly, the compiler will make
-+ sure any REG based index upon it will be so
-+ as well. */
-+ if (GET_CODE (XEXP (addr, 1)) == CONST_INT)
-+ offset = XEXP (addr, 1);
-+ else
-+ offset = const0_rtx;
-+ }
-+ }
-+ else if (GET_CODE (addr) == REG)
-+ {
-+ base = addr;
-+ offset = const0_rtx;
-+ }
-+
-+ if (base != NULL_RTX)
-+ {
-+ int regno = REGNO (base);
-+
-+ if (regno != HARD_FRAME_POINTER_REGNUM && regno != STACK_POINTER_REGNUM)
-+ {
-+ /* Check if the compiler has recorded some information
-+ about the alignment of the base REG. If reload has
-+ completed, we already matched with proper alignments.
-+ If not running global_alloc, reload might give us
-+ unaligned pointer to local stack though. */
-+ if (((cfun != 0
-+ && REGNO_POINTER_ALIGN (regno) >= desired * BITS_PER_UNIT)
-+ || (optimize && reload_completed))
-+ && (INTVAL (offset) & (desired - 1)) == 0)
-+ return 1;
-+ }
-+ else
-+ {
-+ if (((INTVAL (offset) - SPARC_STACK_BIAS) & (desired - 1)) == 0)
-+ return 1;
-+ }
-+ }
-+ else if (! TARGET_UNALIGNED_DOUBLES
-+ || CONSTANT_P (addr)
-+ || GET_CODE (addr) == LO_SUM)
-+ {
-+ /* Anything else we know is properly aligned unless TARGET_UNALIGNED_DOUBLES
-+ is true, in which case we can only assume that an access is aligned if
-+ it is to a constant address, or the address involves a LO_SUM. */
-+ return 1;
-+ }
-+
-+ /* An obviously unaligned address. */
-+ return 0;
-+}
-+
-+
-+/* Vectors to keep interesting information about registers where it can easily
-+ be got. We used to use the actual mode value as the bit number, but there
-+ are more than 32 modes now. Instead we use two tables: one indexed by
-+ hard register number, and one indexed by mode. */
-+
-+/* The purpose of sparc_mode_class is to shrink the range of modes so that
-+ they all fit (as bit numbers) in a 32-bit word (again). Each real mode is
-+ mapped into one sparc_mode_class mode. */
-+
-+enum sparc_mode_class {
-+ H_MODE, S_MODE, D_MODE, T_MODE, O_MODE,
-+ SF_MODE, DF_MODE, TF_MODE, OF_MODE,
-+ CC_MODE, CCFP_MODE
-+};
-+
-+/* Modes for single-word and smaller quantities. */
-+#define S_MODES \
-+ ((1 << (int) H_MODE) | (1 << (int) S_MODE) | (1 << (int) SF_MODE))
-+
-+/* Modes for double-word and smaller quantities. */
-+#define D_MODES (S_MODES | (1 << (int) D_MODE) | (1 << (int) DF_MODE))
-+
-+/* Modes for quad-word and smaller quantities. */
-+#define T_MODES (D_MODES | (1 << (int) T_MODE) | (1 << (int) TF_MODE))
-+
-+/* Modes for 8-word and smaller quantities. */
-+#define O_MODES (T_MODES | (1 << (int) O_MODE) | (1 << (int) OF_MODE))
-+
-+/* Modes for single-float quantities. */
-+#define SF_MODES ((1 << (int) S_MODE) | (1 << (int) SF_MODE))
-+
-+/* Modes for double-float and smaller quantities. */
-+#define DF_MODES (SF_MODES | (1 << (int) D_MODE) | (1 << (int) DF_MODE))
-+
-+/* Modes for quad-float and smaller quantities. */
-+#define TF_MODES (DF_MODES | (1 << (int) TF_MODE))
-+
-+/* Modes for quad-float pairs and smaller quantities. */
-+#define OF_MODES (TF_MODES | (1 << (int) OF_MODE))
-+
-+/* Modes for double-float only quantities. */
-+#define DF_MODES_NO_S ((1 << (int) D_MODE) | (1 << (int) DF_MODE))
-+
-+/* Modes for quad-float and double-float only quantities. */
-+#define TF_MODES_NO_S (DF_MODES_NO_S | (1 << (int) TF_MODE))
-+
-+/* Modes for quad-float pairs and double-float only quantities. */
-+#define OF_MODES_NO_S (TF_MODES_NO_S | (1 << (int) OF_MODE))
-+
-+/* Modes for condition codes. */
-+#define CC_MODES (1 << (int) CC_MODE)
-+#define CCFP_MODES (1 << (int) CCFP_MODE)
-+
-+/* Value is 1 if register/mode pair is acceptable on sparc.
-+
-+ The funny mixture of D and T modes is because integer operations
-+ do not specially operate on tetra quantities, so non-quad-aligned
-+ registers can hold quadword quantities (except %o4 and %i4 because
-+ they cross fixed registers).
-+
-+ ??? Note that, despite the settings, non-double-aligned parameter
-+ registers can hold double-word quantities in 32-bit mode. */
-+
-+/* This points to either the 32-bit or the 64-bit version. */
-+static const int *hard_regno_mode_classes;
-+
-+static const int hard_32bit_mode_classes[] = {
-+ S_MODES, S_MODES, T_MODES, S_MODES, T_MODES, S_MODES, D_MODES, S_MODES,
-+ T_MODES, S_MODES, T_MODES, S_MODES, D_MODES, S_MODES, D_MODES, S_MODES,
-+ T_MODES, S_MODES, T_MODES, S_MODES, T_MODES, S_MODES, D_MODES, S_MODES,
-+ T_MODES, S_MODES, T_MODES, S_MODES, D_MODES, S_MODES, D_MODES, S_MODES,
-+
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, OF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, OF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, OF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, TF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+
-+ /* FP regs f32 to f63. Only the even numbered registers actually exist,
-+ and none can hold SFmode/SImode values. */
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, OF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, OF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, OF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, TF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+
-+ /* %fcc[0123] */
-+ CCFP_MODES, CCFP_MODES, CCFP_MODES, CCFP_MODES,
-+
-+ /* %icc, %sfp, %gsr */
-+ CC_MODES, 0, D_MODES
-+};
-+
-+static const int hard_64bit_mode_classes[] = {
-+ D_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES,
-+ O_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES,
-+ T_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES,
-+ O_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES, T_MODES, D_MODES,
-+
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, OF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, OF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, OF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+ OF_MODES, SF_MODES, DF_MODES, SF_MODES, TF_MODES, SF_MODES, DF_MODES, SF_MODES,
-+
-+ /* FP regs f32 to f63. Only the even numbered registers actually exist,
-+ and none can hold SFmode/SImode values. */
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, OF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, OF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, OF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+ OF_MODES_NO_S, 0, DF_MODES_NO_S, 0, TF_MODES_NO_S, 0, DF_MODES_NO_S, 0,
-+
-+ /* %fcc[0123] */
-+ CCFP_MODES, CCFP_MODES, CCFP_MODES, CCFP_MODES,
-+
-+ /* %icc, %sfp, %gsr */
-+ CC_MODES, 0, D_MODES
-+};
-+
-+static int sparc_mode_class [NUM_MACHINE_MODES];
-+
-+enum reg_class sparc_regno_reg_class[FIRST_PSEUDO_REGISTER];
-+
-+static void
-+sparc_init_modes (void)
-+{
-+ int i;
-+
-+ for (i = 0; i < NUM_MACHINE_MODES; i++)
-+ {
-+ machine_mode m = (machine_mode) i;
-+ unsigned int size = GET_MODE_SIZE (m);
-+
-+ switch (GET_MODE_CLASS (m))
-+ {
-+ case MODE_INT:
-+ case MODE_PARTIAL_INT:
-+ case MODE_COMPLEX_INT:
-+ if (size < 4)
-+ sparc_mode_class[i] = 1 << (int) H_MODE;
-+ else if (size == 4)
-+ sparc_mode_class[i] = 1 << (int) S_MODE;
-+ else if (size == 8)
-+ sparc_mode_class[i] = 1 << (int) D_MODE;
-+ else if (size == 16)
-+ sparc_mode_class[i] = 1 << (int) T_MODE;
-+ else if (size == 32)
-+ sparc_mode_class[i] = 1 << (int) O_MODE;
-+ else
-+ sparc_mode_class[i] = 0;
-+ break;
-+ case MODE_VECTOR_INT:
-+ if (size == 4)
-+ sparc_mode_class[i] = 1 << (int) SF_MODE;
-+ else if (size == 8)
-+ sparc_mode_class[i] = 1 << (int) DF_MODE;
-+ else
-+ sparc_mode_class[i] = 0;
-+ break;
-+ case MODE_FLOAT:
-+ case MODE_COMPLEX_FLOAT:
-+ if (size == 4)
-+ sparc_mode_class[i] = 1 << (int) SF_MODE;
-+ else if (size == 8)
-+ sparc_mode_class[i] = 1 << (int) DF_MODE;
-+ else if (size == 16)
-+ sparc_mode_class[i] = 1 << (int) TF_MODE;
-+ else if (size == 32)
-+ sparc_mode_class[i] = 1 << (int) OF_MODE;
-+ else
-+ sparc_mode_class[i] = 0;
-+ break;
-+ case MODE_CC:
-+ if (m == CCFPmode || m == CCFPEmode)
-+ sparc_mode_class[i] = 1 << (int) CCFP_MODE;
-+ else
-+ sparc_mode_class[i] = 1 << (int) CC_MODE;
-+ break;
-+ default:
-+ sparc_mode_class[i] = 0;
-+ break;
-+ }
-+ }
-+
-+ if (TARGET_ARCH64)
-+ hard_regno_mode_classes = hard_64bit_mode_classes;
-+ else
-+ hard_regno_mode_classes = hard_32bit_mode_classes;
-+
-+ /* Initialize the array used by REGNO_REG_CLASS. */
-+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+ {
-+ if (i < 16 && TARGET_V8PLUS)
-+ sparc_regno_reg_class[i] = I64_REGS;
-+ else if (i < 32 || i == FRAME_POINTER_REGNUM)
-+ sparc_regno_reg_class[i] = GENERAL_REGS;
-+ else if (i < 64)
-+ sparc_regno_reg_class[i] = FP_REGS;
-+ else if (i < 96)
-+ sparc_regno_reg_class[i] = EXTRA_FP_REGS;
-+ else if (i < 100)
-+ sparc_regno_reg_class[i] = FPCC_REGS;
-+ else
-+ sparc_regno_reg_class[i] = NO_REGS;
-+ }
-+}
-+
-+/* Return whether REGNO, a global or FP register, must be saved/restored. */
-+
-+static inline bool
-+save_global_or_fp_reg_p (unsigned int regno,
-+ int leaf_function ATTRIBUTE_UNUSED)
-+{
-+ return !call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno);
-+}
-+
-+/* Return whether the return address register (%i7) is needed. */
-+
-+static inline bool
-+return_addr_reg_needed_p (int leaf_function)
-+{
-+ /* If it is live, for example because of __builtin_return_address (0). */
-+ if (df_regs_ever_live_p (RETURN_ADDR_REGNUM))
-+ return true;
-+
-+ /* Otherwise, it is needed as save register if %o7 is clobbered. */
-+ if (!leaf_function
-+ /* Loading the GOT register clobbers %o7. */
-+ || crtl->uses_pic_offset_table
-+ || df_regs_ever_live_p (INCOMING_RETURN_ADDR_REGNUM))
-+ return true;
-+
-+ return false;
-+}
-+
-+/* Return whether REGNO, a local or in register, must be saved/restored. */
-+
-+static bool
-+save_local_or_in_reg_p (unsigned int regno, int leaf_function)
-+{
-+ /* General case: call-saved registers live at some point. */
-+ if (!call_used_or_fixed_reg_p (regno) && df_regs_ever_live_p (regno))
-+ return true;
-+
-+ /* Frame pointer register (%fp) if needed. */
-+ if (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed)
-+ return true;
-+
-+ /* Return address register (%i7) if needed. */
-+ if (regno == RETURN_ADDR_REGNUM && return_addr_reg_needed_p (leaf_function))
-+ return true;
-+
-+ /* GOT register (%l7) if needed. */
-+ if (got_register_rtx && regno == REGNO (got_register_rtx))
-+ return true;
-+
-+ /* If the function accesses prior frames, the frame pointer and the return
-+ address of the previous frame must be saved on the stack. */
-+ if (crtl->accesses_prior_frames
-+ && (regno == HARD_FRAME_POINTER_REGNUM || regno == RETURN_ADDR_REGNUM))
-+ return true;
-+
-+ return false;
-+}
-+
-+/* Compute the frame size required by the function. This function is called
-+ during the reload pass and also by sparc_expand_prologue. */
-+
-+static HOST_WIDE_INT
-+sparc_compute_frame_size (HOST_WIDE_INT size, int leaf_function)
-+{
-+ HOST_WIDE_INT frame_size, apparent_frame_size;
-+ int args_size, n_global_fp_regs = 0;
-+ bool save_local_in_regs_p = false;
-+ unsigned int i;
-+
-+ /* If the function allocates dynamic stack space, the dynamic offset is
-+ computed early and contains REG_PARM_STACK_SPACE, so we need to cope. */
-+ if (leaf_function && !cfun->calls_alloca)
-+ args_size = 0;
-+ else
-+ args_size = crtl->outgoing_args_size + REG_PARM_STACK_SPACE (cfun->decl);
-+
-+ /* Calculate space needed for global registers. */
-+ if (TARGET_ARCH64)
-+ {
-+ for (i = 0; i < 8; i++)
-+ if (save_global_or_fp_reg_p (i, 0))
-+ n_global_fp_regs += 2;
-+ }
-+ else
-+ {
-+ for (i = 0; i < 8; i += 2)
-+ if (save_global_or_fp_reg_p (i, 0)
-+ || save_global_or_fp_reg_p (i + 1, 0))
-+ n_global_fp_regs += 2;
-+ }
-+
-+ /* In the flat window model, find out which local and in registers need to
-+ be saved. We don't reserve space in the current frame for them as they
-+ will be spilled into the register window save area of the caller's frame.
-+ However, as soon as we use this register window save area, we must create
-+ that of the current frame to make it the live one. */
-+ if (TARGET_FLAT)
-+ for (i = 16; i < 32; i++)
-+ if (save_local_or_in_reg_p (i, leaf_function))
-+ {
-+ save_local_in_regs_p = true;
-+ break;
-+ }
-+
-+ /* Calculate space needed for FP registers. */
-+ for (i = 32; i < (TARGET_V9 ? 96 : 64); i += 2)
-+ if (save_global_or_fp_reg_p (i, 0) || save_global_or_fp_reg_p (i + 1, 0))
-+ n_global_fp_regs += 2;
-+
-+ if (size == 0
-+ && n_global_fp_regs == 0
-+ && args_size == 0
-+ && !save_local_in_regs_p)
-+ frame_size = apparent_frame_size = 0;
-+ else
-+ {
-+ /* Start from the apparent frame size. */
-+ apparent_frame_size = ROUND_UP (size, 8) + n_global_fp_regs * 4;
-+
-+ /* We need to add the size of the outgoing argument area. */
-+ frame_size = apparent_frame_size + ROUND_UP (args_size, 8);
-+
-+ /* And that of the register window save area. */
-+ frame_size += FIRST_PARM_OFFSET (cfun->decl);
-+
-+ /* Finally, bump to the appropriate alignment. */
-+ frame_size = SPARC_STACK_ALIGN (frame_size);
-+ }
-+
-+ /* Set up values for use in prologue and epilogue. */
-+ sparc_frame_size = frame_size;
-+ sparc_apparent_frame_size = apparent_frame_size;
-+ sparc_n_global_fp_regs = n_global_fp_regs;
-+ sparc_save_local_in_regs_p = save_local_in_regs_p;
-+
-+ return frame_size;
-+}
-+
-+/* Implement the macro INITIAL_ELIMINATION_OFFSET, return the OFFSET. */
-+
-+int
-+sparc_initial_elimination_offset (int to)
-+{
-+ int offset;
-+
-+ if (to == STACK_POINTER_REGNUM)
-+ offset = sparc_compute_frame_size (get_frame_size (), crtl->is_leaf);
-+ else
-+ offset = 0;
-+
-+ offset += SPARC_STACK_BIAS;
-+ return offset;
-+}
-+
-+/* Output any necessary .register pseudo-ops. */
-+
-+void
-+sparc_output_scratch_registers (FILE *file ATTRIBUTE_UNUSED)
-+{
-+ int i;
-+
-+ if (TARGET_ARCH32)
-+ return;
-+
-+ /* Check if %g[2367] were used without
-+ .register being printed for them already. */
-+ for (i = 2; i < 8; i++)
-+ {
-+ if (df_regs_ever_live_p (i)
-+ && ! sparc_hard_reg_printed [i])
-+ {
-+ sparc_hard_reg_printed [i] = 1;
-+ /* %g7 is used as TLS base register, use #ignore
-+ for it instead of #scratch. */
-+ fprintf (file, "\t.register\t%%g%d, #%s\n", i,
-+ i == 7 ? "ignore" : "scratch");
-+ }
-+ if (i == 3) i = 5;
-+ }
-+}
-+
-+#define PROBE_INTERVAL (1 << STACK_CHECK_PROBE_INTERVAL_EXP)
-+
-+#if PROBE_INTERVAL > 4096
-+#error Cannot use indexed addressing mode for stack probing
-+#endif
-+
-+/* Emit code to probe a range of stack addresses from FIRST to FIRST+SIZE,
-+ inclusive. These are offsets from the current stack pointer.
-+
-+ Note that we don't use the REG+REG addressing mode for the probes because
-+ of the stack bias in 64-bit mode. And it doesn't really buy us anything
-+ so the advantages of having a single code win here. */
-+
-+static void
-+sparc_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
-+{
-+ rtx g1 = gen_rtx_REG (Pmode, 1);
-+
-+ /* See if we have a constant small number of probes to generate. If so,
-+ that's the easy case. */
-+ if (size <= PROBE_INTERVAL)
-+ {
-+ emit_move_insn (g1, GEN_INT (first));
-+ emit_insn (gen_rtx_SET (g1,
-+ gen_rtx_MINUS (Pmode, stack_pointer_rtx, g1)));
-+ emit_stack_probe (plus_constant (Pmode, g1, -size));
-+ }
-+
-+ /* The run-time loop is made up of 9 insns in the generic case while the
-+ compile-time loop is made up of 4+2*(n-2) insns for n # of intervals. */
-+ else if (size <= 4 * PROBE_INTERVAL)
-+ {
-+ HOST_WIDE_INT i;
-+
-+ emit_move_insn (g1, GEN_INT (first + PROBE_INTERVAL));
-+ emit_insn (gen_rtx_SET (g1,
-+ gen_rtx_MINUS (Pmode, stack_pointer_rtx, g1)));
-+ emit_stack_probe (g1);
-+
-+ /* Probe at FIRST + N * PROBE_INTERVAL for values of N from 2 until
-+ it exceeds SIZE. If only two probes are needed, this will not
-+ generate any code. Then probe at FIRST + SIZE. */
-+ for (i = 2 * PROBE_INTERVAL; i < size; i += PROBE_INTERVAL)
-+ {
-+ emit_insn (gen_rtx_SET (g1,
-+ plus_constant (Pmode, g1, -PROBE_INTERVAL)));
-+ emit_stack_probe (g1);
-+ }
-+
-+ emit_stack_probe (plus_constant (Pmode, g1,
-+ (i - PROBE_INTERVAL) - size));
-+ }
-+
-+ /* Otherwise, do the same as above, but in a loop. Note that we must be
-+ extra careful with variables wrapping around because we might be at
-+ the very top (or the very bottom) of the address space and we have
-+ to be able to handle this case properly; in particular, we use an
-+ equality test for the loop condition. */
-+ else
-+ {
-+ HOST_WIDE_INT rounded_size;
-+ rtx g4 = gen_rtx_REG (Pmode, 4);
-+
-+ emit_move_insn (g1, GEN_INT (first));
-+
-+
-+ /* Step 1: round SIZE to the previous multiple of the interval. */
-+
-+ rounded_size = ROUND_DOWN (size, PROBE_INTERVAL);
-+ emit_move_insn (g4, GEN_INT (rounded_size));
-+
-+
-+ /* Step 2: compute initial and final value of the loop counter. */
-+
-+ /* TEST_ADDR = SP + FIRST. */
-+ emit_insn (gen_rtx_SET (g1,
-+ gen_rtx_MINUS (Pmode, stack_pointer_rtx, g1)));
-+
-+ /* LAST_ADDR = SP + FIRST + ROUNDED_SIZE. */
-+ emit_insn (gen_rtx_SET (g4, gen_rtx_MINUS (Pmode, g1, g4)));
-+
-+
-+ /* Step 3: the loop
-+
-+ while (TEST_ADDR != LAST_ADDR)
-+ {
-+ TEST_ADDR = TEST_ADDR + PROBE_INTERVAL
-+ probe at TEST_ADDR
-+ }
-+
-+ probes at FIRST + N * PROBE_INTERVAL for values of N from 1
-+ until it is equal to ROUNDED_SIZE. */
-+
-+ if (TARGET_ARCH64)
-+ emit_insn (gen_probe_stack_rangedi (g1, g1, g4));
-+ else
-+ emit_insn (gen_probe_stack_rangesi (g1, g1, g4));
-+
-+
-+ /* Step 4: probe at FIRST + SIZE if we cannot assert at compile-time
-+ that SIZE is equal to ROUNDED_SIZE. */
-+
-+ if (size != rounded_size)
-+ emit_stack_probe (plus_constant (Pmode, g4, rounded_size - size));
-+ }
-+
-+ /* Make sure nothing is scheduled before we are done. */
-+ emit_insn (gen_blockage ());
-+}
-+
-+/* Probe a range of stack addresses from REG1 to REG2 inclusive. These are
-+ absolute addresses. */
-+
-+const char *
-+output_probe_stack_range (rtx reg1, rtx reg2)
-+{
-+ static int labelno = 0;
-+ char loop_lab[32];
-+ rtx xops[2];
-+
-+ ASM_GENERATE_INTERNAL_LABEL (loop_lab, "LPSRL", labelno++);
-+
-+ /* Loop. */
-+ ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, loop_lab);
-+
-+ /* TEST_ADDR = TEST_ADDR + PROBE_INTERVAL. */
-+ xops[0] = reg1;
-+ xops[1] = GEN_INT (-PROBE_INTERVAL);
-+ output_asm_insn ("add\t%0, %1, %0", xops);
-+
-+ /* Test if TEST_ADDR == LAST_ADDR. */
-+ xops[1] = reg2;
-+ output_asm_insn ("cmp\t%0, %1", xops);
-+
-+ /* Probe at TEST_ADDR and branch. */
-+ if (TARGET_ARCH64)
-+ fputs ("\tbne,pt\t%xcc,", asm_out_file);
-+ else
-+ fputs ("\tbne\t", asm_out_file);
-+ assemble_name_raw (asm_out_file, loop_lab);
-+ fputc ('\n', asm_out_file);
-+ xops[1] = GEN_INT (SPARC_STACK_BIAS);
-+ output_asm_insn (" st\t%%g0, [%0+%1]", xops);
-+
-+ return "";
-+}
-+
-+/* Emit code to save/restore registers from LOW to HIGH at BASE+OFFSET as
-+ needed. LOW is supposed to be double-word aligned for 32-bit registers.
-+ SAVE_P decides whether a register must be saved/restored. ACTION_TRUE
-+ is the action to be performed if SAVE_P returns true and ACTION_FALSE
-+ the action to be performed if it returns false. Return the new offset. */
-+
-+typedef bool (*sorr_pred_t) (unsigned int, int);
-+typedef enum { SORR_NONE, SORR_ADVANCE, SORR_SAVE, SORR_RESTORE } sorr_act_t;
-+
-+static int
-+emit_save_or_restore_regs (unsigned int low, unsigned int high, rtx base,
-+ int offset, int leaf_function, sorr_pred_t save_p,
-+ sorr_act_t action_true, sorr_act_t action_false)
-+{
-+ unsigned int i;
-+ rtx mem;
-+ rtx_insn *insn;
-+
-+ if (TARGET_ARCH64 && high <= 32)
-+ {
-+ int fp_offset = -1;
-+
-+ for (i = low; i < high; i++)
-+ {
-+ if (save_p (i, leaf_function))
-+ {
-+ mem = gen_frame_mem (DImode, plus_constant (Pmode,
-+ base, offset));
-+ if (action_true == SORR_SAVE)
-+ {
-+ insn = emit_move_insn (mem, gen_rtx_REG (DImode, i));
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+ }
-+ else /* action_true == SORR_RESTORE */
-+ {
-+ /* The frame pointer must be restored last since its old
-+ value may be used as base address for the frame. This
-+ is problematic in 64-bit mode only because of the lack
-+ of double-word load instruction. */
-+ if (i == HARD_FRAME_POINTER_REGNUM)
-+ fp_offset = offset;
-+ else
-+ emit_move_insn (gen_rtx_REG (DImode, i), mem);
-+ }
-+ offset += 8;
-+ }
-+ else if (action_false == SORR_ADVANCE)
-+ offset += 8;
-+ }
-+
-+ if (fp_offset >= 0)
-+ {
-+ mem = gen_frame_mem (DImode, plus_constant (Pmode, base, fp_offset));
-+ emit_move_insn (hard_frame_pointer_rtx, mem);
-+ }
-+ }
-+ else
-+ {
-+ for (i = low; i < high; i += 2)
-+ {
-+ bool reg0 = save_p (i, leaf_function);
-+ bool reg1 = save_p (i + 1, leaf_function);
-+ machine_mode mode;
-+ int regno;
-+
-+ if (reg0 && reg1)
-+ {
-+ mode = SPARC_INT_REG_P (i) ? E_DImode : E_DFmode;
-+ regno = i;
-+ }
-+ else if (reg0)
-+ {
-+ mode = SPARC_INT_REG_P (i) ? E_SImode : E_SFmode;
-+ regno = i;
-+ }
-+ else if (reg1)
-+ {
-+ mode = SPARC_INT_REG_P (i) ? E_SImode : E_SFmode;
-+ regno = i + 1;
-+ offset += 4;
-+ }
-+ else
-+ {
-+ if (action_false == SORR_ADVANCE)
-+ offset += 8;
-+ continue;
-+ }
-+
-+ mem = gen_frame_mem (mode, plus_constant (Pmode, base, offset));
-+ if (action_true == SORR_SAVE)
-+ {
-+ insn = emit_move_insn (mem, gen_rtx_REG (mode, regno));
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+ if (mode == DImode)
-+ {
-+ rtx set1, set2;
-+ mem = gen_frame_mem (SImode, plus_constant (Pmode, base,
-+ offset));
-+ set1 = gen_rtx_SET (mem, gen_rtx_REG (SImode, regno));
-+ RTX_FRAME_RELATED_P (set1) = 1;
-+ mem
-+ = gen_frame_mem (SImode, plus_constant (Pmode, base,
-+ offset + 4));
-+ set2 = gen_rtx_SET (mem, gen_rtx_REG (SImode, regno + 1));
-+ RTX_FRAME_RELATED_P (set2) = 1;
-+ add_reg_note (insn, REG_FRAME_RELATED_EXPR,
-+ gen_rtx_PARALLEL (VOIDmode,
-+ gen_rtvec (2, set1, set2)));
-+ }
-+ }
-+ else /* action_true == SORR_RESTORE */
-+ emit_move_insn (gen_rtx_REG (mode, regno), mem);
-+
-+ /* Bump and round down to double word
-+ in case we already bumped by 4. */
-+ offset = ROUND_DOWN (offset + 8, 8);
-+ }
-+ }
-+
-+ return offset;
-+}
-+
-+/* Emit code to adjust BASE to OFFSET. Return the new base. */
-+
-+static rtx
-+emit_adjust_base_to_offset (rtx base, int offset)
-+{
-+ /* ??? This might be optimized a little as %g1 might already have a
-+ value close enough that a single add insn will do. */
-+ /* ??? Although, all of this is probably only a temporary fix because
-+ if %g1 can hold a function result, then sparc_expand_epilogue will
-+ lose (the result will be clobbered). */
-+ rtx new_base = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (new_base, GEN_INT (offset));
-+ emit_insn (gen_rtx_SET (new_base, gen_rtx_PLUS (Pmode, base, new_base)));
-+ return new_base;
-+}
-+
-+/* Emit code to save/restore call-saved global and FP registers. */
-+
-+static void
-+emit_save_or_restore_global_fp_regs (rtx base, int offset, sorr_act_t action)
-+{
-+ if (offset < -4096 || offset + sparc_n_global_fp_regs * 4 > 4095)
-+ {
-+ base = emit_adjust_base_to_offset (base, offset);
-+ offset = 0;
-+ }
-+
-+ offset
-+ = emit_save_or_restore_regs (0, 8, base, offset, 0,
-+ save_global_or_fp_reg_p, action, SORR_NONE);
-+ emit_save_or_restore_regs (32, TARGET_V9 ? 96 : 64, base, offset, 0,
-+ save_global_or_fp_reg_p, action, SORR_NONE);
-+}
-+
-+/* Emit code to save/restore call-saved local and in registers. */
-+
-+static void
-+emit_save_or_restore_local_in_regs (rtx base, int offset, sorr_act_t action)
-+{
-+ if (offset < -4096 || offset + 16 * UNITS_PER_WORD > 4095)
-+ {
-+ base = emit_adjust_base_to_offset (base, offset);
-+ offset = 0;
-+ }
-+
-+ emit_save_or_restore_regs (16, 32, base, offset, sparc_leaf_function_p,
-+ save_local_or_in_reg_p, action, SORR_ADVANCE);
-+}
-+
-+/* Emit a window_save insn. */
-+
-+static rtx_insn *
-+emit_window_save (rtx increment)
-+{
-+ rtx_insn *insn = emit_insn (gen_window_save (increment));
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+
-+ /* The incoming return address (%o7) is saved in %i7. */
-+ add_reg_note (insn, REG_CFA_REGISTER,
-+ gen_rtx_SET (gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM),
-+ gen_rtx_REG (Pmode,
-+ INCOMING_RETURN_ADDR_REGNUM)));
-+
-+ /* The window save event. */
-+ add_reg_note (insn, REG_CFA_WINDOW_SAVE, const0_rtx);
-+
-+ /* The CFA is %fp, the hard frame pointer. */
-+ add_reg_note (insn, REG_CFA_DEF_CFA,
-+ plus_constant (Pmode, hard_frame_pointer_rtx,
-+ INCOMING_FRAME_SP_OFFSET));
-+
-+ return insn;
-+}
-+
-+/* Generate an increment for the stack pointer. */
-+
-+static rtx
-+gen_stack_pointer_inc (rtx increment)
-+{
-+ return gen_rtx_SET (stack_pointer_rtx,
-+ gen_rtx_PLUS (Pmode,
-+ stack_pointer_rtx,
-+ increment));
-+}
-+
-+/* Expand the function prologue. The prologue is responsible for reserving
-+ storage for the frame, saving the call-saved registers and loading the
-+ GOT register if needed. */
-+
-+void
-+sparc_expand_prologue (void)
-+{
-+ HOST_WIDE_INT size;
-+ rtx_insn *insn;
-+
-+ /* Compute a snapshot of crtl->uses_only_leaf_regs. Relying
-+ on the final value of the flag means deferring the prologue/epilogue
-+ expansion until just before the second scheduling pass, which is too
-+ late to emit multiple epilogues or return insns.
-+
-+ Of course we are making the assumption that the value of the flag
-+ will not change between now and its final value. Of the three parts
-+ of the formula, only the last one can reasonably vary. Let's take a
-+ closer look, after assuming that the first two ones are set to true
-+ (otherwise the last value is effectively silenced).
-+
-+ If only_leaf_regs_used returns false, the global predicate will also
-+ be false so the actual frame size calculated below will be positive.
-+ As a consequence, the save_register_window insn will be emitted in
-+ the instruction stream; now this insn explicitly references %fp
-+ which is not a leaf register so only_leaf_regs_used will always
-+ return false subsequently.
-+
-+ If only_leaf_regs_used returns true, we hope that the subsequent
-+ optimization passes won't cause non-leaf registers to pop up. For
-+ example, the regrename pass has special provisions to not rename to
-+ non-leaf registers in a leaf function. */
-+ sparc_leaf_function_p
-+ = optimize > 0 && crtl->is_leaf && only_leaf_regs_used ();
-+
-+ size = sparc_compute_frame_size (get_frame_size(), sparc_leaf_function_p);
-+
-+ if (flag_stack_usage_info)
-+ current_function_static_stack_size = size;
-+
-+ if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
-+ || flag_stack_clash_protection)
-+ {
-+ if (crtl->is_leaf && !cfun->calls_alloca)
-+ {
-+ if (size > PROBE_INTERVAL && size > get_stack_check_protect ())
-+ sparc_emit_probe_stack_range (get_stack_check_protect (),
-+ size - get_stack_check_protect ());
-+ }
-+ else if (size > 0)
-+ sparc_emit_probe_stack_range (get_stack_check_protect (), size);
-+ }
-+
-+ if (size == 0)
-+ ; /* do nothing. */
-+ else if (sparc_leaf_function_p)
-+ {
-+ rtx size_int_rtx = GEN_INT (-size);
-+
-+ if (size <= 4096)
-+ insn = emit_insn (gen_stack_pointer_inc (size_int_rtx));
-+ else if (size <= 8192)
-+ {
-+ insn = emit_insn (gen_stack_pointer_inc (GEN_INT (-4096)));
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+
-+ /* %sp is still the CFA register. */
-+ insn = emit_insn (gen_stack_pointer_inc (GEN_INT (4096 - size)));
-+ }
-+ else
-+ {
-+ rtx size_rtx = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (size_rtx, size_int_rtx);
-+ insn = emit_insn (gen_stack_pointer_inc (size_rtx));
-+ add_reg_note (insn, REG_FRAME_RELATED_EXPR,
-+ gen_stack_pointer_inc (size_int_rtx));
-+ }
-+
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+ }
-+ else
-+ {
-+ rtx size_int_rtx = GEN_INT (-size);
-+
-+ if (size <= 4096)
-+ emit_window_save (size_int_rtx);
-+ else if (size <= 8192)
-+ {
-+ emit_window_save (GEN_INT (-4096));
-+
-+ /* %sp is not the CFA register anymore. */
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (4096 - size)));
-+
-+ /* Make sure no %fp-based store is issued until after the frame is
-+ established. The offset between the frame pointer and the stack
-+ pointer is calculated relative to the value of the stack pointer
-+ at the end of the function prologue, and moving instructions that
-+ access the stack via the frame pointer between the instructions
-+ that decrement the stack pointer could result in accessing the
-+ register window save area, which is volatile. */
-+ emit_insn (gen_frame_blockage ());
-+ }
-+ else
-+ {
-+ rtx size_rtx = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (size_rtx, size_int_rtx);
-+ emit_window_save (size_rtx);
-+ }
-+ }
-+
-+ if (sparc_leaf_function_p)
-+ {
-+ sparc_frame_base_reg = stack_pointer_rtx;
-+ sparc_frame_base_offset = size + SPARC_STACK_BIAS;
-+ }
-+ else
-+ {
-+ sparc_frame_base_reg = hard_frame_pointer_rtx;
-+ sparc_frame_base_offset = SPARC_STACK_BIAS;
-+ }
-+
-+ if (sparc_n_global_fp_regs > 0)
-+ emit_save_or_restore_global_fp_regs (sparc_frame_base_reg,
-+ sparc_frame_base_offset
-+ - sparc_apparent_frame_size,
-+ SORR_SAVE);
-+
-+ /* Advertise that the data calculated just above are now valid. */
-+ sparc_prologue_data_valid_p = true;
-+}
-+
-+/* Expand the function prologue. The prologue is responsible for reserving
-+ storage for the frame, saving the call-saved registers and loading the
-+ GOT register if needed. */
-+
-+void
-+sparc_flat_expand_prologue (void)
-+{
-+ HOST_WIDE_INT size;
-+ rtx_insn *insn;
-+
-+ sparc_leaf_function_p = optimize > 0 && crtl->is_leaf;
-+
-+ size = sparc_compute_frame_size (get_frame_size(), sparc_leaf_function_p);
-+
-+ if (flag_stack_usage_info)
-+ current_function_static_stack_size = size;
-+
-+ if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
-+ || flag_stack_clash_protection)
-+ {
-+ if (crtl->is_leaf && !cfun->calls_alloca)
-+ {
-+ if (size > PROBE_INTERVAL && size > get_stack_check_protect ())
-+ sparc_emit_probe_stack_range (get_stack_check_protect (),
-+ size - get_stack_check_protect ());
-+ }
-+ else if (size > 0)
-+ sparc_emit_probe_stack_range (get_stack_check_protect (), size);
-+ }
-+
-+ if (sparc_save_local_in_regs_p)
-+ emit_save_or_restore_local_in_regs (stack_pointer_rtx, SPARC_STACK_BIAS,
-+ SORR_SAVE);
-+
-+ if (size == 0)
-+ ; /* do nothing. */
-+ else
-+ {
-+ rtx size_int_rtx, size_rtx;
-+
-+ size_rtx = size_int_rtx = GEN_INT (-size);
-+
-+ /* We establish the frame (i.e. decrement the stack pointer) first, even
-+ if we use a frame pointer, because we cannot clobber any call-saved
-+ registers, including the frame pointer, if we haven't created a new
-+ register save area, for the sake of compatibility with the ABI. */
-+ if (size <= 4096)
-+ insn = emit_insn (gen_stack_pointer_inc (size_int_rtx));
-+ else if (size <= 8192 && !frame_pointer_needed)
-+ {
-+ insn = emit_insn (gen_stack_pointer_inc (GEN_INT (-4096)));
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+ insn = emit_insn (gen_stack_pointer_inc (GEN_INT (4096 - size)));
-+ }
-+ else
-+ {
-+ size_rtx = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (size_rtx, size_int_rtx);
-+ insn = emit_insn (gen_stack_pointer_inc (size_rtx));
-+ add_reg_note (insn, REG_CFA_ADJUST_CFA,
-+ gen_stack_pointer_inc (size_int_rtx));
-+ }
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+
-+ /* Ensure nothing is scheduled until after the frame is established. */
-+ emit_insn (gen_blockage ());
-+
-+ if (frame_pointer_needed)
-+ {
-+ insn = emit_insn (gen_rtx_SET (hard_frame_pointer_rtx,
-+ gen_rtx_MINUS (Pmode,
-+ stack_pointer_rtx,
-+ size_rtx)));
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+
-+ add_reg_note (insn, REG_CFA_ADJUST_CFA,
-+ gen_rtx_SET (hard_frame_pointer_rtx,
-+ plus_constant (Pmode, stack_pointer_rtx,
-+ size)));
-+ }
-+
-+ if (return_addr_reg_needed_p (sparc_leaf_function_p))
-+ {
-+ rtx o7 = gen_rtx_REG (Pmode, INCOMING_RETURN_ADDR_REGNUM);
-+ rtx i7 = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM);
-+
-+ insn = emit_move_insn (i7, o7);
-+ RTX_FRAME_RELATED_P (insn) = 1;
-+
-+ add_reg_note (insn, REG_CFA_REGISTER, gen_rtx_SET (i7, o7));
-+
-+ /* Prevent this instruction from ever being considered dead,
-+ even if this function has no epilogue. */
-+ emit_use (i7);
-+ }
-+ }
-+
-+ if (frame_pointer_needed)
-+ {
-+ sparc_frame_base_reg = hard_frame_pointer_rtx;
-+ sparc_frame_base_offset = SPARC_STACK_BIAS;
-+ }
-+ else
-+ {
-+ sparc_frame_base_reg = stack_pointer_rtx;
-+ sparc_frame_base_offset = size + SPARC_STACK_BIAS;
-+ }
-+
-+ if (sparc_n_global_fp_regs > 0)
-+ emit_save_or_restore_global_fp_regs (sparc_frame_base_reg,
-+ sparc_frame_base_offset
-+ - sparc_apparent_frame_size,
-+ SORR_SAVE);
-+
-+ /* Advertise that the data calculated just above are now valid. */
-+ sparc_prologue_data_valid_p = true;
-+}
-+
-+/* This function generates the assembly code for function entry, which boils
-+ down to emitting the necessary .register directives. */
-+
-+static void
-+sparc_asm_function_prologue (FILE *file)
-+{
-+ /* Check that the assumption we made in sparc_expand_prologue is valid. */
-+ if (!TARGET_FLAT)
-+ gcc_assert (sparc_leaf_function_p == crtl->uses_only_leaf_regs);
-+
-+ sparc_output_scratch_registers (file);
-+}
-+
-+/* Expand the function epilogue, either normal or part of a sibcall.
-+ We emit all the instructions except the return or the call. */
-+
-+void
-+sparc_expand_epilogue (bool for_eh)
-+{
-+ HOST_WIDE_INT size = sparc_frame_size;
-+
-+ if (cfun->calls_alloca)
-+ emit_insn (gen_frame_blockage ());
-+
-+ if (sparc_n_global_fp_regs > 0)
-+ emit_save_or_restore_global_fp_regs (sparc_frame_base_reg,
-+ sparc_frame_base_offset
-+ - sparc_apparent_frame_size,
-+ SORR_RESTORE);
-+
-+ if (size == 0 || for_eh)
-+ ; /* do nothing. */
-+ else if (sparc_leaf_function_p)
-+ {
-+ if (size <= 4096)
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (size)));
-+ else if (size <= 8192)
-+ {
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (4096)));
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (size - 4096)));
-+ }
-+ else
-+ {
-+ rtx reg = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (reg, GEN_INT (size));
-+ emit_insn (gen_stack_pointer_inc (reg));
-+ }
-+ }
-+}
-+
-+/* Expand the function epilogue, either normal or part of a sibcall.
-+ We emit all the instructions except the return or the call. */
-+
-+void
-+sparc_flat_expand_epilogue (bool for_eh)
-+{
-+ HOST_WIDE_INT size = sparc_frame_size;
-+
-+ if (sparc_n_global_fp_regs > 0)
-+ emit_save_or_restore_global_fp_regs (sparc_frame_base_reg,
-+ sparc_frame_base_offset
-+ - sparc_apparent_frame_size,
-+ SORR_RESTORE);
-+
-+ /* If we have a frame pointer, we'll need both to restore it before the
-+ frame is destroyed and use its current value in destroying the frame.
-+ Since we don't have an atomic way to do that in the flat window model,
-+ we save the current value into a temporary register (%g1). */
-+ if (frame_pointer_needed && !for_eh)
-+ emit_move_insn (gen_rtx_REG (Pmode, 1), hard_frame_pointer_rtx);
-+
-+ if (return_addr_reg_needed_p (sparc_leaf_function_p))
-+ emit_move_insn (gen_rtx_REG (Pmode, INCOMING_RETURN_ADDR_REGNUM),
-+ gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM));
-+
-+ if (sparc_save_local_in_regs_p)
-+ emit_save_or_restore_local_in_regs (sparc_frame_base_reg,
-+ sparc_frame_base_offset,
-+ SORR_RESTORE);
-+
-+ if (size == 0 || for_eh)
-+ ; /* do nothing. */
-+ else if (frame_pointer_needed)
-+ {
-+ /* Make sure the frame is destroyed after everything else is done. */
-+ emit_insn (gen_blockage ());
-+
-+ emit_move_insn (stack_pointer_rtx, gen_rtx_REG (Pmode, 1));
-+ }
-+ else
-+ {
-+ /* Likewise. */
-+ emit_insn (gen_blockage ());
-+
-+ if (size <= 4096)
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (size)));
-+ else if (size <= 8192)
-+ {
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (4096)));
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (size - 4096)));
-+ }
-+ else
-+ {
-+ rtx reg = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (reg, GEN_INT (size));
-+ emit_insn (gen_stack_pointer_inc (reg));
-+ }
-+ }
-+}
-+
-+/* Return true if it is appropriate to emit `return' instructions in the
-+ body of a function. */
-+
-+bool
-+sparc_can_use_return_insn_p (void)
-+{
-+ return sparc_prologue_data_valid_p
-+ && sparc_n_global_fp_regs == 0
-+ && TARGET_FLAT
-+ ? (sparc_frame_size == 0 && !sparc_save_local_in_regs_p)
-+ : (sparc_frame_size == 0 || !sparc_leaf_function_p);
-+}
-+
-+/* This function generates the assembly code for function exit. */
-+
-+static void
-+sparc_asm_function_epilogue (FILE *file)
-+{
-+ /* If the last two instructions of a function are "call foo; dslot;"
-+ the return address might point to the first instruction in the next
-+ function and we have to output a dummy nop for the sake of sane
-+ backtraces in such cases. This is pointless for sibling calls since
-+ the return address is explicitly adjusted. */
-+
-+ rtx_insn *insn = get_last_insn ();
-+
-+ rtx last_real_insn = prev_real_insn (insn);
-+ if (last_real_insn
-+ && NONJUMP_INSN_P (last_real_insn)
-+ && GET_CODE (PATTERN (last_real_insn)) == SEQUENCE)
-+ last_real_insn = XVECEXP (PATTERN (last_real_insn), 0, 0);
-+
-+ if (last_real_insn
-+ && CALL_P (last_real_insn)
-+ && !SIBLING_CALL_P (last_real_insn))
-+ fputs("\tnop\n", file);
-+
-+ sparc_output_deferred_case_vectors ();
-+}
-+
-+/* Output a 'restore' instruction. */
-+
-+static void
-+output_restore (rtx pat)
-+{
-+ rtx operands[3];
-+
-+ if (! pat)
-+ {
-+ fputs ("\t restore\n", asm_out_file);
-+ return;
-+ }
-+
-+ gcc_assert (GET_CODE (pat) == SET);
-+
-+ operands[0] = SET_DEST (pat);
-+ pat = SET_SRC (pat);
-+
-+ switch (GET_CODE (pat))
-+ {
-+ case PLUS:
-+ operands[1] = XEXP (pat, 0);
-+ operands[2] = XEXP (pat, 1);
-+ output_asm_insn (" restore %r1, %2, %Y0", operands);
-+ break;
-+ case LO_SUM:
-+ operands[1] = XEXP (pat, 0);
-+ operands[2] = XEXP (pat, 1);
-+ output_asm_insn (" restore %r1, %%lo(%a2), %Y0", operands);
-+ break;
-+ case ASHIFT:
-+ operands[1] = XEXP (pat, 0);
-+ gcc_assert (XEXP (pat, 1) == const1_rtx);
-+ output_asm_insn (" restore %r1, %r1, %Y0", operands);
-+ break;
-+ default:
-+ operands[1] = pat;
-+ output_asm_insn (" restore %%g0, %1, %Y0", operands);
-+ break;
-+ }
-+}
-+
-+/* Output a return. */
-+
-+const char *
-+output_return (rtx_insn *insn)
-+{
-+ if (crtl->calls_eh_return)
-+ {
-+ /* If the function uses __builtin_eh_return, the eh_return
-+ machinery occupies the delay slot. */
-+ gcc_assert (!final_sequence);
-+
-+ if (flag_delayed_branch)
-+ {
-+ if (!TARGET_FLAT && TARGET_V9)
-+ fputs ("\treturn\t%i7+8\n", asm_out_file);
-+ else
-+ {
-+ if (!TARGET_FLAT)
-+ fputs ("\trestore\n", asm_out_file);
-+
-+ fputs ("\tjmp\t%o7+8\n", asm_out_file);
-+ }
-+
-+ fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file);
-+ }
-+ else
-+ {
-+ if (!TARGET_FLAT)
-+ fputs ("\trestore\n", asm_out_file);
-+
-+ fputs ("\tadd\t%sp, %g1, %sp\n", asm_out_file);
-+ fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file);
-+ }
-+ }
-+ else if (sparc_leaf_function_p || TARGET_FLAT)
-+ {
-+ /* This is a leaf or flat function so we don't have to bother restoring
-+ the register window, which frees us from dealing with the convoluted
-+ semantics of restore/return. We simply output the jump to the
-+ return address and the insn in the delay slot (if any). */
-+
-+ return "jmp\t%%o7+%)%#";
-+ }
-+ else
-+ {
-+ /* This is a regular function so we have to restore the register window.
-+ We may have a pending insn for the delay slot, which will be either
-+ combined with the 'restore' instruction or put in the delay slot of
-+ the 'return' instruction. */
-+
-+ if (final_sequence)
-+ {
-+ rtx_insn *delay;
-+ rtx pat;
-+
-+ delay = NEXT_INSN (insn);
-+ gcc_assert (delay);
-+
-+ pat = PATTERN (delay);
-+
-+ if (TARGET_V9 && ! epilogue_renumber (&pat, 1))
-+ {
-+ epilogue_renumber (&pat, 0);
-+ return "return\t%%i7+%)%#";
-+ }
-+ else
-+ {
-+ output_asm_insn ("jmp\t%%i7+%)", NULL);
-+
-+ /* We're going to output the insn in the delay slot manually.
-+ Make sure to output its source location first. */
-+ PATTERN (delay) = gen_blockage ();
-+ INSN_CODE (delay) = -1;
-+ final_scan_insn (delay, asm_out_file, optimize, 0, NULL);
-+ INSN_LOCATION (delay) = UNKNOWN_LOCATION;
-+
-+ output_restore (pat);
-+ }
-+ }
-+ else
-+ {
-+ /* The delay slot is empty. */
-+ if (TARGET_V9)
-+ return "return\t%%i7+%)\n\t nop";
-+ else if (flag_delayed_branch)
-+ return "jmp\t%%i7+%)\n\t restore";
-+ else
-+ return "restore\n\tjmp\t%%o7+%)\n\t nop";
-+ }
-+ }
-+
-+ return "";
-+}
-+
-+/* Output a sibling call. */
-+
-+const char *
-+output_sibcall (rtx_insn *insn, rtx call_operand)
-+{
-+ rtx operands[1];
-+
-+ gcc_assert (flag_delayed_branch);
-+
-+ operands[0] = call_operand;
-+
-+ if (sparc_leaf_function_p || TARGET_FLAT)
-+ {
-+ /* This is a leaf or flat function so we don't have to bother restoring
-+ the register window. We simply output the jump to the function and
-+ the insn in the delay slot (if any). */
-+
-+ gcc_assert (!(LEAF_SIBCALL_SLOT_RESERVED_P && final_sequence));
-+
-+ if (final_sequence)
-+ output_asm_insn ("sethi\t%%hi(%a0), %%g1\n\tjmp\t%%g1 + %%lo(%a0)%#",
-+ operands);
-+ else
-+ /* Use or with rs2 %%g0 instead of mov, so that as/ld can optimize
-+ it into branch if possible. */
-+ output_asm_insn ("or\t%%o7, %%g0, %%g1\n\tcall\t%a0, 0\n\t or\t%%g1, %%g0, %%o7",
-+ operands);
-+ }
-+ else
-+ {
-+ /* This is a regular function so we have to restore the register window.
-+ We may have a pending insn for the delay slot, which will be combined
-+ with the 'restore' instruction. */
-+
-+ output_asm_insn ("call\t%a0, 0", operands);
-+
-+ if (final_sequence)
-+ {
-+ rtx_insn *delay;
-+ rtx pat;
-+
-+ delay = NEXT_INSN (insn);
-+ gcc_assert (delay);
-+
-+ pat = PATTERN (delay);
-+
-+ /* We're going to output the insn in the delay slot manually.
-+ Make sure to output its source location first. */
-+ PATTERN (delay) = gen_blockage ();
-+ INSN_CODE (delay) = -1;
-+ final_scan_insn (delay, asm_out_file, optimize, 0, NULL);
-+ INSN_LOCATION (delay) = UNKNOWN_LOCATION;
-+
-+ output_restore (pat);
-+ }
-+ else
-+ output_restore (NULL_RTX);
-+ }
-+
-+ return "";
-+}
-+
-+/* Functions for handling argument passing.
-+
-+ For 32-bit, the first 6 args are normally in registers and the rest are
-+ pushed. Any arg that starts within the first 6 words is at least
-+ partially passed in a register unless its data type forbids.
-+
-+ For 64-bit, the argument registers are laid out as an array of 16 elements
-+ and arguments are added sequentially. The first 6 int args and up to the
-+ first 16 fp args (depending on size) are passed in regs.
-+
-+ Slot Stack Integral Float Float in structure Double Long Double
-+ ---- ----- -------- ----- ------------------ ------ -----------
-+ 15 [SP+248] %f31 %f30,%f31 %d30
-+ 14 [SP+240] %f29 %f28,%f29 %d28 %q28
-+ 13 [SP+232] %f27 %f26,%f27 %d26
-+ 12 [SP+224] %f25 %f24,%f25 %d24 %q24
-+ 11 [SP+216] %f23 %f22,%f23 %d22
-+ 10 [SP+208] %f21 %f20,%f21 %d20 %q20
-+ 9 [SP+200] %f19 %f18,%f19 %d18
-+ 8 [SP+192] %f17 %f16,%f17 %d16 %q16
-+ 7 [SP+184] %f15 %f14,%f15 %d14
-+ 6 [SP+176] %f13 %f12,%f13 %d12 %q12
-+ 5 [SP+168] %o5 %f11 %f10,%f11 %d10
-+ 4 [SP+160] %o4 %f9 %f8,%f9 %d8 %q8
-+ 3 [SP+152] %o3 %f7 %f6,%f7 %d6
-+ 2 [SP+144] %o2 %f5 %f4,%f5 %d4 %q4
-+ 1 [SP+136] %o1 %f3 %f2,%f3 %d2
-+ 0 [SP+128] %o0 %f1 %f0,%f1 %d0 %q0
-+
-+ Here SP = %sp if -mno-stack-bias or %sp+stack_bias otherwise.
-+
-+ Integral arguments are always passed as 64-bit quantities appropriately
-+ extended.
-+
-+ Passing of floating point values is handled as follows.
-+ If a prototype is in scope:
-+ If the value is in a named argument (i.e. not a stdarg function or a
-+ value not part of the `...') then the value is passed in the appropriate
-+ fp reg.
-+ If the value is part of the `...' and is passed in one of the first 6
-+ slots then the value is passed in the appropriate int reg.
-+ If the value is part of the `...' and is not passed in one of the first 6
-+ slots then the value is passed in memory.
-+ If a prototype is not in scope:
-+ If the value is one of the first 6 arguments the value is passed in the
-+ appropriate integer reg and the appropriate fp reg.
-+ If the value is not one of the first 6 arguments the value is passed in
-+ the appropriate fp reg and in memory.
-+
-+
-+ Summary of the calling conventions implemented by GCC on the SPARC:
-+
-+ 32-bit ABI:
-+ size argument return value
-+
-+ small integer <4 int. reg. int. reg.
-+ word 4 int. reg. int. reg.
-+ double word 8 int. reg. int. reg.
-+
-+ _Complex small integer <8 int. reg. int. reg.
-+ _Complex word 8 int. reg. int. reg.
-+ _Complex double word 16 memory int. reg.
-+
-+ vector integer <=8 int. reg. FP reg.
-+ vector integer >8 memory memory
-+
-+ float 4 int. reg. FP reg.
-+ double 8 int. reg. FP reg.
-+ long double 16 memory memory
-+
-+ _Complex float 8 memory FP reg.
-+ _Complex double 16 memory FP reg.
-+ _Complex long double 32 memory FP reg.
-+
-+ vector float any memory memory
-+
-+ aggregate any memory memory
-+
-+
-+
-+ 64-bit ABI:
-+ size argument return value
-+
-+ small integer <8 int. reg. int. reg.
-+ word 8 int. reg. int. reg.
-+ double word 16 int. reg. int. reg.
-+
-+ _Complex small integer <16 int. reg. int. reg.
-+ _Complex word 16 int. reg. int. reg.
-+ _Complex double word 32 memory int. reg.
-+
-+ vector integer <=16 FP reg. FP reg.
-+ vector integer 16<s<=32 memory FP reg.
-+ vector integer >32 memory memory
-+
-+ float 4 FP reg. FP reg.
-+ double 8 FP reg. FP reg.
-+ long double 16 FP reg. FP reg.
-+
-+ _Complex float 8 FP reg. FP reg.
-+ _Complex double 16 FP reg. FP reg.
-+ _Complex long double 32 memory FP reg.
-+
-+ vector float <=16 FP reg. FP reg.
-+ vector float 16<s<=32 memory FP reg.
-+ vector float >32 memory memory
-+
-+ aggregate <=16 reg. reg.
-+ aggregate 16<s<=32 memory reg.
-+ aggregate >32 memory memory
-+
-+
-+
-+Note #1: complex floating-point types follow the extended SPARC ABIs as
-+implemented by the Sun compiler.
-+
-+Note #2: integer vector types follow the scalar floating-point types
-+conventions to match what is implemented by the Sun VIS SDK.
-+
-+Note #3: floating-point vector types follow the aggregate types
-+conventions. */
-+
-+
-+/* Maximum number of int regs for args. */
-+#define SPARC_INT_ARG_MAX 6
-+/* Maximum number of fp regs for args. */
-+#define SPARC_FP_ARG_MAX 16
-+/* Number of words (partially) occupied for a given size in units. */
-+#define CEIL_NWORDS(SIZE) CEIL((SIZE), UNITS_PER_WORD)
-+
-+/* Handle the INIT_CUMULATIVE_ARGS macro.
-+ Initialize a variable CUM of type CUMULATIVE_ARGS
-+ for a call to a function whose data type is FNTYPE.
-+ For a library call, FNTYPE is 0. */
-+
-+void
-+init_cumulative_args (struct sparc_args *cum, tree fntype, rtx, tree)
-+{
-+ cum->words = 0;
-+ cum->prototype_p = fntype && prototype_p (fntype);
-+ cum->libcall_p = !fntype;
-+}
-+
-+/* Handle promotion of pointer and integer arguments. */
-+
-+static machine_mode
-+sparc_promote_function_mode (const_tree type, machine_mode mode,
-+ int *punsignedp, const_tree, int)
-+{
-+ if (type && POINTER_TYPE_P (type))
-+ {
-+ *punsignedp = POINTERS_EXTEND_UNSIGNED;
-+ return Pmode;
-+ }
-+
-+ /* Integral arguments are passed as full words, as per the ABI. */
-+ if (GET_MODE_CLASS (mode) == MODE_INT
-+ && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
-+ return word_mode;
-+
-+ return mode;
-+}
-+
-+/* Handle the TARGET_STRICT_ARGUMENT_NAMING target hook. */
-+
-+static bool
-+sparc_strict_argument_naming (cumulative_args_t ca ATTRIBUTE_UNUSED)
-+{
-+ return TARGET_ARCH64 ? true : false;
-+}
-+
-+/* Handle the TARGET_PASS_BY_REFERENCE target hook.
-+ Specify whether to pass the argument by reference. */
-+
-+static bool
-+sparc_pass_by_reference (cumulative_args_t, const function_arg_info &arg)
-+{
-+ tree type = arg.type;
-+ machine_mode mode = arg.mode;
-+ if (TARGET_ARCH32)
-+ /* Original SPARC 32-bit ABI says that structures and unions,
-+ and quad-precision floats are passed by reference.
-+ All other base types are passed in registers.
-+
-+ Extended ABI (as implemented by the Sun compiler) says that all
-+ complex floats are passed by reference. Pass complex integers
-+ in registers up to 8 bytes. More generally, enforce the 2-word
-+ cap for passing arguments in registers.
-+
-+ Vector ABI (as implemented by the Sun VIS SDK) says that integer
-+ vectors are passed like floats of the same size, that is in
-+ registers up to 8 bytes. Pass all vector floats by reference
-+ like structure and unions. */
-+ return ((type && (AGGREGATE_TYPE_P (type) || VECTOR_FLOAT_TYPE_P (type)))
-+ || mode == SCmode
-+ /* Catch CDImode, TFmode, DCmode and TCmode. */
-+ || GET_MODE_SIZE (mode) > 8
-+ || (type
-+ && VECTOR_TYPE_P (type)
-+ && (unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 8));
-+ else
-+ /* Original SPARC 64-bit ABI says that structures and unions
-+ smaller than 16 bytes are passed in registers, as well as
-+ all other base types.
-+
-+ Extended ABI (as implemented by the Sun compiler) says that
-+ complex floats are passed in registers up to 16 bytes. Pass
-+ all complex integers in registers up to 16 bytes. More generally,
-+ enforce the 2-word cap for passing arguments in registers.
-+
-+ Vector ABI (as implemented by the Sun VIS SDK) says that integer
-+ vectors are passed like floats of the same size, that is in
-+ registers (up to 16 bytes). Pass all vector floats like structure
-+ and unions. */
-+ return ((type
-+ && (AGGREGATE_TYPE_P (type) || VECTOR_TYPE_P (type))
-+ && (unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 16)
-+ /* Catch CTImode and TCmode. */
-+ || GET_MODE_SIZE (mode) > 16);
-+}
-+
-+/* Traverse the record TYPE recursively and call FUNC on its fields.
-+ NAMED is true if this is for a named parameter. DATA is passed
-+ to FUNC for each field. OFFSET is the starting position and
-+ PACKED is true if we are inside a packed record. */
-+
-+template <typename T, void Func (const_tree, int, bool, T*)>
-+static void
-+traverse_record_type (const_tree type, bool named, T *data,
-+ int offset = 0, bool packed = false)
-+{
-+ /* The ABI obviously doesn't specify how packed structures are passed.
-+ These are passed in integer regs if possible, otherwise memory. */
-+ if (!packed)
-+ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
-+ if (TREE_CODE (field) == FIELD_DECL && DECL_PACKED (field))
-+ {
-+ packed = true;
-+ break;
-+ }
-+
-+ /* Walk the real fields, but skip those with no size or a zero size.
-+ ??? Fields with variable offset are handled as having zero offset. */
-+ for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
-+ if (TREE_CODE (field) == FIELD_DECL)
-+ {
-+ if (!DECL_SIZE (field) || integer_zerop (DECL_SIZE (field)))
-+ continue;
-+
-+ int bitpos = offset;
-+ if (TREE_CODE (DECL_FIELD_OFFSET (field)) == INTEGER_CST)
-+ bitpos += int_bit_position (field);
-+
-+ tree field_type = TREE_TYPE (field);
-+ if (TREE_CODE (field_type) == RECORD_TYPE)
-+ traverse_record_type<T, Func> (field_type, named, data, bitpos,
-+ packed);
-+ else
-+ {
-+ const bool fp_type
-+ = FLOAT_TYPE_P (field_type) || VECTOR_TYPE_P (field_type);
-+ Func (field, bitpos, fp_type && named && !packed && TARGET_FPU,
-+ data);
-+ }
-+ }
-+}
-+
-+/* Handle recursive register classifying for structure layout. */
-+
-+typedef struct
-+{
-+ bool fp_regs; /* true if field eligible to FP registers. */
-+ bool fp_regs_in_first_word; /* true if such field in first word. */
-+} classify_data_t;
-+
-+/* A subroutine of function_arg_slotno. Classify the field. */
-+
-+inline void
-+classify_registers (const_tree, int bitpos, bool fp, classify_data_t *data)
-+{
-+ if (fp)
-+ {
-+ data->fp_regs = true;
-+ if (bitpos < BITS_PER_WORD)
-+ data->fp_regs_in_first_word = true;
-+ }
-+}
-+
-+/* Compute the slot number to pass an argument in.
-+ Return the slot number or -1 if passing on the stack.
-+
-+ CUM is a variable of type CUMULATIVE_ARGS which gives info about
-+ the preceding args and about the function being called.
-+ MODE is the argument's machine mode.
-+ TYPE is the data type of the argument (as a tree).
-+ This is null for libcalls where that information may
-+ not be available.
-+ NAMED is nonzero if this argument is a named parameter
-+ (otherwise it is an extra parameter matching an ellipsis).
-+ INCOMING is zero for FUNCTION_ARG, nonzero for FUNCTION_INCOMING_ARG.
-+ *PREGNO records the register number to use if scalar type.
-+ *PPADDING records the amount of padding needed in words. */
-+
-+static int
-+function_arg_slotno (const struct sparc_args *cum, machine_mode mode,
-+ const_tree type, bool named, bool incoming,
-+ int *pregno, int *ppadding)
-+{
-+ const int regbase
-+ = incoming ? SPARC_INCOMING_INT_ARG_FIRST : SPARC_OUTGOING_INT_ARG_FIRST;
-+ int slotno = cum->words, regno;
-+ enum mode_class mclass = GET_MODE_CLASS (mode);
-+
-+ /* Silence warnings in the callers. */
-+ *pregno = -1;
-+ *ppadding = -1;
-+
-+ if (type && TREE_ADDRESSABLE (type))
-+ return -1;
-+
-+ /* In 64-bit mode, objects requiring 16-byte alignment get it. */
-+ if (TARGET_ARCH64
-+ && (type ? TYPE_ALIGN (type) : GET_MODE_ALIGNMENT (mode)) >= 128
-+ && (slotno & 1) != 0)
-+ {
-+ slotno++;
-+ *ppadding = 1;
-+ }
-+ else
-+ *ppadding = 0;
-+
-+ /* Vector types deserve special treatment because they are polymorphic wrt
-+ their mode, depending upon whether VIS instructions are enabled. */
-+ if (type && VECTOR_TYPE_P (type))
-+ {
-+ if (TREE_CODE (TREE_TYPE (type)) == REAL_TYPE)
-+ {
-+ /* The SPARC port defines no floating-point vector modes. */
-+ gcc_assert (mode == BLKmode);
-+ }
-+ else
-+ {
-+ /* Integer vector types should either have a vector
-+ mode or an integral mode, because we are guaranteed
-+ by pass_by_reference that their size is not greater
-+ than 16 bytes and TImode is 16-byte wide. */
-+ gcc_assert (mode != BLKmode);
-+
-+ /* Integer vectors are handled like floats as per
-+ the Sun VIS SDK. */
-+ mclass = MODE_FLOAT;
-+ }
-+ }
-+
-+ switch (mclass)
-+ {
-+ case MODE_FLOAT:
-+ case MODE_COMPLEX_FLOAT:
-+ case MODE_VECTOR_INT:
-+ if (TARGET_ARCH64 && TARGET_FPU && named)
-+ {
-+ /* If all arg slots are filled, then must pass on stack. */
-+ if (slotno >= SPARC_FP_ARG_MAX)
-+ return -1;
-+
-+ regno = SPARC_FP_ARG_FIRST + slotno * 2;
-+ /* Arguments filling only one single FP register are
-+ right-justified in the outer double FP register. */
-+ if (GET_MODE_SIZE (mode) <= 4)
-+ regno++;
-+ break;
-+ }
-+ /* fallthrough */
-+
-+ case MODE_INT:
-+ case MODE_COMPLEX_INT:
-+ /* If all arg slots are filled, then must pass on stack. */
-+ if (slotno >= SPARC_INT_ARG_MAX)
-+ return -1;
-+
-+ regno = regbase + slotno;
-+ break;
-+
-+ case MODE_RANDOM:
-+ /* MODE is VOIDmode when generating the actual call. */
-+ if (mode == VOIDmode)
-+ return -1;
-+
-+ if (TARGET_64BIT && TARGET_FPU && named
-+ && type
-+ && (TREE_CODE (type) == RECORD_TYPE || VECTOR_TYPE_P (type)))
-+ {
-+ /* If all arg slots are filled, then must pass on stack. */
-+ if (slotno >= SPARC_FP_ARG_MAX)
-+ return -1;
-+
-+ if (TREE_CODE (type) == RECORD_TYPE)
-+ {
-+ classify_data_t data = { false, false };
-+ traverse_record_type<classify_data_t, classify_registers>
-+ (type, named, &data);
-+
-+ if (data.fp_regs)
-+ {
-+ /* If all FP slots are filled except for the last one and
-+ there is no FP field in the first word, then must pass
-+ on stack. */
-+ if (slotno >= SPARC_FP_ARG_MAX - 1
-+ && !data.fp_regs_in_first_word)
-+ return -1;
-+ }
-+ else
-+ {
-+ /* If all int slots are filled, then must pass on stack. */
-+ if (slotno >= SPARC_INT_ARG_MAX)
-+ return -1;
-+ }
-+
-+ /* PREGNO isn't set since both int and FP regs can be used. */
-+ return slotno;
-+ }
-+
-+ regno = SPARC_FP_ARG_FIRST + slotno * 2;
-+ }
-+ else
-+ {
-+ /* If all arg slots are filled, then must pass on stack. */
-+ if (slotno >= SPARC_INT_ARG_MAX)
-+ return -1;
-+
-+ regno = regbase + slotno;
-+ }
-+ break;
-+
-+ default :
-+ gcc_unreachable ();
-+ }
-+
-+ *pregno = regno;
-+ return slotno;
-+}
-+
-+/* Handle recursive register counting/assigning for structure layout. */
-+
-+typedef struct
-+{
-+ int slotno; /* slot number of the argument. */
-+ int regbase; /* regno of the base register. */
-+ int intoffset; /* offset of the first pending integer field. */
-+ int nregs; /* number of words passed in registers. */
-+ bool stack; /* true if part of the argument is on the stack. */
-+ rtx ret; /* return expression being built. */
-+} assign_data_t;
-+
-+/* A subroutine of function_arg_record_value. Compute the number of integer
-+ registers to be assigned between PARMS->intoffset and BITPOS. Return
-+ true if at least one integer register is assigned or false otherwise. */
-+
-+static bool
-+compute_int_layout (int bitpos, assign_data_t *data, int *pnregs)
-+{
-+ if (data->intoffset < 0)
-+ return false;
-+
-+ const int intoffset = data->intoffset;
-+ data->intoffset = -1;
-+
-+ const int this_slotno = data->slotno + intoffset / BITS_PER_WORD;
-+ const unsigned int startbit = ROUND_DOWN (intoffset, BITS_PER_WORD);
-+ const unsigned int endbit = ROUND_UP (bitpos, BITS_PER_WORD);
-+ int nregs = (endbit - startbit) / BITS_PER_WORD;
-+
-+ if (nregs > 0 && nregs > SPARC_INT_ARG_MAX - this_slotno)
-+ {
-+ nregs = SPARC_INT_ARG_MAX - this_slotno;
-+
-+ /* We need to pass this field (partly) on the stack. */
-+ data->stack = 1;
-+ }
-+
-+ if (nregs <= 0)
-+ return false;
-+
-+ *pnregs = nregs;
-+ return true;
-+}
-+
-+/* A subroutine of function_arg_record_value. Compute the number and the mode
-+ of the FP registers to be assigned for FIELD. Return true if at least one
-+ FP register is assigned or false otherwise. */
-+
-+static bool
-+compute_fp_layout (const_tree field, int bitpos, assign_data_t *data,
-+ int *pnregs, machine_mode *pmode)
-+{
-+ const int this_slotno = data->slotno + bitpos / BITS_PER_WORD;
-+ machine_mode mode = DECL_MODE (field);
-+ int nregs, nslots;
-+
-+ /* Slots are counted as words while regs are counted as having the size of
-+ the (inner) mode. */
-+ if (VECTOR_TYPE_P (TREE_TYPE (field)) && mode == BLKmode)
-+ {
-+ mode = TYPE_MODE (TREE_TYPE (TREE_TYPE (field)));
-+ nregs = TYPE_VECTOR_SUBPARTS (TREE_TYPE (field));
-+ }
-+ else if (TREE_CODE (TREE_TYPE (field)) == COMPLEX_TYPE)
-+ {
-+ mode = TYPE_MODE (TREE_TYPE (TREE_TYPE (field)));
-+ nregs = 2;
-+ }
-+ else
-+ nregs = 1;
-+
-+ nslots = CEIL_NWORDS (nregs * GET_MODE_SIZE (mode));
-+
-+ if (nslots > SPARC_FP_ARG_MAX - this_slotno)
-+ {
-+ nslots = SPARC_FP_ARG_MAX - this_slotno;
-+ nregs = (nslots * UNITS_PER_WORD) / GET_MODE_SIZE (mode);
-+
-+ /* We need to pass this field (partly) on the stack. */
-+ data->stack = 1;
-+
-+ if (nregs <= 0)
-+ return false;
-+ }
-+
-+ *pnregs = nregs;
-+ *pmode = mode;
-+ return true;
-+}
-+
-+/* A subroutine of function_arg_record_value. Count the number of registers
-+ to be assigned for FIELD and between PARMS->intoffset and BITPOS. */
-+
-+inline void
-+count_registers (const_tree field, int bitpos, bool fp, assign_data_t *data)
-+{
-+ if (fp)
-+ {
-+ int nregs;
-+ machine_mode mode;
-+
-+ if (compute_int_layout (bitpos, data, &nregs))
-+ data->nregs += nregs;
-+
-+ if (compute_fp_layout (field, bitpos, data, &nregs, &mode))
-+ data->nregs += nregs;
-+ }
-+ else
-+ {
-+ if (data->intoffset < 0)
-+ data->intoffset = bitpos;
-+ }
-+}
-+
-+/* A subroutine of function_arg_record_value. Assign the bits of the
-+ structure between PARMS->intoffset and BITPOS to integer registers. */
-+
-+static void
-+assign_int_registers (int bitpos, assign_data_t *data)
-+{
-+ int intoffset = data->intoffset;
-+ machine_mode mode;
-+ int nregs;
-+
-+ if (!compute_int_layout (bitpos, data, &nregs))
-+ return;
-+
-+ /* If this is the trailing part of a word, only load that much into
-+ the register. Otherwise load the whole register. Note that in
-+ the latter case we may pick up unwanted bits. It's not a problem
-+ at the moment but may wish to revisit. */
-+ if (intoffset % BITS_PER_WORD != 0)
-+ mode = smallest_int_mode_for_size (BITS_PER_WORD
-+ - intoffset % BITS_PER_WORD);
-+ else
-+ mode = word_mode;
-+
-+ const int this_slotno = data->slotno + intoffset / BITS_PER_WORD;
-+ unsigned int regno = data->regbase + this_slotno;
-+ intoffset /= BITS_PER_UNIT;
-+
-+ do
-+ {
-+ rtx reg = gen_rtx_REG (mode, regno);
-+ XVECEXP (data->ret, 0, data->stack + data->nregs)
-+ = gen_rtx_EXPR_LIST (VOIDmode, reg, GEN_INT (intoffset));
-+ data->nregs += 1;
-+ mode = word_mode;
-+ regno += 1;
-+ intoffset = (intoffset | (UNITS_PER_WORD - 1)) + 1;
-+ }
-+ while (--nregs > 0);
-+}
-+
-+/* A subroutine of function_arg_record_value. Assign FIELD at position
-+ BITPOS to FP registers. */
-+
-+static void
-+assign_fp_registers (const_tree field, int bitpos, assign_data_t *data)
-+{
-+ int nregs;
-+ machine_mode mode;
-+
-+ if (!compute_fp_layout (field, bitpos, data, &nregs, &mode))
-+ return;
-+
-+ const int this_slotno = data->slotno + bitpos / BITS_PER_WORD;
-+ int regno = SPARC_FP_ARG_FIRST + this_slotno * 2;
-+ if (GET_MODE_SIZE (mode) <= 4 && (bitpos & 32) != 0)
-+ regno++;
-+ int pos = bitpos / BITS_PER_UNIT;
-+
-+ do
-+ {
-+ rtx reg = gen_rtx_REG (mode, regno);
-+ XVECEXP (data->ret, 0, data->stack + data->nregs)
-+ = gen_rtx_EXPR_LIST (VOIDmode, reg, GEN_INT (pos));
-+ data->nregs += 1;
-+ regno += GET_MODE_SIZE (mode) / 4;
-+ pos += GET_MODE_SIZE (mode);
-+ }
-+ while (--nregs > 0);
-+}
-+
-+/* A subroutine of function_arg_record_value. Assign FIELD and the bits of
-+ the structure between PARMS->intoffset and BITPOS to registers. */
-+
-+inline void
-+assign_registers (const_tree field, int bitpos, bool fp, assign_data_t *data)
-+{
-+ if (fp)
-+ {
-+ assign_int_registers (bitpos, data);
-+
-+ assign_fp_registers (field, bitpos, data);
-+ }
-+ else
-+ {
-+ if (data->intoffset < 0)
-+ data->intoffset = bitpos;
-+ }
-+}
-+
-+/* Used by function_arg and function_value to implement the complex
-+ conventions of the 64-bit ABI for passing and returning structures.
-+ Return an expression valid as a return value for the FUNCTION_ARG
-+ and TARGET_FUNCTION_VALUE.
-+
-+ TYPE is the data type of the argument (as a tree).
-+ This is null for libcalls where that information may
-+ not be available.
-+ MODE is the argument's machine mode.
-+ SLOTNO is the index number of the argument's slot in the parameter array.
-+ NAMED is true if this argument is a named parameter
-+ (otherwise it is an extra parameter matching an ellipsis).
-+ REGBASE is the regno of the base register for the parameter array. */
-+
-+static rtx
-+function_arg_record_value (const_tree type, machine_mode mode,
-+ int slotno, bool named, int regbase)
-+{
-+ const int size = int_size_in_bytes (type);
-+ assign_data_t data;
-+ int nregs;
-+
-+ data.slotno = slotno;
-+ data.regbase = regbase;
-+
-+ /* Count how many registers we need. */
-+ data.nregs = 0;
-+ data.intoffset = 0;
-+ data.stack = false;
-+ traverse_record_type<assign_data_t, count_registers> (type, named, &data);
-+
-+ /* Take into account pending integer fields. */
-+ if (compute_int_layout (size * BITS_PER_UNIT, &data, &nregs))
-+ data.nregs += nregs;
-+
-+ /* Allocate the vector and handle some annoying special cases. */
-+ nregs = data.nregs;
-+
-+ if (nregs == 0)
-+ {
-+ /* ??? Empty structure has no value? Duh? */
-+ if (size <= 0)
-+ {
-+ /* Though there's nothing really to store, return a word register
-+ anyway so the rest of gcc doesn't go nuts. Returning a PARALLEL
-+ leads to breakage due to the fact that there are zero bytes to
-+ load. */
-+ return gen_rtx_REG (mode, regbase);
-+ }
-+
-+ /* ??? C++ has structures with no fields, and yet a size. Give up
-+ for now and pass everything back in integer registers. */
-+ nregs = CEIL_NWORDS (size);
-+ if (nregs + slotno > SPARC_INT_ARG_MAX)
-+ nregs = SPARC_INT_ARG_MAX - slotno;
-+ }
-+
-+ gcc_assert (nregs > 0);
-+
-+ data.ret = gen_rtx_PARALLEL (mode, rtvec_alloc (data.stack + nregs));
-+
-+ /* If at least one field must be passed on the stack, generate
-+ (parallel [(expr_list (nil) ...) ...]) so that all fields will
-+ also be passed on the stack. We can't do much better because the
-+ semantics of TARGET_ARG_PARTIAL_BYTES doesn't handle the case
-+ of structures for which the fields passed exclusively in registers
-+ are not at the beginning of the structure. */
-+ if (data.stack)
-+ XVECEXP (data.ret, 0, 0)
-+ = gen_rtx_EXPR_LIST (VOIDmode, NULL_RTX, const0_rtx);
-+
-+ /* Assign the registers. */
-+ data.nregs = 0;
-+ data.intoffset = 0;
-+ traverse_record_type<assign_data_t, assign_registers> (type, named, &data);
-+
-+ /* Assign pending integer fields. */
-+ assign_int_registers (size * BITS_PER_UNIT, &data);
-+
-+ gcc_assert (data.nregs == nregs);
-+
-+ return data.ret;
-+}
-+
-+/* Used by function_arg and function_value to implement the conventions
-+ of the 64-bit ABI for passing and returning unions.
-+ Return an expression valid as a return value for the FUNCTION_ARG
-+ and TARGET_FUNCTION_VALUE.
-+
-+ SIZE is the size in bytes of the union.
-+ MODE is the argument's machine mode.
-+ SLOTNO is the index number of the argument's slot in the parameter array.
-+ REGNO is the hard register the union will be passed in. */
-+
-+static rtx
-+function_arg_union_value (int size, machine_mode mode, int slotno, int regno)
-+{
-+ unsigned int nwords;
-+
-+ /* See comment in function_arg_record_value for empty structures. */
-+ if (size <= 0)
-+ return gen_rtx_REG (mode, regno);
-+
-+ if (slotno == SPARC_INT_ARG_MAX - 1)
-+ nwords = 1;
-+ else
-+ nwords = CEIL_NWORDS (size);
-+
-+ rtx regs = gen_rtx_PARALLEL (mode, rtvec_alloc (nwords));
-+
-+ /* Unions are passed left-justified. */
-+ for (unsigned int i = 0; i < nwords; i++)
-+ XVECEXP (regs, 0, i)
-+ = gen_rtx_EXPR_LIST (VOIDmode,
-+ gen_rtx_REG (word_mode, regno + i),
-+ GEN_INT (UNITS_PER_WORD * i));
-+
-+ return regs;
-+}
-+
-+/* Used by function_arg and function_value to implement the conventions
-+ of the 64-bit ABI for passing and returning BLKmode vectors.
-+ Return an expression valid as a return value for the FUNCTION_ARG
-+ and TARGET_FUNCTION_VALUE.
-+
-+ SIZE is the size in bytes of the vector.
-+ SLOTNO is the index number of the argument's slot in the parameter array.
-+ NAMED is true if this argument is a named parameter
-+ (otherwise it is an extra parameter matching an ellipsis).
-+ REGNO is the hard register the vector will be passed in. */
-+
-+static rtx
-+function_arg_vector_value (int size, int slotno, bool named, int regno)
-+{
-+ const int mult = (named ? 2 : 1);
-+ unsigned int nwords;
-+
-+ if (slotno == (named ? SPARC_FP_ARG_MAX : SPARC_INT_ARG_MAX) - 1)
-+ nwords = 1;
-+ else
-+ nwords = CEIL_NWORDS (size);
-+
-+ rtx regs = gen_rtx_PARALLEL (BLKmode, rtvec_alloc (nwords));
-+
-+ if (size < UNITS_PER_WORD)
-+ XVECEXP (regs, 0, 0)
-+ = gen_rtx_EXPR_LIST (VOIDmode,
-+ gen_rtx_REG (SImode, regno),
-+ const0_rtx);
-+ else
-+ for (unsigned int i = 0; i < nwords; i++)
-+ XVECEXP (regs, 0, i)
-+ = gen_rtx_EXPR_LIST (VOIDmode,
-+ gen_rtx_REG (word_mode, regno + i * mult),
-+ GEN_INT (i * UNITS_PER_WORD));
-+
-+ return regs;
-+}
-+
-+/* Determine where to put an argument to a function.
-+ Value is zero to push the argument on the stack,
-+ or a hard register in which to store the argument.
-+
-+ CUM is a variable of type CUMULATIVE_ARGS which gives info about
-+ the preceding args and about the function being called.
-+ ARG is a description of the argument.
-+ INCOMING_P is false for TARGET_FUNCTION_ARG, true for
-+ TARGET_FUNCTION_INCOMING_ARG. */
-+
-+static rtx
-+sparc_function_arg_1 (cumulative_args_t cum_v, const function_arg_info &arg,
-+ bool incoming)
-+{
-+ const CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
-+ const int regbase
-+ = incoming ? SPARC_INCOMING_INT_ARG_FIRST : SPARC_OUTGOING_INT_ARG_FIRST;
-+ int slotno, regno, padding;
-+ tree type = arg.type;
-+ machine_mode mode = arg.mode;
-+ enum mode_class mclass = GET_MODE_CLASS (mode);
-+ bool named = arg.named;
-+
-+ slotno
-+ = function_arg_slotno (cum, mode, type, named, incoming, &regno, &padding);
-+ if (slotno == -1)
-+ return 0;
-+
-+ /* Integer vectors are handled like floats as per the Sun VIS SDK. */
-+ if (type && VECTOR_INTEGER_TYPE_P (type))
-+ mclass = MODE_FLOAT;
-+
-+ if (TARGET_ARCH32)
-+ return gen_rtx_REG (mode, regno);
-+
-+ /* Structures up to 16 bytes in size are passed in arg slots on the stack
-+ and are promoted to registers if possible. */
-+ if (type && TREE_CODE (type) == RECORD_TYPE)
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 16);
-+
-+ return function_arg_record_value (type, mode, slotno, named, regbase);
-+ }
-+
-+ /* Unions up to 16 bytes in size are passed in integer registers. */
-+ else if (type && TREE_CODE (type) == UNION_TYPE)
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 16);
-+
-+ return function_arg_union_value (size, mode, slotno, regno);
-+ }
-+
-+ /* Floating-point vectors up to 16 bytes are passed in registers. */
-+ else if (type && VECTOR_TYPE_P (type) && mode == BLKmode)
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 16);
-+
-+ return function_arg_vector_value (size, slotno, named, regno);
-+ }
-+
-+ /* v9 fp args in reg slots beyond the int reg slots get passed in regs
-+ but also have the slot allocated for them.
-+ If no prototype is in scope fp values in register slots get passed
-+ in two places, either fp regs and int regs or fp regs and memory. */
-+ else if ((mclass == MODE_FLOAT || mclass == MODE_COMPLEX_FLOAT)
-+ && SPARC_FP_REG_P (regno))
-+ {
-+ rtx reg = gen_rtx_REG (mode, regno);
-+ if (cum->prototype_p || cum->libcall_p)
-+ return reg;
-+ else
-+ {
-+ rtx v0, v1;
-+
-+ if ((regno - SPARC_FP_ARG_FIRST) < SPARC_INT_ARG_MAX * 2)
-+ {
-+ int intreg;
-+
-+ /* On incoming, we don't need to know that the value
-+ is passed in %f0 and %i0, and it confuses other parts
-+ causing needless spillage even on the simplest cases. */
-+ if (incoming)
-+ return reg;
-+
-+ intreg = (SPARC_OUTGOING_INT_ARG_FIRST
-+ + (regno - SPARC_FP_ARG_FIRST) / 2);
-+
-+ v0 = gen_rtx_EXPR_LIST (VOIDmode, reg, const0_rtx);
-+ v1 = gen_rtx_EXPR_LIST (VOIDmode, gen_rtx_REG (mode, intreg),
-+ const0_rtx);
-+ return gen_rtx_PARALLEL (mode, gen_rtvec (2, v0, v1));
-+ }
-+ else
-+ {
-+ v0 = gen_rtx_EXPR_LIST (VOIDmode, NULL_RTX, const0_rtx);
-+ v1 = gen_rtx_EXPR_LIST (VOIDmode, reg, const0_rtx);
-+ return gen_rtx_PARALLEL (mode, gen_rtvec (2, v0, v1));
-+ }
-+ }
-+ }
-+
-+ /* All other aggregate types are passed in an integer register in a mode
-+ corresponding to the size of the type. */
-+ else if (type && AGGREGATE_TYPE_P (type))
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 16);
-+
-+ mode = int_mode_for_size (size * BITS_PER_UNIT, 0).else_blk ();
-+ }
-+
-+ return gen_rtx_REG (mode, regno);
-+}
-+
-+/* Handle the TARGET_FUNCTION_ARG target hook. */
-+
-+static rtx
-+sparc_function_arg (cumulative_args_t cum, const function_arg_info &arg)
-+{
-+ return sparc_function_arg_1 (cum, arg, false);
-+}
-+
-+/* Handle the TARGET_FUNCTION_INCOMING_ARG target hook. */
-+
-+static rtx
-+sparc_function_incoming_arg (cumulative_args_t cum,
-+ const function_arg_info &arg)
-+{
-+ return sparc_function_arg_1 (cum, arg, true);
-+}
-+
-+/* For sparc64, objects requiring 16 byte alignment are passed that way. */
-+
-+static unsigned int
-+sparc_function_arg_boundary (machine_mode mode, const_tree type)
-+{
-+ return ((TARGET_ARCH64
-+ && (GET_MODE_ALIGNMENT (mode) == 128
-+ || (type && TYPE_ALIGN (type) == 128)))
-+ ? 128
-+ : PARM_BOUNDARY);
-+}
-+
-+/* For an arg passed partly in registers and partly in memory,
-+ this is the number of bytes of registers used.
-+ For args passed entirely in registers or entirely in memory, zero.
-+
-+ Any arg that starts in the first 6 regs but won't entirely fit in them
-+ needs partial registers on v8. On v9, structures with integer
-+ values in arg slots 5,6 will be passed in %o5 and SP+176, and complex fp
-+ values that begin in the last fp reg [where "last fp reg" varies with the
-+ mode] will be split between that reg and memory. */
-+
-+static int
-+sparc_arg_partial_bytes (cumulative_args_t cum, const function_arg_info &arg)
-+{
-+ int slotno, regno, padding;
-+
-+ /* We pass false for incoming here, it doesn't matter. */
-+ slotno = function_arg_slotno (get_cumulative_args (cum), arg.mode, arg.type,
-+ arg.named, false, &regno, &padding);
-+
-+ if (slotno == -1)
-+ return 0;
-+
-+ if (TARGET_ARCH32)
-+ {
-+ /* We are guaranteed by pass_by_reference that the size of the
-+ argument is not greater than 8 bytes, so we only need to return
-+ one word if the argument is partially passed in registers. */
-+ const int size = GET_MODE_SIZE (arg.mode);
-+
-+ if (size > UNITS_PER_WORD && slotno == SPARC_INT_ARG_MAX - 1)
-+ return UNITS_PER_WORD;
-+ }
-+ else
-+ {
-+ /* We are guaranteed by pass_by_reference that the size of the
-+ argument is not greater than 16 bytes, so we only need to return
-+ one word if the argument is partially passed in registers. */
-+ if (arg.aggregate_type_p ())
-+ {
-+ const int size = int_size_in_bytes (arg.type);
-+
-+ if (size > UNITS_PER_WORD
-+ && (slotno == SPARC_INT_ARG_MAX - 1
-+ || slotno == SPARC_FP_ARG_MAX - 1))
-+ return UNITS_PER_WORD;
-+ }
-+ else if (GET_MODE_CLASS (arg.mode) == MODE_COMPLEX_INT
-+ || ((GET_MODE_CLASS (arg.mode) == MODE_COMPLEX_FLOAT
-+ || (arg.type && VECTOR_TYPE_P (arg.type)))
-+ && !(TARGET_FPU && arg.named)))
-+ {
-+ const int size = (arg.type && VECTOR_FLOAT_TYPE_P (arg.type))
-+ ? int_size_in_bytes (arg.type)
-+ : GET_MODE_SIZE (arg.mode);
-+
-+ if (size > UNITS_PER_WORD && slotno == SPARC_INT_ARG_MAX - 1)
-+ return UNITS_PER_WORD;
-+ }
-+ else if (GET_MODE_CLASS (arg.mode) == MODE_COMPLEX_FLOAT
-+ || (arg.type && VECTOR_TYPE_P (arg.type)))
-+ {
-+ const int size = (arg.type && VECTOR_FLOAT_TYPE_P (arg.type))
-+ ? int_size_in_bytes (arg.type)
-+ : GET_MODE_SIZE (arg.mode);
-+
-+ if (size > UNITS_PER_WORD && slotno == SPARC_FP_ARG_MAX - 1)
-+ return UNITS_PER_WORD;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+/* Handle the TARGET_FUNCTION_ARG_ADVANCE hook.
-+ Update the data in CUM to advance over argument ARG. */
-+
-+static void
-+sparc_function_arg_advance (cumulative_args_t cum_v,
-+ const function_arg_info &arg)
-+{
-+ CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
-+ tree type = arg.type;
-+ machine_mode mode = arg.mode;
-+ int regno, padding;
-+
-+ /* We pass false for incoming here, it doesn't matter. */
-+ function_arg_slotno (cum, mode, type, arg.named, false, &regno, &padding);
-+
-+ /* If argument requires leading padding, add it. */
-+ cum->words += padding;
-+
-+ if (TARGET_ARCH32)
-+ cum->words += CEIL_NWORDS (GET_MODE_SIZE (mode));
-+ else
-+ {
-+ /* For types that can have BLKmode, get the size from the type. */
-+ if (type && (AGGREGATE_TYPE_P (type) || VECTOR_FLOAT_TYPE_P (type)))
-+ {
-+ const int size = int_size_in_bytes (type);
-+
-+ /* See comment in function_arg_record_value for empty structures. */
-+ if (size <= 0)
-+ cum->words++;
-+ else
-+ cum->words += CEIL_NWORDS (size);
-+ }
-+ else
-+ cum->words += CEIL_NWORDS (GET_MODE_SIZE (mode));
-+ }
-+}
-+
-+/* Implement TARGET_FUNCTION_ARG_PADDING. For the 64-bit ABI structs
-+ are always stored left shifted in their argument slot. */
-+
-+static pad_direction
-+sparc_function_arg_padding (machine_mode mode, const_tree type)
-+{
-+ if (TARGET_ARCH64 && type && AGGREGATE_TYPE_P (type))
-+ return PAD_UPWARD;
-+
-+ /* Fall back to the default. */
-+ return default_function_arg_padding (mode, type);
-+}
-+
-+/* Handle the TARGET_RETURN_IN_MEMORY target hook.
-+ Specify whether to return the return value in memory. */
-+
-+static bool
-+sparc_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
-+{
-+ if (TARGET_ARCH32)
-+ /* Original SPARC 32-bit ABI says that structures and unions, and
-+ quad-precision floats are returned in memory. But note that the
-+ first part is implemented through -fpcc-struct-return being the
-+ default, so here we only implement -freg-struct-return instead.
-+ All other base types are returned in registers.
-+
-+ Extended ABI (as implemented by the Sun compiler) says that
-+ all complex floats are returned in registers (8 FP registers
-+ at most for '_Complex long double'). Return all complex integers
-+ in registers (4 at most for '_Complex long long').
-+
-+ Vector ABI (as implemented by the Sun VIS SDK) says that vector
-+ integers are returned like floats of the same size, that is in
-+ registers up to 8 bytes and in memory otherwise. Return all
-+ vector floats in memory like structure and unions; note that
-+ they always have BLKmode like the latter. */
-+ return (TYPE_MODE (type) == BLKmode
-+ || TYPE_MODE (type) == TFmode
-+ || (TREE_CODE (type) == VECTOR_TYPE
-+ && (unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 8));
-+ else
-+ /* Original SPARC 64-bit ABI says that structures and unions
-+ smaller than 32 bytes are returned in registers, as well as
-+ all other base types.
-+
-+ Extended ABI (as implemented by the Sun compiler) says that all
-+ complex floats are returned in registers (8 FP registers at most
-+ for '_Complex long double'). Return all complex integers in
-+ registers (4 at most for '_Complex TItype').
-+
-+ Vector ABI (as implemented by the Sun VIS SDK) says that vector
-+ integers are returned like floats of the same size, that is in
-+ registers. Return all vector floats like structure and unions;
-+ note that they always have BLKmode like the latter. */
-+ return (TYPE_MODE (type) == BLKmode
-+ && (unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 32);
-+}
-+
-+/* Handle the TARGET_STRUCT_VALUE target hook.
-+ Return where to find the structure return value address. */
-+
-+static rtx
-+sparc_struct_value_rtx (tree fndecl, int incoming)
-+{
-+ if (TARGET_ARCH64)
-+ return NULL_RTX;
-+ else
-+ {
-+ rtx mem;
-+
-+ if (incoming)
-+ mem = gen_frame_mem (Pmode, plus_constant (Pmode, frame_pointer_rtx,
-+ STRUCT_VALUE_OFFSET));
-+ else
-+ mem = gen_frame_mem (Pmode, plus_constant (Pmode, stack_pointer_rtx,
-+ STRUCT_VALUE_OFFSET));
-+
-+ /* Only follow the SPARC ABI for fixed-size structure returns.
-+ Variable size structure returns are handled per the normal
-+ procedures in GCC. This is enabled by -mstd-struct-return */
-+ if (incoming == 2
-+ && sparc_std_struct_return
-+ && TYPE_SIZE_UNIT (TREE_TYPE (fndecl))
-+ && TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (fndecl))) == INTEGER_CST)
-+ {
-+ /* We must check and adjust the return address, as it is optional
-+ as to whether the return object is really provided. */
-+ rtx ret_reg = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM);
-+ rtx scratch = gen_reg_rtx (SImode);
-+ rtx_code_label *endlab = gen_label_rtx ();
-+
-+ /* Calculate the return object size. */
-+ tree size = TYPE_SIZE_UNIT (TREE_TYPE (fndecl));
-+ rtx size_rtx = GEN_INT (TREE_INT_CST_LOW (size) & 0xfff);
-+ /* Construct a temporary return value. */
-+ rtx temp_val
-+ = assign_stack_local (Pmode, TREE_INT_CST_LOW (size), 0);
-+
-+ /* Implement SPARC 32-bit psABI callee return struct checking:
-+
-+ Fetch the instruction where we will return to and see if
-+ it's an unimp instruction (the most significant 10 bits
-+ will be zero). */
-+ emit_move_insn (scratch, gen_rtx_MEM (SImode,
-+ plus_constant (Pmode,
-+ ret_reg, 8)));
-+ /* Assume the size is valid and pre-adjust. */
-+ emit_insn (gen_add3_insn (ret_reg, ret_reg, GEN_INT (4)));
-+ emit_cmp_and_jump_insns (scratch, size_rtx, EQ, const0_rtx, SImode,
-+ 0, endlab);
-+ emit_insn (gen_sub3_insn (ret_reg, ret_reg, GEN_INT (4)));
-+ /* Write the address of the memory pointed to by temp_val into
-+ the memory pointed to by mem. */
-+ emit_move_insn (mem, XEXP (temp_val, 0));
-+ emit_label (endlab);
-+ }
-+
-+ return mem;
-+ }
-+}
-+
-+/* Handle TARGET_FUNCTION_VALUE, and TARGET_LIBCALL_VALUE target hook.
-+ For v9, function return values are subject to the same rules as arguments,
-+ except that up to 32 bytes may be returned in registers. */
-+
-+static rtx
-+sparc_function_value_1 (const_tree type, machine_mode mode, bool outgoing)
-+{
-+ /* Beware that the two values are swapped here wrt function_arg. */
-+ const int regbase
-+ = outgoing ? SPARC_INCOMING_INT_ARG_FIRST : SPARC_OUTGOING_INT_ARG_FIRST;
-+ enum mode_class mclass = GET_MODE_CLASS (mode);
-+ int regno;
-+
-+ /* Integer vectors are handled like floats as per the Sun VIS SDK.
-+ Note that integer vectors larger than 16 bytes have BLKmode so
-+ they need to be handled like floating-point vectors below. */
-+ if (type && VECTOR_INTEGER_TYPE_P (type) && mode != BLKmode)
-+ mclass = MODE_FLOAT;
-+
-+ if (TARGET_ARCH64 && type)
-+ {
-+ /* Structures up to 32 bytes in size are returned in registers. */
-+ if (TREE_CODE (type) == RECORD_TYPE)
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 32);
-+
-+ return function_arg_record_value (type, mode, 0, true, regbase);
-+ }
-+
-+ /* Unions up to 32 bytes in size are returned in integer registers. */
-+ else if (TREE_CODE (type) == UNION_TYPE)
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 32);
-+
-+ return function_arg_union_value (size, mode, 0, regbase);
-+ }
-+
-+ /* Vectors up to 32 bytes are returned in FP registers. */
-+ else if (VECTOR_TYPE_P (type) && mode == BLKmode)
-+ {
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 32);
-+
-+ return function_arg_vector_value (size, 0, true, SPARC_FP_ARG_FIRST);
-+ }
-+
-+ /* Objects that require it are returned in FP registers. */
-+ else if (mclass == MODE_FLOAT || mclass == MODE_COMPLEX_FLOAT)
-+ ;
-+
-+ /* All other aggregate types are returned in an integer register in a
-+ mode corresponding to the size of the type. */
-+ else if (AGGREGATE_TYPE_P (type))
-+ {
-+ /* All other aggregate types are passed in an integer register
-+ in a mode corresponding to the size of the type. */
-+ const int size = int_size_in_bytes (type);
-+ gcc_assert (size <= 32);
-+
-+ mode = int_mode_for_size (size * BITS_PER_UNIT, 0).else_blk ();
-+
-+ /* ??? We probably should have made the same ABI change in
-+ 3.4.0 as the one we made for unions. The latter was
-+ required by the SCD though, while the former is not
-+ specified, so we favored compatibility and efficiency.
-+
-+ Now we're stuck for aggregates larger than 16 bytes,
-+ because OImode vanished in the meantime. Let's not
-+ try to be unduly clever, and simply follow the ABI
-+ for unions in that case. */
-+ if (mode == BLKmode)
-+ return function_arg_union_value (size, mode, 0, regbase);
-+ else
-+ mclass = MODE_INT;
-+ }
-+
-+ /* We should only have pointer and integer types at this point. This
-+ must match sparc_promote_function_mode. */
-+ else if (mclass == MODE_INT && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
-+ mode = word_mode;
-+ }
-+
-+ /* We should only have pointer and integer types at this point, except with
-+ -freg-struct-return. This must match sparc_promote_function_mode. */
-+ else if (TARGET_ARCH32
-+ && !(type && AGGREGATE_TYPE_P (type))
-+ && mclass == MODE_INT
-+ && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
-+ mode = word_mode;
-+
-+ if ((mclass == MODE_FLOAT || mclass == MODE_COMPLEX_FLOAT) && TARGET_FPU)
-+ regno = SPARC_FP_ARG_FIRST;
-+ else
-+ regno = regbase;
-+
-+ return gen_rtx_REG (mode, regno);
-+}
-+
-+/* Handle TARGET_FUNCTION_VALUE.
-+ On the SPARC, the value is found in the first "output" register, but the
-+ called function leaves it in the first "input" register. */
-+
-+static rtx
-+sparc_function_value (const_tree valtype,
-+ const_tree fn_decl_or_type ATTRIBUTE_UNUSED,
-+ bool outgoing)
-+{
-+ return sparc_function_value_1 (valtype, TYPE_MODE (valtype), outgoing);
-+}
-+
-+/* Handle TARGET_LIBCALL_VALUE. */
-+
-+static rtx
-+sparc_libcall_value (machine_mode mode,
-+ const_rtx fun ATTRIBUTE_UNUSED)
-+{
-+ return sparc_function_value_1 (NULL_TREE, mode, false);
-+}
-+
-+/* Handle FUNCTION_VALUE_REGNO_P.
-+ On the SPARC, the first "output" reg is used for integer values, and the
-+ first floating point register is used for floating point values. */
-+
-+static bool
-+sparc_function_value_regno_p (const unsigned int regno)
-+{
-+ return (regno == 8 || (TARGET_FPU && regno == 32));
-+}
-+
-+/* Do what is necessary for `va_start'. We look at the current function
-+ to determine if stdarg or varargs is used and return the address of
-+ the first unnamed parameter. */
-+
-+static rtx
-+sparc_builtin_saveregs (void)
-+{
-+ int first_reg = crtl->args.info.words;
-+ rtx address;
-+ int regno;
-+
-+ for (regno = first_reg; regno < SPARC_INT_ARG_MAX; regno++)
-+ emit_move_insn (gen_rtx_MEM (word_mode,
-+ gen_rtx_PLUS (Pmode,
-+ frame_pointer_rtx,
-+ GEN_INT (FIRST_PARM_OFFSET (0)
-+ + (UNITS_PER_WORD
-+ * regno)))),
-+ gen_rtx_REG (word_mode,
-+ SPARC_INCOMING_INT_ARG_FIRST + regno));
-+
-+ address = gen_rtx_PLUS (Pmode,
-+ frame_pointer_rtx,
-+ GEN_INT (FIRST_PARM_OFFSET (0)
-+ + UNITS_PER_WORD * first_reg));
-+
-+ return address;
-+}
-+
-+/* Implement `va_start' for stdarg. */
-+
-+static void
-+sparc_va_start (tree valist, rtx nextarg)
-+{
-+ nextarg = expand_builtin_saveregs ();
-+ std_expand_builtin_va_start (valist, nextarg);
-+}
-+
-+/* Implement `va_arg' for stdarg. */
-+
-+static tree
-+sparc_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
-+ gimple_seq *post_p)
-+{
-+ HOST_WIDE_INT size, rsize, align;
-+ tree addr, incr;
-+ bool indirect;
-+ tree ptrtype = build_pointer_type (type);
-+
-+ if (pass_va_arg_by_reference (type))
-+ {
-+ indirect = true;
-+ size = rsize = UNITS_PER_WORD;
-+ align = 0;
-+ }
-+ else
-+ {
-+ indirect = false;
-+ size = int_size_in_bytes (type);
-+ rsize = ROUND_UP (size, UNITS_PER_WORD);
-+ align = 0;
-+
-+ if (TARGET_ARCH64)
-+ {
-+ /* For SPARC64, objects requiring 16-byte alignment get it. */
-+ if (TYPE_ALIGN (type) >= 2 * (unsigned) BITS_PER_WORD)
-+ align = 2 * UNITS_PER_WORD;
-+
-+ /* SPARC-V9 ABI states that structures up to 16 bytes in size
-+ are left-justified in their slots. */
-+ if (AGGREGATE_TYPE_P (type))
-+ {
-+ if (size == 0)
-+ size = rsize = UNITS_PER_WORD;
-+ else
-+ size = rsize;
-+ }
-+ }
-+ }
-+
-+ incr = valist;
-+ if (align)
-+ {
-+ incr = fold_build_pointer_plus_hwi (incr, align - 1);
-+ incr = fold_convert (sizetype, incr);
-+ incr = fold_build2 (BIT_AND_EXPR, sizetype, incr,
-+ size_int (-align));
-+ incr = fold_convert (ptr_type_node, incr);
-+ }
-+
-+ gimplify_expr (&incr, pre_p, post_p, is_gimple_val, fb_rvalue);
-+ addr = incr;
-+
-+ if (BYTES_BIG_ENDIAN && size < rsize)
-+ addr = fold_build_pointer_plus_hwi (incr, rsize - size);
-+
-+ if (indirect)
-+ {
-+ addr = fold_convert (build_pointer_type (ptrtype), addr);
-+ addr = build_va_arg_indirect_ref (addr);
-+ }
-+
-+ /* If the address isn't aligned properly for the type, we need a temporary.
-+ FIXME: This is inefficient, usually we can do this in registers. */
-+ else if (align == 0 && TYPE_ALIGN (type) > BITS_PER_WORD)
-+ {
-+ tree tmp = create_tmp_var (type, "va_arg_tmp");
-+ tree dest_addr = build_fold_addr_expr (tmp);
-+ tree copy = build_call_expr (builtin_decl_implicit (BUILT_IN_MEMCPY),
-+ 3, dest_addr, addr, size_int (rsize));
-+ TREE_ADDRESSABLE (tmp) = 1;
-+ gimplify_and_add (copy, pre_p);
-+ addr = dest_addr;
-+ }
-+
-+ else
-+ addr = fold_convert (ptrtype, addr);
-+
-+ incr = fold_build_pointer_plus_hwi (incr, rsize);
-+ gimplify_assign (valist, incr, post_p);
-+
-+ return build_va_arg_indirect_ref (addr);
-+}
-+
-+/* Implement the TARGET_VECTOR_MODE_SUPPORTED_P target hook.
-+ Specify whether the vector mode is supported by the hardware. */
-+
-+static bool
-+sparc_vector_mode_supported_p (machine_mode mode)
-+{
-+ return TARGET_VIS && VECTOR_MODE_P (mode) ? true : false;
-+}
-+
-+/* Implement the TARGET_VECTORIZE_PREFERRED_SIMD_MODE target hook. */
-+
-+static machine_mode
-+sparc_preferred_simd_mode (scalar_mode mode)
-+{
-+ if (TARGET_VIS)
-+ switch (mode)
-+ {
-+ case E_SImode:
-+ return V2SImode;
-+ case E_HImode:
-+ return V4HImode;
-+ case E_QImode:
-+ return V8QImode;
-+
-+ default:;
-+ }
-+
-+ return word_mode;
-+}
-+
-+ /* Implement TARGET_CAN_FOLLOW_JUMP. */
-+
-+static bool
-+sparc_can_follow_jump (const rtx_insn *follower, const rtx_insn *followee)
-+{
-+ /* Do not fold unconditional jumps that have been created for crossing
-+ partition boundaries. */
-+ if (CROSSING_JUMP_P (followee) && !CROSSING_JUMP_P (follower))
-+ return false;
-+
-+ return true;
-+}
-+
-+/* Return the string to output an unconditional branch to LABEL, which is
-+ the operand number of the label.
-+
-+ DEST is the destination insn (i.e. the label), INSN is the source. */
-+
-+const char *
-+output_ubranch (rtx dest, rtx_insn *insn)
-+{
-+ static char string[64];
-+ bool v9_form = false;
-+ int delta;
-+ char *p;
-+
-+ /* Even if we are trying to use cbcond for this, evaluate
-+ whether we can use V9 branches as our backup plan. */
-+ delta = 5000000;
-+ if (!CROSSING_JUMP_P (insn) && INSN_ADDRESSES_SET_P ())
-+ delta = (INSN_ADDRESSES (INSN_UID (dest))
-+ - INSN_ADDRESSES (INSN_UID (insn)));
-+
-+ /* Leave some instructions for "slop". */
-+ if (TARGET_V9 && delta >= -260000 && delta < 260000)
-+ v9_form = true;
-+
-+ if (TARGET_CBCOND)
-+ {
-+ bool emit_nop = emit_cbcond_nop (insn);
-+ bool far = false;
-+ const char *rval;
-+
-+ if (delta < -500 || delta > 500)
-+ far = true;
-+
-+ if (far)
-+ {
-+ if (v9_form)
-+ rval = "ba,a,pt\t%%xcc, %l0";
-+ else
-+ rval = "b,a\t%l0";
-+ }
-+ else
-+ {
-+ if (emit_nop)
-+ rval = "cwbe\t%%g0, %%g0, %l0\n\tnop";
-+ else
-+ rval = "cwbe\t%%g0, %%g0, %l0";
-+ }
-+ return rval;
-+ }
-+
-+ if (v9_form)
-+ strcpy (string, "ba%*,pt\t%%xcc, ");
-+ else
-+ strcpy (string, "b%*\t");
-+
-+ p = strchr (string, '\0');
-+ *p++ = '%';
-+ *p++ = 'l';
-+ *p++ = '0';
-+ *p++ = '%';
-+ *p++ = '(';
-+ *p = '\0';
-+
-+ return string;
-+}
-+
-+/* Return the string to output a conditional branch to LABEL, which is
-+ the operand number of the label. OP is the conditional expression.
-+ XEXP (OP, 0) is assumed to be a condition code register (integer or
-+ floating point) and its mode specifies what kind of comparison we made.
-+
-+ DEST is the destination insn (i.e. the label), INSN is the source.
-+
-+ REVERSED is nonzero if we should reverse the sense of the comparison.
-+
-+ ANNUL is nonzero if we should generate an annulling branch. */
-+
-+const char *
-+output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
-+ rtx_insn *insn)
-+{
-+ static char string[64];
-+ enum rtx_code code = GET_CODE (op);
-+ rtx cc_reg = XEXP (op, 0);
-+ machine_mode mode = GET_MODE (cc_reg);
-+ const char *labelno, *branch;
-+ int spaces = 8, far;
-+ char *p;
-+
-+ /* v9 branches are limited to +-1MB. If it is too far away,
-+ change
-+
-+ bne,pt %xcc, .LC30
-+
-+ to
-+
-+ be,pn %xcc, .+12
-+ nop
-+ ba .LC30
-+
-+ and
-+
-+ fbne,a,pn %fcc2, .LC29
-+
-+ to
-+
-+ fbe,pt %fcc2, .+16
-+ nop
-+ ba .LC29 */
-+
-+ far = TARGET_V9 && (get_attr_length (insn) >= 3);
-+ if (reversed ^ far)
-+ {
-+ /* Reversal of FP compares takes care -- an ordered compare
-+ becomes an unordered compare and vice versa. */
-+ if (mode == CCFPmode || mode == CCFPEmode)
-+ code = reverse_condition_maybe_unordered (code);
-+ else
-+ code = reverse_condition (code);
-+ }
-+
-+ /* Start by writing the branch condition. */
-+ if (mode == CCFPmode || mode == CCFPEmode)
-+ {
-+ switch (code)
-+ {
-+ case NE:
-+ branch = "fbne";
-+ break;
-+ case EQ:
-+ branch = "fbe";
-+ break;
-+ case GE:
-+ branch = "fbge";
-+ break;
-+ case GT:
-+ branch = "fbg";
-+ break;
-+ case LE:
-+ branch = "fble";
-+ break;
-+ case LT:
-+ branch = "fbl";
-+ break;
-+ case UNORDERED:
-+ branch = "fbu";
-+ break;
-+ case ORDERED:
-+ branch = "fbo";
-+ break;
-+ case UNGT:
-+ branch = "fbug";
-+ break;
-+ case UNLT:
-+ branch = "fbul";
-+ break;
-+ case UNEQ:
-+ branch = "fbue";
-+ break;
-+ case UNGE:
-+ branch = "fbuge";
-+ break;
-+ case UNLE:
-+ branch = "fbule";
-+ break;
-+ case LTGT:
-+ branch = "fblg";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ /* ??? !v9: FP branches cannot be preceded by another floating point
-+ insn. Because there is currently no concept of pre-delay slots,
-+ we can fix this only by always emitting a nop before a floating
-+ point branch. */
-+
-+ string[0] = '\0';
-+ if (! TARGET_V9)
-+ strcpy (string, "nop\n\t");
-+ strcat (string, branch);
-+ }
-+ else
-+ {
-+ switch (code)
-+ {
-+ case NE:
-+ if (mode == CCVmode || mode == CCXVmode)
-+ branch = "bvs";
-+ else
-+ branch = "bne";
-+ break;
-+ case EQ:
-+ if (mode == CCVmode || mode == CCXVmode)
-+ branch = "bvc";
-+ else
-+ branch = "be";
-+ break;
-+ case GE:
-+ if (mode == CCNZmode || mode == CCXNZmode)
-+ branch = "bpos";
-+ else
-+ branch = "bge";
-+ break;
-+ case GT:
-+ branch = "bg";
-+ break;
-+ case LE:
-+ branch = "ble";
-+ break;
-+ case LT:
-+ if (mode == CCNZmode || mode == CCXNZmode)
-+ branch = "bneg";
-+ else
-+ branch = "bl";
-+ break;
-+ case GEU:
-+ branch = "bgeu";
-+ break;
-+ case GTU:
-+ branch = "bgu";
-+ break;
-+ case LEU:
-+ branch = "bleu";
-+ break;
-+ case LTU:
-+ branch = "blu";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ strcpy (string, branch);
-+ }
-+ spaces -= strlen (branch);
-+ p = strchr (string, '\0');
-+
-+ /* Now add the annulling, the label, and a possible noop. */
-+ if (annul && ! far)
-+ {
-+ strcpy (p, ",a");
-+ p += 2;
-+ spaces -= 2;
-+ }
-+
-+ if (TARGET_V9)
-+ {
-+ rtx note;
-+ int v8 = 0;
-+
-+ if (! far && insn && INSN_ADDRESSES_SET_P ())
-+ {
-+ int delta = (INSN_ADDRESSES (INSN_UID (dest))
-+ - INSN_ADDRESSES (INSN_UID (insn)));
-+ /* Leave some instructions for "slop". */
-+ if (delta < -260000 || delta >= 260000)
-+ v8 = 1;
-+ }
-+
-+ switch (mode)
-+ {
-+ case E_CCmode:
-+ case E_CCNZmode:
-+ case E_CCCmode:
-+ case E_CCVmode:
-+ labelno = "%%icc, ";
-+ if (v8)
-+ labelno = "";
-+ break;
-+ case E_CCXmode:
-+ case E_CCXNZmode:
-+ case E_CCXCmode:
-+ case E_CCXVmode:
-+ labelno = "%%xcc, ";
-+ gcc_assert (!v8);
-+ break;
-+ case E_CCFPmode:
-+ case E_CCFPEmode:
-+ {
-+ static char v9_fcc_labelno[] = "%%fccX, ";
-+ /* Set the char indicating the number of the fcc reg to use. */
-+ v9_fcc_labelno[5] = REGNO (cc_reg) - SPARC_FIRST_V9_FCC_REG + '0';
-+ labelno = v9_fcc_labelno;
-+ if (v8)
-+ {
-+ gcc_assert (REGNO (cc_reg) == SPARC_FCC_REG);
-+ labelno = "";
-+ }
-+ }
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ if (*labelno && insn && (note = find_reg_note (insn, REG_BR_PROB, NULL_RTX)))
-+ {
-+ strcpy (p,
-+ ((profile_probability::from_reg_br_prob_note (XINT (note, 0))
-+ >= profile_probability::even ()) ^ far)
-+ ? ",pt" : ",pn");
-+ p += 3;
-+ spaces -= 3;
-+ }
-+ }
-+ else
-+ labelno = "";
-+
-+ if (spaces > 0)
-+ *p++ = '\t';
-+ else
-+ *p++ = ' ';
-+ strcpy (p, labelno);
-+ p = strchr (p, '\0');
-+ if (far)
-+ {
-+ strcpy (p, ".+12\n\t nop\n\tb\t");
-+ /* Skip the next insn if requested or
-+ if we know that it will be a nop. */
-+ if (annul || ! final_sequence)
-+ p[3] = '6';
-+ p += 14;
-+ }
-+ *p++ = '%';
-+ *p++ = 'l';
-+ *p++ = label + '0';
-+ *p++ = '%';
-+ *p++ = '#';
-+ *p = '\0';
-+
-+ return string;
-+}
-+
-+/* Emit a library call comparison between floating point X and Y.
-+ COMPARISON is the operator to compare with (EQ, NE, GT, etc).
-+ Return the new operator to be used in the comparison sequence.
-+
-+ TARGET_ARCH64 uses _Qp_* functions, which use pointers to TFmode
-+ values as arguments instead of the TFmode registers themselves,
-+ that's why we cannot call emit_float_lib_cmp. */
-+
-+rtx
-+sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
-+{
-+ const char *qpfunc;
-+ rtx slot0, slot1, result, tem, tem2, libfunc;
-+ machine_mode mode;
-+ enum rtx_code new_comparison;
-+
-+ switch (comparison)
-+ {
-+ case EQ:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_feq" : "_Q_feq");
-+ break;
-+
-+ case NE:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_fne" : "_Q_fne");
-+ break;
-+
-+ case GT:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_fgt" : "_Q_fgt");
-+ break;
-+
-+ case GE:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_fge" : "_Q_fge");
-+ break;
-+
-+ case LT:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_flt" : "_Q_flt");
-+ break;
-+
-+ case LE:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_fle" : "_Q_fle");
-+ break;
-+
-+ case ORDERED:
-+ case UNORDERED:
-+ case UNGT:
-+ case UNLT:
-+ case UNEQ:
-+ case UNGE:
-+ case UNLE:
-+ case LTGT:
-+ qpfunc = (TARGET_ARCH64 ? "_Qp_cmp" : "_Q_cmp");
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ if (TARGET_ARCH64)
-+ {
-+ if (MEM_P (x))
-+ {
-+ tree expr = MEM_EXPR (x);
-+ if (expr)
-+ mark_addressable (expr);
-+ slot0 = x;
-+ }
-+ else
-+ {
-+ slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode));
-+ emit_move_insn (slot0, x);
-+ }
-+
-+ if (MEM_P (y))
-+ {
-+ tree expr = MEM_EXPR (y);
-+ if (expr)
-+ mark_addressable (expr);
-+ slot1 = y;
-+ }
-+ else
-+ {
-+ slot1 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode));
-+ emit_move_insn (slot1, y);
-+ }
-+
-+ libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
-+ emit_library_call (libfunc, LCT_NORMAL,
-+ DImode,
-+ XEXP (slot0, 0), Pmode,
-+ XEXP (slot1, 0), Pmode);
-+ mode = DImode;
-+ }
-+ else
-+ {
-+ libfunc = gen_rtx_SYMBOL_REF (Pmode, qpfunc);
-+ emit_library_call (libfunc, LCT_NORMAL,
-+ SImode,
-+ x, TFmode, y, TFmode);
-+ mode = SImode;
-+ }
-+
-+
-+ /* Immediately move the result of the libcall into a pseudo
-+ register so reload doesn't clobber the value if it needs
-+ the return register for a spill reg. */
-+ result = gen_reg_rtx (mode);
-+ emit_move_insn (result, hard_libcall_value (mode, libfunc));
-+
-+ switch (comparison)
-+ {
-+ default:
-+ return gen_rtx_NE (VOIDmode, result, const0_rtx);
-+ case ORDERED:
-+ case UNORDERED:
-+ new_comparison = (comparison == UNORDERED ? EQ : NE);
-+ return gen_rtx_fmt_ee (new_comparison, VOIDmode, result, GEN_INT(3));
-+ case UNGT:
-+ case UNGE:
-+ new_comparison = (comparison == UNGT ? GT : NE);
-+ return gen_rtx_fmt_ee (new_comparison, VOIDmode, result, const1_rtx);
-+ case UNLE:
-+ return gen_rtx_NE (VOIDmode, result, const2_rtx);
-+ case UNLT:
-+ tem = gen_reg_rtx (mode);
-+ if (TARGET_ARCH32)
-+ emit_insn (gen_andsi3 (tem, result, const1_rtx));
-+ else
-+ emit_insn (gen_anddi3 (tem, result, const1_rtx));
-+ return gen_rtx_NE (VOIDmode, tem, const0_rtx);
-+ case UNEQ:
-+ case LTGT:
-+ tem = gen_reg_rtx (mode);
-+ if (TARGET_ARCH32)
-+ emit_insn (gen_addsi3 (tem, result, const1_rtx));
-+ else
-+ emit_insn (gen_adddi3 (tem, result, const1_rtx));
-+ tem2 = gen_reg_rtx (mode);
-+ if (TARGET_ARCH32)
-+ emit_insn (gen_andsi3 (tem2, tem, const2_rtx));
-+ else
-+ emit_insn (gen_anddi3 (tem2, tem, const2_rtx));
-+ new_comparison = (comparison == UNEQ ? EQ : NE);
-+ return gen_rtx_fmt_ee (new_comparison, VOIDmode, tem2, const0_rtx);
-+ }
-+
-+ gcc_unreachable ();
-+}
-+
-+/* Generate an unsigned DImode to FP conversion. This is the same code
-+ optabs would emit if we didn't have TFmode patterns. */
-+
-+void
-+sparc_emit_floatunsdi (rtx *operands, machine_mode mode)
-+{
-+ rtx i0, i1, f0, in, out;
-+
-+ out = operands[0];
-+ in = force_reg (DImode, operands[1]);
-+ rtx_code_label *neglab = gen_label_rtx ();
-+ rtx_code_label *donelab = gen_label_rtx ();
-+ i0 = gen_reg_rtx (DImode);
-+ i1 = gen_reg_rtx (DImode);
-+ f0 = gen_reg_rtx (mode);
-+
-+ emit_cmp_and_jump_insns (in, const0_rtx, LT, const0_rtx, DImode, 0, neglab);
-+
-+ emit_insn (gen_rtx_SET (out, gen_rtx_FLOAT (mode, in)));
-+ emit_jump_insn (gen_jump (donelab));
-+ emit_barrier ();
-+
-+ emit_label (neglab);
-+
-+ emit_insn (gen_lshrdi3 (i0, in, const1_rtx));
-+ emit_insn (gen_anddi3 (i1, in, const1_rtx));
-+ emit_insn (gen_iordi3 (i0, i0, i1));
-+ emit_insn (gen_rtx_SET (f0, gen_rtx_FLOAT (mode, i0)));
-+ emit_insn (gen_rtx_SET (out, gen_rtx_PLUS (mode, f0, f0)));
-+
-+ emit_label (donelab);
-+}
-+
-+/* Generate an FP to unsigned DImode conversion. This is the same code
-+ optabs would emit if we didn't have TFmode patterns. */
-+
-+void
-+sparc_emit_fixunsdi (rtx *operands, machine_mode mode)
-+{
-+ rtx i0, i1, f0, in, out, limit;
-+
-+ out = operands[0];
-+ in = force_reg (mode, operands[1]);
-+ rtx_code_label *neglab = gen_label_rtx ();
-+ rtx_code_label *donelab = gen_label_rtx ();
-+ i0 = gen_reg_rtx (DImode);
-+ i1 = gen_reg_rtx (DImode);
-+ limit = gen_reg_rtx (mode);
-+ f0 = gen_reg_rtx (mode);
-+
-+ emit_move_insn (limit,
-+ const_double_from_real_value (
-+ REAL_VALUE_ATOF ("9223372036854775808.0", mode), mode));
-+ emit_cmp_and_jump_insns (in, limit, GE, NULL_RTX, mode, 0, neglab);
-+
-+ emit_insn (gen_rtx_SET (out,
-+ gen_rtx_FIX (DImode, gen_rtx_FIX (mode, in))));
-+ emit_jump_insn (gen_jump (donelab));
-+ emit_barrier ();
-+
-+ emit_label (neglab);
-+
-+ emit_insn (gen_rtx_SET (f0, gen_rtx_MINUS (mode, in, limit)));
-+ emit_insn (gen_rtx_SET (i0,
-+ gen_rtx_FIX (DImode, gen_rtx_FIX (mode, f0))));
-+ emit_insn (gen_movdi (i1, const1_rtx));
-+ emit_insn (gen_ashldi3 (i1, i1, GEN_INT (63)));
-+ emit_insn (gen_xordi3 (out, i0, i1));
-+
-+ emit_label (donelab);
-+}
-+
-+/* Return the string to output a compare and branch instruction to DEST.
-+ DEST is the destination insn (i.e. the label), INSN is the source,
-+ and OP is the conditional expression. */
-+
-+const char *
-+output_cbcond (rtx op, rtx dest, rtx_insn *insn)
-+{
-+ machine_mode mode = GET_MODE (XEXP (op, 0));
-+ enum rtx_code code = GET_CODE (op);
-+ const char *cond_str, *tmpl;
-+ int far, emit_nop, len;
-+ static char string[64];
-+ char size_char;
-+
-+ /* Compare and Branch is limited to +-2KB. If it is too far away,
-+ change
-+
-+ cxbne X, Y, .LC30
-+
-+ to
-+
-+ cxbe X, Y, .+16
-+ nop
-+ ba,pt xcc, .LC30
-+ nop */
-+
-+ len = get_attr_length (insn);
-+
-+ far = len == 4;
-+ emit_nop = len == 2;
-+
-+ if (far)
-+ code = reverse_condition (code);
-+
-+ size_char = ((mode == SImode) ? 'w' : 'x');
-+
-+ switch (code)
-+ {
-+ case NE:
-+ cond_str = "ne";
-+ break;
-+
-+ case EQ:
-+ cond_str = "e";
-+ break;
-+
-+ case GE:
-+ cond_str = "ge";
-+ break;
-+
-+ case GT:
-+ cond_str = "g";
-+ break;
-+
-+ case LE:
-+ cond_str = "le";
-+ break;
-+
-+ case LT:
-+ cond_str = "l";
-+ break;
-+
-+ case GEU:
-+ cond_str = "cc";
-+ break;
-+
-+ case GTU:
-+ cond_str = "gu";
-+ break;
-+
-+ case LEU:
-+ cond_str = "leu";
-+ break;
-+
-+ case LTU:
-+ cond_str = "cs";
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ if (far)
-+ {
-+ int veryfar = 1, delta;
-+
-+ if (INSN_ADDRESSES_SET_P ())
-+ {
-+ delta = (INSN_ADDRESSES (INSN_UID (dest))
-+ - INSN_ADDRESSES (INSN_UID (insn)));
-+ /* Leave some instructions for "slop". */
-+ if (delta >= -260000 && delta < 260000)
-+ veryfar = 0;
-+ }
-+
-+ if (veryfar)
-+ tmpl = "c%cb%s\t%%1, %%2, .+16\n\tnop\n\tb\t%%3\n\tnop";
-+ else
-+ tmpl = "c%cb%s\t%%1, %%2, .+16\n\tnop\n\tba,pt\t%%%%xcc, %%3\n\tnop";
-+ }
-+ else
-+ {
-+ if (emit_nop)
-+ tmpl = "c%cb%s\t%%1, %%2, %%3\n\tnop";
-+ else
-+ tmpl = "c%cb%s\t%%1, %%2, %%3";
-+ }
-+
-+ snprintf (string, sizeof(string), tmpl, size_char, cond_str);
-+
-+ return string;
-+}
-+
-+/* Return the string to output a conditional branch to LABEL, testing
-+ register REG. LABEL is the operand number of the label; REG is the
-+ operand number of the reg. OP is the conditional expression. The mode
-+ of REG says what kind of comparison we made.
-+
-+ DEST is the destination insn (i.e. the label), INSN is the source.
-+
-+ REVERSED is nonzero if we should reverse the sense of the comparison.
-+
-+ ANNUL is nonzero if we should generate an annulling branch. */
-+
-+const char *
-+output_v9branch (rtx op, rtx dest, int reg, int label, int reversed,
-+ int annul, rtx_insn *insn)
-+{
-+ static char string[64];
-+ enum rtx_code code = GET_CODE (op);
-+ machine_mode mode = GET_MODE (XEXP (op, 0));
-+ rtx note;
-+ int far;
-+ char *p;
-+
-+ /* branch on register are limited to +-128KB. If it is too far away,
-+ change
-+
-+ brnz,pt %g1, .LC30
-+
-+ to
-+
-+ brz,pn %g1, .+12
-+ nop
-+ ba,pt %xcc, .LC30
-+
-+ and
-+
-+ brgez,a,pn %o1, .LC29
-+
-+ to
-+
-+ brlz,pt %o1, .+16
-+ nop
-+ ba,pt %xcc, .LC29 */
-+
-+ far = get_attr_length (insn) >= 3;
-+
-+ /* If not floating-point or if EQ or NE, we can just reverse the code. */
-+ if (reversed ^ far)
-+ code = reverse_condition (code);
-+
-+ /* Only 64-bit versions of these instructions exist. */
-+ gcc_assert (mode == DImode);
-+
-+ /* Start by writing the branch condition. */
-+
-+ switch (code)
-+ {
-+ case NE:
-+ strcpy (string, "brnz");
-+ break;
-+
-+ case EQ:
-+ strcpy (string, "brz");
-+ break;
-+
-+ case GE:
-+ strcpy (string, "brgez");
-+ break;
-+
-+ case LT:
-+ strcpy (string, "brlz");
-+ break;
-+
-+ case LE:
-+ strcpy (string, "brlez");
-+ break;
-+
-+ case GT:
-+ strcpy (string, "brgz");
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ p = strchr (string, '\0');
-+
-+ /* Now add the annulling, reg, label, and nop. */
-+ if (annul && ! far)
-+ {
-+ strcpy (p, ",a");
-+ p += 2;
-+ }
-+
-+ if (insn && (note = find_reg_note (insn, REG_BR_PROB, NULL_RTX)))
-+ {
-+ strcpy (p,
-+ ((profile_probability::from_reg_br_prob_note (XINT (note, 0))
-+ >= profile_probability::even ()) ^ far)
-+ ? ",pt" : ",pn");
-+ p += 3;
-+ }
-+
-+ *p = p < string + 8 ? '\t' : ' ';
-+ p++;
-+ *p++ = '%';
-+ *p++ = '0' + reg;
-+ *p++ = ',';
-+ *p++ = ' ';
-+ if (far)
-+ {
-+ int veryfar = 1, delta;
-+
-+ if (INSN_ADDRESSES_SET_P ())
-+ {
-+ delta = (INSN_ADDRESSES (INSN_UID (dest))
-+ - INSN_ADDRESSES (INSN_UID (insn)));
-+ /* Leave some instructions for "slop". */
-+ if (delta >= -260000 && delta < 260000)
-+ veryfar = 0;
-+ }
-+
-+ strcpy (p, ".+12\n\t nop\n\t");
-+ /* Skip the next insn if requested or
-+ if we know that it will be a nop. */
-+ if (annul || ! final_sequence)
-+ p[3] = '6';
-+ p += 12;
-+ if (veryfar)
-+ {
-+ strcpy (p, "b\t");
-+ p += 2;
-+ }
-+ else
-+ {
-+ strcpy (p, "ba,pt\t%%xcc, ");
-+ p += 13;
-+ }
-+ }
-+ *p++ = '%';
-+ *p++ = 'l';
-+ *p++ = '0' + label;
-+ *p++ = '%';
-+ *p++ = '#';
-+ *p = '\0';
-+
-+ return string;
-+}
-+
-+/* Return 1, if any of the registers of the instruction are %l[0-7] or %o[0-7].
-+ Such instructions cannot be used in the delay slot of return insn on v9.
-+ If TEST is 0, also rename all %i[0-7] registers to their %o[0-7] counterparts.
-+ */
-+
-+static int
-+epilogue_renumber (register rtx *where, int test)
-+{
-+ register const char *fmt;
-+ register int i;
-+ register enum rtx_code code;
-+
-+ if (*where == 0)
-+ return 0;
-+
-+ code = GET_CODE (*where);
-+
-+ switch (code)
-+ {
-+ case REG:
-+ if (REGNO (*where) >= 8 && REGNO (*where) < 24) /* oX or lX */
-+ return 1;
-+ if (! test && REGNO (*where) >= 24 && REGNO (*where) < 32)
-+ *where = gen_rtx_REG (GET_MODE (*where), OUTGOING_REGNO (REGNO(*where)));
-+ /* fallthrough */
-+ case SCRATCH:
-+ case CC0:
-+ case PC:
-+ case CONST_INT:
-+ case CONST_WIDE_INT:
-+ case CONST_DOUBLE:
-+ return 0;
-+
-+ /* Do not replace the frame pointer with the stack pointer because
-+ it can cause the delayed instruction to load below the stack.
-+ This occurs when instructions like:
-+
-+ (set (reg/i:SI 24 %i0)
-+ (mem/f:SI (plus:SI (reg/f:SI 30 %fp)
-+ (const_int -20 [0xffffffec])) 0))
-+
-+ are in the return delayed slot. */
-+ case PLUS:
-+ if (GET_CODE (XEXP (*where, 0)) == REG
-+ && REGNO (XEXP (*where, 0)) == HARD_FRAME_POINTER_REGNUM
-+ && (GET_CODE (XEXP (*where, 1)) != CONST_INT
-+ || INTVAL (XEXP (*where, 1)) < SPARC_STACK_BIAS))
-+ return 1;
-+ break;
-+
-+ case MEM:
-+ if (SPARC_STACK_BIAS
-+ && GET_CODE (XEXP (*where, 0)) == REG
-+ && REGNO (XEXP (*where, 0)) == HARD_FRAME_POINTER_REGNUM)
-+ return 1;
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ fmt = GET_RTX_FORMAT (code);
-+
-+ for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
-+ {
-+ if (fmt[i] == 'E')
-+ {
-+ register int j;
-+ for (j = XVECLEN (*where, i) - 1; j >= 0; j--)
-+ if (epilogue_renumber (&(XVECEXP (*where, i, j)), test))
-+ return 1;
-+ }
-+ else if (fmt[i] == 'e'
-+ && epilogue_renumber (&(XEXP (*where, i)), test))
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+/* Leaf functions and non-leaf functions have different needs. */
-+
-+static const int
-+reg_leaf_alloc_order[] = REG_LEAF_ALLOC_ORDER;
-+
-+static const int
-+reg_nonleaf_alloc_order[] = REG_ALLOC_ORDER;
-+
-+static const int *const reg_alloc_orders[] = {
-+ reg_leaf_alloc_order,
-+ reg_nonleaf_alloc_order};
-+
-+void
-+order_regs_for_local_alloc (void)
-+{
-+ static int last_order_nonleaf = 1;
-+
-+ if (df_regs_ever_live_p (15) != last_order_nonleaf)
-+ {
-+ last_order_nonleaf = !last_order_nonleaf;
-+ memcpy ((char *) reg_alloc_order,
-+ (const char *) reg_alloc_orders[last_order_nonleaf],
-+ FIRST_PSEUDO_REGISTER * sizeof (int));
-+ }
-+}
-+
-+/* Return 1 if REG and MEM are legitimate enough to allow the various
-+ MEM<-->REG splits to be run. */
-+
-+int
-+sparc_split_reg_mem_legitimate (rtx reg, rtx mem)
-+{
-+ /* Punt if we are here by mistake. */
-+ gcc_assert (reload_completed);
-+
-+ /* We must have an offsettable memory reference. */
-+ if (!offsettable_memref_p (mem))
-+ return 0;
-+
-+ /* If we have legitimate args for ldd/std, we do not want
-+ the split to happen. */
-+ if ((REGNO (reg) % 2) == 0 && mem_min_alignment (mem, 8))
-+ return 0;
-+
-+ /* Success. */
-+ return 1;
-+}
-+
-+/* Split a REG <-- MEM move into a pair of moves in MODE. */
-+
-+void
-+sparc_split_reg_mem (rtx dest, rtx src, machine_mode mode)
-+{
-+ rtx high_part = gen_highpart (mode, dest);
-+ rtx low_part = gen_lowpart (mode, dest);
-+ rtx word0 = adjust_address (src, mode, 0);
-+ rtx word1 = adjust_address (src, mode, 4);
-+
-+ if (reg_overlap_mentioned_p (high_part, word1))
-+ {
-+ emit_move_insn_1 (low_part, word1);
-+ emit_move_insn_1 (high_part, word0);
-+ }
-+ else
-+ {
-+ emit_move_insn_1 (high_part, word0);
-+ emit_move_insn_1 (low_part, word1);
-+ }
-+}
-+
-+/* Split a MEM <-- REG move into a pair of moves in MODE. */
-+
-+void
-+sparc_split_mem_reg (rtx dest, rtx src, machine_mode mode)
-+{
-+ rtx word0 = adjust_address (dest, mode, 0);
-+ rtx word1 = adjust_address (dest, mode, 4);
-+ rtx high_part = gen_highpart (mode, src);
-+ rtx low_part = gen_lowpart (mode, src);
-+
-+ emit_move_insn_1 (word0, high_part);
-+ emit_move_insn_1 (word1, low_part);
-+}
-+
-+/* Like sparc_split_reg_mem_legitimate but for REG <--> REG moves. */
-+
-+int
-+sparc_split_reg_reg_legitimate (rtx reg1, rtx reg2)
-+{
-+ /* Punt if we are here by mistake. */
-+ gcc_assert (reload_completed);
-+
-+ if (GET_CODE (reg1) == SUBREG)
-+ reg1 = SUBREG_REG (reg1);
-+ if (GET_CODE (reg1) != REG)
-+ return 0;
-+ const int regno1 = REGNO (reg1);
-+
-+ if (GET_CODE (reg2) == SUBREG)
-+ reg2 = SUBREG_REG (reg2);
-+ if (GET_CODE (reg2) != REG)
-+ return 0;
-+ const int regno2 = REGNO (reg2);
-+
-+ if (SPARC_INT_REG_P (regno1) && SPARC_INT_REG_P (regno2))
-+ return 1;
-+
-+ if (TARGET_VIS3)
-+ {
-+ if ((SPARC_INT_REG_P (regno1) && SPARC_FP_REG_P (regno2))
-+ || (SPARC_FP_REG_P (regno1) && SPARC_INT_REG_P (regno2)))
-+ return 1;
-+ }
-+
-+ return 0;
-+}
-+
-+/* Split a REG <--> REG move into a pair of moves in MODE. */
-+
-+void
-+sparc_split_reg_reg (rtx dest, rtx src, machine_mode mode)
-+{
-+ rtx dest1 = gen_highpart (mode, dest);
-+ rtx dest2 = gen_lowpart (mode, dest);
-+ rtx src1 = gen_highpart (mode, src);
-+ rtx src2 = gen_lowpart (mode, src);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_move_insn_1 (dest2, src2);
-+ emit_move_insn_1 (dest1, src1);
-+ }
-+ else
-+ {
-+ emit_move_insn_1 (dest1, src1);
-+ emit_move_insn_1 (dest2, src2);
-+ }
-+}
-+
-+/* Return 1 if REGNO (reg1) is even and REGNO (reg1) == REGNO (reg2) - 1.
-+ This makes them candidates for using ldd and std insns.
-+
-+ Note reg1 and reg2 *must* be hard registers. */
-+
-+int
-+registers_ok_for_ldd_peep (rtx reg1, rtx reg2)
-+{
-+ /* We might have been passed a SUBREG. */
-+ if (GET_CODE (reg1) != REG || GET_CODE (reg2) != REG)
-+ return 0;
-+
-+ if (REGNO (reg1) % 2 != 0)
-+ return 0;
-+
-+ /* Integer ldd is deprecated in SPARC V9 */
-+ if (TARGET_V9 && SPARC_INT_REG_P (REGNO (reg1)))
-+ return 0;
-+
-+ return (REGNO (reg1) == REGNO (reg2) - 1);
-+}
-+
-+/* Return 1 if the addresses in mem1 and mem2 are suitable for use in
-+ an ldd or std insn.
-+
-+ This can only happen when addr1 and addr2, the addresses in mem1
-+ and mem2, are consecutive memory locations (addr1 + 4 == addr2).
-+ addr1 must also be aligned on a 64-bit boundary.
-+
-+ Also iff dependent_reg_rtx is not null it should not be used to
-+ compute the address for mem1, i.e. we cannot optimize a sequence
-+ like:
-+ ld [%o0], %o0
-+ ld [%o0 + 4], %o1
-+ to
-+ ldd [%o0], %o0
-+ nor:
-+ ld [%g3 + 4], %g3
-+ ld [%g3], %g2
-+ to
-+ ldd [%g3], %g2
-+
-+ But, note that the transformation from:
-+ ld [%g2 + 4], %g3
-+ ld [%g2], %g2
-+ to
-+ ldd [%g2], %g2
-+ is perfectly fine. Thus, the peephole2 patterns always pass us
-+ the destination register of the first load, never the second one.
-+
-+ For stores we don't have a similar problem, so dependent_reg_rtx is
-+ NULL_RTX. */
-+
-+int
-+mems_ok_for_ldd_peep (rtx mem1, rtx mem2, rtx dependent_reg_rtx)
-+{
-+ rtx addr1, addr2;
-+ unsigned int reg1;
-+ HOST_WIDE_INT offset1;
-+
-+ /* The mems cannot be volatile. */
-+ if (MEM_VOLATILE_P (mem1) || MEM_VOLATILE_P (mem2))
-+ return 0;
-+
-+ /* MEM1 should be aligned on a 64-bit boundary. */
-+ if (MEM_ALIGN (mem1) < 64)
-+ return 0;
-+
-+ addr1 = XEXP (mem1, 0);
-+ addr2 = XEXP (mem2, 0);
-+
-+ /* Extract a register number and offset (if used) from the first addr. */
-+ if (GET_CODE (addr1) == PLUS)
-+ {
-+ /* If not a REG, return zero. */
-+ if (GET_CODE (XEXP (addr1, 0)) != REG)
-+ return 0;
-+ else
-+ {
-+ reg1 = REGNO (XEXP (addr1, 0));
-+ /* The offset must be constant! */
-+ if (GET_CODE (XEXP (addr1, 1)) != CONST_INT)
-+ return 0;
-+ offset1 = INTVAL (XEXP (addr1, 1));
-+ }
-+ }
-+ else if (GET_CODE (addr1) != REG)
-+ return 0;
-+ else
-+ {
-+ reg1 = REGNO (addr1);
-+ /* This was a simple (mem (reg)) expression. Offset is 0. */
-+ offset1 = 0;
-+ }
-+
-+ /* Make sure the second address is a (mem (plus (reg) (const_int). */
-+ if (GET_CODE (addr2) != PLUS)
-+ return 0;
-+
-+ if (GET_CODE (XEXP (addr2, 0)) != REG
-+ || GET_CODE (XEXP (addr2, 1)) != CONST_INT)
-+ return 0;
-+
-+ if (reg1 != REGNO (XEXP (addr2, 0)))
-+ return 0;
-+
-+ if (dependent_reg_rtx != NULL_RTX && reg1 == REGNO (dependent_reg_rtx))
-+ return 0;
-+
-+ /* The first offset must be evenly divisible by 8 to ensure the
-+ address is 64-bit aligned. */
-+ if (offset1 % 8 != 0)
-+ return 0;
-+
-+ /* The offset for the second addr must be 4 more than the first addr. */
-+ if (INTVAL (XEXP (addr2, 1)) != offset1 + 4)
-+ return 0;
-+
-+ /* All the tests passed. addr1 and addr2 are valid for ldd and std
-+ instructions. */
-+ return 1;
-+}
-+
-+/* Return the widened memory access made of MEM1 and MEM2 in MODE. */
-+
-+rtx
-+widen_mem_for_ldd_peep (rtx mem1, rtx mem2, machine_mode mode)
-+{
-+ rtx x = widen_memory_access (mem1, mode, 0);
-+ MEM_NOTRAP_P (x) = MEM_NOTRAP_P (mem1) && MEM_NOTRAP_P (mem2);
-+ return x;
-+}
-+
-+/* Return 1 if reg is a pseudo, or is the first register in
-+ a hard register pair. This makes it suitable for use in
-+ ldd and std insns. */
-+
-+int
-+register_ok_for_ldd (rtx reg)
-+{
-+ /* We might have been passed a SUBREG. */
-+ if (!REG_P (reg))
-+ return 0;
-+
-+ if (REGNO (reg) < FIRST_PSEUDO_REGISTER)
-+ return (REGNO (reg) % 2 == 0);
-+
-+ return 1;
-+}
-+
-+/* Return 1 if OP, a MEM, has an address which is known to be
-+ aligned to an 8-byte boundary. */
-+
-+int
-+memory_ok_for_ldd (rtx op)
-+{
-+ /* In 64-bit mode, we assume that the address is word-aligned. */
-+ if (TARGET_ARCH32 && !mem_min_alignment (op, 8))
-+ return 0;
-+
-+ if (! can_create_pseudo_p ()
-+ && !strict_memory_address_p (Pmode, XEXP (op, 0)))
-+ return 0;
-+
-+ return 1;
-+}
-+
-+/* Implement TARGET_PRINT_OPERAND_PUNCT_VALID_P. */
-+
-+static bool
-+sparc_print_operand_punct_valid_p (unsigned char code)
-+{
-+ if (code == '#'
-+ || code == '*'
-+ || code == '('
-+ || code == ')'
-+ || code == '_'
-+ || code == '&')
-+ return true;
-+
-+ return false;
-+}
-+
-+/* Implement TARGET_PRINT_OPERAND.
-+ Print operand X (an rtx) in assembler syntax to file FILE.
-+ CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified.
-+ For `%' followed by punctuation, CODE is the punctuation and X is null. */
-+
-+static void
-+sparc_print_operand (FILE *file, rtx x, int code)
-+{
-+ const char *s;
-+
-+ switch (code)
-+ {
-+ case '#':
-+ /* Output an insn in a delay slot. */
-+ if (final_sequence)
-+ sparc_indent_opcode = 1;
-+ else
-+ fputs ("\n\t nop", file);
-+ return;
-+ case '*':
-+ /* Output an annul flag if there's nothing for the delay slot and we
-+ are optimizing. This is always used with '(' below.
-+ Sun OS 4.1.1 dbx can't handle an annulled unconditional branch;
-+ this is a dbx bug. So, we only do this when optimizing.
-+ On UltraSPARC, a branch in a delay slot causes a pipeline flush.
-+ Always emit a nop in case the next instruction is a branch. */
-+ if (! final_sequence && (optimize && (int)sparc_cpu < PROCESSOR_V9))
-+ fputs (",a", file);
-+ return;
-+ case '(':
-+ /* Output a 'nop' if there's nothing for the delay slot and we are
-+ not optimizing. This is always used with '*' above. */
-+ if (! final_sequence && ! (optimize && (int)sparc_cpu < PROCESSOR_V9))
-+ fputs ("\n\t nop", file);
-+ else if (final_sequence)
-+ sparc_indent_opcode = 1;
-+ return;
-+ case ')':
-+ /* Output the right displacement from the saved PC on function return.
-+ The caller may have placed an "unimp" insn immediately after the call
-+ so we have to account for it. This insn is used in the 32-bit ABI
-+ when calling a function that returns a non zero-sized structure. The
-+ 64-bit ABI doesn't have it. Be careful to have this test be the same
-+ as that for the call. The exception is when sparc_std_struct_return
-+ is enabled, the psABI is followed exactly and the adjustment is made
-+ by the code in sparc_struct_value_rtx. The call emitted is the same
-+ when sparc_std_struct_return is enabled. */
-+ if (!TARGET_ARCH64
-+ && cfun->returns_struct
-+ && !sparc_std_struct_return
-+ && DECL_SIZE (DECL_RESULT (current_function_decl))
-+ && TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl)))
-+ == INTEGER_CST
-+ && !integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl))))
-+ fputs ("12", file);
-+ else
-+ fputc ('8', file);
-+ return;
-+ case '_':
-+ /* Output the Embedded Medium/Anywhere code model base register. */
-+ fputs (EMBMEDANY_BASE_REG, file);
-+ return;
-+ case '&':
-+ /* Print some local dynamic TLS name. */
-+ if (const char *name = get_some_local_dynamic_name ())
-+ assemble_name (file, name);
-+ else
-+ output_operand_lossage ("'%%&' used without any "
-+ "local dynamic TLS references");
-+ return;
-+
-+ case 'Y':
-+ /* Adjust the operand to take into account a RESTORE operation. */
-+ if (GET_CODE (x) == CONST_INT)
-+ break;
-+ else if (GET_CODE (x) != REG)
-+ output_operand_lossage ("invalid %%Y operand");
-+ else if (REGNO (x) < 8)
-+ fputs (reg_names[REGNO (x)], file);
-+ else if (REGNO (x) >= 24 && REGNO (x) < 32)
-+ fputs (reg_names[REGNO (x)-16], file);
-+ else
-+ output_operand_lossage ("invalid %%Y operand");
-+ return;
-+ case 'L':
-+ /* Print out the low order register name of a register pair. */
-+ if (WORDS_BIG_ENDIAN)
-+ fputs (reg_names[REGNO (x)+1], file);
-+ else
-+ fputs (reg_names[REGNO (x)], file);
-+ return;
-+ case 'H':
-+ /* Print out the high order register name of a register pair. */
-+ if (WORDS_BIG_ENDIAN)
-+ fputs (reg_names[REGNO (x)], file);
-+ else
-+ fputs (reg_names[REGNO (x)+1], file);
-+ return;
-+ case 'R':
-+ /* Print out the second register name of a register pair or quad.
-+ I.e., R (%o0) => %o1. */
-+ fputs (reg_names[REGNO (x)+1], file);
-+ return;
-+ case 'S':
-+ /* Print out the third register name of a register quad.
-+ I.e., S (%o0) => %o2. */
-+ fputs (reg_names[REGNO (x)+2], file);
-+ return;
-+ case 'T':
-+ /* Print out the fourth register name of a register quad.
-+ I.e., T (%o0) => %o3. */
-+ fputs (reg_names[REGNO (x)+3], file);
-+ return;
-+ case 'x':
-+ /* Print a condition code register. */
-+ if (REGNO (x) == SPARC_ICC_REG)
-+ {
-+ switch (GET_MODE (x))
-+ {
-+ case E_CCmode:
-+ case E_CCNZmode:
-+ case E_CCCmode:
-+ case E_CCVmode:
-+ s = "%icc";
-+ break;
-+ case E_CCXmode:
-+ case E_CCXNZmode:
-+ case E_CCXCmode:
-+ case E_CCXVmode:
-+ s = "%xcc";
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ fputs (s, file);
-+ }
-+ else
-+ /* %fccN register */
-+ fputs (reg_names[REGNO (x)], file);
-+ return;
-+ case 'm':
-+ /* Print the operand's address only. */
-+ output_address (GET_MODE (x), XEXP (x, 0));
-+ return;
-+ case 'r':
-+ /* In this case we need a register. Use %g0 if the
-+ operand is const0_rtx. */
-+ if (x == const0_rtx
-+ || (GET_MODE (x) != VOIDmode && x == CONST0_RTX (GET_MODE (x))))
-+ {
-+ fputs ("%g0", file);
-+ return;
-+ }
-+ else
-+ break;
-+
-+ case 'A':
-+ switch (GET_CODE (x))
-+ {
-+ case IOR:
-+ s = "or";
-+ break;
-+ case AND:
-+ s = "and";
-+ break;
-+ case XOR:
-+ s = "xor";
-+ break;
-+ default:
-+ output_operand_lossage ("invalid %%A operand");
-+ s = "";
-+ break;
-+ }
-+ fputs (s, file);
-+ return;
-+
-+ case 'B':
-+ switch (GET_CODE (x))
-+ {
-+ case IOR:
-+ s = "orn";
-+ break;
-+ case AND:
-+ s = "andn";
-+ break;
-+ case XOR:
-+ s = "xnor";
-+ break;
-+ default:
-+ output_operand_lossage ("invalid %%B operand");
-+ s = "";
-+ break;
-+ }
-+ fputs (s, file);
-+ return;
-+
-+ /* This is used by the conditional move instructions. */
-+ case 'C':
-+ {
-+ machine_mode mode = GET_MODE (XEXP (x, 0));
-+ switch (GET_CODE (x))
-+ {
-+ case NE:
-+ if (mode == CCVmode || mode == CCXVmode)
-+ s = "vs";
-+ else
-+ s = "ne";
-+ break;
-+ case EQ:
-+ if (mode == CCVmode || mode == CCXVmode)
-+ s = "vc";
-+ else
-+ s = "e";
-+ break;
-+ case GE:
-+ if (mode == CCNZmode || mode == CCXNZmode)
-+ s = "pos";
-+ else
-+ s = "ge";
-+ break;
-+ case GT:
-+ s = "g";
-+ break;
-+ case LE:
-+ s = "le";
-+ break;
-+ case LT:
-+ if (mode == CCNZmode || mode == CCXNZmode)
-+ s = "neg";
-+ else
-+ s = "l";
-+ break;
-+ case GEU:
-+ s = "geu";
-+ break;
-+ case GTU:
-+ s = "gu";
-+ break;
-+ case LEU:
-+ s = "leu";
-+ break;
-+ case LTU:
-+ s = "lu";
-+ break;
-+ case LTGT:
-+ s = "lg";
-+ break;
-+ case UNORDERED:
-+ s = "u";
-+ break;
-+ case ORDERED:
-+ s = "o";
-+ break;
-+ case UNLT:
-+ s = "ul";
-+ break;
-+ case UNLE:
-+ s = "ule";
-+ break;
-+ case UNGT:
-+ s = "ug";
-+ break;
-+ case UNGE:
-+ s = "uge"
-+ ; break;
-+ case UNEQ:
-+ s = "ue";
-+ break;
-+ default:
-+ output_operand_lossage ("invalid %%C operand");
-+ s = "";
-+ break;
-+ }
-+ fputs (s, file);
-+ return;
-+ }
-+
-+ /* This are used by the movr instruction pattern. */
-+ case 'D':
-+ {
-+ switch (GET_CODE (x))
-+ {
-+ case NE:
-+ s = "ne";
-+ break;
-+ case EQ:
-+ s = "e";
-+ break;
-+ case GE:
-+ s = "gez";
-+ break;
-+ case LT:
-+ s = "lz";
-+ break;
-+ case LE:
-+ s = "lez";
-+ break;
-+ case GT:
-+ s = "gz";
-+ break;
-+ default:
-+ output_operand_lossage ("invalid %%D operand");
-+ s = "";
-+ break;
-+ }
-+ fputs (s, file);
-+ return;
-+ }
-+
-+ case 'b':
-+ {
-+ /* Print a sign-extended character. */
-+ int i = trunc_int_for_mode (INTVAL (x), QImode);
-+ fprintf (file, "%d", i);
-+ return;
-+ }
-+
-+ case 'f':
-+ /* Operand must be a MEM; write its address. */
-+ if (GET_CODE (x) != MEM)
-+ output_operand_lossage ("invalid %%f operand");
-+ output_address (GET_MODE (x), XEXP (x, 0));
-+ return;
-+
-+ case 's':
-+ {
-+ /* Print a sign-extended 32-bit value. */
-+ HOST_WIDE_INT i;
-+ if (GET_CODE(x) == CONST_INT)
-+ i = INTVAL (x);
-+ else
-+ {
-+ output_operand_lossage ("invalid %%s operand");
-+ return;
-+ }
-+ i = trunc_int_for_mode (i, SImode);
-+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, i);
-+ return;
-+ }
-+
-+ case 0:
-+ /* Do nothing special. */
-+ break;
-+
-+ default:
-+ /* Undocumented flag. */
-+ output_operand_lossage ("invalid operand output code");
-+ }
-+
-+ if (GET_CODE (x) == REG)
-+ fputs (reg_names[REGNO (x)], file);
-+ else if (GET_CODE (x) == MEM)
-+ {
-+ fputc ('[', file);
-+ /* Poor Sun assembler doesn't understand absolute addressing. */
-+ if (CONSTANT_P (XEXP (x, 0)))
-+ fputs ("%g0+", file);
-+ output_address (GET_MODE (x), XEXP (x, 0));
-+ fputc (']', file);
-+ }
-+ else if (GET_CODE (x) == HIGH)
-+ {
-+ fputs ("%hi(", file);
-+ output_addr_const (file, XEXP (x, 0));
-+ fputc (')', file);
-+ }
-+ else if (GET_CODE (x) == LO_SUM)
-+ {
-+ sparc_print_operand (file, XEXP (x, 0), 0);
-+ if (TARGET_CM_MEDMID)
-+ fputs ("+%l44(", file);
-+ else
-+ fputs ("+%lo(", file);
-+ output_addr_const (file, XEXP (x, 1));
-+ fputc (')', file);
-+ }
-+ else if (GET_CODE (x) == CONST_DOUBLE)
-+ output_operand_lossage ("floating-point constant not a valid immediate operand");
-+ else
-+ output_addr_const (file, x);
-+}
-+
-+/* Implement TARGET_PRINT_OPERAND_ADDRESS. */
-+
-+static void
-+sparc_print_operand_address (FILE *file, machine_mode /*mode*/, rtx x)
-+{
-+ register rtx base, index = 0;
-+ int offset = 0;
-+ register rtx addr = x;
-+
-+ if (REG_P (addr))
-+ fputs (reg_names[REGNO (addr)], file);
-+ else if (GET_CODE (addr) == PLUS)
-+ {
-+ if (CONST_INT_P (XEXP (addr, 0)))
-+ offset = INTVAL (XEXP (addr, 0)), base = XEXP (addr, 1);
-+ else if (CONST_INT_P (XEXP (addr, 1)))
-+ offset = INTVAL (XEXP (addr, 1)), base = XEXP (addr, 0);
-+ else
-+ base = XEXP (addr, 0), index = XEXP (addr, 1);
-+ if (GET_CODE (base) == LO_SUM)
-+ {
-+ gcc_assert (USE_AS_OFFSETABLE_LO10
-+ && TARGET_ARCH64
-+ && ! TARGET_CM_MEDMID);
-+ output_operand (XEXP (base, 0), 0);
-+ fputs ("+%lo(", file);
-+ output_address (VOIDmode, XEXP (base, 1));
-+ fprintf (file, ")+%d", offset);
-+ }
-+ else
-+ {
-+ fputs (reg_names[REGNO (base)], file);
-+ if (index == 0)
-+ fprintf (file, "%+d", offset);
-+ else if (REG_P (index))
-+ fprintf (file, "+%s", reg_names[REGNO (index)]);
-+ else if (GET_CODE (index) == SYMBOL_REF
-+ || GET_CODE (index) == LABEL_REF
-+ || GET_CODE (index) == CONST)
-+ fputc ('+', file), output_addr_const (file, index);
-+ else gcc_unreachable ();
-+ }
-+ }
-+ else if (GET_CODE (addr) == MINUS
-+ && GET_CODE (XEXP (addr, 1)) == LABEL_REF)
-+ {
-+ output_addr_const (file, XEXP (addr, 0));
-+ fputs ("-(", file);
-+ output_addr_const (file, XEXP (addr, 1));
-+ fputs ("-.)", file);
-+ }
-+ else if (GET_CODE (addr) == LO_SUM)
-+ {
-+ output_operand (XEXP (addr, 0), 0);
-+ if (TARGET_CM_MEDMID)
-+ fputs ("+%l44(", file);
-+ else
-+ fputs ("+%lo(", file);
-+ output_address (VOIDmode, XEXP (addr, 1));
-+ fputc (')', file);
-+ }
-+ else if (flag_pic
-+ && GET_CODE (addr) == CONST
-+ && GET_CODE (XEXP (addr, 0)) == MINUS
-+ && GET_CODE (XEXP (XEXP (addr, 0), 1)) == CONST
-+ && GET_CODE (XEXP (XEXP (XEXP (addr, 0), 1), 0)) == MINUS
-+ && XEXP (XEXP (XEXP (XEXP (addr, 0), 1), 0), 1) == pc_rtx)
-+ {
-+ addr = XEXP (addr, 0);
-+ output_addr_const (file, XEXP (addr, 0));
-+ /* Group the args of the second CONST in parenthesis. */
-+ fputs ("-(", file);
-+ /* Skip past the second CONST--it does nothing for us. */
-+ output_addr_const (file, XEXP (XEXP (addr, 1), 0));
-+ /* Close the parenthesis. */
-+ fputc (')', file);
-+ }
-+ else
-+ {
-+ output_addr_const (file, addr);
-+ }
-+}
-+
-+/* Target hook for assembling integer objects. The sparc version has
-+ special handling for aligned DI-mode objects. */
-+
-+static bool
-+sparc_assemble_integer (rtx x, unsigned int size, int aligned_p)
-+{
-+ /* ??? We only output .xword's for symbols and only then in environments
-+ where the assembler can handle them. */
-+ if (aligned_p && size == 8 && GET_CODE (x) != CONST_INT)
-+ {
-+ if (TARGET_V9)
-+ {
-+ assemble_integer_with_op ("\t.xword\t", x);
-+ return true;
-+ }
-+ else
-+ {
-+ assemble_aligned_integer (4, const0_rtx);
-+ assemble_aligned_integer (4, x);
-+ return true;
-+ }
-+ }
-+ return default_assemble_integer (x, size, aligned_p);
-+}
-+
-+/* Return the value of a code used in the .proc pseudo-op that says
-+ what kind of result this function returns. For non-C types, we pick
-+ the closest C type. */
-+
-+#ifndef SHORT_TYPE_SIZE
-+#define SHORT_TYPE_SIZE (BITS_PER_UNIT * 2)
-+#endif
-+
-+#ifndef INT_TYPE_SIZE
-+#define INT_TYPE_SIZE BITS_PER_WORD
-+#endif
-+
-+#ifndef LONG_TYPE_SIZE
-+#define LONG_TYPE_SIZE BITS_PER_WORD
-+#endif
-+
-+#ifndef LONG_LONG_TYPE_SIZE
-+#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2)
-+#endif
-+
-+#ifndef FLOAT_TYPE_SIZE
-+#define FLOAT_TYPE_SIZE BITS_PER_WORD
-+#endif
-+
-+#ifndef DOUBLE_TYPE_SIZE
-+#define DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-+#endif
-+
-+#ifndef LONG_DOUBLE_TYPE_SIZE
-+#define LONG_DOUBLE_TYPE_SIZE (BITS_PER_WORD * 2)
-+#endif
-+
-+unsigned long
-+sparc_type_code (register tree type)
-+{
-+ register unsigned long qualifiers = 0;
-+ register unsigned shift;
-+
-+ /* Only the first 30 bits of the qualifier are valid. We must refrain from
-+ setting more, since some assemblers will give an error for this. Also,
-+ we must be careful to avoid shifts of 32 bits or more to avoid getting
-+ unpredictable results. */
-+
-+ for (shift = 6; shift < 30; shift += 2, type = TREE_TYPE (type))
-+ {
-+ switch (TREE_CODE (type))
-+ {
-+ case ERROR_MARK:
-+ return qualifiers;
-+
-+ case ARRAY_TYPE:
-+ qualifiers |= (3 << shift);
-+ break;
-+
-+ case FUNCTION_TYPE:
-+ case METHOD_TYPE:
-+ qualifiers |= (2 << shift);
-+ break;
-+
-+ case POINTER_TYPE:
-+ case REFERENCE_TYPE:
-+ case OFFSET_TYPE:
-+ qualifiers |= (1 << shift);
-+ break;
-+
-+ case RECORD_TYPE:
-+ return (qualifiers | 8);
-+
-+ case UNION_TYPE:
-+ case QUAL_UNION_TYPE:
-+ return (qualifiers | 9);
-+
-+ case ENUMERAL_TYPE:
-+ return (qualifiers | 10);
-+
-+ case VOID_TYPE:
-+ return (qualifiers | 16);
-+
-+ case INTEGER_TYPE:
-+ /* If this is a range type, consider it to be the underlying
-+ type. */
-+ if (TREE_TYPE (type) != 0)
-+ break;
-+
-+ /* Carefully distinguish all the standard types of C,
-+ without messing up if the language is not C. We do this by
-+ testing TYPE_PRECISION and TYPE_UNSIGNED. The old code used to
-+ look at both the names and the above fields, but that's redundant.
-+ Any type whose size is between two C types will be considered
-+ to be the wider of the two types. Also, we do not have a
-+ special code to use for "long long", so anything wider than
-+ long is treated the same. Note that we can't distinguish
-+ between "int" and "long" in this code if they are the same
-+ size, but that's fine, since neither can the assembler. */
-+
-+ if (TYPE_PRECISION (type) <= CHAR_TYPE_SIZE)
-+ return (qualifiers | (TYPE_UNSIGNED (type) ? 12 : 2));
-+
-+ else if (TYPE_PRECISION (type) <= SHORT_TYPE_SIZE)
-+ return (qualifiers | (TYPE_UNSIGNED (type) ? 13 : 3));
-+
-+ else if (TYPE_PRECISION (type) <= INT_TYPE_SIZE)
-+ return (qualifiers | (TYPE_UNSIGNED (type) ? 14 : 4));
-+
-+ else
-+ return (qualifiers | (TYPE_UNSIGNED (type) ? 15 : 5));
-+
-+ case REAL_TYPE:
-+ /* If this is a range type, consider it to be the underlying
-+ type. */
-+ if (TREE_TYPE (type) != 0)
-+ break;
-+
-+ /* Carefully distinguish all the standard types of C,
-+ without messing up if the language is not C. */
-+
-+ if (TYPE_PRECISION (type) == FLOAT_TYPE_SIZE)
-+ return (qualifiers | 6);
-+
-+ else
-+ return (qualifiers | 7);
-+
-+ case COMPLEX_TYPE: /* GNU Fortran COMPLEX type. */
-+ /* ??? We need to distinguish between double and float complex types,
-+ but I don't know how yet because I can't reach this code from
-+ existing front-ends. */
-+ return (qualifiers | 7); /* Who knows? */
-+
-+ case VECTOR_TYPE:
-+ case BOOLEAN_TYPE: /* Boolean truth value type. */
-+ case LANG_TYPE:
-+ case NULLPTR_TYPE:
-+ return qualifiers;
-+
-+ default:
-+ gcc_unreachable (); /* Not a type! */
-+ }
-+ }
-+
-+ return qualifiers;
-+}
-+
-+/* Nested function support. */
-+
-+/* Emit RTL insns to initialize the variable parts of a trampoline.
-+ FNADDR is an RTX for the address of the function's pure code.
-+ CXT is an RTX for the static chain value for the function.
-+
-+ This takes 16 insns: 2 shifts & 2 ands (to split up addresses), 4 sethi
-+ (to load in opcodes), 4 iors (to merge address and opcodes), and 4 writes
-+ (to store insns). This is a bit excessive. Perhaps a different
-+ mechanism would be better here.
-+
-+ Emit enough FLUSH insns to synchronize the data and instruction caches. */
-+
-+static void
-+sparc32_initialize_trampoline (rtx m_tramp, rtx fnaddr, rtx cxt)
-+{
-+ /* SPARC 32-bit trampoline:
-+
-+ sethi %hi(fn), %g1
-+ sethi %hi(static), %g2
-+ jmp %g1+%lo(fn)
-+ or %g2, %lo(static), %g2
-+
-+ SETHI i,r = 00rr rrr1 00ii iiii iiii iiii iiii iiii
-+ JMPL r+i,d = 10dd ddd1 1100 0rrr rr1i iiii iiii iiii
-+ */
-+
-+ emit_move_insn
-+ (adjust_address (m_tramp, SImode, 0),
-+ expand_binop (SImode, ior_optab,
-+ expand_shift (RSHIFT_EXPR, SImode, fnaddr, 10, 0, 1),
-+ GEN_INT (trunc_int_for_mode (0x03000000, SImode)),
-+ NULL_RTX, 1, OPTAB_DIRECT));
-+
-+ emit_move_insn
-+ (adjust_address (m_tramp, SImode, 4),
-+ expand_binop (SImode, ior_optab,
-+ expand_shift (RSHIFT_EXPR, SImode, cxt, 10, 0, 1),
-+ GEN_INT (trunc_int_for_mode (0x05000000, SImode)),
-+ NULL_RTX, 1, OPTAB_DIRECT));
-+
-+ emit_move_insn
-+ (adjust_address (m_tramp, SImode, 8),
-+ expand_binop (SImode, ior_optab,
-+ expand_and (SImode, fnaddr, GEN_INT (0x3ff), NULL_RTX),
-+ GEN_INT (trunc_int_for_mode (0x81c06000, SImode)),
-+ NULL_RTX, 1, OPTAB_DIRECT));
-+
-+ emit_move_insn
-+ (adjust_address (m_tramp, SImode, 12),
-+ expand_binop (SImode, ior_optab,
-+ expand_and (SImode, cxt, GEN_INT (0x3ff), NULL_RTX),
-+ GEN_INT (trunc_int_for_mode (0x8410a000, SImode)),
-+ NULL_RTX, 1, OPTAB_DIRECT));
-+
-+ /* On UltraSPARC a flush flushes an entire cache line. The trampoline is
-+ aligned on a 16 byte boundary so one flush clears it all. */
-+ emit_insn (gen_flushsi (validize_mem (adjust_address (m_tramp, SImode, 0))));
-+ if (sparc_cpu != PROCESSOR_ULTRASPARC
-+ && sparc_cpu != PROCESSOR_ULTRASPARC3
-+ && sparc_cpu != PROCESSOR_NIAGARA
-+ && sparc_cpu != PROCESSOR_NIAGARA2
-+ && sparc_cpu != PROCESSOR_NIAGARA3
-+ && sparc_cpu != PROCESSOR_NIAGARA4
-+ && sparc_cpu != PROCESSOR_NIAGARA7
-+ && sparc_cpu != PROCESSOR_M8)
-+ emit_insn (gen_flushsi (validize_mem (adjust_address (m_tramp, SImode, 8))));
-+
-+ /* Call __enable_execute_stack after writing onto the stack to make sure
-+ the stack address is accessible. */
-+#ifdef HAVE_ENABLE_EXECUTE_STACK
-+ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
-+ LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
-+#endif
-+
-+}
-+
-+/* The 64-bit version is simpler because it makes more sense to load the
-+ values as "immediate" data out of the trampoline. It's also easier since
-+ we can read the PC without clobbering a register. */
-+
-+static void
-+sparc64_initialize_trampoline (rtx m_tramp, rtx fnaddr, rtx cxt)
-+{
-+ /* SPARC 64-bit trampoline:
-+
-+ rd %pc, %g1
-+ ldx [%g1+24], %g5
-+ jmp %g5
-+ ldx [%g1+16], %g5
-+ +16 bytes data
-+ */
-+
-+ emit_move_insn (adjust_address (m_tramp, SImode, 0),
-+ GEN_INT (trunc_int_for_mode (0x83414000, SImode)));
-+ emit_move_insn (adjust_address (m_tramp, SImode, 4),
-+ GEN_INT (trunc_int_for_mode (0xca586018, SImode)));
-+ emit_move_insn (adjust_address (m_tramp, SImode, 8),
-+ GEN_INT (trunc_int_for_mode (0x81c14000, SImode)));
-+ emit_move_insn (adjust_address (m_tramp, SImode, 12),
-+ GEN_INT (trunc_int_for_mode (0xca586010, SImode)));
-+ emit_move_insn (adjust_address (m_tramp, DImode, 16), cxt);
-+ emit_move_insn (adjust_address (m_tramp, DImode, 24), fnaddr);
-+ emit_insn (gen_flushdi (validize_mem (adjust_address (m_tramp, DImode, 0))));
-+
-+ if (sparc_cpu != PROCESSOR_ULTRASPARC
-+ && sparc_cpu != PROCESSOR_ULTRASPARC3
-+ && sparc_cpu != PROCESSOR_NIAGARA
-+ && sparc_cpu != PROCESSOR_NIAGARA2
-+ && sparc_cpu != PROCESSOR_NIAGARA3
-+ && sparc_cpu != PROCESSOR_NIAGARA4
-+ && sparc_cpu != PROCESSOR_NIAGARA7
-+ && sparc_cpu != PROCESSOR_M8)
-+ emit_insn (gen_flushdi (validize_mem (adjust_address (m_tramp, DImode, 8))));
-+
-+ /* Call __enable_execute_stack after writing onto the stack to make sure
-+ the stack address is accessible. */
-+#ifdef HAVE_ENABLE_EXECUTE_STACK
-+ emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__enable_execute_stack"),
-+ LCT_NORMAL, VOIDmode, XEXP (m_tramp, 0), Pmode);
-+#endif
-+}
-+
-+/* Worker for TARGET_TRAMPOLINE_INIT. */
-+
-+static void
-+sparc_trampoline_init (rtx m_tramp, tree fndecl, rtx cxt)
-+{
-+ rtx fnaddr = force_reg (Pmode, XEXP (DECL_RTL (fndecl), 0));
-+ cxt = force_reg (Pmode, cxt);
-+ if (TARGET_ARCH64)
-+ sparc64_initialize_trampoline (m_tramp, fnaddr, cxt);
-+ else
-+ sparc32_initialize_trampoline (m_tramp, fnaddr, cxt);
-+}
-+
-+/* Adjust the cost of a scheduling dependency. Return the new cost of
-+ a dependency LINK or INSN on DEP_INSN. COST is the current cost. */
-+
-+static int
-+supersparc_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep_insn,
-+ int cost)
-+{
-+ enum attr_type insn_type;
-+
-+ if (recog_memoized (insn) < 0)
-+ return cost;
-+
-+ insn_type = get_attr_type (insn);
-+
-+ if (dep_type == 0)
-+ {
-+ /* Data dependency; DEP_INSN writes a register that INSN reads some
-+ cycles later. */
-+
-+ /* if a load, then the dependence must be on the memory address;
-+ add an extra "cycle". Note that the cost could be two cycles
-+ if the reg was written late in an instruction group; we ca not tell
-+ here. */
-+ if (insn_type == TYPE_LOAD || insn_type == TYPE_FPLOAD)
-+ return cost + 3;
-+
-+ /* Get the delay only if the address of the store is the dependence. */
-+ if (insn_type == TYPE_STORE || insn_type == TYPE_FPSTORE)
-+ {
-+ rtx pat = PATTERN(insn);
-+ rtx dep_pat = PATTERN (dep_insn);
-+
-+ if (GET_CODE (pat) != SET || GET_CODE (dep_pat) != SET)
-+ return cost; /* This should not happen! */
-+
-+ /* The dependency between the two instructions was on the data that
-+ is being stored. Assume that this implies that the address of the
-+ store is not dependent. */
-+ if (rtx_equal_p (SET_DEST (dep_pat), SET_SRC (pat)))
-+ return cost;
-+
-+ return cost + 3; /* An approximation. */
-+ }
-+
-+ /* A shift instruction cannot receive its data from an instruction
-+ in the same cycle; add a one cycle penalty. */
-+ if (insn_type == TYPE_SHIFT)
-+ return cost + 3; /* Split before cascade into shift. */
-+ }
-+ else
-+ {
-+ /* Anti- or output- dependency; DEP_INSN reads/writes a register that
-+ INSN writes some cycles later. */
-+
-+ /* These are only significant for the fpu unit; writing a fp reg before
-+ the fpu has finished with it stalls the processor. */
-+
-+ /* Reusing an integer register causes no problems. */
-+ if (insn_type == TYPE_IALU || insn_type == TYPE_SHIFT)
-+ return 0;
-+ }
-+
-+ return cost;
-+}
-+
-+static int
-+hypersparc_adjust_cost (rtx_insn *insn, int dtype, rtx_insn *dep_insn,
-+ int cost)
-+{
-+ enum attr_type insn_type, dep_type;
-+ rtx pat = PATTERN(insn);
-+ rtx dep_pat = PATTERN (dep_insn);
-+
-+ if (recog_memoized (insn) < 0 || recog_memoized (dep_insn) < 0)
-+ return cost;
-+
-+ insn_type = get_attr_type (insn);
-+ dep_type = get_attr_type (dep_insn);
-+
-+ switch (dtype)
-+ {
-+ case 0:
-+ /* Data dependency; DEP_INSN writes a register that INSN reads some
-+ cycles later. */
-+
-+ switch (insn_type)
-+ {
-+ case TYPE_STORE:
-+ case TYPE_FPSTORE:
-+ /* Get the delay iff the address of the store is the dependence. */
-+ if (GET_CODE (pat) != SET || GET_CODE (dep_pat) != SET)
-+ return cost;
-+
-+ if (rtx_equal_p (SET_DEST (dep_pat), SET_SRC (pat)))
-+ return cost;
-+ return cost + 3;
-+
-+ case TYPE_LOAD:
-+ case TYPE_SLOAD:
-+ case TYPE_FPLOAD:
-+ /* If a load, then the dependence must be on the memory address. If
-+ the addresses aren't equal, then it might be a false dependency */
-+ if (dep_type == TYPE_STORE || dep_type == TYPE_FPSTORE)
-+ {
-+ if (GET_CODE (pat) != SET || GET_CODE (dep_pat) != SET
-+ || GET_CODE (SET_DEST (dep_pat)) != MEM
-+ || GET_CODE (SET_SRC (pat)) != MEM
-+ || ! rtx_equal_p (XEXP (SET_DEST (dep_pat), 0),
-+ XEXP (SET_SRC (pat), 0)))
-+ return cost + 2;
-+
-+ return cost + 8;
-+ }
-+ break;
-+
-+ case TYPE_BRANCH:
-+ /* Compare to branch latency is 0. There is no benefit from
-+ separating compare and branch. */
-+ if (dep_type == TYPE_COMPARE)
-+ return 0;
-+ /* Floating point compare to branch latency is less than
-+ compare to conditional move. */
-+ if (dep_type == TYPE_FPCMP)
-+ return cost - 1;
-+ break;
-+ default:
-+ break;
-+ }
-+ break;
-+
-+ case REG_DEP_ANTI:
-+ /* Anti-dependencies only penalize the fpu unit. */
-+ if (insn_type == TYPE_IALU || insn_type == TYPE_SHIFT)
-+ return 0;
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ return cost;
-+}
-+
-+static int
-+sparc_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep, int cost,
-+ unsigned int)
-+{
-+ switch (sparc_cpu)
-+ {
-+ case PROCESSOR_SUPERSPARC:
-+ cost = supersparc_adjust_cost (insn, dep_type, dep, cost);
-+ break;
-+ case PROCESSOR_HYPERSPARC:
-+ case PROCESSOR_SPARCLITE86X:
-+ cost = hypersparc_adjust_cost (insn, dep_type, dep, cost);
-+ break;
-+ default:
-+ break;
-+ }
-+ return cost;
-+}
-+
-+static void
-+sparc_sched_init (FILE *dump ATTRIBUTE_UNUSED,
-+ int sched_verbose ATTRIBUTE_UNUSED,
-+ int max_ready ATTRIBUTE_UNUSED)
-+{}
-+
-+static int
-+sparc_use_sched_lookahead (void)
-+{
-+ switch (sparc_cpu)
-+ {
-+ case PROCESSOR_ULTRASPARC:
-+ case PROCESSOR_ULTRASPARC3:
-+ return 4;
-+ case PROCESSOR_SUPERSPARC:
-+ case PROCESSOR_HYPERSPARC:
-+ case PROCESSOR_SPARCLITE86X:
-+ return 3;
-+ case PROCESSOR_NIAGARA4:
-+ case PROCESSOR_NIAGARA7:
-+ case PROCESSOR_M8:
-+ return 2;
-+ case PROCESSOR_NIAGARA:
-+ case PROCESSOR_NIAGARA2:
-+ case PROCESSOR_NIAGARA3:
-+ default:
-+ return 0;
-+ }
-+}
-+
-+static int
-+sparc_issue_rate (void)
-+{
-+ switch (sparc_cpu)
-+ {
-+ case PROCESSOR_ULTRASPARC:
-+ case PROCESSOR_ULTRASPARC3:
-+ case PROCESSOR_M8:
-+ return 4;
-+ case PROCESSOR_SUPERSPARC:
-+ return 3;
-+ case PROCESSOR_HYPERSPARC:
-+ case PROCESSOR_SPARCLITE86X:
-+ case PROCESSOR_V9:
-+ /* Assume V9 processors are capable of at least dual-issue. */
-+ case PROCESSOR_NIAGARA4:
-+ case PROCESSOR_NIAGARA7:
-+ return 2;
-+ case PROCESSOR_NIAGARA:
-+ case PROCESSOR_NIAGARA2:
-+ case PROCESSOR_NIAGARA3:
-+ default:
-+ return 1;
-+ }
-+}
-+
-+int
-+sparc_branch_cost (bool speed_p, bool predictable_p)
-+{
-+ if (!speed_p)
-+ return 2;
-+
-+ /* For pre-V9 processors we use a single value (usually 3) to take into
-+ account the potential annulling of the delay slot (which ends up being
-+ a bubble in the pipeline slot) plus a cycle to take into consideration
-+ the instruction cache effects.
-+
-+ On V9 and later processors, which have branch prediction facilities,
-+ we take into account whether the branch is (easily) predictable. */
-+ const int cost = sparc_costs->branch_cost;
-+
-+ switch (sparc_cpu)
-+ {
-+ case PROCESSOR_V9:
-+ case PROCESSOR_ULTRASPARC:
-+ case PROCESSOR_ULTRASPARC3:
-+ case PROCESSOR_NIAGARA:
-+ case PROCESSOR_NIAGARA2:
-+ case PROCESSOR_NIAGARA3:
-+ case PROCESSOR_NIAGARA4:
-+ case PROCESSOR_NIAGARA7:
-+ case PROCESSOR_M8:
-+ return cost + (predictable_p ? 0 : 2);
-+
-+ default:
-+ return cost;
-+ }
-+}
-+
-+static int
-+set_extends (rtx_insn *insn)
-+{
-+ register rtx pat = PATTERN (insn);
-+
-+ switch (GET_CODE (SET_SRC (pat)))
-+ {
-+ /* Load and some shift instructions zero extend. */
-+ case MEM:
-+ case ZERO_EXTEND:
-+ /* sethi clears the high bits */
-+ case HIGH:
-+ /* LO_SUM is used with sethi. sethi cleared the high
-+ bits and the values used with lo_sum are positive */
-+ case LO_SUM:
-+ /* Store flag stores 0 or 1 */
-+ case LT: case LTU:
-+ case GT: case GTU:
-+ case LE: case LEU:
-+ case GE: case GEU:
-+ case EQ:
-+ case NE:
-+ return 1;
-+ case AND:
-+ {
-+ rtx op0 = XEXP (SET_SRC (pat), 0);
-+ rtx op1 = XEXP (SET_SRC (pat), 1);
-+ if (GET_CODE (op1) == CONST_INT)
-+ return INTVAL (op1) >= 0;
-+ if (GET_CODE (op0) != REG)
-+ return 0;
-+ if (sparc_check_64 (op0, insn) == 1)
-+ return 1;
-+ return (GET_CODE (op1) == REG && sparc_check_64 (op1, insn) == 1);
-+ }
-+ case IOR:
-+ case XOR:
-+ {
-+ rtx op0 = XEXP (SET_SRC (pat), 0);
-+ rtx op1 = XEXP (SET_SRC (pat), 1);
-+ if (GET_CODE (op0) != REG || sparc_check_64 (op0, insn) <= 0)
-+ return 0;
-+ if (GET_CODE (op1) == CONST_INT)
-+ return INTVAL (op1) >= 0;
-+ return (GET_CODE (op1) == REG && sparc_check_64 (op1, insn) == 1);
-+ }
-+ case LSHIFTRT:
-+ return GET_MODE (SET_SRC (pat)) == SImode;
-+ /* Positive integers leave the high bits zero. */
-+ case CONST_INT:
-+ return !(INTVAL (SET_SRC (pat)) & 0x80000000);
-+ case ASHIFTRT:
-+ case SIGN_EXTEND:
-+ return - (GET_MODE (SET_SRC (pat)) == SImode);
-+ case REG:
-+ return sparc_check_64 (SET_SRC (pat), insn);
-+ default:
-+ return 0;
-+ }
-+}
-+
-+/* We _ought_ to have only one kind per function, but... */
-+static GTY(()) rtx sparc_addr_diff_list;
-+static GTY(()) rtx sparc_addr_list;
-+
-+void
-+sparc_defer_case_vector (rtx lab, rtx vec, int diff)
-+{
-+ vec = gen_rtx_EXPR_LIST (VOIDmode, lab, vec);
-+ if (diff)
-+ sparc_addr_diff_list
-+ = gen_rtx_EXPR_LIST (VOIDmode, vec, sparc_addr_diff_list);
-+ else
-+ sparc_addr_list = gen_rtx_EXPR_LIST (VOIDmode, vec, sparc_addr_list);
-+}
-+
-+static void
-+sparc_output_addr_vec (rtx vec)
-+{
-+ rtx lab = XEXP (vec, 0), body = XEXP (vec, 1);
-+ int idx, vlen = XVECLEN (body, 0);
-+
-+#ifdef ASM_OUTPUT_ADDR_VEC_START
-+ ASM_OUTPUT_ADDR_VEC_START (asm_out_file);
-+#endif
-+
-+#ifdef ASM_OUTPUT_CASE_LABEL
-+ ASM_OUTPUT_CASE_LABEL (asm_out_file, "L", CODE_LABEL_NUMBER (lab),
-+ NEXT_INSN (lab));
-+#else
-+ (*targetm.asm_out.internal_label) (asm_out_file, "L", CODE_LABEL_NUMBER (lab));
-+#endif
-+
-+ for (idx = 0; idx < vlen; idx++)
-+ {
-+ ASM_OUTPUT_ADDR_VEC_ELT
-+ (asm_out_file, CODE_LABEL_NUMBER (XEXP (XVECEXP (body, 0, idx), 0)));
-+ }
-+
-+#ifdef ASM_OUTPUT_ADDR_VEC_END
-+ ASM_OUTPUT_ADDR_VEC_END (asm_out_file);
-+#endif
-+}
-+
-+static void
-+sparc_output_addr_diff_vec (rtx vec)
-+{
-+ rtx lab = XEXP (vec, 0), body = XEXP (vec, 1);
-+ rtx base = XEXP (XEXP (body, 0), 0);
-+ int idx, vlen = XVECLEN (body, 1);
-+
-+#ifdef ASM_OUTPUT_ADDR_VEC_START
-+ ASM_OUTPUT_ADDR_VEC_START (asm_out_file);
-+#endif
-+
-+#ifdef ASM_OUTPUT_CASE_LABEL
-+ ASM_OUTPUT_CASE_LABEL (asm_out_file, "L", CODE_LABEL_NUMBER (lab),
-+ NEXT_INSN (lab));
-+#else
-+ (*targetm.asm_out.internal_label) (asm_out_file, "L", CODE_LABEL_NUMBER (lab));
-+#endif
-+
-+ for (idx = 0; idx < vlen; idx++)
-+ {
-+ ASM_OUTPUT_ADDR_DIFF_ELT
-+ (asm_out_file,
-+ body,
-+ CODE_LABEL_NUMBER (XEXP (XVECEXP (body, 1, idx), 0)),
-+ CODE_LABEL_NUMBER (base));
-+ }
-+
-+#ifdef ASM_OUTPUT_ADDR_VEC_END
-+ ASM_OUTPUT_ADDR_VEC_END (asm_out_file);
-+#endif
-+}
-+
-+static void
-+sparc_output_deferred_case_vectors (void)
-+{
-+ rtx t;
-+ int align;
-+
-+ if (sparc_addr_list == NULL_RTX
-+ && sparc_addr_diff_list == NULL_RTX)
-+ return;
-+
-+ /* Align to cache line in the function's code section. */
-+ switch_to_section (current_function_section ());
-+
-+ align = floor_log2 (FUNCTION_BOUNDARY / BITS_PER_UNIT);
-+ if (align > 0)
-+ ASM_OUTPUT_ALIGN (asm_out_file, align);
-+
-+ for (t = sparc_addr_list; t ; t = XEXP (t, 1))
-+ sparc_output_addr_vec (XEXP (t, 0));
-+ for (t = sparc_addr_diff_list; t ; t = XEXP (t, 1))
-+ sparc_output_addr_diff_vec (XEXP (t, 0));
-+
-+ sparc_addr_list = sparc_addr_diff_list = NULL_RTX;
-+}
-+
-+/* Return 0 if the high 32 bits of X (the low word of X, if DImode) are
-+ unknown. Return 1 if the high bits are zero, -1 if the register is
-+ sign extended. */
-+int
-+sparc_check_64 (rtx x, rtx_insn *insn)
-+{
-+ /* If a register is set only once it is safe to ignore insns this
-+ code does not know how to handle. The loop will either recognize
-+ the single set and return the correct value or fail to recognize
-+ it and return 0. */
-+ int set_once = 0;
-+ rtx y = x;
-+
-+ gcc_assert (GET_CODE (x) == REG);
-+
-+ if (GET_MODE (x) == DImode)
-+ y = gen_rtx_REG (SImode, REGNO (x) + WORDS_BIG_ENDIAN);
-+
-+ if (flag_expensive_optimizations
-+ && df && DF_REG_DEF_COUNT (REGNO (y)) == 1)
-+ set_once = 1;
-+
-+ if (insn == 0)
-+ {
-+ if (set_once)
-+ insn = get_last_insn_anywhere ();
-+ else
-+ return 0;
-+ }
-+
-+ while ((insn = PREV_INSN (insn)))
-+ {
-+ switch (GET_CODE (insn))
-+ {
-+ case JUMP_INSN:
-+ case NOTE:
-+ break;
-+ case CODE_LABEL:
-+ case CALL_INSN:
-+ default:
-+ if (! set_once)
-+ return 0;
-+ break;
-+ case INSN:
-+ {
-+ rtx pat = PATTERN (insn);
-+ if (GET_CODE (pat) != SET)
-+ return 0;
-+ if (rtx_equal_p (x, SET_DEST (pat)))
-+ return set_extends (insn);
-+ if (y && rtx_equal_p (y, SET_DEST (pat)))
-+ return set_extends (insn);
-+ if (reg_overlap_mentioned_p (SET_DEST (pat), y))
-+ return 0;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+/* Output a wide shift instruction in V8+ mode. INSN is the instruction,
-+ OPERANDS are its operands and OPCODE is the mnemonic to be used. */
-+
-+const char *
-+output_v8plus_shift (rtx_insn *insn, rtx *operands, const char *opcode)
-+{
-+ static char asm_code[60];
-+
-+ /* The scratch register is only required when the destination
-+ register is not a 64-bit global or out register. */
-+ if (which_alternative != 2)
-+ operands[3] = operands[0];
-+
-+ /* We can only shift by constants <= 63. */
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
-+
-+ if (GET_CODE (operands[1]) == CONST_INT)
-+ {
-+ output_asm_insn ("mov\t%1, %3", operands);
-+ }
-+ else
-+ {
-+ output_asm_insn ("sllx\t%H1, 32, %3", operands);
-+ if (sparc_check_64 (operands[1], insn) <= 0)
-+ output_asm_insn ("srl\t%L1, 0, %L1", operands);
-+ output_asm_insn ("or\t%L1, %3, %3", operands);
-+ }
-+
-+ strcpy (asm_code, opcode);
-+
-+ if (which_alternative != 2)
-+ return strcat (asm_code, "\t%0, %2, %L0\n\tsrlx\t%L0, 32, %H0");
-+ else
-+ return
-+ strcat (asm_code, "\t%3, %2, %3\n\tsrlx\t%3, 32, %H0\n\tmov\t%3, %L0");
-+}
-+
-+/* Output rtl to increment the profiler label LABELNO
-+ for profiling a function entry. */
-+
-+void
-+sparc_profile_hook (int labelno)
-+{
-+ char buf[32];
-+ rtx lab, fun;
-+
-+ fun = gen_rtx_SYMBOL_REF (Pmode, MCOUNT_FUNCTION);
-+ if (NO_PROFILE_COUNTERS)
-+ {
-+ emit_library_call (fun, LCT_NORMAL, VOIDmode);
-+ }
-+ else
-+ {
-+ ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno);
-+ lab = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf));
-+ emit_library_call (fun, LCT_NORMAL, VOIDmode, lab, Pmode);
-+ }
-+}
-+
-+#ifdef TARGET_SOLARIS
-+/* Solaris implementation of TARGET_ASM_NAMED_SECTION. */
-+
-+static void
-+sparc_solaris_elf_asm_named_section (const char *name, unsigned int flags,
-+ tree decl ATTRIBUTE_UNUSED)
-+{
-+ if (HAVE_COMDAT_GROUP && flags & SECTION_LINKONCE)
-+ {
-+ solaris_elf_asm_comdat_section (name, flags, decl);
-+ return;
-+ }
-+
-+ fprintf (asm_out_file, "\t.section\t\"%s\"", name);
-+
-+ if (!(flags & SECTION_DEBUG))
-+ fputs (",#alloc", asm_out_file);
-+#if HAVE_GAS_SECTION_EXCLUDE
-+ if (flags & SECTION_EXCLUDE)
-+ fputs (",#exclude", asm_out_file);
-+#endif
-+ if (flags & SECTION_WRITE)
-+ fputs (",#write", asm_out_file);
-+ if (flags & SECTION_TLS)
-+ fputs (",#tls", asm_out_file);
-+ if (flags & SECTION_CODE)
-+ fputs (",#execinstr", asm_out_file);
-+
-+ if (flags & SECTION_NOTYPE)
-+ ;
-+ else if (flags & SECTION_BSS)
-+ fputs (",#nobits", asm_out_file);
-+ else
-+ fputs (",#progbits", asm_out_file);
-+
-+ fputc ('\n', asm_out_file);
-+}
-+#endif /* TARGET_SOLARIS */
-+
-+/* We do not allow indirect calls to be optimized into sibling calls.
-+
-+ We cannot use sibling calls when delayed branches are disabled
-+ because they will likely require the call delay slot to be filled.
-+
-+ Also, on SPARC 32-bit we cannot emit a sibling call when the
-+ current function returns a structure. This is because the "unimp
-+ after call" convention would cause the callee to return to the
-+ wrong place. The generic code already disallows cases where the
-+ function being called returns a structure.
-+
-+ It may seem strange how this last case could occur. Usually there
-+ is code after the call which jumps to epilogue code which dumps the
-+ return value into the struct return area. That ought to invalidate
-+ the sibling call right? Well, in the C++ case we can end up passing
-+ the pointer to the struct return area to a constructor (which returns
-+ void) and then nothing else happens. Such a sibling call would look
-+ valid without the added check here.
-+
-+ VxWorks PIC PLT entries require the global pointer to be initialized
-+ on entry. We therefore can't emit sibling calls to them. */
-+static bool
-+sparc_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
-+{
-+ return (decl
-+ && flag_delayed_branch
-+ && (TARGET_ARCH64 || ! cfun->returns_struct)
-+ && !(TARGET_VXWORKS_RTP
-+ && flag_pic
-+ && !targetm.binds_local_p (decl)));
-+}
-+
-+/* libfunc renaming. */
-+
-+static void
-+sparc_init_libfuncs (void)
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ /* Use the subroutines that Sun's library provides for integer
-+ multiply and divide. The `*' prevents an underscore from
-+ being prepended by the compiler. .umul is a little faster
-+ than .mul. */
-+ set_optab_libfunc (smul_optab, SImode, "*.umul");
-+ set_optab_libfunc (sdiv_optab, SImode, "*.div");
-+ set_optab_libfunc (udiv_optab, SImode, "*.udiv");
-+ set_optab_libfunc (smod_optab, SImode, "*.rem");
-+ set_optab_libfunc (umod_optab, SImode, "*.urem");
-+
-+ /* TFmode arithmetic. These names are part of the SPARC 32bit ABI. */
-+ set_optab_libfunc (add_optab, TFmode, "_Q_add");
-+ set_optab_libfunc (sub_optab, TFmode, "_Q_sub");
-+ set_optab_libfunc (neg_optab, TFmode, "_Q_neg");
-+ set_optab_libfunc (smul_optab, TFmode, "_Q_mul");
-+ set_optab_libfunc (sdiv_optab, TFmode, "_Q_div");
-+
-+ /* We can define the TFmode sqrt optab only if TARGET_FPU. This
-+ is because with soft-float, the SFmode and DFmode sqrt
-+ instructions will be absent, and the compiler will notice and
-+ try to use the TFmode sqrt instruction for calls to the
-+ builtin function sqrt, but this fails. */
-+ if (TARGET_FPU)
-+ set_optab_libfunc (sqrt_optab, TFmode, "_Q_sqrt");
-+
-+ set_optab_libfunc (eq_optab, TFmode, "_Q_feq");
-+ set_optab_libfunc (ne_optab, TFmode, "_Q_fne");
-+ set_optab_libfunc (gt_optab, TFmode, "_Q_fgt");
-+ set_optab_libfunc (ge_optab, TFmode, "_Q_fge");
-+ set_optab_libfunc (lt_optab, TFmode, "_Q_flt");
-+ set_optab_libfunc (le_optab, TFmode, "_Q_fle");
-+
-+ set_conv_libfunc (sext_optab, TFmode, SFmode, "_Q_stoq");
-+ set_conv_libfunc (sext_optab, TFmode, DFmode, "_Q_dtoq");
-+ set_conv_libfunc (trunc_optab, SFmode, TFmode, "_Q_qtos");
-+ set_conv_libfunc (trunc_optab, DFmode, TFmode, "_Q_qtod");
-+
-+ set_conv_libfunc (sfix_optab, SImode, TFmode, "_Q_qtoi");
-+ set_conv_libfunc (ufix_optab, SImode, TFmode, "_Q_qtou");
-+ set_conv_libfunc (sfloat_optab, TFmode, SImode, "_Q_itoq");
-+ set_conv_libfunc (ufloat_optab, TFmode, SImode, "_Q_utoq");
-+
-+ if (DITF_CONVERSION_LIBFUNCS)
-+ {
-+ set_conv_libfunc (sfix_optab, DImode, TFmode, "_Q_qtoll");
-+ set_conv_libfunc (ufix_optab, DImode, TFmode, "_Q_qtoull");
-+ set_conv_libfunc (sfloat_optab, TFmode, DImode, "_Q_lltoq");
-+ set_conv_libfunc (ufloat_optab, TFmode, DImode, "_Q_ulltoq");
-+ }
-+
-+ if (SUN_CONVERSION_LIBFUNCS)
-+ {
-+ set_conv_libfunc (sfix_optab, DImode, SFmode, "__ftoll");
-+ set_conv_libfunc (ufix_optab, DImode, SFmode, "__ftoull");
-+ set_conv_libfunc (sfix_optab, DImode, DFmode, "__dtoll");
-+ set_conv_libfunc (ufix_optab, DImode, DFmode, "__dtoull");
-+ }
-+ }
-+ if (TARGET_ARCH64)
-+ {
-+ /* In the SPARC 64bit ABI, SImode multiply and divide functions
-+ do not exist in the library. Make sure the compiler does not
-+ emit calls to them by accident. (It should always use the
-+ hardware instructions.) */
-+ set_optab_libfunc (smul_optab, SImode, 0);
-+ set_optab_libfunc (sdiv_optab, SImode, 0);
-+ set_optab_libfunc (udiv_optab, SImode, 0);
-+ set_optab_libfunc (smod_optab, SImode, 0);
-+ set_optab_libfunc (umod_optab, SImode, 0);
-+
-+ if (SUN_INTEGER_MULTIPLY_64)
-+ {
-+ set_optab_libfunc (smul_optab, DImode, "__mul64");
-+ set_optab_libfunc (sdiv_optab, DImode, "__div64");
-+ set_optab_libfunc (udiv_optab, DImode, "__udiv64");
-+ set_optab_libfunc (smod_optab, DImode, "__rem64");
-+ set_optab_libfunc (umod_optab, DImode, "__urem64");
-+ }
-+
-+ if (SUN_CONVERSION_LIBFUNCS)
-+ {
-+ set_conv_libfunc (sfix_optab, DImode, SFmode, "__ftol");
-+ set_conv_libfunc (ufix_optab, DImode, SFmode, "__ftoul");
-+ set_conv_libfunc (sfix_optab, DImode, DFmode, "__dtol");
-+ set_conv_libfunc (ufix_optab, DImode, DFmode, "__dtoul");
-+ }
-+ }
-+}
-+
-+/* SPARC builtins. */
-+enum sparc_builtins
-+{
-+ /* FPU builtins. */
-+ SPARC_BUILTIN_LDFSR,
-+ SPARC_BUILTIN_STFSR,
-+
-+ /* VIS 1.0 builtins. */
-+ SPARC_BUILTIN_FPACK16,
-+ SPARC_BUILTIN_FPACK32,
-+ SPARC_BUILTIN_FPACKFIX,
-+ SPARC_BUILTIN_FEXPAND,
-+ SPARC_BUILTIN_FPMERGE,
-+ SPARC_BUILTIN_FMUL8X16,
-+ SPARC_BUILTIN_FMUL8X16AU,
-+ SPARC_BUILTIN_FMUL8X16AL,
-+ SPARC_BUILTIN_FMUL8SUX16,
-+ SPARC_BUILTIN_FMUL8ULX16,
-+ SPARC_BUILTIN_FMULD8SUX16,
-+ SPARC_BUILTIN_FMULD8ULX16,
-+ SPARC_BUILTIN_FALIGNDATAV4HI,
-+ SPARC_BUILTIN_FALIGNDATAV8QI,
-+ SPARC_BUILTIN_FALIGNDATAV2SI,
-+ SPARC_BUILTIN_FALIGNDATADI,
-+ SPARC_BUILTIN_WRGSR,
-+ SPARC_BUILTIN_RDGSR,
-+ SPARC_BUILTIN_ALIGNADDR,
-+ SPARC_BUILTIN_ALIGNADDRL,
-+ SPARC_BUILTIN_PDIST,
-+ SPARC_BUILTIN_EDGE8,
-+ SPARC_BUILTIN_EDGE8L,
-+ SPARC_BUILTIN_EDGE16,
-+ SPARC_BUILTIN_EDGE16L,
-+ SPARC_BUILTIN_EDGE32,
-+ SPARC_BUILTIN_EDGE32L,
-+ SPARC_BUILTIN_FCMPLE16,
-+ SPARC_BUILTIN_FCMPLE32,
-+ SPARC_BUILTIN_FCMPNE16,
-+ SPARC_BUILTIN_FCMPNE32,
-+ SPARC_BUILTIN_FCMPGT16,
-+ SPARC_BUILTIN_FCMPGT32,
-+ SPARC_BUILTIN_FCMPEQ16,
-+ SPARC_BUILTIN_FCMPEQ32,
-+ SPARC_BUILTIN_FPADD16,
-+ SPARC_BUILTIN_FPADD16S,
-+ SPARC_BUILTIN_FPADD32,
-+ SPARC_BUILTIN_FPADD32S,
-+ SPARC_BUILTIN_FPSUB16,
-+ SPARC_BUILTIN_FPSUB16S,
-+ SPARC_BUILTIN_FPSUB32,
-+ SPARC_BUILTIN_FPSUB32S,
-+ SPARC_BUILTIN_ARRAY8,
-+ SPARC_BUILTIN_ARRAY16,
-+ SPARC_BUILTIN_ARRAY32,
-+
-+ /* VIS 2.0 builtins. */
-+ SPARC_BUILTIN_EDGE8N,
-+ SPARC_BUILTIN_EDGE8LN,
-+ SPARC_BUILTIN_EDGE16N,
-+ SPARC_BUILTIN_EDGE16LN,
-+ SPARC_BUILTIN_EDGE32N,
-+ SPARC_BUILTIN_EDGE32LN,
-+ SPARC_BUILTIN_BMASK,
-+ SPARC_BUILTIN_BSHUFFLEV4HI,
-+ SPARC_BUILTIN_BSHUFFLEV8QI,
-+ SPARC_BUILTIN_BSHUFFLEV2SI,
-+ SPARC_BUILTIN_BSHUFFLEDI,
-+
-+ /* VIS 3.0 builtins. */
-+ SPARC_BUILTIN_CMASK8,
-+ SPARC_BUILTIN_CMASK16,
-+ SPARC_BUILTIN_CMASK32,
-+ SPARC_BUILTIN_FCHKSM16,
-+ SPARC_BUILTIN_FSLL16,
-+ SPARC_BUILTIN_FSLAS16,
-+ SPARC_BUILTIN_FSRL16,
-+ SPARC_BUILTIN_FSRA16,
-+ SPARC_BUILTIN_FSLL32,
-+ SPARC_BUILTIN_FSLAS32,
-+ SPARC_BUILTIN_FSRL32,
-+ SPARC_BUILTIN_FSRA32,
-+ SPARC_BUILTIN_PDISTN,
-+ SPARC_BUILTIN_FMEAN16,
-+ SPARC_BUILTIN_FPADD64,
-+ SPARC_BUILTIN_FPSUB64,
-+ SPARC_BUILTIN_FPADDS16,
-+ SPARC_BUILTIN_FPADDS16S,
-+ SPARC_BUILTIN_FPSUBS16,
-+ SPARC_BUILTIN_FPSUBS16S,
-+ SPARC_BUILTIN_FPADDS32,
-+ SPARC_BUILTIN_FPADDS32S,
-+ SPARC_BUILTIN_FPSUBS32,
-+ SPARC_BUILTIN_FPSUBS32S,
-+ SPARC_BUILTIN_FUCMPLE8,
-+ SPARC_BUILTIN_FUCMPNE8,
-+ SPARC_BUILTIN_FUCMPGT8,
-+ SPARC_BUILTIN_FUCMPEQ8,
-+ SPARC_BUILTIN_FHADDS,
-+ SPARC_BUILTIN_FHADDD,
-+ SPARC_BUILTIN_FHSUBS,
-+ SPARC_BUILTIN_FHSUBD,
-+ SPARC_BUILTIN_FNHADDS,
-+ SPARC_BUILTIN_FNHADDD,
-+ SPARC_BUILTIN_UMULXHI,
-+ SPARC_BUILTIN_XMULX,
-+ SPARC_BUILTIN_XMULXHI,
-+
-+ /* VIS 4.0 builtins. */
-+ SPARC_BUILTIN_FPADD8,
-+ SPARC_BUILTIN_FPADDS8,
-+ SPARC_BUILTIN_FPADDUS8,
-+ SPARC_BUILTIN_FPADDUS16,
-+ SPARC_BUILTIN_FPCMPLE8,
-+ SPARC_BUILTIN_FPCMPGT8,
-+ SPARC_BUILTIN_FPCMPULE16,
-+ SPARC_BUILTIN_FPCMPUGT16,
-+ SPARC_BUILTIN_FPCMPULE32,
-+ SPARC_BUILTIN_FPCMPUGT32,
-+ SPARC_BUILTIN_FPMAX8,
-+ SPARC_BUILTIN_FPMAX16,
-+ SPARC_BUILTIN_FPMAX32,
-+ SPARC_BUILTIN_FPMAXU8,
-+ SPARC_BUILTIN_FPMAXU16,
-+ SPARC_BUILTIN_FPMAXU32,
-+ SPARC_BUILTIN_FPMIN8,
-+ SPARC_BUILTIN_FPMIN16,
-+ SPARC_BUILTIN_FPMIN32,
-+ SPARC_BUILTIN_FPMINU8,
-+ SPARC_BUILTIN_FPMINU16,
-+ SPARC_BUILTIN_FPMINU32,
-+ SPARC_BUILTIN_FPSUB8,
-+ SPARC_BUILTIN_FPSUBS8,
-+ SPARC_BUILTIN_FPSUBUS8,
-+ SPARC_BUILTIN_FPSUBUS16,
-+
-+ /* VIS 4.0B builtins. */
-+
-+ /* Note that all the DICTUNPACK* entries should be kept
-+ contiguous. */
-+ SPARC_BUILTIN_FIRST_DICTUNPACK,
-+ SPARC_BUILTIN_DICTUNPACK8 = SPARC_BUILTIN_FIRST_DICTUNPACK,
-+ SPARC_BUILTIN_DICTUNPACK16,
-+ SPARC_BUILTIN_DICTUNPACK32,
-+ SPARC_BUILTIN_LAST_DICTUNPACK = SPARC_BUILTIN_DICTUNPACK32,
-+
-+ /* Note that all the FPCMP*SHL entries should be kept
-+ contiguous. */
-+ SPARC_BUILTIN_FIRST_FPCMPSHL,
-+ SPARC_BUILTIN_FPCMPLE8SHL = SPARC_BUILTIN_FIRST_FPCMPSHL,
-+ SPARC_BUILTIN_FPCMPGT8SHL,
-+ SPARC_BUILTIN_FPCMPEQ8SHL,
-+ SPARC_BUILTIN_FPCMPNE8SHL,
-+ SPARC_BUILTIN_FPCMPLE16SHL,
-+ SPARC_BUILTIN_FPCMPGT16SHL,
-+ SPARC_BUILTIN_FPCMPEQ16SHL,
-+ SPARC_BUILTIN_FPCMPNE16SHL,
-+ SPARC_BUILTIN_FPCMPLE32SHL,
-+ SPARC_BUILTIN_FPCMPGT32SHL,
-+ SPARC_BUILTIN_FPCMPEQ32SHL,
-+ SPARC_BUILTIN_FPCMPNE32SHL,
-+ SPARC_BUILTIN_FPCMPULE8SHL,
-+ SPARC_BUILTIN_FPCMPUGT8SHL,
-+ SPARC_BUILTIN_FPCMPULE16SHL,
-+ SPARC_BUILTIN_FPCMPUGT16SHL,
-+ SPARC_BUILTIN_FPCMPULE32SHL,
-+ SPARC_BUILTIN_FPCMPUGT32SHL,
-+ SPARC_BUILTIN_FPCMPDE8SHL,
-+ SPARC_BUILTIN_FPCMPDE16SHL,
-+ SPARC_BUILTIN_FPCMPDE32SHL,
-+ SPARC_BUILTIN_FPCMPUR8SHL,
-+ SPARC_BUILTIN_FPCMPUR16SHL,
-+ SPARC_BUILTIN_FPCMPUR32SHL,
-+ SPARC_BUILTIN_LAST_FPCMPSHL = SPARC_BUILTIN_FPCMPUR32SHL,
-+
-+ SPARC_BUILTIN_MAX
-+};
-+
-+static GTY (()) tree sparc_builtins[(int) SPARC_BUILTIN_MAX];
-+static enum insn_code sparc_builtins_icode[(int) SPARC_BUILTIN_MAX];
-+
-+/* Return true if OPVAL can be used for operand OPNUM of instruction ICODE.
-+ The instruction should require a constant operand of some sort. The
-+ function prints an error if OPVAL is not valid. */
-+
-+static int
-+check_constant_argument (enum insn_code icode, int opnum, rtx opval)
-+{
-+ if (GET_CODE (opval) != CONST_INT)
-+ {
-+ error ("%qs expects a constant argument", insn_data[icode].name);
-+ return false;
-+ }
-+
-+ if (!(*insn_data[icode].operand[opnum].predicate) (opval, VOIDmode))
-+ {
-+ error ("constant argument out of range for %qs", insn_data[icode].name);
-+ return false;
-+ }
-+ return true;
-+}
-+
-+/* Add a SPARC builtin function with NAME, ICODE, CODE and TYPE. Return the
-+ function decl or NULL_TREE if the builtin was not added. */
-+
-+static tree
-+def_builtin (const char *name, enum insn_code icode, enum sparc_builtins code,
-+ tree type)
-+{
-+ tree t
-+ = add_builtin_function (name, type, code, BUILT_IN_MD, NULL, NULL_TREE);
-+
-+ if (t)
-+ {
-+ sparc_builtins[code] = t;
-+ sparc_builtins_icode[code] = icode;
-+ }
-+
-+ return t;
-+}
-+
-+/* Likewise, but also marks the function as "const". */
-+
-+static tree
-+def_builtin_const (const char *name, enum insn_code icode,
-+ enum sparc_builtins code, tree type)
-+{
-+ tree t = def_builtin (name, icode, code, type);
-+
-+ if (t)
-+ TREE_READONLY (t) = 1;
-+
-+ return t;
-+}
-+
-+/* Implement the TARGET_INIT_BUILTINS target hook.
-+ Create builtin functions for special SPARC instructions. */
-+
-+static void
-+sparc_init_builtins (void)
-+{
-+ if (TARGET_FPU)
-+ sparc_fpu_init_builtins ();
-+
-+ if (TARGET_VIS)
-+ sparc_vis_init_builtins ();
-+}
-+
-+/* Create builtin functions for FPU instructions. */
-+
-+static void
-+sparc_fpu_init_builtins (void)
-+{
-+ tree ftype
-+ = build_function_type_list (void_type_node,
-+ build_pointer_type (unsigned_type_node), 0);
-+ def_builtin ("__builtin_load_fsr", CODE_FOR_ldfsr,
-+ SPARC_BUILTIN_LDFSR, ftype);
-+ def_builtin ("__builtin_store_fsr", CODE_FOR_stfsr,
-+ SPARC_BUILTIN_STFSR, ftype);
-+}
-+
-+/* Create builtin functions for VIS instructions. */
-+
-+static void
-+sparc_vis_init_builtins (void)
-+{
-+ tree v4qi = build_vector_type (unsigned_intQI_type_node, 4);
-+ tree v8qi = build_vector_type (unsigned_intQI_type_node, 8);
-+ tree v4hi = build_vector_type (intHI_type_node, 4);
-+ tree v2hi = build_vector_type (intHI_type_node, 2);
-+ tree v2si = build_vector_type (intSI_type_node, 2);
-+ tree v1si = build_vector_type (intSI_type_node, 1);
-+
-+ tree v4qi_ftype_v4hi = build_function_type_list (v4qi, v4hi, 0);
-+ tree v8qi_ftype_v2si_v8qi = build_function_type_list (v8qi, v2si, v8qi, 0);
-+ tree v2hi_ftype_v2si = build_function_type_list (v2hi, v2si, 0);
-+ tree v4hi_ftype_v4qi = build_function_type_list (v4hi, v4qi, 0);
-+ tree v8qi_ftype_v4qi_v4qi = build_function_type_list (v8qi, v4qi, v4qi, 0);
-+ tree v4hi_ftype_v4qi_v4hi = build_function_type_list (v4hi, v4qi, v4hi, 0);
-+ tree v4hi_ftype_v4qi_v2hi = build_function_type_list (v4hi, v4qi, v2hi, 0);
-+ tree v2si_ftype_v4qi_v2hi = build_function_type_list (v2si, v4qi, v2hi, 0);
-+ tree v4hi_ftype_v8qi_v4hi = build_function_type_list (v4hi, v8qi, v4hi, 0);
-+ tree v4hi_ftype_v4hi_v4hi = build_function_type_list (v4hi, v4hi, v4hi, 0);
-+ tree v2si_ftype_v2si_v2si = build_function_type_list (v2si, v2si, v2si, 0);
-+ tree v8qi_ftype_v8qi_v8qi = build_function_type_list (v8qi, v8qi, v8qi, 0);
-+ tree v2hi_ftype_v2hi_v2hi = build_function_type_list (v2hi, v2hi, v2hi, 0);
-+ tree v1si_ftype_v1si_v1si = build_function_type_list (v1si, v1si, v1si, 0);
-+ tree di_ftype_v8qi_v8qi_di = build_function_type_list (intDI_type_node,
-+ v8qi, v8qi,
-+ intDI_type_node, 0);
-+ tree di_ftype_v8qi_v8qi = build_function_type_list (intDI_type_node,
-+ v8qi, v8qi, 0);
-+ tree si_ftype_v8qi_v8qi = build_function_type_list (intSI_type_node,
-+ v8qi, v8qi, 0);
-+ tree v8qi_ftype_df_si = build_function_type_list (v8qi, double_type_node,
-+ intSI_type_node, 0);
-+ tree v4hi_ftype_df_si = build_function_type_list (v4hi, double_type_node,
-+ intSI_type_node, 0);
-+ tree v2si_ftype_df_si = build_function_type_list (v2si, double_type_node,
-+ intDI_type_node, 0);
-+ tree di_ftype_di_di = build_function_type_list (intDI_type_node,
-+ intDI_type_node,
-+ intDI_type_node, 0);
-+ tree si_ftype_si_si = build_function_type_list (intSI_type_node,
-+ intSI_type_node,
-+ intSI_type_node, 0);
-+ tree ptr_ftype_ptr_si = build_function_type_list (ptr_type_node,
-+ ptr_type_node,
-+ intSI_type_node, 0);
-+ tree ptr_ftype_ptr_di = build_function_type_list (ptr_type_node,
-+ ptr_type_node,
-+ intDI_type_node, 0);
-+ tree si_ftype_ptr_ptr = build_function_type_list (intSI_type_node,
-+ ptr_type_node,
-+ ptr_type_node, 0);
-+ tree di_ftype_ptr_ptr = build_function_type_list (intDI_type_node,
-+ ptr_type_node,
-+ ptr_type_node, 0);
-+ tree si_ftype_v4hi_v4hi = build_function_type_list (intSI_type_node,
-+ v4hi, v4hi, 0);
-+ tree si_ftype_v2si_v2si = build_function_type_list (intSI_type_node,
-+ v2si, v2si, 0);
-+ tree di_ftype_v4hi_v4hi = build_function_type_list (intDI_type_node,
-+ v4hi, v4hi, 0);
-+ tree di_ftype_v2si_v2si = build_function_type_list (intDI_type_node,
-+ v2si, v2si, 0);
-+ tree void_ftype_di = build_function_type_list (void_type_node,
-+ intDI_type_node, 0);
-+ tree di_ftype_void = build_function_type_list (intDI_type_node,
-+ void_type_node, 0);
-+ tree void_ftype_si = build_function_type_list (void_type_node,
-+ intSI_type_node, 0);
-+ tree sf_ftype_sf_sf = build_function_type_list (float_type_node,
-+ float_type_node,
-+ float_type_node, 0);
-+ tree df_ftype_df_df = build_function_type_list (double_type_node,
-+ double_type_node,
-+ double_type_node, 0);
-+
-+ /* Packing and expanding vectors. */
-+ def_builtin ("__builtin_vis_fpack16", CODE_FOR_fpack16_vis,
-+ SPARC_BUILTIN_FPACK16, v4qi_ftype_v4hi);
-+ def_builtin ("__builtin_vis_fpack32", CODE_FOR_fpack32_vis,
-+ SPARC_BUILTIN_FPACK32, v8qi_ftype_v2si_v8qi);
-+ def_builtin ("__builtin_vis_fpackfix", CODE_FOR_fpackfix_vis,
-+ SPARC_BUILTIN_FPACKFIX, v2hi_ftype_v2si);
-+ def_builtin_const ("__builtin_vis_fexpand", CODE_FOR_fexpand_vis,
-+ SPARC_BUILTIN_FEXPAND, v4hi_ftype_v4qi);
-+ def_builtin_const ("__builtin_vis_fpmerge", CODE_FOR_fpmerge_vis,
-+ SPARC_BUILTIN_FPMERGE, v8qi_ftype_v4qi_v4qi);
-+
-+ /* Multiplications. */
-+ def_builtin_const ("__builtin_vis_fmul8x16", CODE_FOR_fmul8x16_vis,
-+ SPARC_BUILTIN_FMUL8X16, v4hi_ftype_v4qi_v4hi);
-+ def_builtin_const ("__builtin_vis_fmul8x16au", CODE_FOR_fmul8x16au_vis,
-+ SPARC_BUILTIN_FMUL8X16AU, v4hi_ftype_v4qi_v2hi);
-+ def_builtin_const ("__builtin_vis_fmul8x16al", CODE_FOR_fmul8x16al_vis,
-+ SPARC_BUILTIN_FMUL8X16AL, v4hi_ftype_v4qi_v2hi);
-+ def_builtin_const ("__builtin_vis_fmul8sux16", CODE_FOR_fmul8sux16_vis,
-+ SPARC_BUILTIN_FMUL8SUX16, v4hi_ftype_v8qi_v4hi);
-+ def_builtin_const ("__builtin_vis_fmul8ulx16", CODE_FOR_fmul8ulx16_vis,
-+ SPARC_BUILTIN_FMUL8ULX16, v4hi_ftype_v8qi_v4hi);
-+ def_builtin_const ("__builtin_vis_fmuld8sux16", CODE_FOR_fmuld8sux16_vis,
-+ SPARC_BUILTIN_FMULD8SUX16, v2si_ftype_v4qi_v2hi);
-+ def_builtin_const ("__builtin_vis_fmuld8ulx16", CODE_FOR_fmuld8ulx16_vis,
-+ SPARC_BUILTIN_FMULD8ULX16, v2si_ftype_v4qi_v2hi);
-+
-+ /* Data aligning. */
-+ def_builtin ("__builtin_vis_faligndatav4hi", CODE_FOR_faligndatav4hi_vis,
-+ SPARC_BUILTIN_FALIGNDATAV4HI, v4hi_ftype_v4hi_v4hi);
-+ def_builtin ("__builtin_vis_faligndatav8qi", CODE_FOR_faligndatav8qi_vis,
-+ SPARC_BUILTIN_FALIGNDATAV8QI, v8qi_ftype_v8qi_v8qi);
-+ def_builtin ("__builtin_vis_faligndatav2si", CODE_FOR_faligndatav2si_vis,
-+ SPARC_BUILTIN_FALIGNDATAV2SI, v2si_ftype_v2si_v2si);
-+ def_builtin ("__builtin_vis_faligndatadi", CODE_FOR_faligndatav1di_vis,
-+ SPARC_BUILTIN_FALIGNDATADI, di_ftype_di_di);
-+
-+ def_builtin ("__builtin_vis_write_gsr", CODE_FOR_wrgsr_vis,
-+ SPARC_BUILTIN_WRGSR, void_ftype_di);
-+ def_builtin ("__builtin_vis_read_gsr", CODE_FOR_rdgsr_vis,
-+ SPARC_BUILTIN_RDGSR, di_ftype_void);
-+
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin ("__builtin_vis_alignaddr", CODE_FOR_alignaddrdi_vis,
-+ SPARC_BUILTIN_ALIGNADDR, ptr_ftype_ptr_di);
-+ def_builtin ("__builtin_vis_alignaddrl", CODE_FOR_alignaddrldi_vis,
-+ SPARC_BUILTIN_ALIGNADDRL, ptr_ftype_ptr_di);
-+ }
-+ else
-+ {
-+ def_builtin ("__builtin_vis_alignaddr", CODE_FOR_alignaddrsi_vis,
-+ SPARC_BUILTIN_ALIGNADDR, ptr_ftype_ptr_si);
-+ def_builtin ("__builtin_vis_alignaddrl", CODE_FOR_alignaddrlsi_vis,
-+ SPARC_BUILTIN_ALIGNADDRL, ptr_ftype_ptr_si);
-+ }
-+
-+ /* Pixel distance. */
-+ def_builtin_const ("__builtin_vis_pdist", CODE_FOR_pdist_vis,
-+ SPARC_BUILTIN_PDIST, di_ftype_v8qi_v8qi_di);
-+
-+ /* Edge handling. */
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin_const ("__builtin_vis_edge8", CODE_FOR_edge8di_vis,
-+ SPARC_BUILTIN_EDGE8, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge8l", CODE_FOR_edge8ldi_vis,
-+ SPARC_BUILTIN_EDGE8L, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16", CODE_FOR_edge16di_vis,
-+ SPARC_BUILTIN_EDGE16, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16l", CODE_FOR_edge16ldi_vis,
-+ SPARC_BUILTIN_EDGE16L, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32", CODE_FOR_edge32di_vis,
-+ SPARC_BUILTIN_EDGE32, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32l", CODE_FOR_edge32ldi_vis,
-+ SPARC_BUILTIN_EDGE32L, di_ftype_ptr_ptr);
-+ }
-+ else
-+ {
-+ def_builtin_const ("__builtin_vis_edge8", CODE_FOR_edge8si_vis,
-+ SPARC_BUILTIN_EDGE8, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge8l", CODE_FOR_edge8lsi_vis,
-+ SPARC_BUILTIN_EDGE8L, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16", CODE_FOR_edge16si_vis,
-+ SPARC_BUILTIN_EDGE16, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16l", CODE_FOR_edge16lsi_vis,
-+ SPARC_BUILTIN_EDGE16L, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32", CODE_FOR_edge32si_vis,
-+ SPARC_BUILTIN_EDGE32, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32l", CODE_FOR_edge32lsi_vis,
-+ SPARC_BUILTIN_EDGE32L, si_ftype_ptr_ptr);
-+ }
-+
-+ /* Pixel compare. */
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin_const ("__builtin_vis_fcmple16", CODE_FOR_fcmple16di_vis,
-+ SPARC_BUILTIN_FCMPLE16, di_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmple32", CODE_FOR_fcmple32di_vis,
-+ SPARC_BUILTIN_FCMPLE32, di_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fcmpne16", CODE_FOR_fcmpne16di_vis,
-+ SPARC_BUILTIN_FCMPNE16, di_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmpne32", CODE_FOR_fcmpne32di_vis,
-+ SPARC_BUILTIN_FCMPNE32, di_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fcmpgt16", CODE_FOR_fcmpgt16di_vis,
-+ SPARC_BUILTIN_FCMPGT16, di_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmpgt32", CODE_FOR_fcmpgt32di_vis,
-+ SPARC_BUILTIN_FCMPGT32, di_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fcmpeq16", CODE_FOR_fcmpeq16di_vis,
-+ SPARC_BUILTIN_FCMPEQ16, di_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmpeq32", CODE_FOR_fcmpeq32di_vis,
-+ SPARC_BUILTIN_FCMPEQ32, di_ftype_v2si_v2si);
-+ }
-+ else
-+ {
-+ def_builtin_const ("__builtin_vis_fcmple16", CODE_FOR_fcmple16si_vis,
-+ SPARC_BUILTIN_FCMPLE16, si_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmple32", CODE_FOR_fcmple32si_vis,
-+ SPARC_BUILTIN_FCMPLE32, si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fcmpne16", CODE_FOR_fcmpne16si_vis,
-+ SPARC_BUILTIN_FCMPNE16, si_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmpne32", CODE_FOR_fcmpne32si_vis,
-+ SPARC_BUILTIN_FCMPNE32, si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fcmpgt16", CODE_FOR_fcmpgt16si_vis,
-+ SPARC_BUILTIN_FCMPGT16, si_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmpgt32", CODE_FOR_fcmpgt32si_vis,
-+ SPARC_BUILTIN_FCMPGT32, si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fcmpeq16", CODE_FOR_fcmpeq16si_vis,
-+ SPARC_BUILTIN_FCMPEQ16, si_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fcmpeq32", CODE_FOR_fcmpeq32si_vis,
-+ SPARC_BUILTIN_FCMPEQ32, si_ftype_v2si_v2si);
-+ }
-+
-+ /* Addition and subtraction. */
-+ def_builtin_const ("__builtin_vis_fpadd16", CODE_FOR_addv4hi3,
-+ SPARC_BUILTIN_FPADD16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpadd16s", CODE_FOR_addv2hi3,
-+ SPARC_BUILTIN_FPADD16S, v2hi_ftype_v2hi_v2hi);
-+ def_builtin_const ("__builtin_vis_fpadd32", CODE_FOR_addv2si3,
-+ SPARC_BUILTIN_FPADD32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpadd32s", CODE_FOR_addv1si3,
-+ SPARC_BUILTIN_FPADD32S, v1si_ftype_v1si_v1si);
-+ def_builtin_const ("__builtin_vis_fpsub16", CODE_FOR_subv4hi3,
-+ SPARC_BUILTIN_FPSUB16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpsub16s", CODE_FOR_subv2hi3,
-+ SPARC_BUILTIN_FPSUB16S, v2hi_ftype_v2hi_v2hi);
-+ def_builtin_const ("__builtin_vis_fpsub32", CODE_FOR_subv2si3,
-+ SPARC_BUILTIN_FPSUB32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpsub32s", CODE_FOR_subv1si3,
-+ SPARC_BUILTIN_FPSUB32S, v1si_ftype_v1si_v1si);
-+
-+ /* Three-dimensional array addressing. */
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin_const ("__builtin_vis_array8", CODE_FOR_array8di_vis,
-+ SPARC_BUILTIN_ARRAY8, di_ftype_di_di);
-+ def_builtin_const ("__builtin_vis_array16", CODE_FOR_array16di_vis,
-+ SPARC_BUILTIN_ARRAY16, di_ftype_di_di);
-+ def_builtin_const ("__builtin_vis_array32", CODE_FOR_array32di_vis,
-+ SPARC_BUILTIN_ARRAY32, di_ftype_di_di);
-+ }
-+ else
-+ {
-+ def_builtin_const ("__builtin_vis_array8", CODE_FOR_array8si_vis,
-+ SPARC_BUILTIN_ARRAY8, si_ftype_si_si);
-+ def_builtin_const ("__builtin_vis_array16", CODE_FOR_array16si_vis,
-+ SPARC_BUILTIN_ARRAY16, si_ftype_si_si);
-+ def_builtin_const ("__builtin_vis_array32", CODE_FOR_array32si_vis,
-+ SPARC_BUILTIN_ARRAY32, si_ftype_si_si);
-+ }
-+
-+ if (TARGET_VIS2)
-+ {
-+ /* Edge handling. */
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin_const ("__builtin_vis_edge8n", CODE_FOR_edge8ndi_vis,
-+ SPARC_BUILTIN_EDGE8N, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge8ln", CODE_FOR_edge8lndi_vis,
-+ SPARC_BUILTIN_EDGE8LN, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16n", CODE_FOR_edge16ndi_vis,
-+ SPARC_BUILTIN_EDGE16N, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16ln", CODE_FOR_edge16lndi_vis,
-+ SPARC_BUILTIN_EDGE16LN, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32n", CODE_FOR_edge32ndi_vis,
-+ SPARC_BUILTIN_EDGE32N, di_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32ln", CODE_FOR_edge32lndi_vis,
-+ SPARC_BUILTIN_EDGE32LN, di_ftype_ptr_ptr);
-+ }
-+ else
-+ {
-+ def_builtin_const ("__builtin_vis_edge8n", CODE_FOR_edge8nsi_vis,
-+ SPARC_BUILTIN_EDGE8N, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge8ln", CODE_FOR_edge8lnsi_vis,
-+ SPARC_BUILTIN_EDGE8LN, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16n", CODE_FOR_edge16nsi_vis,
-+ SPARC_BUILTIN_EDGE16N, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge16ln", CODE_FOR_edge16lnsi_vis,
-+ SPARC_BUILTIN_EDGE16LN, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32n", CODE_FOR_edge32nsi_vis,
-+ SPARC_BUILTIN_EDGE32N, si_ftype_ptr_ptr);
-+ def_builtin_const ("__builtin_vis_edge32ln", CODE_FOR_edge32lnsi_vis,
-+ SPARC_BUILTIN_EDGE32LN, si_ftype_ptr_ptr);
-+ }
-+
-+ /* Byte mask and shuffle. */
-+ if (TARGET_ARCH64)
-+ def_builtin ("__builtin_vis_bmask", CODE_FOR_bmaskdi_vis,
-+ SPARC_BUILTIN_BMASK, di_ftype_di_di);
-+ else
-+ def_builtin ("__builtin_vis_bmask", CODE_FOR_bmasksi_vis,
-+ SPARC_BUILTIN_BMASK, si_ftype_si_si);
-+ def_builtin ("__builtin_vis_bshufflev4hi", CODE_FOR_bshufflev4hi_vis,
-+ SPARC_BUILTIN_BSHUFFLEV4HI, v4hi_ftype_v4hi_v4hi);
-+ def_builtin ("__builtin_vis_bshufflev8qi", CODE_FOR_bshufflev8qi_vis,
-+ SPARC_BUILTIN_BSHUFFLEV8QI, v8qi_ftype_v8qi_v8qi);
-+ def_builtin ("__builtin_vis_bshufflev2si", CODE_FOR_bshufflev2si_vis,
-+ SPARC_BUILTIN_BSHUFFLEV2SI, v2si_ftype_v2si_v2si);
-+ def_builtin ("__builtin_vis_bshuffledi", CODE_FOR_bshufflev1di_vis,
-+ SPARC_BUILTIN_BSHUFFLEDI, di_ftype_di_di);
-+ }
-+
-+ if (TARGET_VIS3)
-+ {
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin ("__builtin_vis_cmask8", CODE_FOR_cmask8di_vis,
-+ SPARC_BUILTIN_CMASK8, void_ftype_di);
-+ def_builtin ("__builtin_vis_cmask16", CODE_FOR_cmask16di_vis,
-+ SPARC_BUILTIN_CMASK16, void_ftype_di);
-+ def_builtin ("__builtin_vis_cmask32", CODE_FOR_cmask32di_vis,
-+ SPARC_BUILTIN_CMASK32, void_ftype_di);
-+ }
-+ else
-+ {
-+ def_builtin ("__builtin_vis_cmask8", CODE_FOR_cmask8si_vis,
-+ SPARC_BUILTIN_CMASK8, void_ftype_si);
-+ def_builtin ("__builtin_vis_cmask16", CODE_FOR_cmask16si_vis,
-+ SPARC_BUILTIN_CMASK16, void_ftype_si);
-+ def_builtin ("__builtin_vis_cmask32", CODE_FOR_cmask32si_vis,
-+ SPARC_BUILTIN_CMASK32, void_ftype_si);
-+ }
-+
-+ def_builtin_const ("__builtin_vis_fchksm16", CODE_FOR_fchksm16_vis,
-+ SPARC_BUILTIN_FCHKSM16, v4hi_ftype_v4hi_v4hi);
-+
-+ def_builtin_const ("__builtin_vis_fsll16", CODE_FOR_vashlv4hi3,
-+ SPARC_BUILTIN_FSLL16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fslas16", CODE_FOR_vssashlv4hi3,
-+ SPARC_BUILTIN_FSLAS16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fsrl16", CODE_FOR_vlshrv4hi3,
-+ SPARC_BUILTIN_FSRL16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fsra16", CODE_FOR_vashrv4hi3,
-+ SPARC_BUILTIN_FSRA16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fsll32", CODE_FOR_vashlv2si3,
-+ SPARC_BUILTIN_FSLL32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fslas32", CODE_FOR_vssashlv2si3,
-+ SPARC_BUILTIN_FSLAS32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fsrl32", CODE_FOR_vlshrv2si3,
-+ SPARC_BUILTIN_FSRL32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fsra32", CODE_FOR_vashrv2si3,
-+ SPARC_BUILTIN_FSRA32, v2si_ftype_v2si_v2si);
-+
-+ if (TARGET_ARCH64)
-+ def_builtin_const ("__builtin_vis_pdistn", CODE_FOR_pdistndi_vis,
-+ SPARC_BUILTIN_PDISTN, di_ftype_v8qi_v8qi);
-+ else
-+ def_builtin_const ("__builtin_vis_pdistn", CODE_FOR_pdistnsi_vis,
-+ SPARC_BUILTIN_PDISTN, si_ftype_v8qi_v8qi);
-+
-+ def_builtin_const ("__builtin_vis_fmean16", CODE_FOR_fmean16_vis,
-+ SPARC_BUILTIN_FMEAN16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpadd64", CODE_FOR_fpadd64_vis,
-+ SPARC_BUILTIN_FPADD64, di_ftype_di_di);
-+ def_builtin_const ("__builtin_vis_fpsub64", CODE_FOR_fpsub64_vis,
-+ SPARC_BUILTIN_FPSUB64, di_ftype_di_di);
-+
-+ def_builtin_const ("__builtin_vis_fpadds16", CODE_FOR_ssaddv4hi3,
-+ SPARC_BUILTIN_FPADDS16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpadds16s", CODE_FOR_ssaddv2hi3,
-+ SPARC_BUILTIN_FPADDS16S, v2hi_ftype_v2hi_v2hi);
-+ def_builtin_const ("__builtin_vis_fpsubs16", CODE_FOR_sssubv4hi3,
-+ SPARC_BUILTIN_FPSUBS16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpsubs16s", CODE_FOR_sssubv2hi3,
-+ SPARC_BUILTIN_FPSUBS16S, v2hi_ftype_v2hi_v2hi);
-+ def_builtin_const ("__builtin_vis_fpadds32", CODE_FOR_ssaddv2si3,
-+ SPARC_BUILTIN_FPADDS32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpadds32s", CODE_FOR_ssaddv1si3,
-+ SPARC_BUILTIN_FPADDS32S, v1si_ftype_v1si_v1si);
-+ def_builtin_const ("__builtin_vis_fpsubs32", CODE_FOR_sssubv2si3,
-+ SPARC_BUILTIN_FPSUBS32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpsubs32s", CODE_FOR_sssubv1si3,
-+ SPARC_BUILTIN_FPSUBS32S, v1si_ftype_v1si_v1si);
-+
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin_const ("__builtin_vis_fucmple8", CODE_FOR_fucmple8di_vis,
-+ SPARC_BUILTIN_FUCMPLE8, di_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fucmpne8", CODE_FOR_fucmpne8di_vis,
-+ SPARC_BUILTIN_FUCMPNE8, di_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fucmpgt8", CODE_FOR_fucmpgt8di_vis,
-+ SPARC_BUILTIN_FUCMPGT8, di_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fucmpeq8", CODE_FOR_fucmpeq8di_vis,
-+ SPARC_BUILTIN_FUCMPEQ8, di_ftype_v8qi_v8qi);
-+ }
-+ else
-+ {
-+ def_builtin_const ("__builtin_vis_fucmple8", CODE_FOR_fucmple8si_vis,
-+ SPARC_BUILTIN_FUCMPLE8, si_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fucmpne8", CODE_FOR_fucmpne8si_vis,
-+ SPARC_BUILTIN_FUCMPNE8, si_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fucmpgt8", CODE_FOR_fucmpgt8si_vis,
-+ SPARC_BUILTIN_FUCMPGT8, si_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fucmpeq8", CODE_FOR_fucmpeq8si_vis,
-+ SPARC_BUILTIN_FUCMPEQ8, si_ftype_v8qi_v8qi);
-+ }
-+
-+ def_builtin_const ("__builtin_vis_fhadds", CODE_FOR_fhaddsf_vis,
-+ SPARC_BUILTIN_FHADDS, sf_ftype_sf_sf);
-+ def_builtin_const ("__builtin_vis_fhaddd", CODE_FOR_fhadddf_vis,
-+ SPARC_BUILTIN_FHADDD, df_ftype_df_df);
-+ def_builtin_const ("__builtin_vis_fhsubs", CODE_FOR_fhsubsf_vis,
-+ SPARC_BUILTIN_FHSUBS, sf_ftype_sf_sf);
-+ def_builtin_const ("__builtin_vis_fhsubd", CODE_FOR_fhsubdf_vis,
-+ SPARC_BUILTIN_FHSUBD, df_ftype_df_df);
-+ def_builtin_const ("__builtin_vis_fnhadds", CODE_FOR_fnhaddsf_vis,
-+ SPARC_BUILTIN_FNHADDS, sf_ftype_sf_sf);
-+ def_builtin_const ("__builtin_vis_fnhaddd", CODE_FOR_fnhadddf_vis,
-+ SPARC_BUILTIN_FNHADDD, df_ftype_df_df);
-+
-+ def_builtin_const ("__builtin_vis_umulxhi", CODE_FOR_umulxhi_vis,
-+ SPARC_BUILTIN_UMULXHI, di_ftype_di_di);
-+ def_builtin_const ("__builtin_vis_xmulx", CODE_FOR_xmulx_vis,
-+ SPARC_BUILTIN_XMULX, di_ftype_di_di);
-+ def_builtin_const ("__builtin_vis_xmulxhi", CODE_FOR_xmulxhi_vis,
-+ SPARC_BUILTIN_XMULXHI, di_ftype_di_di);
-+ }
-+
-+ if (TARGET_VIS4)
-+ {
-+ def_builtin_const ("__builtin_vis_fpadd8", CODE_FOR_addv8qi3,
-+ SPARC_BUILTIN_FPADD8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpadds8", CODE_FOR_ssaddv8qi3,
-+ SPARC_BUILTIN_FPADDS8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpaddus8", CODE_FOR_usaddv8qi3,
-+ SPARC_BUILTIN_FPADDUS8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpaddus16", CODE_FOR_usaddv4hi3,
-+ SPARC_BUILTIN_FPADDUS16, v4hi_ftype_v4hi_v4hi);
-+
-+
-+ if (TARGET_ARCH64)
-+ {
-+ def_builtin_const ("__builtin_vis_fpcmple8", CODE_FOR_fpcmple8di_vis,
-+ SPARC_BUILTIN_FPCMPLE8, di_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpcmpgt8", CODE_FOR_fpcmpgt8di_vis,
-+ SPARC_BUILTIN_FPCMPGT8, di_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpcmpule16", CODE_FOR_fpcmpule16di_vis,
-+ SPARC_BUILTIN_FPCMPULE16, di_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpcmpugt16", CODE_FOR_fpcmpugt16di_vis,
-+ SPARC_BUILTIN_FPCMPUGT16, di_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpcmpule32", CODE_FOR_fpcmpule32di_vis,
-+ SPARC_BUILTIN_FPCMPULE32, di_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt32", CODE_FOR_fpcmpugt32di_vis,
-+ SPARC_BUILTIN_FPCMPUGT32, di_ftype_v2si_v2si);
-+ }
-+ else
-+ {
-+ def_builtin_const ("__builtin_vis_fpcmple8", CODE_FOR_fpcmple8si_vis,
-+ SPARC_BUILTIN_FPCMPLE8, si_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpcmpgt8", CODE_FOR_fpcmpgt8si_vis,
-+ SPARC_BUILTIN_FPCMPGT8, si_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpcmpule16", CODE_FOR_fpcmpule16si_vis,
-+ SPARC_BUILTIN_FPCMPULE16, si_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpcmpugt16", CODE_FOR_fpcmpugt16si_vis,
-+ SPARC_BUILTIN_FPCMPUGT16, si_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpcmpule32", CODE_FOR_fpcmpule32si_vis,
-+ SPARC_BUILTIN_FPCMPULE32, di_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt32", CODE_FOR_fpcmpugt32si_vis,
-+ SPARC_BUILTIN_FPCMPUGT32, di_ftype_v2si_v2si);
-+ }
-+
-+ def_builtin_const ("__builtin_vis_fpmax8", CODE_FOR_maxv8qi3,
-+ SPARC_BUILTIN_FPMAX8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpmax16", CODE_FOR_maxv4hi3,
-+ SPARC_BUILTIN_FPMAX16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpmax32", CODE_FOR_maxv2si3,
-+ SPARC_BUILTIN_FPMAX32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpmaxu8", CODE_FOR_maxuv8qi3,
-+ SPARC_BUILTIN_FPMAXU8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpmaxu16", CODE_FOR_maxuv4hi3,
-+ SPARC_BUILTIN_FPMAXU16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpmaxu32", CODE_FOR_maxuv2si3,
-+ SPARC_BUILTIN_FPMAXU32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpmin8", CODE_FOR_minv8qi3,
-+ SPARC_BUILTIN_FPMIN8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpmin16", CODE_FOR_minv4hi3,
-+ SPARC_BUILTIN_FPMIN16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpmin32", CODE_FOR_minv2si3,
-+ SPARC_BUILTIN_FPMIN32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpminu8", CODE_FOR_minuv8qi3,
-+ SPARC_BUILTIN_FPMINU8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpminu16", CODE_FOR_minuv4hi3,
-+ SPARC_BUILTIN_FPMINU16, v4hi_ftype_v4hi_v4hi);
-+ def_builtin_const ("__builtin_vis_fpminu32", CODE_FOR_minuv2si3,
-+ SPARC_BUILTIN_FPMINU32, v2si_ftype_v2si_v2si);
-+ def_builtin_const ("__builtin_vis_fpsub8", CODE_FOR_subv8qi3,
-+ SPARC_BUILTIN_FPSUB8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpsubs8", CODE_FOR_sssubv8qi3,
-+ SPARC_BUILTIN_FPSUBS8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpsubus8", CODE_FOR_ussubv8qi3,
-+ SPARC_BUILTIN_FPSUBUS8, v8qi_ftype_v8qi_v8qi);
-+ def_builtin_const ("__builtin_vis_fpsubus16", CODE_FOR_ussubv4hi3,
-+ SPARC_BUILTIN_FPSUBUS16, v4hi_ftype_v4hi_v4hi);
-+ }
-+
-+ if (TARGET_VIS4B)
-+ {
-+ def_builtin_const ("__builtin_vis_dictunpack8", CODE_FOR_dictunpack8,
-+ SPARC_BUILTIN_DICTUNPACK8, v8qi_ftype_df_si);
-+ def_builtin_const ("__builtin_vis_dictunpack16", CODE_FOR_dictunpack16,
-+ SPARC_BUILTIN_DICTUNPACK16, v4hi_ftype_df_si);
-+ def_builtin_const ("__builtin_vis_dictunpack32", CODE_FOR_dictunpack32,
-+ SPARC_BUILTIN_DICTUNPACK32, v2si_ftype_df_si);
-+
-+ if (TARGET_ARCH64)
-+ {
-+ tree di_ftype_v8qi_v8qi_si = build_function_type_list (intDI_type_node,
-+ v8qi, v8qi,
-+ intSI_type_node, 0);
-+ tree di_ftype_v4hi_v4hi_si = build_function_type_list (intDI_type_node,
-+ v4hi, v4hi,
-+ intSI_type_node, 0);
-+ tree di_ftype_v2si_v2si_si = build_function_type_list (intDI_type_node,
-+ v2si, v2si,
-+ intSI_type_node, 0);
-+
-+ def_builtin_const ("__builtin_vis_fpcmple8shl", CODE_FOR_fpcmple8dishl,
-+ SPARC_BUILTIN_FPCMPLE8SHL, di_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpgt8shl", CODE_FOR_fpcmpgt8dishl,
-+ SPARC_BUILTIN_FPCMPGT8SHL, di_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpeq8shl", CODE_FOR_fpcmpeq8dishl,
-+ SPARC_BUILTIN_FPCMPEQ8SHL, di_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpne8shl", CODE_FOR_fpcmpne8dishl,
-+ SPARC_BUILTIN_FPCMPNE8SHL, di_ftype_v8qi_v8qi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmple16shl", CODE_FOR_fpcmple16dishl,
-+ SPARC_BUILTIN_FPCMPLE16SHL, di_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpgt16shl", CODE_FOR_fpcmpgt16dishl,
-+ SPARC_BUILTIN_FPCMPGT16SHL, di_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpeq16shl", CODE_FOR_fpcmpeq16dishl,
-+ SPARC_BUILTIN_FPCMPEQ16SHL, di_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpne16shl", CODE_FOR_fpcmpne16dishl,
-+ SPARC_BUILTIN_FPCMPNE16SHL, di_ftype_v4hi_v4hi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmple32shl", CODE_FOR_fpcmple32dishl,
-+ SPARC_BUILTIN_FPCMPLE32SHL, di_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpgt32shl", CODE_FOR_fpcmpgt32dishl,
-+ SPARC_BUILTIN_FPCMPGT32SHL, di_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpeq32shl", CODE_FOR_fpcmpeq32dishl,
-+ SPARC_BUILTIN_FPCMPEQ32SHL, di_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpne32shl", CODE_FOR_fpcmpne32dishl,
-+ SPARC_BUILTIN_FPCMPNE32SHL, di_ftype_v2si_v2si_si);
-+
-+
-+ def_builtin_const ("__builtin_vis_fpcmpule8shl", CODE_FOR_fpcmpule8dishl,
-+ SPARC_BUILTIN_FPCMPULE8SHL, di_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt8shl", CODE_FOR_fpcmpugt8dishl,
-+ SPARC_BUILTIN_FPCMPUGT8SHL, di_ftype_v8qi_v8qi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpule16shl", CODE_FOR_fpcmpule16dishl,
-+ SPARC_BUILTIN_FPCMPULE16SHL, di_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt16shl", CODE_FOR_fpcmpugt16dishl,
-+ SPARC_BUILTIN_FPCMPUGT16SHL, di_ftype_v4hi_v4hi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpule32shl", CODE_FOR_fpcmpule32dishl,
-+ SPARC_BUILTIN_FPCMPULE32SHL, di_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt32shl", CODE_FOR_fpcmpugt32dishl,
-+ SPARC_BUILTIN_FPCMPUGT32SHL, di_ftype_v2si_v2si_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpde8shl", CODE_FOR_fpcmpde8dishl,
-+ SPARC_BUILTIN_FPCMPDE8SHL, di_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpde16shl", CODE_FOR_fpcmpde16dishl,
-+ SPARC_BUILTIN_FPCMPDE16SHL, di_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpde32shl", CODE_FOR_fpcmpde32dishl,
-+ SPARC_BUILTIN_FPCMPDE32SHL, di_ftype_v2si_v2si_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpur8shl", CODE_FOR_fpcmpur8dishl,
-+ SPARC_BUILTIN_FPCMPUR8SHL, di_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpur16shl", CODE_FOR_fpcmpur16dishl,
-+ SPARC_BUILTIN_FPCMPUR16SHL, di_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpur32shl", CODE_FOR_fpcmpur32dishl,
-+ SPARC_BUILTIN_FPCMPUR32SHL, di_ftype_v2si_v2si_si);
-+
-+ }
-+ else
-+ {
-+ tree si_ftype_v8qi_v8qi_si = build_function_type_list (intSI_type_node,
-+ v8qi, v8qi,
-+ intSI_type_node, 0);
-+ tree si_ftype_v4hi_v4hi_si = build_function_type_list (intSI_type_node,
-+ v4hi, v4hi,
-+ intSI_type_node, 0);
-+ tree si_ftype_v2si_v2si_si = build_function_type_list (intSI_type_node,
-+ v2si, v2si,
-+ intSI_type_node, 0);
-+
-+ def_builtin_const ("__builtin_vis_fpcmple8shl", CODE_FOR_fpcmple8sishl,
-+ SPARC_BUILTIN_FPCMPLE8SHL, si_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpgt8shl", CODE_FOR_fpcmpgt8sishl,
-+ SPARC_BUILTIN_FPCMPGT8SHL, si_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpeq8shl", CODE_FOR_fpcmpeq8sishl,
-+ SPARC_BUILTIN_FPCMPEQ8SHL, si_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpne8shl", CODE_FOR_fpcmpne8sishl,
-+ SPARC_BUILTIN_FPCMPNE8SHL, si_ftype_v8qi_v8qi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmple16shl", CODE_FOR_fpcmple16sishl,
-+ SPARC_BUILTIN_FPCMPLE16SHL, si_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpgt16shl", CODE_FOR_fpcmpgt16sishl,
-+ SPARC_BUILTIN_FPCMPGT16SHL, si_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpeq16shl", CODE_FOR_fpcmpeq16sishl,
-+ SPARC_BUILTIN_FPCMPEQ16SHL, si_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpne16shl", CODE_FOR_fpcmpne16sishl,
-+ SPARC_BUILTIN_FPCMPNE16SHL, si_ftype_v4hi_v4hi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmple32shl", CODE_FOR_fpcmple32sishl,
-+ SPARC_BUILTIN_FPCMPLE32SHL, si_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpgt32shl", CODE_FOR_fpcmpgt32sishl,
-+ SPARC_BUILTIN_FPCMPGT32SHL, si_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpeq32shl", CODE_FOR_fpcmpeq32sishl,
-+ SPARC_BUILTIN_FPCMPEQ32SHL, si_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpne32shl", CODE_FOR_fpcmpne32sishl,
-+ SPARC_BUILTIN_FPCMPNE32SHL, si_ftype_v2si_v2si_si);
-+
-+
-+ def_builtin_const ("__builtin_vis_fpcmpule8shl", CODE_FOR_fpcmpule8sishl,
-+ SPARC_BUILTIN_FPCMPULE8SHL, si_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt8shl", CODE_FOR_fpcmpugt8sishl,
-+ SPARC_BUILTIN_FPCMPUGT8SHL, si_ftype_v8qi_v8qi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpule16shl", CODE_FOR_fpcmpule16sishl,
-+ SPARC_BUILTIN_FPCMPULE16SHL, si_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt16shl", CODE_FOR_fpcmpugt16sishl,
-+ SPARC_BUILTIN_FPCMPUGT16SHL, si_ftype_v4hi_v4hi_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpule32shl", CODE_FOR_fpcmpule32sishl,
-+ SPARC_BUILTIN_FPCMPULE32SHL, si_ftype_v2si_v2si_si);
-+ def_builtin_const ("__builtin_vis_fpcmpugt32shl", CODE_FOR_fpcmpugt32sishl,
-+ SPARC_BUILTIN_FPCMPUGT32SHL, si_ftype_v2si_v2si_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpde8shl", CODE_FOR_fpcmpde8sishl,
-+ SPARC_BUILTIN_FPCMPDE8SHL, si_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpde16shl", CODE_FOR_fpcmpde16sishl,
-+ SPARC_BUILTIN_FPCMPDE16SHL, si_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpde32shl", CODE_FOR_fpcmpde32sishl,
-+ SPARC_BUILTIN_FPCMPDE32SHL, si_ftype_v2si_v2si_si);
-+
-+ def_builtin_const ("__builtin_vis_fpcmpur8shl", CODE_FOR_fpcmpur8sishl,
-+ SPARC_BUILTIN_FPCMPUR8SHL, si_ftype_v8qi_v8qi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpur16shl", CODE_FOR_fpcmpur16sishl,
-+ SPARC_BUILTIN_FPCMPUR16SHL, si_ftype_v4hi_v4hi_si);
-+ def_builtin_const ("__builtin_vis_fpcmpur32shl", CODE_FOR_fpcmpur32sishl,
-+ SPARC_BUILTIN_FPCMPUR32SHL, si_ftype_v2si_v2si_si);
-+ }
-+ }
-+}
-+
-+/* Implement TARGET_BUILTIN_DECL hook. */
-+
-+static tree
-+sparc_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
-+{
-+ if (code >= SPARC_BUILTIN_MAX)
-+ return error_mark_node;
-+
-+ return sparc_builtins[code];
-+}
-+
-+/* Implemented TARGET_EXPAND_BUILTIN hook. */
-+
-+static rtx
-+sparc_expand_builtin (tree exp, rtx target,
-+ rtx subtarget ATTRIBUTE_UNUSED,
-+ machine_mode tmode ATTRIBUTE_UNUSED,
-+ int ignore ATTRIBUTE_UNUSED)
-+{
-+ tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
-+ enum sparc_builtins code
-+ = (enum sparc_builtins) DECL_MD_FUNCTION_CODE (fndecl);
-+ enum insn_code icode = sparc_builtins_icode[code];
-+ bool nonvoid = TREE_TYPE (TREE_TYPE (fndecl)) != void_type_node;
-+ call_expr_arg_iterator iter;
-+ int arg_count = 0;
-+ rtx pat, op[4];
-+ tree arg;
-+
-+ if (nonvoid)
-+ {
-+ machine_mode tmode = insn_data[icode].operand[0].mode;
-+ if (!target
-+ || GET_MODE (target) != tmode
-+ || ! (*insn_data[icode].operand[0].predicate) (target, tmode))
-+ op[0] = gen_reg_rtx (tmode);
-+ else
-+ op[0] = target;
-+ }
-+ else
-+ op[0] = NULL_RTX;
-+
-+ FOR_EACH_CALL_EXPR_ARG (arg, iter, exp)
-+ {
-+ const struct insn_operand_data *insn_op;
-+ int idx;
-+
-+ if (arg == error_mark_node)
-+ return NULL_RTX;
-+
-+ arg_count++;
-+ idx = arg_count - !nonvoid;
-+ insn_op = &insn_data[icode].operand[idx];
-+ op[arg_count] = expand_normal (arg);
-+
-+ /* Some of the builtins require constant arguments. We check
-+ for this here. */
-+ if ((code >= SPARC_BUILTIN_FIRST_FPCMPSHL
-+ && code <= SPARC_BUILTIN_LAST_FPCMPSHL
-+ && arg_count == 3)
-+ || (code >= SPARC_BUILTIN_FIRST_DICTUNPACK
-+ && code <= SPARC_BUILTIN_LAST_DICTUNPACK
-+ && arg_count == 2))
-+ {
-+ if (!check_constant_argument (icode, idx, op[arg_count]))
-+ return const0_rtx;
-+ }
-+
-+ if (code == SPARC_BUILTIN_LDFSR || code == SPARC_BUILTIN_STFSR)
-+ {
-+ if (!address_operand (op[arg_count], SImode))
-+ {
-+ op[arg_count] = convert_memory_address (Pmode, op[arg_count]);
-+ op[arg_count] = copy_addr_to_reg (op[arg_count]);
-+ }
-+ op[arg_count] = gen_rtx_MEM (SImode, op[arg_count]);
-+ }
-+
-+ else if (insn_op->mode == V1DImode
-+ && GET_MODE (op[arg_count]) == DImode)
-+ op[arg_count] = gen_lowpart (V1DImode, op[arg_count]);
-+
-+ else if (insn_op->mode == V1SImode
-+ && GET_MODE (op[arg_count]) == SImode)
-+ op[arg_count] = gen_lowpart (V1SImode, op[arg_count]);
-+
-+ if (! (*insn_data[icode].operand[idx].predicate) (op[arg_count],
-+ insn_op->mode))
-+ op[arg_count] = copy_to_mode_reg (insn_op->mode, op[arg_count]);
-+ }
-+
-+ switch (arg_count)
-+ {
-+ case 0:
-+ pat = GEN_FCN (icode) (op[0]);
-+ break;
-+ case 1:
-+ if (nonvoid)
-+ pat = GEN_FCN (icode) (op[0], op[1]);
-+ else
-+ pat = GEN_FCN (icode) (op[1]);
-+ break;
-+ case 2:
-+ pat = GEN_FCN (icode) (op[0], op[1], op[2]);
-+ break;
-+ case 3:
-+ pat = GEN_FCN (icode) (op[0], op[1], op[2], op[3]);
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ if (!pat)
-+ return NULL_RTX;
-+
-+ emit_insn (pat);
-+
-+ return (nonvoid ? op[0] : const0_rtx);
-+}
-+
-+/* Return the upper 16 bits of the 8x16 multiplication. */
-+
-+static int
-+sparc_vis_mul8x16 (int e8, int e16)
-+{
-+ return (e8 * e16 + 128) / 256;
-+}
-+
-+/* Multiply the VECTOR_CSTs CST0 and CST1 as specified by FNCODE and put
-+ the result into the array N_ELTS, whose elements are of INNER_TYPE. */
-+
-+static void
-+sparc_handle_vis_mul8x16 (vec<tree> *n_elts, enum sparc_builtins fncode,
-+ tree inner_type, tree cst0, tree cst1)
-+{
-+ unsigned i, num = VECTOR_CST_NELTS (cst0);
-+ int scale;
-+
-+ switch (fncode)
-+ {
-+ case SPARC_BUILTIN_FMUL8X16:
-+ for (i = 0; i < num; ++i)
-+ {
-+ int val
-+ = sparc_vis_mul8x16 (TREE_INT_CST_LOW (VECTOR_CST_ELT (cst0, i)),
-+ TREE_INT_CST_LOW (VECTOR_CST_ELT (cst1, i)));
-+ n_elts->quick_push (build_int_cst (inner_type, val));
-+ }
-+ break;
-+
-+ case SPARC_BUILTIN_FMUL8X16AU:
-+ scale = TREE_INT_CST_LOW (VECTOR_CST_ELT (cst1, 0));
-+
-+ for (i = 0; i < num; ++i)
-+ {
-+ int val
-+ = sparc_vis_mul8x16 (TREE_INT_CST_LOW (VECTOR_CST_ELT (cst0, i)),
-+ scale);
-+ n_elts->quick_push (build_int_cst (inner_type, val));
-+ }
-+ break;
-+
-+ case SPARC_BUILTIN_FMUL8X16AL:
-+ scale = TREE_INT_CST_LOW (VECTOR_CST_ELT (cst1, 1));
-+
-+ for (i = 0; i < num; ++i)
-+ {
-+ int val
-+ = sparc_vis_mul8x16 (TREE_INT_CST_LOW (VECTOR_CST_ELT (cst0, i)),
-+ scale);
-+ n_elts->quick_push (build_int_cst (inner_type, val));
-+ }
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+}
-+
-+/* Implement TARGET_FOLD_BUILTIN hook.
-+
-+ Fold builtin functions for SPARC intrinsics. If IGNORE is true the
-+ result of the function call is ignored. NULL_TREE is returned if the
-+ function could not be folded. */
-+
-+static tree
-+sparc_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED,
-+ tree *args, bool ignore)
-+{
-+ enum sparc_builtins code
-+ = (enum sparc_builtins) DECL_MD_FUNCTION_CODE (fndecl);
-+ tree rtype = TREE_TYPE (TREE_TYPE (fndecl));
-+ tree arg0, arg1, arg2;
-+
-+ if (ignore)
-+ switch (code)
-+ {
-+ case SPARC_BUILTIN_LDFSR:
-+ case SPARC_BUILTIN_STFSR:
-+ case SPARC_BUILTIN_ALIGNADDR:
-+ case SPARC_BUILTIN_WRGSR:
-+ case SPARC_BUILTIN_BMASK:
-+ case SPARC_BUILTIN_CMASK8:
-+ case SPARC_BUILTIN_CMASK16:
-+ case SPARC_BUILTIN_CMASK32:
-+ break;
-+
-+ default:
-+ return build_zero_cst (rtype);
-+ }
-+
-+ switch (code)
-+ {
-+ case SPARC_BUILTIN_FEXPAND:
-+ arg0 = args[0];
-+ STRIP_NOPS (arg0);
-+
-+ if (TREE_CODE (arg0) == VECTOR_CST)
-+ {
-+ tree inner_type = TREE_TYPE (rtype);
-+ unsigned i;
-+
-+ tree_vector_builder n_elts (rtype, VECTOR_CST_NELTS (arg0), 1);
-+ for (i = 0; i < VECTOR_CST_NELTS (arg0); ++i)
-+ {
-+ unsigned HOST_WIDE_INT val
-+ = TREE_INT_CST_LOW (VECTOR_CST_ELT (arg0, i));
-+ n_elts.quick_push (build_int_cst (inner_type, val << 4));
-+ }
-+ return n_elts.build ();
-+ }
-+ break;
-+
-+ case SPARC_BUILTIN_FMUL8X16:
-+ case SPARC_BUILTIN_FMUL8X16AU:
-+ case SPARC_BUILTIN_FMUL8X16AL:
-+ arg0 = args[0];
-+ arg1 = args[1];
-+ STRIP_NOPS (arg0);
-+ STRIP_NOPS (arg1);
-+
-+ if (TREE_CODE (arg0) == VECTOR_CST && TREE_CODE (arg1) == VECTOR_CST)
-+ {
-+ tree inner_type = TREE_TYPE (rtype);
-+ tree_vector_builder n_elts (rtype, VECTOR_CST_NELTS (arg0), 1);
-+ sparc_handle_vis_mul8x16 (&n_elts, code, inner_type, arg0, arg1);
-+ return n_elts.build ();
-+ }
-+ break;
-+
-+ case SPARC_BUILTIN_FPMERGE:
-+ arg0 = args[0];
-+ arg1 = args[1];
-+ STRIP_NOPS (arg0);
-+ STRIP_NOPS (arg1);
-+
-+ if (TREE_CODE (arg0) == VECTOR_CST && TREE_CODE (arg1) == VECTOR_CST)
-+ {
-+ tree_vector_builder n_elts (rtype, 2 * VECTOR_CST_NELTS (arg0), 1);
-+ unsigned i;
-+ for (i = 0; i < VECTOR_CST_NELTS (arg0); ++i)
-+ {
-+ n_elts.quick_push (VECTOR_CST_ELT (arg0, i));
-+ n_elts.quick_push (VECTOR_CST_ELT (arg1, i));
-+ }
-+
-+ return n_elts.build ();
-+ }
-+ break;
-+
-+ case SPARC_BUILTIN_PDIST:
-+ case SPARC_BUILTIN_PDISTN:
-+ arg0 = args[0];
-+ arg1 = args[1];
-+ STRIP_NOPS (arg0);
-+ STRIP_NOPS (arg1);
-+ if (code == SPARC_BUILTIN_PDIST)
-+ {
-+ arg2 = args[2];
-+ STRIP_NOPS (arg2);
-+ }
-+ else
-+ arg2 = integer_zero_node;
-+
-+ if (TREE_CODE (arg0) == VECTOR_CST
-+ && TREE_CODE (arg1) == VECTOR_CST
-+ && TREE_CODE (arg2) == INTEGER_CST)
-+ {
-+ bool overflow = false;
-+ widest_int result = wi::to_widest (arg2);
-+ widest_int tmp;
-+ unsigned i;
-+
-+ for (i = 0; i < VECTOR_CST_NELTS (arg0); ++i)
-+ {
-+ tree e0 = VECTOR_CST_ELT (arg0, i);
-+ tree e1 = VECTOR_CST_ELT (arg1, i);
-+
-+ wi::overflow_type neg1_ovf, neg2_ovf, add1_ovf, add2_ovf;
-+
-+ tmp = wi::neg (wi::to_widest (e1), &neg1_ovf);
-+ tmp = wi::add (wi::to_widest (e0), tmp, SIGNED, &add1_ovf);
-+ if (wi::neg_p (tmp))
-+ tmp = wi::neg (tmp, &neg2_ovf);
-+ else
-+ neg2_ovf = wi::OVF_NONE;
-+ result = wi::add (result, tmp, SIGNED, &add2_ovf);
-+ overflow |= ((neg1_ovf != wi::OVF_NONE)
-+ | (neg2_ovf != wi::OVF_NONE)
-+ | (add1_ovf != wi::OVF_NONE)
-+ | (add2_ovf != wi::OVF_NONE));
-+ }
-+
-+ gcc_assert (!overflow);
-+
-+ return wide_int_to_tree (rtype, result);
-+ }
-+
-+ default:
-+ break;
-+ }
-+
-+ return NULL_TREE;
-+}
-+
-+/* ??? This duplicates information provided to the compiler by the
-+ ??? scheduler description. Some day, teach genautomata to output
-+ ??? the latencies and then CSE will just use that. */
-+
-+static bool
-+sparc_rtx_costs (rtx x, machine_mode mode, int outer_code,
-+ int opno ATTRIBUTE_UNUSED,
-+ int *total, bool speed ATTRIBUTE_UNUSED)
-+{
-+ int code = GET_CODE (x);
-+ bool float_mode_p = FLOAT_MODE_P (mode);
-+
-+ switch (code)
-+ {
-+ case CONST_INT:
-+ if (SMALL_INT (x))
-+ *total = 0;
-+ else
-+ *total = 2;
-+ return true;
-+
-+ case CONST_WIDE_INT:
-+ *total = 0;
-+ if (!SPARC_SIMM13_P (CONST_WIDE_INT_ELT (x, 0)))
-+ *total += 2;
-+ if (!SPARC_SIMM13_P (CONST_WIDE_INT_ELT (x, 1)))
-+ *total += 2;
-+ return true;
-+
-+ case HIGH:
-+ *total = 2;
-+ return true;
-+
-+ case CONST:
-+ case LABEL_REF:
-+ case SYMBOL_REF:
-+ *total = 4;
-+ return true;
-+
-+ case CONST_DOUBLE:
-+ *total = 8;
-+ return true;
-+
-+ case MEM:
-+ /* If outer-code was a sign or zero extension, a cost
-+ of COSTS_N_INSNS (1) was already added in. This is
-+ why we are subtracting it back out. */
-+ if (outer_code == ZERO_EXTEND)
-+ {
-+ *total = sparc_costs->int_zload - COSTS_N_INSNS (1);
-+ }
-+ else if (outer_code == SIGN_EXTEND)
-+ {
-+ *total = sparc_costs->int_sload - COSTS_N_INSNS (1);
-+ }
-+ else if (float_mode_p)
-+ {
-+ *total = sparc_costs->float_load;
-+ }
-+ else
-+ {
-+ *total = sparc_costs->int_load;
-+ }
-+
-+ return true;
-+
-+ case PLUS:
-+ case MINUS:
-+ if (float_mode_p)
-+ *total = sparc_costs->float_plusminus;
-+ else
-+ *total = COSTS_N_INSNS (1);
-+ return false;
-+
-+ case FMA:
-+ {
-+ rtx sub;
-+
-+ gcc_assert (float_mode_p);
-+ *total = sparc_costs->float_mul;
-+
-+ sub = XEXP (x, 0);
-+ if (GET_CODE (sub) == NEG)
-+ sub = XEXP (sub, 0);
-+ *total += rtx_cost (sub, mode, FMA, 0, speed);
-+
-+ sub = XEXP (x, 2);
-+ if (GET_CODE (sub) == NEG)
-+ sub = XEXP (sub, 0);
-+ *total += rtx_cost (sub, mode, FMA, 2, speed);
-+ return true;
-+ }
-+
-+ case MULT:
-+ if (float_mode_p)
-+ *total = sparc_costs->float_mul;
-+ else if (TARGET_ARCH32 && !TARGET_HARD_MUL)
-+ *total = COSTS_N_INSNS (25);
-+ else
-+ {
-+ int bit_cost;
-+
-+ bit_cost = 0;
-+ if (sparc_costs->int_mul_bit_factor)
-+ {
-+ int nbits;
-+
-+ if (GET_CODE (XEXP (x, 1)) == CONST_INT)
-+ {
-+ unsigned HOST_WIDE_INT value = INTVAL (XEXP (x, 1));
-+ for (nbits = 0; value != 0; value &= value - 1)
-+ nbits++;
-+ }
-+ else
-+ nbits = 7;
-+
-+ if (nbits < 3)
-+ nbits = 3;
-+ bit_cost = (nbits - 3) / sparc_costs->int_mul_bit_factor;
-+ bit_cost = COSTS_N_INSNS (bit_cost);
-+ }
-+
-+ if (mode == DImode || !TARGET_HARD_MUL)
-+ *total = sparc_costs->int_mulX + bit_cost;
-+ else
-+ *total = sparc_costs->int_mul + bit_cost;
-+ }
-+ return false;
-+
-+ case ASHIFT:
-+ case ASHIFTRT:
-+ case LSHIFTRT:
-+ *total = COSTS_N_INSNS (1) + sparc_costs->shift_penalty;
-+ return false;
-+
-+ case DIV:
-+ case UDIV:
-+ case MOD:
-+ case UMOD:
-+ if (float_mode_p)
-+ {
-+ if (mode == DFmode)
-+ *total = sparc_costs->float_div_df;
-+ else
-+ *total = sparc_costs->float_div_sf;
-+ }
-+ else
-+ {
-+ if (mode == DImode)
-+ *total = sparc_costs->int_divX;
-+ else
-+ *total = sparc_costs->int_div;
-+ }
-+ return false;
-+
-+ case NEG:
-+ if (! float_mode_p)
-+ {
-+ *total = COSTS_N_INSNS (1);
-+ return false;
-+ }
-+ /* FALLTHRU */
-+
-+ case ABS:
-+ case FLOAT:
-+ case UNSIGNED_FLOAT:
-+ case FIX:
-+ case UNSIGNED_FIX:
-+ case FLOAT_EXTEND:
-+ case FLOAT_TRUNCATE:
-+ *total = sparc_costs->float_move;
-+ return false;
-+
-+ case SQRT:
-+ if (mode == DFmode)
-+ *total = sparc_costs->float_sqrt_df;
-+ else
-+ *total = sparc_costs->float_sqrt_sf;
-+ return false;
-+
-+ case COMPARE:
-+ if (float_mode_p)
-+ *total = sparc_costs->float_cmp;
-+ else
-+ *total = COSTS_N_INSNS (1);
-+ return false;
-+
-+ case IF_THEN_ELSE:
-+ if (float_mode_p)
-+ *total = sparc_costs->float_cmove;
-+ else
-+ *total = sparc_costs->int_cmove;
-+ return false;
-+
-+ case IOR:
-+ /* Handle the NAND vector patterns. */
-+ if (sparc_vector_mode_supported_p (mode)
-+ && GET_CODE (XEXP (x, 0)) == NOT
-+ && GET_CODE (XEXP (x, 1)) == NOT)
-+ {
-+ *total = COSTS_N_INSNS (1);
-+ return true;
-+ }
-+ else
-+ return false;
-+
-+ default:
-+ return false;
-+ }
-+}
-+
-+/* Return true if CLASS is either GENERAL_REGS or I64_REGS. */
-+
-+static inline bool
-+general_or_i64_p (reg_class_t rclass)
-+{
-+ return (rclass == GENERAL_REGS || rclass == I64_REGS);
-+}
-+
-+/* Implement TARGET_REGISTER_MOVE_COST. */
-+
-+static int
-+sparc_register_move_cost (machine_mode mode ATTRIBUTE_UNUSED,
-+ reg_class_t from, reg_class_t to)
-+{
-+ bool need_memory = false;
-+
-+ /* This helps postreload CSE to eliminate redundant comparisons. */
-+ if (from == NO_REGS || to == NO_REGS)
-+ return 100;
-+
-+ if (from == FPCC_REGS || to == FPCC_REGS)
-+ need_memory = true;
-+ else if ((FP_REG_CLASS_P (from) && general_or_i64_p (to))
-+ || (general_or_i64_p (from) && FP_REG_CLASS_P (to)))
-+ {
-+ if (TARGET_VIS3)
-+ {
-+ int size = GET_MODE_SIZE (mode);
-+ if (size == 8 || size == 4)
-+ {
-+ if (! TARGET_ARCH32 || size == 4)
-+ return 4;
-+ else
-+ return 6;
-+ }
-+ }
-+ need_memory = true;
-+ }
-+
-+ if (need_memory)
-+ {
-+ if (sparc_cpu == PROCESSOR_ULTRASPARC
-+ || sparc_cpu == PROCESSOR_ULTRASPARC3
-+ || sparc_cpu == PROCESSOR_NIAGARA
-+ || sparc_cpu == PROCESSOR_NIAGARA2
-+ || sparc_cpu == PROCESSOR_NIAGARA3
-+ || sparc_cpu == PROCESSOR_NIAGARA4
-+ || sparc_cpu == PROCESSOR_NIAGARA7
-+ || sparc_cpu == PROCESSOR_M8)
-+ return 12;
-+
-+ return 6;
-+ }
-+
-+ return 2;
-+}
-+
-+/* Emit the sequence of insns SEQ while preserving the registers REG and REG2.
-+ This is achieved by means of a manual dynamic stack space allocation in
-+ the current frame. We make the assumption that SEQ doesn't contain any
-+ function calls, with the possible exception of calls to the GOT helper. */
-+
-+static void
-+emit_and_preserve (rtx seq, rtx reg, rtx reg2)
-+{
-+ /* We must preserve the lowest 16 words for the register save area. */
-+ HOST_WIDE_INT offset = 16*UNITS_PER_WORD;
-+ /* We really need only 2 words of fresh stack space. */
-+ HOST_WIDE_INT size = SPARC_STACK_ALIGN (offset + 2*UNITS_PER_WORD);
-+
-+ rtx slot
-+ = gen_rtx_MEM (word_mode, plus_constant (Pmode, stack_pointer_rtx,
-+ SPARC_STACK_BIAS + offset));
-+
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (-size)));
-+ emit_insn (gen_rtx_SET (slot, reg));
-+ if (reg2)
-+ emit_insn (gen_rtx_SET (adjust_address (slot, word_mode, UNITS_PER_WORD),
-+ reg2));
-+ emit_insn (seq);
-+ if (reg2)
-+ emit_insn (gen_rtx_SET (reg2,
-+ adjust_address (slot, word_mode, UNITS_PER_WORD)));
-+ emit_insn (gen_rtx_SET (reg, slot));
-+ emit_insn (gen_stack_pointer_inc (GEN_INT (size)));
-+}
-+
-+/* Output the assembler code for a thunk function. THUNK_DECL is the
-+ declaration for the thunk function itself, FUNCTION is the decl for
-+ the target function. DELTA is an immediate constant offset to be
-+ added to THIS. If VCALL_OFFSET is nonzero, the word at address
-+ (*THIS + VCALL_OFFSET) should be additionally added to THIS. */
-+
-+static void
-+sparc_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED,
-+ HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset,
-+ tree function)
-+{
-+ const char *fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk_fndecl));
-+ rtx this_rtx, funexp;
-+ rtx_insn *insn;
-+ unsigned int int_arg_first;
-+
-+ reload_completed = 1;
-+ epilogue_completed = 1;
-+
-+ emit_note (NOTE_INSN_PROLOGUE_END);
-+
-+ if (TARGET_FLAT)
-+ {
-+ sparc_leaf_function_p = 1;
-+
-+ int_arg_first = SPARC_OUTGOING_INT_ARG_FIRST;
-+ }
-+ else if (flag_delayed_branch)
-+ {
-+ /* We will emit a regular sibcall below, so we need to instruct
-+ output_sibcall that we are in a leaf function. */
-+ sparc_leaf_function_p = crtl->uses_only_leaf_regs = 1;
-+
-+ /* This will cause final.c to invoke leaf_renumber_regs so we
-+ must behave as if we were in a not-yet-leafified function. */
-+ int_arg_first = SPARC_INCOMING_INT_ARG_FIRST;
-+ }
-+ else
-+ {
-+ /* We will emit the sibcall manually below, so we will need to
-+ manually spill non-leaf registers. */
-+ sparc_leaf_function_p = crtl->uses_only_leaf_regs = 0;
-+
-+ /* We really are in a leaf function. */
-+ int_arg_first = SPARC_OUTGOING_INT_ARG_FIRST;
-+ }
-+
-+ /* Find the "this" pointer. Normally in %o0, but in ARCH64 if the function
-+ returns a structure, the structure return pointer is there instead. */
-+ if (TARGET_ARCH64
-+ && aggregate_value_p (TREE_TYPE (TREE_TYPE (function)), function))
-+ this_rtx = gen_rtx_REG (Pmode, int_arg_first + 1);
-+ else
-+ this_rtx = gen_rtx_REG (Pmode, int_arg_first);
-+
-+ /* Add DELTA. When possible use a plain add, otherwise load it into
-+ a register first. */
-+ if (delta)
-+ {
-+ rtx delta_rtx = GEN_INT (delta);
-+
-+ if (! SPARC_SIMM13_P (delta))
-+ {
-+ rtx scratch = gen_rtx_REG (Pmode, 1);
-+ emit_move_insn (scratch, delta_rtx);
-+ delta_rtx = scratch;
-+ }
-+
-+ /* THIS_RTX += DELTA. */
-+ emit_insn (gen_add2_insn (this_rtx, delta_rtx));
-+ }
-+
-+ /* Add the word at address (*THIS_RTX + VCALL_OFFSET). */
-+ if (vcall_offset)
-+ {
-+ rtx vcall_offset_rtx = GEN_INT (vcall_offset);
-+ rtx scratch = gen_rtx_REG (Pmode, 1);
-+
-+ gcc_assert (vcall_offset < 0);
-+
-+ /* SCRATCH = *THIS_RTX. */
-+ emit_move_insn (scratch, gen_rtx_MEM (Pmode, this_rtx));
-+
-+ /* Prepare for adding VCALL_OFFSET. The difficulty is that we
-+ may not have any available scratch register at this point. */
-+ if (SPARC_SIMM13_P (vcall_offset))
-+ ;
-+ /* This is the case if ARCH64 (unless -ffixed-g5 is passed). */
-+ else if (! fixed_regs[5]
-+ /* The below sequence is made up of at least 2 insns,
-+ while the default method may need only one. */
-+ && vcall_offset < -8192)
-+ {
-+ rtx scratch2 = gen_rtx_REG (Pmode, 5);
-+ emit_move_insn (scratch2, vcall_offset_rtx);
-+ vcall_offset_rtx = scratch2;
-+ }
-+ else
-+ {
-+ rtx increment = GEN_INT (-4096);
-+
-+ /* VCALL_OFFSET is a negative number whose typical range can be
-+ estimated as -32768..0 in 32-bit mode. In almost all cases
-+ it is therefore cheaper to emit multiple add insns than
-+ spilling and loading the constant into a register (at least
-+ 6 insns). */
-+ while (! SPARC_SIMM13_P (vcall_offset))
-+ {
-+ emit_insn (gen_add2_insn (scratch, increment));
-+ vcall_offset += 4096;
-+ }
-+ vcall_offset_rtx = GEN_INT (vcall_offset); /* cannot be 0 */
-+ }
-+
-+ /* SCRATCH = *(*THIS_RTX + VCALL_OFFSET). */
-+ emit_move_insn (scratch, gen_rtx_MEM (Pmode,
-+ gen_rtx_PLUS (Pmode,
-+ scratch,
-+ vcall_offset_rtx)));
-+
-+ /* THIS_RTX += *(*THIS_RTX + VCALL_OFFSET). */
-+ emit_insn (gen_add2_insn (this_rtx, scratch));
-+ }
-+
-+ /* Generate a tail call to the target function. */
-+ if (! TREE_USED (function))
-+ {
-+ assemble_external (function);
-+ TREE_USED (function) = 1;
-+ }
-+ funexp = XEXP (DECL_RTL (function), 0);
-+
-+ if (flag_delayed_branch)
-+ {
-+ funexp = gen_rtx_MEM (FUNCTION_MODE, funexp);
-+ insn = emit_call_insn (gen_sibcall (funexp));
-+ SIBLING_CALL_P (insn) = 1;
-+ }
-+ else
-+ {
-+ /* The hoops we have to jump through in order to generate a sibcall
-+ without using delay slots... */
-+ rtx spill_reg, seq, scratch = gen_rtx_REG (Pmode, 1);
-+
-+ if (flag_pic)
-+ {
-+ spill_reg = gen_rtx_REG (word_mode, 15); /* %o7 */
-+ start_sequence ();
-+ load_got_register (); /* clobbers %o7 */
-+ if (!TARGET_VXWORKS_RTP)
-+ pic_offset_table_rtx = got_register_rtx;
-+ scratch = sparc_legitimize_pic_address (funexp, scratch);
-+ seq = get_insns ();
-+ end_sequence ();
-+ emit_and_preserve (seq, spill_reg, pic_offset_table_rtx);
-+ }
-+ else if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_rtx_SET (scratch,
-+ gen_rtx_HIGH (SImode, funexp)));
-+ emit_insn (gen_rtx_SET (scratch,
-+ gen_rtx_LO_SUM (SImode, scratch, funexp)));
-+ }
-+ else /* TARGET_ARCH64 */
-+ {
-+ switch (sparc_code_model)
-+ {
-+ case CM_MEDLOW:
-+ case CM_MEDMID:
-+ /* The destination can serve as a temporary. */
-+ sparc_emit_set_symbolic_const64 (scratch, funexp, scratch);
-+ break;
-+
-+ case CM_MEDANY:
-+ case CM_EMBMEDANY:
-+ /* The destination cannot serve as a temporary. */
-+ spill_reg = gen_rtx_REG (DImode, 15); /* %o7 */
-+ start_sequence ();
-+ sparc_emit_set_symbolic_const64 (scratch, funexp, spill_reg);
-+ seq = get_insns ();
-+ end_sequence ();
-+ emit_and_preserve (seq, spill_reg, 0);
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+ }
-+
-+ emit_jump_insn (gen_indirect_jump (scratch));
-+ }
-+
-+ emit_barrier ();
-+
-+ /* Run just enough of rest_of_compilation to get the insns emitted.
-+ There's not really enough bulk here to make other passes such as
-+ instruction scheduling worth while. */
-+ insn = get_insns ();
-+ shorten_branches (insn);
-+ assemble_start_function (thunk_fndecl, fnname);
-+ final_start_function (insn, file, 1);
-+ final (insn, file, 1);
-+ final_end_function ();
-+ assemble_end_function (thunk_fndecl, fnname);
-+
-+ reload_completed = 0;
-+ epilogue_completed = 0;
-+}
-+
-+/* Return true if sparc_output_mi_thunk would be able to output the
-+ assembler code for the thunk function specified by the arguments
-+ it is passed, and false otherwise. */
-+static bool
-+sparc_can_output_mi_thunk (const_tree thunk_fndecl ATTRIBUTE_UNUSED,
-+ HOST_WIDE_INT delta ATTRIBUTE_UNUSED,
-+ HOST_WIDE_INT vcall_offset,
-+ const_tree function ATTRIBUTE_UNUSED)
-+{
-+ /* Bound the loop used in the default method above. */
-+ return (vcall_offset >= -32768 || ! fixed_regs[5]);
-+}
-+
-+/* How to allocate a 'struct machine_function'. */
-+
-+static struct machine_function *
-+sparc_init_machine_status (void)
-+{
-+ return ggc_cleared_alloc<machine_function> ();
-+}
-+
-+/* Implement the TARGET_ASAN_SHADOW_OFFSET hook. */
-+
-+static unsigned HOST_WIDE_INT
-+sparc_asan_shadow_offset (void)
-+{
-+ return TARGET_ARCH64 ? (HOST_WIDE_INT_1 << 43) : (HOST_WIDE_INT_1 << 29);
-+}
-+
-+/* This is called from dwarf2out.c via TARGET_ASM_OUTPUT_DWARF_DTPREL.
-+ We need to emit DTP-relative relocations. */
-+
-+static void
-+sparc_output_dwarf_dtprel (FILE *file, int size, rtx x)
-+{
-+ switch (size)
-+ {
-+ case 4:
-+ fputs ("\t.word\t%r_tls_dtpoff32(", file);
-+ break;
-+ case 8:
-+ fputs ("\t.xword\t%r_tls_dtpoff64(", file);
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+ output_addr_const (file, x);
-+ fputs (")", file);
-+}
-+
-+/* Do whatever processing is required at the end of a file. */
-+
-+static void
-+sparc_file_end (void)
-+{
-+ /* If we need to emit the special GOT helper function, do so now. */
-+ if (got_helper_needed)
-+ {
-+ const char *name = XSTR (got_helper_rtx, 0);
-+#ifdef DWARF2_UNWIND_INFO
-+ bool do_cfi;
-+#endif
-+
-+ if (USE_HIDDEN_LINKONCE)
-+ {
-+ tree decl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
-+ get_identifier (name),
-+ build_function_type_list (void_type_node,
-+ NULL_TREE));
-+ DECL_RESULT (decl) = build_decl (BUILTINS_LOCATION, RESULT_DECL,
-+ NULL_TREE, void_type_node);
-+ TREE_PUBLIC (decl) = 1;
-+ TREE_STATIC (decl) = 1;
-+ make_decl_one_only (decl, DECL_ASSEMBLER_NAME (decl));
-+ DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
-+ DECL_VISIBILITY_SPECIFIED (decl) = 1;
-+ resolve_unique_section (decl, 0, flag_function_sections);
-+ allocate_struct_function (decl, true);
-+ cfun->is_thunk = 1;
-+ current_function_decl = decl;
-+ init_varasm_status ();
-+ assemble_start_function (decl, name);
-+ }
-+ else
-+ {
-+ const int align = floor_log2 (FUNCTION_BOUNDARY / BITS_PER_UNIT);
-+ switch_to_section (text_section);
-+ if (align > 0)
-+ ASM_OUTPUT_ALIGN (asm_out_file, align);
-+ ASM_OUTPUT_LABEL (asm_out_file, name);
-+ }
-+
-+#ifdef DWARF2_UNWIND_INFO
-+ do_cfi = dwarf2out_do_cfi_asm ();
-+ if (do_cfi)
-+ output_asm_insn (".cfi_startproc", NULL);
-+#endif
-+ if (flag_delayed_branch)
-+ {
-+ output_asm_insn ("jmp\t%%o7+8", NULL);
-+ output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
-+ }
-+ else
-+ {
-+ output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
-+ output_asm_insn ("jmp\t%%o7+8", NULL);
-+ output_asm_insn (" nop", NULL);
-+ }
-+#ifdef DWARF2_UNWIND_INFO
-+ if (do_cfi)
-+ output_asm_insn (".cfi_endproc", NULL);
-+#endif
-+ }
-+
-+ if (NEED_INDICATE_EXEC_STACK)
-+ file_end_indicate_exec_stack ();
-+
-+#ifdef TARGET_SOLARIS
-+ solaris_file_end ();
-+#endif
-+}
-+
-+#ifdef TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
-+/* Implement TARGET_MANGLE_TYPE. */
-+
-+static const char *
-+sparc_mangle_type (const_tree type)
-+{
-+ if (TARGET_ARCH32
-+ && TYPE_MAIN_VARIANT (type) == long_double_type_node
-+ && TARGET_LONG_DOUBLE_128)
-+ return "g";
-+
-+ /* For all other types, use normal C++ mangling. */
-+ return NULL;
-+}
-+#endif
-+
-+/* Expand a membar instruction for various use cases. Both the LOAD_STORE
-+ and BEFORE_AFTER arguments of the form X_Y. They are two-bit masks where
-+ bit 0 indicates that X is true, and bit 1 indicates Y is true. */
-+
-+void
-+sparc_emit_membar_for_model (enum memmodel model,
-+ int load_store, int before_after)
-+{
-+ /* Bits for the MEMBAR mmask field. */
-+ const int LoadLoad = 1;
-+ const int StoreLoad = 2;
-+ const int LoadStore = 4;
-+ const int StoreStore = 8;
-+
-+ int mm = 0, implied = 0;
-+
-+ switch (sparc_memory_model)
-+ {
-+ case SMM_SC:
-+ /* Sequential Consistency. All memory transactions are immediately
-+ visible in sequential execution order. No barriers needed. */
-+ implied = LoadLoad | StoreLoad | LoadStore | StoreStore;
-+ break;
-+
-+ case SMM_TSO:
-+ /* Total Store Ordering: all memory transactions with store semantics
-+ are followed by an implied StoreStore. */
-+ implied |= StoreStore;
-+
-+ /* If we're not looking for a raw barrer (before+after), then atomic
-+ operations get the benefit of being both load and store. */
-+ if (load_store == 3 && before_after == 1)
-+ implied |= StoreLoad;
-+ /* FALLTHRU */
-+
-+ case SMM_PSO:
-+ /* Partial Store Ordering: all memory transactions with load semantics
-+ are followed by an implied LoadLoad | LoadStore. */
-+ implied |= LoadLoad | LoadStore;
-+
-+ /* If we're not looking for a raw barrer (before+after), then atomic
-+ operations get the benefit of being both load and store. */
-+ if (load_store == 3 && before_after == 2)
-+ implied |= StoreLoad | StoreStore;
-+ /* FALLTHRU */
-+
-+ case SMM_RMO:
-+ /* Relaxed Memory Ordering: no implicit bits. */
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ if (before_after & 1)
-+ {
-+ if (is_mm_release (model) || is_mm_acq_rel (model)
-+ || is_mm_seq_cst (model))
-+ {
-+ if (load_store & 1)
-+ mm |= LoadLoad | StoreLoad;
-+ if (load_store & 2)
-+ mm |= LoadStore | StoreStore;
-+ }
-+ }
-+ if (before_after & 2)
-+ {
-+ if (is_mm_acquire (model) || is_mm_acq_rel (model)
-+ || is_mm_seq_cst (model))
-+ {
-+ if (load_store & 1)
-+ mm |= LoadLoad | LoadStore;
-+ if (load_store & 2)
-+ mm |= StoreLoad | StoreStore;
-+ }
-+ }
-+
-+ /* Remove the bits implied by the system memory model. */
-+ mm &= ~implied;
-+
-+ /* For raw barriers (before+after), always emit a barrier.
-+ This will become a compile-time barrier if needed. */
-+ if (mm || before_after == 3)
-+ emit_insn (gen_membar (GEN_INT (mm)));
-+}
-+
-+/* Expand code to perform a 8 or 16-bit compare and swap by doing 32-bit
-+ compare and swap on the word containing the byte or half-word. */
-+
-+static void
-+sparc_expand_compare_and_swap_12 (rtx bool_result, rtx result, rtx mem,
-+ rtx oldval, rtx newval)
-+{
-+ rtx addr1 = force_reg (Pmode, XEXP (mem, 0));
-+ rtx addr = gen_reg_rtx (Pmode);
-+ rtx off = gen_reg_rtx (SImode);
-+ rtx oldv = gen_reg_rtx (SImode);
-+ rtx newv = gen_reg_rtx (SImode);
-+ rtx oldvalue = gen_reg_rtx (SImode);
-+ rtx newvalue = gen_reg_rtx (SImode);
-+ rtx res = gen_reg_rtx (SImode);
-+ rtx resv = gen_reg_rtx (SImode);
-+ rtx memsi, val, mask, cc;
-+
-+ emit_insn (gen_rtx_SET (addr, gen_rtx_AND (Pmode, addr1, GEN_INT (-4))));
-+
-+ if (Pmode != SImode)
-+ addr1 = gen_lowpart (SImode, addr1);
-+ emit_insn (gen_rtx_SET (off, gen_rtx_AND (SImode, addr1, GEN_INT (3))));
-+
-+ memsi = gen_rtx_MEM (SImode, addr);
-+ set_mem_alias_set (memsi, ALIAS_SET_MEMORY_BARRIER);
-+ MEM_VOLATILE_P (memsi) = MEM_VOLATILE_P (mem);
-+
-+ val = copy_to_reg (memsi);
-+
-+ emit_insn (gen_rtx_SET (off,
-+ gen_rtx_XOR (SImode, off,
-+ GEN_INT (GET_MODE (mem) == QImode
-+ ? 3 : 2))));
-+
-+ emit_insn (gen_rtx_SET (off, gen_rtx_ASHIFT (SImode, off, GEN_INT (3))));
-+
-+ if (GET_MODE (mem) == QImode)
-+ mask = force_reg (SImode, GEN_INT (0xff));
-+ else
-+ mask = force_reg (SImode, GEN_INT (0xffff));
-+
-+ emit_insn (gen_rtx_SET (mask, gen_rtx_ASHIFT (SImode, mask, off)));
-+
-+ emit_insn (gen_rtx_SET (val,
-+ gen_rtx_AND (SImode, gen_rtx_NOT (SImode, mask),
-+ val)));
-+
-+ oldval = gen_lowpart (SImode, oldval);
-+ emit_insn (gen_rtx_SET (oldv, gen_rtx_ASHIFT (SImode, oldval, off)));
-+
-+ newval = gen_lowpart_common (SImode, newval);
-+ emit_insn (gen_rtx_SET (newv, gen_rtx_ASHIFT (SImode, newval, off)));
-+
-+ emit_insn (gen_rtx_SET (oldv, gen_rtx_AND (SImode, oldv, mask)));
-+
-+ emit_insn (gen_rtx_SET (newv, gen_rtx_AND (SImode, newv, mask)));
-+
-+ rtx_code_label *end_label = gen_label_rtx ();
-+ rtx_code_label *loop_label = gen_label_rtx ();
-+ emit_label (loop_label);
-+
-+ emit_insn (gen_rtx_SET (oldvalue, gen_rtx_IOR (SImode, oldv, val)));
-+
-+ emit_insn (gen_rtx_SET (newvalue, gen_rtx_IOR (SImode, newv, val)));
-+
-+ emit_move_insn (bool_result, const1_rtx);
-+
-+ emit_insn (gen_atomic_compare_and_swapsi_1 (res, memsi, oldvalue, newvalue));
-+
-+ emit_cmp_and_jump_insns (res, oldvalue, EQ, NULL, SImode, 0, end_label);
-+
-+ emit_insn (gen_rtx_SET (resv,
-+ gen_rtx_AND (SImode, gen_rtx_NOT (SImode, mask),
-+ res)));
-+
-+ emit_move_insn (bool_result, const0_rtx);
-+
-+ cc = gen_compare_reg_1 (NE, resv, val);
-+ emit_insn (gen_rtx_SET (val, resv));
-+
-+ /* Use cbranchcc4 to separate the compare and branch! */
-+ emit_jump_insn (gen_cbranchcc4 (gen_rtx_NE (VOIDmode, cc, const0_rtx),
-+ cc, const0_rtx, loop_label));
-+
-+ emit_label (end_label);
-+
-+ emit_insn (gen_rtx_SET (res, gen_rtx_AND (SImode, res, mask)));
-+
-+ emit_insn (gen_rtx_SET (res, gen_rtx_LSHIFTRT (SImode, res, off)));
-+
-+ emit_move_insn (result, gen_lowpart (GET_MODE (result), res));
-+}
-+
-+/* Expand code to perform a compare-and-swap. */
-+
-+void
-+sparc_expand_compare_and_swap (rtx operands[])
-+{
-+ rtx bval, retval, mem, oldval, newval;
-+ machine_mode mode;
-+ enum memmodel model;
-+
-+ bval = operands[0];
-+ retval = operands[1];
-+ mem = operands[2];
-+ oldval = operands[3];
-+ newval = operands[4];
-+ model = (enum memmodel) INTVAL (operands[6]);
-+ mode = GET_MODE (mem);
-+
-+ sparc_emit_membar_for_model (model, 3, 1);
-+
-+ if (reg_overlap_mentioned_p (retval, oldval))
-+ oldval = copy_to_reg (oldval);
-+
-+ if (mode == QImode || mode == HImode)
-+ sparc_expand_compare_and_swap_12 (bval, retval, mem, oldval, newval);
-+ else
-+ {
-+ rtx (*gen) (rtx, rtx, rtx, rtx);
-+ rtx x;
-+
-+ if (mode == SImode)
-+ gen = gen_atomic_compare_and_swapsi_1;
-+ else
-+ gen = gen_atomic_compare_and_swapdi_1;
-+ emit_insn (gen (retval, mem, oldval, newval));
-+
-+ x = emit_store_flag (bval, EQ, retval, oldval, mode, 1, 1);
-+ if (x != bval)
-+ convert_move (bval, x, 1);
-+ }
-+
-+ sparc_emit_membar_for_model (model, 3, 2);
-+}
-+
-+void
-+sparc_expand_vec_perm_bmask (machine_mode vmode, rtx sel)
-+{
-+ rtx t_1, t_2, t_3;
-+
-+ sel = gen_lowpart (DImode, sel);
-+ switch (vmode)
-+ {
-+ case E_V2SImode:
-+ /* inp = xxxxxxxAxxxxxxxB */
-+ t_1 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (16),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* t_1 = ....xxxxxxxAxxx. */
-+ sel = expand_simple_binop (SImode, AND, gen_lowpart (SImode, sel),
-+ GEN_INT (3), NULL_RTX, 1, OPTAB_DIRECT);
-+ t_1 = expand_simple_binop (SImode, AND, gen_lowpart (SImode, t_1),
-+ GEN_INT (0x30000), NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = .......B */
-+ /* t_1 = ...A.... */
-+ sel = expand_simple_binop (SImode, IOR, sel, t_1, sel, 1, OPTAB_DIRECT);
-+ /* sel = ...A...B */
-+ sel = expand_mult (SImode, sel, GEN_INT (0x4444), sel, 1);
-+ /* sel = AAAABBBB * 4 */
-+ t_1 = force_reg (SImode, GEN_INT (0x01230123));
-+ /* sel = { A*4, A*4+1, A*4+2, ... } */
-+ break;
-+
-+ case E_V4HImode:
-+ /* inp = xxxAxxxBxxxCxxxD */
-+ t_1 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (8),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ t_2 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (16),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ t_3 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (24),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* t_1 = ..xxxAxxxBxxxCxx */
-+ /* t_2 = ....xxxAxxxBxxxC */
-+ /* t_3 = ......xxxAxxxBxx */
-+ sel = expand_simple_binop (SImode, AND, gen_lowpart (SImode, sel),
-+ GEN_INT (0x07),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ t_1 = expand_simple_binop (SImode, AND, gen_lowpart (SImode, t_1),
-+ GEN_INT (0x0700),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ t_2 = expand_simple_binop (SImode, AND, gen_lowpart (SImode, t_2),
-+ GEN_INT (0x070000),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ t_3 = expand_simple_binop (SImode, AND, gen_lowpart (SImode, t_3),
-+ GEN_INT (0x07000000),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = .......D */
-+ /* t_1 = .....C.. */
-+ /* t_2 = ...B.... */
-+ /* t_3 = .A...... */
-+ sel = expand_simple_binop (SImode, IOR, sel, t_1, sel, 1, OPTAB_DIRECT);
-+ t_2 = expand_simple_binop (SImode, IOR, t_2, t_3, t_2, 1, OPTAB_DIRECT);
-+ sel = expand_simple_binop (SImode, IOR, sel, t_2, sel, 1, OPTAB_DIRECT);
-+ /* sel = .A.B.C.D */
-+ sel = expand_mult (SImode, sel, GEN_INT (0x22), sel, 1);
-+ /* sel = AABBCCDD * 2 */
-+ t_1 = force_reg (SImode, GEN_INT (0x01010101));
-+ /* sel = { A*2, A*2+1, B*2, B*2+1, ... } */
-+ break;
-+
-+ case E_V8QImode:
-+ /* input = xAxBxCxDxExFxGxH */
-+ sel = expand_simple_binop (DImode, AND, sel,
-+ GEN_INT ((HOST_WIDE_INT)0x0f0f0f0f << 32
-+ | 0x0f0f0f0f),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = .A.B.C.D.E.F.G.H */
-+ t_1 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (4),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* t_1 = ..A.B.C.D.E.F.G. */
-+ sel = expand_simple_binop (DImode, IOR, sel, t_1,
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = .AABBCCDDEEFFGGH */
-+ sel = expand_simple_binop (DImode, AND, sel,
-+ GEN_INT ((HOST_WIDE_INT)0xff00ff << 32
-+ | 0xff00ff),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = ..AB..CD..EF..GH */
-+ t_1 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (8),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* t_1 = ....AB..CD..EF.. */
-+ sel = expand_simple_binop (DImode, IOR, sel, t_1,
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = ..ABABCDCDEFEFGH */
-+ sel = expand_simple_binop (DImode, AND, sel,
-+ GEN_INT ((HOST_WIDE_INT)0xffff << 32 | 0xffff),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* sel = ....ABCD....EFGH */
-+ t_1 = expand_simple_binop (DImode, LSHIFTRT, sel, GEN_INT (16),
-+ NULL_RTX, 1, OPTAB_DIRECT);
-+ /* t_1 = ........ABCD.... */
-+ sel = gen_lowpart (SImode, sel);
-+ t_1 = gen_lowpart (SImode, t_1);
-+ break;
-+
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ /* Always perform the final addition/merge within the bmask insn. */
-+ emit_insn (gen_bmasksi_vis (gen_reg_rtx (SImode), sel, t_1));
-+}
-+
-+/* Implement TARGET_VEC_PERM_CONST. */
-+
-+static bool
-+sparc_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
-+ rtx op1, const vec_perm_indices &sel)
-+{
-+ if (!TARGET_VIS2)
-+ return false;
-+
-+ /* All permutes are supported. */
-+ if (!target)
-+ return true;
-+
-+ /* Force target-independent code to convert constant permutations on other
-+ modes down to V8QI. Rely on this to avoid the complexity of the byte
-+ order of the permutation. */
-+ if (vmode != V8QImode)
-+ return false;
-+
-+ unsigned int i, mask;
-+ for (i = mask = 0; i < 8; ++i)
-+ mask |= (sel[i] & 0xf) << (28 - i*4);
-+ rtx mask_rtx = force_reg (SImode, gen_int_mode (mask, SImode));
-+
-+ emit_insn (gen_bmasksi_vis (gen_reg_rtx (SImode), mask_rtx, const0_rtx));
-+ emit_insn (gen_bshufflev8qi_vis (target, op0, op1));
-+ return true;
-+}
-+
-+/* Implement TARGET_FRAME_POINTER_REQUIRED. */
-+
-+static bool
-+sparc_frame_pointer_required (void)
-+{
-+ /* If the stack pointer is dynamically modified in the function, it cannot
-+ serve as the frame pointer. */
-+ if (cfun->calls_alloca)
-+ return true;
-+
-+ /* If the function receives nonlocal gotos, it needs to save the frame
-+ pointer in the nonlocal_goto_save_area object. */
-+ if (cfun->has_nonlocal_label)
-+ return true;
-+
-+ /* In flat mode, that's it. */
-+ if (TARGET_FLAT)
-+ return false;
-+
-+ /* Otherwise, the frame pointer is required if the function isn't leaf, but
-+ we cannot use sparc_leaf_function_p since it hasn't been computed yet. */
-+ return !(optimize > 0 && crtl->is_leaf && only_leaf_regs_used ());
-+}
-+
-+/* The way this is structured, we can't eliminate SFP in favor of SP
-+ if the frame pointer is required: we want to use the SFP->HFP elimination
-+ in that case. But the test in update_eliminables doesn't know we are
-+ assuming below that we only do the former elimination. */
-+
-+static bool
-+sparc_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to)
-+{
-+ return to == HARD_FRAME_POINTER_REGNUM || !sparc_frame_pointer_required ();
-+}
-+
-+/* If !TARGET_FPU, then make the fp registers and fp cc regs fixed so that
-+ they won't be allocated. */
-+
-+static void
-+sparc_conditional_register_usage (void)
-+{
-+ if (PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM)
-+ fixed_regs[PIC_OFFSET_TABLE_REGNUM] = 1;
-+ /* If the user has passed -f{fixed,call-{used,saved}}-g5 */
-+ /* then honor it. */
-+ if (TARGET_ARCH32 && fixed_regs[5])
-+ fixed_regs[5] = 1;
-+ else if (TARGET_ARCH64 && fixed_regs[5] == 2)
-+ fixed_regs[5] = 0;
-+ if (! TARGET_V9)
-+ {
-+ int regno;
-+ for (regno = SPARC_FIRST_V9_FP_REG;
-+ regno <= SPARC_LAST_V9_FP_REG;
-+ regno++)
-+ fixed_regs[regno] = 1;
-+ /* %fcc0 is used by v8 and v9. */
-+ for (regno = SPARC_FIRST_V9_FCC_REG + 1;
-+ regno <= SPARC_LAST_V9_FCC_REG;
-+ regno++)
-+ fixed_regs[regno] = 1;
-+ }
-+ if (! TARGET_FPU)
-+ {
-+ int regno;
-+ for (regno = 32; regno < SPARC_LAST_V9_FCC_REG; regno++)
-+ fixed_regs[regno] = 1;
-+ }
-+ /* If the user has passed -f{fixed,call-{used,saved}}-g2 */
-+ /* then honor it. Likewise with g3 and g4. */
-+ if (fixed_regs[2] == 2)
-+ fixed_regs[2] = ! TARGET_APP_REGS;
-+ if (fixed_regs[3] == 2)
-+ fixed_regs[3] = ! TARGET_APP_REGS;
-+ if (TARGET_ARCH32 && fixed_regs[4] == 2)
-+ fixed_regs[4] = ! TARGET_APP_REGS;
-+ else if (TARGET_CM_EMBMEDANY)
-+ fixed_regs[4] = 1;
-+ else if (fixed_regs[4] == 2)
-+ fixed_regs[4] = 0;
-+ if (TARGET_FLAT)
-+ {
-+ int regno;
-+ /* Disable leaf functions. */
-+ memset (sparc_leaf_regs, 0, FIRST_PSEUDO_REGISTER);
-+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-+ leaf_reg_remap [regno] = regno;
-+ }
-+ if (TARGET_VIS)
-+ global_regs[SPARC_GSR_REG] = 1;
-+}
-+
-+/* Implement TARGET_USE_PSEUDO_PIC_REG. */
-+
-+static bool
-+sparc_use_pseudo_pic_reg (void)
-+{
-+ return !TARGET_VXWORKS_RTP && flag_pic;
-+}
-+
-+/* Implement TARGET_INIT_PIC_REG. */
-+
-+static void
-+sparc_init_pic_reg (void)
-+{
-+ edge entry_edge;
-+ rtx_insn *seq;
-+
-+ /* In PIC mode, we need to always initialize the PIC register if optimization
-+ is enabled, because we are called from IRA and LRA may later force things
-+ to the constant pool for optimization purposes. */
-+ if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
-+ return;
-+
-+ start_sequence ();
-+ load_got_register ();
-+ if (!TARGET_VXWORKS_RTP)
-+ emit_move_insn (pic_offset_table_rtx, got_register_rtx);
-+ seq = get_insns ();
-+ end_sequence ();
-+
-+ entry_edge = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
-+ insert_insn_on_edge (seq, entry_edge);
-+ commit_one_edge_insertion (entry_edge);
-+}
-+
-+/* Implement TARGET_PREFERRED_RELOAD_CLASS:
-+
-+ - We can't load constants into FP registers.
-+ - We can't load FP constants into integer registers when soft-float,
-+ because there is no soft-float pattern with a r/F constraint.
-+ - We can't load FP constants into integer registers for TFmode unless
-+ it is 0.0L, because there is no movtf pattern with a r/F constraint.
-+ - Try and reload integer constants (symbolic or otherwise) back into
-+ registers directly, rather than having them dumped to memory. */
-+
-+static reg_class_t
-+sparc_preferred_reload_class (rtx x, reg_class_t rclass)
-+{
-+ machine_mode mode = GET_MODE (x);
-+ if (CONSTANT_P (x))
-+ {
-+ if (FP_REG_CLASS_P (rclass)
-+ || rclass == GENERAL_OR_FP_REGS
-+ || rclass == GENERAL_OR_EXTRA_FP_REGS
-+ || (GET_MODE_CLASS (mode) == MODE_FLOAT && ! TARGET_FPU)
-+ || (mode == TFmode && ! const_zero_operand (x, mode)))
-+ return NO_REGS;
-+
-+ if (GET_MODE_CLASS (mode) == MODE_INT)
-+ return GENERAL_REGS;
-+
-+ if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
-+ {
-+ if (! FP_REG_CLASS_P (rclass)
-+ || !(const_zero_operand (x, mode)
-+ || const_all_ones_operand (x, mode)))
-+ return NO_REGS;
-+ }
-+ }
-+
-+ if (TARGET_VIS3
-+ && ! TARGET_ARCH64
-+ && (rclass == EXTRA_FP_REGS
-+ || rclass == GENERAL_OR_EXTRA_FP_REGS))
-+ {
-+ int regno = true_regnum (x);
-+
-+ if (SPARC_INT_REG_P (regno))
-+ return (rclass == EXTRA_FP_REGS
-+ ? FP_REGS : GENERAL_OR_FP_REGS);
-+ }
-+
-+ return rclass;
-+}
-+
-+/* Return true if we use LRA instead of reload pass. */
-+
-+static bool
-+sparc_lra_p (void)
-+{
-+ return TARGET_LRA;
-+}
-+
-+/* Output a wide multiply instruction in V8+ mode. INSN is the instruction,
-+ OPERANDS are its operands and OPCODE is the mnemonic to be used. */
-+
-+const char *
-+output_v8plus_mult (rtx_insn *insn, rtx *operands, const char *opcode)
-+{
-+ char mulstr[32];
-+
-+ gcc_assert (! TARGET_ARCH64);
-+
-+ if (sparc_check_64 (operands[1], insn) <= 0)
-+ output_asm_insn ("srl\t%L1, 0, %L1", operands);
-+ if (which_alternative == 1)
-+ output_asm_insn ("sllx\t%H1, 32, %H1", operands);
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ {
-+ if (which_alternative == 1)
-+ {
-+ output_asm_insn ("or\t%L1, %H1, %H1", operands);
-+ sprintf (mulstr, "%s\t%%H1, %%2, %%L0", opcode);
-+ output_asm_insn (mulstr, operands);
-+ return "srlx\t%L0, 32, %H0";
-+ }
-+ else
-+ {
-+ output_asm_insn ("sllx\t%H1, 32, %3", operands);
-+ output_asm_insn ("or\t%L1, %3, %3", operands);
-+ sprintf (mulstr, "%s\t%%3, %%2, %%3", opcode);
-+ output_asm_insn (mulstr, operands);
-+ output_asm_insn ("srlx\t%3, 32, %H0", operands);
-+ return "mov\t%3, %L0";
-+ }
-+ }
-+ else if (rtx_equal_p (operands[1], operands[2]))
-+ {
-+ if (which_alternative == 1)
-+ {
-+ output_asm_insn ("or\t%L1, %H1, %H1", operands);
-+ sprintf (mulstr, "%s\t%%H1, %%H1, %%L0", opcode);
-+ output_asm_insn (mulstr, operands);
-+ return "srlx\t%L0, 32, %H0";
-+ }
-+ else
-+ {
-+ output_asm_insn ("sllx\t%H1, 32, %3", operands);
-+ output_asm_insn ("or\t%L1, %3, %3", operands);
-+ sprintf (mulstr, "%s\t%%3, %%3, %%3", opcode);
-+ output_asm_insn (mulstr, operands);
-+ output_asm_insn ("srlx\t%3, 32, %H0", operands);
-+ return "mov\t%3, %L0";
-+ }
-+ }
-+ if (sparc_check_64 (operands[2], insn) <= 0)
-+ output_asm_insn ("srl\t%L2, 0, %L2", operands);
-+ if (which_alternative == 1)
-+ {
-+ output_asm_insn ("or\t%L1, %H1, %H1", operands);
-+ output_asm_insn ("sllx\t%H2, 32, %L1", operands);
-+ output_asm_insn ("or\t%L2, %L1, %L1", operands);
-+ sprintf (mulstr, "%s\t%%H1, %%L1, %%L0", opcode);
-+ output_asm_insn (mulstr, operands);
-+ return "srlx\t%L0, 32, %H0";
-+ }
-+ else
-+ {
-+ output_asm_insn ("sllx\t%H1, 32, %3", operands);
-+ output_asm_insn ("sllx\t%H2, 32, %4", operands);
-+ output_asm_insn ("or\t%L1, %3, %3", operands);
-+ output_asm_insn ("or\t%L2, %4, %4", operands);
-+ sprintf (mulstr, "%s\t%%3, %%4, %%3", opcode);
-+ output_asm_insn (mulstr, operands);
-+ output_asm_insn ("srlx\t%3, 32, %H0", operands);
-+ return "mov\t%3, %L0";
-+ }
-+}
-+
-+/* Subroutine of sparc_expand_vector_init. Emit code to initialize
-+ all fields of TARGET to ELT by means of VIS2 BSHUFFLE insn. MODE
-+ and INNER_MODE are the modes describing TARGET. */
-+
-+static void
-+vector_init_bshuffle (rtx target, rtx elt, machine_mode mode,
-+ machine_mode inner_mode)
-+{
-+ rtx t1, final_insn, sel;
-+ int bmask;
-+
-+ t1 = gen_reg_rtx (mode);
-+
-+ elt = convert_modes (SImode, inner_mode, elt, true);
-+ emit_move_insn (gen_lowpart(SImode, t1), elt);
-+
-+ switch (mode)
-+ {
-+ case E_V2SImode:
-+ final_insn = gen_bshufflev2si_vis (target, t1, t1);
-+ bmask = 0x45674567;
-+ break;
-+ case E_V4HImode:
-+ final_insn = gen_bshufflev4hi_vis (target, t1, t1);
-+ bmask = 0x67676767;
-+ break;
-+ case E_V8QImode:
-+ final_insn = gen_bshufflev8qi_vis (target, t1, t1);
-+ bmask = 0x77777777;
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ sel = force_reg (SImode, GEN_INT (bmask));
-+ emit_insn (gen_bmasksi_vis (gen_reg_rtx (SImode), sel, const0_rtx));
-+ emit_insn (final_insn);
-+}
-+
-+/* Subroutine of sparc_expand_vector_init. Emit code to initialize
-+ all fields of TARGET to ELT in V8QI by means of VIS FPMERGE insn. */
-+
-+static void
-+vector_init_fpmerge (rtx target, rtx elt)
-+{
-+ rtx t1, t2, t2_low, t3, t3_low;
-+
-+ t1 = gen_reg_rtx (V4QImode);
-+ elt = convert_modes (SImode, QImode, elt, true);
-+ emit_move_insn (gen_lowpart (SImode, t1), elt);
-+
-+ t2 = gen_reg_rtx (V8QImode);
-+ t2_low = gen_lowpart (V4QImode, t2);
-+ emit_insn (gen_fpmerge_vis (t2, t1, t1));
-+
-+ t3 = gen_reg_rtx (V8QImode);
-+ t3_low = gen_lowpart (V4QImode, t3);
-+ emit_insn (gen_fpmerge_vis (t3, t2_low, t2_low));
-+
-+ emit_insn (gen_fpmerge_vis (target, t3_low, t3_low));
-+}
-+
-+/* Subroutine of sparc_expand_vector_init. Emit code to initialize
-+ all fields of TARGET to ELT in V4HI by means of VIS FALIGNDATA insn. */
-+
-+static void
-+vector_init_faligndata (rtx target, rtx elt)
-+{
-+ rtx t1 = gen_reg_rtx (V4HImode);
-+ int i;
-+
-+ elt = convert_modes (SImode, HImode, elt, true);
-+ emit_move_insn (gen_lowpart (SImode, t1), elt);
-+
-+ emit_insn (gen_alignaddrsi_vis (gen_reg_rtx (SImode),
-+ force_reg (SImode, GEN_INT (6)),
-+ const0_rtx));
-+
-+ for (i = 0; i < 4; i++)
-+ emit_insn (gen_faligndatav4hi_vis (target, t1, target));
-+}
-+
-+/* Emit code to initialize TARGET to values for individual fields VALS. */
-+
-+void
-+sparc_expand_vector_init (rtx target, rtx vals)
-+{
-+ const machine_mode mode = GET_MODE (target);
-+ const machine_mode inner_mode = GET_MODE_INNER (mode);
-+ const int n_elts = GET_MODE_NUNITS (mode);
-+ int i, n_var = 0;
-+ bool all_same = true;
-+ rtx mem;
-+
-+ for (i = 0; i < n_elts; i++)
-+ {
-+ rtx x = XVECEXP (vals, 0, i);
-+ if (!(CONST_SCALAR_INT_P (x) || CONST_DOUBLE_P (x) || CONST_FIXED_P (x)))
-+ n_var++;
-+
-+ if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0)))
-+ all_same = false;
-+ }
-+
-+ if (n_var == 0)
-+ {
-+ emit_move_insn (target, gen_rtx_CONST_VECTOR (mode, XVEC (vals, 0)));
-+ return;
-+ }
-+
-+ if (GET_MODE_SIZE (inner_mode) == GET_MODE_SIZE (mode))
-+ {
-+ if (GET_MODE_SIZE (inner_mode) == 4)
-+ {
-+ emit_move_insn (gen_lowpart (SImode, target),
-+ gen_lowpart (SImode, XVECEXP (vals, 0, 0)));
-+ return;
-+ }
-+ else if (GET_MODE_SIZE (inner_mode) == 8)
-+ {
-+ emit_move_insn (gen_lowpart (DImode, target),
-+ gen_lowpart (DImode, XVECEXP (vals, 0, 0)));
-+ return;
-+ }
-+ }
-+ else if (GET_MODE_SIZE (inner_mode) == GET_MODE_SIZE (word_mode)
-+ && GET_MODE_SIZE (mode) == 2 * GET_MODE_SIZE (word_mode))
-+ {
-+ emit_move_insn (gen_highpart (word_mode, target),
-+ gen_lowpart (word_mode, XVECEXP (vals, 0, 0)));
-+ emit_move_insn (gen_lowpart (word_mode, target),
-+ gen_lowpart (word_mode, XVECEXP (vals, 0, 1)));
-+ return;
-+ }
-+
-+ if (all_same && GET_MODE_SIZE (mode) == 8)
-+ {
-+ if (TARGET_VIS2)
-+ {
-+ vector_init_bshuffle (target, XVECEXP (vals, 0, 0), mode, inner_mode);
-+ return;
-+ }
-+ if (mode == V8QImode)
-+ {
-+ vector_init_fpmerge (target, XVECEXP (vals, 0, 0));
-+ return;
-+ }
-+ if (mode == V4HImode)
-+ {
-+ vector_init_faligndata (target, XVECEXP (vals, 0, 0));
-+ return;
-+ }
-+ }
-+
-+ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
-+ for (i = 0; i < n_elts; i++)
-+ emit_move_insn (adjust_address_nv (mem, inner_mode,
-+ i * GET_MODE_SIZE (inner_mode)),
-+ XVECEXP (vals, 0, i));
-+ emit_move_insn (target, mem);
-+}
-+
-+/* Implement TARGET_SECONDARY_RELOAD. */
-+
-+static reg_class_t
-+sparc_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
-+ machine_mode mode, secondary_reload_info *sri)
-+{
-+ enum reg_class rclass = (enum reg_class) rclass_i;
-+
-+ sri->icode = CODE_FOR_nothing;
-+ sri->extra_cost = 0;
-+
-+ /* We need a temporary when loading/storing a HImode/QImode value
-+ between memory and the FPU registers. This can happen when combine puts
-+ a paradoxical subreg in a float/fix conversion insn. */
-+ if (FP_REG_CLASS_P (rclass)
-+ && (mode == HImode || mode == QImode)
-+ && (GET_CODE (x) == MEM
-+ || ((GET_CODE (x) == REG || GET_CODE (x) == SUBREG)
-+ && true_regnum (x) == -1)))
-+ return GENERAL_REGS;
-+
-+ /* On 32-bit we need a temporary when loading/storing a DFmode value
-+ between unaligned memory and the upper FPU registers. */
-+ if (TARGET_ARCH32
-+ && rclass == EXTRA_FP_REGS
-+ && mode == DFmode
-+ && GET_CODE (x) == MEM
-+ && ! mem_min_alignment (x, 8))
-+ return FP_REGS;
-+
-+ if (((TARGET_CM_MEDANY
-+ && symbolic_operand (x, mode))
-+ || (TARGET_CM_EMBMEDANY
-+ && text_segment_operand (x, mode)))
-+ && ! flag_pic)
-+ {
-+ if (in_p)
-+ sri->icode = direct_optab_handler (reload_in_optab, mode);
-+ else
-+ sri->icode = direct_optab_handler (reload_out_optab, mode);
-+ return NO_REGS;
-+ }
-+
-+ if (TARGET_VIS3 && TARGET_ARCH32)
-+ {
-+ int regno = true_regnum (x);
-+
-+ /* When using VIS3 fp<-->int register moves, on 32-bit we have
-+ to move 8-byte values in 4-byte pieces. This only works via
-+ FP_REGS, and not via EXTRA_FP_REGS. Therefore if we try to
-+ move between EXTRA_FP_REGS and GENERAL_REGS, we will need
-+ an FP_REGS intermediate move. */
-+ if ((rclass == EXTRA_FP_REGS && SPARC_INT_REG_P (regno))
-+ || ((general_or_i64_p (rclass)
-+ || rclass == GENERAL_OR_FP_REGS)
-+ && SPARC_FP_REG_P (regno)))
-+ {
-+ sri->extra_cost = 2;
-+ return FP_REGS;
-+ }
-+ }
-+
-+ return NO_REGS;
-+}
-+
-+/* Implement TARGET_SECONDARY_MEMORY_NEEDED.
-+
-+ On SPARC when not VIS3 it is not possible to directly move data
-+ between GENERAL_REGS and FP_REGS. */
-+
-+static bool
-+sparc_secondary_memory_needed (machine_mode mode, reg_class_t class1,
-+ reg_class_t class2)
-+{
-+ return ((FP_REG_CLASS_P (class1) != FP_REG_CLASS_P (class2))
-+ && (! TARGET_VIS3
-+ || GET_MODE_SIZE (mode) > 8
-+ || GET_MODE_SIZE (mode) < 4));
-+}
-+
-+/* Implement TARGET_SECONDARY_MEMORY_NEEDED_MODE.
-+
-+ get_secondary_mem widens its argument to BITS_PER_WORD which loses on v9
-+ because the movsi and movsf patterns don't handle r/f moves.
-+ For v8 we copy the default definition. */
-+
-+static machine_mode
-+sparc_secondary_memory_needed_mode (machine_mode mode)
-+{
-+ if (TARGET_ARCH64)
-+ {
-+ if (GET_MODE_BITSIZE (mode) < 32)
-+ return mode_for_size (32, GET_MODE_CLASS (mode), 0).require ();
-+ return mode;
-+ }
-+ else
-+ {
-+ if (GET_MODE_BITSIZE (mode) < BITS_PER_WORD)
-+ return mode_for_size (BITS_PER_WORD,
-+ GET_MODE_CLASS (mode), 0).require ();
-+ return mode;
-+ }
-+}
-+
-+/* Emit code to conditionally move either OPERANDS[2] or OPERANDS[3] into
-+ OPERANDS[0] in MODE. OPERANDS[1] is the operator of the condition. */
-+
-+bool
-+sparc_expand_conditional_move (machine_mode mode, rtx *operands)
-+{
-+ enum rtx_code rc = GET_CODE (operands[1]);
-+ machine_mode cmp_mode;
-+ rtx cc_reg, dst, cmp;
-+
-+ cmp = operands[1];
-+ if (GET_MODE (XEXP (cmp, 0)) == DImode && !TARGET_ARCH64)
-+ return false;
-+
-+ if (GET_MODE (XEXP (cmp, 0)) == TFmode && !TARGET_HARD_QUAD)
-+ cmp = sparc_emit_float_lib_cmp (XEXP (cmp, 0), XEXP (cmp, 1), rc);
-+
-+ cmp_mode = GET_MODE (XEXP (cmp, 0));
-+ rc = GET_CODE (cmp);
-+
-+ dst = operands[0];
-+ if (! rtx_equal_p (operands[2], dst)
-+ && ! rtx_equal_p (operands[3], dst))
-+ {
-+ if (reg_overlap_mentioned_p (dst, cmp))
-+ dst = gen_reg_rtx (mode);
-+
-+ emit_move_insn (dst, operands[3]);
-+ }
-+ else if (operands[2] == dst)
-+ {
-+ operands[2] = operands[3];
-+
-+ if (GET_MODE_CLASS (cmp_mode) == MODE_FLOAT)
-+ rc = reverse_condition_maybe_unordered (rc);
-+ else
-+ rc = reverse_condition (rc);
-+ }
-+
-+ if (XEXP (cmp, 1) == const0_rtx
-+ && GET_CODE (XEXP (cmp, 0)) == REG
-+ && cmp_mode == DImode
-+ && v9_regcmp_p (rc))
-+ cc_reg = XEXP (cmp, 0);
-+ else
-+ cc_reg = gen_compare_reg_1 (rc, XEXP (cmp, 0), XEXP (cmp, 1));
-+
-+ cmp = gen_rtx_fmt_ee (rc, GET_MODE (cc_reg), cc_reg, const0_rtx);
-+
-+ emit_insn (gen_rtx_SET (dst,
-+ gen_rtx_IF_THEN_ELSE (mode, cmp, operands[2], dst)));
-+
-+ if (dst != operands[0])
-+ emit_move_insn (operands[0], dst);
-+
-+ return true;
-+}
-+
-+/* Emit code to conditionally move a combination of OPERANDS[1] and OPERANDS[2]
-+ into OPERANDS[0] in MODE, depending on the outcome of the comparison of
-+ OPERANDS[4] and OPERANDS[5]. OPERANDS[3] is the operator of the condition.
-+ FCODE is the machine code to be used for OPERANDS[3] and CCODE the machine
-+ code to be used for the condition mask. */
-+
-+void
-+sparc_expand_vcond (machine_mode mode, rtx *operands, int ccode, int fcode)
-+{
-+ rtx mask, cop0, cop1, fcmp, cmask, bshuf, gsr;
-+ enum rtx_code code = GET_CODE (operands[3]);
-+
-+ mask = gen_reg_rtx (Pmode);
-+ cop0 = operands[4];
-+ cop1 = operands[5];
-+ if (code == LT || code == GE)
-+ {
-+ rtx t;
-+
-+ code = swap_condition (code);
-+ t = cop0; cop0 = cop1; cop1 = t;
-+ }
-+
-+ gsr = gen_rtx_REG (DImode, SPARC_GSR_REG);
-+
-+ fcmp = gen_rtx_UNSPEC (Pmode,
-+ gen_rtvec (1, gen_rtx_fmt_ee (code, mode, cop0, cop1)),
-+ fcode);
-+
-+ cmask = gen_rtx_UNSPEC (DImode,
-+ gen_rtvec (2, mask, gsr),
-+ ccode);
-+
-+ bshuf = gen_rtx_UNSPEC (mode,
-+ gen_rtvec (3, operands[1], operands[2], gsr),
-+ UNSPEC_BSHUFFLE);
-+
-+ emit_insn (gen_rtx_SET (mask, fcmp));
-+ emit_insn (gen_rtx_SET (gsr, cmask));
-+
-+ emit_insn (gen_rtx_SET (operands[0], bshuf));
-+}
-+
-+/* On sparc, any mode which naturally allocates into the float
-+ registers should return 4 here. */
-+
-+unsigned int
-+sparc_regmode_natural_size (machine_mode mode)
-+{
-+ int size = UNITS_PER_WORD;
-+
-+ if (TARGET_ARCH64)
-+ {
-+ enum mode_class mclass = GET_MODE_CLASS (mode);
-+
-+ if (mclass == MODE_FLOAT || mclass == MODE_VECTOR_INT)
-+ size = 4;
-+ }
-+
-+ return size;
-+}
-+
-+/* Implement TARGET_HARD_REGNO_NREGS.
-+
-+ On SPARC, ordinary registers hold 32 bits worth; this means both
-+ integer and floating point registers. On v9, integer regs hold 64
-+ bits worth; floating point regs hold 32 bits worth (this includes the
-+ new fp regs as even the odd ones are included in the hard register
-+ count). */
-+
-+static unsigned int
-+sparc_hard_regno_nregs (unsigned int regno, machine_mode mode)
-+{
-+ if (regno == SPARC_GSR_REG)
-+ return 1;
-+ if (TARGET_ARCH64)
-+ {
-+ if (SPARC_INT_REG_P (regno) || regno == FRAME_POINTER_REGNUM)
-+ return CEIL (GET_MODE_SIZE (mode), UNITS_PER_WORD);
-+ return CEIL (GET_MODE_SIZE (mode), 4);
-+ }
-+ return CEIL (GET_MODE_SIZE (mode), UNITS_PER_WORD);
-+}
-+
-+/* Implement TARGET_HARD_REGNO_MODE_OK.
-+
-+ ??? Because of the funny way we pass parameters we should allow certain
-+ ??? types of float/complex values to be in integer registers during
-+ ??? RTL generation. This only matters on arch32. */
-+
-+static bool
-+sparc_hard_regno_mode_ok (unsigned int regno, machine_mode mode)
-+{
-+ return (hard_regno_mode_classes[regno] & sparc_mode_class[mode]) != 0;
-+}
-+
-+/* Implement TARGET_MODES_TIEABLE_P.
-+
-+ For V9 we have to deal with the fact that only the lower 32 floating
-+ point registers are 32-bit addressable. */
-+
-+static bool
-+sparc_modes_tieable_p (machine_mode mode1, machine_mode mode2)
-+{
-+ enum mode_class mclass1, mclass2;
-+ unsigned short size1, size2;
-+
-+ if (mode1 == mode2)
-+ return true;
-+
-+ mclass1 = GET_MODE_CLASS (mode1);
-+ mclass2 = GET_MODE_CLASS (mode2);
-+ if (mclass1 != mclass2)
-+ return false;
-+
-+ if (! TARGET_V9)
-+ return true;
-+
-+ /* Classes are the same and we are V9 so we have to deal with upper
-+ vs. lower floating point registers. If one of the modes is a
-+ 4-byte mode, and the other is not, we have to mark them as not
-+ tieable because only the lower 32 floating point register are
-+ addressable 32-bits at a time.
-+
-+ We can't just test explicitly for SFmode, otherwise we won't
-+ cover the vector mode cases properly. */
-+
-+ if (mclass1 != MODE_FLOAT && mclass1 != MODE_VECTOR_INT)
-+ return true;
-+
-+ size1 = GET_MODE_SIZE (mode1);
-+ size2 = GET_MODE_SIZE (mode2);
-+ if ((size1 > 4 && size2 == 4)
-+ || (size2 > 4 && size1 == 4))
-+ return false;
-+
-+ return true;
-+}
-+
-+/* Implement TARGET_CSTORE_MODE. */
-+
-+static scalar_int_mode
-+sparc_cstore_mode (enum insn_code icode ATTRIBUTE_UNUSED)
-+{
-+ return (TARGET_ARCH64 ? DImode : SImode);
-+}
-+
-+/* Return the compound expression made of T1 and T2. */
-+
-+static inline tree
-+compound_expr (tree t1, tree t2)
-+{
-+ return build2 (COMPOUND_EXPR, void_type_node, t1, t2);
-+}
-+
-+/* Implement TARGET_ATOMIC_ASSIGN_EXPAND_FENV hook. */
-+
-+static void
-+sparc_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
-+{
-+ if (!TARGET_FPU)
-+ return;
-+
-+ const unsigned HOST_WIDE_INT accrued_exception_mask = 0x1f << 5;
-+ const unsigned HOST_WIDE_INT trap_enable_mask = 0x1f << 23;
-+
-+ /* We generate the equivalent of feholdexcept (&fenv_var):
-+
-+ unsigned int fenv_var;
-+ __builtin_store_fsr (&fenv_var);
-+
-+ unsigned int tmp1_var;
-+ tmp1_var = fenv_var & ~(accrued_exception_mask | trap_enable_mask);
-+
-+ __builtin_load_fsr (&tmp1_var); */
-+
-+ tree fenv_var = create_tmp_var_raw (unsigned_type_node);
-+ TREE_ADDRESSABLE (fenv_var) = 1;
-+ tree fenv_addr = build_fold_addr_expr (fenv_var);
-+ tree stfsr = sparc_builtins[SPARC_BUILTIN_STFSR];
-+ tree hold_stfsr
-+ = build4 (TARGET_EXPR, unsigned_type_node, fenv_var,
-+ build_call_expr (stfsr, 1, fenv_addr), NULL_TREE, NULL_TREE);
-+
-+ tree tmp1_var = create_tmp_var_raw (unsigned_type_node);
-+ TREE_ADDRESSABLE (tmp1_var) = 1;
-+ tree masked_fenv_var
-+ = build2 (BIT_AND_EXPR, unsigned_type_node, fenv_var,
-+ build_int_cst (unsigned_type_node,
-+ ~(accrued_exception_mask | trap_enable_mask)));
-+ tree hold_mask
-+ = build4 (TARGET_EXPR, unsigned_type_node, tmp1_var, masked_fenv_var,
-+ NULL_TREE, NULL_TREE);
-+
-+ tree tmp1_addr = build_fold_addr_expr (tmp1_var);
-+ tree ldfsr = sparc_builtins[SPARC_BUILTIN_LDFSR];
-+ tree hold_ldfsr = build_call_expr (ldfsr, 1, tmp1_addr);
-+
-+ *hold = compound_expr (compound_expr (hold_stfsr, hold_mask), hold_ldfsr);
-+
-+ /* We reload the value of tmp1_var to clear the exceptions:
-+
-+ __builtin_load_fsr (&tmp1_var); */
-+
-+ *clear = build_call_expr (ldfsr, 1, tmp1_addr);
-+
-+ /* We generate the equivalent of feupdateenv (&fenv_var):
-+
-+ unsigned int tmp2_var;
-+ __builtin_store_fsr (&tmp2_var);
-+
-+ __builtin_load_fsr (&fenv_var);
-+
-+ if (SPARC_LOW_FE_EXCEPT_VALUES)
-+ tmp2_var >>= 5;
-+ __atomic_feraiseexcept ((int) tmp2_var); */
-+
-+ tree tmp2_var = create_tmp_var_raw (unsigned_type_node);
-+ TREE_ADDRESSABLE (tmp2_var) = 1;
-+ tree tmp2_addr = build_fold_addr_expr (tmp2_var);
-+ tree update_stfsr
-+ = build4 (TARGET_EXPR, unsigned_type_node, tmp2_var,
-+ build_call_expr (stfsr, 1, tmp2_addr), NULL_TREE, NULL_TREE);
-+
-+ tree update_ldfsr = build_call_expr (ldfsr, 1, fenv_addr);
-+
-+ tree atomic_feraiseexcept
-+ = builtin_decl_implicit (BUILT_IN_ATOMIC_FERAISEEXCEPT);
-+ tree update_call
-+ = build_call_expr (atomic_feraiseexcept, 1,
-+ fold_convert (integer_type_node, tmp2_var));
-+
-+ if (SPARC_LOW_FE_EXCEPT_VALUES)
-+ {
-+ tree shifted_tmp2_var
-+ = build2 (RSHIFT_EXPR, unsigned_type_node, tmp2_var,
-+ build_int_cst (unsigned_type_node, 5));
-+ tree update_shift
-+ = build2 (MODIFY_EXPR, void_type_node, tmp2_var, shifted_tmp2_var);
-+ update_call = compound_expr (update_shift, update_call);
-+ }
-+
-+ *update
-+ = compound_expr (compound_expr (update_stfsr, update_ldfsr), update_call);
-+}
-+
-+/* Implement TARGET_CAN_CHANGE_MODE_CLASS. Borrowed from the PA port.
-+
-+ SImode loads to floating-point registers are not zero-extended.
-+ The definition for LOAD_EXTEND_OP specifies that integer loads
-+ narrower than BITS_PER_WORD will be zero-extended. As a result,
-+ we inhibit changes from SImode unless they are to a mode that is
-+ identical in size.
-+
-+ Likewise for SFmode, since word-mode paradoxical subregs are
-+ problematic on big-endian architectures. */
-+
-+static bool
-+sparc_can_change_mode_class (machine_mode from, machine_mode to,
-+ reg_class_t rclass)
-+{
-+ if (TARGET_ARCH64
-+ && GET_MODE_SIZE (from) == 4
-+ && GET_MODE_SIZE (to) != 4)
-+ return !reg_classes_intersect_p (rclass, FP_REGS);
-+ return true;
-+}
-+
-+/* Implement TARGET_CONSTANT_ALIGNMENT. */
-+
-+static HOST_WIDE_INT
-+sparc_constant_alignment (const_tree exp, HOST_WIDE_INT align)
-+{
-+ if (TREE_CODE (exp) == STRING_CST)
-+ return MAX (align, FASTEST_ALIGNMENT);
-+ return align;
-+}
-+
-+#include "gt-sparc.h"
-diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.md gcc-10.3.0/gcc/config/sparc/sparc.md
---- gcc-10.3.0.orig/gcc/config/sparc/sparc.md 2021-04-08 13:56:28.205742322 +0200
-+++ gcc-10.3.0/gcc/config/sparc/sparc.md 2021-04-09 07:51:37.936504607 +0200
-@@ -1601,7 +1601,10 @@
- (clobber (reg:P O7_REG))]
- "REGNO (operands[0]) == INTVAL (operands[3])"
- {
-- return output_load_pcrel_sym (operands);
-+ if (flag_delayed_branch)
-+ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
-+ else
-+ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
- }
- [(set (attr "type") (const_string "multi"))
- (set (attr "length")
-diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.md.orig gcc-10.3.0/gcc/config/sparc/sparc.md.orig
---- gcc-10.3.0.orig/gcc/config/sparc/sparc.md.orig 1970-01-01 01:00:00.000000000 +0100
-+++ gcc-10.3.0/gcc/config/sparc/sparc.md.orig 2021-04-08 13:56:28.205742322 +0200
-@@ -0,0 +1,9524 @@
-+;; Machine description for SPARC.
-+;; Copyright (C) 1987-2020 Free Software Foundation, Inc.
-+;; Contributed by Michael Tiemann (tiemann@cygnus.com)
-+;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
-+;; at Cygnus Support.
-+
-+;; This file is part of GCC.
-+
-+;; GCC is free software; you can redistribute it and/or modify
-+;; it under the terms of the GNU General Public License as published by
-+;; the Free Software Foundation; either version 3, or (at your option)
-+;; any later version.
-+
-+;; GCC is distributed in the hope that it will be useful,
-+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+;; GNU General Public License for more details.
-+
-+;; You should have received a copy of the GNU General Public License
-+;; along with GCC; see the file COPYING3. If not see
-+;; <http://www.gnu.org/licenses/>.
-+
-+(define_c_enum "unspec" [
-+ UNSPEC_MOVE_PIC
-+ UNSPEC_UPDATE_RETURN
-+ UNSPEC_LOAD_PCREL_SYM
-+ UNSPEC_FRAME_BLOCKAGE
-+ UNSPEC_MOVE_PIC_LABEL
-+ UNSPEC_SETH44
-+ UNSPEC_SETM44
-+ UNSPEC_SETHH
-+ UNSPEC_SETLM
-+ UNSPEC_EMB_HISUM
-+ UNSPEC_EMB_TEXTUHI
-+ UNSPEC_EMB_TEXTHI
-+ UNSPEC_EMB_TEXTULO
-+ UNSPEC_EMB_SETHM
-+ UNSPEC_MOVE_GOTDATA
-+
-+ UNSPEC_MEMBAR
-+ UNSPEC_ATOMIC
-+
-+ UNSPEC_TLSGD
-+ UNSPEC_TLSLDM
-+ UNSPEC_TLSLDO
-+ UNSPEC_TLSIE
-+ UNSPEC_TLSLE
-+ UNSPEC_TLSLD_BASE
-+
-+ UNSPEC_FPACK16
-+ UNSPEC_FPACK32
-+ UNSPEC_FPACKFIX
-+ UNSPEC_FEXPAND
-+ UNSPEC_MUL16AU
-+ UNSPEC_MUL16AL
-+ UNSPEC_MUL8UL
-+ UNSPEC_MULDUL
-+ UNSPEC_ALIGNDATA
-+ UNSPEC_FCMP
-+ UNSPEC_PDIST
-+ UNSPEC_EDGE8
-+ UNSPEC_EDGE8L
-+ UNSPEC_EDGE16
-+ UNSPEC_EDGE16L
-+ UNSPEC_EDGE32
-+ UNSPEC_EDGE32L
-+ UNSPEC_ARRAY8
-+ UNSPEC_ARRAY16
-+ UNSPEC_ARRAY32
-+
-+ UNSPEC_SP_SET
-+ UNSPEC_SP_TEST
-+
-+ UNSPEC_EDGE8N
-+ UNSPEC_EDGE8LN
-+ UNSPEC_EDGE16N
-+ UNSPEC_EDGE16LN
-+ UNSPEC_EDGE32N
-+ UNSPEC_EDGE32LN
-+ UNSPEC_BSHUFFLE
-+ UNSPEC_CMASK8
-+ UNSPEC_CMASK16
-+ UNSPEC_CMASK32
-+ UNSPEC_FCHKSM16
-+ UNSPEC_PDISTN
-+ UNSPEC_FUCMP
-+ UNSPEC_FHADD
-+ UNSPEC_FHSUB
-+ UNSPEC_XMUL
-+ UNSPEC_MUL8
-+ UNSPEC_MUL8SU
-+ UNSPEC_MULDSU
-+
-+ UNSPEC_ADDV
-+ UNSPEC_SUBV
-+ UNSPEC_NEGV
-+
-+ UNSPEC_DICTUNPACK
-+ UNSPEC_FPCMPSHL
-+ UNSPEC_FPUCMPSHL
-+ UNSPEC_FPCMPDESHL
-+ UNSPEC_FPCMPURSHL
-+])
-+
-+(define_c_enum "unspecv" [
-+ UNSPECV_BLOCKAGE
-+
-+ UNSPECV_SPECULATION_BARRIER
-+
-+ UNSPECV_PROBE_STACK_RANGE
-+
-+ UNSPECV_FLUSHW
-+ UNSPECV_SAVEW
-+
-+ UNSPECV_FLUSH
-+
-+ UNSPECV_LDSTUB
-+ UNSPECV_SWAP
-+ UNSPECV_CAS
-+
-+ UNSPECV_LDFSR
-+ UNSPECV_STFSR
-+])
-+
-+(define_constants
-+ [(G0_REG 0)
-+ (G1_REG 1)
-+ (G2_REG 2)
-+ (G3_REG 3)
-+ (G4_REG 4)
-+ (G5_REG 5)
-+ (G6_REG 6)
-+ (G7_REG 7)
-+ (O0_REG 8)
-+ (O1_REG 9)
-+ (O2_REG 10)
-+ (O3_REG 11)
-+ (O4_REG 12)
-+ (O5_REG 13)
-+ (O6_REG 14)
-+ (O7_REG 15)
-+ (L0_REG 16)
-+ (L1_REG 17)
-+ (L2_REG 18)
-+ (L3_REG 19)
-+ (L4_REG 20)
-+ (L5_REG 21)
-+ (L6_REG 22)
-+ (L7_REG 23)
-+ (I0_REG 24)
-+ (I1_REG 25)
-+ (I2_REG 26)
-+ (I3_REG 27)
-+ (I4_REG 28)
-+ (I5_REG 29)
-+ (I6_REG 30)
-+ (I7_REG 31)
-+ (F0_REG 32)
-+ (F1_REG 33)
-+ (F2_REG 34)
-+ (F3_REG 35)
-+ (F4_REG 36)
-+ (F5_REG 37)
-+ (F6_REG 38)
-+ (F7_REG 39)
-+ (F8_REG 40)
-+ (F9_REG 41)
-+ (F10_REG 42)
-+ (F11_REG 43)
-+ (F12_REG 44)
-+ (F13_REG 45)
-+ (F14_REG 46)
-+ (F15_REG 47)
-+ (F16_REG 48)
-+ (F17_REG 49)
-+ (F18_REG 50)
-+ (F19_REG 51)
-+ (F20_REG 52)
-+ (F21_REG 53)
-+ (F22_REG 54)
-+ (F23_REG 55)
-+ (F24_REG 56)
-+ (F25_REG 57)
-+ (F26_REG 58)
-+ (F27_REG 59)
-+ (F28_REG 60)
-+ (F29_REG 61)
-+ (F30_REG 62)
-+ (F31_REG 63)
-+ (F32_REG 64)
-+ (F34_REG 66)
-+ (F36_REG 68)
-+ (F38_REG 70)
-+ (F40_REG 72)
-+ (F42_REG 74)
-+ (F44_REG 76)
-+ (F46_REG 78)
-+ (F48_REG 80)
-+ (F50_REG 82)
-+ (F52_REG 84)
-+ (F54_REG 86)
-+ (F56_REG 88)
-+ (F58_REG 90)
-+ (F60_REG 92)
-+ (F62_REG 94)
-+ (FCC0_REG 96)
-+ (FCC1_REG 97)
-+ (FCC2_REG 98)
-+ (FCC3_REG 99)
-+ (CC_REG 100)
-+ (SFP_REG 101)
-+ (GSR_REG 102)
-+ ])
-+
-+(define_mode_iterator I [QI HI SI DI])
-+(define_mode_iterator P [(SI "TARGET_ARCH32") (DI "TARGET_ARCH64")])
-+(define_mode_iterator W [SI (DI "TARGET_ARCH64")])
-+(define_mode_iterator F [SF DF TF])
-+
-+;; The upper 32 fp regs on the v9 can't hold SFmode values. To deal with this
-+;; a second register class, EXTRA_FP_REGS, exists for the v9 chip. The name
-+;; is a bit of a misnomer as it covers all 64 fp regs. The corresponding
-+;; constraint letter is 'e'. To avoid any confusion, 'e' is used instead of
-+;; 'f' for all DF/TFmode values, including those that are specific to the v8.
-+
-+;; Attribute for cpu type.
-+;; These must match the values of enum sparc_processor_type in sparc-opts.h.
-+(define_attr "cpu"
-+ "v7,
-+ cypress,
-+ v8,
-+ supersparc,
-+ hypersparc,
-+ leon,
-+ leon3,
-+ leon3v7,
-+ sparclite,
-+ f930,
-+ f934,
-+ sparclite86x,
-+ sparclet,
-+ tsc701,
-+ v9,
-+ ultrasparc,
-+ ultrasparc3,
-+ niagara,
-+ niagara2,
-+ niagara3,
-+ niagara4,
-+ niagara7,
-+ m8"
-+ (const (symbol_ref "sparc_cpu_attr")))
-+
-+;; Attribute for the instruction set.
-+;; At present we only need to distinguish v9/!v9, but for clarity we
-+;; test TARGET_V8 too.
-+(define_attr "isa" "v7,v8,v9,sparclet"
-+ (const
-+ (cond [(symbol_ref "TARGET_V9") (const_string "v9")
-+ (symbol_ref "TARGET_V8") (const_string "v8")
-+ (symbol_ref "TARGET_SPARCLET") (const_string "sparclet")]
-+ (const_string "v7"))))
-+
-+(define_attr "cpu_feature" "none,fpu,fpunotv9,v9,vis,vis3,vis4,vis4b"
-+ (const_string "none"))
-+
-+(define_attr "lra" "disabled,enabled"
-+ (const_string "enabled"))
-+
-+(define_attr "enabled" ""
-+ (cond [(eq_attr "cpu_feature" "none")
-+ (cond [(eq_attr "lra" "disabled") (symbol_ref "!TARGET_LRA")] (const_int 1))
-+ (eq_attr "cpu_feature" "fpu") (symbol_ref "TARGET_FPU")
-+ (eq_attr "cpu_feature" "fpunotv9") (symbol_ref "TARGET_FPU && !TARGET_V9")
-+ (eq_attr "cpu_feature" "v9") (symbol_ref "TARGET_V9")
-+ (eq_attr "cpu_feature" "vis") (symbol_ref "TARGET_VIS")
-+ (eq_attr "cpu_feature" "vis3") (symbol_ref "TARGET_VIS3")
-+ (eq_attr "cpu_feature" "vis4") (symbol_ref "TARGET_VIS4")
-+ (eq_attr "cpu_feature" "vis4b") (symbol_ref "TARGET_VIS4B")]
-+ (const_int 0)))
-+
-+;; The SPARC instructions used by the backend are organized into a
-+;; hierarchy using the insn attributes "type" and "subtype".
-+;;
-+;; The mnemonics used in the list below are the architectural names
-+;; used in the Oracle SPARC Architecture specs. A / character
-+;; separates the type from the subtype where appropriate. For
-+;; brevity, text enclosed in {} denotes alternatives, while text
-+;; enclosed in [] is optional.
-+;;
-+;; Please keep this list updated. It is of great help for keeping the
-+;; correctness and coherence of the DFA schedulers.
-+;;
-+;; ialu: <empty>
-+;; ialuX: ADD[X]C SUB[X]C
-+;; shift: SLL[X] SRL[X] SRA[X]
-+;; cmove: MOV{A,N,NE,E,G,LE,GE,L,GU,LEU,CC,CS,POS,NEG,VC,VS}
-+;; MOVF{A,N,U,G,UG,L,UL,LG,NE,E,UE,GE,UGE,LE,ULE,O}
-+;; MOVR{Z,LEZ,LZ,NZ,GZ,GEZ}
-+;; compare: ADDcc ADDCcc ANDcc ORcc SUBcc SUBCcc XORcc XNORcc
-+;; imul: MULX SMUL[cc] UMUL UMULXHI XMULX XMULXHI
-+;; idiv: UDIVX SDIVX
-+;; flush: FLUSH
-+;; load/regular: LD{UB,UH,UW} LDFSR
-+;; load/prefetch: PREFETCH
-+;; fpload: LDF LDDF LDQF
-+;; sload: LD{SB,SH,SW}
-+;; store: ST{B,H,W,X} STFSR
-+;; fpstore: STF STDF STQF
-+;; cbcond: CWB{NE,E,G,LE,GE,L,GU,LEU,CC,CS,POS,NEG,VC,VS}
-+;; CXB{NE,E,G,LE,GE,L,GU,LEU,CC,CS,POS,NEG,VC,VS}
-+;; uncond_branch: BA BPA JMPL
-+;; branch: B{NE,E,G,LE,GE,L,GU,LEU,CC,CS,POS,NEG,VC,VS}
-+;; BP{NE,E,G,LE,GE,L,GU,LEU,CC,CS,POS,NEG,VC,VS}
-+;; FB{U,G,UG,L,UL,LG,NE,BE,UE,GE,UGE,LE,ULE,O}
-+;; call: CALL
-+;; return: RESTORE RETURN
-+;; fpmove: FABS{s,d,q} FMOV{s,d,q} FNEG{s,d,q}
-+;; fpcmove: FMOV{S,D,Q}{icc,xcc,fcc}
-+;; fpcrmove: FMOVR{s,d,q}{Z,LEZ,LZ,NZ,GZ,GEZ}
-+;; fp: FADD{s,d,q} FSUB{s,d,q} FHSUB{s,d} FNHADD{s,d} FNADD{s,d}
-+;; FiTO{s,d,q} FsTO{i,x,d,q} FdTO{i,x,s,q} FxTO{d,s,q} FqTO{i,x,s,d}
-+;; fpcmp: FCMP{s,d,q} FCMPE{s,d,q}
-+;; fpmul: FMADD{s,d} FMSUB{s,d} FMUL{s,d,q} FNMADD{s,d}
-+;; FNMSUB{s,d} FNMUL{s,d} FNsMULd FsMULd
-+;; FdMULq
-+;; array: ARRAY{8,16,32}
-+;; bmask: BMASK
-+;; edge: EDGE{8,16,32}[L]cc
-+;; edgen: EDGE{8,16,32}[L]n
-+;; fpdivs: FDIV{s,q}
-+;; fpsqrts: FSQRT{s,q}
-+;; fpdivd: FDIVd
-+;; fpsqrtd: FSQRTd
-+;; lzd: LZCNT
-+;; fga/addsub64: FP{ADD,SUB}64
-+;; fga/fpu: FCHKSM16 FEXPANd FMEAN16 FPMERGE
-+;; FS{LL,RA,RL}{16,32}
-+;; fga/maxmin: FP{MAX,MIN}[U]{8,16,32}
-+;; fga/cmask: CMASK{8,16,32}
-+;; fga/other: BSHUFFLE FALIGNDATAg FP{ADD,SUB}[S]{8,16,32}
-+;; FP{ADD,SUB}US{8,16} DICTUNPACK
-+;; gsr/reg: RDGSR WRGSR
-+;; gsr/alignaddr: ALIGNADDRESS[_LITTLE]
-+;; vismv/double: FSRC2d
-+;; vismv/single: MOVwTOs FSRC2s
-+;; vismv/movstouw: MOVsTOuw
-+;; vismv/movxtod: MOVxTOd
-+;; vismv/movdtox: MOVdTOx
-+;; visl/single: F{AND,NAND,NOR,OR,NOT1}s
-+;; F{AND,OR}NOT{1,2}s
-+;; FONEs F{ZERO,XNOR,XOR}s FNOT2s
-+;; visl/double: FONEd FZEROd FNOT1d F{OR,AND,XOR}d F{NOR,NAND,XNOR}d
-+;; F{OR,AND}NOT1d F{OR,AND}NOT2d
-+;; viscmp: FPCMP{LE,GT,NE,EQ}{8,16,32} FPCMPU{LE,GT,NE,EQ}{8,16,32}
-+;; FPCMP{LE,GT,EQ,NE}{8,16,32}SHL FPCMPU{LE,GT,EQ,NE}{8,16,32}SHL
-+;; FPCMPDE{8,16,32}SHL FPCMPUR{8,16,32}SHL
-+;; fgm_pack: FPACKFIX FPACK{8,16,32}
-+;; fgm_mul: FMUL8SUx16 FMUL8ULx16 FMUL8x16 FMUL8x16AL
-+;; FMUL8x16AU FMULD8SUx16 FMULD8ULx16
-+;; pdist: PDIST
-+;; pdistn: PDISTN
-+
-+(define_attr "type"
-+ "ialu,compare,shift,
-+ load,sload,store,
-+ uncond_branch,branch,call,sibcall,call_no_delay_slot,return,
-+ cbcond,uncond_cbcond,
-+ imul,idiv,
-+ fpload,fpstore,
-+ fp,fpmove,
-+ fpcmove,fpcrmove,
-+ fpcmp,
-+ fpmul,fpdivs,fpdivd,
-+ fpsqrts,fpsqrtd,
-+ fga,visl,vismv,viscmp,
-+ fgm_pack,fgm_mul,pdist,pdistn,edge,edgen,gsr,array,bmask,
-+ cmove,
-+ ialuX,
-+ multi,savew,flushw,iflush,trap,lzd"
-+ (const_string "ialu"))
-+
-+(define_attr "subtype"
-+ "single,double,movstouw,movxtod,movdtox,
-+ addsub64,cmask,fpu,maxmin,other,
-+ reg,alignaddr,
-+ prefetch,regular"
-+ (const_string "single"))
-+
-+;; True if branch/call has empty delay slot and will emit a nop in it
-+(define_attr "empty_delay_slot" "false,true"
-+ (symbol_ref "(empty_delay_slot (insn)
-+ ? EMPTY_DELAY_SLOT_TRUE : EMPTY_DELAY_SLOT_FALSE)"))
-+
-+;; True if we are making use of compare-and-branch instructions.
-+;; True if we should emit a nop after a cbcond instruction
-+(define_attr "emit_cbcond_nop" "false,true"
-+ (symbol_ref "(emit_cbcond_nop (insn)
-+ ? EMIT_CBCOND_NOP_TRUE : EMIT_CBCOND_NOP_FALSE)"))
-+
-+(define_attr "branch_type" "none,icc,fcc,reg"
-+ (const_string "none"))
-+
-+(define_attr "pic" "false,true"
-+ (symbol_ref "(flag_pic != 0
-+ ? PIC_TRUE : PIC_FALSE)"))
-+
-+(define_attr "calls_alloca" "false,true"
-+ (symbol_ref "(cfun->calls_alloca != 0
-+ ? CALLS_ALLOCA_TRUE : CALLS_ALLOCA_FALSE)"))
-+
-+(define_attr "calls_eh_return" "false,true"
-+ (symbol_ref "(crtl->calls_eh_return != 0
-+ ? CALLS_EH_RETURN_TRUE : CALLS_EH_RETURN_FALSE)"))
-+
-+(define_attr "leaf_function" "false,true"
-+ (symbol_ref "(crtl->uses_only_leaf_regs != 0
-+ ? LEAF_FUNCTION_TRUE : LEAF_FUNCTION_FALSE)"))
-+
-+(define_attr "delayed_branch" "false,true"
-+ (symbol_ref "(flag_delayed_branch != 0
-+ ? DELAYED_BRANCH_TRUE : DELAYED_BRANCH_FALSE)"))
-+
-+(define_attr "flat" "false,true"
-+ (symbol_ref "(TARGET_FLAT != 0
-+ ? FLAT_TRUE : FLAT_FALSE)"))
-+
-+(define_attr "fix_ut699" "false,true"
-+ (symbol_ref "(sparc_fix_ut699 != 0
-+ ? FIX_UT699_TRUE : FIX_UT699_FALSE)"))
-+
-+(define_attr "fix_b2bst" "false,true"
-+ (symbol_ref "(sparc_fix_b2bst != 0
-+ ? FIX_B2BST_TRUE : FIX_B2BST_FALSE)"))
-+
-+(define_attr "fix_lost_divsqrt" "false,true"
-+ (symbol_ref "(sparc_fix_lost_divsqrt != 0
-+ ? FIX_LOST_DIVSQRT_TRUE : FIX_LOST_DIVSQRT_FALSE)"))
-+
-+(define_attr "fix_gr712rc" "false,true"
-+ (symbol_ref "(sparc_fix_gr712rc != 0
-+ ? FIX_GR712RC_TRUE : FIX_GR712RC_FALSE)"))
-+
-+;; Length (in # of insns).
-+;; Beware that setting a length greater or equal to 3 for conditional branches
-+;; has a side-effect (see output_cbranch and output_v9branch).
-+(define_attr "length" ""
-+ (cond [(eq_attr "type" "uncond_branch,call")
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (eq_attr "type" "sibcall")
-+ (if_then_else (ior (eq_attr "leaf_function" "true")
-+ (eq_attr "flat" "true"))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 3)
-+ (const_int 2))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1)))
-+ (eq_attr "branch_type" "icc")
-+ (if_then_else (match_operand 0 "v9_comparison_operator" "")
-+ (if_then_else (lt (pc) (match_dup 1))
-+ (if_then_else (lt (minus (match_dup 1) (pc)) (const_int 260000))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 4)
-+ (const_int 3)))
-+ (if_then_else (lt (minus (pc) (match_dup 1)) (const_int 260000))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 4)
-+ (const_int 3))))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1)))
-+ (eq_attr "branch_type" "fcc")
-+ (if_then_else (match_operand 0 "fcc0_register_operand" "")
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (if_then_else (not (match_test "TARGET_V9"))
-+ (const_int 3)
-+ (const_int 2))
-+ (if_then_else (not (match_test "TARGET_V9"))
-+ (const_int 2)
-+ (const_int 1)))
-+ (if_then_else (lt (pc) (match_dup 2))
-+ (if_then_else (lt (minus (match_dup 2) (pc)) (const_int 260000))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 4)
-+ (const_int 3)))
-+ (if_then_else (lt (minus (pc) (match_dup 2)) (const_int 260000))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 4)
-+ (const_int 3)))))
-+ (eq_attr "branch_type" "reg")
-+ (if_then_else (lt (pc) (match_dup 2))
-+ (if_then_else (lt (minus (match_dup 2) (pc)) (const_int 32000))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 4)
-+ (const_int 3)))
-+ (if_then_else (lt (minus (pc) (match_dup 2)) (const_int 32000))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 4)
-+ (const_int 3))))
-+ (eq_attr "type" "cbcond")
-+ (if_then_else (lt (pc) (match_dup 3))
-+ (if_then_else (lt (minus (match_dup 3) (pc)) (const_int 500))
-+ (if_then_else (eq_attr "emit_cbcond_nop" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (const_int 4))
-+ (if_then_else (lt (minus (pc) (match_dup 3)) (const_int 500))
-+ (if_then_else (eq_attr "emit_cbcond_nop" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (const_int 4)))
-+ (eq_attr "type" "uncond_cbcond")
-+ (if_then_else (lt (pc) (match_dup 0))
-+ (if_then_else (lt (minus (match_dup 0) (pc)) (const_int 500))
-+ (if_then_else (eq_attr "emit_cbcond_nop" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (const_int 1))
-+ (if_then_else (lt (minus (pc) (match_dup 0)) (const_int 500))
-+ (if_then_else (eq_attr "emit_cbcond_nop" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (const_int 1)))
-+ ] (const_int 1)))
-+
-+;; FP precision.
-+(define_attr "fptype" "single,double"
-+ (const_string "single"))
-+
-+;; FP precision specific to the UT699.
-+(define_attr "fptype_ut699" "none,single"
-+ (const_string "none"))
-+
-+;; UltraSPARC-III integer load type.
-+(define_attr "us3load_type" "2cycle,3cycle"
-+ (const_string "2cycle"))
-+
-+(define_asm_attributes
-+ [(set_attr "length" "2")
-+ (set_attr "type" "multi")])
-+
-+;; Attributes for branch scheduling
-+(define_attr "tls_delay_slot" "false,true"
-+ (symbol_ref "((TARGET_GNU_TLS && HAVE_GNU_LD) != 0
-+ ? TLS_DELAY_SLOT_TRUE : TLS_DELAY_SLOT_FALSE)"))
-+
-+(define_attr "in_sibcall_delay" "false,true"
-+ (symbol_ref "(eligible_for_sibcall_delay (insn)
-+ ? IN_SIBCALL_DELAY_TRUE : IN_SIBCALL_DELAY_FALSE)"))
-+
-+(define_attr "in_return_delay" "false,true"
-+ (symbol_ref "(eligible_for_return_delay (insn)
-+ ? IN_RETURN_DELAY_TRUE : IN_RETURN_DELAY_FALSE)"))
-+
-+;; ??? !v9: Should implement the notion of predelay slots for floating-point
-+;; branches. This would allow us to remove the nop always inserted before
-+;; a floating point branch.
-+
-+;; ??? It is OK for fill_simple_delay_slots to put load/store instructions
-+;; in a delay slot, but it is not OK for fill_eager_delay_slots to do so.
-+;; This is because doing so will add several pipeline stalls to the path
-+;; that the load/store did not come from. Unfortunately, there is no way
-+;; to prevent fill_eager_delay_slots from using load/store without completely
-+;; disabling them. For the SPEC benchmark set, this is a serious lose,
-+;; because it prevents us from moving back the final store of inner loops.
-+
-+(define_attr "in_branch_delay" "false,true"
-+ (cond [(eq_attr "type" "uncond_branch,branch,cbcond,uncond_cbcond,call,sibcall,call_no_delay_slot,multi")
-+ (const_string "false")
-+ (and (eq_attr "fix_lost_divsqrt" "true")
-+ (eq_attr "type" "fpdivs,fpsqrts,fpdivd,fpsqrtd"))
-+ (const_string "false")
-+ (and (eq_attr "fix_b2bst" "true") (eq_attr "type" "store,fpstore"))
-+ (const_string "false")
-+ (and (eq_attr "fix_ut699" "true") (eq_attr "type" "load,sload"))
-+ (const_string "false")
-+ (and (eq_attr "fix_ut699" "true")
-+ (and (eq_attr "type" "fpload,fp,fpmove,fpmul,fpdivs,fpsqrts")
-+ (ior (eq_attr "fptype" "single")
-+ (eq_attr "fptype_ut699" "single"))))
-+ (const_string "false")
-+ (eq_attr "length" "1")
-+ (const_string "true")
-+ ] (const_string "false")))
-+
-+(define_attr "in_integer_branch_annul_delay" "false,true"
-+ (cond [(and (eq_attr "fix_gr712rc" "true")
-+ (eq_attr "type" "fp,fpcmp,fpmove,fpcmove,fpmul,
-+ fpdivs,fpsqrts,fpdivd,fpsqrtd"))
-+ (const_string "false")
-+ (eq_attr "in_branch_delay" "true")
-+ (const_string "true")
-+ ] (const_string "false")))
-+
-+(define_delay (eq_attr "type" "sibcall")
-+ [(eq_attr "in_sibcall_delay" "true") (nil) (nil)])
-+
-+(define_delay (eq_attr "type" "return")
-+ [(eq_attr "in_return_delay" "true") (nil) (nil)])
-+
-+(define_delay (ior (eq_attr "type" "call") (eq_attr "type" "uncond_branch"))
-+ [(eq_attr "in_branch_delay" "true") (nil) (nil)])
-+
-+(define_delay (and (eq_attr "type" "branch") (not (eq_attr "branch_type" "icc")))
-+ [(eq_attr "in_branch_delay" "true")
-+ (nil)
-+ (eq_attr "in_branch_delay" "true")])
-+
-+(define_delay (and (eq_attr "type" "branch") (eq_attr "branch_type" "icc"))
-+ [(eq_attr "in_branch_delay" "true")
-+ (nil)
-+ (eq_attr "in_integer_branch_annul_delay" "true")])
-+
-+;; Include SPARC DFA schedulers
-+
-+(include "cypress.md")
-+(include "supersparc.md")
-+(include "hypersparc.md")
-+(include "leon.md")
-+(include "sparclet.md")
-+(include "ultra1_2.md")
-+(include "ultra3.md")
-+(include "niagara.md")
-+(include "niagara2.md")
-+(include "niagara4.md")
-+(include "niagara7.md")
-+(include "m8.md")
-+
-+
-+;; Operand and operator predicates and constraints
-+
-+(include "predicates.md")
-+(include "constraints.md")
-+
-+
-+;; Compare instructions.
-+
-+;; These are just the DEFINE_INSNs to match the patterns and the
-+;; DEFINE_SPLITs for some of the scc insns that actually require
-+;; more than one machine instruction. DEFINE_EXPANDs are further down.
-+
-+(define_insn "*cmpsi_insn"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operand:SI 0 "register_operand" "r")
-+ (match_operand:SI 1 "arith_operand" "rI")))]
-+ ""
-+ "cmp\t%0, %1"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmpdi_sp64"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operand:DI 0 "register_operand" "r")
-+ (match_operand:DI 1 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "cmp\t%0, %1"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmpsi_sne"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:SI (match_operand:SI 0 "arith_operand" "rI"))
-+ (const_int -1)))]
-+ ""
-+ "cmp\t%%g0, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmpdi_sne"
-+ [(set (reg:CCXC CC_REG)
-+ (compare:CCXC (not:DI (match_operand:DI 0 "arith_operand" "rI"))
-+ (const_int -1)))]
-+ "TARGET_ARCH64"
-+ "cmp\t%%g0, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmpsf_fpe"
-+ [(set (match_operand:CCFPE 0 "fcc_register_operand" "=c")
-+ (compare:CCFPE (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_FPU"
-+{
-+ if (TARGET_V9)
-+ return "fcmpes\t%0, %1, %2";
-+ return "fcmpes\t%1, %2";
-+}
-+ [(set_attr "type" "fpcmp")])
-+
-+(define_insn "*cmpdf_fpe"
-+ [(set (match_operand:CCFPE 0 "fcc_register_operand" "=c")
-+ (compare:CCFPE (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU"
-+{
-+ if (TARGET_V9)
-+ return "fcmped\t%0, %1, %2";
-+ return "fcmped\t%1, %2";
-+}
-+ [(set_attr "type" "fpcmp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*cmptf_fpe"
-+ [(set (match_operand:CCFPE 0 "fcc_register_operand" "=c")
-+ (compare:CCFPE (match_operand:TF 1 "register_operand" "e")
-+ (match_operand:TF 2 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+{
-+ if (TARGET_V9)
-+ return "fcmpeq\t%0, %1, %2";
-+ return "fcmpeq\t%1, %2";
-+}
-+ [(set_attr "type" "fpcmp")])
-+
-+(define_insn "*cmpsf_fp"
-+ [(set (match_operand:CCFP 0 "fcc_register_operand" "=c")
-+ (compare:CCFP (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_FPU"
-+{
-+ if (TARGET_V9)
-+ return "fcmps\t%0, %1, %2";
-+ return "fcmps\t%1, %2";
-+}
-+ [(set_attr "type" "fpcmp")])
-+
-+(define_insn "*cmpdf_fp"
-+ [(set (match_operand:CCFP 0 "fcc_register_operand" "=c")
-+ (compare:CCFP (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU"
-+{
-+ if (TARGET_V9)
-+ return "fcmpd\t%0, %1, %2";
-+ return "fcmpd\t%1, %2";
-+}
-+ [(set_attr "type" "fpcmp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*cmptf_fp"
-+ [(set (match_operand:CCFP 0 "fcc_register_operand" "=c")
-+ (compare:CCFP (match_operand:TF 1 "register_operand" "e")
-+ (match_operand:TF 2 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+{
-+ if (TARGET_V9)
-+ return "fcmpq\t%0, %1, %2";
-+ return "fcmpq\t%1, %2";
-+}
-+ [(set_attr "type" "fpcmp")])
-+
-+;; Next come the scc insns.
-+
-+;; Note that the boolean result (operand 0) takes on DImode
-+;; (not SImode) when TARGET_ARCH64.
-+
-+(define_expand "cstoresi4"
-+ [(use (match_operator 1 "comparison_operator"
-+ [(match_operand:SI 2 "compare_operand" "")
-+ (match_operand:SI 3 "arith_operand" "")]))
-+ (clobber (match_operand:SI 0 "cstore_result_operand"))]
-+ ""
-+{
-+ if (GET_CODE (operands[2]) == ZERO_EXTRACT && operands[3] != const0_rtx)
-+ operands[2] = force_reg (SImode, operands[2]);
-+ if (emit_scc_insn (operands)) DONE; else FAIL;
-+})
-+
-+(define_expand "cstoredi4"
-+ [(use (match_operator 1 "comparison_operator"
-+ [(match_operand:DI 2 "compare_operand" "")
-+ (match_operand:DI 3 "arith_operand" "")]))
-+ (clobber (match_operand:SI 0 "cstore_result_operand"))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[2]) == ZERO_EXTRACT && operands[3] != const0_rtx)
-+ operands[2] = force_reg (DImode, operands[2]);
-+ if (emit_scc_insn (operands)) DONE; else FAIL;
-+})
-+
-+(define_expand "cstore<F:mode>4"
-+ [(use (match_operator 1 "comparison_operator"
-+ [(match_operand:F 2 "register_operand" "")
-+ (match_operand:F 3 "register_operand" "")]))
-+ (clobber (match_operand:SI 0 "cstore_result_operand"))]
-+ "TARGET_FPU"
-+{
-+ if (emit_scc_insn (operands)) DONE; else FAIL;
-+})
-+
-+;; The SNE and SEQ patterns are special because they can be done
-+;; without any branching and do not involve a COMPARE.
-+
-+(define_insn_and_split "*snesi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (ne:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0)))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (ltu:W (reg:CCC CC_REG) (const_int 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*neg_snesi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (ne:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (neg:W (ltu:W (reg:CCC CC_REG) (const_int 0))))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*snedi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=&r")
-+ (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0)))]
-+ "TARGET_ARCH64 && !TARGET_VIS3"
-+ "#"
-+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
-+ [(set (match_dup 0) (const_int 0))
-+ (set (match_dup 0) (if_then_else:W (ne:DI (match_dup 1) (const_int 0))
-+ (const_int 1)
-+ (match_dup 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*snedi<W:mode>_zero_vis3"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0)))
-+ (clobber (reg:CCX CC_REG))]
-+ "TARGET_ARCH64 && TARGET_VIS3"
-+ "#"
-+ ""
-+ [(set (reg:CCXC CC_REG) (compare:CCXC (not:DI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (ltu:W (reg:CCXC CC_REG) (const_int 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*neg_snedi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=&r")
-+ (neg:W (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0))))]
-+ "TARGET_ARCH64 && !TARGET_SUBXC"
-+ "#"
-+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
-+ [(set (match_dup 0) (const_int 0))
-+ (set (match_dup 0) (if_then_else:W (ne:DI (match_dup 1) (const_int 0))
-+ (const_int -1)
-+ (match_dup 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*neg_snedi<W:mode>_zero_subxc"
-+ [(set (match_operand:W 0 "register_operand" "=&r")
-+ (neg:W (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0))))
-+ (clobber (reg:CCX CC_REG))]
-+ "TARGET_ARCH64 && TARGET_SUBXC"
-+ "#"
-+ ""
-+ [(set (reg:CCXC CC_REG) (compare:CCXC (not:DI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (neg:W (ltu:W (reg:CCXC CC_REG) (const_int 0))))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*seqsi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (eq:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0)))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (geu:W (reg:CCC CC_REG) (const_int 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*neg_seqsi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (eq:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (neg:W (geu:W (reg:CCC CC_REG) (const_int 0))))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*seqdi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=&r")
-+ (eq:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "#"
-+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
-+ [(set (match_dup 0) (const_int 0))
-+ (set (match_dup 0) (if_then_else:W (eq:DI (match_dup 1) (const_int 0))
-+ (const_int 1)
-+ (match_dup 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*neg_seqdi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=&r")
-+ (neg:W (eq:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0))))]
-+ "TARGET_ARCH64"
-+ "#"
-+ "&& !reg_overlap_mentioned_p (operands[1], operands[0])"
-+ [(set (match_dup 0) (const_int 0))
-+ (set (match_dup 0) (if_then_else:W (eq:DI (match_dup 1) (const_int 0))
-+ (const_int -1)
-+ (match_dup 0)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+;; We can also do (x + (i == 0)) and related, so put them in.
-+
-+(define_insn_and_split "*plus_snesi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (ne:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))
-+ (match_operand:W 2 "register_operand" "r")))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (plus:W (ltu:W (reg:CCC CC_REG) (const_int 0))
-+ (match_dup 2)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*plus_plus_snesi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (plus:W (ne:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))
-+ (match_operand:W 2 "register_operand" "r"))
-+ (match_operand:W 3 "register_operand" "r")))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (plus:W (plus:W (ltu:W (reg:CCC CC_REG) (const_int 0))
-+ (match_dup 2))
-+ (match_dup 3)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*plus_snedi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0))
-+ (match_operand:W 2 "register_operand" "r")))
-+ (clobber (reg:CCX CC_REG))]
-+ "TARGET_ARCH64 && TARGET_VIS3"
-+ "#"
-+ ""
-+ [(set (reg:CCXC CC_REG) (compare:CCXC (not:DI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (plus:W (ltu:W (reg:CCXC CC_REG) (const_int 0))
-+ (match_dup 2)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*plus_plus_snedi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (plus:W (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0))
-+ (match_operand:W 2 "register_operand" "r"))
-+ (match_operand:W 3 "register_operand" "r")))
-+ (clobber (reg:CCX CC_REG))]
-+ "TARGET_ARCH64 && TARGET_VIS3"
-+ "#"
-+ ""
-+ [(set (reg:CCXC CC_REG) (compare:CCXC (not:DI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (plus:W (plus:W (ltu:W (reg:CCXC CC_REG) (const_int 0))
-+ (match_dup 2))
-+ (match_dup 3)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*minus_snesi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (match_operand:W 2 "register_operand" "r")
-+ (ne:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (minus:W (match_dup 2)
-+ (ltu:W (reg:CCC CC_REG) (const_int 0))))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*minus_minus_snesi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (minus:W (match_operand:W 2 "register_operand" "r")
-+ (ne:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0)))
-+ (match_operand:W 3 "register_operand" "r")))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (minus:W (minus:W (match_dup 2)
-+ (ltu:W (reg:CCC CC_REG) (const_int 0)))
-+ (match_dup 3)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*minus_snedi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (match_operand:W 2 "register_operand" "r")
-+ (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0))))
-+ (clobber (reg:CCX CC_REG))]
-+ "TARGET_ARCH64 && TARGET_SUBXC"
-+ "#"
-+ ""
-+ [(set (reg:CCXC CC_REG) (compare:CCXC (not:DI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (minus:W (match_dup 2)
-+ (ltu:W (reg:CCXC CC_REG) (const_int 0))))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*minus_minus_snedi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (minus:W (match_operand:W 2 "register_operand" "r")
-+ (ne:W (match_operand:DI 1 "register_operand" "r")
-+ (const_int 0)))
-+ (match_operand:W 3 "register_operand" "r")))
-+ (clobber (reg:CCX CC_REG))]
-+ "TARGET_ARCH64 && TARGET_SUBXC"
-+ "#"
-+ ""
-+ [(set (reg:CCXC CC_REG) (compare:CCXC (not:DI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (minus:W (minus:W (match_dup 2)
-+ (ltu:W (reg:CCXC CC_REG) (const_int 0)))
-+ (match_dup 3)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*plus_seqsi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (eq:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))
-+ (match_operand:W 2 "register_operand" "r")))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (plus:W (geu:W (reg:CCC CC_REG) (const_int 0))
-+ (match_dup 2)))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*minus_seqsi<W:mode>_zero"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (match_operand:W 2 "register_operand" "r")
-+ (eq:W (match_operand:SI 1 "register_operand" "r")
-+ (const_int 0))))
-+ (clobber (reg:CC CC_REG))]
-+ ""
-+ "#"
-+ ""
-+ [(set (reg:CCC CC_REG) (compare:CCC (not:SI (match_dup 1)) (const_int -1)))
-+ (set (match_dup 0) (minus:W (match_dup 2)
-+ (geu:W (reg:CCC CC_REG) (const_int 0))))]
-+ ""
-+ [(set_attr "length" "2")])
-+
-+;; We can also do GEU and LTU directly, but these operate after a compare.
-+
-+(define_insn "*sltu<W:mode>_insn"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (ltu:W (match_operand 1 "icc_register_operand" "X") (const_int 0)))]
-+ "GET_MODE (operands[1]) == CCmode || GET_MODE (operands[1]) == CCCmode"
-+ "addx\t%%g0, 0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*plus_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "arith_operand" "rI")))]
-+ "GET_MODE (operands[2]) == CCmode || GET_MODE (operands[2]) == CCCmode"
-+ "addx\t%%g0, %1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*plus_plus_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (plus:W (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "register_operand" "%r"))
-+ (match_operand:W 2 "arith_operand" "rI")))]
-+ "GET_MODE (operands[3]) == CCmode || GET_MODE (operands[3]) == CCCmode"
-+ "addx\t%1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_sgeu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (geu:W (match_operand 1 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "GET_MODE (operands[1]) == CCmode || GET_MODE (operands[1]) == CCCmode"
-+ "addx\t%%g0, -1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_sgeusidi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI (neg:SI (geu:SI (match_operand 1 "icc_register_operand" "X")
-+ (const_int 0)))))]
-+ "TARGET_ARCH64
-+ && (GET_MODE (operands[1]) == CCmode || GET_MODE (operands[1]) == CCCmode)"
-+ "addx\t%%g0, -1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_sgeu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (match_operand:W 1 "register_operand" "r")
-+ (geu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "GET_MODE (operands[2]) == CCmode || GET_MODE (operands[2]) == CCCmode"
-+ "addx\t%1, -1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*addx<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (plus:W (match_operand:W 1 "register_operand" "%r")
-+ (match_operand:W 2 "arith_operand" "rI"))
-+ (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "GET_MODE (operands[3]) == CCmode || GET_MODE (operands[3]) == CCCmode"
-+ "addx\t%1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*sltu<W:mode>_insn_vis3"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (ltu:W (match_operand 1 "icc_register_operand" "X") (const_int 0)))]
-+ "TARGET_ARCH64 && TARGET_VIS3
-+ && (GET_MODE (operands[1]) == CCXmode || GET_MODE (operands[1]) == CCXCmode)"
-+ "addxc\t%%g0, %%g0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*plus_sltu<W:mode>_vis3"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "register_operand" "r")))]
-+ "TARGET_ARCH64 && TARGET_VIS3
-+ && (GET_MODE (operands[2]) == CCXmode || GET_MODE (operands[2]) == CCXCmode)"
-+ "addxc\t%%g0, %1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*plus_plus_sltu<W:mode>_vis3"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (plus:W (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "register_operand" "%r"))
-+ (match_operand:W 2 "register_operand" "r")))]
-+ "TARGET_ARCH64 && TARGET_VIS3
-+ && (GET_MODE (operands[3]) == CCXmode || GET_MODE (operands[3]) == CCXCmode)"
-+ "addxc\t%1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*addxc<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (plus:W (match_operand:W 1 "register_operand" "%r")
-+ (match_operand:W 2 "register_operand" "r"))
-+ (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "TARGET_ARCH64 && TARGET_VIS3
-+ && (GET_MODE (operands[3]) == CCXmode || GET_MODE (operands[3]) == CCXCmode)"
-+ "addxc\t%1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (ltu:W (match_operand 1 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "GET_MODE (operands[1]) == CCmode || GET_MODE (operands[1]) == CCCmode"
-+ "subx\t%%g0, 0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_sltusidi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI (neg:SI (ltu:SI (match_operand 1 "icc_register_operand" "X")
-+ (const_int 0)))))]
-+ "TARGET_ARCH64
-+ && (GET_MODE (operands[1]) == CCmode || GET_MODE (operands[1]) == CCCmode)"
-+ "subx\t%%g0, 0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_neg_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (neg:W (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0)))
-+ (match_operand:W 1 "arith_operand" "rI")))]
-+ "GET_MODE (operands[2]) == CCmode || GET_MODE (operands[2]) == CCCmode"
-+ "subx\t%%g0, %1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_plus_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (plus:W (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "arith_operand" "rI"))))]
-+ "GET_MODE (operands[2]) == CCmode || GET_MODE (operands[2]) == CCCmode"
-+ "subx\t%%g0, %1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (match_operand:W 1 "register_operand" "r")
-+ (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "GET_MODE (operands[2]) == CCmode || GET_MODE (operands[2]) == CCCmode"
-+ "subx\t%1, 0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_minus_sltu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (minus:W (match_operand:W 1 "register_or_zero_operand" "rJ")
-+ (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0)))
-+ (match_operand:W 2 "arith_operand" "rI")))]
-+ "GET_MODE (operands[3]) == CCmode || GET_MODE (operands[3]) == CCCmode"
-+ "subx\t%r1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*sgeu<W:mode>_insn"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (geu:W (match_operand 1 "icc_register_operand" "X") (const_int 0)))]
-+ "GET_MODE (operands[1]) == CCmode || GET_MODE (operands[1]) == CCCmode"
-+ "subx\t%%g0, -1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*plus_sgeu<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (plus:W (geu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "register_operand" "r")))]
-+ "GET_MODE (operands[2]) == CCmode || GET_MODE (operands[2]) == CCCmode"
-+ "subx\t%1, -1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*subx<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (minus:W (match_operand:W 1 "register_or_zero_operand" "rJ")
-+ (match_operand:W 2 "arith_operand" "rI"))
-+ (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "GET_MODE (operands[3]) == CCmode || GET_MODE (operands[3]) == CCCmode"
-+ "subx\t%r1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_sltu<W:mode>_subxc"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (ltu:W (match_operand 1 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "TARGET_ARCH64 && TARGET_SUBXC
-+ && (GET_MODE (operands[1]) == CCXmode || GET_MODE (operands[1]) == CCXCmode)"
-+ "subxc\t%%g0, %%g0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_neg_sltu<W:mode>_subxc"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (neg:W (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0)))
-+ (match_operand:W 1 "register_operand" "r")))]
-+ "TARGET_ARCH64 && TARGET_SUBXC
-+ && (GET_MODE (operands[2]) == CCXmode || GET_MODE (operands[2]) == CCXCmode)"
-+ "subxc\t%%g0, %1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*neg_plus_sltu<W:mode>_subxc"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (neg:W (plus:W (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))
-+ (match_operand:W 1 "register_operand" "r"))))]
-+ "TARGET_ARCH64 && TARGET_SUBXC
-+ && (GET_MODE (operands[2]) == CCXmode || GET_MODE (operands[2]) == CCXCmode)"
-+ "subxc\t%%g0, %1, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_sltu<W:mode>_subxc"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (match_operand:W 1 "register_operand" "r")
-+ (ltu:W (match_operand 2 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "TARGET_ARCH64 && TARGET_SUBXC
-+ && (GET_MODE (operands[2]) == CCXmode || GET_MODE (operands[2]) == CCXCmode)"
-+ "subxc\t%1, %%g0, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*minus_minus_sltu<W:mode>_subxc"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (minus:W (match_operand:W 1 "register_or_zero_operand" "rJ")
-+ (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0)))
-+ (match_operand:W 2 "register_operand" "r")))]
-+ "TARGET_ARCH64 && TARGET_SUBXC
-+ && (GET_MODE (operands[3]) == CCXmode || GET_MODE (operands[3]) == CCXCmode)"
-+ "subxc\t%r1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_insn "*subxc<W:mode>"
-+ [(set (match_operand:W 0 "register_operand" "=r")
-+ (minus:W (minus:W (match_operand:W 1 "register_or_zero_operand" "rJ")
-+ (match_operand:W 2 "register_operand" "r"))
-+ (ltu:W (match_operand 3 "icc_register_operand" "X")
-+ (const_int 0))))]
-+ "TARGET_ARCH64 && TARGET_SUBXC
-+ && (GET_MODE (operands[3]) == CCXmode || GET_MODE (operands[3]) == CCXCmode)"
-+ "subxc\t%r1, %2, %0"
-+ [(set_attr "type" "ialuX")])
-+
-+(define_split
-+ [(set (match_operand:W 0 "register_operand" "")
-+ (match_operator:W 1 "icc_comparison_operator"
-+ [(match_operand 2 "icc_register_operand" "") (const_int 0)]))]
-+ "TARGET_V9
-+ /* 64-bit LTU is better implemented using addxc with VIS3. */
-+ && !(GET_CODE (operands[1]) == LTU
-+ && (GET_MODE (operands[2]) == CCXmode
-+ || GET_MODE (operands[2]) == CCXCmode)
-+ && TARGET_VIS3)
-+ /* 32-bit LTU/GEU are better implemented using addx/subx. */
-+ && !((GET_CODE (operands[1]) == LTU || GET_CODE (operands[1]) == GEU)
-+ && (GET_MODE (operands[2]) == CCmode
-+ || GET_MODE (operands[2]) == CCCmode))"
-+ [(set (match_dup 0) (const_int 0))
-+ (set (match_dup 0)
-+ (if_then_else:SI (match_op_dup:W 1 [(match_dup 2) (const_int 0)])
-+ (const_int 1)
-+ (match_dup 0)))]
-+ "")
-+
-+;; These control RTL generation for conditional jump insns
-+
-+(define_expand "cbranchcc4"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "comparison_operator"
-+ [(match_operand 1 "compare_operand" "")
-+ (match_operand 2 "const_zero_operand" "")])
-+ (label_ref (match_operand 3 "" ""))
-+ (pc)))]
-+ ""
-+ "")
-+
-+(define_expand "cbranchsi4"
-+ [(use (match_operator 0 "comparison_operator"
-+ [(match_operand:SI 1 "compare_operand" "")
-+ (match_operand:SI 2 "arith_operand" "")]))
-+ (use (match_operand 3 ""))]
-+ ""
-+{
-+ if (GET_CODE (operands[1]) == ZERO_EXTRACT && operands[2] != const0_rtx)
-+ operands[1] = force_reg (SImode, operands[1]);
-+ emit_conditional_branch_insn (operands);
-+ DONE;
-+})
-+
-+(define_expand "cbranchdi4"
-+ [(use (match_operator 0 "comparison_operator"
-+ [(match_operand:DI 1 "compare_operand" "")
-+ (match_operand:DI 2 "arith_operand" "")]))
-+ (use (match_operand 3 ""))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[1]) == ZERO_EXTRACT && operands[2] != const0_rtx)
-+ operands[1] = force_reg (DImode, operands[1]);
-+ emit_conditional_branch_insn (operands);
-+ DONE;
-+})
-+
-+(define_expand "cbranch<F:mode>4"
-+ [(use (match_operator 0 "comparison_operator"
-+ [(match_operand:F 1 "register_operand" "")
-+ (match_operand:F 2 "register_operand" "")]))
-+ (use (match_operand 3 ""))]
-+ "TARGET_FPU"
-+{
-+ emit_conditional_branch_insn (operands);
-+ DONE;
-+})
-+
-+
-+;; Now match both normal and inverted jump.
-+
-+;; XXX fpcmp nop braindamage
-+(define_insn "*normal_branch"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "icc_comparison_operator"
-+ [(reg CC_REG) (const_int 0)])
-+ (label_ref (match_operand 1 "" ""))
-+ (pc)))]
-+ ""
-+{
-+ return output_cbranch (operands[0], operands[1], 1, 0,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "icc")])
-+
-+;; XXX fpcmp nop braindamage
-+(define_insn "*inverted_branch"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "icc_comparison_operator"
-+ [(reg CC_REG) (const_int 0)])
-+ (pc)
-+ (label_ref (match_operand 1 "" ""))))]
-+ ""
-+{
-+ return output_cbranch (operands[0], operands[1], 1, 1,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "icc")])
-+
-+;; XXX fpcmp nop braindamage
-+(define_insn "*normal_fp_branch"
-+ [(set (pc)
-+ (if_then_else (match_operator 1 "comparison_operator"
-+ [(match_operand:CCFP 0 "fcc_register_operand" "c")
-+ (const_int 0)])
-+ (label_ref (match_operand 2 "" ""))
-+ (pc)))]
-+ ""
-+{
-+ return output_cbranch (operands[1], operands[2], 2, 0,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "fcc")])
-+
-+;; XXX fpcmp nop braindamage
-+(define_insn "*inverted_fp_branch"
-+ [(set (pc)
-+ (if_then_else (match_operator 1 "comparison_operator"
-+ [(match_operand:CCFP 0 "fcc_register_operand" "c")
-+ (const_int 0)])
-+ (pc)
-+ (label_ref (match_operand 2 "" ""))))]
-+ ""
-+{
-+ return output_cbranch (operands[1], operands[2], 2, 1,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "fcc")])
-+
-+;; XXX fpcmp nop braindamage
-+(define_insn "*normal_fpe_branch"
-+ [(set (pc)
-+ (if_then_else (match_operator 1 "comparison_operator"
-+ [(match_operand:CCFPE 0 "fcc_register_operand" "c")
-+ (const_int 0)])
-+ (label_ref (match_operand 2 "" ""))
-+ (pc)))]
-+ ""
-+{
-+ return output_cbranch (operands[1], operands[2], 2, 0,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "fcc")])
-+
-+;; XXX fpcmp nop braindamage
-+(define_insn "*inverted_fpe_branch"
-+ [(set (pc)
-+ (if_then_else (match_operator 1 "comparison_operator"
-+ [(match_operand:CCFPE 0 "fcc_register_operand" "c")
-+ (const_int 0)])
-+ (pc)
-+ (label_ref (match_operand 2 "" ""))))]
-+ ""
-+{
-+ return output_cbranch (operands[1], operands[2], 2, 1,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "fcc")])
-+
-+;; SPARC V9-specific jump insns. None of these are guaranteed to be
-+;; in the architecture.
-+
-+(define_insn "*cbcond_sp32"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "comparison_operator"
-+ [(match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith5_operand" "rA")])
-+ (label_ref (match_operand 3 "" ""))
-+ (pc)))]
-+ "TARGET_CBCOND"
-+{
-+ return output_cbcond (operands[0], operands[3], insn);
-+}
-+ [(set_attr "type" "cbcond")])
-+
-+(define_insn "*cbcond_sp64"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "comparison_operator"
-+ [(match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "arith5_operand" "rA")])
-+ (label_ref (match_operand 3 "" ""))
-+ (pc)))]
-+ "TARGET_ARCH64 && TARGET_CBCOND"
-+{
-+ return output_cbcond (operands[0], operands[3], insn);
-+}
-+ [(set_attr "type" "cbcond")])
-+
-+;; There are no 32-bit brreg insns.
-+
-+(define_insn "*normal_int_branch_sp64"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "v9_register_comparison_operator"
-+ [(match_operand:DI 1 "register_operand" "r")
-+ (const_int 0)])
-+ (label_ref (match_operand 2 "" ""))
-+ (pc)))]
-+ "TARGET_ARCH64"
-+{
-+ return output_v9branch (operands[0], operands[2], 1, 2, 0,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "reg")])
-+
-+(define_insn "*inverted_int_branch_sp64"
-+ [(set (pc)
-+ (if_then_else (match_operator 0 "v9_register_comparison_operator"
-+ [(match_operand:DI 1 "register_operand" "r")
-+ (const_int 0)])
-+ (pc)
-+ (label_ref (match_operand 2 "" ""))))]
-+ "TARGET_ARCH64"
-+{
-+ return output_v9branch (operands[0], operands[2], 1, 2, 1,
-+ final_sequence && INSN_ANNULLED_BRANCH_P (insn),
-+ insn);
-+}
-+ [(set_attr "type" "branch")
-+ (set_attr "branch_type" "reg")])
-+
-+
-+;; Load in operand 0 the (absolute) address of operand 1, which is a symbolic
-+;; value subject to a PC-relative relocation. Operand 2 is a helper function
-+;; that adds the PC value at the call point to register #(operand 3).
-+;;
-+;; Even on V9 we use this call sequence with a stub, instead of "rd %pc, ..."
-+;; because the RDPC instruction is extremely expensive and incurs a complete
-+;; instruction pipeline flush.
-+
-+(define_insn "load_pcrel_sym<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "symbolic_operand" "")
-+ (match_operand:P 2 "call_address_operand" "")
-+ (match_operand:P 3 "const_int_operand" "")]
-+ UNSPEC_LOAD_PCREL_SYM))
-+ (clobber (reg:P O7_REG))]
-+ "REGNO (operands[0]) == INTVAL (operands[3])"
-+{
-+ return output_load_pcrel_sym (operands);
-+}
-+ [(set (attr "type") (const_string "multi"))
-+ (set (attr "length")
-+ (if_then_else (eq_attr "delayed_branch" "true")
-+ (const_int 3)
-+ (const_int 4)))])
-+
-+
-+;; Integer move instructions
-+
-+(define_expand "movqi"
-+ [(set (match_operand:QI 0 "nonimmediate_operand" "")
-+ (match_operand:QI 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (QImode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*movqi_insn"
-+ [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m")
-+ (match_operand:QI 1 "input_operand" "rI,m,rJ"))]
-+ "(register_operand (operands[0], QImode)
-+ || register_or_zero_operand (operands[1], QImode))"
-+ "@
-+ mov\t%1, %0
-+ ldub\t%1, %0
-+ stb\t%r1, %0"
-+ [(set_attr "type" "*,load,store")
-+ (set_attr "subtype" "*,regular,*")
-+ (set_attr "us3load_type" "*,3cycle,*")])
-+
-+(define_expand "movhi"
-+ [(set (match_operand:HI 0 "nonimmediate_operand" "")
-+ (match_operand:HI 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (HImode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*movhi_insn"
-+ [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,m")
-+ (match_operand:HI 1 "input_operand" "rI,K,m,rJ"))]
-+ "(register_operand (operands[0], HImode)
-+ || register_or_zero_operand (operands[1], HImode))"
-+ "@
-+ mov\t%1, %0
-+ sethi\t%%hi(%a1), %0
-+ lduh\t%1, %0
-+ sth\t%r1, %0"
-+ [(set_attr "type" "*,*,load,store")
-+ (set_attr "subtype" "*,*,regular,*")
-+ (set_attr "us3load_type" "*,*,3cycle,*")])
-+
-+;; We always work with constants here.
-+(define_insn "*movhi_lo_sum"
-+ [(set (match_operand:HI 0 "register_operand" "=r")
-+ (ior:HI (match_operand:HI 1 "register_operand" "%r")
-+ (match_operand:HI 2 "small_int_operand" "I")))]
-+ ""
-+ "or\t%1, %2, %0")
-+
-+(define_expand "movsi"
-+ [(set (match_operand:SI 0 "nonimmediate_operand" "")
-+ (match_operand:SI 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (SImode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*movsi_insn"
-+ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r, m, r,*f,?*f,?*f, m,d,d")
-+ (match_operand:SI 1 "input_operand" "rI,K,m,rJ,*f, r, f, m,?*f,J,P"))]
-+ "register_operand (operands[0], SImode)
-+ || register_or_zero_or_all_ones_operand (operands[1], SImode)"
-+ "@
-+ mov\t%1, %0
-+ sethi\t%%hi(%a1), %0
-+ ld\t%1, %0
-+ st\t%r1, %0
-+ movstouw\t%1, %0
-+ movwtos\t%1, %0
-+ fmovs\t%1, %0
-+ ld\t%1, %0
-+ st\t%1, %0
-+ fzeros\t%0
-+ fones\t%0"
-+ [(set_attr "type" "*,*,load,store,vismv,vismv,fpmove,fpload,fpstore,visl,visl")
-+ (set_attr "subtype" "*,*,regular,*,movstouw,single,*,*,*,single,single")
-+ (set_attr "cpu_feature" "*,*,*,*,vis3,vis3,*,*,*,vis,vis")])
-+
-+(define_insn "*movsi_lo_sum"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "immediate_operand" "in")))]
-+ "!flag_pic"
-+ "or\t%1, %%lo(%a2), %0")
-+
-+(define_insn "*movsi_high"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (high:SI (match_operand:SI 1 "immediate_operand" "in")))]
-+ "!flag_pic"
-+ "sethi\t%%hi(%a1), %0")
-+
-+;; The next two patterns must wrap the SYMBOL_REF in an UNSPEC
-+;; so that CSE won't optimize the address computation away.
-+(define_insn "movsi_lo_sum_pic"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
-+ (unspec:SI [(match_operand:SI 2 "immediate_operand" "in")]
-+ UNSPEC_MOVE_PIC)))]
-+ "flag_pic"
-+{
-+#ifdef HAVE_AS_SPARC_GOTDATA_OP
-+ return "xor\t%1, %%gdop_lox10(%a2), %0";
-+#else
-+ return "or\t%1, %%lo(%a2), %0";
-+#endif
-+})
-+
-+(define_insn "movsi_high_pic"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (high:SI (unspec:SI [(match_operand 1 "" "")] UNSPEC_MOVE_PIC)))]
-+ "flag_pic && check_pic (1)"
-+{
-+#ifdef HAVE_AS_SPARC_GOTDATA_OP
-+ return "sethi\t%%gdop_hix22(%a1), %0";
-+#else
-+ return "sethi\t%%hi(%a1), %0";
-+#endif
-+})
-+
-+(define_insn "movsi_pic_gotdata_op"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "register_operand" "r")
-+ (match_operand 3 "symbolic_operand" "")]
-+ UNSPEC_MOVE_GOTDATA))]
-+ "flag_pic && check_pic (1)"
-+{
-+#ifdef HAVE_AS_SPARC_GOTDATA_OP
-+ return "ld\t[%1 + %2], %0, %%gdop(%a3)";
-+#else
-+ return "ld\t[%1 + %2], %0";
-+#endif
-+}
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_expand "movsi_pic_label_ref"
-+ [(set (match_dup 3) (high:SI
-+ (unspec:SI [(match_operand:SI 1 "symbolic_operand" "")
-+ (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
-+ (set (match_dup 4) (lo_sum:SI (match_dup 3)
-+ (unspec:SI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (minus:SI (match_dup 5) (match_dup 4)))]
-+ "flag_pic"
-+{
-+ crtl->uses_pic_offset_table = 1;
-+ operands[2] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
-+ if (!can_create_pseudo_p ())
-+ {
-+ operands[3] = operands[0];
-+ operands[4] = operands[0];
-+ }
-+ else
-+ {
-+ operands[3] = gen_reg_rtx (SImode);
-+ operands[4] = gen_reg_rtx (SImode);
-+ }
-+ operands[5] = pic_offset_table_rtx;
-+})
-+
-+(define_insn "*movsi_high_pic_label_ref"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (high:SI
-+ (unspec:SI [(match_operand:SI 1 "symbolic_operand" "")
-+ (match_operand:SI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
-+ "flag_pic"
-+ "sethi\t%%hi(%a2-(%a1-.)), %0")
-+
-+(define_insn "*movsi_lo_sum_pic_label_ref"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
-+ (unspec:SI [(match_operand:SI 2 "symbolic_operand" "")
-+ (match_operand:SI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
-+ "flag_pic"
-+ "or\t%1, %%lo(%a3-(%a2-.)), %0")
-+
-+;; Set up the PIC register for VxWorks.
-+
-+(define_expand "vxworks_load_got"
-+ [(set (match_dup 0)
-+ (high:SI (match_dup 1)))
-+ (set (match_dup 0)
-+ (mem:SI (lo_sum:SI (match_dup 0) (match_dup 1))))
-+ (set (match_dup 0)
-+ (mem:SI (lo_sum:SI (match_dup 0) (match_dup 2))))]
-+ "TARGET_VXWORKS_RTP"
-+{
-+ operands[0] = pic_offset_table_rtx;
-+ operands[1] = gen_rtx_SYMBOL_REF (SImode, VXWORKS_GOTT_BASE);
-+ operands[2] = gen_rtx_SYMBOL_REF (SImode, VXWORKS_GOTT_INDEX);
-+})
-+
-+(define_expand "movdi"
-+ [(set (match_operand:DI 0 "nonimmediate_operand" "")
-+ (match_operand:DI 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (DImode, operands))
-+ DONE;
-+})
-+
-+;; Be careful, fmovd does not exist when !v9.
-+;; We match MEM moves directly when we have correct even
-+;; numbered registers, but fall into splits otherwise.
-+;; The constraint ordering here is really important to
-+;; avoid insane problems in reload, especially for patterns
-+;; of the form:
-+;;
-+;; (set (mem:DI (plus:SI (reg:SI 30 %fp)
-+;; (const_int -5016)))
-+;; (reg:DI 2 %g2))
-+;;
-+
-+(define_insn "*movdi_insn_sp32"
-+ [(set (match_operand:DI 0 "nonimmediate_operand"
-+ "=T,o,U,T,r,o,r,r,?*f, T,?*f, o,?*e,?*e, r,?*f,?*e, T,*b,*b")
-+ (match_operand:DI 1 "input_operand"
-+ " J,J,T,U,o,r,i,r, T,?*f, o,?*f, *e, *e,?*f, r, T,?*e, J, P"))]
-+ "TARGET_ARCH32
-+ && (register_operand (operands[0], DImode)
-+ || register_or_zero_operand (operands[1], DImode))"
-+ "@
-+ stx\t%r1, %0
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ #
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ #
-+ #
-+ fmovd\t%1, %0
-+ #
-+ #
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ fzero\t%0
-+ fone\t%0"
-+ [(set_attr "type" "store,*,load,store,load,store,*,*,fpload,fpstore,*,*,fpmove,*,*,*,fpload,fpstore,visl,
-+visl")
-+ (set_attr "subtype" "*,*,regular,*,regular,*,*,*,*,*,*,*,*,*,*,*,*,*,double,double")
-+ (set_attr "length" "*,2,*,*,*,*,2,2,*,*,2,2,*,2,2,2,*,*,*,*")
-+ (set_attr "fptype" "*,*,*,*,*,*,*,*,*,*,*,*,double,*,*,*,*,*,double,double")
-+ (set_attr "cpu_feature" "v9,*,*,*,*,*,*,*,fpu,fpu,fpu,fpu,v9,fpunotv9,vis3,vis3,fpu,fpu,vis,vis")
-+ (set_attr "lra" "*,*,disabled,disabled,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*")])
-+
-+(define_insn "*movdi_insn_sp64"
-+ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r, m, r,*e,?*e,?*e, W,b,b")
-+ (match_operand:DI 1 "input_operand" "rI,N,m,rJ,*e, r, *e, W,?*e,J,P"))]
-+ "TARGET_ARCH64
-+ && (register_operand (operands[0], DImode)
-+ || register_or_zero_or_all_ones_operand (operands[1], DImode))"
-+ "@
-+ mov\t%1, %0
-+ sethi\t%%hi(%a1), %0
-+ ldx\t%1, %0
-+ stx\t%r1, %0
-+ movdtox\t%1, %0
-+ movxtod\t%1, %0
-+ fmovd\t%1, %0
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ fzero\t%0
-+ fone\t%0"
-+ [(set_attr "type" "*,*,load,store,vismv,vismv,fpmove,fpload,fpstore,visl,visl")
-+ (set_attr "subtype" "*,*,regular,*,movdtox,movxtod,*,*,*,double,double")
-+ (set_attr "fptype" "*,*,*,*,*,*,double,*,*,double,double")
-+ (set_attr "cpu_feature" "*,*,*,*,vis3,vis3,*,*,*,vis,vis")])
-+
-+(define_expand "movdi_pic_label_ref"
-+ [(set (match_dup 3) (high:DI
-+ (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")
-+ (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
-+ (set (match_dup 4) (lo_sum:DI (match_dup 3)
-+ (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_MOVE_PIC_LABEL)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (minus:DI (match_dup 5) (match_dup 4)))]
-+ "TARGET_ARCH64 && flag_pic"
-+{
-+ crtl->uses_pic_offset_table = 1;
-+ operands[2] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
-+ if (!can_create_pseudo_p ())
-+ {
-+ operands[3] = operands[0];
-+ operands[4] = operands[0];
-+ }
-+ else
-+ {
-+ operands[3] = gen_reg_rtx (DImode);
-+ operands[4] = gen_reg_rtx (DImode);
-+ }
-+ operands[5] = pic_offset_table_rtx;
-+})
-+
-+(define_insn "*movdi_high_pic_label_ref"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI
-+ (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")
-+ (match_operand:DI 2 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
-+ "TARGET_ARCH64 && flag_pic"
-+ "sethi\t%%hi(%a2-(%a1-.)), %0")
-+
-+(define_insn "*movdi_lo_sum_pic_label_ref"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")
-+ (match_operand:DI 3 "" "")] UNSPEC_MOVE_PIC_LABEL)))]
-+ "TARGET_ARCH64 && flag_pic"
-+ "or\t%1, %%lo(%a3-(%a2-.)), %0")
-+
-+;; SPARC-v9 code model support insns. See sparc_emit_set_symbolic_const64
-+;; in sparc.c to see what is going on here... PIC stuff comes first.
-+
-+(define_insn "movdi_lo_sum_pic"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (unspec:DI [(match_operand:DI 2 "immediate_operand" "in")]
-+ UNSPEC_MOVE_PIC)))]
-+ "TARGET_ARCH64 && flag_pic"
-+{
-+#ifdef HAVE_AS_SPARC_GOTDATA_OP
-+ return "xor\t%1, %%gdop_lox10(%a2), %0";
-+#else
-+ return "or\t%1, %%lo(%a2), %0";
-+#endif
-+})
-+
-+(define_insn "movdi_high_pic"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand 1 "" "")] UNSPEC_MOVE_PIC)))]
-+ "TARGET_ARCH64 && flag_pic && check_pic (1)"
-+{
-+#ifdef HAVE_AS_SPARC_GOTDATA_OP
-+ return "sethi\t%%gdop_hix22(%a1), %0";
-+#else
-+ return "sethi\t%%hi(%a1), %0";
-+#endif
-+})
-+
-+(define_insn "movdi_pic_gotdata_op"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (unspec:DI [(match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "symbolic_operand" "")]
-+ UNSPEC_MOVE_GOTDATA))]
-+ "TARGET_ARCH64 && flag_pic && check_pic (1)"
-+{
-+#ifdef HAVE_AS_SPARC_GOTDATA_OP
-+ return "ldx\t[%1 + %2], %0, %%gdop(%a3)";
-+#else
-+ return "ldx\t[%1 + %2], %0";
-+#endif
-+}
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_insn "*sethi_di_medlow_embmedany_pic"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (match_operand:DI 1 "medium_pic_operand" "")))]
-+ "(TARGET_CM_MEDLOW || TARGET_CM_EMBMEDANY) && flag_pic && check_pic (1)"
-+ "sethi\t%%hi(%a1), %0")
-+
-+(define_insn "*sethi_di_medlow"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (match_operand:DI 1 "symbolic_operand" "")))]
-+ "TARGET_CM_MEDLOW && !flag_pic"
-+ "sethi\t%%hi(%a1), %0")
-+
-+(define_insn "*losum_di_medlow"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "symbolic_operand" "")))]
-+ "TARGET_CM_MEDLOW && !flag_pic"
-+ "or\t%1, %%lo(%a2), %0")
-+
-+(define_insn "seth44"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+ UNSPEC_SETH44)))]
-+ "TARGET_CM_MEDMID && !flag_pic"
-+ "sethi\t%%h44(%a1), %0")
-+
-+(define_insn "setm44"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+ UNSPEC_SETM44)))]
-+ "TARGET_CM_MEDMID && !flag_pic"
-+ "or\t%1, %%m44(%a2), %0")
-+
-+(define_insn "setl44"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "symbolic_operand" "")))]
-+ "TARGET_CM_MEDMID && !flag_pic"
-+ "or\t%1, %%l44(%a2), %0")
-+
-+(define_insn "sethh"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+ UNSPEC_SETHH)))]
-+ "TARGET_CM_MEDANY && !flag_pic"
-+ "sethi\t%%hh(%a1), %0")
-+
-+(define_insn "setlm"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand:DI 1 "symbolic_operand" "")]
-+ UNSPEC_SETLM)))]
-+ "TARGET_CM_MEDANY && !flag_pic"
-+ "sethi\t%%lm(%a1), %0")
-+
-+(define_insn "sethm"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (unspec:DI [(match_operand:DI 2 "symbolic_operand" "")]
-+ UNSPEC_EMB_SETHM)))]
-+ "TARGET_CM_MEDANY && !flag_pic"
-+ "or\t%1, %%hm(%a2), %0")
-+
-+(define_insn "setlo"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "symbolic_operand" "")))]
-+ "TARGET_CM_MEDANY && !flag_pic"
-+ "or\t%1, %%lo(%a2), %0")
-+
-+(define_insn "embmedany_sethi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand:DI 1 "data_segment_operand" "")]
-+ UNSPEC_EMB_HISUM)))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "sethi\t%%hi(%a1), %0")
-+
-+(define_insn "embmedany_losum"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "data_segment_operand" "")))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "add\t%1, %%lo(%a2), %0")
-+
-+(define_insn "embmedany_brsum"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
-+ UNSPEC_EMB_HISUM))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "add\t%1, %_, %0")
-+
-+(define_insn "embmedany_textuhi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand:DI 1 "text_segment_operand" "")]
-+ UNSPEC_EMB_TEXTUHI)))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "sethi\t%%uhi(%a1), %0")
-+
-+(define_insn "embmedany_texthi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (high:DI (unspec:DI [(match_operand:DI 1 "text_segment_operand" "")]
-+ UNSPEC_EMB_TEXTHI)))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "sethi\t%%hi(%a1), %0")
-+
-+(define_insn "embmedany_textulo"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (unspec:DI [(match_operand:DI 2 "text_segment_operand" "")]
-+ UNSPEC_EMB_TEXTULO)))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "or\t%1, %%ulo(%a2), %0")
-+
-+(define_insn "embmedany_textlo"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "text_segment_operand" "")))]
-+ "TARGET_CM_EMBMEDANY && !flag_pic"
-+ "or\t%1, %%lo(%a2), %0")
-+
-+;; Now some patterns to help reload out a bit.
-+(define_expand "reload_indi"
-+ [(parallel [(match_operand:DI 0 "register_operand" "=r")
-+ (match_operand:DI 1 "immediate_operand" "")
-+ (match_operand:TI 2 "register_operand" "=&r")])]
-+ "(TARGET_CM_MEDANY || TARGET_CM_EMBMEDANY) && !flag_pic"
-+{
-+ sparc_emit_set_symbolic_const64 (operands[0], operands[1], operands[2]);
-+ DONE;
-+})
-+
-+(define_expand "reload_outdi"
-+ [(parallel [(match_operand:DI 0 "register_operand" "=r")
-+ (match_operand:DI 1 "immediate_operand" "")
-+ (match_operand:TI 2 "register_operand" "=&r")])]
-+ "(TARGET_CM_MEDANY || TARGET_CM_EMBMEDANY) && !flag_pic"
-+{
-+ sparc_emit_set_symbolic_const64 (operands[0], operands[1], operands[2]);
-+ DONE;
-+})
-+
-+;; Split up putting CONSTs and REGs into DI regs when !arch64
-+(define_split
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (match_operand:DI 1 "const_int_operand" ""))]
-+ "reload_completed
-+ && TARGET_ARCH32
-+ && ((GET_CODE (operands[0]) == REG
-+ && SPARC_INT_REG_P (REGNO (operands[0])))
-+ || (GET_CODE (operands[0]) == SUBREG
-+ && GET_CODE (SUBREG_REG (operands[0])) == REG
-+ && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))"
-+ [(clobber (const_int 0))]
-+{
-+ HOST_WIDE_INT low = trunc_int_for_mode (INTVAL (operands[1]), SImode);
-+ HOST_WIDE_INT high = trunc_int_for_mode (INTVAL (operands[1]) >> 32, SImode);
-+ rtx high_part = gen_highpart (SImode, operands[0]);
-+ rtx low_part = gen_lowpart (SImode, operands[0]);
-+
-+ emit_move_insn_1 (high_part, GEN_INT (high));
-+
-+ /* Slick... but this loses if the constant can be done in one insn. */
-+ if (low == high && !SPARC_SETHI32_P (high) && !SPARC_SIMM13_P (high))
-+ emit_move_insn_1 (low_part, high_part);
-+ else
-+ emit_move_insn_1 (low_part, GEN_INT (low));
-+
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (match_operand:DI 1 "register_operand" ""))]
-+ "reload_completed
-+ && (!TARGET_V9
-+ || (TARGET_ARCH32
-+ && sparc_split_reg_reg_legitimate (operands[0], operands[1])))"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_reg_reg (operands[0], operands[1], SImode);
-+ DONE;
-+})
-+
-+;; Now handle the cases of memory moves from/to non-even
-+;; DI mode register pairs.
-+(define_split
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (match_operand:DI 1 "memory_operand" ""))]
-+ "reload_completed
-+ && TARGET_ARCH32
-+ && sparc_split_reg_mem_legitimate (operands[0], operands[1])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_reg_mem (operands[0], operands[1], SImode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DI 0 "memory_operand" "")
-+ (match_operand:DI 1 "register_operand" ""))]
-+ "reload_completed
-+ && TARGET_ARCH32
-+ && sparc_split_reg_mem_legitimate (operands[1], operands[0])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_mem_reg (operands[0], operands[1], SImode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DI 0 "memory_operand" "")
-+ (match_operand:DI 1 "const_zero_operand" ""))]
-+ "reload_completed
-+ && (!TARGET_V9
-+ || (TARGET_ARCH32
-+ && !mem_min_alignment (operands[0], 8)))
-+ && offsettable_memref_p (operands[0])"
-+ [(clobber (const_int 0))]
-+{
-+ emit_move_insn_1 (adjust_address (operands[0], SImode, 0), const0_rtx);
-+ emit_move_insn_1 (adjust_address (operands[0], SImode, 4), const0_rtx);
-+ DONE;
-+})
-+
-+(define_expand "movti"
-+ [(set (match_operand:TI 0 "nonimmediate_operand" "")
-+ (match_operand:TI 1 "general_operand" ""))]
-+ "TARGET_ARCH64"
-+{
-+ if (sparc_expand_move (TImode, operands))
-+ DONE;
-+})
-+
-+;; We need to prevent reload from splitting TImode moves, because it
-+;; might decide to overwrite a pointer with the value it points to.
-+;; In that case we have to do the loads in the appropriate order so
-+;; that the pointer is not destroyed too early.
-+
-+(define_insn "*movti_insn_sp64"
-+ [(set (match_operand:TI 0 "nonimmediate_operand" "=r , o,?*e,?o,b")
-+ (match_operand:TI 1 "input_operand" "roJ,rJ, eo, e,J"))]
-+ "TARGET_ARCH64
-+ && !TARGET_HARD_QUAD
-+ && (register_operand (operands[0], TImode)
-+ || register_or_zero_operand (operands[1], TImode))"
-+ "#"
-+ [(set_attr "length" "2,2,2,2,2")
-+ (set_attr "cpu_feature" "*,*,fpu,fpu,vis")])
-+
-+(define_insn "*movti_insn_sp64_hq"
-+ [(set (match_operand:TI 0 "nonimmediate_operand" "=r , o,?*e,?*e,?m,b")
-+ (match_operand:TI 1 "input_operand" "roJ,rJ, e, m, e,J"))]
-+ "TARGET_ARCH64
-+ && TARGET_HARD_QUAD
-+ && (register_operand (operands[0], TImode)
-+ || register_or_zero_operand (operands[1], TImode))"
-+ "@
-+ #
-+ #
-+ fmovq\t%1, %0
-+ ldq\t%1, %0
-+ stq\t%1, %0
-+ #"
-+ [(set_attr "type" "*,*,fpmove,fpload,fpstore,*")
-+ (set_attr "length" "2,2,*,*,*,2")])
-+
-+;; Now all the splits to handle multi-insn TI mode moves.
-+(define_split
-+ [(set (match_operand:TI 0 "register_operand" "")
-+ (match_operand:TI 1 "register_operand" ""))]
-+ "reload_completed
-+ && ((TARGET_FPU
-+ && !TARGET_HARD_QUAD)
-+ || (!fp_register_operand (operands[0], TImode)
-+ && !fp_register_operand (operands[1], TImode)))"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_src = operands[1];
-+ rtx dest1, dest2;
-+ rtx src1, src2;
-+
-+ dest1 = gen_highpart (DImode, set_dest);
-+ dest2 = gen_lowpart (DImode, set_dest);
-+ src1 = gen_highpart (DImode, set_src);
-+ src2 = gen_lowpart (DImode, set_src);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_insn (gen_movdi (dest2, src2));
-+ emit_insn (gen_movdi (dest1, src1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movdi (dest1, src1));
-+ emit_insn (gen_movdi (dest2, src2));
-+ }
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:TI 0 "nonimmediate_operand" "")
-+ (match_operand:TI 1 "const_zero_operand" ""))]
-+ "reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx dest1, dest2;
-+
-+ switch (GET_CODE (set_dest))
-+ {
-+ case REG:
-+ dest1 = gen_highpart (DImode, set_dest);
-+ dest2 = gen_lowpart (DImode, set_dest);
-+ break;
-+ case MEM:
-+ dest1 = adjust_address (set_dest, DImode, 0);
-+ dest2 = adjust_address (set_dest, DImode, 8);
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ emit_insn (gen_movdi (dest1, const0_rtx));
-+ emit_insn (gen_movdi (dest2, const0_rtx));
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:TI 0 "register_operand" "")
-+ (match_operand:TI 1 "memory_operand" ""))]
-+ "reload_completed
-+ && offsettable_memref_p (operands[1])
-+ && (!TARGET_HARD_QUAD
-+ || !fp_register_operand (operands[0], TImode))"
-+ [(clobber (const_int 0))]
-+{
-+ rtx word0 = adjust_address (operands[1], DImode, 0);
-+ rtx word1 = adjust_address (operands[1], DImode, 8);
-+ rtx set_dest, dest1, dest2;
-+
-+ set_dest = operands[0];
-+
-+ dest1 = gen_highpart (DImode, set_dest);
-+ dest2 = gen_lowpart (DImode, set_dest);
-+
-+ /* Now output, ordering such that we don't clobber any registers
-+ mentioned in the address. */
-+ if (reg_overlap_mentioned_p (dest1, word1))
-+
-+ {
-+ emit_insn (gen_movdi (dest2, word1));
-+ emit_insn (gen_movdi (dest1, word0));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movdi (dest1, word0));
-+ emit_insn (gen_movdi (dest2, word1));
-+ }
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:TI 0 "memory_operand" "")
-+ (match_operand:TI 1 "register_operand" ""))]
-+ "reload_completed
-+ && offsettable_memref_p (operands[0])
-+ && (!TARGET_HARD_QUAD
-+ || !fp_register_operand (operands[1], TImode))"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_src = operands[1];
-+
-+ emit_insn (gen_movdi (adjust_address (operands[0], DImode, 0),
-+ gen_highpart (DImode, set_src)));
-+ emit_insn (gen_movdi (adjust_address (operands[0], DImode, 8),
-+ gen_lowpart (DImode, set_src)));
-+ DONE;
-+})
-+
-+
-+;; Floating point move instructions
-+
-+(define_expand "movsf"
-+ [(set (match_operand:SF 0 "nonimmediate_operand" "")
-+ (match_operand:SF 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (SFmode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*movsf_insn"
-+ [(set (match_operand:SF 0 "nonimmediate_operand" "=d,d,f, *r,*r,*r,*r, f,f,*r,m, m")
-+ (match_operand:SF 1 "input_operand" "G,C,f,*rR, Q, S, f,*r,m, m,f,*rG"))]
-+ "(register_operand (operands[0], SFmode)
-+ || register_or_zero_or_all_ones_operand (operands[1], SFmode))"
-+{
-+ if (GET_CODE (operands[1]) == CONST_DOUBLE
-+ && (which_alternative == 3
-+ || which_alternative == 4
-+ || which_alternative == 5))
-+ {
-+ long i;
-+
-+ REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (operands[1]), i);
-+ operands[1] = GEN_INT (i);
-+ }
-+
-+ switch (which_alternative)
-+ {
-+ case 0:
-+ return "fzeros\t%0";
-+ case 1:
-+ return "fones\t%0";
-+ case 2:
-+ return "fmovs\t%1, %0";
-+ case 3:
-+ return "mov\t%1, %0";
-+ case 4:
-+ return "sethi\t%%hi(%a1), %0";
-+ case 5:
-+ return "#";
-+ case 6:
-+ return "movstouw\t%1, %0";
-+ case 7:
-+ return "movwtos\t%1, %0";
-+ case 8:
-+ case 9:
-+ return "ld\t%1, %0";
-+ case 10:
-+ case 11:
-+ return "st\t%r1, %0";
-+ default:
-+ gcc_unreachable ();
-+ }
-+}
-+ [(set_attr "type" "visl,visl,fpmove,*,*,*,vismv,vismv,fpload,load,fpstore,store")
-+ (set_attr "subtype" "single,single,*,*,*,*,movstouw,single,*,regular,*,*")
-+ (set_attr "cpu_feature" "vis,vis,fpu,*,*,*,vis3,vis3,fpu,*,fpu,*")])
-+
-+;; The following 3 patterns build SFmode constants in integer registers.
-+
-+(define_insn "*movsf_lo_sum"
-+ [(set (match_operand:SF 0 "register_operand" "=r")
-+ (lo_sum:SF (match_operand:SF 1 "register_operand" "r")
-+ (match_operand:SF 2 "fp_const_high_losum_operand" "S")))]
-+ ""
-+{
-+ long i;
-+
-+ REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (operands[2]), i);
-+ operands[2] = GEN_INT (i);
-+ return "or\t%1, %%lo(%a2), %0";
-+})
-+
-+(define_insn "*movsf_high"
-+ [(set (match_operand:SF 0 "register_operand" "=r")
-+ (high:SF (match_operand:SF 1 "fp_const_high_losum_operand" "S")))]
-+ ""
-+{
-+ long i;
-+
-+ REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (operands[1]), i);
-+ operands[1] = GEN_INT (i);
-+ return "sethi\t%%hi(%1), %0";
-+})
-+
-+(define_split
-+ [(set (match_operand:SF 0 "register_operand" "")
-+ (match_operand:SF 1 "fp_const_high_losum_operand" ""))]
-+ "REG_P (operands[0]) && SPARC_INT_REG_P (REGNO (operands[0]))"
-+ [(set (match_dup 0) (high:SF (match_dup 1)))
-+ (set (match_dup 0) (lo_sum:SF (match_dup 0) (match_dup 1)))])
-+
-+(define_expand "movdf"
-+ [(set (match_operand:DF 0 "nonimmediate_operand" "")
-+ (match_operand:DF 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (DFmode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*movdf_insn_sp32"
-+ [(set (match_operand:DF 0 "nonimmediate_operand"
-+ "=T,o,b,b,e,e,*r, f, e,T,U,T, f,o, *r,*r, o")
-+ (match_operand:DF 1 "input_operand"
-+ " G,G,G,C,e,e, f,*r,T#F,e,T,U,o#F,f,*rF, o,*r"))]
-+ "TARGET_ARCH32
-+ && (register_operand (operands[0], DFmode)
-+ || register_or_zero_or_all_ones_operand (operands[1], DFmode))"
-+ "@
-+ stx\t%r1, %0
-+ #
-+ fzero\t%0
-+ fone\t%0
-+ fmovd\t%1, %0
-+ #
-+ #
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ #
-+ #
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0"
-+ [(set_attr "type" "store,*,visl,visl,fpmove,*,*,*,fpload,fpstore,load,store,*,*,*,load,store")
-+ (set_attr "subtype" "*,*,double,double,*,*,*,*,*,*,regular,*,*,*,*,regular,*")
-+ (set_attr "length" "*,2,*,*,*,2,2,2,*,*,*,*,2,2,2,*,*")
-+ (set_attr "fptype" "*,*,double,double,double,*,*,*,*,*,*,*,*,*,*,*,*")
-+ (set_attr "cpu_feature" "v9,*,vis,vis,v9,fpunotv9,vis3,vis3,fpu,fpu,*,*,fpu,fpu,*,*,*")
-+ (set_attr "lra" "*,*,*,*,*,*,*,*,*,*,disabled,disabled,*,*,*,*,*")])
-+
-+(define_insn "*movdf_insn_sp64"
-+ [(set (match_operand:DF 0 "nonimmediate_operand" "=b,b,e,*r, e, e,W, *r,*r, m,*r")
-+ (match_operand:DF 1 "input_operand" "G,C,e, e,*r,W#F,e,*rG, m,*rG, F"))]
-+ "TARGET_ARCH64
-+ && (register_operand (operands[0], DFmode)
-+ || register_or_zero_or_all_ones_operand (operands[1], DFmode))"
-+ "@
-+ fzero\t%0
-+ fone\t%0
-+ fmovd\t%1, %0
-+ movdtox\t%1, %0
-+ movxtod\t%1, %0
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ mov\t%r1, %0
-+ ldx\t%1, %0
-+ stx\t%r1, %0
-+ #"
-+ [(set_attr "type" "visl,visl,fpmove,vismv,vismv,load,store,*,load,store,*")
-+ (set_attr "subtype" "double,double,*,movdtox,movxtod,regular,*,*,regular,*,*")
-+ (set_attr "length" "*,*,*,*,*,*,*,*,*,*,2")
-+ (set_attr "fptype" "double,double,double,double,double,*,*,*,*,*,*")
-+ (set_attr "cpu_feature" "vis,vis,fpu,vis3,vis3,fpu,fpu,*,*,*,*")])
-+
-+;; This pattern builds DFmode constants in integer registers.
-+(define_split
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (match_operand:DF 1 "const_double_operand" ""))]
-+ "reload_completed
-+ && REG_P (operands[0])
-+ && SPARC_INT_REG_P (REGNO (operands[0]))
-+ && !const_zero_operand (operands[1], GET_MODE (operands[0]))"
-+ [(clobber (const_int 0))]
-+{
-+ operands[0] = gen_raw_REG (DImode, REGNO (operands[0]));
-+
-+ if (TARGET_ARCH64)
-+ {
-+ rtx tem = simplify_subreg (DImode, operands[1], DFmode, 0);
-+ emit_insn (gen_movdi (operands[0], tem));
-+ }
-+ else
-+ {
-+ rtx hi = simplify_subreg (SImode, operands[1], DFmode, 0);
-+ rtx lo = simplify_subreg (SImode, operands[1], DFmode, 4);
-+ rtx high_part = gen_highpart (SImode, operands[0]);
-+ rtx low_part = gen_lowpart (SImode, operands[0]);
-+
-+ gcc_assert (GET_CODE (hi) == CONST_INT);
-+ gcc_assert (GET_CODE (lo) == CONST_INT);
-+
-+ emit_move_insn_1 (high_part, hi);
-+
-+ /* Slick... but this loses if the constant can be done in one insn. */
-+ if (lo == hi
-+ && !SPARC_SETHI32_P (INTVAL (hi))
-+ && !SPARC_SIMM13_P (INTVAL (hi)))
-+ emit_move_insn_1 (low_part, high_part);
-+ else
-+ emit_move_insn_1 (low_part, lo);
-+ }
-+ DONE;
-+})
-+
-+;; Ok, now the splits to handle all the multi insn and
-+;; mis-aligned memory address cases.
-+;; In these splits please take note that we must be
-+;; careful when V9 but not ARCH64 because the integer
-+;; register DFmode cases must be handled.
-+(define_split
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (match_operand:DF 1 "const_zero_operand" ""))]
-+ "reload_completed
-+ && TARGET_ARCH32
-+ && ((GET_CODE (operands[0]) == REG
-+ && SPARC_INT_REG_P (REGNO (operands[0])))
-+ || (GET_CODE (operands[0]) == SUBREG
-+ && GET_CODE (SUBREG_REG (operands[0])) == REG
-+ && SPARC_INT_REG_P (REGNO (SUBREG_REG (operands[0])))))"
-+ [(clobber (const_int 0))]
-+{
-+ emit_move_insn_1 (gen_highpart (SFmode, operands[0]), CONST0_RTX (SFmode));
-+ emit_move_insn_1 (gen_lowpart (SFmode, operands[0]), CONST0_RTX (SFmode));
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (match_operand:DF 1 "register_operand" ""))]
-+ "reload_completed
-+ && (!TARGET_V9
-+ || (TARGET_ARCH32
-+ && sparc_split_reg_reg_legitimate (operands[0], operands[1])))"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_reg_reg (operands[0], operands[1], SFmode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (match_operand:DF 1 "memory_operand" ""))]
-+ "reload_completed
-+ && TARGET_ARCH32
-+ && sparc_split_reg_mem_legitimate (operands[0], operands[1])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_reg_mem (operands[0], operands[1], SFmode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DF 0 "memory_operand" "")
-+ (match_operand:DF 1 "register_operand" ""))]
-+ "reload_completed
-+ && TARGET_ARCH32
-+ && sparc_split_reg_mem_legitimate (operands[1], operands[0])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_mem_reg (operands[0], operands[1], SFmode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:DF 0 "memory_operand" "")
-+ (match_operand:DF 1 "const_zero_operand" ""))]
-+ "reload_completed
-+ && (!TARGET_V9
-+ || (TARGET_ARCH32
-+ && !mem_min_alignment (operands[0], 8)))
-+ && offsettable_memref_p (operands[0])"
-+ [(clobber (const_int 0))]
-+{
-+ emit_move_insn_1 (adjust_address (operands[0], SFmode, 0), CONST0_RTX (SFmode));
-+ emit_move_insn_1 (adjust_address (operands[0], SFmode, 4), CONST0_RTX (SFmode));
-+ DONE;
-+})
-+
-+(define_expand "movtf"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (match_operand:TF 1 "general_operand" ""))]
-+ ""
-+{
-+ if (sparc_expand_move (TFmode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*movtf_insn_sp32"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "=b, e,o, o, r")
-+ (match_operand:TF 1 "input_operand" " G,oe,e,rG,roG"))]
-+ "TARGET_ARCH32
-+ && (register_operand (operands[0], TFmode)
-+ || register_or_zero_operand (operands[1], TFmode))"
-+ "#"
-+ [(set_attr "length" "4,4,4,4,4")
-+ (set_attr "cpu_feature" "fpu,fpu,fpu,*,*")])
-+
-+(define_insn "*movtf_insn_sp64"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "=b, e,o, o, r")
-+ (match_operand:TF 1 "input_operand" "G,oe,e,rG,roG"))]
-+ "TARGET_ARCH64
-+ && !TARGET_HARD_QUAD
-+ && (register_operand (operands[0], TFmode)
-+ || register_or_zero_operand (operands[1], TFmode))"
-+ "#"
-+ [(set_attr "length" "2,2,2,2,2")
-+ (set_attr "cpu_feature" "fpu,fpu,fpu,*,*")])
-+
-+(define_insn "*movtf_insn_sp64_hq"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,e,m, o, r")
-+ (match_operand:TF 1 "input_operand" "G,e,m,e,rG,roG"))]
-+ "TARGET_ARCH64
-+ && TARGET_HARD_QUAD
-+ && (register_operand (operands[0], TFmode)
-+ || register_or_zero_operand (operands[1], TFmode))"
-+ "@
-+ #
-+ fmovq\t%1, %0
-+ ldq\t%1, %0
-+ stq\t%1, %0
-+ #
-+ #"
-+ [(set_attr "type" "*,fpmove,fpload,fpstore,*,*")
-+ (set_attr "length" "2,*,*,*,2,2")])
-+
-+;; Now all the splits to handle multi-insn TF mode moves.
-+(define_split
-+ [(set (match_operand:TF 0 "register_operand" "")
-+ (match_operand:TF 1 "register_operand" ""))]
-+ "reload_completed
-+ && (TARGET_ARCH32
-+ || (TARGET_FPU
-+ && !TARGET_HARD_QUAD)
-+ || (!fp_register_operand (operands[0], TFmode)
-+ && !fp_register_operand (operands[1], TFmode)))"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_src = operands[1];
-+ rtx dest1, dest2;
-+ rtx src1, src2;
-+
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+ src1 = gen_df_reg (set_src, 0);
-+ src2 = gen_df_reg (set_src, 1);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_insn (gen_movdf (dest2, src2));
-+ emit_insn (gen_movdf (dest1, src1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movdf (dest1, src1));
-+ emit_insn (gen_movdf (dest2, src2));
-+ }
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (match_operand:TF 1 "const_zero_operand" ""))]
-+ "reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx dest1, dest2;
-+
-+ switch (GET_CODE (set_dest))
-+ {
-+ case REG:
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+ break;
-+ case MEM:
-+ dest1 = adjust_address (set_dest, DFmode, 0);
-+ dest2 = adjust_address (set_dest, DFmode, 8);
-+ break;
-+ default:
-+ gcc_unreachable ();
-+ }
-+
-+ emit_insn (gen_movdf (dest1, CONST0_RTX (DFmode)));
-+ emit_insn (gen_movdf (dest2, CONST0_RTX (DFmode)));
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:TF 0 "register_operand" "")
-+ (match_operand:TF 1 "memory_operand" ""))]
-+ "(reload_completed
-+ && offsettable_memref_p (operands[1])
-+ && (TARGET_ARCH32
-+ || !TARGET_HARD_QUAD
-+ || !fp_register_operand (operands[0], TFmode)))"
-+ [(clobber (const_int 0))]
-+{
-+ rtx word0 = adjust_address (operands[1], DFmode, 0);
-+ rtx word1 = adjust_address (operands[1], DFmode, 8);
-+ rtx set_dest, dest1, dest2;
-+
-+ set_dest = operands[0];
-+
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+
-+ /* Now output, ordering such that we don't clobber any registers
-+ mentioned in the address. */
-+ if (reg_overlap_mentioned_p (dest1, word1))
-+
-+ {
-+ emit_insn (gen_movdf (dest2, word1));
-+ emit_insn (gen_movdf (dest1, word0));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movdf (dest1, word0));
-+ emit_insn (gen_movdf (dest2, word1));
-+ }
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:TF 0 "memory_operand" "")
-+ (match_operand:TF 1 "register_operand" ""))]
-+ "(reload_completed
-+ && offsettable_memref_p (operands[0])
-+ && (TARGET_ARCH32
-+ || !TARGET_HARD_QUAD
-+ || !fp_register_operand (operands[1], TFmode)))"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_src = operands[1];
-+
-+ emit_insn (gen_movdf (adjust_address (operands[0], DFmode, 0),
-+ gen_df_reg (set_src, 0)));
-+ emit_insn (gen_movdf (adjust_address (operands[0], DFmode, 8),
-+ gen_df_reg (set_src, 1)));
-+ DONE;
-+})
-+
-+
-+;; SPARC-V9 conditional move instructions
-+
-+;; We can handle larger constants here for some flavors, but for now we keep
-+;; it simple and only allow those constants supported by all flavors.
-+;; Note that emit_conditional_move canonicalizes operands 2,3 so that operand
-+;; 3 contains the constant if one is present, but we handle either for
-+;; generality (sparc.c puts a constant in operand 2).
-+;;
-+;; Our instruction patterns, on the other hand, canonicalize such that
-+;; operand 3 must be the set destination.
-+
-+(define_expand "mov<I:mode>cc"
-+ [(set (match_operand:I 0 "register_operand" "")
-+ (if_then_else:I (match_operand 1 "comparison_operator" "")
-+ (match_operand:I 2 "arith10_operand" "")
-+ (match_operand:I 3 "arith10_operand" "")))]
-+ "TARGET_V9 && !(<I:MODE>mode == DImode && TARGET_ARCH32)"
-+{
-+ if (!sparc_expand_conditional_move (<I:MODE>mode, operands))
-+ FAIL;
-+ DONE;
-+})
-+
-+(define_expand "mov<F:mode>cc"
-+ [(set (match_operand:F 0 "register_operand" "")
-+ (if_then_else:F (match_operand 1 "comparison_operator" "")
-+ (match_operand:F 2 "register_operand" "")
-+ (match_operand:F 3 "register_operand" "")))]
-+ "TARGET_V9 && TARGET_FPU"
-+{
-+ if (!sparc_expand_conditional_move (<F:MODE>mode, operands))
-+ FAIL;
-+ DONE;
-+})
-+
-+(define_insn "*mov<I:mode>_cc_v9"
-+ [(set (match_operand:I 0 "register_operand" "=r")
-+ (if_then_else:I (match_operator 1 "icc_or_fcc_comparison_operator"
-+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
-+ (const_int 0)])
-+ (match_operand:I 3 "arith11_operand" "rL")
-+ (match_operand:I 4 "register_operand" "0")))]
-+ "TARGET_V9 && !(<I:MODE>mode == DImode && TARGET_ARCH32)"
-+ "mov%C1\t%x2, %3, %0"
-+ [(set_attr "type" "cmove")])
-+
-+(define_insn "*mov<I:mode>_cc_reg_sp64"
-+ [(set (match_operand:I 0 "register_operand" "=r")
-+ (if_then_else:I (match_operator 1 "v9_register_comparison_operator"
-+ [(match_operand:DI 2 "register_operand" "r")
-+ (const_int 0)])
-+ (match_operand:I 3 "arith10_operand" "rM")
-+ (match_operand:I 4 "register_operand" "0")))]
-+ "TARGET_ARCH64"
-+ "movr%D1\t%2, %r3, %0"
-+ [(set_attr "type" "cmove")])
-+
-+(define_insn "*movsf_cc_v9"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (if_then_else:SF (match_operator 1 "icc_or_fcc_comparison_operator"
-+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
-+ (const_int 0)])
-+ (match_operand:SF 3 "register_operand" "f")
-+ (match_operand:SF 4 "register_operand" "0")))]
-+ "TARGET_V9 && TARGET_FPU"
-+ "fmovs%C1\t%x2, %3, %0"
-+ [(set_attr "type" "fpcmove")])
-+
-+(define_insn "*movsf_cc_reg_sp64"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (if_then_else:SF (match_operator 1 "v9_register_comparison_operator"
-+ [(match_operand:DI 2 "register_operand" "r")
-+ (const_int 0)])
-+ (match_operand:SF 3 "register_operand" "f")
-+ (match_operand:SF 4 "register_operand" "0")))]
-+ "TARGET_ARCH64 && TARGET_FPU"
-+ "fmovrs%D1\t%2, %3, %0"
-+ [(set_attr "type" "fpcrmove")])
-+
-+;; Named because invoked by movtf_cc_v9
-+(define_insn "movdf_cc_v9"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (if_then_else:DF (match_operator 1 "icc_or_fcc_comparison_operator"
-+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
-+ (const_int 0)])
-+ (match_operand:DF 3 "register_operand" "e")
-+ (match_operand:DF 4 "register_operand" "0")))]
-+ "TARGET_V9 && TARGET_FPU"
-+ "fmovd%C1\t%x2, %3, %0"
-+ [(set_attr "type" "fpcmove")
-+ (set_attr "fptype" "double")])
-+
-+;; Named because invoked by movtf_cc_reg_sp64
-+(define_insn "movdf_cc_reg_sp64"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (if_then_else:DF (match_operator 1 "v9_register_comparison_operator"
-+ [(match_operand:DI 2 "register_operand" "r")
-+ (const_int 0)])
-+ (match_operand:DF 3 "register_operand" "e")
-+ (match_operand:DF 4 "register_operand" "0")))]
-+ "TARGET_ARCH64 && TARGET_FPU"
-+ "fmovrd%D1\t%2, %3, %0"
-+ [(set_attr "type" "fpcrmove")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*movtf_cc_hq_v9"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (if_then_else:TF (match_operator 1 "icc_or_fcc_comparison_operator"
-+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
-+ (const_int 0)])
-+ (match_operand:TF 3 "register_operand" "e")
-+ (match_operand:TF 4 "register_operand" "0")))]
-+ "TARGET_V9 && TARGET_FPU && TARGET_HARD_QUAD"
-+ "fmovq%C1\t%x2, %3, %0"
-+ [(set_attr "type" "fpcmove")])
-+
-+(define_insn "*movtf_cc_reg_hq_sp64"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (if_then_else:TF (match_operator 1 "v9_register_comparison_operator"
-+ [(match_operand:DI 2 "register_operand" "r")
-+ (const_int 0)])
-+ (match_operand:TF 3 "register_operand" "e")
-+ (match_operand:TF 4 "register_operand" "0")))]
-+ "TARGET_ARCH64 && TARGET_FPU && TARGET_HARD_QUAD"
-+ "fmovrq%D1\t%2, %3, %0"
-+ [(set_attr "type" "fpcrmove")])
-+
-+(define_insn_and_split "*movtf_cc_v9"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (if_then_else:TF (match_operator 1 "icc_or_fcc_comparison_operator"
-+ [(match_operand 2 "icc_or_fcc_register_operand" "X")
-+ (const_int 0)])
-+ (match_operand:TF 3 "register_operand" "e")
-+ (match_operand:TF 4 "register_operand" "0")))]
-+ "TARGET_V9 && TARGET_FPU && !TARGET_HARD_QUAD"
-+ "#"
-+ "&& reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_srca = operands[3];
-+ rtx dest1, dest2;
-+ rtx srca1, srca2;
-+
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+ srca1 = gen_df_reg (set_srca, 0);
-+ srca2 = gen_df_reg (set_srca, 1);
-+
-+ if (reg_overlap_mentioned_p (dest1, srca2))
-+ {
-+ emit_insn (gen_movdf_cc_v9 (dest2, operands[1], operands[2],
-+ srca2, dest2));
-+ emit_insn (gen_movdf_cc_v9 (dest1, operands[1], operands[2],
-+ srca1, dest1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movdf_cc_v9 (dest1, operands[1], operands[2],
-+ srca1, dest1));
-+ emit_insn (gen_movdf_cc_v9 (dest2, operands[1], operands[2],
-+ srca2, dest2));
-+ }
-+ DONE;
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*movtf_cc_reg_sp64"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (if_then_else:TF (match_operator 1 "v9_register_comparison_operator"
-+ [(match_operand:DI 2 "register_operand" "r")
-+ (const_int 0)])
-+ (match_operand:TF 3 "register_operand" "e")
-+ (match_operand:TF 4 "register_operand" "0")))]
-+ "TARGET_ARCH64 && TARGET_FPU && !TARGET_HARD_QUAD"
-+ "#"
-+ "&& reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_srca = operands[3];
-+ rtx dest1, dest2;
-+ rtx srca1, srca2;
-+
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+ srca1 = gen_df_reg (set_srca, 0);
-+ srca2 = gen_df_reg (set_srca, 1);
-+
-+ if (reg_overlap_mentioned_p (dest1, srca2))
-+ {
-+ emit_insn (gen_movdf_cc_reg_sp64 (dest2, operands[1], operands[2],
-+ srca2, dest2));
-+ emit_insn (gen_movdf_cc_reg_sp64 (dest1, operands[1], operands[2],
-+ srca1, dest1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_movdf_cc_reg_sp64 (dest1, operands[1], operands[2],
-+ srca1, dest1));
-+ emit_insn (gen_movdf_cc_reg_sp64 (dest2, operands[1], operands[2],
-+ srca2, dest2));
-+ }
-+ DONE;
-+}
-+ [(set_attr "length" "2")])
-+
-+
-+;; Zero-extension instructions
-+
-+;; These patterns originally accepted general_operands, however, slightly
-+;; better code is generated by only accepting register_operands, and then
-+;; letting combine generate the ldu[hb] insns.
-+
-+(define_expand "zero_extendhisi2"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (zero_extend:SI (match_operand:HI 1 "register_operand" "")))]
-+ ""
-+{
-+ rtx temp = gen_reg_rtx (SImode);
-+ rtx shift_16 = GEN_INT (16);
-+ int op1_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (SImode);
-+ op1_subbyte *= GET_MODE_SIZE (SImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+
-+ emit_insn (gen_ashlsi3 (temp, gen_rtx_SUBREG (SImode, operand1, op1_subbyte),
-+ shift_16));
-+ emit_insn (gen_lshrsi3 (operand0, temp, shift_16));
-+ DONE;
-+})
-+
-+(define_insn "*zero_extendhisi2_insn"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (zero_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
-+ ""
-+ "lduh\t%1, %0"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_expand "zero_extendqihi2"
-+ [(set (match_operand:HI 0 "register_operand" "")
-+ (zero_extend:HI (match_operand:QI 1 "register_operand" "")))]
-+ ""
-+ "")
-+
-+(define_insn "*zero_extendqihi2_insn"
-+ [(set (match_operand:HI 0 "register_operand" "=r,r")
-+ (zero_extend:HI (match_operand:QI 1 "input_operand" "r,m")))]
-+ "GET_CODE (operands[1]) != CONST_INT"
-+ "@
-+ and\t%1, 0xff, %0
-+ ldub\t%1, %0"
-+ [(set_attr "type" "*,load")
-+ (set_attr "subtype" "*,regular")
-+ (set_attr "us3load_type" "*,3cycle")])
-+
-+(define_expand "zero_extendqisi2"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (zero_extend:SI (match_operand:QI 1 "register_operand" "")))]
-+ ""
-+ "")
-+
-+(define_insn "*zero_extendqisi2_insn"
-+ [(set (match_operand:SI 0 "register_operand" "=r,r")
-+ (zero_extend:SI (match_operand:QI 1 "input_operand" "r,m")))]
-+ "GET_CODE (operands[1]) != CONST_INT"
-+ "@
-+ and\t%1, 0xff, %0
-+ ldub\t%1, %0"
-+ [(set_attr "type" "*,load")
-+ (set_attr "subtype" "*,regular")
-+ (set_attr "us3load_type" "*,3cycle")])
-+
-+(define_expand "zero_extendqidi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (zero_extend:DI (match_operand:QI 1 "register_operand" "")))]
-+ "TARGET_ARCH64"
-+ "")
-+
-+(define_insn "*zero_extendqidi2_insn"
-+ [(set (match_operand:DI 0 "register_operand" "=r,r")
-+ (zero_extend:DI (match_operand:QI 1 "input_operand" "r,m")))]
-+ "TARGET_ARCH64 && GET_CODE (operands[1]) != CONST_INT"
-+ "@
-+ and\t%1, 0xff, %0
-+ ldub\t%1, %0"
-+ [(set_attr "type" "*,load")
-+ (set_attr "subtype" "*,regular")
-+ (set_attr "us3load_type" "*,3cycle")])
-+
-+(define_expand "zero_extendhidi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (zero_extend:DI (match_operand:HI 1 "register_operand" "")))]
-+ "TARGET_ARCH64"
-+{
-+ rtx temp = gen_reg_rtx (DImode);
-+ rtx shift_48 = GEN_INT (48);
-+ int op1_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (DImode);
-+ op1_subbyte *= GET_MODE_SIZE (DImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+
-+ emit_insn (gen_ashldi3 (temp, gen_rtx_SUBREG (DImode, operand1, op1_subbyte),
-+ shift_48));
-+ emit_insn (gen_lshrdi3 (operand0, temp, shift_48));
-+ DONE;
-+})
-+
-+(define_insn "*zero_extendhidi2_insn"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI (match_operand:HI 1 "memory_operand" "m")))]
-+ "TARGET_ARCH64"
-+ "lduh\t%1, %0"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+;; ??? Write truncdisi pattern using sra?
-+
-+(define_expand "zero_extendsidi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (zero_extend:DI (match_operand:SI 1 "register_operand" "")))]
-+ ""
-+ "")
-+
-+(define_insn "*zero_extendsidi2_insn_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r,r,r")
-+ (zero_extend:DI (match_operand:SI 1 "input_operand" "r,m,*f")))]
-+ "TARGET_ARCH64
-+ && GET_CODE (operands[1]) != CONST_INT"
-+ "@
-+ srl\t%1, 0, %0
-+ lduw\t%1, %0
-+ movstouw\t%1, %0"
-+ [(set_attr "type" "shift,load,vismv")
-+ (set_attr "subtype" "*,regular,movstouw")
-+ (set_attr "cpu_feature" "*,*,vis3")])
-+
-+(define_insn_and_split "*zero_extendsidi2_insn_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI (match_operand:SI 1 "register_operand" "r")))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(set (match_dup 2) (match_dup 1))
-+ (set (match_dup 3) (const_int 0))]
-+ "operands[2] = gen_lowpart (SImode, operands[0]);
-+ operands[3] = gen_highpart (SImode, operands[0]);"
-+ [(set_attr "length" "2")])
-+
-+;; Simplify comparisons of extended values.
-+
-+(define_insn "*cmp_zero_extendqisi2"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (zero_extend:SI (match_operand:QI 0 "register_operand" "r"))
-+ (const_int 0)))]
-+ ""
-+ "andcc\t%0, 0xff, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_qi"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operand:QI 0 "register_operand" "r")
-+ (const_int 0)))]
-+ ""
-+ "andcc\t%0, 0xff, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_extendqisi2_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (zero_extend:SI (match_operand:QI 1 "register_operand" "r"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (zero_extend:SI (match_dup 1)))]
-+ ""
-+ "andcc\t%1, 0xff, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_extendqisi2_andcc_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (and:SI (match_operand:SI 1 "register_operand" "r")
-+ (const_int 255))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (zero_extend:SI (subreg:QI (match_dup 1) 0)))]
-+ ""
-+ "andcc\t%1, 0xff, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_extendqidi2"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (zero_extend:DI (match_operand:QI 0 "register_operand" "r"))
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "andcc\t%0, 0xff, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_qi_sp64"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operand:QI 0 "register_operand" "r")
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "andcc\t%0, 0xff, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_extendqidi2_set"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (zero_extend:DI (match_operand:QI 1 "register_operand" "r"))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI (match_dup 1)))]
-+ "TARGET_ARCH64"
-+ "andcc\t%1, 0xff, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_extendqidi2_andcc_set"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (and:DI (match_operand:DI 1 "register_operand" "r")
-+ (const_int 255))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI (subreg:QI (match_dup 1) 0)))]
-+ "TARGET_ARCH64"
-+ "andcc\t%1, 0xff, %0"
-+ [(set_attr "type" "compare")])
-+
-+;; Similarly, handle {SI,DI}->QI mode truncation followed by a compare.
-+
-+(define_insn "*cmp_siqi_trunc"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (subreg:QI (match_operand:SI 0 "register_operand" "r") 3)
-+ (const_int 0)))]
-+ ""
-+ "andcc\t%0, 0xff, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_siqi_trunc_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (subreg:QI (match_operand:SI 1 "register_operand" "r") 3)
-+ (const_int 0)))
-+ (set (match_operand:QI 0 "register_operand" "=r")
-+ (subreg:QI (match_dup 1) 3))]
-+ ""
-+ "andcc\t%1, 0xff, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_diqi_trunc"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (subreg:QI (match_operand:DI 0 "register_operand" "r") 7)
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "andcc\t%0, 0xff, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_diqi_trunc_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (subreg:QI (match_operand:DI 1 "register_operand" "r") 7)
-+ (const_int 0)))
-+ (set (match_operand:QI 0 "register_operand" "=r")
-+ (subreg:QI (match_dup 1) 7))]
-+ "TARGET_ARCH64"
-+ "andcc\t%1, 0xff, %0"
-+ [(set_attr "type" "compare")])
-+
-+
-+;; Sign-extension instructions
-+
-+;; These patterns originally accepted general_operands, however, slightly
-+;; better code is generated by only accepting register_operands, and then
-+;; letting combine generate the lds[hb] insns.
-+
-+(define_expand "extendhisi2"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (sign_extend:SI (match_operand:HI 1 "register_operand" "")))]
-+ ""
-+{
-+ rtx temp = gen_reg_rtx (SImode);
-+ rtx shift_16 = GEN_INT (16);
-+ int op1_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (SImode);
-+ op1_subbyte *= GET_MODE_SIZE (SImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+
-+ emit_insn (gen_ashlsi3 (temp, gen_rtx_SUBREG (SImode, operand1, op1_subbyte),
-+ shift_16));
-+ emit_insn (gen_ashrsi3 (operand0, temp, shift_16));
-+ DONE;
-+})
-+
-+(define_insn "*sign_extendhisi2_insn"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
-+ ""
-+ "ldsh\t%1, %0"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_expand "extendqihi2"
-+ [(set (match_operand:HI 0 "register_operand" "")
-+ (sign_extend:HI (match_operand:QI 1 "register_operand" "")))]
-+ ""
-+{
-+ rtx temp = gen_reg_rtx (SImode);
-+ rtx shift_24 = GEN_INT (24);
-+ int op1_subbyte = 0;
-+ int op0_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (SImode);
-+ op1_subbyte *= GET_MODE_SIZE (SImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+ if (GET_CODE (operand0) == SUBREG)
-+ {
-+ op0_subbyte = SUBREG_BYTE (operand0);
-+ op0_subbyte /= GET_MODE_SIZE (SImode);
-+ op0_subbyte *= GET_MODE_SIZE (SImode);
-+ operand0 = XEXP (operand0, 0);
-+ }
-+ emit_insn (gen_ashlsi3 (temp, gen_rtx_SUBREG (SImode, operand1, op1_subbyte),
-+ shift_24));
-+ if (GET_MODE (operand0) != SImode)
-+ operand0 = gen_rtx_SUBREG (SImode, operand0, op0_subbyte);
-+ emit_insn (gen_ashrsi3 (operand0, temp, shift_24));
-+ DONE;
-+})
-+
-+(define_insn "*sign_extendqihi2_insn"
-+ [(set (match_operand:HI 0 "register_operand" "=r")
-+ (sign_extend:HI (match_operand:QI 1 "memory_operand" "m")))]
-+ ""
-+ "ldsb\t%1, %0"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_expand "extendqisi2"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (sign_extend:SI (match_operand:QI 1 "register_operand" "")))]
-+ ""
-+{
-+ rtx temp = gen_reg_rtx (SImode);
-+ rtx shift_24 = GEN_INT (24);
-+ int op1_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (SImode);
-+ op1_subbyte *= GET_MODE_SIZE (SImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+
-+ emit_insn (gen_ashlsi3 (temp, gen_rtx_SUBREG (SImode, operand1, op1_subbyte),
-+ shift_24));
-+ emit_insn (gen_ashrsi3 (operand0, temp, shift_24));
-+ DONE;
-+})
-+
-+(define_insn "*sign_extendqisi2_insn"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (sign_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
-+ ""
-+ "ldsb\t%1, %0"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_expand "extendqidi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (sign_extend:DI (match_operand:QI 1 "register_operand" "")))]
-+ "TARGET_ARCH64"
-+{
-+ rtx temp = gen_reg_rtx (DImode);
-+ rtx shift_56 = GEN_INT (56);
-+ int op1_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (DImode);
-+ op1_subbyte *= GET_MODE_SIZE (DImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+
-+ emit_insn (gen_ashldi3 (temp, gen_rtx_SUBREG (DImode, operand1, op1_subbyte),
-+ shift_56));
-+ emit_insn (gen_ashrdi3 (operand0, temp, shift_56));
-+ DONE;
-+})
-+
-+(define_insn "*sign_extendqidi2_insn"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI (match_operand:QI 1 "memory_operand" "m")))]
-+ "TARGET_ARCH64"
-+ "ldsb\t%1, %0"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_expand "extendhidi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (sign_extend:DI (match_operand:HI 1 "register_operand" "")))]
-+ "TARGET_ARCH64"
-+{
-+ rtx temp = gen_reg_rtx (DImode);
-+ rtx shift_48 = GEN_INT (48);
-+ int op1_subbyte = 0;
-+
-+ if (GET_CODE (operand1) == SUBREG)
-+ {
-+ op1_subbyte = SUBREG_BYTE (operand1);
-+ op1_subbyte /= GET_MODE_SIZE (DImode);
-+ op1_subbyte *= GET_MODE_SIZE (DImode);
-+ operand1 = XEXP (operand1, 0);
-+ }
-+
-+ emit_insn (gen_ashldi3 (temp, gen_rtx_SUBREG (DImode, operand1, op1_subbyte),
-+ shift_48));
-+ emit_insn (gen_ashrdi3 (operand0, temp, shift_48));
-+ DONE;
-+})
-+
-+(define_insn "*sign_extendhidi2_insn"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI (match_operand:HI 1 "memory_operand" "m")))]
-+ "TARGET_ARCH64"
-+ "ldsh\t%1, %0"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_expand "extendsidi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (sign_extend:DI (match_operand:SI 1 "register_operand" "")))]
-+ "TARGET_ARCH64"
-+ "")
-+
-+(define_insn "*sign_extendsidi2_insn"
-+ [(set (match_operand:DI 0 "register_operand" "=r,r,r")
-+ (sign_extend:DI (match_operand:SI 1 "input_operand" "r,m,*f")))]
-+ "TARGET_ARCH64"
-+ "@
-+ sra\t%1, 0, %0
-+ ldsw\t%1, %0
-+ movstosw\t%1, %0"
-+ [(set_attr "type" "shift,sload,vismv")
-+ (set_attr "us3load_type" "*,3cycle,*")
-+ (set_attr "cpu_feature" "*,*,vis3")])
-+
-+
-+;; Special pattern for optimizing bit-field compares. This is needed
-+;; because combine uses this as a canonical form.
-+
-+(define_insn "*cmp_zero_extract"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC
-+ (zero_extract:SI (match_operand:SI 0 "register_operand" "r")
-+ (match_operand:SI 1 "small_int_operand" "I")
-+ (match_operand:SI 2 "small_int_operand" "I"))
-+ (const_int 0)))]
-+ "INTVAL (operands[2]) > 19"
-+{
-+ int len = INTVAL (operands[1]);
-+ int pos = 32 - INTVAL (operands[2]) - len;
-+ HOST_WIDE_INT mask = ((1 << len) - 1) << pos;
-+ operands[1] = GEN_INT (mask);
-+ return "andcc\t%0, %1, %%g0";
-+}
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_zero_extract_sp64"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX
-+ (zero_extract:DI (match_operand:DI 0 "register_operand" "r")
-+ (match_operand:SI 1 "small_int_operand" "I")
-+ (match_operand:SI 2 "small_int_operand" "I"))
-+ (const_int 0)))]
-+ "TARGET_ARCH64 && INTVAL (operands[2]) > 51"
-+{
-+ int len = INTVAL (operands[1]);
-+ int pos = 64 - INTVAL (operands[2]) - len;
-+ HOST_WIDE_INT mask = (((unsigned HOST_WIDE_INT) 1 << len) - 1) << pos;
-+ operands[1] = GEN_INT (mask);
-+ return "andcc\t%0, %1, %%g0";
-+}
-+ [(set_attr "type" "compare")])
-+
-+
-+;; Conversions between float, double and long double.
-+
-+(define_insn "extendsfdf2"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (float_extend:DF (match_operand:SF 1 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fstod\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "extendsftf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (float_extend:TF (match_operand:SF 1 "register_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FLOAT_EXTEND, operands); DONE;")
-+
-+(define_insn "*extendsftf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (float_extend:TF (match_operand:SF 1 "register_operand" "f")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fstoq\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "extenddftf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (float_extend:TF (match_operand:DF 1 "register_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FLOAT_EXTEND, operands); DONE;")
-+
-+(define_insn "*extenddftf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (float_extend:TF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fdtoq\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "truncdfsf2"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (float_truncate:SF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU"
-+ "fdtos\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")
-+ (set_attr "fptype_ut699" "single")])
-+
-+(define_expand "trunctfsf2"
-+ [(set (match_operand:SF 0 "register_operand" "")
-+ (float_truncate:SF (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FLOAT_TRUNCATE, operands); DONE;")
-+
-+(define_insn "*trunctfsf2_hq"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (float_truncate:SF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fqtos\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "trunctfdf2"
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (float_truncate:DF (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FLOAT_TRUNCATE, operands); DONE;")
-+
-+(define_insn "*trunctfdf2_hq"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (float_truncate:DF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fqtod\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+
-+;; Conversion between fixed point and floating point.
-+
-+(define_insn "floatsisf2"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (float:SF (match_operand:SI 1 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fitos\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "single")])
-+
-+(define_insn "floatsidf2"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (float:DF (match_operand:SI 1 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fitod\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "floatsitf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (float:TF (match_operand:SI 1 "register_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FLOAT, operands); DONE;")
-+
-+(define_insn "*floatsitf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (float:TF (match_operand:SI 1 "register_operand" "f")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fitoq\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "floatunssitf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (unsigned_float:TF (match_operand:SI 1 "register_operand" "")))]
-+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
-+ "emit_tfmode_cvt (UNSIGNED_FLOAT, operands); DONE;")
-+
-+;; Now the same for 64 bit sources.
-+
-+(define_insn "floatdisf2"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (float:SF (match_operand:DI 1 "register_operand" "e")))]
-+ "TARGET_V9 && TARGET_FPU"
-+ "fxtos\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "floatunsdisf2"
-+ [(use (match_operand:SF 0 "register_operand" ""))
-+ (use (match_operand:DI 1 "general_operand" ""))]
-+ "TARGET_ARCH64 && TARGET_FPU"
-+ "sparc_emit_floatunsdi (operands, SFmode); DONE;")
-+
-+(define_insn "floatdidf2"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (float:DF (match_operand:DI 1 "register_operand" "e")))]
-+ "TARGET_V9 && TARGET_FPU"
-+ "fxtod\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "floatunsdidf2"
-+ [(use (match_operand:DF 0 "register_operand" ""))
-+ (use (match_operand:DI 1 "general_operand" ""))]
-+ "TARGET_ARCH64 && TARGET_FPU"
-+ "sparc_emit_floatunsdi (operands, DFmode); DONE;")
-+
-+(define_expand "floatditf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (float:TF (match_operand:DI 1 "register_operand" "")))]
-+ "TARGET_FPU && TARGET_V9 && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FLOAT, operands); DONE;")
-+
-+(define_insn "*floatditf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (float:TF (match_operand:DI 1 "register_operand" "e")))]
-+ "TARGET_V9 && TARGET_FPU && TARGET_HARD_QUAD"
-+ "fxtoq\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "floatunsditf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (unsigned_float:TF (match_operand:DI 1 "register_operand" "")))]
-+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
-+ "emit_tfmode_cvt (UNSIGNED_FLOAT, operands); DONE;")
-+
-+;; Convert a float to an actual integer.
-+;; Truncation is performed as part of the conversion.
-+
-+(define_insn "fix_truncsfsi2"
-+ [(set (match_operand:SI 0 "register_operand" "=f")
-+ (fix:SI (fix:SF (match_operand:SF 1 "register_operand" "f"))))]
-+ "TARGET_FPU"
-+ "fstoi\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "single")])
-+
-+(define_insn "fix_truncdfsi2"
-+ [(set (match_operand:SI 0 "register_operand" "=f")
-+ (fix:SI (fix:DF (match_operand:DF 1 "register_operand" "e"))))]
-+ "TARGET_FPU"
-+ "fdtoi\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")
-+ (set_attr "fptype_ut699" "single")])
-+
-+(define_expand "fix_trunctfsi2"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (fix:SI (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FIX, operands); DONE;")
-+
-+(define_insn "*fix_trunctfsi2_hq"
-+ [(set (match_operand:SI 0 "register_operand" "=f")
-+ (fix:SI (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fqtoi\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "fixuns_trunctfsi2"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (unsigned_fix:SI (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
-+ "emit_tfmode_cvt (UNSIGNED_FIX, operands); DONE;")
-+
-+;; Now the same, for V9 targets
-+
-+(define_insn "fix_truncsfdi2"
-+ [(set (match_operand:DI 0 "register_operand" "=e")
-+ (fix:DI (fix:SF (match_operand:SF 1 "register_operand" "f"))))]
-+ "TARGET_V9 && TARGET_FPU"
-+ "fstox\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "fixuns_truncsfdi2"
-+ [(use (match_operand:DI 0 "register_operand" ""))
-+ (use (match_operand:SF 1 "general_operand" ""))]
-+ "TARGET_ARCH64 && TARGET_FPU"
-+ "sparc_emit_fixunsdi (operands, SFmode); DONE;")
-+
-+(define_insn "fix_truncdfdi2"
-+ [(set (match_operand:DI 0 "register_operand" "=e")
-+ (fix:DI (fix:DF (match_operand:DF 1 "register_operand" "e"))))]
-+ "TARGET_V9 && TARGET_FPU"
-+ "fdtox\t%1, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "fixuns_truncdfdi2"
-+ [(use (match_operand:DI 0 "register_operand" ""))
-+ (use (match_operand:DF 1 "general_operand" ""))]
-+ "TARGET_ARCH64 && TARGET_FPU"
-+ "sparc_emit_fixunsdi (operands, DFmode); DONE;")
-+
-+(define_expand "fix_trunctfdi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (fix:DI (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_V9 && TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_cvt (FIX, operands); DONE;")
-+
-+(define_insn "*fix_trunctfdi2_hq"
-+ [(set (match_operand:DI 0 "register_operand" "=e")
-+ (fix:DI (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_V9 && TARGET_FPU && TARGET_HARD_QUAD"
-+ "fqtox\t%1, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "fixuns_trunctfdi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (unsigned_fix:DI (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_FPU && TARGET_ARCH64 && !TARGET_HARD_QUAD"
-+ "emit_tfmode_cvt (UNSIGNED_FIX, operands); DONE;")
-+
-+
-+;; Integer addition/subtraction instructions.
-+
-+(define_expand "adddi3"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (plus:DI (match_operand:DI 1 "register_operand" "")
-+ (match_operand:DI 2 "arith_double_add_operand" "")))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_adddi3_sp32 (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+;; Turning an add/sub instruction into the other changes the Carry flag
-+;; so the 4096 trick cannot be used for operations in CCXCmode.
-+
-+(define_expand "uaddvdi4"
-+ [(parallel [(set (reg:CCXC CC_REG)
-+ (compare:CCXC (plus:DI (match_operand:DI 1 "register_operand")
-+ (match_operand:DI 2 "arith_double_operand"))
-+ (match_dup 1)))
-+ (set (match_operand:DI 0 "register_operand")
-+ (plus:DI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ltu (reg:CCXC CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_uaddvdi4_sp32 (operands[0], operands[1], operands[2]));
-+ rtx x = gen_rtx_LTU (VOIDmode, gen_rtx_REG (CCCmode, SPARC_ICC_REG),
-+ const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (x, XEXP (x, 0), XEXP (x, 1), operands[3]));
-+ DONE;
-+ }
-+})
-+
-+;; Turning an add/sub instruction into the other does not change the Overflow
-+;; flag so the 4096 trick can be used for operations in CCXVmode.
-+
-+(define_expand "addvdi4"
-+ [(parallel [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (plus:DI (match_operand:DI 1 "register_operand")
-+ (match_operand:DI 2 "arith_double_add_operand"))
-+ (unspec:DI [(match_dup 1) (match_dup 2)]
-+ UNSPEC_ADDV)))
-+ (set (match_operand:DI 0 "register_operand")
-+ (plus:DI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ne (reg:CCXV CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_addvdi4_sp32 (operands[0], operands[1], operands[2]));
-+ rtx x = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCVmode, SPARC_ICC_REG),
-+ const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (x, XEXP (x, 0), XEXP (x, 1), operands[3]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn_and_split "adddi3_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=&r")
-+ (plus:DI (match_operand:DI 1 "register_operand" "%r")
-+ (match_operand:DI 2 "arith_double_operand" "rHI")))
-+ (clobber (reg:CC CC_REG))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_dup 4) (match_dup 5))
-+ (match_dup 4)))
-+ (set (match_dup 3)
-+ (plus:SI (match_dup 4) (match_dup 5)))])
-+ (set (match_dup 6)
-+ (plus:SI (plus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))]
-+{
-+ operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_lowpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[2]);
-+ operands[6] = gen_highpart (SImode, operands[0]);
-+ operands[7] = gen_highpart_mode (SImode, DImode, operands[1]);
-+ operands[8] = gen_highpart_mode (SImode, DImode, operands[2]);
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "uaddvdi4_sp32"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:DI (match_operand:DI 1 "register_operand" "%r")
-+ (match_operand:DI 2 "arith_double_operand" "rHI"))
-+ (match_dup 1)))
-+ (set (match_operand:DI 0 "register_operand" "=&r")
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_dup 4) (match_dup 5))
-+ (match_dup 4)))
-+ (set (match_dup 3)
-+ (plus:SI (match_dup 4) (match_dup 5)))])
-+ (parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (zero_extend:DI
-+ (plus:SI (plus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0))))
-+ (plus:DI (plus:DI (zero_extend:DI (match_dup 7))
-+ (zero_extend:DI (match_dup 8)))
-+ (ltu:DI (reg:CCC CC_REG)
-+ (const_int 0)))))
-+ (set (match_dup 6)
-+ (plus:SI (plus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0))))])]
-+{
-+ operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_lowpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[2]);
-+ operands[6] = gen_highpart (SImode, operands[0]);
-+ operands[7] = gen_highpart_mode (SImode, DImode, operands[1]);
-+ operands[8] = gen_highpart_mode (SImode, DImode, operands[2]);
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "addvdi4_sp32"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (plus:DI (match_operand:DI 1 "register_operand" "%r")
-+ (match_operand:DI 2 "arith_double_operand" "rHI"))
-+ (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_ADDV)))
-+ (set (match_operand:DI 0 "register_operand" "=&r")
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_dup 4) (match_dup 5))
-+ (match_dup 4)))
-+ (set (match_dup 3)
-+ (plus:SI (match_dup 4) (match_dup 5)))])
-+ (parallel [(set (reg:CCV CC_REG)
-+ (compare:CCV (plus:SI (plus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))
-+ (unspec:SI [(plus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0))]
-+ UNSPEC_ADDV)))
-+ (set (match_dup 6)
-+ (plus:SI (plus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))])]
-+{
-+ operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_lowpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[2]);
-+ operands[6] = gen_highpart (SImode, operands[0]);
-+ operands[7] = gen_highpart_mode (SImode, DImode, operands[1]);
-+ operands[8] = gen_highpart_mode (SImode, DImode, operands[2]);
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*addx_extend_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI (plus:SI (plus:SI
-+ (match_operand:SI 1 "register_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0)))))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(set (match_dup 3) (plus:SI (plus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))
-+ (set (match_dup 4) (const_int 0))]
-+ "operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_highpart (SImode, operands[0]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*adddi3_extend_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=&r")
-+ (plus:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "register_operand" "r")))
-+ (clobber (reg:CC CC_REG))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_dup 3) (match_dup 1))
-+ (match_dup 3)))
-+ (set (match_dup 5) (plus:SI (match_dup 3) (match_dup 1)))])
-+ (set (match_dup 6)
-+ (plus:SI (plus:SI (match_dup 4) (const_int 0))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))]
-+ "operands[3] = gen_lowpart (SImode, operands[2]);
-+ operands[4] = gen_highpart (SImode, operands[2]);
-+ operands[5] = gen_lowpart (SImode, operands[0]);
-+ operands[6] = gen_highpart (SImode, operands[0]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn "*adddi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r,r")
-+ (plus:DI (match_operand:DI 1 "register_operand" "%r,r")
-+ (match_operand:DI 2 "arith_add_operand" "rI,O")))]
-+ "TARGET_ARCH64"
-+ "@
-+ add\t%1, %2, %0
-+ sub\t%1, -%2, %0")
-+
-+(define_insn "addsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r,r")
-+ (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
-+ (match_operand:SI 2 "arith_add_operand" "rI,O")))]
-+ ""
-+ "@
-+ add\t%1, %2, %0
-+ sub\t%1, -%2, %0")
-+
-+;; Turning an add/sub instruction into the other changes the Carry flag
-+;; so the 4096 trick cannot be used for operations in CCCmode.
-+
-+(define_expand "uaddvsi4"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_operand:SI 1 "register_operand")
-+ (match_operand:SI 2 "arith_operand"))
-+ (match_dup 1)))
-+ (set (match_operand:SI 0 "register_operand")
-+ (plus:SI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ltu (reg:CCC CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ "")
-+
-+;; Turning an add/sub instruction into the other does not change the Overflow
-+;; flag so the 4096 trick can be used for operations in CCVmode.
-+
-+(define_expand "addvsi4"
-+ [(parallel [(set (reg:CCV CC_REG)
-+ (compare:CCV (plus:SI (match_operand:SI 1 "register_operand")
-+ (match_operand:SI 2 "arith_add_operand"))
-+ (unspec:SI [(match_dup 1) (match_dup 2)]
-+ UNSPEC_ADDV)))
-+ (set (match_operand:SI 0 "register_operand")
-+ (plus:SI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ne (reg:CCV CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ "")
-+
-+(define_insn "*cmp_ccnz_plus"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (plus:SI (match_operand:SI 0 "register_operand" "%r")
-+ (match_operand:SI 1 "arith_operand" "rI"))
-+ (const_int 0)))]
-+ ""
-+ "addcc\t%0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxnz_plus"
-+ [(set (reg:CCXNZ CC_REG)
-+ (compare:CCXNZ (plus:DI (match_operand:DI 0 "register_operand" "%r")
-+ (match_operand:DI 1 "arith_operand" "rI"))
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "addcc\t%0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccnz_plus_set"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (plus:SI (match_operand:SI 1 "register_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (match_dup 1) (match_dup 2)))]
-+ ""
-+ "addcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxnz_plus_set"
-+ [(set (reg:CCXNZ CC_REG)
-+ (compare:CCXNZ (plus:DI (match_operand:DI 1 "register_operand" "%r")
-+ (match_operand:DI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH64"
-+ "addcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccc_plus"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_operand:SI 0 "register_operand" "%r")
-+ (match_operand:SI 1 "arith_operand" "rI"))
-+ (match_dup 0)))]
-+ ""
-+ "addcc\t%0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxc_plus"
-+ [(set (reg:CCXC CC_REG)
-+ (compare:CCXC (plus:DI (match_operand:DI 0 "register_operand" "%r")
-+ (match_operand:DI 1 "arith_operand" "rI"))
-+ (match_dup 0)))]
-+ "TARGET_ARCH64"
-+ "addcc\t%0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccc_plus_set"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (plus:SI (match_operand:SI 1 "register_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (match_dup 1)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (match_dup 1) (match_dup 2)))]
-+ ""
-+ "addcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxc_plus_set"
-+ [(set (reg:CCXC CC_REG)
-+ (compare:CCXC (plus:DI (match_operand:DI 1 "register_operand" "%r")
-+ (match_operand:DI 2 "arith_operand" "rI"))
-+ (match_dup 1)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH64"
-+ "addcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccc_plus_sltu_set"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (zero_extend:DI
-+ (plus:SI
-+ (plus:SI (match_operand:SI 1 "register_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))
-+ (plus:DI (plus:DI (zero_extend:DI (match_dup 1))
-+ (zero_extend:DI (match_dup 2)))
-+ (ltu:DI (reg:CCC CC_REG) (const_int 0)))))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (plus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))]
-+ ""
-+ "addxcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_plus"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (plus:SI (match_operand:SI 0 "register_operand" "%r,r")
-+ (match_operand:SI 1 "arith_add_operand" "rI,O"))
-+ (unspec:SI [(match_dup 0) (match_dup 1)] UNSPEC_ADDV)))]
-+ ""
-+ "@
-+ addcc\t%0, %1, %%g0
-+ subcc\t%0, -%1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxv_plus"
-+ [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (plus:DI (match_operand:DI 0 "register_operand" "%r,r")
-+ (match_operand:DI 1 "arith_add_operand" "rI,O"))
-+ (unspec:DI [(match_dup 0) (match_dup 1)] UNSPEC_ADDV)))]
-+ "TARGET_ARCH64"
-+ "@
-+ addcc\t%0, %1, %%g0
-+ subcc\t%0, -%1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_plus_set"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
-+ (match_operand:SI 2 "arith_add_operand" "rI,O"))
-+ (unspec:SI [(match_dup 1) (match_dup 2)] UNSPEC_ADDV)))
-+ (set (match_operand:SI 0 "register_operand" "=r,r")
-+ (plus:SI (match_dup 1) (match_dup 2)))]
-+ ""
-+ "@
-+ addcc\t%1, %2, %0
-+ subcc\t%1, -%2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxv_plus_set"
-+ [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (plus:DI (match_operand:DI 1 "register_operand" "%r,r")
-+ (match_operand:DI 2 "arith_add_operand" "rI,O"))
-+ (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_ADDV)))
-+ (set (match_operand:DI 0 "register_operand" "=r,r")
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH64"
-+ "@
-+ addcc\t%1, %2, %0
-+ subcc\t%1, -%2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_plus_sltu_set"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (plus:SI (plus:SI (match_operand:SI 1 "register_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0)))
-+ (unspec:SI [(plus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))]
-+ UNSPEC_ADDV)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (plus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))]
-+ ""
-+ "addxcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+
-+(define_expand "subdi3"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (minus:DI (match_operand:DI 1 "register_operand" "")
-+ (match_operand:DI 2 "arith_double_add_operand" "")))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_subdi3_sp32 (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+;; Turning an add/sub instruction into the other changes the Carry flag
-+;; so the 4096 trick cannot be used for operations in CCXmode.
-+
-+(define_expand "usubvdi4"
-+ [(parallel [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operand:DI 1 "register_or_zero_operand")
-+ (match_operand:DI 2 "arith_double_operand")))
-+ (set (match_operand:DI 0 "register_operand")
-+ (minus:DI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ltu (reg:CCX CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ ""
-+{
-+ if (operands[1] == const0_rtx)
-+ {
-+ emit_insn (gen_unegvdi3 (operands[0], operands[2], operands[3]));
-+ DONE;
-+ }
-+
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_usubvdi4_sp32 (operands[0], operands[1], operands[2]));
-+ rtx x = gen_rtx_LTU (VOIDmode, gen_rtx_REG (CCCmode, SPARC_ICC_REG),
-+ const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (x, XEXP (x, 0), XEXP (x, 1), operands[3]));
-+ DONE;
-+ }
-+})
-+
-+;; Turning an add/sub instruction into the other does not change the Overflow
-+;; flag so the 4096 trick can be used for operations in CCXVmode.
-+
-+(define_expand "subvdi4"
-+ [(parallel [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (minus:DI (match_operand:DI 1 "register_operand")
-+ (match_operand:DI 2 "arith_double_add_operand"))
-+ (unspec:DI [(match_dup 1) (match_dup 2)]
-+ UNSPEC_SUBV)))
-+ (set (match_operand:DI 0 "register_operand")
-+ (minus:DI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ne (reg:CCXV CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_subvdi4_sp32 (operands[0], operands[1], operands[2]));
-+ rtx x = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCVmode, SPARC_ICC_REG),
-+ const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (x, XEXP (x, 0), XEXP (x, 1), operands[3]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn_and_split "subdi3_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=&r")
-+ (minus:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "arith_double_operand" "rHI")))
-+ (clobber (reg:CC CC_REG))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CC CC_REG)
-+ (compare:CC (match_dup 4) (match_dup 5)))
-+ (set (match_dup 3)
-+ (minus:SI (match_dup 4) (match_dup 5)))])
-+ (set (match_dup 6)
-+ (minus:SI (minus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CC CC_REG) (const_int 0))))]
-+{
-+ operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_lowpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[2]);
-+ operands[6] = gen_highpart (SImode, operands[0]);
-+ operands[7] = gen_highpart (SImode, operands[1]);
-+ operands[8] = gen_highpart_mode (SImode, DImode, operands[2]);
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "usubvdi4_sp32"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "arith_double_operand" "rHI")))
-+ (set (match_operand:DI 0 "register_operand" "=&r")
-+ (minus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CC CC_REG)
-+ (compare:CC (match_dup 4) (match_dup 5)))
-+ (set (match_dup 3)
-+ (minus:SI (match_dup 4) (match_dup 5)))])
-+ (parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (zero_extend:DI
-+ (minus:SI (minus:SI (match_dup 7)
-+ (ltu:SI (reg:CC CC_REG)
-+ (const_int 0)))
-+ (match_dup 8)))
-+ (minus:DI
-+ (minus:DI (zero_extend:DI (match_dup 7))
-+ (ltu:DI (reg:CC CC_REG)
-+ (const_int 0)))
-+ (zero_extend:DI (match_dup 8)))))
-+ (set (match_dup 6)
-+ (minus:SI (minus:SI (match_dup 7)
-+ (ltu:SI (reg:CC CC_REG)
-+ (const_int 0)))
-+ (match_dup 8)))])]
-+{
-+ operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_lowpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[2]);
-+ operands[6] = gen_highpart (SImode, operands[0]);
-+ operands[7] = gen_highpart_mode (SImode, DImode, operands[1]);
-+ operands[8] = gen_highpart_mode (SImode, DImode, operands[2]);
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "subvdi4_sp32"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (minus:DI (match_operand:DI 1 "register_operand" "%r")
-+ (match_operand:DI 2 "arith_double_operand" "rHI"))
-+ (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_SUBV)))
-+ (set (match_operand:DI 0 "register_operand" "=&r")
-+ (minus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CC CC_REG)
-+ (compare:CC (match_dup 4) (match_dup 5)))
-+ (set (match_dup 3)
-+ (minus:SI (match_dup 4) (match_dup 5)))])
-+ (parallel [(set (reg:CCV CC_REG)
-+ (compare:CCV (minus:SI (minus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CC CC_REG)
-+ (const_int 0)))
-+ (unspec:SI [(minus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CC CC_REG)
-+ (const_int 0))]
-+ UNSPEC_SUBV)))
-+ (set (match_dup 6)
-+ (minus:SI (minus:SI (match_dup 7) (match_dup 8))
-+ (ltu:SI (reg:CC CC_REG) (const_int 0))))])]
-+{
-+ operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_lowpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[2]);
-+ operands[6] = gen_highpart (SImode, operands[0]);
-+ operands[7] = gen_highpart_mode (SImode, DImode, operands[1]);
-+ operands[8] = gen_highpart_mode (SImode, DImode, operands[2]);
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*subx_extend_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI (minus:SI (minus:SI
-+ (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0)))))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(set (match_dup 3) (minus:SI (minus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))
-+ (set (match_dup 4) (const_int 0))]
-+ "operands[3] = gen_lowpart (SImode, operands[0]);
-+ operands[4] = gen_highpart (SImode, operands[0]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "*subdi3_extend_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=&r")
-+ (minus:DI (match_operand:DI 1 "register_operand" "r")
-+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))
-+ (clobber (reg:CC CC_REG))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CC CC_REG)
-+ (compare:CC (match_dup 3) (match_dup 2)))
-+ (set (match_dup 5) (minus:SI (match_dup 3) (match_dup 2)))])
-+ (set (match_dup 6)
-+ (minus:SI (minus:SI (match_dup 4) (const_int 0))
-+ (ltu:SI (reg:CC CC_REG) (const_int 0))))]
-+ "operands[3] = gen_lowpart (SImode, operands[1]);
-+ operands[4] = gen_highpart (SImode, operands[1]);
-+ operands[5] = gen_lowpart (SImode, operands[0]);
-+ operands[6] = gen_highpart (SImode, operands[0]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn "*subdi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r,r")
-+ (minus:DI (match_operand:DI 1 "register_operand" "r,r")
-+ (match_operand:DI 2 "arith_add_operand" "rI,O")))]
-+ "TARGET_ARCH64"
-+ "@
-+ sub\t%1, %2, %0
-+ add\t%1, -%2, %0")
-+
-+(define_insn "subsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r,r")
-+ (minus:SI (match_operand:SI 1 "register_operand" "r,r")
-+ (match_operand:SI 2 "arith_add_operand" "rI,O")))]
-+ ""
-+ "@
-+ sub\t%1, %2, %0
-+ add\t%1, -%2, %0")
-+
-+;; Turning an add/sub instruction into the other changes the Carry flag
-+;; so the 4096 trick cannot be used for operations in CCmode.
-+
-+(define_expand "usubvsi4"
-+ [(parallel [(set (reg:CC CC_REG)
-+ (compare:CC (match_operand:SI 1 "register_or_zero_operand")
-+ (match_operand:SI 2 "arith_operand")))
-+ (set (match_operand:SI 0 "register_operand")
-+ (minus:SI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ltu (reg:CC CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ ""
-+{
-+ if (operands[1] == const0_rtx)
-+ {
-+ emit_insn (gen_unegvsi3 (operands[0], operands[2], operands[3]));
-+ DONE;
-+ }
-+})
-+
-+;; Turning an add/sub instruction into the other does not change the Overflow
-+;; flag so the 4096 trick can be used for operations in CCVmode.
-+
-+(define_expand "subvsi4"
-+ [(parallel [(set (reg:CCV CC_REG)
-+ (compare:CCV (minus:SI (match_operand:SI 1 "register_operand")
-+ (match_operand:SI 2 "arith_add_operand"))
-+ (unspec:SI [(match_dup 1) (match_dup 2)]
-+ UNSPEC_SUBV)))
-+ (set (match_operand:SI 0 "register_operand")
-+ (minus:SI (match_dup 1) (match_dup 2)))])
-+ (set (pc) (if_then_else (ne (reg:CCV CC_REG) (const_int 0))
-+ (label_ref (match_operand 3))
-+ (pc)))]
-+ "")
-+
-+(define_insn "*cmp_ccnz_minus"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:SI (match_operand:SI 0 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 1 "arith_operand" "rI"))
-+ (const_int 0)))]
-+ ""
-+ "subcc\t%r0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxnz_minus"
-+ [(set (reg:CCXNZ CC_REG)
-+ (compare:CCXNZ (minus:DI (match_operand:DI 0 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 1 "arith_operand" "rI"))
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%r0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccnz_minus_set"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (minus:SI (match_dup 1) (match_dup 2)))]
-+ ""
-+ "subcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxnz_minus_set"
-+ [(set (reg:CCXNZ CC_REG)
-+ (compare:CCXNZ (minus:DI (match_operand:DI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (minus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmpsi_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "arith_operand" "rI")))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (minus:SI (match_dup 1) (match_dup 2)))]
-+ ""
-+ "subcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmpdi_set"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operand:DI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 2 "arith_operand" "rI")))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (minus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccc_minus_sltu_set"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (zero_extend:DI
-+ (minus:SI
-+ (minus:SI
-+ (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (ltu:SI (reg:CC CC_REG) (const_int 0)))
-+ (match_operand:SI 2 "arith_operand" "rI")))
-+ (minus:DI
-+ (minus:DI
-+ (zero_extend:DI (match_dup 1))
-+ (ltu:DI (reg:CC CC_REG) (const_int 0)))
-+ (zero_extend:DI (match_dup 2)))))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (minus:SI (minus:SI (match_dup 1)
-+ (ltu:SI (reg:CC CC_REG) (const_int 0)))
-+ (match_dup 2)))]
-+ ""
-+ "subxcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_minus"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (minus:SI (match_operand:SI 0 "register_or_zero_operand" "rJ,rJ")
-+ (match_operand:SI 1 "arith_add_operand" "rI,O"))
-+ (unspec:SI [(match_dup 0) (match_dup 1)] UNSPEC_SUBV)))]
-+ ""
-+ "@
-+ subcc\t%r0, %1, %%g0
-+ addcc\t%r0, -%1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxv_minus"
-+ [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (minus:DI (match_operand:DI 0 "register_or_zero_operand" "rJ,rJ")
-+ (match_operand:DI 1 "arith_add_operand" "rI,O"))
-+ (unspec:DI [(match_dup 0) (match_dup 1)] UNSPEC_SUBV)))]
-+ "TARGET_ARCH64"
-+ "@
-+ subcc\t%r0, %1, %%g0
-+ addcc\t%r0, -%1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_minus_set"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (minus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ,rJ")
-+ (match_operand:SI 2 "arith_add_operand" "rI,O"))
-+ (unspec:SI [(match_dup 1) (match_dup 2)] UNSPEC_SUBV)))
-+ (set (match_operand:SI 0 "register_operand" "=r,r")
-+ (minus:SI (match_dup 1) (match_dup 2)))]
-+ ""
-+ "@
-+ subcc\t%r1, %2, %0
-+ addcc\t%r1, -%2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxv_minus_set"
-+ [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (minus:DI (match_operand:DI 1 "register_or_zero_operand" "rJ,rJ")
-+ (match_operand:DI 2 "arith_add_operand" "rI,O"))
-+ (unspec:DI [(match_dup 1) (match_dup 2)] UNSPEC_SUBV)))
-+ (set (match_operand:DI 0 "register_operand" "=r,r")
-+ (minus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_ARCH64"
-+ "@
-+ subcc\t%r1, %2, %0
-+ addcc\t%r1, -%2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_minus_sltu_set"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV
-+ (minus:SI (minus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (ltu:SI (reg:CC CC_REG) (const_int 0)))
-+ (unspec:SI [(minus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CC CC_REG) (const_int 0))]
-+ UNSPEC_SUBV)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (minus:SI (minus:SI (match_dup 1) (match_dup 2))
-+ (ltu:SI (reg:CC CC_REG) (const_int 0))))]
-+ ""
-+ "subxcc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+
-+;; Integer multiply/divide instructions.
-+
-+;; The 32-bit multiply/divide instructions are deprecated on v9, but at
-+;; least in UltraSPARC I, II and IIi it is a win tick-wise.
-+
-+(define_expand "mulsi3"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (mult:SI (match_operand:SI 1 "arith_operand" "")
-+ (match_operand:SI 2 "arith_operand" "")))]
-+ "TARGET_HARD_MUL || TARGET_ARCH64"
-+ "")
-+
-+(define_insn "*mulsi3_sp32"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (mult:SI (match_operand:SI 1 "arith_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_HARD_MUL"
-+ "smul\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "*mulsi3_sp64"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (mult:SI (match_operand:SI 1 "arith_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "mulx\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_expand "muldi3"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (mult:DI (match_operand:DI 1 "arith_operand" "")
-+ (match_operand:DI 2 "arith_operand" "")))]
-+ "TARGET_ARCH64 || TARGET_V8PLUS"
-+{
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_muldi3_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*muldi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (match_operand:DI 1 "arith_operand" "%r")
-+ (match_operand:DI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "mulx\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+;; V8plus wide multiply.
-+(define_insn "muldi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r,h")
-+ (mult:DI (match_operand:DI 1 "arith_operand" "%r,0")
-+ (match_operand:DI 2 "arith_operand" "rI,rI")))
-+ (clobber (match_scratch:SI 3 "=&h,X"))
-+ (clobber (match_scratch:SI 4 "=&h,X"))]
-+ "TARGET_V8PLUS"
-+{
-+ return output_v8plus_mult (insn, operands, \"mulx\");
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "9,8")])
-+
-+(define_insn "*cmp_mul_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (mult:SI (match_operand:SI 1 "arith_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (mult:SI (match_dup 1) (match_dup 2)))]
-+ "TARGET_V8 || TARGET_SPARCLITE || TARGET_DEPRECATED_V8_INSNS"
-+ "smulcc\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_expand "mulsidi3"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" ""))
-+ (sign_extend:DI (match_operand:SI 2 "arith_operand" ""))))]
-+ "TARGET_HARD_MUL"
-+{
-+ if (CONSTANT_P (operands[2]))
-+ {
-+ if (TARGET_V8PLUS)
-+ emit_insn (gen_const_mulsidi3_v8plus (operands[0], operands[1],
-+ operands[2]));
-+ else if (TARGET_ARCH32)
-+ emit_insn (gen_const_mulsidi3_sp32 (operands[0], operands[1],
-+ operands[2]));
-+ else
-+ emit_insn (gen_const_mulsidi3_sp64 (operands[0], operands[1],
-+ operands[2]));
-+ DONE;
-+ }
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_mulsidi3_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+;; V9 puts the 64-bit product in a 64-bit register. Only out or global
-+;; registers can hold 64-bit values in the V8plus environment.
-+(define_insn "mulsidi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=h,r")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r"))))
-+ (clobber (match_scratch:SI 3 "=X,&h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ smul\t%1, %2, %L0\n\tsrlx\t%L0, 32, %H0
-+ smul\t%1, %2, %3\n\tsrlx\t%3, 32, %H0\n\tmov\t%3, %L0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2,3")])
-+
-+(define_insn "const_mulsidi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=h,r")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (match_operand:DI 2 "small_int_operand" "I,I")))
-+ (clobber (match_scratch:SI 3 "=X,&h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ smul\t%1, %2, %L0\n\tsrlx\t%L0, 32, %H0
-+ smul\t%1, %2, %3\n\tsrlx\t%3, 32, %H0\n\tmov\t%3, %L0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2,3")])
-+
-+(define_insn "*mulsidi3_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
-+ "TARGET_HARD_MUL32"
-+{
-+ return TARGET_SPARCLET
-+ ? "smuld\t%1, %2, %L0"
-+ : "smul\t%1, %2, %L0\n\trd\t%%y, %H0";
-+}
-+ [(set (attr "type")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_string "imul") (const_string "multi")))
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_int 1) (const_int 2)))])
-+
-+(define_insn "*mulsidi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
-+ "TARGET_DEPRECATED_V8_INSNS && TARGET_ARCH64"
-+ "smul\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+;; Extra pattern, because sign_extend of a constant isn't valid.
-+
-+(define_insn "const_mulsidi3_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "small_int_operand" "I")))]
-+ "TARGET_HARD_MUL32"
-+{
-+ return TARGET_SPARCLET
-+ ? "smuld\t%1, %2, %L0"
-+ : "smul\t%1, %2, %L0\n\trd\t%%y, %H0";
-+}
-+ [(set (attr "type")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_string "imul") (const_string "multi")))
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_int 1) (const_int 2)))])
-+
-+(define_insn "const_mulsidi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "small_int_operand" "I")))]
-+ "TARGET_DEPRECATED_V8_INSNS && TARGET_ARCH64"
-+ "smul\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_expand "smulsi3_highpart"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" ""))
-+ (sign_extend:DI (match_operand:SI 2 "arith_operand" "")))
-+ (const_int 32))))]
-+ "TARGET_HARD_MUL && TARGET_ARCH32"
-+{
-+ if (CONSTANT_P (operands[2]))
-+ {
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_const_smulsi3_highpart_v8plus (operands[0],
-+ operands[1],
-+ operands[2],
-+ GEN_INT (32)));
-+ DONE;
-+ }
-+ emit_insn (gen_const_smulsi3_highpart (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_smulsi3_highpart_v8plus (operands[0], operands[1],
-+ operands[2], GEN_INT (32)));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "smulsi3_highpart_v8plus"
-+ [(set (match_operand:SI 0 "register_operand" "=h,r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
-+ (match_operand:SI 3 "small_int_operand" "I,I"))))
-+ (clobber (match_scratch:SI 4 "=X,&h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ smul\t%1, %2, %0\;srlx\t%0, %3, %0
-+ smul\t%1, %2, %4\;srlx\t%4, %3, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+;; The combiner changes TRUNCATE in the previous pattern to SUBREG.
-+(define_insn ""
-+ [(set (match_operand:SI 0 "register_operand" "=h,r")
-+ (subreg:SI
-+ (lshiftrt:DI
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
-+ (match_operand:SI 3 "small_int_operand" "I,I")) 4))
-+ (clobber (match_scratch:SI 4 "=X,&h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ smul\t%1, %2, %0\n\tsrlx\t%0, %3, %0
-+ smul\t%1, %2, %4\n\tsrlx\t%4, %3, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "const_smulsi3_highpart_v8plus"
-+ [(set (match_operand:SI 0 "register_operand" "=h,r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (match_operand:DI 2 "small_int_operand" "I,I"))
-+ (match_operand:SI 3 "small_int_operand" "I,I"))))
-+ (clobber (match_scratch:SI 4 "=X,&h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ smul\t%1, %2, %0\n\tsrlx\t%0, %3, %0
-+ smul\t%1, %2, %4\n\tsrlx\t%4, %3, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "*smulsi3_highpart_sp32"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r")))
-+ (const_int 32))))]
-+ "TARGET_HARD_MUL32"
-+ "smul\t%1, %2, %%g0\n\trd\t%%y, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "const_smulsi3_highpart"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "small_int_operand" "i"))
-+ (const_int 32))))]
-+ "TARGET_HARD_MUL32"
-+ "smul\t%1, %2, %%g0\n\trd\t%%y, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_expand "umulsidi3"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
-+ (zero_extend:DI (match_operand:SI 2 "uns_arith_operand" ""))))]
-+ "TARGET_HARD_MUL"
-+{
-+ if (CONSTANT_P (operands[2]))
-+ {
-+ if (TARGET_V8PLUS)
-+ emit_insn (gen_const_umulsidi3_v8plus (operands[0], operands[1],
-+ operands[2]));
-+ else if (TARGET_ARCH32)
-+ emit_insn (gen_const_umulsidi3_sp32 (operands[0], operands[1],
-+ operands[2]));
-+ else
-+ emit_insn (gen_const_umulsidi3_sp64 (operands[0], operands[1],
-+ operands[2]));
-+ DONE;
-+ }
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_umulsidi3_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "umulsidi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=h,r")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r,r"))))
-+ (clobber (match_scratch:SI 3 "=X,&h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ umul\t%1, %2, %L0\n\tsrlx\t%L0, 32, %H0
-+ umul\t%1, %2, %3\n\tsrlx\t%3, 32, %H0\n\tmov\t%3, %L0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2,3")])
-+
-+(define_insn "*umulsidi3_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
-+ "TARGET_HARD_MUL32"
-+{
-+ return TARGET_SPARCLET
-+ ? "umuld\t%1, %2, %L0"
-+ : "umul\t%1, %2, %L0\n\trd\t%%y, %H0";
-+}
-+ [(set (attr "type")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_string "imul") (const_string "multi")))
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_int 1) (const_int 2)))])
-+
-+(define_insn "*umulsidi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r"))))]
-+ "TARGET_DEPRECATED_V8_INSNS && TARGET_ARCH64"
-+ "umul\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+;; Extra pattern, because sign_extend of a constant isn't valid.
-+
-+(define_insn "const_umulsidi3_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "uns_small_int_operand" "")))]
-+ "TARGET_HARD_MUL32"
-+{
-+ return TARGET_SPARCLET
-+ ? "umuld\t%1, %s2, %L0"
-+ : "umul\t%1, %s2, %L0\n\trd\t%%y, %H0";
-+}
-+ [(set (attr "type")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_string "imul") (const_string "multi")))
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "sparclet")
-+ (const_int 1) (const_int 2)))])
-+
-+(define_insn "const_umulsidi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "uns_small_int_operand" "")))]
-+ "TARGET_DEPRECATED_V8_INSNS && TARGET_ARCH64"
-+ "umul\t%1, %s2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "const_umulsidi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=h,r")
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (match_operand:DI 2 "uns_small_int_operand" "")))
-+ (clobber (match_scratch:SI 3 "=X,h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ umul\t%1, %s2, %L0\n\tsrlx\t%L0, 32, %H0
-+ umul\t%1, %s2, %3\n\tsrlx\t%3, 32, %H0\n\tmov\t%3, %L0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2,3")])
-+
-+(define_expand "umulsi3_highpart"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" ""))
-+ (zero_extend:DI (match_operand:SI 2 "uns_arith_operand" "")))
-+ (const_int 32))))]
-+ "TARGET_HARD_MUL && TARGET_ARCH32"
-+{
-+ if (CONSTANT_P (operands[2]))
-+ {
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_const_umulsi3_highpart_v8plus (operands[0],
-+ operands[1],
-+ operands[2],
-+ GEN_INT (32)));
-+ DONE;
-+ }
-+ emit_insn (gen_const_umulsi3_highpart (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+ if (TARGET_V8PLUS)
-+ {
-+ emit_insn (gen_umulsi3_highpart_v8plus (operands[0], operands[1],
-+ operands[2], GEN_INT (32)));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "umulsi3_highpart_v8plus"
-+ [(set (match_operand:SI 0 "register_operand" "=h,r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r,r")))
-+ (match_operand:SI 3 "small_int_operand" "I,I"))))
-+ (clobber (match_scratch:SI 4 "=X,h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ umul\t%1, %2, %0\n\tsrlx\t%0, %3, %0
-+ umul\t%1, %2, %4\n\tsrlx\t%4, %3, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "const_umulsi3_highpart_v8plus"
-+ [(set (match_operand:SI 0 "register_operand" "=h,r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r,r"))
-+ (match_operand:DI 2 "uns_small_int_operand" ""))
-+ (match_operand:SI 3 "small_int_operand" "I,I"))))
-+ (clobber (match_scratch:SI 4 "=X,h"))]
-+ "TARGET_V8PLUS"
-+ "@
-+ umul\t%1, %s2, %0\n\tsrlx\t%0, %3, %0
-+ umul\t%1, %s2, %4\n\tsrlx\t%4, %3, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "*umulsi3_highpart_sp32"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r")))
-+ (const_int 32))))]
-+ "TARGET_HARD_MUL32"
-+ "umul\t%1, %2, %%g0\n\trd\t%%y, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "const_umulsi3_highpart"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (truncate:SI
-+ (lshiftrt:DI
-+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "uns_small_int_operand" ""))
-+ (const_int 32))))]
-+ "TARGET_HARD_MUL32"
-+ "umul\t%1, %s2, %%g0\n\trd\t%%y, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+
-+(define_expand "umulxhi_vis"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (truncate:DI
-+ (lshiftrt:TI
-+ (mult:TI (zero_extend:TI (match_operand:DI 1 "arith_operand" ""))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "")))
-+ (const_int 64))))]
-+ "TARGET_VIS3"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_umulxhi_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*umulxhi_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (truncate:DI
-+ (lshiftrt:TI
-+ (mult:TI (zero_extend:TI (match_operand:DI 1 "arith_operand" "%r"))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI")))
-+ (const_int 64))))]
-+ "TARGET_VIS3 && TARGET_ARCH64"
-+ "umulxhi\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "umulxhi_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r,h")
-+ (truncate:DI
-+ (lshiftrt:TI
-+ (mult:TI (zero_extend:TI (match_operand:DI 1 "arith_operand" "%r,0"))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI,rI")))
-+ (const_int 64))))
-+ (clobber (match_scratch:SI 3 "=&h,X"))
-+ (clobber (match_scratch:SI 4 "=&h,X"))]
-+ "TARGET_VIS3 && TARGET_ARCH32"
-+{
-+ return output_v8plus_mult (insn, operands, \"umulxhi\");
-+}
-+ [(set_attr "type" "imul")
-+ (set_attr "length" "9,8")])
-+
-+(define_expand "xmulx_vis"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (truncate:DI
-+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" ""))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" ""))]
-+ UNSPEC_XMUL)))]
-+ "TARGET_VIS3"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_xmulx_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*xmulx_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (truncate:DI
-+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r"))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI"))]
-+ UNSPEC_XMUL)))]
-+ "TARGET_VIS3 && TARGET_ARCH64"
-+ "xmulx\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "xmulx_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r,h")
-+ (truncate:DI
-+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r,0"))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI,rI"))]
-+ UNSPEC_XMUL)))
-+ (clobber (match_scratch:SI 3 "=&h,X"))
-+ (clobber (match_scratch:SI 4 "=&h,X"))]
-+ "TARGET_VIS3 && TARGET_ARCH32"
-+{
-+ return output_v8plus_mult (insn, operands, \"xmulx\");
-+}
-+ [(set_attr "type" "imul")
-+ (set_attr "length" "9,8")])
-+
-+(define_expand "xmulxhi_vis"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (truncate:DI
-+ (lshiftrt:TI
-+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" ""))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" ""))]
-+ UNSPEC_XMUL)
-+ (const_int 64))))]
-+ "TARGET_VIS3"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_xmulxhi_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*xmulxhi_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (truncate:DI
-+ (lshiftrt:TI
-+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r"))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI"))]
-+ UNSPEC_XMUL)
-+ (const_int 64))))]
-+ "TARGET_VIS3 && TARGET_ARCH64"
-+ "xmulxhi\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "xmulxhi_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r,h")
-+ (truncate:DI
-+ (lshiftrt:TI
-+ (unspec:TI [(zero_extend:TI (match_operand:DI 1 "arith_operand" "%r,0"))
-+ (zero_extend:TI (match_operand:DI 2 "arith_operand" "rI,rI"))]
-+ UNSPEC_XMUL)
-+ (const_int 64))))
-+ (clobber (match_scratch:SI 3 "=&h,X"))
-+ (clobber (match_scratch:SI 4 "=&h,X"))]
-+ "TARGET_VIS3 && TARGET_ARCH32"
-+{
-+ return output_v8plus_mult (insn, operands, \"xmulxhi\");
-+}
-+ [(set_attr "type" "imul")
-+ (set_attr "length" "9,8")])
-+
-+(define_expand "divsi3"
-+ [(parallel [(set (match_operand:SI 0 "register_operand" "")
-+ (div:SI (match_operand:SI 1 "register_operand" "")
-+ (match_operand:SI 2 "input_operand" "")))
-+ (clobber (match_scratch:SI 3 ""))])]
-+ "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
-+{
-+ if (TARGET_ARCH64)
-+ {
-+ operands[3] = gen_reg_rtx(SImode);
-+ emit_insn (gen_ashrsi3 (operands[3], operands[1], GEN_INT (31)));
-+ emit_insn (gen_divsi3_sp64 (operands[0], operands[1], operands[2],
-+ operands[3]));
-+ DONE;
-+ }
-+})
-+
-+;; The V8 architecture specifies that there must be at least 3 instructions
-+;; between a write to the Y register and a use of it for correct results.
-+;; We try to fill one of them with a simple constant or a memory load.
-+
-+(define_insn "divsi3_sp32"
-+ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
-+ (div:SI (match_operand:SI 1 "register_operand" "r,r,r")
-+ (match_operand:SI 2 "input_operand" "rI,K,m")))
-+ (clobber (match_scratch:SI 3 "=&r,&r,&r"))]
-+ "(TARGET_V8 || TARGET_DEPRECATED_V8_INSNS) && TARGET_ARCH32"
-+{
-+ output_asm_insn ("sra\t%1, 31, %3", operands);
-+ output_asm_insn ("wr\t%3, 0, %%y", operands);
-+
-+ switch (which_alternative)
-+ {
-+ case 0:
-+ if (TARGET_V9)
-+ return "sdiv\t%1, %2, %0";
-+ else
-+ return "nop\n\tnop\n\tnop\n\tsdiv\t%1, %2, %0";
-+ case 1:
-+ if (TARGET_V9)
-+ return "sethi\t%%hi(%a2), %3\n\tsdiv\t%1, %3, %0";
-+ else
-+ return "sethi\t%%hi(%a2), %3\n\tnop\n\tnop\n\tsdiv\t%1, %3, %0";
-+ case 2:
-+ if (TARGET_V9)
-+ return "ld\t%2, %3\n\tsdiv\t%1, %3, %0";
-+ else
-+ return "ld\t%2, %3\n\tnop\n\tnop\n\tsdiv\t%1, %3, %0";
-+ default:
-+ gcc_unreachable ();
-+ }
-+}
-+ [(set_attr "type" "multi")
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "v9")
-+ (const_int 4) (const_int 6)))])
-+
-+(define_insn "divsi3_sp64"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (div:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "input_operand" "rI")))
-+ (use (match_operand:SI 3 "register_operand" "r"))]
-+ "TARGET_DEPRECATED_V8_INSNS && TARGET_ARCH64"
-+ "wr\t%%g0, %3, %%y\n\tsdiv\t%1, %2, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "divdi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (div:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "sdivx\t%1, %2, %0"
-+ [(set_attr "type" "idiv")])
-+
-+(define_insn "*cmp_sdiv_cc_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (div:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (div:SI (match_dup 1) (match_dup 2)))
-+ (clobber (match_scratch:SI 3 "=&r"))]
-+ "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
-+{
-+ output_asm_insn ("sra\t%1, 31, %3", operands);
-+ output_asm_insn ("wr\t%3, 0, %%y", operands);
-+
-+ if (TARGET_V9)
-+ return "sdivcc\t%1, %2, %0";
-+ else
-+ return "nop\n\tnop\n\tnop\n\tsdivcc\t%1, %2, %0";
-+}
-+ [(set_attr "type" "multi")
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "v9")
-+ (const_int 3) (const_int 6)))])
-+
-+(define_expand "udivsi3"
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (udiv:SI (match_operand:SI 1 "nonimmediate_operand" "")
-+ (match_operand:SI 2 "input_operand" "")))]
-+ "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
-+ "")
-+
-+;; The V8 architecture specifies that there must be at least 3 instructions
-+;; between a write to the Y register and a use of it for correct results.
-+;; We try to fill one of them with a simple constant or a memory load.
-+
-+(define_insn "udivsi3_sp32"
-+ [(set (match_operand:SI 0 "register_operand" "=r,&r,&r,&r")
-+ (udiv:SI (match_operand:SI 1 "nonimmediate_operand" "r,r,r,m")
-+ (match_operand:SI 2 "input_operand" "rI,K,m,r")))]
-+ "(TARGET_V8 || TARGET_DEPRECATED_V8_INSNS) && TARGET_ARCH32"
-+{
-+ output_asm_insn ("wr\t%%g0, 0, %%y", operands);
-+
-+ switch (which_alternative)
-+ {
-+ case 0:
-+ if (TARGET_V9)
-+ return "udiv\t%1, %2, %0";
-+ else
-+ return "nop\n\tnop\n\tnop\n\tudiv\t%1, %2, %0";
-+ case 1:
-+ if (TARGET_V9)
-+ return "sethi\t%%hi(%a2), %0\n\tudiv\t%1, %0, %0";
-+ else
-+ return "sethi\t%%hi(%a2), %0\n\tnop\n\tnop\n\tudiv\t%1, %0, %0";
-+ case 2:
-+ if (TARGET_V9)
-+ return "ld\t%2, %0\n\tudiv\t%1, %0, %0";
-+ else
-+ return "ld\t%2, %0\n\tnop\n\tnop\n\tudiv\t%1, %0, %0";
-+ case 3:
-+ if (TARGET_V9)
-+ return "ld\t%1, %0\n\tudiv\t%0, %2, %0";
-+ else
-+ return "ld\t%1, %0\n\tnop\n\tnop\n\tudiv\t%0, %2, %0";
-+ default:
-+ gcc_unreachable ();
-+ }
-+}
-+ [(set_attr "type" "multi")
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "v9")
-+ (const_int 3) (const_int 5)))])
-+
-+(define_insn "udivsi3_sp64"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (udiv:SI (match_operand:SI 1 "nonimmediate_operand" "r")
-+ (match_operand:SI 2 "input_operand" "rI")))]
-+ "TARGET_DEPRECATED_V8_INSNS && TARGET_ARCH64"
-+ "wr\t%%g0, 0, %%y\n\tudiv\t%1, %2, %0"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_insn "udivdi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (udiv:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "udivx\t%1, %2, %0"
-+ [(set_attr "type" "idiv")])
-+
-+(define_insn "*cmp_udiv_cc_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (udiv:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (udiv:SI (match_dup 1) (match_dup 2)))]
-+ "TARGET_V8 || TARGET_DEPRECATED_V8_INSNS"
-+{
-+ output_asm_insn ("wr\t%%g0, 0, %%y", operands);
-+
-+ if (TARGET_V9)
-+ return "udivcc\t%1, %2, %0";
-+ else
-+ return "nop\n\tnop\n\tnop\n\tudivcc\t%1, %2, %0";
-+}
-+ [(set_attr "type" "multi")
-+ (set (attr "length")
-+ (if_then_else (eq_attr "isa" "v9")
-+ (const_int 2) (const_int 5)))])
-+
-+
-+;; SPARClet multiply/accumulate insns
-+
-+(define_insn "*smacsi"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI"))
-+ (match_operand:SI 3 "register_operand" "0")))]
-+ "TARGET_SPARCLET"
-+ "smac\t%1, %2, %0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "*smacdi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (mult:DI (sign_extend:DI
-+ (match_operand:SI 1 "register_operand" "%r"))
-+ (sign_extend:DI
-+ (match_operand:SI 2 "register_operand" "r")))
-+ (match_operand:DI 3 "register_operand" "0")))]
-+ "TARGET_SPARCLET"
-+ "smacd\t%1, %2, %L0"
-+ [(set_attr "type" "imul")])
-+
-+(define_insn "*umacdi"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (mult:DI (zero_extend:DI
-+ (match_operand:SI 1 "register_operand" "%r"))
-+ (zero_extend:DI
-+ (match_operand:SI 2 "register_operand" "r")))
-+ (match_operand:DI 3 "register_operand" "0")))]
-+ "TARGET_SPARCLET"
-+ "umacd\t%1, %2, %L0"
-+ [(set_attr "type" "imul")])
-+
-+
-+;; Boolean instructions.
-+
-+(define_insn "anddi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (and:DI (match_operand:DI 1 "arith_operand" "%r")
-+ (match_operand:DI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "and\t%1, %2, %0")
-+
-+(define_insn "andsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (and:SI (match_operand:SI 1 "arith_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ ""
-+ "and\t%1, %2, %0")
-+
-+(define_split
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (and:SI (match_operand:SI 1 "register_operand" "")
-+ (match_operand:SI 2 "const_compl_high_operand" "")))
-+ (clobber (match_operand:SI 3 "register_operand" ""))]
-+ ""
-+ [(set (match_dup 3) (match_dup 4))
-+ (set (match_dup 0) (and:SI (not:SI (match_dup 3)) (match_dup 1)))]
-+{
-+ operands[4] = GEN_INT (~INTVAL (operands[2]));
-+})
-+
-+(define_insn "*and_not_di_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (and:DI (not:DI (match_operand:DI 1 "register_operand" "%r"))
-+ (match_operand:DI 2 "register_operand" "r")))]
-+ "TARGET_ARCH64"
-+ "andn\t%2, %1, %0")
-+
-+(define_insn "*and_not_si"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (and:SI (not:SI (match_operand:SI 1 "register_operand" "%r"))
-+ (match_operand:SI 2 "register_operand" "r")))]
-+ ""
-+ "andn\t%2, %1, %0")
-+
-+(define_insn "iordi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ior:DI (match_operand:DI 1 "arith_operand" "%r")
-+ (match_operand:DI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "or\t%1, %2, %0")
-+
-+(define_insn "iorsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (ior:SI (match_operand:SI 1 "arith_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ ""
-+ "or\t%1, %2, %0")
-+
-+(define_split
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (ior:SI (match_operand:SI 1 "register_operand" "")
-+ (match_operand:SI 2 "const_compl_high_operand" "")))
-+ (clobber (match_operand:SI 3 "register_operand" ""))]
-+ ""
-+ [(set (match_dup 3) (match_dup 4))
-+ (set (match_dup 0) (ior:SI (not:SI (match_dup 3)) (match_dup 1)))]
-+{
-+ operands[4] = gen_int_mode (~INTVAL (operands[2]), SImode);
-+})
-+
-+(define_insn "*or_not_di_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ior:DI (not:DI (match_operand:DI 1 "register_operand" "r"))
-+ (match_operand:DI 2 "register_operand" "r")))]
-+ "TARGET_ARCH64"
-+ "orn\t%2, %1, %0")
-+
-+(define_insn "*or_not_si"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (ior:SI (not:SI (match_operand:SI 1 "register_operand" "r"))
-+ (match_operand:SI 2 "register_operand" "r")))]
-+ ""
-+ "orn\t%2, %1, %0")
-+
-+(define_insn "xordi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (xor:DI (match_operand:DI 1 "arith_operand" "%rJ")
-+ (match_operand:DI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "xor\t%r1, %2, %0")
-+
-+(define_insn "xorsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (xor:SI (match_operand:SI 1 "arith_operand" "%rJ")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ ""
-+ "xor\t%r1, %2, %0")
-+
-+(define_split
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (xor:SI (match_operand:SI 1 "register_operand" "")
-+ (match_operand:SI 2 "const_compl_high_operand" "")))
-+ (clobber (match_operand:SI 3 "register_operand" ""))]
-+ ""
-+ [(set (match_dup 3) (match_dup 4))
-+ (set (match_dup 0) (not:SI (xor:SI (match_dup 3) (match_dup 1))))]
-+{
-+ operands[4] = gen_int_mode (~INTVAL (operands[2]), SImode);
-+})
-+
-+(define_split
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (not:SI (xor:SI (match_operand:SI 1 "register_operand" "")
-+ (match_operand:SI 2 "const_compl_high_operand" ""))))
-+ (clobber (match_operand:SI 3 "register_operand" ""))]
-+ ""
-+ [(set (match_dup 3) (match_dup 4))
-+ (set (match_dup 0) (xor:SI (match_dup 3) (match_dup 1)))]
-+{
-+ operands[4] = gen_int_mode (~INTVAL (operands[2]), SImode);
-+})
-+
-+(define_insn "*xor_not_di_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (not:DI (xor:DI (match_operand:DI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 2 "arith_operand" "rI"))))]
-+ "TARGET_ARCH64"
-+ "xnor\t%r1, %2, %0")
-+
-+(define_insn "*xor_not_si"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (not:SI (xor:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "arith_operand" "rI"))))]
-+ ""
-+ "xnor\t%r1, %2, %0")
-+
-+;; These correspond to the above in the case where we also (or only)
-+;; want to set the condition code.
-+
-+(define_insn "*cmp_cc_arith_op"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operator:SI 2 "cc_arith_operator"
-+ [(match_operand:SI 0 "arith_operand" "%r")
-+ (match_operand:SI 1 "arith_operand" "rI")])
-+ (const_int 0)))]
-+ ""
-+ "%A2cc\t%0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_arith_op"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operator:DI 2 "cc_arith_operator"
-+ [(match_operand:DI 0 "arith_operand" "%r")
-+ (match_operand:DI 1 "arith_operand" "rI")])
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "%A2cc\t%0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_arith_op_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operator:SI 3 "cc_arith_operator"
-+ [(match_operand:SI 1 "arith_operand" "%r")
-+ (match_operand:SI 2 "arith_operand" "rI")])
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (match_operator:SI 4 "cc_arith_operator"
-+ [(match_dup 1) (match_dup 2)]))]
-+ "GET_CODE (operands[3]) == GET_CODE (operands[4])"
-+ "%A3cc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_arith_op_set"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operator:DI 3 "cc_arith_operator"
-+ [(match_operand:DI 1 "arith_operand" "%r")
-+ (match_operand:DI 2 "arith_operand" "rI")])
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (match_operator:DI 4 "cc_arith_operator"
-+ [(match_dup 1) (match_dup 2)]))]
-+ "TARGET_ARCH64 && GET_CODE (operands[3]) == GET_CODE (operands[4])"
-+ "%A3cc\t%1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_xor_not"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC
-+ (not:SI (xor:SI (match_operand:SI 0 "register_or_zero_operand" "%rJ")
-+ (match_operand:SI 1 "arith_operand" "rI")))
-+ (const_int 0)))]
-+ ""
-+ "xnorcc\t%r0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_xor_not"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX
-+ (not:DI (xor:DI (match_operand:DI 0 "register_or_zero_operand" "%rJ")
-+ (match_operand:DI 1 "arith_operand" "rI")))
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "xnorcc\t%r0, %1, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_xor_not_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC
-+ (not:SI (xor:SI (match_operand:SI 1 "register_or_zero_operand" "%rJ")
-+ (match_operand:SI 2 "arith_operand" "rI")))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (not:SI (xor:SI (match_dup 1) (match_dup 2))))]
-+ ""
-+ "xnorcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_xor_not_set"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX
-+ (not:DI (xor:DI (match_operand:DI 1 "register_or_zero_operand" "%rJ")
-+ (match_operand:DI 2 "arith_operand" "rI")))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (not:DI (xor:DI (match_dup 1) (match_dup 2))))]
-+ "TARGET_ARCH64"
-+ "xnorcc\t%r1, %2, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_arith_op_not"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operator:SI 2 "cc_arith_not_operator"
-+ [(not:SI (match_operand:SI 0 "arith_operand" "rI"))
-+ (match_operand:SI 1 "register_or_zero_operand" "rJ")])
-+ (const_int 0)))]
-+ ""
-+ "%B2cc\t%r1, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_arith_op_not"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operator:DI 2 "cc_arith_not_operator"
-+ [(not:DI (match_operand:DI 0 "arith_operand" "rI"))
-+ (match_operand:DI 1 "register_or_zero_operand" "rJ")])
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "%B2cc\t%r1, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_arith_op_not_set"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (match_operator:SI 3 "cc_arith_not_operator"
-+ [(not:SI (match_operand:SI 1 "arith_operand" "rI"))
-+ (match_operand:SI 2 "register_or_zero_operand" "rJ")])
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (match_operator:SI 4 "cc_arith_not_operator"
-+ [(not:SI (match_dup 1)) (match_dup 2)]))]
-+ "GET_CODE (operands[3]) == GET_CODE (operands[4])"
-+ "%B3cc\t%r2, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_arith_op_not_set"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (match_operator:DI 3 "cc_arith_not_operator"
-+ [(not:DI (match_operand:DI 1 "arith_operand" "rI"))
-+ (match_operand:DI 2 "register_or_zero_operand" "rJ")])
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (match_operator:DI 4 "cc_arith_not_operator"
-+ [(not:DI (match_dup 1)) (match_dup 2)]))]
-+ "TARGET_ARCH64 && GET_CODE (operands[3]) == GET_CODE (operands[4])"
-+ "%B3cc\t%r2, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+;; We cannot use the "neg" pseudo insn because the Sun assembler
-+;; does not know how to make it work for constants.
-+
-+(define_expand "negdi2"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (neg:DI (match_operand:DI 1 "register_operand" "r")))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_negdi2_sp32 (operands[0], operands[1]));
-+ DONE;
-+ }
-+})
-+
-+(define_expand "unegvdi3"
-+ [(parallel [(set (reg:CCXC CC_REG)
-+ (compare:CCXC (not:DI (match_operand:DI 1 "register_operand" ""))
-+ (const_int -1)))
-+ (set (match_operand:DI 0 "register_operand" "")
-+ (neg:DI (match_dup 1)))])
-+ (set (pc)
-+ (if_then_else (ltu (reg:CCXC CC_REG) (const_int 0))
-+ (label_ref (match_operand 2 ""))
-+ (pc)))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_unegvdi3_sp32 (operands[0], operands[1]));
-+ rtx x = gen_rtx_LTU (VOIDmode, gen_rtx_REG (CCCmode, SPARC_ICC_REG),
-+ const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (x, XEXP (x, 0), XEXP (x, 1), operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_expand "negvdi3"
-+ [(parallel [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (neg:DI (match_operand:DI 1 "register_operand" ""))
-+ (unspec:DI [(match_dup 1)] UNSPEC_NEGV)))
-+ (set (match_operand:DI 0 "register_operand" "")
-+ (neg:DI (match_dup 1)))])
-+ (set (pc)
-+ (if_then_else (ne (reg:CCXV CC_REG) (const_int 0))
-+ (label_ref (match_operand 2 ""))
-+ (pc)))]
-+ ""
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_negvdi3_sp32 (operands[0], operands[1]));
-+ rtx x = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCVmode, SPARC_ICC_REG),
-+ const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (x, XEXP (x, 0), XEXP (x, 1), operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn_and_split "negdi2_sp32"
-+ [(set (match_operand:DI 0 "register_operand" "=&r")
-+ (neg:DI (match_operand:DI 1 "register_operand" "r")))
-+ (clobber (reg:CC CC_REG))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:SI (match_dup 5)) (const_int -1)))
-+ (set (match_dup 4) (neg:SI (match_dup 5)))])
-+ (set (match_dup 2) (minus:SI (minus:SI (const_int 0) (match_dup 3))
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))]
-+ "operands[2] = gen_highpart (SImode, operands[0]);
-+ operands[3] = gen_highpart (SImode, operands[1]);
-+ operands[4] = gen_lowpart (SImode, operands[0]);
-+ operands[5] = gen_lowpart (SImode, operands[1]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "unegvdi3_sp32"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:DI (match_operand:DI 1 "register_operand" "r"))
-+ (const_int -1)))
-+ (set (match_operand:DI 0 "register_operand" "=&r")
-+ (neg:DI (match_dup 1)))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:SI (match_dup 5)) (const_int -1)))
-+ (set (match_dup 4) (neg:SI (match_dup 5)))])
-+ (parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (zero_extend:DI
-+ (neg:SI (plus:SI (match_dup 3)
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))))
-+ (neg:DI (plus:DI (zero_extend:DI (match_dup 3))
-+ (ltu:DI (reg:CCC CC_REG)
-+ (const_int 0))))))
-+ (set (match_dup 2) (neg:SI (plus:SI (match_dup 3)
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))))])]
-+ "operands[2] = gen_highpart (SImode, operands[0]);
-+ operands[3] = gen_highpart (SImode, operands[1]);
-+ operands[4] = gen_lowpart (SImode, operands[0]);
-+ operands[5] = gen_lowpart (SImode, operands[1]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn_and_split "negvdi3_sp32"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (neg:DI (match_operand:DI 1 "register_operand" "r"))
-+ (unspec:DI [(match_dup 1)] UNSPEC_NEGV)))
-+ (set (match_operand:DI 0 "register_operand" "=&r")
-+ (neg:DI (match_dup 1)))]
-+ "TARGET_ARCH32"
-+ "#"
-+ "&& reload_completed"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:SI (match_dup 5)) (const_int -1)))
-+ (set (match_dup 4) (neg:SI (match_dup 5)))])
-+ (parallel [(set (reg:CCV CC_REG)
-+ (compare:CCV (neg:SI (plus:SI (match_dup 3)
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0))))
-+ (unspec:SI [(plus:SI (match_dup 3)
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))]
-+ UNSPEC_NEGV)))
-+ (set (match_dup 2) (neg:SI (plus:SI (match_dup 3)
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))))])]
-+ "operands[2] = gen_highpart (SImode, operands[0]);
-+ operands[3] = gen_highpart (SImode, operands[1]);
-+ operands[4] = gen_lowpart (SImode, operands[0]);
-+ operands[5] = gen_lowpart (SImode, operands[1]);"
-+ [(set_attr "length" "2")])
-+
-+(define_insn "*negdi2_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (neg:DI (match_operand:DI 1 "register_operand" "r")))]
-+ "TARGET_ARCH64"
-+ "sub\t%%g0, %1, %0")
-+
-+(define_insn "negsi2"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (neg:SI (match_operand:SI 1 "register_operand" "r")))]
-+ ""
-+ "sub\t%%g0, %1, %0")
-+
-+(define_expand "unegvsi3"
-+ [(parallel [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:SI (match_operand:SI 1 "register_operand" ""))
-+ (const_int -1)))
-+ (set (match_operand:SI 0 "register_operand" "")
-+ (neg:SI (match_dup 1)))])
-+ (set (pc)
-+ (if_then_else (ltu (reg:CCC CC_REG) (const_int 0))
-+ (label_ref (match_operand 2 ""))
-+ (pc)))]
-+ "")
-+
-+(define_expand "negvsi3"
-+ [(parallel [(set (reg:CCV CC_REG)
-+ (compare:CCV (neg:SI (match_operand:SI 1 "register_operand" ""))
-+ (unspec:SI [(match_dup 1)] UNSPEC_NEGV)))
-+ (set (match_operand:SI 0 "register_operand" "")
-+ (neg:SI (match_dup 1)))])
-+ (set (pc)
-+ (if_then_else (ne (reg:CCV CC_REG) (const_int 0))
-+ (label_ref (match_operand 2 ""))
-+ (pc)))]
-+"")
-+
-+(define_insn "*cmp_ccnz_neg"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (neg:SI (match_operand:SI 0 "register_operand" "r"))
-+ (const_int 0)))]
-+ ""
-+ "subcc\t%%g0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxnz_neg"
-+ [(set (reg:CCXNZ CC_REG)
-+ (compare:CCXNZ (neg:DI (match_operand:DI 0 "register_operand" "r"))
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%%g0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccnz_neg_set"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (neg:SI (match_operand:SI 1 "register_operand" "r"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (neg:SI (match_dup 1)))]
-+ ""
-+ "subcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxnz_neg_set"
-+ [(set (reg:CCXNZ CC_REG)
-+ (compare:CCXNZ (neg:DI (match_operand:DI 1 "register_operand" "r"))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (neg:DI (match_dup 1)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccc_neg_set"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (not:SI (match_operand:SI 1 "register_operand" "r"))
-+ (const_int -1)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (neg:SI (match_dup 1)))]
-+ ""
-+ "subcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxc_neg_set"
-+ [(set (reg:CCXC CC_REG)
-+ (compare:CCXC (not:DI (match_operand:DI 1 "register_operand" "r"))
-+ (const_int -1)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (neg:DI (match_dup 1)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccc_neg_sltu_set"
-+ [(set (reg:CCC CC_REG)
-+ (compare:CCC (zero_extend:DI
-+ (neg:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))))
-+ (neg:DI (plus:DI (zero_extend:DI (match_dup 1))
-+ (ltu:DI (reg:CCC CC_REG)
-+ (const_int 0))))))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (neg:SI (plus:SI (match_dup 1)
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0)))))]
-+ ""
-+ "subxcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_neg"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (neg:SI (match_operand:SI 0 "register_operand" "r"))
-+ (unspec:SI [(match_dup 0)] UNSPEC_NEGV)))]
-+ ""
-+ "subcc\t%%g0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxv_neg"
-+ [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (neg:DI (match_operand:DI 0 "register_operand" "r"))
-+ (unspec:DI [(match_dup 0)] UNSPEC_NEGV)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%%g0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_neg_set"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (neg:SI (match_operand:SI 1 "register_operand" "r"))
-+ (unspec:SI [(match_dup 1)] UNSPEC_NEGV)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (neg:SI (match_dup 1)))]
-+ ""
-+ "subcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccxv_neg_set"
-+ [(set (reg:CCXV CC_REG)
-+ (compare:CCXV (neg:DI (match_operand:DI 1 "register_operand" "r"))
-+ (unspec:DI [(match_dup 1)] UNSPEC_NEGV)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (neg:DI (match_dup 1)))]
-+ "TARGET_ARCH64"
-+ "subcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccv_neg_sltu_set"
-+ [(set (reg:CCV CC_REG)
-+ (compare:CCV (neg:SI (plus:SI (match_operand:SI 1 "register_operand" "r")
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0))))
-+ (unspec:SI [(plus:SI (match_dup 1)
-+ (ltu:SI (reg:CCC CC_REG)
-+ (const_int 0)))]
-+ UNSPEC_NEGV)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (neg:SI (plus:SI (match_dup 1)
-+ (ltu:SI (reg:CCC CC_REG) (const_int 0)))))]
-+ ""
-+ "subxcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+
-+(define_insn "one_cmpldi2"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (not:DI (match_operand:DI 1 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+ "xnor\t%%g0, %1, %0")
-+
-+(define_insn "one_cmplsi2"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (not:SI (match_operand:SI 1 "arith_operand" "rI")))]
-+ ""
-+ "xnor\t%%g0, %1, %0")
-+
-+(define_insn "*cmp_cc_not"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (not:SI (match_operand:SI 0 "arith_operand" "rI"))
-+ (const_int 0)))]
-+ ""
-+ "xnorcc\t%%g0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_not"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (not:DI (match_operand:DI 0 "arith_operand" "rI"))
-+ (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "xnorcc\t%%g0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_set_not"
-+ [(set (reg:CC CC_REG)
-+ (compare:CC (not:SI (match_operand:SI 1 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (not:SI (match_dup 1)))]
-+ ""
-+ "xnorcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_set_not"
-+ [(set (reg:CCX CC_REG)
-+ (compare:CCX (not:DI (match_operand:DI 1 "arith_operand" "rI"))
-+ (const_int 0)))
-+ (set (match_operand:DI 0 "register_operand" "=r")
-+ (not:DI (match_dup 1)))]
-+ "TARGET_ARCH64"
-+ "xnorcc\t%%g0, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_cc_set"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (match_operand:SI 1 "register_operand" "r"))
-+ (set (reg:CC CC_REG)
-+ (compare:CC (match_dup 1) (const_int 0)))]
-+ ""
-+ "orcc\t%1, 0, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccx_set64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (match_operand:DI 1 "register_operand" "r"))
-+ (set (reg:CCX CC_REG)
-+ (compare:CCX (match_dup 1) (const_int 0)))]
-+ "TARGET_ARCH64"
-+ "orcc\t%1, 0, %0"
-+ [(set_attr "type" "compare")])
-+
-+
-+;; Floating point arithmetic instructions.
-+
-+(define_expand "addtf3"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (plus:TF (match_operand:TF 1 "general_operand" "")
-+ (match_operand:TF 2 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_binop (PLUS, operands); DONE;")
-+
-+(define_insn "*addtf3_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (plus:TF (match_operand:TF 1 "register_operand" "e")
-+ (match_operand:TF 2 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "faddq\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "adddf3"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (plus:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU"
-+ "faddd\t%1, %2, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "addsf3"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (plus:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fadds\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "subtf3"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (minus:TF (match_operand:TF 1 "general_operand" "")
-+ (match_operand:TF 2 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_binop (MINUS, operands); DONE;")
-+
-+(define_insn "*subtf3_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (minus:TF (match_operand:TF 1 "register_operand" "e")
-+ (match_operand:TF 2 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fsubq\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "subdf3"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (minus:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU"
-+ "fsubd\t%1, %2, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "subsf3"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (minus:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fsubs\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_expand "multf3"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (mult:TF (match_operand:TF 1 "general_operand" "")
-+ (match_operand:TF 2 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_binop (MULT, operands); DONE;")
-+
-+(define_insn "*multf3_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (mult:TF (match_operand:TF 1 "register_operand" "e")
-+ (match_operand:TF 2 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fmulq\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "muldf3"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (mult:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU"
-+ "fmuld\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "mulsf3"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (mult:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fmuls\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "fmadf4"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (fma:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")
-+ (match_operand:DF 3 "register_operand" "e")))]
-+ "TARGET_FMAF"
-+ "fmaddd\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "fmsdf4"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (fma:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")
-+ (neg:DF (match_operand:DF 3 "register_operand" "e"))))]
-+ "TARGET_FMAF"
-+ "fmsubd\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "*nfmadf4"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (neg:DF (fma:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")
-+ (match_operand:DF 3 "register_operand" "e"))))]
-+ "TARGET_FMAF"
-+ "fnmaddd\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "*nfmsdf4"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (neg:DF (fma:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")
-+ (neg:DF (match_operand:DF 3 "register_operand" "e")))))]
-+ "TARGET_FMAF"
-+ "fnmsubd\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "fmasf4"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (fma:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")
-+ (match_operand:SF 3 "register_operand" "f")))]
-+ "TARGET_FMAF"
-+ "fmadds\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "fmssf4"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (fma:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")
-+ (neg:SF (match_operand:SF 3 "register_operand" "f"))))]
-+ "TARGET_FMAF"
-+ "fmsubs\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "*nfmasf4"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (neg:SF (fma:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")
-+ (match_operand:SF 3 "register_operand" "f"))))]
-+ "TARGET_FMAF"
-+ "fnmadds\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "*nfmssf4"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (neg:SF (fma:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")
-+ (neg:SF (match_operand:SF 3 "register_operand" "f")))))]
-+ "TARGET_FMAF"
-+ "fnmsubs\t%1, %2, %3, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "*muldf3_extend"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (mult:DF (float_extend:DF (match_operand:SF 1 "register_operand" "f"))
-+ (float_extend:DF (match_operand:SF 2 "register_operand" "f"))))]
-+ "TARGET_FSMULD"
-+ "fsmuld\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*multf3_extend"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (mult:TF (float_extend:TF (match_operand:DF 1 "register_operand" "e"))
-+ (float_extend:TF (match_operand:DF 2 "register_operand" "e"))))]
-+ "(TARGET_V8 || TARGET_V9) && TARGET_FPU && TARGET_HARD_QUAD"
-+ "fdmulq\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_expand "divtf3"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (div:TF (match_operand:TF 1 "general_operand" "")
-+ (match_operand:TF 2 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_binop (DIV, operands); DONE;")
-+
-+;; don't have timing for quad-prec. divide.
-+(define_insn "*divtf3_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (div:TF (match_operand:TF 1 "register_operand" "e")
-+ (match_operand:TF 2 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fdivq\t%1, %2, %0"
-+ [(set_attr "type" "fpdivs")])
-+
-+(define_expand "divdf3"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (div:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU"
-+ "")
-+
-+(define_insn "*divdf3_nofix"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (div:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU && !sparc_fix_ut699"
-+ "fdivd\t%1, %2, %0"
-+ [(set_attr "type" "fpdivd")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*divdf3_fix"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (div:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_FPU && sparc_fix_ut699"
-+ "fdivd\t%1, %2, %0\n\tstd\t%0, [%%sp-8]\n\tnop"
-+ [(set_attr "type" "fpdivd")
-+ (set_attr "fptype" "double")
-+ (set_attr "length" "3")])
-+
-+(define_insn "divsf3"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (div:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_FPU && !sparc_fix_ut699"
-+ "fdivs\t%1, %2, %0"
-+ [(set_attr "type" "fpdivs")])
-+
-+(define_expand "negtf2"
-+ [(set (match_operand:TF 0 "register_operand" "")
-+ (neg:TF (match_operand:TF 1 "register_operand" "")))]
-+ "TARGET_FPU"
-+ "")
-+
-+(define_insn "*negtf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (neg:TF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fnegq\t%1, %0"
-+ [(set_attr "type" "fpmove")])
-+
-+(define_insn_and_split "*negtf2"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (neg:TF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && !TARGET_HARD_QUAD"
-+ "#"
-+ "&& reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_src = operands[1];
-+ rtx dest1, dest2;
-+ rtx src1, src2;
-+
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+ src1 = gen_df_reg (set_src, 0);
-+ src2 = gen_df_reg (set_src, 1);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_insn (gen_movdf (dest2, src2));
-+ emit_insn (gen_negdf2 (dest1, src1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_negdf2 (dest1, src1));
-+ if (REGNO (dest2) != REGNO (src2))
-+ emit_insn (gen_movdf (dest2, src2));
-+ }
-+ DONE;
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_expand "negdf2"
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (neg:DF (match_operand:DF 1 "register_operand" "")))]
-+ "TARGET_FPU"
-+ "")
-+
-+(define_insn_and_split "*negdf2_notv9"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (neg:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && !TARGET_V9"
-+ "#"
-+ "&& reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_src = operands[1];
-+ rtx dest1, dest2;
-+ rtx src1, src2;
-+
-+ dest1 = gen_highpart (SFmode, set_dest);
-+ dest2 = gen_lowpart (SFmode, set_dest);
-+ src1 = gen_highpart (SFmode, set_src);
-+ src2 = gen_lowpart (SFmode, set_src);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_insn (gen_movsf (dest2, src2));
-+ emit_insn (gen_negsf2 (dest1, src1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_negsf2 (dest1, src1));
-+ if (REGNO (dest2) != REGNO (src2))
-+ emit_insn (gen_movsf (dest2, src2));
-+ }
-+ DONE;
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn "*negdf2_v9"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (neg:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_V9"
-+ "fnegd\t%1, %0"
-+ [(set_attr "type" "fpmove")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "negsf2"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (neg:SF (match_operand:SF 1 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fnegs\t%1, %0"
-+ [(set_attr "type" "fpmove")])
-+
-+(define_expand "abstf2"
-+ [(set (match_operand:TF 0 "register_operand" "")
-+ (abs:TF (match_operand:TF 1 "register_operand" "")))]
-+ "TARGET_FPU"
-+ "")
-+
-+(define_insn "*abstf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (abs:TF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fabsq\t%1, %0"
-+ [(set_attr "type" "fpmove")])
-+
-+(define_insn_and_split "*abstf2"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (abs:TF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && !TARGET_HARD_QUAD"
-+ "#"
-+ "&& reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_src = operands[1];
-+ rtx dest1, dest2;
-+ rtx src1, src2;
-+
-+ dest1 = gen_df_reg (set_dest, 0);
-+ dest2 = gen_df_reg (set_dest, 1);
-+ src1 = gen_df_reg (set_src, 0);
-+ src2 = gen_df_reg (set_src, 1);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_insn (gen_movdf (dest2, src2));
-+ emit_insn (gen_absdf2 (dest1, src1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_absdf2 (dest1, src1));
-+ if (REGNO (dest2) != REGNO (src2))
-+ emit_insn (gen_movdf (dest2, src2));
-+ }
-+ DONE;
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_expand "absdf2"
-+ [(set (match_operand:DF 0 "register_operand" "")
-+ (abs:DF (match_operand:DF 1 "register_operand" "")))]
-+ "TARGET_FPU"
-+ "")
-+
-+(define_insn_and_split "*absdf2_notv9"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (abs:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && !TARGET_V9"
-+ "#"
-+ "&& reload_completed"
-+ [(clobber (const_int 0))]
-+{
-+ rtx set_dest = operands[0];
-+ rtx set_src = operands[1];
-+ rtx dest1, dest2;
-+ rtx src1, src2;
-+
-+ dest1 = gen_highpart (SFmode, set_dest);
-+ dest2 = gen_lowpart (SFmode, set_dest);
-+ src1 = gen_highpart (SFmode, set_src);
-+ src2 = gen_lowpart (SFmode, set_src);
-+
-+ /* Now emit using the real source and destination we found, swapping
-+ the order if we detect overlap. */
-+ if (reg_overlap_mentioned_p (dest1, src2))
-+ {
-+ emit_insn (gen_movsf (dest2, src2));
-+ emit_insn (gen_abssf2 (dest1, src1));
-+ }
-+ else
-+ {
-+ emit_insn (gen_abssf2 (dest1, src1));
-+ if (REGNO (dest2) != REGNO (src2))
-+ emit_insn (gen_movsf (dest2, src2));
-+ }
-+ DONE;
-+}
-+ [(set_attr "length" "2")])
-+
-+(define_insn "*absdf2_v9"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (abs:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_V9"
-+ "fabsd\t%1, %0"
-+ [(set_attr "type" "fpmove")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "abssf2"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (abs:SF (match_operand:SF 1 "register_operand" "f")))]
-+ "TARGET_FPU"
-+ "fabss\t%1, %0"
-+ [(set_attr "type" "fpmove")])
-+
-+(define_expand "sqrttf2"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "")
-+ (sqrt:TF (match_operand:TF 1 "general_operand" "")))]
-+ "TARGET_FPU && (TARGET_HARD_QUAD || TARGET_ARCH64)"
-+ "emit_tfmode_unop (SQRT, operands); DONE;")
-+
-+(define_insn "*sqrttf2_hq"
-+ [(set (match_operand:TF 0 "register_operand" "=e")
-+ (sqrt:TF (match_operand:TF 1 "register_operand" "e")))]
-+ "TARGET_FPU && TARGET_HARD_QUAD"
-+ "fsqrtq\t%1, %0"
-+ [(set_attr "type" "fpsqrts")])
-+
-+(define_expand "sqrtdf2"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU"
-+ "")
-+
-+(define_insn "*sqrtdf2_nofix"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && !sparc_fix_ut699"
-+ "fsqrtd\t%1, %0"
-+ [(set_attr "type" "fpsqrtd")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*sqrtdf2_fix"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (sqrt:DF (match_operand:DF 1 "register_operand" "e")))]
-+ "TARGET_FPU && sparc_fix_ut699"
-+ "fsqrtd\t%1, %0\n\tstd\t%0, [%%sp-8]\n\tnop"
-+ [(set_attr "type" "fpsqrtd")
-+ (set_attr "fptype" "double")
-+ (set_attr "length" "3")])
-+
-+(define_insn "sqrtsf2"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (sqrt:SF (match_operand:SF 1 "register_operand" "f")))]
-+ "TARGET_FPU && !sparc_fix_ut699"
-+ "fsqrts\t%1, %0"
-+ [(set_attr "type" "fpsqrts")])
-+
-+
-+;; Arithmetic shift instructions.
-+
-+(define_insn "ashlsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (ashift:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ ""
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+ return "sll\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_expand "ashldi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ashift:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64 || TARGET_V8PLUS"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ FAIL;
-+ emit_insn (gen_ashldi3_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*ashldi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ashift:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
-+ return "sllx\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn "ashldi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=&h,&h,r")
-+ (ashift:DI (match_operand:DI 1 "arith_operand" "rI,0,rI")
-+ (match_operand:SI 2 "arith_operand" "rI,rI,rI")))
-+ (clobber (match_scratch:SI 3 "=X,X,&h"))]
-+ "TARGET_V8PLUS"
-+{
-+ return output_v8plus_shift (insn ,operands, \"sllx\");
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "5,5,6")])
-+
-+(define_insn "*cmp_ccnz_ashift_1"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (ashift:SI (match_operand:SI 0 "register_operand" "r")
-+ (const_int 1))
-+ (const_int 0)))]
-+ ""
-+ "addcc\t%0, %0, %%g0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "*cmp_ccnz_set_ashift_1"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (ashift:SI (match_operand:SI 1 "register_operand" "r")
-+ (const_int 1))
-+ (const_int 0)))
-+ (set (match_operand:SI 0 "register_operand" "=r")
-+ (ashift:SI (match_dup 1) (const_int 1)))]
-+ ""
-+ "addcc\t%1, %1, %0"
-+ [(set_attr "type" "compare")])
-+
-+(define_insn "ashrsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (ashiftrt:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ ""
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+ return "sra\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn "*ashrsi3_extend0"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI (ashiftrt:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI"))))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+ return "sra\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+;; This handles the case where
-+;; (sign_extend:DI (ashiftrt:SI (match_operand:SI) (match_operand:SI)))
-+;; but combiner "simplifies" it for us.
-+(define_insn "*ashrsi3_extend1"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ashiftrt:DI (ashift:DI (subreg:DI (match_operand:SI 1 "register_operand" "r") 0)
-+ (const_int 32))
-+ (match_operand:SI 2 "small_int_operand" "I")))]
-+ "TARGET_ARCH64 && INTVAL (operands[2]) >= 32 && INTVAL (operands[2]) < 64"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) - 32);
-+ return "sra\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+;; This handles the case where
-+;; (ashiftrt:DI (sign_extend:DI (match_operand:SI)) (const_int))
-+;; but combiner "simplifies" it for us.
-+(define_insn "*ashrsi3_extend2"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extract:DI (subreg:DI (match_operand:SI 1 "register_operand" "r") 0)
-+ (match_operand 2 "small_int_operand" "I")
-+ (const_int 32)))]
-+ "TARGET_ARCH64 && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 32"
-+{
-+ operands[2] = GEN_INT (32 - INTVAL (operands[2]));
-+ return "sra\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_expand "ashrdi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ashiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64 || TARGET_V8PLUS"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ FAIL; /* prefer generic code in this case */
-+ emit_insn (gen_ashrdi3_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*ashrdi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (ashiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
-+ return "srax\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn "ashrdi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=&h,&h,r")
-+ (ashiftrt:DI (match_operand:DI 1 "arith_operand" "rI,0,rI")
-+ (match_operand:SI 2 "arith_operand" "rI,rI,rI")))
-+ (clobber (match_scratch:SI 3 "=X,X,&h"))]
-+ "TARGET_V8PLUS"
-+{
-+ return output_v8plus_shift (insn, operands, \"srax\");
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "5,5,6")])
-+
-+(define_insn "lshrsi3"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ ""
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+ return "srl\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn "*lshrsi3_extend0"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI
-+ (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI"))))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+ return "srl\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+;; This handles the case where
-+;; (zero_extend:DI (lshiftrt:SI (match_operand:SI) (match_operand:SI)))
-+;; but combiner "simplifies" it for us.
-+(define_insn "*lshrsi3_extend1"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (and:DI (subreg:DI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")) 0)
-+ (match_operand 3 "const_int_operand" "")))]
-+ "TARGET_ARCH64 && (unsigned HOST_WIDE_INT) INTVAL (operands[3]) == 0xffffffff"
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
-+ return "srl\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+;; This handles the case where
-+;; (lshiftrt:DI (zero_extend:DI (match_operand:SI)) (const_int))
-+;; but combiner "simplifies" it for us.
-+(define_insn "*lshrsi3_extend2"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extract:DI (subreg:DI (match_operand:SI 1 "register_operand" "r") 0)
-+ (match_operand 2 "small_int_operand" "I")
-+ (const_int 32)))]
-+ "TARGET_ARCH64 && INTVAL (operands[2]) > 0 && INTVAL (operands[2]) <= 32"
-+{
-+ operands[2] = GEN_INT (32 - INTVAL (operands[2]));
-+ return "srl\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_expand "lshrdi3"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lshiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64 || TARGET_V8PLUS"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ FAIL;
-+ emit_insn (gen_lshrdi3_v8plus (operands[0], operands[1], operands[2]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*lshrdi3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (lshiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "arith_operand" "rI")))]
-+ "TARGET_ARCH64"
-+{
-+ if (GET_CODE (operands[2]) == CONST_INT)
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
-+ return "srlx\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn "lshrdi3_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=&h,&h,r")
-+ (lshiftrt:DI (match_operand:DI 1 "arith_operand" "rI,0,rI")
-+ (match_operand:SI 2 "arith_operand" "rI,rI,rI")))
-+ (clobber (match_scratch:SI 3 "=X,X,&h"))]
-+ "TARGET_V8PLUS"
-+{
-+ return output_v8plus_shift (insn, operands, \"srlx\");
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "5,5,6")])
-+
-+(define_insn ""
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (ashiftrt:SI (subreg:SI (lshiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (const_int 32)) 4)
-+ (match_operand:SI 2 "small_int_operand" "I")))]
-+ "TARGET_ARCH64 && (unsigned HOST_WIDE_INT) INTVAL (operands[2]) < 32"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) + 32);
-+ return "srax\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn ""
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (lshiftrt:SI (subreg:SI (ashiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (const_int 32)) 4)
-+ (match_operand:SI 2 "small_int_operand" "I")))]
-+ "TARGET_ARCH64 && (unsigned HOST_WIDE_INT) INTVAL (operands[2]) < 32"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) + 32);
-+ return "srlx\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn ""
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (ashiftrt:SI (subreg:SI (ashiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "small_int_operand" "I")) 4)
-+ (match_operand:SI 3 "small_int_operand" "I")))]
-+ "TARGET_ARCH64
-+ && (unsigned HOST_WIDE_INT) INTVAL (operands[2]) >= 32
-+ && (unsigned HOST_WIDE_INT) INTVAL (operands[3]) < 32
-+ && (unsigned HOST_WIDE_INT) (INTVAL (operands[2]) + INTVAL (operands[3])) < 64"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) + INTVAL (operands[3]));
-+
-+ return "srax\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+(define_insn ""
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (lshiftrt:SI (subreg:SI (lshiftrt:DI (match_operand:DI 1 "register_operand" "r")
-+ (match_operand:SI 2 "small_int_operand" "I")) 4)
-+ (match_operand:SI 3 "small_int_operand" "I")))]
-+ "TARGET_ARCH64
-+ && (unsigned HOST_WIDE_INT) INTVAL (operands[2]) >= 32
-+ && (unsigned HOST_WIDE_INT) INTVAL (operands[3]) < 32
-+ && (unsigned HOST_WIDE_INT) (INTVAL (operands[2]) + INTVAL (operands[3])) < 64"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) + INTVAL (operands[3]));
-+
-+ return "srlx\t%1, %2, %0";
-+}
-+ [(set_attr "type" "shift")])
-+
-+
-+;; Unconditional and other jump instructions.
-+
-+(define_expand "jump"
-+ [(set (pc) (label_ref (match_operand 0 "" "")))]
-+ "")
-+
-+(define_insn "*jump_ubranch"
-+ [(set (pc) (label_ref (match_operand 0 "" "")))]
-+ "!TARGET_CBCOND"
-+{
-+ return output_ubranch (operands[0], insn);
-+}
-+ [(set_attr "type" "uncond_branch")])
-+
-+(define_insn "*jump_cbcond"
-+ [(set (pc) (label_ref (match_operand 0 "" "")))]
-+ "TARGET_CBCOND"
-+{
-+ return output_ubranch (operands[0], insn);
-+}
-+ [(set_attr "type" "uncond_cbcond")])
-+
-+(define_expand "tablejump"
-+ [(parallel [(set (pc) (match_operand 0 "register_operand" "r"))
-+ (use (label_ref (match_operand 1 "" "")))])]
-+ ""
-+{
-+ gcc_assert (GET_MODE (operands[0]) == CASE_VECTOR_MODE);
-+
-+ /* In pic mode, our address differences are against the base of the
-+ table. Add that base value back in; CSE ought to be able to combine
-+ the two address loads. */
-+ if (flag_pic)
-+ {
-+ rtx tmp, tmp2;
-+ tmp = gen_rtx_LABEL_REF (Pmode, operands[1]);
-+ tmp2 = operands[0];
-+ if (CASE_VECTOR_MODE != Pmode)
-+ tmp2 = gen_rtx_SIGN_EXTEND (Pmode, tmp2);
-+ tmp = gen_rtx_PLUS (Pmode, tmp2, tmp);
-+ operands[0] = memory_address (Pmode, tmp);
-+ }
-+})
-+
-+(define_insn "*tablejump<P:mode>"
-+ [(set (pc) (match_operand:P 0 "address_operand" "p"))
-+ (use (label_ref (match_operand 1 "" "")))]
-+ ""
-+ "jmp\t%a0%#"
-+ [(set_attr "type" "uncond_branch")])
-+
-+
-+;; Jump to subroutine instructions.
-+
-+(define_expand "call"
-+ ;; Note that this expression is not used for generating RTL.
-+ ;; All the RTL is generated explicitly below.
-+ [(call (match_operand 0 "call_operand" "")
-+ (match_operand 3 "" "i"))]
-+ ;; operands[2] is next_arg_register
-+ ;; operands[3] is struct_value_size_rtx.
-+ ""
-+{
-+ rtx fn_rtx;
-+
-+ gcc_assert (MEM_P (operands[0]) && GET_MODE (operands[0]) == FUNCTION_MODE);
-+
-+ gcc_assert (GET_CODE (operands[3]) == CONST_INT);
-+
-+ if (GET_CODE (XEXP (operands[0], 0)) == LABEL_REF)
-+ {
-+ /* This is really a PIC sequence. We want to represent
-+ it as a funny jump so its delay slots can be filled.
-+
-+ ??? But if this really *is* a CALL, will not it clobber the
-+ call-clobbered registers? We lose this if it is a JUMP_INSN.
-+ Why cannot we have delay slots filled if it were a CALL? */
-+
-+ /* We accept negative sizes for untyped calls. */
-+ if (TARGET_ARCH32 && INTVAL (operands[3]) != 0)
-+ emit_jump_insn
-+ (gen_rtx_PARALLEL
-+ (VOIDmode,
-+ gen_rtvec (3,
-+ gen_rtx_SET (pc_rtx, XEXP (operands[0], 0)),
-+ operands[3],
-+ gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15)))));
-+ else
-+ emit_jump_insn
-+ (gen_rtx_PARALLEL
-+ (VOIDmode,
-+ gen_rtvec (2,
-+ gen_rtx_SET (pc_rtx, XEXP (operands[0], 0)),
-+ gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15)))));
-+ goto finish_call;
-+ }
-+
-+ fn_rtx = operands[0];
-+
-+ /* We accept negative sizes for untyped calls. */
-+ if (TARGET_ARCH32 && INTVAL (operands[3]) != 0)
-+ sparc_emit_call_insn
-+ (gen_rtx_PARALLEL
-+ (VOIDmode,
-+ gen_rtvec (3, gen_rtx_CALL (VOIDmode, fn_rtx, const0_rtx),
-+ operands[3],
-+ gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15)))),
-+ XEXP (fn_rtx, 0));
-+ else
-+ sparc_emit_call_insn
-+ (gen_rtx_PARALLEL
-+ (VOIDmode,
-+ gen_rtvec (2, gen_rtx_CALL (VOIDmode, fn_rtx, const0_rtx),
-+ gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15)))),
-+ XEXP (fn_rtx, 0));
-+
-+ finish_call:
-+
-+ DONE;
-+})
-+
-+;; We can't use the same pattern for these two insns, because then registers
-+;; in the address may not be properly reloaded.
-+
-+(define_insn "*call_address<P:mode>"
-+ [(call (mem:P (match_operand:P 0 "address_operand" "p"))
-+ (match_operand 1 "" ""))
-+ (clobber (reg:P O7_REG))]
-+ ;;- Do not use operand 1 for most machines.
-+ ""
-+ "call\t%a0, %1%#"
-+ [(set_attr "type" "call")])
-+
-+(define_insn "*call_symbolic<P:mode>"
-+ [(call (mem:P (match_operand:P 0 "symbolic_operand" "s"))
-+ (match_operand 1 "" ""))
-+ (clobber (reg:P O7_REG))]
-+ ;;- Do not use operand 1 for most machines.
-+ ""
-+ "call\t%a0, %1%#"
-+ [(set_attr "type" "call")])
-+
-+;; This is a call that wants a structure value.
-+;; There is no such critter for v9 (??? we may need one anyway).
-+(define_insn "*call_address_struct_value_sp32"
-+ [(call (mem:SI (match_operand:SI 0 "address_operand" "p"))
-+ (match_operand 1 "" ""))
-+ (match_operand 2 "immediate_operand" "")
-+ (clobber (reg:SI O7_REG))]
-+ ;;- Do not use operand 1 for most machines.
-+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) > 0"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0xfff);
-+ return "call\t%a0, %1\n\t nop\n\tunimp\t%2";
-+}
-+ [(set_attr "type" "call_no_delay_slot")
-+ (set_attr "length" "3")])
-+
-+;; This is a call that wants a structure value.
-+;; There is no such critter for v9 (??? we may need one anyway).
-+(define_insn "*call_symbolic_struct_value_sp32"
-+ [(call (mem:SI (match_operand:SI 0 "symbolic_operand" "s"))
-+ (match_operand 1 "" ""))
-+ (match_operand 2 "immediate_operand" "")
-+ (clobber (reg:SI O7_REG))]
-+ ;;- Do not use operand 1 for most machines.
-+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) > 0"
-+{
-+ operands[2] = GEN_INT (INTVAL (operands[2]) & 0xfff);
-+ return "call\t%a0, %1\n\t nop\n\tunimp\t%2";
-+}
-+ [(set_attr "type" "call_no_delay_slot")
-+ (set_attr "length" "3")])
-+
-+;; This is a call that may want a structure value. This is used for
-+;; untyped_calls.
-+(define_insn "*call_address_untyped_struct_value_sp32"
-+ [(call (mem:SI (match_operand:SI 0 "address_operand" "p"))
-+ (match_operand 1 "" ""))
-+ (match_operand 2 "immediate_operand" "")
-+ (clobber (reg:SI O7_REG))]
-+ ;;- Do not use operand 1 for most machines.
-+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0"
-+ "call\t%a0, %1\n\t nop\n\tnop"
-+ [(set_attr "type" "call_no_delay_slot")
-+ (set_attr "length" "3")])
-+
-+;; This is a call that may want a structure value. This is used for
-+;; untyped_calls.
-+(define_insn "*call_symbolic_untyped_struct_value_sp32"
-+ [(call (mem:SI (match_operand:SI 0 "symbolic_operand" "s"))
-+ (match_operand 1 "" ""))
-+ (match_operand 2 "immediate_operand" "")
-+ (clobber (reg:SI O7_REG))]
-+ ;;- Do not use operand 1 for most machines.
-+ "TARGET_ARCH32 && GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0"
-+ "call\t%a0, %1\n\t nop\n\tnop"
-+ [(set_attr "type" "call_no_delay_slot")
-+ (set_attr "length" "3")])
-+
-+(define_expand "call_value"
-+ ;; Note that this expression is not used for generating RTL.
-+ ;; All the RTL is generated explicitly below.
-+ [(set (match_operand 0 "register_operand" "")
-+ (call (match_operand 1 "call_operand" "")
-+ (match_operand 4 "" "")))]
-+ ;; operand 2 is stack_size_rtx
-+ ;; operand 3 is next_arg_register
-+ ""
-+{
-+ rtx fn_rtx;
-+ rtvec vec;
-+
-+ gcc_assert (MEM_P (operands[1]) && GET_MODE (operands[1]) == FUNCTION_MODE);
-+
-+ fn_rtx = operands[1];
-+
-+ vec = gen_rtvec (2,
-+ gen_rtx_SET (operands[0],
-+ gen_rtx_CALL (VOIDmode, fn_rtx, const0_rtx)),
-+ gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 15)));
-+
-+ sparc_emit_call_insn (gen_rtx_PARALLEL (VOIDmode, vec), XEXP (fn_rtx, 0));
-+
-+ DONE;
-+})
-+
-+(define_insn "*call_value_address<P:mode>"
-+ [(set (match_operand 0 "" "")
-+ (call (mem:P (match_operand:P 1 "address_operand" "p"))
-+ (match_operand 2 "" "")))
-+ (clobber (reg:P O7_REG))]
-+ ;;- Do not use operand 2 for most machines.
-+ ""
-+ "call\t%a1, %2%#"
-+ [(set_attr "type" "call")])
-+
-+(define_insn "*call_value_symbolic<P:mode>"
-+ [(set (match_operand 0 "" "")
-+ (call (mem:P (match_operand:P 1 "symbolic_operand" "s"))
-+ (match_operand 2 "" "")))
-+ (clobber (reg:P O7_REG))]
-+ ;;- Do not use operand 2 for most machines.
-+ ""
-+ "call\t%a1, %2%#"
-+ [(set_attr "type" "call")])
-+
-+(define_expand "untyped_call"
-+ [(parallel [(call (match_operand 0 "" "")
-+ (const_int 0))
-+ (match_operand:BLK 1 "memory_operand" "")
-+ (match_operand 2 "" "")])]
-+ ""
-+{
-+ rtx valreg1 = gen_rtx_REG (DImode, 8);
-+ rtx result = operands[1];
-+
-+ /* Pass constm1 to indicate that it may expect a structure value, but
-+ we don't know what size it is. */
-+ emit_call_insn (gen_call (operands[0], const0_rtx, NULL, constm1_rtx));
-+
-+ /* Save the function value registers. */
-+ emit_move_insn (adjust_address (result, DImode, 0), valreg1);
-+ if (TARGET_FPU)
-+ {
-+ rtx valreg2 = gen_rtx_REG (TARGET_ARCH64 ? TFmode : DFmode, 32);
-+ emit_move_insn (adjust_address (result, TARGET_ARCH64 ? TFmode : DFmode, 8),
-+ valreg2);
-+ }
-+
-+ /* The optimizer does not know that the call sets the function value
-+ registers we stored in the result block. We avoid problems by
-+ claiming that all hard registers are used and clobbered at this
-+ point. */
-+ emit_insn (gen_blockage ());
-+
-+ DONE;
-+})
-+
-+
-+;; Tail call instructions.
-+
-+(define_expand "sibcall"
-+ [(parallel [(call (match_operand 0 "call_operand" "") (const_int 0))
-+ (return)])]
-+ ""
-+ "")
-+
-+(define_insn "*sibcall_symbolic<P:mode>"
-+ [(call (mem:P (match_operand:P 0 "symbolic_operand" "s"))
-+ (match_operand 1 "" ""))
-+ (return)]
-+ ""
-+{
-+ return output_sibcall (insn, operands[0]);
-+}
-+ [(set_attr "type" "sibcall")])
-+
-+(define_expand "sibcall_value"
-+ [(parallel [(set (match_operand 0 "register_operand")
-+ (call (match_operand 1 "call_operand" "") (const_int 0)))
-+ (return)])]
-+ ""
-+ "")
-+
-+(define_insn "*sibcall_value_symbolic<P:mode>"
-+ [(set (match_operand 0 "" "")
-+ (call (mem:P (match_operand:P 1 "symbolic_operand" "s"))
-+ (match_operand 2 "" "")))
-+ (return)]
-+ ""
-+{
-+ return output_sibcall (insn, operands[1]);
-+}
-+ [(set_attr "type" "sibcall")])
-+
-+
-+;; Special instructions.
-+
-+(define_expand "prologue"
-+ [(const_int 0)]
-+ ""
-+{
-+ if (TARGET_FLAT)
-+ sparc_flat_expand_prologue ();
-+ else
-+ sparc_expand_prologue ();
-+ DONE;
-+})
-+
-+;; The "register window save" insn is modelled as follows. The dwarf2
-+;; information is manually added in emit_window_save.
-+
-+(define_insn "window_save"
-+ [(unspec_volatile [(match_operand 0 "arith_operand" "rI")] UNSPECV_SAVEW)]
-+ "!TARGET_FLAT"
-+ "save\t%%sp, %0, %%sp"
-+ [(set_attr "type" "savew")])
-+
-+(define_expand "epilogue"
-+ [(return)]
-+ ""
-+{
-+ if (TARGET_FLAT)
-+ sparc_flat_expand_epilogue (false);
-+ else
-+ sparc_expand_epilogue (false);
-+})
-+
-+(define_expand "sibcall_epilogue"
-+ [(return)]
-+ ""
-+{
-+ if (TARGET_FLAT)
-+ sparc_flat_expand_epilogue (false);
-+ else
-+ sparc_expand_epilogue (false);
-+ DONE;
-+})
-+
-+(define_expand "eh_return"
-+ [(use (match_operand 0 "general_operand" ""))]
-+ ""
-+{
-+ emit_move_insn (gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM), operands[0]);
-+ emit_jump_insn (gen_eh_return_internal ());
-+ emit_barrier ();
-+ DONE;
-+})
-+
-+(define_insn_and_split "eh_return_internal"
-+ [(eh_return)]
-+ ""
-+ "#"
-+ "epilogue_completed"
-+ [(return)]
-+{
-+ if (TARGET_FLAT)
-+ sparc_flat_expand_epilogue (true);
-+ else
-+ sparc_expand_epilogue (true);
-+})
-+
-+(define_expand "return"
-+ [(return)]
-+ "sparc_can_use_return_insn_p ()"
-+{
-+ if (cfun->calls_alloca)
-+ emit_insn (gen_frame_blockage ());
-+})
-+
-+(define_insn "*return_internal"
-+ [(return)]
-+ ""
-+{
-+ return output_return (insn);
-+}
-+ [(set_attr "type" "return")
-+ (set (attr "length")
-+ (cond [(eq_attr "calls_eh_return" "true")
-+ (if_then_else (eq_attr "delayed_branch" "true")
-+ (if_then_else (ior (eq_attr "isa" "v9")
-+ (eq_attr "flat" "true"))
-+ (const_int 2)
-+ (const_int 3))
-+ (if_then_else (eq_attr "flat" "true")
-+ (const_int 3)
-+ (const_int 4)))
-+ (ior (eq_attr "leaf_function" "true") (eq_attr "flat" "true"))
-+ (if_then_else (eq_attr "empty_delay_slot" "true")
-+ (const_int 2)
-+ (const_int 1))
-+ (eq_attr "empty_delay_slot" "true")
-+ (if_then_else (eq_attr "delayed_branch" "true")
-+ (const_int 2)
-+ (const_int 3))
-+ ] (const_int 1)))])
-+
-+;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and
-+;; all of memory. This blocks insns from being moved across this point.
-+
-+(define_insn "blockage"
-+ [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)]
-+ ""
-+ ""
-+ [(set_attr "length" "0")])
-+
-+;; Do not schedule instructions accessing memory before this point.
-+
-+(define_expand "frame_blockage"
-+ [(set (match_dup 0)
-+ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))]
-+ ""
-+{
-+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
-+ MEM_VOLATILE_P (operands[0]) = 1;
-+ operands[1] = stack_pointer_rtx;
-+})
-+
-+(define_insn "*frame_blockage<P:mode>"
-+ [(set (match_operand:BLK 0 "" "")
-+ (unspec:BLK [(match_operand:P 1 "" "")] UNSPEC_FRAME_BLOCKAGE))]
-+ ""
-+ ""
-+ [(set_attr "length" "0")])
-+
-+;; We use membar #Sync for the speculation barrier on V9.
-+
-+(define_insn "speculation_barrier"
-+ [(unspec_volatile [(const_int 0)] UNSPECV_SPECULATION_BARRIER)]
-+ "TARGET_V9"
-+ "membar\t64"
-+ [(set_attr "type" "multi")])
-+
-+(define_expand "probe_stack"
-+ [(set (match_operand 0 "memory_operand" "") (const_int 0))]
-+ ""
-+{
-+ operands[0]
-+ = adjust_address (operands[0], GET_MODE (operands[0]), SPARC_STACK_BIAS);
-+})
-+
-+(define_insn "probe_stack_range<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
-+ (match_operand:P 2 "register_operand" "r")]
-+ UNSPECV_PROBE_STACK_RANGE))]
-+ ""
-+{
-+ return output_probe_stack_range (operands[0], operands[2]);
-+}
-+ [(set_attr "type" "multi")])
-+
-+;; Prepare to return any type including a structure value.
-+
-+(define_expand "untyped_return"
-+ [(match_operand:BLK 0 "memory_operand" "")
-+ (match_operand 1 "" "")]
-+ ""
-+{
-+ rtx valreg1 = gen_rtx_REG (DImode, 24);
-+ rtx result = operands[0];
-+
-+ if (TARGET_ARCH32)
-+ {
-+ rtx rtnreg = gen_rtx_REG (SImode, RETURN_ADDR_REGNUM);
-+ rtx value = gen_reg_rtx (SImode);
-+
-+ /* Fetch the instruction where we will return to and see if it's an unimp
-+ instruction (the most significant 10 bits will be zero). If so,
-+ update the return address to skip the unimp instruction. */
-+ emit_move_insn (value,
-+ gen_rtx_MEM (SImode, plus_constant (SImode, rtnreg, 8)));
-+ emit_insn (gen_lshrsi3 (value, value, GEN_INT (22)));
-+ emit_insn (gen_update_return (rtnreg, value));
-+ }
-+
-+ /* Reload the function value registers.
-+ Put USE insns before the return. */
-+ emit_move_insn (valreg1, adjust_address (result, DImode, 0));
-+ emit_use (valreg1);
-+
-+ if (TARGET_FPU)
-+ {
-+ rtx valreg2 = gen_rtx_REG (TARGET_ARCH64 ? TFmode : DFmode, 32);
-+ emit_move_insn (valreg2,
-+ adjust_address (result, TARGET_ARCH64 ? TFmode : DFmode, 8));
-+ emit_use (valreg2);
-+ }
-+
-+ /* Construct the return. */
-+ expand_naked_return ();
-+
-+ DONE;
-+})
-+
-+;; Adjust the return address conditionally. If the value of op1 is equal
-+;; to all zero then adjust the return address i.e. op0 = op0 + 4.
-+;; This is technically *half* the check required by the 32-bit SPARC
-+;; psABI. This check only ensures that an "unimp" insn was written by
-+;; the caller, but doesn't check to see if the expected size matches
-+;; (this is encoded in the 12 lower bits). This check is obsolete and
-+;; only used by the above code "untyped_return".
-+
-+(define_insn "update_return"
-+ [(unspec:SI [(match_operand:SI 0 "register_operand" "r")
-+ (match_operand:SI 1 "register_operand" "r")] UNSPEC_UPDATE_RETURN)]
-+ "TARGET_ARCH32"
-+{
-+ if (flag_delayed_branch)
-+ return "cmp\t%1, 0\n\tbe,a\t.+8\n\t add\t%0, 4, %0";
-+ else
-+ return "cmp\t%1, 0\n\tbne\t.+12\n\t nop\n\tadd\t%0, 4, %0";
-+}
-+ [(set (attr "type") (const_string "multi"))
-+ (set (attr "length")
-+ (if_then_else (eq_attr "delayed_branch" "true")
-+ (const_int 3)
-+ (const_int 4)))])
-+
-+(define_insn "nop"
-+ [(const_int 0)]
-+ ""
-+ "nop")
-+
-+(define_expand "indirect_jump"
-+ [(set (pc) (match_operand 0 "address_operand" "p"))]
-+ ""
-+ "")
-+
-+(define_insn "*branch<P:mode>"
-+ [(set (pc) (match_operand:P 0 "address_operand" "p"))]
-+ ""
-+ "jmp\t%a0%#"
-+ [(set_attr "type" "uncond_branch")])
-+
-+(define_expand "save_stack_nonlocal"
-+ [(set (match_operand 0 "memory_operand" "")
-+ (match_operand 1 "register_operand" ""))
-+ (set (match_dup 2) (match_dup 3))]
-+ ""
-+{
-+ operands[0] = adjust_address (operands[0], Pmode, 0);
-+ operands[2] = adjust_address (operands[0], Pmode, GET_MODE_SIZE (Pmode));
-+ operands[3] = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM);
-+})
-+
-+(define_expand "restore_stack_nonlocal"
-+ [(set (match_operand 0 "register_operand" "")
-+ (match_operand 1 "memory_operand" ""))]
-+ ""
-+{
-+ operands[1] = adjust_address (operands[1], Pmode, 0);
-+})
-+
-+(define_expand "nonlocal_goto"
-+ [(match_operand 0 "general_operand" "")
-+ (match_operand 1 "general_operand" "")
-+ (match_operand 2 "memory_operand" "")
-+ (match_operand 3 "memory_operand" "")]
-+ ""
-+{
-+ rtx i7 = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM);
-+ rtx r_label = operands[1];
-+ rtx r_sp = adjust_address (operands[2], Pmode, 0);
-+ rtx r_fp = operands[3];
-+ rtx r_i7 = adjust_address (operands[2], Pmode, GET_MODE_SIZE (Pmode));
-+
-+ /* We need to flush all the register windows so that their contents will
-+ be re-synchronized by the restore insn of the target function. */
-+ if (!TARGET_FLAT)
-+ emit_insn (gen_flush_register_windows ());
-+
-+ emit_clobber (gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (VOIDmode)));
-+ emit_clobber (gen_rtx_MEM (BLKmode, hard_frame_pointer_rtx));
-+
-+ r_label = copy_to_reg (r_label);
-+
-+ /* Restore the frame pointer and stack pointer. We must use a
-+ temporary since the setjmp buffer may be a local. */
-+ r_fp = copy_to_reg (r_fp);
-+ emit_stack_restore (SAVE_NONLOCAL, r_sp);
-+ r_i7 = copy_to_reg (r_i7);
-+
-+ /* Ensure the frame pointer move is not optimized. */
-+ emit_insn (gen_blockage ());
-+ emit_clobber (hard_frame_pointer_rtx);
-+ emit_move_insn (hard_frame_pointer_rtx, r_fp);
-+ emit_move_insn (i7, r_i7);
-+
-+ /* USE of hard_frame_pointer_rtx added for consistency;
-+ not clear if really needed. */
-+ emit_use (hard_frame_pointer_rtx);
-+ emit_use (stack_pointer_rtx);
-+ emit_use (i7);
-+
-+ emit_indirect_jump (r_label);
-+ DONE;
-+})
-+
-+(define_expand "builtin_setjmp_receiver"
-+ [(label_ref (match_operand 0 "" ""))]
-+ "TARGET_VXWORKS_RTP && flag_pic"
-+{
-+ load_got_register ();
-+ DONE;
-+})
-+
-+;; Special insn to flush register windows.
-+
-+(define_insn "flush_register_windows"
-+ [(unspec_volatile [(const_int 0)] UNSPECV_FLUSHW)]
-+ ""
-+{
-+ return TARGET_V9 ? "flushw" : "ta\t3";
-+}
-+ [(set_attr "type" "flushw")])
-+
-+;; Special pattern for the FLUSH instruction.
-+
-+(define_insn "flush<P:mode>"
-+ [(unspec_volatile [(match_operand:P 0 "memory_operand" "m")] UNSPECV_FLUSH)]
-+ ""
-+{
-+ return TARGET_V9 ? "flush\t%f0" : "iflush\t%f0";
-+}
-+ [(set_attr "type" "iflush")])
-+
-+;; Special insns to load and store the 32-bit FP Status Register.
-+
-+(define_insn "ldfsr"
-+ [(unspec_volatile [(match_operand:SI 0 "memory_operand" "m")] UNSPECV_LDFSR)]
-+ "TARGET_FPU"
-+ "ld\t%0, %%fsr"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_insn "stfsr"
-+ [(set (match_operand:SI 0 "memory_operand" "=m")
-+ (unspec_volatile:SI [(const_int 0)] UNSPECV_STFSR))]
-+ "TARGET_FPU"
-+ "st\t%%fsr, %0"
-+ [(set_attr "type" "store")])
-+
-+
-+;; Find first set instructions.
-+
-+(define_expand "popcountdi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (popcount:DI (match_operand:DI 1 "register_operand" "")))]
-+ "TARGET_POPC"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_popcountdi_v8plus (operands[0], operands[1]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*popcountdi_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (popcount:DI (match_operand:DI 1 "register_operand" "r")))]
-+ "TARGET_POPC && TARGET_ARCH64"
-+ "popc\t%1, %0")
-+
-+(define_insn "popcountdi_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (popcount:DI (match_operand:DI 1 "register_operand" "r")))
-+ (clobber (match_scratch:SI 2 "=&h"))]
-+ "TARGET_POPC && TARGET_ARCH32"
-+{
-+ if (sparc_check_64 (operands[1], insn) <= 0)
-+ output_asm_insn ("srl\t%L1, 0, %L1", operands);
-+ return "sllx\t%H1, 32, %2\n\tor\t%L1, %2, %2\n\tpopc\t%2, %L0\n\tclr\t%H0";
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "5")])
-+
-+(define_expand "popcountsi2"
-+ [(set (match_dup 2)
-+ (zero_extend:DI (match_operand:SI 1 "register_operand" "")))
-+ (set (match_operand:SI 0 "register_operand" "")
-+ (truncate:SI (popcount:DI (match_dup 2))))]
-+ "TARGET_POPC"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_popcountsi_v8plus (operands[0], operands[1]));
-+ DONE;
-+ }
-+ else
-+ operands[2] = gen_reg_rtx (DImode);
-+})
-+
-+(define_insn "*popcountsi_sp64"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (truncate:SI
-+ (popcount:DI (match_operand:DI 1 "register_operand" "r"))))]
-+ "TARGET_POPC && TARGET_ARCH64"
-+ "popc\t%1, %0")
-+
-+(define_insn "popcountsi_v8plus"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (popcount:SI (match_operand:SI 1 "register_operand" "r")))]
-+ "TARGET_POPC && TARGET_ARCH32"
-+{
-+ if (sparc_check_64 (operands[1], insn) <= 0)
-+ output_asm_insn ("srl\t%1, 0, %1", operands);
-+ return "popc\t%1, %0";
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "2")])
-+
-+(define_expand "clzdi2"
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (clz:DI (match_operand:DI 1 "register_operand" "")))]
-+ "TARGET_VIS3"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_clzdi_v8plus (operands[0], operands[1]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*clzdi_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (clz:DI (match_operand:DI 1 "register_operand" "r")))]
-+ "TARGET_VIS3 && TARGET_ARCH64"
-+ "lzd\t%1, %0"
-+ [(set_attr "type" "lzd")])
-+
-+(define_insn "clzdi_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (clz:DI (match_operand:DI 1 "register_operand" "r")))
-+ (clobber (match_scratch:SI 2 "=&h"))]
-+ "TARGET_VIS3 && TARGET_ARCH32"
-+{
-+ if (sparc_check_64 (operands[1], insn) <= 0)
-+ output_asm_insn ("srl\t%L1, 0, %L1", operands);
-+ return "sllx\t%H1, 32, %2\n\tor\t%L1, %2, %2\n\tlzd\t%2, %L0\n\tclr\t%H0";
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "5")])
-+
-+(define_expand "clzsi2"
-+ [(set (match_dup 2)
-+ (zero_extend:DI (match_operand:SI 1 "register_operand" "")))
-+ (set (match_dup 3)
-+ (truncate:SI (clz:DI (match_dup 2))))
-+ (set (match_operand:SI 0 "register_operand" "")
-+ (minus:SI (match_dup 3) (const_int 32)))]
-+ "TARGET_VIS3"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_clzsi_v8plus (operands[0], operands[1]));
-+ DONE;
-+ }
-+ else
-+ {
-+ operands[2] = gen_reg_rtx (DImode);
-+ operands[3] = gen_reg_rtx (SImode);
-+ }
-+})
-+
-+(define_insn "*clzsi_sp64"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (truncate:SI
-+ (clz:DI (match_operand:DI 1 "register_operand" "r"))))]
-+ "TARGET_VIS3 && TARGET_ARCH64"
-+ "lzd\t%1, %0"
-+ [(set_attr "type" "lzd")])
-+
-+(define_insn "clzsi_v8plus"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (clz:SI (match_operand:SI 1 "register_operand" "r")))]
-+ "TARGET_VIS3 && TARGET_ARCH32"
-+{
-+ if (sparc_check_64 (operands[1], insn) <= 0)
-+ output_asm_insn ("srl\t%1, 0, %1", operands);
-+ return "lzd\t%1, %0\n\tsub\t%0, 32, %0";
-+}
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "3")])
-+
-+
-+;; Peepholes go at the end.
-+
-+;; Optimize consecutive loads or stores into ldd and std when possible.
-+;; The conditions in which we do this are very restricted and are
-+;; explained in the code for {registers,memory}_ok_for_ldd functions.
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "memory_operand" "")
-+ (const_int 0))
-+ (set (match_operand:SI 1 "memory_operand" "")
-+ (const_int 0))]
-+ "TARGET_V9
-+ && mems_ok_for_ldd_peep (operands[0], operands[1], NULL_RTX)"
-+ [(set (match_dup 0) (const_int 0))]
-+{
-+ operands[0] = widen_mem_for_ldd_peep (operands[0], operands[1], DImode);
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "memory_operand" "")
-+ (const_int 0))
-+ (set (match_operand:SI 1 "memory_operand" "")
-+ (const_int 0))]
-+ "TARGET_V9
-+ && mems_ok_for_ldd_peep (operands[1], operands[0], NULL_RTX)"
-+ [(set (match_dup 1) (const_int 0))]
-+{
-+ operands[1] = widen_mem_for_ldd_peep (operands[1], operands[0], DImode);
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (match_operand:SI 1 "memory_operand" ""))
-+ (set (match_operand:SI 2 "register_operand" "")
-+ (match_operand:SI 3 "memory_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[0], operands[2])
-+ && mems_ok_for_ldd_peep (operands[1], operands[3], operands[0])"
-+ [(set (match_dup 0) (match_dup 1))]
-+{
-+ operands[1] = widen_mem_for_ldd_peep (operands[1], operands[3], DImode);
-+ operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "memory_operand" "")
-+ (match_operand:SI 1 "register_operand" ""))
-+ (set (match_operand:SI 2 "memory_operand" "")
-+ (match_operand:SI 3 "register_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[1], operands[3])
-+ && mems_ok_for_ldd_peep (operands[0], operands[2], NULL_RTX)"
-+ [(set (match_dup 0) (match_dup 1))]
-+{
-+ operands[0] = widen_mem_for_ldd_peep (operands[0], operands[2], DImode);
-+ operands[1] = gen_rtx_REG (DImode, REGNO (operands[1]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SF 0 "register_operand" "")
-+ (match_operand:SF 1 "memory_operand" ""))
-+ (set (match_operand:SF 2 "register_operand" "")
-+ (match_operand:SF 3 "memory_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[0], operands[2])
-+ && mems_ok_for_ldd_peep (operands[1], operands[3], operands[0])"
-+ [(set (match_dup 0) (match_dup 1))]
-+{
-+ operands[1] = widen_mem_for_ldd_peep (operands[1], operands[3], DFmode);
-+ operands[0] = gen_rtx_REG (DFmode, REGNO (operands[0]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SF 0 "memory_operand" "")
-+ (match_operand:SF 1 "register_operand" ""))
-+ (set (match_operand:SF 2 "memory_operand" "")
-+ (match_operand:SF 3 "register_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[1], operands[3])
-+ && mems_ok_for_ldd_peep (operands[0], operands[2], NULL_RTX)"
-+ [(set (match_dup 0) (match_dup 1))]
-+{
-+ operands[0] = widen_mem_for_ldd_peep (operands[0], operands[2], DFmode);
-+ operands[1] = gen_rtx_REG (DFmode, REGNO (operands[1]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (match_operand:SI 1 "memory_operand" ""))
-+ (set (match_operand:SI 2 "register_operand" "")
-+ (match_operand:SI 3 "memory_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[2], operands[0])
-+ && mems_ok_for_ldd_peep (operands[3], operands[1], operands[0])"
-+ [(set (match_dup 2) (match_dup 3))]
-+{
-+ operands[3] = widen_mem_for_ldd_peep (operands[3], operands[1], DImode);
-+ operands[2] = gen_rtx_REG (DImode, REGNO (operands[2]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "memory_operand" "")
-+ (match_operand:SI 1 "register_operand" ""))
-+ (set (match_operand:SI 2 "memory_operand" "")
-+ (match_operand:SI 3 "register_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[3], operands[1])
-+ && mems_ok_for_ldd_peep (operands[2], operands[0], NULL_RTX)"
-+ [(set (match_dup 2) (match_dup 3))]
-+{
-+ operands[2] = widen_mem_for_ldd_peep (operands[2], operands[0], DImode);
-+ operands[3] = gen_rtx_REG (DImode, REGNO (operands[3]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SF 0 "register_operand" "")
-+ (match_operand:SF 1 "memory_operand" ""))
-+ (set (match_operand:SF 2 "register_operand" "")
-+ (match_operand:SF 3 "memory_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[2], operands[0])
-+ && mems_ok_for_ldd_peep (operands[3], operands[1], operands[0])"
-+ [(set (match_dup 2) (match_dup 3))]
-+{
-+ operands[3] = widen_mem_for_ldd_peep (operands[3], operands[1], DFmode);
-+ operands[2] = gen_rtx_REG (DFmode, REGNO (operands[2]));
-+})
-+
-+(define_peephole2
-+ [(set (match_operand:SF 0 "memory_operand" "")
-+ (match_operand:SF 1 "register_operand" ""))
-+ (set (match_operand:SF 2 "memory_operand" "")
-+ (match_operand:SF 3 "register_operand" ""))]
-+ "registers_ok_for_ldd_peep (operands[3], operands[1])
-+ && mems_ok_for_ldd_peep (operands[2], operands[0], NULL_RTX)"
-+ [(set (match_dup 2) (match_dup 3))]
-+{
-+ operands[2] = widen_mem_for_ldd_peep (operands[2], operands[0], DFmode);
-+ operands[3] = gen_rtx_REG (DFmode, REGNO (operands[3]));
-+})
-+
-+;; Optimize the case of following a reg-reg move with a test
-+;; of reg just moved. Don't allow floating point regs for operand 0 or 1.
-+;; This can result from a float to fix conversion.
-+
-+(define_peephole2
-+ [(set (match_operand:SI 0 "register_operand" "")
-+ (match_operand:SI 1 "register_operand" ""))
-+ (set (reg:CC CC_REG)
-+ (compare:CC (match_operand:SI 2 "register_operand" "")
-+ (const_int 0)))]
-+ "(rtx_equal_p (operands[2], operands[0])
-+ || rtx_equal_p (operands[2], operands[1]))
-+ && !SPARC_FP_REG_P (REGNO (operands[0]))
-+ && !SPARC_FP_REG_P (REGNO (operands[1]))"
-+ [(parallel [(set (match_dup 0) (match_dup 1))
-+ (set (reg:CC CC_REG)
-+ (compare:CC (match_dup 1) (const_int 0)))])]
-+ "")
-+
-+(define_peephole2
-+ [(set (match_operand:DI 0 "register_operand" "")
-+ (match_operand:DI 1 "register_operand" ""))
-+ (set (reg:CCX CC_REG)
-+ (compare:CCX (match_operand:DI 2 "register_operand" "")
-+ (const_int 0)))]
-+ "TARGET_ARCH64
-+ && (rtx_equal_p (operands[2], operands[0])
-+ || rtx_equal_p (operands[2], operands[1]))
-+ && !SPARC_FP_REG_P (REGNO (operands[0]))
-+ && !SPARC_FP_REG_P (REGNO (operands[1]))"
-+ [(parallel [(set (match_dup 0) (match_dup 1))
-+ (set (reg:CCX CC_REG)
-+ (compare:CCX (match_dup 1) (const_int 0)))])]
-+ "")
-+
-+
-+;; Prefetch instructions.
-+
-+;; ??? UltraSPARC-III note: A memory operation loading into the floating point
-+;; register file, if it hits the prefetch cache, has a chance to dual-issue
-+;; with other memory operations. With DFA we might be able to model this,
-+;; but it requires a lot of state.
-+(define_expand "prefetch"
-+ [(match_operand 0 "address_operand" "")
-+ (match_operand 1 "const_int_operand" "")
-+ (match_operand 2 "const_int_operand" "")]
-+ "TARGET_V9"
-+{
-+ if (TARGET_ARCH64)
-+ emit_insn (gen_prefetch_64 (operands[0], operands[1], operands[2]));
-+ else
-+ emit_insn (gen_prefetch_32 (operands[0], operands[1], operands[2]));
-+ DONE;
-+})
-+
-+(define_insn "prefetch_64"
-+ [(prefetch (match_operand:DI 0 "address_operand" "p")
-+ (match_operand:DI 1 "const_int_operand" "n")
-+ (match_operand:DI 2 "const_int_operand" "n"))]
-+ ""
-+{
-+ static const char * const prefetch_instr[2][2] = {
-+ {
-+ "prefetch\t[%a0], 1", /* no locality: prefetch for one read */
-+ "prefetch\t[%a0], 0", /* medium to high locality: prefetch for several reads */
-+ },
-+ {
-+ "prefetch\t[%a0], 3", /* no locality: prefetch for one write */
-+ "prefetch\t[%a0], 2", /* medium to high locality: prefetch for several writes */
-+ }
-+ };
-+ int read_or_write = INTVAL (operands[1]);
-+ int locality = INTVAL (operands[2]);
-+
-+ gcc_assert (read_or_write == 0 || read_or_write == 1);
-+ gcc_assert (locality >= 0 && locality < 4);
-+ return prefetch_instr [read_or_write][locality == 0 ? 0 : 1];
-+}
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "prefetch")])
-+
-+(define_insn "prefetch_32"
-+ [(prefetch (match_operand:SI 0 "address_operand" "p")
-+ (match_operand:SI 1 "const_int_operand" "n")
-+ (match_operand:SI 2 "const_int_operand" "n"))]
-+ ""
-+{
-+ static const char * const prefetch_instr[2][2] = {
-+ {
-+ "prefetch\t[%a0], 1", /* no locality: prefetch for one read */
-+ "prefetch\t[%a0], 0", /* medium to high locality: prefetch for several reads */
-+ },
-+ {
-+ "prefetch\t[%a0], 3", /* no locality: prefetch for one write */
-+ "prefetch\t[%a0], 2", /* medium to high locality: prefetch for several writes */
-+ }
-+ };
-+ int read_or_write = INTVAL (operands[1]);
-+ int locality = INTVAL (operands[2]);
-+
-+ gcc_assert (read_or_write == 0 || read_or_write == 1);
-+ gcc_assert (locality >= 0 && locality < 4);
-+ return prefetch_instr [read_or_write][locality == 0 ? 0 : 1];
-+}
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "prefetch")])
-+
-+
-+;; Trap instructions.
-+
-+(define_insn "trap"
-+ [(trap_if (const_int 1) (const_int 5))]
-+ ""
-+ "ta\t5"
-+ [(set_attr "type" "trap")])
-+
-+(define_expand "ctrapsi4"
-+ [(trap_if (match_operator 0 "comparison_operator"
-+ [(match_operand:SI 1 "compare_operand" "")
-+ (match_operand:SI 2 "arith_operand" "")])
-+ (match_operand 3 "arith_operand"))]
-+ ""
-+{
-+ operands[1] = gen_compare_reg (operands[0]);
-+ if (GET_MODE (operands[1]) != CCmode && GET_MODE (operands[1]) != CCXmode)
-+ FAIL;
-+ operands[2] = const0_rtx;
-+})
-+
-+(define_expand "ctrapdi4"
-+ [(trap_if (match_operator 0 "comparison_operator"
-+ [(match_operand:DI 1 "compare_operand" "")
-+ (match_operand:DI 2 "arith_operand" "")])
-+ (match_operand 3 "arith_operand"))]
-+ "TARGET_ARCH64"
-+{
-+ operands[1] = gen_compare_reg (operands[0]);
-+ if (GET_MODE (operands[1]) != CCmode && GET_MODE (operands[1]) != CCXmode)
-+ FAIL;
-+ operands[2] = const0_rtx;
-+})
-+
-+(define_insn "*trapsi_insn"
-+ [(trap_if (match_operator 0 "icc_comparison_operator"
-+ [(reg:CC CC_REG) (const_int 0)])
-+ (match_operand:SI 1 "arith_operand" "rM"))]
-+ ""
-+{
-+ if (TARGET_V9)
-+ return "t%C0\t%%icc, %1";
-+ else
-+ return "t%C0\t%1";
-+}
-+ [(set_attr "type" "trap")])
-+
-+(define_insn "*trapdi_insn"
-+ [(trap_if (match_operator 0 "icc_comparison_operator"
-+ [(reg:CCX CC_REG) (const_int 0)])
-+ (match_operand:SI 1 "arith_operand" "rM"))]
-+ "TARGET_V9"
-+ "t%C0\t%%xcc, %1"
-+ [(set_attr "type" "trap")])
-+
-+
-+;; TLS support instructions.
-+
-+(define_insn "tgd_hi22<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (high:P (unspec:P [(match_operand 1 "tgd_symbolic_operand" "")]
-+ UNSPEC_TLSGD)))]
-+ "TARGET_TLS"
-+ "sethi\\t%%tgd_hi22(%a1), %0")
-+
-+(define_insn "tgd_lo10<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (lo_sum:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand 2 "tgd_symbolic_operand" "")]
-+ UNSPEC_TLSGD)))]
-+ "TARGET_TLS"
-+ "add\\t%1, %%tgd_lo10(%a2), %0")
-+
-+(define_insn "tgd_add<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (plus:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tgd_symbolic_operand" "")]
-+ UNSPEC_TLSGD)))]
-+ "TARGET_TLS"
-+ "add\\t%1, %2, %0, %%tgd_add(%a3)")
-+
-+(define_insn "tgd_call<P:mode>"
-+ [(set (match_operand 0 "register_operand" "=r")
-+ (call (mem:P (unspec:P [(match_operand:P 1 "symbolic_operand" "s")
-+ (match_operand 2 "tgd_symbolic_operand" "")]
-+ UNSPEC_TLSGD))
-+ (match_operand 3 "" "")))
-+ (clobber (reg:P O7_REG))]
-+ "TARGET_TLS"
-+ "call\t%a1, %%tgd_call(%a2)%#"
-+ [(set (attr "type") (if_then_else (eq_attr "tls_delay_slot" "true")
-+ (const_string "call")
-+ (const_string "call_no_delay_slot")))])
-+
-+(define_insn "tldm_hi22<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (high:P (unspec:P [(const_int 0)] UNSPEC_TLSLDM)))]
-+ "TARGET_TLS"
-+ "sethi\\t%%tldm_hi22(%&), %0")
-+
-+(define_insn "tldm_lo10<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (lo_sum:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(const_int 0)] UNSPEC_TLSLDM)))]
-+ "TARGET_TLS"
-+ "add\\t%1, %%tldm_lo10(%&), %0")
-+
-+(define_insn "tldm_add<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (plus:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand:P 2 "register_operand" "r")]
-+ UNSPEC_TLSLDM)))]
-+ "TARGET_TLS"
-+ "add\\t%1, %2, %0, %%tldm_add(%&)")
-+
-+(define_insn "tldm_call<P:mode>"
-+ [(set (match_operand 0 "register_operand" "=r")
-+ (call (mem:P (unspec:P [(match_operand:P 1 "symbolic_operand" "s")]
-+ UNSPEC_TLSLDM))
-+ (match_operand 2 "" "")))
-+ (clobber (reg:P O7_REG))]
-+ "TARGET_TLS"
-+ "call\t%a1, %%tldm_call(%&)%#"
-+ [(set (attr "type") (if_then_else (eq_attr "tls_delay_slot" "true")
-+ (const_string "call")
-+ (const_string "call_no_delay_slot")))])
-+
-+(define_insn "tldo_hix22<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (high:P (unspec:P [(match_operand 1 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)))]
-+ "TARGET_TLS"
-+ "sethi\\t%%tldo_hix22(%a1), %0")
-+
-+(define_insn "tldo_lox10<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (lo_sum:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand 2 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)))]
-+ "TARGET_TLS"
-+ "xor\\t%1, %%tldo_lox10(%a2), %0")
-+
-+(define_insn "tldo_add<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (plus:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)))]
-+ "TARGET_TLS"
-+ "add\\t%1, %2, %0, %%tldo_add(%a3)")
-+
-+(define_insn "tie_hi22<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (high:P (unspec:P [(match_operand 1 "tie_symbolic_operand" "")]
-+ UNSPEC_TLSIE)))]
-+ "TARGET_TLS"
-+ "sethi\\t%%tie_hi22(%a1), %0")
-+
-+(define_insn "tie_lo10<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (lo_sum:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand 2 "tie_symbolic_operand" "")]
-+ UNSPEC_TLSIE)))]
-+ "TARGET_TLS"
-+ "add\\t%1, %%tie_lo10(%a2), %0")
-+
-+; Note the %%tie_ld operator
-+(define_insn "tie_ld32"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (unspec:SI [(match_operand:SI 1 "register_operand" "r")
-+ (match_operand:SI 2 "register_operand" "r")
-+ (match_operand 3 "tie_symbolic_operand" "")]
-+ UNSPEC_TLSIE))]
-+ "TARGET_TLS && TARGET_ARCH32"
-+ "ld\\t[%1 + %2], %0, %%tie_ld(%a3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+; Note the %%tie_ldx operator
-+(define_insn "tie_ld64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (unspec:DI [(match_operand:DI 1 "register_operand" "r")
-+ (match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tie_symbolic_operand" "")]
-+ UNSPEC_TLSIE))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "ldx\\t[%1 + %2], %0, %%tie_ldx(%a3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_insn "tie_add<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (plus:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tie_symbolic_operand" "")]
-+ UNSPEC_TLSIE)))]
-+ "TARGET_SUN_TLS"
-+ "add\\t%1, %2, %0, %%tie_add(%a3)")
-+
-+(define_insn "tle_hix22<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (high:P (unspec:P [(match_operand 1 "tle_symbolic_operand" "")]
-+ UNSPEC_TLSLE)))]
-+ "TARGET_TLS"
-+ "sethi\\t%%tle_hix22(%a1), %0")
-+
-+(define_insn "tle_lox10<P:mode>"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (lo_sum:P (match_operand:P 1 "register_operand" "r")
-+ (unspec:P [(match_operand 2 "tle_symbolic_operand" "")]
-+ UNSPEC_TLSLE)))]
-+ "TARGET_TLS"
-+ "xor\\t%1, %%tle_lox10(%a2), %0")
-+
-+;; Now patterns combining tldo_add with some integer loads or stores
-+(define_insn "*tldo_ldub<P:mode>"
-+ [(set (match_operand:QI 0 "register_operand" "=r")
-+ (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r"))))]
-+ "TARGET_TLS"
-+ "ldub\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldub1<P:mode>"
-+ [(set (match_operand:HI 0 "register_operand" "=r")
-+ (zero_extend:HI
-+ (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))))]
-+ "TARGET_TLS"
-+ "ldub\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldub2<P:mode>"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (zero_extend:SI
-+ (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))))]
-+ "TARGET_TLS"
-+ "ldub\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldsb1<P:mode>"
-+ [(set (match_operand:HI 0 "register_operand" "=r")
-+ (sign_extend:HI
-+ (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))))]
-+ "TARGET_TLS"
-+ "ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldsb2<P:mode>"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (sign_extend:SI
-+ (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))))]
-+ "TARGET_TLS"
-+ "ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldub3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI
-+ (mem:QI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "ldub\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldsb3_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI
-+ (mem:QI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "ldsb\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_lduh<P:mode>"
-+ [(set (match_operand:HI 0 "register_operand" "=r")
-+ (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r"))))]
-+ "TARGET_TLS"
-+ "lduh\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_lduh1<P:mode>"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (zero_extend:SI
-+ (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))))]
-+ "TARGET_TLS"
-+ "lduh\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldsh1<P:mode>"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (sign_extend:SI
-+ (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))))]
-+ "TARGET_TLS"
-+ "ldsh\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_lduh2_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI
-+ (mem:HI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "lduh\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldsh2_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI
-+ (mem:HI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "ldsh\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_lduw<P:mode>"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (mem:SI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r"))))]
-+ "TARGET_TLS"
-+ "ld\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_insn "*tldo_lduw1_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (zero_extend:DI
-+ (mem:SI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "lduw\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_insn "*tldo_ldsw1_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (sign_extend:DI
-+ (mem:SI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "ldsw\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "sload")
-+ (set_attr "us3load_type" "3cycle")])
-+
-+(define_insn "*tldo_ldx_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (mem:DI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r"))))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "ldx\t[%1 + %2], %0, %%tldo_add(%3)"
-+ [(set_attr "type" "load")
-+ (set_attr "subtype" "regular")])
-+
-+(define_insn "*tldo_stb<P:mode>"
-+ [(set (mem:QI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))
-+ (match_operand:QI 0 "register_operand" "r"))]
-+ "TARGET_TLS"
-+ "stb\t%0, [%1 + %2], %%tldo_add(%3)"
-+ [(set_attr "type" "store")])
-+
-+(define_insn "*tldo_sth<P:mode>"
-+ [(set (mem:HI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))
-+ (match_operand:HI 0 "register_operand" "r"))]
-+ "TARGET_TLS"
-+ "sth\t%0, [%1 + %2], %%tldo_add(%3)"
-+ [(set_attr "type" "store")])
-+
-+(define_insn "*tldo_stw<P:mode>"
-+ [(set (mem:SI (plus:P (unspec:P [(match_operand:P 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:P 1 "register_operand" "r")))
-+ (match_operand:SI 0 "register_operand" "r"))]
-+ "TARGET_TLS"
-+ "st\t%0, [%1 + %2], %%tldo_add(%3)"
-+ [(set_attr "type" "store")])
-+
-+(define_insn "*tldo_stx_sp64"
-+ [(set (mem:DI (plus:DI (unspec:DI [(match_operand:DI 2 "register_operand" "r")
-+ (match_operand 3 "tld_symbolic_operand" "")]
-+ UNSPEC_TLSLDO)
-+ (match_operand:DI 1 "register_operand" "r")))
-+ (match_operand:DI 0 "register_operand" "r"))]
-+ "TARGET_TLS && TARGET_ARCH64"
-+ "stx\t%0, [%1 + %2], %%tldo_add(%3)"
-+ [(set_attr "type" "store")])
-+
-+
-+;; Stack protector instructions.
-+
-+(define_expand "stack_protect_set"
-+ [(match_operand 0 "memory_operand" "")
-+ (match_operand 1 "memory_operand" "")]
-+ ""
-+{
-+#ifdef TARGET_THREAD_SSP_OFFSET
-+ rtx tlsreg = gen_rtx_REG (Pmode, 7);
-+ rtx addr = gen_rtx_PLUS (Pmode, tlsreg, GEN_INT (TARGET_THREAD_SSP_OFFSET));
-+ operands[1] = gen_rtx_MEM (Pmode, addr);
-+#endif
-+ if (TARGET_ARCH64)
-+ emit_insn (gen_stack_protect_setdi (operands[0], operands[1]));
-+ else
-+ emit_insn (gen_stack_protect_setsi (operands[0], operands[1]));
-+ DONE;
-+})
-+
-+(define_insn "stack_protect_setsi"
-+ [(set (match_operand:SI 0 "memory_operand" "=m")
-+ (unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET))
-+ (set (match_scratch:SI 2 "=&r") (const_int 0))]
-+ "TARGET_ARCH32"
-+ "ld\t%1, %2\;st\t%2, %0\;mov\t0, %2"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "3")])
-+
-+(define_insn "stack_protect_setdi"
-+ [(set (match_operand:DI 0 "memory_operand" "=m")
-+ (unspec:DI [(match_operand:DI 1 "memory_operand" "m")] UNSPEC_SP_SET))
-+ (set (match_scratch:DI 2 "=&r") (const_int 0))]
-+ "TARGET_ARCH64"
-+ "ldx\t%1, %2\;stx\t%2, %0\;mov\t0, %2"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "3")])
-+
-+(define_expand "stack_protect_test"
-+ [(match_operand 0 "memory_operand" "")
-+ (match_operand 1 "memory_operand" "")
-+ (match_operand 2 "" "")]
-+ ""
-+{
-+ rtx result, test;
-+#ifdef TARGET_THREAD_SSP_OFFSET
-+ rtx tlsreg = gen_rtx_REG (Pmode, 7);
-+ rtx addr = gen_rtx_PLUS (Pmode, tlsreg, GEN_INT (TARGET_THREAD_SSP_OFFSET));
-+ operands[1] = gen_rtx_MEM (Pmode, addr);
-+#endif
-+ if (TARGET_ARCH64)
-+ {
-+ result = gen_reg_rtx (Pmode);
-+ emit_insn (gen_stack_protect_testdi (result, operands[0], operands[1]));
-+ test = gen_rtx_EQ (VOIDmode, result, const0_rtx);
-+ emit_jump_insn (gen_cbranchdi4 (test, result, const0_rtx, operands[2]));
-+ }
-+ else
-+ {
-+ emit_insn (gen_stack_protect_testsi (operands[0], operands[1]));
-+ result = gen_rtx_REG (CCmode, SPARC_ICC_REG);
-+ test = gen_rtx_EQ (VOIDmode, result, const0_rtx);
-+ emit_jump_insn (gen_cbranchcc4 (test, result, const0_rtx, operands[2]));
-+ }
-+ DONE;
-+})
-+
-+(define_insn "stack_protect_testsi"
-+ [(set (reg:CC CC_REG)
-+ (unspec:CC [(match_operand:SI 0 "memory_operand" "m")
-+ (match_operand:SI 1 "memory_operand" "m")]
-+ UNSPEC_SP_TEST))
-+ (set (match_scratch:SI 3 "=r") (const_int 0))
-+ (clobber (match_scratch:SI 2 "=&r"))]
-+ "TARGET_ARCH32"
-+ "ld\t%0, %2\;ld\t%1, %3\;xorcc\t%2, %3, %2\;mov\t0, %3"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "4")])
-+
-+(define_insn "stack_protect_testdi"
-+ [(set (match_operand:DI 0 "register_operand" "=&r")
-+ (unspec:DI [(match_operand:DI 1 "memory_operand" "m")
-+ (match_operand:DI 2 "memory_operand" "m")]
-+ UNSPEC_SP_TEST))
-+ (set (match_scratch:DI 3 "=r") (const_int 0))]
-+ "TARGET_ARCH64"
-+ "ldx\t%1, %0\;ldx\t%2, %3\;xor\t%0, %3, %0\;mov\t0, %3"
-+ [(set_attr "type" "multi")
-+ (set_attr "length" "4")])
-+
-+
-+;; Vector instructions.
-+
-+(define_mode_iterator VM32 [V1SI V2HI V4QI])
-+(define_mode_iterator VM64 [V1DI V2SI V4HI V8QI])
-+(define_mode_iterator VMALL [V1SI V2HI V4QI V1DI V2SI V4HI V8QI])
-+
-+(define_mode_attr vbits [(V2SI "32") (V4HI "16") (V1SI "32s") (V2HI "16s")
-+ (V8QI "8")])
-+(define_mode_attr vconstr [(V1SI "f") (V2HI "f") (V4QI "f")
-+ (V1DI "e") (V2SI "e") (V4HI "e") (V8QI "e")])
-+(define_mode_attr vfptype [(V1SI "single") (V2HI "single") (V4QI "single")
-+ (V1DI "double") (V2SI "double") (V4HI "double")
-+ (V8QI "double")])
-+(define_mode_attr veltmode [(V1SI "si") (V2HI "hi") (V4QI "qi") (V1DI "di")
-+ (V2SI "si") (V4HI "hi") (V8QI "qi")])
-+
-+(define_expand "mov<VMALL:mode>"
-+ [(set (match_operand:VMALL 0 "nonimmediate_operand" "")
-+ (match_operand:VMALL 1 "general_operand" ""))]
-+ "TARGET_VIS"
-+{
-+ if (sparc_expand_move (<VMALL:MODE>mode, operands))
-+ DONE;
-+})
-+
-+(define_insn "*mov<VM32:mode>_insn"
-+ [(set (match_operand:VM32 0 "nonimmediate_operand" "=f,f,f,f,m,m,*r, m,*r,*r, f")
-+ (match_operand:VM32 1 "input_operand" "Y,Z,f,m,f,Y, m,*r,*r, f,*r"))]
-+ "TARGET_VIS
-+ && (register_operand (operands[0], <VM32:MODE>mode)
-+ || register_or_zero_or_all_ones_operand (operands[1], <VM32:MODE>mode))"
-+ "@
-+ fzeros\t%0
-+ fones\t%0
-+ fsrc2s\t%1, %0
-+ ld\t%1, %0
-+ st\t%1, %0
-+ st\t%r1, %0
-+ ld\t%1, %0
-+ st\t%1, %0
-+ mov\t%1, %0
-+ movstouw\t%1, %0
-+ movwtos\t%1, %0"
-+ [(set_attr "type" "visl,visl,vismv,fpload,fpstore,store,load,store,*,vismv,vismv")
-+ (set_attr "subtype" "single,single,single,*,*,*,regular,*,*,movstouw,single")
-+ (set_attr "cpu_feature" "vis,vis,vis,*,*,*,*,*,*,vis3,vis3")])
-+
-+(define_insn "*mov<VM64:mode>_insn_sp64"
-+ [(set (match_operand:VM64 0 "nonimmediate_operand" "=e,e,e,e,W,m,*r, m,*r, e,*r")
-+ (match_operand:VM64 1 "input_operand" "Y,Z,e,W,e,Y, m,*r, e,*r,*r"))]
-+ "TARGET_VIS
-+ && TARGET_ARCH64
-+ && (register_operand (operands[0], <VM64:MODE>mode)
-+ || register_or_zero_or_all_ones_operand (operands[1], <VM64:MODE>mode))"
-+ "@
-+ fzero\t%0
-+ fone\t%0
-+ fsrc2\t%1, %0
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ stx\t%r1, %0
-+ ldx\t%1, %0
-+ stx\t%1, %0
-+ movdtox\t%1, %0
-+ movxtod\t%1, %0
-+ mov\t%1, %0"
-+ [(set_attr "type" "visl,visl,vismv,fpload,fpstore,store,load,store,vismv,vismv,*")
-+ (set_attr "subtype" "double,double,double,*,*,*,regular,*,movdtox,movxtod,*")
-+ (set_attr "cpu_feature" "vis,vis,vis,*,*,*,*,*,vis3,vis3,*")])
-+
-+(define_insn "*mov<VM64:mode>_insn_sp32"
-+ [(set (match_operand:VM64 0 "nonimmediate_operand"
-+ "=T,o,e,e,e,*r, f,e,T,U,T,f,o,*r,*r, o")
-+ (match_operand:VM64 1 "input_operand"
-+ " Y,Y,Y,Z,e, f,*r,T,e,T,U,o,f,*r, o,*r"))]
-+ "TARGET_VIS
-+ && TARGET_ARCH32
-+ && (register_operand (operands[0], <VM64:MODE>mode)
-+ || register_or_zero_or_all_ones_operand (operands[1], <VM64:MODE>mode))"
-+ "@
-+ stx\t%r1, %0
-+ #
-+ fzero\t%0
-+ fone\t%0
-+ fsrc2\t%1, %0
-+ #
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ ldd\t%1, %0
-+ std\t%1, %0
-+ #
-+ #
-+ #
-+ ldd\t%1, %0
-+ std\t%1, %0"
-+ [(set_attr "type" "store,*,visl,visl,vismv,*,*,fpload,fpstore,load,store,*,*,*,load,store")
-+ (set_attr "subtype" "*,*,double,double,double,*,*,*,*,regular,*,*,*,*,regular,*")
-+ (set_attr "length" "*,2,*,*,*,2,2,*,*,*,*,2,2,2,*,*")
-+ (set_attr "cpu_feature" "*,*,vis,vis,vis,vis3,vis3,*,*,*,*,*,*,*,*,*")
-+ (set_attr "lra" "*,*,*,*,*,*,*,*,*,disabled,disabled,*,*,*,*,*")])
-+
-+(define_split
-+ [(set (match_operand:VM64 0 "register_operand" "")
-+ (match_operand:VM64 1 "register_operand" ""))]
-+ "reload_completed
-+ && TARGET_VIS
-+ && TARGET_ARCH32
-+ && sparc_split_reg_reg_legitimate (operands[0], operands[1])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_reg_reg (operands[0], operands[1], SImode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:VM64 0 "register_operand" "")
-+ (match_operand:VM64 1 "memory_operand" ""))]
-+ "reload_completed
-+ && TARGET_VIS
-+ && TARGET_ARCH32
-+ && sparc_split_reg_mem_legitimate (operands[0], operands[1])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_reg_mem (operands[0], operands[1], SImode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:VM64 0 "memory_operand" "")
-+ (match_operand:VM64 1 "register_operand" ""))]
-+ "reload_completed
-+ && TARGET_VIS
-+ && TARGET_ARCH32
-+ && sparc_split_reg_mem_legitimate (operands[1], operands[0])"
-+ [(clobber (const_int 0))]
-+{
-+ sparc_split_mem_reg (operands[0], operands[1], SImode);
-+ DONE;
-+})
-+
-+(define_split
-+ [(set (match_operand:VM64 0 "memory_operand" "")
-+ (match_operand:VM64 1 "const_zero_operand" ""))]
-+ "reload_completed
-+ && TARGET_VIS
-+ && TARGET_ARCH32
-+ && !mem_min_alignment (operands[0], 8)
-+ && offsettable_memref_p (operands[0])"
-+ [(clobber (const_int 0))]
-+{
-+ emit_move_insn_1 (adjust_address (operands[0], SImode, 0), const0_rtx);
-+ emit_move_insn_1 (adjust_address (operands[0], SImode, 4), const0_rtx);
-+ DONE;
-+})
-+
-+(define_expand "vec_init<VMALL:mode><VMALL:veltmode>"
-+ [(match_operand:VMALL 0 "register_operand" "")
-+ (match_operand:VMALL 1 "" "")]
-+ "TARGET_VIS"
-+{
-+ sparc_expand_vector_init (operands[0], operands[1]);
-+ DONE;
-+})
-+
-+(define_code_iterator plusminus [plus minus])
-+(define_code_attr plusminus_insn [(plus "add") (minus "sub")])
-+
-+(define_mode_iterator VADDSUB [V1SI V2SI V2HI V4HI])
-+
-+(define_insn "<plusminus_insn><VADDSUB:mode>3"
-+ [(set (match_operand:VADDSUB 0 "register_operand" "=<vconstr>")
-+ (plusminus:VADDSUB (match_operand:VADDSUB 1 "register_operand" "<vconstr>")
-+ (match_operand:VADDSUB 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS"
-+ "fp<plusminus_insn><vbits>\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+(define_mode_iterator VL [V1SI V2HI V4QI V1DI V2SI V4HI V8QI])
-+(define_mode_attr vlsuf [(V1SI "s") (V2HI "s") (V4QI "s")
-+ (V1DI "") (V2SI "") (V4HI "") (V8QI "")])
-+(define_code_iterator vlop [ior and xor])
-+(define_code_attr vlinsn [(ior "or") (and "and") (xor "xor")])
-+(define_code_attr vlninsn [(ior "nor") (and "nand") (xor "xnor")])
-+
-+(define_insn "<vlop:code><VL:mode>3"
-+ [(set (match_operand:VL 0 "register_operand" "=<vconstr>")
-+ (vlop:VL (match_operand:VL 1 "register_operand" "<vconstr>")
-+ (match_operand:VL 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS"
-+ "f<vlinsn><vlsuf>\t%1, %2, %0"
-+ [(set_attr "type" "visl")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+(define_insn "*not_<vlop:code><VL:mode>3"
-+ [(set (match_operand:VL 0 "register_operand" "=<vconstr>")
-+ (not:VL (vlop:VL (match_operand:VL 1 "register_operand" "<vconstr>")
-+ (match_operand:VL 2 "register_operand" "<vconstr>"))))]
-+ "TARGET_VIS"
-+ "f<vlninsn><vlsuf>\t%1, %2, %0"
-+ [(set_attr "type" "visl")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+;; (ior (not (op1)) (not (op2))) is the canonical form of NAND.
-+(define_insn "*nand<VL:mode>_vis"
-+ [(set (match_operand:VL 0 "register_operand" "=<vconstr>")
-+ (ior:VL (not:VL (match_operand:VL 1 "register_operand" "<vconstr>"))
-+ (not:VL (match_operand:VL 2 "register_operand" "<vconstr>"))))]
-+ "TARGET_VIS"
-+ "fnand<vlsuf>\t%1, %2, %0"
-+ [(set_attr "type" "visl")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+(define_code_iterator vlnotop [ior and])
-+
-+(define_insn "*<vlnotop:code>_not1<VL:mode>_vis"
-+ [(set (match_operand:VL 0 "register_operand" "=<vconstr>")
-+ (vlnotop:VL (not:VL (match_operand:VL 1 "register_operand" "<vconstr>"))
-+ (match_operand:VL 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS"
-+ "f<vlinsn>not1<vlsuf>\t%1, %2, %0"
-+ [(set_attr "type" "visl")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+(define_insn "*<vlnotop:code>_not2<VL:mode>_vis"
-+ [(set (match_operand:VL 0 "register_operand" "=<vconstr>")
-+ (vlnotop:VL (match_operand:VL 1 "register_operand" "<vconstr>")
-+ (not:VL (match_operand:VL 2 "register_operand" "<vconstr>"))))]
-+ "TARGET_VIS"
-+ "f<vlinsn>not2<vlsuf>\t%1, %2, %0"
-+ [(set_attr "type" "visl")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+(define_insn "one_cmpl<VL:mode>2"
-+ [(set (match_operand:VL 0 "register_operand" "=<vconstr>")
-+ (not:VL (match_operand:VL 1 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS"
-+ "fnot1<vlsuf>\t%1, %0"
-+ [(set_attr "type" "visl")
-+ (set_attr "fptype" "<vfptype>")])
-+
-+;; Hard to generate VIS instructions. We have builtins for these.
-+
-+(define_insn "fpack16_vis"
-+ [(set (match_operand:V4QI 0 "register_operand" "=f")
-+ (unspec:V4QI [(match_operand:V4HI 1 "register_operand" "e")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_FPACK16))]
-+ "TARGET_VIS"
-+ "fpack16\t%1, %0"
-+ [(set_attr "type" "fgm_pack")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fpackfix_vis"
-+ [(set (match_operand:V2HI 0 "register_operand" "=f")
-+ (unspec:V2HI [(match_operand:V2SI 1 "register_operand" "e")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_FPACKFIX))]
-+ "TARGET_VIS"
-+ "fpackfix\t%1, %0"
-+ [(set_attr "type" "fgm_pack")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fpack32_vis"
-+ [(set (match_operand:V8QI 0 "register_operand" "=e")
-+ (unspec:V8QI [(match_operand:V2SI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_FPACK32))]
-+ "TARGET_VIS"
-+ "fpack32\t%1, %2, %0"
-+ [(set_attr "type" "fgm_pack")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fexpand_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V4QI 1 "register_operand" "f")]
-+ UNSPEC_FEXPAND))]
-+ "TARGET_VIS"
-+ "fexpand\t%1, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "fpu")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fpmerge_vis"
-+ [(set (match_operand:V8QI 0 "register_operand" "=e")
-+ (vec_select:V8QI
-+ (vec_concat:V8QI (match_operand:V4QI 1 "register_operand" "f")
-+ (match_operand:V4QI 2 "register_operand" "f"))
-+ (parallel [(const_int 0) (const_int 4)
-+ (const_int 1) (const_int 5)
-+ (const_int 2) (const_int 6)
-+ (const_int 3) (const_int 7)])))]
-+ "TARGET_VIS"
-+ "fpmerge\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "fpu")
-+ (set_attr "fptype" "double")])
-+
-+;; Partitioned multiply instructions
-+(define_insn "fmul8x16_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V4QI 1 "register_operand" "f")
-+ (match_operand:V4HI 2 "register_operand" "e")]
-+ UNSPEC_MUL8))]
-+ "TARGET_VIS"
-+ "fmul8x16\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmul8x16au_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V4QI 1 "register_operand" "f")
-+ (match_operand:V2HI 2 "register_operand" "f")]
-+ UNSPEC_MUL16AU))]
-+ "TARGET_VIS"
-+ "fmul8x16au\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmul8x16al_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V4QI 1 "register_operand" "f")
-+ (match_operand:V2HI 2 "register_operand" "f")]
-+ UNSPEC_MUL16AL))]
-+ "TARGET_VIS"
-+ "fmul8x16al\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmul8sux16_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V4HI 2 "register_operand" "e")]
-+ UNSPEC_MUL8SU))]
-+ "TARGET_VIS"
-+ "fmul8sux16\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmul8ulx16_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V4HI 2 "register_operand" "e")]
-+ UNSPEC_MUL8UL))]
-+ "TARGET_VIS"
-+ "fmul8ulx16\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmuld8sux16_vis"
-+ [(set (match_operand:V2SI 0 "register_operand" "=e")
-+ (unspec:V2SI [(match_operand:V4QI 1 "register_operand" "f")
-+ (match_operand:V2HI 2 "register_operand" "f")]
-+ UNSPEC_MULDSU))]
-+ "TARGET_VIS"
-+ "fmuld8sux16\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmuld8ulx16_vis"
-+ [(set (match_operand:V2SI 0 "register_operand" "=e")
-+ (unspec:V2SI [(match_operand:V4QI 1 "register_operand" "f")
-+ (match_operand:V2HI 2 "register_operand" "f")]
-+ UNSPEC_MULDUL))]
-+ "TARGET_VIS"
-+ "fmuld8ulx16\t%1, %2, %0"
-+ [(set_attr "type" "fgm_mul")
-+ (set_attr "fptype" "double")])
-+
-+(define_expand "wrgsr_vis"
-+ [(set (reg:DI GSR_REG) (match_operand:DI 0 "arith_operand" ""))]
-+ "TARGET_VIS"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_wrgsr_v8plus (operands[0]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*wrgsr_sp64"
-+ [(set (reg:DI GSR_REG) (match_operand:DI 0 "arith_operand" "rI"))]
-+ "TARGET_VIS && TARGET_ARCH64"
-+ "wr\t%%g0, %0, %%gsr"
-+ [(set_attr "type" "gsr")
-+ (set_attr "subtype" "reg")])
-+
-+(define_insn "wrgsr_v8plus"
-+ [(set (reg:DI GSR_REG) (match_operand:DI 0 "arith_operand" "I,r"))
-+ (clobber (match_scratch:SI 1 "=X,&h"))]
-+ "TARGET_VIS && TARGET_ARCH32"
-+{
-+ if (GET_CODE (operands[0]) == CONST_INT
-+ || sparc_check_64 (operands[0], insn))
-+ return "wr\t%%g0, %0, %%gsr";
-+
-+ output_asm_insn("srl\t%L0, 0, %L0", operands);
-+ return "sllx\t%H0, 32, %1\n\tor\t%L0, %1, %1\n\twr\t%%g0, %1, %%gsr";
-+}
-+ [(set_attr "type" "multi")])
-+
-+(define_expand "rdgsr_vis"
-+ [(set (match_operand:DI 0 "register_operand" "") (reg:DI GSR_REG))]
-+ "TARGET_VIS"
-+{
-+ if (TARGET_ARCH32)
-+ {
-+ emit_insn (gen_rdgsr_v8plus (operands[0]));
-+ DONE;
-+ }
-+})
-+
-+(define_insn "*rdgsr_sp64"
-+ [(set (match_operand:DI 0 "register_operand" "=r") (reg:DI GSR_REG))]
-+ "TARGET_VIS && TARGET_ARCH64"
-+ "rd\t%%gsr, %0"
-+ [(set_attr "type" "gsr")
-+ (set_attr "subtype" "reg")])
-+
-+(define_insn "rdgsr_v8plus"
-+ [(set (match_operand:DI 0 "register_operand" "=r") (reg:DI GSR_REG))
-+ (clobber (match_scratch:SI 1 "=&h"))]
-+ "TARGET_VIS && TARGET_ARCH32"
-+{
-+ return "rd\t%%gsr, %1\n\tsrlx\t%1, 32, %H0\n\tmov %1, %L0";
-+}
-+ [(set_attr "type" "multi")])
-+
-+;; Using faligndata only makes sense after an alignaddr since the choice of
-+;; bytes to take out of each operand is dependent on the results of the last
-+;; alignaddr.
-+(define_insn "faligndata<VM64:mode>_vis"
-+ [(set (match_operand:VM64 0 "register_operand" "=e")
-+ (unspec:VM64 [(match_operand:VM64 1 "register_operand" "e")
-+ (match_operand:VM64 2 "register_operand" "e")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_ALIGNDATA))]
-+ "TARGET_VIS"
-+ "faligndata\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "alignaddrsi_vis"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "register_or_zero_operand" "rJ")))
-+ (set (zero_extract:DI (reg:DI GSR_REG) (const_int 3) (const_int 0))
-+ (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
-+ "TARGET_VIS"
-+ "alignaddr\t%r1, %r2, %0"
-+ [(set_attr "type" "gsr")
-+ (set_attr "subtype" "alignaddr")])
-+
-+(define_insn "alignaddrdi_vis"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (match_operand:DI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 2 "register_or_zero_operand" "rJ")))
-+ (set (zero_extract:DI (reg:DI GSR_REG) (const_int 3) (const_int 0))
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_VIS"
-+ "alignaddr\t%r1, %r2, %0"
-+ [(set_attr "type" "gsr")
-+ (set_attr "subtype" "alignaddr")])
-+
-+(define_insn "alignaddrlsi_vis"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "register_or_zero_operand" "rJ")))
-+ (set (zero_extract:DI (reg:DI GSR_REG) (const_int 3) (const_int 0))
-+ (xor:DI (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2)))
-+ (const_int 7)))]
-+ "TARGET_VIS"
-+ "alignaddrl\t%r1, %r2, %0"
-+ [(set_attr "type" "gsr")
-+ (set_attr "subtype" "alignaddr")])
-+
-+(define_insn "alignaddrldi_vis"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (match_operand:DI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 2 "register_or_zero_operand" "rJ")))
-+ (set (zero_extract:DI (reg:DI GSR_REG) (const_int 3) (const_int 0))
-+ (xor:DI (plus:DI (match_dup 1) (match_dup 2))
-+ (const_int 7)))]
-+ "TARGET_VIS"
-+ "alignaddrl\t%r1, %r2, %0"
-+ [(set_attr "type" "gsr")
-+ (set_attr "subtype" "alignaddr")])
-+
-+(define_insn "pdist_vis"
-+ [(set (match_operand:DI 0 "register_operand" "=e")
-+ (unspec:DI [(match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e")
-+ (match_operand:DI 3 "register_operand" "0")]
-+ UNSPEC_PDIST))]
-+ "TARGET_VIS"
-+ "pdist\t%1, %2, %0"
-+ [(set_attr "type" "pdist")
-+ (set_attr "fptype" "double")])
-+
-+;; Edge instructions produce condition codes equivalent to a 'subcc'
-+;; with the same operands.
-+(define_insn "edge8<P:mode>_vis"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:P (match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ"))
-+ (const_int 0)))
-+ (set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_dup 1) (match_dup 2)] UNSPEC_EDGE8))]
-+ "TARGET_VIS"
-+ "edge8\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+(define_insn "edge8l<P:mode>_vis"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:P (match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ"))
-+ (const_int 0)))
-+ (set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_dup 1) (match_dup 2)] UNSPEC_EDGE8L))]
-+ "TARGET_VIS"
-+ "edge8l\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+(define_insn "edge16<P:mode>_vis"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:P (match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ"))
-+ (const_int 0)))
-+ (set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_dup 1) (match_dup 2)] UNSPEC_EDGE16))]
-+ "TARGET_VIS"
-+ "edge16\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+(define_insn "edge16l<P:mode>_vis"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:P (match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ"))
-+ (const_int 0)))
-+ (set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_dup 1) (match_dup 2)] UNSPEC_EDGE16L))]
-+ "TARGET_VIS"
-+ "edge16l\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+(define_insn "edge32<P:mode>_vis"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:P (match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ"))
-+ (const_int 0)))
-+ (set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_dup 1) (match_dup 2)] UNSPEC_EDGE32))]
-+ "TARGET_VIS"
-+ "edge32\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+(define_insn "edge32l<P:mode>_vis"
-+ [(set (reg:CCNZ CC_REG)
-+ (compare:CCNZ (minus:P (match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ"))
-+ (const_int 0)))
-+ (set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_dup 1) (match_dup 2)] UNSPEC_EDGE32L))]
-+ "TARGET_VIS"
-+ "edge32l\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+(define_code_iterator gcond [le ne gt eq])
-+(define_mode_iterator GCM [V4HI V2SI])
-+(define_mode_attr gcm_name [(V4HI "16") (V2SI "32")])
-+
-+(define_insn "fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
-+ (match_operand:GCM 2 "register_operand" "e"))]
-+ UNSPEC_FCMP))]
-+ "TARGET_VIS"
-+ "fcmp<gcond:code><GCM:gcm_name>\t%1, %2, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_insn "fpcmp<gcond:code>8<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e"))]
-+ UNSPEC_FCMP))]
-+ "TARGET_VIS4"
-+ "fpcmp<gcond:code>8\t%1, %2, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_expand "vcond<GCM:mode><GCM:mode>"
-+ [(match_operand:GCM 0 "register_operand" "")
-+ (match_operand:GCM 1 "register_operand" "")
-+ (match_operand:GCM 2 "register_operand" "")
-+ (match_operator 3 ""
-+ [(match_operand:GCM 4 "register_operand" "")
-+ (match_operand:GCM 5 "register_operand" "")])]
-+ "TARGET_VIS3"
-+{
-+ sparc_expand_vcond (<MODE>mode, operands, UNSPEC_CMASK<gcm_name>, UNSPEC_FCMP);
-+ DONE;
-+})
-+
-+(define_expand "vconduv8qiv8qi"
-+ [(match_operand:V8QI 0 "register_operand" "")
-+ (match_operand:V8QI 1 "register_operand" "")
-+ (match_operand:V8QI 2 "register_operand" "")
-+ (match_operator 3 ""
-+ [(match_operand:V8QI 4 "register_operand" "")
-+ (match_operand:V8QI 5 "register_operand" "")])]
-+ "TARGET_VIS3"
-+{
-+ sparc_expand_vcond (V8QImode, operands, UNSPEC_CMASK8, UNSPEC_FUCMP);
-+ DONE;
-+})
-+
-+(define_insn "array8<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_ARRAY8))]
-+ "TARGET_VIS"
-+ "array8\t%r1, %r2, %0"
-+ [(set_attr "type" "array")])
-+
-+(define_insn "array16<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_ARRAY16))]
-+ "TARGET_VIS"
-+ "array16\t%r1, %r2, %0"
-+ [(set_attr "type" "array")])
-+
-+(define_insn "array32<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_ARRAY32))]
-+ "TARGET_VIS"
-+ "array32\t%r1, %r2, %0"
-+ [(set_attr "type" "array")])
-+
-+(define_insn "bmaskdi_vis"
-+ [(set (match_operand:DI 0 "register_operand" "=r")
-+ (plus:DI (match_operand:DI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:DI 2 "register_or_zero_operand" "rJ")))
-+ (set (zero_extract:DI (reg:DI GSR_REG) (const_int 32) (const_int 32))
-+ (plus:DI (match_dup 1) (match_dup 2)))]
-+ "TARGET_VIS2 && TARGET_ARCH64"
-+ "bmask\t%r1, %r2, %0"
-+ [(set_attr "type" "bmask")])
-+
-+(define_insn "bmasksi_vis"
-+ [(set (match_operand:SI 0 "register_operand" "=r")
-+ (plus:SI (match_operand:SI 1 "register_or_zero_operand" "rJ")
-+ (match_operand:SI 2 "register_or_zero_operand" "rJ")))
-+ (set (zero_extract:DI (reg:DI GSR_REG) (const_int 32) (const_int 32))
-+ (zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
-+ "TARGET_VIS2"
-+ "bmask\t%r1, %r2, %0"
-+ [(set_attr "type" "bmask")])
-+
-+(define_insn "bshuffle<VM64:mode>_vis"
-+ [(set (match_operand:VM64 0 "register_operand" "=e")
-+ (unspec:VM64 [(match_operand:VM64 1 "register_operand" "e")
-+ (match_operand:VM64 2 "register_operand" "e")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_BSHUFFLE))]
-+ "TARGET_VIS2"
-+ "bshuffle\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")
-+ (set_attr "fptype" "double")])
-+
-+;; Unlike constant permutation, we can vastly simplify the compression of
-+;; the 64-bit selector input to the 32-bit %gsr value by knowing what the
-+;; width of the input is.
-+(define_expand "vec_perm<VM64:mode>"
-+ [(match_operand:VM64 0 "register_operand" "")
-+ (match_operand:VM64 1 "register_operand" "")
-+ (match_operand:VM64 2 "register_operand" "")
-+ (match_operand:VM64 3 "register_operand" "")]
-+ "TARGET_VIS2"
-+{
-+ sparc_expand_vec_perm_bmask (<MODE>mode, operands[3]);
-+ emit_insn (gen_bshuffle<VM64:mode>_vis (operands[0], operands[1], operands[2]));
-+ DONE;
-+})
-+
-+;; VIS 2.0 adds edge variants which do not set the condition codes
-+(define_insn "edge8n<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_EDGE8N))]
-+ "TARGET_VIS2"
-+ "edge8n\t%r1, %r2, %0"
-+ [(set_attr "type" "edgen")])
-+
-+(define_insn "edge8ln<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_EDGE8LN))]
-+ "TARGET_VIS2"
-+ "edge8ln\t%r1, %r2, %0"
-+ [(set_attr "type" "edgen")])
-+
-+(define_insn "edge16n<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_EDGE16N))]
-+ "TARGET_VIS2"
-+ "edge16n\t%r1, %r2, %0"
-+ [(set_attr "type" "edgen")])
-+
-+(define_insn "edge16ln<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_EDGE16LN))]
-+ "TARGET_VIS2"
-+ "edge16ln\t%r1, %r2, %0"
-+ [(set_attr "type" "edgen")])
-+
-+(define_insn "edge32n<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_EDGE32N))]
-+ "TARGET_VIS2"
-+ "edge32n\t%r1, %r2, %0"
-+ [(set_attr "type" "edgen")])
-+
-+(define_insn "edge32ln<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:P 1 "register_or_zero_operand" "rJ")
-+ (match_operand:P 2 "register_or_zero_operand" "rJ")]
-+ UNSPEC_EDGE32LN))]
-+ "TARGET_VIS2"
-+ "edge32ln\t%r1, %r2, %0"
-+ [(set_attr "type" "edge")])
-+
-+;; Conditional moves are possible via fcmpX --> cmaskX -> bshuffle
-+(define_insn "cmask8<P:mode>_vis"
-+ [(set (reg:DI GSR_REG)
-+ (unspec:DI [(match_operand:P 0 "register_or_zero_operand" "rJ")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_CMASK8))]
-+ "TARGET_VIS3"
-+ "cmask8\t%r0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "cmask")])
-+
-+(define_insn "cmask16<P:mode>_vis"
-+ [(set (reg:DI GSR_REG)
-+ (unspec:DI [(match_operand:P 0 "register_or_zero_operand" "rJ")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_CMASK16))]
-+ "TARGET_VIS3"
-+ "cmask16\t%r0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "cmask")])
-+
-+(define_insn "cmask32<P:mode>_vis"
-+ [(set (reg:DI GSR_REG)
-+ (unspec:DI [(match_operand:P 0 "register_or_zero_operand" "rJ")
-+ (reg:DI GSR_REG)]
-+ UNSPEC_CMASK32))]
-+ "TARGET_VIS3"
-+ "cmask32\t%r0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "cmask")])
-+
-+(define_insn "fchksm16_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (unspec:V4HI [(match_operand:V4HI 1 "register_operand" "e")
-+ (match_operand:V4HI 2 "register_operand" "e")]
-+ UNSPEC_FCHKSM16))]
-+ "TARGET_VIS3"
-+ "fchksm16\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "fpu")])
-+
-+(define_code_iterator vis3_shift [ashift ss_ashift lshiftrt ashiftrt])
-+(define_code_attr vis3_shift_insn
-+ [(ashift "fsll") (ss_ashift "fslas") (lshiftrt "fsrl") (ashiftrt "fsra")])
-+(define_code_attr vis3_shift_patname
-+ [(ashift "ashl") (ss_ashift "ssashl") (lshiftrt "lshr") (ashiftrt "ashr")])
-+
-+(define_insn "v<vis3_shift_patname><GCM:mode>3"
-+ [(set (match_operand:GCM 0 "register_operand" "=<vconstr>")
-+ (vis3_shift:GCM (match_operand:GCM 1 "register_operand" "<vconstr>")
-+ (match_operand:GCM 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS3"
-+ "<vis3_shift_insn><vbits>\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "fpu")])
-+
-+(define_insn "pdistn<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e")]
-+ UNSPEC_PDISTN))]
-+ "TARGET_VIS3"
-+ "pdistn\t%1, %2, %0"
-+ [(set_attr "type" "pdistn")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fmean16_vis"
-+ [(set (match_operand:V4HI 0 "register_operand" "=e")
-+ (truncate:V4HI
-+ (lshiftrt:V4SI
-+ (plus:V4SI
-+ (plus:V4SI
-+ (zero_extend:V4SI
-+ (match_operand:V4HI 1 "register_operand" "e"))
-+ (zero_extend:V4SI
-+ (match_operand:V4HI 2 "register_operand" "e")))
-+ (const_vector:V4SI [(const_int 1) (const_int 1)
-+ (const_int 1) (const_int 1)]))
-+ (const_int 1))))]
-+ "TARGET_VIS3"
-+ "fmean16\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "fpu")])
-+
-+(define_insn "fp<plusminus_insn>64_vis"
-+ [(set (match_operand:V1DI 0 "register_operand" "=e")
-+ (plusminus:V1DI (match_operand:V1DI 1 "register_operand" "e")
-+ (match_operand:V1DI 2 "register_operand" "e")))]
-+ "TARGET_VIS3"
-+ "fp<plusminus_insn>64\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "addsub64")])
-+
-+(define_insn "<plusminus_insn>v8qi3"
-+ [(set (match_operand:V8QI 0 "register_operand" "=e")
-+ (plusminus:V8QI (match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e")))]
-+ "TARGET_VIS4"
-+ "fp<plusminus_insn>8\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")])
-+
-+(define_mode_iterator VASS [V4HI V2SI V2HI V1SI])
-+(define_code_iterator vis3_addsub_ss [ss_plus ss_minus])
-+(define_code_attr vis3_addsub_ss_insn
-+ [(ss_plus "fpadds") (ss_minus "fpsubs")])
-+(define_code_attr vis3_addsub_ss_patname
-+ [(ss_plus "ssadd") (ss_minus "sssub")])
-+
-+(define_insn "<vis3_addsub_ss_patname><VASS:mode>3"
-+ [(set (match_operand:VASS 0 "register_operand" "=<vconstr>")
-+ (vis3_addsub_ss:VASS (match_operand:VASS 1 "register_operand" "<vconstr>")
-+ (match_operand:VASS 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS3"
-+ "<vis3_addsub_ss_insn><vbits>\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")])
-+
-+(define_mode_iterator VMMAX [V8QI V4HI V2SI])
-+(define_code_iterator vis4_minmax [smin smax])
-+(define_code_attr vis4_minmax_insn
-+ [(smin "fpmin") (smax "fpmax")])
-+(define_code_attr vis4_minmax_patname
-+ [(smin "min") (smax "max")])
-+
-+(define_insn "<vis4_minmax_patname><VMMAX:mode>3"
-+ [(set (match_operand:VMMAX 0 "register_operand" "=<vconstr>")
-+ (vis4_minmax:VMMAX (match_operand:VMMAX 1 "register_operand" "<vconstr>")
-+ (match_operand:VMMAX 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS4"
-+ "<vis4_minmax_insn><vbits>\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "maxmin")])
-+
-+(define_code_iterator vis4_uminmax [umin umax])
-+(define_code_attr vis4_uminmax_insn
-+ [(umin "fpminu") (umax "fpmaxu")])
-+(define_code_attr vis4_uminmax_patname
-+ [(umin "minu") (umax "maxu")])
-+
-+(define_insn "<vis4_uminmax_patname><VMMAX:mode>3"
-+ [(set (match_operand:VMMAX 0 "register_operand" "=<vconstr>")
-+ (vis4_uminmax:VMMAX (match_operand:VMMAX 1 "register_operand" "<vconstr>")
-+ (match_operand:VMMAX 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS4"
-+ "<vis4_uminmax_insn><vbits>\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "maxmin")])
-+
-+;; The use of vis3_addsub_ss_patname in the VIS4 instruction below is
-+;; intended.
-+(define_insn "<vis3_addsub_ss_patname>v8qi3"
-+ [(set (match_operand:V8QI 0 "register_operand" "=e")
-+ (vis3_addsub_ss:V8QI (match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e")))]
-+ "TARGET_VIS4"
-+ "<vis3_addsub_ss_insn>8\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")])
-+
-+(define_mode_iterator VAUS [V4HI V8QI])
-+(define_code_iterator vis4_addsub_us [us_plus us_minus])
-+(define_code_attr vis4_addsub_us_insn
-+ [(us_plus "fpaddus") (us_minus "fpsubus")])
-+(define_code_attr vis4_addsub_us_patname
-+ [(us_plus "usadd") (us_minus "ussub")])
-+
-+(define_insn "<vis4_addsub_us_patname><VAUS:mode>3"
-+ [(set (match_operand:VAUS 0 "register_operand" "=<vconstr>")
-+ (vis4_addsub_us:VAUS (match_operand:VAUS 1 "register_operand" "<vconstr>")
-+ (match_operand:VAUS 2 "register_operand" "<vconstr>")))]
-+ "TARGET_VIS4"
-+ "<vis4_addsub_us_insn><vbits>\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")])
-+
-+(define_insn "fucmp<gcond:code>8<P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
-+ (match_operand:V8QI 2 "register_operand" "e"))]
-+ UNSPEC_FUCMP))]
-+ "TARGET_VIS3"
-+ "fucmp<gcond:code>8\t%1, %2, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_insn "fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
-+ (match_operand:GCM 2 "register_operand" "e"))]
-+ UNSPEC_FUCMP))]
-+ "TARGET_VIS4"
-+ "fpcmpu<gcond:code><GCM:gcm_name>\t%1, %2, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_insn "*naddsf3"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (neg:SF (plus:SF (match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f"))))]
-+ "TARGET_VIS3"
-+ "fnadds\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "*nadddf3"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (neg:DF (plus:DF (match_operand:DF 1 "register_operand" "e")
-+ (match_operand:DF 2 "register_operand" "e"))))]
-+ "TARGET_VIS3"
-+ "fnaddd\t%1, %2, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*nmulsf3"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (mult:SF (neg:SF (match_operand:SF 1 "register_operand" "f"))
-+ (match_operand:SF 2 "register_operand" "f")))]
-+ "TARGET_VIS3"
-+ "fnmuls\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")])
-+
-+(define_insn "*nmuldf3"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (mult:DF (neg:DF (match_operand:DF 1 "register_operand" "e"))
-+ (match_operand:DF 2 "register_operand" "e")))]
-+ "TARGET_VIS3"
-+ "fnmuld\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "*nmuldf3_extend"
-+ [(set (match_operand:DF 0 "register_operand" "=e")
-+ (mult:DF (neg:DF (float_extend:DF
-+ (match_operand:SF 1 "register_operand" "f")))
-+ (float_extend:DF
-+ (match_operand:SF 2 "register_operand" "f"))))]
-+ "TARGET_VIS3"
-+ "fnsmuld\t%1, %2, %0"
-+ [(set_attr "type" "fpmul")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fhaddsf_vis"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (unspec:SF [(match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")]
-+ UNSPEC_FHADD))]
-+ "TARGET_VIS3"
-+ "fhadds\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "fhadddf_vis"
-+ [(set (match_operand:DF 0 "register_operand" "=f")
-+ (unspec:DF [(match_operand:DF 1 "register_operand" "f")
-+ (match_operand:DF 2 "register_operand" "f")]
-+ UNSPEC_FHADD))]
-+ "TARGET_VIS3"
-+ "fhaddd\t%1, %2, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fhsubsf_vis"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (unspec:SF [(match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")]
-+ UNSPEC_FHSUB))]
-+ "TARGET_VIS3"
-+ "fhsubs\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "fhsubdf_vis"
-+ [(set (match_operand:DF 0 "register_operand" "=f")
-+ (unspec:DF [(match_operand:DF 1 "register_operand" "f")
-+ (match_operand:DF 2 "register_operand" "f")]
-+ UNSPEC_FHSUB))]
-+ "TARGET_VIS3"
-+ "fhsubd\t%1, %2, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+(define_insn "fnhaddsf_vis"
-+ [(set (match_operand:SF 0 "register_operand" "=f")
-+ (neg:SF (unspec:SF [(match_operand:SF 1 "register_operand" "f")
-+ (match_operand:SF 2 "register_operand" "f")]
-+ UNSPEC_FHADD)))]
-+ "TARGET_VIS3"
-+ "fnhadds\t%1, %2, %0"
-+ [(set_attr "type" "fp")])
-+
-+(define_insn "fnhadddf_vis"
-+ [(set (match_operand:DF 0 "register_operand" "=f")
-+ (neg:DF (unspec:DF [(match_operand:DF 1 "register_operand" "f")
-+ (match_operand:DF 2 "register_operand" "f")]
-+ UNSPEC_FHADD)))]
-+ "TARGET_VIS3"
-+ "fnhaddd\t%1, %2, %0"
-+ [(set_attr "type" "fp")
-+ (set_attr "fptype" "double")])
-+
-+;; VIS4B instructions.
-+
-+(define_mode_iterator DUMODE [V2SI V4HI V8QI])
-+
-+(define_insn "dictunpack<DUMODE:vbits>"
-+ [(set (match_operand:DUMODE 0 "register_operand" "=e")
-+ (unspec:DUMODE [(match_operand:DF 1 "register_operand" "e")
-+ (match_operand:SI 2 "imm5_operand_dictunpack<DUMODE:vbits>" "t")]
-+ UNSPEC_DICTUNPACK))]
-+ "TARGET_VIS4B"
-+ "dictunpack\t%1, %2, %0"
-+ [(set_attr "type" "fga")
-+ (set_attr "subtype" "other")])
-+
-+(define_mode_iterator FPCSMODE [V2SI V4HI V8QI])
-+(define_code_iterator fpcscond [le gt eq ne])
-+(define_code_iterator fpcsucond [le gt])
-+
-+(define_insn "fpcmp<fpcscond:code><FPCSMODE:vbits><P:mode>shl"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(fpcscond:FPCSMODE (match_operand:FPCSMODE 1 "register_operand" "e")
-+ (match_operand:FPCSMODE 2 "register_operand" "e"))
-+ (match_operand:SI 3 "imm2_operand" "q")]
-+ UNSPEC_FPCMPSHL))]
-+ "TARGET_VIS4B"
-+ "fpcmp<fpcscond:code><FPCSMODE:vbits>shl\t%1, %2, %3, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_insn "fpcmpu<fpcsucond:code><FPCSMODE:vbits><P:mode>shl"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(fpcsucond:FPCSMODE (match_operand:FPCSMODE 1 "register_operand" "e")
-+ (match_operand:FPCSMODE 2 "register_operand" "e"))
-+ (match_operand:SI 3 "imm2_operand" "q")]
-+ UNSPEC_FPUCMPSHL))]
-+ "TARGET_VIS4B"
-+ "fpcmpu<fpcsucond:code><FPCSMODE:vbits>shl\t%1, %2, %3, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_insn "fpcmpde<FPCSMODE:vbits><P:mode>shl"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:FPCSMODE 1 "register_operand" "e")
-+ (match_operand:FPCSMODE 2 "register_operand" "e")
-+ (match_operand:SI 3 "imm2_operand" "q")]
-+ UNSPEC_FPCMPDESHL))]
-+ "TARGET_VIS4B"
-+ "fpcmpde<FPCSMODE:vbits>shl\t%1, %2, %3, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(define_insn "fpcmpur<FPCSMODE:vbits><P:mode>shl"
-+ [(set (match_operand:P 0 "register_operand" "=r")
-+ (unspec:P [(match_operand:FPCSMODE 1 "register_operand" "e")
-+ (match_operand:FPCSMODE 2 "register_operand" "e")
-+ (match_operand:SI 3 "imm2_operand" "q")]
-+ UNSPEC_FPCMPURSHL))]
-+ "TARGET_VIS4B"
-+ "fpcmpur<FPCSMODE:vbits>shl\t%1, %2, %3, %0"
-+ [(set_attr "type" "viscmp")])
-+
-+(include "sync.md")
-diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc-protos.h gcc-10.3.0/gcc/config/sparc/sparc-protos.h
---- gcc-10.3.0.orig/gcc/config/sparc/sparc-protos.h 2021-04-08 13:56:28.201742273 +0200
-+++ gcc-10.3.0/gcc/config/sparc/sparc-protos.h 2021-04-09 07:51:37.812496739 +0200
-@@ -69,7 +69,6 @@
- extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
- extern int sparc_split_reg_reg_legitimate (rtx, rtx);
- extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
--extern const char *output_load_pcrel_sym (rtx *);
- extern const char *output_ubranch (rtx, rtx_insn *);
- extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
- extern const char *output_return (rtx_insn *);
-diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.c-torture/compile/20191108-1.c gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
---- gcc-10.3.0.orig/gcc/testsuite/gcc.c-torture/compile/20191108-1.c 2021-04-08 13:56:28.929751064 +0200
-+++ gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c 1970-01-01 01:00:00.000000000 +0100
-@@ -1,14 +0,0 @@
--/* PR target/92095 */
--/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
--
--typedef union {
-- double a;
-- int b[2];
--} c;
--
--double d(int e)
--{
-- c f;
-- (&f)->b[0] = 15728640;
-- return e ? -(&f)->a : (&f)->a;
--}
-diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-3.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c
---- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-3.c 2021-04-08 13:56:29.453757389 +0200
-+++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c 2021-04-09 07:51:37.988507907 +0200
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target lp64 } */
--/* { dg-options "-O -fno-pie" } */
-+/* { dg-options "-O" } */
-
- #include <stdbool.h>
- #include <stdint.h>
-diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-4.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c
---- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-4.c 2021-04-08 13:56:29.453757389 +0200
-+++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c 2021-04-09 07:51:37.988507907 +0200
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target lp64 } */
--/* { dg-options "-O -fno-pie -mno-vis3 -mno-vis4" } */
-+/* { dg-options "-O -mno-vis3 -mno-vis4" } */
-
- #include <stdbool.h>
- #include <stdint.h>
-diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-5.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c
---- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-5.c 2021-04-08 13:56:29.453757389 +0200
-+++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c 2021-04-09 07:51:37.992508161 +0200
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target lp64 } */
--/* { dg-options "-O -fno-pie -mvis3" } */
-+/* { dg-options "-O -mvis3" } */
-
- #include <stdbool.h>
- #include <stdint.h>
diff --git a/toolchain/gcc/patches/10.3.0/add-crtreloc.frv b/toolchain/gcc/patches/10.5.0/add-crtreloc.frv
index 30de24cdc..30de24cdc 100644
--- a/toolchain/gcc/patches/10.3.0/add-crtreloc.frv
+++ b/toolchain/gcc/patches/10.5.0/add-crtreloc.frv
diff --git a/toolchain/gcc/patches/10.3.0/c6x-disable-multilib.patch b/toolchain/gcc/patches/10.5.0/c6x-disable-multilib.patch
index cbee6f785..cbee6f785 100644
--- a/toolchain/gcc/patches/10.3.0/c6x-disable-multilib.patch
+++ b/toolchain/gcc/patches/10.5.0/c6x-disable-multilib.patch
diff --git a/toolchain/gcc/patches/10.3.0/ia64-fix-libgcc.patch b/toolchain/gcc/patches/10.5.0/ia64-fix-libgcc.patch
index f1f3c8d2d..f1f3c8d2d 100644
--- a/toolchain/gcc/patches/10.3.0/ia64-fix-libgcc.patch
+++ b/toolchain/gcc/patches/10.5.0/ia64-fix-libgcc.patch
diff --git a/toolchain/gcc/patches/10.5.0/j2.patch b/toolchain/gcc/patches/10.5.0/j2.patch
new file mode 100644
index 000000000..416475546
--- /dev/null
+++ b/toolchain/gcc/patches/10.5.0/j2.patch
@@ -0,0 +1,346 @@
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index 6fcdd771d4c..839a60d866e 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -547,7 +547,7 @@ s390*-*-*)
+ extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
+ ;;
+ # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
+-sh[123456789lbe]*-*-* | sh-*-*)
++sh[123456789lbej]*-*-* | sh-*-*)
+ cpu_type=sh
+ extra_options="${extra_options} fused-madd.opt"
+ extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
+@@ -3149,18 +3149,18 @@ s390x-ibm-tpf*)
+ extra_options="${extra_options} s390/tpf.opt"
+ tmake_file="${tmake_file} s390/t-s390"
+ ;;
+-sh-*-elf* | sh[12346l]*-*-elf* | \
+- sh-*-linux* | sh[2346lbe]*-*-linux* | \
++sh-*-elf* | sh[12346lj]*-*-elf* | \
++ sh-*-linux* | sh[2346lbej]*-*-linux* | \
+ sh-*-netbsdelf* | shl*-*-netbsdelf*)
+ tmake_file="${tmake_file} sh/t-sh sh/t-elf"
+ if test x${with_endian} = x; then
+ case ${target} in
+- sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
++ sh[j1234]*be-*-* | sh[j1234]*eb-*-*) with_endian=big ;;
+ shbe-*-* | sheb-*-*) with_endian=big,little ;;
+ sh[1234]l* | sh[34]*-*-linux*) with_endian=little ;;
+ shl* | sh*-*-linux* | \
+ sh-superh-elf) with_endian=little,big ;;
+- sh[1234]*-*-*) with_endian=big ;;
++ sh[j1234]*-*-*) with_endian=big ;;
+ *) with_endian=big,little ;;
+ esac
+ fi
+@@ -3227,6 +3227,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
+ sh2a_nofpu*) sh_cpu_target=sh2a-nofpu ;;
+ sh2a*) sh_cpu_target=sh2a ;;
+ sh2e*) sh_cpu_target=sh2e ;;
++ shj2*) sh_cpu_target=shj2;;
+ sh2*) sh_cpu_target=sh2 ;;
+ *) sh_cpu_target=sh1 ;;
+ esac
+@@ -3248,7 +3249,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
+ sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
+ sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
+ sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
+- sh3e | sh3 | sh2e | sh2 | sh1) ;;
++ sh3e | sh3 | sh2e | sh2 | sh1 | shj2) ;;
+ "") sh_cpu_default=${sh_cpu_target} ;;
+ *) echo "with_cpu=$with_cpu not supported"; exit 1 ;;
+ esac
+@@ -3257,9 +3258,9 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
+ case ${target} in
+ sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
+ sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
+- sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4 ;;
++ sh*-*-linux*) sh_multilibs=m1,m2,m2a,m3e,m4,mj2 ;;
+ sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
+- *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
++ *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single,mj2 ;;
+ esac
+ if test x$with_fp = xno; then
+ sh_multilibs="`echo $sh_multilibs|sed -e s/m4/sh4-nofpu/ -e s/,m4-[^,]*//g -e s/,m[23]e// -e s/m2a,m2a-single/m2a-nofpu/ -e s/m5-..m....,//g`"
+@@ -3274,7 +3275,8 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
+ m1 | m2 | m2e | m3 | m3e | \
+ m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
+ m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
+- m2a | m2a-single | m2a-single-only | m2a-nofpu)
++ m2a | m2a-single | m2a-single-only | m2a-nofpu | \
++ mj2)
+ # TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
+ # It is passed to MULTIILIB_OPTIONS verbatim.
+ TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
+@@ -3291,7 +3293,7 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
+ done
+ TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
+ if test x${enable_incomplete_targets} = xyes ; then
+- tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
++ tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1 SUPPORT_SHJ2=1"
+ fi
+ tm_file="$tm_file ./sysroot-suffix.h"
+ tmake_file="$tmake_file t-sysroot-suffix"
+@@ -5105,6 +5107,8 @@ case "${target}" in
+ ;;
+ m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
+ ;;
++ mj2)
++ ;;
+ *)
+ echo "Unknown CPU used in --with-cpu=$with_cpu, known values:" 1>&2
+ echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
+@@ -5315,7 +5319,7 @@ case ${target} in
+ tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
+ ;;
+
+- sh[123456ble]*-*-* | sh-*-*)
++ sh[123456blej]*-*-* | sh-*-*)
+ c_target_objs="${c_target_objs} sh-c.o"
+ cxx_target_objs="${cxx_target_objs} sh-c.o"
+ ;;
+diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
+index 84c0ea025b4..f15552af011 100644
+--- a/gcc/config/sh/sh.c
++++ b/gcc/config/sh/sh.c
+@@ -686,6 +686,7 @@ parse_validate_atomic_model_option (const char* str)
+ model_names[sh_atomic_model::hard_llcs] = "hard-llcs";
+ model_names[sh_atomic_model::soft_tcb] = "soft-tcb";
+ model_names[sh_atomic_model::soft_imask] = "soft-imask";
++ model_names[sh_atomic_model::hard_cas] = "hard-cas";
+
+ const char* model_cdef_names[sh_atomic_model::num_models];
+ model_cdef_names[sh_atomic_model::none] = "NONE";
+@@ -693,6 +694,7 @@ parse_validate_atomic_model_option (const char* str)
+ model_cdef_names[sh_atomic_model::hard_llcs] = "HARD_LLCS";
+ model_cdef_names[sh_atomic_model::soft_tcb] = "SOFT_TCB";
+ model_cdef_names[sh_atomic_model::soft_imask] = "SOFT_IMASK";
++ model_cdef_names[sh_atomic_model::hard_cas] = "HARD_CAS";
+
+ sh_atomic_model ret;
+ ret.type = sh_atomic_model::none;
+@@ -771,6 +773,9 @@ got_mode_name:;
+ if (ret.type == sh_atomic_model::soft_imask && TARGET_USERMODE)
+ err_ret ("cannot use atomic model %s in user mode", ret.name);
+
++ if (ret.type == sh_atomic_model::hard_cas && !TARGET_SHJ2)
++ err_ret ("atomic model %s is only available J2 targets", ret.name);
++
+ return ret;
+
+ #undef err_ret
+@@ -827,6 +832,8 @@ sh_option_override (void)
+ sh_cpu = PROCESSOR_SH2E;
+ if (TARGET_SH2A)
+ sh_cpu = PROCESSOR_SH2A;
++ if (TARGET_SHJ2)
++ sh_cpu = PROCESSOR_SHJ2;
+ if (TARGET_SH3)
+ sh_cpu = PROCESSOR_SH3;
+ if (TARGET_SH3E)
+diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
+index 8ab5455505c..6ffed6da403 100644
+--- a/gcc/config/sh/sh.h
++++ b/gcc/config/sh/sh.h
+@@ -85,6 +85,7 @@ extern int code_for_indirect_jump_scratch;
+ #define SUPPORT_SH4_SINGLE 1
+ #define SUPPORT_SH2A 1
+ #define SUPPORT_SH2A_SINGLE 1
++#define SUPPORT_SHJ2 1
+ #endif
+
+ #define TARGET_DIVIDE_CALL_DIV1 (sh_div_strategy == SH_DIV_CALL_DIV1)
+@@ -117,6 +118,7 @@ extern int code_for_indirect_jump_scratch;
+ #define SELECT_SH4A_SINGLE_ONLY (MASK_SH4A | SELECT_SH4_SINGLE_ONLY)
+ #define SELECT_SH4A (MASK_SH4A | SELECT_SH4)
+ #define SELECT_SH4A_SINGLE (MASK_SH4A | SELECT_SH4_SINGLE)
++#define SELECT_SHJ2 (MASK_SHJ2 | SELECT_SH2)
+
+ #if SUPPORT_SH1
+ #define SUPPORT_SH2 1
+@@ -124,6 +126,7 @@ extern int code_for_indirect_jump_scratch;
+ #if SUPPORT_SH2
+ #define SUPPORT_SH3 1
+ #define SUPPORT_SH2A_NOFPU 1
++#define SUPPORT_SHJ2 1
+ #endif
+ #if SUPPORT_SH3
+ #define SUPPORT_SH4_NOFPU 1
+@@ -156,7 +159,7 @@ extern int code_for_indirect_jump_scratch;
+ #define MASK_ARCH (MASK_SH1 | MASK_SH2 | MASK_SH3 | MASK_SH_E | MASK_SH4 \
+ | MASK_HARD_SH2A | MASK_HARD_SH2A_DOUBLE | MASK_SH4A \
+ | MASK_HARD_SH4 | MASK_FPU_SINGLE \
+- | MASK_FPU_SINGLE_ONLY)
++ | MASK_FPU_SINGLE_ONLY | MASK_SHJ2)
+
+ /* This defaults us to big-endian. */
+ #ifndef TARGET_ENDIAN_DEFAULT
+@@ -231,7 +234,8 @@ extern int code_for_indirect_jump_scratch;
+ %{m2a-single:--isa=sh2a} \
+ %{m2a-single-only:--isa=sh2a} \
+ %{m2a-nofpu:--isa=sh2a-nofpu} \
+-%{m4al:-dsp}"
++%{m4al:-dsp} \
++%{mj2:-isa=j2}"
+
+ #define ASM_SPEC SH_ASM_SPEC
+
+@@ -347,6 +351,7 @@ struct sh_atomic_model
+ hard_llcs,
+ soft_tcb,
+ soft_imask,
++ hard_cas,
+
+ num_models
+ };
+@@ -390,6 +395,9 @@ extern const sh_atomic_model& selected_atomic_model (void);
+ #define TARGET_ATOMIC_SOFT_IMASK \
+ (selected_atomic_model ().type == sh_atomic_model::soft_imask)
+
++#define TARGET_ATOMIC_HARD_CAS \
++ (selected_atomic_model ().type == sh_atomic_model::hard_cas)
++
+ #endif // __cplusplus
+
+ #define SUBTARGET_OVERRIDE_OPTIONS (void) 0
+@@ -1484,7 +1492,7 @@ extern bool current_function_interrupt;
+
+ /* Nonzero if the target supports dynamic shift instructions
+ like shad and shld. */
+-#define TARGET_DYNSHIFT (TARGET_SH3 || TARGET_SH2A)
++#define TARGET_DYNSHIFT (TARGET_SH3 || TARGET_SH2A || TARGET_SHJ2)
+
+ /* The cost of using the dynamic shift insns (shad, shld) are the same
+ if they are available. If they are not available a library function will
+@@ -1747,6 +1755,7 @@ enum processor_type {
+ PROCESSOR_SH2,
+ PROCESSOR_SH2E,
+ PROCESSOR_SH2A,
++ PROCESSOR_SHJ2,
+ PROCESSOR_SH3,
+ PROCESSOR_SH3E,
+ PROCESSOR_SH4,
+diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt
+index 908603b92e1..e6108dabbc6 100644
+--- a/gcc/config/sh/sh.opt
++++ b/gcc/config/sh/sh.opt
+@@ -65,6 +65,10 @@ m2e
+ Target RejectNegative Condition(SUPPORT_SH2E)
+ Generate SH2e code.
+
++mj2
++Target RejectNegative Mask(SHJ2) Condition(SUPPORT_SHJ2)
++Generate J2 code.
++
+ m3
+ Target RejectNegative Mask(SH3) Condition(SUPPORT_SH3)
+ Generate SH3 code.
+diff --git a/gcc/config/sh/sync.md b/gcc/config/sh/sync.md
+index 25f3b695d2f..55119386a18 100644
+--- a/gcc/config/sh/sync.md
++++ b/gcc/config/sh/sync.md
+@@ -240,6 +240,9 @@
+ || (TARGET_SH4A && <MODE>mode == SImode && !TARGET_ATOMIC_STRICT))
+ atomic_insn = gen_atomic_compare_and_swap<mode>_hard (old_val, mem,
+ exp_val, new_val);
++ else if (TARGET_ATOMIC_HARD_CAS && <MODE>mode == SImode)
++ atomic_insn = gen_atomic_compare_and_swap<mode>_cas (old_val, mem,
++ exp_val, new_val);
+ else if (TARGET_ATOMIC_SOFT_GUSA)
+ atomic_insn = gen_atomic_compare_and_swap<mode>_soft_gusa (old_val, mem,
+ exp_val, new_val);
+@@ -306,6 +309,57 @@
+ }
+ [(set_attr "length" "14")])
+
++(define_expand "atomic_compare_and_swapsi_cas"
++ [(set (match_operand:SI 0 "register_operand" "=r")
++ (unspec_volatile:SI
++ [(match_operand:SI 1 "atomic_mem_operand_0" "=Sra")
++ (match_operand:SI 2 "register_operand" "r")
++ (match_operand:SI 3 "register_operand" "r")]
++ UNSPECV_CMPXCHG_1))]
++ "TARGET_ATOMIC_HARD_CAS"
++{
++ rtx mem = gen_rtx_REG (SImode, 0);
++ emit_move_insn (mem, force_reg (SImode, XEXP (operands[1], 0)));
++ emit_insn (gen_shj2_cas (operands[0], mem, operands[2], operands[3]));
++ DONE;
++})
++
++(define_insn "shj2_cas"
++ [(set (match_operand:SI 0 "register_operand" "=&r")
++ (unspec_volatile:SI
++ [(match_operand:SI 1 "register_operand" "=r")
++ (match_operand:SI 2 "register_operand" "r")
++ (match_operand:SI 3 "register_operand" "0")]
++ UNSPECV_CMPXCHG_1))
++ (set (reg:SI T_REG)
++ (unspec_volatile:SI [(const_int 0)] UNSPECV_CMPXCHG_3))]
++ "TARGET_ATOMIC_HARD_CAS"
++ "cas.l %2,%0,@%1"
++ [(set_attr "length" "2")]
++)
++
++(define_expand "atomic_compare_and_swapqi_cas"
++ [(set (match_operand:SI 0 "arith_reg_dest" "=&r")
++ (unspec_volatile:SI
++ [(match_operand:SI 1 "atomic_mem_operand_0" "=Sra")
++ (match_operand:SI 2 "arith_operand" "rI08")
++ (match_operand:SI 3 "arith_operand" "rI08")]
++ UNSPECV_CMPXCHG_1))]
++ "TARGET_ATOMIC_HARD_CAS"
++{FAIL;}
++)
++
++(define_expand "atomic_compare_and_swaphi_cas"
++ [(set (match_operand:SI 0 "arith_reg_dest" "=&r")
++ (unspec_volatile:SI
++ [(match_operand:SI 1 "atomic_mem_operand_0" "=Sra")
++ (match_operand:SI 2 "arith_operand" "rI08")
++ (match_operand:SI 3 "arith_operand" "rI08")]
++ UNSPECV_CMPXCHG_1))]
++ "TARGET_ATOMIC_HARD_CAS"
++{FAIL;}
++)
++
+ ;; The QIHImode llcs patterns modify the address register of the memory
+ ;; operand. In order to express that, we have to open code the memory
+ ;; operand. Initially the insn is expanded like every other atomic insn
+diff --git a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh
+index a402359be72..dbd0bf992bf 100644
+--- a/gcc/config/sh/t-sh
++++ b/gcc/config/sh/t-sh
+@@ -50,7 +50,8 @@ MULTILIB_MATCHES = $(shell \
+ m2e,m3e,m4-single-only,m4-100-single-only,m4-200-single-only,m4-300-single-only,m4a-single-only \
+ m2a-single,m2a-single-only \
+ m4-single,m4-100-single,m4-200-single,m4-300-single,m4a-single \
+- m4,m4-100,m4-200,m4-300,m4a; do \
++ m4,m4-100,m4-200,m4-300,m4a \
++ mj2; do \
+ subst= ; \
+ for lib in `echo $$abi|tr , ' '` ; do \
+ if test "`echo $$multilibs|sed s/$$lib//`" != "$$multilibs"; then \
+@@ -63,9 +64,9 @@ MULTILIB_MATCHES = $(shell \
+
+ # SH1 and SH2A support big endian only.
+ ifeq ($(DEFAULT_ENDIAN),ml)
+-MULTILIB_EXCEPTIONS = m1 ml/m1 m2a* ml/m2a* $(TM_MULTILIB_EXCEPTIONS_CONFIG)
++MULTILIB_EXCEPTIONS = m1 ml/m1 m2a* ml/m2a* ml/mj2 $(TM_MULTILIB_EXCEPTIONS_CONFIG)
+ else
+-MULTILIB_EXCEPTIONS = ml/m1 ml/m2a* $(TM_MULTILIB_EXCEPTIONS_CONFIG)
++MULTILIB_EXCEPTIONS = ml/m1 ml/m2a* ml/mj2 $(TM_MULTILIB_EXCEPTIONS_CONFIG)
+ endif
+
+ MULTILIB_OSDIRNAMES = \
+@@ -87,7 +88,8 @@ MULTILIB_OSDIRNAMES = \
+ m4a-single-only=!m4a-single-only $(OTHER_ENDIAN)/m4a-single-only=!$(OTHER_ENDIAN)/m4a-single-only \
+ m4a-single=!m4a-single $(OTHER_ENDIAN)/m4a-single=!$(OTHER_ENDIAN)/m4a-single \
+ m4a=!m4a $(OTHER_ENDIAN)/m4a=!$(OTHER_ENDIAN)/m4a \
+- m4al=!m4al $(OTHER_ENDIAN)/m4al=!$(OTHER_ENDIAN)/m4al
++ m4al=!m4al $(OTHER_ENDIAN)/m4al=!$(OTHER_ENDIAN)/m4al \
++ mj2=!j2
+
+ $(out_object_file): gt-sh.h
+ gt-sh.h : s-gtype ; @true
diff --git a/toolchain/gcc/patches/10.3.0/nios2-softfp.patch b/toolchain/gcc/patches/10.5.0/nios2-softfp.patch
index c677c6c2f..c677c6c2f 100644
--- a/toolchain/gcc/patches/10.3.0/nios2-softfp.patch
+++ b/toolchain/gcc/patches/10.5.0/nios2-softfp.patch
diff --git a/toolchain/gcc/patches/10.5.0/revert-sparc.patch b/toolchain/gcc/patches/10.5.0/revert-sparc.patch
new file mode 100644
index 000000000..2ce948c82
--- /dev/null
+++ b/toolchain/gcc/patches/10.5.0/revert-sparc.patch
@@ -0,0 +1,283 @@
+diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.c gcc-10.3.0/gcc/config/sparc/sparc.c
+--- gcc-10.3.0.orig/gcc/config/sparc/sparc.c 2021-04-08 13:56:28.201742273 +0200
++++ gcc-10.3.0/gcc/config/sparc/sparc.c 2022-01-24 10:19:53.724121161 +0100
+@@ -4157,6 +4157,13 @@
+ static bool
+ sparc_cannot_force_const_mem (machine_mode mode, rtx x)
+ {
++ /* After IRA has run in PIC mode, it is too late to put anything into the
++ constant pool if the PIC register hasn't already been initialized. */
++ if ((lra_in_progress || reload_in_progress)
++ && flag_pic
++ && !crtl->uses_pic_offset_table)
++ return true;
++
+ switch (GET_CODE (x))
+ {
+ case CONST_INT:
+@@ -4192,11 +4199,9 @@
+ }
+
+ /* Global Offset Table support. */
+-static GTY(()) rtx got_symbol_rtx = NULL_RTX;
+-static GTY(()) rtx got_register_rtx = NULL_RTX;
+ static GTY(()) rtx got_helper_rtx = NULL_RTX;
+-
+-static GTY(()) bool got_helper_needed = false;
++static GTY(()) rtx got_register_rtx = NULL_RTX;
++static GTY(()) rtx got_symbol_rtx = NULL_RTX;
+
+ /* Return the SYMBOL_REF for the Global Offset Table. */
+
+@@ -4209,6 +4214,27 @@
+ return got_symbol_rtx;
+ }
+
++#ifdef HAVE_GAS_HIDDEN
++# define USE_HIDDEN_LINKONCE 1
++#else
++# define USE_HIDDEN_LINKONCE 0
++#endif
++
++static void
++get_pc_thunk_name (char name[32], unsigned int regno)
++{
++ const char *reg_name = reg_names[regno];
++
++ /* Skip the leading '%' as that cannot be used in a
++ symbol name. */
++ reg_name += 1;
++
++ if (USE_HIDDEN_LINKONCE)
++ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
++ else
++ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
++}
++
+ /* Wrapper around the load_pcrel_sym{si,di} patterns. */
+
+ static rtx
+@@ -4228,78 +4254,30 @@
+ return insn;
+ }
+
+-/* Output the load_pcrel_sym{si,di} patterns. */
+-
+-const char *
+-output_load_pcrel_sym (rtx *operands)
+-{
+- if (flag_delayed_branch)
+- {
+- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
+- output_asm_insn ("call\t%a2", operands);
+- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
+- }
+- else
+- {
+- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
+- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
+- output_asm_insn ("call\t%a2", operands);
+- output_asm_insn (" nop", NULL);
+- }
+-
+- if (operands[2] == got_helper_rtx)
+- got_helper_needed = true;
+-
+- return "";
+-}
+-
+-#ifdef HAVE_GAS_HIDDEN
+-# define USE_HIDDEN_LINKONCE 1
+-#else
+-# define USE_HIDDEN_LINKONCE 0
+-#endif
+-
+ /* Emit code to load the GOT register. */
+
+ void
+ load_got_register (void)
+ {
+- rtx insn;
++ if (!got_register_rtx)
++ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
+
+ if (TARGET_VXWORKS_RTP)
+- {
+- if (!got_register_rtx)
+- got_register_rtx = pic_offset_table_rtx;
+-
+- insn = gen_vxworks_load_got ();
+- }
++ emit_insn (gen_vxworks_load_got ());
+ else
+ {
+- if (!got_register_rtx)
+- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
+-
+ /* The GOT symbol is subject to a PC-relative relocation so we need a
+ helper function to add the PC value and thus get the final value. */
+ if (!got_helper_rtx)
+ {
+ char name[32];
+-
+- /* Skip the leading '%' as that cannot be used in a symbol name. */
+- if (USE_HIDDEN_LINKONCE)
+- sprintf (name, "__sparc_get_pc_thunk.%s",
+- reg_names[REGNO (got_register_rtx)] + 1);
+- else
+- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
+- REGNO (got_register_rtx));
+-
++ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
+ got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
+ }
+
+- insn
+- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
++ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
++ got_helper_rtx));
+ }
+-
+- emit_insn (insn);
+ }
+
+ /* Ensure that we are not using patterns that are not OK with PIC. */
+@@ -5464,7 +5442,7 @@
+ return true;
+
+ /* GOT register (%l7) if needed. */
+- if (got_register_rtx && regno == REGNO (got_register_rtx))
++ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
+ return true;
+
+ /* If the function accesses prior frames, the frame pointer and the return
+@@ -12507,9 +12485,10 @@
+ sparc_file_end (void)
+ {
+ /* If we need to emit the special GOT helper function, do so now. */
+- if (got_helper_needed)
++ if (got_helper_rtx)
+ {
+ const char *name = XSTR (got_helper_rtx, 0);
++ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
+ #ifdef DWARF2_UNWIND_INFO
+ bool do_cfi;
+ #endif
+@@ -12546,22 +12525,17 @@
+ #ifdef DWARF2_UNWIND_INFO
+ do_cfi = dwarf2out_do_cfi_asm ();
+ if (do_cfi)
+- output_asm_insn (".cfi_startproc", NULL);
++ fprintf (asm_out_file, "\t.cfi_startproc\n");
+ #endif
+ if (flag_delayed_branch)
+- {
+- output_asm_insn ("jmp\t%%o7+8", NULL);
+- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
+- }
++ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
++ reg_name, reg_name);
+ else
+- {
+- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
+- output_asm_insn ("jmp\t%%o7+8", NULL);
+- output_asm_insn (" nop", NULL);
+- }
++ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
++ reg_name, reg_name);
+ #ifdef DWARF2_UNWIND_INFO
+ if (do_cfi)
+- output_asm_insn (".cfi_endproc", NULL);
++ fprintf (asm_out_file, "\t.cfi_endproc\n");
+ #endif
+ }
+
+@@ -13056,10 +13030,7 @@
+ edge entry_edge;
+ rtx_insn *seq;
+
+- /* In PIC mode, we need to always initialize the PIC register if optimization
+- is enabled, because we are called from IRA and LRA may later force things
+- to the constant pool for optimization purposes. */
+- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
++ if (!crtl->uses_pic_offset_table)
+ return;
+
+ start_sequence ();
+diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.md gcc-10.3.0/gcc/config/sparc/sparc.md
+--- gcc-10.3.0.orig/gcc/config/sparc/sparc.md 2021-04-08 13:56:28.205742322 +0200
++++ gcc-10.3.0/gcc/config/sparc/sparc.md 2022-01-24 10:19:54.504102046 +0100
+@@ -1601,7 +1601,10 @@
+ (clobber (reg:P O7_REG))]
+ "REGNO (operands[0]) == INTVAL (operands[3])"
+ {
+- return output_load_pcrel_sym (operands);
++ if (flag_delayed_branch)
++ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
++ else
++ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
+ }
+ [(set (attr "type") (const_string "multi"))
+ (set (attr "length")
+diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc-protos.h gcc-10.3.0/gcc/config/sparc/sparc-protos.h
+--- gcc-10.3.0.orig/gcc/config/sparc/sparc-protos.h 2021-04-08 13:56:28.201742273 +0200
++++ gcc-10.3.0/gcc/config/sparc/sparc-protos.h 2022-01-24 10:19:54.548100968 +0100
+@@ -69,7 +69,6 @@
+ extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
+ extern int sparc_split_reg_reg_legitimate (rtx, rtx);
+ extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
+-extern const char *output_load_pcrel_sym (rtx *);
+ extern const char *output_ubranch (rtx, rtx_insn *);
+ extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
+ extern const char *output_return (rtx_insn *);
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.c-torture/compile/20191108-1.c gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.c-torture/compile/20191108-1.c 2021-04-08 13:56:28.929751064 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,14 +0,0 @@
+-/* PR target/92095 */
+-/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
+-
+-typedef union {
+- double a;
+- int b[2];
+-} c;
+-
+-double d(int e)
+-{
+- c f;
+- (&f)->b[0] = 15728640;
+- return e ? -(&f)->a : (&f)->a;
+-}
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-3.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-3.c 2021-04-08 13:56:29.453757389 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c 2022-01-24 10:19:54.688097536 +0100
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -fno-pie" } */
++/* { dg-options "-O" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-4.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-4.c 2021-04-08 13:56:29.453757389 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c 2022-01-24 10:19:55.336081656 +0100
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -fno-pie -mno-vis3 -mno-vis4" } */
++/* { dg-options "-O -mno-vis3 -mno-vis4" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-5.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-5.c 2021-04-08 13:56:29.453757389 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c 2022-01-24 10:19:55.336081656 +0100
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -fno-pie -mvis3" } */
++/* { dg-options "-O -mvis3" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
diff --git a/toolchain/gcc/patches/11.4.0/add-crtreloc.frv b/toolchain/gcc/patches/11.4.0/add-crtreloc.frv
new file mode 100644
index 000000000..30de24cdc
--- /dev/null
+++ b/toolchain/gcc/patches/11.4.0/add-crtreloc.frv
@@ -0,0 +1,12 @@
+diff -Nur gcc-8.3.0.orig/gcc/config/frv/linux.h gcc-8.3.0/gcc/config/frv/linux.h
+--- gcc-8.3.0.orig/gcc/config/frv/linux.h 2018-01-03 11:03:58.000000000 +0100
++++ gcc-8.3.0/gcc/config/frv/linux.h 2019-10-08 10:52:00.176295821 +0200
+@@ -27,7 +27,7 @@
+
+ #undef STARTFILE_SPEC
+ #define STARTFILE_SPEC \
+- "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
++ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} crtreloc.o%s \
+ crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
+
+ #undef ENDFILE_SPEC
diff --git a/toolchain/gcc/patches/11.4.0/c6x-disable-multilib.patch b/toolchain/gcc/patches/11.4.0/c6x-disable-multilib.patch
new file mode 100644
index 000000000..cbee6f785
--- /dev/null
+++ b/toolchain/gcc/patches/11.4.0/c6x-disable-multilib.patch
@@ -0,0 +1,10 @@
+diff -Nur gcc-8.3.0.orig/gcc/config/c6x/t-c6x-uclinux gcc-8.3.0/gcc/config/c6x/t-c6x-uclinux
+--- gcc-8.3.0.orig/gcc/config/c6x/t-c6x-uclinux 2011-11-02 16:23:48.000000000 +0100
++++ gcc-8.3.0/gcc/config/c6x/t-c6x-uclinux 2019-10-08 07:49:50.255159650 +0200
+@@ -1,3 +1,3 @@
+-MULTILIB_OSDIRNAMES = march.c674x=!c674x
+-MULTILIB_OSDIRNAMES += mbig-endian=!be
+-MULTILIB_OSDIRNAMES += mbig-endian/march.c674x=!be/c674x
++MULTILIB_OSDIRNAMES =
++#MULTILIB_OSDIRNAMES += mbig-endian=!be
++#MULTILIB_OSDIRNAMES += mbig-endian/march.c674x=!be/c674x
diff --git a/toolchain/gcc/patches/11.4.0/csky.patch b/toolchain/gcc/patches/11.4.0/csky.patch
new file mode 100644
index 000000000..ee352951b
--- /dev/null
+++ b/toolchain/gcc/patches/11.4.0/csky.patch
@@ -0,0 +1,12 @@
+diff -Nur gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c gcc-11.2.0/libgcc/config/csky/linux-atomic.c
+--- gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c 2021-07-28 08:55:08.760307899 +0200
++++ gcc-11.2.0/libgcc/config/csky/linux-atomic.c 2021-12-14 14:19:23.685729233 +0100
+@@ -24,7 +24,7 @@
+ <http://www.gnu.org/licenses/>. */
+
+ /* Kernel helper for compare-and-exchange. */
+-inline int
++int
+ __kernel_cmpxchg (int oldval, int newval, volatile int *ptr)
+ {
+ register int _a0 asm ("a0") = oldval;
diff --git a/toolchain/gcc/patches/11.4.0/ia64-fix-libgcc.patch b/toolchain/gcc/patches/11.4.0/ia64-fix-libgcc.patch
new file mode 100644
index 000000000..f1f3c8d2d
--- /dev/null
+++ b/toolchain/gcc/patches/11.4.0/ia64-fix-libgcc.patch
@@ -0,0 +1,17 @@
+diff -Nur gcc-6.3.0.orig/libgcc/config/ia64/fde-glibc.c gcc-6.3.0/libgcc/config/ia64/fde-glibc.c
+--- gcc-6.3.0.orig/libgcc/config/ia64/fde-glibc.c 2016-01-04 15:30:50.000000000 +0100
++++ gcc-6.3.0/libgcc/config/ia64/fde-glibc.c 2017-03-05 13:07:33.316600613 +0100
+@@ -25,6 +25,8 @@
+ /* Locate the FDE entry for a given address, using glibc ld.so routines
+ to avoid register/deregister calls at DSO load/unload. */
+
++#ifndef inhibit_libc
++
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE 1
+ #endif
+@@ -159,3 +161,4 @@
+
+ return data.ret;
+ }
++#endif
diff --git a/toolchain/gcc/patches/11.4.0/nios2-softfp.patch b/toolchain/gcc/patches/11.4.0/nios2-softfp.patch
new file mode 100644
index 000000000..c677c6c2f
--- /dev/null
+++ b/toolchain/gcc/patches/11.4.0/nios2-softfp.patch
@@ -0,0 +1,14 @@
+diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
+--- gcc-6.2.0.orig/libgcc/config.host 2016-05-17 08:15:52.000000000 +0200
++++ gcc-6.2.0/libgcc/config.host 2016-10-15 14:42:53.971919904 +0200
+@@ -962,6 +962,10 @@
+ ;;
+ esac
+ ;;
++nios2-*-linux-uclibc*)
++ tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++ md_unwind_header=nios2/linux-unwind.h
++ ;;
+ nios2-*-linux*)
+ tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc"
+ md_unwind_header=nios2/linux-unwind.h
diff --git a/toolchain/gcc/patches/11.4.0/revert.sparc b/toolchain/gcc/patches/11.4.0/revert.sparc
new file mode 100644
index 000000000..2ce948c82
--- /dev/null
+++ b/toolchain/gcc/patches/11.4.0/revert.sparc
@@ -0,0 +1,283 @@
+diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.c gcc-10.3.0/gcc/config/sparc/sparc.c
+--- gcc-10.3.0.orig/gcc/config/sparc/sparc.c 2021-04-08 13:56:28.201742273 +0200
++++ gcc-10.3.0/gcc/config/sparc/sparc.c 2022-01-24 10:19:53.724121161 +0100
+@@ -4157,6 +4157,13 @@
+ static bool
+ sparc_cannot_force_const_mem (machine_mode mode, rtx x)
+ {
++ /* After IRA has run in PIC mode, it is too late to put anything into the
++ constant pool if the PIC register hasn't already been initialized. */
++ if ((lra_in_progress || reload_in_progress)
++ && flag_pic
++ && !crtl->uses_pic_offset_table)
++ return true;
++
+ switch (GET_CODE (x))
+ {
+ case CONST_INT:
+@@ -4192,11 +4199,9 @@
+ }
+
+ /* Global Offset Table support. */
+-static GTY(()) rtx got_symbol_rtx = NULL_RTX;
+-static GTY(()) rtx got_register_rtx = NULL_RTX;
+ static GTY(()) rtx got_helper_rtx = NULL_RTX;
+-
+-static GTY(()) bool got_helper_needed = false;
++static GTY(()) rtx got_register_rtx = NULL_RTX;
++static GTY(()) rtx got_symbol_rtx = NULL_RTX;
+
+ /* Return the SYMBOL_REF for the Global Offset Table. */
+
+@@ -4209,6 +4214,27 @@
+ return got_symbol_rtx;
+ }
+
++#ifdef HAVE_GAS_HIDDEN
++# define USE_HIDDEN_LINKONCE 1
++#else
++# define USE_HIDDEN_LINKONCE 0
++#endif
++
++static void
++get_pc_thunk_name (char name[32], unsigned int regno)
++{
++ const char *reg_name = reg_names[regno];
++
++ /* Skip the leading '%' as that cannot be used in a
++ symbol name. */
++ reg_name += 1;
++
++ if (USE_HIDDEN_LINKONCE)
++ sprintf (name, "__sparc_get_pc_thunk.%s", reg_name);
++ else
++ ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC", regno);
++}
++
+ /* Wrapper around the load_pcrel_sym{si,di} patterns. */
+
+ static rtx
+@@ -4228,78 +4254,30 @@
+ return insn;
+ }
+
+-/* Output the load_pcrel_sym{si,di} patterns. */
+-
+-const char *
+-output_load_pcrel_sym (rtx *operands)
+-{
+- if (flag_delayed_branch)
+- {
+- output_asm_insn ("sethi\t%%hi(%a1-4), %0", operands);
+- output_asm_insn ("call\t%a2", operands);
+- output_asm_insn (" add\t%0, %%lo(%a1+4), %0", operands);
+- }
+- else
+- {
+- output_asm_insn ("sethi\t%%hi(%a1-8), %0", operands);
+- output_asm_insn ("add\t%0, %%lo(%a1-4), %0", operands);
+- output_asm_insn ("call\t%a2", operands);
+- output_asm_insn (" nop", NULL);
+- }
+-
+- if (operands[2] == got_helper_rtx)
+- got_helper_needed = true;
+-
+- return "";
+-}
+-
+-#ifdef HAVE_GAS_HIDDEN
+-# define USE_HIDDEN_LINKONCE 1
+-#else
+-# define USE_HIDDEN_LINKONCE 0
+-#endif
+-
+ /* Emit code to load the GOT register. */
+
+ void
+ load_got_register (void)
+ {
+- rtx insn;
++ if (!got_register_rtx)
++ got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
+
+ if (TARGET_VXWORKS_RTP)
+- {
+- if (!got_register_rtx)
+- got_register_rtx = pic_offset_table_rtx;
+-
+- insn = gen_vxworks_load_got ();
+- }
++ emit_insn (gen_vxworks_load_got ());
+ else
+ {
+- if (!got_register_rtx)
+- got_register_rtx = gen_rtx_REG (Pmode, GLOBAL_OFFSET_TABLE_REGNUM);
+-
+ /* The GOT symbol is subject to a PC-relative relocation so we need a
+ helper function to add the PC value and thus get the final value. */
+ if (!got_helper_rtx)
+ {
+ char name[32];
+-
+- /* Skip the leading '%' as that cannot be used in a symbol name. */
+- if (USE_HIDDEN_LINKONCE)
+- sprintf (name, "__sparc_get_pc_thunk.%s",
+- reg_names[REGNO (got_register_rtx)] + 1);
+- else
+- ASM_GENERATE_INTERNAL_LABEL (name, "LADDPC",
+- REGNO (got_register_rtx));
+-
++ get_pc_thunk_name (name, GLOBAL_OFFSET_TABLE_REGNUM);
+ got_helper_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (name));
+ }
+
+- insn
+- = gen_load_pcrel_sym (got_register_rtx, sparc_got (), got_helper_rtx);
++ emit_insn (gen_load_pcrel_sym (got_register_rtx, sparc_got (),
++ got_helper_rtx));
+ }
+-
+- emit_insn (insn);
+ }
+
+ /* Ensure that we are not using patterns that are not OK with PIC. */
+@@ -5464,7 +5442,7 @@
+ return true;
+
+ /* GOT register (%l7) if needed. */
+- if (got_register_rtx && regno == REGNO (got_register_rtx))
++ if (regno == GLOBAL_OFFSET_TABLE_REGNUM && got_register_rtx)
+ return true;
+
+ /* If the function accesses prior frames, the frame pointer and the return
+@@ -12507,9 +12485,10 @@
+ sparc_file_end (void)
+ {
+ /* If we need to emit the special GOT helper function, do so now. */
+- if (got_helper_needed)
++ if (got_helper_rtx)
+ {
+ const char *name = XSTR (got_helper_rtx, 0);
++ const char *reg_name = reg_names[GLOBAL_OFFSET_TABLE_REGNUM];
+ #ifdef DWARF2_UNWIND_INFO
+ bool do_cfi;
+ #endif
+@@ -12546,22 +12525,17 @@
+ #ifdef DWARF2_UNWIND_INFO
+ do_cfi = dwarf2out_do_cfi_asm ();
+ if (do_cfi)
+- output_asm_insn (".cfi_startproc", NULL);
++ fprintf (asm_out_file, "\t.cfi_startproc\n");
+ #endif
+ if (flag_delayed_branch)
+- {
+- output_asm_insn ("jmp\t%%o7+8", NULL);
+- output_asm_insn (" add\t%%o7, %0, %0", &got_register_rtx);
+- }
++ fprintf (asm_out_file, "\tjmp\t%%o7+8\n\t add\t%%o7, %s, %s\n",
++ reg_name, reg_name);
+ else
+- {
+- output_asm_insn ("add\t%%o7, %0, %0", &got_register_rtx);
+- output_asm_insn ("jmp\t%%o7+8", NULL);
+- output_asm_insn (" nop", NULL);
+- }
++ fprintf (asm_out_file, "\tadd\t%%o7, %s, %s\n\tjmp\t%%o7+8\n\t nop\n",
++ reg_name, reg_name);
+ #ifdef DWARF2_UNWIND_INFO
+ if (do_cfi)
+- output_asm_insn (".cfi_endproc", NULL);
++ fprintf (asm_out_file, "\t.cfi_endproc\n");
+ #endif
+ }
+
+@@ -13056,10 +13030,7 @@
+ edge entry_edge;
+ rtx_insn *seq;
+
+- /* In PIC mode, we need to always initialize the PIC register if optimization
+- is enabled, because we are called from IRA and LRA may later force things
+- to the constant pool for optimization purposes. */
+- if (!flag_pic || (!crtl->uses_pic_offset_table && !optimize))
++ if (!crtl->uses_pic_offset_table)
+ return;
+
+ start_sequence ();
+diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc.md gcc-10.3.0/gcc/config/sparc/sparc.md
+--- gcc-10.3.0.orig/gcc/config/sparc/sparc.md 2021-04-08 13:56:28.205742322 +0200
++++ gcc-10.3.0/gcc/config/sparc/sparc.md 2022-01-24 10:19:54.504102046 +0100
+@@ -1601,7 +1601,10 @@
+ (clobber (reg:P O7_REG))]
+ "REGNO (operands[0]) == INTVAL (operands[3])"
+ {
+- return output_load_pcrel_sym (operands);
++ if (flag_delayed_branch)
++ return "sethi\t%%hi(%a1-4), %0\n\tcall\t%a2\n\t add\t%0, %%lo(%a1+4), %0";
++ else
++ return "sethi\t%%hi(%a1-8), %0\n\tadd\t%0, %%lo(%a1-4), %0\n\tcall\t%a2\n\t nop";
+ }
+ [(set (attr "type") (const_string "multi"))
+ (set (attr "length")
+diff -Nur gcc-10.3.0.orig/gcc/config/sparc/sparc-protos.h gcc-10.3.0/gcc/config/sparc/sparc-protos.h
+--- gcc-10.3.0.orig/gcc/config/sparc/sparc-protos.h 2021-04-08 13:56:28.201742273 +0200
++++ gcc-10.3.0/gcc/config/sparc/sparc-protos.h 2022-01-24 10:19:54.548100968 +0100
+@@ -69,7 +69,6 @@
+ extern void sparc_split_mem_reg (rtx, rtx, machine_mode);
+ extern int sparc_split_reg_reg_legitimate (rtx, rtx);
+ extern void sparc_split_reg_reg (rtx, rtx, machine_mode);
+-extern const char *output_load_pcrel_sym (rtx *);
+ extern const char *output_ubranch (rtx, rtx_insn *);
+ extern const char *output_cbranch (rtx, rtx, int, int, int, rtx_insn *);
+ extern const char *output_return (rtx_insn *);
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.c-torture/compile/20191108-1.c gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.c-torture/compile/20191108-1.c 2021-04-08 13:56:28.929751064 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/20191108-1.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,14 +0,0 @@
+-/* PR target/92095 */
+-/* Testcase by Sergei Trofimovich <slyfox@inbox.ru> */
+-
+-typedef union {
+- double a;
+- int b[2];
+-} c;
+-
+-double d(int e)
+-{
+- c f;
+- (&f)->b[0] = 15728640;
+- return e ? -(&f)->a : (&f)->a;
+-}
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-3.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-3.c 2021-04-08 13:56:29.453757389 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-3.c 2022-01-24 10:19:54.688097536 +0100
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -fno-pie" } */
++/* { dg-options "-O" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-4.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-4.c 2021-04-08 13:56:29.453757389 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-4.c 2022-01-24 10:19:55.336081656 +0100
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -fno-pie -mno-vis3 -mno-vis4" } */
++/* { dg-options "-O -mno-vis3 -mno-vis4" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
+diff -Nur gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-5.c gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c
+--- gcc-10.3.0.orig/gcc/testsuite/gcc.target/sparc/overflow-5.c 2021-04-08 13:56:29.453757389 +0200
++++ gcc-10.3.0/gcc/testsuite/gcc.target/sparc/overflow-5.c 2022-01-24 10:19:55.336081656 +0100
+@@ -1,6 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+-/* { dg-options "-O -fno-pie -mvis3" } */
++/* { dg-options "-O -mvis3" } */
+
+ #include <stdbool.h>
+ #include <stdint.h>
diff --git a/toolchain/gcc/patches/12.3.0/csky.patch b/toolchain/gcc/patches/12.3.0/csky.patch
new file mode 100644
index 000000000..ee352951b
--- /dev/null
+++ b/toolchain/gcc/patches/12.3.0/csky.patch
@@ -0,0 +1,12 @@
+diff -Nur gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c gcc-11.2.0/libgcc/config/csky/linux-atomic.c
+--- gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c 2021-07-28 08:55:08.760307899 +0200
++++ gcc-11.2.0/libgcc/config/csky/linux-atomic.c 2021-12-14 14:19:23.685729233 +0100
+@@ -24,7 +24,7 @@
+ <http://www.gnu.org/licenses/>. */
+
+ /* Kernel helper for compare-and-exchange. */
+-inline int
++int
+ __kernel_cmpxchg (int oldval, int newval, volatile int *ptr)
+ {
+ register int _a0 asm ("a0") = oldval;
diff --git a/toolchain/gcc/patches/12.3.0/nios2-softfp.patch b/toolchain/gcc/patches/12.3.0/nios2-softfp.patch
new file mode 100644
index 000000000..c677c6c2f
--- /dev/null
+++ b/toolchain/gcc/patches/12.3.0/nios2-softfp.patch
@@ -0,0 +1,14 @@
+diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
+--- gcc-6.2.0.orig/libgcc/config.host 2016-05-17 08:15:52.000000000 +0200
++++ gcc-6.2.0/libgcc/config.host 2016-10-15 14:42:53.971919904 +0200
+@@ -962,6 +962,10 @@
+ ;;
+ esac
+ ;;
++nios2-*-linux-uclibc*)
++ tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++ md_unwind_header=nios2/linux-unwind.h
++ ;;
+ nios2-*-linux*)
+ tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc"
+ md_unwind_header=nios2/linux-unwind.h
diff --git a/toolchain/gcc/patches/13.2.0/csky.patch b/toolchain/gcc/patches/13.2.0/csky.patch
new file mode 100644
index 000000000..ee352951b
--- /dev/null
+++ b/toolchain/gcc/patches/13.2.0/csky.patch
@@ -0,0 +1,12 @@
+diff -Nur gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c gcc-11.2.0/libgcc/config/csky/linux-atomic.c
+--- gcc-11.2.0.orig/libgcc/config/csky/linux-atomic.c 2021-07-28 08:55:08.760307899 +0200
++++ gcc-11.2.0/libgcc/config/csky/linux-atomic.c 2021-12-14 14:19:23.685729233 +0100
+@@ -24,7 +24,7 @@
+ <http://www.gnu.org/licenses/>. */
+
+ /* Kernel helper for compare-and-exchange. */
+-inline int
++int
+ __kernel_cmpxchg (int oldval, int newval, volatile int *ptr)
+ {
+ register int _a0 asm ("a0") = oldval;
diff --git a/toolchain/gcc/patches/13.2.0/nios2-softfp.patch b/toolchain/gcc/patches/13.2.0/nios2-softfp.patch
new file mode 100644
index 000000000..c677c6c2f
--- /dev/null
+++ b/toolchain/gcc/patches/13.2.0/nios2-softfp.patch
@@ -0,0 +1,14 @@
+diff -Nur gcc-6.2.0.orig/libgcc/config.host gcc-6.2.0/libgcc/config.host
+--- gcc-6.2.0.orig/libgcc/config.host 2016-05-17 08:15:52.000000000 +0200
++++ gcc-6.2.0/libgcc/config.host 2016-10-15 14:42:53.971919904 +0200
+@@ -962,6 +962,10 @@
+ ;;
+ esac
+ ;;
++nios2-*-linux-uclibc*)
++ tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc t-softfp-sfdf t-softfp"
++ md_unwind_header=nios2/linux-unwind.h
++ ;;
+ nios2-*-linux*)
+ tmake_file="$tmake_file nios2/t-nios2 nios2/t-linux t-libgcc-pic t-slibgcc-libgcc"
+ md_unwind_header=nios2/linux-unwind.h
diff --git a/toolchain/gcc/patches/4.5.4/gcc.lm32 b/toolchain/gcc/patches/4.5.4/gcc.lm32
index f32fb0dbd..df77ddf83 100644
--- a/toolchain/gcc/patches/4.5.4/gcc.lm32
+++ b/toolchain/gcc/patches/4.5.4/gcc.lm32
@@ -114,7 +114,7 @@ diff -Nur gcc-4.5.4.orig/libgcc/config.host gcc-4.5.4/libgcc/config.host
tmake_file="lm32/t-lm32 lm32/t-elf t-softfp"
;;
-lm32-*-uclinux*)
-+lm32-*-linux*)
++lm32-*-*linux*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
- tmake_file="lm32/t-lm32 lm32/t-uclinux t-softfp"
+ tmake_file="lm32/t-lm32 t-softfp"
diff --git a/toolchain/gdb/Makefile.inc b/toolchain/gdb/Makefile.inc
index b12d535f2..c38242eef 100644
--- a/toolchain/gdb/Makefile.inc
+++ b/toolchain/gdb/Makefile.inc
@@ -2,12 +2,26 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= gdb
-ifeq ($(ADK_TOOLCHAIN_GDB_11_1),y)
-PKG_VERSION:= 11.1
+ifeq ($(ADK_TOOLCHAIN_GDB_14_2),y)
+PKG_VERSION:= 14.2
PKG_RELEASE:= 1
-PKG_HASH:= cccfcc407b20d343fb320d4a9a2110776dd3165118ffd41f4b1b162340333f94
+PKG_HASH:= 2de5174762e959a5e529e20c20d88a04735469d8fffd98f61664e70b341dc47c
PKG_SITES:= ${MASTER_SITE_GNU:=gdb/}
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+endif
+ifeq ($(ADK_TOOLCHAIN_GDB_13_2),y)
+PKG_VERSION:= 13.2
+PKG_RELEASE:= 1
+PKG_HASH:= 7ead13d9e19fa0c57bb19104e1a5f67eefa9fc79f2e6360de491e8fddeda1e30
+PKG_SITES:= ${MASTER_SITE_GNU:=gdb/}
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
+endif
+ifeq ($(ADK_TOOLCHAIN_GDB_12_1),y)
+PKG_VERSION:= 12.1
+PKG_RELEASE:= 1
+PKG_HASH:= 87296a3a9727356b56712c793704082d5df0ff36a34ca9ec9734fc9a8bdfdaab
+PKG_SITES:= ${MASTER_SITE_GNU:=gdb/}
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
ifeq ($(ADK_TOOLCHAIN_GDB_6_7_1),y)
PKG_VERSION:= 6.7.1
@@ -22,11 +36,11 @@ PKG_VERSION:= ysato-h8300
PKG_RELEASE:= 1
PKG_GIT:= branch
PKG_SITES:= git://git.pf.osdn.jp/gitroot/y/ys/ysato/binutils_gdb.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
ifeq ($(ADK_TOOLCHAIN_GDB_GIT),y)
PKG_VERSION:= git
PKG_RELEASE:= 1
PKG_SITES:= git://sourceware.org/git/binutils-gdb.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
+DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile
index 684da9b78..ecd6f8d2b 100644
--- a/toolchain/glibc/Makefile
+++ b/toolchain/glibc/Makefile
@@ -6,12 +6,13 @@ include ../rules.mk
include Makefile.inc
include ${ADK_TOPDIR}/mk/buildhlp.mk
-# glibc does not compile with Os and CPU specific FLAGS for m68k/x86_64
-ifeq ($(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_ARCH_M68K),y)
+# glibc does not boot with Os and CPU specific FLAGS for nios2
+ifeq ($(ADK_TARGET_ARCH_NIOS2),y)
TARGET_CFLAGS:= -O2
TARGET_CXXFLAGS:= -O2
endif
+# glibc does not compile with NEON suggested CFLAGS/CXXFLAGS
TARGET_CFLAGS:= $(filter-out -ffast-math,$(TARGET_CFLAGS))
TARGET_CXXFLAGS:= $(filter-out -ffast-math,$(TARGET_CXXFLAGS))
@@ -40,6 +41,13 @@ GLIBC_ENV:= PATH='${HOST_PATH}:${TARGET_PATH}' \
libc_cv_gnu99_inline=yes \
libc_cv_initfini_array=yes
+ifeq ($(ADK_TARGET_ARCH_RISCV64),y)
+GLIBC_ENV+= libc_cv_slibdir=/lib libc_cv_rtlddir=/lib
+endif
+ifeq ($(ADK_TARGET_ARCH_RISCV32),y)
+GLIBC_ENV+= libc_cv_slibdir=/lib libc_cv_rtlddir=/lib
+endif
+
GLIBC_MAKEOPTS+= cross-compiling=yes
ifeq (${ADK_MAKE_PARALLEL},y)
GLIBC_MAKEOPTS+= PARALLELMFLAGS="-j$(ADK_MAKE_JOBS)"
diff --git a/toolchain/glibc/Makefile.inc b/toolchain/glibc/Makefile.inc
index e5adc4b43..0cd8f4987 100644
--- a/toolchain/glibc/Makefile.inc
+++ b/toolchain/glibc/Makefile.inc
@@ -3,16 +3,16 @@
PKG_NAME:= glibc
ifeq ($(ADK_LIBC_VERSION),git)
-PKG_VERSION:= 2.34.90
-PKG_GLIBCVER:= 2.34.9000
-PKG_SITES:= git://sourceware.org/git/glibc.git
+PKG_VERSION:= 2.39.90
+PKG_GLIBCVER:= 2.39.9000
+PKG_SITES:= https://sourceware.org/git/glibc.git
PKG_RELEASE:= 1
endif
-ifeq ($(ADK_TARGET_LIB_GLIBC_2_34),y)
-PKG_VERSION:= 2.34
-PKG_GLIBCVER:= 2.34
+ifeq ($(ADK_TARGET_LIB_GLIBC_2_39),y)
+PKG_VERSION:= 2.39
+PKG_GLIBCVER:= 2.39
PKG_RELEASE:= 1
PKG_SITES:= ${MASTER_SITE_GNU:=glibc/}
-PKG_HASH:= 44d26a1fe20b8853a48f470ead01e4279e869ac149b195dda4e44a195d981ab2
+PKG_HASH:= f77bd47cf8170c57365ae7bf86696c118adb3b120d3259c64c502d3dc1e2d926
endif
DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.xz
diff --git a/toolchain/glibc/patches/2.26/0001-Do-not-use-__builtin_types_compatible_p-in-C-mode-bu.patch b/toolchain/glibc/patches/2.26/0001-Do-not-use-__builtin_types_compatible_p-in-C-mode-bu.patch
deleted file mode 100644
index 27a785e31..000000000
--- a/toolchain/glibc/patches/2.26/0001-Do-not-use-__builtin_types_compatible_p-in-C-mode-bu.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From f7439f9b1089e17b6721f28e228682831a2f0135 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com>
-Date: Mon, 21 Aug 2017 14:23:27 +0200
-Subject: [PATCH] Do not use __builtin_types_compatible_p in C++ mode (bug
- 21930)
-
-The logic to define isinf for float128 depends on the availability of
-__builtin_types_compatible_p, which is only available in C mode,
-however, the conditionals do not check for C or C++ mode. This lead to
-an error in libstdc++ configure, as reported by bug 21930.
-
-This patch adds a conditional for C mode in the definition of isinf for
-float128. No definition is provided in C++ mode, since libstdc++
-headers undefine isinf.
-
-Tested for powerpc64le (glibc test suite and libstdc++-v3 configure).
-
- [BZ #21930]
- * math/math.h (isinf): Check if in C or C++ mode before using
- __builtin_types_compatible_p, since this is a C mode feature.
-
-(cherry picked from commit 47a67213a9f51c5f8816d240500b10db605d8b77)
-[Romain rebase on glibc 2.26]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- math/math.h | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/math/math.h b/math/math.h
-index e217080..dea8dbe 100644
---- a/math/math.h
-+++ b/math/math.h
-@@ -442,8 +442,12 @@ enum
-
- /* Return nonzero value if X is positive or negative infinity. */
- # if __HAVE_DISTINCT_FLOAT128 && !__GNUC_PREREQ (7,0) \
-- && !defined __SUPPORT_SNAN__
-- /* __builtin_isinf_sign is broken for float128 only before GCC 7.0. */
-+ && !defined __SUPPORT_SNAN__ && !defined __cplusplus
-+ /* Since __builtin_isinf_sign is broken for float128 before GCC 7.0,
-+ use the helper function, __isinff128, with older compilers. This is
-+ only provided for C mode, because in C++ mode, GCC has no support
-+ for __builtin_types_compatible_p (and when in C++ mode, this macro is
-+ not used anyway, because libstdc++ headers undefine it). */
- # define isinf(x) \
- (__builtin_types_compatible_p (__typeof (x), _Float128) \
- ? __isinff128 (x) : __builtin_isinf_sign (x))
---
-2.9.5
-
diff --git a/toolchain/glibc/patches/2.26/0002-Do-not-use-generic-selection-in-C-mode.patch b/toolchain/glibc/patches/2.26/0002-Do-not-use-generic-selection-in-C-mode.patch
deleted file mode 100644
index 7321eebd6..000000000
--- a/toolchain/glibc/patches/2.26/0002-Do-not-use-generic-selection-in-C-mode.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From bb21afc362a3ecba07ab386a0bc4385e75fbd4b5 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com>
-Date: Mon, 14 Aug 2017 17:51:51 -0300
-Subject: [PATCH] Do not use generic selection in C++ mode
-
-The logic to protect the use of generic selection (_Generic) does not
-check for C or C++ mode, however, generic selection is a C-only
-feature.
-
-Tested for powerpc64le.
-
- * misc/sys/cdefs.h (__HAVE_GENERIC_SELECTION): Define to 0, if
- in C++ mode.
-
-(cherry picked from commit 6913ad65e00bb32417ad39c41d292b976171e27e)
-[Romain rebase on glibc 2.26]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- misc/sys/cdefs.h | 19 ++++++++++---------
- 1 file changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
-index 06523bf..0c80821 100644
---- a/misc/sys/cdefs.h
-+++ b/misc/sys/cdefs.h
-@@ -464,17 +464,18 @@
- # define __glibc_macro_warning(msg)
- #endif
-
--/* Support for generic selection (ISO C11) is available in GCC since
-- version 4.9. Previous versions do not provide generic selection,
-- even though they might set __STDC_VERSION__ to 201112L, when in
-- -std=c11 mode. Thus, we must check for !defined __GNUC__ when
-- testing __STDC_VERSION__ for generic selection support.
-+/* Generic selection (ISO C11) is a C-only feature, available in GCC
-+ since version 4.9. Previous versions do not provide generic
-+ selection, even though they might set __STDC_VERSION__ to 201112L,
-+ when in -std=c11 mode. Thus, we must check for !defined __GNUC__
-+ when testing __STDC_VERSION__ for generic selection support.
- On the other hand, Clang also defines __GNUC__, so a clang-specific
- check is required to enable the use of generic selection. */
--#if __GNUC_PREREQ (4, 9) \
-- || __glibc_clang_has_extension (c_generic_selections) \
-- || (!defined __GNUC__ && defined __STDC_VERSION__ \
-- && __STDC_VERSION__ >= 201112L)
-+#if !defined __cplusplus \
-+ && (__GNUC_PREREQ (4, 9) \
-+ || __glibc_clang_has_extension (c_generic_selections) \
-+ || (!defined __GNUC__ && defined __STDC_VERSION__ \
-+ && __STDC_VERSION__ >= 201112L))
- # define __HAVE_GENERIC_SELECTION 1
- #else
- # define __HAVE_GENERIC_SELECTION 0
---
-2.9.5
-
diff --git a/toolchain/glibc/patches/2.26/0003-Provide-a-C-version-of-issignaling-that-does-not-use.patch b/toolchain/glibc/patches/2.26/0003-Provide-a-C-version-of-issignaling-that-does-not-use.patch
deleted file mode 100644
index b9cd3df39..000000000
--- a/toolchain/glibc/patches/2.26/0003-Provide-a-C-version-of-issignaling-that-does-not-use.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-From 9bcf391a21677c6d5fa1c2be71554ec181e24f39 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com>
-Date: Mon, 14 Aug 2017 13:46:15 -0300
-Subject: [PATCH] Provide a C++ version of issignaling that does not use
- __MATH_TG
-
-The macro __MATH_TG contains the logic to select between long double and
-_Float128, when these types are ABI-distinct. This logic relies on
-__builtin_types_compatible_p, which is not available in C++ mode.
-
-On the other hand, C++ function overloading provides the means to
-distinguish between the floating-point types. The overloading
-resolution will match the correct parameter regardless of type
-qualifiers, i.e.: const and volatile.
-
-Tested for powerpc64le, s390x, and x86_64.
-
- * math/math.h [defined __cplusplus] (issignaling): Provide a C++
- definition for issignaling that does not rely on __MATH_TG,
- since __MATH_TG uses __builtin_types_compatible_p, which is only
- available in C mode.
- (CFLAGS-test-math-issignaling.cc): New variable.
- * math/Makefile [CXX] (tests): Add test-math-issignaling.
- * math/test-math-issignaling.cc: New test for C++ implementation
- of type-generic issignaling.
- * sysdeps/powerpc/powerpc64le/Makefile [subdir == math]
- (CXXFLAGS-test-math-issignaling.cc): Add -mfloat128 to the build
- options of test-math-issignaling on powerpc64le.
-
-(cherry picked from commit a16e8bc08edca84d507715c66d6cddbbc7ed3b62)
-[Romain rebase on glibc 2.26]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- math/Makefile | 3 +-
- math/math.h | 19 +++++-
- math/test-math-issignaling.cc | 113 +++++++++++++++++++++++++++++++++++
- sysdeps/powerpc/powerpc64le/Makefile | 1 +
- 4 files changed, 134 insertions(+), 2 deletions(-)
- create mode 100644 math/test-math-issignaling.cc
-
-diff --git a/math/Makefile b/math/Makefile
-index e09b0c0..0130fcf 100644
---- a/math/Makefile
-+++ b/math/Makefile
-@@ -203,7 +203,7 @@ tests-static = test-fpucw-static test-fpucw-ieee-static \
- test-signgam-ullong-static test-signgam-ullong-init-static
-
- ifneq (,$(CXX))
--tests += test-math-isinff test-math-iszero
-+tests += test-math-isinff test-math-iszero test-math-issignaling
- endif
-
- ifneq (no,$(PERL))
-@@ -350,6 +350,7 @@ CFLAGS-test-signgam-ullong-init-static.c = -std=c99
-
- CFLAGS-test-math-isinff.cc = -std=gnu++11
- CFLAGS-test-math-iszero.cc = -std=gnu++11
-+CFLAGS-test-math-issignaling.cc = -std=gnu++11
-
- CFLAGS-test-iszero-excess-precision.c = -fexcess-precision=standard
- CFLAGS-test-iseqsig-excess-precision.c = -fexcess-precision=standard
-diff --git a/math/math.h b/math/math.h
-index dea8dbe..add86af 100644
---- a/math/math.h
-+++ b/math/math.h
-@@ -474,7 +474,24 @@ enum
- # include <bits/iscanonical.h>
-
- /* Return nonzero value if X is a signaling NaN. */
--# define issignaling(x) __MATH_TG ((x), __issignaling, (x))
-+# ifndef __cplusplus
-+# define issignaling(x) __MATH_TG ((x), __issignaling, (x))
-+# else
-+ /* In C++ mode, __MATH_TG cannot be used, because it relies on
-+ __builtin_types_compatible_p, which is a C-only builtin. On the
-+ other hand, overloading provides the means to distinguish between
-+ the floating-point types. The overloading resolution will match
-+ the correct parameter (regardless of type qualifiers (i.e.: const
-+ and volatile). */
-+extern "C++" {
-+inline int issignaling (float __val) { return __issignalingf (__val); }
-+inline int issignaling (double __val) { return __issignaling (__val); }
-+inline int issignaling (long double __val) { return __issignalingl (__val); }
-+# if __HAVE_DISTINCT_FLOAT128
-+inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); }
-+# endif
-+} /* extern C++ */
-+# endif
-
- /* Return nonzero value if X is subnormal. */
- # define issubnormal(x) (fpclassify (x) == FP_SUBNORMAL)
-diff --git a/math/test-math-issignaling.cc b/math/test-math-issignaling.cc
-new file mode 100644
-index 0000000..22ae9e1
---- /dev/null
-+++ b/math/test-math-issignaling.cc
-@@ -0,0 +1,113 @@
-+/* Test for the C++ implementation of issignaling.
-+ Copyright (C) 2017 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <http://www.gnu.org/licenses/>. */
-+
-+#define _GNU_SOURCE 1
-+#include <math.h>
-+#include <stdio.h>
-+
-+#include <limits>
-+
-+/* There is no signaling_NaN for _Float128 in std::numeric_limits.
-+ Include ieee754_float128.h and use the bitfields in the union
-+ ieee854_float128.ieee_nan to build a signaling NaN. */
-+#if __HAVE_DISTINCT_FLOAT128
-+# include <ieee754_float128.h>
-+#endif
-+
-+static bool errors;
-+
-+static void
-+check (int actual, int expected, const char *actual_expr, int line)
-+{
-+ if (actual != expected)
-+ {
-+ errors = true;
-+ printf ("%s:%d: error: %s\n", __FILE__, line, actual_expr);
-+ printf ("%s:%d: expected: %d\n", __FILE__, line, expected);
-+ printf ("%s:%d: actual: %d\n", __FILE__, line, actual);
-+ }
-+}
-+
-+#define CHECK(actual, expected) \
-+ check ((actual), (expected), #actual, __LINE__)
-+
-+template <class T>
-+static void
-+check_type ()
-+{
-+ typedef std::numeric_limits<T> limits;
-+ CHECK (issignaling (T{0}), 0);
-+ if (limits::has_infinity)
-+ {
-+ CHECK (issignaling (limits::infinity ()), 0);
-+ CHECK (issignaling (-limits::infinity ()), 0);
-+ }
-+ if (limits::has_quiet_NaN)
-+ CHECK (issignaling (limits::quiet_NaN ()), 0);
-+ if (limits::has_signaling_NaN)
-+ CHECK (issignaling (limits::signaling_NaN ()), 1);
-+}
-+
-+#if __HAVE_DISTINCT_FLOAT128
-+static void
-+check_float128 ()
-+{
-+ ieee854_float128 q;
-+
-+ q.d = 0;
-+ CHECK (issignaling (q.d), 0);
-+
-+ /* Infinity. */
-+ q.ieee.negative = 0;
-+ q.ieee.exponent = 0x7FFF;
-+ q.ieee.mantissa0 = 0x0000;
-+ q.ieee.mantissa1 = 0x00000000;
-+ q.ieee.mantissa2 = 0x00000000;
-+ q.ieee.mantissa3 = 0x00000000;
-+ CHECK (issignaling (q.d), 0);
-+
-+ /* Quiet NaN. */
-+ q.ieee_nan.quiet_nan = 1;
-+ q.ieee_nan.mantissa0 = 0x0000;
-+ CHECK (issignaling (q.d), 0);
-+
-+ /* Still a quiet NaN. */
-+ q.ieee_nan.quiet_nan = 1;
-+ q.ieee_nan.mantissa0 = 0x4000;
-+ CHECK (issignaling (q.d), 0);
-+
-+ /* Signaling NaN. */
-+ q.ieee_nan.quiet_nan = 0;
-+ q.ieee_nan.mantissa0 = 0x4000;
-+ CHECK (issignaling (q.d), 1);
-+}
-+#endif
-+
-+static int
-+do_test (void)
-+{
-+ check_type<float> ();
-+ check_type<double> ();
-+ check_type<long double> ();
-+#if __HAVE_DISTINCT_FLOAT128
-+ check_float128 ();
-+#endif
-+ return errors;
-+}
-+
-+#include <support/test-driver.c>
-diff --git a/sysdeps/powerpc/powerpc64le/Makefile b/sysdeps/powerpc/powerpc64le/Makefile
-index 77617b6..19adbfa 100644
---- a/sysdeps/powerpc/powerpc64le/Makefile
-+++ b/sysdeps/powerpc/powerpc64le/Makefile
-@@ -16,6 +16,7 @@ $(foreach suf,$(all-object-suffixes),%f128_r$(suf)): CFLAGS += -mfloat128
- $(foreach suf,$(all-object-suffixes),$(objpfx)test-float128%$(suf)): CFLAGS += -mfloat128
- $(foreach suf,$(all-object-suffixes),$(objpfx)test-ifloat128%$(suf)): CFLAGS += -mfloat128
- CFLAGS-libm-test-support-float128.c += -mfloat128
-+CFLAGS-test-math-issignaling.cc += -mfloat128
- $(objpfx)test-float128% $(objpfx)test-ifloat128%: \
- gnulib-tests += $(f128-loader-link)
- endif
---
-2.9.5
-
diff --git a/toolchain/glibc/patches/2.26/0004-Fix-the-C-version-of-issignaling-when-__NO_LONG_DOUB.patch b/toolchain/glibc/patches/2.26/0004-Fix-the-C-version-of-issignaling-when-__NO_LONG_DOUB.patch
deleted file mode 100644
index 5e32f754d..000000000
--- a/toolchain/glibc/patches/2.26/0004-Fix-the-C-version-of-issignaling-when-__NO_LONG_DOUB.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 9dbd8386a1b706beb30291a7e76bbfe69c2620cf Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com>
-Date: Wed, 23 Aug 2017 10:16:54 -0300
-Subject: [PATCH] Fix the C++ version of issignaling when __NO_LONG_DOUBLE_MATH
- is defined
-
-When __NO_LONG_DOUBLE_MATH is defined, __issignalingl is not available,
-thus issignaling with long double argument should call __issignaling,
-instead.
-
-Tested for powerpc64le.
-
- * math/math.h [defined __cplusplus] (issignaling): In the long
- double case, call __issignalingl only if __NO_LONG_DOUBLE_MATH
- is not defined. Call __issignaling, otherwise.
-
-(cherry picked from commit 3d7b66f66cb223e899a7ebc0f4c20f13e711c9e0)
-[Romain rebase on glibc 2.26]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- math/math.h | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/math/math.h b/math/math.h
-index add86af..60dfa31 100644
---- a/math/math.h
-+++ b/math/math.h
-@@ -486,7 +486,15 @@ enum
- extern "C++" {
- inline int issignaling (float __val) { return __issignalingf (__val); }
- inline int issignaling (double __val) { return __issignaling (__val); }
--inline int issignaling (long double __val) { return __issignalingl (__val); }
-+inline int
-+issignaling (long double __val)
-+{
-+# ifdef __NO_LONG_DOUBLE_MATH
-+ return __issignaling (__val);
-+# else
-+ return __issignalingl (__val);
-+# endif
-+}
- # if __HAVE_DISTINCT_FLOAT128
- inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); }
- # endif
---
-2.9.5
-
diff --git a/toolchain/glibc/patches/2.26/0005-Provide-a-C-version-of-iszero-that-does-not-use-__MA.patch b/toolchain/glibc/patches/2.26/0005-Provide-a-C-version-of-iszero-that-does-not-use-__MA.patch
deleted file mode 100644
index e12c8438f..000000000
--- a/toolchain/glibc/patches/2.26/0005-Provide-a-C-version-of-iszero-that-does-not-use-__MA.patch
+++ /dev/null
@@ -1,210 +0,0 @@
-From 45970aa26d1af87b016ef95b4b35c566aeb6e841 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com>
-Date: Tue, 22 Aug 2017 16:34:42 -0300
-Subject: [PATCH] Provide a C++ version of iszero that does not use __MATH_TG
- (bug 21930)
-
-When signaling nans are enabled (with -fsignaling-nans), the C++ version
-of iszero uses the fpclassify macro, which is defined with __MATH_TG.
-However, when support for float128 is available, __MATH_TG uses the
-builtin __builtin_types_compatible_p, which is only available in C mode.
-
-This patch refactors the C++ version of iszero so that it uses function
-overloading to select between the floating-point types, instead of
-relying on fpclassify and __MATH_TG.
-
-Tested for powerpc64le, s390x, x86_64, and with build-many-glibcs.py.
-
- [BZ #21930]
- * math/math.h [defined __cplusplus && defined __SUPPORT_SNAN__]
- (iszero): New C++ implementation that does not use
- fpclassify/__MATH_TG/__builtin_types_compatible_p, when
- signaling nans are enabled, since __builtin_types_compatible_p
- is a C-only feature.
- * math/test-math-iszero.cc: When __HAVE_DISTINCT_FLOAT128 is
- defined, include ieee754_float128.h for access to the union and
- member ieee854_float128.ieee.
- [__HAVE_DISTINCT_FLOAT128] (do_test): Call check_float128.
- [__HAVE_DISTINCT_FLOAT128] (check_float128): New function.
- * sysdeps/powerpc/powerpc64le/Makefile [subdir == math]
- (CXXFLAGS-test-math-iszero.cc): Add -mfloat128 to the build
- options of test-math-zero on powerpc64le.
-
-(cherry picked from commit 42496114ec0eb7d6d039d05d4262e109951c600c)
-[Romain rebase on glibc 2.26]
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- math/math.h | 33 +++++++++++++--
- math/test-math-iszero.cc | 79 ++++++++++++++++++++++++++++++++++++
- sysdeps/powerpc/powerpc64le/Makefile | 3 +-
- 3 files changed, 110 insertions(+), 5 deletions(-)
-
-diff --git a/math/math.h b/math/math.h
-index 60dfa31..7c0fc6d 100644
---- a/math/math.h
-+++ b/math/math.h
-@@ -513,15 +513,40 @@ inline int issignaling (_Float128 __val) { return __issignalingf128 (__val); }
- # endif
- # else /* __cplusplus */
- extern "C++" {
-+# ifdef __SUPPORT_SNAN__
-+inline int
-+iszero (float __val)
-+{
-+ return __fpclassifyf (__val) == FP_ZERO;
-+}
-+inline int
-+iszero (double __val)
-+{
-+ return __fpclassify (__val) == FP_ZERO;
-+}
-+inline int
-+iszero (long double __val)
-+{
-+# ifdef __NO_LONG_DOUBLE_MATH
-+ return __fpclassify (__val) == FP_ZERO;
-+# else
-+ return __fpclassifyl (__val) == FP_ZERO;
-+# endif
-+}
-+# if __HAVE_DISTINCT_FLOAT128
-+inline int
-+iszero (_Float128 __val)
-+{
-+ return __fpclassifyf128 (__val) == FP_ZERO;
-+}
-+# endif
-+# else
- template <class __T> inline bool
- iszero (__T __val)
- {
--# ifdef __SUPPORT_SNAN__
-- return fpclassify (__val) == FP_ZERO;
--# else
- return __val == 0;
--# endif
- }
-+# endif
- } /* extern C++ */
- # endif /* __cplusplus */
- #endif /* Use IEC_60559_BFP_EXT. */
-diff --git a/math/test-math-iszero.cc b/math/test-math-iszero.cc
-index 027e972..5c07261 100644
---- a/math/test-math-iszero.cc
-+++ b/math/test-math-iszero.cc
-@@ -22,6 +22,13 @@
-
- #include <limits>
-
-+/* Support for _Float128 in std::numeric_limits is limited.
-+ Include ieee754_float128.h and use the bitfields in the union
-+ ieee854_float128.ieee_nan to build corner-case inputs. */
-+#if __HAVE_DISTINCT_FLOAT128
-+# include <ieee754_float128.h>
-+#endif
-+
- static bool errors;
-
- static void
-@@ -72,12 +79,84 @@ check_type ()
- std::numeric_limits<T>::has_denorm == std::denorm_absent);
- }
-
-+#if __HAVE_DISTINCT_FLOAT128
-+static void
-+check_float128 ()
-+{
-+ ieee854_float128 q;
-+
-+ q.d = 0.0Q;
-+ CHECK (iszero (q.d), 1);
-+ q.d = -0.0Q;
-+ CHECK (iszero (q.d), 1);
-+ q.d = 1.0Q;
-+ CHECK (iszero (q.d), 0);
-+ q.d = -1.0Q;
-+ CHECK (iszero (q.d), 0);
-+
-+ /* Normal min. */
-+ q.ieee.negative = 0;
-+ q.ieee.exponent = 0x0001;
-+ q.ieee.mantissa0 = 0x0000;
-+ q.ieee.mantissa1 = 0x00000000;
-+ q.ieee.mantissa2 = 0x00000000;
-+ q.ieee.mantissa3 = 0x00000000;
-+ CHECK (iszero (q.d), 0);
-+ q.ieee.negative = 1;
-+ CHECK (iszero (q.d), 0);
-+
-+ /* Normal max. */
-+ q.ieee.negative = 0;
-+ q.ieee.exponent = 0x7FFE;
-+ q.ieee.mantissa0 = 0xFFFF;
-+ q.ieee.mantissa1 = 0xFFFFFFFF;
-+ q.ieee.mantissa2 = 0xFFFFFFFF;
-+ q.ieee.mantissa3 = 0xFFFFFFFF;
-+ CHECK (iszero (q.d), 0);
-+ q.ieee.negative = 1;
-+ CHECK (iszero (q.d), 0);
-+
-+ /* Infinity. */
-+ q.ieee.negative = 0;
-+ q.ieee.exponent = 0x7FFF;
-+ q.ieee.mantissa0 = 0x0000;
-+ q.ieee.mantissa1 = 0x00000000;
-+ q.ieee.mantissa2 = 0x00000000;
-+ q.ieee.mantissa3 = 0x00000000;
-+ CHECK (iszero (q.d), 0);
-+
-+ /* Quiet NaN. */
-+ q.ieee_nan.quiet_nan = 1;
-+ q.ieee_nan.mantissa0 = 0x0000;
-+ CHECK (iszero (q.d), 0);
-+
-+ /* Signaling NaN. */
-+ q.ieee_nan.quiet_nan = 0;
-+ q.ieee_nan.mantissa0 = 0x4000;
-+ CHECK (iszero (q.d), 0);
-+
-+ /* Denormal min. */
-+ q.ieee.negative = 0;
-+ q.ieee.exponent = 0x0000;
-+ q.ieee.mantissa0 = 0x0000;
-+ q.ieee.mantissa1 = 0x00000000;
-+ q.ieee.mantissa2 = 0x00000000;
-+ q.ieee.mantissa3 = 0x00000001;
-+ CHECK (iszero (q.d), 0);
-+ q.ieee.negative = 1;
-+ CHECK (iszero (q.d), 0);
-+}
-+#endif
-+
- static int
- do_test (void)
- {
- check_type<float> ();
- check_type<double> ();
- check_type<long double> ();
-+#if __HAVE_DISTINCT_FLOAT128
-+ check_float128 ();
-+#endif
- return errors;
- }
-
-diff --git a/sysdeps/powerpc/powerpc64le/Makefile b/sysdeps/powerpc/powerpc64le/Makefile
-index 19adbfa..dea2290 100644
---- a/sysdeps/powerpc/powerpc64le/Makefile
-+++ b/sysdeps/powerpc/powerpc64le/Makefile
-@@ -17,7 +17,8 @@ $(foreach suf,$(all-object-suffixes),$(objpfx)test-float128%$(suf)): CFLAGS += -
- $(foreach suf,$(all-object-suffixes),$(objpfx)test-ifloat128%$(suf)): CFLAGS += -mfloat128
- CFLAGS-libm-test-support-float128.c += -mfloat128
- CFLAGS-test-math-issignaling.cc += -mfloat128
--$(objpfx)test-float128% $(objpfx)test-ifloat128%: \
-+CFLAGS-test-math-iszero.cc += -mfloat128
-+$(objpfx)test-float128% $(objpfx)test-ifloat128% $(objpfx)test-math-iszero: \
- gnulib-tests += $(f128-loader-link)
- endif
-
---
-2.9.5
-
diff --git a/toolchain/glibc/patches/2.26/0006-Let-fpclassify-use-the-builtin-when-optimizing-for-s.patch b/toolchain/glibc/patches/2.26/0006-Let-fpclassify-use-the-builtin-when-optimizing-for-s.patch
deleted file mode 100644
index 37807c459..000000000
--- a/toolchain/glibc/patches/2.26/0006-Let-fpclassify-use-the-builtin-when-optimizing-for-s.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 33f54cf4f81a51e5c8cbfb2408edd439bdee9435 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gabriel@inconstante.eti.br>
-Date: Wed, 20 Sep 2017 15:10:26 -0300
-Subject: [PATCH] Let fpclassify use the builtin when optimizing for size in
- C++ mode (bug 22146)
-
-When optimization for size is on (-Os), fpclassify does not use the
-type-generic __builtin_fpclassify builtin, instead it uses __MATH_TG.
-However, when library support for float128 is available, __MATH_TG uses
-__builtin_types_compatible_p, which is not available in C++ mode.
-
-On the other hand, libstdc++ undefines (in cmath) many macros from
-math.h, including fpclassify, so that it can provide its own functions.
-However, during its configure tests, libstdc++ just tests for the
-availability of the macros (it does not undefine them, nor does it
-provide its own functions).
-
-Finally, when libstdc++ is configured with optimization for size
-enabled, its configure tests include math.h and get the definition of
-fpclassify that uses __MATH_TG (and __builtin_types_compatible_p).
-Since libstdc++ does not undefine the macros during its configure tests,
-they fail.
-
-This patch lets fpclassify use the builtin in C++ mode, even when
-optimization for size is on. This allows the configure test in
-libstdc++ to work.
-
-Tested for powerpc64le and x86_64.
-
- [BZ #22146]
- math/math.h: Let fpclassify use the builtin in C++ mode, even
- when optimazing for size.
-
-(cherry picked from commit c5c4a626098ec884b8527356abdf2a4bb7b6bf27)
-
-[Romain rebase on glibc 2.26)
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- math/math.h | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/math/math.h b/math/math.h
-index 7c0fc6d..f9348ec 100644
---- a/math/math.h
-+++ b/math/math.h
-@@ -402,7 +402,13 @@ enum
-
- /* Return number of classification appropriate for X. */
- # if __GNUC_PREREQ (4,4) && !defined __SUPPORT_SNAN__ \
-- && !defined __OPTIMIZE_SIZE__
-+ && (!defined __OPTIMIZE_SIZE__ || defined __cplusplus)
-+ /* The check for __cplusplus allows the use of the builtin, even
-+ when optimization for size is on. This is provided for
-+ libstdc++, only to let its configure test work when it is built
-+ with -Os. No further use of this definition of fpclassify is
-+ expected in C++ mode, since libstdc++ provides its own version
-+ of fpclassify in cmath (which undefines fpclassify). */
- # define fpclassify(x) __builtin_fpclassify (FP_NAN, FP_INFINITE, \
- FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
- # else
---
-2.9.5
-
diff --git a/toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch b/toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch
new file mode 100644
index 000000000..d5d8e34e9
--- /dev/null
+++ b/toolchain/glibc/patches/2.38/0001-m68k-fix-__mpn_lshift-and-__mpn_rshift-for-non-68020.patch
@@ -0,0 +1,46 @@
+From 464fd8249e8b791248cab7b0e0cd91757435fa9e Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@linux-m68k.org>
+Date: Thu, 17 Aug 2023 17:15:34 +0200
+Subject: [PATCH] m68k: fix __mpn_lshift and __mpn_rshift for non-68020
+
+From revision 03f3d275d0d6 in the gmp repository.
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ sysdeps/m68k/m680x0/lshift.S | 4 ++--
+ sysdeps/m68k/m680x0/rshift.S | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/sysdeps/m68k/m680x0/lshift.S b/sysdeps/m68k/m680x0/lshift.S
+index 2aee10348e..4240738959 100644
+--- a/sysdeps/m68k/m680x0/lshift.S
++++ b/sysdeps/m68k/m680x0/lshift.S
+@@ -77,8 +77,8 @@ L(Lnormal:)
+ #else /* not mc68000 */
+ movel R(s_size),R(d0)
+ asll #2,R(d0)
+- addl R(s_size),R(s_ptr)
+- addl R(s_size),R(res_ptr)
++ addl R(d0),R(s_ptr)
++ addl R(d0),R(res_ptr)
+ #endif
+ movel MEM_PREDEC(s_ptr),R(d2)
+ movel R(d2),R(d0)
+diff --git a/sysdeps/m68k/m680x0/rshift.S b/sysdeps/m68k/m680x0/rshift.S
+index d16bca9307..d56a2b4a44 100644
+--- a/sysdeps/m68k/m680x0/rshift.S
++++ b/sysdeps/m68k/m680x0/rshift.S
+@@ -127,8 +127,8 @@ L(Lspecial:)
+ #else /* not mc68000 */
+ movel R(s_size),R(d0)
+ asll #2,R(d0)
+- addl R(s_size),R(s_ptr)
+- addl R(s_size),R(res_ptr)
++ addl R(d0),R(s_ptr)
++ addl R(d0),R(res_ptr)
+ #endif
+
+ clrl R(d0) /* initialize carry */
+--
+2.39.2
+
diff --git a/toolchain/glibc/patches/2.38/0004-ARC-Add-support-for-ARCv3-processors.patch b/toolchain/glibc/patches/2.38/0004-ARC-Add-support-for-ARCv3-processors.patch
new file mode 100644
index 000000000..cf4ca7352
--- /dev/null
+++ b/toolchain/glibc/patches/2.38/0004-ARC-Add-support-for-ARCv3-processors.patch
@@ -0,0 +1,4036 @@
+From ac6163148698545dd56471edabf97ffc23a519da Mon Sep 17 00:00:00 2001
+From: Alexey Brodkin <abrodkin@synopsys.com>
+Date: Tue, 2 Jan 2024 03:38:32 -0800
+Subject: [PATCH] ARC: Add support for ARCv3 processors
+
+Signed-off-by: Vineet Gupta <vgupta@kernel.org>
+Signed-off-by: Pavel Kozlov <pavel.kozlov@synopsys.com>
+Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
+---
+ config.h.in | 6 +
+ elf/dl-runtime.c | 4 +-
+ elf/elf.h | 5 +-
+ nptl/Makefile | 5 +-
+ scripts/build-many-glibcs.py | 6 +
+ scripts/config.sub | 8 +
+ sysdeps/arc/Implies | 1 -
+ sysdeps/arc/__longjmp.S | 62 +-
+ sysdeps/arc/arc32/Implies | 1 +
+ sysdeps/arc/arc64/Implies | 1 +
+ sysdeps/arc/arc64/fpu/libm-test-ulps | 1141 +++++++++++++++++
+ sysdeps/arc/arc64/fpu/libm-test-ulps-name | 1 +
+ sysdeps/arc/{ => arc64}/nofpu/libm-test-ulps | 1 +
+ sysdeps/arc/arc64/nofpu/libm-test-ulps-name | 1 +
+ sysdeps/arc/atomic-machine.h | 41 +-
+ sysdeps/arc/bits/setjmp.h | 6 +-
+ sysdeps/arc/configure | 80 +-
+ sysdeps/arc/configure.ac | 36 +
+ sysdeps/arc/dl-machine.h | 75 +-
+ sysdeps/arc/dl-trampoline.S | 89 +-
+ sysdeps/arc/fpu/math-use-builtins-fma.h | 18 +-
+ sysdeps/arc/fpu/math-use-builtins-sqrt.h | 18 +-
+ sysdeps/arc/isa-asm-macro-32.h | 61 +
+ sysdeps/arc/isa-asm-macro-64.h | 86 ++
+ sysdeps/arc/isa-asm-macros.h | 35 +
+ sysdeps/arc/nofpu/libm-test-ulps | 1 +
+ sysdeps/arc/nptl/pthreaddef.h | 2 +-
+ sysdeps/arc/preconfigure | 18 +-
+ sysdeps/arc/setjmp.S | 55 +-
+ sysdeps/arc/sfp-machine.h | 55 +-
+ sysdeps/arc/start.S | 14 +-
+ sysdeps/arc/sysdep.h | 5 +-
+ sysdeps/unix/sysv/linux/arc/Makefile | 8 +-
+ sysdeps/unix/sysv/linux/arc/arc32/Implies | 1 +
+ .../sysv/linux/arc/{ => arc32}/arch-syscall.h | 0
+ .../sysv/linux/arc/{ => arc32}/c++-types.data | 0
+ .../linux/arc/{ => arc32}/fixup-asm-unistd.h | 0
+ .../sysv/linux/arc/{ => arc32}/ld.abilist | 0
+ .../arc/{ => arc32}/libBrokenLocale.abilist | 0
+ .../sysv/linux/arc/{ => arc32}/libanl.abilist | 0
+ .../sysv/linux/arc/{ => arc32}/libc.abilist | 0
+ .../arc/{ => arc32}/libc_malloc_debug.abilist | 0
+ .../linux/arc/{ => arc32}/libcrypt.abilist | 0
+ .../sysv/linux/arc/{ => arc32}/libdl.abilist | 0
+ .../sysv/linux/arc/{ => arc32}/libm.abilist | 0
+ .../linux/arc/{ => arc32}/libpthread.abilist | 0
+ .../linux/arc/{ => arc32}/libresolv.abilist | 0
+ .../sysv/linux/arc/{ => arc32}/librt.abilist | 0
+ .../arc/{ => arc32}/libthread_db.abilist | 0
+ .../linux/arc/{ => arc32}/libutil.abilist | 0
+ sysdeps/unix/sysv/linux/arc/arc64/Implies | 2 +
+ .../sysv/linux/arc/{ => arc64}/arch-syscall.h | 59 +-
+ .../sysv/linux/arc/{ => arc64}/c++-types.data | 48 +-
+ .../sysv/linux/arc/{ => arc64}/ld.abilist | 8 +-
+ .../arc/{ => arc64}/libBrokenLocale.abilist | 0
+ .../sysv/linux/arc/{ => arc64}/libanl.abilist | 0
+ .../sysv/linux/arc/{ => arc64}/libc.abilist | 82 +-
+ .../arc/{ => arc64}/libc_malloc_debug.abilist | 8 +-
+ .../linux/arc/{ => arc64}/libcrypt.abilist | 0
+ .../sysv/linux/arc/{ => arc64}/libdl.abilist | 0
+ .../sysv/linux/arc/{ => arc64}/libm.abilist | 0
+ .../linux/arc/{ => arc64}/libpthread.abilist | 0
+ .../linux/arc/{ => arc64}/libresolv.abilist | 4 +-
+ .../sysv/linux/arc/{ => arc64}/librt.abilist | 0
+ .../arc/{ => arc64}/libthread_db.abilist | 0
+ .../linux/arc/{ => arc64}/libutil.abilist | 0
+ sysdeps/unix/sysv/linux/arc/bits/fcntl.h | 62 +
+ .../sysv/linux/arc/bits/types/__sigset_t.h | 2 +-
+ sysdeps/unix/sysv/linux/arc/clone.S | 30 +-
+ sysdeps/unix/sysv/linux/arc/clone3.S | 14 +-
+ sysdeps/unix/sysv/linux/arc/getcontext.S | 71 +-
+ sysdeps/unix/sysv/linux/arc/setcontext.S | 88 +-
+ sysdeps/unix/sysv/linux/arc/shlib-versions | 8 +
+ sysdeps/unix/sysv/linux/arc/swapcontext.S | 129 +-
+ sysdeps/unix/sysv/linux/arc/sys/ucontext.h | 1 +
+ sysdeps/unix/sysv/linux/arc/syscall.S | 16 +-
+ sysdeps/unix/sysv/linux/arc/sysdep.h | 16 +-
+ sysdeps/unix/sysv/linux/arc/vfork.S | 4 +-
+ timezone/zic.c | 2 +-
+ 79 files changed, 2211 insertions(+), 390 deletions(-)
+ mode change 100755 => 100644 scripts/config.sub
+ create mode 100644 sysdeps/arc/arc32/Implies
+ create mode 100644 sysdeps/arc/arc64/Implies
+ create mode 100644 sysdeps/arc/arc64/fpu/libm-test-ulps
+ create mode 100644 sysdeps/arc/arc64/fpu/libm-test-ulps-name
+ copy sysdeps/arc/{ => arc64}/nofpu/libm-test-ulps (99%)
+ create mode 100644 sysdeps/arc/arc64/nofpu/libm-test-ulps-name
+ create mode 100644 sysdeps/arc/isa-asm-macro-32.h
+ create mode 100644 sysdeps/arc/isa-asm-macro-64.h
+ create mode 100644 sysdeps/arc/isa-asm-macros.h
+ create mode 100644 sysdeps/unix/sysv/linux/arc/arc32/Implies
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/arch-syscall.h (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/c++-types.data (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc32}/fixup-asm-unistd.h (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/ld.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libBrokenLocale.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libanl.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libc.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libc_malloc_debug.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libcrypt.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libdl.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libm.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libpthread.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libresolv.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/librt.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libthread_db.abilist (100%)
+ copy sysdeps/unix/sysv/linux/arc/{ => arc32}/libutil.abilist (100%)
+ create mode 100644 sysdeps/unix/sysv/linux/arc/arc64/Implies
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/arch-syscall.h (89%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/c++-types.data (73%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/ld.abilist (54%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libBrokenLocale.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libanl.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libc.abilist (97%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libc_malloc_debug.abilist (80%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libcrypt.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libdl.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libm.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libpthread.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libresolv.abilist (95%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/librt.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libthread_db.abilist (100%)
+ rename sysdeps/unix/sysv/linux/arc/{ => arc64}/libutil.abilist (100%)
+ create mode 100644 sysdeps/unix/sysv/linux/arc/bits/fcntl.h
+
+diff --git a/config.h.in b/config.h.in
+index 0dedc124f7..d69b4166c0 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -120,6 +120,12 @@
+ /* ARC big endian ABI */
+ #undef HAVE_ARC_BE
+
++/* ARC64:32 ABI */
++#undef HAVE_ARC32
++
++/* ARC64:64 ABI */
++#undef HAVE_ARC64
++
+ /* C-SKY ABI version. */
+ #undef CSKYABI
+
+diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
+index 32a8bfcf74..68ffdb1c24 100644
+--- a/elf/dl-runtime.c
++++ b/elf/dl-runtime.c
+@@ -42,7 +42,7 @@ _dl_fixup (
+ # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
+ ELF_MACHINE_RUNTIME_FIXUP_ARGS,
+ # endif
+- struct link_map *l, ElfW(Word) reloc_arg)
++ struct link_map *l, uintptr_t reloc_arg)
+ {
+ const ElfW(Sym) *const symtab
+ = (const void *) D_PTR (l, l_info[DT_SYMTAB]);
+@@ -170,7 +170,7 @@ _dl_profile_fixup (
+ #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
+ ELF_MACHINE_RUNTIME_FIXUP_ARGS,
+ #endif
+- struct link_map *l, ElfW(Word) reloc_arg,
++ struct link_map *l, uintptr_t reloc_arg,
+ ElfW(Addr) retaddr, void *regs, long int *framesizep)
+ {
+ void (*mcount_fct) (ElfW(Addr), ElfW(Addr)) = _dl_mcount;
+diff --git a/elf/elf.h b/elf/elf.h
+index 89fc8021e9..05cc75c631 100644
+--- a/elf/elf.h
++++ b/elf/elf.h
+@@ -358,6 +358,8 @@ typedef struct
+
+ #define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */
+ #define EM_CSKY 252 /* C-SKY */
++#define EM_ARCV3 253 /* Synopsys ARCv3 64-bit ISA */
++#define EM_ARCV3_32 255 /* Synopsys ARCv3 32-bit ISA */
+ #define EM_LOONGARCH 258 /* LoongArch */
+
+ #define EM_NUM 259
+@@ -4216,12 +4218,13 @@ enum
+ /* Processor specific values for the Shdr sh_type field. */
+ #define SHT_ARC_ATTRIBUTES (SHT_LOPROC + 1) /* ARC attributes section. */
+
+-/* ARCompact/ARCv2 specific relocs. */
++/* ARCompact/ARCv2/ARCv3 specific relocs. */
+ #define R_ARC_NONE 0x0
+ #define R_ARC_8 0x1
+ #define R_ARC_16 0x2
+ #define R_ARC_24 0x3
+ #define R_ARC_32 0x4
++#define R_ARC_64 0x5
+
+ #define R_ARC_B22_PCREL 0x6
+ #define R_ARC_H30 0x7
+diff --git a/nptl/Makefile b/nptl/Makefile
+index ffa5722e48..c8b7674c27 100644
+--- a/nptl/Makefile
++++ b/nptl/Makefile
+@@ -353,6 +353,7 @@ tests = \
+ tst-thread-exit-clobber \
+ tst-thread-setspecific \
+ tst-thread_local1 \
++ tst-eintr1 \
+ tst-tsd3 \
+ tst-tsd4 \
+ # tests
+@@ -397,10 +398,6 @@ tests-time64 := \
+ tst-cancel4_2-time64
+ # tests-time64
+
+-# This test can run into task limits because of a linux kernel bug
+-# and then cause the make process to fail too, see bug 24537.
+-xtests += tst-eintr1
+-
+ test-srcs = tst-oddstacklimit
+
+ gen-as-const-headers = unwindbuf.sym
+diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
+index 73ffc57c86..6f53c195cd 100755
+--- a/scripts/build-many-glibcs.py
++++ b/scripts/build-many-glibcs.py
+@@ -172,6 +172,12 @@ class Context(object):
+ self.add_config(arch='arceb',
+ os_name='linux-gnu',
+ gcc_cfg=['--disable-multilib', '--with-cpu=hs38'])
++ self.add_config(arch='arc64',
++ os_name='linux-gnu',
++ gcc_cfg=['--disable-multilib'])
++ self.add_config(arch='arc64',
++ os_name='linux-gnuhf',
++ gcc_cfg=['--disable-multilib', '--with-fpu=fpud'])
+ self.add_config(arch='alpha',
+ os_name='linux-gnu')
+ self.add_config(arch='arm',
+diff --git a/scripts/config.sub b/scripts/config.sub
+old mode 100755
+new mode 100644
+index dba16e84c7..4d9a117c9c
+--- a/scripts/config.sub
++++ b/scripts/config.sub
+@@ -1170,6 +1170,14 @@ case $cpu-$vendor in
+ cpu=mipsallegrexel
+ vendor=sony
+ ;;
++ arc32*-*)
++ cpu=arc32
++ vendor=linux
++ ;;
++ arc64*-*)
++ cpu=arc64
++ vendor=linux
++ ;;
+ tile*-*)
+ basic_os=${basic_os:-linux-gnu}
+ ;;
+diff --git a/sysdeps/arc/Implies b/sysdeps/arc/Implies
+index 780c4e2467..12ca48b4c9 100644
+--- a/sysdeps/arc/Implies
++++ b/sysdeps/arc/Implies
+@@ -1,3 +1,2 @@
+-wordsize-32
+ ieee754/flt-32
+ ieee754/dbl-64
+diff --git a/sysdeps/arc/__longjmp.S b/sysdeps/arc/__longjmp.S
+index a57054bce0..920e535ffd 100644
+--- a/sysdeps/arc/__longjmp.S
++++ b/sysdeps/arc/__longjmp.S
+@@ -24,25 +24,49 @@
+
+ ENTRY (__longjmp)
+
+- LDR (blink, r0, 0)
+- LDR (sp, r0, 1)
+- LDR (fp, r0, 2)
+- LDR (gp, r0, 3)
+-
+- LDR (r13, r0, 4)
+- LDR (r14, r0, 5)
+- LDR (r15, r0, 6)
+- LDR (r16, r0, 7)
+- LDR (r17, r0, 8)
+- LDR (r18, r0, 9)
+- LDR (r19, r0, 10)
+- LDR (r20, r0, 11)
+- LDR (r21, r0, 12)
+- LDR (r22, r0, 13)
+- LDR (r23, r0, 14)
+- LDR (r24, r0, 15)
+-
+- mov.f r0, r1
++ LDR.as blink, r0, 0
++ LDR.as sp, r0, 1
++ LDR.as fp, r0, 2
++ LDR.as gp, r0, 3
++
++ LDR.as r13, r0, 4
++ LDR.as r14, r0, 5
++ LDR.as r15, r0, 6
++ LDR.as r16, r0, 7
++ LDR.as r17, r0, 8
++ LDR.as r18, r0, 9
++ LDR.as r19, r0, 10
++ LDR.as r20, r0, 11
++ LDR.as r21, r0, 12
++ LDR.as r22, r0, 13
++ LDR.as r23, r0, 14
++ LDR.as r24, r0, 15
++
++#if defined(__ARCV3__)
++ LDR.as r25, r0, 16
++ LDR.as r26, r0, 17
++#endif
++
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FLDR.as f16, r0, 18
++ FLDR.as f17, r0, 19
++ FLDR.as f18, r0, 20
++ FLDR.as f19, r0, 21
++ FLDR.as f20, r0, 22
++ FLDR.as f21, r0, 23
++ FLDR.as f22, r0, 24
++ FLDR.as f23, r0, 25
++ FLDR.as f24, r0, 26
++ FLDR.as f25, r0, 27
++ FLDR.as f26, r0, 28
++ FLDR.as f27, r0, 29
++ FLDR.as f28, r0, 30
++ FLDR.as f29, r0, 31
++ FLDR.as f30, r0, 32
++ FLDR.as f31, r0, 33
++#endif
++
++ MOVR.f r0, r1
+ j.d [blink]
+ mov.z r0, 1 /* don't return 0 to setjmp callsite from longjmp. */
+
+diff --git a/sysdeps/arc/arc32/Implies b/sysdeps/arc/arc32/Implies
+new file mode 100644
+index 0000000000..39a34c5f57
+--- /dev/null
++++ b/sysdeps/arc/arc32/Implies
+@@ -0,0 +1 @@
++wordsize-32
+diff --git a/sysdeps/arc/arc64/Implies b/sysdeps/arc/arc64/Implies
+new file mode 100644
+index 0000000000..a8cae95f9d
+--- /dev/null
++++ b/sysdeps/arc/arc64/Implies
+@@ -0,0 +1 @@
++wordsize-64
+diff --git a/sysdeps/arc/arc64/fpu/libm-test-ulps b/sysdeps/arc/arc64/fpu/libm-test-ulps
+new file mode 100644
+index 0000000000..f3b8753c4d
+--- /dev/null
++++ b/sysdeps/arc/arc64/fpu/libm-test-ulps
+@@ -0,0 +1,1141 @@
++# Begin of automatic generation
++
++# Maximal error of functions:
++Function: "acos":
++double: 1
++float: 1
++
++Function: "acos_downward":
++double: 1
++float: 1
++
++Function: "acos_towardzero":
++double: 1
++float: 1
++
++Function: "acos_upward":
++double: 1
++float: 1
++
++Function: "acosh":
++double: 2
++float: 2
++
++Function: "acosh_downward":
++double: 2
++float: 2
++
++Function: "acosh_towardzero":
++double: 2
++float: 2
++
++Function: "acosh_upward":
++double: 2
++float: 2
++
++Function: "asin":
++double: 1
++float: 1
++
++Function: "asin_downward":
++double: 1
++float: 1
++
++Function: "asin_towardzero":
++double: 1
++float: 1
++
++Function: "asin_upward":
++double: 2
++float: 1
++
++Function: "asinh":
++double: 2
++float: 2
++
++Function: "asinh_downward":
++double: 3
++float: 3
++
++Function: "asinh_towardzero":
++double: 2
++float: 2
++
++Function: "asinh_upward":
++double: 3
++float: 3
++
++Function: "atan":
++double: 1
++float: 1
++
++Function: "atan2":
++float: 1
++
++Function: "atan2_downward":
++double: 1
++float: 2
++
++Function: "atan2_towardzero":
++double: 1
++float: 2
++
++Function: "atan2_upward":
++double: 1
++float: 1
++
++Function: "atan_downward":
++double: 1
++float: 2
++
++Function: "atan_towardzero":
++double: 1
++float: 1
++
++Function: "atan_upward":
++double: 1
++float: 2
++
++Function: "atanh":
++double: 2
++float: 2
++
++Function: "atanh_downward":
++double: 3
++float: 3
++
++Function: "atanh_towardzero":
++double: 2
++float: 2
++
++Function: "atanh_upward":
++double: 3
++float: 3
++
++Function: "cabs":
++double: 1
++
++Function: "cabs_downward":
++double: 1
++
++Function: "cabs_towardzero":
++double: 1
++
++Function: "cabs_upward":
++double: 1
++float: 1
++
++Function: Real part of "cacos":
++double: 1
++float: 2
++
++Function: Imaginary part of "cacos":
++double: 2
++float: 2
++
++Function: Real part of "cacos_downward":
++double: 3
++float: 2
++
++Function: Imaginary part of "cacos_downward":
++double: 5
++float: 3
++
++Function: Real part of "cacos_towardzero":
++double: 3
++float: 2
++
++Function: Imaginary part of "cacos_towardzero":
++double: 4
++float: 2
++
++Function: Real part of "cacos_upward":
++double: 2
++float: 2
++
++Function: Imaginary part of "cacos_upward":
++double: 5
++float: 5
++
++Function: Real part of "cacosh":
++double: 2
++float: 2
++
++Function: Imaginary part of "cacosh":
++double: 1
++float: 2
++
++Function: Real part of "cacosh_downward":
++double: 4
++float: 2
++
++Function: Imaginary part of "cacosh_downward":
++double: 3
++float: 3
++
++Function: Real part of "cacosh_towardzero":
++double: 4
++float: 2
++
++Function: Imaginary part of "cacosh_towardzero":
++double: 3
++float: 2
++
++Function: Real part of "cacosh_upward":
++double: 4
++float: 3
++
++Function: Imaginary part of "cacosh_upward":
++double: 3
++float: 2
++
++Function: "carg":
++float: 1
++
++Function: "carg_downward":
++double: 1
++float: 2
++
++Function: "carg_towardzero":
++double: 1
++float: 2
++
++Function: "carg_upward":
++double: 1
++float: 1
++
++Function: Real part of "casin":
++double: 1
++float: 1
++
++Function: Imaginary part of "casin":
++double: 2
++float: 2
++
++Function: Real part of "casin_downward":
++double: 3
++float: 2
++
++Function: Imaginary part of "casin_downward":
++double: 5
++float: 3
++
++Function: Real part of "casin_towardzero":
++double: 3
++float: 1
++
++Function: Imaginary part of "casin_towardzero":
++double: 4
++float: 2
++
++Function: Real part of "casin_upward":
++double: 3
++float: 2
++
++Function: Imaginary part of "casin_upward":
++double: 5
++float: 5
++
++Function: Real part of "casinh":
++double: 2
++float: 2
++
++Function: Imaginary part of "casinh":
++double: 1
++float: 1
++
++Function: Real part of "casinh_downward":
++double: 5
++float: 3
++
++Function: Imaginary part of "casinh_downward":
++double: 3
++float: 2
++
++Function: Real part of "casinh_towardzero":
++double: 4
++float: 2
++
++Function: Imaginary part of "casinh_towardzero":
++double: 3
++float: 1
++
++Function: Real part of "casinh_upward":
++double: 5
++float: 5
++
++Function: Imaginary part of "casinh_upward":
++double: 3
++float: 2
++
++Function: Real part of "catan":
++double: 1
++float: 1
++
++Function: Imaginary part of "catan":
++double: 1
++float: 1
++
++Function: Real part of "catan_downward":
++double: 1
++float: 2
++
++Function: Imaginary part of "catan_downward":
++double: 2
++float: 2
++
++Function: Real part of "catan_towardzero":
++double: 1
++float: 2
++
++Function: Imaginary part of "catan_towardzero":
++double: 2
++float: 2
++
++Function: Real part of "catan_upward":
++double: 1
++float: 1
++
++Function: Imaginary part of "catan_upward":
++double: 2
++float: 2
++
++Function: Real part of "catanh":
++double: 1
++float: 1
++
++Function: Imaginary part of "catanh":
++double: 1
++float: 1
++
++Function: Real part of "catanh_downward":
++double: 2
++float: 2
++
++Function: Imaginary part of "catanh_downward":
++double: 1
++float: 2
++
++Function: Real part of "catanh_towardzero":
++double: 2
++float: 2
++
++Function: Imaginary part of "catanh_towardzero":
++double: 1
++float: 2
++
++Function: Real part of "catanh_upward":
++double: 4
++float: 4
++
++Function: Imaginary part of "catanh_upward":
++double: 1
++float: 1
++
++Function: "cbrt":
++double: 4
++float: 1
++
++Function: "cbrt_downward":
++double: 4
++float: 1
++
++Function: "cbrt_towardzero":
++double: 3
++float: 1
++
++Function: "cbrt_upward":
++double: 5
++float: 1
++
++Function: Real part of "ccos":
++double: 1
++float: 1
++
++Function: Imaginary part of "ccos":
++double: 1
++float: 1
++
++Function: Real part of "ccos_downward":
++double: 1
++float: 1
++
++Function: Imaginary part of "ccos_downward":
++double: 3
++float: 3
++
++Function: Real part of "ccos_towardzero":
++double: 1
++float: 2
++
++Function: Imaginary part of "ccos_towardzero":
++double: 3
++float: 3
++
++Function: Real part of "ccos_upward":
++double: 1
++float: 2
++
++Function: Imaginary part of "ccos_upward":
++double: 2
++float: 2
++
++Function: Real part of "ccosh":
++double: 1
++float: 1
++
++Function: Imaginary part of "ccosh":
++double: 1
++float: 1
++
++Function: Real part of "ccosh_downward":
++double: 2
++float: 2
++
++Function: Imaginary part of "ccosh_downward":
++double: 3
++float: 3
++
++Function: Real part of "ccosh_towardzero":
++double: 2
++float: 3
++
++Function: Imaginary part of "ccosh_towardzero":
++double: 3
++float: 3
++
++Function: Real part of "ccosh_upward":
++double: 1
++float: 2
++
++Function: Imaginary part of "ccosh_upward":
++double: 2
++float: 2
++
++Function: Real part of "cexp":
++double: 2
++float: 1
++
++Function: Imaginary part of "cexp":
++double: 1
++float: 2
++
++Function: Real part of "cexp_downward":
++double: 2
++float: 2
++
++Function: Imaginary part of "cexp_downward":
++double: 3
++float: 3
++
++Function: Real part of "cexp_towardzero":
++double: 2
++float: 2
++
++Function: Imaginary part of "cexp_towardzero":
++double: 3
++float: 3
++
++Function: Real part of "cexp_upward":
++double: 2
++float: 2
++
++Function: Imaginary part of "cexp_upward":
++double: 3
++float: 2
++
++Function: Real part of "clog":
++double: 3
++float: 3
++
++Function: Imaginary part of "clog":
++double: 1
++float: 1
++
++Function: Real part of "clog10":
++double: 3
++float: 4
++
++Function: Imaginary part of "clog10":
++double: 2
++float: 2
++
++Function: Real part of "clog10_downward":
++double: 5
++float: 5
++
++Function: Imaginary part of "clog10_downward":
++double: 2
++float: 4
++
++Function: Real part of "clog10_towardzero":
++double: 5
++float: 6
++
++Function: Imaginary part of "clog10_towardzero":
++double: 2
++float: 4
++
++Function: Real part of "clog10_upward":
++double: 6
++float: 5
++
++Function: Imaginary part of "clog10_upward":
++double: 2
++float: 4
++
++Function: Real part of "clog_downward":
++double: 4
++float: 3
++
++Function: Imaginary part of "clog_downward":
++double: 1
++float: 2
++
++Function: Real part of "clog_towardzero":
++double: 4
++float: 4
++
++Function: Imaginary part of "clog_towardzero":
++double: 1
++float: 3
++
++Function: Real part of "clog_upward":
++double: 4
++float: 3
++
++Function: Imaginary part of "clog_upward":
++double: 1
++float: 2
++
++Function: "cos":
++double: 1
++float: 1
++
++Function: "cos_downward":
++double: 1
++float: 1
++
++Function: "cos_towardzero":
++double: 1
++float: 1
++
++Function: "cos_upward":
++double: 1
++float: 1
++
++Function: "cosh":
++double: 2
++float: 2
++
++Function: "cosh_downward":
++double: 3
++float: 2
++
++Function: "cosh_towardzero":
++double: 3
++float: 2
++
++Function: "cosh_upward":
++double: 2
++float: 2
++
++Function: Real part of "cpow":
++double: 2
++float: 5
++
++Function: Imaginary part of "cpow":
++float: 2
++
++Function: Real part of "cpow_downward":
++double: 5
++float: 8
++
++Function: Imaginary part of "cpow_downward":
++double: 1
++float: 2
++
++Function: Real part of "cpow_towardzero":
++double: 5
++float: 8
++
++Function: Imaginary part of "cpow_towardzero":
++double: 1
++float: 2
++
++Function: Real part of "cpow_upward":
++double: 4
++float: 1
++
++Function: Imaginary part of "cpow_upward":
++double: 1
++float: 2
++
++Function: Real part of "csin":
++double: 1
++float: 1
++
++Function: Real part of "csin_downward":
++double: 3
++float: 3
++
++Function: Imaginary part of "csin_downward":
++double: 1
++float: 1
++
++Function: Real part of "csin_towardzero":
++double: 3
++float: 3
++
++Function: Imaginary part of "csin_towardzero":
++double: 1
++float: 1
++
++Function: Real part of "csin_upward":
++double: 2
++float: 2
++
++Function: Imaginary part of "csin_upward":
++double: 1
++float: 2
++
++Function: Real part of "csinh":
++float: 1
++
++Function: Imaginary part of "csinh":
++double: 1
++float: 1
++
++Function: Real part of "csinh_downward":
++double: 2
++float: 1
++
++Function: Imaginary part of "csinh_downward":
++double: 3
++float: 3
++
++Function: Real part of "csinh_towardzero":
++double: 2
++float: 2
++
++Function: Imaginary part of "csinh_towardzero":
++double: 3
++float: 3
++
++Function: Real part of "csinh_upward":
++double: 1
++float: 2
++
++Function: Imaginary part of "csinh_upward":
++double: 2
++float: 2
++
++Function: Real part of "csqrt":
++double: 2
++float: 2
++
++Function: Imaginary part of "csqrt":
++double: 2
++float: 2
++
++Function: Real part of "csqrt_downward":
++double: 5
++float: 4
++
++Function: Imaginary part of "csqrt_downward":
++double: 4
++float: 3
++
++Function: Real part of "csqrt_towardzero":
++double: 4
++float: 3
++
++Function: Imaginary part of "csqrt_towardzero":
++double: 4
++float: 3
++
++Function: Real part of "csqrt_upward":
++double: 5
++float: 4
++
++Function: Imaginary part of "csqrt_upward":
++double: 3
++float: 3
++
++Function: Real part of "ctan":
++double: 1
++float: 1
++
++Function: Imaginary part of "ctan":
++double: 2
++float: 2
++
++Function: Real part of "ctan_downward":
++double: 6
++float: 5
++
++Function: Imaginary part of "ctan_downward":
++double: 2
++float: 2
++
++Function: Real part of "ctan_towardzero":
++double: 5
++float: 2
++
++Function: Imaginary part of "ctan_towardzero":
++double: 2
++float: 2
++
++Function: Real part of "ctan_upward":
++double: 2
++float: 4
++
++Function: Imaginary part of "ctan_upward":
++double: 1
++float: 2
++
++Function: Real part of "ctanh":
++double: 2
++float: 2
++
++Function: Imaginary part of "ctanh":
++double: 2
++float: 2
++
++Function: Real part of "ctanh_downward":
++double: 2
++float: 2
++
++Function: Imaginary part of "ctanh_downward":
++double: 6
++float: 5
++
++Function: Real part of "ctanh_towardzero":
++double: 2
++float: 2
++
++Function: Imaginary part of "ctanh_towardzero":
++double: 5
++float: 2
++
++Function: Real part of "ctanh_upward":
++double: 1
++float: 2
++
++Function: Imaginary part of "ctanh_upward":
++double: 3
++float: 3
++
++Function: "erf":
++double: 1
++float: 1
++
++Function: "erf_downward":
++double: 1
++float: 1
++
++Function: "erf_towardzero":
++double: 1
++float: 1
++
++Function: "erf_upward":
++double: 1
++float: 1
++
++Function: "erfc":
++double: 3
++float: 3
++
++Function: "erfc_downward":
++double: 4
++float: 4
++
++Function: "erfc_towardzero":
++double: 3
++float: 3
++
++Function: "erfc_upward":
++double: 4
++float: 4
++
++Function: "exp":
++double: 1
++float: 1
++
++Function: "exp10":
++double: 2
++float: 1
++
++Function: "exp10_downward":
++double: 3
++float: 1
++
++Function: "exp10_towardzero":
++double: 3
++float: 1
++
++Function: "exp10_upward":
++double: 2
++float: 1
++
++Function: "exp2":
++double: 1
++
++Function: "exp2_downward":
++double: 1
++float: 1
++
++Function: "exp2_towardzero":
++double: 1
++float: 1
++
++Function: "exp2_upward":
++double: 1
++float: 1
++
++Function: "exp_downward":
++double: 1
++float: 1
++
++Function: "exp_towardzero":
++double: 1
++float: 1
++
++Function: "exp_upward":
++double: 1
++float: 1
++
++Function: "expm1":
++double: 1
++float: 1
++
++Function: "expm1_downward":
++double: 1
++float: 1
++
++Function: "expm1_towardzero":
++double: 1
++float: 2
++
++Function: "expm1_upward":
++double: 1
++float: 1
++
++Function: "gamma":
++double: 4
++float: 7
++
++Function: "gamma_downward":
++double: 4
++float: 4
++
++Function: "gamma_towardzero":
++double: 4
++float: 3
++
++Function: "gamma_upward":
++double: 4
++float: 5
++
++Function: "hypot":
++double: 1
++float: 1
++
++Function: "hypot_downward":
++double: 1
++float: 1
++
++Function: "hypot_towardzero":
++double: 1
++float: 1
++
++Function: "hypot_upward":
++double: 1
++float: 1
++
++Function: "j0":
++double: 4
++float: 9
++
++Function: "j0_downward":
++double: 6
++float: 8
++
++Function: "j0_towardzero":
++double: 4
++float: 9
++
++Function: "j0_upward":
++double: 4
++float: 9
++
++Function: "j1":
++double: 3
++float: 9
++
++Function: "j1_downward":
++double: 9
++float: 9
++
++Function: "j1_towardzero":
++double: 5
++float: 9
++
++Function: "j1_upward":
++double: 5
++float: 8
++
++Function: "jn":
++double: 4
++float: 4
++
++Function: "jn_downward":
++double: 4
++float: 5
++
++Function: "jn_towardzero":
++double: 4
++float: 5
++
++Function: "jn_upward":
++double: 5
++float: 5
++
++Function: "lgamma":
++double: 4
++float: 7
++
++Function: "lgamma_downward":
++double: 4
++float: 4
++
++Function: "lgamma_towardzero":
++double: 4
++float: 3
++
++Function: "lgamma_upward":
++double: 4
++float: 5
++
++Function: "log":
++double: 1
++
++Function: "log10":
++double: 2
++float: 2
++
++Function: "log10_downward":
++double: 2
++float: 3
++
++Function: "log10_towardzero":
++double: 2
++float: 2
++
++Function: "log10_upward":
++double: 2
++float: 2
++
++Function: "log1p":
++double: 1
++float: 1
++
++Function: "log1p_downward":
++double: 1
++float: 2
++
++Function: "log1p_towardzero":
++double: 2
++float: 2
++
++Function: "log1p_upward":
++double: 2
++float: 2
++
++Function: "log2":
++double: 2
++float: 1
++
++Function: "log2_downward":
++double: 1
++float: 1
++
++Function: "log2_towardzero":
++double: 1
++float: 1
++
++Function: "log2_upward":
++double: 1
++float: 1
++
++Function: "log_downward":
++double: 1
++float: 1
++
++Function: "log_towardzero":
++double: 1
++float: 1
++
++Function: "log_upward":
++double: 1
++float: 1
++
++Function: "pow":
++double: 1
++
++Function: "pow_downward":
++double: 1
++float: 1
++
++Function: "pow_towardzero":
++double: 1
++float: 1
++
++Function: "pow_upward":
++double: 1
++float: 1
++
++Function: "sin":
++double: 1
++float: 1
++
++Function: "sin_downward":
++double: 1
++float: 1
++
++Function: "sin_towardzero":
++double: 1
++float: 1
++
++Function: "sin_upward":
++double: 1
++float: 1
++
++Function: "sincos":
++double: 1
++float: 1
++
++Function: "sincos_downward":
++double: 1
++float: 1
++
++Function: "sincos_towardzero":
++double: 1
++float: 1
++
++Function: "sincos_upward":
++double: 1
++float: 1
++
++Function: "sinh":
++double: 2
++float: 2
++
++Function: "sinh_downward":
++double: 3
++float: 3
++
++Function: "sinh_towardzero":
++double: 3
++float: 2
++
++Function: "sinh_upward":
++double: 3
++float: 3
++
++Function: "tan":
++float: 1
++
++Function: "tan_downward":
++double: 1
++float: 2
++
++Function: "tan_towardzero":
++double: 1
++float: 1
++
++Function: "tan_upward":
++double: 1
++float: 1
++
++Function: "tanh":
++double: 2
++float: 2
++
++Function: "tanh_downward":
++double: 3
++float: 3
++
++Function: "tanh_towardzero":
++double: 2
++float: 2
++
++Function: "tanh_upward":
++double: 3
++float: 3
++
++Function: "tgamma":
++double: 9
++float: 8
++
++Function: "tgamma_downward":
++double: 9
++float: 7
++
++Function: "tgamma_towardzero":
++double: 9
++float: 7
++
++Function: "tgamma_upward":
++double: 8
++float: 8
++
++Function: "y0":
++double: 3
++float: 8
++
++Function: "y0_downward":
++double: 3
++float: 8
++
++Function: "y0_towardzero":
++double: 3
++float: 8
++
++Function: "y0_upward":
++double: 2
++float: 8
++
++Function: "y1":
++double: 3
++float: 9
++
++Function: "y1_downward":
++double: 6
++float: 8
++
++Function: "y1_towardzero":
++double: 3
++float: 9
++
++Function: "y1_upward":
++double: 6
++float: 9
++
++Function: "yn":
++double: 3
++float: 3
++
++Function: "yn_downward":
++double: 3
++float: 4
++
++Function: "yn_towardzero":
++double: 3
++float: 3
++
++Function: "yn_upward":
++double: 4
++float: 5
++
++# end of automatic generation
+diff --git a/sysdeps/arc/arc64/fpu/libm-test-ulps-name b/sysdeps/arc/arc64/fpu/libm-test-ulps-name
+new file mode 100644
+index 0000000000..8c4fba4f9a
+--- /dev/null
++++ b/sysdeps/arc/arc64/fpu/libm-test-ulps-name
+@@ -0,0 +1 @@
++ARC
+diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/arc64/nofpu/libm-test-ulps
+similarity index 99%
+copy from sysdeps/arc/nofpu/libm-test-ulps
+copy to sysdeps/arc/arc64/nofpu/libm-test-ulps
+index 6ac2830b25..26632ff8f2 100644
+--- a/sysdeps/arc/nofpu/libm-test-ulps
++++ b/sysdeps/arc/arc64/nofpu/libm-test-ulps
+@@ -205,6 +205,7 @@ float: 7
+
+ Function: "hypot":
+ double: 1
++float: 1
+
+ Function: "j0":
+ double: 2
+diff --git a/sysdeps/arc/arc64/nofpu/libm-test-ulps-name b/sysdeps/arc/arc64/nofpu/libm-test-ulps-name
+new file mode 100644
+index 0000000000..8a9879ebd6
+--- /dev/null
++++ b/sysdeps/arc/arc64/nofpu/libm-test-ulps-name
+@@ -0,0 +1 @@
++ARC soft-float
+diff --git a/sysdeps/arc/atomic-machine.h b/sysdeps/arc/atomic-machine.h
+index 6ac3d87dd9..f1565b317b 100644
+--- a/sysdeps/arc/atomic-machine.h
++++ b/sysdeps/arc/atomic-machine.h
+@@ -19,7 +19,23 @@
+ #ifndef _ARC_BITS_ATOMIC_H
+ #define _ARC_BITS_ATOMIC_H 1
+
+-#define __HAVE_64B_ATOMICS 0
++#include <stdint.h>
++
++typedef int32_t atomic32_t;
++typedef uint32_t uatomic32_t;
++typedef int64_t atomic64_t;
++typedef uint64_t uatomic64_t;
++
++typedef intptr_t atomicptr_t;
++typedef uintptr_t uatomicptr_t;
++typedef intmax_t atomic_max_t;
++typedef uintmax_t uatomic_max_t;
++
++# if defined(__ARC64_ARCH64__)
++# define __HAVE_64B_ATOMICS 1
++# else
++# define __HAVE_64B_ATOMICS 0
++# endif
+ #define USE_ATOMIC_COMPILER_BUILTINS 1
+
+ /* ARC does have legacy atomic EX reg, [mem] instruction but the micro-arch
+@@ -30,15 +46,16 @@
+ (abort (), 0)
+ #define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
+ (abort (), 0)
+-#define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
+- (abort (), 0)
++
++# if !defined(__ARC64__)
++# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
++ (abort (), 0)
++#endif
+
+ #define __arch_compare_and_exchange_val_8_int(mem, newval, oldval, model) \
+ (abort (), (__typeof (*mem)) 0)
+ #define __arch_compare_and_exchange_val_16_int(mem, newval, oldval, model) \
+ (abort (), (__typeof (*mem)) 0)
+-#define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
+- (abort (), (__typeof (*mem)) 0)
+
+ #define __arch_compare_and_exchange_val_32_int(mem, newval, oldval, model) \
+ ({ \
+@@ -48,6 +65,20 @@
+ __oldval; \
+ })
+
++# if defined(__ARC64__)
++# define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
++ ({ \
++ typeof (*mem) __oldval = (oldval); \
++ __atomic_compare_exchange_n (mem, (void *) &__oldval, newval, 0, \
++ model, __ATOMIC_RELAXED); \
++ __oldval; \
++ })
++# else
++/* ARCv2 has LOCKD/SCOND but not sure if gcc atomic builtins exist. */
++# define __arch_compare_and_exchange_val_64_int(mem, newval, oldval, model) \
++ (abort (), (__typeof (*mem)) 0)
++#endif
++
+ #define atomic_compare_and_exchange_val_acq(mem, new, old) \
+ __atomic_val_bysize (__arch_compare_and_exchange_val, int, \
+ mem, new, old, __ATOMIC_ACQUIRE)
+diff --git a/sysdeps/arc/bits/setjmp.h b/sysdeps/arc/bits/setjmp.h
+index d1604cde1f..2ca85a679d 100644
+--- a/sysdeps/arc/bits/setjmp.h
++++ b/sysdeps/arc/bits/setjmp.h
+@@ -20,7 +20,11 @@
+ #define _ARC_BITS_SETJMP_H 1
+
+ /* Saves r13-r25 (callee-saved), fp (frame pointer), sp (stack pointer),
+- blink (branch-n-link). */
++ blink (branch-n-link), FP regs. */
++#if defined (__ARC_FLOAT_ABI_HARD__)
++typedef long int __jmp_buf[64];
++#else
+ typedef long int __jmp_buf[32];
++#endif
+
+ #endif
+diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure
+index 7b27e26490..d7b19db793 100644
+--- a/sysdeps/arc/configure
++++ b/sysdeps/arc/configure
+@@ -10,7 +10,7 @@ libc_cv_asm_line_sep='`'
+ printf "%s\n" "#define ASM_LINE_SEP $libc_cv_asm_line_sep" >>confdefs.h
+
+
+-# For big endian ABI, generate a symbol for selecting right dynamic linker
++# For arc64:64 generate a symbol for selecting right dynamic linker
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+@@ -155,6 +155,77 @@ printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for arc64" >&5
++printf %s "checking for arc64... " >&6; }
++if test ${libc_cv_arc64+y}
++then :
++ printf %s "(cached) " >&6
++else $as_nop
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __ARC64_ARCH64__
++ yes
++ #endif
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "yes" >/dev/null 2>&1
++then :
++ libc_cv_arc64=yes
++else $as_nop
++ libc_cv_arc64=no
++fi
++rm -rf conftest*
++
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arc64" >&5
++printf "%s\n" "$libc_cv_arc64" >&6; }
++if test $libc_cv_arc64 = yes; then
++ # For shlib-versions.
++ printf "%s\n" "#define HAVE_ARC64 1" >>confdefs.h
++
++ config_vars="$config_vars
++default-abi = arc64le"
++
++else
++
++# For arc64:32 generate a symbol for selecting right dynamic linker
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for arc32" >&5
++printf %s "checking for arc32... " >&6; }
++if test ${libc_cv_arc32+y}
++then :
++ printf %s "(cached) " >&6
++else $as_nop
++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h. */
++#ifdef __ARC64_ARCH32__
++ yes
++ #endif
++
++_ACEOF
++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
++ $EGREP "yes" >/dev/null 2>&1
++then :
++ libc_cv_arc32=yes
++else $as_nop
++ libc_cv_arc32=no
++fi
++rm -rf conftest*
++
++fi
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arc32" >&5
++printf "%s\n" "$libc_cv_arc32" >&6; }
++
++if test $libc_cv_arc32 = yes; then
++ # For shlib-versions.
++ printf "%s\n" "#define HAVE_ARC32 1" >>confdefs.h
++
++ config_vars="$config_vars
++default-abi = arc32le"
++
++else
++
++# For big endian ABI, generate a symbol for selecting right dynamic linker
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
+ printf %s "checking for big endian... " >&6; }
+ if test ${libc_cv_arc_be+y}
+@@ -189,5 +260,12 @@ default-abi = arcbe"
+ else
+ config_vars="$config_vars
+ default-abi = arcle"
++# big endian
++fi
++
++# arc64:32
++fi
++
++# arc64:64
+ fi
+
+diff --git a/sysdeps/arc/configure.ac b/sysdeps/arc/configure.ac
+index 619da4e088..4e84f17105 100644
+--- a/sysdeps/arc/configure.ac
++++ b/sysdeps/arc/configure.ac
+@@ -9,6 +9,35 @@ libc_cv_have_sdata_section=no
+ libc_cv_asm_line_sep='`'
+ AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
+
++# For arc64:64 generate a symbol for selecting right dynamic linker
++AC_CACHE_CHECK([for arc64],
++ [libc_cv_arc64],
++ [AC_EGREP_CPP(yes,[#ifdef __ARC64_ARCH64__
++ yes
++ #endif
++ ], libc_cv_arc64=yes, libc_cv_arc64=no)])
++if test $libc_cv_arc64 = yes; then
++ # For shlib-versions.
++ AC_DEFINE(HAVE_ARC64)
++ LIBC_CONFIG_VAR([default-abi], [arc64le])
++
++else
++
++# For arc64:32 generate a symbol for selecting right dynamic linker
++AC_CACHE_CHECK([for arc32],
++ [libc_cv_arc32],
++ [AC_EGREP_CPP(yes,[#ifdef __ARC64_ARCH32__
++ yes
++ #endif
++ ], libc_cv_arc32=yes, libc_cv_arc32=no)])
++
++if test $libc_cv_arc32 = yes; then
++ # For shlib-versions.
++ AC_DEFINE(HAVE_ARC32)
++ LIBC_CONFIG_VAR([default-abi], [arc32le])
++
++else
++
+ # For big endian ABI, generate a symbol for selecting right dynamic linker
+ AC_CACHE_CHECK([for big endian],
+ [libc_cv_arc_be],
+@@ -22,4 +51,11 @@ if test $libc_cv_arc_be = yes; then
+ LIBC_CONFIG_VAR([default-abi], [arcbe])
+ else
+ LIBC_CONFIG_VAR([default-abi], [arcle])
++# big endian
++fi
++
++# arc64:32
++fi
++
++# arc64:64
+ fi
+diff --git a/sysdeps/arc/dl-machine.h b/sysdeps/arc/dl-machine.h
+index 4dc652a449..dbb7394c27 100644
+--- a/sysdeps/arc/dl-machine.h
++++ b/sysdeps/arc/dl-machine.h
+@@ -32,18 +32,19 @@
+ #include <dl-tls.h>
+ #include <dl-static-tls.h>
+ #include <dl-machine-rel.h>
++#include <sysdep.h>
+
+ /* Dynamic Linking ABI for ARCv2 ISA.
+
+- PLT
++ .plt
+ -------------------------------- <---- DT_PLTGOT
+ | ld r11, [pcl, off-to-GOT[1] | 0
+ | | 4
+- plt0 | ld r10, [pcl, off-to-GOT[2] | 8
++ PLT0 | ld r10, [pcl, off-to-GOT[2] | 8
+ | | 12
+ | j [r10] | 16
+ --------------------------------
+- | Base address of GOT | 20
++ | Base address of .got.plt | 20
+ --------------------------------
+ | ld r12, [pcl, off-to-GOT[3] | 24
+ plt1 | |
+@@ -69,11 +70,11 @@
+ --------------
+ | [1] | Module info - setup by ld.so
+ --------------
+- | [2] | resolver entry point
++ | [2] | resolver entry point: _dl_runtime_resolve
+ --------------
+ | [3] |
+ | ... | Runtime address for function symbols
+- | [f] |
++ | [f] | Initially point to PLT0
+ --------------
+
+ For ARCompact, the PLT is 12 bytes due to short instructions
+@@ -91,6 +92,8 @@ static inline int
+ elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
+ {
+ return (ehdr->e_machine == EM_ARCV2 /* ARC HS. */
++ || ehdr->e_machine == EM_ARCV3 /* ARCv3: ARC64. */
++ || ehdr->e_machine == EM_ARCV3_32 /* ARCv3: ARC32. */
+ || ehdr->e_machine == EM_ARC_COMPACT); /* ARC 700. */
+ }
+
+@@ -114,7 +117,7 @@ elf_machine_load_address (void)
+ /* For build address, below generates
+ ld r0, [pcl, _GLOBAL_OFFSET_TABLE_@pcl]. */
+ build_addr = elf_machine_dynamic ();
+- __asm__ ("add %0, pcl, _DYNAMIC@pcl \n" : "=r" (run_addr));
++ __asm__ ("ADDR %0, pcl, _DYNAMIC@pcl \n" : "=r" (run_addr));
+
+ return run_addr - build_addr;
+ }
+@@ -131,10 +134,13 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+
+ if (l->l_info[DT_JMPREL] && lazy)
+ {
+- /* On ARC DT_PLTGOT point to .plt whose 5th word (after the PLT header)
+- contains the address of .got. */
++ /* update .got.plt[1] and .got.plt[2].
++ DT_PLTGOT point to base of .plt and PLT0 is 3 instructions
++ for total of 20 bytes, see illustration at top.
++ The word right after contains base address of .got.plt. */
+ ElfW(Addr) *plt_base = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]);
+- ElfW(Addr) *got = (ElfW(Addr) *) (plt_base[5] + l->l_addr);
++ ElfW(Addr) *got_build = (ElfW(Addr) *) ((uintptr_t)plt_base + 20);
++ ElfW(Addr) *got = (ElfW(Addr) *) (*got_build + l->l_addr);
+
+ got[1] = (ElfW(Addr)) l; /* Identify this shared object. */
+
+@@ -152,6 +158,8 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+ -optionally adjusts argc for executable if exec passed as cmd
+ -calls into app main with address of finaliser. */
+
++#ifdef __ARC64_ARCH64__
++
+ #define RTLD_START asm ("\
+ .text \n\
+ .globl __start \n\
+@@ -159,25 +167,55 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
+ __start: \n\
+ /* (1). bootstrap ld.so. */ \n\
+ bl.d _dl_start \n\
+- mov_s r0, sp /* pass ptr to aux vector tbl. */ \n\
+- mov r13, r0 /* safekeep app elf entry point. */ \n\
+- ld_s r1, [sp] /* orig argc. */ \n\
++ MOVR r0, sp /* pass ptr to aux vector tbl. */ \n\
++ MOVR r14, r0 /* safekeep app elf entry point. */ \n\
++ LDR r1, sp /* orig argc. */ \n\
+ \n\
+ /* (2). call preinit stuff. */ \n\
+- ld r0, [pcl, _rtld_local@pcl] \n\
+- add r2, sp, 4 ; argv \n\
+- add2 r3, r2, r1 \n\
+- add r3, r3, 4 ; env \n\
++ LDR r0, pcl, _rtld_local@pcl \n\
++ ADDR r2, sp, 8 ; argv \n\
++ ADD3R r3, r2, r1 \n\
++ ADDR r3, r3, 8 ; env \n\
+ bl _dl_init@plt \n\
+ \n\
+ /* (3) call app elf entry point. */ \n\
+- add r0, pcl, _dl_fini@pcl \n\
+- j [r13] \n\
++ ADDR r0, pcl, _dl_fini@pcl \n\
++ j [r14] \n\
+ \n\
+ .size __start,.-__start \n\
+ .previous \n\
+ ");
+
++#else
++
++#define RTLD_START asm ("\
++.text \n\
++.globl __start \n\
++.type __start, @function \n\
++__start: \n\
++ /* (1). bootstrap ld.so. */ \n\
++ bl.d _dl_start \n\
++ MOVR r0, sp /* pass ptr to aux vector tbl. */ \n\
++ MOVR r14, r0 /* safekeep app elf entry point. */ \n\
++ LDR r1, sp /* orig argc. */ \n\
++ \n\
++ /* (2). call preinit stuff. */ \n\
++ LDR r0, pcl, _rtld_local@pcl \n\
++ ADDR r2, sp, 4 ; argv \n\
++ ADD2R r3, r2, r1 \n\
++ ADDR r3, r3, 4 ; env \n\
++ bl _dl_init@plt \n\
++ \n\
++ /* (3) call app elf entry point. */ \n\
++ ADDR r0, pcl, _dl_fini@pcl \n\
++ j [r14] \n\
++ \n\
++ .size __start,.-__start \n\
++ .previous \n\
++");
++
++#endif
++
+ /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
+ PLT entries should not be allowed to define the value.
+ ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
+@@ -289,6 +327,7 @@ elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[],
+ break;
+
+ case R_ARC_32:
++ case R_ARC_64:
+ *reloc_addr += value + reloc->r_addend;
+ break;
+
+diff --git a/sysdeps/arc/dl-trampoline.S b/sysdeps/arc/dl-trampoline.S
+index 1b307a616f..386009d41e 100644
+--- a/sysdeps/arc/dl-trampoline.S
++++ b/sysdeps/arc/dl-trampoline.S
+@@ -31,42 +31,71 @@
+ ENTRY (_dl_runtime_resolve)
+
+ /* save args to func being resolved before entering resolver. */
+- push_s r0
+- push_s r1
+- push_s r2
+- push_s r3
+- st.a r4, [sp, -4]
+- st.a r5, [sp, -4]
+- st.a r6, [sp, -4]
+- st.a r7, [sp, -4]
+- st.a r8, [sp, -4]
+- st.a r9, [sp, -4]
+- cfi_adjust_cfa_offset (40)
+- push_s blink
+- cfi_adjust_cfa_offset (4)
++ PUSHR r0
++ PUSHR r1
++ PUSHR r2
++ PUSHR r3
++ PUSHR r4
++ PUSHR r5
++ PUSHR r6
++ PUSHR r7
++ PUSHR r8
++ PUSHR r9
++
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FPUSHR f0
++ FPUSHR f1
++ FPUSHR f2
++ FPUSHR f3
++ FPUSHR f4
++ FPUSHR f5
++ FPUSHR f6
++ FPUSHR f7
++ cfi_adjust_cfa_offset (18*REGSZ)
++#else
++ cfi_adjust_cfa_offset (10*REGSZ)
++#endif
++
++ PUSHR blink
++ cfi_adjust_cfa_offset (REGSZ)
+ cfi_rel_offset (blink, 0)
+
+- mov_s r1, r12
++ MOVR r1, r12
+ bl.d _dl_fixup
+- mov r0, r11
++ MOVR r0, r11
+
+ /* restore regs back. */
+- ld.ab blink,[sp, 4]
+- cfi_adjust_cfa_offset (-4)
++ POPR blink
++ cfi_adjust_cfa_offset (-REGSZ)
+ cfi_restore (blink)
+- ld.ab r9, [sp, 4]
+- ld.ab r8, [sp, 4]
+- ld.ab r7, [sp, 4]
+- ld.ab r6, [sp, 4]
+- ld.ab r5, [sp, 4]
+- ld.ab r4, [sp, 4]
+- pop_s r3
+- pop_s r2
+- pop_s r1
+- cfi_adjust_cfa_offset (-36)
+
+- j_s.d [r0] /* r0 has resolved function addr. */
+- pop_s r0 /* restore first arg to resolved call. */
+- cfi_adjust_cfa_offset (-4)
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FPOPR f7
++ FPOPR f6
++ FPOPR f5
++ FPOPR f4
++ FPOPR f3
++ FPOPR f2
++ FPOPR f1
++ FPOPR f0
++#endif
++ POPR r9
++ POPR r8
++ POPR r7
++ POPR r6
++ POPR r5
++ POPR r4
++ POPR r3
++ POPR r2
++ POPR r1
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ cfi_adjust_cfa_offset (-17*REGSZ)
++#else
++ cfi_adjust_cfa_offset (-9*REGSZ)
++#endif
++
++ j.d [r0] /* r0 has resolved function addr. */
++ POPR r0 /* restore first arg to resolved call. */
++ cfi_adjust_cfa_offset (-REGSZ)
+ cfi_restore (r0)
+ END (_dl_runtime_resolve)
+diff --git a/sysdeps/arc/fpu/math-use-builtins-fma.h b/sysdeps/arc/fpu/math-use-builtins-fma.h
+index 2acd8113ce..59c7ed0343 100644
+--- a/sysdeps/arc/fpu/math-use-builtins-fma.h
++++ b/sysdeps/arc/fpu/math-use-builtins-fma.h
+@@ -1,13 +1,17 @@
+-#if defined __ARC_FPU_DP_FMA__
++#if defined __ARCV3__
+ # define USE_FMA_BUILTIN 1
+-#else
+-# define USE_FMA_BUILTIN 0
+-#endif
+-
+-#if defined __ARC_FPU_SP_FMA__
+ # define USE_FMAF_BUILTIN 1
+ #else
+-# define USE_FMAF_BUILTIN 0
++# if defined __ARC_FPU_DP_FMA__
++# define USE_FMA_BUILTIN 1
++# else
++# define USE_FMA_BUILTIN 0
++# endif
++# if defined __ARC_FPU_SP_FMA__
++# define USE_FMAF_BUILTIN 1
++# else
++# define USE_FMAF_BUILTIN 0
++# endif
+ #endif
+
+ #define USE_FMAL_BUILTIN 0
+diff --git a/sysdeps/arc/fpu/math-use-builtins-sqrt.h b/sysdeps/arc/fpu/math-use-builtins-sqrt.h
+index a449bc6092..40a07730ea 100644
+--- a/sysdeps/arc/fpu/math-use-builtins-sqrt.h
++++ b/sysdeps/arc/fpu/math-use-builtins-sqrt.h
+@@ -1,13 +1,17 @@
+-#if defined __ARC_FPU_DP_DIV__
++#if defined __ARCV3__
+ # define USE_SQRT_BUILTIN 1
+-#else
+-# define USE_SQRT_BUILTIN 0
+-#endif
+-
+-#if defined __ARC_FPU_SP_DIV__
+ # define USE_SQRTF_BUILTIN 1
+ #else
+-# define USE_SQRTF_BUILTIN 0
++# if defined __ARC_FPU_DP_DIV__
++# define USE_SQRT_BUILTIN 1
++# else
++# define USE_SQRT_BUILTIN 0
++# endif
++# if defined __ARC_FPU_SP_DIV__
++# define USE_SQRTF_BUILTIN 1
++# else
++# define USE_SQRTF_BUILTIN 0
++# endif
+ #endif
+
+ #define USE_SQRTL_BUILTIN 0
+diff --git a/sysdeps/arc/isa-asm-macro-32.h b/sysdeps/arc/isa-asm-macro-32.h
+new file mode 100644
+index 0000000000..98cd249059
+--- /dev/null
++++ b/sysdeps/arc/isa-asm-macro-32.h
+@@ -0,0 +1,61 @@
++# define REGSZ 4
++
++.irp aa,,.as
++.macro LDR\aa d, s, off=0
++ ld\aa \d, [\s, \off]
++.endm
++.endr
++
++.irp aa,,.as
++.macro STR\aa d, s, off=0
++ st\aa \d, [\s, \off]
++.endm
++.endr
++
++.macro PUSHR r
++ push \r
++.endm
++
++.macro POPR r
++ pop \r
++.endm
++
++.irp cc,,.f
++.macro MOVR\cc d, s
++ mov\cc \d, \s
++.endm
++.endr
++
++.irp cc,,.nz
++.macro ADDR\cc d, s, v
++ add\cc \d, \s, \v
++.endm
++.endr
++
++.macro ADD2R d, s, v
++ add2 \d, \s, \v
++.endm
++
++.macro ADD3R d, s, v
++ add3 \d, \s, \v
++.endm
++
++.macro SUBR d, s, v
++ sub \d, \s, \v
++.endm
++
++.macro ANDR d, s, v
++ and \d, \s, \v
++.endm
++
++.irp cc,,eq,hi
++.macro BRR\cc d, s, v
++ br\cc \d, \s, \v
++.endm
++.endr
++
++.irp cc,,.ne
++.macro CMPR\cc d, s
++ cmp\cc \d, \s
++.endm
++.endr
+diff --git a/sysdeps/arc/isa-asm-macro-64.h b/sysdeps/arc/isa-asm-macro-64.h
+new file mode 100644
+index 0000000000..02b1dc2c37
+--- /dev/null
++++ b/sysdeps/arc/isa-asm-macro-64.h
+@@ -0,0 +1,86 @@
++# define REGSZ 8
++
++.irp aa,,.as
++.macro LDR\aa d, s, off=0
++ ldl\aa \d, [\s, \off]
++.endm
++.endr
++
++.irp aa,,.as
++.macro STR\aa d, s, off=0
++ stl\aa \d, [\s, \off]
++.endm
++.endr
++
++.macro PUSHR r
++ pushl \r
++.endm
++
++.macro POPR r
++ popl \r
++.endm
++
++.irp cc,,.f
++.macro MOVR\cc d, s
++ movl\cc \d, \s
++.endm
++.endr
++
++.irp cc,,.nz
++.macro ADDR\cc d, s, v
++ addl\cc \d, \s, \v
++.endm
++.endr
++
++.macro ADD2R d, s, v
++ add2l \d, \s, \v
++.endm
++
++.macro ADD3R d, s, v
++ add3l \d, \s, \v
++.endm
++
++.macro SUBR d, s, v
++ subl \d, \s, \v
++.endm
++
++.macro ANDR d, s, v
++ andl \d, \s, \v
++.endm
++
++.irp cc,eq,hi
++.macro BRR\cc d, s, v
++; arc64 gas doesn't support BRHIL pseudo-instruction
++.ifeqs "\cc","hi"
++ brlo\()l \s, \d, \v
++.else
++ br\cc\()l \d, \s, \v
++.endif
++.endm
++.endr
++
++.irp cc,,.ne
++.macro CMPR\cc d, s
++ cmpl\cc \d, \s
++.endm
++.endr
++
++.irp aa,,.as,.aw,.ab
++.macro FLDR\aa d, s, off=0
++ fld64\aa \d, [\s, \off]
++.endm
++.endr
++
++.irp aa,,.as,.aw,.ab
++.macro FSTR\aa d, s, off=0
++ fst64\aa \d, [\s, \off]
++.endm
++.endr
++
++.macro FPUSHR r
++ FSTR.aw \r, sp, -REGSZ
++.endm
++
++.macro FPOPR r
++ FLDR.ab \r, sp, REGSZ
++.endm
+diff --git a/sysdeps/arc/isa-asm-macros.h b/sysdeps/arc/isa-asm-macros.h
+new file mode 100644
+index 0000000000..f9f5e4f630
+--- /dev/null
++++ b/sysdeps/arc/isa-asm-macros.h
+@@ -0,0 +1,35 @@
++/* ISA Specific Assembler macros for ARC.
++ Copyright (C) 2020 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public License as
++ published by the Free Software Foundation; either version 2.1 of the
++ License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <https://www.gnu.org/licenses/>. */
++
++#ifdef __ASSEMBLER__
++
++# ifdef __ARC64_ARCH64__
++# include <sysdeps/arc/isa-asm-macro-64.h>
++# else
++# include <sysdeps/arc/isa-asm-macro-32.h>
++# endif
++
++#else
++
++# ifdef __ARC64_ARCH64__
++asm(".include \"sysdeps/arc/isa-asm-macro-64.h\"\n");
++# else
++asm(".include \"sysdeps/arc/isa-asm-macro-32.h\"\n");
++# endif
++
++#endif
+diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps
+index 6ac2830b25..26632ff8f2 100644
+--- a/sysdeps/arc/nofpu/libm-test-ulps
++++ b/sysdeps/arc/nofpu/libm-test-ulps
+@@ -205,6 +205,7 @@ float: 7
+
+ Function: "hypot":
+ double: 1
++float: 1
+
+ Function: "j0":
+ double: 2
+diff --git a/sysdeps/arc/nptl/pthreaddef.h b/sysdeps/arc/nptl/pthreaddef.h
+index 336eded15c..3b51e59a35 100644
+--- a/sysdeps/arc/nptl/pthreaddef.h
++++ b/sysdeps/arc/nptl/pthreaddef.h
+@@ -23,7 +23,7 @@
+ #define ARCH_MIN_GUARD_SIZE 0
+
+ /* Required stack pointer alignment at beginning. */
+-#define STACK_ALIGN 4
++#define STACK_ALIGN 8
+
+ /* Minimal stack size after allocating thread descriptor and guard size. */
+ #define MINIMAL_REST_STACK 2048
+diff --git a/sysdeps/arc/preconfigure b/sysdeps/arc/preconfigure
+index a79db0239a..eab4af0eab 100644
+--- a/sysdeps/arc/preconfigure
++++ b/sysdeps/arc/preconfigure
+@@ -1,14 +1,22 @@
+ case "$machine" in
+ arc*)
+- base_machine=arc
+- machine=arc
++ with_fp_cond=0
++ isarc64=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __LP64__| wc -l`
++
++ case "$isarc64" in
++ 0)
++ base_machine=arc
++ machine=arc/arc32
++ ;;
++ 1)
++ base_machine=arc
++ machine=arc/arc64
++ ;;
++ esac
+
+ gccfloat=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep __ARC_FPU_| wc -l`
+ if test "$gccfloat" != "0"; then
+ with_fp_cond=1
+- else
+- with_fp_cond=0
+ fi
+ ;;
+-
+ esac
+diff --git a/sysdeps/arc/setjmp.S b/sysdeps/arc/setjmp.S
+index 9ecdb9daae..e39b526837 100644
+--- a/sysdeps/arc/setjmp.S
++++ b/sysdeps/arc/setjmp.S
+@@ -41,24 +41,47 @@ ENTRY (__sigsetjmp)
+ that will be right next to this setjmp call-site in BLINK
+ since "C" caller of this routine will do a branch-n-link. */
+
+- STR (blink, r0, 0)
+- STR (sp, r0, 1)
+- STR (fp, r0, 2)
+- STR (gp, r0, 3)
++ STR.as blink, r0, 0
++ STR.as sp, r0, 1
++ STR.as fp, r0, 2
++ STR.as gp, r0, 3
+
+- STR (r13, r0, 4)
+- STR (r14, r0, 5)
+- STR (r15, r0, 6)
+- STR (r16, r0, 7)
+- STR (r17, r0, 8)
+- STR (r18, r0, 9)
+- STR (r19, r0, 10)
+- STR (r20, r0, 11)
+- STR (r21, r0, 12)
+- STR (r22, r0, 13)
+- STR (r23, r0, 14)
+- STR (r24, r0, 15)
++ STR.as r13, r0, 4
++ STR.as r14, r0, 5
++ STR.as r15, r0, 6
++ STR.as r16, r0, 7
++ STR.as r17, r0, 8
++ STR.as r18, r0, 9
++ STR.as r19, r0, 10
++ STR.as r20, r0, 11
++ STR.as r21, r0, 12
++ STR.as r22, r0, 13
++ STR.as r23, r0, 14
++ STR.as r24, r0, 15
+
++#if defined(__ARCV3__)
++ STR.as r25, r0, 16
++ STR.as r26, r0, 17
++#endif
++
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FSTR.as f16, r0, 18
++ FSTR.as f17, r0, 19
++ FSTR.as f18, r0, 20
++ FSTR.as f19, r0, 21
++ FSTR.as f20, r0, 22
++ FSTR.as f21, r0, 23
++ FSTR.as f22, r0, 24
++ FSTR.as f23, r0, 25
++ FSTR.as f24, r0, 26
++ FSTR.as f25, r0, 27
++ FSTR.as f26, r0, 28
++ FSTR.as f27, r0, 29
++ FSTR.as f28, r0, 30
++ FSTR.as f29, r0, 31
++ FSTR.as f30, r0, 32
++ FSTR.as f31, r0, 33
++#endif
+ b __sigjmp_save
+
+ END (__sigsetjmp)
+diff --git a/sysdeps/arc/sfp-machine.h b/sysdeps/arc/sfp-machine.h
+index 0917a7ae17..4743b694a2 100644
+--- a/sysdeps/arc/sfp-machine.h
++++ b/sysdeps/arc/sfp-machine.h
+@@ -17,10 +17,12 @@
+ <https://www.gnu.org/licenses/>. */
+
+
+-#define _FP_W_TYPE_SIZE 32
+-#define _FP_W_TYPE unsigned long
+-#define _FP_WS_TYPE signed long
+-#define _FP_I_TYPE long
++#ifndef __ARC64__
++
++# define _FP_W_TYPE_SIZE 32
++# define _FP_W_TYPE unsigned long
++# define _FP_WS_TYPE signed long
++# define _FP_I_TYPE long
+
+ #define _FP_MUL_MEAT_S(R,X,Y) \
+ _FP_MUL_MEAT_1_wide(_FP_WFRACBITS_S,R,X,Y,umul_ppmm)
+@@ -67,4 +69,49 @@
+ R##_c = FP_CLS_NAN; \
+ } while (0)
+
++#else
++
++# define _FP_W_TYPE_SIZE 64
++# define _FP_W_TYPE unsigned long long
++# define _FP_WS_TYPE signed long long
++# define _FP_I_TYPE long long
++
++# define _FP_MUL_MEAT_S(R, X, Y) \
++ _FP_MUL_MEAT_1_imm (_FP_WFRACBITS_S, R, X, Y)
++# define _FP_MUL_MEAT_D(R, X, Y) \
++ _FP_MUL_MEAT_1_wide (_FP_WFRACBITS_D, R, X, Y, umul_ppmm)
++# define _FP_MUL_MEAT_Q(R, X, Y) \
++ _FP_MUL_MEAT_2_wide_3mul (_FP_WFRACBITS_Q, R, X, Y, umul_ppmm)
++
++# define _FP_MUL_MEAT_DW_S(R, X, Y) \
++ _FP_MUL_MEAT_DW_1_imm (_FP_WFRACBITS_S, R, X, Y)
++# define _FP_MUL_MEAT_DW_D(R, X, Y) \
++ _FP_MUL_MEAT_DW_1_wide (_FP_WFRACBITS_D, R, X, Y, umul_ppmm)
++# define _FP_MUL_MEAT_DW_Q(R, X, Y) \
++ _FP_MUL_MEAT_DW_2_wide_3mul (_FP_WFRACBITS_Q, R, X, Y, umul_ppmm)
++
++# define _FP_DIV_MEAT_S(R, X, Y) _FP_DIV_MEAT_1_imm (S, R, X, Y, _FP_DIV_HELP_imm)
++# define _FP_DIV_MEAT_D(R, X, Y) _FP_DIV_MEAT_1_udiv_norm (D, R, X, Y)
++# define _FP_DIV_MEAT_Q(R, X, Y) _FP_DIV_MEAT_2_udiv (Q, R, X, Y)
++
++# define _FP_NANFRAC_S _FP_QNANBIT_S
++# define _FP_NANFRAC_D _FP_QNANBIT_D
++# define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0
++
++#define _FP_NANSIGN_S 0
++#define _FP_NANSIGN_D 0
++#define _FP_NANSIGN_Q 0
++
++#define _FP_KEEPNANFRACP 0
++#define _FP_QNANNEGATEDP 0
++
++#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
++ do { \
++ R##_s = _FP_NANSIGN_##fs; \
++ _FP_FRAC_SET_##wc (R, _FP_NANFRAC_##fs); \
++ R##_c = FP_CLS_NAN; \
++ } while (0)
++
++#endif
++
+ #define _FP_TININESS_AFTER_ROUNDING 1
+diff --git a/sysdeps/arc/start.S b/sysdeps/arc/start.S
+index db3bab6395..42ead9d302 100644
+--- a/sysdeps/arc/start.S
++++ b/sysdeps/arc/start.S
+@@ -57,12 +57,12 @@ ENTRY (ENTRY_POINT)
+ cfi_undefined (blink)
+
+ mov fp, 0
+- ld_s r1, [sp] /* argc. */
++ LDR r1, sp /* argc. */
+
+- mov_s r5, r0 /* rltd_fini. */
+- add_s r2, sp, 4 /* argv. */
+- and sp, sp, -8
+- mov r6, sp
++ MOVR r5, r0 /* rltd_fini. */
++ ADDR r2, sp, REGSZ /* argv. */
++ ANDR sp, sp, -2*REGSZ
++ MOVR r6, sp
+
+ /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end). */
+
+@@ -70,10 +70,10 @@ ENTRY (ENTRY_POINT)
+ mov r4, 0 /* Used to be fini. */
+
+ #ifdef SHARED
+- ld r0, [pcl, @main@gotpc]
++ LDR r0, pcl, @main@gotpc
+ bl __libc_start_main@plt
+ #else
+- mov_s r0, main
++ MOVR r0, main
+ bl __libc_start_main
+ #endif
+
+diff --git a/sysdeps/arc/sysdep.h b/sysdeps/arc/sysdep.h
+index 4f024f6b73..ba6ecddbac 100644
+--- a/sysdeps/arc/sysdep.h
++++ b/sysdeps/arc/sysdep.h
+@@ -47,7 +47,6 @@
+
+ # define CALL_MCOUNT /* Do nothing for now. */
+
+-# define STR(reg, rbase, off) st reg, [rbase, off * 4]
+-# define LDR(reg, rbase, off) ld reg, [rbase, off * 4]
+-
+ #endif /* __ASSEMBLER__ */
++
++#include <sysdeps/arc/isa-asm-macros.h>
+diff --git a/sysdeps/unix/sysv/linux/arc/Makefile b/sysdeps/unix/sysv/linux/arc/Makefile
+index eca9a9fd3a..00d655bcd3 100644
+--- a/sysdeps/unix/sysv/linux/arc/Makefile
++++ b/sysdeps/unix/sysv/linux/arc/Makefile
+@@ -12,11 +12,13 @@ sysdep_headers += sys/cachectl.h
+ sysdep_routines += cacheflush
+ endif
+
+-abi-variants := arcle arcbe
++abi-variants := arcle arcbe arc32le arc64le
+
+ ifeq (,$(filter $(default-abi),$(abi-variants)))
+ $(error Unknown ABI $(default-abi), must be one of $(abi-variants))
+ endif
+
+-abi-arcle-condition := !defined __BIG_ENDIAN__
+-abi-arcbe-condition := defined __BIG_ENDIAN__
++abi-arcle-condition := !defined __ARC64__ && !defined __BIG_ENDIAN__
++abi-arcbe-condition := !defined __ARC64__ && defined __BIG_ENDIAN__
++abi-arc32le-condition := defined __ARC64_ARCH32__ && !defined __BIG_ENDIAN__
++abi-arc64le-condition := defined __ARC64_ARCH64__ && !defined __BIG_ENDIAN__
+diff --git a/sysdeps/unix/sysv/linux/arc/arc32/Implies b/sysdeps/unix/sysv/linux/arc/arc32/Implies
+new file mode 100644
+index 0000000000..9670973cfa
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/arc32/Implies
+@@ -0,0 +1 @@
++unix/sysv/linux/arc
+diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arc32/arch-syscall.h
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/arch-syscall.h
+copy to sysdeps/unix/sysv/linux/arc/arc32/arch-syscall.h
+diff --git a/sysdeps/unix/sysv/linux/arc/c++-types.data b/sysdeps/unix/sysv/linux/arc/arc32/c++-types.data
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/c++-types.data
+copy to sysdeps/unix/sysv/linux/arc/arc32/c++-types.data
+diff --git a/sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/arc/arc32/fixup-asm-unistd.h
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/fixup-asm-unistd.h
+rename to sysdeps/unix/sysv/linux/arc/arc32/fixup-asm-unistd.h
+diff --git a/sysdeps/unix/sysv/linux/arc/ld.abilist b/sysdeps/unix/sysv/linux/arc/arc32/ld.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/ld.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/ld.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libBrokenLocale.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libBrokenLocale.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libanl.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libanl.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libanl.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libanl.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libc.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libc.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libc.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libc_malloc_debug.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libc_malloc_debug.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libcrypt.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libcrypt.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libcrypt.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libdl.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libdl.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libdl.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libm.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libm.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libm.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libpthread.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libpthread.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libpthread.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libresolv.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libresolv.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libresolv.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libresolv.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/arc32/librt.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/librt.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/librt.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libthread_db.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libthread_db.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libthread_db.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/arc32/libutil.abilist
+similarity index 100%
+copy from sysdeps/unix/sysv/linux/arc/libutil.abilist
+copy to sysdeps/unix/sysv/linux/arc/arc32/libutil.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/arc64/Implies b/sysdeps/unix/sysv/linux/arc/arc64/Implies
+new file mode 100644
+index 0000000000..05abf4461a
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/arc64/Implies
+@@ -0,0 +1,2 @@
++unix/sysv/linux/arc
++unix/sysv/linux/wordsize-64
+diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arc64/arch-syscall.h
+similarity index 89%
+rename from sysdeps/unix/sysv/linux/arc/arch-syscall.h
+rename to sysdeps/unix/sysv/linux/arc/arc64/arch-syscall.h
+index c1207aaa12..c73f38e567 100644
+--- a/sysdeps/unix/sysv/linux/arc/arch-syscall.h
++++ b/sysdeps/unix/sysv/linux/arc/arc64/arch-syscall.h
+@@ -15,11 +15,11 @@
+ #define __NR_capset 91
+ #define __NR_chdir 49
+ #define __NR_chroot 51
+-#define __NR_clock_adjtime64 405
+-#define __NR_clock_getres_time64 406
+-#define __NR_clock_gettime64 403
+-#define __NR_clock_nanosleep_time64 407
+-#define __NR_clock_settime64 404
++#define __NR_clock_adjtime 266
++#define __NR_clock_getres 114
++#define __NR_clock_gettime 113
++#define __NR_clock_nanosleep 115
++#define __NR_clock_settime 112
+ #define __NR_clone 220
+ #define __NR_clone3 435
+ #define __NR_close 57
+@@ -40,7 +40,7 @@
+ #define __NR_exit_group 94
+ #define __NR_faccessat 48
+ #define __NR_faccessat2 439
+-#define __NR_fadvise64_64 223
++#define __NR_fadvise64 223
+ #define __NR_fallocate 47
+ #define __NR_fanotify_init 262
+ #define __NR_fanotify_mark 263
+@@ -49,7 +49,7 @@
+ #define __NR_fchmodat 53
+ #define __NR_fchown 55
+ #define __NR_fchownat 54
+-#define __NR_fcntl64 25
++#define __NR_fcntl 25
+ #define __NR_fdatasync 83
+ #define __NR_fgetxattr 10
+ #define __NR_finit_module 273
+@@ -61,10 +61,11 @@
+ #define __NR_fsmount 432
+ #define __NR_fsopen 430
+ #define __NR_fspick 433
+-#define __NR_fstatfs64 44
++#define __NR_fstat 80
++#define __NR_fstatfs 44
+ #define __NR_fsync 82
+-#define __NR_ftruncate64 46
+-#define __NR_futex_time64 422
++#define __NR_ftruncate 46
++#define __NR_futex 98
+ #define __NR_futex_waitv 449
+ #define __NR_get_mempolicy 236
+ #define __NR_get_robust_list 100
+@@ -101,7 +102,6 @@
+ #define __NR_io_destroy 1
+ #define __NR_io_getevents 4
+ #define __NR_io_pgetevents 292
+-#define __NR_io_pgetevents_time64 416
+ #define __NR_io_setup 0
+ #define __NR_io_submit 2
+ #define __NR_io_uring_enter 426
+@@ -123,9 +123,9 @@
+ #define __NR_listen 201
+ #define __NR_listxattr 11
+ #define __NR_llistxattr 12
+-#define __NR_llseek 62
+ #define __NR_lookup_dcookie 18
+ #define __NR_lremovexattr 15
++#define __NR_lseek 62
+ #define __NR_lsetxattr 6
+ #define __NR_madvise 233
+ #define __NR_mbind 235
+@@ -138,7 +138,7 @@
+ #define __NR_mlock 228
+ #define __NR_mlock2 284
+ #define __NR_mlockall 230
+-#define __NR_mmap2 222
++#define __NR_mmap 222
+ #define __NR_mount 40
+ #define __NR_mount_setattr 442
+ #define __NR_move_mount 429
+@@ -147,8 +147,8 @@
+ #define __NR_mq_getsetattr 185
+ #define __NR_mq_notify 184
+ #define __NR_mq_open 180
+-#define __NR_mq_timedreceive_time64 419
+-#define __NR_mq_timedsend_time64 418
++#define __NR_mq_timedreceive 183
++#define __NR_mq_timedsend 182
+ #define __NR_mq_unlink 181
+ #define __NR_mremap 216
+ #define __NR_msgctl 187
+@@ -161,6 +161,7 @@
+ #define __NR_munmap 215
+ #define __NR_name_to_handle_at 264
+ #define __NR_nanosleep 101
++#define __NR_newfstatat 79
+ #define __NR_nfsservctl 42
+ #define __NR_open_by_handle_at 265
+ #define __NR_open_tree 428
+@@ -176,7 +177,7 @@
+ #define __NR_pkey_alloc 289
+ #define __NR_pkey_free 290
+ #define __NR_pkey_mprotect 288
+-#define __NR_ppoll_time64 414
++#define __NR_ppoll 73
+ #define __NR_prctl 167
+ #define __NR_pread64 67
+ #define __NR_preadv 69
+@@ -186,7 +187,7 @@
+ #define __NR_process_mrelease 448
+ #define __NR_process_vm_readv 270
+ #define __NR_process_vm_writev 271
+-#define __NR_pselect6_time64 413
++#define __NR_pselect6 72
+ #define __NR_ptrace 117
+ #define __NR_pwrite64 68
+ #define __NR_pwritev 70
+@@ -199,7 +200,7 @@
+ #define __NR_readv 65
+ #define __NR_reboot 142
+ #define __NR_recvfrom 207
+-#define __NR_recvmmsg_time64 417
++#define __NR_recvmmsg 243
+ #define __NR_recvmsg 212
+ #define __NR_remap_file_pages 234
+ #define __NR_removexattr 14
+@@ -214,7 +215,7 @@
+ #define __NR_rt_sigqueueinfo 138
+ #define __NR_rt_sigreturn 139
+ #define __NR_rt_sigsuspend 133
+-#define __NR_rt_sigtimedwait_time64 421
++#define __NR_rt_sigtimedwait 137
+ #define __NR_rt_tgsigqueueinfo 240
+ #define __NR_sched_get_priority_max 125
+ #define __NR_sched_get_priority_min 126
+@@ -222,7 +223,7 @@
+ #define __NR_sched_getattr 275
+ #define __NR_sched_getparam 121
+ #define __NR_sched_getscheduler 120
+-#define __NR_sched_rr_get_interval_time64 423
++#define __NR_sched_rr_get_interval 127
+ #define __NR_sched_setaffinity 122
+ #define __NR_sched_setattr 274
+ #define __NR_sched_setparam 118
+@@ -232,8 +233,8 @@
+ #define __NR_semctl 191
+ #define __NR_semget 190
+ #define __NR_semop 193
+-#define __NR_semtimedop_time64 420
+-#define __NR_sendfile64 71
++#define __NR_semtimedop 192
++#define __NR_sendfile 71
+ #define __NR_sendmmsg 269
+ #define __NR_sendmsg 211
+ #define __NR_sendto 206
+@@ -271,7 +272,7 @@
+ #define __NR_socket 198
+ #define __NR_socketpair 199
+ #define __NR_splice 76
+-#define __NR_statfs64 43
++#define __NR_statfs 43
+ #define __NR_statx 291
+ #define __NR_swapoff 225
+ #define __NR_swapon 224
+@@ -287,21 +288,21 @@
+ #define __NR_timer_create 107
+ #define __NR_timer_delete 111
+ #define __NR_timer_getoverrun 109
+-#define __NR_timer_gettime64 408
+-#define __NR_timer_settime64 409
++#define __NR_timer_gettime 108
++#define __NR_timer_settime 110
+ #define __NR_timerfd_create 85
+-#define __NR_timerfd_gettime64 410
+-#define __NR_timerfd_settime64 411
++#define __NR_timerfd_gettime 87
++#define __NR_timerfd_settime 86
+ #define __NR_times 153
+ #define __NR_tkill 130
+-#define __NR_truncate64 45
++#define __NR_truncate 45
+ #define __NR_umask 166
+ #define __NR_umount2 39
+ #define __NR_uname 160
+ #define __NR_unlinkat 35
+ #define __NR_unshare 97
+ #define __NR_userfaultfd 282
+-#define __NR_utimensat_time64 412
++#define __NR_utimensat 88
+ #define __NR_vhangup 58
+ #define __NR_vmsplice 75
+ #define __NR_wait4 260
+diff --git a/sysdeps/unix/sysv/linux/arc/c++-types.data b/sysdeps/unix/sysv/linux/arc/arc64/c++-types.data
+similarity index 73%
+rename from sysdeps/unix/sysv/linux/arc/c++-types.data
+rename to sysdeps/unix/sysv/linux/arc/arc64/c++-types.data
+index 0fb0143ae7..ac925ccb36 100644
+--- a/sysdeps/unix/sysv/linux/arc/c++-types.data
++++ b/sysdeps/unix/sysv/linux/arc/arc64/c++-types.data
+@@ -1,32 +1,32 @@
+-blkcnt64_t:x
+-blkcnt_t:x
++blkcnt64_t:l
++blkcnt_t:l
+ blksize_t:i
+ caddr_t:Pc
+ clockid_t:i
+ clock_t:l
+ daddr_t:i
+-dev_t:y
++dev_t:m
+ fd_mask:l
+-fsblkcnt64_t:y
+-fsblkcnt_t:y
+-fsfilcnt64_t:y
+-fsfilcnt_t:y
++fsblkcnt64_t:m
++fsblkcnt_t:m
++fsfilcnt64_t:m
++fsfilcnt_t:m
+ fsid_t:8__fsid_t
+ gid_t:j
+ id_t:j
+-ino64_t:y
+-ino_t:y
++ino64_t:m
++ino_t:m
+ int16_t:s
+ int32_t:i
+-int64_t:x
++int64_t:l
+ int8_t:a
+-intptr_t:i
++intptr_t:l
+ key_t:i
+-loff_t:x
++loff_t:l
+ mode_t:j
+ nlink_t:j
+-off64_t:x
+-off_t:x
++off64_t:l
++off_t:l
+ pid_t:i
+ pthread_attr_t:14pthread_attr_t
+ pthread_barrier_t:17pthread_barrier_t
+@@ -41,27 +41,27 @@ pthread_rwlock_t:16pthread_rwlock_t
+ pthread_rwlockattr_t:20pthread_rwlockattr_t
+ pthread_spinlock_t:i
+ pthread_t:m
+-quad_t:x
+-register_t:i
+-rlim64_t:y
+-rlim_t:y
++quad_t:l
++register_t:l
++rlim64_t:m
++rlim_t:m
+ sigset_t:10__sigset_t
+-size_t:j
++size_t:m
+ socklen_t:j
+-ssize_t:i
+-suseconds_t:x
+-time_t:x
++ssize_t:l
++suseconds_t:l
++time_t:l
+ u_char:h
+ uid_t:j
+ uint:j
+ u_int:j
+ u_int16_t:t
+ u_int32_t:j
+-u_int64_t:y
++u_int64_t:m
+ u_int8_t:h
+ ulong:m
+ u_long:m
+-u_quad_t:y
++u_quad_t:m
+ useconds_t:j
+ ushort:t
+ u_short:t
+diff --git a/sysdeps/unix/sysv/linux/arc/ld.abilist b/sysdeps/unix/sysv/linux/arc/arc64/ld.abilist
+similarity index 54%
+rename from sysdeps/unix/sysv/linux/arc/ld.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/ld.abilist
+index 55f0c2ab9c..3a4bcb95f2 100644
+--- a/sysdeps/unix/sysv/linux/arc/ld.abilist
++++ b/sysdeps/unix/sysv/linux/arc/arc64/ld.abilist
+@@ -1,9 +1,9 @@
+-GLIBC_2.32 __libc_stack_end D 0x4
+-GLIBC_2.32 __stack_chk_guard D 0x4
++GLIBC_2.32 __libc_stack_end D 0x8
++GLIBC_2.32 __stack_chk_guard D 0x8
+ GLIBC_2.32 __tls_get_addr F
+ GLIBC_2.32 _dl_mcount F
+-GLIBC_2.32 _r_debug D 0x14
++GLIBC_2.32 _r_debug D 0x28
+ GLIBC_2.34 __rtld_version_placeholder F
+ GLIBC_2.35 __rseq_flags D 0x4
+-GLIBC_2.35 __rseq_offset D 0x4
++GLIBC_2.35 __rseq_offset D 0x8
+ GLIBC_2.35 __rseq_size D 0x4
+diff --git a/sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libBrokenLocale.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libBrokenLocale.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libBrokenLocale.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libanl.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libanl.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libanl.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libanl.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libc.abilist
+similarity index 97%
+rename from sysdeps/unix/sysv/linux/arc/libc.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libc.abilist
+index dfe0c3f7b6..d07723e742 100644
+--- a/sysdeps/unix/sysv/linux/arc/libc.abilist
++++ b/sysdeps/unix/sysv/linux/arc/arc64/libc.abilist
+@@ -1,7 +1,7 @@
+ GLIBC_2.32 _Exit F
+-GLIBC_2.32 _IO_2_1_stderr_ D 0x9c
+-GLIBC_2.32 _IO_2_1_stdin_ D 0x9c
+-GLIBC_2.32 _IO_2_1_stdout_ D 0x9c
++GLIBC_2.32 _IO_2_1_stderr_ D 0xe0
++GLIBC_2.32 _IO_2_1_stdin_ D 0xe0
++GLIBC_2.32 _IO_2_1_stdout_ D 0xe0
+ GLIBC_2.32 _IO_adjust_column F
+ GLIBC_2.32 _IO_adjust_wcolumn F
+ GLIBC_2.32 _IO_default_doallocate F
+@@ -27,7 +27,7 @@ GLIBC_2.32 _IO_file_doallocate F
+ GLIBC_2.32 _IO_file_finish F
+ GLIBC_2.32 _IO_file_fopen F
+ GLIBC_2.32 _IO_file_init F
+-GLIBC_2.32 _IO_file_jumps D 0x54
++GLIBC_2.32 _IO_file_jumps D 0xa8
+ GLIBC_2.32 _IO_file_open F
+ GLIBC_2.32 _IO_file_overflow F
+ GLIBC_2.32 _IO_file_read F
+@@ -67,7 +67,7 @@ GLIBC_2.32 _IO_iter_file F
+ GLIBC_2.32 _IO_iter_next F
+ GLIBC_2.32 _IO_least_wmarker F
+ GLIBC_2.32 _IO_link_in F
+-GLIBC_2.32 _IO_list_all D 0x4
++GLIBC_2.32 _IO_list_all D 0x8
+ GLIBC_2.32 _IO_list_lock F
+ GLIBC_2.32 _IO_list_resetlock F
+ GLIBC_2.32 _IO_list_unlock F
+@@ -120,7 +120,7 @@ GLIBC_2.32 _IO_wdefault_xsgetn F
+ GLIBC_2.32 _IO_wdefault_xsputn F
+ GLIBC_2.32 _IO_wdo_write F
+ GLIBC_2.32 _IO_wdoallocbuf F
+-GLIBC_2.32 _IO_wfile_jumps D 0x54
++GLIBC_2.32 _IO_wfile_jumps D 0xa8
+ GLIBC_2.32 _IO_wfile_overflow F
+ GLIBC_2.32 _IO_wfile_seekoff F
+ GLIBC_2.32 _IO_wfile_sync F
+@@ -128,9 +128,9 @@ GLIBC_2.32 _IO_wfile_underflow F
+ GLIBC_2.32 _IO_wfile_xsputn F
+ GLIBC_2.32 _IO_wmarker_delta F
+ GLIBC_2.32 _IO_wsetb F
+-GLIBC_2.32 ___brk_addr D 0x4
++GLIBC_2.32 ___brk_addr D 0x8
+ GLIBC_2.32 __adjtimex F
+-GLIBC_2.32 __after_morecore_hook D 0x4
++GLIBC_2.32 __after_morecore_hook D 0x8
+ GLIBC_2.32 __argz_count F
+ GLIBC_2.32 __argz_next F
+ GLIBC_2.32 __argz_stringify F
+@@ -155,7 +155,7 @@ GLIBC_2.32 __ctype_b_loc F
+ GLIBC_2.32 __ctype_get_mb_cur_max F
+ GLIBC_2.32 __ctype_tolower_loc F
+ GLIBC_2.32 __ctype_toupper_loc F
+-GLIBC_2.32 __curbrk D 0x4
++GLIBC_2.32 __curbrk D 0x8
+ GLIBC_2.32 __cxa_at_quick_exit F
+ GLIBC_2.32 __cxa_atexit F
+ GLIBC_2.32 __cxa_finalize F
+@@ -173,7 +173,7 @@ GLIBC_2.32 __dprintf_chk F
+ GLIBC_2.32 __dup2 F
+ GLIBC_2.32 __duplocale F
+ GLIBC_2.32 __endmntent F
+-GLIBC_2.32 __environ D 0x4
++GLIBC_2.32 __environ D 0x8
+ GLIBC_2.32 __errno_location F
+ GLIBC_2.32 __explicit_bzero_chk F
+ GLIBC_2.32 __fbufsize F
+@@ -197,7 +197,7 @@ GLIBC_2.32 __fread_chk F
+ GLIBC_2.32 __fread_unlocked_chk F
+ GLIBC_2.32 __freadable F
+ GLIBC_2.32 __freading F
+-GLIBC_2.32 __free_hook D 0x4
++GLIBC_2.32 __free_hook D 0x8
+ GLIBC_2.32 __freelocale F
+ GLIBC_2.32 __fsetlocking F
+ GLIBC_2.32 __fwprintf_chk F
+@@ -289,20 +289,20 @@ GLIBC_2.32 __longjmp_chk F
+ GLIBC_2.32 __lseek F
+ GLIBC_2.32 __lxstat F
+ GLIBC_2.32 __lxstat64 F
+-GLIBC_2.32 __malloc_hook D 0x4
++GLIBC_2.32 __malloc_hook D 0x8
+ GLIBC_2.32 __mbrlen F
+ GLIBC_2.32 __mbrtowc F
+ GLIBC_2.32 __mbsnrtowcs_chk F
+ GLIBC_2.32 __mbsrtowcs_chk F
+ GLIBC_2.32 __mbstowcs_chk F
+-GLIBC_2.32 __memalign_hook D 0x4
++GLIBC_2.32 __memalign_hook D 0x8
+ GLIBC_2.32 __memcpy_chk F
+ GLIBC_2.32 __memmove_chk F
+ GLIBC_2.32 __mempcpy F
+ GLIBC_2.32 __mempcpy_chk F
+ GLIBC_2.32 __memset_chk F
+ GLIBC_2.32 __monstartup F
+-GLIBC_2.32 __morecore D 0x4
++GLIBC_2.32 __morecore D 0x8
+ GLIBC_2.32 __mq_open_2 F
+ GLIBC_2.32 __nanosleep F
+ GLIBC_2.32 __newlocale F
+@@ -329,8 +329,8 @@ GLIBC_2.32 __pread_chk F
+ GLIBC_2.32 __printf_chk F
+ GLIBC_2.32 __printf_fp F
+ GLIBC_2.32 __profile_frequency F
+-GLIBC_2.32 __progname D 0x4
+-GLIBC_2.32 __progname_full D 0x4
++GLIBC_2.32 __progname D 0x8
++GLIBC_2.32 __progname_full D 0x8
+ GLIBC_2.32 __pthread_cleanup_routine F
+ GLIBC_2.32 __pthread_getspecific F
+ GLIBC_2.32 __pthread_key_create F
+@@ -359,12 +359,12 @@ GLIBC_2.32 __pthread_unwind_next F
+ GLIBC_2.32 __ptsname_r_chk F
+ GLIBC_2.32 __pwrite64 F
+ GLIBC_2.32 __rawmemchr F
+-GLIBC_2.32 __rcmd_errstr D 0x4
++GLIBC_2.32 __rcmd_errstr D 0x8
+ GLIBC_2.32 __read F
+ GLIBC_2.32 __read_chk F
+ GLIBC_2.32 __readlink_chk F
+ GLIBC_2.32 __readlinkat_chk F
+-GLIBC_2.32 __realloc_hook D 0x4
++GLIBC_2.32 __realloc_hook D 0x8
+ GLIBC_2.32 __realpath_chk F
+ GLIBC_2.32 __recv_chk F
+ GLIBC_2.32 __recvfrom_chk F
+@@ -452,7 +452,7 @@ GLIBC_2.32 __swprintf_chk F
+ GLIBC_2.32 __sysconf F
+ GLIBC_2.32 __syslog_chk F
+ GLIBC_2.32 __sysv_signal F
+-GLIBC_2.32 __timezone D 0x4
++GLIBC_2.32 __timezone D 0x8
+ GLIBC_2.32 __toascii_l F
+ GLIBC_2.32 __tolower_l F
+ GLIBC_2.32 __toupper_l F
+@@ -461,7 +461,7 @@ GLIBC_2.32 __towctrans_l F
+ GLIBC_2.32 __towlower_l F
+ GLIBC_2.32 __towupper_l F
+ GLIBC_2.32 __ttyname_r_chk F
+-GLIBC_2.32 __tzname D 0x8
++GLIBC_2.32 __tzname D 0x10
+ GLIBC_2.32 __uflow F
+ GLIBC_2.32 __underflow F
+ GLIBC_2.32 __uselocale F
+@@ -531,7 +531,7 @@ GLIBC_2.32 __xstat F
+ GLIBC_2.32 __xstat64 F
+ GLIBC_2.32 _dl_mcount_wrapper F
+ GLIBC_2.32 _dl_mcount_wrapper_check F
+-GLIBC_2.32 _environ D 0x4
++GLIBC_2.32 _environ D 0x8
+ GLIBC_2.32 _exit F
+ GLIBC_2.32 _flush_cache F
+ GLIBC_2.32 _flushlbf F
+@@ -540,7 +540,7 @@ GLIBC_2.32 _longjmp F
+ GLIBC_2.32 _mcleanup F
+ GLIBC_2.32 _mcount F
+ GLIBC_2.32 _nl_default_dirname D 0x12
+-GLIBC_2.32 _nl_domain_bindings D 0x4
++GLIBC_2.32 _nl_domain_bindings D 0x8
+ GLIBC_2.32 _nl_msg_cat_cntr D 0x4
+ GLIBC_2.32 _obstack_allocated_p F
+ GLIBC_2.32 _obstack_begin F
+@@ -552,8 +552,8 @@ GLIBC_2.32 _pthread_cleanup_pop F
+ GLIBC_2.32 _pthread_cleanup_pop_restore F
+ GLIBC_2.32 _pthread_cleanup_push F
+ GLIBC_2.32 _pthread_cleanup_push_defer F
+-GLIBC_2.32 _res D 0x200
+-GLIBC_2.32 _res_hconf D 0x30
++GLIBC_2.32 _res D 0x238
++GLIBC_2.32 _res_hconf D 0x48
+ GLIBC_2.32 _setjmp F
+ GLIBC_2.32 _tolower F
+ GLIBC_2.32 _toupper F
+@@ -592,9 +592,9 @@ GLIBC_2.32 argp_error F
+ GLIBC_2.32 argp_failure F
+ GLIBC_2.32 argp_help F
+ GLIBC_2.32 argp_parse F
+-GLIBC_2.32 argp_program_bug_address D 0x4
+-GLIBC_2.32 argp_program_version D 0x4
+-GLIBC_2.32 argp_program_version_hook D 0x4
++GLIBC_2.32 argp_program_bug_address D 0x8
++GLIBC_2.32 argp_program_version D 0x8
++GLIBC_2.32 argp_program_version_hook D 0x8
+ GLIBC_2.32 argp_state_help F
+ GLIBC_2.32 argp_usage F
+ GLIBC_2.32 argz_add F
+@@ -734,7 +734,7 @@ GLIBC_2.32 endttyent F
+ GLIBC_2.32 endusershell F
+ GLIBC_2.32 endutent F
+ GLIBC_2.32 endutxent F
+-GLIBC_2.32 environ D 0x4
++GLIBC_2.32 environ D 0x8
+ GLIBC_2.32 envz_add F
+ GLIBC_2.32 envz_entry F
+ GLIBC_2.32 envz_get F
+@@ -753,7 +753,7 @@ GLIBC_2.32 error F
+ GLIBC_2.32 error_at_line F
+ GLIBC_2.32 error_message_count D 0x4
+ GLIBC_2.32 error_one_per_line D 0x4
+-GLIBC_2.32 error_print_progname D 0x4
++GLIBC_2.32 error_print_progname D 0x8
+ GLIBC_2.32 errx F
+ GLIBC_2.32 ether_aton F
+ GLIBC_2.32 ether_aton_r F
+@@ -1078,7 +1078,7 @@ GLIBC_2.32 grantpt F
+ GLIBC_2.32 group_member F
+ GLIBC_2.32 gsignal F
+ GLIBC_2.32 gtty F
+-GLIBC_2.32 h_errlist D 0x14
++GLIBC_2.32 h_errlist D 0x28
+ GLIBC_2.32 h_nerr D 0x4
+ GLIBC_2.32 hasmntopt F
+ GLIBC_2.32 hcreate F
+@@ -1260,7 +1260,7 @@ GLIBC_2.32 malloc_stats F
+ GLIBC_2.32 malloc_trim F
+ GLIBC_2.32 malloc_usable_size F
+ GLIBC_2.32 mallopt F
+-GLIBC_2.32 mallwatch D 0x4
++GLIBC_2.32 mallwatch D 0x8
+ GLIBC_2.32 mblen F
+ GLIBC_2.32 mbrlen F
+ GLIBC_2.32 mbrtoc16 F
+@@ -1367,7 +1367,7 @@ GLIBC_2.32 ntohs F
+ GLIBC_2.32 ntp_adjtime F
+ GLIBC_2.32 ntp_gettime F
+ GLIBC_2.32 ntp_gettimex F
+-GLIBC_2.32 obstack_alloc_failed_handler D 0x4
++GLIBC_2.32 obstack_alloc_failed_handler D 0x8
+ GLIBC_2.32 obstack_exit_failure D 0x4
+ GLIBC_2.32 obstack_free F
+ GLIBC_2.32 obstack_printf F
+@@ -1383,7 +1383,7 @@ GLIBC_2.32 openat64 F
+ GLIBC_2.32 opendir F
+ GLIBC_2.32 openlog F
+ GLIBC_2.32 openpty F
+-GLIBC_2.32 optarg D 0x4
++GLIBC_2.32 optarg D 0x8
+ GLIBC_2.32 opterr D 0x4
+ GLIBC_2.32 optind D 0x4
+ GLIBC_2.32 optopt D 0x4
+@@ -1449,8 +1449,8 @@ GLIBC_2.32 prlimit64 F
+ GLIBC_2.32 process_vm_readv F
+ GLIBC_2.32 process_vm_writev F
+ GLIBC_2.32 profil F
+-GLIBC_2.32 program_invocation_name D 0x4
+-GLIBC_2.32 program_invocation_short_name D 0x4
++GLIBC_2.32 program_invocation_name D 0x8
++GLIBC_2.32 program_invocation_short_name D 0x8
+ GLIBC_2.32 pselect F
+ GLIBC_2.32 psiginfo F
+ GLIBC_2.32 psignal F
+@@ -1637,7 +1637,7 @@ GLIBC_2.32 re_search F
+ GLIBC_2.32 re_search_2 F
+ GLIBC_2.32 re_set_registers F
+ GLIBC_2.32 re_set_syntax F
+-GLIBC_2.32 re_syntax_options D 0x4
++GLIBC_2.32 re_syntax_options D 0x8
+ GLIBC_2.32 read F
+ GLIBC_2.32 readahead F
+ GLIBC_2.32 readdir F
+@@ -1850,9 +1850,9 @@ GLIBC_2.32 statfs64 F
+ GLIBC_2.32 statvfs F
+ GLIBC_2.32 statvfs64 F
+ GLIBC_2.32 statx F
+-GLIBC_2.32 stderr D 0x4
+-GLIBC_2.32 stdin D 0x4
+-GLIBC_2.32 stdout D 0x4
++GLIBC_2.32 stderr D 0x8
++GLIBC_2.32 stdin D 0x8
++GLIBC_2.32 stdout D 0x8
+ GLIBC_2.32 stpcpy F
+ GLIBC_2.32 stpncpy F
+ GLIBC_2.32 strcasecmp F
+@@ -1984,7 +1984,7 @@ GLIBC_2.32 timerfd_gettime F
+ GLIBC_2.32 timerfd_settime F
+ GLIBC_2.32 times F
+ GLIBC_2.32 timespec_get F
+-GLIBC_2.32 timezone D 0x4
++GLIBC_2.32 timezone D 0x8
+ GLIBC_2.32 tmpfile F
+ GLIBC_2.32 tmpfile64 F
+ GLIBC_2.32 tmpnam F
+@@ -2013,7 +2013,7 @@ GLIBC_2.32 ttyname_r F
+ GLIBC_2.32 ttyslot F
+ GLIBC_2.32 twalk F
+ GLIBC_2.32 twalk_r F
+-GLIBC_2.32 tzname D 0x8
++GLIBC_2.32 tzname D 0x10
+ GLIBC_2.32 tzset F
+ GLIBC_2.32 ualarm F
+ GLIBC_2.32 ulckpwdf F
+diff --git a/sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libc_malloc_debug.abilist
+similarity index 80%
+rename from sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libc_malloc_debug.abilist
+index cf9f611403..c50393d8cc 100644
+--- a/sysdeps/unix/sysv/linux/arc/libc_malloc_debug.abilist
++++ b/sysdeps/unix/sysv/linux/arc/arc64/libc_malloc_debug.abilist
+@@ -1,7 +1,7 @@
+-GLIBC_2.32 __free_hook D 0x4
+-GLIBC_2.32 __malloc_hook D 0x4
+-GLIBC_2.32 __memalign_hook D 0x4
+-GLIBC_2.32 __realloc_hook D 0x4
++GLIBC_2.32 __free_hook D 0x8
++GLIBC_2.32 __malloc_hook D 0x8
++GLIBC_2.32 __memalign_hook D 0x8
++GLIBC_2.32 __realloc_hook D 0x8
+ GLIBC_2.32 aligned_alloc F
+ GLIBC_2.32 calloc F
+ GLIBC_2.32 free F
+diff --git a/sysdeps/unix/sysv/linux/arc/libcrypt.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libcrypt.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libcrypt.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libcrypt.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libdl.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libdl.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libdl.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libdl.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libm.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libm.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libm.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libpthread.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libpthread.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libpthread.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libresolv.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libresolv.abilist
+similarity index 95%
+rename from sysdeps/unix/sysv/linux/arc/libresolv.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libresolv.abilist
+index 47c5072f61..76ab1dedfb 100644
+--- a/sysdeps/unix/sysv/linux/arc/libresolv.abilist
++++ b/sysdeps/unix/sysv/linux/arc/arc64/libresolv.abilist
+@@ -10,7 +10,7 @@ GLIBC_2.32 __loc_ntoa F
+ GLIBC_2.32 __p_cdname F
+ GLIBC_2.32 __p_cdnname F
+ GLIBC_2.32 __p_class F
+-GLIBC_2.32 __p_class_syms D 0x54
++GLIBC_2.32 __p_class_syms D 0xa8
+ GLIBC_2.32 __p_fqname F
+ GLIBC_2.32 __p_fqnname F
+ GLIBC_2.32 __p_option F
+@@ -18,7 +18,7 @@ GLIBC_2.32 __p_query F
+ GLIBC_2.32 __p_rcode F
+ GLIBC_2.32 __p_time F
+ GLIBC_2.32 __p_type F
+-GLIBC_2.32 __p_type_syms D 0x228
++GLIBC_2.32 __p_type_syms D 0x450
+ GLIBC_2.32 __putlong F
+ GLIBC_2.32 __putshort F
+ GLIBC_2.32 __res_close F
+diff --git a/sysdeps/unix/sysv/linux/arc/librt.abilist b/sysdeps/unix/sysv/linux/arc/arc64/librt.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/librt.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/librt.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libthread_db.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libthread_db.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libthread_db.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libthread_db.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/libutil.abilist b/sysdeps/unix/sysv/linux/arc/arc64/libutil.abilist
+similarity index 100%
+rename from sysdeps/unix/sysv/linux/arc/libutil.abilist
+rename to sysdeps/unix/sysv/linux/arc/arc64/libutil.abilist
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/fcntl.h b/sysdeps/unix/sysv/linux/arc/bits/fcntl.h
+new file mode 100644
+index 0000000000..20292fd32f
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/arc/bits/fcntl.h
+@@ -0,0 +1,62 @@
++/* O_*, F_*, FD_* bit values for Linux / ARC
++ Copyright (C) 2011-2021 Free Software Foundation, Inc.
++
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library; if not, see
++ <https://www.gnu.org/licenses/>. */
++
++#ifndef _FCNTL_H
++# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
++#endif
++
++#include <bits/wordsize.h>
++
++/* In 64-bit ISA files are always with 64bit off_t and F_*LK64 are the same as
++ non-64-bit versions. It will need to be revised for 128-bit. */
++#if __WORDSIZE == 64
++# define __O_LARGEFILE 0
++
++# define F_GETLK64 5 /* Get record locking info. */
++# define F_SETLK64 6 /* Set record locking info (non-blocking). */
++# define F_SETLKW64 7 /* Set record locking info (blocking). */
++#endif
++
++struct flock
++ {
++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
++#if __WORDSIZE == 64 || !defined __USE_FILE_OFFSET64
++ __off_t l_start; /* Offset where the lock begins. */
++ __off_t l_len; /* Size of the locked area; zero means until EOF. */
++#else
++ __off64_t l_start; /* Offset where the lock begins. */
++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */
++#endif
++ __pid_t l_pid; /* Process holding the lock. */
++ };
++
++#ifdef __USE_LARGEFILE64
++struct flock64
++ {
++ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
++ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
++ __off64_t l_start; /* Offset where the lock begins. */
++ __off64_t l_len; /* Size of the locked area; zero means until EOF. */
++ __pid_t l_pid; /* Process holding the lock. */
++ };
++#endif
++
++/* Include generic Linux declarations. */
++#include <bits/fcntl-linux.h>
+diff --git a/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+index 795638a30b..6be69437f8 100644
+--- a/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
++++ b/sysdeps/unix/sysv/linux/arc/bits/types/__sigset_t.h
+@@ -3,7 +3,7 @@
+ #define ____sigset_t_defined
+
+ /* Linux asm-generic syscall ABI expects sigset_t to hold 64 signals. */
+-#define _SIGSET_NWORDS (64 / (8 * sizeof (unsigned long int)))
++#define _SIGSET_NWORDS 2
+ typedef struct
+ {
+ unsigned long int __val[_SIGSET_NWORDS];
+diff --git a/sysdeps/unix/sysv/linux/arc/clone.S b/sysdeps/unix/sysv/linux/arc/clone.S
+index d8c7b93d1c..364fa1edde 100644
+--- a/sysdeps/unix/sysv/linux/arc/clone.S
++++ b/sysdeps/unix/sysv/linux/arc/clone.S
+@@ -31,41 +31,41 @@
+ clone syscall in kernel (ABI: CONFIG_CLONE_BACKWARDS)
+
+ int sys_clone(unsigned long int clone_flags,
+- unsigned long int newsp,
++ unsigned long int newsp,
+ int __user *parent_tidptr,
+ void *tls,
+ int __user *child_tidptr). */
+
+ ENTRY (__clone)
+- cmp r0, 0 /* @fn can't be NULL. */
+- and r1,r1,-4 /* @child_stack be 4 bytes aligned per ABI. */
+- cmp.ne r1, 0 /* @child_stack can't be NULL. */
++ CMPR r0, 0 /* @fn can't be NULL. */
++ ANDR r1, r1, -REGSZ /* @child_stack 4/8 aligned per ABI. */
++ CMPR.ne r1, 0 /* @child_stack can't be NULL. */
+ bz L (__sys_err)
+
+ /* save some of the orig args
+ r0 containing @fn will be clobbered AFTER syscall (with ret val)
+ rest are clobbered BEFORE syscall due to different arg ordering. */
+- mov r10, r0 /* @fn. */
+- mov r11, r3 /* @args. */
+- mov r12, r2 /* @clone_flags. */
+- mov r9, r5 /* @tls. */
++ MOVR r10, r0 /* @fn. */
++ MOVR r11, r3 /* @args. */
++ MOVR r12, r2 /* @clone_flags. */
++ MOVR r9, r5 /* @tls. */
+
+ /* adjust libc args for syscall. */
+
+- mov r0, r2 /* libc @flags is 1st syscall arg. */
+- mov r2, r4 /* libc @ptid. */
+- mov r3, r5 /* libc @tls. */
+- mov r4, r6 /* libc @ctid. */
++ MOVR r0, r2 /* libc @flags is 1st syscall arg. */
++ MOVR r2, r4 /* libc @ptid. */
++ MOVR r3, r5 /* libc @tls. */
++ MOVR r4, r6 /* libc @ctid. */
+ mov r8, __NR_clone
+ ARC_TRAP_INSN
+
+- cmp r0, 0 /* return code : 0 new process, !0 parent. */
++ CMPR r0, 0 /* return code : 0 new process, !0 parent. */
+ beq thread_start_clone
+ blt L (__sys_err2) /* < 0 (signed) error. */
+ j [blink] /* Parent returns. */
+
+ L (__sys_err):
+- mov r0, -EINVAL
++ MOVR r0, -EINVAL
+ L (__sys_err2):
+ /* (1) No need to make -ve kernel error code as positive errno
+ __syscall_error expects the -ve error code returned by kernel
+@@ -87,7 +87,7 @@ thread_start_clone:
+
+ /* Child jumps off to @fn with @arg as argument. */
+ jl.d [r10]
+- mov r0, r11
++ MOVR r0, r11
+
+ /* exit() with result from @fn (already in r0). */
+ mov r8, __NR_exit
+diff --git a/sysdeps/unix/sysv/linux/arc/clone3.S b/sysdeps/unix/sysv/linux/arc/clone3.S
+index 87a8272a39..7fc61524b5 100644
+--- a/sysdeps/unix/sysv/linux/arc/clone3.S
++++ b/sysdeps/unix/sysv/linux/arc/clone3.S
+@@ -37,9 +37,9 @@
+ ENTRY(__clone3)
+
+ /* Save args for the child. */
+- mov r10, r0 /* cl_args */
+- mov r11, r2 /* func */
+- mov r12, r3 /* args */
++ MOVR r10, r0 /* cl_args */
++ MOVR r11, r2 /* func */
++ MOVR r12, r3 /* args */
+
+ /* Sanity check args. */
+ breq r10, 0, L (__sys_err) /* No NULL cl_args pointer. */
+@@ -49,17 +49,17 @@ ENTRY(__clone3)
+ r8: system call number
+ r0: cl_args
+ r1: size */
+- mov r0, r10
++ MOVR r0, r10
+ mov r8, __NR_clone3
+ ARC_TRAP_INSN
+
+- cmp r0, 0
++ CMPR r0, 0
+ beq thread_start_clone3 /* Child returns. */
+ blt L (__sys_err2)
+ j [blink] /* Parent returns. */
+
+ L (__sys_err):
+- mov r0, -EINVAL
++ MOVR r0, -EINVAL
+ L (__sys_err2):
+ b __syscall_error
+ PSEUDO_END (__clone3)
+@@ -74,7 +74,7 @@ thread_start_clone3:
+
+ /* Child jumps off to @fn with @arg as argument. */
+ jl.d [r11]
+- mov r0, r12
++ MOVR r0, r12
+
+ /* exit() with result from @fn (already in r0). */
+ mov r8, __NR_exit
+diff --git a/sysdeps/unix/sysv/linux/arc/getcontext.S b/sysdeps/unix/sysv/linux/arc/getcontext.S
+index eb75c8ce02..851981b64c 100644
+--- a/sysdeps/unix/sysv/linux/arc/getcontext.S
++++ b/sysdeps/unix/sysv/linux/arc/getcontext.S
+@@ -26,39 +26,58 @@
+ ENTRY (__getcontext)
+
+ /* Callee saved registers. */
+- add r2, r0, UCONTEXT_MCONTEXT
+- STR (r13, r2, 37)
+- STR (r14, r2, 36)
+- STR (r15, r2, 35)
+- STR (r16, r2, 34)
+- STR (r17, r2, 33)
+- STR (r18, r2, 32)
+- STR (r19, r2, 31)
+- STR (r20, r2, 30)
+- STR (r21, r2, 29)
+- STR (r22, r2, 28)
+- STR (r23, r2, 27)
+- STR (r24, r2, 26)
++ ADDR r2, r0, UCONTEXT_MCONTEXT
++ STR.as r13, r2, 37
++ STR.as r14, r2, 36
++ STR.as r15, r2, 35
++ STR.as r16, r2, 34
++ STR.as r17, r2, 33
++ STR.as r18, r2, 32
++ STR.as r19, r2, 31
++ STR.as r20, r2, 30
++ STR.as r21, r2, 29
++ STR.as r22, r2, 28
++ STR.as r23, r2, 27
++ STR.as r24, r2, 26
+
+- STR (blink, r2, 7)
+- STR (fp, r2, 8)
+- STR (gp, r2, 9)
+- STR (sp, r2, 23)
++ STR.as blink, r2, 7
++ STR.as fp, r2, 8
++ STR.as gp, r2, 9
++ STR.as sp, r2, 23
++
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FSTR.as f16, r2, 51
++ FSTR.as f17, r2, 52
++ FSTR.as f18, r2, 53
++ FSTR.as f19, r2, 54
++ FSTR.as f20, r2, 55
++ FSTR.as f21, r2, 56
++ FSTR.as f22, r2, 57
++ FSTR.as f23, r2, 58
++ FSTR.as f24, r2, 59
++ FSTR.as f25, r2, 60
++ FSTR.as f26, r2, 61
++ FSTR.as f27, r2, 62
++ FSTR.as f28, r2, 63
++ FSTR.as f29, r2, 64
++ FSTR.as f30, r2, 65
++ FSTR.as f31, r2, 66
++#endif
+
+ /* Save 0 in r0 placeholder to return 0 when this @ucp activated. */
+- mov r9, 0
+- STR (r9, r2, 22)
++ mov r9, 0
++ STR.as r9, r2, 22
+
+ /* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8). */
+- mov r3, _NSIG8
+- add r2, r0, UCONTEXT_SIGMASK
+- mov r1, 0
+- mov r0, SIG_BLOCK
+- mov r8, __NR_rt_sigprocmask
++ mov r3, _NSIG8
++ ADDR r2, r0, UCONTEXT_SIGMASK
++ mov r1, 0
++ mov r0, SIG_BLOCK
++ mov r8, __NR_rt_sigprocmask
+ ARC_TRAP_INSN
+- brhi r0, -1024, L (call_syscall_err)
++ BRRhi r0, -1024, L (call_syscall_err)
+ j.d [blink]
+- mov r0, 0 /* Success, error handled in .Lcall_syscall_err. */
++ mov r0, 0 /* Success, error handled in .Lcall_syscall_err. */
+
+ PSEUDO_END (__getcontext)
+ weak_alias (__getcontext, getcontext)
+diff --git a/sysdeps/unix/sysv/linux/arc/setcontext.S b/sysdeps/unix/sysv/linux/arc/setcontext.S
+index 12708379d2..e0b8b1a183 100644
+--- a/sysdeps/unix/sysv/linux/arc/setcontext.S
++++ b/sysdeps/unix/sysv/linux/arc/setcontext.S
+@@ -24,46 +24,74 @@
+
+ ENTRY (__setcontext)
+
+- mov r9, r0 /* Stash @ucp across syscall. */
++ MOVR r9, r0 /* Stash @ucp across syscall. */
+
+ /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8). */
+ mov r3, _NSIG8
+ mov r2, 0
+- add r1, r0, UCONTEXT_SIGMASK
++ ADDR r1, r0, UCONTEXT_SIGMASK
+ mov r0, SIG_SETMASK
+ mov r8, __NR_rt_sigprocmask
+ ARC_TRAP_INSN
+- brhi r0, -1024, L (call_syscall_err)
++ BRRhi r0, -1024, L (call_syscall_err)
+
+ /* Restore scratch/arg regs for makecontext case. */
+ add r9, r9, UCONTEXT_MCONTEXT
+- LDR (r0, r9, 22)
+- LDR (r1, r9, 21)
+- LDR (r2, r9, 20)
+- LDR (r3, r9, 19)
+- LDR (r4, r9, 18)
+- LDR (r5, r9, 17)
+- LDR (r6, r9, 16)
+- LDR (r7, r9, 15)
++ LDR.as r0, r9, 22
++ LDR.as r1, r9, 21
++ LDR.as r2, r9, 20
++ LDR.as r3, r9, 19
++ LDR.as r4, r9, 18
++ LDR.as r5, r9, 17
++ LDR.as r6, r9, 16
++ LDR.as r7, r9, 15
+
+ /* Restore callee saved registers. */
+- LDR (r13, r9, 37)
+- LDR (r14, r9, 36)
+- LDR (r15, r9, 35)
+- LDR (r16, r9, 34)
+- LDR (r17, r9, 33)
+- LDR (r18, r9, 32)
+- LDR (r19, r9, 31)
+- LDR (r20, r9, 30)
+- LDR (r21, r9, 29)
+- LDR (r22, r9, 28)
+- LDR (r23, r9, 27)
+- LDR (r24, r9, 26)
+-
+- LDR (blink, r9, 7)
+- LDR (fp, r9, 8)
+- LDR (gp, r9, 9)
+- LDR (sp, r9, 23)
++ LDR.as r13, r9, 37
++ LDR.as r14, r9, 36
++ LDR.as r15, r9, 35
++ LDR.as r16, r9, 34
++ LDR.as r17, r9, 33
++ LDR.as r18, r9, 32
++ LDR.as r19, r9, 31
++ LDR.as r20, r9, 30
++ LDR.as r21, r9, 29
++ LDR.as r22, r9, 28
++ LDR.as r23, r9, 27
++ LDR.as r24, r9, 26
++
++ LDR.as blink, r9, 7
++ LDR.as fp, r9, 8
++ LDR.as gp, r9, 9
++ LDR.as sp, r9, 23
++
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FLDR.as f0, r9, 43
++ FLDR.as f1, r9, 44
++ FLDR.as f2, r9, 45
++ FLDR.as f3, r9, 46
++ FLDR.as f4, r9, 47
++ FLDR.as f5, r9, 48
++ FLDR.as f6, r9, 49
++ FLDR.as f7, r9, 50
++
++ FLDR.as f16, r9, 51
++ FLDR.as f17, r9, 52
++ FLDR.as f18, r9, 53
++ FLDR.as f19, r9, 54
++ FLDR.as f20, r9, 55
++ FLDR.as f21, r9, 56
++ FLDR.as f22, r9, 57
++ FLDR.as f23, r9, 58
++ FLDR.as f24, r9, 59
++ FLDR.as f25, r9, 60
++ FLDR.as f26, r9, 61
++ FLDR.as f27, r9, 62
++ FLDR.as f28, r9, 63
++ FLDR.as f29, r9, 64
++ FLDR.as f30, r9, 66
++ FLDR.as f31, r9, 68
++#endif
+
+ j [blink]
+
+@@ -83,8 +111,8 @@ ENTRY (__startcontext)
+ jl [r14]
+
+ /* If uc_link (r15) call setcontext with that. */
+- mov r0, r15
+- breq r0, 0, 1f
++ MOVR r0, r15
++ BRReq r0, 0, 1f
+
+ bl __setcontext
+ 1:
+diff --git a/sysdeps/unix/sysv/linux/arc/shlib-versions b/sysdeps/unix/sysv/linux/arc/shlib-versions
+index 343c0a0450..92a61e53fc 100644
+--- a/sysdeps/unix/sysv/linux/arc/shlib-versions
++++ b/sysdeps/unix/sysv/linux/arc/shlib-versions
+@@ -1,7 +1,15 @@
+ DEFAULT GLIBC_2.32
+
++%ifdef HAVE_ARC32
++ld=ld-linux-arc32.so.2
++%else
++%ifdef HAVE_ARC64
++ld=ld-linux-arc64.so.2
++%else
+ %ifdef HAVE_ARC_BE
+ ld=ld-linux-arceb.so.2
+ %else
+ ld=ld-linux-arc.so.2
+ %endif
++%endif
++%endif
+diff --git a/sysdeps/unix/sysv/linux/arc/swapcontext.S b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+index 76111af596..ff1741a08a 100644
+--- a/sysdeps/unix/sysv/linux/arc/swapcontext.S
++++ b/sysdeps/unix/sysv/linux/arc/swapcontext.S
+@@ -24,69 +24,88 @@ ENTRY (__swapcontext)
+
+ /* Save context into @oucp pointed to by r0. */
+
+- add r2, r0, UCONTEXT_MCONTEXT
+- STR (r13, r2, 37)
+- STR (r14, r2, 36)
+- STR (r15, r2, 35)
+- STR (r16, r2, 34)
+- STR (r17, r2, 33)
+- STR (r18, r2, 32)
+- STR (r19, r2, 31)
+- STR (r20, r2, 30)
+- STR (r21, r2, 29)
+- STR (r22, r2, 28)
+- STR (r23, r2, 27)
+- STR (r24, r2, 26)
+-
+- STR (blink, r2, 7)
+- STR (fp, r2, 8)
+- STR (gp, r2, 9)
+- STR (sp, r2, 23)
++ ADDR r2, r0, UCONTEXT_MCONTEXT
++ STR.as r13, r2, 37
++ STR.as r14, r2, 36
++ STR.as r15, r2, 35
++ STR.as r16, r2, 34
++ STR.as r17, r2, 33
++ STR.as r18, r2, 32
++ STR.as r19, r2, 31
++ STR.as r20, r2, 30
++ STR.as r21, r2, 29
++ STR.as r22, r2, 28
++ STR.as r23, r2, 27
++ STR.as r24, r2, 26
++
++ STR.as blink, r2, 7
++ STR.as fp, r2, 8
++ STR.as gp, r2, 9
++ STR.as sp, r2, 23
++
++#if defined (__ARC_FLOAT_ABI_HARD__)
++ FSTR.as f16, r2, 51
++ FSTR.as f17, r2, 52
++ FSTR.as f18, r2, 53
++ FSTR.as f19, r2, 54
++ FSTR.as f20, r2, 55
++ FSTR.as f21, r2, 56
++ FSTR.as f22, r2, 57
++ FSTR.as f23, r2, 58
++ FSTR.as f24, r2, 59
++ FSTR.as f25, r2, 60
++ FSTR.as f26, r2, 61
++ FSTR.as f27, r2, 62
++ FSTR.as f28, r2, 63
++ FSTR.as f29, r2, 64
++ FSTR.as f30, r2, 65
++ FSTR.as f31, r2, 66
++#endif
+
+ /* Save 0 in r0 placeholder to return 0 when @oucp activated. */
+- mov r9, 0
+- STR (r9, r2, 22)
++ mov r9, 0
++ STR.as r9, r2, 22
+
+ /* Load context from @ucp. */
+
+- mov r9, r1 /* Safekeep @ucp across syscall. */
++ MOVR r9, r1 /* Safekeep @ucp across syscall. */
+
+ /* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
+- mov r3, _NSIG8
+- add r2, r0, UCONTEXT_SIGMASK
+- add r1, r1, UCONTEXT_SIGMASK
+- mov r0, SIG_SETMASK
+- mov r8, __NR_rt_sigprocmask
++ mov r3, _NSIG8
++ ADDR r2, r0, UCONTEXT_SIGMASK
++ ADDR r1, r1, UCONTEXT_SIGMASK
++ mov r0, SIG_SETMASK
++ mov r8, __NR_rt_sigprocmask
+ ARC_TRAP_INSN
+- brhi r0, -1024, L (call_syscall_err)
+-
+- add r9, r9, UCONTEXT_MCONTEXT
+- LDR (r0, r9, 22)
+- LDR (r1, r9, 21)
+- LDR (r2, r9, 20)
+- LDR (r3, r9, 19)
+- LDR (r4, r9, 18)
+- LDR (r5, r9, 17)
+- LDR (r6, r9, 16)
+- LDR (r7, r9, 15)
+-
+- LDR (r13, r9, 37)
+- LDR (r14, r9, 36)
+- LDR (r15, r9, 35)
+- LDR (r16, r9, 34)
+- LDR (r17, r9, 33)
+- LDR (r18, r9, 32)
+- LDR (r19, r9, 31)
+- LDR (r20, r9, 30)
+- LDR (r21, r9, 29)
+- LDR (r22, r9, 28)
+- LDR (r23, r9, 27)
+- LDR (r24, r9, 26)
+-
+- LDR (blink, r9, 7)
+- LDR (fp, r9, 8)
+- LDR (gp, r9, 9)
+- LDR (sp, r9, 23)
++ BRRhi r0, -1024, L (call_syscall_err)
++
++ ADDR r9, r9, UCONTEXT_MCONTEXT
++ LDR.as r0, r9, 22
++ LDR.as r1, r9, 21
++ LDR.as r2, r9, 20
++ LDR.as r3, r9, 19
++ LDR.as r4, r9, 18
++ LDR.as r5, r9, 17
++ LDR.as r6, r9, 16
++ LDR.as r7, r9, 15
++
++ LDR.as r13, r9, 37
++ LDR.as r14, r9, 36
++ LDR.as r15, r9, 35
++ LDR.as r16, r9, 34
++ LDR.as r17, r9, 33
++ LDR.as r18, r9, 32
++ LDR.as r19, r9, 31
++ LDR.as r20, r9, 30
++ LDR.as r21, r9, 29
++ LDR.as r22, r9, 28
++ LDR.as r23, r9, 27
++ LDR.as r24, r9, 26
++
++ LDR.as blink, r9, 7
++ LDR.as fp, r9, 8
++ LDR.as gp, r9, 9
++ LDR.as sp, r9, 23
+
+ j [blink]
+
+diff --git a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+index 831b81a922..3a0f1d4aba 100644
+--- a/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
++++ b/sysdeps/unix/sysv/linux/arc/sys/ucontext.h
+@@ -42,6 +42,7 @@ typedef struct
+ unsigned long int __efa;
+ unsigned long int __stop_pc;
+ unsigned long int __r30, __r58, __r59;
++ unsigned long int __fpr[32];
+ } mcontext_t;
+
+ /* Userlevel context. */
+diff --git a/sysdeps/unix/sysv/linux/arc/syscall.S b/sysdeps/unix/sysv/linux/arc/syscall.S
+index c6ca329e9a..db1ffdad2a 100644
+--- a/sysdeps/unix/sysv/linux/arc/syscall.S
++++ b/sysdeps/unix/sysv/linux/arc/syscall.S
+@@ -19,15 +19,15 @@
+ #include <sysdep.h>
+
+ ENTRY (syscall)
+- mov_s r8, r0
+- mov_s r0, r1
+- mov_s r1, r2
+- mov_s r2, r3
+- mov_s r3, r4
+- mov_s r4, r5
+- mov_s r5, r6
++ MOVR r8, r0
++ MOVR r0, r1
++ MOVR r1, r2
++ MOVR r2, r3
++ MOVR r3, r4
++ MOVR r4, r5
++ MOVR r5, r6
+
+ ARC_TRAP_INSN
+- brhi r0, -4096, L (call_syscall_err)
++ BRRhi r0, -4096, L (call_syscall_err)
+ j [blink]
+ PSEUDO_END (syscall)
+diff --git a/sysdeps/unix/sysv/linux/arc/sysdep.h b/sysdeps/unix/sysv/linux/arc/sysdep.h
+index 7f90d64124..14d11f038b 100644
+--- a/sysdeps/unix/sysv/linux/arc/sysdep.h
++++ b/sysdeps/unix/sysv/linux/arc/sysdep.h
+@@ -26,6 +26,8 @@
+
+ /* "workarounds" for generic code needing to handle 64-bit time_t. */
+
++#ifndef __ARC64_ARCH64__
++
+ /* Fix sysdeps/unix/sysv/linux/clock_getcpuclockid.c. */
+ #define __NR_clock_getres __NR_clock_getres_time64
+ /* Fix sysdeps/nptl/lowlevellock-futex.h. */
+@@ -43,6 +45,8 @@
+ /* Hack sysdeps/unix/sysv/linux/generic/utimes.c. */
+ #define __NR_utimensat __NR_utimensat_time64
+
++#endif
++
+ /* For RTLD_PRIVATE_ERRNO. */
+ #include <dl-sysdep.h>
+
+@@ -59,7 +63,7 @@
+ # undef PSEUDO
+ # define PSEUDO(name, syscall_name, args) \
+ PSEUDO_NOERRNO(name, syscall_name, args) ASM_LINE_SEP \
+- brhi r0, -4096, L (call_syscall_err) ASM_LINE_SEP
++ BRRhi r0, -4096, L (call_syscall_err) ASM_LINE_SEP
+
+ # define ret j_s [blink]
+
+@@ -98,7 +102,7 @@
+
+ /* Don't set errno, return kernel error (in errno form) or zero. */
+ # define ret_ERRVAL \
+- rsub r0, r0, 0 ASM_LINE_SEP \
++ SUBR r0, 0, r0 ASM_LINE_SEP \
+ ret_NOERRNO
+
+ # undef PSEUDO_END_ERRVAL
+@@ -117,12 +121,12 @@
+
+ # define SYSCALL_ERROR_HANDLER \
+ L (call_syscall_err): ASM_LINE_SEP \
+- push_s blink ASM_LINE_SEP \
+- cfi_adjust_cfa_offset (4) ASM_LINE_SEP \
++ PUSHR blink ASM_LINE_SEP \
++ cfi_adjust_cfa_offset (REGSZ) ASM_LINE_SEP \
+ cfi_rel_offset (blink, 0) ASM_LINE_SEP \
+ CALL_ERRNO_SETTER_C ASM_LINE_SEP \
+- pop_s blink ASM_LINE_SEP \
+- cfi_adjust_cfa_offset (-4) ASM_LINE_SEP \
++ POPR blink ASM_LINE_SEP \
++ cfi_adjust_cfa_offset (-REGSZ) ASM_LINE_SEP \
+ cfi_restore (blink) ASM_LINE_SEP \
+ j_s [blink]
+
+diff --git a/sysdeps/unix/sysv/linux/arc/vfork.S b/sysdeps/unix/sysv/linux/arc/vfork.S
+index 57b85988e3..57bd8d3d81 100644
+--- a/sysdeps/unix/sysv/linux/arc/vfork.S
++++ b/sysdeps/unix/sysv/linux/arc/vfork.S
+@@ -28,11 +28,11 @@
+
+ ENTRY (__vfork)
+ mov r0, CLONE_FLAGS_FOR_VFORK
+- mov_s r1, sp
++ MOVR r1, sp
+ mov r8, __NR_clone
+ ARC_TRAP_INSN
+
+- cmp r0, 0
++ CMPR r0, 0
+ jge [blink] ; child continues
+
+ b __syscall_error
+diff --git a/timezone/zic.c b/timezone/zic.c
+index 2875b5544c..3d606c8e6e 100644
+--- a/timezone/zic.c
++++ b/timezone/zic.c
+@@ -39,7 +39,7 @@ typedef int_fast64_t zic_t;
+ #include <sys/stat.h>
+ #endif
+ #ifdef S_IRUSR
+-#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
++#define MKDIR_UMASK (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH|S_IWOTH)
+ #else
+ #define MKDIR_UMASK 0755
+ #endif
+--
+2.31.1
+
diff --git a/toolchain/glibc/patches/2.38/m68k-m68040.patch b/toolchain/glibc/patches/2.38/m68k-m68040.patch
new file mode 100644
index 000000000..bfa0b3da8
--- /dev/null
+++ b/toolchain/glibc/patches/2.38/m68k-m68040.patch
@@ -0,0 +1,59 @@
+diff -Nur glibc-2.38.orig/sysdeps/m68k/m680x0/bits/flt-eval-method.h glibc-2.38/sysdeps/m68k/m680x0/bits/flt-eval-method.h
+--- glibc-2.38.orig/sysdeps/m68k/m680x0/bits/flt-eval-method.h 2023-07-31 19:54:16.000000000 +0200
++++ glibc-2.38/sysdeps/m68k/m680x0/bits/flt-eval-method.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,25 +0,0 @@
+-/* Define __GLIBC_FLT_EVAL_METHOD. M68K version.
+- Copyright (C) 2016-2023 Free Software Foundation, Inc.
+- This file is part of the GNU C Library.
+-
+- The GNU C Library is free software; you can redistribute it and/or
+- modify it under the terms of the GNU Lesser General Public
+- License as published by the Free Software Foundation; either
+- version 2.1 of the License, or (at your option) any later version.
+-
+- The GNU C Library is distributed in the hope that it will be useful,
+- but WITHOUT ANY WARRANTY; without even the implied warranty of
+- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+- Lesser General Public License for more details.
+-
+- You should have received a copy of the GNU Lesser General Public
+- License along with the GNU C Library; if not, see
+- <https://www.gnu.org/licenses/>. */
+-
+-#ifndef _MATH_H
+-# error "Never use <bits/flt-eval-method.h> directly; include <math.h> instead."
+-#endif
+-
+-/* The m68k FPUs evaluate all values in the 96-bit floating-point
+- format which is also available for the user as 'long double'. */
+-#define __GLIBC_FLT_EVAL_METHOD 2
+diff -Nur glibc-2.38.orig/sysdeps/m68k/m680x0/m68020/wordcopy.S glibc-2.38/sysdeps/m68k/m680x0/m68020/wordcopy.S
+--- glibc-2.38.orig/sysdeps/m68k/m680x0/m68020/wordcopy.S 2023-07-31 19:54:16.000000000 +0200
++++ glibc-2.38/sysdeps/m68k/m680x0/m68020/wordcopy.S 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-/* Empty, not needed. */
+diff -Nur glibc-2.38.orig/sysdeps/m68k/wordcopy.c glibc-2.38/sysdeps/m68k/wordcopy.c
+--- glibc-2.38.orig/sysdeps/m68k/wordcopy.c 1970-01-01 01:00:00.000000000 +0100
++++ glibc-2.38/sysdeps/m68k/wordcopy.c 2023-08-10 16:23:10.972526508 +0200
+@@ -0,0 +1,21 @@
++/* Definitions for memory copy functions. Motorola 68020 version.
++ Copyright (C) 2023 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Lesser General Public
++ License as published by the Free Software Foundation; either
++ version 2.1 of the License, or (at your option) any later version.
++
++ The GNU C Library is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ Lesser General Public License for more details.
++
++ You should have received a copy of the GNU Lesser General Public
++ License along with the GNU C Library. If not, see
++ <https://www.gnu.org/licenses/>. */
++
++#if !defined(__mc68020__) && !defined(mc68020)
++#include <string/wordcopy.c>
++#endif
diff --git a/toolchain/gmp/Makefile.inc b/toolchain/gmp/Makefile.inc
index 88087b7e3..c7f99320b 100644
--- a/toolchain/gmp/Makefile.inc
+++ b/toolchain/gmp/Makefile.inc
@@ -2,7 +2,7 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= gmp
-PKG_VERSION:= 6.1.2
+PKG_VERSION:= 6.3.0
PKG_RELEASE:= 1
-PKG_HASH:= 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912
+PKG_HASH:= a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898
PKG_SITES:= ${MASTER_SITE_GNU:=gmp/}
diff --git a/toolchain/mpfr/Makefile.inc b/toolchain/mpfr/Makefile.inc
index 74b888e95..4aa9f0e9b 100644
--- a/toolchain/mpfr/Makefile.inc
+++ b/toolchain/mpfr/Makefile.inc
@@ -2,7 +2,7 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= mpfr
-PKG_VERSION:= 4.1.0
+PKG_VERSION:= 4.2.1
PKG_RELEASE:= 1
-PKG_HASH:= 0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f
+PKG_HASH:= 277807353a6726978996945af13e52829e3abd7a9a5b7fb2793894e18f1fcbb2
PKG_SITES:= http://www.mpfr.org/mpfr-current/
diff --git a/toolchain/musl/Makefile.inc b/toolchain/musl/Makefile.inc
index b5ce58af0..b5e1800f0 100644
--- a/toolchain/musl/Makefile.inc
+++ b/toolchain/musl/Makefile.inc
@@ -8,10 +8,10 @@ PKG_RELEASE:= 1
PKG_SITES:= git://git.musl-libc.org/musl
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
endif
-ifeq ($(ADK_TARGET_LIB_MUSL_1_2_2),y)
-PKG_VERSION:= 1.2.2
+ifeq ($(ADK_TARGET_LIB_MUSL_1_2_5),y)
+PKG_VERSION:= 1.2.5
PKG_RELEASE:= 1
-PKG_HASH:= 9b969322012d796dc23dda27a35866034fa67d8fb67e0e2c45c913c3d43219dd
+PKG_HASH:= a9a118bbe84d8764da0ea0d28b3ab3fae8477fc7e4085d90102b8596fc7c75e4
PKG_SITES:= http://www.musl-libc.org/releases/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
diff --git a/toolchain/newlib/Makefile.inc b/toolchain/newlib/Makefile.inc
index 591377022..c9ce3a2ad 100644
--- a/toolchain/newlib/Makefile.inc
+++ b/toolchain/newlib/Makefile.inc
@@ -8,17 +8,10 @@ PKG_RELEASE:= 1
PKG_SITES:= git://sourceware.org/git/newlib-cygwin.git
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
endif
-ifeq ($(ADK_TARGET_LIB_NEWLIB_4_1_0),y)
-PKG_VERSION:= 4.1.0
+ifeq ($(ADK_TARGET_LIB_NEWLIB_4_4_0),y)
+PKG_VERSION:= 4.4.0.20231231
PKG_RELEASE:= 1
-PKG_HASH:= f296e372f51324224d387cc116dc37a6bd397198756746f93a2b02e9a5d40154
+PKG_HASH:= 0c166a39e1bf0951dfafcd68949fe0e4b6d3658081d6282f39aeefc6310f2f13
PKG_SITES:= ftp://sourceware.org/pub/newlib/
DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz
endif
-ifeq ($(ADK_TARGET_LIB_NEWLIB_XTENSA),y)
-PKG_VERSION:= xtensa
-PKG_GIT:= branch
-PKG_RELEASE:= 1
-PKG_SITES:= https://github.com/jcmvbkbc/newlib-xtensa.git
-DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.xz
-endif
diff --git a/toolchain/newlib/patches/3.1.0/fix-tooldir.patch b/toolchain/newlib/patches/3.1.0/fix-tooldir.patch
deleted file mode 100644
index 652f7494b..000000000
--- a/toolchain/newlib/patches/3.1.0/fix-tooldir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur newlib-2.2.0-1.orig/configure newlib-2.2.0-1/configure
---- newlib-2.2.0-1.orig/configure 2014-07-05 23:09:07.000000000 +0200
-+++ newlib-2.2.0-1/configure 2015-11-25 06:33:11.461178398 +0100
-@@ -6985,7 +6985,7 @@
-
- # Some systems (e.g., one of the i386-aix systems the gas testers are
- # using) don't handle "\$" correctly, so don't use it here.
--tooldir='${exec_prefix}'/${target_noncanonical}
-+tooldir='${exec_prefix}'
- build_tooldir=${tooldir}
-
- # Create a .gdbinit file which runs the one in srcdir
diff --git a/toolchain/newlib/patches/git/fix-tooldir.patch b/toolchain/newlib/patches/git/fix-tooldir.patch
deleted file mode 100644
index 652f7494b..000000000
--- a/toolchain/newlib/patches/git/fix-tooldir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur newlib-2.2.0-1.orig/configure newlib-2.2.0-1/configure
---- newlib-2.2.0-1.orig/configure 2014-07-05 23:09:07.000000000 +0200
-+++ newlib-2.2.0-1/configure 2015-11-25 06:33:11.461178398 +0100
-@@ -6985,7 +6985,7 @@
-
- # Some systems (e.g., one of the i386-aix systems the gas testers are
- # using) don't handle "\$" correctly, so don't use it here.
--tooldir='${exec_prefix}'/${target_noncanonical}
-+tooldir='${exec_prefix}'
- build_tooldir=${tooldir}
-
- # Create a .gdbinit file which runs the one in srcdir
diff --git a/toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch b/toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch
deleted file mode 100644
index 1ad0f373d..000000000
--- a/toolchain/newlib/patches/newlib-xtensa/fix-tooldir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur newlib-xtensa.orig/configure newlib-xtensa/configure
---- newlib-xtensa.orig/configure 2017-12-29 15:26:12.000000000 +0100
-+++ newlib-xtensa/configure 2017-12-29 15:35:01.420208845 +0100
-@@ -6847,7 +6847,7 @@
-
- # Some systems (e.g., one of the i386-aix systems the gas testers are
- # using) don't handle "\$" correctly, so don't use it here.
--tooldir='${exec_prefix}'/${target_noncanonical}
-+tooldir='${exec_prefix}'
- build_tooldir=${tooldir}
-
- # Create a .gdbinit file which runs the one in srcdir
diff --git a/toolchain/uclibc-ng/Makefile b/toolchain/uclibc-ng/Makefile
index e07ab8ece..6b1fd31ce 100644
--- a/toolchain/uclibc-ng/Makefile
+++ b/toolchain/uclibc-ng/Makefile
@@ -50,8 +50,13 @@ UCLIBC_MAKEOPTS+= -j${ADK_MAKE_JOBS}
endif
$(WRKBUILD)/.configured: $(WRKBUILD)/.prepared
+ifeq ($(ADK_TARGET_WITH_MMU),y)
PATH='$(HOST_PATH)' sed -e 's^KERNEL_HEADERS.*$$KERNEL_HEADERS=\"${STAGING_TARGET_DIR}/usr/include\"' \
$(ADK_TOPDIR)/target/$(ADK_TARGET_ARCH)/uclibc-ng.config >${WRKBUILD}/.config
+else
+ PATH='$(HOST_PATH)' sed -e 's^KERNEL_HEADERS.*$$KERNEL_HEADERS=\"${STAGING_TARGET_DIR}/usr/include\"' \
+ $(ADK_TOPDIR)/target/$(ADK_TARGET_ARCH)/uclibc-ng-nommu.config >${WRKBUILD}/.config
+endif
$(SED) 's^.*\(CROSS_COMPILER_PREFIX\).*^\1=\"$(TARGET_CROSS)\"^' ${WRKBUILD}/.config
ifeq ($(ADK_TARGET_ENDIAN),little)
$(SED) 's/.*\(ARCH_LITTLE_ENDIAN\).*/\1=y/' ${WRKBUILD}/.config
@@ -80,8 +85,16 @@ ifeq ($(ADK_TARGET_HARD_FLOAT_DP),y)
$(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config
endif
+ifeq ($(ADK_TARGET_BINFMT_ELF),y)
+ $(SED) 's/.*\(UCLIBC_FORMAT_ELF\).*/\1=y/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/\1=y/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(UCLIBC_FORMAT_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
$(SED) 's/.*\(UCLIBC_FORMAT_SHARED_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
@@ -174,12 +187,19 @@ endif
# arc
ifeq ($(ADK_TARGET_ARCH_ARC),y)
ifeq ($(ADK_TARGET_CPU_ARC_ARC700),y)
- $(SED) 's/.*\(CONFIG_ARC_CPU_HS\).*/# \1 is not set/' ${WRKBUILD}/.config
- $(SED) 's/.*\(CONFIG_ARC_CPU_700\).*/\1=y/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_16K\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_4K\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_8K\).*/\1=y/' ${WRKBUILD}/.config
+endif
+ifeq ($(ADK_TARGET_CPU_ARC_ARCHS),y)
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_16K\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_4K\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_8K\).*/\1=y/' ${WRKBUILD}/.config
endif
-ifeq ($(ADK_TARGET_CPU_ARC_ARC_HS),y)
- $(SED) 's/.*\(CONFIG_ARC_CPU_700\).*/# \1 is not set/' ${WRKBUILD}/.config
- $(SED) 's/.*\(CONFIG_ARC_CPU_HS\).*/\1=y/' ${WRKBUILD}/.config
+ifeq ($(ADK_TARGET_CPU_ARC_ARC32),y)
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_16K\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_8K\).*/# \1 is not set/' ${WRKBUILD}/.config
+ $(SED) 's/.*\(CONFIG_ARC_PAGE_SIZE_4K\).*/\1=y/' ${WRKBUILD}/.config
endif
endif
@@ -368,6 +388,8 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.compiled
UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
VERBOSE=1 \
install_runtime install_dev
+ ln -f ${STAGING_TARGET_DIR}/usr/lib/crt1.o \
+ ${STAGING_TARGET_DIR}/usr/lib/Scrt1.o
ifeq ($(ADK_TARGET_LIBC_UTILS),y)
PATH='$(HOST_PATH)' $(MAKE) -C $(WRKBUILD) \
ARCH="$(ADK_TARGET_ARCH)" \
diff --git a/toolchain/uclibc-ng/Makefile.inc b/toolchain/uclibc-ng/Makefile.inc
index ad73b49bd..c4b4745fa 100644
--- a/toolchain/uclibc-ng/Makefile.inc
+++ b/toolchain/uclibc-ng/Makefile.inc
@@ -5,12 +5,12 @@ PKG_NAME:= uClibc-ng
ifeq ($(ADK_LIBC_VERSION),git)
PKG_VERSION:= git
PKG_RELEASE:= 1
-PKG_SITES:= git://uclibc-ng.org/git/uclibc-ng
+PKG_SITES:= https://git.uclibc-ng.org/git/uclibc-ng.git
endif
-ifeq ($(ADK_TARGET_LIB_UCLIBC_NG_1_0_39),y)
-PKG_VERSION:= 1.0.39
+ifeq ($(ADK_TARGET_LIB_UCLIBC_NG_1_0_47),y)
+PKG_VERSION:= 1.0.47
PKG_RELEASE:= 1
-PKG_SITES:= http://downloads.uclibc-ng.org/releases/1.0.39/
-PKG_HASH:= cb089dfe14867a38f222d6428e85d0e1191dcbb66dd9b1a671484f6bc7c81920
+PKG_SITES:= http://downloads.uclibc-ng.org/releases/1.0.47/
+PKG_HASH:= c58640ba7c2ce70f09574365bc8039cf580b52e1ce369db527376891b2249028
endif
-DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.xz
+DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.gz