['mock.c', 'util.c'],
)
+# Add mock-ioctl to the LD_PRELOAD path so it overrides libc.
+# Append to LD_PRELOAD so existing libraries, e.g. libasan, are kept.
+# If libasan isn't specified in the LD_PRELOAD path, ASAN warns about mock-ioctl
+# being loaded first because its memory allocations might not get intercepted.
+# But it appears this isn't a problem; ASAN errors in mock-ioctl are reported.
+# This is likely because the executable still links with libasan before libc.
+mock_ioctl_env = environment()
+mock_ioctl_env.append('LD_PRELOAD', mock_ioctl.full_path())
+mock_ioctl_env.set('ASAN_OPTIONS', 'verify_asan_link_order=0')
+
discovery = executable(
'test-discovery',
'discovery.c',
link_with: mock_ioctl,
)
-test('discovery', discovery, env: ['LD_PRELOAD=' + mock_ioctl.full_path()])
+test('discovery', discovery, env: mock_ioctl_env)
features = executable(
'test-features',
link_with: mock_ioctl,
)
-test('features', features, env: ['LD_PRELOAD=' + mock_ioctl.full_path()])
+test('features', features, env: mock_ioctl_env)
identify = executable(
'test-identify',
link_with: mock_ioctl,
)
-test('identify', identify, env: ['LD_PRELOAD=' + mock_ioctl.full_path()])
+test('identify', identify, env: mock_ioctl_env)
['mock-ifaddrs.c', ],
)
+ # See comment in test/ioctl/meson.build explaining how LD_PRELOAD is used
+ mock_ifaddrs_env = environment()
+ mock_ifaddrs_env.append('LD_PRELOAD', mock_ifaddrs.full_path())
+ mock_ifaddrs_env.set('ASAN_OPTIONS', 'verify_asan_link_order=0')
+
tree = executable(
'tree',
['tree.c'],
link_with: mock_ifaddrs,
)
- test('tree', tree, env: ['LD_PRELOAD=' + mock_ifaddrs.full_path()])
+ test('tree', tree, env: mock_ifaddrs_env)
test_util = executable(
'test-util',