1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
--- dmd2/src/druntime/posix.mak.orig 2011-06-25 02:39:28.000000000 +0200
+++ dmd2/src/druntime/posix.mak 2011-07-22 17:42:40.570533111 +0200
@@ -518,7 +518,7 @@ $(OBJDIR)/errno_c.o : src/core/stdc/errn
$(OBJDIR)/threadasm.o : src/core/threadasm.S
@mkdir -p $(OBJDIR)
- $(CC) -c $(CFLAGS) $< -o$@
+ $(CC) -Wa,-noexecstack -c $(CFLAGS) $< -o$@
################### Library generation #########################
--- dmd2/src/dmd/backend/elfobj.c.orig 2011-07-27 02:34:47.270542457 +0200
+++ dmd2/src/dmd/backend/elfobj.c 2011-07-27 02:37:47.290542532 +0200
@@ -652,7 +652,7 @@
if (I64)
{
static char section_names_init64[] =
- "\0.symtab\0.strtab\0.shstrtab\0.text\0.data\0.bss\0.note\0.comment\0.rodata\0.rela.text\0.rela.data";
+ "\0.symtab\0.strtab\0.shstrtab\0.text\0.data\0.bss\0.note\0.comment\0.rodata\0.note.GNU-stack\0.rela.text\0.rela.data";
#define NAMIDX_NONE 0
#define NAMIDX_SYMTAB 1 // .symtab
#define NAMIDX_STRTAB 9 // .strtab
@@ -663,9 +663,10 @@
#define NAMIDX_NOTE 44 // .note
#define NAMIDX_COMMENT 50 // .comment
#define NAMIDX_RODATA 59 // .rodata
- #define NAMIDX_RELTEXT 67 // .rel.text and .rela.text
- #define NAMIDX_RELDATA 77 // .rel.data
- #define NAMIDX_RELDATA64 78 // .rela.data
+ #define NAMIDX_GNUSTACK 67 // .note.GNU-stack
+ #define NAMIDX_RELTEXT 83 // .rel.text and .rela.text
+ #define NAMIDX_RELDATA 93 // .rel.data
+ #define NAMIDX_RELDATA64 94 // .rela.data
if (section_names)
section_names->setsize(sizeof(section_names_init64));
@@ -692,6 +693,7 @@
elf_newsection2(NAMIDX_SHSTRTAB,SHT_STRTAB, 0, 0,0,0,0,0, 1,0);
elf_newsection2(NAMIDX_COMMENT, SHT_PROGDEF,0, 0,0,0,0,0, 1,0);
elf_newsection2(NAMIDX_NOTE,SHT_NOTE, 0, 0,0,0,0,0, 1,0);
+ elf_newsection2(NAMIDX_GNUSTACK,SHT_PROGDEF,0, 0,0,0,0,0, 1,0);
IDXSTR namidx;
namidx = NAMIDX_TEXT; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
@@ -705,11 +707,12 @@
namidx = NAMIDX_SHSTRTAB; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
namidx = NAMIDX_COMMENT; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
namidx = NAMIDX_NOTE; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
+ namidx = NAMIDX_GNUSTACK; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
}
else
{
static char section_names_init[] =
- "\0.symtab\0.strtab\0.shstrtab\0.text\0.data\0.bss\0.note\0.comment\0.rodata\0.rel.text\0.rel.data";
+ "\0.symtab\0.strtab\0.shstrtab\0.text\0.data\0.bss\0.note\0.comment\0.rodata\0.note.GNU-stack\0.rel.text\0.rel.data";
if (section_names)
section_names->setsize(sizeof(section_names_init));
@@ -736,6 +739,7 @@
elf_newsection2(NAMIDX_SHSTRTAB,SHT_STRTAB, 0, 0,0,0,0,0, 1,0);
elf_newsection2(NAMIDX_COMMENT, SHT_PROGDEF,0, 0,0,0,0,0, 1,0);
elf_newsection2(NAMIDX_NOTE,SHT_NOTE, 0, 0,0,0,0,0, 1,0);
+ elf_newsection2(NAMIDX_GNUSTACK,SHT_PROGDEF,0, 0,0,0,0,0, 1,0);
IDXSTR namidx;
namidx = NAMIDX_TEXT; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
@@ -749,6 +753,7 @@
namidx = NAMIDX_SHSTRTAB; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
namidx = NAMIDX_COMMENT; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
namidx = NAMIDX_NOTE; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
+ namidx = NAMIDX_GNUSTACK; *(IDXSTR *)section_names_hashtable->get(&namidx) = namidx;
}
if (SYMbuf)
|