<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/54075>54075</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            huge binaries
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Jolyon0202
      </td>
    </tr>
</table>

<pre>
    # Description

I'm expecting objcopy to create a binary from the attached ELF like this:
llvm-objcopy test.elf -O binary test.bin

Running size tells me that the binary is 2.3GB big. It's Too Big. Is there any way to reduce size??

And I found that the reason of big size is that the section .vectors's and .startup's address (0xffff0000 and 0x70040000) is all filled.

And I am not sure that it's should be all filled. Or How could I reduce size (not modify the layout of sections)?


$ readelf -Sl test.elf
There are 35 section headers, starting at offset 0x45654:

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .vectors          PROGBITS        ffff0000 001000 000078 00  AX  0   0 256
  [ 2] .startup          PROGBITS        70040000 002000 00054a 00  AX  0   0 256
  [ 3] .text             PROGBITS        80000000 003000 001c94 00  AX  0   0 256
  [ 4] .ctors            NOBITS          80001c94 004c94 000000 00  AX  0   0  1
  [ 5] .dtors            NOBITS          80001c94 004c94 000000 00  AX  0   0  1
  [ 6] .api_text         PROGBITS        80001cc0 004cc0 00056c 00  AX  0   0  4
  [ 7] .rodata           PROGBITS        80002240 005240 000600 00 AMS  0   0  8
  [ 8] .stack_sizes      NOBITS          80002840 005840 000000 00  WA  0   0  4
  [ 9] .kernel_bss       NOBITS          80002840 005840 004950 00  WA  0   0  8
  [10] .tbss             PROGBITS        80007190 00a190 000000 00  WA  0   0  8
  [11] .sbss             NOBITS          80007190 00a190 000000 00  WA  0   0  8
  [12] .sbss2            PROGBITS        80007190 00a190 000000 00  WA  0   0  8
  [13] .kernel_data      PROGBITS        80007190 00a190 00008c 00  WA  0   0  4
  [14] .api_bss          NOBITS          80007240 00a21c 000000 00  WA  0   0  8
  [15] .api_data         NOBITS          80007240 00a21c 000000 00  WA  0   0  4
  [16] .app1_bss         PROGBITS        80007240 00a240 000000 00  WA  0   0  8
  [17] .app1_data        NOBITS          80007240 00a240 000000 00  WA  0   0  4
  [18] .bss_cpu0         NOBITS          80007240 00a240 000040 00  WA  0   0  8
  [19] .app1_stack       NOBITS          80007280 00a240 000404 00  WA  0   0  8
  [20] .cpu0.stack       NOBITS          800076c0 00a240 003400 00  WA  0   0 16
  [21] .ARM.attributes   ARM_ATTRIBUTES  00000000 00a240 000047 00      0   0  1
  [22] .debug_str        PROGBITS        00000000 00a287 005379 01  MS  0   0  1
  [23] .debug_loc        PROGBITS        00000000 00f600 004606 00      0   0  1
  [24] .debug_abbrev     PROGBITS        00000000 013c06 0036da 00      0   0  1
  [25] .debug_info       PROGBITS        00000000 0172e0 0180a5 00      0   0  1
  [26] .debug_macinfo    PROGBITS        00000000 02f385 00002a 00      0   0  1
  [27] .comment          PROGBITS        00000000 02f3af 000056 01  MS  0   0  1
  [28] .debug_line       PROGBITS        00000000 02f405 00f93a 00      0   0  1
  [29] .debug_frame      PROGBITS        00000000 03ed40 0012f4 00      0   0  4
  [30] .debug_ranges     PROGBITS        00000000 040034 000480 00      0   0  1
  [31] .debug_aranges    PROGBITS        00000000 0404b4 000088 00      0   0  1
  [32] .symtab           SYMTAB          00000000 04053c 002b60 10     34 398  4
  [33] .shstrtab         STRTAB          00000000 04309c 000164 00      0   0  1
  [34] .strtab           STRTAB          00000000 043200 002453 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

