diff options
Diffstat (limited to 'backends')
-rw-r--r-- | backends/aarch64_retval.c | 5 | ||||
-rw-r--r-- | backends/alpha_retval.c | 5 | ||||
-rw-r--r-- | backends/arm_retval.c | 5 | ||||
-rw-r--r-- | backends/i386_retval.c | 5 | ||||
-rw-r--r-- | backends/ia64_retval.c | 5 | ||||
-rw-r--r-- | backends/libebl_CPU.h | 15 | ||||
-rw-r--r-- | backends/m68k_retval.c | 5 | ||||
-rw-r--r-- | backends/ppc64_retval.c | 5 | ||||
-rw-r--r-- | backends/ppc_retval.c | 5 | ||||
-rw-r--r-- | backends/riscv_retval.c | 5 | ||||
-rw-r--r-- | backends/s390_retval.c | 5 | ||||
-rw-r--r-- | backends/sh_retval.c | 5 | ||||
-rw-r--r-- | backends/sparc_retval.c | 5 | ||||
-rw-r--r-- | backends/x86_64_retval.c | 7 |
14 files changed, 42 insertions, 40 deletions
diff --git a/backends/aarch64_retval.c b/backends/aarch64_retval.c index 72d4e8a3..8eaebaf1 100644 --- a/backends/aarch64_retval.c +++ b/backends/aarch64_retval.c @@ -303,12 +303,11 @@ aarch64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) } } - if (tag == DW_TAG_base_type - || tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (tag == DW_TAG_base_type || dwarf_is_pointer (tag)) { if (dwarf_bytesize_aux (&typedie, &size) < 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/alpha_retval.c b/backends/alpha_retval.c index d9bae3bc..9d2dd045 100644 --- a/backends/alpha_retval.c +++ b/backends/alpha_retval.c @@ -89,15 +89,14 @@ alpha_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; Dwarf_Word size; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/arm_retval.c b/backends/arm_retval.c index 1c28f016..fa6d3914 100644 --- a/backends/arm_retval.c +++ b/backends/arm_retval.c @@ -86,14 +86,13 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/i386_retval.c b/backends/i386_retval.c index 32fec728..8a9c2a2b 100644 --- a/backends/i386_retval.c +++ b/backends/i386_retval.c @@ -89,15 +89,14 @@ i386_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Word size; Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/ia64_retval.c b/backends/ia64_retval.c index 03ea4d89..7e12236d 100644 --- a/backends/ia64_retval.c +++ b/backends/ia64_retval.c @@ -264,14 +264,13 @@ ia64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/libebl_CPU.h b/backends/libebl_CPU.h index 0e507bd3..2abad76f 100644 --- a/backends/libebl_CPU.h +++ b/backends/libebl_CPU.h @@ -72,4 +72,19 @@ dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result) return DWARF_TAG_OR_RETURN (result); } +static inline bool +dwarf_is_pointer (int tag) +{ + return tag == DW_TAG_pointer_type + || tag == DW_TAG_ptr_to_member_type + || tag == DW_TAG_reference_type + || tag == DW_TAG_rvalue_reference_type; +} + +#define CASE_POINTER \ + case DW_TAG_pointer_type: \ + case DW_TAG_ptr_to_member_type: \ + case DW_TAG_reference_type: \ + case DW_TAG_rvalue_reference_type + #endif /* libebl_CPU.h */ diff --git a/backends/m68k_retval.c b/backends/m68k_retval.c index a653ba3a..bf41f862 100644 --- a/backends/m68k_retval.c +++ b/backends/m68k_retval.c @@ -96,15 +96,14 @@ m68k_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Word size; Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/ppc64_retval.c b/backends/ppc64_retval.c index eb1c11ec..1c20c890 100644 --- a/backends/ppc64_retval.c +++ b/backends/ppc64_retval.c @@ -100,14 +100,13 @@ ppc64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/ppc_retval.c b/backends/ppc_retval.c index 39b42da1..5144712b 100644 --- a/backends/ppc_retval.c +++ b/backends/ppc_retval.c @@ -112,14 +112,13 @@ ppc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/riscv_retval.c b/backends/riscv_retval.c index 34761486..0a1e02f8 100644 --- a/backends/riscv_retval.c +++ b/backends/riscv_retval.c @@ -170,12 +170,11 @@ riscv_return_value_location_lp64ifd (int fp, Dwarf_Die *functypedie, return pass_in_gpr_lp64 (locp, size); } - if (tag == DW_TAG_base_type - || tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (tag == DW_TAG_base_type || dwarf_is_pointer (tag)) { if (dwarf_bytesize_aux (&typedie, &size) < 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/s390_retval.c b/backends/s390_retval.c index 2043f985..0a01d27f 100644 --- a/backends/s390_retval.c +++ b/backends/s390_retval.c @@ -91,8 +91,7 @@ s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Die cudie; uint8_t asize; @@ -103,7 +102,7 @@ s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) if (dwarf_formudata (dwarf_attr (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = asize; else return -1; diff --git a/backends/sh_retval.c b/backends/sh_retval.c index 33d7d964..eac83b70 100644 --- a/backends/sh_retval.c +++ b/backends/sh_retval.c @@ -88,14 +88,13 @@ sh_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/sparc_retval.c b/backends/sparc_retval.c index fb81cdce..8b3fb629 100644 --- a/backends/sparc_retval.c +++ b/backends/sparc_retval.c @@ -95,8 +95,7 @@ sparc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, @@ -104,7 +103,7 @@ sparc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) { uint8_t asize; Dwarf_Die cudie; - if ((tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag) && dwarf_diecu (typedie, &cudie, &asize, NULL) != NULL) size = asize; else diff --git a/backends/x86_64_retval.c b/backends/x86_64_retval.c index f9114cb1..c29ee0e1 100644 --- a/backends/x86_64_retval.c +++ b/backends/x86_64_retval.c @@ -104,14 +104,13 @@ x86_64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + { + if (dwarf_is_pointer (tag)) size = 8; else return -1; |