From a867f4259774eb55ac3c34a83df5cc705c266295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gl=C3=B6ckner?= Date: Sat, 15 May 2010 01:26:56 +0200 Subject: [PATCH] don't discard SHT_((PRE)INIT|FINI)_ARRAY sections --- elf.h | 7 ++++++- tccelf.c | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/elf.h b/elf.h index d6b1c6a..ebb9a8b 100644 --- a/elf.h +++ b/elf.h @@ -318,7 +318,12 @@ typedef struct #define SHT_REL 9 /* Relocation entries, no addends */ #define SHT_SHLIB 10 /* Reserved */ #define SHT_DYNSYM 11 /* Dynamic linker symbol table */ -#define SHT_NUM 12 /* Number of defined types. */ +#define SHT_INIT_ARRAY 14 /* Array of constructors */ +#define SHT_FINI_ARRAY 15 /* Array of destructors */ +#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ +#define SHT_GROUP 17 /* Section group */ +#define SHT_SYMTAB_SHNDX 18 /* Extended section indices */ +#define SHT_NUM 19 /* Number of defined types. */ #define SHT_LOOS 0x60000000 /* Start OS-specific */ #define SHT_LOSUNW 0x6ffffffb /* Sun-specific low bound. */ #define SHT_SUNW_COMDAT 0x6ffffffb diff --git a/tccelf.c b/tccelf.c index 526c513..fb5f3f9 100644 --- a/tccelf.c +++ b/tccelf.c @@ -2321,6 +2321,9 @@ ST_FUNC int tcc_load_object_file(TCCState *s1, sh->sh_type != SHT_ARM_EXIDX && #endif sh->sh_type != SHT_NOBITS && + sh->sh_type != SHT_PREINIT_ARRAY && + sh->sh_type != SHT_INIT_ARRAY && + sh->sh_type != SHT_FINI_ARRAY && strcmp(sh_name, ".stabstr") ) continue;