From f68feb08c2d67410693159f4de7346faabce0620 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Wed, 21 Apr 2010 01:05:13 +0400 Subject: [PATCH] Elf-32: Implement segalign handling Via elf_segalign helper Signed-off-by: Cyrill Gorcunov --- output/outelf32.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/output/outelf32.c b/output/outelf32.c index 3e515b5..2179f6b 100644 --- a/output/outelf32.c +++ b/output/outelf32.c @@ -1305,6 +1305,24 @@ static void elf_sect_write(struct Section *sect, sect->len += len; } +static void elf_segalign(int32_t seg, int value) +{ + struct Section *s = NULL; + int i; + + for (i = 0; i < nsects; i++) { + if (sects[i]->index == seg) { + s = sects[i]; + break; + } + } + if (!s || !is_power2(value)) + return; + + if ((unsigned int)value > s->align) + s->align = value; +} + static int32_t elf_segbase(int32_t segment) { return segment; @@ -1401,7 +1419,7 @@ struct ofmt of_elf32 = { elf_out, elf_deflabel, elf_section_names, - null_segalign, + elf_segalign, elf_segbase, elf_directive, elf_filename, -- 2.7.4