diff --git a/generator/cper-generate.c b/generator/cper-generate.c
index 3322372..c8819f6 100644
--- a/generator/cper-generate.c
+++ b/generator/cper-generate.c
@@ -9,7 +9,7 @@
 #include <string.h>
 #include "../edk/Cper.h"
 #include "gen-utils.h"
-#include "sections/gen-sections.h"
+#include "sections/gen-section.h"
 #include "cper-generate.h"
 
 EFI_ERROR_SECTION_DESCRIPTOR *generate_section_descriptor(char *type,
@@ -150,83 +150,26 @@
 			descriptor->FruString[i] = 0x0;
 	}
 
-	//Set section type GUID based on type name.
-	if (strcmp(type, "generic") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiProcessorGenericErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "ia32x64") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiIa32X64ProcessorErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "ipf") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiIpfProcessorErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "arm") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiArmProcessorErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "memory") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiPlatformMemoryErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "memory2") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiPlatformMemoryError2SectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "pcie") == 0)
-		memcpy(&descriptor->SectionType, &gEfiPcieErrorSectionGuid,
-		       sizeof(EFI_GUID));
-	else if (strcmp(type, "firmware") == 0)
-		memcpy(&descriptor->SectionType, &gEfiFirmwareErrorSectionGuid,
-		       sizeof(EFI_GUID));
-	else if (strcmp(type, "pcibus") == 0)
-		memcpy(&descriptor->SectionType, &gEfiPciBusErrorSectionGuid,
-		       sizeof(EFI_GUID));
-	else if (strcmp(type, "pcidev") == 0)
-		memcpy(&descriptor->SectionType, &gEfiPciDevErrorSectionGuid,
-		       sizeof(EFI_GUID));
-	else if (strcmp(type, "dmargeneric") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiDMArGenericErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "dmarvtd") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiDirectedIoDMArErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "dmariommu") == 0)
-		memcpy(&descriptor->SectionType, &gEfiIommuDMArErrorSectionGuid,
-		       sizeof(EFI_GUID));
-	else if (strcmp(type, "ccixper") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiCcixPerLogErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "cxlprotocol") == 0)
-		memcpy(&descriptor->SectionType,
-		       &gEfiCxlProtocolErrorSectionGuid, sizeof(EFI_GUID));
-	else if (strcmp(type, "cxlcomponent") == 0) {
-		//Choose between the different CXL component type GUIDs.
-		int componentType = rand() % 5;
-		switch (componentType) {
-		case 0:
-			memcpy(&descriptor->SectionType,
-			       &gEfiCxlGeneralMediaErrorSectionGuid,
-			       sizeof(EFI_GUID));
-			break;
-		case 1:
-			memcpy(&descriptor->SectionType,
-			       &gEfiCxlDramEventErrorSectionGuid,
-			       sizeof(EFI_GUID));
-			break;
-		case 2:
-			memcpy(&descriptor->SectionType,
-			       &gEfiCxlPhysicalSwitchErrorSectionGuid,
-			       sizeof(EFI_GUID));
-			break;
-		case 3:
-			memcpy(&descriptor->SectionType,
-			       &gEfiCxlVirtualSwitchErrorSectionGuid,
-			       sizeof(EFI_GUID));
-			break;
-		default:
-			memcpy(&descriptor->SectionType,
-			       &gEfiCxlMldPortErrorSectionGuid,
-			       sizeof(EFI_GUID));
-			break;
+	//If section type is not "unknown", set section type GUID based on type name.
+	int section_guid_found = 0;
+	if (strcmp(type, "unknown") == 0) {
+		section_guid_found = 1;
+	} else {
+		//Find the appropriate GUID for this section name.
+		for (int i = 0; i < generator_definitions_len; i++) {
+			if (strcmp(type, generator_definitions[i].ShortName) ==
+			    0) {
+				memcpy(&descriptor->SectionType,
+				       generator_definitions[i].Guid,
+				       sizeof(EFI_GUID));
+				section_guid_found = 1;
+				break;
+			}
 		}
-	} else if (strcmp(type, "unknown") != 0) {
+	}
+
+	//Undefined section, show error.
+	if (!section_guid_found) {
 		//Undefined section, show error.
 		printf("Undefined section type '%s' provided. See 'cper-generate --help' for command information.\n",
 		       type);
@@ -242,43 +185,26 @@
 	//The length of the section.
 	size_t length = 0;
 
-	//Switch on the type, generate accordingly.
-	if (strcmp(type, "generic") == 0)
-		length = generate_section_generic(location);
-	else if (strcmp(type, "ia32x64") == 0)
-		length = generate_section_ia32x64(location);
-	// else if (strcmp(type, "ipf") == 0)
-	//     length = generate_section_ipf(location);
-	else if (strcmp(type, "arm") == 0)
-		length = generate_section_arm(location);
-	else if (strcmp(type, "memory") == 0)
-		length = generate_section_memory(location);
-	else if (strcmp(type, "memory2") == 0)
-		length = generate_section_memory2(location);
-	else if (strcmp(type, "pcie") == 0)
-		length = generate_section_pcie(location);
-	else if (strcmp(type, "firmware") == 0)
-		length = generate_section_firmware(location);
-	else if (strcmp(type, "pcibus") == 0)
-		length = generate_section_pci_bus(location);
-	else if (strcmp(type, "pcidev") == 0)
-		length = generate_section_pci_dev(location);
-	else if (strcmp(type, "dmargeneric") == 0)
-		length = generate_section_dmar_generic(location);
-	else if (strcmp(type, "dmarvtd") == 0)
-		length = generate_section_dmar_vtd(location);
-	else if (strcmp(type, "dmariommu") == 0)
-		length = generate_section_dmar_iommu(location);
-	else if (strcmp(type, "ccixper") == 0)
-		length = generate_section_ccix_per(location);
-	else if (strcmp(type, "cxlprotocol") == 0)
-		length = generate_section_cxl_protocol(location);
-	else if (strcmp(type, "cxlcomponent") == 0)
-		length = generate_section_cxl_component(location);
-	else if (strcmp(type, "unknown") == 0)
+	//If the section name is "unknown", simply generate a random bytes section.
+	int section_generated = 0;
+	if (strcmp(type, "unknown") == 0) {
 		length = generate_random_section(location, rand() % 256);
-	else {
-		//Undefined section, show error.
+		section_generated = 1;
+	} else {
+		//Function defined section, switch on the type, generate accordingly.
+		for (int i = 0; i < generator_definitions_len; i++) {
+			if (strcmp(type, generator_definitions[i].ShortName) ==
+			    0) {
+				length = generator_definitions[i].Generate(
+					location);
+				section_generated = 1;
+				break;
+			}
+		}
+	}
+
+	//If we didn't find a section generator for the given name, error out.
+	if (!section_generated) {
 		printf("Undefined section type '%s' given to generate. See 'cper-generate --help' for command information.\n",
 		       type);
 		return 0;
diff --git a/generator/sections/gen-section-arm.c b/generator/sections/gen-section-arm.c
index 040ad24..7ec94a7 100644
--- a/generator/sections/gen-section-arm.c
+++ b/generator/sections/gen-section-arm.c
@@ -8,7 +8,7 @@
 #include <string.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 #define ARM_ERROR_INFO_SIZE 32
 
 void* generate_arm_error_info();
diff --git a/generator/sections/gen-section-ccix-per.c b/generator/sections/gen-section-ccix-per.c
index 72bc1e0..c820d72 100644
--- a/generator/sections/gen-section-ccix-per.c
+++ b/generator/sections/gen-section-ccix-per.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random CCIX PER error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-cxl-component.c b/generator/sections/gen-section-cxl-component.c
index 2b8d18a..5fb6789 100644
--- a/generator/sections/gen-section-cxl-component.c
+++ b/generator/sections/gen-section-cxl-component.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random CXL component error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-cxl-protocol.c b/generator/sections/gen-section-cxl-protocol.c
index 3ff6fbb..71a1105 100644
--- a/generator/sections/gen-section-cxl-protocol.c
+++ b/generator/sections/gen-section-cxl-protocol.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random CXL protocol error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-dmar.c b/generator/sections/gen-section-dmar.c
index 91da101..66cc70a 100644
--- a/generator/sections/gen-section-dmar.c
+++ b/generator/sections/gen-section-dmar.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random generic DMAr error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-firmware.c b/generator/sections/gen-section-firmware.c
index 7b47e54..7ba93ee 100644
--- a/generator/sections/gen-section-firmware.c
+++ b/generator/sections/gen-section-firmware.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random firmware error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-generic.c b/generator/sections/gen-section-generic.c
index 618f9b3..e9a2ea0 100644
--- a/generator/sections/gen-section-generic.c
+++ b/generator/sections/gen-section-generic.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random generic processor section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-ia32x64.c b/generator/sections/gen-section-ia32x64.c
index a78bfcb..a01d2b7 100644
--- a/generator/sections/gen-section-ia32x64.c
+++ b/generator/sections/gen-section-ia32x64.c
@@ -8,7 +8,7 @@
 #include <string.h>
 #include "../../edk/Cper.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 #define IA32X64_ERROR_STRUCTURE_SIZE 64
 
 void* generate_ia32x64_error_structure();
diff --git a/generator/sections/gen-section-memory.c b/generator/sections/gen-section-memory.c
index 63621da..9d405a4 100644
--- a/generator/sections/gen-section-memory.c
+++ b/generator/sections/gen-section-memory.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random platform memory error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-pci-bus.c b/generator/sections/gen-section-pci-bus.c
index dc2381d..1aee19a 100644
--- a/generator/sections/gen-section-pci-bus.c
+++ b/generator/sections/gen-section-pci-bus.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random PCI/PCI-X bus error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-pci-dev.c b/generator/sections/gen-section-pci-dev.c
index 7913b9a..339f98c 100644
--- a/generator/sections/gen-section-pci-dev.c
+++ b/generator/sections/gen-section-pci-dev.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 //Generates a single pseudo-random PCI component error section, saving the resulting address to the given
 //location. Returns the size of the newly created section.
diff --git a/generator/sections/gen-section-pcie.c b/generator/sections/gen-section-pcie.c
index cace516..aa1be6b 100644
--- a/generator/sections/gen-section-pcie.c
+++ b/generator/sections/gen-section-pcie.c
@@ -7,7 +7,7 @@
 #include <stdlib.h>
 #include "../../edk/BaseTypes.h"
 #include "../gen-utils.h"
-#include "gen-sections.h"
+#include "gen-section.h"
 
 #define PCIE_PORT_TYPES (int []){0, 1, 4, 5, 6, 7, 8, 9, 10}
 
diff --git a/generator/sections/gen-section.c b/generator/sections/gen-section.c
new file mode 100644
index 0000000..012f88f
--- /dev/null
+++ b/generator/sections/gen-section.c
@@ -0,0 +1,30 @@
+/**
+ * Describes available section generators to the CPER generator.
+ * 
+ * Author: Lawrence.Tang@arm.com
+ **/
+#include "gen-section.h"
+
+CPER_GENERATOR_DEFINITION generator_definitions[] = {
+    {&gEfiProcessorGenericErrorSectionGuid, "generic", generate_section_generic},
+    {&gEfiIa32X64ProcessorErrorSectionGuid, "ia32x64", generate_section_ia32x64},
+    {&gEfiArmProcessorErrorSectionGuid, "arm", generate_section_arm},
+    {&gEfiPlatformMemoryErrorSectionGuid, "memory", generate_section_memory},
+    {&gEfiPlatformMemoryError2SectionGuid, "memory2", generate_section_memory2},
+    {&gEfiPcieErrorSectionGuid, "pcie", generate_section_pcie},
+    {&gEfiFirmwareErrorSectionGuid, "firmware", generate_section_firmware},
+    {&gEfiPciBusErrorSectionGuid, "pcibus", generate_section_pci_bus},
+    {&gEfiPciDevErrorSectionGuid, "pcidev", generate_section_pci_dev},
+    {&gEfiDMArGenericErrorSectionGuid, "dmargeneric", generate_section_dmar_generic},
+    {&gEfiDirectedIoDMArErrorSectionGuid, "dmarvtd", generate_section_dmar_vtd},
+    {&gEfiIommuDMArErrorSectionGuid, "dmariommu", generate_section_dmar_iommu},
+    {&gEfiCcixPerLogErrorSectionGuid, "ccixper", generate_section_ccix_per},
+    {&gEfiCxlProtocolErrorSectionGuid, "cxlprotocol", generate_section_cxl_protocol},
+    {&gEfiCxlGeneralMediaErrorSectionGuid, "cxlcomponent-media", generate_section_cxl_component},
+    {&gEfiCxlDramEventErrorSectionGuid, "cxlcomponent-dram", generate_section_cxl_component},
+    {&gEfiCxlMemoryModuleErrorSectionGuid, "cxlcomponent-memory", generate_section_cxl_component},
+    {&gEfiCxlPhysicalSwitchErrorSectionGuid, "cxlcomponent-pswitch", generate_section_cxl_component},
+    {&gEfiCxlVirtualSwitchErrorSectionGuid, "cxlcomponent-vswitch", generate_section_cxl_component},
+    {&gEfiCxlMldPortErrorSectionGuid, "cxlcomponent-mld", generate_section_cxl_component},
+};
+const size_t generator_definitions_len = sizeof(generator_definitions) / sizeof(CPER_GENERATOR_DEFINITION);
\ No newline at end of file
diff --git a/generator/sections/gen-sections.h b/generator/sections/gen-section.h
similarity index 69%
rename from generator/sections/gen-sections.h
rename to generator/sections/gen-section.h
index 50f9350..ac0a024 100644
--- a/generator/sections/gen-sections.h
+++ b/generator/sections/gen-section.h
@@ -2,7 +2,9 @@
 #define GEN_SECTIONS_H
 
 #include <stdlib.h>
+#include "../../edk/Cper.h"
 
+//Section generator function predefinitions.
 size_t generate_section_generic(void** location);
 size_t generate_section_ia32x64(void** location);
 size_t generate_section_arm(void** location);
@@ -19,4 +21,14 @@
 size_t generate_section_cxl_protocol(void** location);
 size_t generate_section_cxl_component(void** location);
 
+//Definition structure for a single CPER section generator.
+typedef struct {
+    EFI_GUID* Guid;
+    const char* ShortName;
+    size_t (*Generate)(void**);
+} CPER_GENERATOR_DEFINITION;
+
+extern CPER_GENERATOR_DEFINITION generator_definitions[];
+extern const size_t generator_definitions_len;
+
 #endif
\ No newline at end of file
diff --git a/tests/ir-tests.cpp b/tests/ir-tests.cpp
index 1017e75..0c9dad8 100644
--- a/tests/ir-tests.cpp
+++ b/tests/ir-tests.cpp
@@ -265,11 +265,11 @@
 //CXL Component tests.
 TEST(CXLComponentTests, IRValid)
 {
-	cper_log_section_dual_ir_test("cxlcomponent");
+	cper_log_section_dual_ir_test("cxlcomponent-media");
 }
 TEST(CXLComponentTests, BinaryEqual)
 {
-	cper_log_section_dual_binary_test("cxlcomponent");
+	cper_log_section_dual_binary_test("cxlcomponent-media");
 }
 
 //Unknown section tests.
