The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Изменить размер сегмента данных объектного файла"
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "Изменить размер сегмента данных объектного файла" +1 +/
Сообщение от skb7 (ok), 10-Ноя-14, 03:38 
> Подскажите , а как с помощью этого ключа правильно определить смещение сегмента
> данных чтобы задать в pad-to
>
 
> --gap-fill val --pad-to val
>

Вкратце посмотрел -- кажется действительно через objdump не выйдет изменить размер секции. Через ld, как предложил pavlinux, можно попробовать, но на выходе линкер дает бинарь, а не объектник, а вам надо объектник, как я понимаю (в качестве примера скрипта линкера можно юзать например /usr/lib/ldscripts/elf_x86_64.x).

Есть другая идея -- дизасемблировать (через objdump) объектник в ассемблерный код и там изменить размер секции data, после чего скомпилировать асм в объектник. Проблема только в том, как дезасемблировать в такой код, который поймет gcc.

Вот пример:

1. Компилируем main.c в асм (main.s):


$ gcc -S main.c -o main.S

2. Меняем в main.S размеры переменных (например) в секции .data:


    .data
    .align 64
    .type    x, @object
    .size    x, 64
x:
    .long    10
    .align 64
    .type    y, @object
    .size    y, 64
y:
    .long    11
    .align 64
    .type    z, @object
    .size    z, 64
z:
    .long    12

т.е. align и size были 4 байта, я сделал 64 (первое что в голову пришло).

3. Компилируем асм в объектник:


$ gcc -c main.S

Получаем объектник с измененной секцией ".data".
В этой цепочке я изменял асм полученный из сырца, а не из объектника. Ваша задача понять, как получить из объектника такой асм файл, чтобы он мог быть скомпилирован обратно в объектник. Остальная процедура будет такая же, как у меня.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Изменить размер сегмента данных объектного файла, CROSP, 08-Ноя-14, 00:19  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру