git: 527a82474cb3 - main - libusb: versioning symbols

From: ShengYi Hung <aokblast_at_FreeBSD.org>
Date: Wed, 12 Aug 2026 14:50:45 UTC
The branch main has been updated by aokblast:

URL: https://cgit.FreeBSD.org/src/commit/?id=527a82474cb3dfbaa241e45fc0c16e57732cae94

commit 527a82474cb3dfbaa241e45fc0c16e57732cae94
Author:     ShengYi Hung <aokblast@FreeBSD.org>
AuthorDate: 2026-08-11 12:45:04 +0000
Commit:     ShengYi Hung <aokblast@FreeBSD.org>
CommitDate: 2026-08-12 14:49:35 +0000

    libusb: versioning symbols
    
    Reviewed by:    bapt, kevans
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D55686
---
 ObsoleteFiles.inc                        |   3 +
 lib/libusb/Makefile                      |   5 +-
 lib/libusb/Symbol.map                    | 260 +++++++++++++++++++++++++++++++
 tools/build/mk/OptionalObsoleteFiles.inc |   2 +-
 4 files changed, 268 insertions(+), 2 deletions(-)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 24211b4ab2a9..4024af431f7e 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -51,6 +51,9 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20260811: libusb symbol versioning, shared library bumped to version 4
+OLD_LIBS+=usr/lib/libusb.so.3
+
 # 20260810: test removed
 OLD_FILES+=usr/tests/sys/netinet6/frag6/frag6_01
 OLD_FILES+=usr/tests/sys/netinet6/frag6/frag6_01.py
diff --git a/lib/libusb/Makefile b/lib/libusb/Makefile
index af031ecb0544..ad46c7ce518d 100644
--- a/lib/libusb/Makefile
+++ b/lib/libusb/Makefile
@@ -3,7 +3,7 @@
 #
 
 LIB=		usb
-SHLIB_MAJOR=	3
+SHLIB_MAJOR=	4
 SHLIB_MINOR=	0
 SRCS=		libusb20.c
 SRCS+=		libusb20_desc.c
@@ -18,6 +18,9 @@ PTHREAD_LIBS?=	-lpthread
 
 WARNS?=		2
 
+VERSION_DEF=	${SRCTOP}/lib/libc/Versions.def
+SYMBOL_MAPS=	${.CURDIR}/Symbol.map
+
 LIBADD=		pthread
 
 MLINKS+=	libusb.3 usb.3
diff --git a/lib/libusb/Symbol.map b/lib/libusb/Symbol.map
new file mode 100644
index 000000000000..9b3f6c6ff84f
--- /dev/null
+++ b/lib/libusb/Symbol.map
@@ -0,0 +1,260 @@
+
+FBSD_1.9 {
+	libusb_alloc_streams;
+	libusb_alloc_transfer;
+	libusb_attach_kernel_driver;
+	libusb_bulk_transfer;
+	libusb_cancel_transfer;
+	libusb_check_connected;
+	libusb_claim_interface;
+	libusb_clear_halt;
+	libusb_close;
+	libusb_control_transfer;
+	libusb_control_transfer_get_data;
+	libusb_control_transfer_get_setup;
+	libusb_cpu_to_le16;
+	libusb_detach_kernel_driver;
+	libusb_detach_kernel_driver_np;
+	libusb_dev_mem_alloc;
+	libusb_dev_mem_free;
+	libusb_error_name;
+	libusb_event_handler_active;
+	libusb_event_handling_ok;
+	libusb_exit;
+	libusb_fill_bulk_stream_transfer;
+	libusb_fill_bulk_transfer;
+	libusb_fill_control_setup;
+	libusb_fill_control_transfer;
+	libusb_fill_interrupt_transfer;
+	libusb_fill_iso_transfer;
+	libusb_free_bos_descriptor;
+	libusb_free_config_descriptor;
+	libusb_free_container_id_descriptor;
+	libusb_free_device_list;
+	libusb_free_interface_association_descriptors;
+	libusb_free_platform_descriptor;
+	libusb_free_pollfds;
+	libusb_free_ss_endpoint_comp;
+	libusb_free_ss_endpoint_companion_descriptor;
+	libusb_free_ss_usb_device_capability_descriptor;
+	libusb_free_streams;
+	libusb_free_transfer;
+	libusb_free_usb_2_0_extension_descriptor;
+	libusb_get_active_config_descriptor;
+	libusb_get_active_interface_association_descriptors;
+	libusb_get_bos_descriptor;
+	libusb_get_bus_number;
+	libusb_get_config_descriptor;
+	libusb_get_config_descriptor_by_value;
+	libusb_get_configuration;
+	libusb_get_container_id_descriptor;
+	libusb_get_descriptor;
+	libusb_get_device;
+	libusb_get_device_address;
+	libusb_get_device_descriptor;
+	libusb_get_device_list;
+	libusb_get_device_speed;
+	libusb_get_driver;
+	libusb_get_driver_np;
+	libusb_get_interface_association_descriptors;
+	libusb_get_iso_packet_buffer;
+	libusb_get_iso_packet_buffer_simple;
+	libusb_get_max_alt_packet_size;
+	libusb_get_max_iso_packet_size;
+	libusb_get_max_packet_size;
+	libusb_get_next_timeout;
+	libusb_get_parent;
+	libusb_get_platform_descriptor;
+	libusb_get_pollfds;
+	libusb_get_port_number;
+	libusb_get_port_numbers;
+	libusb_get_port_path;
+	libusb_get_ss_endpoint_companion_descriptor;
+	libusb_get_ss_usb_device_capability_descriptor;
+	libusb_get_string_descriptor;
+	libusb_get_string_descriptor_ascii;
+	libusb_get_usb_2_0_extension_descriptor;
+	libusb_get_version;
+	libusb_handle_events;
+	libusb_handle_events_completed;
+	libusb_handle_events_locked;
+	libusb_handle_events_timeout;
+	libusb_handle_events_timeout_completed;
+	libusb_has_capability;
+	libusb_hotplug_deregister_callback;
+	libusb_hotplug_get_user_data;
+	libusb_hotplug_register_callback;
+	libusb_init;
+	libusb_init_context;
+	libusb_interrupt_event_handler;
+	libusb_interrupt_transfer;
+	libusb_kernel_driver_active;
+	libusb_le16_to_cpu;
+	libusb_lock_event_waiters;
+	libusb_lock_events;
+	libusb_open;
+	libusb_open_device_with_vid_pid;
+	libusb_parse_bos_descriptor;
+	libusb_parse_ss_endpoint_comp;
+	libusb_pollfds_handle_timeouts;
+	libusb_ref_device;
+	libusb_release_interface;
+	libusb_reset_device;
+	libusb_set_auto_detach_kernel_driver;
+	libusb_set_configuration;
+	libusb_set_debug;
+	libusb_set_interface_alt_setting;
+	libusb_set_iso_packet_lengths;
+	libusb_set_log_cb;
+	libusb_set_option;
+	libusb_set_pollfd_notifiers;
+	libusb_setlocale;
+	libusb_strerror;
+	libusb_submit_transfer;
+	libusb_transfer_get_stream_id;
+	libusb_transfer_set_stream_id;
+	libusb_try_lock_events;
+	libusb_unlock_event_waiters;
+	libusb_unlock_events;
+	libusb_unref_device;
+	libusb_wait_for_event;
+	libusb_wrap_sys_device;
+	libusb20_be_add_dev_quirk;
+	libusb20_be_alloc;
+	libusb20_be_alloc_default;
+	libusb20_be_alloc_linux;
+	libusb20_be_alloc_ugen20;
+	libusb20_be_dequeue_device;
+	libusb20_be_device_foreach;
+	libusb20_be_enqueue_device;
+	libusb20_be_free;
+	libusb20_be_get_dev_quirk;
+	libusb20_be_get_quirk_name;
+	libusb20_be_get_template;
+	libusb20_be_remove_dev_quirk;
+	libusb20_be_set_template;
+	LIBUSB20_BOS_DESCRIPTOR_FORMAT;
+	LIBUSB20_CONFIG_DESC_FORMAT;
+	LIBUSB20_CONTROL_SETUP_FORMAT;
+	libusb20_desc_foreach;
+	libusb20_dev_alloc;
+	libusb20_dev_alloc_config;
+	libusb20_dev_attach_kernel_driver;
+	libusb20_dev_check_connected;
+	libusb20_dev_close;
+	libusb20_dev_detach_kernel_driver;
+	libusb20_dev_free;
+	libusb20_dev_get_address;
+	libusb20_dev_get_backend_name;
+	libusb20_dev_get_bus_number;
+	libusb20_dev_get_config_index;
+	libusb20_dev_get_debug;
+	libusb20_dev_get_desc;
+	libusb20_dev_get_device_desc;
+	libusb20_dev_get_fd;
+	libusb20_dev_get_iface_desc;
+	libusb20_dev_get_info;
+	libusb20_dev_get_mode;
+	libusb20_dev_get_parent_address;
+	libusb20_dev_get_parent_port;
+	libusb20_dev_get_port_path;
+	libusb20_dev_get_power_mode;
+	libusb20_dev_get_power_usage;
+	libusb20_dev_get_speed;
+	libusb20_dev_get_stats;
+	libusb20_dev_kernel_driver_active;
+	libusb20_dev_open;
+	libusb20_dev_process;
+	libusb20_dev_req_string_simple_sync;
+	libusb20_dev_req_string_sync;
+	libusb20_dev_request_sync;
+	libusb20_dev_reset;
+	libusb20_dev_set_alt_index;
+	libusb20_dev_set_config_index;
+	libusb20_dev_set_debug;
+	libusb20_dev_set_power_mode;
+	libusb20_dev_wait_process;
+	LIBUSB20_DEVICE_DESC_FORMAT;
+	LIBUSB20_ENDPOINT_DESC_FORMAT;
+	libusb20_error_name;
+	LIBUSB20_INTERFACE_ASSOCIATION_DESC_FORMAT;
+	LIBUSB20_INTERFACE_DESC_FORMAT;
+	libusb20_me_decode;
+	libusb20_me_encode;
+	libusb20_me_get_1;
+	libusb20_me_get_2;
+	libusb20_parse_config_desc;
+	LIBUSB20_SS_ENDPT_COMP_DESC_FORMAT;
+	LIBUSB20_SS_USB_DEVCAP_DESC_FORMAT;
+	libusb20_strerror;
+	libusb20_tr_bulk_intr_sync;
+	libusb20_tr_callback_wrapper;
+	libusb20_tr_clear_stall_sync;
+	libusb20_tr_close;
+	libusb20_tr_drain;
+	libusb20_tr_get_actual_frames;
+	libusb20_tr_get_actual_length;
+	libusb20_tr_get_flags;
+	libusb20_tr_get_length;
+	libusb20_tr_get_max_frames;
+	libusb20_tr_get_max_packet_length;
+	libusb20_tr_get_max_total_length;
+	libusb20_tr_get_pointer;
+	libusb20_tr_get_priv_sc0;
+	libusb20_tr_get_priv_sc1;
+	libusb20_tr_get_status;
+	libusb20_tr_get_time_complete;
+	libusb20_tr_open;
+	libusb20_tr_open_stream;
+	libusb20_tr_pending;
+	libusb20_tr_set_buffer;
+	libusb20_tr_set_callback;
+	libusb20_tr_set_flags;
+	libusb20_tr_set_length;
+	libusb20_tr_set_priv_sc0;
+	libusb20_tr_set_priv_sc1;
+	libusb20_tr_set_timeout;
+	libusb20_tr_set_total_frames;
+	libusb20_tr_setup_bulk;
+	libusb20_tr_setup_control;
+	libusb20_tr_setup_intr;
+	libusb20_tr_setup_isoc;
+	libusb20_tr_start;
+	libusb20_tr_stop;
+	libusb20_tr_submit;
+	LIBUSB20_USB_20_DEVCAP_DESC_FORMAT;
+	usb_attach_kernel_driver_np;
+	usb_bulk_read;
+	usb_bulk_write;
+	usb_busses;
+	usb_check_connected;
+	usb_claim_interface;
+	usb_clear_halt;
+	usb_close;
+	usb_control_msg;
+	usb_destroy_configuration;
+	usb_detach_kernel_driver_np;
+	usb_device;
+	usb_fetch_and_parse_descriptors;
+	usb_find_busses;
+	usb_find_devices;
+	usb_get_busses;
+	usb_get_descriptor;
+	usb_get_descriptor_by_endpoint;
+	usb_get_driver_np;
+	usb_get_string;
+	usb_get_string_simple;
+	usb_init;
+	usb_interrupt_read;
+	usb_interrupt_write;
+	usb_open;
+	usb_parse_configuration;
+	usb_parse_descriptor;
+	usb_release_interface;
+	usb_reset;
+	usb_resetep;
+	usb_set_altinterface;
+	usb_set_configuration;
+	usb_set_debug;
+	usb_strerror;
+};
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index b595e863e5f5..70c318f6989a 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -8851,7 +8851,7 @@ OLD_FILES+=usr/include/usb.h
 OLD_FILES+=usr/include/usbhid.h
 OLD_FILES+=usr/lib/libusb.a
 OLD_FILES+=usr/lib/libusb.so
-OLD_LIBS+=usr/lib/libusb.so.3
+OLD_LIBS+=usr/lib/libusb.so.4
 OLD_FILES+=usr/lib/libusbhid.a
 OLD_FILES+=usr/lib/libusbhid.so
 OLD_LIBS+=usr/lib/libusbhid.so.4