grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v8 07/22] libtasn1: Add the documentation


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [PATCH v8 07/22] libtasn1: Add the documentation
Date: Wed, 17 Jan 2024 05:56:43 +0300

LGTM for doc. Patches reviewed separately

On Tue, Jan 16, 2024 at 12:23 PM Gary Lin via Grub-devel
<grub-devel@gnu.org> wrote:
>
> Document libtasn1 in docs/grub-dev.texi and add the upgrade steps.
> Also add the patches to make libtasn1 compatible with grub code.
>
> Signed-off-by: Gary Lin <glin@suse.com>
> ---
>  docs/grub-dev.texi                            |  27 ++
>  ...asn1-disable-code-not-needed-in-grub.patch | 311 ++++++++++++++++++
>  ...tasn1-changes-for-grub-compatibility.patch | 209 ++++++++++++
>  3 files changed, 547 insertions(+)
>  create mode 100644 
> grub-core/lib/libtasn1-patches/0001-libtasn1-disable-code-not-needed-in-grub.patch
>  create mode 100644 
> grub-core/lib/libtasn1-patches/0002-libtasn1-changes-for-grub-compatibility.patch
>
> diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
> index 1276c5930..80c6f6738 100644
> --- a/docs/grub-dev.texi
> +++ b/docs/grub-dev.texi
> @@ -596,6 +596,33 @@ cp minilzo-2.10/*.[hc] grub-core/lib/minilzo
>  rm -r minilzo-2.10*
>  @end example
>
> +@node libtasn1
> +@section libtasn1
> +
> +libtasn1 is a library providing Abstract Syntax Notation One (ASN.1, as
> +specified by the X.680 ITU-T recommendation) parsing and structures 
> management,
> +and Distinguished Encoding Rules (DER, as per X.690) encoding and decoding
> +functions.
> +
> +To upgrade to a new version of the libtasn1 library, download the release
> +tarball and copy the files into the target directory:
> +
> +@example
> +curl -L -O https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.19.0.tar.gz
> +tar -zxf libtasn1-4.19.0.tar.gz
> +rm -r grub-core/lib/libtasn1/
> +mkdir libtasn1/lib
> +mkdir -p grub-core/lib/libtasn1/lib/
> +cp libtasn1-4.19.0/{README.md,COPYING} grub-core/lib/libtasn1/
> +cp 
> libtasn1-4.19.0/lib/{coding.c,decoding.c,element.c,element.h,errors.c,gstr.c,gstr.h,int.h,parser_aux.c,parser_aux.h,structure.c,structure.h}
>  grub-core/lib/libtasn1/lib/
> +cp libtasn1-4.19.0/lib/includes/libtasn1.h include/grub/
> +rm -rf libtasn1-4.19.0
> +@end example
> +
> +After upgrading the library, it is necessary to apply the patches in
> +@file{grub-core/lib/libtasn1-patches/} to adjust the code to be compatible 
> with
> +grub.
> +
>  @node Debugging
>  @chapter Debugging
>
> diff --git 
> a/grub-core/lib/libtasn1-patches/0001-libtasn1-disable-code-not-needed-in-grub.patch
>  
> b/grub-core/lib/libtasn1-patches/0001-libtasn1-disable-code-not-needed-in-grub.patch
> new file mode 100644
> index 000000000..4f116dda5
> --- /dev/null
> +++ 
> b/grub-core/lib/libtasn1-patches/0001-libtasn1-disable-code-not-needed-in-grub.patch
> @@ -0,0 +1,311 @@
> +From c1c3459159d5d84e0d6da6eec6b86df5ccee1417 Mon Sep 17 00:00:00 2001
> +From: Daniel Axtens <dja@axtens.net>
> +Date: Fri, 1 May 2020 17:12:23 +1000
> +Subject: [PATCH 1/2] libtasn1: disable code not needed in grub
> +
> +We don't expect to be able to write ASN.1, only read it,
> +so we can disable some code.
> +
> +Do that with #if 0/#endif, rather than deletion. This means
> +that the difference between upstream and grub is smaller,
> +which should make updating libtasn1 easier in the future.
> +
> +With these exclusions we also avoid the need for minmax.h,
> +which is convenient because it means we don't have to
> +import it from gnulib.
> +
> +Signed-off-by: Daniel Axtens <dja@axtens.net>
> +Signed-off-by: Gary Lin <glin@suse.com>
> +---
> + grub-core/lib/libtasn1/lib/coding.c    | 12 ++++++++++--
> + grub-core/lib/libtasn1/lib/decoding.c  |  2 ++
> + grub-core/lib/libtasn1/lib/element.c   |  4 ++--
> + grub-core/lib/libtasn1/lib/errors.c    |  3 +++
> + grub-core/lib/libtasn1/lib/structure.c | 10 ++++++----
> + include/grub/libtasn1.h                | 15 +++++++++++++++
> + 6 files changed, 38 insertions(+), 8 deletions(-)
> +
> +diff --git a/grub-core/lib/libtasn1/lib/coding.c 
> b/grub-core/lib/libtasn1/lib/coding.c
> +index ea5bc370e..841fe47a9 100644
> +--- a/grub-core/lib/libtasn1/lib/coding.c
> ++++ b/grub-core/lib/libtasn1/lib/coding.c
> +@@ -30,11 +30,11 @@
> + #include "parser_aux.h"
> + #include <gstr.h>
> + #include "element.h"
> +-#include "minmax.h"
> + #include <structure.h>
> +
> + #define MAX_TAG_LEN 16
> +
> ++#if 0
> + /******************************************************/
> + /* Function : _asn1_error_description_value_not_found */
> + /* Description: creates the ErrorDescription string   */
> +@@ -58,6 +58,7 @@ _asn1_error_description_value_not_found (asn1_node node,
> +   Estrcat (ErrorDescription, "' not found");
> +
> + }
> ++#endif
> +
> + /**
> +  * asn1_length_der:
> +@@ -244,6 +245,7 @@ asn1_encode_simple_der (unsigned int etype, const 
> unsigned char *str,
> +   return ASN1_SUCCESS;
> + }
> +
> ++#if 0
> + /******************************************************/
> + /* Function : _asn1_time_der                          */
> + /* Description: creates the DER coding for a TIME     */
> +@@ -278,7 +280,7 @@ _asn1_time_der (unsigned char *str, int str_len, 
> unsigned char *der,
> +
> +   return ASN1_SUCCESS;
> + }
> +-
> ++#endif
> +
> + /*
> + void
> +@@ -519,6 +521,7 @@ asn1_bit_der (const unsigned char *str, int bit_len,
> + }
> +
> +
> ++#if 0
> + /******************************************************/
> + /* Function : _asn1_complete_explicit_tag             */
> + /* Description: add the length coding to the EXPLICIT */
> +@@ -595,6 +598,7 @@ _asn1_complete_explicit_tag (asn1_node node, unsigned 
> char *der,
> +
> +   return ASN1_SUCCESS;
> + }
> ++#endif
> +
> + const tag_and_class_st _asn1_tags[] = {
> +   [ASN1_ETYPE_GENERALSTRING] =
> +@@ -647,6 +651,8 @@ const tag_and_class_st _asn1_tags[] = {
> +
> + unsigned int _asn1_tags_size = sizeof (_asn1_tags) / sizeof (_asn1_tags[0]);
> +
> ++
> ++#if 0
> + /******************************************************/
> + /* Function : _asn1_insert_tag_der                    */
> + /* Description: creates the DER coding of tags of one */
> +@@ -1423,3 +1429,5 @@ error:
> +   asn1_delete_structure (&node);
> +   return err;
> + }
> ++
> ++#endif
> +\ No newline at end of file
> +diff --git a/grub-core/lib/libtasn1/lib/decoding.c 
> b/grub-core/lib/libtasn1/lib/decoding.c
> +index b9245c486..92fc87c23 100644
> +--- a/grub-core/lib/libtasn1/lib/decoding.c
> ++++ b/grub-core/lib/libtasn1/lib/decoding.c
> +@@ -1620,6 +1620,7 @@ asn1_der_decoding (asn1_node * element, const void 
> *ider, int ider_len,
> +   return asn1_der_decoding2 (element, ider, &ider_len, 0, errorDescription);
> + }
> +
> ++#if 0
> + /**
> +  * asn1_der_decoding_element:
> +  * @structure: pointer to an ASN1 structure
> +@@ -1650,6 +1651,7 @@ asn1_der_decoding_element (asn1_node * structure, 
> const char *elementName,
> + {
> +   return asn1_der_decoding (structure, ider, len, errorDescription);
> + }
> ++#endif
> +
> + /**
> +  * asn1_der_decoding_startEnd:
> +diff --git a/grub-core/lib/libtasn1/lib/element.c 
> b/grub-core/lib/libtasn1/lib/element.c
> +index d4c558e10..5c7941e53 100644
> +--- a/grub-core/lib/libtasn1/lib/element.c
> ++++ b/grub-core/lib/libtasn1/lib/element.c
> +@@ -191,7 +191,7 @@ _asn1_append_sequence_set (asn1_node node, struct 
> node_tail_cache_st *pcache)
> +   return ASN1_SUCCESS;
> + }
> +
> +-
> ++#if 0
> + /**
> +  * asn1_write_value:
> +  * @node_root: pointer to a structure
> +@@ -646,7 +646,7 @@ asn1_write_value (asn1_node node_root, const char *name,
> +
> +   return ASN1_SUCCESS;
> + }
> +-
> ++#endif
> +
> + #define PUT_VALUE( ptr, ptr_size, data, data_size) \
> +       *len = data_size; \
> +diff --git a/grub-core/lib/libtasn1/lib/errors.c 
> b/grub-core/lib/libtasn1/lib/errors.c
> +index aef5dfe6f..0175ddedb 100644
> +--- a/grub-core/lib/libtasn1/lib/errors.c
> ++++ b/grub-core/lib/libtasn1/lib/errors.c
> +@@ -57,6 +57,8 @@ static const libtasn1_error_entry error_algorithms[] = {
> +   {0, 0}
> + };
> +
> ++
> ++#if 0
> + /**
> +  * asn1_perror:
> +  * @error: is an error returned by a libtasn1 function.
> +@@ -73,6 +75,7 @@ asn1_perror (int error)
> +   const char *str = asn1_strerror (error);
> +   fprintf (stderr, "LIBTASN1 ERROR: %s\n", str ? str : "(null)");
> + }
> ++#endif
> +
> + /**
> +  * asn1_strerror:
> +diff --git a/grub-core/lib/libtasn1/lib/structure.c 
> b/grub-core/lib/libtasn1/lib/structure.c
> +index 512dd601f..3e1e35ba5 100644
> +--- a/grub-core/lib/libtasn1/lib/structure.c
> ++++ b/grub-core/lib/libtasn1/lib/structure.c
> +@@ -76,7 +76,7 @@ _asn1_find_left (asn1_node_const node)
> +   return node->left;
> + }
> +
> +-
> ++#if 0
> + int
> + _asn1_create_static_structure (asn1_node_const pointer,
> +                              char *output_file_name, char *vector_name)
> +@@ -155,7 +155,7 @@ _asn1_create_static_structure (asn1_node_const pointer,
> +
> +   return ASN1_SUCCESS;
> + }
> +-
> ++#endif
> +
> + /**
> +  * asn1_array2tree:
> +@@ -721,7 +721,7 @@ asn1_create_element (asn1_node_const definitions, const 
> char *source_name,
> +   return res;
> + }
> +
> +-
> ++#if 0
> + /**
> +  * asn1_print_structure:
> +  * @out: pointer to the output file (e.g. stdout).
> +@@ -1062,7 +1062,7 @@ asn1_print_structure (FILE * out, asn1_node_const 
> structure, const char *name,
> +       }
> +     }
> + }
> +-
> ++#endif
> +
> +
> + /**
> +@@ -1158,6 +1158,7 @@ asn1_find_structure_from_oid (asn1_node_const 
> definitions,
> +   return NULL;                        /* ASN1_ELEMENT_NOT_FOUND; */
> + }
> +
> ++#if 0
> + /**
> +  * asn1_copy_node:
> +  * @dst: Destination asn1 node.
> +@@ -1207,6 +1208,7 @@ asn1_copy_node (asn1_node dst, const char *dst_name,
> +
> +   return result;
> + }
> ++#endif
> +
> + /**
> +  * asn1_dup_node:
> +diff --git a/include/grub/libtasn1.h b/include/grub/libtasn1.h
> +index 51cc7879f..507e0679e 100644
> +--- a/include/grub/libtasn1.h
> ++++ b/include/grub/libtasn1.h
> +@@ -318,6 +318,8 @@ extern "C"
> + /*  Functions definitions          */
> + /***********************************/
> +
> ++/* These functions are not used in grub and should not be referenced. */
> ++# if 0
> +   extern ASN1_API int
> +     asn1_parser2tree (const char *file,
> +                     asn1_node * definitions, char *error_desc);
> +@@ -326,14 +328,17 @@ extern "C"
> +     asn1_parser2array (const char *inputFileName,
> +                      const char *outputFileName,
> +                      const char *vectorName, char *error_desc);
> ++# endif
> +
> +   extern ASN1_API int
> +     asn1_array2tree (const asn1_static_node * array,
> +                    asn1_node * definitions, char *errorDescription);
> +
> ++# if 0
> +   extern ASN1_API void
> +     asn1_print_structure (FILE * out, asn1_node_const structure,
> +                         const char *name, int mode);
> ++# endif
> +
> +   extern ASN1_API int
> +     asn1_create_element (asn1_node_const definitions,
> +@@ -347,9 +352,11 @@ extern "C"
> +   extern ASN1_API int
> +     asn1_delete_element (asn1_node structure, const char *element_name);
> +
> ++# if 0
> +   extern ASN1_API int
> +     asn1_write_value (asn1_node node_root, const char *name,
> +                     const void *ivalue, int len);
> ++# endif
> +
> +   extern ASN1_API int
> +     asn1_read_value (asn1_node_const root, const char *name,
> +@@ -366,9 +373,11 @@ extern "C"
> +     asn1_number_of_elements (asn1_node_const element, const char *name,
> +                            int *num);
> +
> ++# if 0
> +   extern ASN1_API int
> +     asn1_der_coding (asn1_node_const element, const char *name,
> +                    void *ider, int *len, char *ErrorDescription);
> ++# endif
> +
> +   extern ASN1_API int
> +     asn1_der_decoding2 (asn1_node * element, const void *ider,
> +@@ -379,6 +388,7 @@ extern "C"
> +     asn1_der_decoding (asn1_node * element, const void *ider,
> +                      int ider_len, char *errorDescription);
> +
> ++# if 0
> + /* Do not use. Use asn1_der_decoding() instead. */
> +   extern ASN1_API int
> +     asn1_der_decoding_element (asn1_node * structure,
> +@@ -386,6 +396,7 @@ extern "C"
> +                              const void *ider, int len,
> +                              char *errorDescription)
> +     _ASN1_GCC_ATTR_DEPRECATED;
> ++# endif
> +
> +   extern ASN1_API int
> +     asn1_der_decoding_startEnd (asn1_node element,
> +@@ -411,12 +422,16 @@ extern "C"
> +                                                           const char
> +                                                           *oidValue);
> +
> ++# if 0
> +     __LIBTASN1_PURE__
> +     extern ASN1_API const char *asn1_check_version (const char 
> *req_version);
> ++# endif
> +
> +   __LIBTASN1_PURE__ extern ASN1_API const char *asn1_strerror (int error);
> +
> ++# if 0
> +   extern ASN1_API void asn1_perror (int error);
> ++# endif
> +
> + # define ASN1_MAX_TAG_SIZE 4
> + # define ASN1_MAX_LENGTH_SIZE 9
> +--
> +2.35.3
> +
> diff --git 
> a/grub-core/lib/libtasn1-patches/0002-libtasn1-changes-for-grub-compatibility.patch
>  
> b/grub-core/lib/libtasn1-patches/0002-libtasn1-changes-for-grub-compatibility.patch
> new file mode 100644
> index 000000000..8547818da
> --- /dev/null
> +++ 
> b/grub-core/lib/libtasn1-patches/0002-libtasn1-changes-for-grub-compatibility.patch
> @@ -0,0 +1,209 @@
> +From 5d84feb27c073056739514bc0cb578fdf7cc5a90 Mon Sep 17 00:00:00 2001
> +From: Daniel Axtens <dja@axtens.net>
> +Date: Fri, 1 May 2020 20:44:29 +1000
> +Subject: [PATCH 2/2] libtasn1: changes for grub compatibility
> +
> +Do a few things to make libtasn1 compile as part of grub:
> +
> + - redefine _asn1_strcat. grub removed strcat so replace it with the
> +   appropriate calls to memcpy and strlen. Use this internally where
> +   strcat was used.
> +
> + - replace c_isdigit with grub_isdigit (and don't import c-ctype from
> +   gnulib) grub_isdigit provides the same functionality as c_isdigit: it
> +   determines if the input is an ASCII digit without regard for locale.
> +
> + - replace GL_ATTRIBUTE_PURE with __attribute__((pure)) which been
> +   supported since gcc-2.96. This avoids messing around with gnulib.
> +
> + - adjust libtasn1.h: drop the ASN1_API logic, it's not needed for our
> +   modules. Unconditionally support const and pure attributes and adjust
> +   header paths.
> +
> + - adjust header paths to "grub/libtasn1.h".
> +
> + - replace a 64 bit division with a call to grub_divmod64, preventing
> +   creation of __udivdi3 calls on 32 bit platforms.
> +
> +Signed-off-by: Daniel Axtens <dja@axtens.net>
> +Signed-off-by: Gary Lin <glin@suse.com>
> +---
> + grub-core/lib/libtasn1/lib/decoding.c   | 11 +++++-----
> + grub-core/lib/libtasn1/lib/element.c    |  3 ++-
> + grub-core/lib/libtasn1/lib/gstr.c       |  4 ++--
> + grub-core/lib/libtasn1/lib/int.h        |  4 ++--
> + grub-core/lib/libtasn1/lib/parser_aux.c |  7 +++---
> + include/grub/libtasn1.h                 | 29 +++++++------------------
> + 6 files changed, 24 insertions(+), 34 deletions(-)
> +
> +diff --git a/grub-core/lib/libtasn1/lib/decoding.c 
> b/grub-core/lib/libtasn1/lib/decoding.c
> +index 92fc87c23..4fd5f0ce6 100644
> +--- a/grub-core/lib/libtasn1/lib/decoding.c
> ++++ b/grub-core/lib/libtasn1/lib/decoding.c
> +@@ -32,7 +32,8 @@
> + #include <element.h>
> + #include <limits.h>
> + #include <intprops.h>
> +-#include "c-ctype.h"
> ++
> ++#define c_isdigit grub_isdigit
> +
> + #ifdef DEBUG
> + # define warn() fprintf(stderr, "%s: %d\n", __func__, __LINE__)
> +@@ -2016,8 +2017,8 @@ asn1_expand_octet_string (asn1_node_const definitions, 
> asn1_node * element,
> +         (p2->type & CONST_ASSIGN))
> +       {
> +         strcpy (name, definitions->name);
> +-        strcat (name, ".");
> +-        strcat (name, p2->name);
> ++        _asn1_strcat (name, ".");
> ++        _asn1_strcat (name, p2->name);
> +
> +         len = sizeof (value);
> +         result = asn1_read_value (definitions, name, value, &len);
> +@@ -2034,8 +2035,8 @@ asn1_expand_octet_string (asn1_node_const definitions, 
> asn1_node * element,
> +             if (p2)
> +               {
> +                 strcpy (name, definitions->name);
> +-                strcat (name, ".");
> +-                strcat (name, p2->name);
> ++                _asn1_strcat (name, ".");
> ++                _asn1_strcat (name, p2->name);
> +
> +                 result = asn1_create_element (definitions, name, &aux);
> +                 if (result == ASN1_SUCCESS)
> +diff --git a/grub-core/lib/libtasn1/lib/element.c 
> b/grub-core/lib/libtasn1/lib/element.c
> +index 5c7941e53..822a1b6ab 100644
> +--- a/grub-core/lib/libtasn1/lib/element.c
> ++++ b/grub-core/lib/libtasn1/lib/element.c
> +@@ -30,9 +30,10 @@
> + #include "parser_aux.h"
> + #include <gstr.h>
> + #include "structure.h"
> +-#include "c-ctype.h"
> + #include "element.h"
> +
> ++#define c_isdigit grub_isdigit
> ++
> + void
> + _asn1_hierarchical_name (asn1_node_const node, char *name, int name_size)
> + {
> +diff --git a/grub-core/lib/libtasn1/lib/gstr.c 
> b/grub-core/lib/libtasn1/lib/gstr.c
> +index eef419554..bc507d3d8 100644
> +--- a/grub-core/lib/libtasn1/lib/gstr.c
> ++++ b/grub-core/lib/libtasn1/lib/gstr.c
> +@@ -36,13 +36,13 @@ _asn1_str_cat (char *dest, size_t dest_tot_size, const 
> char *src)
> +
> +   if (dest_tot_size - dest_size > str_size)
> +     {
> +-      strcat (dest, src);
> ++      _asn1_strcat (dest, src);
> +     }
> +   else
> +     {
> +       if (dest_tot_size > dest_size)
> +       {
> +-        strncat (dest, src, (dest_tot_size - dest_size) - 1);
> ++        memcpy (dest + dest_size, src, (dest_tot_size - dest_size) - 1);
> +         dest[dest_tot_size - 1] = 0;
> +       }
> +     }
> +diff --git a/grub-core/lib/libtasn1/lib/int.h 
> b/grub-core/lib/libtasn1/lib/int.h
> +index d94d51c8c..07dd669ac 100644
> +--- a/grub-core/lib/libtasn1/lib/int.h
> ++++ b/grub-core/lib/libtasn1/lib/int.h
> +@@ -35,7 +35,7 @@
> + #  include <sys/types.h>
> + # endif
> +
> +-# include <libtasn1.h>
> ++# include "grub/libtasn1.h"
> +
> + # define ASN1_SMALL_VALUE_SIZE 16
> +
> +@@ -115,7 +115,7 @@ extern const tag_and_class_st _asn1_tags[];
> + # define _asn1_strtoul(n,e,b) strtoul((const char *) n, e, b)
> + # define _asn1_strcmp(a,b) strcmp((const char *)a, (const char *)b)
> + # define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b)
> +-# define _asn1_strcat(a,b) strcat((char *)a, (const char *)b)
> ++# define _asn1_strcat(a,b) memcpy((char *)a + strlen((const char *)a), 
> (const char *)b, strlen((const char *)b) + 1)
> +
> + # if SIZEOF_UNSIGNED_LONG_INT == 8
> + #  define _asn1_strtou64(n,e,b) strtoul((const char *) n, e, b)
> +diff --git a/grub-core/lib/libtasn1/lib/parser_aux.c 
> b/grub-core/lib/libtasn1/lib/parser_aux.c
> +index c05bd2339..8bdc42ae3 100644
> +--- a/grub-core/lib/libtasn1/lib/parser_aux.c
> ++++ b/grub-core/lib/libtasn1/lib/parser_aux.c
> +@@ -26,7 +26,8 @@
> + #include "gstr.h"
> + #include "structure.h"
> + #include "element.h"
> +-#include "c-ctype.h"
> ++
> ++#define c_isdigit grub_isdigit
> +
> + char _asn1_identifierMissing[ASN1_MAX_NAME_SIZE + 1]; /* identifier name 
> not found */
> +
> +@@ -40,7 +41,7 @@ char _asn1_identifierMissing[ASN1_MAX_NAME_SIZE + 1];      
>   /* identifier name not fou
> + #ifdef __clang__
> + __attribute__((no_sanitize ("integer")))
> + #endif
> +-     _GL_ATTRIBUTE_PURE static unsigned int _asn1_hash_name (const char *x)
> ++     __attribute__((__pure__)) static unsigned int _asn1_hash_name (const 
> char *x)
> + {
> +   const unsigned char *s = (unsigned char *) x;
> +   unsigned h = 0;
> +@@ -632,7 +633,7 @@ _asn1_ltostr (int64_t v, char str[LTOSTR_MAX_SIZE])
> +   count = 0;
> +   do
> +     {
> +-      d = val / 10;
> ++      d = grub_divmod64(val, 10, NULL);
> +       r = val - d * 10;
> +       temp[start + count] = '0' + (char) r;
> +       count++;
> +diff --git a/include/grub/libtasn1.h b/include/grub/libtasn1.h
> +index 507e0679e..201089c11 100644
> +--- a/include/grub/libtasn1.h
> ++++ b/include/grub/libtasn1.h
> +@@ -34,29 +34,16 @@
> + #ifndef LIBTASN1_H
> + # define LIBTASN1_H
> +
> +-# ifndef ASN1_API
> +-#  if defined ASN1_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
> +-#   define ASN1_API __attribute__((__visibility__("default")))
> +-#  elif defined ASN1_BUILDING && defined _MSC_VER && ! defined ASN1_STATIC
> +-#   define ASN1_API __declspec(dllexport)
> +-#  elif defined _MSC_VER && ! defined ASN1_STATIC
> +-#   define ASN1_API __declspec(dllimport)
> +-#  else
> +-#   define ASN1_API
> +-#  endif
> +-# endif
> ++/* grub: ASN1_API is not used */
> ++# define ASN1_API
> ++
> ++/* grub: all our supported compilers support these attributes */
> ++# define __LIBTASN1_CONST__  __attribute__((const))
> ++# define __LIBTASN1_PURE__  __attribute__((pure))
> +
> +-# ifdef __GNUC__
> +-#  define __LIBTASN1_CONST__  __attribute__((const))
> +-#  define __LIBTASN1_PURE__  __attribute__((pure))
> +-# else
> +-#  define __LIBTASN1_CONST__
> +-#  define __LIBTASN1_PURE__
> +-# endif
> +
> +-# include <sys/types.h>
> +-# include <time.h>
> +-# include <stdio.h>           /* for FILE* */
> ++# include <grub/types.h>
> ++# include <grub/time.h>
> +
> + # ifdef __cplusplus
> + extern "C"
> +--
> +2.35.3
> +
> --
> 2.35.3
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel



-- 
Regards
Vladimir 'phcoder' Serbinenko



reply via email to

[Prev in Thread] Current Thread [Next in Thread]