From 3f0529fbbef01a7e5311c5fec77107bf768cb8d6 Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Thu, 17 May 2018 16:37:57 -0400 Subject: [PATCH] More aggressively use macros for compiler attributes Signed-off-by: Peter Jones --- src/creator.c | 34 +++++++++++----------------- src/disk.c | 15 ++++++------- src/disk.h | 2 +- src/dp-acpi.c | 9 +++----- src/dp-hw.c | 6 ++--- src/dp-media.c | 6 ++--- src/dp-message.c | 36 ++++++++++++------------------ src/dp.c | 40 ++++++++++++--------------------- src/dp.h | 6 ++--- src/error.c | 13 +++-------- src/export.c | 60 +++++++++++--------------------------------------- src/generics.h | 11 ++++------ src/gpt.c | 4 +--- src/gpt.h | 13 +++++------ src/guid.c | 67 ++++++++++++++++---------------------------------------- src/guid.h | 3 +-- src/lib.c | 61 +++++++++++++++------------------------------------ src/linux.c | 23 +++++++------------ src/linux.h | 6 ++--- src/loadopt.c | 59 +++++++++++++------------------------------------ src/ucs2.h | 21 +++++------------- src/util.h | 25 +++++++++++++-------- src/vars.c | 4 ++-- 23 files changed, 173 insertions(+), 351 deletions(-) diff --git a/src/creator.c b/src/creator.c index e9bea22..147826e 100644 --- a/src/creator.c +++ b/src/creator.c @@ -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, diff --git a/src/disk.c b/src/disk.c index c8fd419..cc3aff3 100644 --- a/src/disk.c +++ b/src/disk.c @@ -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) { diff --git a/src/disk.h b/src/disk.h index ecd032f..4811460 100644 --- a/src/disk.h +++ b/src/disk.h @@ -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)) diff --git a/src/dp-acpi.c b/src/dp-acpi.c index 9611e73..f003cc4 100644 --- a/src/dp-acpi.c +++ b/src/dp-acpi.c @@ -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) diff --git a/src/dp-hw.c b/src/dp-hw.c index f991409..0dcf991 100644 --- a/src/dp-hw.c +++ b/src/dp-hw.c @@ -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; diff --git a/src/dp-media.c b/src/dp-media.c index 7095c48..0a0993e 100644 --- a/src/dp-media.c +++ b/src/dp-media.c @@ -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) diff --git a/src/dp-message.c b/src/dp-message.c index b32d590..5af6643 100644 --- a/src/dp-message.c +++ b/src/dp-message.c @@ -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; diff --git a/src/dp.c b/src/dp.c index bbf3681..4e76e25 100644 --- 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) { diff --git a/src/dp.h b/src/dp.h index 4f48c49..aa4e390 100644 --- 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; diff --git a/src/error.c b/src/error.c index d7546ff..7808e85 100644 --- a/src/error.c +++ b/src/error.c @@ -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) { diff --git a/src/export.c b/src/export.c index 7e0b1a0..8321bd3 100644 --- a/src/export.c +++ b/src/export.c @@ -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 || diff --git a/src/generics.h b/src/generics.h index 1234bab..e6af2fa 100644 --- a/src/generics.h +++ b/src/generics.h @@ -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) diff --git a/src/gpt.c b/src/gpt.c index 0ab315d..95b1e33 100644 --- 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, diff --git a/src/gpt.h b/src/gpt.h index 678ee37..029eeb9 100644 --- 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 */ diff --git a/src/guid.c b/src/guid.c index 514c916..306c9ff 100644 --- a/src/guid.c +++ b/src/guid.c @@ -30,17 +30,13 @@ 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); diff --git a/src/guid.h b/src/guid.h index ae3bce0..d4a06f9 100644 --- a/src/guid.h +++ b/src/guid.h @@ -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, diff --git a/src/lib.c b/src/lib.c index fcaf6b5..4038a24 100644 --- 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) diff --git a/src/linux.c b/src/linux.c index d3cca1c..0b35b77 100644 --- a/src/linux.c +++ b/src/linux.c @@ -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; diff --git a/src/linux.h b/src/linux.h index a42b920..f37c87a 100644 --- a/src/linux.h +++ b/src/linux.h @@ -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 */ diff --git a/src/loadopt.c b/src/loadopt.c index ba25474..e3c2862 100644 --- a/src/loadopt.c +++ b/src/loadopt.c @@ -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) { diff --git a/src/ucs2.h b/src/ucs2.h index c8e7dd4..44fa5d9 100644 --- a/src/ucs2.h +++ b/src/ucs2.h @@ -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; diff --git a/src/util.h b/src/util.h index 75b6d21..e6827c0 100644 --- a/src/util.h +++ b/src/util.h @@ -35,6 +35,18 @@ #include #include +#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. @@ -131,9 +143,7 @@ }) #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; diff --git a/src/vars.c b/src/vars.c index c1432c3..2181460 100644 --- a/src/vars.c +++ b/src/vars.c @@ -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) -- 2.11.0