Changeset a36c4aa in mainline for uspace/drv/bus/usb/vhc/conndev.c


Ignore:
Timestamp:
2025-08-12T18:03:48Z (2 months ago)
Author:
Martin Decky <martin@…>
Branches:
master
Children:
113fb4f
Parents:
2e9f284
Message:

Switch to binutils 2.45 and GCC 15.2

This requires a few minor modifications and one temporary workaround,
but should be otherwise painless.

The switch to binutils 2.45 is especially useful due to its fixes when
compiled by a C23 compiler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/vhc/conndev.c

    r2e9f284 ra36c4aa  
    4343#include "vhcd.h"
    4444
     45#define PLUGGED_DEVICE_NAME_MAXLEN 256
     46
    4547static fibril_local uintptr_t plugged_device_handle = 0;
    46 #define PLUGGED_DEVICE_NAME_MAXLEN 256
    47 static fibril_local char plugged_device_name[PLUGGED_DEVICE_NAME_MAXLEN + 1] = "<unknown>";
     48
     49/*
     50 * The explicit "initial-exec" TLS model attribute is a temporary workaround
     51 * for a bug in GCC (observed in 14.2 and 15.2) that manifests in combination
     52 * with the binutils 2.45 linker on MIPS.
     53 *
     54 * Without the attribute, the linker reports the following error:
     55 *
     56 *  can't find matching LO16 reloc against `plugged_device_name' for
     57 *  R_MIPS_TLS_TPREL_HI16 at 0x238 in section
     58 *  `.text.default_connection_handler'
     59 *
     60 * The immediate cause is a missing R_MIPS_TLS_TPREL_LO16 relocation that
     61 * matches the R_MIPS_TLS_TPREL_HI16 relocation. The root cause is probably
     62 * an aggressive optimization in the compiler that removes the relocation
     63 * despite being needed.
     64 */
     65static fibril_local char plugged_device_name[PLUGGED_DEVICE_NAME_MAXLEN + 1]
     66    __attribute__((tls_model("initial-exec"))) = "<unknown>";
    4867
    4968/** Receive device name.
Note: See TracChangeset for help on using the changeset viewer.