OpenDataPlane / odp

The ODP project is an open-source, cross-platform set of application programming interfaces (APIs) for the networking data plane

Home Page:https://opendataplane.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ODP exposes symbols outside of odp*/_odp* namespace

MatiasElo opened this issue · comments

Dmitry Eremin-Solenikov 2017-05-01 23:08:44 UTC
The following command reports several symbols that fall outside of odp namespace, but still are exported from the library. It would be good to limit ODP to proper namespace and to have such command as an additional distcheck test.

$ nm -A lib/.libs/libodp-linux.a  | grep -v ' [a-zU] ' | grep -v ' _\?odp'

lib/.libs/libodp-linux.a:_fdserver.o:0000000000000008 C client_lock
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000620 T raw_bitmap_clear
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000005e0 T raw_bitmap_set
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000560 T __sparse_bitmap_clear
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000005b0 T __sparse_bitmap_iterator
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000520 T __sparse_bitmap_set
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000001f0 T __wapl_bitmap_and
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000460 T __wapl_bitmap_clear
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000004f0 T __wapl_bitmap_iterator
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000250 T __wapl_bitmap_or
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000360 T __wapl_bitmap_set
lib/.libs/libodp-linux.a:odp_classification.o:0000000000000970 T alloc_pmr
lib/.libs/libodp-linux.a:odp_classification.o:0000000000001a30 T cls_classify_packet
lib/.libs/libodp-linux.a:odp_classification.o:0000000000000a50 T get_cos_entry
lib/.libs/libodp-linux.a:odp_classification.o:00000000000004e0 T get_cos_entry_internal
lib/.libs/libodp-linux.a:odp_classification.o:0000000000000a90 T get_pmr_entry
lib/.libs/libodp-linux.a:odp_classification.o:00000000000004f0 T get_pmr_entry_internal
lib/.libs/libodp-linux.a:odp_classification.o:0000000000001820 T match_pmr_cos
lib/.libs/libodp-linux.a:odp_classification.o:00000000000019c0 T match_qos_cos
lib/.libs/libodp-linux.a:odp_classification.o:0000000000001970 T match_qos_l2_cos
lib/.libs/libodp-linux.a:odp_classification.o:0000000000001910 T match_qos_l3_cos
lib/.libs/libodp-linux.a:odp_classification.o:00000000000018d0 T pktio_classifier_init
lib/.libs/libodp-linux.a:odp_classification.o:0000000000001800 T verify_pmr
lib/.libs/libodp-linux.a:odp_errno.o:0000000000000000 B __odp_errno
lib/.libs/libodp-linux.a:odp_packet.o:0000000000000530 T packet_alloc_multi
lib/.libs/libodp-linux.a:odp_packet.o:0000000000003b50 T packet_parse_common
lib/.libs/libodp-linux.a:odp_packet.o:0000000000003b70 T packet_parse_layer
lib/.libs/libodp-linux.a:odp_packet.o:00000000000004f0 T packet_parse_reset
lib/.libs/libodp-linux.a:odp_packet_io.o:00000000000034f0 T pktin_deq_multi
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000003160 T pktin_dequeue
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000110 T pktin_enq_multi
lib/.libs/libodp-linux.a:odp_packet_io.o:00000000000000d0 T pktin_enqueue
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000200 C pktio_entry_ptr
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000008 C pktio_tbl
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000090 T pktout_deq_multi
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000050 T pktout_dequeue
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000003ad0 T pktout_enq_multi
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000003a80 T pktout_enqueue
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000c50 T sched_cb_num_pktio
lib/.libs/libodp-linux.a:odp_packet_io.o:00000000000032d0 T sched_cb_pktin_poll
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000b90 T sched_cb_pktio_stop_finalize
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000003b50 T single_capability
lib/.libs/libodp-linux.a:ethtool.o:0000000000000000 T ethtool_stats_get_fd
lib/.libs/libodp-linux.a:io_ops.o:0000000000000000 D pktio_if_ops
lib/.libs/libodp-linux.a:ipc.o:0000000000000000 D ipc_pktio_ops
lib/.libs/libodp-linux.a:pktio_common.o:0000000000000160 T sock_stats_fd
lib/.libs/libodp-linux.a:pktio_common.o:0000000000000000 T sock_stats_reset_fd
lib/.libs/libodp-linux.a:loop.o:0000000000000000 D loopback_pktio_ops
lib/.libs/libodp-linux.a:socket.o:00000000000011c0 T link_status_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000ae0 T mac_addr_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000bc0 T mtu_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001110 T promisc_mode_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000fe0 T promisc_mode_set_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001270 T rss_conf_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001900 T rss_conf_get_supported_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001dc0 T rss_conf_print
lib/.libs/libodp-linux.a:socket.o:0000000000001570 T rss_conf_set_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000880 W sendmmsg
lib/.libs/libodp-linux.a:socket.o:0000000000000000 D sock_mmsg_pktio_ops
lib/.libs/libodp-linux.a:socket_mmap.o:0000000000000000 D sock_mmap_pktio_ops
lib/.libs/libodp-linux.a:sysfs.o:0000000000000110 T sysfs_stats
lib/.libs/libodp-linux.a:tap.o:0000000000000000 D tap_pktio_ops
lib/.libs/libodp-linux.a:ring.o:0000000000000b20 T _ring_count
lib/.libs/libodp-linux.a:ring.o:0000000000000030 T _ring_create
lib/.libs/libodp-linux.a:ring.o:0000000000000e40 T _ring_dequeue_burst
lib/.libs/libodp-linux.a:ring.o:00000000000001f0 T _ring_destroy
lib/.libs/libodp-linux.a:ring.o:0000000000000b50 T _ring_dump
lib/.libs/libodp-linux.a:ring.o:0000000000000b00 T _ring_empty
lib/.libs/libodp-linux.a:ring.o:0000000000000e00 T _ring_enqueue_burst
lib/.libs/libodp-linux.a:ring.o:0000000000000b30 T _ring_free_count
lib/.libs/libodp-linux.a:ring.o:0000000000000ae0 T _ring_full
lib/.libs/libodp-linux.a:ring.o:0000000000000d40 T _ring_list_dump
lib/.libs/libodp-linux.a:ring.o:0000000000000d80 T _ring_lookup
lib/.libs/libodp-linux.a:ring.o:0000000000000ac0 T _ring_mc_dequeue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000e20 T _ring_mc_dequeue_burst
lib/.libs/libodp-linux.a:ring.o:00000000000006f0 T ___ring_mc_do_dequeue
lib/.libs/libodp-linux.a:ring.o:00000000000002a0 T ___ring_mp_do_enqueue
lib/.libs/libodp-linux.a:ring.o:0000000000000aa0 T _ring_mp_enqueue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000de0 T _ring_mp_enqueue_burst
lib/.libs/libodp-linux.a:ring.o:0000000000000ad0 T _ring_sc_dequeue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000e30 T _ring_sc_dequeue_burst
lib/.libs/libodp-linux.a:ring.o:00000000000008e0 T ___ring_sc_do_dequeue
lib/.libs/libodp-linux.a:ring.o:0000000000000280 T _ring_set_water_mark
lib/.libs/libodp-linux.a:ring.o:00000000000004e0 T ___ring_sp_do_enqueue
lib/.libs/libodp-linux.a:ring.o:0000000000000ab0 T _ring_sp_enqueue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000df0 T _ring_sp_enqueue_burst
lib/.libs/libodp-linux.a:ring.o:0000000000000000 T _ring_tailq_init
lib/.libs/libodp-linux.a:odp_pool.o:0000000000000840 T buffer_alloc_multi
lib/.libs/libodp-linux.a:odp_pool.o:0000000000000af0 T buffer_free_multi
lib/.libs/libodp-linux.a:odp_pool.o:0000000000000008 C pool_tbl
lib/.libs/libodp-linux.a:odp_pool.o:0000000000001b10 T seg_alloc_tail
lib/.libs/libodp-linux.a:odp_pool.o:0000000000001b20 T seg_free_tail
lib/.libs/libodp-linux.a:odp_queue.o:00000000000006a0 T get_qentry
lib/.libs/libodp-linux.a:odp_queue.o:0000000000000580 T queue_deq
lib/.libs/libodp-linux.a:odp_queue.o:00000000000003a0 T queue_deq_multi
lib/.libs/libodp-linux.a:odp_queue.o:0000000000000220 T queue_enq
lib/.libs/libodp-linux.a:odp_queue.o:0000000000000000 T queue_enq_multi
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001460 T queue_lock
lib/.libs/libodp-linux.a:odp_queue.o:00000000000014a0 T queue_unlock
lib/.libs/libodp-linux.a:odp_queue.o:00000000000016b0 T sched_cb_num_queues
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001750 T sched_cb_queue_deq_multi
lib/.libs/libodp-linux.a:odp_queue.o:0000000000000dd0 T sched_cb_queue_destroy_finalize
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001a30 T sched_cb_queue_empty
lib/.libs/libodp-linux.a:odp_queue.o:00000000000016e0 T sched_cb_queue_grp
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001740 T sched_cb_queue_handle
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001720 T sched_cb_queue_is_atomic
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001700 T sched_cb_queue_is_ordered
lib/.libs/libodp-linux.a:odp_queue.o:00000000000016c0 T sched_cb_queue_prio
lib/.libs/libodp-linux.a:odp_schedule.o:0000000000000000 B sched_local
lib/.libs/libodp-linux.a:odp_schedule.o:0000000000000000 D schedule_default_api
lib/.libs/libodp-linux.a:odp_schedule.o:00000000000000a0 D schedule_default_fn
lib/.libs/libodp-linux.a:odp_schedule_if.o:0000000000000000 D sched_api
lib/.libs/libodp-linux.a:odp_schedule_if.o:0000000000000008 D sched_fn
lib/.libs/libodp-linux.a:odp_schedule_sp.o:0000000000000000 D schedule_sp_api
lib/.libs/libodp-linux.a:odp_schedule_sp.o:00000000000000a0 D schedule_sp_fn
lib/.libs/libodp-linux.a:odp_schedule_iquery.o:0000000000000000 D schedule_iquery_api
lib/.libs/libodp-linux.a:odp_schedule_iquery.o:00000000000000a0 D schedule_iquery_fn
lib/.libs/libodp-linux.a:odp_schedule_iquery.o:0000000000000000 B thread_local
lib/.libs/libodp-linux.a:odp_sysinfo_parse.o:0000000000000000 T cpuinfo_parser
lib/.libs/libodp-linux.a:pcap.o:0000000000000000 D pcap_pktio_ops

Comment 1 Bill Fischofer 2017-05-04 00:01:44 UTC
I'm not sure this is correct. You want to be looking at the .so file, not the .o files. The .o files have to have internal names visible so that these files can be linked to produce the .so. However look at the following:

nm -g libodp-linux.so

and you only see the external ODP API as visible symbols, in addition to non-ODP stuff like glibc and OpenSSL symbols that we don't control.

Comment 2 Dmitry Eremin-Solenikov 2017-05-04 08:56:14 UTC
Bill, I'm looking onto the archive (libodp-linux.a), which is a way to link ODP with an app. And archive does export those symbols, because there is no way to limit visibility with it.

Comment 3 Bill Fischofer 2017-05-04 13:30:53 UTC
So is this really a bug then? The original visibility changes were intended to cover .so files.

Comment 4 Dmitry Eremin-Solenikov 2017-05-04 13:32:09 UTC
It is a bug, because static archive exports those names. I'd suggest to just rename respective symbols.

Comment 5 Bill Fischofer 2017-06-22 14:53:10 UTC
Dmitry, can you suggest a patch to address this?

Comment 6 Bill Fischofer 2017-08-03 14:52:49 UTC
Ping to Dmitry. Is this something we still want to address?

Comment 7 Dmitry Eremin-Solenikov 2017-08-04 07:39:18 UTC
Yes, I will take a look.

