LINUX.ORG.RU

или лыжи не едут..


0

0


..или я. дано: ELF32/ET_DYN, в котором есть таблица dynamic, в которой в свою очередь есть ссылка на таблицу символов aka DT_SYMTAB. вопрос: а как собственно определить размер этой таблицы :-? aka сколько в ней символов лежит? к примеру objdump это как-то определяет, но копать его исходники очень не хочется..

// wbr

[off]
> aka сколько в ней символов лежит?

aka -> i.e. или т.е.  А ака здесь имхо неуместно..
[/off]

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

> aka -> i.e. или т.е. А ака здесь имхо неуместно..

aka - это уже нечто на вроде неопределённого артикля "типа". расширились границы сознания.

ps: так сколько?

// wbr

klalafuda ★☆☆
() автор топика
Ответ на: комментарий от anonymous

> objdump и gdb это через общую библиотеку делают, можешь ее заюзать

BFD не подходит даже теоретически по множеству различных причин.

// wbr

klalafuda ★☆☆
() автор топика

objdump просто возвращает значение sh_size для секции, которое лежит в elf файле. Сама секция находится через смещение sh_off в заголовке elf. Если хочется извращений, можно парсить elf вручную, но libbfd это делает на ура.

Chumka ★★★
()
Ответ на: комментарий от Chumka

> objdump просто возвращает значение sh_size для секции, которое лежит в elf файле. Сама секция находится через смещение sh_off в заголовке elf. Если хочется извращений, можно парсить elf вручную, но libbfd это делает на ура.

да уж, похоже, что без таблицы секций не обойтись имея на руках лишь .dynamic. странно как-то: смещение таблицы символов есть, размер элемента таблицы то-же есть, а вот размера таблицы нет :-/

ps: btw objdump то-же не находит в стрипнутой библиотеке таблицы символов, в то время как readelf и динамический загрузчик находят.

// wbr

klalafuda ★☆☆
() автор топика
Ответ на: комментарий от klalafuda

$ objdump -t ./libgsqlengine_oracle.so.0.0.0

./libgsqlengine_oracle.so.0.0.0: file format elf32-i386

SYMBOL TABLE:
no symbols

$ objdump -T ./libgsqlengine_oracle.so.0.0.0

./libgsqlengine_oracle.so.0.0.0: file format elf32-i386

DYNAMIC SYMBOL TABLE:
00000000 DF *UND* 000000d8 gtk_frame_get_type
00000000 DF *UND* 000001de gtk_tree_store_append
00000000 DF *UND* 000005b2 OCIDateToText
00000000 DF *UND* 000000ae gtk_tree_view_row_expanded
00000000 DF *UND* 000000c5 gtk_tree_view_append_column
00000000 w DF *UND* 000000f5 GLIBC_2.1.3 __cxa_finalize
00000000 DF *UND* 00000086 gtk_table_new
00000000 DF *UND* 00000064 OCIStmtExecute
00000000 D *UND* 00000000 gsql_content_set_status
00000000 DF *UND* 00000065 g_return_if_fail_warning

... и т.д.

Deleted
()
Ответ на: комментарий от Deleted

это я к тому, что:
$ objdump --help
<skipped>
-t, --syms Display the contents of the symbol table(s)
-T, --dynamic-syms Display the contents of the dynamic symbol table
<skipped>

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.