| 1515 | } |
| 1516 | |
| 1517 | static ulongest |
| 1518 | llluGetNumber(char *szLocation, struct CTypeDescriptor *pType, unsigned long ulNumber) |
| 1519 | { |
| 1520 | size_t zNumberWidth; |
| 1521 | ulongest UL = 0; |
| 1522 | |
| 1523 | ASSERT(pType); |
| 1524 | |
| 1525 | zNumberWidth = zDeserializeTypeWidth(pType); |
| 1526 | switch (zNumberWidth) { |
| 1527 | default: |
| 1528 | Report(true, "UBSan: Unexpected %zu-Bit Type in %s\n", zNumberWidth, szLocation); |
| 1529 | /* NOTREACHED */ |
| 1530 | case WIDTH_128: |
| 1531 | #ifdef __SIZEOF_INT128__ |
| 1532 | memcpy(&UL, REINTERPRET_CAST(ulongest *, ulNumber), sizeof(ulongest)); |
| 1533 | break; |
| 1534 | #else |
| 1535 | Report(true, "UBSan: Unexpected 128-Bit Type in %s\n", szLocation); |
| 1536 | /* NOTREACHED */ |
| 1537 | #endif |
| 1538 | case WIDTH_64: |
| 1539 | if (sizeof(ulNumber) * CHAR_BIT < WIDTH_64) { |
| 1540 | UL = *REINTERPRET_CAST(uint64_t *, ulNumber); |
| 1541 | break; |
| 1542 | } |
| 1543 | /* FALLTHROUGH */ |
| 1544 | case WIDTH_32: |
| 1545 | /* FALLTHROUGH */ |
| 1546 | case WIDTH_16: |
| 1547 | /* FALLTHROUGH */ |
| 1548 | case WIDTH_8: |
| 1549 | UL = ulNumber; |
| 1550 | break; |
| 1551 | } |
| 1552 | |
| 1553 | return UL; |
| 1554 | } |
| 1555 | |
| 1556 | #ifndef _KERNEL |
| 1557 | static void |
no test coverage detected