diff options
| author | Stefan Hajnoczi <stefanha@redhat.com> | 2023-08-29 08:58:00 -0400 |
|---|---|---|
| committer | Stefan Hajnoczi <stefanha@redhat.com> | 2023-08-29 08:58:00 -0400 |
| commit | 813bac3d8d70d85cb7835f7945eb9eed84c2d8d0 (patch) | |
| tree | db3ad0b536dcd6eca3b725e535c152cc0e98b6b6 /include/qemu/compiler.h | |
| parent | f5fe7c17ac4e309e47e78f0f9761aebc8d2f2c81 (diff) | |
| parent | f51e7c41acb4b17d28fc74f9f10df50a4a65fbcc (diff) | |
| download | focaccia-qemu-813bac3d8d70d85cb7835f7945eb9eed84c2d8d0.tar.gz focaccia-qemu-813bac3d8d70d85cb7835f7945eb9eed84c2d8d0.zip | |
Merge tag '2023q3-bsd-user-pull-request' of https://gitlab.com/bsdimp/qemu into staging
Pull request for bsd-user 2023 Q3 (first batch) First batch of commits submitted by my GSoC student Karim Taha These implement the stat, statfs, statfh and dirents system calls. In addition, fix a missing break statment, and submit Richard Henderson's elf stat mmap cleansup. # -----BEGIN PGP SIGNATURE----- # Comment: GPGTools - https://gpgtools.org # # iQIzBAABCgAdFiEEIDX4lLAKo898zeG3bBzRKH2wEQAFAmTtL6EACgkQbBzRKH2w # EQALHQ//WOoHYxpNS1hy+oYIAvjW0JOqz9gCSFR0d56mDBShm7WO/9FZA6eGAzYQ # i5kBSVFwEBlM76K5vLTbRvCbCbAwlpAdMgI7HXValjspNhvu/66DNWmdil6GnXKu # 4QRaM/QGrobmYrNmf4SdgyjlMVH7wGyTrCTpXfvPfktZLAbQq7dCyNPTsOYXJP2V # LASk8j2gyW6fDi3z1AxTNVfS7BJX6DWMhPhlvC/aUOLVVGgj9Hw9uxPaKXC1t47D # bpZ+wJb4GMkcsmuiGJ40CXowjQ+M1lBrA4rN+lTMJNttZJ+TUYmizTFkYhX+B28h # Q2JZy5eLXlsxxRByOkOwFczfDT6jlG4BlK4jmDOvKlrTPLaWIHjezztTavWIZDlU # ce1oXQo3KEdWoa/QEsuxLeBbE+uZpu5+NqLeCk1cU4GPks8nbAcD7BGl6dDHKXM4 # 8vCcOMZLwO+xi5Etgcf/MtTPMpSO0rD9fTq2VSdYX0H197mkOdyCDAXjfKPsBUIE # VLAnCFfajMNRc5ITobEbz4GiMD/xy5s8eDZNeefG8lgySpl9XB2Lvw7SWDz1imsL # nBgQH6RHznU65wEvVGtnCGMj5kIMbohY2AGR75iGkRdgR+t2zMjUIiaU/qivD+6z # IEJ2jqDWqtQb81jFNrFzJlsim+GYRl0HcaEmyye2bgf5LHRSSNM= # =ORJ7 # -----END PGP SIGNATURE----- # gpg: Signature made Mon 28 Aug 2023 19:37:05 EDT # gpg: using RSA key 2035F894B00AA3CF7CCDE1B76C1CD1287DB01100 # gpg: Good signature from "Warner Losh <wlosh@netflix.com>" [unknown] # gpg: aka "Warner Losh <imp@bsdimp.com>" [unknown] # gpg: aka "Warner Losh <imp@freebsd.org>" [unknown] # gpg: aka "Warner Losh <imp@village.org>" [unknown] # gpg: aka "Warner Losh <wlosh@bsdimp.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 2035 F894 B00A A3CF 7CCD E1B7 6C1C D128 7DB0 1100 * tag '2023q3-bsd-user-pull-request' of https://gitlab.com/bsdimp/qemu: (36 commits) bsd-user: Add missing break after do_bsd_preadv bsd-user: Add getdents and fcntl related system calls bsd-user: Add glue for statfs related system calls bsd-user: Add glue for getfh and related syscalls bsd-user: Add glue for the freebsd11_stat syscalls bsd-user: Add os-stat.c to the build bsd-user: Implement do_freebsd_realpathat syscall bsd-user: Implement freebsd11 netbsd stat related syscalls bsd-user: Implement freebsd11 getdirents related syscalls bsd-user: Implement freebsd11 statfs related syscalls bsd-user: Implement freebsd11 fstat and fhstat related syscalls bsd-user: Implement freebsd11 stat related syscalls bsd-user: Implement stat related syscalls bsd-user: Implement getdents related syscalls bsd-user: Implement statfs related syscalls bsd-user: Implement statfh related syscalls bsd-user: Implement stat related syscalls bsd-uesr: Implement h2t_freebsd_stat and h2t_freebsd_statfs functions bsd-user: Implement target_to_host_fcntl_cmd bsd-user: Implement h2t_freebds11_statfs ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'include/qemu/compiler.h')
| -rw-r--r-- | include/qemu/compiler.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index a309f90c76..b037442518 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -22,6 +22,36 @@ #define QEMU_EXTERN_C extern #endif +/* + * Tricky points: + * - Use __builtin_choose_expr to avoid type promotion from ?:, + * - Invalid sizes result in a compile time error stemming from + * the fact that abort has no parameters. + * - It's easier to use the endian-specific unaligned load/store + * functions than host-endian unaligned load/store plus tswapN. + * - The pragmas are necessary only to silence a clang false-positive + * warning: see https://bugs.llvm.org/show_bug.cgi?id=39113 . + * - We have to disable -Wpragmas warnings to avoid a complaint about + * an unknown warning type from older compilers that don't know about + * -Waddress-of-packed-member. + * - gcc has bugs in its _Pragma() support in some versions, eg + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83256 -- so we only + * include the warning-suppression pragmas for clang + */ +#ifdef __clang__ +#define PRAGMA_DISABLE_PACKED_WARNING \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wpragmas\""); \ + _Pragma("GCC diagnostic ignored \"-Waddress-of-packed-member\"") + +#define PRAGMA_REENABLE_PACKED_WARNING \ + _Pragma("GCC diagnostic pop") + +#else +#define PRAGMA_DISABLE_PACKED_WARNING +#define PRAGMA_REENABLE_PACKED_WARNING +#endif + #if defined(_WIN32) && (defined(__x86_64__) || defined(__i386__)) # define QEMU_PACKED __attribute__((gcc_struct, packed)) #else |