util/amdfwtool: Fix warning taking address of packed struct member

GCC9 introduced a new warning [-Waddress-of-packed-member].  This
is giving the following warning when building amdfwtool: warning: taking
address of packed member of ‘struct _bios_directory_entry’ may result in
an unaligned pointer value. Looking at the definition of the struct, it
looks like this is probably true.

Since the function being called doesn't read from the values, zeroing
them out in the beginning of the function, the code just passes pointers
to the temporary variables without initializing them.

BUG=None
TEST=Build & use AMD firmware table.
BRANCH=Zork

Signed-off-by: Martin Roth <martinroth@chromium.org>
Change-Id: I2f1e0aede8563e39ab0f2ec6daed91d6431eac43
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44986
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Eric Peers <epeers@google.com>
This commit is contained in:
Martin Roth 2020-09-01 10:54:11 -06:00 committed by Aaron Durbin
parent 5ae96aa171
commit eca423b44f
1 changed files with 6 additions and 3 deletions

View File

@ -888,6 +888,8 @@ static void integrate_bios_firmwares(context *ctx,
unsigned int i, count; unsigned int i, count;
int level; int level;
int apob_idx; int apob_idx;
uint32_t size;
uint64_t source;
/* This function can create a primary table, a secondary table, or a /* This function can create a primary table, a secondary table, or a
* flattened table which contains all applicable types. These if-else * flattened table which contains all applicable types. These if-else
@ -996,10 +998,11 @@ static void integrate_bios_firmwares(context *ctx,
break; break;
case AMD_BIOS_BIN: case AMD_BIOS_BIN:
/* Don't make a 2nd copy, point to the same one */ /* Don't make a 2nd copy, point to the same one */
if (level == BDT_LVL1 && locate_bdt2_bios(biosdir2, if (level == BDT_LVL1 && locate_bdt2_bios(biosdir2, &source, &size)) {
&biosdir->entries[count].source, biosdir->entries[count].source = source;
&biosdir->entries[count].size)) biosdir->entries[count].size = size;
break; break;
}
/* level 2, or level 1 and no copy found in level 2 */ /* level 2, or level 1 and no copy found in level 2 */
biosdir->entries[count].source = fw_table[i].src; biosdir->entries[count].source = fw_table[i].src;