Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions build-config/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -515,14 +515,6 @@ ifeq ($(FIRMWARE_UPDATE_ENABLE),yes)
include make/firmware-update.make
endif

# Pre Debian 11 environments just had /usr/bin/python
# Now the environment distinguishes between python2 and python3
# If 'python' is not present, default to python2
ifeq (, $(shell which python ))
export PYTHON=python2
endif


#-------------------------------------------------------------------------------
#
# top level targets
Expand Down
4 changes: 2 additions & 2 deletions build-config/make/efivar.make
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ $(EFIVAR_BUILD_STAMP): $(EFIVAR_PATCH_STAMP) $(EFIVAR_NEW_FILES) $(POPT_BUILD_ST
$(Q) rm -f $@ && eval $(PROFILE_STAMP)
$(Q) echo "==== Building efivar-$(EFIVAR_VERSION) ===="
$(Q) PATH='$(CROSSBIN):$(PATH)' $(MAKE) -C $(EFIVAR_DIR) \
CROSS_COMPILE=$(CROSSPREFIX) PKG_CONFIG=pkg-config $(ONIE_PKG_CONFIG) DESTDIR=$(DEV_SYSROOT)
CROSS_COMPILE=$(CROSSPREFIX) PKG_CONFIG=pkg-config $(ONIE_PKG_CONFIG) CFLAGS="$(ONIE_CFLAGS)" DESTDIR=$(DEV_SYSROOT)
$(Q) PATH='$(CROSSBIN):$(PATH)' $(MAKE) -C $(EFIVAR_DIR) \
CROSS_COMPILE=$(CROSSPREFIX) PKG_CONFIG=pkg-config $(ONIE_PKG_CONFIG) DESTDIR=$(DEV_SYSROOT) install
CROSS_COMPILE=$(CROSSPREFIX) PKG_CONFIG=pkg-config $(ONIE_PKG_CONFIG) CFLAGS="$(ONIE_CFLAGS)" DESTDIR=$(DEV_SYSROOT) install
$(Q) touch $@

efivar-install: $(EFIVAR_INSTALL_STAMP)
Expand Down
12 changes: 11 additions & 1 deletion build-config/make/mtdutils.make
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,15 @@ MTDUTILS_TARBALL = mtd-utils-$(MTDUTILS_VERSION).tar.gz
MTDUTILS_TARBALL_URLS += $(ONIE_MIRROR) http://git.infradead.org/mtd-utils.git/snapshot
MTDUTILS_BUILD_DIR = $(USER_BUILDDIR)/mtd-utils
MTDUTILS_DIR = $(MTDUTILS_BUILD_DIR)/mtd-utils-e4c8885
MTDUTILS_SRCPATCHDIR = $(PATCHDIR)/mtd-utils

MTDUTILS_DOWNLOAD_STAMP = $(DOWNLOADDIR)/mtdutils-$(MTDUTILS_VERSION)-download
MTDUTILS_SOURCE_STAMP = $(USER_STAMPDIR)/mtdutils-source
MTDUTILS_PATCH_STAMP = $(USER_STAMPDIR)/mtdutils-patch
MTDUTILS_BUILD_STAMP = $(USER_STAMPDIR)/mtdutils-build
MTDUTILS_INSTALL_STAMP = $(STAMPDIR)/mtdutils-install
MTDUTILS_STAMP = $(MTDUTILS_SOURCE_STAMP) \
$(MTDUTILS_PATCH_STAMP) \
$(MTDUTILS_BUILD_STAMP) \
$(MTDUTILS_INSTALL_STAMP)

Expand Down Expand Up @@ -56,10 +59,17 @@ MTDUTILS_NEW_FILES = $(shell test -d $(MTDUTILS_DIR) && test -f $(MTDUTILS_BUILD
find -L $(MTDUTILS_DIR) -newer $(MTDUTILS_BUILD_STAMP) -type f -print -quit)
endif

mtdutils-patch: $(MTDUTILS_PATCH_STAMP)
$(MTDUTILS_PATCH_STAMP): $(MTDUTILS_SRCPATCHDIR)/* $(MTDUTILS_SOURCE_STAMP)
$(Q) rm -f $@ && eval $(PROFILE_STAMP)
$(Q) echo "==== Patching mtdutils ===="
$(Q) $(SCRIPTDIR)/apply-patch-series $(MTDUTILS_SRCPATCHDIR)/series $(MTDUTILS_DIR)
$(Q) touch $@

mtdutils-build: $(MTDUTILS_BUILD_STAMP)
$(MTDUTILS_BUILD_STAMP): $(MTDUTILS_NEW_FILES) $(UTILLINUX_BUILD_STAMP) \
$(LZO_BUILD_STAMP) $(ZLIB_BUILD_STAMP) \
$(MTDUTILS_SOURCE_STAMP) | $(DEV_SYSROOT_INIT_STAMP)
$(MTDUTILS_SOURCE_STAMP) $(MTDUTILS_PATCH_STAMP) | $(DEV_SYSROOT_INIT_STAMP)
$(Q) rm -f $@ && eval $(PROFILE_STAMP)
$(Q) PATH='$(CROSSBIN):$(PATH)' \
$(MAKE) -C $(MTDUTILS_DIR) \
Expand Down
14 changes: 12 additions & 2 deletions build-config/make/parted.make
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ PARTED_DIR = $(PARTED_BUILD_DIR)/parted-$(PARTED_VERSION)
PARTED_SRCPATCHDIR = $(PATCHDIR)/parted
PARTED_DOWNLOAD_STAMP = $(DOWNLOADDIR)/parted-download
PARTED_SOURCE_STAMP = $(USER_STAMPDIR)/parted-source
PARTED_PATCH_STAMP = $(USER_STAMPDIR)/parted-patch
PARTED_CONFIGURE_STAMP = $(USER_STAMPDIR)/parted-configure
PARTED_BUILD_STAMP = $(USER_STAMPDIR)/parted-build
PARTED_INSTALL_STAMP = $(STAMPDIR)/parted-install

PARTED_STAMP = $(PARTED_SOURCE_STAMP) \
$(PARTED_PATCH_STAMP) \
$(PARTED_CONFIGURE_STAMP) \
$(PARTED_BUILD_STAMP) \
$(PARTED_INSTALL_STAMP)
Expand Down Expand Up @@ -58,8 +60,16 @@ $(PARTED_SOURCE_STAMP): $(USER_TREE_STAMP) | $(PARTED_DOWNLOAD_STAMP)
$(Q) $(SCRIPTDIR)/extract-package $(PARTED_BUILD_DIR) $(DOWNLOADDIR)/$(PARTED_TARBALL)
$(Q) touch $@

parted-patch: $(PARTED_PATCH_STAMP)
$(PARTED_PATCH_STAMP): $(PARTED_SRCPATCHDIR)/* $(PARTED_SOURCE_STAMP)
$(Q) rm -f $@ && eval $(PROFILE_STAMP)
$(Q) echo "==== Patching parted ===="
$(Q) $(SCRIPTDIR)/apply-patch-series $(PARTED_SRCPATCHDIR)/series $(PARTED_DIR)
$(Q) touch $@

parted-configure: $(PARTED_CONFIGURE_STAMP)
$(PARTED_CONFIGURE_STAMP): $(PARTED_SOURCE_STAMP) $(E2FSPROGS_BUILD_STAMP) $(LVM2_BUILD_STAMP) | $(DEV_SYSROOT_INIT_STAMP)
$(PARTED_CONFIGURE_STAMP): $(PARTED_SOURCE_STAMP) $(E2FSPROGS_BUILD_STAMP) $(LVM2_BUILD_STAMP) $(PARTED_PATCH_STAMP) | \
$(DEV_SYSROOT_INIT_STAMP)
$(Q) rm -f $@ && eval $(PROFILE_STAMP)
$(Q) echo "==== Configure parted-$(PARTED_VERSION) ===="
$(Q) cd $(PARTED_DIR) && PATH='$(CROSSBIN):$(PATH)' \
Expand All @@ -80,7 +90,7 @@ $(PARTED_CONFIGURE_STAMP): $(PARTED_SOURCE_STAMP) $(E2FSPROGS_BUILD_STAMP) $(LVM
$(Q) touch $@

# Print configure options for debug
parted-configure-help: $(PARTED_CONFIGURE_STAMP)
parted-configure-help: $(PARTED_CONFIGURE_STAMP) $(PARTED_PATCH_STAMP)
$(Q) echo "==== Configure parted-$(PARTED_VERSION) ===="
$(Q) $(PARTED_DIR)/configure -help

Expand Down
4 changes: 2 additions & 2 deletions patches/busybox/feature-onie-syseeprom-command.patch
Original file line number Diff line number Diff line change
Expand Up @@ -1687,7 +1687,7 @@ index 0000000..26b6ec5
+}
diff --git a/miscutils/sys_eeprom.c b/miscutils/sys_eeprom.c
new file mode 100644
index 0000000..a24d6bb
index 0000000..ed3fb38
--- /dev/null
+++ b/miscutils/sys_eeprom.c
@@ -0,0 +1,188 @@
Expand All @@ -1711,7 +1711,7 @@ index 0000000..a24d6bb
+//usage: "\n If no value, TLV is deleted."
+//usage: "\n"
+
+cmd_usage()
+void cmd_usage(void)
+{
+ static const char *usage =
+ "Display and program the system EEPROM data block.\n"
Expand Down
40 changes: 40 additions & 0 deletions patches/e2fsprogs/0001-libext2fs-fix-std-c23-build-failure.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
From 49fd04d77b3244c6c6990be41142168eef373aef Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <[email protected]>
Date: Fri, 22 Nov 2024 12:36:32 +0000
Subject: [PATCH] libext2fs: fix -std=c23 build failure

gcc-15 switched to -std=c23 by default:

https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212

As a result `e2fsprogs` fails the build so only typedef int bool
for __STDC_VERSION__ <= 201710L (C17)

../../../lib/ext2fs/tdb.c:113:13: error: two or more data types in declaration specifiers
../../../lib/ext2fs/tdb.c:113:1: warning: useless type name in empty declaration
113 | typedef int bool;
| ^~~~~~~

https://github.com/tytso/e2fsprogs/issues/202

Signed-off-by: Rudi Heitbaum <[email protected]>
Link: https://lore.kernel.org/r/Z0B60JhdvT9bpSQ6@6f91903e89da
Signed-off-by: Theodore Ts'o <[email protected]>
---
lib/ext2fs/tdb.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/lib/ext2fs/tdb.c b/lib/ext2fs/tdb.c
index b07b2917..98dc95d8 100644
--- a/lib/ext2fs/tdb.c
+++ b/lib/ext2fs/tdb.c
@@ -110,7 +110,9 @@ static char *rep_strdup(const char *s)
#endif
#endif

+#if defined __STDC__ && defined __STDC_VERSION__ && __STDC_VERSION__ <= 201710L
typedef int bool;
+#endif

#include "tdb.h"

1 change: 1 addition & 0 deletions patches/e2fsprogs/series
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0001-libext2fs-fix-std-c23-build-failure.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
From c3c553db85ff10890209d0fe48fb4856ad68e4e0 Mon Sep 17 00:00:00 2001
From: Peter Jones <[email protected]>
Date: Thu, 21 Feb 2019 15:20:12 -0500
Subject: [PATCH] Fix all the places -Werror=address-of-packed-member catches.

This gets rid of all the places GCC 9's -Werror=address-of-packed-member
flags as problematic.

Fixes github issue #123

Signed-off-by: Peter Jones <[email protected]>
---
src/dp-message.c | 6 ++++--
src/dp.h | 12 ++++--------
src/guid.c | 2 +-
src/include/efivar/efivar.h | 2 +-
src/ucs2.h | 27 +++++++++++++++++++--------
5 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/src/dp-message.c b/src/dp-message.c
index 3724e5f..9f96466 100644
--- a/src/dp-message.c
+++ b/src/dp-message.c
@@ -620,11 +620,13 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
) / sizeof(efi_ip_addr_t);
format(buf, size, off, "Dns", "Dns(");
for (int i=0; i < end; i++) {
- const efi_ip_addr_t *addr = &dp->dns.addrs[i];
+ efi_ip_addr_t addr;
+
+ memcpy(&addr, &dp->dns.addrs[i], sizeof(addr));
if (i != 0)
format(buf, size, off, "Dns", ",");
format_ip_addr(buf, size, off, "Dns",
- dp->dns.is_ipv6, addr);
+ dp->dns.is_ipv6, &addr);
}
format(buf, size, off, "Dns", ")");
break;
diff --git a/src/dp.h b/src/dp.h
index 20cb608..1f921d5 100644
--- a/src/dp.h
+++ b/src/dp.h
@@ -71,13 +71,9 @@
int _rc; \
char *_guidstr = NULL; \
efi_guid_t _guid; \
- const efi_guid_t * const _guid_p = \
- likely(__alignof__(guid) == sizeof(guid)) \
- ? guid \
- : &_guid; \
- \
- if (unlikely(__alignof__(guid) == sizeof(guid))) \
- memmove(&_guid, guid, sizeof(_guid)); \
+ const efi_guid_t * const _guid_p = &_guid; \
+ \
+ memmove(&_guid, guid, sizeof(_guid)); \
_rc = efi_guid_to_str(_guid_p, &_guidstr); \
if (_rc < 0) { \
efi_error("could not build %s GUID DP string", \
@@ -86,7 +82,7 @@
_guidstr = onstack(_guidstr, \
strlen(_guidstr)+1); \
_rc = format(buf, size, off, dp_type, "%s", \
- _guidstr); \
+ _guidstr); \
} \
_rc; \
})
diff --git a/src/guid.c b/src/guid.c
index 306c9ff..3156b3b 100644
--- a/src/guid.c
+++ b/src/guid.c
@@ -31,7 +31,7 @@
extern const efi_guid_t efi_guid_zero;

int NONNULL(1, 2) PUBLIC
-efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b)
+efi_guid_cmp(const void * const a, const void * const b)
{
return memcmp(a, b, sizeof (efi_guid_t));
}
diff --git a/src/include/efivar/efivar.h b/src/include/efivar/efivar.h
index 316891c..ad6449d 100644
--- a/src/include/efivar/efivar.h
+++ b/src/include/efivar/efivar.h
@@ -128,7 +128,7 @@ extern int efi_symbol_to_guid(const char *symbol, efi_guid_t *guid)

extern int efi_guid_is_zero(const efi_guid_t *guid);
extern int efi_guid_is_empty(const efi_guid_t *guid);
-extern int efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b);
+extern int efi_guid_cmp(const void * const a, const void * const b);

/* import / export functions */
typedef struct efi_variable efi_variable_t;
diff --git a/src/ucs2.h b/src/ucs2.h
index dbb5900..edd8367 100644
--- a/src/ucs2.h
+++ b/src/ucs2.h
@@ -23,16 +23,21 @@
(((val) & ((mask) << (shift))) >> (shift))

static inline size_t UNUSED
-ucs2len(const uint16_t * const s, ssize_t limit)
+ucs2len(const void *vs, ssize_t limit)
{
ssize_t i;
- for (i = 0; i < (limit >= 0 ? limit : i+1) && s[i] != (uint16_t)0; i++)
+ const uint16_t *s = vs;
+ const uint8_t *s8 = vs;
+
+ for (i = 0;
+ i < (limit >= 0 ? limit : i+1) && s8[0] != 0 && s8[1] != 0;
+ i++, s8 += 2, s++)
;
return i;
}

static inline size_t UNUSED
-ucs2size(const uint16_t * const s, ssize_t limit)
+ucs2size(const void *s, ssize_t limit)
{
size_t rc = ucs2len(s, limit);
rc *= sizeof (uint16_t);
@@ -69,10 +74,11 @@ utf8size(uint8_t *s, ssize_t limit)
}

static inline unsigned char * UNUSED
-ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
+ucs2_to_utf8(const void * const voidchars, ssize_t limit)
{
ssize_t i, j;
unsigned char *ret;
+ const uint16_t * const chars = voidchars;

if (limit < 0)
limit = ucs2len(chars, -1);
@@ -124,10 +130,12 @@ ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
}

static inline ssize_t UNUSED NONNULL(4)
-utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
+utf8_to_ucs2(void *ucs2void, ssize_t size, int terminate, uint8_t *utf8)
{
ssize_t req;
ssize_t i, j;
+ uint16_t *ucs2 = ucs2void;
+ uint16_t val16;

if (!ucs2 && size > 0) {
errno = EINVAL;
@@ -162,10 +170,13 @@ utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
val = utf8[i] & 0x7f;
i += 1;
}
- ucs2[j] = val;
+ val16 = val;
+ ucs2[j] = val16;
+ }
+ if (terminate) {
+ val16 = 0;
+ ucs2[j++] = val16;
}
- if (terminate)
- ucs2[j++] = (uint16_t)0;
return j;
};

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
From b98ba8921010d03f46704a476c69861515deb1ca Mon Sep 17 00:00:00 2001
From: Peter Jones <[email protected]>
Date: Mon, 7 Jan 2019 10:30:59 -0500
Subject: [PATCH] dp.h: make format_guid() handle misaligned guid pointers
safely.

GCC 9 adds -Werror=address-of-packed-member, which causes us to see the
build error reported at
https://bugzilla.opensuse.org/show_bug.cgi?id=1120862 .

That bug report shows us the following:

In file included from dp.c:26:
dp.h: In function 'format_vendor_helper':
dp.h:120:37: error: taking address of packed member of 'struct <anonymous>' may result in an unaligned pointer value [-Werror=address-of-packed-member]
120 | format_guid(buf, size, off, label, &dp->hw_vendor.vendor_guid);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
dp.h:74:25: note: in definition of macro 'format_guid'
74 | _rc = efi_guid_to_str(guid, &_guidstr); \
| ^~~~
cc1: all warnings being treated as errors

This patch makes format_guid() use a local variable as a bounce buffer
in the case that the guid we're passed is aligned as chaotic neutral.

Note that this only fixes this instance and there may be others that bz
didn't show because it exited too soon, and I don't have a gcc 9 build
in front of me right now.

Signed-off-by: Peter Jones <[email protected]>
---
src/dp.h | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/dp.h b/src/dp.h
index aa4e390..20cb608 100644
--- a/src/dp.h
+++ b/src/dp.h
@@ -70,8 +70,15 @@
#define format_guid(buf, size, off, dp_type, guid) ({ \
int _rc; \
char *_guidstr = NULL; \
- \
- _rc = efi_guid_to_str(guid, &_guidstr); \
+ efi_guid_t _guid; \
+ const efi_guid_t * const _guid_p = \
+ likely(__alignof__(guid) == sizeof(guid)) \
+ ? guid \
+ : &_guid; \
+ \
+ if (unlikely(__alignof__(guid) == sizeof(guid))) \
+ memmove(&_guid, guid, sizeof(_guid)); \
+ _rc = efi_guid_to_str(_guid_p, &_guidstr); \
if (_rc < 0) { \
efi_error("could not build %s GUID DP string", \
dp_type); \
3 changes: 3 additions & 0 deletions patches/efivar/37/series
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ remove-arrows.patch
0005-Fix-variable-sz-uninitialized-error.patch
0006-Fix-parsing-for-nvme-subsystem-devices.patch
Always-initialize-any-variable-we-use-with-sscanf-s-.patch
dp.h-make-format_guid-handle-misaligned-guid-pointer.patch
Fix-all-the-places-Werror-address-of-packed-member-c.patch

Loading