NASM - The Netwide Assembler
NASM Forum => Programming with NASM => Topic started by: AntonPotapov on April 27, 2023, 03:31:58 PM
-
ELF_i386 !!!
How do I align segments in the output elf file?
gcc aligns segments to 64 bytes
ld aligns to 4096 bytes.
I found this out by looking at the output program header (p_align)
https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
https://refspecs.linuxbase.org/elf/elf.pdf
I know that a good alignment improves the speed of the program. I don't know elf files that well. But how can I align segments on my own?
ld --help. I found parameters that remove the alignment:
-n, --nmagic Do not page align data
-N, --omagic Do not page align data, do not make text readonly
It also contains, but different elf formats (not elf_i386).
--file-alignment <size> Set file alignment
--section-alignment <size> Set section alignment
My usual linking
#/bin/bash
ld -m elf_i386 -o main main.o
remove alignment
#/bin/bash
ld -m elf_i386 -n -o main main.o
-
You didn't read a line about what I wrote about sections attributes, did ya?
-
You didn't read a line about what I wrote about sections attributes, did ya?
I have read about align and section types.
let's say I have a .text section that just ends the program with "1".
I can force align. but this will not affect it, only align more than the alignment specified in p_align
For example let's take the gcc linker where align=64, I can specify 2, 4, ... 32, but this will have no effect on the alignment of the sections, only if I don't specify more than 64 it makes the program much bigger
here's a little code:
section .text align=4096
global main
main:
. . .
ret