*(.text)
*(.text.*)
*(.gnu.linkonce.t.*)
- *(.srodata)
- *(.rodata*)
- . = ALIGN(16);
- _etext = .;
+ _evtext = .;
+ . = ALIGN(4096);
}
- .dynamic : { *(.dynamic) }
+ _etext = .;
+ _text_size = . - _text;
+ _text_vsize = _evtext - _text;
+
+ . = ALIGN(4096);
.data :
{
_data = .;
*(.got.plt)
*(.got)
+ *(.dynamic)
+
/* the EFI loader doesn't seem to like a .bss section, so we stick
it all into .data: */
. = ALIGN(16);
*(.dynbss)
*(.bss)
*(COMMON)
- . = ALIGN(16);
+ _evdata = .;
+ . = ALIGN(4096);
_bss_end = .;
}
- .note.gnu.build-id : { *(.note.gnu.build-id) }
+ _edata = .;
+ _data_vsize = _evdata - _data;
+ _data_size = . - _data;
+ /*
+ * Note that _sbat must be the beginning of the data, and _esbat must be the
+ * end and must be before any section padding. The sbat self-check uses
+ * _esbat to find the bounds of the data, and if the padding is included, the
+ * CSV parser (correctly) rejects the data as having NUL values in one of the
+ * required columns.
+ */
. = ALIGN(4096);
- .vendor_cert :
+ .sbat :
{
- *(.vendor_cert)
+ _sbat = .;
+ *(.sbat)
+ *(.sbat.*)
+ _esbat = .;
+ . = ALIGN(4096);
+ _epsbat = .;
}
- . = ALIGN(4096);
-
- .rela.dyn : { *(.rela.dyn) }
- .rela.plt : { *(.rela.plt) }
- .rela.got : { *(.rela.got) }
- .rela.data : { *(.rela.data) *(.rela.data*) }
- _edata = .;
- _data_size = . - _data;
+ _sbat_size = _epsbat - _sbat;
+ _sbat_vsize = _esbat - _sbat;
. = ALIGN(4096);
- .dynsym : { *(.dynsym) }
+ .rodata :
+ {
+ _rodata = .;
+ *(.rodata*)
+ *(.srodata)
+ . = ALIGN(16);
+ *(.note.gnu.build-id)
+ . = ALIGN(4096);
+ *(.vendor_cert)
+ *(.data.ident)
+ . = ALIGN(4096);
+ }
. = ALIGN(4096);
- .dynstr : { *(.dynstr) }
+ .rela :
+ {
+ *(.rela.dyn)
+ *(.rela.plt)
+ *(.rela.got)
+ *(.rela.data)
+ *(.rela.data*)
+ }
. = ALIGN(4096);
+ .dyn :
+ {
+ *(.dynsym)
+ *(.dynstr)
+ _evrodata = .;
+ . = ALIGN(4096);
+ }
+ _erodata = .;
+ _rodata_size = . - _rodata;
+ _rodata_vsize = _evrodata - _rodata;
+ _alldata_size = . - _data;
+
/DISCARD/ :
{
*(.rel.reloc)