Как избавиться от multiple definition в ядре?

Пробую собрать ядро. Получаю это:

root@kali:~/android_kernel # make CC=/usr/bin/aarch64-linux-gnu-gcc LD=/usr/bin/aarch64-linux-gnu-ld.gold CROSS_COMPILE_ARM=/usr/bin/aarch64-linux-gnu- CROSS_COMPILE_ARM32=/usr/bin/arm-linux-gnueabi- -j5
    CHK     include/config/kernel.release
    CHK     include/generated/uapi/linux/version.h
    CHK     scripts/mod/devicetable-offsets.h
    CHK     include/generated/utsrelease.h
    CHK     include/generated/timeconst.h
    CHK     include/generated/bounds.h
    CHK     include/generated/asm-offsets.h
    CALL    scripts/checksyscalls.sh
make[1]: 'include/generated/vdso-offsets.h' is up to date.
make[1]: 'include/generated/vdso32-offsets.h' is up to date.
    CHK     include/generated/compile.h
    CHK     kernel/config_data.h
    LD      drivers/soundwire/built-in.o
    LD      drivers/platform/msm/ipa/built-in.o
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_rmnet_ipa_netif_rcv_skb
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_rmnet_ipa_netifrx
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_rmnet_ipa_netifni'
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_idle_sleep_exit'
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_idle_sleep_enter
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_poll_to_intr'
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here.
/usr/bin/aarch64-linux-gnu-ld.gold: error: drivers/platform/msm/ipa/ipa_v3/built-in.o: multiple definition of '__tracepoint_intr_to_poll'
/usr/bin/aarch64-linux-gnu-ld.gold: drivers/platform/msm/ipa/ipa_v2/built-in.o: previous definition here.
    LD      drivers/spi/built-in.o
make[4]: *** [scripts/Makefile.build:423: drivers/platform/msm/ipa/built-in.o] Error 1
make[3]: *** [scripts/Makefile.build:489: drivers/platform/msm/ipa] Error 2
make[2]: *** [scripts/Makefile.build:489: drivers/platform/msm] Error 2
make[1]: *** [scripts/Makefile.build:489: drivers/platform] Error 2
make[1]: *** Waiting for unfinished jobs....
    LD      drivers/spmi/built-in.o
make: *** [Makefile:1006: drivers] Error 2

Функции объявлены в include/trace/ipa_trace.h (он там нужен, т к включается файлами include/trace/define_trace.h и include/trace/trace_events.h). Меня не спасает ни отключение #include в двух или одном из двух файлов, ни директива #pragma once в include/trace/ipa_trace.h. Без #include не собирается, #pragma once не решает проблему линковки. Объявлять структуры struct в файле include/trace/ipa_trace.h extern или же static нельзя - вообще не собирается. Экспериментировал с линковщиками ld, ld.bfd, ld.gold - толку ноль, ошибки остаются. ld.lld вообще не хочет линковать. Пытаюсь отловить команду линковки через параметр V=1

make -f ./scripts/Makefile.build obj=drivers/switch
/usr/bin/aarch64-linux-gnu-ld   -r -o drivers/switch/built-in.o drivers/switch/switch_class.o
(cat /dev/null; ) > drivers/switch/modules.order
(cat /dev/null;   cat drivers/staging/android/ion/modules.order;) > drivers/staging/android/modules.order
make -f ./scripts/Makefile.build obj=drivers/thermal
make -f ./scripts/Makefile.build obj=drivers/tty
drivers/platform/msm/ipa/ipa_v2/built-in.o:/root/kernel/android_kernel_xiaomi_jason/include/trace/./ipa_trace.h:22: first defined here                                                                                  

Мда, толку... особо и не появилось. Ни тебе параметров линковщика, ни решения проблемы... И что же делать с этим? И это я собираю дефолтный defconfig под своё устройство, я ничего в нём не менял. Т е, я просто пытаюсь собрать дефолтное ядро, чтобы уже на этом этапе отсеять различные ошибки, которые могут выскочить.

UPD: ещё и совпадает multiple definition и first defined here - include/trace/ipa_trace.h. Мда..


Ответы (0 шт):