Comment 8 Bill Fischofer 2017-08-17 14:40:48 UTC
PR #108 merged.

Comment 9 Dmitry Eremin-Solenikov 2017-08-17 20:42:27 UTC
Reopened. The bug is still not fully sorted. I just fixed some low-hanging fruits for now.

$ nm -A lib/.libs/libodp-linux.a  | grep -v ' [a-zU] ' | grep -v ' _\?odp'
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000620 T raw_bitmap_clear
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000005e0 T raw_bitmap_set
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000560 T __sparse_bitmap_clear
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000005b0 T __sparse_bitmap_iterator
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000520 T __sparse_bitmap_set
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000001f0 T __wapl_bitmap_and
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000460 T __wapl_bitmap_clear
lib/.libs/libodp-linux.a:odp_bitmap.o:00000000000004f0 T __wapl_bitmap_iterator
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000250 T __wapl_bitmap_or
lib/.libs/libodp-linux.a:odp_bitmap.o:0000000000000360 T __wapl_bitmap_set
lib/.libs/libodp-linux.a:odp_classification.o:00000000000018d0 T cls_classify_packet
lib/.libs/libodp-linux.a:odp_classification.o:0000000000001890 T pktio_classifier_init
lib/.libs/libodp-linux.a:odp_errno.o:0000000000000000 B __odp_errno
lib/.libs/libodp-linux.a:odp_packet.o:0000000000000550 T packet_alloc_multi
lib/.libs/libodp-linux.a:odp_packet.o:00000000000062e0 T packet_parse_common
lib/.libs/libodp-linux.a:odp_packet.o:0000000000006300 T packet_parse_layer
lib/.libs/libodp-linux.a:odp_packet.o:0000000000000500 T packet_parse_reset
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000200 C pktio_entry_ptr
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000003280 T sched_cb_pktin_poll
lib/.libs/libodp-linux.a:odp_packet_io.o:0000000000000b70 T sched_cb_pktio_stop_finalize
lib/.libs/libodp-linux.a:ethtool.o:0000000000000000 T ethtool_stats_get_fd
lib/.libs/libodp-linux.a:io_ops.o:0000000000000000 D pktio_if_ops
lib/.libs/libodp-linux.a:ipc.o:0000000000000000 D ipc_pktio_ops
lib/.libs/libodp-linux.a:pktio_common.o:0000000000000160 T sock_stats_fd
lib/.libs/libodp-linux.a:pktio_common.o:0000000000000000 T sock_stats_reset_fd
lib/.libs/libodp-linux.a:loop.o:0000000000000000 D loopback_pktio_ops
lib/.libs/libodp-linux.a:socket.o:0000000000000fc0 T link_status_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000930 T mac_addr_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000a10 T mtu_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000f10 T promisc_mode_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000000de0 T promisc_mode_set_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001070 T rss_conf_get_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001810 T rss_conf_get_supported_fd
lib/.libs/libodp-linux.a:socket.o:0000000000001de0 T rss_conf_print
lib/.libs/libodp-linux.a:socket.o:0000000000001480 T rss_conf_set_fd
lib/.libs/libodp-linux.a:socket.o:00000000000006c0 W sendmmsg
lib/.libs/libodp-linux.a:socket.o:0000000000000000 D sock_mmsg_pktio_ops
lib/.libs/libodp-linux.a:socket_mmap.o:0000000000000000 D sock_mmap_pktio_ops
lib/.libs/libodp-linux.a:sysfs.o:0000000000000110 T sysfs_stats
lib/.libs/libodp-linux.a:tap.o:0000000000000000 D tap_pktio_ops
lib/.libs/libodp-linux.a:ring.o:0000000000000b20 T _ring_count
lib/.libs/libodp-linux.a:ring.o:0000000000000030 T _ring_create
lib/.libs/libodp-linux.a:ring.o:0000000000000e40 T _ring_dequeue_burst
lib/.libs/libodp-linux.a:ring.o:00000000000001f0 T _ring_destroy
lib/.libs/libodp-linux.a:ring.o:0000000000000b50 T _ring_dump
lib/.libs/libodp-linux.a:ring.o:0000000000000b00 T _ring_empty
lib/.libs/libodp-linux.a:ring.o:0000000000000e00 T _ring_enqueue_burst
lib/.libs/libodp-linux.a:ring.o:0000000000000b30 T _ring_free_count
lib/.libs/libodp-linux.a:ring.o:0000000000000ae0 T _ring_full
lib/.libs/libodp-linux.a:ring.o:0000000000000d40 T _ring_list_dump
lib/.libs/libodp-linux.a:ring.o:0000000000000d80 T _ring_lookup
lib/.libs/libodp-linux.a:ring.o:0000000000000ac0 T _ring_mc_dequeue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000e20 T _ring_mc_dequeue_burst
lib/.libs/libodp-linux.a:ring.o:00000000000006f0 T ___ring_mc_do_dequeue
lib/.libs/libodp-linux.a:ring.o:00000000000002a0 T ___ring_mp_do_enqueue
lib/.libs/libodp-linux.a:ring.o:0000000000000aa0 T _ring_mp_enqueue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000de0 T _ring_mp_enqueue_burst
lib/.libs/libodp-linux.a:ring.o:0000000000000ad0 T _ring_sc_dequeue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000e30 T _ring_sc_dequeue_burst
lib/.libs/libodp-linux.a:ring.o:00000000000008e0 T ___ring_sc_do_dequeue
lib/.libs/libodp-linux.a:ring.o:0000000000000280 T _ring_set_water_mark
lib/.libs/libodp-linux.a:ring.o:00000000000004e0 T ___ring_sp_do_enqueue
lib/.libs/libodp-linux.a:ring.o:0000000000000ab0 T _ring_sp_enqueue_bulk
lib/.libs/libodp-linux.a:ring.o:0000000000000df0 T _ring_sp_enqueue_burst
lib/.libs/libodp-linux.a:ring.o:0000000000000000 T _ring_tailq_init
lib/.libs/libodp-linux.a:odp_pool.o:0000000000000810 T buffer_alloc_multi
lib/.libs/libodp-linux.a:odp_pool.o:0000000000000aa0 T buffer_free_multi
lib/.libs/libodp-linux.a:odp_pool.o:0000000000000008 C pool_tbl
lib/.libs/libodp-linux.a:odp_queue.o:0000000000000080 D queue_default_api
lib/.libs/libodp-linux.a:odp_queue.o:0000000000000000 D queue_default_fn
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001470 T sched_cb_queue_deq_multi
lib/.libs/libodp-linux.a:odp_queue.o:00000000000013d0 T sched_cb_queue_destroy_finalize
lib/.libs/libodp-linux.a:odp_queue.o:00000000000016a0 T sched_cb_queue_empty
lib/.libs/libodp-linux.a:odp_queue.o:0000000000001460 T sched_cb_queue_handle
lib/.libs/libodp-linux.a:odp_queue_if.o:0000000000000008 D queue_api
lib/.libs/libodp-linux.a:odp_queue_if.o:0000000000000000 D queue_fn
lib/.libs/libodp-linux.a:odp_schedule.o:0000000000000000 D schedule_default_api
lib/.libs/libodp-linux.a:odp_schedule.o:00000000000000a0 D schedule_default_fn
lib/.libs/libodp-linux.a:odp_schedule_if.o:0000000000000000 D sched_api
lib/.libs/libodp-linux.a:odp_schedule_if.o:0000000000000008 D sched_fn
lib/.libs/libodp-linux.a:odp_schedule_sp.o:0000000000000000 D schedule_sp_api
lib/.libs/libodp-linux.a:odp_schedule_sp.o:00000000000000a0 D schedule_sp_fn
lib/.libs/libodp-linux.a:odp_schedule_iquery.o:0000000000000000 D schedule_iquery_api
lib/.libs/libodp-linux.a:odp_schedule_iquery.o:00000000000000a0 D schedule_iquery_fn
lib/.libs/libodp-linux.a:cpu_flags.o:0000000000000080 T cpu_flags_print_all
lib/.libs/libodp-linux.a:cpu_flags.o:00000000000001f0 T cpu_has_global_time
lib/.libs/libodp-linux.a:odp_cpu_arch.o:0000000000000030 T cpu_global_time
lib/.libs/libodp-linux.a:odp_cpu_arch.o:0000000000000040 T cpu_global_time_freq
lib/.libs/libodp-linux.a:odp_sysinfo_parse.o:0000000000000000 T cpuinfo_parser
lib/.libs/libodp-linux.a:odp_sysinfo_parse.o:00000000000002e0 T sys_info_print_arch
lib/.libs/libodp-linux.a:pcap.o:0000000000000000 D pcap_pktio_ops

