<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">delloem: Fix the unalign bug in arm64

For computers using the arm64 of the Apple chip, the link requires strict
alignment of pointers in 32-bit form. Replace the struct vFlashstr to valstr.
Replace the Function get_vFlash_compcode_str to val2str.

https://github.com/ipmitool/ipmitool/commit/206dba615d740a31e881861c86bcc8daafd9d5b1
--- include/ipmitool/ipmi_delloem.h.orig
+++ include/ipmitool/ipmi_delloem.h
@@ -343,10 +343,6 @@ typedef struct _power_headroom
     uint16_t peakheadroom;
 } __attribute__ ((packed)) POWER_HEADROOM;
 
-struct vFlashstr {
-	uint8_t val;
-	const char * str;
-};
 typedef struct ipmi_vFlash_extended_info
 {
 	uint8_t  vflashcompcode;
--- lib/ipmi_delloem.c.orig
+++ lib/ipmi_delloem.c
@@ -115,7 +115,7 @@ char NIC_Selection_Mode_String_12g[] [50] = {
 	"shared with failover all loms"
 };
 
-const struct vFlashstr vFlash_completion_code_vals[] = {
+const struct valstr vFlash_completion_code_vals[] = {
 	{0x00, "SUCCESS"},
 	{0x01, "NO_SD_CARD"},
 	{0x63, "UNKNOWN_ERROR"},
@@ -232,8 +232,6 @@ static void ipmi_powermonitor_usage(void);
 /* vFlash Function prototypes */
 static int ipmi_delloem_vFlash_main(struct ipmi_intf *intf, int argc,
 		char **argv);
-const char *get_vFlash_compcode_str(uint8_t vflashcompcode,
-		const struct vFlashstr *vs);
 static int ipmi_get_sd_card_info(struct ipmi_intf *intf);
 static int ipmi_delloem_vFlash_process(struct ipmi_intf *intf, int current_arg,
 		char **argv);
@@ -3756,28 +3754,6 @@ ipmi_delloem_vFlash_main(struct ipmi_intf * intf, int __UNUSED__(argc), char **
 	rc = ipmi_delloem_vFlash_process(intf, current_arg, argv);
 	return rc;
 }
-/*
- * Function Name: 	get_vFlash_compcode_str
- *
- * Description: 	This function maps the vFlash completion code
- * 		to a string
- * Input : vFlash completion code and static array of codes vs strings
- * Output: -
- * Return: returns the mapped string
- */
-const char *
-get_vFlash_compcode_str(uint8_t vflashcompcode, const struct vFlashstr *vs)
-{
-	static char un_str[32];
-	int i;
-	for (i = 0; vs[i].str; i++) {
-		if (vs[i].val == vflashcompcode)
-			return vs[i].str;
-	}
-	memset(un_str, 0, 32);
-	snprintf(un_str, 32, "Unknown (0x%02X)", vflashcompcode);
-	return un_str;
-}
 /*
  * Function Name: 	ipmi_get_sd_card_info
  *
@@ -3822,7 +3798,7 @@ ipmi_get_sd_card_info(struct ipmi_intf * intf) {
 		return -1;
 	} else if (sdcardinfoblock-&gt;vflashcompcode != 0x00) {
 		lprintf(LOG_ERR, "Error in getting SD Card Extended Information (%s)",
-				get_vFlash_compcode_str(sdcardinfoblock-&gt;vflashcompcode,
+				val2str(sdcardinfoblock-&gt;vflashcompcode,
 					vFlash_completion_code_vals));
 		return -1;
 	}
</pre></body></html>