[PATCH] D18591: [ELF] - Separate assignAddressesScript method

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 30 14:35:46 PDT 2016


grimar added inline comments.

================
Comment at: ELF/Writer.cpp:1413-1423
@@ +1412,13 @@
+
+    // We only assign VAs to allocated sections.
+    if (needsPtLoad<ELFT>(Sec)) {
+      VA = alignTo(VA, Align);
+      Sec->setVA(VA);
+      VA += Sec->getSize();
+    } else if (Sec->getFlags() & SHF_TLS && Sec->getType() == SHT_NOBITS) {
+      uintX_t TVA = VA + ThreadBssOffset;
+      TVA = alignTo(TVA, Align);
+      Sec->setVA(TVA);
+      ThreadBssOffset = TVA - VA + Sec->getSize();
+    }
+  }
----------------
ruiu wrote:
> This default behavior needs to be removed because all addresses are given by a linker script, no?
That abstract Script->getSectionVA(Sec->getName()) function we discussed earlier today not exist yet, no ?
So this logic like a stub now.

If we remove it now then all VA will be 0 ? Do you mean do that for now ?

================
Comment at: ELF/Writer.cpp:1430-1432
@@ +1429,5 @@
+
+  // Update "_end" and "end" symbols so that they
+  // point to the end of the data segment.
+  ElfSym<ELFT>::End.st_value = VA;
+
----------------
ruiu wrote:
> This is duplicate.
I know that is. Create one more method to move next code out ?

```
// Add space for section headers.
  SectionHeaderOff = alignTo(FileOff, sizeof(uintX_t));
  FileSize = SectionHeaderOff + getNumSections() * sizeof(Elf_Shdr);

  // Update "_end" and "end" symbols so that they
  // point to the end of the data segment.
  ElfSym<ELFT>::End.st_value = VA;
```

I did not moved it out to assignPhdrs() because assignPhdrs is not a good name for that IMO.


http://reviews.llvm.org/D18591





More information about the llvm-commits mailing list