[PATCH] D23538: [ELF] Allow specifying the stack size

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 16 13:35:22 PDT 2016


ruiu accepted this revision.
ruiu added a comment.
This revision is now accepted and ready to land.

LGTM with nits.


================
Comment at: ELF/Config.h:117
@@ -116,2 +116,3 @@
   bool ZRelro;
+  uint64_t ZStackSize = -1;
   UnresolvedPolicy UnresolvedSymbols;
----------------
Sort.

================
Comment at: ELF/Driver.cpp:260
@@ +259,3 @@
+static Optional<StringRef>
+hasZOptionValue(opt::InputArgList &Args, StringRef Key) {
+  for (auto *Arg : Args.filtered(OPT_z)) {
----------------
`getZOptionValue` would be a better name because this function returns a value.

================
Comment at: ELF/Driver.cpp:264-265
@@ +263,4 @@
+    size_t Pos = Value.find("=");
+    if (Pos != StringRef::npos) {
+      if (Key == Value.substr(0, Pos))
+        return Value.substr(Pos + 1);
----------------
You can merge the two `if`s.

================
Comment at: ELF/Driver.cpp:413
@@ -399,1 +412,3 @@
 
+  if (Optional<StringRef> Value = hasZOptionValue(Args, "stack-size")) {
+    if (Value->getAsInteger(0, Config->ZStackSize))
----------------
Nit: remove {}.

================
Comment at: test/ELF/zstack-size.s:11-47
@@ +10,39 @@
+# CHECK:      ProgramHeaders [
+# CHECK-NEXT:   ProgramHeader {
+# CHECK-NEXT:     Type: PT_PHDR (0x6)
+# CHECK-NEXT:     Offset: 0x40
+# CHECK-NEXT:     VirtualAddress: 0x10040
+# CHECK-NEXT:     PhysicalAddress: 0x10040
+# CHECK-NEXT:     FileSize: 224
+# CHECK-NEXT:     MemSize: 224
+# CHECK-NEXT:     Flags [ (0x4)
+# CHECK-NEXT:       PF_R (0x4)
+# CHECK-NEXT:     ]
+# CHECK-NEXT:     Alignment: 8
+# CHECK-NEXT:   }
+# CHECK-NEXT:   ProgramHeader {
+# CHECK-NEXT:     Type: PT_LOAD (0x1)
+# CHECK-NEXT:     Offset: 0x0
+# CHECK-NEXT:     VirtualAddress: 0x10000
+# CHECK-NEXT:     PhysicalAddress: 0x10000
+# CHECK-NEXT:     FileSize: 288
+# CHECK-NEXT:     MemSize: 288
+# CHECK-NEXT:     Flags [ (0x4)
+# CHECK-NEXT:       PF_R (0x4)
+# CHECK-NEXT:     ]
+# CHECK-NEXT:     Alignment: 4096
+# CHECK-NEXT:   }
+# CHECK-NEXT:   ProgramHeader {
+# CHECK-NEXT:     Type: PT_LOAD (0x1)
+# CHECK-NEXT:     Offset: 0x1000
+# CHECK-NEXT:     VirtualAddress: 0x11000
+# CHECK-NEXT:     PhysicalAddress: 0x11000
+# CHECK-NEXT:     FileSize: 1
+# CHECK-NEXT:     MemSize: 1
+# CHECK-NEXT:     Flags [ (0x5)
+# CHECK-NEXT:       PF_R (0x4)
+# CHECK-NEXT:       PF_X (0x1)
+# CHECK-NEXT:     ]
+# CHECK-NEXT:     Alignment: 4096
+# CHECK-NEXT:   }
+# CHECK-NEXT:   ProgramHeader {
----------------
These program headers are not relevant, so please remove.


https://reviews.llvm.org/D23538





More information about the llvm-commits mailing list