Могу ли я изменить всю базу изображений двоичного файла?(НКА) - PullRequest
0 голосов
/ 30 января 2019

Я хочу сделать основание изображения из двоичного файла равным 0x09000000.
Однако по умолчанию основание изображения составляет 0x08000000.

Я знаю такую ​​опцию, как
gcc -Wl, - section-start = .text = 0x09000000 ...

Но результат приведенной выше командыкак показано ниже.
(некоторые разделы по-прежнему отображаются по адресу 0x080*****).

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        09000000 001000 002f92 00  AX  0   0 16
  [ 2] .interp           PROGBITS        08048154 000154 000013 00   A  0   0  1
  [ 3] .note.ABI-tag     NOTE            08048168 000168 000020 00   A  0   0  4
  [ 4] .hash             HASH            08048188 000188 00002c 04   A  5   0  4
  [ 5] .dynsym           DYNSYM          080481b4 0001b4 000060 10   A  6   1  4
  [ 6] .dynstr           STRTAB          08048214 000214 000056 00   A  0   0  1
  [ 7] .gnu.version      VERSYM          0804826a 00026a 00000c 02   A  5   0  2
  [ 8] .gnu.version_r    VERNEED         08048278 000278 000020 00   A  6   1  4
  [ 9] .rel.dyn          REL             08048298 000298 000008 08   A  5   0  4
  [10] .rel.plt          REL             080482a0 0002a0 000018 08  AI  5  23  4
  [11] .init             PROGBITS        080482b8 0002b8 000023 00  AX  0   0  4
  [12] .plt              PROGBITS        080482e0 0002e0 000040 04  AX  0   0 16
  [13] .plt.got          PROGBITS        08048320 000320 000008 00  AX  0   0  8
  [14] .fini             PROGBITS        09002f94 003f94 000014 00  AX  0   0  4
  [15] .rodata           PROGBITS        09002fb0 003fb0 000023 00   A  0   0 16
  [16] .eh_frame_hdr     PROGBITS        09002fd4 003fd4 000024 00   A  0   0  4
  [17] .eh_frame         PROGBITS        09002ff8 003ff8 0000a0 00   A  0   0  4
  [18] .init_array       INIT_ARRAY      09004098 004098 000010 00  WA  0   0  4
  [19] .fini_array       FINI_ARRAY      090040a8 0040a8 000008 00  WA  0   0  4
  [20] .jcr              PROGBITS        090040b0 0040b0 000004 00  WA  0   0  4
  [21] .dynamic          DYNAMIC         090040b4 0040b4 0000e8 08  WA  6   0  4
  [22] .got              PROGBITS        0900419c 00419c 000004 04  WA  0   0  4
  [23] .got.plt          PROGBITS        090041a0 0041a0 000018 04  WA  0   0  4
  [24] .data             PROGBITS        090041c0 0041c0 000084 00  WA  0   0 32
  [25] .bss              NOBITS          09004250 004244 0000d8 00  WA  0   0 16

Вопрос1.

Я хочучтобы переместить основную часть изображения в двоичном формате в 0x09000000,
... Я хочу переместить целые разделы в original starting address + 0x01000000
Но вышеупомянутая опция может изменить только раздел .text.

Есть ли какая-нибудь опция компиляции, которую я могу использовать?


Вопрос2.

На самом деле, как вы можете видеть вышеупомянутый результат,
" -Wl, - section-start = .text = 0x09000000"опция не только изменяет .text раздел,
, но также изменяет некоторые относящиеся к данным разделы, такие как .init_array , .got , ...

Почему компилятор делает эту странную вещь?

...