diff --git a/library/.gitignore b/library/.gitignore index f6619d273..cf2ddac3a 100644 --- a/library/.gitignore +++ b/library/.gitignore @@ -7,4 +7,3 @@ libmbed* /error.c /version_features.c /ssl_debug_helpers_generated.c -/ssl_debug_helpers_generated.h diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 1059e8c05..add078413 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -147,7 +147,6 @@ if(GEN_FILES) add_custom_command( OUTPUT - ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.h ${CMAKE_CURRENT_BINARY_DIR}/ssl_debug_helpers_generated.c COMMAND ${MBEDTLS_PYTHON_EXECUTABLE} @@ -162,7 +161,6 @@ else() link_to_source(error.c) link_to_source(version_features.c) link_to_source(ssl_debug_helpers_generated.c) - link_to_source(ssl_debug_helpers_generated.h) endif() if(CMAKE_COMPILER_IS_GNUCC) diff --git a/library/Makefile b/library/Makefile index a245d971d..b936c236b 100644 --- a/library/Makefile +++ b/library/Makefile @@ -290,7 +290,7 @@ libmbedcrypto.dll: $(OBJS_CRYPTO) .PHONY: generated_files GENERATED_FILES = \ error.c version_features.c \ - ssl_debug_helpers_generated.c ssl_debug_helpers_generated.h + ssl_debug_helpers_generated.c generated_files: $(GENERATED_FILES) error.c: ../scripts/generate_errors.pl @@ -300,10 +300,9 @@ error.c: echo " Gen $@" $(PERL) ../scripts/generate_errors.pl -ssl_debug_helpers_generated.c: | ssl_debug_helpers_generated.h -ssl_debug_helpers_generated.h: ../scripts/generate_ssl_debug_helpers.py -ssl_debug_helpers_generated.h: $(filter-out %config%,$(wildcard ../include/mbedtls/*.h)) -ssl_debug_helpers_generated.h: +ssl_debug_helpers_generated.c: ../scripts/generate_ssl_debug_helpers.py +ssl_debug_helpers_generated.c: $(filter-out %config%,$(wildcard ../include/mbedtls/*.h)) +ssl_debug_helpers_generated.c: echo " Gen $@" $(PYTHON) ../scripts/generate_ssl_debug_helpers.py --mbedtls-root .. . diff --git a/library/ssl_debug_helpers.h b/library/ssl_debug_helpers.h new file mode 100644 index 000000000..2fc416351 --- /dev/null +++ b/library/ssl_debug_helpers.h @@ -0,0 +1,44 @@ +/** + * \file ssl_debug_helpers.h + * + * \brief Automatically generated helper functions for debugging + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MBEDTLS_SSL_DEBUG_HELPERS_H +#define MBEDTLS_SSL_DEBUG_HELPERS_H + +#include "common.h" + +#if defined(MBEDTLS_DEBUG_C) + +#include "mbedtls/ssl.h" +#include "ssl_misc.h" + + +const char *mbedtls_ssl_states_str( mbedtls_ssl_states in ); + +const char *mbedtls_tls_prf_types_str( mbedtls_tls_prf_types in ); + +const char *mbedtls_ssl_key_export_type_str( mbedtls_ssl_key_export_type in ); + + + +#endif /* MBEDTLS_DEBUG_C */ + +#endif /* SSL_DEBUG_HELPERS_H */ diff --git a/library/ssl_tls13_client.c b/library/ssl_tls13_client.c index 31d7dafdb..dcf1ff896 100644 --- a/library/ssl_tls13_client.c +++ b/library/ssl_tls13_client.c @@ -34,7 +34,7 @@ #include "ssl_misc.h" #include "ecdh_misc.h" #include "ssl_tls13_keys.h" -#include "ssl_debug_helpers_generated.h" +#include "ssl_debug_helpers.h" /* Write extensions */ diff --git a/library/ssl_tls13_server.c b/library/ssl_tls13_server.c index faace4a0e..5e74083dd 100644 --- a/library/ssl_tls13_server.c +++ b/library/ssl_tls13_server.c @@ -26,7 +26,7 @@ #include "mbedtls/debug.h" #include "ssl_misc.h" -#include "ssl_debug_helpers_generated.h" +#include "ssl_debug_helpers.h" int mbedtls_ssl_tls13_handshake_server_step( mbedtls_ssl_context *ssl ) { diff --git a/scripts/generate_ssl_debug_helpers.py b/scripts/generate_ssl_debug_helpers.py index 19fac656c..c1487260d 100755 --- a/scripts/generate_ssl_debug_helpers.py +++ b/scripts/generate_ssl_debug_helpers.py @@ -232,46 +232,43 @@ class EnumDefinition: body = body.format(translation_table='\n'.join(translation_table), name=self._name, prototype=self._prototype) - prototype = 'const char *{name}_str( {prototype} in );\n' - prototype = prototype.format(name=self._name, - prototype=self._prototype) - return body, prototype + return body OUTPUT_C_TEMPLATE = '''\ /* Automatically generated by generate_ssl_debug_helpers.py. DO NOT EDIT. */ -#include "common.h" - -#if defined(MBEDTLS_DEBUG_C) - -#include "ssl_debug_helpers_generated.h" - -{functions} - -#endif /* MBEDTLS_DEBUG_C */ -/* End of automatically generated file. */ - -''' - -OUTPUT_H_TEMPLATE = '''\ -/* Automatically generated by generate_ssl_debug_helpers.py. DO NOT EDIT. */ -#ifndef MBEDTLS_SSL_DEBUG_HELPERS_H -#define MBEDTLS_SSL_DEBUG_HELPERS_H +/** + * \file ssl_debug_helpers_generated.c + * + * \brief Automatically generated helper functions for debugging + */ +/* + * Copyright The Mbed TLS Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "common.h" #if defined(MBEDTLS_DEBUG_C) -#include "mbedtls/ssl.h" -#include "ssl_misc.h" +#include "ssl_debug_helpers.h" {functions} #endif /* MBEDTLS_DEBUG_C */ - -#endif /* SSL_DEBUG_HELPERS_H */ - /* End of automatically generated file. */ ''' @@ -286,23 +283,17 @@ def generate_ssl_debug_helpers(output_directory, mbedtls_root): source_code = remove_c_comments(f.read()) definitions = dict() - prototypes = dict() for start, instance in preprocess_c_source_code(source_code, EnumDefinition): if start in definitions: continue if isinstance(instance, EnumDefinition): - definition, prototype = instance.generate_tranlation_function() + definition = instance.generate_tranlation_function() else: definition = instance - prototype = instance definitions[start] = definition - prototypes[start] = prototype function_definitions = [str(v) for _, v in sorted(definitions.items())] - function_prototypes = [str(v) for _, v in sorted(prototypes.items())] if output_directory == sys.stdout: - sys.stdout.write(OUTPUT_H_TEMPLATE.format( - functions='\n'.join(function_prototypes))) sys.stdout.write(OUTPUT_C_TEMPLATE.format( functions='\n'.join(function_definitions))) else: @@ -310,10 +301,6 @@ def generate_ssl_debug_helpers(output_directory, mbedtls_root): f.write(OUTPUT_C_TEMPLATE.format( functions='\n'.join(function_definitions))) - with open(os.path.join(output_directory, 'ssl_debug_helpers_generated.h'), 'w') as f: - f.write(OUTPUT_H_TEMPLATE.format( - functions='\n'.join(function_prototypes))) - def main(): """ diff --git a/tests/scripts/check-generated-files.sh b/tests/scripts/check-generated-files.sh index b35da3d68..994fd243b 100755 --- a/tests/scripts/check-generated-files.sh +++ b/tests/scripts/check-generated-files.sh @@ -118,7 +118,7 @@ check() check scripts/generate_errors.pl library/error.c check scripts/generate_query_config.pl programs/test/query_config.c check scripts/generate_features.pl library/version_features.c -check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.h library/ssl_debug_helpers_generated.c +check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c # generate_visualc_files enumerates source files (library/*.c). It doesn't # care about their content, but the files must exist. So it must run after # the step that creates or updates these files.