Comment 10 Bill Fischofer 2017-08-31 14:44:40 UTC
PR #108 resolves this (merged)

Comment 11 Dmitry Eremin-Solenikov 2017-08-31 14:46:30 UTC
Reopening again. Please verify binary before closing the issue next time.

Comment 12 Bill Fischofer 2017-09-25 19:28:27 UTC
MUSTFIX for Tiger Moth

Comment 13 Bill Fischofer 2017-11-09 15:51:45 UTC
Not critical for Tiger Moth. Can revisit this afterwards.

Comment 14 Bill Fischofer 2017-12-07 15:40:40 UTC
Ping to Dmitry. Do we still want to pursue this?

Comment 15 Bill Fischofer 2017-12-21 15:40:08 UTC
Will review as part of Tiger Moth RC2.

Comment 16 Bill Fischofer 2018-01-18 15:37:57 UTC
Ping to Dmitry. Do we still want to pursue this for Tiger Moth RC2?

Comment 17 Dmitry Eremin-Solenikov 2018-01-18 20:42:08 UTC
Did not have time yet. It requires shooting them one by one.

Comment 18 Bill Fischofer 2018-04-05 13:19:22 UTC
This is a "nice to have" that we'll look at more post-Tiger Moth.

nm by default will show all symbols. Add -g to see only external ones.