OSDN Git Service

More aggressively use macros for compiler attributes
authorPeter Jones <pjones@redhat.com>
Thu, 17 May 2018 20:37:57 +0000 (16:37 -0400)
committerPeter Jones <pmjones@gmail.com>
Mon, 21 May 2018 13:27:22 +0000 (09:27 -0400)
Signed-off-by: Peter Jones <pjones@redhat.com>
23 files changed:
src/creator.c
src/disk.c
src/disk.h
src/dp-acpi.c
src/dp-hw.c
src/dp-media.c
src/dp-message.c
src/dp.c
src/dp.h
src/error.c
src/export.c
src/generics.h
src/gpt.c
src/gpt.h
src/guid.c
src/guid.h
src/lib.c
src/linux.c
src/linux.h
src/loadopt.c
src/ucs2.h
src/util.h
src/vars.c

index e9bea22..147826e 100644 (file)
@@ -34,8 +34,7 @@
 
 #include "efiboot.h"
 
-static int
-__attribute__((__nonnull__ (1,2,3)))
+static int NONNULL(1, 2, 3)
 find_file(const char * const filepath, char **devicep, char **relpathp)
 {
        struct stat fsb = { 0, };
@@ -306,9 +305,7 @@ err:
        return ret;
 }
 
-ssize_t
-__attribute__((__nonnull__ (3, 5)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(3, 5) PUBLIC
 efi_generate_file_device_path_from_esp(uint8_t *buf, ssize_t size,
                                       const char *devpath, int partition,
                                       const char *relpath,
@@ -330,9 +327,7 @@ efi_generate_file_device_path_from_esp(uint8_t *buf, ssize_t size,
        return ret;
 }
 
-ssize_t
-__attribute__((__nonnull__ (3)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(3) PUBLIC
 efi_generate_file_device_path(uint8_t *buf, ssize_t size,
                              const char * const filepath,
                              uint32_t options, ...)
@@ -390,17 +385,16 @@ err:
        return ret;
 }
 
-static ssize_t
-__attribute__((__nonnull__ (3,4,5,6)))
+static ssize_t NONNULL(3, 4, 5, 6)
 make_ipv4_path(uint8_t *buf, ssize_t size,
-              const char * const local_addr __attribute__((unused)),
-              const char * const remote_addr __attribute__((unused)),
-              const char * const gateway_addr __attribute__((unused)),
-              const char * const netmask __attribute__((unused)),
-              uint16_t local_port __attribute__((unused)),
-              uint16_t remote_port __attribute__((unused)),
-              uint16_t protocol __attribute__((unused)),
-              uint8_t addr_origin __attribute__((unused)))
+              const char * const local_addr UNUSED,
+              const char * const remote_addr UNUSED,
+              const char * const gateway_addr UNUSED,
+              const char * const netmask UNUSED,
+              uint16_t local_port UNUSED,
+              uint16_t remote_port UNUSED,
+              uint16_t protocol UNUSED,
+              uint8_t addr_origin UNUSED)
 {
        ssize_t ret;
 
@@ -417,9 +411,7 @@ make_ipv4_path(uint8_t *buf, ssize_t size,
        return ret;
 }
 
-ssize_t
-__attribute__((__nonnull__ (3,4,5,6,7)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(3, 4, 5, 6, 7) PUBLIC
 efi_generate_ipv4_device_path(uint8_t *buf, ssize_t size,
                              const char * const ifname,
                              const char * const local_addr,
index c8fd419..cc3aff3 100644 (file)
@@ -71,11 +71,11 @@ is_mbr_valid(legacy_mbr *mbr)
  *
  ************************************************************/
 static int
-msdos_disk_get_extended_partition_info (int fd __attribute__((unused)),
-                                       legacy_mbr *mbr __attribute__((unused)),
-                                       uint32_t num __attribute__((unused)),
-                                       uint64_t *start __attribute__((unused)),
-                                       uint64_t *size __attribute__((unused)))
+msdos_disk_get_extended_partition_info (int fd UNUSED,
+                                       legacy_mbr *mbr UNUSED,
+                                       uint32_t num UNUSED,
+                                       uint64_t *start UNUSED,
+                                       uint64_t *size UNUSED)
 {
         /* Until I can handle these... */
         //fprintf(stderr, "Extended partition info not supported.\n");
@@ -190,7 +190,7 @@ get_partition_info(int fd, uint32_t options,
        legacy_mbr *mbr;
        void *mbr_sector;
        size_t mbr_size;
-       off_t offset __attribute__((unused));
+       off_t offset UNUSED;
        int this_bytes_read = 0;
        int gpt_invalid=0, mbr_invalid=0;
        int rc=0;
@@ -239,8 +239,7 @@ get_partition_info(int fd, uint32_t options,
        return rc;
 }
 
-ssize_t
-__attribute__((__visibility__ ("hidden")))
+ssize_t HIDDEN
 _make_hd_dn(uint8_t *buf, ssize_t size, int fd, uint32_t partition,
            uint32_t options)
 {
index ecd032f..4811460 100644 (file)
@@ -23,7 +23,7 @@
 
 extern ssize_t _make_hd_dn(uint8_t *buf, ssize_t size, int fd,
                           uint32_t partition, uint32_t options)
-       __attribute__((__visibility__ ("hidden")));
+        HIDDEN;
 #define make_hd_dn(buf, size, off, fd, partition, option) \
        _make_hd_dn(((buf)+(off)), ((size)?((size)-(off)):0), (fd),\
                    (partition), (options))
index 9611e73..f003cc4 100644 (file)
@@ -29,7 +29,7 @@
 
 static ssize_t
 _format_acpi_adr(char *buf, size_t size,
-                const char *dp_type __attribute__((__unused__)),
+                const char *dp_type UNUSED,
                 const_efidp dp)
 {
        ssize_t off = 0;
@@ -239,8 +239,7 @@ _format_acpi_dn(char *buf, size_t size, const_efidp dp)
        return off;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_acpi_hid(uint8_t *buf, ssize_t size, uint32_t hid, uint32_t uid)
 {
        efidp_acpi_hid *acpi_hid = (efidp_acpi_hid *)buf;
@@ -260,9 +259,7 @@ efidp_make_acpi_hid(uint8_t *buf, ssize_t size, uint32_t hid, uint32_t uid)
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
-__attribute__((__nonnull__ (6,7,8)))
+ssize_t PUBLIC NONNULL(6, 7, 8)
 efidp_make_acpi_hid_ex(uint8_t *buf, ssize_t size,
                       uint32_t hid, uint32_t uid, uint32_t cid,
                       char *hidstr, char *uidstr, char *cidstr)
index f991409..0dcf991 100644 (file)
@@ -82,8 +82,7 @@ _format_hw_dn(char *buf, size_t size, const_efidp dp)
        return off;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_pci(uint8_t *buf, ssize_t size, uint8_t device, uint8_t function)
 {
        efidp_pci *pci = (efidp_pci *)buf;
@@ -102,8 +101,7 @@ efidp_make_pci(uint8_t *buf, ssize_t size, uint8_t device, uint8_t function)
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_edd10(uint8_t *buf, ssize_t size, uint32_t hardware_device)
 {
        efi_guid_t edd10_guid = EDD10_HARDWARE_VENDOR_PATH_GUID;
index 7095c48..0a0993e 100644 (file)
@@ -153,8 +153,7 @@ _format_media_dn(char *buf, size_t size, const_efidp dp)
        return off;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_file(uint8_t *buf, ssize_t size, char *filepath)
 {
        efidp_file *file = (efidp_file *)buf;
@@ -175,8 +174,7 @@ efidp_make_file(uint8_t *buf, ssize_t size, char *filepath)
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_hd(uint8_t *buf, ssize_t size, uint32_t num, uint64_t part_start,
              uint64_t part_size, uint8_t *signature, uint8_t format,
              uint8_t signature_type)
index b32d590..5af6643 100644 (file)
@@ -124,7 +124,7 @@ format_ipv6_addr_helper(char *buf, size_t size, const char *dp_type,
 
 static ssize_t
 format_ip_addr_helper(char *buf, size_t size,
-                     const char *dp_type __attribute__((__unused__)),
+                     const char *dp_type UNUSED,
                      int is_ipv6, const efi_ip_addr_t *addr)
 {
        ssize_t off = 0;
@@ -143,7 +143,7 @@ format_ip_addr_helper(char *buf, size_t size,
 
 static ssize_t
 format_uart(char *buf, size_t size,
-           const char *dp_type __attribute__((__unused__)),
+           const char *dp_type UNUSED,
            const_efidp dp)
 {
        uint32_t value;
@@ -163,7 +163,7 @@ format_uart(char *buf, size_t size,
 
 static ssize_t
 format_sas(char *buf, size_t size,
-          const char *dp_type __attribute__((__unused__)),
+          const char *dp_type UNUSED,
           const_efidp dp)
 {
        ssize_t off = 0;
@@ -233,7 +233,7 @@ format_sas(char *buf, size_t size,
 
 static ssize_t
 format_usb_class(char *buf, size_t size,
-                const char *dp_type __attribute__((__unused__)),
+                const char *dp_type UNUSED,
                 const_efidp dp)
 {
        ssize_t off = 0;
@@ -394,7 +394,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
                        efi_guid_t guid;
                        char label[40];
                        ssize_t (*formatter)(char *buf, size_t size,
-                               const char *dp_type __attribute__((__unused__)),
+                               const char *dp_type UNUSED,
                                const_efidp dp);
                } subtypes[] = {
                        { .guid = EFIDP_PC_ANSI_GUID,
@@ -418,7 +418,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
                };
                char *label = NULL;
                ssize_t (*formatter)(char *buf, size_t size,
-                       const char *dp_type __attribute__((__unused__)),
+                       const char *dp_type UNUSED,
                        const_efidp dp) = NULL;
 
                for (int i = 0; !efi_guid_is_zero(&subtypes[i].guid); i++) {
@@ -644,8 +644,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
        return off;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_mac_addr(uint8_t *buf, ssize_t size, uint8_t if_type,
                    const uint8_t * const mac_addr, ssize_t mac_addr_size)
 {
@@ -666,8 +665,7 @@ efidp_make_mac_addr(uint8_t *buf, ssize_t size, uint8_t if_type,
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_ipv4(uint8_t *buf, ssize_t size, uint32_t local, uint32_t remote,
                uint32_t gateway, uint32_t netmask,
                uint16_t local_port, uint16_t remote_port,
@@ -696,8 +694,7 @@ efidp_make_ipv4(uint8_t *buf, ssize_t size, uint32_t local, uint32_t remote,
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_scsi(uint8_t *buf, ssize_t size, uint16_t target, uint16_t lun)
 {
        efidp_scsi *scsi = (efidp_scsi *)buf;
@@ -715,8 +712,7 @@ efidp_make_scsi(uint8_t *buf, ssize_t size, uint16_t target, uint16_t lun)
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_nvme(uint8_t *buf, ssize_t size, uint32_t namespace_id,
                uint8_t *ieee_eui_64)
 {
@@ -742,8 +738,7 @@ efidp_make_nvme(uint8_t *buf, ssize_t size, uint32_t namespace_id,
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_sata(uint8_t *buf, ssize_t size, uint16_t hba_port,
                int16_t port_multiplier_port, uint16_t lun)
 {
@@ -765,8 +760,7 @@ efidp_make_sata(uint8_t *buf, ssize_t size, uint16_t hba_port,
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_atapi(uint8_t *buf, ssize_t size, uint16_t primary,
                uint16_t slave, uint16_t lun)
 {
@@ -789,8 +783,7 @@ efidp_make_atapi(uint8_t *buf, ssize_t size, uint16_t primary,
 }
 
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_sas(uint8_t *buf, ssize_t size, uint64_t sas_address)
 {
        efidp_sas *sas = (efidp_sas *)buf;
@@ -815,8 +808,7 @@ efidp_make_sas(uint8_t *buf, ssize_t size, uint64_t sas_address)
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_nvdimm(uint8_t *buf, ssize_t size, efi_guid_t *uuid)
 {
        efidp_nvdimm *nvdimm = (efidp_nvdimm *)buf;
index bbf3681..4e76e25 100644 (file)
--- a/src/dp.c
+++ b/src/dp.c
@@ -43,8 +43,7 @@ efidp_data_address(const_efidp dp)
        return (void *)((uint8_t *)dp + sizeof (dp));
 }
 
-int
-__attribute__((__visibility__ ("default")))
+int PUBLIC
 efidp_set_node_data(const_efidp dn, void *buf, size_t bufsize)
 {
        if (dn->length < 4 || bufsize > (size_t)dn->length - 4) {
@@ -98,8 +97,7 @@ efidp_duplicate_extra(const_efidp dp, efidp *out, size_t extra)
        return 0;
 }
 
-int
-__attribute__((__visibility__ ("default")))
+int PUBLIC
 efidp_duplicate_path(const_efidp  dp, efidp *out)
 {
        int rc;
@@ -109,8 +107,7 @@ efidp_duplicate_path(const_efidp  dp, efidp *out)
        return rc;
 }
 
-int
-__attribute__((__visibility__ ("default")))
+int PUBLIC
 efidp_append_path(const_efidp dp0, const_efidp dp1, efidp *out)
 {
        ssize_t lsz, rsz, newsz = 0;
@@ -192,8 +189,7 @@ efidp_append_path(const_efidp dp0, const_efidp dp1, efidp *out)
        return 0;
 }
 
-int
-__attribute__((__visibility__ ("default")))
+int PUBLIC
 efidp_append_node(const_efidp dp, const_efidp dn, efidp *out)
 {
        ssize_t lsz = 0, rsz = 0, newsz;
@@ -254,8 +250,7 @@ efidp_append_node(const_efidp dp, const_efidp dn, efidp *out)
        return 0;
 }
 
-int
-__attribute__((__visibility__ ("default")))
+int PUBLIC
 efidp_append_instance(const_efidp dp, const_efidp dpi, efidp *out)
 {
        ssize_t lsz, rsz;
@@ -302,8 +297,7 @@ efidp_append_instance(const_efidp dp, const_efidp dpi, efidp *out)
 
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_format_device_path(char *buf, size_t size, const_efidp dp, ssize_t limit)
 {
        ssize_t off = 0;
@@ -407,30 +401,25 @@ efidp_format_device_path(char *buf, size_t size, const_efidp dp, ssize_t limit)
        return off+1;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
-efidp_parse_device_node(char *path __attribute__((unused)),
-                       efidp out __attribute__((unused)),
-                       size_t size __attribute__((unused)))
+ssize_t PUBLIC
+efidp_parse_device_node(char *path UNUSED, efidp out UNUSED,
+                        size_t size UNUSED)
 {
        efi_error("not implented");
        errno = -ENOSYS;
        return -1;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
-efidp_parse_device_path(char *path __attribute__((unused)),
-                       efidp out __attribute__((unused)),
-                       size_t size __attribute__((unused)))
+ssize_t PUBLIC
+efidp_parse_device_path(char *path UNUSED, efidp out UNUSED,
+                       size_t size UNUSED)
 {
        efi_error("not implented");
        errno = -ENOSYS;
        return -1;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_vendor(uint8_t *buf, ssize_t size, uint8_t type, uint8_t subtype,
                  efi_guid_t vendor_guid, void *data, size_t data_size)
 {
@@ -446,8 +435,7 @@ efidp_make_vendor(uint8_t *buf, ssize_t size, uint8_t type, uint8_t subtype,
        return sz;
 }
 
-ssize_t
-__attribute__((__visibility__ ("default")))
+ssize_t PUBLIC
 efidp_make_generic(uint8_t *buf, ssize_t size, uint8_t type, uint8_t subtype,
                   ssize_t total_size)
 {
index 4f48c49..aa4e390 100644 (file)
--- a/src/dp.h
+++ b/src/dp.h
@@ -84,8 +84,7 @@
                _rc;                                                    \
        })
 
-static inline ssize_t
-__attribute__((__unused__))
+static inline ssize_t UNUSED
 format_hex_helper(char *buf, size_t size, const char *dp_type, char *separator,
                  int stride, const void * const addr, const size_t len)
 {
@@ -107,8 +106,7 @@ format_hex_helper(char *buf, size_t size, const char *dp_type, char *separator,
        format_helper(format_hex_helper, buf, size, off, dp_type, sep, stride, \
                      addr, len)
 
-static inline ssize_t
-__attribute__((__unused__))
+static inline ssize_t UNUSED
 format_vendor_helper(char *buf, size_t size, char *label, const_efidp dp)
 {
        ssize_t off = 0;
index d7546ff..7808e85 100644 (file)
@@ -52,9 +52,7 @@ typedef struct {
 static error_table_entry *error_table;
 static unsigned int current;
 
-int
-__attribute__((__visibility__ ("default")))
-__attribute__((__nonnull__ (2, 3, 4, 5, 6)))
+int PUBLIC NONNULL(2, 3, 4, 5, 6)
 efi_error_get(unsigned int n,
              char ** const filename,
              char ** const function,
@@ -80,10 +78,7 @@ efi_error_get(unsigned int n,
        return 1;
 }
 
-int
-__attribute__((__visibility__ ("default")))
-__attribute__((__nonnull__ (1, 2, 5)))
-__attribute__((__format__ (printf, 5, 6)))
+int PUBLIC NONNULL(1, 2, 5) PRINTF(5, 6)
 efi_error_set(const char *filename,
              const char *function,
              int line,
@@ -141,9 +136,7 @@ err:
        return -1;
 }
 
-void
-__attribute__((__visibility__ ("default")))
-__attribute__((destructor))
+void PUBLIC DESTRUCTOR
 efi_error_clear(void)
 {
        if (error_table) {
index 7e0b1a0..8321bd3 100644 (file)
@@ -54,9 +54,7 @@ struct efi_variable {
  * }
  */
 
-ssize_t
-__attribute__((__nonnull__ (1, 3)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(1, 3) PUBLIC
 efi_variable_import(uint8_t *data, size_t size, efi_variable_t **var_out)
 {
        efi_variable_t var;
@@ -148,9 +146,7 @@ efi_variable_import(uint8_t *data, size_t size, efi_variable_t **var_out)
        return size;
 }
 
-ssize_t
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(1) PUBLIC
 efi_variable_export(efi_variable_t *var, uint8_t *data, size_t size)
 {
        size_t name_len = strlen(var->name);
@@ -204,13 +200,7 @@ efi_variable_export(efi_variable_t *var, uint8_t *data, size_t size)
        return needed;
 }
 
-efi_variable_t *
-#if 0 /* we get it from the decl instead of the defn here, because GCC gets
-       * confused and thinks we're saying the /return type/ has visibility
-       * and that makes no sense at all except in C++ where it's a class type.
-       */
-__attribute__((__visibility__ ("default")))
-#endif
+efi_variable_t PUBLIC *
 efi_variable_alloc(void)
 {
        efi_variable_t *var = calloc(1, sizeof (efi_variable_t));
@@ -221,8 +211,7 @@ efi_variable_alloc(void)
        return var;
 }
 
-void
-__attribute__((__visibility__ ("default")))
+void PUBLIC
 efi_variable_free(efi_variable_t *var, int free_data)
 {
        if (!var)
@@ -243,23 +232,14 @@ efi_variable_free(efi_variable_t *var, int free_data)
        free(var);
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_variable_set_name(efi_variable_t *var, char *name)
 {
        var->name = name;
        return 0;
 }
 
-char *
-__attribute__((__nonnull__ (1)))
-#if 0 /* we get it from the decl instead of the defn here, because GCC gets
-       * confused and thinks we're saying the /return type/ has visibility
-       * and that makes no sense at all except in C++ where it's a class type.
-       */
-__attribute__((__visibility__ ("default")))
-#endif
+char PUBLIC NONNULL(1) *
 efi_variable_get_name(efi_variable_t *var)
 {
        if (!var->name) {
@@ -270,18 +250,14 @@ efi_variable_get_name(efi_variable_t *var)
        return var->name;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_variable_set_guid(efi_variable_t *var, efi_guid_t *guid)
 {
        var->guid = guid;
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_variable_get_guid(efi_variable_t *var, efi_guid_t **guid)
 {
        if (!var->guid) {
@@ -293,9 +269,7 @@ efi_variable_get_guid(efi_variable_t *var, efi_guid_t **guid)
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_variable_set_data(efi_variable_t *var, uint8_t *data, size_t size)
 {
        if (!size) {
@@ -308,9 +282,7 @@ efi_variable_set_data(efi_variable_t *var, uint8_t *data, size_t size)
        return 0;
 }
 
-ssize_t
-__attribute__((__nonnull__ (1, 2, 3)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(1, 2, 3) PUBLIC
 efi_variable_get_data(efi_variable_t *var, uint8_t **data, size_t *size)
 {
        if (var->data || !var->data_size) {
@@ -323,18 +295,14 @@ efi_variable_get_data(efi_variable_t *var, uint8_t **data, size_t *size)
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1) PUBLIC
 efi_variable_set_attributes(efi_variable_t *var, uint64_t attrs)
 {
        var->attrs = attrs;
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_variable_get_attributes(efi_variable_t *var, uint64_t *attrs)
 {
        if (var->attrs == ATTRS_UNSET) {
@@ -346,9 +314,7 @@ efi_variable_get_attributes(efi_variable_t *var, uint64_t *attrs)
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1) PUBLIC
 efi_variable_realize(efi_variable_t *var)
 {
        if (!var->name || !var->data || !var->data_size ||
index 1234bab..e6af2fa 100644 (file)
@@ -31,8 +31,7 @@
 
 static DIR *dir;
 
-static inline int
-__attribute__((unused))
+static inline int UNUSED
 generic_get_next_variable_name(const char *path, efi_guid_t **guid, char **name)
 {
        static char ret_name[NAME_MAX+1];
@@ -119,8 +118,8 @@ generic_get_next_variable_name(const char *path, efi_guid_t **guid, char **name)
        return 1;
 }
 
-static void __attribute__((destructor)) close_dir(void);
-static void
+static void DESTRUCTOR close_dir(void);
+static void DESTRUCTOR
 close_dir(void)
 {
        if (dir != NULL) {
@@ -131,9 +130,7 @@ close_dir(void)
 
 /* this is a simple read/delete/write implementation of "update".  Good luck.
  * -- pjones */
-static int
-__attribute__((__unused__))
-__attribute__((__flatten__))
+static int UNUSED FLATTEN
 generic_append_variable(efi_guid_t guid, const char *name,
                       uint8_t *new_data, size_t new_data_size,
                       uint32_t new_attributes)
index 0ab315d..95b1e33 100644 (file)
--- a/src/gpt.c
+++ b/src/gpt.c
@@ -727,9 +727,7 @@ find_valid_gpt(int fd, gpt_header ** gpt, gpt_entry ** ptes,
  *  non-zero on failure
  *
  ************************************************************/
-int
-__attribute__((__nonnull__ (3, 4, 5, 6, 7)))
-__attribute__((__visibility__ ("hidden")))
+int NONNULL(3, 4, 5, 6, 7) HIDDEN
 gpt_disk_get_partition_info(int fd, uint32_t num, uint64_t * start,
                            uint64_t * size, uint8_t *signature,
                            uint8_t * mbr_type, uint8_t * signature_type,
index 678ee37..029eeb9 100644 (file)
--- a/src/gpt.h
+++ b/src/gpt.h
@@ -77,13 +77,13 @@ typedef struct _gpt_header {
        uint32_t sizeof_partition_entry;
        uint32_t partition_entry_array_crc32;
        uint8_t reserved2[GPT_BLOCK_SIZE - 92];
-} __attribute__ ((packed)) gpt_header;
+} PACKED gpt_header;
 
 typedef struct _gpt_entry_attributes {
        uint64_t required_to_function:1;
        uint64_t reserved:47;
         uint64_t type_guid_specific:16;
-} __attribute__ ((packed)) gpt_entry_attributes;
+} PACKED gpt_entry_attributes;
 
 typedef struct _gpt_entry {
        efi_guid_t partition_type_guid;
@@ -92,7 +92,7 @@ typedef struct _gpt_entry {
        uint64_t ending_lba;
        gpt_entry_attributes attributes;
        uint16_t partition_name[72 / sizeof(uint16_t)];
-} __attribute__ ((packed)) gpt_entry;
+} PACKED gpt_entry;
 
 
 /*
@@ -126,7 +126,7 @@ typedef struct _partition_record {
                                   EFI firmware to define the start of the partition. */
        uint32_t size_in_lba;   /* Size of partition in LBA. Used by EFI firmware to determine
                                   the size of the partition. */
-} __attribute__ ((packed)) partition_record;
+} PACKED partition_record;
 
 
 /* Protected Master Boot Record  & Legacy MBR share same structure */
@@ -138,7 +138,7 @@ typedef struct _legacy_mbr {
        uint16_t unknown;
        partition_record partition[4];
        uint16_t signature;
-} __attribute__ ((packed)) legacy_mbr;
+} PACKED legacy_mbr;
 
 #define EFI_GPT_PRIMARY_PARTITION_TABLE_LBA 1
 
@@ -149,8 +149,7 @@ extern int gpt_disk_get_partition_info (int fd, uint32_t num, uint64_t *start,
                                        uint8_t *signature_type,
                                        int ignore_pmbr_error,
                                        int logical_sector_size)
-       __attribute__((__nonnull__ (3, 4, 5, 6, 7)))
-       __attribute__((__visibility__ ("hidden")));
+       NONNULL(3, 4, 5, 6, 7) HIDDEN;
 
 #endif /* _EFIBOOT_GPT_H */
 
index 514c916..306c9ff 100644 (file)
 
 extern const efi_guid_t efi_guid_zero;
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_guid_cmp(const efi_guid_t *a, const efi_guid_t *b)
 {
        return memcmp(a, b, sizeof (efi_guid_t));
 }
 
-int
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1) PUBLIC
 efi_guid_is_zero(const efi_guid_t *guid)
 {
        return !efi_guid_cmp(guid,&efi_guid_zero);
@@ -48,13 +44,9 @@ efi_guid_is_zero(const efi_guid_t *guid)
 
 int
 efi_guid_is_empty(const efi_guid_t *guid)
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
-__attribute__ ((weak, alias ("efi_guid_is_zero")));
+        NONNULL(1) PUBLIC ALIAS(efi_guid_is_zero);
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_str_to_guid(const char *s, efi_guid_t *guid)
 {
        int rc;
@@ -64,9 +56,7 @@ efi_str_to_guid(const char *s, efi_guid_t *guid)
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1) PUBLIC
 efi_guid_to_str(const efi_guid_t *guid, char **sp)
 {
        char *ret = NULL;
@@ -104,17 +94,12 @@ efi_guid_to_str(const efi_guid_t *guid, char **sp)
        return rc;
 }
 
-extern struct guidname efi_well_known_guids
-       __attribute__((__visibility__ ("default")));
-extern struct guidname efi_well_known_names
-       __attribute__((__visibility__ ("default")));
-extern struct guidname efi_well_known_guids_end
-       __attribute__((__visibility__ ("default")));
-extern struct guidname efi_well_known_names_end
-       __attribute__((__visibility__ ("default")));
-
-static int
-__attribute__((__nonnull__ (1, 2)))
+extern struct guidname efi_well_known_guids PUBLIC;
+extern struct guidname efi_well_known_names PUBLIC;
+extern struct guidname efi_well_known_guids_end PUBLIC;
+extern struct guidname efi_well_known_names_end PUBLIC;
+
+static int NONNULL(1, 2)
 cmpguidp(const void *p1, const void *p2)
 {
        struct guidname *gn1 = (struct guidname *)p1;
@@ -123,8 +108,7 @@ cmpguidp(const void *p1, const void *p2)
        return memcmp(&gn1->guid, &gn2->guid, sizeof (gn1->guid));
 }
 
-static int
-__attribute__((__nonnull__ (1, 2)))
+static int NONNULL(1, 2)
 cmpnamep(const void *p1, const void *p2)
 {
        struct guidname *gn1 = (struct guidname *)p1;
@@ -133,8 +117,7 @@ cmpnamep(const void *p1, const void *p2)
        return memcmp(gn1->name, gn2->name, sizeof (gn1->name));
 }
 
-static int
-__attribute__((__nonnull__ (1, 2)))
+static int NONNULL(1, 2)
 _get_common_guidname(const efi_guid_t *guid, struct guidname **result)
 {
        intptr_t end = (intptr_t)&efi_well_known_guids_end;
@@ -159,9 +142,7 @@ _get_common_guidname(const efi_guid_t *guid, struct guidname **result)
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_guid_to_name(efi_guid_t *guid, char **name)
 {
        struct guidname *result;
@@ -176,9 +157,7 @@ efi_guid_to_name(efi_guid_t *guid, char **name)
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_guid_to_symbol(efi_guid_t *guid, char **symbol)
 {
        struct guidname *result;
@@ -192,9 +171,7 @@ efi_guid_to_symbol(efi_guid_t *guid, char **symbol)
        return -1;
 }
 
-int
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1) PUBLIC
 efi_guid_to_id_guid(const efi_guid_t *guid, char **sp)
 {
        struct guidname *result = NULL;
@@ -246,9 +223,7 @@ efi_guid_to_id_guid(const efi_guid_t *guid, char **sp)
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_symbol_to_guid(const char *symbol, efi_guid_t *guid)
 {
        void *dlh = dlopen(NULL, RTLD_LAZY);
@@ -264,9 +239,7 @@ efi_symbol_to_guid(const char *symbol, efi_guid_t *guid)
        return 0;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_name_to_guid(const char *name, efi_guid_t *guid)
 {
        intptr_t end = (intptr_t)&efi_well_known_names_end;
@@ -313,6 +286,4 @@ efi_name_to_guid(const char *name, efi_guid_t *guid)
 
 int
 efi_id_guid_to_guid(const char *name, efi_guid_t *guid)
-       __attribute__((__nonnull__ (1, 2)))
-       __attribute__((__visibility__ ("default")))
-       __attribute__ ((weak, alias ("efi_name_to_guid")));
+        NONNULL(1, 2) PUBLIC ALIAS(efi_name_to_guid);
index ae3bce0..d4a06f9 100644 (file)
@@ -76,8 +76,7 @@ check_segment_sanity(const char *text, size_t len)
        return 0;
 }
 
-static inline int
-__attribute__((unused))
+static inline int UNUSED
 text_to_guid(const char *text, efi_guid_t *guid)
 {
        /* these variables represent the length of the /string/ they hold,
index fcaf6b5..4038a24 100644 (file)
--- a/src/lib.c
+++ b/src/lib.c
@@ -42,9 +42,7 @@ struct efi_var_operations default_ops = {
 
 struct efi_var_operations *ops = NULL;
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 _efi_set_variable(efi_guid_t guid, const char *name, uint8_t *data,
                  size_t data_size, uint32_t attributes)
 {
@@ -54,11 +52,9 @@ _efi_set_variable(efi_guid_t guid, const char *name, uint8_t *data,
                efi_error("ops->set_variable() failed");
        return rc;
 }
-__asm__(".symver _efi_set_variable,_efi_set_variable@libefivar.so.0");
+VERSION(_efi_set_variable, _efi_set_variable@libefivar.so.0);
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 _efi_set_variable_variadic(efi_guid_t guid, const char *name, uint8_t *data,
                           size_t data_size, uint32_t attributes, ...)
 {
@@ -68,11 +64,9 @@ _efi_set_variable_variadic(efi_guid_t guid, const char *name, uint8_t *data,
                efi_error("ops->set_variable() failed");
        return rc;
 }
-__asm__(".symver _efi_set_variable_variadic,efi_set_variable@libefivar.so.0");
+VERSION(_efi_set_variable_variadic, efi_set_variable@libefivar.so.0);
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 _efi_set_variable_mode(efi_guid_t guid, const char *name, uint8_t *data,
                       size_t data_size, uint32_t attributes, mode_t mode)
 {
@@ -84,18 +78,14 @@ _efi_set_variable_mode(efi_guid_t guid, const char *name, uint8_t *data,
                efi_error_clear();
        return rc;
 }
-__asm__(".symver _efi_set_variable_mode,efi_set_variable@@LIBEFIVAR_0.24");
+VERSION(_efi_set_variable_mode,efi_set_variable@@LIBEFIVAR_0.24);
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 efi_set_variable(efi_guid_t guid, const char *name, uint8_t *data,
                 size_t data_size, uint32_t attributes, mode_t mode)
-       __attribute((weak, alias ("_efi_set_variable_mode")));
+        ALIAS(_efi_set_variable_mode);
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 efi_append_variable(efi_guid_t guid, const char *name, uint8_t *data,
                        size_t data_size, uint32_t attributes)
 {
@@ -117,9 +107,7 @@ efi_append_variable(efi_guid_t guid, const char *name, uint8_t *data,
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2) PUBLIC
 efi_del_variable(efi_guid_t guid, const char *name)
 {
        int rc;
@@ -136,9 +124,7 @@ efi_del_variable(efi_guid_t guid, const char *name)
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (2, 3, 4, 5)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3, 4, 5) PUBLIC
 efi_get_variable(efi_guid_t guid, const char *name, uint8_t **data,
                  size_t *data_size, uint32_t *attributes)
 {
@@ -156,9 +142,7 @@ efi_get_variable(efi_guid_t guid, const char *name, uint8_t **data,
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 efi_get_variable_attributes(efi_guid_t guid, const char *name,
                            uint32_t *attributes)
 {
@@ -176,18 +160,14 @@ efi_get_variable_attributes(efi_guid_t guid, const char *name,
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2) PUBLIC
 efi_get_variable_exists(efi_guid_t guid, const char *name)
 {
        uint32_t unused_attributes = 0;
        return efi_get_variable_attributes(guid, name, &unused_attributes);
 }
 
-int
-__attribute__((__nonnull__ (2, 3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2, 3) PUBLIC
 efi_get_variable_size(efi_guid_t guid, const char *name, size_t *size)
 {
        int rc;
@@ -204,9 +184,7 @@ efi_get_variable_size(efi_guid_t guid, const char *name, size_t *size)
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (1, 2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1, 2) PUBLIC
 efi_get_next_variable_name(efi_guid_t **guid, char **name)
 {
        int rc;
@@ -223,9 +201,7 @@ efi_get_next_variable_name(efi_guid_t **guid, char **name)
        return rc;
 }
 
-int
-__attribute__((__nonnull__ (2)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(2) PUBLIC
 efi_chmod_variable(efi_guid_t guid, const char *name, mode_t mode)
 {
        int rc;
@@ -242,8 +218,7 @@ efi_chmod_variable(efi_guid_t guid, const char *name, mode_t mode)
        return rc;
 }
 
-int
-__attribute__((__visibility__ ("default")))
+int PUBLIC
 efi_variables_supported(void)
 {
        if (ops == &default_ops)
@@ -251,7 +226,7 @@ efi_variables_supported(void)
        return 1;
 }
 
-static void libefivar_init(void) __attribute__((constructor));
+static void libefivar_init(void) CONSTRUCTOR;
 
 static void
 libefivar_init(void)
index d3cca1c..0b35b77 100644 (file)
@@ -42,8 +42,7 @@
 
 #include "efiboot.h"
 
-int
-__attribute__((__visibility__ ("hidden")))
+int HIDDEN
 set_disk_and_part_name(struct disk_info *info)
 {
        char *linkbuf;
@@ -121,8 +120,7 @@ set_disk_and_part_name(struct disk_info *info)
        return 0;
 }
 
-int
-__attribute__((__visibility__ ("hidden")))
+int HIDDEN
 get_partition_number(const char *devpath)
 {
        struct stat statbuf = { 0, };
@@ -168,8 +166,7 @@ get_partition_number(const char *devpath)
        return ret;
 }
 
-int
-__attribute__((__visibility__ ("hidden")))
+int HIDDEN
 find_parent_devpath(const char * const child, char **parent)
 {
        int ret;
@@ -373,9 +370,8 @@ sysfs_sata_get_port_info(uint32_t print_id, struct disk_info *info)
  */
 static ssize_t
 sysfs_parse_pmem(uint8_t *buf,  ssize_t size, ssize_t *off,
-                const char *pbuf, ssize_t psize __attribute__((__unused__)),
-                ssize_t *poff __attribute__((__unused__)),
-                struct disk_info *info)
+                 const char *pbuf, ssize_t psize UNUSED,
+                 ssize_t *poff UNUSED, struct disk_info *info)
 {
        uint8_t *filebuf = NULL;
        int rc;
@@ -814,8 +810,7 @@ make_pci_path(uint8_t *buf, ssize_t size, char *pathstr, ssize_t *pathoff)
        return off;
 }
 
-int
-__attribute__((__visibility__ ("hidden")))
+int HIDDEN
 make_blockdev_path(uint8_t *buf, ssize_t size, struct disk_info *info)
 {
        char *linkbuf = NULL;
@@ -1010,8 +1005,7 @@ make_blockdev_path(uint8_t *buf, ssize_t size, struct disk_info *info)
        return off;
 }
 
-int
-__attribute__((__visibility__ ("hidden")))
+int HIDDEN
 eb_disk_info_from_fd(int fd, struct disk_info *info)
 {
        struct stat buf;
@@ -1160,8 +1154,7 @@ make_net_pci_path(uint8_t *buf, ssize_t size, const char * const ifname)
        return off;
 }
 
-ssize_t
-__attribute__((__visibility__ ("hidden")))
+ssize_t HIDDEN
 make_mac_path(uint8_t *buf, ssize_t size, const char * const ifname)
 {
        struct ifreq ifr;
index a42b920..f37c87a 100644 (file)
@@ -107,13 +107,13 @@ extern int make_blockdev_path(uint8_t *buf, ssize_t size,
 extern int eb_nvme_ns_id(int fd, uint32_t *ns_id);
 
 extern int get_partition_number(const char *devpath)
-       __attribute__((__visibility__ ("hidden")));
+        HIDDEN;
 
 extern int find_parent_devpath(const char * const child, char **parent)
-       __attribute__((__visibility__ ("hidden")));
+       HIDDEN;
 
 extern ssize_t make_mac_path(uint8_t *buf, ssize_t size,
                             const char * const ifname)
-       __attribute__((__visibility__ ("hidden")));
+       HIDDEN;
 
 #endif /* _EFIBOOT_LINUX_H */
index ba25474..e3c2862 100644 (file)
@@ -32,13 +32,9 @@ typedef struct efi_load_option_s {
        uint16_t description[];
        // uint8_t file_path_list[];
        // uint8_t optional_data[];
-}
-__attribute__((packed))
-efi_load_option;
+} PACKED efi_load_option;
 
-ssize_t
-__attribute__((__nonnull__ (6)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(6) PUBLIC
 efi_loadopt_create(uint8_t *buf, ssize_t size, uint32_t attributes,
                   efidp dp, ssize_t dp_size, unsigned char *description,
                   uint8_t *optional_data, size_t optional_data_size)
@@ -99,9 +95,7 @@ invalid:
        return sz;
 }
 
-ssize_t
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(1) PUBLIC
 efi_loadopt_optional_data_size(efi_load_option *opt, size_t size)
 {
        ssize_t sz;
@@ -149,9 +143,7 @@ efi_loadopt_optional_data_size(efi_load_option *opt, size_t size)
        return ret;
 }
 
-int
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1) PUBLIC
 efi_loadopt_is_valid(efi_load_option *opt, size_t size)
 {
        ssize_t rc;
@@ -160,33 +152,25 @@ efi_loadopt_is_valid(efi_load_option *opt, size_t size)
        return (rc >= 0);
 }
 
-uint32_t
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+uint32_t NONNULL(1) PUBLIC
 efi_loadopt_attrs(efi_load_option *opt)
 {
        return opt->attributes;
 }
 
-void
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+void NONNULL(1) PUBLIC
 efi_loadopt_attr_set(efi_load_option *opt, uint16_t attr)
 {
        opt->attributes |= attr;
 }
 
-void
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+void NONNULL(1) PUBLIC
 efi_loadopt_attr_clear(efi_load_option *opt, uint16_t attr)
 {
        opt->attributes &= ~attr;
 }
 
-uint16_t
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+uint16_t NONNULL(1) PUBLIC
 /* limit here is the /whole/ load option */
 efi_loadopt_pathlen(efi_load_option *opt, ssize_t limit)
 {
@@ -200,9 +184,7 @@ efi_loadopt_pathlen(efi_load_option *opt, ssize_t limit)
        return len;
 }
 
-efidp
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
+efidp NONNULL(1) PUBLIC
 /* limit here is the /whole/ load option */
 efi_loadopt_path(efi_load_option *opt, ssize_t limit)
 {
@@ -232,9 +214,7 @@ efi_loadopt_path(efi_load_option *opt, ssize_t limit)
        return dp;
 }
 
-int
-__attribute__((__nonnull__ (1,3)))
-__attribute__((__visibility__ ("default")))
+int NONNULL(1,3) PUBLIC
 efi_loadopt_optional_data(efi_load_option *opt, size_t opt_size,
                          unsigned char **datap, size_t *len)
 {
@@ -267,9 +247,7 @@ over_limit:
        return 0;
 }
 
-ssize_t
-__attribute__((__nonnull__ (3)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(3) PUBLIC
 efi_loadopt_args_from_file(uint8_t *buf, ssize_t size, char *filename)
 {
        int rc;
@@ -312,9 +290,7 @@ err:
        return ret;
 }
 
-ssize_t
-__attribute__((__nonnull__ (3)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(3) PUBLIC
 efi_loadopt_args_as_utf8(uint8_t *buf, ssize_t size, uint8_t *utf8)
 {
        ssize_t req;
@@ -339,9 +315,7 @@ efi_loadopt_args_as_utf8(uint8_t *buf, ssize_t size, uint8_t *utf8)
        return req;
 }
 
-ssize_t
-__attribute__((__nonnull__ (3)))
-__attribute__((__visibility__ ("default")))
+ssize_t NONNULL(3) PUBLIC
 efi_loadopt_args_as_ucs2(uint16_t *buf, ssize_t size, uint8_t *utf8)
 {
        ssize_t req;
@@ -364,8 +338,7 @@ efi_loadopt_args_as_ucs2(uint16_t *buf, ssize_t size, uint8_t *utf8)
 
 static unsigned char *last_desc;
 
-static void
-__attribute__((destructor))
+static void DESTRUCTOR
 teardown(void)
 {
        if (last_desc)
@@ -373,9 +346,7 @@ teardown(void)
        last_desc = NULL;
 }
 
-__attribute__((__nonnull__ (1)))
-__attribute__((__visibility__ ("default")))
-const unsigned char *
+const unsigned char NONNULL(1) PUBLIC *
 efi_loadopt_desc(efi_load_option *opt, ssize_t limit)
 {
        if (last_desc) {
index c8e7dd4..44fa5d9 100644 (file)
@@ -22,8 +22,7 @@
 #define ev_bits(val, mask, shift) \
        (((val) & ((mask) << (shift))) >> (shift))
 
-static inline size_t
-__attribute__((__unused__))
+static inline size_t UNUSED
 ucs2len(const uint16_t * const s, ssize_t limit)
 {
        ssize_t i;
@@ -32,8 +31,7 @@ ucs2len(const uint16_t * const s, ssize_t limit)
        return i;
 }
 
-static inline size_t
-__attribute__((__unused__))
+static inline size_t UNUSED
 ucs2size(const uint16_t * const s, ssize_t limit)
 {
        size_t rc = ucs2len(s, limit);
@@ -44,9 +42,7 @@ ucs2size(const uint16_t * const s, ssize_t limit)
        return rc;
 }
 
-static inline size_t
-__attribute__((__unused__))
-__attribute__((__nonnull__ (1)))
+static inline size_t UNUSED NONNULL(1)
 utf8len(uint8_t *s, ssize_t limit)
 {
        ssize_t i, j;
@@ -63,9 +59,7 @@ utf8len(uint8_t *s, ssize_t limit)
        return j;
 }
 
-static inline size_t
-__attribute__((__unused__))
-__attribute__((__nonnull__ (1)))
+static inline size_t UNUSED NONNULL(1)
 utf8size(uint8_t *s, ssize_t limit)
 {
        size_t ret = utf8len(s,limit);
@@ -74,8 +68,7 @@ utf8size(uint8_t *s, ssize_t limit)
        return ret;
 }
 
-static inline unsigned char *
-__attribute__((__unused__))
+static inline unsigned char * UNUSED
 ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
 {
        ssize_t i, j;
@@ -130,9 +123,7 @@ ucs2_to_utf8(const uint16_t * const chars, ssize_t limit)
        return (unsigned char *)strdup((char *)ret);
 }
 
-static inline ssize_t
-__attribute__((__unused__))
-__attribute__((__nonnull__ (4)))
+static inline ssize_t UNUSED NONNULL(4)
 utf8_to_ucs2(uint16_t *ucs2, ssize_t size, int terminate, uint8_t *utf8)
 {
        ssize_t req;
index 75b6d21..e6827c0 100644 (file)
 #include <tgmath.h>
 #include <unistd.h>
 
+#define UNUSED __attribute__((__unused__))
+#define HIDDEN __attribute__((__visibility__ ("hidden")))
+#define PUBLIC __attribute__((__visibility__ ("default")))
+#define DESTRUCTOR __attribute__((destructor))
+#define CONSTRUCTOR __attribute__((constructor))
+#define ALIAS(x) __attribute__((weak, alias (#x)))
+#define NONNULL(...) __attribute__((__nonnull__(__VA_ARGS__)))
+#define PRINTF(...) __attribute__((__format__(printf, __VA_ARGS__)))
+#define FLATTEN __attribute__((__flatten__))
+#define PACKED __attribute__((__packed__))
+#define VERSION(sym, ver) __asm__(".symver " # sym "," # ver)
+
 /*
  * I'm not actually sure when these appear, but they're present in the
  * version in front of me.
                 })
 #endif
 
-
-static inline int
-__attribute__((unused))
+static inline int UNUSED
 read_file(int fd, uint8_t **buf, size_t *bufsize)
 {
         uint8_t *p;
@@ -209,8 +219,7 @@ read_file(int fd, uint8_t **buf, size_t *bufsize)
         return 0;
 }
 
-static inline uint64_t
-__attribute__((unused))
+static inline uint64_t UNUSED
 lcm(uint64_t x, uint64_t y)
 {
         uint64_t m = x, n = y, o;
@@ -229,8 +238,7 @@ lcm(uint64_t x, uint64_t y)
  * Returns:
  *  sector size, or 512.
  ************************************************************/
-static inline int
-__attribute__((unused))
+static inline int UNUSED
 get_sector_size(int filedes)
 {
         int rc, sector_size = 512;
@@ -328,8 +336,7 @@ get_sector_size(int filedes)
                 _rc;                                                    \
         })
 
-static inline void
-__attribute__((unused))
+static inline void UNUSED
 swizzle_guid_to_uuid(efi_guid_t *guid)
 {
         uint32_t *u32;
index c1432c3..2181460 100644 (file)
@@ -56,7 +56,7 @@ typedef struct efi_kernel_variable_32_t {
        uint8_t         Data[1024];
        uint32_t        Status;
        uint32_t        Attributes;
-} __attribute__((packed)) efi_kernel_variable_32_t;
+} PACKED efi_kernel_variable_32_t;
 
 typedef struct efi_kernel_variable_64_t {
        uint16_t        VariableName[1024/sizeof(uint16_t)];
@@ -65,7 +65,7 @@ typedef struct efi_kernel_variable_64_t {
        uint8_t         Data[1024];
        uint64_t        Status;
        uint32_t        Attributes;
-} __attribute__((packed)) efi_kernel_variable_64_t;
+} PACKED efi_kernel_variable_64_t;
 
 static ssize_t
 get_file_data_size(int dfd, char *name)