Различная статическая библиотека, скомпилированная с флагом -ffunction-section - PullRequest
0 голосов
/ 04 июня 2018

Как отличить статическую библиотеку, скомпилированную с -ffunction-sections флагом компилятора?

Я хочу определить, какая-то конкретная .a библиотека может извлечь выгоду из -Wl,--gc-sections флага.

Если естьспособ перечисления всех имен разделов, тогда я могу применить | wc -l к нему и сделать вывод, что разделов слишком много и библиотека, вероятно, скомпилирована с упомянутыми флагами.

readelf -S просто печатает в архиве *.o имена файлов.

1 Ответ

0 голосов
/ 04 июня 2018

Простой взгляд на это:

# Collect function sections
$ readelf -S tmp.o | sed -ne 's/.*\] \.text.\([a-zA-Z0-9_]\+\) .*/\1/p' | sort -u > fun_sec.lst

# Collect function symbols
$ nm tmp.o | grep ' T ' | awk '{print $3}' | sort -u > fun_sym.lst

# Compare
$ COMM=$(comm -12 fun_sym.lst fun_sec.lst | wc -l)
$ UNIQ=$(comm -3 fun_sym.lst fun_sec.lst | wc -l)
$ if test $COMM -gt $UNIQ; then echo "tmp.o was likely compiled with -ffunction-sections"; fi
...