Index: uspace/drv/bus/usb/vhc/conndev.c
===================================================================
--- uspace/drv/bus/usb/vhc/conndev.c	(revision 5caad1d4a9774280b120ed9f9da51f4bb6f1f4bf)
+++ uspace/drv/bus/usb/vhc/conndev.c	(revision a36c4aa60172d48878363da38c12f612d1b71d17)
@@ -43,7 +43,26 @@
 #include "vhcd.h"
 
+#define PLUGGED_DEVICE_NAME_MAXLEN 256
+
 static fibril_local uintptr_t plugged_device_handle = 0;
-#define PLUGGED_DEVICE_NAME_MAXLEN 256
-static fibril_local char plugged_device_name[PLUGGED_DEVICE_NAME_MAXLEN + 1] = "<unknown>";
+
+/*
+ * The explicit "initial-exec" TLS model attribute is a temporary workaround
+ * for a bug in GCC (observed in 14.2 and 15.2) that manifests in combination
+ * with the binutils 2.45 linker on MIPS.
+ *
+ * Without the attribute, the linker reports the following error:
+ *
+ *  can't find matching LO16 reloc against `plugged_device_name' for
+ *  R_MIPS_TLS_TPREL_HI16 at 0x238 in section
+ *  `.text.default_connection_handler'
+ *
+ * The immediate cause is a missing R_MIPS_TLS_TPREL_LO16 relocation that
+ * matches the R_MIPS_TLS_TPREL_HI16 relocation. The root cause is probably
+ * an aggressive optimization in the compiler that removes the relocation
+ * despite being needed.
+ */
+static fibril_local char plugged_device_name[PLUGGED_DEVICE_NAME_MAXLEN + 1]
+    __attribute__((tls_model("initial-exec"))) = "<unknown>";
 
 /** Receive device name.
Index: uspace/drv/bus/usb/xhci/hc.c
===================================================================
--- uspace/drv/bus/usb/xhci/hc.c	(revision 5caad1d4a9774280b120ed9f9da51f4bb6f1f4bf)
+++ uspace/drv/bus/usb/xhci/hc.c	(revision a36c4aa60172d48878363da38c12f612d1b71d17)
@@ -166,5 +166,5 @@
 					speeds[psiv].major = major;
 					speeds[psiv].minor = minor;
-					str_ncpy(speeds[psiv].name, 4, name.str, 4);
+					memcpy(speeds[psiv].name, name.str, 4);
 					speeds[psiv].usb_speed = USB_SPEED_MAX;
 
Index: uspace/drv/bus/usb/xhci/hw_struct/regs.h
===================================================================
--- uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision 5caad1d4a9774280b120ed9f9da51f4bb6f1f4bf)
+++ uspace/drv/bus/usb/xhci/hw_struct/regs.h	(revision a36c4aa60172d48878363da38c12f612d1b71d17)
@@ -551,5 +551,5 @@
 
 typedef union {
-	char str [4];
+	char str[4] __attribute__((nonstring));
 	uint32_t packed;
 } xhci_sp_name_t;
Index: uspace/drv/bus/usb/xhci/rh.h
===================================================================
--- uspace/drv/bus/usb/xhci/rh.h	(revision 5caad1d4a9774280b120ed9f9da51f4bb6f1f4bf)
+++ uspace/drv/bus/usb/xhci/rh.h	(revision a36c4aa60172d48878363da38c12f612d1b71d17)
@@ -51,5 +51,5 @@
  */
 typedef struct xhci_port_speed {
-	char name [4];
+	char name[4] __attribute__((nonstring));
 	uint8_t major, minor;
 	uint64_t rx_bps, tx_bps;
Index: uspace/lib/cpp/include/__bits/adt/bitset.hpp
===================================================================
--- uspace/lib/cpp/include/__bits/adt/bitset.hpp	(revision 5caad1d4a9774280b120ed9f9da51f4bb6f1f4bf)
+++ uspace/lib/cpp/include/__bits/adt/bitset.hpp	(revision a36c4aa60172d48878363da38c12f612d1b71d17)
@@ -42,4 +42,13 @@
     class bitset
     {
+        private:
+            /**
+             * While this might be a bit more wasteful
+             * than using unsigned or unsigned long,
+             * it will make parts of out code easier
+             * to read.
+             */
+            using data_type = unsigned long long;
+
         public:
             class reference
@@ -365,12 +374,4 @@
 
         private:
-            /**
-             * While this might be a bit more wasteful
-             * than using unsigned or unsigned long,
-             * it will make parts of out code easier
-             * to read.
-             */
-            using data_type = unsigned long long;
-
             static constexpr size_t bits_in_data_type_ = sizeof(data_type) * 8;
             static constexpr size_t data_size_ = N / bits_in_data_type_ + 1;
