[bazel] Migrate all linker scripts to use ld_library() Signed-off-by: Miguel Young de la Sota <mcyoung@google.com>
diff --git a/hw/top_earlgrey/sw/autogen/BUILD b/hw/top_earlgrey/sw/autogen/BUILD index b731307..f53520a 100644 --- a/hw/top_earlgrey/sw/autogen/BUILD +++ b/hw/top_earlgrey/sw/autogen/BUILD
@@ -2,6 +2,8 @@ # Licensed under the Apache License, Version 2.0, see LICENSE for details. # SPDX-License-Identifier: Apache-2.0 +load("//rules:linker.bzl", "ld_library") + package(default_visibility = ["//visibility:public"]) cc_library( @@ -15,9 +17,9 @@ ], ) -cc_library( - name = "linker_script", - deps = ["top_earlgrey_memory.ld"], +ld_library( + name = "top_earlgrey_memory", + fragments = ["top_earlgrey_memory.ld"], ) filegroup(
diff --git a/sw/device/BUILD b/sw/device/BUILD index 9d194a1..0e991cd 100644 --- a/sw/device/BUILD +++ b/sw/device/BUILD
@@ -2,9 +2,11 @@ # Licensed under the Apache License, Version 2.0, see LICENSE for details. # SPDX-License-Identifier: Apache-2.0 +load("//rules:linker.bzl", "ld_library") + package(default_visibility = ["//visibility:public"]) -cc_library( +ld_library( name = "info_sections", - deps = ["info_sections.ld"], + fragments = ["info_sections.ld"], )
diff --git a/sw/device/lib/testing/test_framework/BUILD b/sw/device/lib/testing/test_framework/BUILD index c98e695..02bdcda 100644 --- a/sw/device/lib/testing/test_framework/BUILD +++ b/sw/device/lib/testing/test_framework/BUILD
@@ -3,6 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 load("//rules:opentitan.bzl", "OPENTITAN_CPU") +load("//rules:linker.bzl", "ld_library") package(default_visibility = ["//visibility:public"]) @@ -75,6 +76,15 @@ ], ) +ld_library( + name = "linker_script", + script = "ottf.ld", + deps = [ + "//hw/top_earlgrey/sw/autogen:top_earlgrey_memory", + "//sw/device:info_sections", + ], +) + cc_library( name = "ottf_start", srcs = [ @@ -90,14 +100,9 @@ "-nostdlib", "-ffreestanding", ], - linkopts = [ - "-T $(location ottf.ld)", - ], target_compatible_with = [OPENTITAN_CPU], deps = [ - "ottf.ld", - "//hw/top_earlgrey/sw/autogen:linker_script", - "//sw/device:info_sections", + ":linker_script", "//sw/device/lib/base:csr", "//sw/device/lib/base:macros", "//sw/device/lib/crt",
diff --git a/sw/device/lib/testing/test_rom/BUILD b/sw/device/lib/testing/test_rom/BUILD index 70df9eb..04cf63a 100644 --- a/sw/device/lib/testing/test_rom/BUILD +++ b/sw/device/lib/testing/test_rom/BUILD
@@ -5,6 +5,7 @@ load("//rules:opentitan.bzl", "OPENTITAN_CPU", "opentitan_rom_binary") load("//rules:opentitan_test.bzl", "opentitan_functest") load("//rules:autogen.bzl", "autogen_chip_info") +load("//rules:linker.bzl", "ld_library") package(default_visibility = ["//visibility:public"]) @@ -12,13 +13,19 @@ name = "chip_info", ) +ld_library( + name = "linker_script", + script = "test_rom.ld", + deps = [ + "//hw/top_earlgrey/sw/autogen:top_earlgrey_memory", + "//sw/device:info_sections", + ], +) + opentitan_rom_binary( name = "test_rom", - linkopts = [ - "-T $(location test_rom.ld)", - ], deps = [ - "test_rom.ld", + ":linker_script", ":test_rom_lib", "//sw/device/lib/base:mmio", ], @@ -42,9 +49,7 @@ "//hw/ip/sram_ctrl/data:sram_ctrl_regs", "//hw/top_earlgrey/ip/ast/data:ast_regs", "//hw/top_earlgrey/ip/sensor_ctrl/data:sensor_ctrl_regs", - "//hw/top_earlgrey/sw/autogen:linker_script", "//hw/top_earlgrey/sw/autogen:top_earlgrey", - "//sw/device:info_sections", "//sw/device/lib:ibex_peri", "//sw/device/lib:pinmux", "//sw/device/lib/base:mmio",
diff --git a/sw/device/silicon_creator/lib/base/BUILD b/sw/device/silicon_creator/lib/base/BUILD index 7d8eeea..affeb56 100644 --- a/sw/device/silicon_creator/lib/base/BUILD +++ b/sw/device/silicon_creator/lib/base/BUILD
@@ -4,11 +4,11 @@ load("//rules:opentitan.bzl", "OPENTITAN_CPU") load("//rules:cross_platform.bzl", "dual_cc_device_library_of", "dual_cc_library", "dual_inputs") +load("//rules:linker.bzl", "ld_library") package(default_visibility = ["//visibility:public"]) exports_files([ - "static_critical.ld", "mock_csr.h", "mock_csr.cc", "mock_csr_test.cc", @@ -49,3 +49,8 @@ "@googletest//:gtest_main", ], ) + +ld_library( + name = "static_critical_sections", + fragments = ["static_critical.ld"], +)
diff --git a/sw/device/silicon_creator/mask_rom/BUILD b/sw/device/silicon_creator/mask_rom/BUILD index fd268cc..6669e3f 100644 --- a/sw/device/silicon_creator/mask_rom/BUILD +++ b/sw/device/silicon_creator/mask_rom/BUILD
@@ -3,6 +3,7 @@ # SPDX-License-Identifier: Apache-2.0 load("//rules:opentitan.bzl", "OPENTITAN_CPU", "opentitan_rom_binary") +load("//rules:linker.bzl", "ld_library") load( "//rules:opentitan_test.bzl", "cw310_params", @@ -59,6 +60,16 @@ ], ) +ld_library( + name = "linker_script", + script = "mask_rom.ld", + deps = [ + "//hw/top_earlgrey/sw/autogen:top_earlgrey_memory", + "//sw/device:info_sections", + "//sw/device/silicon_creator/lib/base:static_critical_sections", + ], +) + opentitan_rom_binary( name = "mask_rom", srcs = [ @@ -69,12 +80,9 @@ # Mask ROM does not permit the DV simulation backdoor logging mechanism that # test ROM does, for obvious security reasons. extract_sw_logs_db = False, - linkopts = [ - "-T $(location mask_rom.ld)", - ], deps = [ - "mask_rom.ld", ":boot_policy", + ":linker_script", ":mask_rom_epmp", ":primitive_bootstrap", ":sigverify_keys", @@ -87,9 +95,7 @@ "//hw/top_earlgrey/ip/ast/data:ast_regs", "//hw/top_earlgrey/ip/pwrmgr/data/autogen:pwrmgr_regs", "//hw/top_earlgrey/ip/sensor_ctrl/data:sensor_ctrl_regs", - "//hw/top_earlgrey/sw/autogen:linker_script", "//hw/top_earlgrey/sw/autogen:top_earlgrey", - "//sw/device:info_sections", "//sw/device/lib/arch:device", "//sw/device/lib/base:bitfield", "//sw/device/lib/base:csr", @@ -105,7 +111,6 @@ "//sw/device/silicon_creator/lib:manifest", "//sw/device/silicon_creator/lib:shutdown", "//sw/device/silicon_creator/lib/base:sec_mmio", - "//sw/device/silicon_creator/lib/base:static_critical.ld", "//sw/device/silicon_creator/lib/drivers:flash_ctrl", "//sw/device/silicon_creator/lib/drivers:keymgr", "//sw/device/silicon_creator/lib/drivers:lifecycle", @@ -142,9 +147,6 @@ "mask_rom_epmp_test.c", "mask_rom_start.S", ], - linkopts = [ - "-T $(location mask_rom.ld)", - ], # This test doesn't use the OTTF. ottf = [], targets = ["verilator"], # Can only run in verilator right now. @@ -155,7 +157,7 @@ # Verilator or CW310 params). test_in_rom = True, deps = [ - "mask_rom.ld", + ":linker_script", ":mask_rom_epmp", "//hw/ip/aon_timer/data:aon_timer_regs", "//hw/ip/csrng/data:csrng_regs", @@ -167,9 +169,7 @@ "//hw/top_earlgrey/ip/ast/data:ast_regs", "//hw/top_earlgrey/ip/pwrmgr/data/autogen:pwrmgr_regs", "//hw/top_earlgrey/ip/sensor_ctrl/data:sensor_ctrl_regs", - "//hw/top_earlgrey/sw/autogen:linker_script", "//hw/top_earlgrey/sw/autogen:top_earlgrey", - "//sw/device:info_sections", "//sw/device/lib:pinmux", "//sw/device/lib/arch:device", "//sw/device/lib/base:abs_mmio", @@ -186,7 +186,6 @@ "//sw/device/silicon_creator/lib:epmp_test_unlock", "//sw/device/silicon_creator/lib:irq_asm", "//sw/device/silicon_creator/lib/base:sec_mmio", - "//sw/device/silicon_creator/lib/base:static_critical.ld", "//sw/device/silicon_creator/lib/drivers:flash_ctrl", "//sw/device/silicon_creator/lib/drivers:uart", ],