Hello,

I am currently trying to migrate a gcc plugin that has been well developed
for x86 code to ARM platform (for arm-none-eabi-gcc).

Currently I did the following steps:

1. write a hello world program t.c

2. compile with the following commands:

    ➜  arm-none-eabi-gcc -v
         ......
         gcc version 9.3.1 20200408 (release) (GNU Arm Embedded Toolchain
9-2020-q2-update)

    ➜  arm-none-eabi-gcc -S -mcpu=cortex-m3 -mthumb -fdump-tree-all t.c

It works fine, and can smoothly print out all gimple code at different
stages.

3. Load my plugin (the plugin is compiled by x64 gcc version 10.0):

➜  file instrument_san_cov.so
instrument_san_cov.so: ELF 64-bit LSB shared object, x86-64, version 1
(SYSV), dynamically linked, with debug_info, not stripped
➜  file arm-none-eabi-gcc
arm-none-eabi-gcc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux
2.6.24, BuildID[sha1]=fbadd6adc8607f595caeccae919f3bab9df2d7a6, stripped

➜  arm-none-eabi-gcc -fplugin=./instrument_cov.so -S -mcpu=cortex-m3
-mthumb -fdump-tree-all t.c
cc1: error: cannot load plugin ./instrument_cov.so
   ./instrument_cov.so: undefined symbol:
_Z20build_string_literaliPKcP9tree_nodem

➜  c++filt -n _Z20build_string_literaliPKcP9tree_nodem
build_string_literal(int, char const*, tree_node*, unsigned long)


It seems that somewhat a function named `build_string_literal` cannot be
found. Why is that? I have no idea how to proceed on this matter and cannot
find some proper documents. Any suggestion would be appreciated. Thank you!

Best,
Shuai

Reply via email to