mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00

The initial implementation does not account for user_data, requiring the calling application to use a global scope. This may lead to issues related to object lifecycle management and other architectural concerns. This patch adds user_data to the user’s log callback. Moreover, it performs message formatting, so the application only needs to pass the formatted string to the selected output. The change does not break the existing logging API but extends it. A new API version is introduced with the v2 suffix. Testing: Both unit tests and CLI tools serve as libflashrom clients. All unit tests run successfully. Change-Id: Iea738bd371fa3d69b9cf222c89ee67490d30af39 Signed-off-by: Dmitry Zhadinets <dzhadinets@gmail.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/86875 Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-by: Peter Marheine <pmarheine@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
143 lines
3.8 KiB
Meson
143 lines
3.8 KiB
Meson
# This file is part of the flashrom project.
|
|
#
|
|
# Copyright 2020 Google LLC
|
|
#
|
|
# This program 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; version 2 of the License.
|
|
#
|
|
# 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.
|
|
|
|
test_srcs = files(
|
|
'io_mock.c',
|
|
'tests.c',
|
|
'libusb_wraps.c',
|
|
'helpers.c',
|
|
'flashrom.c',
|
|
'libflashrom.c',
|
|
'spi25.c',
|
|
'lifecycle.c',
|
|
'layout.c',
|
|
'chip.c',
|
|
'chip_wp.c',
|
|
'selfcheck.c',
|
|
'io_real.c',
|
|
'erase_func_algo.c',
|
|
'udelay.c',
|
|
)
|
|
|
|
if not programmer.get('dummy').get('active')
|
|
test_srcs += programmer.get('dummy').get('srcs')
|
|
endif
|
|
|
|
foreach p_name, p_data : programmer
|
|
test_srcs += p_data.get('test_srcs')
|
|
endforeach
|
|
|
|
mocks = [
|
|
'-Wl,--wrap=strdup',
|
|
'-Wl,--wrap=physunmap',
|
|
'-Wl,--wrap=physmap',
|
|
'-Wl,--wrap=pcidev_init',
|
|
'-Wl,--wrap=pcidev_readbar',
|
|
'-Wl,--wrap=spi_send_command',
|
|
'-Wl,--wrap=sio_write',
|
|
'-Wl,--wrap=sio_read',
|
|
'-Wl,--wrap=open',
|
|
'-Wl,--wrap=open64',
|
|
'-Wl,--wrap=__open64_2',
|
|
'-Wl,--wrap=fcntl',
|
|
'-Wl,--wrap=fcntl64',
|
|
'-Wl,--wrap=ioctl',
|
|
'-Wl,--wrap=read',
|
|
'-Wl,--wrap=write',
|
|
'-Wl,--wrap=fopen',
|
|
'-Wl,--wrap=fopen64',
|
|
'-Wl,--wrap=fdopen',
|
|
'-Wl,--wrap=fwrite',
|
|
'-Wl,--wrap=fflush',
|
|
'-Wl,--wrap=stat',
|
|
'-Wl,--wrap=stat64',
|
|
'-Wl,--wrap=__xstat',
|
|
'-Wl,--wrap=__xstat64',
|
|
'-Wl,--wrap=fstat',
|
|
'-Wl,--wrap=fstat64',
|
|
'-Wl,--wrap=__fstat50',
|
|
'-Wl,--wrap=__fxstat',
|
|
'-Wl,--wrap=__fxstat64',
|
|
'-Wl,--wrap=fileno',
|
|
'-Wl,--wrap=fsync',
|
|
'-Wl,--wrap=fread',
|
|
'-Wl,--wrap=fgets',
|
|
'-Wl,--wrap=fprintf',
|
|
'-Wl,--wrap=fclose',
|
|
'-Wl,--wrap=feof',
|
|
'-Wl,--wrap=ferror',
|
|
'-Wl,--wrap=clearerr',
|
|
'-Wl,--wrap=setvbuf',
|
|
'-Wl,--wrap=rget_io_perms',
|
|
'-Wl,--wrap=OUTB',
|
|
'-Wl,--wrap=INB',
|
|
'-Wl,--wrap=OUTW',
|
|
'-Wl,--wrap=INW',
|
|
'-Wl,--wrap=OUTL',
|
|
'-Wl,--wrap=INL',
|
|
'-Wl,--wrap=tcgetattr',
|
|
'-Wl,--wrap=tcsetattr',
|
|
'-Wl,--wrap=usb_dev_get_by_vid_pid_number',
|
|
'-Wl,--wrap=libusb_init',
|
|
'-Wl,--wrap=libusb_set_debug',
|
|
'-Wl,--wrap=libusb_set_option',
|
|
'-Wl,--wrap=libusb_open',
|
|
'-Wl,--wrap=libusb_set_auto_detach_kernel_driver',
|
|
'-Wl,--wrap=libusb_detach_kernel_driver',
|
|
'-Wl,--wrap=libusb_attach_kernel_driver',
|
|
'-Wl,--wrap=libusb_open_device_with_vid_pid',
|
|
'-Wl,--wrap=libusb_get_device',
|
|
'-Wl,--wrap=libusb_get_device_list',
|
|
'-Wl,--wrap=libusb_free_device_list',
|
|
'-Wl,--wrap=libusb_get_bus_number',
|
|
'-Wl,--wrap=libusb_get_device_address',
|
|
'-Wl,--wrap=libusb_get_device_descriptor',
|
|
'-Wl,--wrap=libusb_get_config_descriptor',
|
|
'-Wl,--wrap=libusb_free_config_descriptor',
|
|
'-Wl,--wrap=libusb_get_configuration',
|
|
'-Wl,--wrap=libusb_set_configuration',
|
|
'-Wl,--wrap=libusb_claim_interface',
|
|
'-Wl,--wrap=libusb_control_transfer',
|
|
'-Wl,--wrap=libusb_release_interface',
|
|
'-Wl,--wrap=libusb_ref_device',
|
|
'-Wl,--wrap=libusb_unref_device',
|
|
'-Wl,--wrap=libusb_close',
|
|
'-Wl,--wrap=libusb_alloc_transfer',
|
|
'-Wl,--wrap=libusb_submit_transfer',
|
|
'-Wl,--wrap=libusb_free_transfer',
|
|
'-Wl,--wrap=libusb_handle_events_timeout',
|
|
'-Wl,--wrap=libusb_exit',
|
|
'-Wl,--gc-sections',
|
|
]
|
|
|
|
threads_dep = dependency('threads')
|
|
|
|
flashrom_tests = executable('flashrom_unit_tests',
|
|
test_srcs,
|
|
c_args : [
|
|
cargs,
|
|
'-ffunction-sections',
|
|
'-fdata-sections',
|
|
'-U_FORTIFY_SOURCE',
|
|
'-DFLASHROM_TEST',
|
|
],
|
|
export_dynamic : true,
|
|
link_args : mocks + link_args,
|
|
dependencies : [cmocka_dep, flashrom_test_dep, threads_dep],
|
|
)
|
|
test('cmocka test flashrom', flashrom_tests)
|
|
|
|
if get_option('llvm_cov').enabled()
|
|
run_target('llvm-cov-tests', command : ['../scripts/llvm-cov', flashrom_tests])
|
|
endif
|