The ACPI .aslc files contain a ReferenceAcpiTable() function whose
sole purpose is to ensure that the table itself does not get optimized
away. However, when using clang, these dummy functions result in a 4 KB
section alignment requirement, which is silly since everything except
the .data section is discarded later anyway.
So instead, make ReferenceAcpiTable a CONST pointer to VOID*. This way,
we still have a .text section, which is mandatory for the PE/COFF
conversion, but no executable code with small model relocations that
impose additional alignment requirements.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Tested-by: Leif Lindholm <leif.lindholm@linaro.org>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18194
6f19259b-4bc3-4df7-8a09-
765794883524
EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved1[23]\r
};\r
\r
-VOID*\r
-ReferenceAcpiTable (\r
- VOID\r
- )\r
-{\r
- //\r
- // Reference the table being generated to prevent the optimizer from removing the\r
- // data structure from the executable\r
- //\r
- return (VOID*)&Facs;\r
-}\r
+//\r
+// Reference the table being generated to prevent the optimizer from removing the\r
+// data structure from the executable\r
+//\r
+VOID* CONST ReferenceAcpiTable = &Facs;\r
NULL_GAS // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg\r
};\r
\r
-VOID*\r
-ReferenceAcpiTable (\r
- VOID\r
- )\r
-{\r
- //\r
- // Reference the table being generated to prevent the optimizer from removing the\r
- // data structure from the executable\r
- //\r
- return (VOID*)&Fadt;\r
-}\r
+//\r
+// Reference the table being generated to prevent the optimizer from removing the\r
+// data structure from the executable\r
+//\r
+VOID* CONST ReferenceAcpiTable = &Fadt;\r
};\r
#endif\r
\r
-VOID*\r
-ReferenceAcpiTable (\r
- VOID\r
- )\r
-{\r
- //\r
- // Reference the table being generated to prevent the optimizer from removing the\r
- // data structure from the exeutable\r
- //\r
- return (VOID*)&Gtdt;\r
-}\r
+//\r
+// Reference the table being generated to prevent the optimizer from removing the\r
+// data structure from the executable\r
+//\r
+VOID* CONST ReferenceAcpiTable = &Gtdt;\r
};\r
#endif\r
\r
-VOID*\r
-ReferenceAcpiTable (\r
- VOID\r
- )\r
-{\r
- //\r
- // Reference the table being generated to prevent the optimizer from removing the\r
- // data structure from the executable\r
- //\r
- return (VOID*)&Madt;\r
-}\r
+//\r
+// Reference the table being generated to prevent the optimizer from removing the\r
+// data structure from the executable\r
+//\r
+VOID* CONST ReferenceAcpiTable = &Madt;\r