Skip to content

Commit

Permalink
Add support for feature generate_linkmap to cc_binary
Browse files Browse the repository at this point in the history
  • Loading branch information
t-8ch committed Jan 21, 2024
1 parent addf41b commit 6ba93ea
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ public static ToolchainTypeRequirement ccToolchainTypeRequirement(RuleDefinition
*/
public static final String NO_GENERATE_DEBUG_SYMBOLS_FEATURE_NAME = "no_generate_debug_symbols";

/** A feature to indicate whether to generate linkmap. For Apple platform only. */
/** A feature to indicate whether to generate linkmap. For Apple and UNIX platform only. */
public static final String GENERATE_LINKMAP_FEATURE_NAME = "generate_linkmap";

/** A feature to indicate whether to do linker deadstrip. For Apple platform only. */
Expand Down
14 changes: 13 additions & 1 deletion src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,8 @@ def _create_transitive_linking_actions(
pdb_file,
win_def_file,
additional_linkopts,
additional_make_variable_substitutions):
additional_make_variable_substitutions,
additional_outputs):
cc_compilation_outputs_with_only_objects = cc_common.create_compilation_outputs(objects = None, pic_objects = None)
deps_cc_info = CcInfo(linking_context = deps_cc_linking_context)
libraries_for_current_cc_linking_context = []
Expand Down Expand Up @@ -515,6 +516,7 @@ def _create_transitive_linking_actions(
never_link = True,
pdb_file = pdb_file,
win_def_file = win_def_file,
additional_outputs = additional_outputs,
)
cc_launcher_info = cc_internal.create_cc_launcher_info(cc_info = cc_info_without_extra_link_time_libraries, compilation_outputs = cc_compilation_outputs_with_only_objects)
return (cc_linking_outputs, cc_launcher_info, cc_linking_context)
Expand Down Expand Up @@ -714,6 +716,13 @@ def cc_binary_impl(ctx, additional_linkopts, force_linkstatic = False):
if cc_common.is_enabled(feature_configuration = feature_configuration, feature_name = "generate_pdb_file"):
pdb_file = ctx.actions.declare_file(_strip_extension(binary) + ".pdb", sibling = binary)

additional_linker_outputs = []

linkmap = None
if cc_common.is_enabled(feature_configuration = feature_configuration, feature_name = "generate_linkmap"):
linkmap = ctx.actions.declare_file(_strip_extension(binary) + ".map", sibling = binary)
additional_linker_outputs.append(linkmap)

extra_link_time_libraries = deps_cc_linking_context.extra_link_time_libraries()
linker_inputs_extra = depset()
runtime_libraries_extra = depset()
Expand All @@ -738,6 +747,7 @@ def cc_binary_impl(ctx, additional_linkopts, force_linkstatic = False):
win_def_file,
additional_linkopts,
additional_make_variable_substitutions,
additional_linker_outputs,
)

cc_linking_outputs_binary_library = cc_linking_outputs_binary.library_to_link
Expand Down Expand Up @@ -830,6 +840,8 @@ def cc_binary_impl(ctx, additional_linkopts, force_linkstatic = False):
output_groups["pdb_file"] = depset([pdb_file])
if generated_def_file != None:
output_groups["def_file"] = depset([generated_def_file])
if linkmap:
output_groups["linkmap"] = depset([linkmap])

if cc_linking_outputs_binary_library != None:
# For consistency and readability.
Expand Down
16 changes: 16 additions & 0 deletions tools/cpp/unix_cc_toolchain_config.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -1171,6 +1171,21 @@ def _impl(ctx):
],
)

generate_linkmap_feature = feature(
name = "generate_linkmap",
flag_sets = [
flag_set(
actions = all_link_actions,
flag_groups = [
flag_group(
flags = ["-Wl,-Map=%{output_execpath}.map"],
expand_if_available = "output_execpath",
),
],
),
],
)

output_execpath_flags_feature = feature(
name = "output_execpath_flags",
flag_sets = [
Expand Down Expand Up @@ -1379,6 +1394,7 @@ def _impl(ctx):
autofdo_feature,
build_interface_libraries_feature,
dynamic_library_linker_tool_feature,
generate_linkmap_feature,
shared_flag_feature,
linkstamps_feature,
output_execpath_flags_feature,
Expand Down

0 comments on commit 6ba93ea

Please sign in to comment.