aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Glöckner <daniel-gl@gmx.net>2010-05-15 01:26:56 +0200
committerDaniel Glöckner <daniel-gl@gmx.net>2010-05-15 01:26:56 +0200
commita867f4259774eb55ac3c34a83df5cc705c266295 (patch)
treea46b83569aa9c1afeaf121ac1e6c70989534f180
parent128e46f91bc07a1c609726c3a79b9546572573cd (diff)
downloadtinycc-a867f4259774eb55ac3c34a83df5cc705c266295.tar.gz
tinycc-a867f4259774eb55ac3c34a83df5cc705c266295.tar.bz2
don't discard SHT_((PRE)INIT|FINI)_ARRAY sections
-rw-r--r--elf.h7
-rw-r--r--tccelf.c3
2 files changed, 9 insertions, 1 deletions
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;