Elf file type is EXEC (Executable file)
Entry point 0xffff0000
There are 5 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x001000 0xffff0000 0xffff0000 0x00078 0x00078 R E 0x1000
  LOAD           0x002000 0x70040000 0x70040000 0x0054a 0x0054a R E 0x1000
  LOAD           0x003000 0x80000000 0x80000000 0x02840 0x02840 R E 0x1000
  LOAD           0x005840 0x80002840 0x80002840 0x04a00 0x04e44 RW  0x1000
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0

 Section to Segment mapping:
  Segment Sections...
   00     .vectors
   01     .startup
   02     .text .ctors .dtors .api_text .rodata
   03     .stack_sizes .kernel_bss .tbss .sbss .sbss2 .kernel_data .api_bss .api_data .app1_data .bss_cpu0 .app1_stack
   04

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1mF1z2jgUhn8N3GjK-Bv7ggvSkjTbJHQC3XavMrItgxtjsZLdwP76PfqwLZPgsDu7DCDryH50dKwj63VM0-Ns5LjoE-EJy_dVTsuR9WlkzdX_7ciZ7hA57ElS5eUG0fhnQvdHVFGUMIIrgjCK8xKzI8oY3aFqC5aqwsmWpGhxd42K_JmANecjVyOL4tfuQ8shvJqQIkMflg1HmuDYdOOxLkvRPc__AhopCo52Aosr2aO-MufImbg3V1DfTNBtBb5ztKYUXck6F-cy8K88ohcsx8BIWidEYkfutfganc7LFN2ijNZQtl3BoDktEc1EJ8qfnHfNXMQJ2ie_4IAyLl3AAJjwCrOq3itDmjLCORo5oXXI4GPBR55mHaaW5YnqyIkEGRcFyvKiIOnktW94h0paIV4zHYxcjZlvaV2kKCbm5WjJ0Gf6ghLZdmuOXTgiQDua5tlRDqTAR1pXYpx6SDCU6CRA-t_xRFRSeRdXRXtLVetahRx-rt9GZytOF8H5iGRYxK3ForOMkwpi4PmB77UTRv2v9LWf9bVNK0Ij_-qBjfxP6AHDpOh91sd9zzKHwMuDZZaJYiUGj9Biha6LDbp7RrdlhuaFQUaWIL_-PHy7uzPrlv6g00I3q59lkm1BbiZKR_r6uLy5ul2vmno7PyzLbsjTUJLnPxqy4wcm2pFoPeXOo5u5BjBHo30PD6Ndia7IoerF4xQddvFwtfNJ5A2jPYk-CQeEemmCFVrDPFW0oe7QEF2D7Ety-j-QA0nG-_ypF5K3wmEniSXJiYp0kJySPZM8lWRGU1zhdwLtOJ5A-qqwAuXz_H7VkkOTHDazI3l-EunPz0fDCRVZFW00vs_f9jmS5GfCSlI8xbwJ9vtkL_JfkU2fbUtNu455PhpTOxIsrIq3fO6RVRryU_JbPv9DstOSnf_YZ9eMczdBLiGHydAdtL12PvcC8mY01HTDjp1c4rPfknsz-t-Rez43Obi3e06_GY2GfHY-93yedmTT6UGfL8oUW-UguPuU7Gvrsmhosjfsc9T5LFN8kByaZM_yhsiOykHh7-RdcpAYZNd7FQ3bXPkdlYPzx_sJbB5ZHteVXJTA8DRfrx9vr76tF6veQ7aLxvT0IWuuz47KwZTE9QbCwc7NjR45FEjfnUbIshEyVtEe2TXIBU0uIGdqYfYCKxj02TPIOI4Z-fUO2XYTiXSDFA-SfYOclxl912d76hBRhBb2B8mBQd7hpIGfJzuZG_qy7gz7rHIwobsdKY09xyAZZ7LuB4N3MDTvYF6SC8ieJXzOInfY58ggZ6zdlp4nuySV89mGLk7J5rrhWgaZ4XKjH97nyZ5IP5nd4avtqOmza5uzrkMPkb1Y7ZHCcJCsn4PHXYXj7gai1R_36_lVVzfJvitWficOYKVQZBiEG4Un0VA5yLeQ2SZ7tX48R3atSD5T7OBVnHs-e3qPxE58HiA7aiPt-e4Z8hciRed1gTemfvku5NcLyysiJBZoorkwgHKjiTb8EAZyIEndnnMvTDvCNo1hJQzgL2gpKdU0_FaYRTbq0-5EHSb7M6IMdJS23gjrhlGhT6VhLQzru5WuLpQDSVGnTX8HYarL55K-lEZ_S3VmxTBartCe0QSErtB3jPxZ56A5ha6l4iRo5nuS5FneDHMvzPoSynqthhBcgM4ESQuKV4g7kMiLH4uP4sqFDBCOoUm0t5ctyood0Z7mpdCWjZw6lae-cHYDufqOOvUd05mv-prXqvREei7V1Qj9nrNKy9Cv2yPXh9fgMIhRdE92opBydF7km7LB3S3npgy1Do0a7N4f9A4tJRJ1-Qh30DrY7bDf5CkJeOhEoXmolaEuL-Ip3XfolKB5qPf_uryIp6TCoRMP5qHlYcX1iOehx-_ohHfz8O1ptZ5__NLxukidO2xLyTPvO2peR0A-r8hGPpp2sOeCuWLMgaZFn8wnk0nT1CwR7Yui1m4re_O-qLUrDaGUtxbJWtF28lPLxe4it4W1Ws-UZ0pQKfGjhUpPVbRCoNu3G7vhbvtqbDe7vvVKPU5nbhq5ER5XeVWQ2bbe6Dd2OeHjmhWzbVXtZeo41_Dd5NW2jsUDHyriZaEuPkB-_oRgQTXnvCaQoNe-Z0398XYW-y5JXNuOkyQIwyQIcEJSO3J9G-RPHLrjAsek4DNY2UeOU5IXJBEjuT0c5zMHJDR8fStyYK8zcSG3Ut_GYTINvSizR55FdjgvJsKPCWWbMZtJl-BZyaGxyHnFu0YMK96mJER2B3xcV1vKZr_R4khLSDNnLHufSe__BmLyYNg">