[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Building fastnetmon on mipsel



Pavel Odintsov <pavel.odintsov@gmail.com> 于2022年5月6日周五 06:47写道:
>
> Hello!
>
> Thank you so much for your feedback! That's indeed a very tricky one.
>
> Do you have any link or documentation about this issue in ld?


https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono/ld.html
--start-group archives --end-groupThe archives should be a list of
archive files. They may be either explicit file names, or `-l'
options. The specified archives are searched repeatedly until no new
undefined references are created. Normally, an archive is searched
only once in the order that it is specified on the command line. If a
symbol in that archive is needed to resolve an undefined symbol
referred to by an object in an archive that appears later on the
command line, the linker would not be able to resolve that reference.
By grouping the archives, they all be searched repeatedly until all
possible references are resolved. Using this option has a significant
performance cost. It is best to use it only when there are unavoidable
circular references between two or more archives.


And:
https://llvm.org/devmtg/2017-10/slides/Ueyama-lld.pdf


>
>
> I've changed the code https://github.com/pavel-odintsov/fastnetmon/commit/6ece82da31abde8f55bfd9f1b6b457ec6b85e0f8 and we will try to build shortly.
>
> Thank you!
>
> On Thu, 5 May 2022 at 16:27, YunQiang Su <wzssyqa@gmail.com> wrote:
>>
>>
>>
>> Patrick Matthäi <patrick@linux-dev.org> 于2022年5月5日周四 19:54写道:
>>>
>>> Hello mips(el) porters,
>>>
>>> (please CC us, we are not subscribed).
>>>
>>> We are trying to build fastnetmon on mipsel, without success. Maybe you can help us on fixing this?:
>>>
>>> /usr/bin/c++ -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now -rdynamic CMakeFiles/fastnetmon.dir/fastnetmon.cpp.o -o fastnetmon  -latomic libgraphite_metrics.a libinfluxdb_metrics.a -lgpr -lgrpc++ -lgrpc libfastnetmon_grpc_pb_cc.a libfastnetmon_pb_cc.a -lprotobuf -lhiredis -lmongoc-1.0 -lbson-1.0 -llog4cpp -lpthread libpatricia.a libfastnetmon_pcap_format.a libipfix_rfc.a libfast_library.a libunified_parser.a -lssl -lcrypto libgobgp_action.a libexabgp_action.a libafpacket_plugin.a libsflow_plugin.a libnetflow_plugin.a libpcap_plugin.a libexample_plugin.a libfastnetmon_logic.a /usr/lib/mipsel-linux-gnu/libboost_thread.so.1.74.0 /usr/lib/mipsel-linux-gnu/libboost_atomic.so.1.74.0 -lpthread /usr/lib/mipsel-linux-gnu/libboost_regex.so.1.74.0 /usr/lib/mipsel-linux-gnu/libboost_program_options.so.1.74.0 /usr/lib/mipsel-linux-gnu/libboost_system.so.1.74.0 libpatricia.a libfastnetmon_pcap_format.a libsimple_packet_capnp.a -lcapnp -lkj -ljson-c -lssl -lcrypto -lgpr -lgrpc++ -lgrpc -lprotobuf libgobgp_api_client_pb_cc.a libgobgp_api_client_grpc_pb_cc.a libattribute_pb_cc.a libunified_parser.a libfastnetmon_packet_parser.a libsimple_packet_parser_ng.a libnetwork_data_structures.a liblibsflow.a libipfix_rfc.a libnetflow.a -lpcap -lhiredis -lmongoc-1.0 -lbson-1.0 libexabgp_action.a libbgp_protocol.a
>>
>> In this command,  libfastnetmon_logic.a is put after -latomic, while libfastnetmon_logic.a(fastnetmon_logic.cpp.o) uses symbols from libatomic.
>> Due to the limitation of gnu ld, -latomic should be put after  libfastnetmon_logic.a.
>>
>>> /usr/bin/ld: libfastnetmon_logic.a(fastnetmon_logic.cpp.o): undefined reference to symbol '__atomic_fetch_add_8@@LIBATOMIC_1.0'
>>> /usr/bin/ld: /usr/lib/gcc/mipsel-linux-gnu/11/libatomic.so: error adding symbols: DSO missing from command line
>>>
>>>
>>>
>>> -------- Weitergeleitete Nachricht --------
>>> Betreff: Re: GoBGP and FastNetMon on Debian
>>> Datum: Thu, 5 May 2022 11:33:33 +0100
>>> Von: Pavel Odintsov <pavel.odintsov@gmail.com>
>>> An: Patrick Matthäi <patrick@linux-dev.org>
>>>
>>>
>>> Hello!
>>>
>>> That's extremely strange indeed.
>>>
>>> Cmake claims that library is here:
>>>
>>> -- Performing Test HAVE__ATOMIC_ADD_FETCH - Failed
>>> -- We have no __atomic_add_fetch, will try linking with libatomic
>>> -- Looking for __atomic_add_fetch_8 in atomic
>>> -- Looking for __atomic_add_fetch_8 in atomic - found
>>> -- Linked with atomic library
>>> -- Performing Test HAVE__SYNC_FETCH_AND_ADD
>>> -- Performing Test HAVE__SYNC_FETCH_AND_ADD - Failed
>>> -- We have no __sync_fetch_and_add on this platform, will try linking with libatomic
>>> -- Looking for __sync_fetch_and_add_8 in atomic
>>> -- Looking for __sync_fetch_and_add_8 in atomic - not found
>>> -- We have no support for __sync_fetch_and_add in atomic library, skip linking
>>>
>>> Do you have ssh access to any machine with this such architecture?
>>>
>>> On Thu, 5 May 2022 at 10:37, Patrick Matthäi <patrick@linux-dev.org> wrote:
>>>>
>>>> Hey,
>>>>
>>>> hmpf, I hate mipsel..
>>>> https://buildd.debian.org/status/fetch.php?pkg=fastnetmon&arch=mipsel&ver=1.2.0%2Bgit20220505-1&stamp=1651743326&raw=0
>>>>
>>>>
>>>> Am 05.05.2022 um 02:14 schrieb Pavel Odintsov:
>>>>
>>>> Good morning!
>>>>
>>>> I hope you liked your movie yesterday.
>>>>
>>>> I did my side of task and resurrected logic which uses __atomic_add_fetch instead of __sync_fetch_and_add: https://github.com/pavel-odintsov/fastnetmon/commit/dad1c7b0b9fe16d24566649aa92d757050f4ec2a
>>>>
>>>> Good news that we have it in place for Debian build for multiple platforms we had issues previously: https://salsa.debian.org/debian/fastnetmon/-/blob/master/debian/rules#L11
>>>>
>>>> Please keep me updated about mipsel builds.
>>>>
>>>> We have some work to get rid of atomic increments and replace them by locks and I hope we will drop this magic in coming releases.
>>>>
>>>>
>>>> On Wed, 4 May 2022 at 18:54, Pavel Odintsov <pavel.odintsov@gmail.com> wrote:
>>>>>
>>>>> Hello!
>>>>>
>>>>> Excellent!
>>>>>
>>>>> Have a great evening!
>>>>>
>>>>> On Wed, 4 May 2022 at 18:54, Patrick Matthäi <patrick@linux-dev.org> wrote:
>>>>>>
>>>>>> Yes i will try tomorrow, now i Went to the Cinema :)
>>>>>>
>>>>>> Am 04.05.2022 19:45 schrieb Pavel Odintsov <pavel.odintsov@gmail.com>:
>>>>>>
>>>>>> Hello!
>>>>>>
>>>>>> It may be really fun but I even had fix for it back in time: https://github.com/pavel-odintsov/fastnetmon/commit/d5711bb3da43bff3f90a33c5d5ab9b5a262660c5
>>>>>>
>>>>>> I think it was removed during one of many code refactorings from previous years.
>>>>>>
>>>>>> I'll return this logic back shortly.
>>>>>>
>>>>>> Is it possible to set flag cmake .. -DUSE_NEW_ATOMIC_BUILTINS=ON only for mipsel targets? I'm not 100% sure about this patch to enable it for all platforms.
>>>>>>
>>>>>> Thank you!
>>>>>>
>>>>>> On Wed, 4 May 2022 at 18:41, Pavel Odintsov <pavel.odintsov@gmail.com> wrote:
>>>>>>
>>>>>> Hello!
>>>>>>
>>>>>> Oh, sad stuff indeed.
>>>>>>
>>>>>> -- Will use new memory model aware atomic builtins
>>>>>> -- Performing Test HAVE__ATOMIC_ADD_FETCH
>>>>>> -- Performing Test HAVE__ATOMIC_ADD_FETCH - Failed
>>>>>> -- We have no __atomic_add_fetch, will try linking with libatomic
>>>>>> -- Looking for __atomic_add_fetch_8 in atomic
>>>>>> -- Looking for __atomic_add_fetch_8 in atomic - found
>>>>>> -- Linked with atomic library
>>>>>> -- Performing Test HAVE__SYNC_FETCH_AND_ADD
>>>>>> -- Performing Test HAVE__SYNC_FETCH_AND_ADD - Failed
>>>>>> -- We have no __sync_fetch_and_add on this platform, will try linking with libatomic
>>>>>> -- Looking for __sync_fetch_and_add_8 in atomic
>>>>>> -- Looking for __sync_fetch_and_add_8 in atomic - not found
>>>>>> -- We have no support for __sync_fetch_and_add in atomic library, skip linking
>>>>>>
>>>>>> We actually linked with libatomic for __atomic_add_fetch but it looks like __sync_fetch_and_add_8 is missing from libatomic.
>>>>>>
>>>>>> But I found something in Debian's bug tracker: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869805 which is quite insightful about this exact issue.
>>>>>>
>>>>>> On Wed, 4 May 2022 at 18:17, Patrick Matthäi <patrick@linux-dev.org> wrote:
>>>>>>
>>>>>> https://buildd.debian.org/status/fetch.php?pkg=fastnetmon&arch=mipsel&ver=1.2.0%2Bgit20220504-1&stamp=1651682939&raw=0
>>>>>>
>>>>>> Does not work :/ But I see the -latomic humpf..
>>>>>>
>>>>>> Am 04.05.2022 um 14:49 schrieb Pavel Odintsov:
>>>>>>
>>>>>> Hello!
>>>>>>
>>>>>> Thank you for feedback.
>>>>>>
>>>>>> I added some logic to fix it or at least confirm root cause of this issue with atomic:
>>>>>> https://github.com/pavel-odintsov/fastnetmon/commit/89e8923759175a104aa491d4d0b683d627088110
>>>>>>
>>>>>> Would you mind adding this patch and trying build again?
>>>>>>
>>>>>> Thank you!
>>>>>>
>>>>>> On Tue, 3 May 2022 at 19:18, Patrick Matthäi <patrick@linux-dev.org> wrote:
>>>
>>>
>>
>>
>> --
>> YunQiang Su
>
>
>
> --
> Sincerely yours, Pavel Odintsov



-- 
YunQiang Su


Reply to: